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.
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.
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,
diff --git a/apps/kimi-code/dist-web/assets/index-C6dIaEdv.css b/apps/kimi-code/dist-web/assets/index-C6dIaEdv.css
new file mode 100644
index 00000000000..7fc68e4f009
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/index-C6dIaEdv.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-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-DCnQUIG_.css b/apps/kimi-code/dist-web/assets/index-DCnQUIG_.css
deleted file mode 100644
index 625fc39c2e2..00000000000
--- a/apps/kimi-code/dist-web/assets/index-DCnQUIG_.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-1960f3dd]{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-1960f3dd]:hover{background:var(--sb-hover, var(--color-surface-sunken));color:var(--color-text)}.se.on[data-v-1960f3dd]{background:var(--color-selected);color:var(--color-text)}.row[data-v-1960f3dd]{display:flex;align-items:center;gap:var(--sb-gap, 6px);min-width:0}.left[data-v-1960f3dd]{display:flex;align-items:center;flex:1;min-width:0}.lead[data-v-1960f3dd]{width:var(--sb-gutter, 16px);flex:none;display:inline-flex;align-items:center;justify-content:center}.unread-dot[data-v-1960f3dd]{width:7px;height:7px;border-radius:var(--radius-full);background:var(--color-accent)}.t[data-v-1960f3dd]{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-1960f3dd]{margin-right:4px;font-size:var(--text-base)}.ts[data-v-1960f3dd]{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}.act[data-v-1960f3dd]{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:flex-end;min-width:78px}.act .btn[data-v-1960f3dd]{position:absolute;top:50%;transform:translateY(-50%);visibility:hidden}.act .kebab[data-v-1960f3dd]{right:0}.act .pin[data-v-1960f3dd]{right:26px}.act .emoji-btn[data-v-1960f3dd]{right:52px}.act .pin.on[data-v-1960f3dd]{visibility:visible;color:var(--color-accent)}.se:hover .act .btn[data-v-1960f3dd],.act:has(.btn.open) .btn[data-v-1960f3dd]{visibility:visible}.se:hover .act .ts[data-v-1960f3dd],.act:has(.btn.open) .ts[data-v-1960f3dd]{visibility:hidden}.btn.open[data-v-1960f3dd]{color:var(--color-text);background:var(--sb-hover, var(--color-surface-sunken))}.emoji-glyph[data-v-1960f3dd]{font-size:var(--text-base);line-height:1}.emoji-picker[data-v-1960f3dd]{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-1960f3dd]{display:grid;grid-template-columns:repeat(5,28px);gap:var(--space-1)}.emoji-cell[data-v-1960f3dd]{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-1960f3dd]:hover{background:var(--color-surface-sunken)}.emoji-cell[data-v-1960f3dd]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.emoji-cell.on[data-v-1960f3dd]{background:var(--color-accent-soft)}.emoji-clear[data-v-1960f3dd]{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-1960f3dd]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.menu[data-v-1960f3dd]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.menu-time[data-v-1960f3dd]{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-1960f3dd]{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-1960f3dd]{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-1960f3dd]{border-radius:var(--radius-sm);font-family:var(--sans)}.sessions .se .btn[data-v-1960f3dd]{border-radius:var(--radius-sm)}.group.dragging[data-v-cdac739a]{opacity:.45}.group-sessions[data-v-cdac739a]{height:auto;overflow:hidden;transition:height var(--duration-base) var(--ease-out)}.group-sessions.collapsed[data-v-cdac739a]{height:0}.gh[data-v-cdac739a]{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-cdac739a]:active{cursor:grabbing}.gh[data-v-cdac739a]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.gh-top[data-v-cdac739a]{position:relative;display:flex;align-items:center;gap:var(--sb-gap)}.gh-folder[data-v-cdac739a]{flex:none;color:var(--color-text-muted)}.gh-name[data-v-cdac739a]{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-cdac739a]{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-cdac739a]:after{content:"";position:absolute;inset:0;z-index:0;border-radius:var(--radius-sm);background:transparent}.gh:hover .gh-actions[data-v-cdac739a]:after{background:var(--sb-hover, var(--color-surface-sunken))}.gh-actions[data-v-cdac739a]>*{position:relative;z-index:1}.gh:hover .gh-actions[data-v-cdac739a],.gh:focus-within .gh-actions[data-v-cdac739a],.gh-actions.open[data-v-cdac739a]{opacity:1;pointer-events:auto}.gh-more.open[data-v-cdac739a]{color:var(--color-text);background:var(--color-line)}.group-empty[data-v-cdac739a]{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-cdac739a]{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-cdac739a]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.show-more[data-v-cdac739a]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.show-more-lead[data-v-cdac739a]{width:var(--sb-gutter);flex:none}.show-more-label[data-v-cdac739a]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gh-rename[data-v-cdac739a]{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-cdac739a]{border-radius:var(--radius-sm);font-family:var(--sans)}.gh-add[data-v-cdac739a]{color:var(--faint)}.gh-add[data-v-cdac739a]: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-2af87a0e]{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-2af87a0e]{transition:none}.side.collapsed[data-v-2af87a0e]{visibility:hidden}.col[data-v-2af87a0e]{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-2af87a0e]{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-2af87a0e]{padding-left:80px;-webkit-app-region:drag}.side.macos-desktop .ch-brand[data-v-2af87a0e]{display:none}.ch-logo[data-v-2af87a0e]{height:22px;width:32px;flex:none;display:block;cursor:pointer;user-select:none;touch-action:none;transition:transform .18s ease}.ch-logo[data-v-2af87a0e]:hover{transform:scale(1.08)}.ch-logo.is-dev[data-v-2af87a0e]{--logo: var(--color-logo-dev)}.ch-brand[data-v-2af87a0e]{display:flex;align-items:center;gap:8px;min-width:0;flex:1;user-select:none;touch-action:none}.ch-name[data-v-2af87a0e]{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-2af87a0e]{flex:none;min-width:0}.ch-backend-kind[data-v-2af87a0e]{font-family:var(--mono);font-weight:500;color:var(--color-text-muted)}.ch-backend-kind.is-v2[data-v-2af87a0e]{color:var(--color-accent)}.ch-backend-ep[data-v-2af87a0e]{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-2af87a0e]{display:none}}@container sidebar-col (max-width: 250px){.ch-name[data-v-2af87a0e]{display:none}}.btn-wrap[data-v-2af87a0e]{display:flex;align-items:center;gap:8px;padding:0 var(--sb-inset)}.btn-new-chat[data-v-2af87a0e]{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-2af87a0e]:hover{background:var(--sb-hover)}.btn-new-chat[data-v-2af87a0e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-new-chat svg[data-v-2af87a0e]{flex:none}.btn-new-chat span[data-v-2af87a0e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-wrap[data-v-2af87a0e]{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-2af87a0e]{border-bottom-color:var(--line);box-shadow:var(--shadow-sm)}.search[data-v-2af87a0e]{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-2af87a0e]:hover{background:var(--sb-hover)}.search[data-v-2af87a0e]:focus-visible{background:var(--sb-hover);color:var(--color-text);outline:2px solid var(--color-accent-bd);outline-offset:-2px}.search-icon[data-v-2af87a0e]{flex:none}.search-input[data-v-2af87a0e]{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-2af87a0e]{flex:1;overflow-y:auto;padding:var(--space-3) var(--sb-inset);min-height:0}.sessions[data-v-2af87a0e]::-webkit-scrollbar{width:4px}.sessions[data-v-2af87a0e]::-webkit-scrollbar-track{background:transparent}.sessions[data-v-2af87a0e]::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--color-text) 12%,transparent);border-radius:var(--radius-full)}.sessions[data-v-2af87a0e]::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--color-text) 25%,transparent)}.side-footer[data-v-2af87a0e]{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-2af87a0e]{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-2af87a0e]:hover{background:var(--sb-hover)}.btn-settings[data-v-2af87a0e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-settings svg[data-v-2af87a0e]{flex:none}.btn-settings span[data-v-2af87a0e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-mascot[data-v-2af87a0e]{flex:none}.side-section-label[data-v-2af87a0e]{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-2af87a0e]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-section-toggle[data-v-2af87a0e]{color:var(--faint);opacity:0;transition:opacity var(--duration-base) var(--ease-out)}.side-section-label:hover .side-section-toggle[data-v-2af87a0e],.side-section-label:focus-within .side-section-toggle[data-v-2af87a0e]{opacity:1}.side-section-toggle[data-v-2af87a0e]:hover{color:var(--dim)}.side-section-toggle svg[data-v-2af87a0e]{width:13px;height:13px}.side-section-actions[data-v-2af87a0e]{display:flex;align-items:center;gap:2px}.ws-drop-target.drop-before[data-v-2af87a0e]{box-shadow:inset 0 2px 0 var(--color-accent)}.ws-drop-target.drop-after[data-v-2af87a0e]{box-shadow:inset 0 -2px 0 var(--color-accent)}.empty[data-v-2af87a0e]{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-2af87a0e],.gh-menu[data-v-2af87a0e],.section-menu[data-v-2af87a0e],.backend-menu[data-v-2af87a0e]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.section-menu-check[data-v-2af87a0e]{display:inline-flex;flex:none;width:14px}.backend-menu-name[data-v-2af87a0e]{font-family:var(--mono);font-weight:500}.backend-menu-url[data-v-2af87a0e]{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-14ef8750]{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-14ef8750]:hover{color:var(--color-text);background:var(--color-surface-sunken)}.at-type[data-v-14ef8750]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-bottom:6px}.at-task[data-v-14ef8750]{color:var(--color-text);white-space:pre-wrap;word-break:break-word}.at-task+.bb-code[data-v-14ef8750]{margin-top:10px}.bb-code[data-v-14ef8750]{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-c05c114a]{display:inline-flex;flex-direction:column;gap:6px;max-width:320px}.media-title[data-v-c05c114a]{font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-image-button[data-v-c05c114a]{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md);overflow:hidden}.media-image[data-v-c05c114a]{display:block;max-width:100%;border-radius:var(--radius-md);background:var(--media-alpha-canvas)}.media-video[data-v-c05c114a],.media-audio[data-v-c05c114a]{max-width:100%;border-radius:var(--radius-md)}.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)}.chat-empty[data-v-c4c288a8]{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-c4c288a8]{font-size:var(--ui-font-size-sm)}.chat-loading[data-v-c4c288a8]{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:24px 16px;color:var(--muted)}.chat-loading-text[data-v-c4c288a8]{font-size:var(--ui-font-size-sm)}.chat[data-v-c4c288a8]{--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-c4c288a8]{align-self:stretch}.open-unsupported[data-v-c4c288a8]{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-c4c288a8],.chat>.a-msg[data-v-c4c288a8],.chat>.compact-divider[data-v-c4c288a8],.chat>.cron-notice[data-v-c4c288a8],.chat>.sending-placeholder[data-v-c4c288a8],.chat[data-v-c4c288a8]>.activity-notice{margin-top:var(--chat-turn-gap)}.chat>.a-msg[data-v-c4c288a8]{margin-top:10px}.chat>.u-turn[data-v-c4c288a8]:first-child,.chat>.a-msg[data-v-c4c288a8]:first-child,.chat>.compact-divider[data-v-c4c288a8]:first-child,.chat>.cron-notice[data-v-c4c288a8]:first-child,.chat>.sending-placeholder[data-v-c4c288a8]:first-child,.chat[data-v-c4c288a8]>.activity-notice:first-child{margin-top:0}.u-turn[data-v-c4c288a8]{display:flex;flex-direction:column;align-items:flex-end;align-self:flex-start;width:100%}.u-bub[data-v-c4c288a8]{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-c4c288a8]{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-c4c288a8]{min-height:22px;box-sizing:border-box}.u-text[data-v-c4c288a8]{white-space:pre-wrap;overflow-wrap:anywhere}.u-edit[data-v-c4c288a8]{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-c4c288a8]{display:block;flex:none}.u-edit[data-v-c4c288a8]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-copy[data-v-c4c288a8]{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-c4c288a8]{display:block;flex:none}.u-copy[data-v-c4c288a8]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-edit-wrap[data-v-c4c288a8]{display:flex;justify-content:flex-end}.chat>.u-edit-wrap[data-v-c4c288a8]{margin-top:4px}.chat>.u-edit-wrap+.a-msg[data-v-c4c288a8]{margin-top:8px}.compact-divider[data-v-c4c288a8]{display:flex;align-items:center;gap:10px;align-self:stretch;width:100%;margin:var(--chat-section-gap) 0 0}.chat>.compact-divider[data-v-c4c288a8]:first-child{margin-top:0}.cd-line[data-v-c4c288a8]{flex:1;height:1px;background:var(--line)}.cd-label[data-v-c4c288a8]{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-c4c288a8]{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:var(--text-base);color:var(--muted)}.cd-view[data-v-c4c288a8]{color:var(--color-accent)}.cd-btn:hover .cd-view[data-v-c4c288a8]{text-decoration:underline}.a-msg[data-v-c4c288a8]{align-self:flex-start;max-width:94%;width:94%}.a-msg-ft[data-v-c4c288a8]{display:flex;justify-content:flex-start;align-items:center;gap:8px;height:auto;margin-top:var(--chat-block-gap);overflow:visible}.a-duration[data-v-c4c288a8]{display:inline-flex;align-items:center;font-size:var(--text-base);color:var(--muted);line-height:1}.a-cpbtn[data-v-c4c288a8]{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-c4c288a8]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.a-cpbtn svg[data-v-c4c288a8]{display:block;flex:none}@media(hover:none){.a-msg-ft[data-v-c4c288a8]{height:auto;margin-top:var(--chat-block-gap);opacity:1;pointer-events:auto}.a-cpbtn[data-v-c4c288a8]{font-size:var(--ui-font-size-sm);padding:8px 10px;margin:-4px -6px}}.a-msg .msg[data-v-c4c288a8]{font-size:var(--ui-font-size);line-height:1.6;color:var(--color-text);font-weight:500}.a-msg .msg[data-v-c4c288a8] p{margin:0}.a-msg .msg[data-v-c4c288a8] p+p{margin-top:8px}.a-msg>.msg[data-v-c4c288a8],.a-msg[data-v-c4c288a8]>.think,.a-msg[data-v-c4c288a8]>.tool-group,.a-msg[data-v-c4c288a8]>.agent-card,.a-msg[data-v-c4c288a8]>.agent-group,.a-msg[data-v-c4c288a8]>.box,.a-msg[data-v-c4c288a8]>.swarm-card,.a-msg[data-v-c4c288a8]>.media-tool,.a-msg[data-v-c4c288a8]>.ui-banner{margin-top:var(--chat-block-gap)}.a-msg>.msg[data-v-c4c288a8]:first-child,.a-msg[data-v-c4c288a8]>.think:first-child,.a-msg[data-v-c4c288a8]>.tool-group:first-child,.a-msg[data-v-c4c288a8]>.agent-card:first-child,.a-msg[data-v-c4c288a8]>.agent-group:first-child,.a-msg[data-v-c4c288a8]>.box:first-child,.a-msg[data-v-c4c288a8]>.swarm-card:first-child,.a-msg[data-v-c4c288a8]>.media-tool:first-child,.a-msg[data-v-c4c288a8]>.ui-banner:first-child{margin-top:0}.a-msg[data-v-c4c288a8] 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-c4c288a8] .markstream-vue.markdown-renderer:has(.table-node-wrapper){content-visibility:visible}.a-msg .msg[data-v-c4c288a8] .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-c4c288a8]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.sending-placeholder[data-v-c4c288a8]{align-self:flex-start;padding:10px 0}.skill-act[data-v-c4c288a8]{display:flex;flex-direction:column;gap:2px}.skill-act-head[data-v-c4c288a8]{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-c4c288a8]{color:var(--color-accent);font-size:var(--text-base)}.skill-act-args[data-v-c4c288a8]{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-c4c288a8]{box-sizing:border-box;width:100%;padding:14px max(12px,var(--safe-right)) 18px max(12px,var(--safe-left))}.u-bub[data-v-c4c288a8]{max-width:min(88%,calc(100vw - 52px))}.a-msg[data-v-c4c288a8]{width:100%;max-width:100%}.u-bub .u-text[data-v-c4c288a8],.a-msg .msg[data-v-c4c288a8]{font-size:var(--ui-font-size-xl)}.a-msg[data-v-c4c288a8] .md,.a-msg[data-v-c4c288a8] .markdown-renderer,.a-msg[data-v-c4c288a8] .code-block-container,.a-msg[data-v-c4c288a8] .diff-wrap,.a-msg[data-v-c4c288a8] pre{max-width:100%}.a-msg[data-v-c4c288a8] .code-block-container pre,.a-msg[data-v-c4c288a8] .diff-pre{overflow-x:auto;-webkit-overflow-scrolling:touch}.a-msg[data-v-c4c288a8] .media-tool.mob{width:min(44vw,160px)}.cd-label[data-v-c4c288a8]{min-width:0;max-width:calc(100% - 48px);overflow:hidden;text-overflow:ellipsis}.u-edit-confirm[data-v-c4c288a8]{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 28px)}.ts[data-v-c4c288a8]{font-size:var(--ui-font-size-sm)}.chat-empty-text[data-v-c4c288a8],.chat-loading-text[data-v-c4c288a8]{font-size:var(--ui-font-size-lg)}.cd-label[data-v-c4c288a8],.cd-btn[data-v-c4c288a8]{font-size:var(--ui-font-size)}}.top-sentinel[data-v-c4c288a8]{display:flex;align-items:center;justify-content:center;padding:12px 0;min-height:28px}.top-sentinel-loading[data-v-c4c288a8]{opacity:.8}.top-sentinel-btn[data-v-c4c288a8]{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-c4c288a8]:hover{color:var(--fg);border-color:var(--fg)}.top-sentinel-text[data-v-c4c288a8]{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:var(--ui-font-size-sm)}.chat[data-v-c4c288a8]{background:transparent}.chat[data-v-c4c288a8]{gap:0;padding:22px 20px 26px}.u-bub[data-v-c4c288a8]{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-c4c288a8]{max-width:100%;width:100%}.chat>.q-stack[data-v-c4c288a8]{margin-top:var(--chat-turn-gap)}.chat>.q-stack[data-v-c4c288a8]:first-child{margin-top:0}.q-stack[data-v-c4c288a8]{align-self:flex-end;width:100%;display:flex;flex-direction:column;gap:8px}.q-head[data-v-c4c288a8]{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-c4c288a8]{display:inline-flex;align-items:center;gap:6px}.q-title b[data-v-c4c288a8]{color:var(--color-accent-hover);font-weight:var(--weight-medium)}.q-hint[data-v-c4c288a8]{color:var(--color-text-faint)}.q-turn[data-v-c4c288a8]{position:relative}.q-bub[data-v-c4c288a8]{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-c4c288a8]:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.q-grip[data-v-c4c288a8]{flex:none;display:inline-flex;align-items:center;padding:2px;color:var(--color-text-faint);cursor:grab;opacity:.7}.q-grip[data-v-c4c288a8]:hover{opacity:1}.q-grip[data-v-c4c288a8]:active{cursor:grabbing}.q-body[data-v-c4c288a8]{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-c4c288a8]{opacity:1}.q-body[data-v-c4c288a8]:disabled{cursor:default}.q-text[data-v-c4c288a8]{white-space:pre-wrap;overflow-wrap:anywhere}.q-text-placeholder[data-v-c4c288a8]{display:inline-flex;align-items:center;gap:4px;color:var(--color-text-muted)}.q-imgs[data-v-c4c288a8]{display:flex;gap:4px;flex:none}.q-img[data-v-c4c288a8]{width:28px;height:28px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-line)}.q-file[data-v-c4c288a8]{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-c4c288a8]{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-c4c288a8]{color:var(--color-accent-hover);background:var(--color-accent-soft);border:1px solid var(--color-accent-bd)}.q-tag-idx[data-v-c4c288a8]{color:var(--color-text-faint);background:var(--color-surface-sunken);border:1px solid var(--color-line)}.q-steer[data-v-c4c288a8],.q-rm[data-v-c4c288a8]{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-c4c288a8]{position:relative;touch-action:manipulation}.q-steer[data-v-c4c288a8]:after{content:"";position:absolute;inset:-11px}.q-bub:hover .q-steer[data-v-c4c288a8],.q-bub:focus-within .q-steer[data-v-c4c288a8],.q-steer[data-v-c4c288a8]:focus-visible,.q-bub:hover .q-rm[data-v-c4c288a8],.q-bub:focus-within .q-rm[data-v-c4c288a8],.q-rm[data-v-c4c288a8]:focus-visible{opacity:1}.q-steer[data-v-c4c288a8]:hover{background:var(--color-accent-soft);color:var(--color-accent)}.q-rm[data-v-c4c288a8]:hover{background:var(--color-danger-soft);color:var(--color-danger)}.q-turn.q-dragging .q-bub[data-v-c4c288a8]{opacity:.45}.q-turn.drop-before[data-v-c4c288a8]:before,.q-turn.drop-after[data-v-c4c288a8]: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-c4c288a8]:before{top:-5px}.q-turn.drop-after[data-v-c4c288a8]:after{bottom:-5px}.chat[data-v-c4c288a8] .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-c4c288a8] .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[role=listbox][data-v-f60b70d9]{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);max-height:240px;overflow-y:auto}.slash-item[data-v-f60b70d9]{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-f60b70d9]:hover{background:var(--color-surface-sunken)}.slash-item.active[data-v-f60b70d9]{background:var(--color-accent-soft)}.slash-item.active .slash-name[data-v-f60b70d9]{color:var(--color-accent-hover)}.slash-name[data-v-f60b70d9]{color:var(--color-accent);font-weight:500;min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}.slash-desc[data-v-f60b70d9]{color:var(--color-text-muted);font-size:var(--text-xs);min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}@media(max-width:520px){.slash-item[data-v-f60b70d9]{grid-template-columns:minmax(0,1fr);gap:2px}}.slash-menu[data-v-f60b70d9]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.slash-desc[data-v-f60b70d9]{font-family:var(--sans)}.mention-menu[role=listbox][data-v-f4d6b958]{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);max-height:220px;overflow-y:auto}.mention-state[data-v-f4d6b958]{padding:8px 12px;font-family:var(--font-ui);font-size:var(--text-sm)}.dim[data-v-f4d6b958]{color:var(--color-text-muted)}.mention-item[data-v-f4d6b958]{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-f4d6b958]{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-f4d6b958] svg{width:13px;height:13px;display:block}.mention-item:hover .mention-icon[data-v-f4d6b958],.mention-item.active .mention-icon[data-v-f4d6b958]{color:var(--color-text-muted)}.mention-item[data-v-f4d6b958]:hover{background:var(--color-surface-sunken)}.mention-item.active[data-v-f4d6b958]{background:var(--color-accent-soft)}.mention-name[data-v-f4d6b958]{color:var(--color-text);font-weight:500;min-width:80px;flex-shrink:0}.mention-path[data-v-f4d6b958]{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mention-menu[data-v-f4d6b958]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.mention-state[data-v-f4d6b958]{font-family:var(--sans)}.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}.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-6707aedd]{padding:7px var(--dock-inline-right, 16px) 12px var(--dock-inline-left, 16px);background:transparent;transition:background .12s}.composer.drag-over[data-v-6707aedd]{background:var(--color-accent-soft)}.drop-overlay[data-v-6707aedd]{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-6707aedd]{opacity:1;visibility:visible}.drop-card[data-v-6707aedd]{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-6707aedd]{--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-6707aedd]:focus-within{border-color:var(--color-accent);box-shadow:var(--shadow-md),0 0 0 3px var(--color-accent-soft)}.att-strip[data-v-6707aedd]{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0 6px}.att-lightbox[data-v-6707aedd]{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-6707aedd]{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-6707aedd]{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-6707aedd]{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-6707aedd]{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-6707aedd]{display:none}.cin-wrap[data-v-6707aedd]{position:relative;padding:14px 16px 8px}.input-row[data-v-6707aedd]{display:flex;align-items:flex-start;gap:var(--space-2)}.expand-btn[data-v-6707aedd]{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-6707aedd]:hover{background:var(--panel2);color:var(--color-text)}.expand-btn[data-v-6707aedd]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ph[data-v-6707aedd]{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-6707aedd]::placeholder{color:var(--muted)}.ph[data-v-6707aedd]:not(:placeholder-shown){color:var(--color-text)}.composer.expanded .ph[data-v-6707aedd]{min-height:70vh;max-height:70vh}.compact-chip[data-v-6707aedd]{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-6707aedd]:hover{background:var(--panel2)}.send[data-v-6707aedd]{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-6707aedd]:hover{background:var(--color-accent-hover)}.send[data-v-6707aedd]:active{transform:scale(.92)}.send[data-v-6707aedd]:disabled{cursor:not-allowed;opacity:.88}.send[data-v-6707aedd]:disabled:active{transform:none}.send.is-starting[data-v-6707aedd] .ui-spinner{color:var(--color-text-on-accent)}.send.is-starting[data-v-6707aedd] .ui-spinner__track{stroke:color-mix(in srgb,var(--color-text-on-accent) 32%,transparent)}.send svg[data-v-6707aedd]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.stop[data-v-6707aedd]{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-6707aedd]:hover{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger)}.stop[data-v-6707aedd]:active{transform:scale(.92)}.stop svg[data-v-6707aedd]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.toolbar[data-v-6707aedd]{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-6707aedd]{position:absolute;width:max-content;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.toolbar-left[data-v-6707aedd],.toolbar-right[data-v-6707aedd]{display:flex;align-items:center;gap:2px;min-width:0;overflow:hidden}.perm-pill[data-v-6707aedd]{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-6707aedd]:hover{background:var(--color-surface-sunken)}.perm-pill.open[data-v-6707aedd]{background:var(--color-accent-soft)}.perm-pill.perm-manual[data-v-6707aedd]{color:var(--dim)}.perm-pill.perm-yolo[data-v-6707aedd]{color:var(--color-warning)}.perm-pill.perm-auto[data-v-6707aedd]{color:var(--color-danger)}.ctx-group[data-v-6707aedd]{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 4px;border-radius:var(--radius-xs)}.ctx-group[data-v-6707aedd]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.model-pill[data-v-6707aedd]{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-6707aedd]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.model-pill.open[data-v-6707aedd]{background:var(--color-accent-soft)}.model-pill b[data-v-6707aedd]{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-6707aedd]{color:var(--color-accent);font-weight:500;flex-shrink:0}.model-pill .cv[data-v-6707aedd]{color:var(--faint);flex:none}.model-pill:hover .cv[data-v-6707aedd],.model-pill.open .cv[data-v-6707aedd]{color:var(--color-accent-hover)}.model-dropdown[data-v-6707aedd]{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-6707aedd]{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-6707aedd]{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-6707aedd]:hover{background:var(--color-surface-sunken)}.md-row[data-v-6707aedd]:disabled{cursor:default;opacity:.58}.md-row[data-v-6707aedd]:disabled:hover{background:none}.md-row.is-current[data-v-6707aedd]{color:var(--color-text);background:var(--color-accent-soft)}.md-row.is-on[data-v-6707aedd]{color:var(--color-accent)}.md-note[data-v-6707aedd]{margin-left:auto;color:var(--muted);font-size:var(--ui-font-size-xs)}.md-row-more[data-v-6707aedd]{color:var(--color-accent);font-weight:500}.md-row-more[data-v-6707aedd]:hover{background:var(--color-accent-soft)}.md-check[data-v-6707aedd]{width:14px;flex:none;color:var(--color-accent);font-weight:500;display:flex;justify-content:center}.md-name[data-v-6707aedd]{flex:1}.md-provider[data-v-6707aedd]{color:var(--muted);font-size:var(--ui-font-size-xs);flex:none}.md-star[data-v-6707aedd]{color:var(--star);flex:none;margin-left:auto}.md-divider[data-v-6707aedd]{height:1px;background:var(--line);margin:3px 0}.md-thinking[data-v-6707aedd]{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:var(--radius-sm)}.md-thinking .md-name[data-v-6707aedd]{font-family:var(--font-ui);font-size:var(--ui-font-size);color:var(--color-text);flex:none}.md-thinking .md-note[data-v-6707aedd]{margin-left:auto}.effort-segments[data-v-6707aedd]{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-6707aedd]{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-6707aedd]:hover:not(:disabled):not(.is-active){background:var(--color-surface-raised);color:var(--color-text)}.effort-seg[data-v-6707aedd]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.effort-seg.is-active[data-v-6707aedd]{background:var(--color-accent);color:var(--color-text-on-accent);box-shadow:var(--shadow-xs);font-weight:500}.effort-seg[data-v-6707aedd]:disabled{cursor:default}.md-thinking.is-readonly .effort-segments[data-v-6707aedd]{opacity:.62}.md-cache-note[data-v-6707aedd]{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-6707aedd]{background:var(--color-surface-raised);color:var(--color-text-muted);box-shadow:none}.perm-dropdown[data-v-6707aedd]{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-6707aedd]{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-6707aedd]:hover{background:var(--color-surface-sunken)}.pd-row.is-current[data-v-6707aedd]{background:var(--color-accent-soft)}.pd-check[data-v-6707aedd]{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-6707aedd]{display:contents}.pd-name[data-v-6707aedd]{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-6707aedd]{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)}.modes[data-v-6707aedd]{position:relative;display:inline-flex;z-index:var(--z-sticky)}.mode-pill[data-v-6707aedd]{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border:none;background:none;border-radius:6px;font-size:var(--ui-font-size);font-family:var(--font-ui);font-weight:var(--weight-medium);color:var(--color-text);cursor:pointer;user-select:none;transition:background .1s,color .15s}.mode-pill[data-v-6707aedd]:hover{background:var(--color-surface-sunken)}.mode-pill.on[data-v-6707aedd]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.mode-pill.open[data-v-6707aedd]{background:var(--color-accent-soft)}.mode-label[data-v-6707aedd]{flex:none}.mode-tag[data-v-6707aedd]{flex:none;font-family:var(--font-ui);font-size:calc(var(--ui-font-size) - 3px);color:var(--color-accent-hover);background:var(--bg);border:1px solid var(--color-accent-bd);border-radius:999px;padding:0 6px;line-height:16px}.mode-dot[data-v-6707aedd]{width:6px;height:6px;border-radius:50%;background:var(--color-accent);flex:none}.modes-menu[data-v-6707aedd]{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}.mode-row[data-v-6707aedd]{display:grid;grid-template-columns:14px var(--composer-menu-desc-width, max-content);column-gap:7px;row-gap:2px;align-items:start;width:100%;padding:6px 7px;border:none;background:none;border-radius:6px;cursor:pointer;font-family:var(--font-ui);text-align:left}.mode-row[data-v-6707aedd]:hover:not(:disabled){background:var(--color-surface-sunken)}.mode-row[data-v-6707aedd]:disabled{cursor:not-allowed;opacity:.45}.mode-row-info[data-v-6707aedd]{display:contents}.mode-row-icon[data-v-6707aedd]{grid-column:1;grid-row:1;width:14px;min-height:1lh;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:var(--ui-font-size);line-height:var(--leading-normal)}.mode-row-name[data-v-6707aedd]{grid-column:2;grid-row:1;font-size:var(--ui-font-size);font-weight:var(--weight-medium);color:var(--color-text);line-height:var(--leading-normal)}.mode-row-desc[data-v-6707aedd]{grid-column:2;grid-row:2;width:var(--composer-menu-desc-width, auto);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--muted);line-height:var(--leading-normal)}.mode-row-not-supported[data-v-6707aedd]{margin-left:auto;font-size:var(--ui-font-size-xs);color:var(--muted)}.mode-row.on[data-v-6707aedd]{background:var(--color-accent-soft)}.mode-row.on .mode-row-name[data-v-6707aedd],.mode-row.on .mode-row-icon[data-v-6707aedd]{color:var(--color-accent-hover)}.mode-row-meta[data-v-6707aedd]{font-family:var(--mono);font-size:calc(var(--ui-font-size) - 3px);color:var(--muted)}.mode-row:disabled .mode-row-meta[data-v-6707aedd]{color:var(--faint)}.mode-switch[data-v-6707aedd]{grid-column:2;grid-row:1;justify-self:end;width:34px;height:19px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);position:relative;transition:background .15s}.mode-switch.on[data-v-6707aedd]{background:var(--color-accent);border-color:var(--color-accent)}.mode-knob[data-v-6707aedd]{position:absolute;top:1px;left:1px;width:15px;height:15px;border-radius:50%;background:var(--bg);box-shadow:var(--shadow-xs);transition:transform .15s}.mode-switch.on .mode-knob[data-v-6707aedd]{transform:translate(15px)}.mode-row-goal[data-v-6707aedd]{--mode-row-icon-col: 14px;--mode-row-col-gap: 7px;--mode-row-pad-x: 7px;display:flex;flex-direction:column;align-items:stretch;cursor:default;padding:0;gap:0}.mode-row-goal[data-v-6707aedd]:hover{background:transparent}.mode-row-goal.on[data-v-6707aedd]{background:var(--color-accent-soft)}.mode-row-main[data-v-6707aedd]{display:grid;grid-template-columns:var(--mode-row-icon-col) var(--composer-menu-desc-width, max-content);column-gap:var(--mode-row-col-gap);row-gap:2px;align-items:start;width:100%;padding:6px var(--mode-row-pad-x);border:none;background:none;border-radius:6px;cursor:pointer;font-family:var(--font-ui);text-align:left}.mode-row-main[data-v-6707aedd]:hover{background:var(--color-surface-sunken)}.mode-row-goal.on .mode-row-main .mode-row-name[data-v-6707aedd]{color:var(--color-accent-hover)}.mode-row-actions[data-v-6707aedd]{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:flex-start;padding:0 var(--mode-row-pad-x) var(--mode-row-pad-x) calc(var(--mode-row-pad-x) + var(--mode-row-icon-col) + var(--mode-row-col-gap))}.mode-row-action[data-v-6707aedd]{flex:none}.mode-row-action[data-v-6707aedd] .ui-button__content{gap:var(--space-1)}.mode-row-input[data-v-6707aedd]{flex:1;min-width:0;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg);color:var(--color-text);font-size:var(--ui-font-size-xs)}@media(max-width:980px){.model-pill b[data-v-6707aedd]{max-width:130px}.perm-pill[data-v-6707aedd]{max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:640px){.composer[data-v-6707aedd]{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-6707aedd]{--composer-send-size: 36px;max-width:100%}.input-row[data-v-6707aedd]{gap:6px;min-width:0}.send[data-v-6707aedd]{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-6707aedd]{display:none}.send[data-v-6707aedd]:after{content:"↑";font-size:17px;line-height:1;color:var(--bg)}.stop[data-v-6707aedd]{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-6707aedd]{display:none}.stop[data-v-6707aedd]:after{content:"■";font-size:17px;line-height:1}.perm-pill[data-v-6707aedd],.modes[data-v-6707aedd]{display:none}.model-dropdown[data-v-6707aedd]{right:10px;left:auto;min-width:180px;max-width:calc(100vw - 24px)}.ph[data-v-6707aedd]{font-size:16px}.model-pill[data-v-6707aedd],.attach-btn[data-v-6707aedd]{font-size:var(--ui-font-size)}.toolbar[data-v-6707aedd]{gap:6px;min-width:0}.toolbar-left[data-v-6707aedd],.toolbar-right[data-v-6707aedd]{min-width:0}.model-pill[data-v-6707aedd]{max-width:min(52vw,220px)}.model-pill b[data-v-6707aedd]{max-width:min(40vw,170px)}.md-row[data-v-6707aedd],.md-section[data-v-6707aedd]{font-size:var(--ui-font-size)}.md-thinking[data-v-6707aedd]{flex-wrap:wrap;row-gap:6px}.md-thinking .effort-segments[data-v-6707aedd]{margin-left:0;width:100%;justify-content:space-between}.md-thinking .effort-seg[data-v-6707aedd]{flex:1;padding:5px 6px}.pd-name[data-v-6707aedd]{font-size:var(--ui-font-size)}.pd-desc[data-v-6707aedd]{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}}.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-28fd5fc0]{padding:14px 18px 10px;flex:1;min-height:0;display:flex;flex-direction:column}.tp-head[data-v-28fd5fc0]{border-top:1px solid var(--line);padding-top:10px;margin-bottom:8px;display:flex;align-items:baseline;gap:8px}.tp-title[data-v-28fd5fc0]{color:var(--color-accent-hover);font-weight:500;font-size:var(--text-base);text-transform:capitalize}.tp-count[data-v-28fd5fc0]{color:var(--muted);font-size:var(--text-base)}.tp-list[data-v-28fd5fc0]{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.tp-row[data-v-28fd5fc0]{padding:4px 0}.tp-row.done .tp-name[data-v-28fd5fc0]{color:var(--muted);text-decoration:line-through}.tp-row.fail .tp-name[data-v-28fd5fc0]{color:var(--color-danger)}.tp-main[data-v-28fd5fc0]{display:flex;align-items:center;gap:7px;font-size:var(--text-base)}.tp-row.expandable>.tp-main[data-v-28fd5fc0]{cursor:pointer;border-radius:4px}.tp-row.expandable>.tp-main[data-v-28fd5fc0]:hover{background:var(--panel2)}.tp-chevron[data-v-28fd5fc0]{flex:none;color:var(--muted);transition:transform .12s}.tp-chevron.open[data-v-28fd5fc0]{transform:rotate(90deg)}.tp-name[data-v-28fd5fc0]{color:var(--color-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-time[data-v-28fd5fc0]{flex:none;font-size:var(--text-base);color:var(--muted)}.tp-stop[data-v-28fd5fc0]{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-28fd5fc0]:hover{background:var(--panel)}.tp-detail[data-v-28fd5fc0]{margin:4px 0 0 23px;display:flex;flex-direction:column;gap:4px}.tp-codebox[data-v-28fd5fc0]{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xs)}.tp-copy[data-v-28fd5fc0]{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-28fd5fc0],.tp-copy[data-v-28fd5fc0]:focus-visible{opacity:1;visibility:visible}.tp-copy[data-v-28fd5fc0]:hover{background:var(--panel)}.tp-copy.copied[data-v-28fd5fc0]{color:var(--color-success);border-color:color-mix(in srgb,var(--color-success) 30%,var(--line))}.tp-pre[data-v-28fd5fc0]{margin:0;padding:6px 10px;max-height:320px;overflow:auto;contain:layout paint}.tp-pre code[data-v-28fd5fc0]{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-28fd5fc0]{display:block;color:var(--muted)}.tp-line[data-v-28fd5fc0]{display:block}.tp-empty[data-v-28fd5fc0]{padding:24px 0;text-align:center;color:var(--faint);font-size:var(--ui-font-size-sm)}@media(max-width:640px){.taskspane[data-v-28fd5fc0]{padding:14px 14px 16px}.tp-main[data-v-28fd5fc0]{flex-wrap:wrap;row-gap:4px}.tp-name[data-v-28fd5fc0]{font-size:var(--ui-font-size-sm)}.tp-stop[data-v-28fd5fc0]{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-28fd5fc0]{margin-left:0}.tp-pre[data-v-28fd5fc0]{font-size:var(--ui-font-size-xs)}}.tp-stop[data-v-28fd5fc0]{border-radius:var(--radius-md);font-family:var(--sans)}.todo-card[data-v-99ab2067]{display:flex;flex-direction:column;gap:1px;font-size:var(--text-base)}.tc-row[data-v-99ab2067]{display:flex;align-items:center;gap:7px;padding:4px 0;color:var(--color-text)}.tc-name[data-v-99ab2067]{flex:1;min-width:0;overflow-wrap:anywhere;line-height:1.4}.tc-row.s-in_progress .tc-name[data-v-99ab2067]{font-weight:var(--weight-medium)}.tc-row.s-done .tc-name[data-v-99ab2067]{color:var(--color-text-faint);text-decoration:line-through}.tc-empty[data-v-99ab2067]{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-99ab2067]{width:28px;height:28px;color:var(--color-line-strong)}@media(max-width:640px){.todo-card[data-v-99ab2067]{font-size:var(--text-lg)}.tc-row[data-v-99ab2067]{padding:var(--space-2) var(--space-3)}}.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}.chat-dock[data-v-64ed7708]{--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-64ed7708]{margin-left:auto;margin-right:auto}.chat-dock.align-left[data-v-64ed7708]{margin-left:0;margin-right:auto}.chat-dock.align-mobile[data-v-64ed7708]{max-width:none}.dock-work-panel[data-v-64ed7708]{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-64ed7708]{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--color-line)}.dock-work-tab[data-v-64ed7708]{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-64ed7708]{background:transparent;border-color:transparent;padding-left:2px}.dock-work-body[data-v-64ed7708]{padding:8px 10px;overflow-y:auto;min-height:0}.dock-work-body[data-v-64ed7708] .taskspane{border:none;background:transparent;padding:0}.dock-work-body[data-v-64ed7708] .taskspane .tp-head{display:none}.dock-workbar[data-v-64ed7708]{display:flex;align-items:center;gap:6px;padding:4px var(--dock-inline-right) 2px var(--dock-inline-left)}.dock-workbar .dw-count[data-v-64ed7708]{margin-left:1px}.dock-workbar .dw-count b[data-v-64ed7708]{font-weight:500}.dock-approval[data-v-64ed7708]{margin-top:8px}@media(max-width:640px){.chat-dock[data-v-64ed7708]{--dock-inline-left: max(12px, var(--safe-left));--dock-inline-right: max(12px, var(--safe-right))}.dock-work-panel[data-v-64ed7708]{left:10px;right:calc(10px + var(--panes-scrollbar-width, 0px))}}.chat-dock[data-v-64ed7708]:not(.align-mobile) .composer{padding-bottom:14px}.dock-panel-enter-active[data-v-64ed7708],.dock-panel-leave-active[data-v-64ed7708]{transition:opacity .16s ease,transform .16s ease}.dock-panel-enter-from[data-v-64ed7708],.dock-panel-leave-to[data-v-64ed7708]{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-cf9dca94]{--read-max: 760px;display:flex;flex-direction:column;min-width:0;height:100%;position:relative;container-type:inline-size}.panes[data-v-cf9dca94]{flex:1;min-height:0;overflow-y:auto;overflow-anchor:auto;scrollbar-gutter:stable}.panes.is-following[data-v-cf9dca94],.panes.history-prepending[data-v-cf9dca94]{overflow-anchor:none}.chat-layout[data-v-cf9dca94]{display:flex;flex-direction:column;height:100%;min-height:0;position:relative}.chat-scroll[data-v-cf9dca94]{flex:1;min-height:0;position:relative}.content-wrap[data-v-cf9dca94]{width:100%;max-width:var(--read-max);min-height:100%;display:flex;flex-direction:column;flex-shrink:0}.content-wrap.align-center[data-v-cf9dca94]{margin-left:auto;margin-right:auto}.content-wrap.align-left[data-v-cf9dca94]{margin-left:0;margin-right:auto}.content-wrap.align-mobile[data-v-cf9dca94]{max-width:none}@media(max-width:640px){.con.mobile[data-v-cf9dca94]{min-width:0;overflow:hidden}.con.mobile .panes[data-v-cf9dca94]{scrollbar-gutter:auto;-webkit-overflow-scrolling:touch}.content-wrap.align-mobile[data-v-cf9dca94]{width:100%;min-width:0}}.empty-spacer[data-v-cf9dca94]{flex:1}.empty-hint[data-v-cf9dca94]{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-cf9dca94]{font-size:calc(var(--ui-font-size) + 16px);font-optical-sizing:auto;font-weight:var(--weight-semibold)}.empty-hint-title.is-starting[data-v-cf9dca94]{display:inline-flex;align-items:center;gap:9px;color:var(--dim);font-weight:400}.empty-hint-text[data-v-cf9dca94]{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-cf9dca94]{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-cf9dca94]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.empty-add-workspace[data-v-cf9dca94]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.empty-add-workspace svg[data-v-cf9dca94]{flex:none}.ws-pick[data-v-cf9dca94]{position:relative;font-family:var(--font-ui)}.ws-pick-btn[data-v-cf9dca94]{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-cf9dca94]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.ws-pick-name[data-v-cf9dca94]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-chev[data-v-cf9dca94]{flex:none;color:var(--muted);transition:transform .15s}.ws-pick-chev.open[data-v-cf9dca94]{transform:rotate(180deg)}.ws-pick-backdrop[data-v-cf9dca94]{position:fixed;inset:0;z-index:var(--z-sticky)}.ws-pick-menu[data-v-cf9dca94]{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-cf9dca94]{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-cf9dca94]:hover{background:var(--panel2)}.ws-pick-item.on[data-v-cf9dca94]{background:var(--color-accent-soft)}.ws-pick-item-name[data-v-cf9dca94]{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-cf9dca94]{color:var(--color-accent-hover)}.ws-pick-item-path[data-v-cf9dca94]{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-cf9dca94]{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-cf9dca94]:hover{color:var(--color-text)}.ws-pick-item.ws-pick-more span[data-v-cf9dca94],.ws-pick-action span[data-v-cf9dca94]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-divider[data-v-cf9dca94]{height:1px;margin:4px 6px;background:var(--line)}.ws-pick-action[data-v-cf9dca94]{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-cf9dca94]:hover{background:var(--panel2);color:var(--color-text)}.ws-pick-action svg[data-v-cf9dca94]{flex:none}.chat-scroll[data-v-cf9dca94]{display:flex;flex-direction:column}.mobile .panes[data-v-cf9dca94]:has(>.chat-layout){overflow:hidden;scrollbar-gutter:auto}.newmsg-pill[data-v-cf9dca94]{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-cf9dca94]:hover{background:var(--panel2)}.pill-chevron[data-v-cf9dca94]{width:12px;height:12px}.pill-enter-active[data-v-cf9dca94],.pill-leave-active[data-v-cf9dca94]{transition:opacity .2s ease,transform .2s ease}.pill-enter-from[data-v-cf9dca94],.pill-leave-to[data-v-cf9dca94]{opacity:0;transform:translate(-50%) translateY(8px)}.abort-toast[data-v-cf9dca94]{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-cf9dca94]{display:flex;align-items:center;gap:8px}.abort-toast-enter-active[data-v-cf9dca94],.abort-toast-leave-active[data-v-cf9dca94]{transition:opacity .15s ease,transform .15s ease}.abort-toast-enter-from[data-v-cf9dca94],.abort-toast-leave-to[data-v-cf9dca94]{opacity:0;transform:translate(-50%) translateY(-6px)}.con[data-v-cf9dca94]{background:var(--bg)}.newmsg-pill[data-v-cf9dca94]{font-family:var(--sans)}.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)}.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-73258ff1]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.sc-body[data-v-73258ff1]{flex:1;min-height:0;overflow-y:auto}.sc-empty[data-v-73258ff1]{padding:24px 16px;text-align:center;color:var(--muted);font-size:var(--ui-font-size)}.sc-composer[data-v-73258ff1]{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-73258ff1]{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-73258ff1]:focus{border-color:var(--color-accent-bd)}.sc-send[data-v-73258ff1]{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-73258ff1]:disabled{opacity:.4;cursor:default}.sc-send[data-v-73258ff1]:not(:disabled):hover{background:var(--color-accent-hover)}.sc-loading[data-v-73258ff1]{flex:none;padding:8px 12px 12px}.sc-body[data-v-73258ff1] .sending-placeholder,.sc-body[data-v-73258ff1] .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}}.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)}.sd[data-v-a5062272]{display:flex;flex-direction:row;min-height:0;height:100%}.settings-tabs[data-v-a5062272]{display:flex;flex-direction:column;flex:none;width:148px;padding:var(--space-2);gap:2px;overflow-y:auto}.tab[data-v-a5062272]{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-a5062272]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.tab.on[data-v-a5062272]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:var(--weight-medium)}.tab[data-v-a5062272]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.body[data-v-a5062272]{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-a5062272]{display:block}.sec[data-v-a5062272]{padding:var(--space-4) 0;border-bottom:1px solid var(--color-line)}.sec[data-v-a5062272]:last-child{border-bottom:none}.sec-head[data-v-a5062272]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.sec-title[data-v-a5062272]{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-a5062272]{margin-bottom:0}.saving[data-v-a5062272]{flex:none;font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.row[data-v-a5062272]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:38px;padding:var(--space-1) 0}.rlabel[data-v-a5062272]{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-a5062272]{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-a5062272]{font-family:var(--font-mono);font-size:var(--text-xs)}.hint[data-v-a5062272]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint)}.num-field[data-v-a5062272]{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-a5062272]:hover{border-color:var(--color-line-strong)}.num-field[data-v-a5062272]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.num-input[data-v-a5062272]{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-a5062272]{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.select-wrap[data-v-a5062272]{min-width:220px;max-width:min(320px,50vw);flex:none}.empty-config[data-v-a5062272]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text-muted);padding:var(--space-1) 0}.actions[data-v-a5062272]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}@media(max-width:640px){.sd[data-v-a5062272]{flex-direction:column}.settings-tabs[data-v-a5062272]{flex-direction:row;width:auto;padding:var(--space-2) var(--space-3);gap:var(--space-1);overflow-x:auto}.tab[data-v-a5062272]{white-space:nowrap;flex:none}.row[data-v-a5062272]{align-items:flex-start;flex-direction:column}.select-wrap[data-v-a5062272]{width:100%;max-width:none}}.setting-card[data-v-a5062272]{border:1px solid var(--color-line);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-bg)}.panel-head[data-v-a5062272]{margin-bottom:var(--space-4)}.panel-kicker[data-v-a5062272]{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-a5062272]{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-a5062272]{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-a5062272]{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.archive-search[data-v-a5062272]{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-a5062272]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring);color:var(--color-text-muted)}.archive-search svg[data-v-a5062272]{width:15px;height:15px;flex:none}.archive-search input[data-v-a5062272]{width:100%;border:none;outline:none;background:transparent;font:inherit;color:var(--color-text)}.archive-list[data-v-a5062272]{display:flex;flex-direction:column;gap:var(--space-4)}.archive-card .setting-card[data-v-a5062272]{margin-bottom:0}.archive-workspace[data-v-a5062272]{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-a5062272]{width:16px;height:16px;color:var(--color-text-faint);flex:none}.archive-workspace .path[data-v-a5062272]{font-family:var(--font-mono);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-workspace .count[data-v-a5062272]{margin-left:auto;color:var(--color-text-faint);font-weight:var(--weight-regular);font-size:var(--text-xs);flex:none}.archive-row[data-v-a5062272]{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-a5062272]:first-child{border-top:none}.archive-row[data-v-a5062272]:hover{background:var(--color-surface-sunken)}.archive-meta[data-v-a5062272]{min-width:0}.archive-name[data-v-a5062272]{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-a5062272]{margin-top:2px;font-size:var(--text-xs);color:var(--color-text-faint);font-family:var(--font-mono)}.archive-draining[data-v-a5062272]{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-a5062272]{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-a5062272]{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-a5062272]:hover:not(:disabled){border-color:var(--color-line-strong);color:var(--color-text)}.archive-load-more[data-v-a5062272]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.archive-load-more[data-v-a5062272]:disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.archive-toolbar[data-v-a5062272]{flex-direction:column;align-items:stretch}.archive-search[data-v-a5062272]{min-width:0}}[data-v-a5062272] .ui-dialog{width:min(980px,96vw)}[data-v-a5062272] .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-f5c667dc]{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-f5c667dc],.toast-leave-active[data-v-f5c667dc]{transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.toast-enter-from[data-v-f5c667dc],.toast-leave-to[data-v-f5c667dc]{opacity:0;transform:translate(16px)}.toast-move[data-v-f5c667dc]{transition:transform var(--duration-base) var(--ease-out)}.actions[data-v-f5c667dc]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.link[data-v-f5c667dc]{border:0;padding:0;background:none;color:var(--color-accent);cursor:pointer;font:inherit;font-size:var(--ui-font-size-xs)}.link[data-v-f5c667dc]:hover{text-decoration:underline}.details[data-v-f5c667dc]{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-f5c667dc]{display:grid;grid-template-columns:minmax(88px,.34fr) minmax(0,1fr);gap:8px}.detail-row dt[data-v-f5c667dc]{color:var(--color-text-muted)}.detail-row dd[data-v-f5c667dc]{margin:0;color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap}@media(max-width:640px){.toasts[data-v-f5c667dc]{left:12px;right:12px;bottom:calc(var(--dock-h, 76px) + 8px);width:auto;max-height:50vh}.detail-row[data-v-f5c667dc]{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-1b9d51bc]{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-1b9d51bc]:hover,.newrow[data-v-1b9d51bc]:active{background:var(--color-surface-sunken)}.newrow.secondary[data-v-1b9d51bc]{padding-top:var(--space-2);padding-bottom:var(--space-2);color:var(--color-text-muted);font-weight:400}.newrow.secondary[data-v-1b9d51bc]:hover{background:var(--color-surface-sunken)}.newrow.secondary[data-v-1b9d51bc]:active{background:var(--color-surface-sunken);color:var(--color-text)}.mlist[data-v-1b9d51bc]{--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-1b9d51bc]{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-1b9d51bc]{padding:10px 16px 12px var(--m-indent);text-align:left;font-size:var(--ui-font-size-xs)}.mgroup[data-v-1b9d51bc]{padding-top:2px}.mgh[data-v-1b9d51bc]{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-1b9d51bc]:hover,.mgh[data-v-1b9d51bc]:active{background:var(--color-surface-sunken)}.mgh-folder[data-v-1b9d51bc]{flex:none;color:var(--color-text-muted)}.mgh-main[data-v-1b9d51bc]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.mgh-name[data-v-1b9d51bc]{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-1b9d51bc]{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-1b9d51bc]{margin:-10px -12px -10px 0}.mgh-add[data-v-1b9d51bc]:active{color:var(--color-text);background:var(--color-surface-sunken)}.mgh-more[data-v-1b9d51bc]{margin:-10px -8px}.mgh-more[data-v-1b9d51bc]:active{color:var(--color-text);background:var(--color-surface-sunken)}.srow[data-v-1b9d51bc]{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-1b9d51bc]:hover,.srow[data-v-1b9d51bc]:active{background:var(--color-surface-sunken)}.srow.cur[data-v-1b9d51bc]{background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.srow .m[data-v-1b9d51bc]{flex:1;min-width:0}.srow .m .t[data-v-1b9d51bc]{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-1b9d51bc]{color:var(--color-accent-hover)}.srow .m .t.run[data-v-1b9d51bc]{position:relative}.srow .m .t.run[data-v-1b9d51bc]: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-1b9d51bc 1.4s ease-in-out infinite}@keyframes mRunPulse-1b9d51bc{0%,to{opacity:1}50%{opacity:.35}}.srow .m .t.aborted[data-v-1b9d51bc]{position:relative}.srow .m .t.aborted[data-v-1b9d51bc]: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-1b9d51bc]{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-1b9d51bc]{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-1b9d51bc]:active{color:var(--color-text);background:var(--color-surface-sunken)}.kmenu[data-v-1b9d51bc]{position:absolute;right:12px;top:44px;z-index:var(--z-dropdown);min-width:96px;overflow:hidden}.wsmenu[data-v-1b9d51bc]{top:calc(100% - 4px);right:var(--m-pad);min-width:132px}.mshow-more[data-v-1b9d51bc]{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-1b9d51bc]:active{color:var(--color-accent-hover);background:var(--color-surface-sunken)}.newrow[data-v-1b9d51bc]{font-family:var(--sans)}.mlist .srow[data-v-1b9d51bc]{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-1b9d51bc]{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-574d0b11]{transition:opacity .28s ease}.gload-fade-leave-to[data-v-574d0b11]{opacity:0}.app-shell[data-v-574d0b11]{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-574d0b11]{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-574d0b11]{width:min(420px,100%);display:flex;flex-direction:column;align-items:flex-start;gap:18px}.auth-page-logo[data-v-574d0b11]{width:64px;height:44px;flex:none;cursor:pointer;user-select:none;-webkit-user-select:none;transition:transform .18s ease}.auth-page-logo[data-v-574d0b11]:hover{transform:scale(1.06)}.auth-page-copy[data-v-574d0b11]{display:flex;flex-direction:column;gap:8px}.auth-page-copy h1[data-v-574d0b11]{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-574d0b11]{margin:0;font-family:var(--sans);font-size:var(--ui-font-size-lg);line-height:1.55;color:var(--dim)}.app[data-v-574d0b11]{--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-574d0b11]>*{min-height:0;min-width:0}.app>.side[data-v-574d0b11]{grid-column:1}.side-handle[data-v-574d0b11]{grid-column:2}.app:not(.mobile)>.con[data-v-574d0b11]{grid-column:3}.preview-handle[data-v-574d0b11]{grid-column:4}.sidebar-toggle-btn[data-v-574d0b11]{position:absolute;top:11px;left:16px;z-index:var(--z-sticky);animation:sidebar-toggle-btn-in-574d0b11 .18s var(--ease-out) .12s backwards;-webkit-app-region:no-drag}.app.macos-desktop .sidebar-toggle-btn[data-v-574d0b11]{left:72px;animation:none}@keyframes sidebar-toggle-btn-in-574d0b11{0%{opacity:0}}.internal-build-fab[data-v-574d0b11]{position:absolute;right:var(--space-3);bottom:var(--space-3);z-index:var(--z-sticky);pointer-events:none}.app.mobile[data-v-574d0b11]{grid-template-columns:1fr;grid-template-rows:auto 1fr}.global-preview[data-v-574d0b11]{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-574d0b11]{width:var(--preview-w)}.global-preview.no-anim[data-v-574d0b11]{transition:none}.global-preview[data-v-574d0b11]:not(.overlay)>*{width:var(--preview-w);height:100%;box-sizing:border-box;border-left:1px solid var(--line)}.global-preview.overlay[data-v-574d0b11]{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-574d0b11]{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-574d0b11]{font-size:26px}.auth-page-btn[data-v-574d0b11]{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-DVo-tvKU.js b/apps/kimi-code/dist-web/assets/index-DVo-tvKU.js
deleted file mode 100644
index b773be8ad48..00000000000
--- a/apps/kimi-code/dist-web/assets/index-DVo-tvKU.js
+++ /dev/null
@@ -1,98 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DesignSystemView-DrmUw5ZA.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 T,d as Ie,o as a,c as u,n as de,K as bt,m as Oe,a as l,v as Z,A as Or,z as B,B as $,bD as Fe,w as Ee,k as Ne,l as vn,Q as po,b as I,u as r,x as j,E as d,h as lt,F as ye,r as Be,G as rt,bE as gn,bF as Pu,s as Eu,C as In,H as jn,e as ct,R as ut,bG as mn,U as Pe,J as ve,V as La,N as Dr,bH as wo,i as js,bI as Ru,S as zr,T as Io,p as lo,bJ as Ou,bK as pl,bL as fl,bM as Fr,j as Du}from"./vendor-ucnN-Sh8.js";import{_ as qr,O as zu,P as Fu,W as qu,x as Wu,a as Nu,b as Hu,y as Uu,h as Vu,g as ju,p as Ku,m as Gu}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 c of i.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&s(c)}).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 ze={permission:"kimi-web.permission",activeWorkspace:"kimi-active-workspace",planMode:"kimi-web.plan-mode",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",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",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",codeFont:"kimi-web.code-font",contentAlign:"kimi-web.content-align",theme:"kimi-web.theme",thinking:"kimi-web.thinking"};function ml(e){return`kimi-web.draft.${e&&e.length>0?e:"__new__"}`}function xt(e){try{return globalThis.localStorage.getItem(e)}catch{return null}}function Lt(e,t){try{globalThis.localStorage.setItem(e,t)}catch{}}function Ws(e){try{globalThis.localStorage.removeItem(e)}catch{}}function ho(e){const t=xt(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function Ks(e,t){try{globalThis.localStorage.setItem(e,JSON.stringify(t))}catch{}}function Ba(){const e=xt(ze.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 Pa(e){const n={...Ba()};for(const[s,o]of Object.entries(e))o?n[s]=!0:delete n[s];Lt(ze.unread,JSON.stringify(n))}function Qu(){const e=ho(ze.collapsedWorkspaces);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Ei(e){Ks(ze.collapsedWorkspaces,Array.from(e))}function Yu(){const e=ho(ze.workspaceOrder);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Wr(e){Ks(ze.workspaceOrder,Array.from(e))}function jo(){const e=ho(ze.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 vl(e){Ks(ze.workspaceNameOverrides,e)}function Zu(){return xt(ze.workspaceSort)}function Nr(e){Lt(ze.workspaceSort,e)}const hl=ze.clientId,Xu="kimi-code-web",Ju="web";function Hr(){return{serverHttpUrl:td(),clientId:id(),clientName:Xu,clientVersion:ad(),clientUiMode:Ju}}function ed(){return typeof window<"u"&&window.location?.origin?window.location.origin:"http://127.0.0.1:58627"}function td(e){const t=ed(),n=new URL(t);return n.pathname=n.pathname.replace(/\/v1\/?$/,"").replace(/\/$/,""),n.search="",n.hash="",n.toString().replace(/\/$/,"")}function nd(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}function sd(){const e=typeof window<"u"&&window.location?.origin?window.location.origin:"";return nd(e)}function zs(e,t){return`${e}/api/v1${t.startsWith("/")?t:`/${t}`}`}function od(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 id(){const e=xt(hl);if(e)return e;const t=`web_${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;return Lt(hl,t),t}function ad(){return"0.1.2".trim()?"0.1.2":"0.0.0-dev"}async function ld(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 rd(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}async function Yt(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 ud(e)}function cd(e){if(typeof e!="string")return;const t=typeof navigator<"u"?navigator.clipboard:void 0;t&&typeof t.writeText=="function"||Yt(e)}function ud(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 dd(e,t){if(e.length===0)return null;const n=new Set(e),s=t.filter(i=>n.has(i)),o=e.filter(i=>!t.includes(i));return o.length===0&&s.length===t.length?null:[...o,...s]}function pd(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 fd(e,t,n,s="before"){const o=e.indexOf(t),i=e.indexOf(n);if(o===-1||i===-1||o===i)return e;const c=[...e];c.splice(o,1);const p=o(t.get(s.id)??Number.NEGATIVE_INFINITY)-(t.get(n.id)??Number.NEGATIVE_INFINITY))}const vd={"&":"&","<":"<",">":">",'"':""","'":"'"};function gl(e){return e.replace(/[&<>"']/g,t=>vd[t]??t)}function hd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function gd(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 yl(s,n*2);const i=s.toLowerCase().indexOf(o.toLowerCase());if(i<0)return yl(s,n*2);const c=Math.max(0,i-n),p=Math.min(s.length,i+o.length+n),v=c>0,g=p`${i} `)}const to=T(0),yd=["type","disabled","aria-label"],kd=Ie({__name:"IconButton",props:{size:{default:"md"},disabled:{type:Boolean},label:{},type:{default:"button"}},setup(e,{expose:t}){const n=T();return t({el:n}),(s,o)=>(a(),u("button",{ref_key:"el",ref:n,class:de(["ui-icon-button",`ui-icon-button--${e.size}`]),type:e.type,disabled:e.disabled,"aria-label":e.label},[bt(s.$slots,"default",{},void 0,!0)],10,yd))}}),Te=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},et=Te(kd,[["__scopeId","data-v-c9e67023"]]),bd={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function wd(e,t){return a(),u("svg",bd,[...t[0]||(t[0]=[l("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),l("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 Sd=Oe({name:"kimi-add-conversation",render:wd}),Cd={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function _d(e,t){return a(),u("svg",Cd,[...t[0]||(t[0]=[l("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 xd=Oe({name:"kimi-folder",render:_d}),$d={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Md=["clip-path"],Id=["id"];function Td(e,t){return a(),u("svg",$d,[l("g",{"clip-path":"url(#"+e.idMap.clip0_4626_2033+")"},[...t[0]||(t[0]=[l("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,Md),l("defs",null,[l("clipPath",{id:e.idMap.clip0_4626_2033},[...t[1]||(t[1]=[l("rect",{width:"24",height:"24",fill:"white"},null,-1)])],8,Id)])])}const Ad=Oe({name:"kimi-folder-open",render:Td,setup(){return{idMap:{clip0_4626_2033:"uicons-"+Math.random().toString(36).substr(2,10)}}}}),Ld={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Bd(e,t){return a(),u("svg",Ld,[...t[0]||(t[0]=[l("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),l("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),l("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 Pd=Oe({name:"kimi-more",render:Bd}),Ed={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Rd(e,t){return a(),u("svg",Ed,[...t[0]||(t[0]=[l("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 Od=Oe({name:"kimi-search",render:Rd}),Dd={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function zd(e,t){return a(),u("svg",Dd,[...t[0]||(t[0]=[l("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),l("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 Fd=Oe({name:"kimi-setting",render:zd}),qd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Wd(e,t){return a(),u("svg",qd,[...t[0]||(t[0]=[l("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[l("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"}),l("path",{d:"m15 10l-2 2l2 2"})],-1)])])}const Nd=Oe({name:"tabler-layout-sidebar-left-collapse",render:Wd}),Hd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ud(e,t){return a(),u("svg",Hd,[...t[0]||(t[0]=[l("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[l("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"}),l("path",{d:"m14 10l2 2l-2 2"})],-1)])])}const Vd=Oe({name:"tabler-layout-sidebar-left-expand",render:Ud}),jd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Kd(e,t){return a(),u("svg",jd,[...t[0]||(t[0]=[l("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 Gd=Oe({name:"tabler-paperclip",render:Kd}),Qd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Yd(e,t){return a(),u("svg",Qd,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])}const Zd=Oe({name:"ri-add-line",render:Yd}),Xd={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Jd(e,t){return a(),u("svg",Xd,[...t[0]||(t[0]=[l("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 ep=Oe({name:"ri-alert-line",render:Jd}),tp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function np(e,t){return a(),u("svg",tp,[...t[0]||(t[0]=[l("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 sp=Oe({name:"ri-archive-line",render:np}),op={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ip(e,t){return a(),u("svg",op,[...t[0]||(t[0]=[l("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 ap=Oe({name:"ri-arrow-down-line",render:ip}),lp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function rp(e,t){return a(),u("svg",lp,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"m12 13.171l4.95-4.95l1.414 1.415L12 16L5.636 9.636L7.05 8.222z"},null,-1)])])}const cp=Oe({name:"ri-arrow-down-s-line",render:rp}),up={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function dp(e,t){return a(),u("svg",up,[...t[0]||(t[0]=[l("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 pp=Oe({name:"ri-arrow-go-back-line",render:dp}),fp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function mp(e,t){return a(),u("svg",fp,[...t[0]||(t[0]=[l("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 vp=Oe({name:"ri-arrow-right-line",render:mp}),hp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function gp(e,t){return a(),u("svg",hp,[...t[0]||(t[0]=[l("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 yp=Oe({name:"ri-arrow-right-s-line",render:gp}),kp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function bp(e,t){return a(),u("svg",kp,[...t[0]||(t[0]=[l("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 kl=Oe({name:"ri-arrow-up-line",render:bp}),wp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Sp(e,t){return a(),u("svg",wp,[...t[0]||(t[0]=[l("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 Cp=Oe({name:"ri-arrow-up-s-line",render:Sp}),_p={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function xp(e,t){return a(),u("svg",_p,[...t[0]||(t[0]=[l("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 $p=Oe({name:"ri-braces-line",render:xp}),Mp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ip(e,t){return a(),u("svg",Mp,[...t[0]||(t[0]=[l("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 Tp=Oe({name:"ri-calendar-close-line",render:Ip}),Ap={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lp(e,t){return a(),u("svg",Ap,[...t[0]||(t[0]=[l("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 Bp=Oe({name:"ri-calendar-schedule-line",render:Lp}),Pp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ep(e,t){return a(),u("svg",Pp,[...t[0]||(t[0]=[l("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 Rp=Oe({name:"ri-calendar-todo-line",render:Ep}),Op={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Dp(e,t){return a(),u("svg",Op,[...t[0]||(t[0]=[l("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 zp=Oe({name:"ri-check-line",render:Dp}),Fp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function qp(e,t){return a(),u("svg",Fp,[...t[0]||(t[0]=[l("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 Wp=Oe({name:"ri-close-line",render:qp}),Np={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Hp(e,t){return a(),u("svg",Np,[...t[0]||(t[0]=[l("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 Up=Oe({name:"ri-code-line",render:Hp}),Vp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function jp(e,t){return a(),u("svg",Vp,[...t[0]||(t[0]=[l("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 Kp=Oe({name:"ri-collapse-diagonal-line",render:jp}),Gp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qp(e,t){return a(),u("svg",Gp,[...t[0]||(t[0]=[l("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 Yp=Oe({name:"ri-download-line",render:Qp}),Zp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xp(e,t){return a(),u("svg",Zp,[...t[0]||(t[0]=[l("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 Jp=Oe({name:"ri-draggable",render:Xp}),ef={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function tf(e,t){return a(),u("svg",ef,[...t[0]||(t[0]=[l("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 nf=Oe({name:"ri-equalizer-line",render:tf}),sf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function of(e,t){return a(),u("svg",sf,[...t[0]||(t[0]=[l("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 af=Oe({name:"ri-expand-diagonal-line",render:of}),lf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function rf(e,t){return a(),u("svg",lf,[...t[0]||(t[0]=[l("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 cf=Oe({name:"ri-external-link-line",render:rf}),uf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function df(e,t){return a(),u("svg",uf,[...t[0]||(t[0]=[l("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 pf=Oe({name:"ri-file-add-line",render:df}),ff={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function mf(e,t){return a(),u("svg",ff,[...t[0]||(t[0]=[l("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 vf=Oe({name:"ri-file-copy-line",render:mf}),hf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function gf(e,t){return a(),u("svg",hf,[...t[0]||(t[0]=[l("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 yf=Oe({name:"ri-file-edit-line",render:gf}),kf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function bf(e,t){return a(),u("svg",kf,[...t[0]||(t[0]=[l("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 bl=Oe({name:"ri-file-line",render:bf}),wf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Sf(e,t){return a(),u("svg",wf,[...t[0]||(t[0]=[l("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 Cf=Oe({name:"ri-file-text-line",render:Sf}),_f={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function xf(e,t){return a(),u("svg",_f,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M13 9h8L11 24v-9H4l9-15zm-2 2V7.22L7.532 13H13v4.394L17.263 11z"},null,-1)])])}const $f=Oe({name:"ri-flashlight-line",render:xf}),Mf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function If(e,t){return a(),u("svg",Mf,[...t[0]||(t[0]=[l("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 Tf=Oe({name:"ri-folder-add-line",render:If}),Af={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lf(e,t){return a(),u("svg",Af,[...t[0]||(t[0]=[l("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 Bf=Oe({name:"ri-folder-fill",render:Lf}),Pf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ef(e,t){return a(),u("svg",Pf,[...t[0]||(t[0]=[l("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 Rf=Oe({name:"ri-git-fork-line",render:Ef}),Of={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Df(e,t){return a(),u("svg",Of,[...t[0]||(t[0]=[l("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 zf=Oe({name:"ri-git-pull-request-line",render:Df}),Ff={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function qf(e,t){return a(),u("svg",Ff,[...t[0]||(t[0]=[l("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 Wf=Oe({name:"ri-global-line",render:qf}),Nf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Hf(e,t){return a(),u("svg",Nf,[...t[0]||(t[0]=[l("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 wl=Oe({name:"ri-image-line",render:Hf}),Uf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Vf(e,t){return a(),u("svg",Uf,[...t[0]||(t[0]=[l("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 jf=Oe({name:"ri-information-line",render:Vf}),Kf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Gf(e,t){return a(),u("svg",Kf,[...t[0]||(t[0]=[l("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 Qf=Oe({name:"ri-links-line",render:Gf}),Yf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zf(e,t){return a(),u("svg",Yf,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M8 4h13v2H8zm-5-.5h3v3H3zm0 7h3v3H3zm0 7h3v3H3zM8 11h13v2H8zm0 7h13v2H8z"},null,-1)])])}const Xf=Oe({name:"ri-list-check",render:Zf}),Jf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function em(e,t){return a(),u("svg",Jf,[...t[0]||(t[0]=[l("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 tm=Oe({name:"ri-list-unordered",render:em}),nm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function sm(e,t){return a(),u("svg",nm,[...t[0]||(t[0]=[l("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 om=Oe({name:"ri-login-box-line",render:sm}),im={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function am(e,t){return a(),u("svg",im,[...t[0]||(t[0]=[l("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 lm=Oe({name:"ri-mail-line",render:am}),rm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function cm(e,t){return a(),u("svg",rm,[...t[0]||(t[0]=[l("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 um=Oe({name:"ri-message-line",render:cm}),dm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function pm(e,t){return a(),u("svg",dm,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M6 5h2v14H6zm10 0h2v14h-2z"},null,-1)])])}const fm=Oe({name:"ri-pause-fill",render:pm}),mm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function vm(e,t){return a(),u("svg",mm,[...t[0]||(t[0]=[l("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 hm=Oe({name:"ri-pencil-line",render:vm}),gm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ym(e,t){return a(),u("svg",gm,[...t[0]||(t[0]=[l("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 km=Oe({name:"ri-play-fill",render:ym}),bm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function wm(e,t){return a(),u("svg",bm,[...t[0]||(t[0]=[l("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 Sm=Oe({name:"ri-pushpin-fill",render:wm}),Cm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function _m(e,t){return a(),u("svg",Cm,[...t[0]||(t[0]=[l("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 xm=Oe({name:"ri-pushpin-line",render:_m}),$m={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Mm(e,t){return a(),u("svg",$m,[...t[0]||(t[0]=[l("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 Im=Oe({name:"ri-question-line",render:Mm}),Tm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Am(e,t){return a(),u("svg",Tm,[...t[0]||(t[0]=[l("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 Lm=Oe({name:"ri-emotion-line",render:Am}),Bm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Pm(e,t){return a(),u("svg",Bm,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M20 4v12h3l-4 5l-4-5h3V4zm-8 14v2H3v-2zm2-7v2H3v-2zm0-7v2H3V4z"},null,-1)])])}const Em=Oe({name:"ri-sort-desc",render:Pm}),Rm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Om(e,t){return a(),u("svg",Rm,[...t[0]||(t[0]=[l("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 Dm=Oe({name:"ri-sparkling-line",render:Om}),zm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Fm(e,t){return a(),u("svg",zm,[...t[0]||(t[0]=[l("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 qm=Oe({name:"ri-star-fill",render:Fm}),Wm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Nm(e,t){return a(),u("svg",Wm,[...t[0]||(t[0]=[l("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 Hm=Oe({name:"ri-star-line",render:Nm}),Um={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Vm(e,t){return a(),u("svg",Um,[...t[0]||(t[0]=[l("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 jm=Oe({name:"ri-stop-fill",render:Vm}),Km={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Gm(e,t){return a(),u("svg",Km,[...t[0]||(t[0]=[l("path",{fill:"currentColor",d:"M5 11v2h14v-2z"},null,-1)])])}const Qm=Oe({name:"ri-subtract-line",render:Gm}),Ym={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zm(e,t){return a(),u("svg",Ym,[...t[0]||(t[0]=[l("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 Xm=Oe({name:"ri-target-line",render:Zm}),Jm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function e1(e,t){return a(),u("svg",Jm,[...t[0]||(t[0]=[l("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 t1=Oe({name:"ri-terminal-box-line",render:e1}),n1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function s1(e,t){return a(),u("svg",n1,[...t[0]||(t[0]=[l("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 o1=Oe({name:"ri-time-line",render:s1}),i1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function a1(e,t){return a(),u("svg",i1,[...t[0]||(t[0]=[l("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 l1=Oe({name:"ri-tools-line",render:a1}),r1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function c1(e,t){return a(),u("svg",r1,[...t[0]||(t[0]=[l("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 u1=Oe({name:"ri-user-line",render:c1}),d1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function p1(e,t){return a(),u("svg",d1,[...t[0]||(t[0]=[l("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 f1=Oe({name:"tabler-moon-stars",render:p1}),m1=`
-
-
-
-`,v1=`
-
-
-`,h1=`
-
-
-
-
-
-
-
-
-
-`,g1=`
-
-
-
-
-`,y1=`
-
-
-`,k1=`
-
-
-
-`,b1=' ',w1=' ',S1=' ',C1=' ',_1=' ',x1=' ',$1=' ',M1=' ',I1=' ',T1=' ',A1=' ',L1=' ',Sl=' ',B1=' ',P1=' ',E1=' ',R1=' ',O1=' ',D1=' ',z1=' ',F1=' ',q1=' ',W1=' ',N1=' ',H1=' ',U1=' ',V1=' ',j1=' ',K1=' ',G1=' ',Cl=' ',Q1=' ',Y1=' ',Z1=' ',X1=' ',J1=' ',ev=' ',tv=' ',_l=' ',nv=' ',sv=' ',ov=' ',iv=' ',av=' ',lv=' ',rv=' ',cv=' ',uv=' ',dv=' ',pv=' ',fv=' ',mv=' ',vv=' ',hv=' ',gv=' ',yv=' ',kv=' ',bv=' ',wv=' ',Sv=' ',Cv=' ',_v=' ',xv=' ',$v=' ',Ur={sm:14,md:16,lg:20};function Re(e,t){return{component:e,svg:t}}const Vr={plus:Re(Zd,_1),"chat-new":Re(Sd,m1),"calendar-close":Re(Tp,E1),"calendar-schedule":Re(Bp,R1),"calendar-todo":Re(Rp,O1),close:Re(Wp,z1),check:Re(zp,D1),archive:Re(sp,$1),search:Re(Od,y1),copy:Re(vf,K1),link:Re(Qf,sv),"external-link":Re(cf,V1),download:Re(Yp,W1),undo:Re(pp,T1),send:Re(kl,Sl),image:Re(wl,_l),settings:Re(Fd,k1),sliders:Re(nf,H1),"log-in":Re(om,av),"chevron-down":Re(cp,I1),"chevron-right":Re(yp,L1),"chevron-up":Re(Cp,B1),"arrow-up":Re(kl,Sl),"arrow-down":Re(ap,M1),"arrow-right":Re(vp,A1),minus:Re(Qm,wv),"panel-collapse":Re(Nd,b1),"panel-expand":Re(Vd,w1),expand:Re(af,U1),collapse:Re(Kp,q1),list:Re(tm,iv),sort:Re(Em,hv),grip:Re(Jp,N1),folder:Re(Ad,h1),"folder-closed":Re(xd,v1),"folder-plus":Re(Tf,Z1),"folder-solid":Re(Bf,X1),file:Re(bl,Cl),"file-text":Re(Cf,Q1),"file-edit":Re(yf,G1),"file-plus":Re(pf,j1),"file-off":Re(bl,Cl),attachment:Re(Gd,S1),"image-off":Re(wl,_l),code:Re(Up,F1),terminal:Re(t1,Cv),pencil:Re(hm,uv),tool:Re(l1,xv),glob:Re($p,P1),globe:Re(Wf,tv),"check-list":Re(Xf,ov),bolt:Re($f,Y1),"git-fork":Re(Rf,J1),"git-pull-request":Re(zf,ev),message:Re(um,rv),mail:Re(lm,lv),user:Re(u1,$v),info:Re(jf,nv),"help-circle":Re(Im,mv),"alert-triangle":Re(ep,x1),clock:Re(o1,_v),sparkles:Re(Dm,gv),"moon-stars":Re(f1,C1),target:Re(Xm,Sv),pause:Re(fm,cv),play:Re(km,dv),stop:Re(jm,bv),star:Re(qm,yv),"star-outline":Re(Hm,kv),pin:Re(xm,fv),"pin-fill":Re(Sm,pv),emotion:Re(Lm,vv),"dots-horizontal":Re(Pd,g1)};function Mv(e){return Vr[e]}function Iv(e,t){return e.replace(/\s(?:width|height)="[^"]*"/g,"").replace(/^Mv(t.name)),s=$(()=>Ur[t.size]);return(o,i)=>n.value?(a(),Z(Or(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"])):B("",!0)}}),Tv={key:0,class:"ui-dialog__head"},Av={class:"ui-dialog__titles"},Lv={key:0,class:"ui-dialog__title"},Bv={key:1,class:"ui-dialog__desc"},Pv={class:"ui-dialog__body"},Ev={key:1,class:"ui-dialog__foot"},Rv='a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])',Ov=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}=Fe(),s=e,o=t,i=T(null);let c=null;function p(){o("update:open",!1),o("close")}function v(){return i.value?Array.from(i.value.querySelectorAll(Rv)):[]}function g(){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 C(h){if(!s.open)return;if(h.key==="Escape"&&s.closeOnEsc){h.preventDefault(),p();return}if(h.key!=="Tab")return;const m=v(),w=m[0],k=m[m.length-1];if(!w||!k){h.preventDefault(),i.value?.focus();return}const b=document.activeElement;h.shiftKey&&b===w?(h.preventDefault(),k.focus()):!h.shiftKey&&b===k&&(h.preventDefault(),w.focus())}function x(h){s.closeOnOverlay&&h.target===h.currentTarget&&p()}return Ee(()=>s.open,async h=>{if(h){to.value+=1,c=document.activeElement,await Ne();const m=g(),w=v();(m??w[0]??i.value)?.focus()}else to.value=Math.max(0,to.value-1),c instanceof HTMLElement&&(c.focus(),c=null)},{immediate:!0}),typeof window<"u"&&window.addEventListener("keydown",C),vn(()=>{typeof window<"u"&&window.removeEventListener("keydown",C),s.open&&(to.value=Math.max(0,to.value-1))}),(h,m)=>(a(),Z(po,{to:"body"},[e.open?(a(),u("div",{key:0,class:"ui-dialog__overlay",onMousedown:x},[l("div",{ref_key:"panel",ref:i,class:de(["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(),u("div",Tv,[bt(h.$slots,"head",{},()=>[l("div",Av,[e.title?(a(),u("div",Lv,d(e.title),1)):B("",!0),e.description?(a(),u("div",Bv,d(e.description),1)):B("",!0)])],!0),I(et,{class:"ui-dialog__close",size:"sm",label:r(n)("common.close"),onClick:p},{default:j(()=>[I(ae,{name:"close",size:"md"})]),_:1},8,["label"])])):B("",!0),l("div",Pv,[bt(h.$slots,"default",{},void 0,!0)]),h.$slots.foot?(a(),u("div",Ev,[bt(h.$slots,"foot",{},void 0,!0)])):B("",!0)],2)],32)):B("",!0)]))}}),ds=Te(Ov,[["__scopeId","data-v-ee025dcb"]]),Dv={class:"sd-head"},zv=["placeholder","aria-label"],Fv=["aria-selected","onClick","onMousemove"],qv={class:"sd-meta"},Wv=["innerHTML"],Nv={class:"sd-time"},Hv=["innerHTML"],Uv=["innerHTML"],Vv={key:1,class:"sd-empty"},jv={class:"sd-hint"},Kv=200,Gv=Ie({__name:"SearchSessionsDialog",props:{sessions:{},activeId:{}},emits:["select","close"],setup(e,{emit:t}){const{t:n}=Fe(),s=e,o=t,i=T(!0),c=T(""),p=T(null),v=T(null),g=$(()=>{const _=c.value.trim().toLowerCase(),O=[];for(const y of s.sessions){const L=y.title??"",N=y.lastPrompt??"",H=y.workspaceName??"",U=_.length>0&&L.toLowerCase().includes(_),Q=_.length>0&&N.toLowerCase().includes(_),P=_.length>0&&H.toLowerCase().includes(_);if(!(_.length>0&&!U&&!Q&&!P)&&(O.push({session:y,inTitle:U,inWorkspace:P,snippetText:N?gd(N,c.value):""}),O.length>=Kv))break}return O}),C=T(0);Ee(c,()=>{C.value=0});function x(_){const O=g.value.length;return O===0?0:Math.max(0,Math.min(O-1,_))}async function h(){await Ne(),v.value?.querySelector('[aria-selected="true"]')?.scrollIntoView({block:"nearest"})}function m(_){C.value=x(C.value+_),h()}function w(_){o("select",_),o("close")}function k(){const _=g.value[C.value];_&&w(_.session.id)}function b(_){_.key==="ArrowDown"?(_.preventDefault(),m(1)):_.key==="ArrowUp"?(_.preventDefault(),m(-1)):_.key==="Enter"&&(_.preventDefault(),k())}return lt(()=>{p.value?.focus()}),(_,O)=>(a(),Z(ds,{open:i.value,"onUpdate:open":O[1]||(O[1]=y=>i.value=y),size:"lg",height:"fixed",padded:!1,onClose:O[2]||(O[2]=y=>o("close"))},{head:j(()=>[l("div",Dv,[I(ae,{class:"sd-search-icon",name:"search",size:"md"}),rt(l("input",{ref_key:"inputRef",ref:p,"onUpdate:modelValue":O[0]||(O[0]=y=>c.value=y),class:"sd-input",type:"text",placeholder:r(n)("sidebar.searchPlaceholder"),"aria-label":r(n)("sidebar.searchPlaceholder"),autocomplete:"off",spellcheck:"false",onKeydown:b},null,40,zv),[[gn,c.value]])])]),foot:j(()=>[l("span",jv,d(r(n)("sidebar.searchHint")),1)]),default:j(()=>[l("div",{ref_key:"listRef",ref:v,class:"sd-list",role:"listbox"},[g.value.length>0?(a(!0),u(ye,{key:0},Be(g.value,(y,L)=>(a(),u("button",{key:y.session.id,class:de(["sd-row",{on:L===C.value,active:y.session.id===e.activeId}]),role:"option","aria-selected":L===C.value,onClick:N=>w(y.session.id),onMousemove:N=>C.value=L},[l("span",qv,[I(ae,{class:"sd-folder",name:"folder-closed",size:"sm"}),l("span",{class:"sd-ws",innerHTML:r(Ri)(y.session.workspaceName??y.session.workspaceId??"",y.inWorkspace?c.value:"")},null,8,Wv),l("span",Nv,d(y.session.time),1)]),l("span",{class:"sd-title",innerHTML:r(Ri)(y.session.title,y.inTitle?c.value:"")},null,8,Hv),y.snippetText?(a(),u("span",{key:0,class:"sd-snippet",innerHTML:r(Ri)(y.snippetText,c.value)},null,8,Uv)):B("",!0)],42,Fv))),128)):(a(),u("div",Vv,d(r(n)("sidebar.searchNoResults")),1))],512)]),_:1},8,["open"]))}}),Qv=Te(Gv,[["__scopeId","data-v-ac47909f"]]),jr=["⚡","🔥","✅","❌","📌","⭐","🚀","💡","📝","🎯","🧠","🤖","🔧","📦","🌱","🎨","🔍","📈","🕐","🎉"];function Yv(e){return jr.includes(e)}function Zv(){const e=ho(ze.sessionEmoji);if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="string"&&Yv(s)&&(t[n]=s);return t}function Xv(e){Ks(ze.sessionEmoji,e)}function Jv(e,t,n){const s={...e};return n===null||n===""?delete s[t]:s[t]=n,s}const eh={preview:"Preview",confirm:"Confirm",cancel:"Cancel",close:"Close",copy:"Copy"},th={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"},nh={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"Workspaces",sortWorkspaces:"Sort workspaces",sortManual:"Manual",sortRecent:"Last edited",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",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",mascot:"Kimi mascot",searchPlaceholder:"Search sessions",search:"Search",searchHint:"↑↓ navigate · ↵ open · Esc close",searchNoResults:"No matching sessions"},sh={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"},oh={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…"},ih={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)",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",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"},ah={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",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)"},lh={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."},rh={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"}},ch={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"},uh={justNow:"just now"},dh={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"},ph={title:"Question",step:"Q{current}/{total}",back:"‹ Back",nextQuestion:"Next question ›",otherDefault:"Other…",submit:"Submit",dismiss:"Dismiss",minimize:"Minimize",expand:"Expand"},fh={tag:"tasks",summary:"{run} running · {done} done",stop:"stop",defaultDescription:"Background task",dockTasks:"Background tasks",dockBash:"Bash",dockSubagent:"Sub Agent",dockTodos:"Todos",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",openTab:"Open the tasks tab",openDetail:"Open",collapse:"Collapse",expand:"Expand",fieldTask:"Task",fieldOutput:"Output",fieldProgress:"Progress",fieldResult:"Result"},mh={panelTitle:"Thinking",close:"Close"},vh={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"},hh={},gh={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"}},yh={searching:"Searching…",noMatch:"No matches"},kh={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",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."}},bh={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",noSession:"Open a session before exporting it."},status:{desc:"View session status"},undo:{desc:"Undo the last message"}},wh={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"}},Sh={resizeHandleAria:"Resize sidebar width",resizePreviewAria:"Resize preview panel width",detailPanelAria:"Detail panel"},Ch={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"},_h={colorSchemeLabel:"Light/Dark",light:"Moon Bright",dark:"Moon Dark",system:"System",accentLabel:"Accent",accentBlue:"Blue",accentBlack:"Black"},xh={preview:"预览",confirm:"确认",cancel:"取消",close:"关闭",copy:"复制"},$h={authBannerMessage:"未登录 · 需要登录 Kimi Code 才能开始对话",authBannerLogin:"登录",authPageTitle:"登录 Kimi Code",authPageMessage:"先连接 Kimi Code 账号,然后再开始或继续对话。",authPageLogin:"登录",connecting:"连接中…",connectRetrying:"无法连接服务器,正在重试…",internalBuildBanner:"仅供内部测试"},Mh={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"工作区",sortWorkspaces:"工作区排序",sortManual:"手动排序",sortRecent:"按最后编辑时间",collapseAll:"折叠全部工作区",expandAll:"展开全部工作区",newSession:"新建会话",newChat:"新建对话",newWorkspace:"新建工作区",emptyState:"还没有会话 · 点击 新建会话 开始",archiveConfirm:"确认归档会话?归档后可以从「设置」中恢复",options:"选项",pin:"置顶会话",unpin:"取消置顶",emoji:"设置表情",emojiRemove:"移除表情",rename:"重命名",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:"展开侧边栏",mascot:"Kimi 吉祥物",searchPlaceholder:"搜索会话",search:"搜索",searchHint:"↑↓ 选择 · ↵ 打开 · Esc 关闭",searchNoResults:"没有匹配的会话"},Ih={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:"此会话在完成前被中断"},Th={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:"等待响应…"},Ah={connectionConnected:"已连接",connectionConnecting:"连接中…",connectionDisconnected:"未连接",ctxTooltip:"使用 {used} / {max} tokens ({pct}%)",modelLabel:"模型",permissionManual:"逐条确认",permissionAuto:"完全自主",permissionYolo:"自动通过",permissionManualDesc:"每个工具操作都需要你手动确认",permissionAutoDesc:"完全自主运行,智能体自己做决定,不再询问",permissionYoloDesc:"自动批准工具操作,但遇到关键问题仍会询问",planLabel:"计划",planDesc:"先让智能体梳理计划,再修改文件",planOn:"开",planOff:"关",planTooltip:"切换计划模式(先调研再修改)",modesLabel:"模式",goalLabel:"目标",goalDesc:"持续跟踪一个目标,直到任务完成",swarmLabel:"Swarm",swarmDesc:"并行运行多个智能体,适合大范围探索",supermoonLabel:"Supermoon",supermoonDesc:"深度规划,并以最高思考强度运行",modeOff:"未启用",goalPlaceholder:"让智能体完成什么目标?",goalStart:"开始",goalPause:"暂停",goalResume:"继续",goalCancel:"取消",goalCancelConfirm:"是否需要取消当前目标?取消后将无法恢复。",goalCancelConfirmYes:"是",goalCancelConfirmNo:"否",goalStatusActive:"进行中",goalStatusPaused:"已暂停",goalStatusBlocked:"已阻塞",goalStatusComplete:"已完成",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:"进行中"},Lh={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:"添加附件",previewAttachment:"预览 {name}",interrupt:"中断",interruptTitle:"中断当前操作",expandTitle:"展开输入框进行多行编辑",collapseTitle:"收起输入框",emptyConversationTitle:"Kimi Code",emptyConversation:"还没有消息 —— 在下方输入开始对话",quickStartPlaceholder:"输入消息开始新对话…",thinkingSuffix:" · 思考",thinkingSuffixEffort:" · {level}",queueSteer:"立即发送 (Ctrl+S)"},Bh={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 进程后重试"},Ph={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 不能为空"}},Eh={dialogLabel:"切换模型",title:"切换模型",close:"关闭 (Esc)",allTab:"全部",providerTabs:"模型提供商",searchPlaceholder:"搜索模型或提供商…",loading:"加载模型中…",unavailable:"daemon 暂不支持模型列表",contextSuffix:"{size} ctx",emptyNoModels:"daemon 未提供可选模型",emptyNoMatch:"无匹配模型",starTitle:"添加到收藏",unstarTitle:"取消收藏",footerHint:"↑↓ 导航 · Enter 选择 · Esc 关闭"},Rh={justNow:"刚刚"},Oh={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:"拒绝并退出"},Dh={title:"提问",step:"Q{current}/{total}",back:"‹ 返回",nextQuestion:"下一题 ›",otherDefault:"其他…",submit:"提交",dismiss:"放弃",minimize:"最小化",expand:"展开"},zh={tag:"任务",summary:"{run} 运行中 · {done} 完成",stop:"stop",defaultDescription:"后台任务",dockTasks:"后台任务",dockBash:"后台 Bash",dockSubagent:"子 Agent",dockTodos:"待办",running:"运行中",closePanel:"关闭面板",timingRunning:"运行中 · {time}",timingDone:"完成 · {sec}s",emptyTasks:"暂无后台任务",emptyBash:"暂无后台 Bash 任务",emptySubagent:"暂无子 Agent 任务",emptyTodo:"暂无待办事项",openTab:"查看全部后台任务",openDetail:"查看",collapse:"折叠",expand:"展开",fieldTask:"任务",fieldOutput:"输出",fieldProgress:"进度",fieldResult:"结果"},Fh={panelTitle:"思考过程",close:"关闭"},qh={title:"改动",branch:"分支",aheadTitle:"领先远程",behindTitle:"落后远程",changeCount:"{count} 改动",empty:"无 git 改动 / daemon 未提供",clean:"工作区干净,无改动",back:"返回",loading:"正在加载 diff…",noDiff:"该文件没有行级改动",list:"列表",tree:"树形",close:"关闭",colorblind:"色盲配色",colorblindOff:"默认",colorblindRedGreen:"红绿色盲",colorblindBlueYellow:"蓝黄色盲"},Wh={},Nh={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:"无法读取这个文件"}},Hh={searching:"搜索中…",noMatch:"无匹配"},Uh={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",diagnostics:"诊断信息",hideDetails:"收起详情",operationFailedMessage:"刚才的操作没有完成,请稍后重试。",operationFailedTitle:"操作失败",sessionSnapshotMessage:"Web 没能加载当前会话内容。请确认 Kimi daemon 仍在运行,或刷新页面重试。",sessionSnapshotTitle:"无法加载当前会话内容",showDetails:"查看详情",copyDetails:"复制诊断信息",copied:"已复制",wsTitle:"实时连接出错",goal:{alreadyExists:"当前会话已有一个进行中的目标,请先取消它再创建新目标。",notFound:"没有找到可操作的目标,可能它已经结束或被取消。",statusInvalid:"当前目标状态不支持这个操作。",notResumable:"这个目标无法恢复(可能已取消或已完成)。",objectiveTooLong:"目标描述太长了,请精简后重试。"}},Vh={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 压缩包",noSession:"请先打开一个会话再导出。"},status:{desc:"查看会话状态"},undo:{desc:"撤销上一条消息"}},jh={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:"已取消"}},Kh={resizeHandleAria:"调整侧栏宽度",resizePreviewAria:"调整预览面板宽度",detailPanelAria:"详情面板"},Gh={openSwitcher:"切换会话 / 工作区",openSettings:"会话设置",settingsTitle:"会话设置",groupSession:"当前会话",groupApp:"应用偏好",sheetLabel:"面板",closeSheet:"关闭",tapToCycle:"点击切换",running:"运行中",idle:"空闲",sessionCount:"{n} 个会话",newSession:"新建会话",permManualSub:"每个工具都确认",permAutoSub:"完全自主,不再提问",permYoloSub:"自动批准工具,仍可能提问",planModeSub:"计划模式",swarmModeSub:"Swarm 模式",supermoonModeSub:"Supermoon 模式",archivedSessions:"已归档会话",archivedSessionsSub:"查看并恢复已归档会话",archivedBack:"返回"},Qh={colorSchemeLabel:"明暗",light:"月之亮面",dark:"月之暗面",system:"跟随系统",accentLabel:"主题色",accentBlue:"蓝色",accentBlack:"黑色"},Yh={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"},Zh={title:"欢迎来使用 Kimi Web",subtitle:"来选择一些你的偏好 —— 之后也可以在设置里随时修改。",languageLabel:"语言",start:"开始使用",skip:"跳过",reopen:"偏好 / 引导"},Xh={title:"Settings",close:"Close (Esc)",tabs:{general:"General",agent:"Agent",account:"Account",advanced:"Advanced",archived:"Archived"},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…"},Jh={title:"设置",close:"关闭 (Esc)",tabs:{general:"通用",agent:"Agent",account:"账户",advanced:"高级",archived:"已归档"},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:"正在加载全部归档会话…"},eg={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"},tg={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:"导出会话"},ng={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"},sg={title:"侧边聊天",subtitle:"从当前会话 fork",empty:"在侧边随手问一句 —— 它共享当前会话的上下文。",placeholder:"问问侧边聊天…",send:"发送"},og={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…"},ig={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}"},ag={title:"需要服务器令牌",hint:"此服务器受保护。请输入服务器启动时打印的 bearer token(或通过 {password} 设置的密码)。",placeholder:"令牌",connect:"连接",connecting:"连接中…"},lg={dockTerminal:"终端",newTerminal:"新建终端",inputPlaceholder:"输入命令后按回车",loading:"正在加载终端…",empty:"暂无终端 — 创建一个即可在此会话中使用 shell",listFailed:"加载终端失败",createFailed:"创建终端失败",closeFailed:"关闭终端失败",closeTerminal:"关闭终端",exited:"进程已退出,退出码 {code}"},rg={en:{common:eh,app:th,sidebar:nh,workspace:sh,conversation:oh,status:ih,composer:ah,login:lh,providers:rh,model:ch,sessions:uh,approval:dh,question:ph,tasks:fh,thinking:mh,diff:vh,fileTree:hh,filePreview:gh,mention:yh,warnings:kh,commands:bh,tools:wh,layout:Sh,mobile:Ch,theme:_h,onboarding:Yh,settings:Xh,header:eg,sideChat:ng,serverAuth:og,terminal:ig},zh:{common:xh,app:$h,sidebar:Mh,workspace:Ih,conversation:Th,status:Ah,composer:Lh,login:Bh,providers:Ph,model:Eh,sessions:Rh,approval:Oh,question:Dh,tasks:zh,thinking:Fh,diff:qh,fileTree:Wh,filePreview:Nh,mention:Hh,warnings:Uh,commands:Vh,tools:jh,layout:Kh,mobile:Gh,theme:Qh,onboarding:Zh,settings:Jh,header:tg,sideChat:sg,serverAuth:ag,terminal:lg}},Kr=[{code:"en",label:"English"},{code:"zh",label:"中文"}];function cg(){const e=xt(ze.locale);return e==="en"||e==="zh"?e:globalThis.navigator?.language?.toLowerCase().startsWith("zh")?"zh":"en"}const at=Pu({legacy:!1,locale:cg(),fallbackLocale:"en",messages:rg});function Gr(e){at.global.locale.value=e,Lt(ze.locale,e)}const ug=["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"],Qr=500,ri=256*1024,xl=200,Oi=16384,Di=500,zi=50,Fi=50,dg=6,pg=/api[_-]?key|authorization|token|secret|password|cookie|credential/i,fg=/^[A-Za-z0-9+/=_-]{200,}$/;let qi=null;function qn(){if(qi!==null)return qi;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=xt(ze.debug)==="1"),qi=e,e}const xs=[],ao=[];let So=0;const Rs=[];let Co=0,mg=1;const ci=new TextEncoder,vg=new Set(ug),Ea=T(0),_o=Eu(!1);function hg(){return xs}function gg(){xs.length=0,ao.length=0,So=0,Rs.length=0,Co=0,Ea.value++}function ps(e){if(!_o.value){try{const t={id:mg++,ts:Date.now(),source:e.source,kind:String(ro(e.kind)),label:String(ro(e.label)),sessionId:e.sessionId===void 0?void 0:String(ro(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:$s(e.detail)},n=JSON.stringify(t),s=ci.encode(n).byteLength;if(s>ri)return;for(xs.push(t),ao.push(n),So+=s+(ao.length>1?1:0);xs.length>Qr||So>ri;){const o=ao.shift();xs.shift(),o!==void 0&&(So-=ci.encode(o).byteLength,ao.length>0&&(So-=1))}}catch{return}Ea.value++}}function Ls(e){if(typeof e=="string")return e.length<=xl?e:e.slice(0,xl)}function _n(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function yg(e,t){if(vg.has(e))try{const n={ts:Date.now(),event:e,sessionId:Ls(t?.sessionId),status:Ls(t?.status),operation:Ls(t?.operation),seq:_n(t?.seq),durationMs:_n(t?.durationMs),messageCount:_n(t?.messageCount),contentCount:_n(t?.contentCount),mediaCount:_n(t?.mediaCount),sessionCount:_n(t?.sessionCount),workspaceCount:_n(t?.workspaceCount),promptId:Ls(t?.promptId),zipBytes:_n(t?.zipBytes),errorName:Ls(t?.errorName),errorCode:_n(t?.errorCode),requestId:Ls(t?.requestId),phase:Ls(t?.phase),httpStatus:_n(t?.httpStatus),fatal:typeof t?.fatal=="boolean"?t.fatal:void 0,line:_n(t?.line),col:_n(t?.col)},s=JSON.stringify(n),o=ci.encode(s).byteLength;if(o>ri)return;for(Rs.push(s),Co+=o+(Rs.length>1?1:0);Rs.length>Qr||Co>ri;){const i=Rs.shift();i!==void 0&&(Co-=ci.encode(i).byteLength,Rs.length>0&&(Co-=1))}}catch{return}}function ro(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 fg.test(i)?`[base64-like, ${i.length} chars omitted]`:i.length>Di?`${i.slice(0,Di)}… [+${i.length-Di} chars]`:i}if(n!=="object")return String(e);if(t>=dg)return"[max depth]";if(Array.isArray(e)){const i=e.slice(0,zi).map(c=>ro(c,t+1));return e.length>zi&&i.push(`[+${e.length-zi} more items]`),i}const s={},o=Object.entries(e);for(const[i,c]of o.slice(0,Fi))s[i]=pg.test(i)?"[redacted]":ro(c,t+1);return o.length>Fi&&(s._truncatedKeys=o.length-Fi),s}function $s(e){if(e===void 0)return;const t=ro(e);try{const n=JSON.stringify(t);if(n!==void 0&&n.length>Oi)return{_truncated:`detail JSON was ${n.length} chars; first ${Oi} kept`,preview:n.slice(0,Oi)}}catch{return"[unserializable detail]"}return t}const Yr=/^\/(oauth\/login|auth|providers|config|files)(\/|$)/i;function Ko(e){qn()&&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:Yr.test(e.path)?void 0:$s(e.body)}})}function Zs(e){if(!qn())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:Yr.test(e.path)?void 0:$s(e.data)}})}function hs(e){qn()&&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 Xs(e,t){qn()&&ps({source:"ws",kind:"ws:lifecycle",eventType:e,label:`ws ${e}`,detail:$s(t)})}function kg(e){if(!qn())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:$s(e)})}function bg(e){if(!qn())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,c=[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}${c.length>0?` (${c.join(" ")})`:""}`,detail:$s(t.payload)})}const wg={error:"✕",warn:"⚠",info:"ℹ",debug:"·",log:"·"};function Sg(e,t,n){qn()&&ps({source:"client",kind:`client:${e}`,label:`${wg[e]} ${t}`,detail:$s(n)})}function cs(e,t){qn()&&ps({source:"client",kind:"client:event",label:`· ${e}`,detail:$s(t)})}function Et(e,t){yg(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 Wi=!1,Go=null;function Cg(){if(Wi)return()=>Go?.();Wi=!0;const e=[];try{if(typeof window<"u"){const n=o=>{Et("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;Et("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(qn())for(const n of["error","warn","log","info","debug"]){const s=console[n];if(typeof s!="function")continue;const o=(...i)=>{try{Sg(n,i.map(_g).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(Go===t){for(const n of e.toReversed())n();Go=null,Wi=!1}};return Go=t,t}function _g(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 Zr(e=xs){if(typeof document>"u")return;const t=new Blob([xg(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 xg(e=xs){return e===xs?ao.join(`
-`):e.map(t=>JSON.stringify(t)).join(`
-`)}function $g(){return Rs.join(`
-`)}const Xr="kimiWeb.compaction",Jr="kimiWeb.turnError",Zt=at.global.t,Mg={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"},Ig={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 Gs(e){const t=(e??"").trim().toLowerCase().replace(/[\s-]+/g,"_");return Ig[t]??t}function Ms(e){const t=Mg[Gs(e)];return t?Zt(t):e}const Tg={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 Po(e){const t=Gs(e);let n=Tg[t];return!n&&(e??"").trim().toLowerCase().includes("skill")&&(n="bolt"),n||(n="tool"),no(n,"sm")}const ec=80;function Ag(e,t=ec){const n=e.trim();return n.length>t?n.slice(0,t-1)+"…":n}function Lg(e,t){const n=e.trim();return!!(n===""||n==="{}"||n==="[]"||n==="null"||t&&Object.keys(t).length===0)}function Bg(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 Xe(e){return typeof e=="string"&&e.length>0?e:void 0}function ws(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Pg(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 Ni(e){return Xe(e.path)??Xe(e.file_path)??Xe(e.filePath)??Xe(e.filename)}const Eg={active:"status.goalStatusActive",blocked:"status.goalStatusBlocked",complete:"status.goalStatusComplete"};function Rg(e){const t=Xe(e);if(!t)return;const n=Eg[t];return n?Zt(n):t}function Og(e){const t=ws(e.value),n=Xe(e.unit);if(!(t===void 0||!n))switch(n){case"turns":return Zt("tools.goal.turns",{value:t});case"tokens":return Zt("tools.goal.tokens",{value:t});case"milliseconds":return Zt("tools.goal.milliseconds",{value:t});case"seconds":return Zt("tools.goal.seconds",{value:t});case"minutes":return Zt("tools.goal.minutes",{value:t});case"hours":return Zt("tools.goal.hours",{value:t});default:return Zt("tools.goal.budget",{value:t,unit:n})}}const Dg=64;function Ns(e,t,n=!1){const s=(o,i=ec)=>n?o.trim():Ag(o,i);try{const o=Bg(t);if(!n&&Lg(t,o))return"";const i=()=>s(t.replace(/^·\s*/,""));if(!o)return i();switch(Gs(e)){case"read":{const c=Ni(o);if(!c)return i();const p=ws(o.offset)??ws(o.line_start)??ws(o.start_line),v=ws(o.limit)??ws(o.length),g=ws(o.line_end)??ws(o.end_line)??(p!==void 0&&v!==void 0?p+v:void 0);return s(p!==void 0&&g!==void 0?`${c}:${p}-${g}`:p!==void 0?`${c}:${p}`:c)}case"write":{const c=Ni(o);return c?s(`${c} ${Zt("tools.chip.created")}`):i()}case"edit":case"multi_edit":{const c=Ni(o);return c?s(c):i()}case"bash":{const c=Xe(o.command)??Xe(o.cmd)??Xe(o.script);return c?s(c,Dg):i()}case"grep":case"search":{const c=Xe(o.pattern)??Xe(o.query)??Xe(o.regex),p=Xe(o.path)??Xe(o.glob)??Xe(o.include);return c&&p?s(`${c} in ${p}`):c?s(c):i()}case"glob":{const c=Xe(o.pattern)??Xe(o.glob)??Xe(o.query),p=Xe(o.path)??Xe(o.cwd);return c&&p?s(`${c} in ${p}`):c?s(c):Xe(o.path)?s(Xe(o.path)):i()}case"ls":{const c=Xe(o.path)??Xe(o.dir)??Xe(o.directory)??Xe(o.cwd);return c?s(c):i()}case"web_fetch":{const c=Xe(o.url)??Xe(o.uri);return c?s(Pg(c)):i()}case"todo":case"task":{const c=Xe(o.description)??Xe(o.title)??Xe(o.prompt)??Xe(o.name)??Xe(o.subagent_type);if(c)return s(c);const p=Array.isArray(o.todos)?o.todos:Array.isArray(o.items)?o.items:void 0;return p?s(Zt("tools.chip.todos",{count:p.length})):i()}case"creategoal":{if(n)return i();const c=Xe(o.objective),p=Xe(o.completionCriterion);return c&&p?s(Zt("tools.goal.objectiveWithCriterion",{objective:c,criterion:p})):c?s(c):i()}case"getgoal":return n?i():"";case"setgoalbudget":{if(n)return i();const c=Og(o);return c?s(c):i()}case"updategoal":{if(n)return i();const c=Rg(o.status);return c?s(Zt("tools.goal.status",{status:c})):i()}default:return i()}}catch{return t}}function tc(e){try{switch(Gs(e.name)){case"bash":return e.timing?e.timing:"";case"read":{if(e.output&&e.output.length>0){const t=e.output.length;return Zt("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 Zt("tools.chip.edited")}return""}case"grep":case"search":return e.output&&e.output.length>0?Zt("tools.chip.results",{count:e.output.length}):"";default:return""}}catch{return""}}function nc(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 la(e){return e.contextTokens===0&&e.contextLimit===0&&e.inputTokens===0&&e.outputTokens===0&&e.turnCount===0}function On(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:nc(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 Mo(e){return{id:e.id,root:e.root,name:e.name,lastOpenedAt:e.last_opened_at,sessionCount:e.session_count}}function $l(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 Ra(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:$l(e.source)};case"video":return{type:"video",source:$l(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 ra(e){return{id:e.id,sessionId:e.session_id,role:e.role,content:e.content.map(Ra),createdAt:e.created_at,promptId:e.prompt_id,parentMessageId:e.parent_message_id,metadata:e.metadata}}function zg(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 Fg(e){return{content:e.content.map(zg),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 qg(e){return{decision:e.decision,scope:e.scope,feedback:e.feedback,selected_label:e.selectedLabel}}function sc(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 Wg(e){return{id:e.id,label:e.label,description:e.description,recommended:e.recommended===!0||e.is_recommended===!0}}function Ng(e){return{id:e.id,question:e.question,header:e.header,body:e.body,options:e.options.map(Wg),multiSelect:e.multi_select,allowOther:e.allow_other,otherLabel:e.other_label,otherDescription:e.other_description}}function oc(e){return{questionId:e.question_id,sessionId:e.session_id,turnId:e.turn_id,toolCallId:e.tool_call_id,questions:e.questions.map(Ng),createdAt:e.created_at}}function Hg(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 Ug(e){const t={};for(const[n,s]of Object.entries(e.answers))t[n]=Hg(s);return{answers:t,method:e.method,note:e.note}}function ii(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,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 Ml(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 gs(e,t){const n=e[t];return typeof n=="string"?n:void 0}function Js(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function xn(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function ic(e){if(!e||typeof e!="object")return null;const t=e,n=gs(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:gs(t,"goalId")??gs(t,"goal_id")??"goal",objective:gs(t,"objective")??"",completionCriterion:gs(t,"completionCriterion")??gs(t,"completion_criterion"),status:n,turnsUsed:Js(t,"turnsUsed")??Js(t,"turns_used")??0,tokensUsed:Js(t,"tokensUsed")??Js(t,"tokens_used")??0,wallClockMs:Js(t,"wallClockMs")??Js(t,"wall_clock_ms")??0,terminalReason:gs(t,"terminalReason")??gs(t,"terminal_reason"),budget:{tokenBudget:xn(o,"tokenBudget")??xn(o,"token_budget"),remainingTokens:xn(o,"remainingTokens")??xn(o,"remaining_tokens"),turnBudget:xn(o,"turnBudget")??xn(o,"turn_budget"),remainingTurns:xn(o,"remainingTurns")??xn(o,"remaining_turns"),wallClockBudgetMs:xn(o,"wallClockBudgetMs")??xn(o,"wall_clock_budget_ms"),remainingWallClockMs:xn(o,"remainingWallClockMs")??xn(o,"remaining_wall_clock_ms"),overBudget:o.overBudget===!0||o.over_budget===!0}}}function Vg(e){const t=e;switch(e.type){case"event.session.created":return{type:"sessionCreated",session:On(t.payload.session)};case"event.session.updated":return{type:"sessionUpdated",session:On(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:Mo(t.payload.workspace)};case"event.workspace.updated":return{type:"workspaceUpdated",workspace:Mo(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:nc(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=ic(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:ra(t.payload.message)};case"event.message.updated":return{type:"messageUpdated",sessionId:t.session_id,messageId:t.payload.message_id,content:t.payload.content.map(Ra),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:sc(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:oc(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:ii(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:ca(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};default:return{type:"unknown",raw:e}}}function jg(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 Qo(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 Kg(e){return{id:e.id,name:e.name,maxContextSize:e.max_context_size,capabilities:e.capabilities,reasoning:e.reasoning}}function Gg(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(Kg)}}function ca(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 Qg(e){return e.session_id}function Yg(e){return e.seq}const Zg="main",Xg=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 as(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 Jg(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 Il(){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 tn(e,t){const n=e[t];return typeof n=="string"?n:void 0}function Ps(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function $n(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function e0(e){if(!e||typeof e!="object")return null;const t=e,n=t.budget,s=n&&typeof n=="object"?n:{},o=tn(t,"status");if(o!=="active"&&o!=="paused"&&o!=="blocked"&&o!=="complete")return null;const i=tn(t,"goalId")??tn(t,"goal_id")??"goal",c=tn(t,"objective")??"";return{goalId:i,objective:c,completionCriterion:tn(t,"completionCriterion")??tn(t,"completion_criterion"),status:o,turnsUsed:Ps(t,"turnsUsed")??Ps(t,"turns_used")??0,tokensUsed:Ps(t,"tokensUsed")??Ps(t,"tokens_used")??0,wallClockMs:Ps(t,"wallClockMs")??Ps(t,"wall_clock_ms")??0,terminalReason:tn(t,"terminalReason")??tn(t,"terminal_reason"),budget:{tokenBudget:$n(s,"tokenBudget")??$n(s,"token_budget"),remainingTokens:$n(s,"remainingTokens")??$n(s,"remaining_tokens"),turnBudget:$n(s,"turnBudget")??$n(s,"turn_budget"),remainingTurns:$n(s,"remainingTurns")??$n(s,"remaining_turns"),wallClockBudgetMs:$n(s,"wallClockBudgetMs")??$n(s,"wall_clock_budget_ms"),remainingWallClockMs:$n(s,"remainingWallClockMs")??$n(s,"remaining_wall_clock_ms"),overBudget:s.overBudget===!0||s.over_budget===!0}}}function Os(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 t0(e,t){if(e==="turn.step.started")return null;if(e==="tool.use"||e==="tool.call.started"){const n=tn(t,"name")??tn(t,"toolName")??"tool",s=Ms(n0(n)),o=s0(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=tn(n,"text");if(o)return Hi(o);const i=tn(n,"message");if(i)return Hi(i)}const s=tn(t,"message");if(s)return Hi(s)}return null}function n0(e){return e.replace(/_\d+$/,"")}const Tl=2e3;function Hi(e){return e.length>Tl?`${e.slice(0,Tl)}…`:e}function s0(e,t){if(t==null)return"";const n=typeof t=="string"?t:JSON.stringify(t);return Ns(e,n)}function o0(e,t,n,s,o,i){if(i.has(n)&&s==="turn.step.started")return[];if(s==="assistant.delta"){const C=tn(o,"delta");if(!C)return[];const x=e.subagentMeta.get(n),h=Os(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:C,stream:"stdout",kind:"text"}),m}const c=t0(s,o);if(c===null||c.length===0)return[];const p=e.subagentMeta.get(n),v=Os(e,t,n,{status:"running",subagentPhase:"working",startedAt:p?.startedAt??new Date().toISOString()}),g=[];return v&&g.push({type:"taskCreated",sessionId:t,task:v}),g.push({type:"taskProgress",sessionId:t,taskId:n,outputChunk:c,stream:"stdout"}),g}function ko(e){return{...e,content:e.content.map(t=>({...t}))}}function Al(e,t,n){const s={id:as("msg_"),sessionId:t,role:"assistant",content:[],createdAt:new Date().toISOString(),promptId:n};return e.messages.push(s),s}function i0(e,t,n,s,o,i){const c={id:s,sessionId:t,role:"user",content:o,createdAt:i,promptId:n};return e.messages.push(c),c}function a0(e){return Array.isArray(e)?e.map(t=>Ra(t)):[]}function Ll(e,t,n,s){const o=e.messages.find(c=>c.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 l0(e,t,n,s,o,i){const c=e.messages.find(p=>p.id===t);c&&c.content.push({type:"toolUse",toolCallId:n,toolName:s,input:o,outputLines:i})}function r0(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 Bl(e,t){e.messages.find(n=>n.id===t)}function c0(e,t,n,s,o,i){const c={id:as("msg_"),sessionId:t,role:"tool",content:[{type:"toolResult",toolCallId:n,output:s,isError:o}],createdAt:new Date().toISOString(),promptId:i};return e.messages.push(c),c}function bo(e,t){return e.messages.find(n=>n.id===t)}function Pl(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 u0(){const e=new Map,t=new Set;function n(x){let h=e.get(x);return h||(h=Il(),e.set(x,h)),h}function s(x){e.set(x,Il())}function o(x){e.delete(x)}function i(x){t.add(x)}function c(x,h){const m=n(x);m.currentPromptId=h}function p(x,h){s(x);const m=n(x),w=h.promptId??as("pr_");m.currentPromptId=w,m.turnPromptId.set(h.turnId,w);const k=Al(m,x,w);h.thinkingText.length>0&&k.content.push({type:"thinking",thinking:h.thinkingText}),h.assistantText.length>0&&k.content.push({type:"text",text:h.assistantText});for(const b of h.runningTools){const _=typeof b.lastProgress?.text=="string"&&b.lastProgress.text.length>0?[b.lastProgress.text]:void 0;k.content.push({type:"toolUse",toolCallId:b.toolCallId,toolName:b.name,input:b.args??{},outputLines:_}),m.toolStartTimes.set(b.toolCallId,Date.now())}return m.currentAssistantMsgId=k.id,m.turnTextLen=h.assistantText.length,m.turnThinkLen=h.thinkingText.length,[{type:"messageCreated",message:ko(k)}]}function v(x,h,m,w){try{return C(x,h,m,w)}catch(k){return console.error("[agentProjector] Error projecting event:",x,k instanceof Error?k.message:k),[]}}function g(x,h){return h===void 0?"append":hx?"gap":"append"}function C(x,h,m,w){const k=n(m),b=h,_=[],O=b?.agentId;if(typeof O=="string"&&O!==Zg){const y=t.has(O);if(y&&(x==="thinking.delta"||x==="assistant.delta")){const L=b?.delta??"";return L?[{type:"agentDelta",sessionId:m,agentId:O,delta:{[x==="thinking.delta"?"thinking":"text"]:L}}]:[]}if(y&&x==="turn.ended")return[{type:"agentTurnEnded",sessionId:m,agentId:O,reason:b?.reason}];if(Xg.has(x))return o0(k,m,O,x,b??{},t)}switch(x){case"session.meta.updated":{const y=b?.patch?.title??b?.title,L=b?.patch?.lastPrompt,N={};typeof y=="string"&&y.length>0&&(N.title=y),typeof L=="string"&&(N.lastPrompt=L),(N.title!==void 0||N.lastPrompt!==void 0)&&_.push({type:"sessionMetaUpdated",sessionId:m,...N});break}case"prompt.submitted":{const y=b?.promptId,L=b?.userMessageId;if(!y||!L)break;const N=a0(b?.content);if(N.length===0)break;k.currentPromptId=y;const H=i0(k,m,y,L,N,typeof b?.createdAt=="string"?b.createdAt:new Date().toISOString());_.push({type:"messageCreated",message:ko(H)});break}case"turn.started":{const y=b?.turnId,L=k.currentPromptId??as("pr_");k.currentPromptId=L,y!==void 0&&k.turnPromptId.set(y,L),k.turnTextLen=0,k.turnThinkLen=0,_.push({type:"turnActiveChanged",sessionId:m,active:!0});break}case"turn.step.started":{const y=b?.turnId;let L=k.turnPromptId.get(y)??k.currentPromptId;if(L||(L=as("pr_"),k.currentPromptId=L,y!==void 0&&k.turnPromptId.set(y,L)),k.turnTextLen=0,k.turnThinkLen=0,k.retryReuseMsgId!==void 0){const H=k.retryReuseMsgId;if(k.retryReuseMsgId=void 0,bo(k,H)!==void 0){k.currentAssistantMsgId=H;break}}const N=Al(k,m,L);k.currentAssistantMsgId=N.id,_.push({type:"messageCreated",message:ko(N)});break}case"thinking.delta":{const y=k.currentAssistantMsgId;if(!y)break;const L=b?.delta??"";if(!L)break;w?.offset===0&&k.turnThinkLen>0&&(k.turnThinkLen=0);const N=g(k.turnThinkLen,w?.offset);if(N==="skip")break;if(N==="gap"){_.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"delta_gap"});break}const H=Ll(k,y,"thinking",L);if(H<0)break;k.turnThinkLen+=L.length,_.push({type:"assistantDelta",sessionId:m,messageId:y,contentIndex:H,delta:{thinking:L}});break}case"assistant.delta":{const y=k.currentAssistantMsgId;if(!y)break;const L=b?.delta??"";if(!L)break;w?.offset===0&&k.turnTextLen>0&&(k.turnTextLen=0);const N=g(k.turnTextLen,w?.offset);if(N==="skip")break;if(N==="gap"){_.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"delta_gap"});break}const H=Ll(k,y,"text",L);if(H<0)break;k.turnTextLen+=L.length,_.push({type:"assistantDelta",sessionId:m,messageId:y,contentIndex:H,delta:{text:L}});break}case"tool.use":case"tool.call.started":{const y=k.currentAssistantMsgId,L=b?.turnId,N=k.turnPromptId.get(L)??k.currentPromptId;if(!y||!N)break;const H=b?.toolCallId,U=b?.name??b?.toolName??"",Q=b?.args??b?.input??{};l0(k,y,H,U,Q);const P=bo(k,y);P&&P.content.length-1,k.toolStartTimes.set(H,Date.now()),P&&_.push({type:"messageUpdated",sessionId:m,messageId:y,content:P.content.map(M=>({...M})),status:"pending"});break}case"tool.call.delta":break;case"tool.progress":{const y=b?.toolCallId,L=r0(b??{});y&&L&&_.push({type:"toolOutput",sessionId:m,toolCallId:y,outputChunk:L.outputChunk,stream:L.stream});break}case"tool.result":{const y=b?.turnId;let L=k.turnPromptId.get(y)??k.currentPromptId;L||(L=as("pr_"),k.currentPromptId=L,y!==void 0&&k.turnPromptId.set(y,L));const N=b?.toolCallId,H=b?.output,U=b?.isError??!1;k.toolStartTimes.get(N)??Date.now(),k.toolStartTimes.delete(N);const Q=c0(k,m,N,H,U,L);_.push({type:"messageCreated",message:ko(Q)}),k.currentAssistantMsgId=void 0;break}case"turn.step.completed":{const y=k.currentAssistantMsgId,L=Jg(b?.usage);if(k.totalInput+=L.input,k.totalOutput+=L.output,k.totalCacheRead+=L.cacheRead,k.totalCacheCreate+=L.cacheCreate,y){Bl(k,y);const N=bo(k,y);N&&_.push({type:"messageUpdated",sessionId:m,messageId:y,content:N.content.map(H=>({...H})),status:"completed"})}break}case"agent.status.updated":{b?.model&&(k.model=b.model),b?.contextTokens!==void 0&&(k.contextTokens=b.contextTokens),b?.maxContextTokens!==void 0&&(k.contextLimit=b.maxContextTokens),_.push({type:"sessionUsageUpdated",sessionId:m,usage:Pl(k),model:k.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 y=k.currentAssistantMsgId,L=b?.reason??"completed",N=Ps(b??{},"durationMs");if(_.push({type:"turnActiveChanged",sessionId:m,active:!1,reason:b?.reason}),y){Bl(k,y);const Q=bo(k,y);Q&&_.push({type:"messageUpdated",sessionId:m,messageId:y,content:Q.content.map(P=>({...P})),status:L==="failed"||L==="blocked"?"error":"completed",durationMs:N})}k.turnCount++;const H=Pl(k);_.push({type:"sessionUsageUpdated",sessionId:m,usage:H});const U=b?.error;if(L==="failed"&&U!==void 0&&typeof U.message=="string"&&U.message.length>0){const Q=typeof b?.turnId=="number"?b.turnId:void 0,P=(Q!==void 0?k.turnPromptId.get(Q):void 0)??k.currentPromptId;_.push({type:"messageCreated",message:{id:`turnerror_${m}_${Q??"unknown"}`,sessionId:m,role:"assistant",content:[{type:"text",text:U.message}],createdAt:new Date().toISOString(),promptId:P,metadata:{[Jr]:{code:typeof U.code=="string"?U.code:void 0,message:U.message}}}})}k.currentAssistantMsgId=void 0,k.currentPromptId=void 0,k.turnTextLen=0,k.turnThinkLen=0,k.retryReuseMsgId=void 0;break}case"prompt.completed":{const y=b?.promptId;typeof y=="string"&&y.length>0&&_.push({type:"promptCompleted",sessionId:m,promptId:y,reason:b?.reason??"completed"});break}case"prompt.aborted":{const y=b?.promptId;typeof y=="string"&&y.length>0&&_.push({type:"promptAborted",sessionId:m,promptId:y});break}case"turn.step.retrying":{const y=k.currentAssistantMsgId;if(y!==void 0){const L=bo(k,y);L!==void 0&&(L.content=L.content.filter(N=>N.type!=="text"&&N.type!=="thinking"&&N.type!=="toolUse"),_.push({type:"messageUpdated",sessionId:m,messageId:y,content:L.content.map(N=>({...N})),status:"pending"}),k.retryReuseMsgId=y)}k.turnTextLen=0,k.turnThinkLen=0,k.toolStartTimes.clear();break}case"turn.step.interrupted":{k.currentAssistantMsgId=void 0,k.retryReuseMsgId=void 0;break}case"subagent.spawned":{const L={id:typeof b?.subagentId=="string"&&b.subagentId.length>0?b.subagentId:as("task_"),sessionId:m,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};k.subagentMeta.set(L.id,L),_.push({type:"taskCreated",sessionId:m,task:L});break}case"subagent.started":{const y=Os(k,m,b?.subagentId,{subagentPhase:"working",status:"running",startedAt:new Date().toISOString()});y&&_.push({type:"taskCreated",sessionId:m,task:y});break}case"subagent.suspended":{const y=Os(k,m,b?.subagentId,{subagentPhase:"suspended",status:"running",suspendedReason:typeof b?.reason=="string"?b.reason:void 0});y&&_.push({type:"taskCreated",sessionId:m,task:y});break}case"subagent.completed":{const y=typeof b?.resultSummary=="string"?b.resultSummary:void 0,L=Os(k,m,b?.subagentId,{subagentPhase:"completed",status:"completed",completedAt:new Date().toISOString(),outputPreview:y});L&&_.push({type:"taskCreated",sessionId:m,task:L}),_.push({type:"taskCompleted",sessionId:m,taskId:b?.subagentId??"",status:"completed",outputPreview:y});break}case"subagent.failed":{const y=typeof b?.error=="string"?b.error:void 0,L=Os(k,m,b?.subagentId,{subagentPhase:"failed",status:"failed",completedAt:new Date().toISOString(),outputPreview:y});L&&_.push({type:"taskCreated",sessionId:m,task:L}),_.push({type:"taskCompleted",sessionId:m,taskId:b?.subagentId??"",status:"failed",outputPreview:y});break}case"error":{_.push({type:"unknown",raw:{_agentError:!0,code:b?.code,message:b?.message,name:b?.name,details:b?.details,retryable:b?.retryable}});break}case"warning":{_.push({type:"unknown",raw:{_agentWarning:!0,message:b?.message}});break}case"task.started":{const y=b?.info??{},L=typeof y.startedAt=="number"?new Date(y.startedAt).toISOString():void 0,N=typeof y.taskId=="string"?y.taskId:typeof y.taskId=="number"?String(y.taskId):as("task_"),H=typeof y.description=="string"?y.description:typeof y.command=="string"?y.command:at.global.t("tasks.defaultDescription");if(y.kind==="agent"){const Q=typeof y.agentId=="string"&&y.agentId.length>0?y.agentId:void 0;if(Q!==void 0){const P=Os(k,m,Q,{description:H,backgroundTaskId:N,runInBackground:!0});P&&_.push({type:"taskCreated",sessionId:m,task:P})}else _.push({type:"taskCreated",sessionId:m,task:{id:N,sessionId:m,kind:"subagent",description:H,status:"running",createdAt:L??new Date().toISOString(),startedAt:L,subagentPhase:"queued",runInBackground:!0}});break}const U=typeof y.command=="string"?y.command:void 0;_.push({type:"taskCreated",sessionId:m,task:{id:N,sessionId:m,kind:"bash",description:H,command:U,status:"running",createdAt:L??new Date().toISOString(),startedAt:L,outputPreview:U!==void 0?`$ ${U}`:void 0}});break}case"task.terminated":{const y=b?.info??{},L=y.status==="failed"||typeof y.exitCode=="number"&&y.exitCode!==0;_.push({type:"taskCompleted",sessionId:m,taskId:typeof y.taskId=="string"?y.taskId:typeof y.taskId=="number"?String(y.taskId):"",status:L?"failed":"completed"});break}case"compaction.completed":{const y=b?.result??{};_.push({type:"compactionCompleted",sessionId:m,tokensBefore:typeof y.tokensBefore=="number"?y.tokensBefore:void 0,tokensAfter:typeof y.tokensAfter=="number"?y.tokensAfter:void 0,summary:typeof y.summary=="string"?y.summary:void 0}),_.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"auto_compact"});break}case"compaction.started":{_.push({type:"compactionStarted",sessionId:m,trigger:b?.trigger==="manual"?"manual":"auto",instruction:typeof b?.instruction=="string"?b.instruction:void 0});break}case"compaction.cancelled":{_.push({type:"compactionCancelled",sessionId:m});break}case"goal.updated":{const y=e0(b?.snapshot??null);_.push({type:"goalUpdated",sessionId:m,goal:y?.status==="complete"?null:y});break}case"cron.fired":{const y=b?.origin,L=tn(b??{},"prompt");if(y&&typeof y=="object"&&y.kind==="cron_job"&&L){const N={id:as("cron_"),sessionId:m,role:"user",content:[{type:"text",text:L}],createdAt:new Date().toISOString(),metadata:{origin:y}};k.messages.push(N),_.push({type:"messageCreated",message:ko(N)})}break}}return _}return{project:v,bindNextPromptId:c,seedInFlight:p,reset:s,disposeSession:o,markSideChannelAgent:i}}const d0=new Set(["server_hello","ack","ping","resync_required","error","pong"]),El=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"]),p0=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"]),f0=new Set(["assistant.delta","thinking.delta"]);function m0(e,t){if(d0.has(e))return{route:"ignore"};const n=e.startsWith("event."),s=n?e.slice(6):e;return f0.has(s)?v0(t)?{route:"agent",agentType:s}:{route:"protocol"}:n?p0.has(s)?{route:"protocol"}:El.has(s)?{route:"agent",agentType:s}:{route:"protocol"}:El.has(s)?{route:"agent",agentType:s}:{route:"agent",agentType:s}}function v0(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 xo 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 os 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 xo||typeof e=="object"&&e!==null&&e.name==="DaemonApiError"&&typeof e.code=="number"}function Oa(e){return e instanceof os||typeof e=="object"&&e!==null&&e.name==="DaemonNetworkError"&&typeof e.method=="string"&&typeof e.path=="string"}const Qt="kimi-web.server-credential",h0="token",g0=10080*60*1e3;let us;const ua=new Set;function y0(){if(typeof window>"u")return;const e=window.location.hash??"";if(!e.startsWith("#"))return;const n=new URLSearchParams(e.slice(1)).get(h0);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 da(e){return{version:1,credential:e,expiresAt:Date.now()+g0}}function k0(e){return JSON.stringify(e)}function Da(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 pa(e){globalThis.localStorage?.setItem(Qt,k0(e))}function b0(){try{const e=globalThis.localStorage?.getItem(Qt);if(e){const n=Da(e);if(n===void 0){const s=da(e);let o=!1;try{pa(s),o=!0}catch{}if(!o)try{globalThis.localStorage?.getItem(Qt)===e&&globalThis.localStorage?.removeItem(Qt),o=!0}catch{}try{globalThis.sessionStorage?.removeItem(Qt)}catch{}return o?s:void 0}if(n.expiresAt>Date.now())return n;globalThis.sessionStorage?.removeItem(Qt),globalThis.localStorage?.getItem(Qt)===e&&globalThis.localStorage?.removeItem(Qt);return}const t=globalThis.sessionStorage?.getItem(Qt);if(t){const n=da(t);let s=!1;try{pa(n),s=!0}catch{}try{globalThis.sessionStorage?.removeItem(Qt),s=!0}catch{}return s?n:void 0}return}catch{return}}function w0(){if(us=b0(),Eo()!==void 0)return!0;const e=y0();return e?(ac(e),!0):!1}function Eo(){if(us!==void 0){if(us.expiresAt<=Date.now()){S0(us);return}return us.credential}}function S0(e){us=void 0;try{globalThis.sessionStorage?.removeItem(Qt);const t=globalThis.localStorage?.getItem(Qt),n=t==null?void 0:Da(t);(n===void 0?t===e.credential:n.credential===e.credential&&n.expiresAt===e.expiresAt)&&globalThis.localStorage?.removeItem(Qt)}catch{}}function ac(e){const t=da(e);us=t;try{pa(t)}catch{}try{globalThis.sessionStorage?.removeItem(Qt)}catch{}}function C0(){const e=us;us=void 0;try{const t=globalThis.localStorage?.getItem(Qt),s=(t==null?void 0:Da(t))?.credential??t;e!==void 0&&s===e.credential&&globalThis.localStorage?.removeItem(Qt),globalThis.sessionStorage?.removeItem(Qt)}catch{}}function _0(e){return ua.add(e),()=>{ua.delete(e)}}function x0(){C0();for(const e of ua)try{e()}catch{}}const so=3e4,Yo=5*6e4,lc="0123456789ABCDEFGHJKMNPQRSTVWXYZ",Rl=500,rc=40101;function Zo(e=so){try{return AbortSignal.timeout(e)}catch{return}}function $0(e,t){let n="",s=e;for(let o=0;olc[n%32]).join("")}function Xo(){return`${$0(Date.now(),10)}${M0(16)}`}function I0(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 Ui(e){try{const t=await e.text();return t?t.length>Rl?`${t.slice(0,Rl)}...`:t:void 0}catch{return}}class T0{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=zs(this.origin,t),s=Xo(),o={"X-Request-Id":s};this.addClientHeaders(o);const i=Date.now();Ko({method:"GET",path:t,url:n,requestId:s});let c;try{c=await fetch(n,{method:"GET",headers:o,signal:Zo()})}catch(v){throw hs({method:"GET",path:t,requestId:s,phase:"fetch",durationMs:Date.now()-i,error:v}),new os({message:`Network error calling GET ${t}`,cause:v,method:"GET",path:t,url:n,requestId:s,phase:"fetch",timeoutMs:so,timestamp:Date.now(),durationMs:Date.now()-i})}if(c.ok)return Zs({method:"GET",path:t,requestId:s,status:c.status,durationMs:Date.now()-i,code:0,msg:""}),c.blob();let p;try{p=await c.clone().json()}catch{}throw this.checkAuthRequired(c,p?.code??0),Zs({method:"GET",path:t,requestId:s,status:c.status,durationMs:Date.now()-i,code:p?.code??c.status,msg:p?.msg??c.statusText,envelopeRequestId:p?.request_id}),new xo({code:p?.code??c.status,msg:p?.msg??c.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)}async postZip(t,n,s){const o="POST",i=zs(this.origin,t),c=Xo(),p={"X-Request-Id":c,"Content-Type":"application/json; charset=utf-8"};this.addClientHeaders(p);const v=Date.now();Ko({method:o,path:t,url:i,requestId:c,body:s});let g;try{g=await fetch(i,{method:o,headers:p,body:JSON.stringify(n),signal:Zo(Yo)})}catch(m){throw hs({method:o,path:t,requestId:c,phase:"fetch",durationMs:Date.now()-v,error:m}),new os({message:`Network error calling ${o} ${t}`,cause:m,method:o,path:t,url:i,requestId:c,phase:"fetch",timeoutMs:Yo,timestamp:Date.now(),durationMs:Date.now()-v})}const C=g.headers.get("content-type")??void 0,x=C?.split(";",1)[0]?.trim().toLowerCase();if(!g.ok||x!=="application/zip"){let m;try{m=await g.clone().json()}catch{}if(this.checkAuthRequired(g,m?.code??0),!g.ok||m!==void 0&&m.code!==0){const b=m?.code??g.status,_=m?.msg??g.statusText;throw Zs({method:o,path:t,requestId:c,status:g.status,durationMs:Date.now()-v,code:b,msg:_,envelopeRequestId:m?.request_id}),new xo({code:b,msg:_,requestId:m?.request_id??c,details:m?.details,timestamp:Date.now(),durationMs:Date.now()-v})}const w=g.clone(),k=new TypeError(`Expected application/zip, received ${C??"no content type"}`);throw hs({method:o,path:t,requestId:c,phase:"parse",durationMs:Date.now()-v,status:g.status,error:k}),new os({message:`Invalid ZIP response from ${o} ${t}`,cause:k,method:o,path:t,url:i,requestId:c,phase:"parse",timeoutMs:Yo,status:g.status,statusText:g.statusText,contentType:C,bodyPreview:await Ui(w),timestamp:Date.now(),durationMs:Date.now()-v})}let h;try{h=await g.blob()}catch(m){throw hs({method:o,path:t,requestId:c,phase:"parse",durationMs:Date.now()-v,status:g.status,error:m}),new os({message:`Failed to read ZIP response from ${o} ${t}`,cause:m,method:o,path:t,url:i,requestId:c,phase:"parse",timeoutMs:Yo,status:g.status,statusText:g.statusText,contentType:C,timestamp:Date.now(),durationMs:Date.now()-v})}return Zs({method:o,path:t,requestId:c,status:g.status,durationMs:Date.now()-v,code:0,msg:""}),{blob:h,contentDisposition:g.headers.get("content-disposition")??void 0}}async postForm(t,n){const s=zs(this.origin,t),o=Xo(),i={"X-Request-Id":o};this.addClientHeaders(i);const c=Date.now();Ko({method:"POST",path:t,url:s,requestId:o,body:I0(n)});let p;try{p=await fetch(s,{method:"POST",headers:i,body:n,signal:Zo()})}catch(C){throw hs({method:"POST",path:t,requestId:o,phase:"fetch",durationMs:Date.now()-c,error:C}),new os({message:`Network error calling POST ${t}`,cause:C,method:"POST",path:t,url:s,requestId:o,phase:"fetch",timeoutMs:so,timestamp:Date.now(),durationMs:Date.now()-c})}let v;const g=p.clone();try{v=await p.json()}catch(C){throw hs({method:"POST",path:t,requestId:o,phase:"parse",durationMs:Date.now()-c,status:p.status,error:C}),new os({message:`Failed to parse JSON response from POST ${t}`,cause:C,method:"POST",path:t,url:s,requestId:o,phase:"parse",timeoutMs:so,status:p.status,statusText:p.statusText,contentType:p.headers.get("content-type")??void 0,bodyPreview:await Ui(g),timestamp:Date.now(),durationMs:Date.now()-c})}if(Zs({method:"POST",path:t,requestId:o,status:p.status,durationMs:Date.now()-c,code:v.code,msg:v.msg,envelopeRequestId:v.request_id,data:v.data}),this.checkAuthRequired(p,v.code),v.code!==0)throw new xo({code:v.code,msg:v.msg,requestId:v.request_id,details:v.details,timestamp:Date.now(),durationMs:Date.now()-c});return v.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=[]){let c=zs(this.origin,n);if(o){const m=new URLSearchParams;for(const[k,b]of Object.entries(o))b!==void 0&&m.set(k,String(b));const w=m.toString();w&&(c=`${c}?${w}`)}const p=Xo(),v={"X-Request-Id":p};this.addClientHeaders(v),s!==void 0&&(v["Content-Type"]="application/json; charset=utf-8");const g=Date.now();Ko({method:t,path:n,url:c,requestId:p,body:s});let C;try{C=await fetch(c,{method:t,headers:v,body:s!==void 0?JSON.stringify(s):void 0,signal:Zo()})}catch(m){throw hs({method:t,path:n,requestId:p,phase:"fetch",durationMs:Date.now()-g,error:m}),new os({message:`Network error calling ${t} ${n}`,cause:m,method:t,path:n,url:c,requestId:p,phase:"fetch",timeoutMs:so,timestamp:Date.now(),durationMs:Date.now()-g})}let x;const h=C.clone();try{x=await C.json()}catch(m){throw hs({method:t,path:n,requestId:p,phase:"parse",durationMs:Date.now()-g,status:C.status,error:m}),new os({message:`Failed to parse JSON response from ${t} ${n}`,cause:m,method:t,path:n,url:c,requestId:p,phase:"parse",timeoutMs:so,status:C.status,statusText:C.statusText,contentType:C.headers.get("content-type")??void 0,bodyPreview:await Ui(h),timestamp:Date.now(),durationMs:Date.now()-g})}if(Zs({method:t,path:n,requestId:p,status:C.status,durationMs:Date.now()-g,code:x.code,msg:x.msg,envelopeRequestId:x.request_id,data:x.data}),this.checkAuthRequired(C,x.code),x.code!==0&&!i.includes(x.code))throw new xo({code:x.code,msg:x.msg,requestId:x.request_id,details:x.details,timestamp:Date.now(),durationMs:Date.now()-g});return x.data}addClientHeaders(t){const n=Eo();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===rc)&&x0()}}function A0(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 L0(e){const t={url:e.url};return e.apiKey!==void 0&&(t.api_key=e.apiKey),t}function Ol(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 B0(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 P0(e,t){return e.filter(n=>B0(n,t))}function E0(e,t){return{type:"subscribe_v2",id:t,payload:{session_id:e.sessionId,transcript:e.grades,transcript_since:e.sinceSeq??void 0}}}function R0(e,t,n){return{type:"unsubscribe_v2",id:t,payload:{session_id:e,...n?{agent_ids:n}:{}}}}class O0{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 D0(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 c=i.data;if(!c||typeof c.agent_id!="string"||!Array.isArray(c.batches)||typeof c.latest_seq!="number"||typeof c.complete!="boolean")throw new Error("transcript ops: unexpected response shape");const p=c.batches.flatMap(v=>{const g=v;return!g||typeof g.seq!="number"||!Array.isArray(g.ops)?[]:[{seq:g.seq,ops:g.ops}]});return{agentId:c.agent_id,batches:p,latestSeq:c.latest_seq,complete:c.complete}}function z0(e){let t=new Map;function n(h){const m=t.get(h);if(m!==void 0)return m;const w=F0();return t.set(h,w),w}function s(h){if(!Array.isArray(h))return[];const m=[];for(const w of h)try{m.push(...i(w))}catch(k){console.error("[transcriptProjector] error projecting op:",k instanceof Error?k.message:k)}return m}function o(){t=new Map}function i(h){const m=eo(h);switch(kt(m,"op")){case"turn.upsert":return c(m);case"step.upsert":return p(m);case"frame.upsert":return v(m);case"append":return g(m);default:return[]}}function c(h){const m=eo(h.turn),w=kt(m,"turnId"),k=kt(m,"state");if(w===void 0||!H0(k))return[];const b=n(w);b.state=k;const _=kt(m,"prompt");_!==void 0&&(b.prompt=_);const O=N0(m,"startedAt");O!==void 0&&(b.startedAt=O);const y=W0(m,"durationMs");y!==void 0&&(b.durationMs=y);const L=[];return k==="queued"?L:k==="running"?(b.prompt!==void 0&&b.prompt.length>0&&!b.userEmitted&&(L.push({type:"messageCreated",message:{id:`usr_${w}`,sessionId:e,role:"user",content:[{type:"text",text:b.prompt}],createdAt:b.startedAt??new Date().toISOString()}}),b.userEmitted=!0),L):(b.endEmitted||(b.assistantEmitted&&L.push({type:"messageUpdated",sessionId:e,messageId:`asst_${w}`,content:Dl(b.content),status:"completed",...b.durationMs!==void 0?{durationMs:b.durationMs}:{}}),L.push({type:"sessionWorkChanged",sessionId:e,busy:!1,mainTurnActive:!1,lastTurnReason:k}),b.endEmitted=!0),L)}function p(h){const m=eo(h.step),w=kt(h,"turnId")??kt(m,"turnId"),k=m.frames;if(w===void 0||!Array.isArray(k))return[];const b=n(w),_=[];for(const O of k){const y=eo(O),L=kt(y,"frameId");L!==void 0&&(b.seenFrames.has(L)||_.push(...C(b,w,y)))}return _}function v(h){const m=kt(h,"turnId"),w=eo(h.frame),k=kt(w,"frameId");if(m===void 0||k===void 0)return[];const b=n(m),_=kt(w,"kind");return(_==="text"||_==="thinking")&&b.seenFrames.has(k)?[]:C(b,m,w)}function g(h){const m=eo(h.target),w=kt(h,"text");if(w===void 0)return[];const k=kt(m,"type");if(k==="task"){const U=kt(m,"taskId");return U===void 0?[]:[{type:"taskProgress",sessionId:e,taskId:U,outputChunk:w,stream:"stdout"}]}if(k!=="frame")return[];const b=kt(m,"turnId"),_=kt(m,"frameId");if(b===void 0||_===void 0)return[];const O=n(b),y=[];x(O,b,y);const L=fa(O,_),N=O.content[L];(N===void 0||N.type!=="text"&&N.type!=="thinking")&&(O.content[L]={type:"text",text:""});const H=O.content[L];return H!==void 0&&(H.type==="text"?(H.text+=w,y.push({type:"assistantDelta",sessionId:e,messageId:`asst_${b}`,contentIndex:L,delta:{text:w}})):H.type==="thinking"&&(H.thinking+=w,y.push({type:"assistantDelta",sessionId:e,messageId:`asst_${b}`,contentIndex:L,delta:{thinking:w}}))),O.seenFrames.add(_),y}function C(h,m,w){const k=kt(w,"frameId");if(k===void 0)return[];const b=[];switch(h.seenFrames.add(k),kt(w,"kind")){case"text":{if(kt(w,"role")!=="assistant")break;const y=kt(w,"text");if(y===void 0)break;x(h,m,b);const{index:L,part:N}=zl(h,k,"text");N.type==="text"&&(N.text+=y),b.push({type:"assistantDelta",sessionId:e,messageId:`asst_${m}`,contentIndex:L,delta:{text:y}});break}case"thinking":{const O=kt(w,"text");if(O===void 0)break;x(h,m,b);const{index:y,part:L}=zl(h,k,"thinking");L.type==="thinking"&&(L.thinking+=O),b.push({type:"assistantDelta",sessionId:e,messageId:`asst_${m}`,contentIndex:y,delta:{thinking:O}});break}case"tool":{const O=kt(w,"toolCallId");if(O===void 0)break;if(x(h,m,b),!h.content.some(N=>N.type==="toolUse"&&N.toolCallId===O)){const N=fa(h,k);h.content[N]={type:"toolUse",toolCallId:O,toolName:kt(w,"name")??"",input:w.input??{},outputLines:[]}}b.push({type:"messageUpdated",sessionId:e,messageId:`asst_${m}`,content:Dl(h.content),status:"pending"});const y=w.progress;q0(y)&&b.push({type:"toolOutput",sessionId:e,toolCallId:O,outputChunk:kt(y,"text")??"",stream:y.kind==="stderr"?"stderr":"stdout"});const L=kt(w,"state");(L==="done"||L==="error")&&!h.emittedToolResults.has(O)&&(h.emittedToolResults.add(O),b.push({type:"messageCreated",message:{id:`tool_${O}`,sessionId:e,role:"tool",content:[{type:"toolResult",toolCallId:O,output:w.output??w.display??{},isError:L==="error"}],createdAt:new Date().toISOString()}}));break}}return b}function x(h,m,w){h.assistantEmitted||(h.assistantEmitted=!0,w.push({type:"messageCreated",message:{id:`asst_${m}`,sessionId:e,role:"assistant",content:[],createdAt:new Date().toISOString()}}))}return{project:s,reset:o}}function F0(){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 eo(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function q0(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function kt(e,t){const n=e[t];return typeof n=="string"?n:void 0}function W0(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function N0(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 H0(e){return e==="queued"||e==="running"||e==="completed"||e==="failed"||e==="cancelled"}function Dl(e){return e.map(t=>t.type==="toolUse"&&t.outputLines!==void 0?{...t,outputLines:[...t.outputLines]}:{...t})}function fa(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 zl(e,t,n){const s=fa(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 U0=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 V0(e){return U0.has(e)}function j0(e,t){if(!Array.isArray(e))return[];const n=[];for(const s of e)try{n.push(...K0(s,t))}catch(o){console.error("[transcriptOpsToAppEvents] error mapping op:",o instanceof Error?o.message:o)}return n}function Cs(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function Dn(e,t){const n=e[t];return typeof n=="string"?n:void 0}function Fl(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 cc(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 K0(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 G0(n.prompt,t);case"task.upsert":return Z0(n.task,t);case"meta.merge":return ey(n.meta,t);default:return[]}}function G0(e,t){const n=Cs(e),s=Dn(n,"prompt");if(s===void 0||s.trim().length===0)return[];const o=Dn(n,"createdAt")??new Date().toISOString();return[{type:"messageCreated",message:{id:Dn(n,"promptId")??`pr_${t}-${o}`,sessionId:t,role:"user",content:[{type:"text",text:s}],createdAt:o}}]}const Q0={shell:"bash",subagent:"subagent",tool:"tool"};function Y0(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 Z0(e,t){const n=Cs(e),s=Dn(n,"taskId");if(s===void 0||s.length===0)return[];const o=n.kind,i=typeof o=="string"?Q0[o]:void 0;if(i===void 0)return[];const c=Dn(n,"state");if(c===void 0)return[];const p=Y0(c);if(p===void 0)return[];const v=Fl(n,"startedAt"),g=Fl(n,"endedAt"),C=Dn(n,"description")??Dn(n,"name")??Dn(n,"title")??"",x={id:s,sessionId:t,kind:i,description:C,status:p.status,createdAt:v??new Date().toISOString(),...v!==void 0?{startedAt:v}:{},...g!==void 0?{completedAt:g}:{}};switch(p.eventKind){case"taskCreated":return[{type:"taskCreated",sessionId:t,task:x}];case"taskProgress":return[{type:"taskProgress",sessionId:t,taskId:s,outputChunk:Dn(n,"outputTail")??"",stream:"stdout"}];case"taskCompleted":{const h=Dn(n,"error")??Dn(n,"stateReason");return[{type:"taskCompleted",sessionId:t,taskId:s,status:p.status,...p.status==="failed"&&h!==void 0?{outputPreview:h}:{}}]}}}function X0(e){if(e.usage!==void 0&&e.usage!==null||Object.keys(e).some(n=>n.startsWith("tokens_")))return!0;const t=Cs(e.agent);return t.usage!==void 0&&t.usage!==null?!0:cc([t],["contextTokens","maxContextTokens"])!==void 0}function J0(e){const t=Cs(e.usage),n=Cs(e.agent),s=Cs(Cs(n.usage).total),o=(i,c)=>cc(i,c)??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 ey(e,t){const n=Cs(e);return X0(n)?[{type:"sessionUsageUpdated",sessionId:t,usage:J0(n)}]:[]}const ty="kimi-code.bearer.",ny=3e4;class sy{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(),Xs("connect",{url:this.wsUrl,attempt:this.reconnectAttempts});const t=Eo(),n=t!==void 0?[`${ty}${t}`]:void 0,s=new WebSocket(this.wsUrl,n);this.ws=s,s.onopen=()=>{Xs("open")},s.onmessage=o=>{this.lastActivityAt=Date.now();try{const i=JSON.parse(String(o.data));bg(i),this.handleFrame(i)}catch(i){Xs("parse-error",{error:String(i)}),this.handlers.onError(0,`Failed to parse WS frame: ${String(i)}`,!1)}},s.onerror=()=>{Xs("error"),this.handlers.onError(0,"WebSocket error",!1)},s.onclose=o=>{Xs("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,Xs("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(R0(t,this.nextId(),n))}transcriptSubscribedSessionIds(){return Array.from(this.transcriptSubscriptions.keys())}sendTranscriptSubscribe(t){const n=this.transcriptSubscriptions.get(t);n&&this.send(E0({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=Jo(t,n),i=this.terminalAttachments.get(o),c=s??i?.lastSeq??0;this.terminalAttachments.set(o,{sessionId:t,terminalId:n,lastSeq:c}),!(!this.connected||!this.ws)&&this.sendTerminalAttach(t,n,c)}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(Jo(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(Jo(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,ny),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,c=Jo(s,o),p=this.terminalAttachments.get(c);p&&this.terminalAttachments.set(c,{...p,lastSeq:Math.max(p.lastSeq,i)});const v=typeof n.payload?.data=="string"?n.payload.data:"";this.handlers.onTerminalOutput?.(s,o,v,i);break}case"terminal_exit":{const s=n.session_id,o=n.terminal_id,i=n.payload?.exit_code,c=typeof i=="number"?i:null;this.handlers.onTerminalExit?.(s,o,c);break}default:{this.trackCursor(n);const s=n.type,o=m0(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,c=n;this.handlers.onRawAgentEvent({type:o.agentType,seq:i.seq,session_id:i.session_id,timestamp:i.timestamp,payload:i.payload,...c.volatile!==void 0?{volatile:c.volatile}:{},...c.offset!==void 0?{offset:c.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)),kg(t)}catch{}}nextId(){return`c_${++this.msgSeq}`}}function Jo(e,t){return`${e}\0${t}`}function oy(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 ql(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}}function Vi(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 Wl(e){return e==="auto_compact"||e==="manual_compact"}class iy{http;config;constructor(t){this.config=t,this.http=new T0(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(On),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 On(s)}async getSession(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}`);return On(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 On(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 ic(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 On(n)}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(ra),hasMore:o.has_more}}async getSessionSnapshot(t){const n=Date.now();Et("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:On(s.session),messages:s.messages.items.map(ra),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(sc),pendingQuestions:s.pending_questions.map(oc),subagents:(s.subagents??[]).map(ii)};return Et("session:snapshot:accepted",{sessionId:t,busy:o.session.busy,seq:o.asOfSeq,messageCount:o.messages.length,durationMs:Date.now()-n}),o}catch(s){throw Et("session:snapshot:failed",{sessionId:t,status:"failed",durationMs:Date.now()-n,...ql(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}),c=`${t}.zip`;return{blob:i.blob,fileName:oy(i.contentDisposition,c)}}async submitPrompt(t,n){const s=Date.now();Et("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`,Fg(n));return Et("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 Et("prompt:failed",{sessionId:t,status:"failed",durationMs:Date.now()-s,...ql(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);return On(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 On(o)}async listChildSessions(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/children`)).items.map(On)}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)}`,qg(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)}`,Ug(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(ii)}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 ii(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(Vi)}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 Vi(o)}async getTerminal(t,n){const s=await this.http.get(`/sessions/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}`);return Vi(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){const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/skills/${encodeURIComponent(n)}:activate`,s!==void 0&&s.length>0?{args:s}:{});return{activated:o.activated,skillName:o.skill_name}}async listDirectory(t,n){const s={};n.path!==void 0&&(s.path=n.path),n.depth!==void 0&&(s.depth=n.depth),n.includeGitStatus!==void 0&&(s.include_git_status=n.includeGitStatus);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:list`,s),i=o.children_by_path?Object.fromEntries(Object.entries(o.children_by_path).map(([c,p])=>[c,p.map(Ml)])):void 0;return{items:o.items.map(Ml),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 zs(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(Mo)}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 Mo(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 Mo(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(jg)}async listProviders(){return(await this.http.get("/providers")).items.map(Qo)}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 Qo(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 ji(n)}async refreshAllProviders(){const t=await this.http.post("/providers:refresh");return ji(t)}async refreshOAuthProviderModels(){const t=await this.http.post("/providers:refresh_oauth");return ji(t)}async browseCatalogProviders(t){return(await this.http.get("/catalog/providers",{query:t})).items.map(Gg)}async importCatalogProvider(t){const n=await this.http.post("/providers:import_catalog",A0(t));return{provider:Qo(n.provider),modelsImported:n.models_imported}}async importRegistry(t){const n=await this.http.post("/providers:import_registry",L0(t));return{providers:n.providers.map(Qo),modelsImported:n.models_imported}}async getConfig(){const t=await this.http.get("/config");return ca(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,c]of Object.entries(t)){const p=s[i];p!==void 0&&(n[p]=c)}const o=await this.http.post("/config",n);return ca(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 zs(this.config.serverHttpUrl,`/files/${encodeURIComponent(t)}`)}async getFileBlob(t){return this.http.getBlob(`/files/${encodeURIComponent(t)}`)}connectEvents(t){const n=od(this.config.serverHttpUrl,this.config.clientId),s=u0();let o=!1;const i=new Map;function c(h){let m=i.get(h);return m||(m={projector:z0(h),watermarks:new O0,armed:!1},i.set(h,m)),m}function p(h,m){const w=c(h),k=[];for(const b of m)k.push(...j0([b],h)),k.push(...w.projector.project([b]));return k}const v=(h,m,w)=>{(async()=>{try{const k=await D0({baseUrl:this.config.serverHttpUrl,sessionId:h,agentId:m,sinceSeq:w.watermarks.get(h,m),token:Eo()});for(const b of k.batches){w.watermarks.set(h,m,b.seq);for(const _ of p(h,b.ops))t.onEvent(_,{sessionId:h,seq:b.seq})}k.complete||(w.projector.reset(),t.onResync(h,0))}catch{w.projector.reset(),t.onResync(h,0)}})()};function g(h,m){const w=h;if(!w||typeof w.agent_id!="string"||!Array.isArray(w.ops))return;const k=w.agent_id,b=c(m);b.armed=!0;const _=typeof w.seq=="number"?w.seq:void 0;if(_!==void 0&&b.watermarks.advance(m,k,_)){v(m,k,b);return}for(const O of p(m,w.ops))t.onEvent(O,{sessionId:m,seq:_??0});_!==void 0&&(b.watermarks.set(m,k,_),x.updateTranscriptSince(m,k,_))}function C(h,m){const w=c(m);w.armed=!0,w.projector.reset(),w.watermarks.clear(m),t.onResync(m,0)}const x=new sy(n,this.config.clientId,{onWireEvent:h=>{const m=Qg(h),w=Yg(h),k=Vg(h);k.type==="historyCompacted"&&!Wl(k.reason)&&t.onResync(k.sessionId,k.beforeSeq),t.onEvent(k,{sessionId:m,seq:w})},onRawAgentEvent:h=>{if(o&&i.get(h.session_id)?.armed===!0&&V0(h.type))return;const{type:m,seq:w,session_id:k,payload:b,offset:_}=h,O=s.project(m,b,k,{offset:_});for(const y of O){const L=b?.turnId,N=y.type==="assistantDelta"&&typeof L=="number"&&typeof _=="number"&&(m==="assistant.delta"||m==="thinking.delta")?{turnId:L,offset:_,kind:m==="assistant.delta"?"text":"thinking"}:void 0;y.type==="historyCompacted"&&!Wl(y.reason)&&t.onResync(k,w),t.onEvent(y,{sessionId:k,seq:w,stream:N})}},onResync:(h,m,w)=>{s.reset(h),t.onResync(h,m,w)},onTranscriptOps:(h,m)=>{g(h,m)},onTranscriptReset:(h,m)=>{C(h,m)},onConnectionState:h=>{t.onConnectionChange(h)},onError:(h,m,w)=>{t.onError(h,m,w)},onTerminalOutput:(h,m,w,k)=>{t.onTerminalOutput?.(h,m,w,k)},onTerminalExit:(h,m,w)=>{t.onTerminalExit?.(h,m,w)}});return x.connect(),{subscribe(h,m){if(x.subscribe(h,m??{seq:0}),o){const w=c(h);x.subscribeTranscript(h,{main:"delta"},{main:w.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 w=c(m);x.subscribeTranscript(m,{main:"delta"},{main:w.watermarks.get(m,"main")})}},seedSnapshot(h,m){if(m.inFlightTurn===null){s.reset(h);return}const w=s.seedInFlight(h,m.inFlightTurn);for(const k of w)t.onEvent(k,{sessionId:h,seq:m.asOfSeq})},bindNextPromptId(h,m){s.bindNextPromptId(h,m)},abort(h,m){x.abort(h,m)},terminalAttach(h,m,w){x.terminalAttach(h,m,w)},terminalInput(h,m,w){x.terminalInput(h,m,w)},terminalResize(h,m,w,k){x.terminalResize(h,m,w,k)},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 ji(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 Nl;function Le(){return Nl??=new iy(Hr()),Nl}function ay(e){const t=e.split("/").filter(Boolean);return t.length>0?t[t.length-1]:e}const ly=/^(?:[A-Za-z]:[\\/]|\\\\|\/\/)/;function Fn(e){const t=e.replaceAll("\\","/"),n=ly.test(t),s=t.replace(/\/+$/,"");return n?s.toLowerCase():s}function ry(e,t){const n=Fn(t.cwd);return e.find(s=>Fn(s.root)===n)?.id??t.workspaceId??t.cwd}function cy(e){const{workspaces:t,sessions:n,hiddenWorkspaceRoots:s,sessionsHasMoreByWorkspace:o}=e,i=new Set(s.map(Fn)),c=new Map;for(const x of t){const h=Fn(x.root);i.has(h)||c.has(h)||c.set(h,{...x})}for(const x of n){const h=x.cwd;if(!h)continue;const m=Fn(h);i.has(m)||c.has(m)||c.set(m,{id:x.workspaceId??h,root:h,name:ay(h),sessionCount:0})}const p=new Map;for(const x of n){const h=ry(t,x);p.set(h,(p.get(h)??0)+1)}const v=[];for(const x of t){const h=Fn(x.root);!i.has(h)&&!v.includes(h)&&v.push(h)}const g=[...c.keys()].filter(x=>!v.includes(x));g.sort((x,h)=>c.get(x).root.localeCompare(c.get(h).root));const C=[];for(const x of[...v,...g]){const h=c.get(x),m=p.get(h.id)??p.get(h.root)??0,w=o[h.id]===!1?m:Math.max(h.sessionCount,m);C.push({...h,sessionCount:w})}return C}function uy(){const e=ho(ze.pinnedSessions);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function dy(e){Ks(ze.pinnedSessions,Array.from(e))}function py(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function fy(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 Ss(e,t){e.modeVersionBySession={...e.modeVersionBySession??{},[t]:(e.modeVersionBySession?.[t]??0)+1}}function my(e,t,n){return(e.modeVersionBySession?.[t]??0)===n}function vy(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(c=>c.id)),o=new Set(t.filter(c=>c.role==="user").map(c=>c.id)),i=e.filter(c=>{const p=Date.parse(c.createdAt);return!(Number.isNaN(p)||p>=n||s.has(c.id)||c.role==="user"&&c.promptId!==void 0&&o.has(c.promptId))});return i.length>0?[...i,...t]:t}function Hl(e,t){const n=new Set(e.map(v=>v.id)),s=t.filter(v=>v.kind==="subagent"&&!n.has(v.id));if(s.length===0)return e;const o=new Map(e.map(v=>[v.id,v])),i=new Set,c=s.map(v=>{const g=v.backgroundTaskId!==void 0?o.get(v.backgroundTaskId):void 0;if(g===void 0)return v;i.add(g.id);const C=v.status==="running"&&g.status!=="running";return{...v,status:v.status==="running"?g.status:v.status,subagentPhase:C?g.status==="completed"?"completed":"failed":v.subagentPhase,completedAt:v.completedAt??g.completedAt,outputPreview:g.outputPreview??v.outputPreview,outputBytes:g.outputBytes??v.outputBytes}});return[...e.filter(v=>!i.has(v.id)),...c]}function hy(e,t){if(e.length===0)return t;const n=new Map(t.map(c=>[c.id,c])),s=new Set(e.map(c=>c.id)),o=e.map(c=>{const p=n.get(c.id);return p?{...c,outputLines:p.outputLines,text:p.text}:c}),i=t.filter(c=>!s.has(c.id));return i.length===0?o:[...o,...i]}function gy(e){const t=new Map,n=new Set;function s(i){const c=t.get(i);if(c!==void 0)return c;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 Ul=2e3,Vl=100,uc=80,dc=24;function jl(e){return{...e,lines:[],history:[],attached:!1,pendingTail:"",lastSeq:0}}function yy(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 ky(){const e=T(void 0),t=T([]),n=T({}),s=T(null),o=T(!1),i=T(null);let c=null;const p=$(()=>{const H=s.value;return H===null?null:n.value[H]??null}),v=$(()=>p.value?.lines.join(`
-`)??"");function g(H){const U=n.value[H];if(U!==void 0)return U;const Q=t.value.find(M=>M.id===H),P=jl(Q??{id:H,sessionId:e.value??"",cwd:"",shell:"",cols:uc,rows:dc,status:"running",createdAt:""});return n.value[H]=P,P}function C(H){if(e.value===H)return;const U=e.value;if(U!==void 0&&c!==null)for(const Q of Object.values(n.value))Q.attached&&c.terminalDetach(U,Q.id);e.value=H,t.value=[],n.value={},s.value=null,o.value=!1,i.value=null}function x(H){t.value=H;const U=new Set(H.map(Q=>Q.id));for(const[Q,P]of Object.entries(n.value)){if(!U.has(Q)){delete n.value[Q];continue}const M=H.find(A=>A.id===Q);M&&Object.assign(P,M)}s.value!==null&&!U.has(s.value)&&(s.value=H[0]?.id??null)}function h(H){const U=t.value.findIndex(P=>P.id===H.id);U===-1?t.value.push(H):t.value.splice(U,1,H);const Q=n.value[H.id];Q!==void 0?Object.assign(Q,H):n.value[H.id]=jl(H)}function m(H){n.value[H]?.attached&&e.value!==void 0&&c!==null&&c.terminalDetach(e.value,H),delete n.value[H];const Q=t.value.findIndex(P=>P.id===H);if(Q!==-1&&t.value.splice(Q,1),s.value===H){const P=t.value[Q]??t.value[t.value.length-1];s.value=P?.id??null}}function w(H){const U=g(H);if(U.attached)return;U.attached=!0;const Q=e.value;Q!==void 0&&c!==null&&c.terminalAttach(Q,H,U.lastSeq)}function k(H){const U=n.value[H];if(U===void 0||!U.attached)return;U.attached=!1;const Q=e.value;Q!==void 0&&c!==null&&c.terminalDetach(Q,H)}function b(H,U){const Q=yy(U).split(`
-`),P=Q[0]??"";H.pendingTail+=P;for(let M=1;MUl&&H.lines.splice(0,H.lines.length-Ul)}function _(H,U,Q,P){if(e.value===void 0||e.value!==H)return;const M=g(U);P<=M.lastSeq||(M.lastSeq=P,b(M,Q))}function O(H,U,Q){if(e.value===void 0||e.value!==H)return;const P=g(U);P.status!=="exited"&&(P.status="exited",P.exitCode=Q)}function y(H,U){const Q=U.trim();if(Q.length===0)return"";const P=g(H);P.history.at(-1)!==Q&&(P.history.push(Q),P.history.length>Vl&&P.history.splice(0,P.history.length-Vl));const M=e.value;return M!==void 0&&c!==null&&P.status!=="exited"&&c.terminalInput(M,H,`${Q}
-`),Q}function L(H,U,Q){const P=g(H);P.cols=U,P.rows=Q;const M=e.value;M!==void 0&&c!==null&&c.terminalResize(M,H,U,Q)}function N(H){c=H;const U=e.value;if(U!==void 0)for(const Q of Object.values(n.value))Q.attached&&H.terminalAttach(U,Q.id,Q.lastSeq)}return{sessionId:e,terminals:t,activeId:s,loading:o,error:i,active:p,activeLines:v,entryOf:g,setSession:C,setLoading:H=>{o.value=H},setError:H=>{i.value=H},syncTerminals:x,upsertTerminal:h,removeTerminal:m,setActive:H=>{s.value=H},attach:w,detach:k,handleOutput:_,handleExit:O,submitInput:y,resize:L,bindTransport:N}}const by=new Set(["assistantDelta","agentDelta","toolOutput","taskProgress"]);function wy(e){return by.has(e.type)}const Sy=50,Cy=100,ma=32*1024,_y={requestFrame(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):null},cancelFrame(e){typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(e)},requestTask(e){return setTimeout(e,Sy)},cancelTask(e){clearTimeout(e)}};function xy(e,t,n={}){const s=n.scheduler??_y,o=Math.max(1,Math.floor(n.maxItemsPerSlice??Cy)),i=[];let c=0,p=null,v=null,g=0,C=!1;const x=()=>i.length-c,h=()=>{g+=1,p!==null&&(s.cancelFrame(p),p=null),v!==null&&(s.cancelTask(v),v=null)},m=()=>{c===i.length?(i.length=0,c=0):c>=1024&&(i.splice(0,c),c=0)};let w;const k=()=>{if(C||p!==null||v!==null||x()===0)return;const _=++g,O=()=>{_===g&&w()};p=s.requestFrame(O),v=s.requestTask(O)};w=()=>{h();let _=0;for(;!C&&_{if(!C){if(t(_)){const O=i.length>c?i.at(-1):void 0,y=O===void 0?void 0:n.coalesce?.(O,_);y===void 0?i.push(_):i[i.length-1]=y,k();return}if(x()===0){e(_);return}i.push(_),w()}});return b.flush=()=>{if(!C){for(h();!C&&c{if(C||x()===0)return;let O=c;for(let y=c;y{C||(C=!0,h(),i.length=0,c=0)},b}function va(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 $y(e){if(e.appEvent.type!=="assistantDelta")return[e];const t=e.appEvent,n=e.meta.stream,s=va(t);if(n===void 0||s===void 0||n.kind!==s.kind||s.value.length<=ma)return[e];const o=[];let i=0;for(;ii&&/[\uD800-\uDBFF]/u.test(s.value[c-1])&&/[\uDC00-\uDFFF]/u.test(s.value[c])&&(c-=1);const p=s.value.slice(i,c);o.push({appEvent:{...t,delta:s.kind==="text"?{text:p}:{thinking:p}},meta:{...e.meta,stream:{...n,offset:n.offset+i}}}),i=c}return o}function My(e,t){if(e.appEvent.type!=="assistantDelta"||t.appEvent.type!=="assistantDelta")return;const n=e.meta.stream,s=t.meta.stream,o=va(e.appEvent),i=va(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>ma)return;const c=o.value+i.value;return{appEvent:{...e.appEvent,delta:o.kind==="text"?{text:c}:{thinking:c}},meta:{...t.meta,stream:{...n}}}}const pc=["blue","mono"],fc=["light","dark","system"],mc=14,Iy=12,Ty=20;function Ay(){const e=xt(ze.accent);return e&&pc.includes(e)?e:"blue"}function Ly(e){typeof document>"u"||!document.documentElement||(document.documentElement.dataset.accent=e)}function By(){const e=xt(ze.colorScheme);return e&&fc.includes(e)?e:"system"}function Py(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 za(e){return Number.isFinite(e)?Math.min(Ty,Math.max(Iy,Math.round(e))):mc}function Ey(){const e=xt(ze.uiFontSize);return e===null?mc:za(Number(e))}function Ry(e){typeof document>"u"||!document.documentElement||document.documentElement.style.setProperty("--base-ui-font-size",`${za(e)}px`)}const Fa=T(By()),qa=T(Ay()),Wa=T(Ey());Ee(Fa,Py,{immediate:!0});Ee(qa,Ly,{immediate:!0});Ee(Wa,Ry,{immediate:!0});function Oy(e){fc.includes(e)&&(Fa.value=e,Lt(ze.colorScheme,e))}function Dy(e){pc.includes(e)&&(qa.value=e,Lt(ze.accent,e))}function zy(e){const t=za(e);Wa.value=t,Lt(ze.uiFontSize,String(t))}const Fy=600,qy=250,Si=250,Wy=1e3,Ny=160,ui=T(!1);let Ds=[],Fs=null,di=-Si;function Hy(){Ds=[],di=-Si,ui.value=!1,Fs!==null&&(clearTimeout(Fs),Fs=null)}function Uy(){ui.value=!0,Fs!==null&&clearTimeout(Fs),Fs=setTimeout(()=>{Fs=null,Ds=[],di=-Si,ui.value=!1},Wy)}function Vy(e){if(e<=0)return;const t=Date.now();Ds.push({time:t,chars:e});const n=t-Fy;if(Ds=Ds.filter(p=>p.time>=n),t-dip+v.chars,0)/o*1e3>=Ny&&Uy()}function vc(){return{colorScheme:Fa,accent:qa,uiFontSize:Wa,fastMoon:ui,setColorScheme:Oy,setAccent:Dy,setUiFontSize:zy,resetFastMoon:Hy,recordMoonDelta:Vy}}function jy(e,t,n){return e==="idle"&&!t&&!n}function Na(e,t){const n=xt(e);return n===null?t:n==="1"}const Ha=T(Na(ze.notifyOnComplete,!0)),Ua=T(Na(ze.notifyOnQuestion,!1)),Va=T(Na(ze.notifyOnApproval,!1)),ja=T(typeof Notification<"u"?Notification.permission:"denied"),Ky="/favicon.ico";async function Ka(e,t,n){if(!n){e.value=!1,Lt(t,"0");return}if(typeof Notification>"u")return;let s=Notification.permission;if(s==="default")try{s=await Notification.requestPermission()}catch{}ja.value=s,s==="granted"&&(e.value=!0,Lt(t,"1"))}function Gy(e){return Ka(Ha,ze.notifyOnComplete,e)}function Qy(e){return Ka(Ua,ze.notifyOnQuestion,e)}function Yy(e){return Ka(Va,ze.notifyOnApproval,e)}function Ga(...e){for(const t of e){const n=t?.trim();if(n)return n}return""}function Zy(e){return{title:at.global.t("settings.notifyTitle"),body:Ga(e,at.global.t("settings.notifyFallback"))}}function Xy(e,t){return{title:at.global.t("settings.notifyQuestionTitle"),body:Ga(t,e,at.global.t("settings.notifyQuestionFallback"))}}function Jy(e,t){return{title:at.global.t("settings.notifyApprovalTitle"),body:Ga(t,e,at.global.t("settings.notifyApprovalFallback"))}}function Qa(e,t,n,s){if(!e||typeof Notification>"u")return;const o=Notification.permission;if(o!=="denied"){if(o==="default"){Notification.requestPermission().then(i=>{ja.value=i,i==="granted"&&Kl(t,n,s)});return}Kl(t,n,s)}}function Kl(e,t,n){if(!e.isUserWatching)try{const s=new Notification(t.title,{body:t.body,tag:n,icon:Ky});s.onclick=()=>{try{window.focus()}catch{}e.onClick(),s.close()}}catch{}}function ek(e,t){Qa(Ha.value,t,Zy(t.sessionTitle),`kimi-complete-${e}-${t.promptId??Date.now()}`)}function tk(e){Qa(Ua.value,e,Xy(e.sessionTitle,e.questionPreview),`kimi-question-${e.questionId}`)}function nk(e){Qa(Va.value,e,Jy(e.sessionTitle,e.toolName),`kimi-approval-${e.approvalId}`)}function sk(){return{notifyOnComplete:Ha,notifyOnQuestion:Ua,notifyOnApproval:Va,notifyPermission:ja,setNotifyOnComplete:Gy,setNotifyOnQuestion:Qy,setNotifyOnApproval:Yy,maybeNotifyCompletion:ek,maybeNotifyQuestion:tk,maybeNotifyApproval:nk}}function ok(){return xt(ze.soundOnComplete)==="1"}const go=T(ok());function ik(){if(typeof window>"u")return;const e=window;return window.AudioContext??e.webkitAudioContext}let Ki=null;function hc(){const e=ik();if(!e)return null;if(Ki===null)try{Ki=new e}catch{return null}return Ki}function gc(){if(!go.value)return;const e=hc();e!==null&&e.state==="suspended"&&e.resume().then(()=>{cs("sound: audio context resumed",{state:e.state})},t=>{cs("sound: audio context resume rejected",{error:String(t)})})}let Gl=!1;function ak(){if(Gl||typeof window>"u")return;Gl=!0;const e=()=>{gc()};window.addEventListener("pointerdown",e,{capture:!0}),window.addEventListener("keydown",e,{capture:!0})}ak();function lk(e){go.value=e,Lt(ze.soundOnComplete,e?"1":"0"),e&&gc()}function Ql(e,t,n,s,o){const i=e.createOscillator(),c=e.createGain();i.type="sine",i.frequency.value=t,i.connect(c),c.connect(e.destination);const p=e.currentTime+n;c.gain.setValueAtTime(1e-4,p),c.gain.exponentialRampToValueAtTime(o,p+.01),c.gain.exponentialRampToValueAtTime(1e-4,p+s),i.start(p),i.stop(p+s+.02)}function Ya(){const e=hc();if(e===null){cs("sound: skipped, AudioContext unavailable");return}if(e.state!=="running"){cs("sound: skipped, context not running",{state:e.state}),e.state==="suspended"&&e.resume().then(()=>{cs("sound: context resumed for next time",{state:e.state})},t=>{cs("sound: resume rejected",{error:String(t)})});return}try{Ql(e,880,0,.16,.18),Ql(e,1320,.1,.22,.16),cs("sound: chime scheduled",{state:e.state})}catch(t){cs("sound: failed to play",{error:String(t)})}}function rk(){go.value&&Ya()}function ck(){go.value&&Ya()}function uk(){go.value&&Ya()}function dk(){return{soundOnComplete:go,setSoundOnComplete:lk,maybePlayCompletionSound:rk,maybePlayQuestionSound:ck,maybePlayApprovalSound:uk}}const pk=1e3,fk=4096,Yl=32*1024;function mk(e,t){let n=null,s;const o=new Set;async function i(h){try{const w=await Le().listTasks(h);e.tasksBySession={...e.tasksBySession,[h]:Hl(w,e.tasksBySession[h]??[])},await c(h,w)}catch{}}async function c(h,m){if(e.activeSessionId!==h)return;const w=m??e.tasksBySession[h]??[],k=Le(),b=new Map;if(await Promise.all(w.map(async O=>{if((O.status==="completed"||O.status==="failed"||O.status==="cancelled")&&!o.has(O.id)&&!((O.outputLines?.length??0)>0))try{const L=await k.getTask(h,O.id,{withOutput:!0,outputBytes:Yl});L.outputPreview!==void 0&&b.set(O.id,{preview:L.outputPreview,bytes:L.outputBytes}),o.add(O.id)}catch{}})),b.size===0)return;const _=e.tasksBySession[h]??[];e.tasksBySession={...e.tasksBySession,[h]:_.map(O=>{const y=b.get(O.id)??(O.backgroundTaskId!==void 0?b.get(O.backgroundTaskId):void 0);return y?{...O,outputPreview:y.preview,outputBytes:y.bytes}:O})}}async function p(h){if(e.activeSessionId!==h)return;const m=Le();let w;try{w=await m.listTasks(h)}catch{return}const k=new Map;await Promise.all(w.map(async y=>{const L=y.status==="running",N=y.status==="completed"||y.status==="failed"||y.status==="cancelled";if(!(!L&&!N)&&!(N&&(o.has(y.id)||(y.outputLines?.length??0)>0)))try{const H=await m.getTask(h,y.id,{withOutput:!0,outputBytes:L?fk:Yl});H.outputPreview!==void 0&&k.set(y.id,{preview:H.outputPreview,bytes:H.outputBytes}),N&&o.add(y.id)}catch{}}));const b=e.tasksBySession[h]??[],_=new Map(b.map(y=>[y.id,y])),O=w.map(y=>{const L=_.get(y.id),N=k.get(y.id);return{...y,outputLines:L?.outputLines,text:L?.text,outputPreview:N?.preview??L?.outputPreview,outputBytes:N?.bytes??L?.outputBytes}});e.tasksBySession={...e.tasksBySession,[h]:Hl(O,b)}}function v(h){n!==null&&s===h||(g(),s=h,p(h),n=setInterval(()=>{typeof document<"u"&&document.visibilityState==="hidden"||(e.activeSessionId===h?p(h):g())},pk))}function g(){n!==null&&(clearInterval(n),n=null),s=void 0,o.clear()}const C=T(0);let x=null;return Ee(()=>t.value.some(h=>h.status==="running"),h=>{h&&x===null?x=setInterval(()=>{C.value=(C.value+1)%Number.MAX_SAFE_INTEGER},1e3):!h&&x!==null&&(clearInterval(x),x=null)},{immediate:!0}),Ee(()=>{const h=e.activeSessionId;if(!h)return{sid:void 0,hasRunning:!1};const m=e.tasksBySession[h]??[];return{sid:h,hasRunning:m.some(w=>w.status==="running")}},({sid:h,hasRunning:m},w,k)=>{let b;m&&h!==void 0?v(h):h!==void 0?b=setTimeout(()=>{(e.tasksBySession[h]??[]).some(O=>O.status==="running")||g()},1500):g(),k(()=>{b!==void 0&&clearTimeout(b)})},{deep:!0,immediate:!0}),{taskClock:$(()=>C.value),loadTasksForSession:i}}function Ci(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 yc(e){return e?.supportEfforts??[]}function vk(e){return e[Math.floor(e.length/2)]}function To(e){if(Ci(e)==="unsupported")return"off";const t=yc(e);return t.length>0?e?.defaultEffort??vk(t):"on"}function _i(e){const t=yc(e),n=Ci(e);return t.length>0?n==="always-on"?[...t]:["off",...t]:n==="always-on"?["on"]:n==="unsupported"?["off"]:["on","off"]}function ha(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function hk(e){return e!=="off"}function gk(e,t){return _i(e).includes(t)}function Za(e,t){return t==="off"?"off":t==="on"?To(e):t}function Ao(e,t){return t??To(e)}function yk(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 kk(e,t,n){return!n||e===void 0?t:To(e)}const Kn=T(null),co=T(!1);function Xa(e){const t=Kn.value;!t||co.value||(Kn.value=null,t.resolve(e))}async function bk(){const e=Kn.value;if(!(!e||co.value)){if(!e.action){Xa(!0);return}co.value=!0;try{await e.action(),Kn.value===e&&(Kn.value=null),e.resolve(!0)}catch(t){Kn.value===e&&(Kn.value=null),e.reject(t)}finally{co.value=!1}}}function wk(e){return co.value?Promise.resolve(!1):(Kn.value&&Xa(!1),new Promise((t,n)=>{Kn.value={...e,resolve:t,reject:n}}))}function Ro(){return{current:Kn,busy:co,confirm:wk,settle:Xa,runAction:bk}}function Sk(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 Ck(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&&Sk(i))continue;if(i.startsWith("@@")){const v=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(i);v&&(n=Number.parseInt(v[1],10),s=Number.parseInt(v[2],10)),o=!0,t.push({type:"hunk",text:i});continue}if(!o||i.startsWith("\\"))continue;const c=i.charAt(0),p=i.slice(1);c==="+"?(t.push({type:"add",text:p,newNo:s}),s+=1):c==="-"?(t.push({type:"del",text:p,oldNo:n}),n+=1):c===" "&&(t.push({type:"context",text:p,oldNo:n,newNo:s}),n+=1,s+=1)}return t}const ga="/sessions/";function Zl(e){const{pathname:t}=e;if(!t.startsWith(ga))return;const n=t.slice(ga.length);if(!(!n||n.includes("/")))try{const s=decodeURIComponent(n);return s.length>0?s:void 0}catch{return}}function _k(e){return e===void 0||e.length===0?"/":`${ga}${encodeURIComponent(e)}`}const xk=50,ya=5,$k=40402,Mk=40410,Ik=40902,Tk=2e3;function Gi(e){return Mn(e)&&e.code===Ik}const Ak=40904;function Lk(e){return Mn(e)&&e.code===Ak}const Bs=In({}),ei=In({}),Qi=In({}),Un=In(new Set),xi=new Map,Hs=new Map,pi=new Map;let Bk=0;const Es=new Map,Pk=3;let Xl=0;function Ek(){return Xl+=1,`${Date.now().toString(36)}-${Xl}`}function Rk(e){return{generation:xi.get(e)??0,pending:(Hs.get(e)?.size??0)>0}}function ka(e){const t=++Bk;xi.set(e,t);const n=Hs.get(e)??new Set;return n.add(t),Hs.set(e,n),t}function ba(e,t){const n=Hs.get(e);if(n===void 0||(n.delete(t),n.size>0))return;Hs.delete(e);const s=pi.get(e);pi.delete(e),s?.()}function Ok(e){xi.delete(e),Hs.delete(e),pi.delete(e),Es.delete(e)}function Dk(e,t){return!t.pending&&t.generation===(xi.get(e)??0)}function zk(e,t){if((Hs.get(e)?.size??0)===0){t();return}pi.set(e,t)}function Fk(e,t){const{t:n}=at.global,{confirm:s}=Ro(),{taskPoller:o,sideChat:i,modelProvider:c,pushOperationFailure:p,activity:v,sessionsKnownEmpty:g,setSessions:C,updateSession:x,upsertSessionFront:h,appendSession:m,forgetSession:w,setActiveSessionId:k,updateSessionMessages:b,nextOptimisticMsgId:_,getEventConn:O,syncSessionFromSnapshot:y,reopenSession:L,hasLoadedMessages:N,refreshSessionStatus:H,refreshSessionGoal:U,persistSessionProfile:Q,mergedWorkspaces:P,workspacesView:M,status:A,workspaceIdForSession:R,savePermissionToStorage:ne,savePlanModeToStorage:se,saveSwarmModeToStorage:ke,saveSupermoonModeToStorage:pe,saveGoalModeToStorage:V,draftModes:ee,saveUnread:le,saveActiveWorkspaceToStorage:me,saveHiddenWorkspacesToStorage:_e,goalErrorMessage:ce,resetFastMoon:K,initialized:Y,connectIssue:Se,selectedDiffPath:oe,fileDiffLines:X,fileDiffLoading:ie}=t;let Ce=!1;async function D(f){if(e.messagesLoadingMoreBySession[f])return;const S=e.messagesBySession[f];if(!S||S.length===0)return;const E=S[0].id;e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[f]:!0},e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[f]:!1};try{const G=await Le().listMessages(f,{beforeId:E,pageSize:xk}),re=[...G.items].reverse();b(f,be=>[...re,...be]),e.messagesHasMoreBySession={...e.messagesHasMoreBySession,[f]:G.hasMore}}catch(G){e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[f]:!0},p("loadOlderMessages",G,{sessionId:f})}finally{e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[f]:!1}}}function J(f){o.loadTasksForSession(f),xe(f),H(f),U(f),Object.prototype.hasOwnProperty.call(c.skillsBySession.value,f)||c.loadSkillsForSession(f)}async function q(f){const S=e.activeSessionId;if(S){oe.value=f,X.value=[],ie.value=!0;try{const G=await Le().getFileDiff(S,f);if(oe.value!==f)return;X.value=Ck(G.diff)}catch(E){oe.value===f&&(X.value=[]),console.warn("[loadFileDiff] diff unavailable for",f,E)}finally{oe.value===f&&(ie.value=!1)}}}function fe(){oe.value=null,X.value=[],ie.value=!1}async function xe(f){try{const E=await Le().getGitStatus(f);e.gitStatusBySession={...e.gitStatusBySession,[f]:E}}catch{}}async function Ue(){try{const S=await Le().getAuth();return e.authReady=S.ready,e.defaultModel=S.defaultModel,e.managedProviderStatus=S.managedProvider?.status??null,Se.value=null,"proceed"}catch(f){return Mn(f)&&(f.code===401||f.code===rc)?(Se.value=null,"server-auth-required"):(Se.value=(f instanceof Error?f.message:String(f)).slice(0,140),"retry")}}async function Ke(){let f=!0;for(;;){const S=await Ue();if(S!=="retry")return S;f&&(Se.value=null,f=!1),await new Promise(E=>{setTimeout(E,Tk)})}}async function cn(){try{const f=Le();e.config=await f.getConfig()}catch{}}async function un(f){try{const E=await Le().setConfig(f);return e.config=E,e.defaultModel=E.defaultModel??null,!0}catch(S){return p("setConfig",S),!1}}const Ye=100,Dt=30,yn=720*60*1e3;async function dn(){const f=Le(),S=[];let E,G;for(;;){let re;try{re=await f.listSessions({pageSize:Ye,beforeId:E,excludeEmpty:!0})}catch(be){if(S.length===0)throw be;G=be;break}if(S.push(...re.items),!re.hasMore||re.items.length===0)break;E=re.items[re.items.length-1].id}return{sessions:S,error:G}}function kn(f){const S=new Map(e.sessions.map(E=>[E.id,E.usage]));C(f.map(E=>{const G=S.get(E.id);return G!==void 0&&la(E.usage)&&!la(G)?{...E,usage:G}:E}))}function Tn(f){const S=[...f],E=new Set(S.map(G=>G.id));for(const G of e.sessions)E.has(G.id)||(S.push(G),E.add(G.id));return S.sort((G,re)=>new Date(re.updatedAt).getTime()-new Date(G.updatedAt).getTime()),S}async function Rt(f){const S=Le(),E=[],G=Date.now(),re=Ge=>G-new Date(Ge.updatedAt).getTime();let be,De=!1,je=!0,Tt;for(;;){let Ge;try{Ge=await S.listSessions({workspaceId:f,pageSize:ya,beforeId:be,excludeEmpty:!0})}catch(He){if(je)throw He;Tt=He,De=!0;break}if(De=Ge.hasMore,Ge.items.length===0)break;const ht=Ge.items[Ge.items.length-1],fn=re(ht)>=yn;if(!je&&fn){const He=Ge.items.findIndex(At=>re(At)>=yn),Ve=He>=0?He+1:Ge.items.length;E.push(...Ge.items.slice(0,Ve)),De=Ge.hasMore||VeRt(He.id))),E=[],G=new Set,re=new Map,be=new Set;let De;for(let He=0;Hebe.has(He.id)).map(He=>He.root)),Tt=new Set(f.map(He=>He.id));for(const He of e.sessions)!(He.workspaceId!==void 0&&Tt.has(He.workspaceId)?be.has(He.workspaceId):je.has(He.cwd)||be.has(R(He)))||G.has(He.id)||(E.push(He),G.add(He.id));const Ge={},ht={},fn={};for(const{id:He}of f){const Ve=re.get(He);if(Ve===void 0){const At=e.sessionsHasMoreByWorkspace[He],mt=e.sessionsCursorByWorkspace[He],Gt=e.sessionsInitialCountByWorkspace[He];At!==void 0&&(Ge[He]=At),mt!==void 0&&(ht[He]=mt),Gt!==void 0&&(fn[He]=Gt);continue}Ge[He]=Ve.hasMore,ht[He]=Ve.items.length>0?Ve.items[Ve.items.length-1].id:void 0,fn[He]=Math.max(Ve.items.length,ya)}return e.sessionsHasMoreByWorkspace=Ge,e.sessionsCursorByWorkspace=ht,e.sessionsInitialCountByWorkspace=fn,e.sessionsFullyLoaded=!1,E.sort((He,Ve)=>new Date(Ve.updatedAt).getTime()-new Date(He.updatedAt).getTime()),be.size>0&&p("load",De),E}async function Ut(f){if(e.sessionsLoadingMoreByWorkspace[f]||e.sessionsHasMoreByWorkspace[f]===!1)return;const S=e.sessionsCursorByWorkspace[f];if(S!==void 0){e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[f]:!0};try{const E=await Le().listSessions({workspaceId:f,pageSize:Dt,beforeId:S,excludeEmpty:!0}),G=new Set(e.sessions.map(be=>be.id)),re=E.items.filter(be=>!G.has(be.id));re.length>0&&C([...e.sessions,...re]),e.sessionsCursorByWorkspace={...e.sessionsCursorByWorkspace,[f]:E.items.length>0?E.items[E.items.length-1].id:S},e.sessionsHasMoreByWorkspace={...e.sessionsHasMoreByWorkspace,[f]:E.hasMore}}catch(E){p("loadMoreSessions",E)}finally{e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[f]:!1}}}}async function tt(){if(e.sessionsFullyLoaded)return;const f=await dn().catch(G=>(console.warn("[kimi-web] loadAllSessions failed; search covers only loaded sessions",G),null));if(f===null)return;const S=f.error===void 0?f.sessions:Tn(f.sessions);if(kn(S),e.sessionsFullyLoaded=f.error===void 0,f.error!==void 0)return;const E={};for(const G of e.workspaces)E[G.id]=!1;e.sessionsHasMoreByWorkspace=E}async function dt(){const f=await Le().getMeta().catch(()=>null);f!==null&&(e.serverVersion=f.serverVersion,e.availableOpenInApps=f.openInApps,e.dangerousBypassAuth=f.dangerousBypassAuth,e.backend=f.backend)}async function Ot(){const f=Date.now();let S="accepted";Et("app:load:start"),e.loading=!0;const E=!Y.value;let G=!0;try{if(E&&await Ke()==="server-auth-required"){G=!1,S="auth-required";return}const re=Le();await Promise.all([re.getHealth().catch(()=>null),dt(),c.loadModels()]),E||await Ue(),await cn(),await wt();const be=await Ht(),De=be??e.sessions;be!==void 0&&kn(be);const je=De[0],Tt=e.activeWorkspaceId;!(Tt!==null&&P.value.some(fn=>fn.id===Tt))&&je&&St(R(je)),Wt();const ht=typeof window<"u"?Zl(window.location):void 0;!e.activeSessionId&&ht!==void 0&&(e.sessions.some(He=>He.id===ht)||await qt(ht))&&await Ze(ht,{urlMode:"replace"}),!e.activeSessionId&&De.length>0&&await Ze(De[0].id,{urlMode:"replace"})}catch(re){S="failed",p("load",re)}finally{e.loading=!1,G&&(Y.value=!0),Et("app:load:complete",{status:S,sessionId:e.activeSessionId,sessionCount:e.sessions.length,workspaceCount:e.workspaces.length,durationMs:Date.now()-f})}}async function wt(){try{const f=Le(),[S,E]=await Promise.all([f.listWorkspaces().catch(()=>[]),f.getFsHome().catch(()=>({home:"",recentRoots:[]}))]);e.workspaces=Vt(S),e.fsHome=E.home||null,e.recentRoots=E.recentRoots}catch{}}function Vt(f){const S=jo();return Object.keys(S).length===0?f:f.map(E=>{const G=S[E.root];return G!==void 0?{...E,name:G}:E})}function St(f){e.activeWorkspaceId=f,me(f)}function zt(f){St(f);const S=e.sessions.filter(E=>R(E)===f);if(S.length>0){const E=S[0];E&&E.id!==e.activeSessionId&&Ze(E.id)}else k(void 0),Kt(void 0,"push")}function gt(f){const S=jo()[f.root],E=S!==void 0?{...f,name:S}:f,G=Fn(E.root);e.hiddenWorkspaceRoots.some(De=>Fn(De)===G)&&(e.hiddenWorkspaceRoots=e.hiddenWorkspaceRoots.filter(De=>Fn(De)!==G),_e(e.hiddenWorkspaceRoots));const re=e.workspaces.findIndex(De=>De.id===E.id||De.root===E.root);if(re===-1){e.workspaces=[E,...e.workspaces];return}const be=[...e.workspaces];be[re]=E,e.workspaces=be}function en(f){if(f.type==="workspaceCreated"||f.type==="workspaceUpdated"){gt(f.workspace);return}const S=e.workspaces.find(G=>G.id===f.workspaceId)?.root??f.root;if(S&&!e.hiddenWorkspaceRoots.includes(S)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,S],_e(e.hiddenWorkspaceRoots)),e.workspaces=e.workspaces.filter(G=>G.id!==f.workspaceId&&G.root!==S),e.activeWorkspaceId===f.workspaceId||e.activeWorkspaceId===S){const G=M.value[0]?.id??null;if(e.activeWorkspaceId=G,G)me(G);else try{Ws(ze.activeWorkspace)}catch{}k(void 0),e.sessionLoading=!1,fe(),Kt(void 0,"replace")}}function $t(){k(void 0),Kt(void 0,"push")}function bn(f){St(f),$t(),fe()}async function Ft(f){const S=P.value.find(ht=>ht.id===f);if(!S)return null;const E=e.thinking,G=Le();let re,be=S.root;try{const ht=await G.addWorkspace({root:S.root});re=ht.id,be=ht.root,gt(ht)}catch{}const De=c.draftModel.value??void 0,je=await G.createSession({workspaceId:re,cwd:be,model:De});c.draftModel.value=null;const Tt=De!==void 0&&(!je.model||je.model.length===0)?{...je,model:De}:je;h(Tt),St(je.workspaceId??re??f),await Ze(je.id);const Ge=je.id;return E!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Ge]:E}),ee.planMode?(e.planModeBySession={...e.planModeBySession,[Ge]:!0},se(),Ss(e,Ge)):e.config?.defaultPlanMode===!0&&!ee.planModeTouched&&(e.planModeBySession={...e.planModeBySession,[Ge]:!0},se(),Ss(e,Ge)),ee.swarmMode&&(e.swarmModeBySession={...e.swarmModeBySession,[Ge]:!0},ke(),Ss(e,Ge)),ee.supermoonMode&&(e.supermoonModeBySession={...e.supermoonModeBySession,[Ge]:!0},pe(),Ss(e,Ge)),ee.goalMode&&(e.goalModeBySession={...e.goalModeBySession,[Ge]:!0},V()),ee.planMode=!1,ee.swarmMode=!1,ee.supermoonMode=!1,ee.goalMode=!1,ee.planModeTouched=!1,Ge}async function wn(f,S,E){if(!Un.has(f)){Un.add(f);try{const G=await Ft(f);if(!G)return;await yt(G,S,E)}catch(G){p("startSessionAndSendPrompt",G)}finally{Un.delete(f)}}}async function Bt(f,S,E){if(!Un.has(f)){Un.add(f);try{const G=await Ft(f);if(!G)return;const re=e.planModeBySession[G]??!1,be=e.swarmModeBySession[G]??!1,De=e.supermoonModeBySession[G]??!1,je=e.sessions.find(ht=>ht.id===G),Tt=(je?.model&&je.model.length>0?je.model:e.defaultModel)??void 0;if(!await Q({model:Tt,planMode:re,swarmMode:be,supermoonMode:De,permissionMode:e.permission},G))return;await c.activateSkill(S,E,G)}catch(G){p("startSessionAndActivateSkill",G)}finally{Un.delete(f)}}}async function Wn(f,S){if(!Un.has(f)){Un.add(f);try{const E=await Ft(f);if(!E)return;await i.openSideChatOn(E,S)}catch(E){p("startSessionAndOpenSideChat",E)}finally{Un.delete(f)}}}async function pn(f){const S=f.trim();if(!S)return!1;const E=Le();try{const G=await E.addWorkspace({root:S});return gt(G),bn(G.id),!0}catch(G){return console.warn("[kimi-web] addWorkspaceByPath failed for",S,G),!1}}async function jt(f){try{return await Le().browseFs(f)}catch{return{path:"",parent:null,entries:[]}}}async function Nn(){try{return await Le().getFsHome()}catch{return{home:"",recentRoots:[]}}}function Kt(f,S){if(S==="none"||typeof window>"u"||!window.history)return;const E=_k(f);if(window.location.pathname!==E)try{S==="push"?window.history.pushState(null,"",E):window.history.replaceState(null,"",E)}catch{}}async function qt(f){try{const S=await Le().getSession(f);return e.sessions.some(E=>E.id===S.id)||m(S),!0}catch{return!1}}function Mt(){const f=Zl(window.location);if(f===void 0){k(void 0);return}if(f!==e.activeSessionId){if(e.sessions.some(S=>S.id===f)){Ze(f,{urlMode:"none"});return}(async()=>{if(await qt(f)){await Ze(f,{urlMode:"none"});return}const S=e.sessions[0];S?await Ze(S.id,{urlMode:"replace"}):(k(void 0),Kt(void 0,"replace"))})()}}let It=!1;function Wt(){It||typeof window>"u"||(It=!0,window.addEventListener("popstate",Mt))}async function Ze(f,S){const E=N(f),G=!E&&g.has(f);g.delete(f);try{Kt(f,S?.urlMode??"push"),e.sessionLoading=!E&&!G,k(f),K(),e.unreadBySession[f]&&(e.unreadBySession={...e.unreadBySession,[f]:!1},le({[f]:!1})),fe();const re=e.sessions.find(be=>be.id===f);if(re){const be=R(re);e.activeWorkspaceId!==be&&St(be)}if(E){if(await L(f)==="not-found")return}else if(await y(f)==="not-found")return;J(f)}catch(re){p("selectSession",re,{sessionId:f})}finally{e.activeSessionId===f&&(e.sessionLoading=!1)}}async function yt(f,S,E){const G=ka(f);e.inFlightBySession={...e.inFlightBySession,[f]:!0};const re=_();try{const be=Le(),De=[];S&&De.push({type:"text",text:S});for(const mt of E??[])mt.kind==="video"?De.push({type:"video",source:{kind:"file",fileId:mt.fileId}}):mt.kind==="file"?De.push({type:"file",fileId:mt.fileId,name:mt.name??"",mediaType:mt.mediaType||"application/octet-stream",size:mt.size??0}):De.push({type:"image",source:{kind:"file",fileId:mt.fileId}});if(De.length===0)return e.inFlightBySession={...e.inFlightBySession,[f]:!1},"rejected";const je={id:re,sessionId:f,role:"user",content:De,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};b(f,mt=>[...mt,je]);const Tt=e.sessions.find(mt=>mt.id===f),Ge=(Tt?.model&&Tt.model.length>0?Tt.model:e.defaultModel)??void 0,ht=e.planModeBySession[f]??!1,fn=e.swarmModeBySession[f]??!1,He=e.supermoonModeBySession[f]??!1,Ve=e.goalModeBySession[f]??!1;if(Ve&&S)try{await be.updateSession(f,{goalObjective:S.trim()})}catch(mt){return p("createGoal",mt,{sessionId:f}),e.inFlightBySession={...e.inFlightBySession,[f]:!1},b(f,Gt=>Gt.some(rn=>rn.id===re)?Gt.filter(rn=>rn.id!==re):Gt),"rejected"}const At=await be.submitPrompt(f,{content:De,model:Ge,thinking:await c.resolveThinkingForPrompt(f,Ge)??e.thinking,permissionMode:e.permission,planMode:ht,swarmMode:fn,supermoonMode:He});return Ve&&(e.goalModeBySession={...e.goalModeBySession,[f]:!1},V()),e.promptIdBySession={...e.promptIdBySession,[f]:At.promptId},b(f,mt=>{const Gt=mt.findIndex(Ys=>Ys.id===re);if(Gt===-1)return mt;const rn=[...mt];return rn[Gt]={...rn[Gt],promptId:rn[Gt].promptId??At.promptId},rn}),O()?.bindNextPromptId(f,At.promptId),"ok"}catch(be){return e.inFlightBySession={...e.inFlightBySession,[f]:!1},b(f,De=>De.some(je=>je.id===re)?De.filter(je=>je.id!==re):De),p("sendPrompt",be,{sessionId:f}),Mn(be)?"rejected":"uncertain"}finally{ba(f,G)}}async function he(f,S){const E=e.activeSessionId;if(E){if(v.value!=="idle"||e.inFlightBySession[E]){Qe(f,S);return}if((e.queuedBySession[E]?.length??0)>0){Qe(f,S),ot(E);return}await yt(E,f,S)}}async function ge(f,S){const E=e.activeSessionId;if(!E)return;const G=e.queuedBySession[E]??[],re=[],be=[];for(const Ve of G){const At=Ve.text.trim();At&&re.push(At),Ve.attachments?.length&&be.push(...Ve.attachments)}const De=f.trim();if(De&&re.push(De),S?.length&&be.push(...S),re.length===0&&be.length===0)return;G.length>0&&(e.queuedBySession={...e.queuedBySession,[E]:[]});const je=re.join(`
-
-`),Tt=()=>{if(G.length===0)return;const Ve=e.queuedBySession[E]??[];e.queuedBySession={...e.queuedBySession,[E]:[...G,...Ve]}};if(v.value==="idle"&&!e.inFlightBySession[E]){await yt(E,je,be)==="rejected"&&Tt();return}const Ge=[];je&&Ge.push({type:"text",text:je});for(const Ve of be)Ve.kind==="video"?Ge.push({type:"video",source:{kind:"file",fileId:Ve.fileId}}):Ve.kind==="file"?Ge.push({type:"file",fileId:Ve.fileId,name:Ve.name??"",mediaType:Ve.mediaType||"application/octet-stream",size:Ve.size??0}):Ge.push({type:"image",source:{kind:"file",fileId:Ve.fileId}});const ht=_(),fn={id:ht,sessionId:E,role:"user",content:Ge,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};b(E,Ve=>[...Ve,fn]);const He=ka(E);try{const Ve=Le(),At=e.sessions.find(rn=>rn.id===E),mt=(At?.model&&At.model.length>0?At.model:e.defaultModel)??void 0,Gt=await Ve.submitPrompt(E,{content:Ge,model:mt,thinking:await c.resolveThinkingForPrompt(E,mt)??e.thinking,permissionMode:e.permission,planMode:e.planModeBySession[E]??!1,swarmMode:e.swarmModeBySession[E]??!1,supermoonMode:e.supermoonModeBySession[E]??!1});if(b(E,rn=>{const Ys=rn.findIndex(Bu=>Bu.id===ht);if(Ys===-1)return rn;const Vo=[...rn];return Vo[Ys]={...Vo[Ys],promptId:Vo[Ys].promptId??Gt.promptId},Vo}),Gt.status!=="queued"){e.promptIdBySession={...e.promptIdBySession,[E]:Gt.promptId},O()?.bindNextPromptId(E,Gt.promptId);return}try{await Ve.steerPrompts(E,[Gt.promptId])}catch{}}catch(Ve){b(E,At=>At.filter(mt=>mt.id!==ht)),Mn(Ve)&&Tt(),p("steer",Ve,{sessionId:E})}finally{ba(E,He)}}async function qe(f,S){try{const G=await Le().uploadFile({file:f,name:S});return{fileId:G.id,name:G.name,mediaType:G.mediaType}}catch(E){return p("uploadImage",E),null}}function Qe(f,S){const E=e.activeSessionId;if(!E)return;const G=e.queuedBySession[E]??[],re={text:f,attachments:S,id:Ek()};e.queuedBySession={...e.queuedBySession,[E]:[...G,re]}}function ot(f){const[S,...E]=e.queuedBySession[f]??[];S!==void 0&&(e.queuedBySession={...e.queuedBySession,[f]:E},yt(f,S.text,S.attachments).then(G=>{if(G==="ok"){Es.delete(f);return}if(G==="uncertain"){Es.delete(f);return}if(!e.sessions.some(Tt=>Tt.id===f)){Es.delete(f);return}const re=S.id??S.text,be=Es.get(f),De=be!==void 0&&be.key===re?be.count+1:1;if(De>=Pk){Es.delete(f),(e.queuedBySession[f]?.length??0)>0&&ot(f);return}Es.set(f,{key:re,count:De});const je=e.queuedBySession[f]??[];e.queuedBySession={...e.queuedBySession,[f]:[S,...je]}}))}function vt(f,S){const E=e.inFlightBySession[f]===!0;if(e.inFlightBySession={...e.inFlightBySession,[f]:!1},e.promptIdBySession[f]!==void 0){const re={...e.promptIdBySession};delete re[f],e.promptIdBySession=re}return f===e.activeSessionId&&K(),(E||S?.turnWasActive===!0||(e.turnActiveBySession[f]??!1))&&ot(f),E}function pt(f,S){S.inFlightTurn!==null&&S.busy||vt(f)}async function _t(){const f=e.activeSessionId;if(!f)return;const S=e.sessions.find(re=>re.id===f);let E=e.promptIdBySession[f];if(E===void 0){const re=S?.currentPromptId;re!==void 0&&re.length>0&&!re.startsWith("pr_")&&(E=re)}const G=Le();if(E!==void 0)try{if((await G.abortPrompt(f,E)).aborted)return;const be={...e.promptIdBySession};delete be[f],e.promptIdBySession=be}catch(re){if(Mn(re)&&re.code===$k){const be={...e.promptIdBySession};delete be[f],e.promptIdBySession=be}else{p("abortCurrentPrompt",re,{sessionId:f});return}}try{await G.abortSession(f)}catch(re){p("abortCurrentPrompt",re,{sessionId:f})}}function Nt(f,S){const E=e.approvalsBySession[f]??[];e.approvalsBySession={...e.approvalsBySession,[f]:E.filter(G=>G.approvalId!==S)}}function Pt(f,S){const E=e.questionsBySession[f]??[];e.questionsBySession={...e.questionsBySession,[f]:E.filter(G=>G.questionId!==S)}}async function on(f,S){const E=e.activeSessionId;if(E&&!ei[f]){ei[f]=!0;try{const G=Le(),re={decision:S.decision,scope:S.scope,feedback:S.feedback,selectedLabel:S.selectedLabel};await G.respondApproval(E,f,re),Nt(E,f)}catch(G){Gi(G)?Nt(E,f):p("respondApproval",G,{sessionId:E})}finally{delete ei[f]}}}async function Sn(f,S){const E=e.activeSessionId;if(E&&!Bs[f]){Bs[f]="answer";try{await Le().respondQuestion(E,f,S),Pt(E,f)}catch(G){Gi(G)?Pt(E,f):p("respondQuestion",G,{sessionId:E})}finally{delete Bs[f]}}}async function fs(f){const S=e.activeSessionId;if(S&&!Bs[f]){Bs[f]="dismiss";try{await Le().dismissQuestion(S,f),Pt(S,f)}catch(E){Gi(E)?Pt(S,f):p("dismissQuestion",E,{sessionId:S})}finally{delete Bs[f]}}}async function Qn(f){const S=e.activeSessionId;if(S&&!Qi[f]){Qi[f]=!0;try{const E=Le(),G=(e.tasksBySession[S]??[]).find(be=>be.id===f)?.backgroundTaskId;await E.cancelTask(S,G??f);const re=e.tasksBySession[S]??[];e.tasksBySession={...e.tasksBySession,[S]:re.map(be=>be.id===f?{...be,status:"cancelled"}:be)}}catch(E){Lk(E)||p("cancelTask",E,{sessionId:S})}finally{delete Qi[f]}}}function Yn(f){const S=e.activeSessionId;S?(e.planModeBySession={...e.planModeBySession,[S]:f},Ss(e,S),se(),Q({planMode:f})):(ee.planMode=f,ee.planModeTouched=!0)}function ms(){const f=e.activeSessionId,S=f?e.planModeBySession[f]??!1:ee.planMode;Yn(!S)}function vs(f){const S=e.activeSessionId;S?(e.swarmModeBySession={...e.swarmModeBySession,[S]:f},Ss(e,S),ke(),Q({swarmMode:f})):ee.swarmMode=f}async function Is(){const f=e.activeSessionId,E=!(f?e.swarmModeBySession[f]??!1:ee.swarmMode);E&&e.permission==="manual"&&!await s({title:n("workspace.swarmEnableConfirm"),variant:"primary"})||vs(E)}function an(f,S){e.supermoonModeBySession={...e.supermoonModeBySession,[S]:f},Ss(e,S),pe(),f?Cn(S):Hn(S),Q({supermoonMode:f},S)}function ft(f){const S=e.activeSessionId;S?an(f,S):ee.supermoonMode=f}function An(){const f=e.activeSessionId,S=f?e.supermoonModeBySession[f]??!1:ee.supermoonMode;ft(!S)}function Cn(f){const S=c.models.value.find(be=>be.id===A.value.modelId),E=S?.supportEfforts??[];if(E.length===0)return;const G=E[E.length-1],re=Ao(S,e.thinking);c.setThinking(G),e.supermoonPreviousEffortBySession={...e.supermoonPreviousEffortBySession,[f]:re}}function Hn(f){const S=e.supermoonPreviousEffortBySession[f];if(S===void 0)return;const E={...e.supermoonPreviousEffortBySession};delete E[f],e.supermoonPreviousEffortBySession=E;try{c.setThinking(S)}catch(G){p("setSupermoonMode",G,{sessionId:f})}}function Ln(f){const S=e.activeSessionId;S?(e.goalModeBySession={...e.goalModeBySession,[S]:f},V()):ee.goalMode=f}function ln(){const f=e.activeSessionId,S=f?e.goalModeBySession[f]??!1:ee.goalMode;Ln(!S)}async function Bn(f){const S=f.trim();if(!S||e.permission==="manual"&&!await s({title:n("workspace.goalStartConfirm",{objective:S}),variant:"primary"}))return;let E=e.activeSessionId;if(!E){const G=e.activeWorkspaceId,re=G&&M.value.some(be=>be.id===G)?G:M.value[0]?.id??null;if(!re)return;try{E=await Ft(re)??void 0}catch(be){p("createGoal",be);return}if(!E)return}try{await Le().updateSession(E,{goalObjective:S})}catch(G){p("createGoal",G,{sessionId:E,message:ce(G)});return}e.goalModeBySession[E]&&(e.goalModeBySession={...e.goalModeBySession,[E]:!1},V()),e.activeSessionId===E?await he(S):await yt(E,S)}function Pn(f){const S=e.activeSessionId;S&&Promise.resolve(Le().updateSession(S,{goalControl:f})).catch(E=>{p("controlGoal",E,{sessionId:S,message:ce(E)})})}function Zn(f){e.permission=f,ne(f),Q({permissionMode:f})}function Xn(f){const S=[...e.warnings];S.splice(f,1),e.warnings=S}async function En(f,S){try{await Le().updateSession(f,{title:S}),x(f,G=>({...G,title:S}))}catch(E){p("renameSession",E,{sessionId:f})}}async function Rn(f,S){const E=e.workspaces.find(re=>re.id===f)?.root,G=()=>{e.workspaces=e.workspaces.map(re=>re.id===f?{...re,name:S}:re)};try{if(await Le().updateWorkspace(f,{name:S}),E!==void 0){const re=jo();E in re&&(delete re[E],vl(re))}G()}catch(re){if(E!==void 0&&Mn(re)&&re.code===Mk){vl({...jo(),[E]:S}),G();return}p("renameWorkspace",re)}}async function Jn(f){const S=e.workspaces.find(be=>be.id===f)?.root??P.value.find(be=>be.id===f)?.root??f,E=e.activeSessionId?e.sessions.find(be=>be.id===e.activeSessionId):void 0,G=e.activeWorkspaceId===f||e.activeWorkspaceId===S,re=!!(E&&(E.cwd===S||E.workspaceId===f||R(E)===f));S&&!e.hiddenWorkspaceRoots.includes(S)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,S],_e(e.hiddenWorkspaceRoots));try{await Le().deleteWorkspace(f)}catch(be){console.warn("[kimi-web] deleteWorkspace registry cleanup failed for",f,be)}if(e.workspaces=e.workspaces.filter(be=>be.id!==f&&be.root!==S),G||re){const be=M.value[0]?.id??null;if(e.activeWorkspaceId=be,be)me(be);else try{Ws(ze.activeWorkspace)}catch{}}(G||re)&&(k(void 0),e.sessionLoading=!1,fe(),Kt(void 0,"replace"))}async function es(f){try{await Le().archiveSession(f),w(f),i.clearSideChatForSession(f);const{[f]:E,...G}=e.sideChatUserMessageIdsBySession;if(e.sideChatUserMessageIdsBySession=G,e.activeSessionId===f){const re=e.sessions[0];re?await Ze(re.id,{urlMode:"replace"}):(k(void 0),Kt(void 0,"replace"))}}catch(S){p("archiveSession",S,{sessionId:f})}}async function ts(f){if(Ce)return;const S=f??e.activeSessionId;if(!S){const G=n("commands.export.noSession");Et("export:failed",{status:"no-session"}),p("exportSession",new Error(G),{message:G});return}Ce=!0;const E=Date.now();Et("export:start",{sessionId:S});try{const G=$g(),{blob:re,fileName:be}=await Le().exportSession(S,G);if(typeof document>"u")throw new Error("Document is unavailable");const De=URL.createObjectURL(re);let je;try{je=document.createElement("a"),je.href=De,je.download=be,document.body.append(je),je.click()}finally{je?.remove(),setTimeout(()=>{try{URL.revokeObjectURL(De)}catch{}},0)}Et("export:accepted",{sessionId:S,status:"accepted",zipBytes:re.size,durationMs:Date.now()-E})}catch(G){const re=typeof G=="object"&&G!==null?G:void 0;Et("export:failed",{sessionId:S,status:"failed",durationMs:Date.now()-E,errorName:typeof re?.name=="string"?re.name:typeof G,errorCode:typeof re?.code=="number"?re.code:void 0,requestId:typeof re?.requestId=="string"?re.requestId:void 0,phase:typeof re?.phase=="string"?re.phase:void 0,httpStatus:typeof re?.status=="number"?re.status:void 0}),p("exportSession",G,{sessionId:S})}finally{Ce=!1}}async function ns(f){try{const S=await Le().restoreSession(f);return h(S),!0}catch(S){return p("restoreSession",S,{sessionId:f}),!1}}function ue(f){return Le().listSessions({archivedOnly:!0,beforeId:f?.beforeId,pageSize:f?.pageSize??50})}async function $e(){try{await Le().logout(),await Ue(),await Ot()}catch(f){p("logout",f)}}function Me(f){const S=e.activeSessionId;S&&Le().compactSession(S,f).catch(E=>{p("compact",E,{sessionId:S})})}async function we(f){const S=f??e.activeSessionId;if(S)try{const E=await Le().forkSession(S);h(E),await Ze(E.id)}catch(E){p("fork",E,{sessionId:S})}}async function F(f=1){const S=e.activeSessionId;if(!S)return null;const E=(()=>{const G=e.messagesBySession[S]??[];for(let re=G.length-1;re>=0;re--){const be=G[re];if(be.role==="user"&&!(be.metadata?.origin&&be.metadata.origin.kind!=="user"))return be.content.filter(De=>De.type==="text").map(De=>De.text).join(`
-`)}return null})();try{return await Le().undoSession(S,f),await y(S),E}catch(G){return p("undo",G,{sessionId:S}),null}}function te(f){const S=e.activeSessionId;if(!S)return;const E=e.queuedBySession[S]??[];if(f<0||f>=E.length)return;const G=[...E];G.splice(f,1),e.queuedBySession={...e.queuedBySession,[S]:G}}function nt(f,S){const E=e.activeSessionId;if(!E)return;const G=e.queuedBySession[E]??[];if(f===S||f<0||f>=G.length||S<0||S>=G.length)return;const re=[...G],[be]=re.splice(f,1);be!==void 0&&(re.splice(S,0,be),e.queuedBySession={...e.queuedBySession,[E]:re})}async function Qs(f){const S=e.activeSessionId;if(!S)return[];try{return(await Le().listDirectory(S,{path:f,includeGitStatus:!0})).items}catch{return[]}}async function Ts(f){const S=e.activeSessionId;if(!S)return null;try{const G=await Le().readFile(S,{path:f});return{path:G.path,content:G.content,encoding:G.encoding,mime:G.mime,languageId:G.languageId,isBinary:G.isBinary,size:G.size,lineCount:G.lineCount}}catch(E){return console.warn("[kimi-web] readFileContent failed for",f,E),null}}const As=10485760;function Bi(f){const S=e.activeSessionId;return S?Le().getFileDownloadUrl(S,f):null}async function yo(f,S){const E=e.activeSessionId;if(!E)return!1;try{return await Le().openFile(E,{path:f,line:S}),!0}catch(G){return p("openFile",G,{sessionId:E}),!1}}async function Ho(f){const S=e.activeSessionId;if(!S)return;const E=A.value.cwd||".";try{await Le().openInApp(S,f,E)}catch(G){p("openInApp",G,{sessionId:S})}}async function Uo(f){const S=e.activeSessionId;if(!S)return!1;try{return await Le().revealFile(S,{path:f}),!0}catch(E){return p("revealFile",E,{sessionId:S}),!1}}async function Pi(f){if(/^(https?:|data:|blob:)/i.test(f))return f;const S=e.activeSessionId;if(!S)return f;let E=f;if(E.startsWith("/")){const G=e.sessions.find(re=>re.id===S)?.cwd;if(G&&(E===G||E.startsWith(G.endsWith("/")?G:`${G}/`))){if(E=E.slice(G.length).replace(/^\//,""),!E)return f}else return f}if(E.startsWith("/")||E.startsWith("~")||E.includes(".."))return f;try{const re=await Le().readFile(S,{path:E,length:As});return!re.isBinary||re.encoding!=="base64"||re.truncated?f:`data:${re.mime};base64,${re.content}`}catch{return f}}async function W(f){const S=e.sessions.find(G=>G.id===e.activeSessionId),E=S===void 0?e.activeWorkspaceId:R(S);if(!E)return[];try{return(await Le().searchFiles(E,{query:f,limit:20})).items.map(be=>({path:be.path,name:be.name}))}catch{return[]}}return{loadFileDiff:q,clearFileDiff:fe,loadGitStatus:xe,checkAuth:Ue,loadConfig:cn,updateConfig:un,listAllSessionsGlobal:dn,load:Ot,refreshServerMeta:dt,loadWorkspaces:wt,loadMoreSessions:Ut,loadAllSessions:tt,selectWorkspace:St,openWorkspace:zt,upsertWorkspacePreserveOrder:gt,applyWorkspaceEvent:en,clearActiveSession:$t,openWorkspaceDraft:bn,startSessionAndSendPrompt:wn,startSessionAndActivateSkill:Bt,startSessionAndOpenSideChat:Wn,addWorkspaceByPath:pn,browseFs:jt,getFsHome:Nn,writeSessionUrl:Kt,fetchSessionIntoList:qt,onSessionRoutePopState:Mt,bindSessionRoute:Wt,selectSession:Ze,submitPromptInternal:yt,finishPromptLocal:vt,localTurnStartState:Rk,isLocalTurnSnapshotCurrent:Dk,afterLocalTurnStartsSettle:zk,handleSessionSnapshot:pt,sendPrompt:he,steerPrompt:ge,uploadImage:qe,enqueue:Qe,unqueue:te,reorderQueue:nt,abortCurrentPrompt:_t,respondApproval:on,respondQuestion:Sn,dismissQuestion:fs,pendingQuestionActions:Bs,pendingApprovalActions:ei,cancelTask:Qn,setPlanMode:Yn,togglePlanMode:ms,setSwarmMode:vs,toggleSwarmMode:Is,setSupermoonMode:ft,toggleSupermoonMode:An,pinSupermoonEffort:Cn,restoreSupermoonEffort:Hn,setGoalMode:Ln,toggleGoalMode:ln,createGoal:Bn,controlGoal:Pn,setPermission:Zn,dismissWarning:Xn,renameSession:En,renameWorkspace:Rn,deleteWorkspace:Jn,archiveSession:es,exportSession:ts,restoreSession:ns,loadArchivedSessions:ue,logout:$e,compact:Me,forkSession:we,undo:F,listDir:Qs,readFileContent:Ts,getFileDownloadUrl:Bi,openWorkspaceFile:yo,openInApp:Ho,revealWorkspaceFile:Uo,resolveImageUrl:Pi,searchFiles:W,loadOlderMessages:D,refreshSessionSidecars:J,isStartingFirstPrompt:()=>Un.size>0}}const kc=ze.starredModels,Jl=new Error("profile persist failed");function qk(){try{const e=xt(kc);if(!e)return[];const t=JSON.parse(e);if(Array.isArray(t)&&t.every(n=>typeof n=="string"))return t}catch{}return[]}function Wk(e){try{Lt(kc,JSON.stringify(e))}catch{}}function Nk(e,t){const{pushOperationFailure:n,refreshSessionStatus:s,persistSessionProfile:o,activity:i,updateSession:c,updateSessionMessages:p}=t,v=T([]),g=T(qk()),C=T({}),x=T({}),h=T([]),m=T(null);function w(K){if(!(K==null||K.length===0))return v.value.find(Y=>Y.id===K)??v.value.find(Y=>Y.model===K)}function k(){const K=e.activeSessionId?e.sessions.find(Se=>Se.id===e.activeSessionId):void 0,Y=K===void 0?m.value??e.defaultModel:K.model||e.defaultModel;return w(Y)?.id??Y??void 0}function b(K){if(K===void 0)return;const Y=w(K);return Y===void 0?void 0:To(Y)}function _(K,Y){const Se=K==null?void 0:e.thinkingBySession[K];return Se!==void 0&&gk(Y,Se)?Se:To(Y)}function O(K,Y){if(Y===void 0)return;const Se=w(Y);return Se===void 0?void 0:_(K,Se)}async function y(K,Y){return K!=null&&e.thinkingBySession[K]===void 0&&await s(K),O(K,Y)}function L(K){e.thinking=K;const Y=e.activeSessionId;return K!==void 0&&Y!==null&&Y!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Y]:K}),K}Ee([()=>e.activeSessionId,()=>k(),()=>{const K=e.activeSessionId;return K==null?void 0:e.thinkingBySession[K]}],()=>{const K=w(k());K!==void 0&&(e.thinking=_(e.activeSessionId,K))});function N(K){Le().setConfig({thinking:yk(K,w(k())?.supportEfforts)}).catch(Y=>n("setConfig",Y))}async function H(K){try{const Se=await Le().listSkills(K);C.value={...C.value,[K]:Se}}catch{}}async function U(K){try{const Se=await Le().listSkillsForWorkspace(K);x.value={...x.value,[K]:Se}}catch{}}async function Q(){try{const K=Le();v.value=await K.listModels();const Y=w(k());Y!==void 0&&(e.thinking=_(e.activeSessionId,Y))}catch(K){n("loadModels",K)}}async function P(){try{const K=Le();h.value=await K.listProviders()}catch(K){n("loadProviders",K)}}async function M(K){const Y=e.activeSessionId,Se=w(K),oe=e.thinking,X=Y?e.sessions.find(D=>D.id===Y)?.model:void 0,ie=k()!==(Se?.id??K),Ce=kk(Se,oe,ie);if(!Y)return m.value=K,e.thinking=Ce,Ce!==oe&&Ce!==void 0&&N(Ce),!0;c(Y,D=>({...D,model:K})),Ce!==oe&&(e.thinking=Ce,Ce!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Y]:Ce}));try{await Le().updateSession(Y,{model:K,thinking:Ce!==oe?Ce:void 0})}catch(D){return c(Y,J=>({...J,model:X??J.model})),Ce!==oe&&(e.thinking=oe,oe!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Y]:oe})),n("setModel",D,{sessionId:Y}),!1}return Ce!==oe&&Ce!==void 0&&N(Ce),await s(Y),!0}function A(K){const Y=new Set(g.value);Y.has(K)?Y.delete(K):Y.add(K),g.value=Array.from(Y),Wk(g.value)}async function R(K,Y,Se){const oe=Se??e.activeSessionId;if(!oe)return;const X=i.value==="idle"&&!e.inFlightBySession[oe],ie=`msg_skill_opt_${Date.now().toString(36)}`,Ce=X?ka(oe):void 0;if(X){e.inFlightBySession={...e.inFlightBySession,[oe]:!0};const D={id:ie,sessionId:oe,role:"user",content:[{type:"text",text:`/${K}${Y?` ${Y}`:""}`}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0,origin:{kind:"skill_activation",trigger:"user-slash",skillName:K,skillArgs:Y}}};p(oe,J=>[...J,D])}try{const D=e.sessions.find(fe=>fe.id===oe)?.model,J=(D&&D.length>0?D:e.defaultModel)??void 0;if(!await o({thinking:await y(oe,J)??e.thinking},oe))throw Jl;await Le().activateSkill(oe,K,Y)}catch(D){X&&(e.inFlightBySession={...e.inFlightBySession,[oe]:!1},p(oe,J=>J.filter(q=>q.id!==ie))),D!==Jl&&n("activateSkill",D,{sessionId:oe})}finally{Ce!==void 0&&ba(oe,Ce)}}async function ne(K){try{await Le().addProvider(K),await Promise.all([P(),Q()])}catch(Y){n("addProvider",Y)}}async function se(K){try{await Le().deleteProvider(K),await Promise.all([P(),Q()])}catch(Y){n("deleteProvider",Y)}}async function ke(K){try{const Y=await Le().refreshProvider(K);for(const Se of Y.failed)n("refreshProvider",new Error(Se.reason),{message:Se.provider});await Promise.all([P(),Q()])}catch(Y){n("refreshProvider",Y)}}async function pe(){try{const K=await Le().refreshAllProviders();for(const Y of K.failed)n("refreshAllProviders",new Error(Y.reason),{message:Y.provider});await Promise.all([P(),Q()])}catch(K){n("refreshAllProviders",K)}}async function V(K){try{await Le().importCatalogProvider(K),await Promise.all([P(),Q()])}catch(Y){n("importCatalogProvider",Y)}}async function ee(K){try{await Le().importRegistry(K),await Promise.all([P(),Q()])}catch(Y){n("importRegistry",Y)}}async function le(){try{return await Le().startOAuthLogin()}catch{return null}}async function me(){try{return await Le().pollOAuthLogin()}catch(K){return console.warn("[kimi-web] pollOAuthLogin failed",K),null}}async function _e(){try{await Le().cancelOAuthLogin()}catch{}}function ce(K){const Y=L(K);o({thinking:Y}),Y!==void 0&&N(Y)}return{models:v,starredModelIds:g,providers:h,draftModel:m,skillsBySession:C,skillsByWorkspace:x,loadSkillsForSession:H,loadSkillsForWorkspace:U,loadModels:Q,loadProviders:P,setModel:M,thinkingLevelForModelId:b,thinkingLevelForSessionId:O,resolveThinkingForPrompt:y,toggleStarModel:A,activateSkill:R,addProvider:ne,deleteProvider:se,refreshProvider:ke,refreshAllProviders:pe,importCatalogProvider:V,importRegistry:ee,startOAuthLogin:le,pollOAuthLogin:me,cancelOAuthLogin:_e,setThinking:ce}}const Hk=/^read[_-]?media(?:file)?$/i,Uk=/^data:([^;]+);base64,(.*)$/s,Vk=/^<(image|video|audio)\s+path="([^"]+)">$/,jk=/^<(image|video|audio)\s+path="([^"]+)">(?:<\/\1>)?$/,Kk=/Mime type:\s*([^.\s]+)/i,Gk=/Size:\s*(\d+)\s*bytes/i,Qk=/Original dimensions:\s*(\d+)x(\d+)\s*pixels/i,Yk="Image compressed to fit model limits:",Zk=/Image compressed to fit model limits:[\s\S]*?<\/system>/g;function Xk(e){return e.includes(Yk)?e.replace(Zk,""):e}function Jk(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function e2(e){const t=jk.exec(e.trim());return t?{kind:t[1],path:Jk(t[2])}:null}const bc=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})$/,t2=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})(?=-)/;function n2(e){const t=e.split(/[\\/]/).at(-1)??"",n=t.lastIndexOf("."),s=n>0?t.slice(0,n):t;return bc.test(s)?s:void 0}const s2=/^Attached file "(.+)" \(([^,]+), (\d+) bytes\): (.+) — open it with the Read tool$/;function o2(e){const t=s2.exec(e.trim());if(!t)return null;const n=(t[4]??"").split(/[\\/]/).at(-1)??"",s=t2.exec(n)?.[0];return{name:t[1],mediaType:t[2],size:Number(t[3]),fileId:s!==void 0&&bc.test(s)?s:void 0}}function i2(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 a2(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 l2(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 r2(e,t){if(!Hk.test(e))return;const n=a2(t);if(n===null)return;let s,o,i,c,p,v=null;for(const C of n){if(typeof C!="object"||C===null)continue;const x=C;if(x.type==="text"&&typeof x.text=="string"){const m=x.text,w=Vk.exec(m);w&&(o=w[1],s=w[2]);const k=Kk.exec(m);k?.[1]&&(i=k[1]);const b=Gk.exec(m);b?.[1]&&(c=Number(b[1]));const _=Qk.exec(m);_?.[1]&&_[2]&&(p=`${_[1]}x${_[2]}`);continue}const h=l2(x);h&&(v=h)}if(v===null)return;const g=Uk.exec(v.url);return g?.[1]&&(i=g[1]),g?.[2]&&(c=i2(g[2])),{kind:v.kind??o??"image",url:v.url,path:s,mimeType:i,bytes:Number.isFinite(c)?c:void 0,dimensions:p}}function c2(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 u2(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 d2(e,t){const n=e.split(`
-`),s=t.split(`
-`),o=[];return n.forEach((i,c)=>{o.push({kind:"rem",gutter:String(c+1),text:`- ${i}`})}),s.forEach((i,c)=>{o.push({kind:"add",gutter:String(c+1),text:`+ ${i}`})}),o}function p2(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:d2(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 c=i??{};return{title:typeof c.title=="string"?c.title:"",status:typeof c.status=="string"?c.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,c=(Array.isArray(t.options)?t.options:[]).map(p=>{const v=p??{},g=typeof v.label=="string"?v.label:"";if(!g)return null;const C=typeof v.description=="string"?v.description:void 0;return{label:g,description:C}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:c.length>0?c:void 0}}return{kind:"generic",summary:e.action}}function f2(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):m2(e)}function m2(e){const t=e.split(`
-`);return t.length>=2&&t[0]?.startsWith(""?t.slice(1,-1).join(`
-`):e}function v2(e){const t=e.metadata?.origin;if(t?.kind==="cron_job"||t?.kind==="cron_missed")return t.kind}function h2(e){const t=e.content.filter(n=>n.type==="text").map(n=>n.text).join(`
-`);return f2(t)}function g2(e,t){const n=e.metadata?.origin??{},s=h2(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 y2(e,t,n){const{text:s,cron:o}=g2(e,n);return{id:e.id,role:"cron",no:t,text:s,createdAt:e.createdAt,cron:o}}function k2(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 b2(e){return e.metadata?.origin?.kind==="compaction_summary"}function er(e,t){return e===null?!1:e.promptId===void 0||t===void 0||e.promptId===t}function w2(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 S2(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 C2(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 wc(e,t,n,s=!0,o={}){const i=[];let c=1;const p=new Map;for(const m of t)p.set(m.toolCallId,m);let v=null;function g(m=!1){if(!v)return;const w=v;if(v=null,!m||!s)for(let k=0;ky.kind==="tool"&&y.tool.id===_.id);O&&O.kind==="tool"&&(O.tool=_)}i.push({id:w.id,role:"assistant",no:c++,text:w.textParts.join(`
-`),thinking:w.thinkingParts.length>0?w.thinkingParts.join(`
-`):void 0,tools:w.tools.length>0?w.tools:void 0,blocks:w.blocks.length>0?w.blocks:void 0,approval:w.approval,approvalId:w.approvalId,durationMs:w.durationMs})}function C(m,w){for(const k of w)if(k.type==="text"){if(k.text){m.textParts.push(k.text);const b=m.blocks.at(-1);b&&b.kind==="text"?b.text+=`
-`+k.text:m.blocks.push({kind:"text",text:k.text})}}else if(k.type==="thinking"){if(k.thinking){m.thinkingParts.push(k.thinking);const b=m.blocks.at(-1);b&&b.kind==="thinking"?b.thinking+=`
-`+k.thinking:m.blocks.push({kind:"thinking",thinking:k.thinking})}}else if(k.type==="toolUse"){const b=p.get(k.toolCallId),_={id:k.toolCallId,name:k.toolName,arg:typeof k.input=="string"?k.input:JSON.stringify(k.input),status:"running",output:k.outputLines,planPath:k.toolName==="ExitPlanMode"?o[k.toolCallId]?.path:void 0};m.tools.push(_),m.blocks.push({kind:"tool",tool:_}),b&&(m.approval=p2(b),m.approvalId=b.approvalId)}else if(k.type==="toolResult"){const b=m.tools.findIndex(_=>_.id===k.toolCallId);if(b!==-1){const _=m.tools[b],O={..._,status:k.isError?"error":"ok",output:c2(k.output),media:k.isError?void 0:r2(_.name,k.output)};O.name==="ExitPlanMode"&&!O.planPath&&(O.planPath=w2(O.output)),m.tools[b]=O;const y=m.blocks.find(L=>L.kind==="tool"&&L.tool.id===k.toolCallId);y&&y.kind==="tool"&&(y.tool=O)}}}function x(m,w){for(const k of w){if(k.type!=="toolUse"||!k.outputLines?.length)continue;const b=m.tools.findIndex(L=>L.id===k.toolCallId);if(b===-1)continue;const _=m.tools[b];if(_.output!==void 0)continue;const O={..._,output:k.outputLines};m.tools[b]=O;const y=m.blocks.find(L=>L.kind==="tool"&&L.tool.id===k.toolCallId);y&&y.kind==="tool"&&(y.tool=O)}}function h(m){if(m.type==="image"||m.type==="video"){const w=m.type,k=m.source;if(k.kind==="url")return{url:k.url,kind:w};if(k.kind==="base64")return{url:`data:${k.mediaType};base64,${k.data}`,kind:w};if(k.kind==="file"&&n)return{url:n(k.fileId),kind:w,fileId:k.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 w=m.metadata?.[Jr];if(w!==void 0){er(v,m.promptId)||(g(),v={id:m.id,promptId:m.promptId,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:void 0}),v?.blocks.push({kind:"error",text:w.message,code:w.code});continue}if(b2(m)){g();const y=m.metadata?.[Xr];i.push({id:m.id,role:"compaction",no:c,text:m.content.filter(L=>L.type==="text").map(L=>L.text).join(`
-`),compaction:{trigger:y?.trigger,tokensBefore:y?.tokensBefore,tokensAfter:y?.tokensAfter}});continue}if(m.role==="user"){const y=v2(m);if(g(),y!==void 0){i.push(y2(m,c++,y));continue}if(!k2(m))continue;const L=m.metadata?.origin,N=L?.kind==="skill_activation"&&L?.trigger==="user-slash",H=L?.kind==="plugin_command"&&L?.trigger==="user-slash",U=[],Q=[];for(const P of m.content){if(P.type==="text")if(N)U.push(L.skillArgs??"");else if(H)U.push(L.commandArgs??"");else{const A=e2(P.text);if(A&&(A.kind==="video"||A.kind==="image")&&n){const se=n2(A.path);if(se){Q.push({url:n(se),kind:A.kind,fileId:se});continue}}const R=o2(P.text);if(R){Q.push({kind:"file",url:R.fileId&&n?n(R.fileId):"",fileId:R.fileId,name:R.name,mediaType:R.mediaType,size:R.size});continue}const ne=Xk(P.text);if(ne!==P.text&&ne.trim().length===0)continue;U.push(ne)}const M=h(P);if(M){Q.push({url:M.url,kind:M.kind,name:P.type==="file"?P.name:void 0,fileId:M.fileId});continue}P.type==="file"&&n&&Q.push({kind:"file",url:n(P.fileId),fileId:P.fileId,name:P.name,mediaType:P.mediaType||void 0,size:P.size})}i.push({id:m.id,role:"user",no:c++,text:U.join(`
-`),attachments:Q.length>0?Q:void 0,skillActivation:N?{name:L.skillName??"",args:L.skillArgs}:void 0,pluginCommand:H?{pluginId:L.pluginId??"",commandName:L.commandName??"",args:L.commandArgs}:void 0,createdAt:m.createdAt});continue}if(m.role==="tool"){v&&C(v,m.content);continue}const k=m.promptId;er(v,k)?v!==null&&v.promptId===void 0&&k!==void 0&&(v.promptId=k):(g(),v={id:m.id,promptId:k,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:m.durationMs});const _=v;if(_===null)continue;const O=S2(m.content);if(_.promptId!==void 0&&_.foldedSigs.some(y=>C2(y,O))){x(_,m.content);continue}_.foldedSigs.push(O),C(_,m.content)}return g(!0),i}function _2(e,t){const{pushOperationFailure:n,nextOptimisticMsgId:s,connectEventsIfNeeded:o,getEventConn:i,resolveThinkingForPrompt:c}=t,p=T({}),v=$(()=>{const M=e.activeSessionId;if(!M)return null;const A=p.value[M];return A?{parentId:M,agentId:A.agentId}:null}),g=$(()=>v.value?.parentId??null),C=$(()=>v.value!==null),x=$(()=>{const M=v.value;return M?!!e.sideChatSendingByAgent[M.agentId]:!1}),h=$(()=>{const M=v.value;return M?e.sideChatSendingByAgent[M.agentId]?!0:(e.tasksBySession[M.parentId]??[]).some(A=>A.id===M.agentId&&A.status==="running"):!1}),m=$(()=>{const M=v.value;if(!M)return[];const A=e.sideChatMessagesByAgent[M.agentId]??[];return wc(A,[],R=>Le().getFileUrl(R),h.value)});function w(M,A){e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[M]:A(e.sideChatMessagesByAgent[M]??[])}}function k(M,A){w(M,R=>[...R,A])}function b(M){w(M,A=>{const R=[...A].reverse().findIndex(se=>se.role==="user");if(R===-1)return A;const ne=A.length-1-R;return A.filter((se,ke)=>ke!==ne)})}function _(M,A){w(M,R=>{const ne=[...R];for(let se=ne.length-1;se>=0;se-=1){const ke=ne[se];if(ke.role==="user")return ne[se]={...ke,promptId:ke.promptId??A},ne}return R})}function O(M,A,R){R&&w(M,ne=>{const se=ne.at(-1);if(se?.role==="assistant"){const ke=se.content[0],pe=ke?.type==="text"?ke.text:"";return[...ne.slice(0,-1),{...se,content:[{type:"text",text:`${pe}${R}`}]}]}return[...ne,{id:s(),sessionId:A,role:"assistant",content:[{type:"text",text:R}],createdAt:new Date().toISOString()}]})}function y(M,A,R){if(e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[M]:!1},!R)return;const se=(e.sideChatMessagesByAgent[M]??[]).at(-1);(se?.role==="assistant"&&se.content[0]?.type==="text"?se.content[0].text:"").trim().length>0||O(M,A,R)}async function L(M){const A=e.activeSessionId;A&&await N(A,M)}async function N(M,A){if(!p.value[M]){let R;try{({agentId:R}=await Le().startBtw(M))}catch(ne){n("openSideChat",ne,{sessionId:M});return}e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[R]:e.sideChatMessagesByAgent[R]??[]},p.value={...p.value,[M]:{agentId:R}},o(),i()?.markSideChannelAgent(R)}A&&A.trim()&&await H(M,A.trim())}async function H(M,A){const R=p.value[M],ne=A.trim();if(!R||!ne)return;const se=M,ke=R.agentId;e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ke]:!0};const pe={id:s(),sessionId:se,role:"user",content:[{type:"text",text:ne}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};k(ke,pe);try{const V=e.sessions.find(me=>me.id===se),ee=(V?.model&&V.model.length>0?V.model:e.defaultModel)??void 0,le=await Le().submitPrompt(se,{content:[{type:"text",text:ne}],agentId:ke,model:ee,thinking:await c(se,ee)??e.thinking,permissionMode:e.permission,planMode:e.planModeBySession[se]??!1,swarmMode:e.swarmModeBySession[se]??!1,supermoonMode:e.supermoonModeBySession[se]??!1});_(ke,le.promptId),e.sideChatUserMessageIdsBySession={...e.sideChatUserMessageIdsBySession,[se]:[...e.sideChatUserMessageIdsBySession[se]??[],le.userMessageId]}}catch(V){n("sendSideChatPrompt",V,{sessionId:se}),b(ke),e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ke]:!1}}}function U(){const M=e.activeSessionId;if(!M)return;const{[M]:A,...R}=p.value;p.value=R}async function Q(M){const A=v.value;A&&await H(A.parentId,M)}function P(M){if(!p.value[M])return;const{[M]:A,...R}=p.value;p.value=R}return{sideChatTargetBySession:p,sideChatSessionId:g,sideChatVisible:C,sideChatSending:x,sideChatRunning:h,sideChatTurns:m,appendSideChatAssistantText:O,finishSideChatAgent:y,openSideChat:L,openSideChatOn:N,closeSideChat:U,sendSideChatPrompt:Q,clearSideChatForSession:P}}const x2="kimiWeb.optimisticUserMessage",$2=1e6,tr="Sub Agent";function M2(){return{sessions:[],activeSessionId:void 0,messagesBySession:{},approvalsBySession:{},planReviewByToolCallId:{},questionsBySession:{},tasksBySession:{},goalBySession:{},goalVersionBySession:{},lastSeqBySession:{},turnActiveBySession:{},compactionBySession:{},warnings:[]}}function I2(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 T2(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 Yi(e){return e.role==="user"&&e.metadata?.[x2]===!0}function A2(e){const t=e.metadata?.origin;return t?.kind==="cron_job"||t?.kind==="cron_missed"}function L2(e,t){return JSON.stringify(e.content)===JSON.stringify(t.content)}const B2=/^<(image|video|audio)\s+path="[^"]+"><\/\1>$/;function nr(e){let t="",n=0;for(const s of e.content)s.type==="text"?B2.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 P2(e,t){const n=nr(e),s=nr(t);return n.text===s.text&&n.media===s.media}function E2(e,t){const n=t.promptId;if(n!==void 0)for(let s=e.length-1;s>=0;s--){const o=e[s];if(Yi(o)&&o.promptId===n)return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(Yi(o)&&L2(o,t))return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(Yi(o)&&P2(o,t))return s}return-1}function R2(e,t,n){const s=e.findIndex(p=>p.content.some(v=>v.type==="toolUse"&&v.toolCallId===t));if(s===-1)return e;const o=e[s];let i=!1;const c=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:c},...e.slice(s+1)]:e}const O2={"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"},D2=new Set(["provider.usage_limit"]);function z2(e){const t=at.global.t,n=[],s=(c,p)=>{typeof p=="number"||typeof p=="boolean"?n.push({label:c,value:String(p)}):typeof p=="string"&&p.length>0&&n.push({label:c,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[c,p]of Object.entries(o))c==="statusCode"||c==="requestId"||s(c,p);const i=(e.code!==void 0?O2[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&&D2.has(e.code)?!0:void 0}}function F2(e,t,n){const s=I2(e);switch(T2(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]:c,...p}=s.compactionBySession;if(s.compactionBySession=p,Object.prototype.hasOwnProperty.call(s.messagesBySession,o)){const v=s.messagesBySession[o]??[],g=`compaction_${o}_${n.seq}`;if(!v.some(C=>C.id===g)){const C={trigger:i?.trigger??"auto",tokensBefore:t.tokensBefore,tokensAfter:t.tokensAfter};s.messagesBySession[o]=[...v,{id:g,sessionId:o,role:"assistant",content:t.summary?[{type:"text",text:t.summary}]:[],createdAt:new Date().toISOString(),metadata:{origin:{kind:"compaction_summary"},[Xr]:C}}]}}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(v=>v.id===o&&i>v.updatedAt?{...v,updatedAt:i}:v);const c=s.messagesBySession[o]??[];if(!c.some(v=>v.id===t.message.id)){if(t.message.role==="user"&&!A2(t.message)){const v=E2(c,t.message);if(v!==-1){const g=[...c],C=g[v];g[v]={...t.message,id:C.id,promptId:t.message.promptId??C.promptId,metadata:{...t.message.metadata,...C.metadata}},s.messagesBySession[o]=g;break}}s.messagesBySession[o]=[...c,t.message]}break}case"messageUpdated":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(c=>c.id!==t.messageId?c:{...c,content:t.content,durationMs:t.durationMs??c.durationMs});break}case"assistantDelta":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(c=>{if(c.id!==t.messageId)return c;const p=[...c.content],v=t.contentIndex;for(;p.length<=v;)p.push({type:"text",text:""});const g=p[v];let C;return t.delta.text!==void 0?g.type==="text"?C={type:"text",text:g.text+t.delta.text}:C={type:"text",text:t.delta.text}:t.delta.thinking!==void 0?g.type==="thinking"?C={type:"thinking",thinking:g.thinking+t.delta.thinking,signature:g.signature}:C={type:"thinking",thinking:t.delta.thinking}:C=g,p[v]=C,{...c,content:p}});break}case"toolOutput":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=R2(i,t.toolCallId,t.outputChunk);break}case"approvalRequested":{const o=t.sessionId,i=s.approvalsBySession[o]??[];i.some(v=>v.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,c=s.approvalsBySession[o]??[];s.approvalsBySession[o]=c.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,c=s.questionsBySession[o]??[];s.questionsBySession[o]=c.filter(p=>p.questionId!==i);break}case"taskCreated":{const o=t.sessionId,i=s.tasksBySession[o]??[],c=i.findIndex(p=>p.id===t.task.id);if(c===-1)s.tasksBySession[o]=[...i,t.task];else{const p=[...i],v=i[c];p[c]={...t.task,outputLines:v.outputLines,text:v.text,description:t.task.description===tr&&v.description!==tr?v.description:t.task.description,swarmIndex:t.task.swarmIndex??v.swarmIndex,parentToolCallId:t.task.parentToolCallId??v.parentToolCallId,subagentType:t.task.subagentType??v.subagentType,runInBackground:t.task.runInBackground??v.runInBackground,backgroundTaskId:t.task.backgroundTaskId??v.backgroundTaskId},s.tasksBySession[o]=p}break}case"taskProgress":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(c=>{if(c.id!==t.taskId)return c;if(c.kind==="subagent"&&t.kind==="text")return{...c,text:((c.text??"")+t.outputChunk).slice(0,$2)};const p=c.outputLines??[];if(p.at(-1)===t.outputChunk)return c;const v=[...p,t.outputChunk];return{...c,outputLines:c.kind==="subagent"?v:v.slice(-40)}});break}case"taskCompleted":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(c=>c.id!==t.taskId?c:{...c,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,z2(o)];else if(o&&o._agentWarning){const i=o.message??o.code??"agent warning";s.warnings=[...s.warnings,`${at.global.t("warnings.noteLabel")}: ${i}`]}else{const i=o?.type??"(unknown)";s.warnings=[...s.warnings,`Unhandled event: ${i}`]}break}}return s}function q2(e){return e==="in_progress"?"in_progress":e==="done"||e==="completed"?"done":"pending"}function W2(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"||Gs(o.toolName)!=="todo")continue;let i=o.input;if(typeof i=="string")try{i=JSON.parse(i)}catch{continue}const c=i?.todos;if(Array.isArray(c))return c.flatMap(p=>{const v=p??{},g=typeof v.title=="string"?v.title:typeof v.content=="string"?v.content:"";return g?[{title:g,status:q2(v.status)}]:[]})}}return[]}const N2=["queued","working","suspended","completed","failed"];function Sc(e){return e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.subagentPhase?e.subagentPhase:"working"}function H2(){return{queued:0,working:0,suspended:0,completed:0,failed:0}}function U2(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:Sc(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((c,p)=>c.swarmIndex-p.swarmIndex||c.id.localeCompare(p.id)),i=H2();for(const c of o)i[c.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 V2(e){let t=0,n=0;for(const s of e){n+=s.members.length;for(const o of N2)(o==="completed"||o==="failed")&&(t+=s.counts[o])}return{done:t,total:n}}function j2(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:Sc(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 ls=vc(),Vn=sk(),Lo=dk(),ai=ky(),Cc=ze.permission,_c=ze.activeWorkspace,xc=ze.planMode,$c=ze.swarmMode,Mc=ze.supermoonMode,Ic=ze.goalMode,sr=40401,Tc=ze.onboarded;Ws(ze.codeFont);Ws(ze.theme);Ws(ze.thinking);function K2(){try{const e=xt(Cc);if(e==="auto"||e==="yolo"||e==="manual")return e}catch{}return"manual"}function G2(e){try{Lt(Cc,e)}catch{}}function ti(e){const t=xt(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 $i(e,t){try{const n={};for(const[s,o]of Object.entries(t))o&&(n[s]=!0);Lt(e,JSON.stringify(n))}catch{}}function Ac(){$i(xc,z.planModeBySession)}function Lc(){$i($c,z.swarmModeBySession)}function Bc(){$i(Mc,z.supermoonModeBySession)}function Pc(){$i(Ic,z.goalModeBySession)}function Q2(){try{return xt(_c)}catch{return null}}const Ec=ze.hiddenWorkspaces;function Y2(){try{const e=xt(Ec);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function Z2(e){try{Lt(Ec,JSON.stringify(e))}catch{}}function X2(e){try{Lt(_c,e)}catch{}}function J2(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 z=In({...M2(),connected:!1,serverVersion:"",dangerousBypassAuth:!1,backend:"v1",workspaceName:"kimi-web",connection:"disconnected",permission:K2(),thinking:void 0,thinkingBySession:{},planModeBySession:ti(xc),swarmModeBySession:ti($c),supermoonModeBySession:ti(Mc),modeVersionBySession:{},supermoonPreviousEffortBySession:{},goalModeBySession:ti(Ic),loading:!1,sessionLoading:!1,queuedBySession:{},gitStatusBySession:{},promptIdBySession:{},inFlightBySession:{},unreadBySession:Ba(),authReady:!1,defaultModel:null,managedProviderStatus:null,workspaces:[],activeWorkspaceId:Q2(),fsHome:null,recentRoots:[],hiddenWorkspaceRoots:Y2(),availableOpenInApps:[],config:null,sideChatMessagesByAgent:{},sideChatSendingByAgent:{},sideChatUserMessageIdsBySession:{},messagesLoadingMoreBySession:{},messagesHasMoreBySession:{},messagesLoadMoreErrorBySession:{},sessionsHasMoreByWorkspace:{},sessionsLoadingMoreByWorkspace:{},sessionsCursorByWorkspace:{},sessionsInitialCountByWorkspace:{},sessionsFullyLoaded:!1}),Oo=In({planMode:!1,swarmMode:!1,supermoonMode:!1,goalMode:!1,planModeTouched:!1});function Rc(e){z.sessions=e}function Mi(e,t){z.sessions=z.sessions.map(n=>n.id===e?t(n):n)}function eb(e){z.sessions=[e,...z.sessions.filter(t=>t.id!==e.id)]}function tb(e){z.sessions=[...z.sessions,e]}function nb(e){z.sessions=z.sessions.filter(t=>t.id!==e)}function Oc(){const e=z.activeSessionId;e&&z.unreadBySession[e]&&typeof document<"u"&&document.visibilityState==="visible"&&(z.unreadBySession={...z.unreadBySession,[e]:!1},Pa({[e]:!1}))}typeof window<"u"&&window.addEventListener("storage",e=>{e.key===ze.unread&&(z.unreadBySession=Ba(),Oc())});function wa(){if(sn===null||!sn.health().stale)return;Et("ws:stale-reconnect",{sessionId:z.activeSessionId,status:"stale"}),cs("ws: stale socket on focus, reconnecting",{activeSessionId:z.activeSessionId}),sn.reconnect();const e=z.activeSessionId;e&&vi.request(e)}typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(Oc(),wa())});typeof window<"u"&&(window.addEventListener("focus",wa),window.addEventListener("online",wa));function Ja(e){z.activeSessionId=e}function sb(e){z.messagesBySession=e}function ob(e,t){z.messagesBySession={...z.messagesBySession,[e]:t}}function Dc(e,t){z.messagesBySession={...z.messagesBySession,[e]:t(z.messagesBySession[e]??[])}}function ib(e){const{[e]:t,...n}=z.messagesBySession;z.messagesBySession=n}function zc(e){sn?.unsubscribe(e),Tb(e),fi.discard(({meta:t})=>t.sessionId===e),nb(e),ib(e),delete z.approvalsBySession[e],delete z.questionsBySession[e],delete z.tasksBySession[e],delete z.goalBySession[e],delete z.gitStatusBySession[e],delete z.lastSeqBySession[e],delete z.compactionBySession[e],delete z.messagesLoadingMoreBySession[e],delete z.messagesHasMoreBySession[e],delete z.messagesLoadMoreErrorBySession[e],delete Sa[e],mi.delete(e),li.delete(e),Yc.delete(e),Ok(e),delete z.queuedBySession[e],delete z.promptIdBySession[e],delete z.inFlightBySession[e],delete z.turnActiveBySession[e],delete z.planModeBySession[e],delete z.swarmModeBySession[e],delete z.supermoonModeBySession[e],delete z.modeVersionBySession[e],delete z.supermoonPreviousEffortBySession[e],delete z.goalModeBySession[e],delete z.thinkingBySession[e],Ac(),Lc(),Bc(),Pc()}const Fc=T(null),qc=T([]),Wc=T(!1),Nc=T(!1),Hc=T(null);async function Do(e){const t=z.modeVersionBySession[e]??0;let n;try{n=await Le().getSessionStatus(e)}catch{return}Mi(e,s=>({...s,model:n.model||s.model,usage:{...s.usage,contextTokens:n.contextTokens,contextLimit:n.maxContextTokens}})),my(z,e,t)&&(z.swarmModeBySession={...z.swarmModeBySession,[e]:n.swarmMode},z.planModeBySession={...z.planModeBySession,[e]:n.planMode},z.supermoonModeBySession={...z.supermoonModeBySession,[e]:n.supermoonMode}),n.thinkingEffort.length>0&&(z.thinkingBySession={...z.thinkingBySession,[e]:n.thinkingEffort})}async function ab(e){const t=z.goalVersionBySession[e]??0;let n;try{n=await Le().getSessionGoal(e)}catch{return}if((z.goalVersionBySession[e]??0)!==t)return;const s={...z.goalBySession};n===null||n.status==="complete"?delete s[e]:s[e]=n,z.goalBySession=s}function Uc(e,t){const n=t??z.activeSessionId;return n?Promise.resolve(Le().updateSession(n,e)).then(()=>Do(n)).then(()=>!0).catch(s=>(zo("persistSessionProfile",s,{sessionId:n}),!1)):Promise.resolve(!1)}const Vc=ze.conversationToc;function lb(){try{const e=xt(Vc);return e===null?!0:e==="true"}catch{return!0}}function rb(e){try{Lt(Vc,e?"true":"false")}catch{}}const jc=T(lb());function cb(e){jc.value=e,rb(e)}function ub(e){try{return xt(e)??""}catch{return""}}const Kc=T(ub(Tc)==="1");function db(e){Kc.value=e;try{Lt(Tc,e?"1":"0")}catch{}}let sn=null,or=0;function Gc(){return or+=1,`msg_opt_${Date.now().toString(36)}_${or}`}function pb(e,t,n){const s={sessions:z.sessions,activeSessionId:z.activeSessionId,messagesBySession:z.messagesBySession,approvalsBySession:z.approvalsBySession,planReviewByToolCallId:z.planReviewByToolCallId,questionsBySession:z.questionsBySession,tasksBySession:z.tasksBySession,goalBySession:z.goalBySession,goalVersionBySession:z.goalVersionBySession,lastSeqBySession:z.lastSeqBySession,turnActiveBySession:z.turnActiveBySession,compactionBySession:z.compactionBySession,config:z.config,warnings:z.warnings},o=F2(s,e,{sessionId:t,seq:n});if(Rc(o.sessions),Ja(o.activeSessionId),sb(o.messagesBySession),z.approvalsBySession=o.approvalsBySession,z.planReviewByToolCallId=o.planReviewByToolCallId,z.questionsBySession=o.questionsBySession,z.tasksBySession=o.tasksBySession,z.goalBySession=o.goalBySession,z.goalVersionBySession=o.goalVersionBySession,z.lastSeqBySession=o.lastSeqBySession,z.turnActiveBySession=o.turnActiveBySession,z.compactionBySession=o.compactionBySession,z.config=o.config??null,z.warnings=o.warnings,e.type==="configChanged"&&(z.defaultModel=e.config.defaultModel??null),e.type==="modelCatalogChanged"&&(it.loadModels(),it.loadProviders()),e.type==="sessionUsageUpdated"){if(e.swarmMode!==void 0&&(z.swarmModeBySession={...z.swarmModeBySession,[e.sessionId]:e.swarmMode}),e.planMode!==void 0&&(z.planModeBySession={...z.planModeBySession,[e.sessionId]:e.planMode}),e.supermoonMode!==void 0){const i=z.supermoonModeBySession[e.sessionId]??!1;z.supermoonModeBySession={...z.supermoonModeBySession,[e.sessionId]:e.supermoonMode},e.supermoonMode&&!i?Ae.pinSupermoonEffort(e.sessionId):!e.supermoonMode&&i&&Ae.restoreSupermoonEffort(e.sessionId)}e.thinking!==void 0&&(z.thinkingBySession={...z.thinkingBySession,[e.sessionId]:e.thinking}),(e.planMode!==void 0||e.swarmMode!==void 0||e.supermoonMode!==void 0)&&Ss(z,e.sessionId)}}function fb(e,t){const n=z.lastSeqBySession[t.sessionId]??0,s=z.turnActiveBySession[t.sessionId]??!1;pb(e,t.sessionId,t.seq);const o=nn.sideChatTargetBySession.value[t.sessionId];if(o){const{agentId:i}=o,c=t.sessionId;e.type==="agentDelta"&&e.agentId===i?e.delta.text&&nn.appendSideChatAssistantText(i,c,e.delta.text):e.type==="agentTurnEnded"&&e.agentId===i?nn.finishSideChatAgent(i,c):e.type==="taskProgress"&&e.taskId===i?nn.appendSideChatAssistantText(i,c,e.outputChunk):e.type==="taskCompleted"&&e.taskId===i&&nn.finishSideChatAgent(i,c,e.outputPreview)}if(e.type==="messageCreated"&&e.message.role==="user"&&e.message.promptId!==void 0){const i=e.message.sessionId;z.promptIdBySession[i]!==e.message.promptId&&(z.promptIdBySession={...z.promptIdBySession,[i]:e.message.promptId})}if(e.type==="assistantDelta"&&t.sessionId===z.activeSessionId&&ls.recordMoonDelta((e.delta.text?.length??0)+(e.delta.thinking?.length??0)),e.type==="turnActiveChanged"&&!e.active&&t.seq>n){const i=e.reason;Dw(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&&Ow(e.sessionId),(e.type==="promptAborted"||e.type==="promptCompleted"&&e.reason==="blocked")&&t.seq>n&&z.promptIdBySession[e.sessionId]===e.promptId&&Ae.finishPromptLocal(e.sessionId),e.type==="questionRequested"&&zw(e.sessionId,e.question),e.type==="approvalRequested"&&Fw(e.sessionId,e.approval)}const fi=xy(({appEvent:e,meta:t})=>fb(e,t),({appEvent:e})=>wy(e),{coalesce:My});function Qc(){if(sn!==null||typeof WebSocket>"u")return;Et("ws:connection",{status:"connecting"}),z.connection="connecting",sn=Le().connectEvents({onEvent(t,n){if(t.type==="workspaceCreated"||t.type==="workspaceUpdated"||t.type==="workspaceDeleted"){Ae.applyWorkspaceEvent(t);return}for(const s of $y({appEvent:t,meta:n}))fi(s)},onResync(t,n,s){Et("ws:resync",{sessionId:t,status:"required",seq:n}),fi.flush(),mi.add(t),vi.request(t)},onError(t,n,s){Et("ws:error",{status:"failed",errorCode:t,fatal:s}),el({severity:"error",title:at.global.t("warnings.wsTitle"),message:n,details:[Ct("message",n)].filter(o=>o!==void 0)})},onConnectionChange(t){Et("ws:connection",{status:t?"connected":"disconnected"}),z.connected=t,z.connection=t?"connected":"disconnected",t&&(wb(),Ae.refreshServerMeta())},onTerminalOutput(t,n,s,o){ai.handleOutput(t,n,s,o)},onTerminalExit(t,n,s){ai.handleExit(t,n,s)}}),ai.bindTransport(sn)}const Sa={},mi=new Set,li=new Set,Yc=new Set;function mb(e){return Mn(e)&&e.code===sr?!0:typeof e=="object"&&e!==null&&e.code===sr}function Ct(e,t){if(!(t==null||t===""))return{label:at.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 vb(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.name=="string"?e.name:void 0}function hb(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.message=="string"?e.message:void 0}function gb(e){return e instanceof Error&&typeof e.stack=="string"&&e.stack?e.stack:void 0}function yb(e){if(!(typeof e!="number"||!Number.isFinite(e)))return new Date(e).toISOString()}function ir(e){if(!(typeof e!="number"||!Number.isFinite(e)))return`${Math.round(e)}ms`}function kb(e,t,n){const s=Oa(t),o=Mn(t),i=s||o?t.timestamp:void 0,c=s||o?t.durationMs:void 0,p=[Ct("operation",e),Ct("sessionId",n??z.activeSessionId),Ct("connection",z.connection),Ct("timestamp",yb(i??Date.now()))];return s?p.push(Ct("duration",ir(c)),Ct("request",`${t.method} ${t.path}`),Ct("endpoint",t.url),Ct("requestId",t.requestId),Ct("phase",t.phase),Ct("timeout",`${t.timeoutMs}ms`),Ct("status",t.status===void 0?void 0:`${t.status} ${t.statusText??""}`.trim()),Ct("contentType",t.contentType),Ct("responsePreview",t.bodyPreview),Ct("cause",t.cause)):o?p.push(Ct("duration",ir(c)),Ct("code",t.code),Ct("requestId",t.requestId),Ct("message",t.message),Ct("details",t.details)):p.push(Ct("errorName",vb(t)),Ct("message",hb(t)??Zc(t)),Ct("stack",gb(t))),p.filter(v=>v!==void 0)}function bb(e,t,n={}){const s=Oa(t),o=Mn(t),i=n.title??(s?at.global.t("warnings.daemonNetworkTitle"):o?at.global.t("warnings.daemonApiTitle"):at.global.t("warnings.operationFailedTitle")),c=n.message??(s?at.global.t("warnings.daemonNetworkMessage"):o?t.message:at.global.t("warnings.operationFailedMessage"));return{severity:"error",title:i,message:c,details:kb(e,t,n.sessionId)}}function el(e){z.warnings=[...z.warnings,e].slice(-50)}function wb(){const e=at.global.t("warnings.wsTitle"),t=z.warnings.filter(n=>!(typeof n=="object"&&n!==null&&n.severity==="error"&&n.title===e));t.length!==z.warnings.length&&(z.warnings=t)}function zo(e,t,n){console.error(`[kimi-web] operation failed: ${e}`,t);const s=Mn(t),o=Oa(t);Et("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}),el(bb(e,t,n))}const Sb={40913:"warnings.goal.alreadyExists",40914:"warnings.goal.notFound",40915:"warnings.goal.statusInvalid",40916:"warnings.goal.notResumable",40918:"warnings.goal.objectiveTooLong"};function Cb(e){if(!Mn(e))return;const t=Sb[e.code];return t?at.global.t(t):void 0}async function _b(e){if(zc(e),z.activeSessionId!==e)return;const t=z.sessions[0];t?await Ae.selectSession(t.id,{urlMode:"replace"}):(Ja(void 0),z.sessionLoading=!1,Ae.writeSessionUrl(void 0,"replace"))}const ar=new Set;async function xb(e){if(!ar.has(e)){ar.add(e);try{const t=await Le().getSessionWarnings(e),n=at.global.t("warnings.noteLabel");for(const s of t)el(`${n}: ${s.message}`)}catch{}}}async function tl(e){const t=Ae.localTurnStartState(e);try{const s=await Le().getSessionSnapshot(e);if(!z.sessions.some(v=>v.id===e))return"ok";fi.flush();const o=z.lastSeqBySession[e]??0,i=Sa[e];if(!(mi.has(e)||hi.has(e))&&i!==void 0&&i===s.epoch&&o>s.asOfSeq)return li.delete(e)||(li.add(e),vi.request(e)),"ok";if(!Ae.isLocalTurnSnapshotCurrent(e,t))return Ae.afterLocalTurnStartsSettle(e,()=>{vi.request(e)}),"ok";const p=la(s.session.usage);Mi(e,v=>({...s.session,model:s.session.model&&s.session.model.length>0?s.session.model:v.model,usage:p?v.usage:s.session.usage})),ob(e,vy(z.messagesBySession[e]??[],s.messages)),z.tasksBySession={...z.tasksBySession,[e]:hy(s.subagents,z.tasksBySession[e]??[])},z.messagesHasMoreBySession={...z.messagesHasMoreBySession,[e]:s.hasMoreMessages},z.approvalsBySession={...z.approvalsBySession,[e]:s.pendingApprovals};for(const v of s.pendingApprovals){const g=v.display;g?.kind==="plan_review"&&typeof g.plan=="string"&&g.plan.length>0&&(z.planReviewByToolCallId={...z.planReviewByToolCallId,[v.toolCallId]:{plan:g.plan,path:typeof g.path=="string"?g.path:void 0}})}z.questionsBySession={...z.questionsBySession,[e]:s.pendingQuestions},z.lastSeqBySession={...z.lastSeqBySession,[e]:s.asOfSeq},Sa[e]=s.epoch,mi.delete(e),li.delete(e),Ae.handleSessionSnapshot(e,{inFlightTurn:s.inFlightTurn,busy:s.session.busy});{const v={...z.turnActiveBySession};s.session.mainTurnActive??(s.inFlightTurn!==null&&s.session.busy)?v[e]=!0:delete v[e],z.turnActiveBySession=v}return Qc(),sn&&(sn.seedSnapshot(e,s),sn.subscribe(e,{seq:s.asOfSeq,epoch:s.epoch}),Ib(e)),hi.delete(e),p&&Do(e),xb(e),"ok"}catch(n){return mb(n)?(await _b(e),"not-found"):(zo("getSessionSnapshot",n,{title:at.global.t("warnings.sessionSnapshotTitle"),message:at.global.t("warnings.sessionSnapshotMessage"),sessionId:e}),"failed")}}const vi=gy(tl);function $b(e){return Object.prototype.hasOwnProperty.call(z.messagesBySession,e)}const Mb=4,rs=[],hi=new Set;function Ib(e){const t=rs.indexOf(e);for(t!==-1&&rs.splice(t,1),rs.unshift(e);rs.length>Mb;){let n=-1;for(let o=rs.length-1;o>=0;o--)if(rs[o]!==z.activeSessionId){n=o;break}if(n===-1)break;const[s]=rs.splice(n,1);if(s===void 0)break;sn?.unsubscribe(s),hi.add(s)}}function Tb(e){const t=rs.indexOf(e);t!==-1&&rs.splice(t,1),hi.delete(e)}async function Ab(e){return tl(e)}function nl(e,t){return(z.inFlightBySession[e]??!1)||(z.turnActiveBySession[e]??!1)||(t??z.sessions.find(n=>n.id===e)?.mainTurnActive??!1)}function sl(e){try{const t=new Date(e),s=Date.now()-t.getTime(),o=s/36e5;if(s<6e4)return at.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 Lb=3e4,Bo=T(0);let Zi=null;function Bb(){Zi===null&&(Zi=setInterval(()=>{Bo.value=(Bo.value+1)%Number.MAX_SAFE_INTEGER},Lb),Zi.unref?.())}function Pb(e,t){const n=e.split(`
-`),s=t.split(`
-`),o=[];return n.forEach((i,c)=>{o.push({kind:"rem",gutter:String(c+1),text:`- ${i}`})}),s.forEach((i,c)=>{o.push({kind:"add",gutter:String(c+1),text:`+ ${i}`})}),o}function Eb(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:Pb(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 c=i??{};return{title:typeof c.title=="string"?c.title:"",status:typeof c.status=="string"?c.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,c=(Array.isArray(t.options)?t.options:[]).map(p=>{const v=p??{},g=typeof v.label=="string"?v.label:"";if(!g)return null;const C=typeof v.description=="string"?v.description:void 0;return{label:g,description:C}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:c.length>0?c:void 0}}return{kind:"generic",summary:e.action}}function Rb(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 Ob(e){const t=z.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 c=i.input,p=c&&typeof c.command=="string"?c.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 Db(e){let t;e.status==="running"?t="run":e.status==="completed"?t="done":t="fail";let n="";if(e.status==="running"&&e.startedAt){const c=Math.round((Date.now()-new Date(e.startedAt).getTime())/1e3),p=Math.floor(c/60),v=c%60;n=at.global.t("tasks.timingRunning",{time:`${p}:${String(v).padStart(2,"0")}`})}else if(e.completedAt&&e.startedAt){const c=Math.round((new Date(e.completedAt).getTime()-new Date(e.startedAt).getTime())/1e3);n=at.global.t("tasks.timingDone",{sec:c})}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??Ob(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 zb=$(()=>{const e=z.sessions.find(n=>n.id===z.activeSessionId),t=e?e.cwd.split("/").pop()??e.cwd:"main";return{name:z.workspaceName,branch:t}}),Fb=$(()=>(Bo.value,z.sessions.toSorted((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:e.id,title:e.title,time:sl(e.updatedAt),busy:nl(e.id,e.mainTurnActive),pendingInteraction:e.pendingInteraction,lastTurnReason:e.lastTurnReason})))),qb=$(()=>z.activeSessionId??""),Wb=$(()=>{const e=z.activeSessionId;if(e)return it.skillsBySession.value[e]??[];const t=Ti.value;return t?it.skillsByWorkspace.value[t]??[]:[]}),ol=$(()=>{const e=z.activeSessionId;return e?z.inFlightBySession[e]??!1:!1}),Nb=$(()=>Ae.isStartingFirstPrompt()),nn=_2(z,{pushOperationFailure:zo,nextOptimisticMsgId:Gc,connectEventsIfNeeded:Qc,getEventConn:()=>sn,resolveThinkingForPrompt:(e,t)=>it.resolveThinkingForPrompt(e,t)}),Fo=$(()=>{const e=z.activeSessionId;if(!e)return[];const t=nn.sideChatTargetBySession.value[e]?.agentId;return(z.tasksBySession[e]??[]).filter(n=>n.id!==t)}),Xc=mk(z,Fo),Hb=$(()=>{const e=z.activeSessionId;if(!e)return[];const t=new Set(z.sideChatUserMessageIdsBySession[e]??[]),n=(z.messagesBySession[e]??[]).filter(o=>!t.has(o.id)),s=z.approvalsBySession[e]??[];return wc(n,s,o=>Le().getFileUrl(o),Ii.value,z.planReviewByToolCallId)}),Ii=$(()=>{const e=z.activeSessionId;return e?(z.turnActiveBySession[e]??!1)||(z.sessions.find(t=>t.id===e)?.mainTurnActive??!1):!1}),Ub=$(()=>ol.value||Ii.value),Vb=$(()=>(Xc.taskClock.value,Fo.value.map(Db))),Jc=$(()=>U2(Fo.value)),jb=$(()=>j2(Fo.value)),oo=$(()=>{const e=z.activeSessionId;return e?z.goalBySession[e]??null:null}),Kb=$(()=>{const e=z.activeSessionId;return e?W2(z.messagesBySession[e]??[]):[]}),Gb=$(()=>{const e=z.activeSessionId;return e?z.compactionBySession[e]??null:null}),Qb=$(()=>z.connection),Yb=$(()=>z.loading),Zb=$(()=>z.sessionLoading),Xb=$(()=>{const e=z.activeSessionId;return e?z.messagesLoadingMoreBySession[e]??!1:!1}),Jb=$(()=>{const e=z.activeSessionId;return e?z.messagesHasMoreBySession[e]??!1:!1}),ew=$(()=>{const e=z.activeSessionId;return e?z.messagesLoadMoreErrorBySession[e]??!1:!1}),tw=$(()=>z.serverVersion),eu=$(()=>z.backend),nw=$(()=>z.dangerousBypassAuth);Ee(eu,e=>{sn!==null&&sn.setTranscriptMode(e==="v2")},{immediate:!0});function sw(){z.dangerousBypassAuth=!1}const ow=$(()=>z.permission),iw=$(()=>z.thinking),tu=$(()=>{const e=z.activeSessionId;return e?z.planModeBySession[e]??!1:Oo.planMode}),aw=$(()=>{const e=z.activeSessionId;return e?z.swarmModeBySession[e]??!1:Oo.swarmMode}),lw=$(()=>{const e=z.activeSessionId;return e?z.supermoonModeBySession[e]??!1:Oo.supermoonMode}),rw=$(()=>{const e=z.activeSessionId;return e?z.goalModeBySession[e]??!1:Oo.goalMode}),cw=$(()=>{const e=V2(Jc.value);return{plan:tu.value,goal:oo.value&&oo.value.status!=="complete"?{status:oo.value.status,turnsUsed:oo.value.turnsUsed,elapsedMs:oo.value.wallClockMs}:null,swarm:e.total>0?e:null}}),uw=$(()=>{const e=z.activeSessionId;if(!e)return[];const t=Le();return(z.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}))}))}),dw=$(()=>z.warnings),pw=$(()=>{const e=z.activeSessionId;return e?(z.questionsBySession[e]??[]).map(Rb):[]}),fw=$(()=>{const e=z.activeSessionId;return e?(z.approvalsBySession[e]??[]).map(t=>({approvalId:t.approvalId,block:Eb(t),agentName:t.agentName})):[]}),il=$(()=>{const e=z.activeSessionId;return e?(z.approvalsBySession[e]??[]).length>0?"awaiting-approval":(z.questionsBySession[e]??[]).length>0?"awaiting-question":ol.value||Ii.value?"running":"idle":"idle"}),it=Nk(z,{pushOperationFailure:zo,refreshSessionStatus:Do,persistSessionProfile:Uc,activity:il,updateSession:Mi,updateSessionMessages:Dc}),Ca=$(()=>{const e=z.activeSessionId;if(!e)return null;const t=z.gitStatusBySession[e];return t?{branch:t.branch,ahead:t.ahead,behind:t.behind}:null}),mw=$(()=>{const e=z.activeSessionId;return e?z.gitStatusBySession[e]?.pullRequest??null:null}),vw=$(()=>{const e=z.activeSessionId;if(!e)return[];const t=z.gitStatusBySession[e];return t?Object.entries(t.entries).map(([n,s])=>({path:n,status:s})).sort((n,s)=>n.path.localeCompare(s.path)):[]}),hw=$(()=>{const e=z.activeSessionId;if(!e)return null;const t=z.gitStatusBySession[e];return t?{totalAdditions:t.additions,totalDeletions:t.deletions}:null}),nu=$(()=>{const e=z.sessions.find(c=>c.id===z.activeSessionId),t=Ca.value?.branch??(e?e.cwd.split("/").pop()??e.cwd:"main"),n=e===void 0?it.draftModel.value:null,s=(e?.model&&e.model.length>0?e.model:n??z.defaultModel)??"—",o=it.models.value.find(c=>c.id===s)??it.models.value.find(c=>c.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:z.permission,branch:t,cwd:e?.cwd??"",isGitRepo:Ca.value!==null}}),gw=$(()=>qc.value),yw=$(()=>z.sessions.find(t=>t.id===z.activeSessionId)?.usage.totalCostUsd??0),kw=$(()=>z.authReady),bw=$(()=>z.defaultModel),ww=$(()=>z.managedProviderStatus),Sw=$(()=>z.config),Cw=$(()=>{const e=z.activeSessionId;if(!e)return{};const t=z.gitStatusBySession[e];return t?{...t.entries}:{}});function fo(e){const t=Fn(e.cwd);return z.workspaces.find(n=>Fn(n.root)===t)?.id??e.workspaceId??e.cwd}const al=$(()=>cy({workspaces:z.workspaces,sessions:z.sessions,hiddenWorkspaceRoots:z.hiddenWorkspaceRoots,sessionsHasMoreByWorkspace:z.sessionsHasMoreByWorkspace})),gi=T(Yu()),mo=T(Zu()==="manual"?"manual":"recent"),yi=T(uy()),_a=T(Zv());function _w(e){const t=py(yi.value,e);yi.value=t,dy(t)}function xw(e,t){const n=Jv(_a.value,e,t);_a.value=n,Xv(n)}Ee(()=>[al.value.map(e=>e.id).join("\0"),z.loading],([e,t])=>{if(t)return;const n=e?e.split("\0"):[],s=dd(n,gi.value);s!==null&&(gi.value=s,Wr(s))});const Us=$(()=>{const e=al.value.map(t=>({id:t.id,name:t.name,root:t.root,shortPath:J2(t.root,z.fsHome),sessionCount:t.sessionCount}));if(mo.value==="recent"){const t=new Map;for(const n of z.sessions){if(n.parentSessionId)continue;const s=fo(n),o=new Date(n.updatedAt).getTime();o>(t.get(s)??Number.NEGATIVE_INFINITY)&&t.set(s,o)}return md(e,t)}return pd(e,gi.value)}),Ti=$(()=>{const e=z.activeWorkspaceId,t=Us.value;return e&&t.some(n=>n.id===e)?e:t[0]?.id??null});Ee(Ti,e=>{e&&(Object.prototype.hasOwnProperty.call(it.skillsByWorkspace.value,e)||it.loadSkillsForWorkspace(e))},{immediate:!0});const $w=$(()=>{const e=Ti.value;return e?Us.value.find(t=>t.id===e)??null:null}),Mw=$(()=>{Bo.value;const e=new Set(Us.value.map(n=>n.id)),t=new Map(Us.value.map(n=>[n.id,n.name]));return z.sessions.filter(n=>!n.parentSessionId&&e.has(fo(n))).map(n=>{const s=fo(n);return{id:n.id,title:n.title,time:sl(n.updatedAt),busy:nl(n.id,n.mainTurnActive),pendingInteraction:n.pendingInteraction,lastTurnReason:n.lastTurnReason,lastPrompt:n.lastPrompt,workspaceId:s,workspaceName:t.get(s)}})}),Iw=$(()=>{Bo.value;const e=new Map;for(const t of z.sessions.toSorted((n,s)=>new Date(s.updatedAt).getTime()-new Date(n.updatedAt).getTime())){if(t.parentSessionId)continue;const n=fo(t),s={id:t.id,title:t.title,time:sl(t.updatedAt),busy:nl(t.id,t.mainTurnActive),pendingInteraction:t.pendingInteraction,lastTurnReason:t.lastTurnReason,updatedAt:t.updatedAt},o=e.get(n)??[];o.push(s),e.set(n,o)}return Us.value.map(t=>({workspace:t,sessions:fy(e.get(t.id)??[],yi.value),hasMore:z.sessionsHasMoreByWorkspace[t.id]??!1,loadingMore:z.sessionsLoadingMoreByWorkspace[t.id]??!1,initialCount:z.sessionsInitialCountByWorkspace[t.id]??ya}))});function Tw(e){gi.value=e,Wr(e),mo.value!=="manual"&&(mo.value="manual",Nr("manual"))}function Aw(e){mo.value!==e&&(mo.value=e,Nr(e))}const su=$(()=>{const e={};for(const[t,n]of Object.entries(z.approvalsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);for(const[t,n]of Object.entries(z.questionsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);return e}),Lw=$(()=>{const e={};for(const[t,n]of Object.entries(z.approvalsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).approvals=n.length);for(const[t,n]of Object.entries(z.questionsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).questions=n.length);return e}),Bw=$(()=>{const e={};for(const[t,n]of Object.entries(z.unreadBySession))n&&(e[t]=!0);return e}),Pw=$(()=>{const e={},t=su.value;for(const n of z.sessions){const s=t[n.id]??0;if(s<=0)continue;const o=fo(n);e[o]=(e[o]??0)+s}return e}),Ew=$(()=>z.recentRoots),Rw=$(()=>z.availableOpenInApps),Ae=Fk(z,{taskPoller:Xc,sideChat:nn,modelProvider:it,pushOperationFailure:zo,activity:il,sessionsKnownEmpty:Yc,setSessions:Rc,updateSession:Mi,upsertSessionFront:eb,appendSession:tb,forgetSession:zc,setActiveSessionId:Ja,updateSessionMessages:Dc,nextOptimisticMsgId:Gc,getEventConn:()=>sn,syncSessionFromSnapshot:tl,reopenSession:Ab,hasLoadedMessages:$b,refreshSessionStatus:Do,refreshSessionGoal:ab,persistSessionProfile:Uc,mergedWorkspaces:al,workspacesView:Us,status:nu,workspaceIdForSession:fo,savePermissionToStorage:G2,savePlanModeToStorage:Ac,saveSwarmModeToStorage:Lc,saveSupermoonModeToStorage:Bc,saveGoalModeToStorage:Pc,draftModes:Oo,saveUnread:Pa,saveActiveWorkspaceToStorage:X2,saveHiddenWorkspacesToStorage:Z2,goalErrorMessage:Cb,resetFastMoon:ls.resetFastMoon,initialized:Nc,connectIssue:Hc,selectedDiffPath:Fc,fileDiffLines:qc,fileDiffLoading:Wc});function ll(e){return e===z.activeSessionId&&typeof document<"u"&&document.visibilityState==="visible"&&document.hasFocus()}function Ow(e){if(z.turnActiveBySession[e]){const t={...z.turnActiveBySession};delete t[e],z.turnActiveBySession=t}z.inFlightBySession[e]&&(z.inFlightBySession={...z.inFlightBySession,[e]:!1})}function Dw(e,t,n){const s=z.promptIdBySession[e];Ae.finishPromptLocal(e,{turnWasActive:n}),e===z.activeSessionId?(Ae.loadGitStatus(e),Do(e)):t==="idle"&&(z.unreadBySession={...z.unreadBySession,[e]:!0},Pa({[e]:!0}));const o=(z.approvalsBySession[e]??[]).length>0,i=(z.questionsBySession[e]??[]).length>0;jy(t,o,i)&&Vn.maybeNotifyCompletion(e,{isUserWatching:ll(e),sessionTitle:z.sessions.find(c=>c.id===e)?.title??"",promptId:s,onClick:()=>{Ae.selectSession(e)}}),t==="idle"&&Lo.maybePlayCompletionSound()}function zw(e,t){const n=t.questions[0],s=n?.header?.trim()??"",o=n?.question?.trim()??"",i=s&&o?`${s}: ${o}`:o||s;Vn.maybeNotifyQuestion({isUserWatching:ll(e),sessionTitle:z.sessions.find(c=>c.id===e)?.title??"",questionPreview:i,questionId:t.questionId,onClick:()=>{Ae.selectSession(e)}}),Lo.maybePlayQuestionSound()}function Fw(e,t){Vn.maybeNotifyApproval({isUserWatching:ll(e),sessionTitle:z.sessions.find(n=>n.id===e)?.title??"",toolName:t.toolName,approvalId:t.approvalId,onClick:()=>{Ae.selectSession(e)}}),Lo.maybePlayApprovalSound()}function Ai(){return Bb(),{workspace:zb,sessions:Fb,activeSessionId:qb,workspacesView:Us,workspaceSortMode:mo,visibleWorkspace:$w,activeWorkspaceId:Ti,sessionsForView:Mw,workspaceGroups:Iw,attentionBySession:su,pendingBySession:Lw,attentionByWorkspace:Pw,unreadBySession:Bw,pinnedSessionIds:yi,sessionEmojiBySession:_a,recentRoots:Ew,turns:Hb,tasks:Vb,activeAppTasks:Fo,todos:Kb,goal:oo,swarms:Jc,swarmMembersByToolCallId:jb,activationBadges:cw,compaction:Gb,status:nu,sessionCost:yw,fileDiff:gw,selectedDiffPath:Fc,fileDiffLoading:Wc,changes:vw,gitInfo:Ca,gitDiffStats:hw,activePullRequest:mw,changesByPath:Cw,pendingApprovals:fw,availableOpenInApps:Rw,connection:Qb,loading:Yb,sessionLoading:Zb,loadingMoreMessages:Xb,hasMoreMessages:Jb,loadMoreMessagesError:ew,serverVersion:tw,backend:eu,dangerousBypassAuth:nw,clearDangerousBypassAuth:sw,initialized:Nc,connectIssue:Hc,permission:ow,thinking:iw,planMode:tu,swarmMode:aw,supermoonMode:lw,goalMode:rw,queued:uw,warnings:dw,questions:pw,activity:il,turnActive:Ii,inFlight:ol,working:Ub,isStartingFirstPrompt:Nb,fastMoon:ls.fastMoon,models:it.models,starredModelIds:it.starredModelIds,providers:it.providers,uiFontSize:ls.uiFontSize,setUiFontSize:ls.setUiFontSize,conversationToc:jc,setConversationToc:cb,colorScheme:ls.colorScheme,setColorScheme:ls.setColorScheme,accent:ls.accent,setAccent:ls.setAccent,notifyOnComplete:Vn.notifyOnComplete,notifyOnQuestion:Vn.notifyOnQuestion,notifyOnApproval:Vn.notifyOnApproval,notifyPermission:Vn.notifyPermission,setNotifyOnComplete:Vn.setNotifyOnComplete,setNotifyOnQuestion:Vn.setNotifyOnQuestion,setNotifyOnApproval:Vn.setNotifyOnApproval,soundOnComplete:Lo.soundOnComplete,setSoundOnComplete:Lo.setSoundOnComplete,onboarded:Kc,setOnboarded:db,load:Ae.load,selectSession:Ae.selectSession,clearActiveSession:Ae.clearActiveSession,loadOlderMessages:Ae.loadOlderMessages,loadWorkspaces:Ae.loadWorkspaces,loadMoreSessions:Ae.loadMoreSessions,loadAllSessions:Ae.loadAllSessions,selectWorkspace:Ae.selectWorkspace,openWorkspace:Ae.openWorkspace,openWorkspaceDraft:Ae.openWorkspaceDraft,startSessionAndSendPrompt:Ae.startSessionAndSendPrompt,startSessionAndActivateSkill:Ae.startSessionAndActivateSkill,startSessionAndOpenSideChat:Ae.startSessionAndOpenSideChat,addWorkspaceByPath:Ae.addWorkspaceByPath,browseFs:Ae.browseFs,getFsHome:Ae.getFsHome,sendPrompt:Ae.sendPrompt,steerPrompt:Ae.steerPrompt,sideChatVisible:nn.sideChatVisible,sideChatSessionId:nn.sideChatSessionId,sideChatTurns:nn.sideChatTurns,sideChatRunning:nn.sideChatRunning,sideChatSending:nn.sideChatSending,openSideChat:nn.openSideChat,closeSideChat:nn.closeSideChat,sendSideChatPrompt:nn.sendSideChatPrompt,terminal:ai,uploadImage:Ae.uploadImage,abortCurrentPrompt:Ae.abortCurrentPrompt,respondApproval:Ae.respondApproval,respondQuestion:Ae.respondQuestion,dismissQuestion:Ae.dismissQuestion,pendingQuestionActions:Ae.pendingQuestionActions,pendingApprovalActions:Ae.pendingApprovalActions,cancelTask:Ae.cancelTask,setPermission:Ae.setPermission,setThinking:it.setThinking,setPlanMode:Ae.setPlanMode,togglePlanMode:Ae.togglePlanMode,setSwarmMode:Ae.setSwarmMode,toggleSwarmMode:Ae.toggleSwarmMode,setSupermoonMode:Ae.setSupermoonMode,toggleSupermoonMode:Ae.toggleSupermoonMode,setGoalMode:Ae.setGoalMode,toggleGoalMode:Ae.toggleGoalMode,createGoal:Ae.createGoal,controlGoal:Ae.controlGoal,enqueue:Ae.enqueue,dismissWarning:Ae.dismissWarning,renameSession:Ae.renameSession,renameWorkspace:Ae.renameWorkspace,deleteWorkspace:Ae.deleteWorkspace,reorderWorkspaces:Tw,setWorkspaceSortMode:Aw,togglePinnedSession:_w,setSessionEmoji:xw,archiveSession:Ae.archiveSession,exportSession:Ae.exportSession,restoreSession:Ae.restoreSession,loadArchivedSessions:Ae.loadArchivedSessions,compact:Ae.compact,forkSession:Ae.forkSession,undo:Ae.undo,unqueue:Ae.unqueue,reorderQueue:Ae.reorderQueue,searchFiles:Ae.searchFiles,loadGitStatus:Ae.loadGitStatus,loadFileDiff:Ae.loadFileDiff,clearFileDiff:Ae.clearFileDiff,listDir:Ae.listDir,readFileContent:Ae.readFileContent,getFileDownloadUrl:Ae.getFileDownloadUrl,openWorkspaceFile:Ae.openWorkspaceFile,openInApp:Ae.openInApp,revealWorkspaceFile:Ae.revealWorkspaceFile,resolveImageUrl:Ae.resolveImageUrl,loadModels:it.loadModels,loadProviders:it.loadProviders,skills:Wb,activateSkill:it.activateSkill,setModel:it.setModel,toggleStarModel:it.toggleStarModel,addProvider:it.addProvider,deleteProvider:it.deleteProvider,refreshProvider:it.refreshProvider,refreshAllProviders:it.refreshAllProviders,importCatalogProvider:it.importCatalogProvider,importRegistry:it.importRegistry,authReady:kw,defaultModel:bw,managedProviderStatus:ww,config:Sw,updateConfig:Ae.updateConfig,checkAuth:Ae.checkAuth,startOAuthLogin:it.startOAuthLogin,pollOAuthLogin:it.pollOAuthLogin,cancelOAuthLogin:it.cancelOAuthLogin,logout:Ae.logout}}const qw=["aria-label"],Ww=Ie({__name:"Spinner",props:{size:{default:"md"},label:{default:"Loading"}},setup(e){return(t,n)=>(a(),u("span",{class:de(["ui-spinner",`ui-spinner--${e.size}`]),role:"status","aria-label":e.label},[...n[0]||(n[0]=[l("svg",{class:"ui-spinner__svg",viewBox:"0 0 24 24","aria-hidden":"true"},[l("circle",{class:"ui-spinner__track",cx:"12",cy:"12",r:"9"}),l("circle",{class:"ui-spinner__arc",cx:"12",cy:"12",r:"9"})],-1)])],10,qw))}}),Jt=Te(Ww,[["__scopeId","data-v-e5c5b17d"]]),Nw={key:0,class:"ui-badge__dot","aria-hidden":"true"},Hw=Ie({__name:"Badge",props:{variant:{default:"neutral"},size:{default:"md"},dot:{type:Boolean}},setup(e){return(t,n)=>(a(),u("span",{class:de(["ui-badge",[`ui-badge--${e.variant}`,`ui-badge--${e.size}`]])},[e.dot?(a(),u("span",Nw)):B("",!0),bt(t.$slots,"default",{},void 0,!0)],2))}}),hn=Te(Hw,[["__scopeId","data-v-5bc5cd6d"]]),Uw=Ie({__name:"Menu",setup(e,{expose:t}){const n=T();return t({el:n}),(s,o)=>(a(),u("div",{ref_key:"el",ref:n,class:"ui-menu",role:"menu"},[bt(s.$slots,"default",{},void 0,!0)],512))}}),_s=Te(Uw,[["__scopeId","data-v-60e6cd8d"]]),Vw={key:0,class:"ui-menu-sep",role:"separator"},jw=["disabled"],Kw=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(),u("div",Vw)):(a(),u("button",{key:1,class:de(["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))},[bt(t.$slots,"default",{},void 0,!0)],10,jw))}}),st=Te(Kw,[["__scopeId","data-v-f940771a"]]),ys=6,ks=8,Gw=150,Qw=Ie({__name:"Tooltip",props:{text:{},placement:{default:"top"},maxWidth:{default:280},maxLines:{default:6}},setup(e){const t=e,n=T(),s=T(),o=T(!1),i=T(!1),c=T({maxWidth:`${t.maxWidth}px`});let p,v=null,g;function C(){const k=s.value;if(!v||!k)return;const b=v.getBoundingClientRect(),_=k.offsetWidth,O=k.offsetHeight,y=window.innerWidth,L=window.innerHeight;let N=t.placement;N==="top"&&b.top-ys-OL-ks?N="top":N==="left"&&b.left-ys-_y-ks&&(N="left");let H=0,U=0;N==="top"?(H=b.top-ys-O,U=b.left+b.width/2-_/2):N==="bottom"?(H=b.bottom+ys,U=b.left+b.width/2-_/2):N==="left"?(H=b.top+b.height/2-O/2,U=b.left-ys-_):(H=b.top+b.height/2-O/2,U=b.right+ys),U=Math.min(Math.max(U,ks),y-ks-_),H=Math.min(Math.max(H,ks),L-ks-O),c.value={maxWidth:`${t.maxWidth}px`,top:`${Math.round(H)}px`,left:`${Math.round(U)}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}),Ne(()=>{C(),i.value=!0})},Gw))}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 w(k){k!==v&&(v&&(v.removeEventListener("mouseenter",x),v.removeEventListener("mouseleave",h),v.removeEventListener("focusin",x),v.removeEventListener("focusout",h)),v=k,v&&(v.addEventListener("mouseenter",x),v.addEventListener("mouseleave",h),v.addEventListener("focusin",x),v.addEventListener("focusout",h)))}return lt(()=>{const k=n.value??null;w(k?.firstElementChild??k),k&&(g=new MutationObserver(()=>{const b=k.firstElementChild??null;b!==v&&(h(),w(b??k))}),g.observe(k,{childList:!0}))}),vn(()=>{window.clearTimeout(p),window.removeEventListener("scroll",m,{capture:!0}),window.removeEventListener("resize",m),g?.disconnect(),w(null)}),(k,b)=>(a(),u(ye,null,[l("span",{ref_key:"trigger",ref:n,class:"ui-tip"},[bt(k.$slots,"default",{},void 0,!0)],512),(a(),Z(po,{to:"body"},[rt(l("div",{ref_key:"bubble",ref:s,class:de(["ui-tip__bubble",{positioned:i.value}]),style:ct([c.value,{"--tip-lines":e.maxLines}]),role:"tooltip"},d(e.text),7),[[jn,o.value]])]))],64))}}),Je=Te(Qw,[["__scopeId","data-v-98697f45"]]),Yw={class:"row"},Zw={class:"lead","aria-hidden":"true"},Xw={key:1,class:"unread-dot"},Jw={class:"left"},e4=["onKeydown"],t4={key:0,class:"t-emoji","aria-hidden":"true"},n4={class:"act"},s4={class:"ts"},o4={key:0,class:"emoji-glyph"},i4={class:"menu-time"},a4=["aria-label"],l4={class:"emoji-grid"},r4=["aria-label","onClick"],c4=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}=Fe(),{pinnedSessionIds:o,sessionEmojiBySession:i,togglePinnedSession:c,setSessionEmoji:p}=Ai(),v=e,g=n,C=$(()=>o.value.includes(v.session.id)),x=$(()=>i.value[v.session.id]??null);function h(){c(v.session.id)}function m(ie){p(v.session.id,ie),ke()}function w(ie){const Ce=new Date(ie);if(Number.isNaN(Ce.getTime()))return ie;const D=J=>String(J).padStart(2,"0");return`${Ce.getFullYear()}-${D(Ce.getMonth()+1)}-${D(Ce.getDate())} ${D(Ce.getHours())}:${D(Ce.getMinutes())}`}const k=$(()=>v.session.updatedAt?w(v.session.updatedAt):v.session.time),b=T(!1),_=T(null),O=T(null),y=T({});function L(ie){const Ce=ie.target;O.value?.el?.contains(Ce)||_.value?.el?.contains(Ce)||U()}function N(){const ie=_.value?.el;if(!ie)return;const Ce=O.value?.el,D=ie.getBoundingClientRect(),J=4,q=8,fe=Ce?.offsetHeight??0,xe=Ce?.offsetWidth??0;let Ue=D.bottom+J;Ue+fe>window.innerHeight-q&&(Ue=Math.max(q,D.top-fe-J));let Ke=D.right-xe;Kedocument.addEventListener("mousedown",L),0),window.addEventListener("resize",U),await Ne(),N()}function U(){b.value=!1,document.removeEventListener("mousedown",L),window.removeEventListener("resize",U)}ut(()=>{document.removeEventListener("mousedown",L),window.removeEventListener("resize",U),document.removeEventListener("mousedown",ne),window.removeEventListener("resize",ke)});const Q=T(!1),P=T(null),M=T(null),A=T({});function R(){const ie=P.value?.el;if(!ie)return;const Ce=M.value,D=ie.getBoundingClientRect(),J=4,q=8,fe=Ce?.offsetHeight??0,xe=Ce?.offsetWidth??0;let Ue=D.bottom+J;Ue+fe>window.innerHeight-q&&(Ue=Math.max(q,D.top-fe-J));let Ke=D.right-xe;Kedocument.addEventListener("mousedown",ne),0),window.addEventListener("resize",ke),await Ne(),R()}function ke(){Q.value=!1,document.removeEventListener("mousedown",ne),window.removeEventListener("resize",ke)}const pe=T(!1),V=T(""),ee=T(null);async function le(){U(),pe.value=!0,V.value=v.session.title,await Ne();try{ee.value?.focus(),ee.value?.select()}catch{}}function me(){const ie=V.value.trim();ie&&g("rename",v.session.id,ie),pe.value=!1}function _e(){pe.value=!1}const ce=T(!1),K=T(!1);async function Y(){const ie=await Yt(v.session.id);ce.value=ie,K.value=!ie,setTimeout(()=>{ce.value=!1,K.value=!1,U()},1500)}function Se(){U(),g("fork",v.session.id)}function oe(){U(),g("export",v.session.id)}function X(){U(),g("archive",v.session.id)}return t({closeMenu:U}),(ie,Ce)=>(a(),u("div",{class:de(["se",{on:e.active}]),onClick:Ce[7]||(Ce[7]=D=>g("select",e.session.id))},[l("div",Yw,[l("span",Zw,[e.session.busy?(a(),Z(Jt,{key:0,size:"sm"})):e.unread?(a(),u("span",Xw)):B("",!0)]),l("div",Jw,[pe.value?rt((a(),u("input",{key:0,ref_key:"renameInputRef",ref:ee,"onUpdate:modelValue":Ce[0]||(Ce[0]=D=>V.value=D),class:"rename-input",onClick:Ce[1]||(Ce[1]=Pe(()=>{},["stop"])),onKeydown:[mn(Pe(me,["stop"]),["enter"]),mn(Pe(_e,["stop"]),["esc"])],onBlur:me},null,40,e4)),[[gn,V.value]]):(a(),u("span",{key:1,class:"t",onDblclick:Pe(le,["stop"])},[x.value?(a(),u("span",t4,d(x.value),1)):B("",!0),ve(d(e.session.title),1)],32))]),I(Je,{text:r(s)("workspace.awaitingAnswerTitle")},{default:j(()=>[!pe.value&&(e.questionCount>0||e.session.pendingInteraction==="question")?(a(),Z(hn,{key:0,variant:"info",size:"sm"},{default:j(()=>[ve(d(r(s)("workspace.awaitingAnswer")),1)]),_:1})):B("",!0)]),_:1},8,["text"]),I(Je,{text:r(s)("workspace.awaitingPermissionTitle")},{default:j(()=>[!pe.value&&(e.approvalCount>0||e.session.pendingInteraction==="approval")?(a(),Z(hn,{key:0,variant:"warning",size:"sm"},{default:j(()=>[ve(d(r(s)("workspace.awaitingPermission")),1)]),_:1})):B("",!0)]),_:1},8,["text"]),I(Je,{text:r(s)("workspace.abortedTitle")},{default:j(()=>[!pe.value&&!e.session.busy&&e.session.pendingInteraction!=="question"&&e.session.pendingInteraction!=="approval"&&e.questionCount===0&&e.approvalCount===0&&(e.session.lastTurnReason==="cancelled"||e.session.lastTurnReason==="failed")?(a(),Z(hn,{key:0,variant:"danger",size:"sm"},{default:j(()=>[ve(d(r(s)("workspace.aborted")),1)]),_:1})):B("",!0)]),_:1},8,["text"]),l("span",n4,[l("span",s4,d(e.session.time),1),pe.value?B("",!0):(a(),Z(et,{key:0,class:de(["btn pin",{on:C.value}]),size:"sm",label:C.value?r(s)("sidebar.unpin"):r(s)("sidebar.pin"),onClick:Pe(h,["stop"])},{default:j(()=>[I(ae,{name:C.value?"pin-fill":"pin"},null,8,["name"])]),_:1},8,["class","label"])),pe.value?B("",!0):(a(),Z(et,{key:1,ref_key:"emojiBtnRef",ref:P,class:de(["btn emoji-btn",{open:Q.value}]),size:"sm",label:r(s)("sidebar.emoji"),onClick:Ce[2]||(Ce[2]=Pe(D=>se(D),["stop"]))},{default:j(()=>[x.value?(a(),u("span",o4,d(x.value),1)):(a(),Z(ae,{key:1,name:"emotion"}))]),_:1},8,["class","label"])),pe.value?B("",!0):(a(),Z(et,{key:2,ref_key:"kebabRef",ref:_,class:de(["btn kebab",{open:b.value}]),size:"sm",label:r(s)("sidebar.options"),onClick:Ce[3]||(Ce[3]=Pe(D=>H(D),["stop"]))},{default:j(()=>[I(ae,{name:"dots-horizontal"})]),_:1},8,["class","label"]))])]),(a(),Z(po,{to:"body"},[b.value?(a(),Z(_s,{key:0,ref_key:"menuRef",ref:O,class:"menu",style:ct(y.value),onClick:Ce[4]||(Ce[4]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{danger:K.value,onClick:Y},{default:j(()=>[I(ae,{name:ce.value?"check":"copy",size:"sm"},null,8,["name"]),ve(" "+d(K.value?r(s)("sidebar.copyFailed"):ce.value?r(s)("sidebar.copied"):r(s)("sidebar.copySessionId")),1)]),_:1},8,["danger"]),I(st,{separator:""}),I(st,{onClick:le},{default:j(()=>[I(ae,{name:"pencil",size:"sm"}),ve(" "+d(r(s)("sidebar.rename")),1)]),_:1}),I(st,{onClick:Se},{default:j(()=>[I(ae,{name:"git-fork",size:"sm"}),ve(" "+d(r(s)("sidebar.fork")),1)]),_:1}),I(st,{onClick:oe},{default:j(()=>[I(ae,{name:"download",size:"sm"}),ve(" "+d(r(s)("sidebar.export")),1)]),_:1}),I(st,{danger:"",onClick:X},{default:j(()=>[I(ae,{name:"archive",size:"sm"}),ve(" "+d(r(s)("sidebar.archive")),1)]),_:1}),I(st,{separator:""}),l("div",i4,d(k.value),1)]),_:1},8,["style"])):B("",!0)])),(a(),Z(po,{to:"body"},[Q.value?(a(),u("div",{key:0,ref_key:"emojiPickerRef",ref:M,class:"emoji-picker",role:"menu","aria-label":r(s)("sidebar.emoji"),style:ct(A.value),onClick:Ce[6]||(Ce[6]=Pe(()=>{},["stop"]))},[l("div",l4,[(a(!0),u(ye,null,Be(r(jr),D=>(a(),u("button",{key:D,type:"button",class:de(["emoji-cell",{on:D===x.value}]),"aria-label":D,role:"menuitem",onClick:Pe(J=>m(D),["stop"])},d(D),11,r4))),128))]),x.value?(a(),u("button",{key:0,type:"button",class:"emoji-clear",role:"menuitem",onClick:Ce[5]||(Ce[5]=Pe(D=>m(null),["stop"]))},d(r(s)("sidebar.emojiRemove")),1)):B("",!0)],12,a4)):B("",!0)]))],2))}}),u4=Te(c4,[["__scopeId","data-v-1960f3dd"]]),d4={class:"gh-top"},p4={class:"gh-name"},f4=["inert"],m4=["disabled"],v4={class:"show-more-label"},h4={class:"show-more-label"},g4={key:2,class:"group-empty"},y4=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}=Fe(),s=e,o=t,i=$({get:()=>s.renameValue,set:h=>o("updateRenameValue",h)}),c=$(()=>{if(s.isExpanded(s.group.workspace.id))return s.group.sessions;const h=s.group.sessions.slice(0,s.group.initialCount);if(s.activeId&&!h.some(m=>m.id===s.activeId)){const m=s.group.sessions.find(w=>w.id===s.activeId);if(m)return[...h,m]}return h}),p=$(()=>s.group.sessions.length>s.group.initialCount);function v(){return Math.max(0,s.group.workspace.sessionCount-s.group.sessions.length)}function g(){return s.group.sessions.length-s.group.initialCount}function C(h){s.renameInputRef.value=h instanceof HTMLInputElement?h:null}function x(h){h.dataTransfer&&(h.dataTransfer.effectAllowed="move",h.dataTransfer.setData("text/plain",s.group.workspace.id),o("wsDragstart",s.group.workspace.id))}return(h,m)=>(a(),u("div",{class:de(["group",{dragging:e.dragging}])},[l("div",{class:de(["gh",{on:e.group.workspace.id===e.activeWorkspaceId,collapsed:e.isCollapsed(e.group.workspace.id)}]),draggable:"true",onClick:m[7]||(m[7]=Pe(w=>o("groupClick",e.group.workspace.id,w),["stop"])),onContextmenu:m[8]||(m[8]=w=>o("groupContextmenu",e.group.workspace,w)),onDragstart:x,onDragend:m[9]||(m[9]=w=>o("wsDragend"))},[l("div",d4,[e.isCollapsed(e.group.workspace.id)?(a(),Z(ae,{key:0,class:"gh-folder",name:"folder-closed"})):(a(),Z(ae,{key:1,class:"gh-folder",name:"folder"})),e.renamingId!==e.group.workspace.id?(a(),Z(Je,{key:2,text:e.group.workspace.root},{default:j(()=>[l("span",p4,d(e.group.workspace.name),1)]),_:1},8,["text"])):rt((a(),u("input",{key:3,ref:C,"onUpdate:modelValue":m[0]||(m[0]=w=>i.value=w),class:"gh-rename",type:"text",onKeydown:[m[1]||(m[1]=mn(w=>o("confirmRename"),["enter"])),m[2]||(m[2]=mn(w=>o("cancelRename"),["esc"]))],onBlur:m[3]||(m[3]=w=>o("cancelRename")),onClick:m[4]||(m[4]=Pe(()=>{},["stop"]))},null,544)),[[gn,i.value]]),e.renamingId!==e.group.workspace.id?(a(),u("div",{key:4,class:de(["gh-actions",{open:e.wsMenuOpenId===e.group.workspace.id}])},[I(et,{class:de(["gh-more",{open:e.wsMenuOpenId===e.group.workspace.id}]),size:"sm",label:r(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":e.wsMenuOpenId===e.group.workspace.id,onClick:m[5]||(m[5]=Pe(w=>o("toggleWsMenu",e.group.workspace,w),["stop"]))},{default:j(()=>[I(ae,{name:"dots-horizontal"})]),_:1},8,["class","label","aria-expanded"]),I(et,{class:"gh-add",size:"sm",label:r(n)("workspace.newInGroup"),onClick:m[6]||(m[6]=Pe(w=>o("createInWorkspace",e.group.workspace.id),["stop"]))},{default:j(()=>[I(ae,{name:"chat-new"})]),_:1},8,["label"])],2)):B("",!0)])],34),l("div",{class:de(["group-sessions",{collapsed:e.isCollapsed(e.group.workspace.id)}]),inert:e.isCollapsed(e.group.workspace.id)},[(a(!0),u(ye,null,Be(c.value,w=>(a(),Z(u4,{key:w.id,session:w,active:w.id===e.activeId,"approval-count":e.pendingBySession[w.id]?.approvals??0,"question-count":e.pendingBySession[w.id]?.questions??0,unread:e.unreadBySession[w.id]??!1,onSelect:m[10]||(m[10]=k=>o("selectSession",k)),onRename:m[11]||(m[11]=(k,b)=>o("renameSession",k,b)),onArchive:m[12]||(m[12]=k=>o("archiveSession",k)),onFork:m[13]||(m[13]=k=>o("forkSession",k)),onExport:m[14]||(m[14]=k=>o("exportSession",k))},null,8,["session","active","approval-count","question-count","unread"]))),128)),e.group.hasMore||e.group.loadingMore?(a(),u("button",{key:0,class:"show-more",disabled:e.group.loadingMore,onClick:m[15]||(m[15]=Pe(w=>o("loadMore",e.group.workspace.id),["stop"]))},[m[17]||(m[17]=l("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),l("span",v4,d(e.group.loadingMore?r(n)("sidebar.loadingMore"):r(n)("sidebar.showMore",{count:v()})),1)],8,m4)):B("",!0),p.value?(a(),u("button",{key:1,class:"show-more",onClick:m[16]||(m[16]=Pe(w=>o("toggleExpand",e.group.workspace.id),["stop"]))},[m[18]||(m[18]=l("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),l("span",h4,d(e.isExpanded(e.group.workspace.id)?r(n)("sidebar.showLess"):r(n)("sidebar.showAll",{count:g()})),1)])):B("",!0),e.group.sessions.length===0?(a(),u("div",g4,d(r(n)("sidebar.noSessions")),1)):B("",!0)],10,f4)],2))}}),k4=Te(y4,[["__scopeId","data-v-cdac739a"]]),b4="kimi_desktop",w4="platform",lr="kimi-desktop",rr="kimi-desktop-platform";function S4(){let e=!1,t=null;try{const n=new URLSearchParams(window.location.search);n.has(b4)?(sessionStorage.setItem(lr,"1"),e=!0):e=e||sessionStorage.getItem(lr)==="1";const s=n.get(w4);s?(sessionStorage.setItem(rr,s),t=s):t=sessionStorage.getItem(rr)}catch{}return{isDesktop:e,platform:t}}const xa=S4(),C4=xa.isDesktop,uo=xa.isDesktop&&xa.platform==="darwin",_4={class:"ui-kbd"},x4=Ie({__name:"Kbd",props:{keys:{}},setup(e){return(t,n)=>(a(),u("span",_4,[(a(!0),u(ye,null,Be(e.keys,s=>(a(),u("kbd",{key:s,class:"ui-kbd__key"},d(s),1))),128))]))}}),is=Te(x4,[["__scopeId","data-v-32292ed8"]]),$4="(prefers-reduced-motion: reduce)";function M4(){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia($4)}function I4(e,t=M4){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 T4=["aria-label"],A4=Ie({__name:"KimiMascot",props:{label:{}},setup(e){const t=T(!1);let n;return lt(()=>{n=I4(s=>{t.value=!s})}),vn(()=>n?.()),(s,o)=>(a(),u("span",{class:de(["kimi-mascot",{"kimi-mascot--pulse":t.value}]),role:"img","aria-label":e.label},[I(ae,{name:"sparkles",size:"sm"})],10,T4))}}),L4=Te(A4,[["__scopeId","data-v-6634dad2"]]),B4=["disabled","aria-pressed"],P4=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(),u("button",{key:0,class:de(["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))},[bt(t.$slots,"default",{},void 0,!0)],10,B4)):(a(),u("span",{key:1,class:de(["ui-pill",{"is-active":e.active}])},[bt(t.$slots,"default",{},void 0,!0)],2))}}),$o=Te(P4,[["__scopeId","data-v-317ace1a"]]),E4={class:"ch"},R4={class:"ch-brand"},O4={class:"ch-backend-ep"},D4={class:"btn-wrap"},z4={class:"search-input"},F4={key:0,class:"empty"},q4={class:"side-section-label"},W4={class:"side-section-title"},N4={class:"side-section-actions"},H4=["onDragover","onDrop"],U4={class:"side-footer"},V4={class:"section-menu-check"},j4={class:"section-menu-check"},K4={class:"section-menu-check"},G4={class:"backend-menu-name"},Q4={class:"backend-menu-url"},Y4=1e3,Z4=Ie({__name:"Sidebar",props:{activeWorkspace:{default:null},activeWorkspaceId:{default:null},sessions:{},groups:{},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}=Fe(),s=!1,o=T(null),i=$(()=>""),c=["default","multi"];function p(he){const ge=o.value?.presets[he]??"";return ge?rd(ge):""}function v(he){const ge=o.value;return ge!==null&&ge.current===ge.presets[he]}const g=e,C=t,x=T(!1),h=k()?["⌘","K"]:["Ctrl","K"];function m(){C("loadAllSessions"),x.value=!0}function w(he){(he.metaKey||he.ctrlKey)&&he.key.toLowerCase()==="k"&&(he.preventDefault(),m())}lt(()=>window.addEventListener("keydown",w)),vn(()=>window.removeEventListener("keydown",w));function k(){if(typeof navigator>"u")return!1;if(/Mac|iPod|iPhone|iPad/.test(navigator.platform))return!0;const he=navigator.userAgentData;return he?.platform==="macOS"||he?.platform==="iOS"}const b=T(!1);function _(he){b.value=he.target.scrollTop>0}const O=T(new Set(Qu()));function y(he){return O.value.has(he)}function L(he){const ge=new Set(O.value);ge.has(he)?ge.delete(he):ge.add(he),O.value=ge,Ei(ge)}function N(){const he=new Set(g.groups.map(ge=>ge.workspace.id));O.value=he,Ei(he)}function H(){const he=new Set;O.value=he,Ei(he)}const U=$(()=>g.groups.length>0&&g.groups.every(he=>O.value.has(he.workspace.id))),Q=T(new Set);function P(he){return Q.value.has(he)}function M(he){const ge=new Set(Q.value);ge.has(he)?ge.delete(he):ge.add(he),Q.value=ge}function A(he){if(!Q.value.has(he)){const ge=new Set(Q.value);ge.add(he),Q.value=ge}C("loadMoreSessions",he)}const R=T(null),ne=T(null);function se(he){R.value=he}function ke(){R.value=null,ne.value=null}function pe(he){const ge=he.currentTarget.getBoundingClientRect();return he.clientYot.workspace.id),ge,he,qe);C("reorderWorkspaces",Qe)}function le(he,ge){ge.target.closest(".gh-more, .gh-add")||L(he)}function me(he){C("select",he)}const _e=T(null),ce=T(""),K=T(null);function Y(){return K}function Se(he,ge){_e.value=he,ce.value=ge,Ne().then(()=>K.value?.focus())}function oe(){const he=_e.value,ge=ce.value.trim();he&&ge&&C("renameWorkspace",he,ge),_e.value=null}function X(){_e.value=null}function ie(he){ce.value=he}const Ce=T(!1),D=T(null),J=T({}),q=T(null);function fe(he){q.value?.el&&!q.value.el.contains(he.target)&&Ue()}function xe(he,ge){ge.preventDefault(),ge.stopPropagation(),D.value=he,J.value={top:`${ge.clientY}px`,left:`${ge.clientX}px`},Ce.value=!0,document.addEventListener("mousedown",fe,!0)}function Ue(){Ce.value=!1,document.removeEventListener("mousedown",fe,!0),D.value=null}function Ke(){D.value&&Yt(D.value.root),Ue()}function cn(){D.value&&Se(D.value.id,D.value.name),Ue()}function un(){const he=D.value;he&&(Ue(),C("deleteWorkspace",he.id))}const Ye=T(null),Dt=T(null),yn=T({}),dn=T(null);function kn(he){const ge=he.target;ge.closest(".gh-more")||ge.closest(".ws-menu")||Rt()}async function Tn(he,ge){if(Ye.value===he.id){Rt();return}const qe=ge.currentTarget;Dt.value=he,Ye.value=he.id,document.addEventListener("mousedown",kn),window.addEventListener("resize",Rt),await Ne();const Qe=dn.value?.el,ot=qe.getBoundingClientRect(),vt=4,pt=8,_t=Qe?.offsetHeight??0,Nt=Qe?.offsetWidth??0;let Pt=ot.bottom+vt;Pt+_t>window.innerHeight-pt&&(Pt=Math.max(pt,ot.top-_t-vt));let on=ot.right-Nt;onwindow.innerHeight-vt&&(Nt=Math.max(vt,Qe.top-pt-ot));let Pt=Qe.right-_t;Ptwindow.innerHeight-vt&&(_t=Math.max(vt,Qe.top-pt-ot)),$t.value={top:`${Math.round(_t)}px`,left:`${Math.round(Math.max(vt,Qe.left))}px`}}function Bt(){en.value=!1,document.removeEventListener("mousedown",Ft),window.removeEventListener("resize",Bt)}async function Wn(he){if(v(he)){Bt();return}if(await ld(he)===null){console.warn("[kimi-web] dev backend switch failed:",he),Bt();return}window.location.reload()}vn(()=>{document.removeEventListener("mousedown",fe,!0),document.removeEventListener("mousedown",kn),document.removeEventListener("mousedown",Vt),document.removeEventListener("mousedown",Ft),window.removeEventListener("resize",Rt),window.removeEventListener("resize",zt),window.removeEventListener("resize",Bt)});const pn=T(null);let jt;function Nn(){const he=pn.value;he&&(he.classList.remove("blink-now"),he.getBoundingClientRect(),he.classList.add("blink-now"),clearTimeout(jt),jt=setTimeout(()=>he.classList.remove("blink-now"),300))}const Kt=Dr(()=>qr(()=>import("./DesignSystemView-DrmUw5ZA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),qt=T(!1);let Mt,It=!1;function Wt(he){It=!1,clearTimeout(Mt),he.currentTarget.setPointerCapture?.(he.pointerId),Mt=setTimeout(()=>{It=!0,qt.value=!0},Y4)}function Ze(he){clearTimeout(Mt);const ge=he.currentTarget;ge.hasPointerCapture?.(he.pointerId)&&ge.releasePointerCapture(he.pointerId)}function yt(){if(It){It=!1;return}Nn()}return vn(()=>{clearTimeout(Mt)}),(he,ge)=>(a(),u("aside",{class:de(["side",{"macos-desktop":r(uo),collapsed:e.collapsed,"no-anim":e.dragging}]),style:ct({width:e.collapsed?"0px":e.colWidth+"px"})},[l("div",{class:"col",style:ct({width:e.colWidth+"px"})},[l("div",E4,[l("div",R4,[r(uo)?B("",!0):(a(),u(ye,{key:0},[(a(),u("svg",{ref_key:"logoRef",ref:pn,class:de(["ch-logo",{"is-dev":r(s)}]),viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code",onClick:yt,onPointerdown:Wt,onPointerup:Ze,onPointercancel:Ze},[...ge[22]||(ge[22]=[La(' ',2)])],34)),ge[23]||(ge[23]=l("span",{class:"ch-name"},"Kimi Code",-1)),r(s)?(a(),Z($o,{key:0,class:"ch-backend",clickable:o.value!==null,title:r(n)("sidebar.backendTitle",{backend:e.backend,endpoint:i.value}),onClick:wn},{default:j(()=>[l("span",{class:de(["ch-backend-kind",`is-${e.backend}`])},d(e.backend),3),l("span",O4," · "+d(i.value),1),o.value!==null?(a(),Z(ae,{key:0,name:"chevron-down",size:"sm"})):B("",!0)]),_:1},8,["clickable","title"])):B("",!0)],64))]),r(uo)?B("",!0):(a(),Z(et,{key:0,class:"ch-collapse",size:"sm",label:r(n)("sidebar.collapseSidebar"),onClick:ge[0]||(ge[0]=Pe(qe=>C("collapse"),["stop"]))},{default:j(()=>[I(ae,{name:"panel-collapse"})]),_:1},8,["label"]))]),l("div",D4,[l("button",{class:"btn-new-chat",type:"button",onClick:ge[1]||(ge[1]=Pe(qe=>C("create"),["stop"]))},[I(ae,{name:"chat-new"}),l("span",null,d(r(n)("sidebar.newChat")),1)]),B("",!0)]),l("div",{class:de(["search-wrap",{"search-wrap--scrolled":b.value}])},[l("button",{class:"search",type:"button",onClick:m},[I(ae,{class:"search-icon",name:"search"}),l("span",z4,d(r(n)("sidebar.search")),1),I(is,{keys:r(h)},null,8,["keys"])])],2),l("div",{class:"sessions",onScroll:_},[e.groups.length===0?(a(),u("div",F4,d(r(n)("workspace.noWorkspace")),1)):(a(),u(ye,{key:1},[l("div",q4,[l("span",W4,d(r(n)("sidebar.workspaces")),1),l("div",N4,[I(et,{class:"side-section-toggle",size:"sm",label:U.value?r(n)("sidebar.expandAll"):r(n)("sidebar.collapseAll"),onClick:ge[3]||(ge[3]=Pe(qe=>U.value?H():N(),["stop"]))},{default:j(()=>[U.value?(a(),Z(ae,{key:0,name:"expand"})):(a(),Z(ae,{key:1,name:"collapse"}))]),_:1},8,["label"]),I(et,{class:"side-section-toggle side-section-kebab",size:"sm",label:r(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":dt.value,onClick:ge[4]||(ge[4]=Pe(qe=>St(qe),["stop"]))},{default:j(()=>[I(ae,{name:"dots-horizontal"})]),_:1},8,["label","aria-expanded"])])]),(a(!0),u(ye,null,Be(e.groups,qe=>(a(),u("div",{key:qe.workspace.id,class:de(["ws-drop-target",{"drop-before":ne.value?.id===qe.workspace.id&&ne.value.position==="before","drop-after":ne.value?.id===qe.workspace.id&&ne.value.position==="after"}]),onDragover:Qe=>V(Qe,qe.workspace.id),onDrop:Qe=>ee(qe.workspace.id)},[I(k4,{group:qe,"active-workspace-id":e.activeWorkspaceId,"active-id":e.activeId,"renaming-id":_e.value,"rename-value":ce.value,"rename-input-ref":Y(),"pending-by-session":e.pendingBySession,"unread-by-session":e.unreadBySession,"ws-menu-open-id":Ye.value,dragging:R.value===qe.workspace.id,"is-collapsed":y,"is-expanded":P,onGroupClick:le,onGroupContextmenu:xe,onToggleWsMenu:Tn,onCreateInWorkspace:ge[5]||(ge[5]=Qe=>C("createInWorkspace",Qe)),onSelectSession:me,onRenameSession:ge[6]||(ge[6]=(Qe,ot)=>C("rename",Qe,ot)),onArchiveSession:ge[7]||(ge[7]=Qe=>C("archive",Qe)),onForkSession:ge[8]||(ge[8]=Qe=>C("fork",Qe)),onExportSession:ge[9]||(ge[9]=Qe=>C("export",Qe)),onLoadMore:A,onToggleExpand:M,onConfirmRename:oe,onCancelRename:X,onUpdateRenameValue:ie,onWsDragstart:se,onWsDragend:ke},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,H4))),128))],64))],32),l("div",U4,[l("button",{class:"btn-settings",type:"button",onClick:ge[10]||(ge[10]=Pe(qe=>C("openSettings"),["stop"]))},[I(ae,{name:"settings"}),l("span",null,d(r(n)("settings.title")),1)]),I(L4,{class:"side-mascot",label:r(n)("sidebar.mascot")},null,8,["label"])])],4),Ce.value?(a(),Z(_s,{key:0,ref_key:"ghMenuRef",ref:q,class:"gh-menu",style:ct(J.value),onClick:ge[11]||(ge[11]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{onClick:Ke},{default:j(()=>[ve(d(r(n)("sidebar.copyPath")),1)]),_:1}),I(st,{onClick:cn},{default:j(()=>[ve(d(r(n)("sidebar.rename")),1)]),_:1}),I(st,{danger:"",onClick:un},{default:j(()=>[ve(d(r(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):B("",!0),Ye.value!==null&&Dt.value?(a(),Z(_s,{key:1,ref_key:"wsMenuRef",ref:dn,class:"ws-menu",style:ct(yn.value),onClick:ge[15]||(ge[15]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{onClick:ge[12]||(ge[12]=qe=>Ht(Dt.value))},{default:j(()=>[ve(d(r(n)("sidebar.copyPath")),1)]),_:1}),I(st,{separator:""}),I(st,{onClick:ge[13]||(ge[13]=qe=>Ut(Dt.value))},{default:j(()=>[ve(d(r(n)("sidebar.rename")),1)]),_:1}),I(st,{separator:""}),I(st,{danger:"",onClick:ge[14]||(ge[14]=qe=>tt(Dt.value))},{default:j(()=>[ve(d(r(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):B("",!0),dt.value?(a(),Z(_s,{key:2,ref_key:"sectionMenuRef",ref:wt,class:"section-menu",style:ct(Ot.value),onClick:ge[18]||(ge[18]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{onClick:ge[16]||(ge[16]=qe=>gt("manual"))},{default:j(()=>[l("span",V4,[e.workspaceSortMode==="manual"?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),ve(" "+d(r(n)("sidebar.sortManual")),1)]),_:1}),I(st,{onClick:ge[17]||(ge[17]=qe=>gt("recent"))},{default:j(()=>[l("span",j4,[e.workspaceSortMode==="recent"?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),ve(" "+d(r(n)("sidebar.sortRecent")),1)]),_:1})]),_:1},8,["style"])):B("",!0),en.value?(a(),Z(_s,{key:3,ref_key:"backendMenuRef",ref:bn,class:"backend-menu",style:ct($t.value),onClick:ge[19]||(ge[19]=Pe(()=>{},["stop"]))},{default:j(()=>[(a(),u(ye,null,Be(c,qe=>I(st,{key:qe,onClick:Qe=>Wn(qe)},{default:j(()=>[l("span",K4,[v(qe)?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",G4,d(qe),1),l("span",Q4,d(p(qe)),1)]),_:2},1032,["onClick"])),64))]),_:1},8,["style"])):B("",!0),x.value?(a(),Z(Qv,{key:4,sessions:e.sessions,"active-id":e.activeId,onSelect:me,onClose:ge[20]||(ge[20]=qe=>x.value=!1)},null,8,["sessions","active-id"])):B("",!0),(a(),Z(po,{to:"body"},[qt.value?(a(),Z(r(Kt),{key:0,onClose:ge[21]||(ge[21]=qe=>qt.value=!1)})):B("",!0)]))],6))}}),X4=Te(Z4,[["__scopeId","data-v-2af87a0e"]]);function J4(e){try{const t=xt(e);if(t===null)return null;const n=Number(t);return Number.isFinite(n)?n:null}catch{return null}}function eS(e,t){try{Lt(e,String(t))}catch{}}function tS(e){const{storageKey:t,defaultWidth:n,min:s,max:o,reverse:i=!1}=e;function c(_){return Number.isFinite(_)?Math.min(wo(o),Math.max(s,Math.round(_))):n}const p=T(c(J4(t)??n)),v=T(!1);function g(_){const O=c(_);p.value=O,eS(t,O)}let C=0,x=0,h=null,m=-1;function w(_){if(!v.value)return;const O=_.clientX-C;g(x+(i?-O:O))}function k(){if(v.value){if(v.value=!1,typeof document<"u"&&(document.body.style.userSelect="",document.body.style.cursor=""),h){try{h.releasePointerCapture(m)}catch{}h.removeEventListener("pointermove",w),h.removeEventListener("pointerup",k),h.removeEventListener("pointercancel",k)}h=null,m=-1}}function b(_){_.preventDefault(),v.value=!0,C=_.clientX,x=c(p.value),h=_.currentTarget,m=_.pointerId,typeof document<"u"&&(document.body.style.userSelect="none",document.body.style.cursor="col-resize");try{h.setPointerCapture(m)}catch{}h.addEventListener("pointermove",w),h.addEventListener("pointerup",k),h.addEventListener("pointercancel",k)}return vn(k),{width:p,dragging:v,clamp:c,setWidth:g,onPointerDown:b}}const nS=["aria-label"],sS=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}=Fe(),{width:i,dragging:c,onPointerDown:p}=tS({storageKey:n.storageKey,defaultWidth:n.defaultWidth,min:n.min,max:()=>n.max,reverse:n.reverse});return s("update:width",i.value),Ee(i,v=>s("update:width",v)),Ee(c,v=>s("update:dragging",v)),(v,g)=>(a(),u("div",{class:de(["rh",{dragging:r(c)}]),role:"separator","aria-orientation":"vertical","aria-label":e.ariaLabel??r(o)("layout.resizeHandleAria"),onPointerdown:g[0]||(g[0]=(...C)=>r(p)&&r(p)(...C))},[...g[1]||(g[1]=[l("span",{class:"rh-bar","aria-hidden":"true"},null,-1)])],42,nS))}}),cr=Te(sS,[["__scopeId","data-v-48fd0a6d"]]),oS=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(),u("span",{class:de(["kw-dot",`kw-dot--${s.value}`]),"aria-hidden":"true"},null,2))}}),vo=Te(oS,[["__scopeId","data-v-e36198e5"]]),iS=["innerHTML"],aS={class:"bh-text"},lS={class:"a"},rS={key:0,class:"p"},cS={class:"rt"},uS=["aria-label"],dS={key:0,class:"tm"},pS=["inert"],fS={class:"bb-pad"},mS=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=js("pinScroll",()=>{}),o=T(null);function i(){n("toggle");const c=o.value;c&&Ne(()=>s(c))}return(c,p)=>(a(),u("div",{class:de(["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"}])},[l("div",{class:"bh",ref_key:"bhEl",ref:o,onClick:i},[e.icon?(a(),u("span",{key:0,class:"gl",innerHTML:e.icon,"aria-hidden":"true"},null,8,iS)):B("",!0),l("span",aS,[l("span",lS,d(e.name),1),I(Je,{text:e.arg},{default:j(()=>[e.arg?(a(),u("span",rS,d(e.arg),1)):B("",!0)]),_:1},8,["text"])]),l("span",cS,[l("span",{class:de(["status",e.status]),role:"status","aria-label":e.status},[e.status==="ok"?(a(),Z(ae,{key:0,name:"check",size:"sm"})):e.status==="error"?(a(),Z(ae,{key:1,name:"close",size:"sm"})):e.status==="suspended"?(a(),Z(vo,{key:2,status:"suspended"})):(a(),Z(vo,{key:3,status:"running"}))],10,uS),bt(c.$slots,"trailing"),e.time?(a(),u("span",dS,d(e.time),1)):B("",!0)]),e.expandable?(a(),Z(ae,{key:1,class:"car",name:e.open?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])):B("",!0)],512),l("div",{class:de(["bb",{open:e.open}]),inert:!e.open},[l("div",fS,[bt(c.$slots,"default")])],10,pS)],2))}}),qo=Te(mS,[["__scopeId","data-v-fef8aad2"]]),vS={key:0,class:"at-type"},hS={key:1,class:"at-task"},gS={key:2,class:"bb-code"},yS=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}=Fe(),s=e,o=t;function i(_){if(!_)return{};try{const O=JSON.parse(_);return{description:typeof O.description=="string"?O.description:void 0,subagentType:typeof O.subagent_type=="string"?O.subagent_type:void 0,prompt:typeof O.prompt=="string"?O.prompt:void 0}}catch{return{}}}const c=$(()=>i(s.tool.arg)),p=$(()=>!!s.tool.output&&s.tool.output.length>0),v=$(()=>!!c.value.prompt||!!c.value.subagentType||p.value),g=T(s.tool.defaultExpanded===!0&&v.value),C=$(()=>s.tool.status),x=$(()=>Ms(s.tool.name)),h=$(()=>Po(s.tool.name)),m=$(()=>c.value.description||c.value.subagentType||""),w=js("resolveAgentTaskId"),k=$(()=>w?w(s.tool.id)!==void 0:!0);function b(){v.value&&(g.value=!g.value)}return Ee(()=>[s.tool.defaultExpanded,s.tool.output?.length,s.tool.status],()=>{s.tool.defaultExpanded===!0&&v.value&&(g.value=!0)}),(_,O)=>(a(),Z(qo,{status:C.value,icon:h.value,name:x.value,arg:g.value?"":m.value,time:e.tool.timing,open:g.value,expandable:v.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:b},{trailing:j(()=>[k.value?(a(),u("button",{key:0,type:"button",class:"at-open",onClick:O[0]||(O[0]=Pe(y=>o("openAgent",e.tool.id),["stop"]))},d(r(n)("tasks.openDetail")),1)):B("",!0)]),default:j(()=>[c.value.subagentType?(a(),u("div",vS,d(c.value.subagentType),1)):B("",!0),c.value.prompt?(a(),u("div",hS,d(c.value.prompt),1)):B("",!0),p.value?(a(),u("div",gS,[(a(!0),u(ye,null,Be(e.tool.output??[],(y,L)=>(a(),u("div",{key:L},d(y),1))),128))])):B("",!0)]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),kS=Te(yS,[["__scopeId","data-v-14ef8750"]]);function bS(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,c=Array.isArray(i.options)?i.options.map(p=>{const v=p&&typeof p=="object"?p:{};return{label:typeof v.label=="string"?v.label:"",description:typeof v.description=="string"?v.description:""}}):[];s.push({question:typeof i.question=="string"?i.question:"",header:typeof i.header=="string"?i.header:"",options:c,multiSelect:i.multi_select===!0})}return s}catch{return[]}}const ni={recognized:!1,answers:{},note:""};function wS(e){const t=e?.[0];if(!t)return ni;let n;try{n=JSON.parse(t)}catch{return ni}if(!n||typeof n!="object"||Array.isArray(n))return ni;const s=n.answers;if(!s||typeof s!="object"||Array.isArray(s))return ni;const o={};for(const[i,c]of Object.entries(s))typeof c=="string"?o[i]=c:c===!0&&(o[i]=!0);return{recognized:!0,answers:o,note:typeof n.note=="string"?n.note:""}}function SS(e,t,n){return e[t]??e[`q_${n}`]}const CS=/^opt_\d+_(\d+)$/;function _S(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((c,p)=>{c.label.length>0&&!n.has(c.label)&&n.set(c.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 c of e.split(",")){const p=c.trim(),v=n.get(p);if(v!==void 0){o.add(v);continue}const g=CS.exec(p);g?o.add(Number(g[1])):p.length>0&&i.push(p)}return{selected:o,otherText:i.join(", "),indeterminate:!1}}const xS={key:0,class:"chip"},$S={key:0,class:"au-dismissed"},MS={key:1,class:"au-list"},IS={class:"au-q"},TS={key:0,class:"au-hdr"},AS={class:"au-qtext"},LS={class:"au-opts"},BS={class:"au-glyph"},PS={class:"au-label"},ES={key:0,class:"au-desc"},RS={key:0,class:"au-opt sel"},OS={class:"au-glyph"},DS={class:"au-label"},zS={key:1,class:"au-opt sel"},FS={class:"au-label"},qS={key:2,class:"au-raw"},WS=80,NS=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}=Fe();function s(U,Q=WS){const P=U.trim();return P.length>Q?P.slice(0,Q-1)+"…":P}const o=$(()=>bS(t.tool.arg)),i=$(()=>wS(t.tool.output)),c=$(()=>i.value.recognized),p=$(()=>c.value&&Object.keys(i.value.answers).length===0&&i.value.note.length>0),v=$(()=>o.value.map((U,Q)=>_S(SS(i.value.answers,U.question,Q),U.options))),g=$(()=>Object.keys(i.value.answers).length);function C(U,Q){return v.value[U]?.selected.has(Q)??!1}function x(U){return v.value[U]?.otherText??""}function h(U){return v.value[U]?.indeterminate??!1}function m(U,Q){return U?Q?"■":"□":Q?"●":"○"}const w=$(()=>{if(!c.value)return s(t.tool.output?.[0]??"");if(p.value)return n("tools.ask.dismissed");const U=o.value[0]?.question??"",Q=s(U);return o.value.length<=1?Q:`${Q} ${n("tools.ask.more",{count:o.value.length-1})}`}),k=$(()=>c.value?p.value?n("tools.ask.dismissed"):g.value===0?"":g.value===1?n("tools.ask.answer",{count:1}):n("tools.ask.answers",{count:g.value}):""),b=$(()=>!!t.tool.output&&t.tool.output.length>0),_=$(()=>c.value&&(o.value.length>0||p.value)||b.value),O=T(t.tool.defaultExpanded===!0&&_.value),y=$(()=>t.tool.status),L=$(()=>Ms(t.tool.name)),N=$(()=>Po(t.tool.name));function H(){_.value&&(O.value=!O.value)}return Ee(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status],()=>{t.tool.defaultExpanded===!0&&_.value&&(O.value=!0)}),(U,Q)=>(a(),Z(qo,{status:y.value,icon:N.value,name:L.value,arg:O.value?"":w.value,time:e.tool.timing,open:O.value,expandable:_.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:H},{trailing:j(()=>[k.value?(a(),u("span",xS,d(k.value),1)):B("",!0)]),default:j(()=>[p.value?(a(),u("div",$S,d(i.value.note),1)):c.value?(a(),u("div",MS,[(a(!0),u(ye,null,Be(o.value,(P,M)=>(a(),u("div",{key:M,class:"au-block"},[l("div",IS,[P.header?(a(),u("span",TS,d(P.header),1)):B("",!0),l("span",AS,d(P.question),1)]),l("div",LS,[(a(!0),u(ye,null,Be(P.options,(A,R)=>(a(),u("div",{key:R,class:de(["au-opt",{sel:C(M,R)}])},[l("span",BS,d(m(P.multiSelect,C(M,R))),1),l("span",PS,d(A.label),1),A.description?(a(),u("span",ES,d(A.description),1)):B("",!0)],2))),128)),x(M)?(a(),u("div",RS,[l("span",OS,d(m(P.multiSelect,!0)),1),l("span",DS,d(x(M)),1)])):B("",!0),h(M)?(a(),u("div",zS,[Q[0]||(Q[0]=l("span",{class:"au-glyph"},"●",-1)),l("span",FS,d(r(n)("tools.ask.answered")),1)])):B("",!0)])]))),128))])):(a(),u("div",qS,[(a(!0),u(ye,null,Be(e.tool.output??[],(P,M)=>(a(),u("div",{key:M},d(P),1))),128))]))]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),HS=Te(NS,[["__scopeId","data-v-a9a0f259"]]),US=1e6,ur=5e3;function dr(e){if(e==="")return[];const t=e.split(`
-`);return t.at(-1)===""&&t.pop(),t}function VS(e,t){const n=dr(e),s=dr(t),o=n.length,i=s.length;if(o===0&&i===0)return[];if(o>ur||i>ur||(o+1)*(i+1)>US)return null;const c=Array.from({length:o+1},()=>Array.from({length:i+1},()=>0));for(let m=1;m<=o;m++)for(let w=1;w<=i;w++)c[m][w]=n[m-1]===s[w-1]?c[m-1][w-1]+1:Math.max(c[m-1][w],c[m][w-1]);const p=[];let v=o,g=i;for(;v>0||g>0;)v>0&&g>0&&n[v-1]===s[g-1]?(p.push({type:"context",text:n[v-1]}),v--,g--):g>0&&(v===0||c[v][g-1]>=c[v-1][g])?(p.push({type:"add",text:s[g-1]}),g--):(p.push({type:"del",text:n[v-1]}),v--);p.reverse();const C=[];let x=1,h=1;for(const m of p)m.type==="context"?(C.push({type:"context",text:m.text,oldNo:x,newNo:h}),x++,h++):m.type==="add"?(C.push({type:"add",text:m.text,newNo:h}),h++):(C.push({type:"del",text:m.text,oldNo:x}),x++);return C}function jS(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 ou(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 iu(e){const t=Gs(e.name);if(t!=="edit"&&t!=="write")return null;const n=ou(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:VS(s,o)}return null}function KS(e){const t=ou(e);return t&&typeof t.path=="string"?t.path:void 0}function GS(e,t){for(const n of e){const s=n.tools?.find(o=>o.id===t);if(s)return s}}const QS={key:0,class:"bb-empty"},pr=50,YS=Ie({__name:"ToolOutputBlock",props:{lines:{},emptyText:{}},setup(e){const t=e,n=$(()=>t.lines??[]),s=$(()=>n.value.length>pr),o={"--tool-output-visible-lines":String(pr)};return(i,c)=>(a(),u("div",{class:de(["bb-code tool-output-block",{scroll:s.value}]),style:o},[n.value.length===0&&e.emptyText?(a(),u("div",QS,d(e.emptyText),1)):B("",!0),(a(!0),u(ye,null,Be(n.value,(p,v)=>(a(),u("div",{key:v},d(p),1))),128))],2))}}),rl=Te(YS,[["__scopeId","data-v-262bbea0"]]),ZS={key:0,class:"chip"},XS={key:0,class:"bb-summary"},JS=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=$(()=>Ms(n.tool.name)),c=$(()=>Po(n.tool.name)),p=$(()=>Ns(n.tool.name,n.tool.arg)),v=$(()=>Ns(n.tool.name,n.tool.arg,!0)),g=$(()=>iu(n.tool)),C=$(()=>{const k=g.value;if(k&&n.tool.status!=="error"){const{added:b,removed:_}=jS(k);if(b||_)return`+${b} −${_}`}return""}),x=$(()=>!!n.tool.output&&n.tool.output.length>0),h=T(!1),m=$(()=>x.value&&!n.toolDiffPanel);function w(){if(n.toolDiffPanel){s("openToolDiff",n.tool.id);return}x.value&&(h.value=!h.value)}return(k,b)=>(a(),Z(qo,{status:o.value,icon:c.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:w},{trailing:j(()=>[C.value?(a(),u("span",ZS,d(C.value),1)):B("",!0)]),default:j(()=>[v.value?(a(),u("div",XS,d(v.value),1)):B("",!0),I(rl,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),e3=Te(JS,[["__scopeId","data-v-74e1da99"]]),t3={key:0,class:"chip"},n3={key:0,class:"bb-summary"},s3=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=T(t.tool.defaultExpanded===!0&&o.value),c=$(()=>t.tool.status),p=$(()=>Ms(t.tool.name)),v=$(()=>Po(t.tool.name)),g=$(()=>Ns(t.tool.name,t.tool.arg)),C=$(()=>Ns(t.tool.name,t.tool.arg,!0)),x=$(()=>tc({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 Ee(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status,t.tool.name],()=>{t.tool.defaultExpanded===!0&&o.value&&(i.value=!0)}),(m,w)=>(a(),Z(qo,{status:c.value,icon:v.value,name:p.value,arg:i.value?"":g.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:j(()=>[x.value?(a(),u("span",t3,d(x.value),1)):B("",!0)]),default:j(()=>[C.value?(a(),u("div",n3,d(C.value),1)):B("",!0),I(rl,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),o3=Te(s3,[["__scopeId","data-v-aa4edcb0"]]),i3={class:"media-title"},a3=["src","alt"],l3=["src"],r3=["src"],c3=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(g){return g.split(/[\\/]+/).pop()||g}function c(g){return g<1024?`${g} B`:g<1024*1024?`${(g/1024).toFixed(1)} KB`:`${(g/1024/1024).toFixed(1)} MB`}const p=$(()=>{const g=o.value;if(!g)return"";const C=[g.path?i(g.path):n.tool.name];return g.mimeType&&C.push(g.mimeType),g.bytes!==void 0&&C.push(c(g.bytes)),g.dimensions&&C.push(g.dimensions),C.join(" · ")});function v(){const g=o.value;g?.kind==="image"&&s("openMedia",g)}return(g,C)=>o.value?(a(),u("div",{key:0,class:de(["media-tool",{mob:e.mobile}])},[I(Je,{text:o.value.path||p.value},{default:j(()=>[l("div",i3,d(p.value),1)]),_:1},8,["text"]),o.value.kind==="image"?(a(),Z(Je,{key:0,text:o.value.path||p.value},{default:j(()=>[l("button",{type:"button",class:"media-image-button",onClick:v},[l("img",{class:"media-image",src:o.value.url,alt:o.value.path?i(o.value.path):p.value,loading:"lazy"},null,8,a3)])]),_:1},8,["text"])):o.value.kind==="video"?(a(),u("video",{key:1,class:"media-video",src:o.value.url,controls:"",preload:"metadata"},null,8,l3)):(a(),u("audio",{key:2,class:"media-audio",src:o.value.url,controls:""},null,8,r3))],2)):B("",!0)}}),u3=Te(c3,[["__scopeId","data-v-c05c114a"]]),d3="main",p3=1e4;function Wo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qs(e){return typeof e=="string"&&e.length>0}function f3(e){try{return AbortSignal.timeout(e)}catch{return}}function m3(e){return!Wo(e)||!qs(e.label)?null:{label:e.label,description:qs(e.description)?e.description:void 0}}function v3(e){if(!Wo(e))return;const t=e.state;if(t!=="pending"&&t!=="approved"&&t!=="rejected"&&t!=="cancelled")return;const n=qs(e.selected_option)?e.selected_option:void 0,s=qs(e.feedback)?e.feedback:void 0;return{state:t,selectedOption:n,feedback:s}}function h3(e){if(!Wo(e)||!qs(e.tool_call_id)||!qs(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(m3).filter(s=>s!==null):void 0;return{toolCallId:e.tool_call_id,plan:e.plan,path:qs(e.path)?e.path:void 0,options:n!==void 0&&n.length>0?n:void 0,source:t,review:v3(e.review)}}function g3(e){if(!Wo(e)||!Array.isArray(e.plans))return[];const t=[];for(const n of e.plans){const s=h3(n);s!==null&&t.push(s)}return t}function y3(e){return!Wo(e)||e.code!==0?[]:g3(e.data)}async function k3(e,t,n=fetch){const s=Hr().serverHttpUrl,o=`/sessions/${encodeURIComponent(e)}/transcript/plan`,i=new URLSearchParams({agent_id:d3,tool_call_id:t}),c=Eo();try{const p=await n(`${zs(s,o)}?${i.toString()}`,{headers:c!==void 0?{Authorization:`Bearer ${c}`}:void 0,signal:f3(p3)});if(!p.ok)return null;const v=await p.json(),g=y3(v);return g.find(C=>C.toolCallId===t)??g[0]??null}catch{return null}}const b3={key:0,class:"chip"},w3={key:0,class:"bb-summary"},S3={key:1,class:"plan-wrap"},C3=["title"],_3={class:"plan-body"},x3={key:1,class:"plan-review"},$3={key:0,class:"plan-state"},M3={key:1,class:"plan-option"},I3={key:2,class:"plan-feedback"},T3={key:2,class:"plan-loading"},A3={key:3,class:"plan-empty"},L3=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=Dr(()=>qr(()=>Promise.resolve().then(()=>XC),void 0)),s=e,o=t,{t:i}=Fe(),c=js("sessionId",()=>{}),p=$(()=>s.tool.status),v=$(()=>Ms(s.tool.name)),g=$(()=>Po(s.tool.name)),C=$(()=>tc({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=T(null),w=T("idle"),k=$(()=>m.value?.path?m.value.path:Ns(s.tool.name,s.tool.arg)),b=$(()=>m.value!==null?"":Ns(s.tool.name,s.tool.arg,!0)),_=T(!1),O=$(()=>m.value!==null||x.value||h.value);Ee(m,U=>{U!==null&&(_.value=!0)});function y(){O.value&&(_.value=!_.value)}function L(){const U=m.value?.path;U&&o("openFile",{path:U})}const N=$(()=>{const U=m.value?.review?.state;if(U===void 0)return null;switch(U){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 H(){if(w.value!=="idle")return;if(s.tool.status==="running"){w.value="settled";return}const U=c();if(!U){w.value="settled";return}w.value="loading",m.value=await k3(U,s.tool.id),w.value="settled"}return lt(()=>{H()}),(U,Q)=>(a(),Z(qo,{status:p.value,icon:g.value,name:v.value,arg:_.value?"":k.value,time:e.tool.timing,open:_.value,expandable:O.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:y},{trailing:j(()=>[C.value?(a(),u("span",b3,d(C.value),1)):B("",!0)]),default:j(()=>[b.value?(a(),u("div",w3,d(b.value),1)):B("",!0),m.value?(a(),u("div",S3,[m.value.path?(a(),u("button",{key:0,class:"plan-path",type:"button",title:m.value.path,onClick:L},d(m.value.path),9,C3)):B("",!0),l("div",_3,[I(r(n),{text:m.value.plan,"open-file":P=>o("openFile",P)},null,8,["text","open-file"])]),m.value.review?(a(),u("div",x3,[N.value?(a(),u("span",$3,d(N.value),1)):B("",!0),m.value.review.selectedOption?(a(),u("span",M3,d(m.value.review.selectedOption),1)):B("",!0),m.value.review.feedback?(a(),u("span",I3,"“"+d(m.value.review.feedback)+"”",1)):B("",!0)])):B("",!0)])):w.value==="loading"?(a(),u("div",T3,d(r(i)("tools.plan.loading")),1)):w.value==="settled"&&m.value===null&&!x.value?(a(),u("div",A3,d(r(i)("tools.plan.unavailable")),1)):(a(),Z(rl,{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"]))}}),B3=Te(L3,[["__scopeId","data-v-c851b016"]]),P3=/([\s\S]*?)<\/summary>/,E3=/([\s\S]*?)<\/resume_hint>/,Xi=/]*)>|<\/subagent>/g,R3=" ",fr=/(completed|failed|aborted):\s*(\d+)/g,mr=/([a-z_]+)="([^"]*)"/g;function O3(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function D3(e){const t={};mr.lastIndex=0;let n;for(;(n=mr.exec(e))!==null;)t[n[1]]=O3(n[2]);return t}function z3(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 F3(e,t){const n=D3(e);return{outcome:n.outcome??"completed",item:n.item,agentId:n.agent_id,mode:n.mode,state:n.state,body:t.trim()}}function q3(e){const t=[],n=[];Xi.lastIndex=0;let s;for(;(s=Xi.exec(e))!==null;)if(s[0]===R3){if(n.length===0)continue;const o=n.pop();o&&n.length===0&&t.push(F3(o.attrs,e.slice(o.bodyStart,s.index)))}else n.length===0?n.push({attrs:s[1]??"",bodyStart:Xi.lastIndex}):n.push(null);return t}function W3(e){if(e==null)return null;const t=Array.isArray(e)?e.join(`
-`):e;if(!t.includes(""))return null;const n=P3.exec(t)?.[1]?.trim()??"",{completed:s,failed:o,aborted:i}=z3(n),c=E3.exec(t)?.[1]?.trim(),p=q3(t),v=s+o+i;return{summary:n,completed:s,failed:o,aborted:i,total:v>0?v:p.length,subagents:p,resumeHint:c}}function vr(e){return e?e.split(`
-`).map(t=>t.trimEnd()).filter(Boolean).at(-1)??"":""}function N3(e){return e.suspendedReason||vr(e.text)||vr(e.outputLines?.join(`
-`))||e.summary||""}function H3(e){return e.suspendedReason?e.suspendedReason:e.text?e.text:e.outputLines&&e.outputLines.length>0?e.outputLines.join(`
-`):e.summary??""}function U3(e){return e==="completed"?"completed":e==="failed"||e==="aborted"?"failed":"working"}function hr(e,t){return{id:e.agentId??e.item??`result-${t}`,name:e.item??`subagent ${t+1}`,activity:e.body.split(`
-`)[0]??"",phase:U3(e.outcome),body:e.body}}function V3(e,t){return!!(t.agentId&&e.id===t.agentId||t.item&&e.name.includes(t.item))}function j3(e,t){const n=e.map(o=>({id:o.id,name:o.name,activity:N3(o),phase:o.phase,body:H3(o)}));if(!t)return n;const s=t.subagents.filter(o=>(o.outcome==="aborted"||o.state==="not_started")&&!e.some(i=>V3(i,o))).map((o,i)=>hr(o,i));return n.length>0?[...n,...s]:t.subagents.map((o,i)=>hr(o,i))}const K3=["aria-expanded"],G3={class:"title"},Q3={key:0,class:"meta"},Y3={key:1,class:"sum-txt"},Z3={class:"rt"},X3={class:"status"},J3={key:0,class:"chip"},eC={key:1,class:"tm"},tC={class:"body"},nC={class:"overview"},sC={class:"overview-line"},oC={class:"big"},iC={key:0,class:"lbl"},aC={key:1,class:"lbl"},lC={key:2,class:"lbl"},rC={key:0,class:"seg","aria-hidden":"true"},cC={key:1,class:"legend"},uC=["aria-expanded","onClick"],dC={class:"mname"},pC={class:"mact"},fC={class:"mphase"},mC={key:1,class:"fallback-output"},vC={key:2,class:"waiting"},hC=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}=Fe(),n=e;function s(M){if(!M)return{};try{const A=JSON.parse(M),R=Array.isArray(A.items)?A.items:void 0;return{description:typeof A.description=="string"?A.description:void 0,itemCount:R?.length}}catch{return{}}}const o=js("resolveSwarmMembers"),i=$(()=>s(n.tool.arg)),c=$(()=>Ms(n.tool.name)),p=$(()=>i.value.description??""),v=$(()=>o?.(n.tool.id)??[]),g=$(()=>W3(n.tool.output)),C=$(()=>n.tool.status),x=$(()=>C.value==="running"?"running":C.value==="error"||(g.value?.failed??0)>0||(g.value?.aborted??0)>0?"error":"ok"),h=$(()=>j3(v.value,g.value)),m=$(()=>{const M={completed:0,working:0,suspended:0,queued:0,failed:0};for(const A of h.value)M[A.phase]++;return M}),w=$(()=>h.value.length||i.value.itemCount||0),k=$(()=>m.value.completed+m.value.failed),b=$(()=>m.value.working+m.value.suspended+m.value.queued),_=[{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"}],O=$(()=>_.map(({phase:M,cls:A})=>({phase:M,count:m.value[M],cls:A})).filter(M=>M.count>0)),y=T(C.value==="running"||b.value>0);function L(){y.value=!y.value}const N=$(()=>h.value.length>0||g.value||C.value==="running"?"":(n.tool.output??[]).join(`
-`).trim()),H=T(new Set);function U(M){const A=new Set(H.value);A.has(M)?A.delete(M):A.add(M),H.value=A}function Q(M){return H.value.has(M)}function P(M){return t(`tools.swarm.phase${M[0].toUpperCase()}${M.slice(1)}`)}return(M,A)=>(a(),u("div",{class:de(["swarm-card",{open:y.value,err:x.value==="error",stacked:e.stackPosition!=="single"}])},[l("button",{class:"head",type:"button","aria-expanded":y.value,onClick:L},[I(ae,{class:"ic",name:"git-pull-request",size:"sm"}),l("span",G3,d(c.value),1),p.value?(a(),u("span",Q3,"·")):B("",!0),p.value?(a(),u("span",Y3,d(p.value),1)):B("",!0),l("span",Z3,[l("span",X3,[x.value==="ok"?(a(),Z(ae,{key:0,name:"check",size:"sm"})):x.value==="error"?(a(),Z(ae,{key:1,name:"close",size:"sm"})):(a(),Z(vo,{key:2,status:"running"}))]),k.value>0||w.value>0?(a(),u("span",J3,d(k.value)+" / "+d(w.value),1)):B("",!0),e.tool.timing?(a(),u("span",eC,d(e.tool.timing),1)):B("",!0)]),I(ae,{class:"car",name:y.value?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,K3),rt(l("div",tC,[l("div",nC,[l("div",sC,[l("span",oC,d(r(t)("tools.swarm.progress",{done:k.value,total:w.value})),1),x.value==="running"&&w.value>0?(a(),u("span",iC,d(r(t)("tools.swarm.runningSub",{count:b.value})),1)):g.value?(a(),u("span",aC,d(r(t)("tools.swarm.doneSub",{completed:g.value.completed,failed:g.value.failed+g.value.aborted})),1)):(a(),u("span",lC,d(r(t)("tools.swarm.waiting")),1))]),w.value>0&&O.value.length>0?(a(),u("div",rC,[(a(!0),u(ye,null,Be(O.value,R=>(a(),u("span",{key:R.phase,class:de(R.cls),style:ct({flex:R.count})},null,6))),128))])):B("",!0),O.value.length>1?(a(),u("div",cC,[(a(!0),u(ye,null,Be(O.value,R=>(a(),u("span",{key:R.phase},[l("i",{class:de(["lg-dot",R.cls])},null,2),ve(d(P(R.phase))+" "+d(R.count),1)]))),128))])):B("",!0)]),h.value.length>0?(a(!0),u(ye,{key:0},Be(h.value,R=>(a(),u("div",{key:R.id,class:de(["member",[`phase-${R.phase}`,{open:Q(R.id)}]])},[l("button",{class:"member-head",type:"button","aria-expanded":Q(R.id),onClick:ne=>U(R.id)},[I(vo,{class:"row-dot",status:R.phase},null,8,["status"]),I(Je,{text:R.name},{default:j(()=>[l("span",dC,d(R.name),1)]),_:2},1032,["text"]),R.activity?(a(),Z(Je,{key:0,text:R.activity},{default:j(()=>[l("span",pC,d(R.activity),1)]),_:2},1032,["text"])):B("",!0),l("span",fC,d(P(R.phase)),1),I(ae,{class:"mcar",name:Q(R.id)?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,uC),rt(l("div",{class:"member-body"},d(R.body),513),[[jn,Q(R.id)]])],2))),128)):N.value?(a(),u("div",mC,d(N.value),1)):(a(),u("div",vC,d(r(t)("tools.swarm.waiting")),1))],512),[[jn,y.value]])],2))}}),gC=Te(hC,[["__scopeId","data-v-4b58e128"]]);function yC(e){if(e.media&&e.status==="ok")return u3;const t=Gs(e.name);return t==="edit"||t==="write"||t==="multi_edit"?e3:t==="exitplanmode"?B3:t==="task"?kS:t==="agentswarm"?gC:t==="askuserquestion"?HS:o3}const au=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=$(()=>yC(n.tool));return(i,c)=>(a(),Z(Or(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:c[0]||(c[0]=p=>s("openMedia",p)),onOpenFile:c[1]||(c[1]=p=>s("openFile",p)),onOpenToolDiff:c[2]||(c[2]=p=>s("openToolDiff",p)),onOpenAgent:c[3]||(c[3]=p=>s("openAgent",p))},null,40,["tool","mobile","stack-position","tool-diff-panel","data-scroll-anchor-id"]))}});function Gn(e){if(e>=1024*1024)return`${gr(e/(1024*1024))}M`;if(e>=1024){const t=e/1024;return`${t>=100?Math.round(t):gr(t)}k`}return String(e)}function gr(e){const t=e.toFixed(1);return t.endsWith(".0")?t.slice(0,-2):t}function kC(e){if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;const t=Math.floor(e/6e4),n=(e%6e4/1e3).toFixed(1);return`${t}m${n}s`}function Li(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 bC(e){return!(e.tool.status==="ok"&&e.tool.media)}function wC(e,t){return t<=1?"single":e===0?"first":e===t-1?"last":"middle"}const yr=new WeakMap;function SC(e){const t=yr.get(e);if(t)return t;const n=CC(e);return yr.set(e,n),n}function CC(e){const t=Li(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,c)=>{if(i.kind==="tool"){if(bC(i)){s.push({tool:i.tool,sourceIndex:c});return}o(),n.push({kind:"tool",tool:i.tool,sourceIndex:c});return}o(),i.kind==="thinking"?n.push({kind:"thinking",thinking:i.thinking,sourceIndex:c}):i.kind==="text"?n.push({kind:"text",text:i.text,sourceIndex:c}):i.kind==="error"&&n.push({kind:"error",text:i.text,code:i.code,sourceIndex:c})}),o(),n}function _C(e){return Li(e).flatMap(t=>t.kind==="text"&&t.text?[t.text]:[]).join(`
-
-`)}function xC(e){const t=[];for(const n of Li(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 lu(e){return e.tool.id||`tool-${e.sourceIndex}`}function $C(e,t){return e.kind==="tool-stack"?`tool-stack-${e.tools[0]?.sourceIndex??t}`:e.kind==="tool"?lu({tool:e.tool,sourceIndex:e.sourceIndex}):`${e.kind}-${e.sourceIndex}`}const MC=["aria-expanded"],IC={class:"tg-title"},TC={class:"tg-meta"},AC=["inert"],LC={class:"tool-group-body-inner"},BC=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=T(!0),i=$(()=>n.tools.length),c=$(()=>n.tools.some(m=>m.tool.status==="running")?"running":n.tools.some(m=>m.tool.status==="error")?"error":"done"),{t:p}=Fe(),v=$(()=>{switch(c.value){case"running":return p("tools.group.running");case"error":return p("tools.group.error");default:return p("tools.group.done")}});function g(){o.value=!o.value}const C=js("pinScroll",()=>{}),x=T(null);function h(){g();const m=x.value;m&&Ne(()=>C(m))}return(m,w)=>(a(),u("div",{class:de(["tool-group",{open:o.value}])},[l("button",{class:"tool-group-head",ref_key:"headEl",ref:x,type:"button","aria-expanded":o.value,onClick:h},[I(vo,{status:c.value},null,8,["status"]),I(ae,{class:"tg-ic",name:"list",size:"sm"}),l("span",IC,d(r(p)("tools.group.title",i.value)),1),l("span",TC,"· "+d(v.value),1),I(ae,{class:"tg-car",name:"chevron-right",size:"sm"})],8,MC),l("div",{class:de(["tool-group-body",{open:o.value}]),inert:!o.value},[l("div",LC,[(a(!0),u(ye,null,Be(e.tools,(k,b)=>(a(),Z(au,{key:r(lu)(k),tool:k.tool,mobile:e.mobile,"stack-position":r(wC)(b,e.tools.length),"tool-diff-panel":e.toolDiffPanel,onOpenMedia:w[0]||(w[0]=_=>s("openMedia",_)),onOpenFile:w[1]||(w[1]=_=>s("openFile",_)),onOpenToolDiff:w[2]||(w[2]=_=>s("openToolDiff",_)),onOpenAgent:w[3]||(w[3]=_=>s("openAgent",_))},null,8,["tool","mobile","stack-position","tool-diff-panel"]))),128))])],10,AC)],2))}}),PC=Te(BC,[["__scopeId","data-v-37eb334f"]]),si=T(!1);let kr=!1;function Ji(){const e=document.documentElement.dataset.colorScheme;return e==="dark"?!0:e==="light"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}function ru(){return!kr&&typeof window<"u"&&typeof document<"u"&&(kr=!0,si.value=Ji(),new MutationObserver(()=>{si.value=Ji()}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{si.value=Ji()})),si}const cu=["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"],EC=new Set(["AGENTS.md","CHANGELOG.md","Dockerfile","LICENSE","Makefile","README.md","package.json","pnpm-lock.yaml","pnpm-workspace.yaml","tsconfig.json","vite.config.ts"]),$a=[...cu].sort((e,t)=>t.length-e.length).join("|"),ea=new RegExp([String.raw`(?:^|[\s([{"'`+"`"+String.raw`])`,String.raw`(`,String.raw`(?:~|\.{1,2}|/)?(?:[A-Za-z0-9_.@+()[\]-]+/)+[A-Za-z0-9_.@+()[\]-]+(?:\.(?:${$a}))?`,String.raw`|`,String.raw`[A-Za-z0-9_.@+()[\]-]+\.(?:${$a})`,String.raw`)`,String.raw`(?:#L?(\d+)|:(\d+))?`,String.raw`(?=$|[\s)"'\]}>.,;!?,。;!?)])`].join(""),"gi"),uu=/[),.;!?,。;!?)]+$/;function RC(e){const t=e.toLowerCase();return cu.some(n=>t.endsWith(`.${n}`))}function OC(e){const t=new Map,n=new RegExp(String.raw`\b(?:path|src)=["'](\/[^"']+\.(?:${$a}))["']`,"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 DC(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(uu,"");if(!o)return null;const i=o.split("/").pop()??o,c=o.includes("/"),p=EC.has(i),v=RC(i);if(c&&!p&&!v)return null;if(!c&&!p){const x=t.aliases?.get(i);if(!x)return null;o=x}const g=s[2]??s[3],C=g?Number(g):void 0;return{path:o,line:C!==void 0&&Number.isFinite(C)&&C>0?C:void 0}}function zC(e,t={}){const n=[];ea.lastIndex=0;let s;for(;(s=ea.exec(e))!==null;){const o=s[0]??"",i=s[1]??"",c=o.indexOf(i);if(c<0)continue;const p=s[2]??s[3];let v=i+(p?o.slice(c+i.length):"");const g=v.replace(uu,""),C=v.length-g.length;v=g;const x=DC(v,t);if(!x)continue;const h=s.index+c,m=h+v.length;n.push({...x,start:h,end:m,text:v}),C>0&&(ea.lastIndex-=C)}return n}const FC=12e4,qC=6e4,WC=32,NC=3e4,br=/(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)(?:\n)?\2(?=\n|$)/g;function HC(e){let t=0,n=0,s=0;br.lastIndex=0;let o;for(;(o=br.exec(e))!==null;){const c=o[3]??"";t+=1,n+=c.length,s=Math.max(s,c.length)}return{codeRenderer:e.length>=FC||n>=qC||t>=WC||s>=NC?"pre":"shiki",codeFenceCount:t,codeChars:n}}const UC={key:1,class:"diff-wrap"},VC={class:"diff-bar"},jC=["aria-label","onClick"],KC={class:"diff-pre"},GC={key:0,class:"diff-sign"},QC={class:"diff-text"},YC="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",wr="github-light",Sr="github-dark",ZC=Ie({__name:"Markdown",props:{text:{},openFile:{},streaming:{type:Boolean,default:!1}},setup(e){Vu(),ju(),zu(),Hu(),Fu(new qu),Wu(new Nu);function t(se){return se.inline.ruler.disable("math"),se}const{t:n}=Fe(),s=js("resolveImage"),o=T(null),i=e,c=$(()=>!i.streaming),p=$(()=>OC(i.text??"")),v=$(()=>i.streaming?{codeRenderer:"shiki",codeFenceCount:0,codeChars:0}:HC(i.text??"")),g=ru(),C=$(()=>!i.streaming),x=In(new Map),h=new Set,m=/(!\[[^\]]*\]\()\s*([^)\s]+)([^)]*\))/g,w=/( ]*?\bsrc=")([^"]+)(")/gi;function k(se){return!/^(https?:|data:|blob:)/i.test(se)}function b(se){if(!s)return;const ke=[];for(const pe of[m,w]){pe.lastIndex=0;let V;for(;(V=pe.exec(se))!==null;)ke.push(V[2]??"")}for(const pe of ke)!pe||!k(pe)||x.has(pe)||h.has(pe)||(h.add(pe),s(pe).then(V=>{x.set(pe,V!==pe?V:"")}).catch(()=>{x.set(pe,"")}).finally(()=>{h.delete(pe)}))}function _(se){if(!s)return se;const ke=pe=>{if(!k(pe))return null;const V=x.get(pe);return V===void 0?YC:V===""?null:V};return se.replace(m,(pe,V,ee,le)=>{const me=ke(ee);return me===null?pe:`${V}${me}${le}`}).replace(w,(pe,V,ee,le)=>{const me=ke(ee);return me===null?pe:`${V}${me}${le}`})}Ee(()=>i.text,se=>b(se??""),{immediate:!0});function O(){if(!o.value||!i.openFile||i.streaming)return;const se=document.createTreeWalker(o.value,NodeFilter.SHOW_TEXT),ke=[];let pe=se.nextNode();for(;pe;){const V=pe,ee=V.parentElement;ee&&!ee.closest("a, pre, .md-file-link, svg")&&V.data.trim().length>0&&ke.push(V),pe=se.nextNode()}for(const V of ke){const ee=zC(V.data,{aliases:p.value});if(ee.length===0||!V.parentNode)continue;const le=document.createDocumentFragment();let me=0;for(const _e of ee){_e.start>me&&le.append(document.createTextNode(V.data.slice(me,_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",K=>{K.preventDefault(),K.stopPropagation(),i.openFile?.({path:_e.path,line:_e.line})}),le.append(ce),me=_e.end}me{V.preventDefault(),V.stopPropagation(),i.openFile?.({path:L(pe)})}))}}function H(){Ne().then(()=>{O(),N()})}Ee(()=>i.text,H),Ee(()=>i.streaming,H);let U=null;lt(()=>{H(),o.value&&(U=new MutationObserver(H),U.observe(o.value,{childList:!0,subtree:!0}))}),ut(()=>{U?.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}}},P=/(^|\n)(?:```|~~~)diff\b[^\n]*\n([\s\S]*?)(?:\n)?(?:```|~~~)(?=\n|$)/g,M=$(()=>{const se=_(i.text??""),ke=[];let pe=0;P.lastIndex=0;let V;for(;(V=P.exec(se))!==null;){const le=V[1]??"",me=se.slice(pe,V.index)+(le||"");me.trim()&&ke.push({kind:"md",text:me}),ke.push({kind:"diff",code:V[2]??""}),pe=P.lastIndex}const ee=se.slice(pe);return(ee.trim()||ke.length===0)&&ke.push({kind:"md",text:ee}),ke});function A(se){return se.split(`
-`).map(ke=>ke.startsWith("@@")?{type:"hunk",sign:"",text:ke}:/^\+(?!\+\+)/.test(ke)?{type:"add",sign:"+",text:ke.slice(1)}:/^-(?!--)/.test(ke)?{type:"del",sign:"-",text:ke.slice(1)}:ke.startsWith(" ")?{type:"ctx",sign:"",text:ke.slice(1)}:{type:"ctx",sign:"",text:ke})}const R=T(null);function ne(se,ke){Yt(se).then(pe=>{pe&&(R.value=ke,setTimeout(()=>{R.value=null},1400))})}return(se,ke)=>(a(),u("div",{ref_key:"mdRef",ref:o,class:"md"},[(a(!0),u(ye,null,Be(M.value,(pe,V)=>(a(),u(ye,{key:V},[pe.kind==="md"?(a(),Z(r(Uu),{key:0,content:pe.text,"custom-markdown-it":t,mode:"chat","code-renderer":v.value.codeRenderer,"is-dark":r(g),"code-block-light-theme":wr,"code-block-dark-theme":Sr,themes:[wr,Sr],"code-block-props":Q,final:c.value,"smooth-streaming":e.streaming,"batch-rendering":C.value,"defer-nodes-until-visible":!1,onCopy:r(cd)},null,8,["content","code-renderer","is-dark","themes","final","smooth-streaming","batch-rendering","onCopy"])):(a(),u("div",UC,[l("div",VC,[ke[0]||(ke[0]=l("span",{class:"diff-lang"},"diff",-1)),I(Je,{text:r(n)("filePreview.copyCode")},{default:j(()=>[l("button",{class:"diff-copy","aria-label":r(n)("filePreview.copyCode"),onClick:ee=>ne(pe.code,V)},[I(ae,{name:R.value===V?"check":"copy",size:"sm"},null,8,["name"])],8,jC)]),_:2},1032,["text"])]),l("pre",KC,[l("code",null,[(a(!0),u(ye,null,Be(A(pe.code),(ee,le)=>(a(),u("span",{key:le,class:de(["diff-line",`diff-${ee.type}`])},[ee.type!=="hunk"?(a(),u("span",GC,d(ee.sign),1)):B("",!0),l("span",QC,d(ee.text),1)],2))),128))])])]))],64))),128))],512))}}),No=Te(ZC,[["__scopeId","data-v-9ccdd7fa"]]),XC=Object.freeze(Object.defineProperty({__proto__:null,default:No},Symbol.toStringTag,{value:"Module"})),JC={class:"tc-anim"},e5={class:"prev-anim"},t5={class:"prev"},n5=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(g=>g.trim().length>0)),i=$(()=>n.foldable&&o.value.length>1),c=$(()=>n.streaming||!i.value),p=$(()=>o.value.at(-1)??""),v=T(null);return lt(()=>{if(!n.streaming)return;const g=v.value;g&&(g.scrollTop=g.scrollHeight)}),Ee(()=>n.text,()=>{const g=v.value;!g||!(g.scrollHeight-g.scrollTop-g.clientHeight<24)||Ne(()=>{v.value&&(v.value.scrollTop=v.value.scrollHeight)})},{immediate:!0}),(g,C)=>(a(),u("div",{class:de(["think",{mob:e.mobile}])},[i.value?(a(),u("div",{key:0,class:de(["tc-wrap",{"is-collapsed":!c.value}]),onClick:C[0]||(C[0]=x=>s("open"))},[l("div",JC,[l("pre",{ref_key:"bodyEl",ref:v,class:"tc"},d(e.text),513)]),l("div",e5,[l("span",t5,d(p.value),1)])],2)):(a(),u("pre",{key:1,ref_key:"bodyEl",ref:v,class:"tc"},d(e.text),513))],2))}}),s5=Te(n5,[["__scopeId","data-v-0b3b873f"]]),o5={class:"activity-notice",role:"status"},i5={"aria-hidden":"true"},a5={class:"an-label"},l5=Ie({__name:"ActivityNotice",props:{label:{}},setup(e){return(t,n)=>(a(),u("div",o5,[l("span",i5,[I(Jt,{size:"sm"})]),l("span",a5,d(e.label),1)]))}}),r5=Te(l5,[["__scopeId","data-v-0d497074"]]);function c5(e,t="昨天"){try{const n=new Date(e);if(Number.isNaN(n.getTime()))return e;const s=new Date,o=C=>String(C).padStart(2,"0"),i=`${o(n.getHours())}:${o(n.getMinutes())}`,c=n.getFullYear()===s.getFullYear(),p=n.getMonth()===s.getMonth(),v=n.getDate()===s.getDate();if(c&&p&&v)return i;const g=new Date(s);return g.setDate(s.getDate()-1),n.getFullYear()===g.getFullYear()&&n.getMonth()===g.getMonth()&&n.getDate()===g.getDate()?`${t} ${i}`:c?`${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`:`${n.getFullYear()}-${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`}catch{return e}}const u5=Ie({__name:"MessageTime",props:{time:{}},setup(e){const t=e,{t:n}=Fe(),s=T(!1),o=$(()=>{const p=new Date(t.time);if(Number.isNaN(p.getTime()))return t.time;const v=g=>String(g).padStart(2,"0");return`${p.getFullYear()}-${v(p.getMonth()+1)}-${v(p.getDate())} ${v(p.getHours())}:${v(p.getMinutes())}`}),i=$(()=>s.value?o.value:c5(t.time,n("conversation.yesterday")));function c(){s.value=!s.value}return(p,v)=>(a(),u("button",{type:"button",class:"msg-time",onClick:Pe(c,["stop"])},d(i.value),1))}}),du=Te(u5,[["__scopeId","data-v-9672fbd5"]]);function d5(e){return e.length===1?`0${e}`:e}function p5(e,t){return`${String(Number(e))}:${d5(t)}`}const Cr=e=>/^\d+$/.test(e);function f5(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[s,o,i,c,p]=n,v=i==="*"&&c==="*"&&p==="*",g=i==="*"&&c==="*";if(s==="*"&&o==="*"&&v)return t("conversation.cron.everyMinute");const C=/^\*\/(\d+)$/.exec(s);if(C&&o==="*"&&v)return C[1]==="1"?t("conversation.cron.everyMinute"):t("conversation.cron.everyNMinutes",{n:C[1]});if(s==="0"&&o==="*"&&v)return t("conversation.cron.everyHour");const x=/^\*\/(\d+)$/.exec(o);if(s==="0"&&x&&v)return t("conversation.cron.everyNHours",{n:x[1]});if(Cr(s)&&Cr(o)&&g){const h=p5(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 m5=["data-turn-id"],v5={class:"cn-bubble"},h5={class:"cn-title"},g5={key:0,class:"cn-prompt"},y5={class:"cn-meta"},k5={key:0,class:"cn-meta-item"},b5={key:1,class:"cn-meta-item"},w5=["aria-label"],S5=["title"],C5=Ie({__name:"CronNotice",props:{text:{},cron:{},turnId:{},createdAt:{}},setup(e){const t=e,{t:n}=Fe(),s=$(()=>t.cron),o=$(()=>s.value?.missedCount!==void 0),i=$(()=>o.value?n("conversation.cron.missed"):n("conversation.cron.fired")),c=$(()=>{const C=s.value?.cron;return C?f5(C,n):""}),p=$(()=>o.value?"error":"ok"),v=$(()=>{const C=s.value;if(!C)return"";const x=[];return C.recurring===!1&&x.push(n("conversation.cron.oneShot")),typeof C.coalescedCount=="number"&&C.coalescedCount>1&&x.push(n("conversation.cron.coalesced",{n:C.coalescedCount})),C.missedCount!==void 0&&x.push(n("conversation.cron.missedCount",{n:C.missedCount})),C.stale===!0&&x.push(n("conversation.cron.finalDelivery")),x.join(" · ")}),g=$(()=>t.text??"");return(C,x)=>(a(),u("div",{class:de(["cn cron-notice",{"turn-anchor":!!e.turnId}]),"data-turn-id":e.turnId,role:"status"},[l("div",v5,[l("span",h5,d(i.value),1),g.value?(a(),u("span",g5,d(g.value),1)):B("",!0)]),l("div",y5,[I(ae,{name:"clock",size:"sm",class:"cn-meta-ico","aria-hidden":"true"}),c.value?(a(),u("span",k5,d(c.value),1)):B("",!0),v.value?(a(),u("span",b5,d(v.value),1)):B("",!0),l("span",{class:de(["cn-status",p.value]),"aria-label":p.value},[p.value==="ok"?(a(),Z(ae,{key:0,name:"check",size:"sm"})):(a(),Z(ae,{key:1,name:"close",size:"sm"}))],10,w5),s.value?.jobId?(a(),u("span",{key:2,class:"cn-meta-item cn-id",title:r(n)("conversation.cron.job",{id:s.value.jobId})},d(s.value.jobId),9,S5)):B("",!0),e.createdAt?(a(),Z(du,{key:3,time:e.createdAt},null,8,["time"])):B("",!0)])],10,m5))}}),_5=Te(C5,[["__scopeId","data-v-a62a6587"]]),x5=["src","controls","muted"],$5=["src","alt"],pu=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=T(t.fileId?"":t.url),s=T(null),o=T(!t.fileId);let i=null,c=0,p=!1,v=null;function g(){i!==null&&(URL.revokeObjectURL(i),i=null)}async function C(){const x=++c;if(g(),!t.fileId){n.value=t.url;return}if(o.value)try{const h=await Le().getFileBlob(t.fileId),m=URL.createObjectURL(h);if(p||x!==c){URL.revokeObjectURL(m);return}i=m,n.value=i}catch{if(p||x!==c)return;n.value=t.url}}return Ee(()=>[t.fileId,t.url,o.value],C,{immediate:!0}),lt(()=>{typeof IntersectionObserver=="function"&&s.value?(v=new IntersectionObserver(x=>{x[0]?.isIntersecting&&(o.value=!0,v?.disconnect(),v=null)},{rootMargin:"200px"}),v.observe(s.value)):o.value=!0}),vn(()=>{p=!0,v?.disconnect(),v=null,g()}),(x,h)=>e.kind==="video"?(a(),u("video",{key:0,ref_key:"mediaEl",ref:s,class:de(e.mediaClass),src:n.value||void 0,controls:e.controls,muted:e.muted,playsinline:"",preload:"metadata"},null,10,x5)):(a(),u("img",{key:1,ref_key:"mediaEl",ref:s,class:de(e.mediaClass),src:n.value||void 0,alt:e.alt||"",loading:"lazy"},null,10,$5))}}),M5=["title","data-kind"],I5=["aria-label"],T5={class:"att-tile"},A5={class:"att-name"},L5={key:1,class:"att-err"},B5=["aria-label"],P5=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}=Fe(),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}),c=$(()=>{const C=i.value??"";return/^(txt|md|doc|docx|rtf|log)$/i.test(C)?"file-text":"file"}),p=$(()=>n.name?n.name:n.kind==="image"?o("composer.attachmentImage"):n.kind==="video"?o("composer.attachmentVideo"):o("composer.attachmentFile"));function v(C){return C<1024?`${C} B`:C<1024*1024?`${Math.round(C/1024)} KB`:`${(C/(1024*1024)).toFixed(1)} MB`}const g=$(()=>{const C=[p.value];return n.size!==void 0&&C.push(v(n.size)),C.join(" · ")});return(C,x)=>(a(),u("span",{class:de(["att-chip",{"is-error":e.error,uploading:e.uploading}]),title:g.value,"data-kind":e.kind},[l("button",{type:"button",class:"att-activate","aria-label":g.value,onClick:x[0]||(x[0]=h=>s("activate"))},[l("span",T5,[e.kind==="image"&&e.url?(a(),Z(pu,{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(),Z(ae,{key:1,name:"play",size:"sm"})):e.kind==="image"?(a(),Z(ae,{key:2,name:"image",size:"sm"})):(a(),Z(ae,{key:3,name:c.value,size:"sm"},null,8,["name"]))]),l("span",A5,d(p.value),1),e.uploading?(a(),Z(Jt,{key:0,size:"sm",label:r(o)("composer.uploading")},null,8,["label"])):e.error?(a(),u("span",L5,[I(ae,{name:"info",size:"sm"})])):B("",!0)],8,I5),e.removable?(a(),Z(Je,{key:0,text:e.removeLabel??r(o)("composer.remove")},{default:j(()=>[l("button",{type:"button",class:"att-rm","aria-label":e.removeLabel??r(o)("composer.remove"),onClick:x[1]||(x[1]=h=>s("remove"))},[I(ae,{name:"close",size:"sm"})],8,B5)]),_:1},8,["text"])):B("",!0)],10,M5))}}),fu=Te(P5,[["__scopeId","data-v-12ec975b"]]),E5=["aria-label"],R5=120,O5=60,D5=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*R5}ms`,"--moon-frame-fast-delay":`${s*O5}ms`}}return(s,o)=>(a(),u("span",{class:de(["ui-moon",[`ui-moon--${e.size}`,{"ui-moon--fast":e.fast}]]),"aria-label":e.label,role:"img"},[(a(),u(ye,null,Be(t,(i,c)=>l("span",{key:i,class:"ui-moon__frame",style:ct(n(c)),"aria-hidden":"true"},d(i),5)),64))],10,E5))}}),mu=Te(D5,[["__scopeId","data-v-a6b7ec07"]]),z5={class:"ui-banner__icon","aria-hidden":"true"},F5={class:"ui-banner__text"},q5=Ie({__name:"Banner",props:{variant:{default:"info"}},setup(e){return(t,n)=>(a(),u("div",{class:de(["ui-banner",`ui-banner--${e.variant}`]),role:"status"},[l("span",z5,[bt(t.$slots,"icon",{},()=>[e.variant==="info"?(a(),Z(ae,{key:0,name:"info",size:"md"})):(a(),Z(ae,{key:1,name:"alert-triangle",size:"md"}))],!0)]),l("span",F5,[bt(t.$slots,"default",{},void 0,!0)])],2))}}),W5=Te(q5,[["__scopeId","data-v-b0afda1c"]]),ta="chat-search-hit",N5="chat-search-hit--active",_r={childList:!0,subtree:!0,characterData:!0};function H5(e){const{root:t,query:n,activeIndex:s}=e;let o=null,i=0;function c(g){const C=g.querySelectorAll(`.${ta}`);for(const x of C)x.replaceWith(...Array.from(x.childNodes))}function p(){i=0;const g=t.value,C=n.value.trim();if(g){if(o?.disconnect(),c(g),C.length>0){const x=C.toLowerCase(),h=s.value,m=document.createTreeWalker(g,NodeFilter.SHOW_TEXT),w=[];let k=m.nextNode();for(;k;)w.push(k),k=m.nextNode();let b=0;for(const _ of w){const O=_.data.toLowerCase();let y=O.indexOf(x);if(y===-1)continue;const L=_.parentNode;if(!L)continue;const N=document.createDocumentFragment();let H=0;for(;y!==-1;){y>H&&N.append(document.createTextNode(_.data.slice(H,y)));const U=document.createElement("span");U.className=b===h?`${ta} ${N5}`:ta,U.textContent=_.data.slice(y,y+C.length),N.append(U),b+=1,H=y+C.length,y=O.indexOf(x,H)}H<_.data.length&&N.append(document.createTextNode(_.data.slice(H))),L.replaceChild(N,_)}}o?.observe(g,_r)}}function v(){i===0&&(i=requestAnimationFrame(p))}Ee(t,()=>{o?.disconnect(),o=null;const g=t.value;g&&(o=new MutationObserver(v),o.observe(g,_r),p())}),Ee([n,s],()=>{Ne(p)},{flush:"post"}),ut(()=>{o?.disconnect(),o=null,i!==0&&cancelAnimationFrame(i)})}const U5=/^(application\/pdf|image\/(png|jpe?g|gif|webp|avif|bmp|x-icon|vnd\.microsoft\.icon)|video\/[\w.+-]+|audio\/[\w.+-]+)$/i,V5=/^(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,j5=/^(png|jpe?g|gif|webp|avif|bmp|ico)$/i,xr="text/plain;charset=utf-8";function K5(e,t){const n=(t??"").toLowerCase();if(U5.test(n))return n;if(n.startsWith("text/"))return n==="text/html"?null:xr;const s=e?.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]?.toLowerCase();return s===void 0?null:V5.test(s)?xr:j5.test(s)?`image/${s==="jpg"?"jpeg":s==="ico"?"x-icon":s}`:s==="pdf"?"application/pdf":null}async function vu(e,t,n){const s=K5(t,n);if(s===null)return"unsupported";const o=window.open("","_blank");o!==null&&(o.opener=null);const i=await Le().getFileBlob(e).catch(()=>null);if(i===null)return o?.close(),"failed";const c=URL.createObjectURL(new Blob([i],{type:s}));if(o!==null)o.location.href=c;else{const p=document.createElement("a");p.href=c,p.download=t??e,p.click()}return setTimeout(()=>{URL.revokeObjectURL(c)},6e4),"previewed"}const G5={key:0,class:"chat-loading"},Q5={class:"chat-loading-text"},Y5={key:1,class:"chat-empty"},Z5={key:1,class:"top-sentinel-text"},X5={key:0,class:"u-turn"},J5=["data-turn-id"],e8={key:0,class:"u-atts"},t8={key:1,class:"skill-act"},n8={class:"skill-act-head"},s8={key:0,class:"skill-act-args"},o8={key:2,class:"skill-act"},i8={class:"skill-act-head"},a8={key:0,class:"skill-act-args"},l8={key:3,class:"u-text"},r8={key:0,class:"u-meta"},c8=["aria-label","onClick"],u8=["aria-label","onClick"],d8=["data-turn-id"],p8=["onClick"],f8={class:"cd-view"},m8={key:1,class:"cd-label"},v8=["data-turn-id"],h8={key:1,class:"msg"},g8={key:0,class:"a-msg-ft"},y8={key:0,class:"a-duration"},k8=["aria-label","onClick"],b8={key:4,class:"sending-placeholder"},w8={key:5,class:"q-stack"},S8={class:"q-head"},C8={class:"q-title"},_8={class:"q-hint"},x8=["onDragover","onDrop"],$8={class:"u-bub q-bub"},M8=["title","onDragstart"],I8=["title","onClick"],T8={key:0,class:"u-text q-text"},A8={key:1,class:"q-text q-text-placeholder"},L8={key:0,class:"q-imgs"},B8={key:0,class:"q-file"},P8={key:1,class:"q-tag q-tag-next"},E8={key:2,class:"q-tag q-tag-idx"},R8=["aria-label"],O8=["aria-label","onClick"],D8={key:0,class:"open-unsupported",role:"status"},z8=2500,F8=Ie({__name:"ChatPane",props:{turns:{},approvals:{default:()=>[]},turnActive:{type:Boolean,default:!1},working:{type:Boolean,default:!1},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"],setup(e,{expose:t,emit:n}){const{t:s}=Fe(),{confirm:o}=Ro();ut(()=>{ce!==null&&(clearTimeout(ce),ce=null),se!==null&&(clearTimeout(se),se=null),M!==null&&(clearTimeout(M),M=null),X!==null&&(clearTimeout(X),X=null)});const i=e,c=T(null);let p=null;function v(){!c.value||typeof IntersectionObserver>"u"||(p?.disconnect(),p=new IntersectionObserver(D=>{D[0]?.isIntersecting&&i.hasMoreMessages&&!i.loadingMore&&!i.loadingMoreError&&!i.sessionLoading&&!i.isFollowing&&x("loadOlderMessages")},{root:null,rootMargin:"200px 0px 0px 0px",threshold:0}),p.observe(c.value))}lt(v),ut(()=>{p?.disconnect(),p=null}),Ee(()=>[i.hasMoreMessages,i.loadingMore,i.loadingMoreError],()=>{Ne().then(v)});const g=$(()=>{if(!i.turnActive||i.turns.length===0)return null;const D=i.turns.at(-1);return D.role==="assistant"?D.id:null}),C=$(()=>i.working),x=n,h=T(null);H5({root:h,query:$(()=>i.searchQuery??""),activeIndex:$(()=>i.searchActiveIndex??-1)});const m=T(null),w=T(null);function k(D){return(D.attachments?.length??0)>0}function b(D){x("editQueued",D)}function _(D,J){if(m.value=D,!J.dataTransfer)return;J.dataTransfer.effectAllowed="move",J.dataTransfer.setData("text/plain",String(D));const q=J.currentTarget?.closest(".q-turn");q&&J.dataTransfer.setDragImage(q,24,24)}function O(D,J){if(m.value===null)return;J.preventDefault(),J.dataTransfer&&(J.dataTransfer.dropEffect="move");const q=J.currentTarget.getBoundingClientRect(),fe=J.clientY{for(let D=i.turns.length-1;D>=0;D--)if(i.turns[D].role==="user")return i.turns[D].id;return null});function H(D){return D.role==="user"&&D.id===N.value&&!i.working&&!D.skillActivation&&!D.pluginCommand}function U(D){const J=D.compaction,q=J?.trigger==="auto"?s("conversation.compactedAuto"):s("conversation.compactedPlain");return typeof J?.tokensBefore=="number"&&typeof J?.tokensAfter=="number"?q+s("conversation.compactedTokens",{before:Gn(J.tokensBefore),after:Gn(J.tokensAfter)}):q}const Q=T(null),P=T(null);let M=null;async function A(D){await o({title:s("conversation.undo"),message:s("conversation.undoConfirm"),variant:"primary"})&&R(D)}function R(D){P.value===null&&(P.value=D.id,x("editMessage",{text:D.text,attachments:D.attachments}),M=setTimeout(()=>{M=null,P.value=null},z8))}Ee(()=>i.turns,D=>{P.value!==null&&(D.some(J=>J.id===P.value)||(P.value=null,M!==null&&(clearTimeout(M),M=null)))},{flush:"post"});const ne=T(!1);let se=null;function ke(){if(i.turns.length===0)return;const D=[];for(const q of i.turns){if(q.role==="compaction"||q.role==="cron")continue;const fe=q.role==="user"?"User":"Assistant",xe=xC(q);xe.trim()&&D.push(`**${fe}**
-
-${xe}`)}const J=D.join(`
-
----
-
-`);Yt(J).then(q=>{q&&(ne.value=!0,x("copyConversationCopied"),se!==null&&clearTimeout(se),se=setTimeout(()=>{se=null,ne.value=!1},2e3))}).catch(()=>{})}function pe(D){const J=[];for(let q=D;q>=0;q--){const fe=i.turns[q];if(!fe||fe.role!=="assistant")break;J.unshift(fe)}return J}function V(D){return pe(D).map(J=>_C(J)).filter(Boolean).join(`
-
-`)}const ee=$(()=>{const D=new Map;for(let J=i.turns.length-1;J>=0;J-=1){const q=i.turns[J];q&&q.role==="assistant"&&_e(J)&&D.set(q.id,V(J))}return D});function le(){for(let D=i.turns.length-1;D>=0;D-=1)if(i.turns[D]?.role==="assistant")return V(D);return""}function me(){const D=le();D.trim()&&Yt(D).then(J=>{J&&(ne.value=!0,x("copyConversationCopied"),se!==null&&clearTimeout(se),se=setTimeout(()=>{se=null,ne.value=!1},2e3))}).catch(()=>{})}t({copyConversation:ke,copyFinalSummary:me});function _e(D){const J=i.turns[D];if(!J||J.role!=="assistant")return!1;const q=i.turns[D+1];return!q||q.role!=="assistant"}let ce=null;function K(D){const J=i.turns[D];if(!J)return;const q=V(D);q.trim()&&Yt(q).then(fe=>{fe&&(Q.value=J.id,ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null,Q.value=null},1400))}).catch(()=>{})}function Y(D){const J=D.text;J.trim()&&Yt(J).then(q=>{q&&(Q.value=D.id,ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null,Q.value=null},1400))}).catch(()=>{})}function Se(D){return{kind:D.kind==="video"?"video":"image",url:D.url,path:D.name,fileId:D.fileId}}const oe=T(null);let X=null;function ie(D){if(D.kind==="image"||D.kind==="video"){x("openMedia",Se(D));return}D.fileId!==void 0&&vu(D.fileId,D.name,D.mediaType).then(J=>{J==="unsupported"&&(oe.value=D.name??D.fileId??"",X!==null&&clearTimeout(X),X=setTimeout(()=>{X=null,oe.value=null},2400))})}function Ce(D,J){return D.id!==g.value?!1:J.sourceIndex===Li(D).length-1}return(D,J)=>(a(),u(ye,null,[l("div",{ref_key:"chatRootRef",ref:h,class:"chat"},[e.sessionLoading?(a(),u("div",G5,[I(Jt,{size:"sm"}),l("span",Q5,d(r(s)("conversation.loading")),1)])):e.turns.length===0&&(!e.approvals||e.approvals.length===0)?(a(),u("div",Y5)):B("",!0),e.hasMoreMessages||e.loadingMore?(a(),u("div",{key:2,ref_key:"topSentinelRef",ref:c,class:de(["top-sentinel",{"top-sentinel-loading":e.loadingMore}])},[e.loadingMore?(a(),u("span",Z5,[I(Jt,{size:"sm"}),ve(" "+d(r(s)("conversation.loadingOlder")),1)])):(a(),u("button",{key:0,type:"button",class:"top-sentinel-btn",onClick:J[0]||(J[0]=q=>x("loadOlderMessages"))},d(r(s)("conversation.loadOlder")),1))],2)):B("",!0),(a(!0),u(ye,null,Be(e.turns,(q,fe)=>(a(),u(ye,{key:q.id},[q.role==="user"?(a(),u("div",X5,[l("div",{class:de(["u-bub turn-anchor",{undoing:P.value===q.id}]),"data-turn-id":q.id},[q.attachments&&q.attachments.length>0?(a(),u("div",e8,[(a(!0),u(ye,null,Be(q.attachments,(xe,Ue)=>(a(),Z(fu,{key:Ue,kind:xe.kind,name:xe.name,url:xe.url,"file-id":xe.fileId,"media-type":xe.mediaType,size:xe.size,onActivate:Ke=>ie(xe)},null,8,["kind","name","url","file-id","media-type","size","onActivate"]))),128))])):B("",!0),q.skillActivation?(a(),u("div",t8,[l("div",n8,[J[10]||(J[10]=l("span",{class:"skill-act-arrow"},"▶",-1)),l("span",null,d(r(s)("conversation.activatedSkill",{name:q.skillActivation.name})),1)]),q.skillActivation.args?(a(),u("div",s8,d(q.skillActivation.args),1)):B("",!0)])):q.pluginCommand?(a(),u("div",o8,[l("div",i8,[J[11]||(J[11]=l("span",{class:"skill-act-arrow"},"▶",-1)),l("span",null,"/"+d(q.pluginCommand.pluginId)+":"+d(q.pluginCommand.commandName),1)]),q.pluginCommand.args?(a(),u("div",a8,d(q.pluginCommand.args),1)):B("",!0)])):(a(),u("div",l8,d(q.text),1))],10,J5),q.createdAt||H(q)?(a(),u("div",r8,[H(q)?(a(),u("div",{key:0,class:de(["u-edit-wrap",{undoing:P.value===q.id}])},[l("button",{type:"button",class:"u-edit","aria-label":r(s)("conversation.undoTooltip"),onClick:xe=>A(q)},[I(ae,{name:"undo",size:"sm"})],8,c8)],2)):B("",!0),q.text.trim().length>0?(a(),u("button",{key:1,type:"button",class:"u-copy","aria-label":r(s)("filePreview.copy"),onClick:Pe(xe=>Y(q),["stop"])},[Q.value!==q.id?(a(),Z(ae,{key:0,name:"copy",size:"sm"})):(a(),Z(ae,{key:1,name:"check",size:"sm"}))],8,u8)):B("",!0),q.createdAt?(a(),Z(du,{key:2,time:q.createdAt},null,8,["time"])):B("",!0)])):B("",!0)])):q.role==="compaction"?(a(),u("div",{key:1,class:"compact-divider turn-anchor","data-turn-id":q.id,role:"separator"},[J[12]||(J[12]=l("span",{class:"cd-line","aria-hidden":"true"},null,-1)),q.text?(a(),u("button",{key:0,type:"button",class:"cd-label cd-btn",onClick:xe=>x("openCompaction",{turnId:q.id})},[l("span",null,d(U(q)),1),l("span",f8,d(r(s)("conversation.viewSummary")),1)],8,p8)):(a(),u("span",m8,d(U(q)),1)),J[13]||(J[13]=l("span",{class:"cd-line","aria-hidden":"true"},null,-1))],8,d8)):q.role==="cron"?(a(),Z(_5,{key:2,text:q.text,cron:q.cron,"turn-id":q.id,"created-at":q.createdAt},null,8,["text","cron","turn-id","created-at"])):(a(),u("div",{key:3,class:"a-msg turn-anchor","data-turn-id":q.id},[(a(!0),u(ye,null,Be(r(SC)(q),(xe,Ue)=>(a(),u(ye,{key:r($C)(xe,Ue)},[xe.kind==="thinking"?(a(),Z(s5,{key:0,text:xe.thinking,mobile:"",streaming:Ce(q,xe),onOpen:Ke=>x("openThinking",{turnId:q.id,blockIndex:xe.sourceIndex})},null,8,["text","streaming","onOpen"])):xe.kind==="text"&&xe.text?(a(),u("div",h8,[I(No,{text:xe.text,streaming:Ce(q,xe),"open-file":Ke=>x("openFile",Ke)},null,8,["text","streaming","open-file"])])):xe.kind==="error"?(a(),Z(W5,{key:2,variant:"danger"},{default:j(()=>[ve(d(xe.text),1)]),_:2},1024)):xe.kind==="tool-stack"?(a(),Z(PC,{key:3,tools:xe.tools,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:J[1]||(J[1]=Ke=>x("openMedia",Ke)),onOpenFile:J[2]||(J[2]=Ke=>x("openFile",Ke)),onOpenToolDiff:J[3]||(J[3]=Ke=>x("openToolDiff",Ke)),onOpenAgent:J[4]||(J[4]=Ke=>x("openAgent",Ke))},null,8,["tools","tool-diff-panel"])):xe.kind==="tool"?(a(),Z(au,{key:4,tool:xe.tool,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:J[5]||(J[5]=Ke=>x("openMedia",Ke)),onOpenFile:J[6]||(J[6]=Ke=>x("openFile",Ke)),onOpenToolDiff:J[7]||(J[7]=Ke=>x("openToolDiff",Ke)),onOpenAgent:J[8]||(J[8]=Ke=>x("openAgent",Ke))},null,8,["tool","tool-diff-panel"])):B("",!0)],64))),128)),q.id!==g.value&&_e(fe)&&((ee.value.get(q.id)??"").trim().length>0||q.durationMs!==void 0)?(a(),u("div",g8,[I(Je,{text:`${q.durationMs} ms`},{default:j(()=>[q.durationMs!==void 0?(a(),u("span",y8,d(r(kC)(q.durationMs)),1)):B("",!0)]),_:2},1032,["text"]),(ee.value.get(q.id)??"").trim().length>0?(a(),u("button",{key:0,class:"a-cpbtn","aria-label":r(s)("filePreview.copy"),onClick:xe=>K(fe)},[Q.value!==q.id?(a(),Z(ae,{key:0,name:"copy",size:"sm"})):(a(),Z(ae,{key:1,name:"check",size:"sm"}))],8,k8)):B("",!0)])):B("",!0)],8,v8))],64))),128)),e.compaction?(a(),Z(r5,{key:3,label:r(s)("conversation.compacting")},null,8,["label"])):B("",!0),C.value?(a(),u("div",b8,[I(mu,{fast:e.fastMoon,label:r(s)("conversation.waitingForResponse")},null,8,["fast","label"])])):B("",!0),e.queued.length>0?(a(),u("div",w8,[l("div",S8,[l("span",C8,[I(ae,{name:"mail",size:"sm"}),ve(" "+d(r(s)("composer.queueLabel"))+" · ",1),l("b",null,d(e.queued.length),1)]),l("span",_8,d(r(s)("composer.queueAutoDrain")),1)]),(a(!0),u(ye,null,Be(e.queued,(q,fe)=>(a(),u("div",{key:fe,class:de(["u-turn q-turn",{"q-dragging":m.value===fe,"drop-before":w.value?.index===fe&&w.value.position==="before","drop-after":w.value?.index===fe&&w.value.position==="after"}]),onDragover:xe=>O(fe,xe),onDrop:xe=>y(fe,xe)},[l("div",$8,[l("span",{class:"q-grip",title:r(s)("composer.queueDragTitle"),draggable:"true",onDragstart:xe=>_(fe,xe),onDragend:L},[I(ae,{name:"grip",size:"sm"})],40,M8),l("button",{type:"button",class:"q-body",title:r(s)("composer.editQueued"),onClick:xe=>b(fe)},[q.text?(a(),u("span",T8,d(q.text),1)):(a(),u("span",A8,[I(ae,{name:"file",size:"sm"}),ve(" "+d(r(s)("composer.queuedAttachments",{n:q.attachments?.length??0})),1)]))],8,I8),k(q)?(a(),u("div",L8,[(a(!0),u(ye,null,Be(q.attachments,(xe,Ue)=>(a(),u(ye,{key:Ue},[xe.kind==="file"?(a(),u("span",B8,[I(ae,{name:"file",size:"sm"}),ve(" "+d(xe.name??xe.fileId),1)])):(a(),Z(pu,{key:1,url:xe.url,kind:xe.kind,"file-id":xe.fileId,"media-class":"q-img",controls:!1,muted:""},null,8,["url","kind","file-id"]))],64))),128))])):B("",!0),fe===0?(a(),u("span",P8,d(r(s)("composer.queueNext")),1)):(a(),u("span",E8,"#"+d(fe+1),1)),l("button",{type:"button",class:"q-steer","aria-label":r(s)("composer.queueSteer"),onClick:J[9]||(J[9]=Pe(xe=>x("steerQueued"),["stop"]))},[I(ae,{name:"send",size:"sm"})],8,R8),l("button",{type:"button",class:"q-rm","aria-label":r(s)("composer.remove"),onClick:Pe(xe=>x("unqueue",fe),["stop"])},[I(ae,{name:"close",size:"sm"})],8,O8)])],42,x8))),128))])):B("",!0)],512),oe.value!==null?(a(),u("div",D8,d(r(s)("composer.attachmentOpenUnsupported",{name:oe.value})),1)):B("",!0)],64))}}),hu=Te(F8,[["__scopeId","data-v-c4c288a8"]]),q8={class:"ch-id"},W8={key:0,class:"ch-ws"},N8={key:1,class:"ch-sep"},H8=["onKeydown"],U8={class:"ch-ses"},V8={key:0,class:"ch-pill ch-sync-pill"},j8={key:0,class:"ch-ahead"},K8={key:1,class:"ch-behind"},G8={key:1,class:"ch-pill ch-diff-pill"},Q8={key:0,class:"ch-add"},Y8={key:1,class:"ch-del"},Z8=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}=Fe(),s=e,o=t,i=$(()=>s.ahead??0),c=$(()=>s.behind??0),p=$(()=>s.gitDiffStats?.totalAdditions??0),v=$(()=>s.gitDiffStats?.totalDeletions??0),g=$(()=>p.value>0||v.value>0),C={open:"header.prStatusOpen",closed:"header.prStatusClosed",merged:"header.prStatusMerged",draft:"header.prStatusDraft"};function x(le){return le.trim().toLowerCase().replaceAll("_","-")}function h(le){const me=x(le);return C[me]?`pr-${me}`:"pr-unknown"}function m(le){return n(C[x(le)]??"header.prStatusUnknown")}const w=T(!1),k=T(null),b=T(null),_=T({});function O(le){const me=le.target;b.value?.el?.contains(me)||k.value?.el?.contains(me)||N()}function y(){N()}async function L(le){if(le.stopPropagation(),w.value){N();return}w.value=!0,document.addEventListener("mousedown",O),window.addEventListener("resize",y),await Ne();const me=k.value?.el,_e=b.value?.el;if(!me||!_e)return;const ce=me.getBoundingClientRect(),K=4,Y=8,Se=_e.offsetWidth,oe=_e.offsetHeight;let X=ce.bottom+K;X+oe>window.innerHeight-Y&&(X=Math.max(Y,ce.top-oe-K));let ie=ce.left;ie+Se>window.innerWidth-Y&&(ie=Math.max(Y,ce.right-Se)),_.value={top:`${Math.round(X)}px`,left:`${Math.round(ie)}px`}}function N(){w.value=!1,document.removeEventListener("mousedown",O),window.removeEventListener("resize",y)}ut(()=>{document.removeEventListener("mousedown",O),window.removeEventListener("resize",y)});function H(){o("copyAll"),N()}function U(){o("copyFinalSummary"),N()}const Q=T(!1);function P(){s.sessionId&&Yt(s.sessionId).then(le=>{le&&(Q.value=!0,setTimeout(()=>{Q.value=!1},1200))})}const M=T(!1),A=T(""),R=T(null);async function ne(){if(N(),!!s.sessionId){M.value=!0,A.value=s.sessionTitle??"",await Ne();try{R.value?.focus(),R.value?.select()}catch{}}}function se(){const le=A.value.trim();le&&s.sessionId&&le!==(s.sessionTitle??"").trim()&&o("renameSession",s.sessionId,le),M.value=!1}function ke(){M.value=!1}function pe(){s.sessionId&&(N(),o("forkSession",s.sessionId))}function V(){s.sessionId&&(N(),o("exportSession",s.sessionId))}function ee(){s.sessionId&&(N(),o("archiveSession",s.sessionId))}return(le,me)=>(a(),u("header",{class:de(["chat-header",{"macos-desktop":r(uo)}])},[l("div",q8,[e.workspaceName?(a(),u("span",W8,d(e.workspaceName),1)):B("",!0),e.workspaceName&&e.sessionTitle?(a(),u("span",N8,"/")):B("",!0),M.value?rt((a(),u("input",{key:2,ref_key:"renameInputRef",ref:R,"onUpdate:modelValue":me[0]||(me[0]=_e=>A.value=_e),class:"ch-rename",type:"text",onKeydown:[mn(Pe(se,["stop"]),["enter"]),mn(Pe(ke,["stop"]),["esc"])],onBlur:se,onClick:me[1]||(me[1]=Pe(()=>{},["stop"]))},null,40,H8)),[[gn,A.value]]):e.sessionTitle?(a(),Z(Je,{key:3,text:e.sessionTitle},{default:j(()=>[l("span",U8,d(e.sessionTitle),1)]),_:1},8,["text"])):B("",!0)]),I(et,{class:de(["ch-act-search",{active:e.searchActive}]),label:r(n)("header.search"),"aria-expanded":e.searchActive,onClick:me[2]||(me[2]=Pe(_e=>o("toggleSearch"),["stop"]))},{default:j(()=>[I(ae,{name:"search",size:"md"})]),_:1},8,["class","label","aria-expanded"]),I(et,{ref_key:"kebabRef",ref:k,class:de(["ch-act-more",{open:w.value}]),label:r(n)("header.options"),"aria-expanded":w.value,"aria-haspopup":"menu",onClick:me[3]||(me[3]=Pe(_e=>L(_e),["stop"]))},{default:j(()=>[I(ae,{name:"dots-horizontal",size:"md"})]),_:1},8,["class","label","aria-expanded"]),w.value?(a(),Z(_s,{key:0,ref_key:"menuRef",ref:b,class:"ch-menu",style:ct(_.value),onClick:me[4]||(me[4]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{onClick:H},{default:j(()=>[I(ae,{name:e.copied?"check":"copy",size:"sm"},null,8,["name"]),ve(" "+d(e.copied?r(n)("header.copied"):r(n)("header.copyAll")),1)]),_:1}),I(st,{onClick:U},{default:j(()=>[I(ae,{name:"file-text",size:"sm"}),ve(" "+d(r(n)("header.copyFinalSummary")),1)]),_:1}),e.sessionId?(a(),u(ye,{key:0},[I(st,{separator:""}),I(st,{onClick:P},{default:j(()=>[I(ae,{name:Q.value?"check":"copy",size:"sm"},null,8,["name"]),ve(" "+d(Q.value?r(n)("header.copied"):r(n)("header.copySessionId")),1)]),_:1}),I(st,{onClick:ne},{default:j(()=>[I(ae,{name:"pencil",size:"sm"}),ve(" "+d(r(n)("header.renameSession")),1)]),_:1}),I(st,{onClick:pe},{default:j(()=>[I(ae,{name:"git-fork",size:"sm"}),ve(" "+d(r(n)("header.forkSession")),1)]),_:1}),I(st,{onClick:V},{default:j(()=>[I(ae,{name:"download",size:"sm"}),ve(" "+d(r(n)("header.exportSession")),1)]),_:1}),I(st,{danger:"",onClick:ee},{default:j(()=>[I(ae,{name:"archive",size:"sm"}),ve(" "+d(r(n)("header.archiveSession")),1)]),_:1})],64)):B("",!0)]),_:1},8,["style"])):B("",!0),me[7]||(me[7]=l("div",{class:"ch-spacer"},null,-1)),e.isGitRepo?(a(),u("button",{key:1,type:"button",class:"ch-git",onClick:me[5]||(me[5]=_e=>o("openChanges"))},[l("span",{class:de(["ch-branch",{"ch-detached":!e.branch}])},d(e.branch||r(n)("header.detached")),3),i.value>0||c.value>0?(a(),u("span",V8,[i.value>0?(a(),u("span",j8,"↑"+d(i.value),1)):B("",!0),c.value>0?(a(),u("span",K8,"↓"+d(c.value),1)):B("",!0)])):B("",!0),g.value?(a(),u("span",G8,[p.value>0?(a(),u("span",Q8,"+"+d(p.value),1)):B("",!0),v.value>0?(a(),u("span",Y8,"-"+d(v.value),1)):B("",!0)])):B("",!0)])):B("",!0),e.pr?(a(),u("button",{key:2,type:"button",class:de(["ch-pill ch-pr",h(e.pr.state)]),onClick:me[6]||(me[6]=_e=>e.pr&&o("openPr",e.pr.url))},[I(ae,{name:"git-pull-request",size:"sm"}),l("span",null,"PR #"+d(e.pr.number)+" · "+d(m(e.pr.state)),1)],2)):B("",!0)],2))}}),X8=Te(Z8,[["__scopeId","data-v-a3848f6a"]]),J8={key:0,class:"slash-menu",role:"listbox"},e_=["aria-selected","onMouseenter","onMousedown"],t_={class:"slash-name"},n_={class:"slash-desc"},s_=Ie({__name:"SlashMenu",props:{items:{},activeIndex:{}},emits:["select","hover"],setup(e,{emit:t}){const{t:n}=Fe(),s=e,o=t,i=T([]);return Ee(()=>s.activeIndex,c=>{i.value[c]?.scrollIntoView({block:"nearest"})}),(c,p)=>e.items.length>0?(a(),u("div",J8,[(a(!0),u(ye,null,Be(e.items,(v,g)=>(a(),u("div",{ref_for:!0,ref:C=>{C&&(i.value[g]=C)},key:`${v.name}-${g}`,class:de(["slash-item",{active:g===s.activeIndex}]),role:"option","aria-selected":g===s.activeIndex,onMouseenter:C=>o("hover",g),onMousedown:Pe(C=>o("select",v),["prevent"])},[l("span",t_,d(v.name),1),l("span",n_,d(v.isSkill?v.desc:r(n)(v.desc)),1)],42,e_))),128))])):B("",!0)}}),o_=Te(s_,[["__scopeId","data-v-f60b70d9"]]),i_={class:"mention-menu",role:"listbox"},a_={key:0,class:"mention-state dim"},l_={key:1,class:"mention-state dim"},r_=["aria-selected","onMouseenter","onMousedown"],c_=["innerHTML"],u_={class:"mention-name"},d_={class:"mention-path"},p_=Ie({__name:"MentionMenu",props:{items:{},activeIndex:{},loading:{type:Boolean}},emits:["select","hover"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Fe(),i=no("folder","sm"),c=no("code","sm"),p=no("file-text","sm"),v=no("image","sm"),g=no("file","sm"),C=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"]),x=new Set(["md","markdown","mdx","txt","rst","adoc","pdf","doc","docx"]),h=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]);function m(w){const k=w.path;if(k.endsWith("/"))return i;const b=w.name||k.split("/").pop()||k,_=b.lastIndexOf("."),O=_>0?b.slice(_+1).toLowerCase():"";return O?C.has(O)?c:x.has(O)?p:h.has(O)?v:g:g}return(w,k)=>(a(),u("div",i_,[n.loading?(a(),u("div",a_,d(r(o)("mention.searching")),1)):n.items.length===0?(a(),u("div",l_,d(r(o)("mention.noMatch")),1)):(a(!0),u(ye,{key:2},Be(n.items,(b,_)=>(a(),u("div",{key:b.path,class:de(["mention-item",{active:_===n.activeIndex}]),role:"option","aria-selected":_===n.activeIndex,onMouseenter:O=>s("hover",_),onMousedown:Pe(O=>s("select",b),["prevent"])},[l("span",{class:"mention-icon",innerHTML:m(b),"aria-hidden":"true"},null,8,c_),l("span",u_,d(b.name),1),l("span",d_,d(b.path),1)],42,r_))),128))]))}}),f_=Te(p_,[["__scopeId","data-v-f4d6b958"]]),gu=[{name:"/new",desc:"commands.new.desc"},{name:"/clear",desc:"commands.clear.desc"},{name:"/login",desc:"commands.login.desc"},{name:"/plan",desc:"commands.plan.desc"},{name:"/swarm",desc:"commands.swarm.desc",acceptsInput:!0},{name:"/goal",desc:"commands.goal.desc",acceptsInput:!0},{name:"/btw",desc:"commands.btw.desc",acceptsInput:!0},{name:"/auto",desc:"commands.auto.desc"},{name:"/yolo",desc:"commands.yolo.desc"},{name:"/thinking",desc:"commands.thinking.desc"},{name:"/compact",desc:"commands.compact.desc",acceptsInput:!0},{name:"/undo",desc:"commands.undo.desc"},{name:"/fork",desc:"commands.fork.desc"},{name:"/export",desc:"commands.export.desc"},{name:"/status",desc:"commands.status.desc"}];function m_(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 ki="skill:";function v_(e){return e.startsWith(ki)?e.slice(ki.length):e}function yu(e=[]){const t=e.map(n=>({name:n.source==="builtin"?`/${n.name}`:`/${ki}${n.name}`,desc:n.description,isSkill:!0,acceptsInput:!0}));return[...gu,...t]}function h_(e,t=gu){const n=e.toLowerCase().trim().replace(/^\//,"");return n===""?t:t.map((s,o)=>{const i=s.name.toLowerCase().replace(/^\//,"");let c=0;return i===n?c=3:i.startsWith(n)?c=2:i.includes(n)&&(c=1),{item:s,index:o,score:c}}).filter(({score:s})=>s>0).sort((s,o)=>s.score!==o.score?o.score-s.score:s.index-o.index).map(({item:s})=>s)}const bi=100;function g_(e){const t=ho(ze.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>bi?n.slice(-bi):n,o={[e]:s};return Ks(ze.inputHistory,o),o}return t&&typeof t=="object"?t:{}}function y_(e){const{text:t,textareaRef:n,autosize:s,sessionId:o}=e,i=T(g_(o())),c=$(()=>i.value[o()??""]??[]);let p=-1,v="";function g(_){const O=o();if(p=-1,!O)return;const y=_.trim();if(!y)return;const L=i.value[O]??[];if(L.at(-1)===y)return;const N=[...L,y],H=N.length>bi?N.slice(-bi):N;i.value={...i.value,[O]:H},Ks(ze.inputHistory,i.value)}function C(){const _=n.value;return _?(_.selectionStart??0)===0:!1}function x(_){t.value=_,Ne(()=>{const O=n.value;if(!O)return;s();const y=_.length;O.setSelectionRange(y,y)})}function h(){const _=c.value;if(_.length!==0){if(p===-1)v=t.value,p=_.length-1;else if(p>0)p-=1;else return;x(_[p])}}function m(){if(p===-1)return;const _=c.value;p<_.length-1?(p+=1,x(_[p])):(p=-1,x(v))}function w(){p=-1}function k(){return p!==-1}function b(){return c.value.length>0}return Ee(o,()=>{p=-1}),{push:g,caretAtTextStart:C,recallOlder:h,recallNewer:m,resetBrowsing:w,isBrowsing:k,hasHistory:b}}function k_(e){const{text:t,textareaRef:n,autosize:s,skills:o,emitCommand:i,historyPush:c,clearDraft:p}=e,v=T(!1),g=T([]),C=T(0);function x(){const m=t.value;m.startsWith("/")&&!m.includes(" ")?(g.value=h_(m,yu(o())),C.value=0,v.value=g.value.length>0):v.value=!1}function h(m){if(v.value=!1,m.acceptsInput){t.value=`${m.name} `,Ne(()=>{const w=n.value;if(!w)return;const k=t.value.length;w.setSelectionRange(k,k),w.focus(),s()});return}t.value="",p?.(),c(m.name),i(m.name)}return{open:v,items:g,active:C,update:x,select:h}}function b_(e){const{text:t,textareaRef:n,autosize:s,searchFiles:o}=e,i=T(!1),c=T([]),p=T(0),v=T(!1);let g=null;function C(){const m=t.value,w=n.value?.selectionStart??m.length;let k=w-1;for(;k>=0&&!/\s/.test(m[k]);)k--;k++;const b=m.slice(k,w);return b.startsWith("@")?{token:b.slice(1),start:k,end:w}:null}function x(){const m=C(),w=o();if(!m||!w){i.value=!1;return}const k=m.token;g!==null&&clearTimeout(g),g=setTimeout(async()=>{v.value=!0,i.value=!0,p.value=0;try{c.value=await w(k)}catch{c.value=[]}finally{v.value=!1}},200)}function h(m){const w=C();if(!w)return;const k=t.value;t.value=k.slice(0,w.start)+m.path+k.slice(w.end),i.value=!1,Ne(()=>{const b=n.value;if(!b)return;const _=w.start+m.path.length;b.setSelectionRange(_,_),b.focus(),s()})}return{open:i,items:c,active:p,loading:v,update:x,select:h}}function w_(e){const{sessionId:t}=e;function n(g){return xt(ml(g))??""}function s(g,C){const x=ml(g);C?Lt(x,C):Ws(x)}const o=T(n(t())),i=T(null);function c(){const g=i.value;g&&(g.style.height="auto",g.style.height=`${g.scrollHeight}px`)}Ee(o,g=>{Ne(c),s(t(),g)}),Ee(t,(g,C)=>{g!==C&&(s(C,o.value),o.value=n(g),Ne(c))});function p(g){o.value=g,Ne(()=>{const C=i.value;if(!C)return;C.focus();const x=g.length;C.setSelectionRange(x,x),c()})}function v(){s(t(),"")}return{text:o,textareaRef:i,autosize:c,loadForEdit:p,clearDraft:v}}function S_(e){const{uploadImage:t,sessionId:n}=e,s=T({}),o=$(()=>s.value[n()??""]??[]),i=T(null),c=T(null),p=T(!1);let v=0;function g(){return`att_${++v}`}function C(V,ee){s.value={...s.value,[V]:ee}}function x(V){if(V.previewUrl!==void 0)try{URL.revokeObjectURL(V.previewUrl)}catch{}}function h(V){return V.startsWith("image/")?"image":V.startsWith("video/")?"video":"file"}async function m(V){const ee=t();if(!ee)return;const le=n()??"";if(V.length!==0)for(const me of V){const _e=h(me.type),ce=g(),K=_e==="file"?void 0:URL.createObjectURL(me),Y={localId:ce,name:me.name,kind:_e,previewUrl:K,mediaType:me.type||"application/octet-stream",size:me.size,uploading:!0};C(le,[...s.value[le]??[],Y]),ee(me,me.name).then(Se=>{const oe=s.value[le]??[];C(le,oe.map(X=>X.localId===ce?{...X,uploading:!1,fileId:Se?.fileId,mediaType:Se?.mediaType??X.mediaType,error:Se===null}:X))}).catch(()=>{const Se=s.value[le]??[];C(le,Se.map(oe=>oe.localId===ce?{...oe,uploading:!1,error:!0}:oe))})}}function w(V){const ee=n()??"",le=s.value[ee]??[],me=le.find(_e=>_e.localId===V);i.value?.localId===V&&(i.value=null),me&&x(me),C(ee,le.filter(_e=>_e.localId!==V))}function k(V){i.value=V}function b(){i.value=null}function _(){c.value?.click()}function O(V){const ee=V.target,le=Array.from(ee.files??[]);m(le),ee.value=""}function y(V){if(!t())return;const ee=V.clipboardData;if(!ee)return;const le=[],me=new Set,_e=(ce,K)=>{const Y=`${ce.size}:${ce.type}:${K}`;if(me.has(Y))return;me.add(Y);const Se=ce.type.split("/")[1]??"png",oe=K.includes(".")?K:`paste-${Date.now()}.${Se}`;le.push(ce instanceof File?ce:new File([ce],oe,{type:ce.type}))};for(const ce of Array.from(ee.items))if(ce.kind==="file"){const K=ce.getAsFile();K&&_e(K,K.name||`paste-${Date.now()}.${ce.type.split("/")[1]??"png"}`)}for(const ce of Array.from(ee.files))_e(ce,ce.name);le.length!==0&&(V.preventDefault(),m(le))}let L=0;function N(V){!t()||!Array.from(V.dataTransfer?.items??[]).some(le=>le.kind==="file")||(V.preventDefault(),V.stopPropagation(),p.value=!0)}function H(){p.value=!1}function U(V){if(L=0,p.value=!1,!t())return;V.preventDefault(),V.stopPropagation();const ee=Array.from(V.dataTransfer?.files??[]);m(ee)}function Q(V){return Array.from(V.dataTransfer?.items??[]).some(ee=>ee.kind==="file")}function P(V){!t()||!Q(V)||(V.preventDefault(),L+=1,p.value=!0)}function M(V){!t()||!Q(V)||V.preventDefault()}function A(V){!t()||!Q(V)||(L=Math.max(0,L-1),L===0&&(p.value=!1))}function R(V){if(L=0,p.value=!1,!t())return;V.preventDefault();const ee=Array.from(V.dataTransfer?.files??[]);m(ee)}function ne(){const V=n()??"";for(const ee of s.value[V]??[])x(ee);C(V,[])}function se(V,ee,le){const me=s.value[V]??[];me.some(_e=>_e.localId===ee)&&C(V,me.map(_e=>_e.localId===ee?{..._e,...le}:_e))}function ke(V){return fetch(V).then(ee=>{if(!ee.ok)throw new Error(`fetch failed: ${ee.status}`);return ee.blob()})}function pe(V){const ee=n()??"";for(const le of s.value[ee]??[])x(le);C(ee,[]);for(const le of V){const me=g(),_e=/^data:/i.test(le.url),ce=/^blob:/i.test(le.url),K=le.name??le.kind;if(le.fileId){const Y={localId:me,name:K,kind:le.kind,previewUrl:le.kind==="file"?void 0:le.url,uploading:!1,fileId:le.fileId};C(ee,[...s.value[ee]??[],Y]),le.kind!=="file"&&!_e&&!ce&&Le().getFileBlob(le.fileId).then(Se=>{const oe=URL.createObjectURL(Se);if(!(s.value[ee]??[]).some(ie=>ie.localId===me)){URL.revokeObjectURL(oe);return}se(ee,me,{previewUrl:oe})}).catch(()=>{})}else{if(!le.url)continue;const Y=t();if(!Y)continue;const Se={localId:me,name:K,kind:le.kind,previewUrl:le.url,uploading:!0};C(ee,[...s.value[ee]??[],Se]),ke(le.url).then(oe=>{const X=K.includes(".")?K:`${K}.${oe.type.split("/")[1]??"bin"}`;return Y(oe,X)}).then(oe=>{if(oe===null){const X=s.value[ee]??[];C(ee,X.filter(ie=>ie.localId!==me));return}se(ee,me,{uploading:!1,fileId:oe.fileId})}).catch(()=>{const oe=s.value[ee]??[];C(ee,oe.filter(X=>X.localId!==me))})}}}return Ee(n,()=>{i.value=null}),lt(()=>{document.addEventListener("paste",y),document.addEventListener("dragenter",P),document.addEventListener("dragover",M),document.addEventListener("dragleave",A),document.addEventListener("drop",R)}),ut(()=>{document.removeEventListener("paste",y),document.removeEventListener("dragenter",P),document.removeEventListener("dragover",M),document.removeEventListener("dragleave",A),document.removeEventListener("drop",R);for(const V of Object.values(s.value))for(const ee of V)x(ee);i.value=null}),{attachments:o,previewAttachment:i,fileInputRef:c,isDragOver:p,removeAttachment:w,openAttachmentPreview:k,closeAttachmentPreview:b,openFilePicker:_,handleFileInputChange:O,handleDragOver:N,handleDragLeave:H,handleDrop:U,clearAfterSubmit:ne,loadAttachments:pe}}const C_="(pointer: coarse)",__="(any-pointer: fine)",x_="(max-width: 980px)";function ku(e){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia(e)}function bu(e,t=ku){return t(e)?.matches??!1}function $_(e,t,n=ku){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 M_=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Escape","Home","End","PageUp","PageDown","Insert"]);function I_(e){return e.ctrlKey||e.metaKey||e.altKey?!0:M_.has(e.key)}let wu=!1;function T_(e){I_(e)&&(wu=!0)}function A_(e){return wu||bu(__,e)}const L_=["type","disabled"],B_={class:"ui-button__content"},P_=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(),u("button",{class:de(["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(),Z(Jt,{key:0,size:"sm",class:"ui-button__spinner"})):B("",!0),l("span",B_,[bt(t.$slots,"default",{},void 0,!0)])],10,L_))}}),We=Te(P_,[["__scopeId","data-v-556ea0b6"]]),E_={class:"ctx-ring",viewBox:"0 0 20 20","aria-hidden":"true"},R_=["stroke-dasharray","stroke-dashoffset"],na=7,O_=Ie({__name:"ContextRing",props:{pct:{}},setup(e){const t=e,n=2*Math.PI*na;return(s,o)=>(a(),u("svg",E_,[l("circle",{class:"ctx-ring-track",cx:"10",cy:"10",r:na,fill:"none","stroke-width":"2.5"}),l("circle",{class:"ctx-ring-fill",cx:"10",cy:"10",r:na,fill:"none","stroke-width":"2.5","stroke-linecap":"round","stroke-dasharray":`${n}`,"stroke-dashoffset":`${n*(1-t.pct/100)}`},null,8,R_)]))}}),D_=Te(O_,[["__scopeId","data-v-a364f1f1"]]),z_={key:0,class:"att-strip"},F_={class:"att-lightbox-card"},q_=["src"],W_=["src","alt"],N_={class:"att-lightbox-name"},H_={class:"composer-card"},U_={class:"cin-wrap"},V_={class:"input-row"},j_=["placeholder","disabled"],K_=["aria-label"],G_={class:"toolbar-left"},Q_=["onKeydown"],Y_=["onClick"],Z_={class:"pd-check"},X_={class:"pd-info"},J_={class:"pd-desc"},e9={class:"mode-label"},t9={key:0,class:"mode-tag"},n9={key:1,class:"mode-tag"},s9={key:2,class:"mode-tag"},o9={key:3,class:"mode-tag"},i9={class:"mode-row-icon"},a9={class:"mode-row-info"},l9={class:"mode-row-name"},r9={class:"mode-row-desc"},c9={class:"mode-row-icon"},u9={class:"mode-row-info"},d9={class:"mode-row-name"},p9={class:"mode-row-desc"},f9={class:"mode-row-icon"},m9={class:"mode-row-info"},v9={class:"mode-row-name"},h9={class:"mode-row-desc"},g9={class:"mode-row-icon"},y9={class:"mode-row-info"},k9={class:"mode-row-name"},b9={class:"mode-row-desc"},w9={key:0,class:"mode-row-actions"},S9={class:"toolbar-right"},C9=["aria-label"],_9=["onKeydown"],x9={key:0,class:"think-suffix"},$9=["aria-label"],M9=["aria-label","disabled"],I9={key:0,class:"md-section"},T9=["onClick"],A9={class:"md-check"},L9={class:"md-name"},B9={class:"md-provider"},P9={key:1,class:"md-divider"},E9={key:2,class:"md-section"},R9=["onClick"],O9={class:"md-check"},D9={class:"md-name"},z9={key:3,class:"md-divider"},F9={class:"md-name"},q9={key:0,class:"md-note"},W9=["aria-label"],N9=["disabled","onClick"],H9={class:"md-cache-note"},U9={class:"md-name"},V9={class:"drop-card"},$r=36,j9=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},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","openBtw","createGoal","controlGoal","focusGoal","focusSwarm","compact","pickModel","selectModel"],setup(e,{expose:t,emit:n}){const s=e,o=$(()=>s.starting?c("composer.starting"):s.running?c("composer.placeholderRunning"):s.goalMode?c("status.goalPlaceholder"):c("composer.placeholder")),i=n,{t:c,locale:p}=Fe(),{text:v,textareaRef:g,autosize:C,loadForEdit:x,clearDraft:h}=w_({sessionId:()=>s.sessionId}),m=T(!1);function w(){m.value=!m.value,Ne(()=>{C(),O(),g.value?.focus()})}function k(){m.value&&(m.value=!1,Ne(C))}function b(ue){if(typeof getComputedStyle>"u")return $r;const $e=Number.parseFloat(getComputedStyle(ue).minHeight);return Number.isFinite($e)&&$e>0?$e:$r}const _=T(!1);function O(){const ue=g.value;_.value=!!ue&&ue.scrollHeight>b(ue)}Ee(v,()=>{Ne(O)}),Ee(()=>s.sessionId,()=>{m.value=!1});const y=y_({text:v,textareaRef:g,autosize:C,sessionId:()=>s.sessionId}),{open:L,items:N,active:H,update:U,select:Q}=k_({text:v,textareaRef:g,autosize:C,skills:()=>s.skills,emitCommand:ue=>i("command",ue),historyPush:ue=>y.push(ue),clearDraft:h}),{open:P,items:M,active:A,loading:R,update:ne,select:se}=b_({text:v,textareaRef:g,autosize:C,searchFiles:()=>s.searchFiles});function ke(){y.resetBrowsing(),U(),ne()}const{attachments:pe,previewAttachment:V,fileInputRef:ee,isDragOver:le,removeAttachment:me,openAttachmentPreview:_e,closeAttachmentPreview:ce,openFilePicker:K,handleFileInputChange:Y,handleDragOver:Se,handleDragLeave:oe,handleDrop:X,clearAfterSubmit:ie,loadAttachments:Ce}=S_({uploadImage:()=>s.uploadImage,sessionId:()=>s.sessionId});lt(()=>{v.value&&Ne(()=>{C(),O()})}),ut(()=>{document.removeEventListener("mousedown",Nt),Ye()});function D(){g.value?.focus({preventScroll:!0})}function J(ue){Ce(ue)}t({loadForEdit:x,loadAttachmentsForEdit:J,focus:D});function q(ue){return{fileId:ue.fileId,kind:ue.kind,name:ue.name,mediaType:ue.mediaType,size:ue.size}}function fe(){return pe.value.filter(ue=>!ue.uploading&&!ue.error&&ue.fileId!==void 0)}function xe(ue){if(ue.kind==="file"){ue.fileId!==void 0&&vu(ue.fileId,ue.name,ue.mediaType);return}_e(ue)}function Ue(){const ue=v.value.trim();if(pe.value.some(we=>we.uploading))return;const $e=fe();if(!ue&&$e.length===0)return;if(y.push(ue),ue){const we=m_(ue),F=we?yu(s.skills).some(te=>te.name===we.cmd||te.name===`/${ki}${we.cmd.slice(1)}`):!1;if(we&&F){v.value="",h(),L.value=!1,k(),i("command",we.arg?`${we.cmd} ${we.arg}`:we.cmd);return}}const Me={text:ue,attachments:$e.map(we=>q(we))};V.value=null,ie(),v.value="",h(),L.value=!1,P.value=!1,k(),i("submit",Me)}function Ke(){if(!s.running||pe.value.some(we=>we.uploading))return;const ue=v.value.trim(),$e=fe();if(!ue&&$e.length===0&&s.queued.length===0)return;const Me={text:ue,attachments:$e.map(we=>q(we))};ie(),y.push(ue),v.value="",h(),L.value=!1,P.value=!1,k(),i("steer",Me)}let cn=!1,un=null;function Ye(){un!==null&&(clearTimeout(un),un=null)}function Dt(){Ye(),cn=!0}function yn(){Ye(),un=setTimeout(()=>{un=null,cn=!1},0)}function dn(ue){return cn||ue.isComposing||ue.keyCode===229}function kn(ue){if(dn(ue))return;T_(ue);const $e=bu(C_)&&!A_();if(ue.key==="Escape"){if(Ht.value){ue.preventDefault(),Ot();return}if(Ut.value){ue.preventDefault(),Vt();return}if(qe.value){ue.preventDefault(),_t();return}}if(L.value){if(ue.key==="ArrowDown"){ue.preventDefault(),H.value=(H.value+1)%N.value.length;return}if(ue.key==="ArrowUp"){ue.preventDefault(),H.value=(H.value-1+N.value.length)%N.value.length;return}if(ue.key==="Enter"||ue.key==="Tab"){ue.preventDefault();const Me=N.value[H.value];Me&&Q(Me);return}if(ue.key==="Escape"){ue.preventDefault(),L.value=!1;return}}if(P.value&&!R.value){if(ue.key==="ArrowDown"){ue.preventDefault(),A.value=(A.value+1)%Math.max(1,M.value.length);return}if(ue.key==="ArrowUp"){ue.preventDefault(),A.value=(A.value-1+Math.max(1,M.value.length))%Math.max(1,M.value.length);return}if(ue.key==="Enter"||ue.key==="Tab"){ue.preventDefault();const Me=M.value[A.value];Me&&se(Me);return}if(ue.key==="Escape"){ue.preventDefault(),P.value=!1;return}}if(!$e&&ue.key==="s"&&(ue.ctrlKey||ue.metaKey)&&!ue.shiftKey&&!ue.altKey){s.running&&(ue.preventDefault(),Ke());return}if(!m.value&&!L.value&&!P.value&&!ue.shiftKey&&!ue.altKey&&!ue.metaKey&&!ue.ctrlKey){const Me=y.isBrowsing();if(ue.key==="ArrowUp"&&y.hasHistory()&&(Me||y.caretAtTextStart())){ue.preventDefault(),y.recallOlder();return}if(ue.key==="ArrowDown"&&Me){ue.preventDefault(),y.recallNewer();return}}if(ue.key==="Enter"&&!ue.shiftKey){if(m.value&&!(ue.metaKey||ue.ctrlKey)||$e)return;ue.preventDefault(),Ue()}}const Tn=$(()=>c("composer.send")),Rt=$(()=>!!s.uploadImage),Ht=T(!1),Ut=T(!1),tt=T(null);function dt(){Ht.value=!Ht.value,Ht.value?(Ut.value=!1,_t(),document.addEventListener("click",St,!0)):document.removeEventListener("click",St,!0)}function Ot(){Ht.value=!1,Ut.value||document.removeEventListener("click",St,!0)}function wt(){Ut.value=!Ut.value,Ut.value?(Ht.value=!1,_t(),document.addEventListener("click",St,!0)):document.removeEventListener("click",St,!0)}function Vt(){Ut.value=!1,Ht.value||document.removeEventListener("click",St,!0)}function St(ue){tt.value&&!tt.value.contains(ue.target)&&(Ot(),Vt())}ut(()=>{document.removeEventListener("click",St,!0)});const zt=$(()=>{const ue=s.status?.ctxMax??0;return ue<=0?0:Math.min(100,Math.max(0,Math.ceil((s.status?.ctxUsed??0)/ue*100)))}),gt=$(()=>{const ue=Gn(s.status?.ctxUsed??0),$e=Gn(s.status?.ctxMax??0);return c("status.ctxTooltip",{used:ue,max:$e,pct:zt.value})}),en=$(()=>zt.value>=80),$t=$(()=>s.models?.find(ue=>ue.id===s.status?.modelId)),bn=$(()=>Ci($t.value)),Ft=$(()=>_i($t.value)),wn=$(()=>Ao($t.value,s.thinking)),Bt=$(()=>Ft.value.includes(wn.value)?wn.value:""),Wn=$(()=>hk(wn.value)),pn=$(()=>bn.value==="unsupported"||Ft.value.length<=1),jt=$(()=>{if(!Wn.value)return"";const ue=($t.value?.supportEfforts?.length??0)>0,$e=wn.value;return ue&&$e!=="on"?c("composer.thinkingSuffixEffort",{level:$e}):c("composer.thinkingSuffix")});function Nn(ue){pn.value||i("setThinking",Za($t.value,ue))}function Kt(ue){return ue==="on"?c("status.thinkingOn"):ue==="off"?c("status.thinkingOff"):ha(ue)}const qt=$(()=>s.planMode===!0),Mt=$(()=>s.swarmMode===!0),It=$(()=>s.supermoonMode===!0),Wt=$(()=>s.goal?.status??s.activationBadges?.goal?.status??null),Ze=$(()=>Wt.value!==null&&Wt.value!=="complete"),yt=$(()=>Ze.value||s.goalMode===!0),he=$(()=>Wt.value==="active"),ge=$(()=>Wt.value==="paused"||Wt.value==="blocked"),qe=T(!1),Qe=T(null),ot=T(null),vt=T({}),pt=$(()=>qt.value||Mt.value||It.value||yt.value);function _t(){qe.value=!1,document.removeEventListener("mousedown",Nt)}function Nt(ue){const $e=ue.target;Qe.value?.contains($e)||ot.value?.contains($e)||_t()}function Pt(){if(qe.value){_t();return}Ot(),Vt();const ue=Qe.value?.getBoundingClientRect();ue&&(vt.value={left:`${Math.round(ue.left)}px`,bottom:`${Math.round(window.innerHeight-ue.top+8)}px`}),qe.value=!0,ue&&Ne(()=>{const $e=ot.value;if(!$e)return;const Me=Math.max(8,Math.min(ue.left,window.innerWidth-$e.offsetWidth-8));vt.value={...vt.value,left:`${Math.round(Me)}px`}}),setTimeout(()=>document.addEventListener("mousedown",Nt),0)}const on=[{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"}],Sn=["status.planDesc","status.swarmDesc","status.supermoonDesc","status.goalDesc"],fs=T(null),Qn=T(""),Yn=T("");function ms(ue){const $e={};return ue&&($e["--composer-menu-desc-width"]=ue),$e}const vs=$(()=>ms(Qn.value)),Is=$(()=>ms(Yn.value)),an=$(()=>({...vt.value,...Is.value}));let ft=null;function An(ue){const $e=Number.parseFloat(ue);return Number.isFinite($e)?$e:0}function Cn(ue){return`${ue.fontStyle||"normal"} ${ue.fontWeight||"400"} ${ue.fontSize} ${ue.fontFamily}`}function Hn(ue){return ue.letterSpacing==="normal"?0:An(ue.letterSpacing)}function Ln(ue,$e){if(!ue)return 0;const Me=Ku(ue,Cn($e),{letterSpacing:Hn($e)});return Gu(Me)}function ln(){const ue=fs.value?.querySelector(".pd-desc");if(!ue)return;const $e=getComputedStyle(ue),Me=Math.max(0,...on.map(nt=>Ln(c(nt.descKey),$e))),we=Math.max(0,...Sn.map(nt=>Ln(c(nt),$e))),F=window.innerWidth-96,te=nt=>F>0?Math.min(nt,F):nt;Qn.value=Me>0?`${Math.ceil(te(Me))}px`:"",Yn.value=we>0?`${Math.ceil(te(we))}px`:""}function Bn(){typeof window>"u"||(ft!==null&&window.cancelAnimationFrame(ft),Ne(()=>{ft=window.requestAnimationFrame(()=>{ft=null,ln()})}))}Ee(p,Bn,{immediate:!0}),lt(()=>{Bn(),document.fonts?.ready.then(Bn)}),ut(()=>{ft!==null&&(window.cancelAnimationFrame(ft),ft=null)});function Pn(ue){i("setPermission",ue),Vt()}const Zn=$(()=>on.find(ue=>ue.mode===s.status?.permission)),Xn=$(()=>Zn.value?c(Zn.value.labelKey):""),En=$(()=>$t.value?.provider??""),Rn=$(()=>!En.value||!s.models?.length?[]:s.models.filter(ue=>ue.provider===En.value)),Jn=$(()=>new Set(s.starredIds??[]));function es(ue){return Jn.value.has(ue)}const ts=$(()=>s.models?.length?s.models.filter(ue=>es(ue.id)&&ue.provider!==En.value):[]);function ns(ue){i("selectModel",ue),Ot()}return(ue,$e)=>(a(),u("div",{class:de(["composer",{"drag-over":r(le),expanded:m.value}]),onDragover:$e[19]||($e[19]=(...Me)=>r(Se)&&r(Se)(...Me)),onDragleave:$e[20]||($e[20]=(...Me)=>r(oe)&&r(oe)(...Me)),onDrop:$e[21]||($e[21]=(...Me)=>r(X)&&r(X)(...Me))},[r(pe).length>0?(a(),u("div",z_,[(a(!0),u(ye,null,Be(r(pe),Me=>(a(),Z(fu,{key:Me.localId,kind:Me.kind,name:Me.name,url:Me.previewUrl,"file-id":Me.fileId,"media-type":Me.mediaType,size:Me.size,uploading:Me.uploading,error:Me.error,removable:"","remove-label":r(c)("composer.removeNamed",{name:Me.name}),onActivate:we=>xe(Me),onRemove:we=>r(me)(Me.localId)},null,8,["kind","name","url","file-id","media-type","size","uploading","error","remove-label","onActivate","onRemove"]))),128))])):B("",!0),r(V)?(a(),u("div",{key:1,class:"att-lightbox",onClick:$e[1]||($e[1]=Pe((...Me)=>r(ce)&&r(ce)(...Me),["self"]))},[l("div",F_,[I(Je,{text:r(c)("model.close")},{default:j(()=>[l("button",{type:"button",class:"att-lightbox-close",onClick:$e[0]||($e[0]=(...Me)=>r(ce)&&r(ce)(...Me))},"✕")]),_:1},8,["text"]),r(V).kind==="video"?(a(),u("video",{key:0,class:"att-lightbox-media",src:r(V).previewUrl,controls:"",playsinline:""},null,8,q_)):(a(),u("img",{key:1,class:"att-lightbox-media",src:r(V).previewUrl,alt:r(V).name},null,8,W_)),l("div",N_,d(r(V).name),1)])])):B("",!0),l("div",H_,[l("div",U_,[r(L)?(a(),Z(o_,{key:0,items:r(N),"active-index":r(H),onSelect:r(Q),onHover:$e[2]||($e[2]=Me=>H.value=Me)},null,8,["items","active-index","onSelect"])):B("",!0),r(P)?(a(),Z(f_,{key:1,items:r(M),"active-index":r(A),loading:r(R),onSelect:r(se),onHover:$e[3]||($e[3]=Me=>A.value=Me)},null,8,["items","active-index","loading","onSelect"])):B("",!0),l("div",V_,[rt(l("textarea",{ref_key:"textareaRef",ref:g,"onUpdate:modelValue":$e[4]||($e[4]=Me=>Ru(v)?v.value=Me:null),class:"ph",placeholder:o.value,disabled:e.starting,rows:"1",onKeydown:kn,onCompositionstart:Dt,onCompositionend:yn,onInput:ke},null,40,j_),[[gn,r(v)]]),m.value||_.value?(a(),u("button",{key:0,class:"expand-btn",type:"button","aria-label":m.value?r(c)("composer.collapseTitle"):r(c)("composer.expandTitle"),onClick:w},[m.value?(a(),Z(ae,{key:0,name:"collapse",size:"sm"})):(a(),Z(ae,{key:1,name:"expand",size:"sm"}))],8,K_)):B("",!0)])]),Rt.value?(a(),u("input",{key:0,ref_key:"fileInputRef",ref:ee,type:"file",multiple:"",class:"file-input-hidden",onChange:$e[5]||($e[5]=(...Me)=>r(Y)&&r(Y)(...Me))},null,544)):B("",!0),l("div",{ref_key:"toolbarRef",ref:tt,class:"toolbar"},[l("div",{ref_key:"menuMeasureRef",ref:fs,class:"menu-measure","aria-hidden":"true"},[...$e[22]||($e[22]=[l("span",{class:"pd-desc"},null,-1)])],512),l("div",G_,[Rt.value?(a(),Z(et,{key:0,size:"md",label:r(c)("composer.attachFile"),onClick:r(K)},{default:j(()=>[I(ae,{name:"attachment"})]),_:1},8,["label","onClick"])):B("",!0),e.status?(a(),u("span",{key:1,class:de(["perm-pill",["perm-"+e.status.permission,{open:Ut.value}]]),role:"button",tabindex:"0",onClick:Pe(wt,["stop"]),onKeydown:[mn(wt,["enter"]),mn(Pe(wt,["prevent"]),["space"])]},d(Xn.value),43,Q_)):B("",!0),Ut.value&&e.status?(a(),u("div",{key:2,class:"perm-dropdown",style:ct(vs.value),role:"menu",onClick:$e[6]||($e[6]=Pe(()=>{},["stop"]))},[(a(),u(ye,null,Be(on,Me=>l("button",{key:Me.mode,class:de(["pd-row",{"is-current":Me.mode===e.status.permission}]),role:"menuitem",onClick:we=>Pn(Me.mode)},[l("span",Z_,[Me.mode===e.status.permission?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",X_,[l("span",{class:"pd-name",style:ct({color:Me.color})},d(r(c)(Me.labelKey)),5),l("span",J_,d(r(c)(Me.descKey)),1)])],10,Y_)),64))],4)):B("",!0),e.status?(a(),u("div",{key:3,ref_key:"modesRef",ref:Qe,class:"modes"},[l("button",{type:"button",class:de(["mode-pill",{on:pt.value,open:qe.value}]),onClick:Pe(Pt,["stop"])},[l("span",e9,d(r(c)("status.modesLabel")),1),qt.value?(a(),u("span",t9,d(r(c)("status.planLabel")),1)):B("",!0),Mt.value?(a(),u("span",n9,d(r(c)("status.swarmLabel")),1)):B("",!0),It.value?(a(),u("span",s9,d(r(c)("status.supermoonLabel")),1)):B("",!0),yt.value?(a(),u("span",o9,d(r(c)("status.goalLabel")),1)):B("",!0)],2),(a(),Z(po,{to:"body"},[qe.value?(a(),u("div",{key:0,ref_key:"modesMenuRef",ref:ot,class:"modes-menu",style:ct(an.value),role:"menu"},[l("button",{type:"button",class:de(["mode-row",{on:qt.value}]),role:"menuitem",onClick:$e[7]||($e[7]=Me=>i("togglePlan"))},[l("span",i9,[I(ae,{name:"file-edit",size:"sm"})]),l("span",a9,[l("span",l9,d(r(c)("status.planLabel")),1),l("span",r9,d(r(c)("status.planDesc")),1)]),l("span",{class:de(["mode-switch",{on:qt.value}])},[...$e[23]||($e[23]=[l("span",{class:"mode-knob"},null,-1)])],2)],2),l("button",{type:"button",class:de(["mode-row",{on:Mt.value}]),role:"menuitem",onClick:$e[8]||($e[8]=Me=>i("toggleSwarm"))},[l("span",c9,[I(ae,{name:"sparkles",size:"sm"})]),l("span",u9,[l("span",d9,d(r(c)("status.swarmLabel")),1),l("span",p9,d(r(c)("status.swarmDesc")),1)]),l("span",{class:de(["mode-switch",{on:Mt.value}])},[...$e[24]||($e[24]=[l("span",{class:"mode-knob"},null,-1)])],2)],2),l("button",{type:"button",class:de(["mode-row",{on:It.value}]),role:"menuitem",onClick:$e[9]||($e[9]=Me=>i("toggleSupermoon"))},[l("span",f9,[I(ae,{name:"moon-stars",size:"sm"})]),l("span",m9,[l("span",v9,d(r(c)("status.supermoonLabel")),1),l("span",h9,d(r(c)("status.supermoonDesc")),1)]),l("span",{class:de(["mode-switch",{on:It.value}])},[...$e[25]||($e[25]=[l("span",{class:"mode-knob"},null,-1)])],2)],2),l("div",{class:de(["mode-row mode-row-goal",{on:Ze.value||s.goalMode}])},[l("button",{type:"button",class:"mode-row-main",role:"menuitem",onClick:$e[10]||($e[10]=Me=>Ze.value?i("focusGoal"):i("toggleGoal"))},[l("span",g9,[I(ae,{name:"target",size:"sm"})]),l("span",y9,[l("span",k9,d(r(c)("status.goalLabel")),1),l("span",b9,d(r(c)("status.goalDesc")),1)]),Ze.value?B("",!0):(a(),u("span",{key:0,class:de(["mode-switch",{on:s.goalMode}])},[...$e[26]||($e[26]=[l("span",{class:"mode-knob"},null,-1)])],2))]),Ze.value?(a(),u("div",w9,[he.value?(a(),Z(We,{key:0,size:"sm",variant:"secondary",class:"mode-row-action",onClick:$e[11]||($e[11]=Me=>i("controlGoal","pause"))},{default:j(()=>[I(ae,{name:"pause",size:"sm"}),l("span",null,d(r(c)("status.goalPause")),1)]),_:1})):B("",!0),ge.value?(a(),Z(We,{key:1,size:"sm",variant:"primary",class:"mode-row-action",onClick:$e[12]||($e[12]=Me=>i("controlGoal","resume"))},{default:j(()=>[I(ae,{name:"play",size:"sm"}),l("span",null,d(r(c)("status.goalResume")),1)]),_:1})):B("",!0),I(We,{size:"sm",variant:"danger-soft",class:"mode-row-action",onClick:$e[13]||($e[13]=Me=>i("controlGoal","cancel"))},{default:j(()=>[I(ae,{name:"close",size:"sm"}),l("span",null,d(r(c)("status.goalCancel")),1)]),_:1})])):B("",!0)],2)],4)):B("",!0)]))],512)):B("",!0)]),l("div",S9,[en.value?(a(),u("button",{key:0,class:"compact-chip",onClick:$e[14]||($e[14]=Pe(Me=>i("compact"),["stop"]))},"/compact")):B("",!0),I(Je,{text:gt.value},{default:j(()=>[e.status&&!e.hideContext?(a(),u("span",{key:0,class:"ctx-group",role:"img",tabindex:"0","aria-label":gt.value},[I(D_,{pct:zt.value},null,8,["pct"])],8,C9)):B("",!0)]),_:1},8,["text"]),e.status?(a(),u("span",{key:1,class:de(["model-pill",{open:Ht.value}]),role:"button",tabindex:"0",onClick:Pe(dt,["stop"]),onKeydown:[mn(dt,["enter"]),mn(Pe(dt,["prevent"]),["space"])]},[l("b",null,d(e.status.model),1),jt.value?(a(),u("span",x9,d(jt.value),1)):B("",!0),I(ae,{class:"cv",name:"chevron-down",size:"sm"})],42,_9)):B("",!0),e.running?(a(),Z(Je,{key:2,text:r(c)("composer.interruptTitle")},{default:j(()=>[l("button",{class:"stop","aria-label":r(c)("composer.interrupt"),onClick:$e[15]||($e[15]=Me=>i("interrupt"))},[I(ae,{name:"stop",size:"sm"})],8,$9)]),_:1},8,["text"])):B("",!0),l("button",{class:de(["send",{"is-starting":e.starting}]),"aria-label":Tn.value,disabled:e.starting,onClick:$e[16]||($e[16]=Me=>Ue())},[e.starting?(a(),Z(Jt,{key:0,size:"sm"})):(a(),Z(ae,{key:1,name:"send",size:"sm"}))],10,M9)]),Ht.value&&e.status?(a(),u("div",{key:0,class:"model-dropdown",role:"menu",onClick:$e[18]||($e[18]=Pe(()=>{},["stop"]))},[ts.value.length>0?(a(),u("div",I9,d(r(c)("status.starredModels")),1)):B("",!0),(a(!0),u(ye,null,Be(ts.value,Me=>(a(),u("button",{key:Me.id,class:de(["md-row",{"is-current":Me.id===e.status.modelId}]),role:"menuitem",onClick:we=>ns(Me.id)},[l("span",A9,[Me.id===e.status.modelId?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",L9,d(Me.displayName??Me.model),1),l("span",B9,d(Me.provider),1),I(ae,{class:"md-star",name:"star",size:"sm"})],10,T9))),128)),ts.value.length>0?(a(),u("div",P9)):B("",!0),Rn.value.length>0?(a(),u("div",E9,d(En.value),1)):B("",!0),(a(!0),u(ye,null,Be(Rn.value,Me=>(a(),u("button",{key:Me.id,class:de(["md-row",{"is-current":Me.id===e.status.modelId}]),role:"menuitem",onClick:we=>ns(Me.id)},[l("span",O9,[Me.id===e.status.modelId?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",D9,d(Me.displayName??Me.model),1),es(Me.id)?(a(),Z(ae,{key:0,class:"md-star",name:"star",size:"sm"})):B("",!0)],10,R9))),128)),Rn.value.length>0?(a(),u("div",z9)):B("",!0),l("div",{class:de(["md-thinking",{"is-readonly":pn.value}])},[l("span",F9,d(r(c)("status.thinkingLabel")),1),bn.value==="unsupported"?(a(),u("span",q9,d(r(c)("status.modeNotSupported")),1)):(a(),u("div",{key:1,class:"effort-segments",role:"group","aria-label":r(c)("status.thinkingLabel")},[(a(!0),u(ye,null,Be(Ft.value,Me=>(a(),u("button",{key:Me,type:"button",class:de(["effort-seg",{"is-active":Me===Bt.value}]),disabled:pn.value,onClick:we=>Nn(Me)},d(Kt(Me)),11,N9))),128))],8,W9))],2),$e[27]||($e[27]=l("div",{class:"md-divider"},null,-1)),l("div",H9,d(r(c)("status.cacheNote")),1),$e[28]||($e[28]=l("div",{class:"md-divider"},null,-1)),l("button",{class:"md-row md-row-more",role:"menuitem",onClick:$e[17]||($e[17]=Me=>{Ot(),i("pickModel")})},[l("span",U9,d(r(c)("status.moreModels")),1)])])):B("",!0)],512)]),l("div",{class:de(["drop-overlay",{show:r(le)}]),"aria-hidden":"true"},[l("div",V9,[I(ae,{name:"file-plus",size:"lg"}),l("span",null,d(r(c)("composer.dropToAttach")),1)])],2)],34))}}),Su=Te(j9,[["__scopeId","data-v-6707aedd"]]),K9={key:0,class:"ui-card__head"},G9={class:"ui-card__body"},Q9={key:1,class:"ui-card__foot"},Y9=Ie({__name:"Card",props:{elevated:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),u("div",{class:de(["ui-card",{"is-elevated":e.elevated}])},[t.$slots.head?(a(),u("div",K9,[bt(t.$slots,"head",{},void 0,!0)])):B("",!0),l("div",G9,[bt(t.$slots,"default",{},void 0,!0)]),t.$slots.foot?(a(),u("div",Q9,[bt(t.$slots,"foot",{},void 0,!0)])):B("",!0)],2))}}),cl=Te(Y9,[["__scopeId","data-v-9c9f9a9a"]]),Z9={class:"goal-kicker"},X9={key:0,class:"goal-progress","aria-hidden":"true"},J9={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}=Fe(),{confirm:i}=Ro(),c=T(!1);Ee(()=>n.forceExpanded,()=>{n.forceExpanded!==void 0&&(c.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 v(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 g(x){const h=Math.max(0,Math.round(x/1e3)),m=Math.floor(h/60),w=h%60;return m<=0?`${w}s`:m<60?`${m}m ${w}s`:`${Math.floor(m/60)}h ${m%60}m`}async function C(){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(),Z(cl,{class:de(["goal-strip",{expanded:c.value}])},{head:j(()=>[l("button",{class:"goal-row",type:"button",onClick:h[0]||(h[0]=m=>c.value=!c.value)},[I(ae,{class:"goal-icon",name:"target",size:"md"}),l("span",Z9,d(r(o)("status.goalLabel")),1),l("span",{class:de(["goal-objective",{"expanded-hidden":c.value}])},d(e.goal.objective),3),I(hn,{variant:e.goal.status==="active"?"success":e.goal.status==="blocked"?"danger":e.goal.status==="paused"?"warning":"neutral",size:"sm",class:"goal-status"},{default:j(()=>[ve(d(v(e.goal.status)),1)]),_:1},8,["variant"]),e.goal.budget.tokenBudget!==null?(a(),u("span",X9,[l("span",{class:"goal-progress-fill",style:ct({width:`${p.value}%`})},null,4)])):B("",!0),I(ae,{class:de(["goal-chevron",{open:c.value}]),name:"chevron-right",size:"md"},null,8,["class"])])]),default:j(()=>[l("div",J9,d(e.goal.objective),1),e.goal.completionCriterion?(a(),u("div",e6,[l("span",null,d(r(o)("workspace.doneWhen")),1),l("p",null,d(e.goal.completionCriterion),1)])):B("",!0)]),foot:j(()=>[l("div",{class:"goal-footer",inert:!c.value,"aria-hidden":!c.value},[l("div",n6,[l("span",null,d(e.goal.turnsUsed)+" turns",1),l("span",null,d(r(Gn)(e.goal.tokensUsed))+" tokens",1),l("span",null,d(g(e.goal.wallClockMs)),1),e.goal.budget.tokenBudget!==null?(a(),u("span",s6,d(p.value)+"% token budget",1)):B("",!0)]),l("div",o6,[e.goal.status==="active"?(a(),Z(We,{key:0,size:"sm",variant:"secondary",class:"goal-action",onClick:h[1]||(h[1]=Pe(m=>s("controlGoal","pause"),["stop"]))},{default:j(()=>[I(ae,{name:"pause",size:"md"}),l("span",null,d(r(o)("status.goalPause")),1)]),_:1})):B("",!0),e.goal.status==="paused"||e.goal.status==="blocked"?(a(),Z(We,{key:1,size:"sm",variant:"primary",class:"goal-action",onClick:h[2]||(h[2]=Pe(m=>s("controlGoal","resume"),["stop"]))},{default:j(()=>[I(ae,{name:"play",size:"md"}),l("span",null,d(r(o)("status.goalResume")),1)]),_:1})):B("",!0),I(We,{size:"sm",variant:"danger-soft",class:"goal-action",onClick:Pe(C,["stop"])},{default:j(()=>[I(ae,{name:"close",size:"md"}),l("span",null,d(r(o)("status.goalCancel")),1)]),_:1})])],8,t6)]),_:1},8,["class"]))}}),a6=Te(i6,[["__scopeId","data-v-9e444f61"]]),l6={class:"qh"},r6={class:"qtitle"},c6={key:0,class:"qstep"},u6={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"},x6={key:0,class:"qopt-desc"},$6={class:"qopt-glyph"},M6={key:0,class:"chk"},I6={key:1,class:"rad"},T6={class:"qopt-label"},A6=["placeholder"],L6={class:"qfoot"},B6=Ie({__name:"QuestionCard",props:{question:{},busyKind:{}},emits:["answer","dismiss"],setup(e,{emit:t}){const n=e,{t:s}=Fe(),o=t,i=T(0),c=T(!1),p=$(()=>n.question.questions[i.value]),v=$(()=>n.question.questions.length);function g(){i.value>0&&i.value--}function C(){i.value=0&&pe0:V.kind==="multiWithOther"?V.optionIds.length>0||V.otherText.trim().length>0:V.kind==="other"?V.text.trim().length>0:!0:!1}function m(){return h(p.value.id)}const w=T({});function k(pe){return pe.recommended===!0?!0:/\b(?:recommended|recommend)\b|推荐/.test(`${pe.label} ${pe.description??""}`.toLowerCase())}function b(){const pe={...w.value};let V=!1;for(const ee of n.question.questions){if(pe[ee.id])continue;const le=ee.options.filter(k);le.length!==0&&(pe[ee.id]=ee.multiSelect?{kind:"multi",optionIds:le.map(me=>me.id)}:{kind:"single",optionId:le[0].id},V=!0)}V&&(w.value=pe)}Ee(()=>n.question.questionId,()=>{i.value=0,c.value=!1,w.value={},y.value={}}),Ee(()=>n.question,()=>{i.value>=n.question.questions.length&&(i.value=0),b()},{immediate:!0,deep:!0});function _(pe,V){const ee=w.value[pe];if(ee&&ee.kind==="single"&&ee.optionId===V){const le={...w.value};delete le[pe],w.value=le}else w.value={...w.value,[pe]:{kind:"single",optionId:V}}}function O(pe,V){const ee=w.value[pe],le=ee&&(ee.kind==="multi"||ee.kind==="multiWithOther")?ee.kind==="multi"?[...ee.optionIds]:[...ee.optionIds]:[],me=le.indexOf(V);me>=0?le.splice(me,1):le.push(V);const _e=w.value[pe],ce=_e&&_e.kind==="multiWithOther"?_e.otherText:"";ce?w.value={...w.value,[pe]:{kind:"multiWithOther",optionIds:le,otherText:ce}}:w.value={...w.value,[pe]:{kind:"multi",optionIds:le}}}const y=T({}),L=T(null);function N(pe){const V=n.question.questions.find(le=>le.id===pe);if(!V)return;const ee=y.value[pe]??"";if(V.multiSelect){const le=w.value[pe],me=le&&(le.kind==="multi"||le.kind==="multiWithOther")?le.kind==="multi"?[...le.optionIds]:[...le.optionIds]:[];w.value={...w.value,[pe]:{kind:"multiWithOther",optionIds:me,otherText:ee}}}else w.value={...w.value,[pe]:{kind:"other",text:ee}}}function H(pe){N(pe),Ne(()=>L.value?.focus())}function U(pe,V){const ee=w.value[pe];return ee?ee.kind==="single"?ee.optionId===V:ee.kind==="multi"||ee.kind==="multiWithOther"?ee.optionIds.includes(V):!1:!1}function Q(pe){const V=w.value[pe];return!!(V&&(V.kind==="other"||V.kind==="multiWithOther"))}function P(){return n.question.questions.every(pe=>h(pe.id))}const M=$(()=>n.busyKind==="answer"),A=$(()=>n.busyKind==="dismiss"),R=$(()=>!!n.busyKind);function ne(){if(R.value||!P())return;const pe={answers:w.value,method:"click"};o("answer",n.question.questionId,pe)}function se(){R.value||o("dismiss",n.question.questionId)}function ke(pe){const V=(document.activeElement?.tagName??"").toLowerCase(),ee=V==="input"||V==="textarea";if(R.value)return;if(pe.key==="Enter"){if(pe.preventDefault(),c.value)return;i.value=1&&le<=9){pe.preventDefault();const me=p.value,_e=le-1,ce=me.options[_e];ce&&(me.multiSelect?O(me.id,ce.id):_(me.id,ce.id))}}return lt(()=>document.addEventListener("keydown",ke)),ut(()=>document.removeEventListener("keydown",ke)),(pe,V)=>(a(),Z(cl,{class:de(["qcard",{minimized:c.value}])},zr({head:j(()=>[l("div",l6,[V[5]||(V[5]=l("span",{class:"qh-ic"},"?",-1)),l("span",r6,d(r(s)("question.title")),1),v.value>1&&!c.value?(a(),u("span",c6,d(r(s)("question.step",{current:i.value+1,total:v.value})),1)):B("",!0),c.value?(a(),u("span",u6,d(p.value.question),1)):B("",!0),I(et,{class:"qmin",size:"sm",label:c.value?r(s)("question.expand"):r(s)("question.minimize"),onClick:V[0]||(V[0]=ee=>c.value=!c.value)},{default:j(()=>[c.value?(a(),Z(ae,{key:0,name:"chevron-up",size:"md"})):(a(),Z(ae,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[c.value?void 0:{name:"default",fn:j(()=>[l("div",d6,[v.value>1?(a(),u("div",{key:0,class:"qsteps",role:"tablist","aria-label":r(s)("question.step",{current:i.value+1,total:v.value})},[(a(!0),u(ye,null,Be(n.question.questions,(ee,le)=>(a(),u("button",{key:ee.id,type:"button",class:de(["qstep-dot",{active:le===i.value,answered:h(ee.id)}]),"aria-selected":le===i.value,"aria-label":r(s)("question.step",{current:le+1,total:v.value}),onClick:me=>x(le)},[l("span",m6,d(le+1),1)],10,f6))),128))],8,p6)):B("",!0),p.value.header?(a(),u("div",v6,[I(hn,{variant:"neutral",size:"sm"},{default:j(()=>[ve(d(p.value.header),1)]),_:1})])):B("",!0),l("div",h6,d(p.value.question),1),p.value.body?(a(),Z(No,{key:2,text:p.value.body,class:"qmdbody"},null,8,["text"])):B("",!0),l("div",g6,[(a(!0),u(ye,null,Be(p.value.options,(ee,le)=>(a(),u("label",{key:ee.id,class:de(["qopt",{selected:U(p.value.id,ee.id)}]),onClick:Pe(me=>p.value.multiSelect?O(p.value.id,ee.id):_(p.value.id,ee.id),["prevent"])},[l("span",k6,d(le+1),1),l("span",b6,[p.value.multiSelect?(a(),u("span",w6,d(U(p.value.id,ee.id)?"■":"□"),1)):(a(),u("span",S6,d(U(p.value.id,ee.id)?"●":"○"),1))]),l("span",C6,[l("span",_6,d(ee.label),1),ee.description?(a(),u("span",x6,d(ee.description),1)):B("",!0)])],10,y6))),128)),p.value.allowOther?(a(),u("label",{key:0,class:de(["qopt",{selected:Q(p.value.id)}]),onClick:V[4]||(V[4]=Pe(ee=>H(p.value.id),["prevent"]))},[V[6]||(V[6]=l("span",{class:"qopt-key"},null,-1)),l("span",$6,[p.value.multiSelect?(a(),u("span",M6,d(Q(p.value.id)?"■":"□"),1)):(a(),u("span",I6,d(Q(p.value.id)?"●":"○"),1))]),l("span",T6,d(p.value.otherLabel??r(s)("question.otherDefault")),1),rt(l("input",{ref_key:"otherInputEl",ref:L,"onUpdate:modelValue":V[1]||(V[1]=ee=>y.value[p.value.id]=ee),class:"other-input",type:"text",placeholder:p.value.otherLabel??r(s)("question.otherDefault"),onInput:V[2]||(V[2]=ee=>N(p.value.id)),onFocus:V[3]||(V[3]=ee=>N(p.value.id))},null,40,A6),[[gn,y.value[p.value.id]]])],2)):B("",!0)])])]),key:"0"},c.value?void 0:{name:"foot",fn:j(()=>[l("div",L6,[i.value[ve(d(r(s)("question.nextQuestion")),1)]),_:1},8,["disabled"])):(a(),Z(We,{key:1,class:"qfoot-btn qfoot-main",size:"sm",variant:"primary",disabled:!P(),loading:M.value,onClick:ne},{default:j(()=>[ve(d(r(s)("question.submit")),1)]),_:1},8,["disabled","loading"])),v.value>1?(a(),Z(We,{key:2,class:"qfoot-btn",size:"sm",variant:"secondary",disabled:i.value===0||R.value,onClick:g},{default:j(()=>[ve(d(r(s)("question.back")),1)]),_:1},8,["disabled"])):B("",!0),I(We,{class:"qfoot-btn",size:"sm",variant:"ghost",loading:A.value,disabled:R.value,onClick:se},{default:j(()=>[ve(d(r(s)("question.dismiss")),1)]),_:1},8,["loading","disabled"])])]),key:"1"}]),1032,["class"]))}}),P6=Te(B6,[["__scopeId","data-v-2af45fec"]]),E6={class:"ah"},R6={class:"akind"},O6={class:"apath"},D6={class:"ah-path"},z6={key:1,class:"diff"},F6={class:"dg"},q6={class:"dc"},W6={key:2,class:"body-shell"},N6={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"},e7={key:0,class:"chip-detail"},t7={key:5,class:"body-chip"},n7={key:0,class:"chip-label"},s7={class:"chip-value"},o7={key:6,class:"body-chip"},i7={class:"chip-label"},a7={class:"chip-value"},l7={key:0,class:"chip-detail"},r7={key:7,class:"body-chip"},c7={class:"chip-label"},u7={class:"chip-value"},d7={key:0,class:"chip-detail"},p7={key:8,class:"body-todo"},f7={class:"todo-glyph"},m7={key:9,class:"body-plan"},v7={key:10,class:"body-generic"},h7={class:"gen-text"},g7={key:11,class:"feedback-wrap"},y7=["placeholder"],k7={class:"feedback-hint"},b7={key:0,class:"plan-actions"},w7={key:1,class:"abtn"},S7=Ie({__name:"ApprovalCard",props:{block:{},agentName:{},busy:{type:Boolean}},emits:["decide"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Fe(),i=$(()=>{const M=n.block;return M.kind!=="plan_review"?null:{plan:M.plan,path:M.path,options:M.options??[]}}),c=T(!1),p=["shell","diff","file","fileop","url","search","invocation","todo","plan_review","generic"];function v(){const M=p.includes(n.block.kind)?n.block.kind:"generic";return o(`approval.title.${M}`)}const g=T(!1),C=T(""),x=T(null);function h(){n.busy||(g.value=!0,C.value="",setTimeout(()=>x.value?.focus(),0))}function m(){if(n.busy)return;const M=C.value.trim();i.value?_("feedback",{decision:"rejected",selectedLabel:"Revise",feedback:M||void 0}):_("feedback",{decision:"rejected",feedback:M||void 0}),g.value=!1,C.value=""}function w(){g.value=!1,C.value=""}function k(M){M.key==="Enter"&&!M.shiftKey?(M.preventDefault(),m()):M.key==="Escape"&&(M.preventDefault(),w())}const b=T(null);Ee(()=>n.busy,M=>{M||(b.value=null)});function _(M,A){n.busy||(b.value=M,s("decide",A))}function O(){_("approve",{decision:"approved"})}function y(){_("approveSession",{decision:"approved",scope:"session"})}function L(){_("reject",{decision:"rejected"})}function N(){_("approvePlan",{decision:"approved"})}function H(M){_(`option:${M}`,{decision:"approved",selectedLabel:M})}function U(){n.busy||h()}function Q(){_("rejectAndExit",{decision:"rejected",selectedLabel:"Reject and Exit"})}function P(M){const A=(document.activeElement?.tagName??"").toLowerCase();if(A==="input"||A==="textarea"||n.busy||c.value)return;const R=i.value;if(R){if(R.options.length===0){M.key==="1"?(M.preventDefault(),N()):M.key==="2"?(M.preventDefault(),U()):M.key==="3"&&(M.preventDefault(),Q());return}M.key==="1"&&R.options[0]?(M.preventDefault(),H(R.options[0].label)):M.key==="2"&&R.options[1]?(M.preventDefault(),H(R.options[1].label)):M.key==="3"&&R.options[2]&&(M.preventDefault(),H(R.options[2].label));return}M.key==="1"?(M.preventDefault(),O()):M.key==="2"?(M.preventDefault(),y()):M.key==="3"?(M.preventDefault(),L()):M.key==="4"&&(M.preventDefault(),h())}return lt(()=>document.addEventListener("keydown",P)),ut(()=>document.removeEventListener("keydown",P)),(M,A)=>(a(),Z(cl,{class:de(["appr",{minimized:c.value}])},zr({head:j(()=>[l("div",E6,[A[2]||(A[2]=l("span",{class:"ah-ic"},"!",-1)),l("span",R6,d(v()),1),l("span",O6,[e.block.kind==="diff"||e.block.kind==="file"||e.block.kind==="fileop"?(a(),u(ye,{key:0},[ve(d(e.block.path),1)],64)):e.block.kind==="shell"?(a(),u(ye,{key:1},[ve(d(e.block.command),1)],64)):e.block.kind==="url"?(a(),u(ye,{key:2},[ve(d(e.block.url),1)],64)):e.block.kind==="search"?(a(),u(ye,{key:3},[ve(d(e.block.query),1)],64)):e.block.kind==="invocation"?(a(),u(ye,{key:4},[ve(d(e.block.name),1)],64)):e.block.kind==="generic"?(a(),u(ye,{key:5},[ve(d(e.block.summary),1)],64)):B("",!0)]),e.agentName&&!c.value?(a(),Z(hn,{key:0,variant:"neutral",size:"sm"},{default:j(()=>[ve(d(r(o)("approval.subagentBadge",{name:e.agentName})),1)]),_:1})):B("",!0),c.value?B("",!0):(a(),Z(hn,{key:1,variant:"warning",size:"sm",class:"aw"},{default:j(()=>[ve(d(r(o)("approval.required")),1)]),_:1})),I(et,{class:"amin",size:"sm",label:c.value?r(o)("question.expand"):r(o)("question.minimize"),onClick:A[0]||(A[0]=R=>c.value=!c.value)},{default:j(()=>[c.value?(a(),Z(ae,{key:0,name:"chevron-up",size:"md"})):(a(),Z(ae,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[c.value?void 0:{name:"default",fn:j(()=>[e.block.kind==="plan_review"&&e.block.path?(a(),Z(Je,{key:0,text:e.block.path},{default:j(()=>[l("div",D6,d(e.block.path),1)]),_:1},8,["text"])):B("",!0),e.block.kind==="diff"?(a(),u("div",z6,[(a(!0),u(ye,null,Be(e.block.diff,(R,ne)=>(a(),u("div",{key:ne,class:de(["dl",R.kind==="add"?"add":R.kind==="rem"?"del":""])},[l("span",F6,d(R.gutter),1),l("span",q6,d(R.text),1)],2))),128))])):e.block.kind==="shell"?(a(),u("div",W6,[l("div",N6,[A[3]||(A[3]=l("span",{class:"shell-dollar"},"$",-1)),ve(" "+d(e.block.command),1)]),e.block.cwd?(a(),u("div",H6,"cwd: "+d(e.block.cwd),1)):B("",!0),e.block.danger?(a(),u("div",U6,d(r(o)("approval.danger",{detail:e.block.danger})),1)):B("",!0)])):e.block.kind==="file"?(a(),u("div",V6,[l("div",j6,[l("span",K6,d(e.block.language??""),1)]),l("div",G6,[(a(!0),u(ye,null,Be(e.block.content.split(`
-`),(R,ne)=>(a(),u("div",{key:ne,class:"file-line"},[l("span",Q6,d(ne+1),1),l("span",Y6,d(R),1)]))),128))])])):e.block.kind==="fileop"?(a(),u("div",Z6,[l("span",X6,d(e.block.op),1),l("span",J6,d(e.block.path),1),e.block.detail?(a(),u("span",e7,d(e.block.detail),1)):B("",!0)])):e.block.kind==="url"?(a(),u("div",t7,[e.block.method?(a(),u("span",n7,d(e.block.method),1)):B("",!0),l("span",s7,d(e.block.url),1)])):e.block.kind==="search"?(a(),u("div",o7,[l("span",i7,d(r(o)("approval.searchQueryLabel")),1),l("span",a7,d(e.block.query),1),e.block.scope?(a(),u("span",l7,d(r(o)("approval.searchScope",{scope:e.block.scope})),1)):B("",!0)])):e.block.kind==="invocation"?(a(),u("div",r7,[l("span",c7,d(e.block.kind2),1),l("span",u7,d(e.block.name),1),e.block.description?(a(),u("span",d7,d(e.block.description),1)):B("",!0)])):e.block.kind==="todo"?(a(),u("div",p7,[(a(!0),u(ye,null,Be(e.block.items,(R,ne)=>(a(),u("div",{key:ne,class:"todo-item"},[l("span",f7,d(R.status==="done"||R.status==="completed"?"✓":"○"),1),l("span",{class:de(["todo-title",{"todo-done":R.status==="done"||R.status==="completed"}])},d(R.title),3)]))),128))])):e.block.kind==="plan_review"?(a(),u("div",m7,[I(No,{text:e.block.plan},null,8,["text"])])):(a(),u("div",v7,[l("span",h7,d(e.block.summary),1)])),g.value?(a(),u("div",g7,[rt(l("textarea",{ref_key:"feedbackRef",ref:x,"onUpdate:modelValue":A[1]||(A[1]=R=>C.value=R),class:"feedback-ta",placeholder:r(o)("approval.feedbackPlaceholder"),rows:"2",onKeydown:k},null,40,y7),[[gn,C.value]]),l("div",k7,d(r(o)("approval.feedbackHint")),1)])):B("",!0)]),key:"0"},c.value?void 0:{name:"foot",fn:j(()=>[i.value?(a(),u("div",b7,[i.value.options.length>0?(a(!0),u(ye,{key:0},Be(i.value.options,(R,ne)=>(a(),Z(Je,{key:ne,text:R.description},{default:j(()=>[I(We,{class:"kbtn",size:"sm",variant:"primary",loading:b.value===`option:${R.label}`,disabled:e.busy,onClick:se=>H(R.label)},{default:j(()=>[ve(d(R.label),1),I(is,{class:"k",keys:[String(ne+1)]},null,8,["keys"])]),_:2},1032,["loading","disabled","onClick"])]),_:2},1032,["text"]))),128)):(a(),Z(We,{key:1,class:"kbtn",size:"sm",variant:"primary",loading:b.value==="approvePlan",disabled:e.busy,onClick:N},{default:j(()=>[ve(d(r(o)("approval.approvePlan")),1),I(is,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"])),I(We,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:U},{default:j(()=>[ve(d(r(o)("approval.revise")),1),i.value.options.length===0?(a(),Z(is,{key:0,class:"k",keys:["2"]})):B("",!0)]),_:1},8,["disabled"]),I(We,{class:"kbtn",size:"sm",variant:"danger-soft",loading:b.value==="rejectAndExit",disabled:e.busy,onClick:Q},{default:j(()=>[ve(d(r(o)("approval.rejectAndExit")),1),i.value.options.length===0?(a(),Z(is,{key:0,class:"k",keys:["3"]})):B("",!0)]),_:1},8,["loading","disabled"])])):(a(),u("div",w7,[I(We,{class:"kbtn",size:"sm",variant:"primary",loading:b.value==="approve",disabled:e.busy,onClick:O},{default:j(()=>[ve(d(r(o)("approval.approve")),1),I(is,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"]),I(We,{class:"kbtn",size:"sm",variant:"secondary",loading:b.value==="approveSession",disabled:e.busy,onClick:y},{default:j(()=>[ve(d(r(o)("approval.approveSession")),1),I(is,{class:"k",keys:["2"]})]),_:1},8,["loading","disabled"]),I(We,{class:"kbtn",size:"sm",variant:"secondary",loading:b.value==="reject",disabled:e.busy,onClick:L},{default:j(()=>[ve(d(r(o)("approval.reject")),1),I(is,{class:"k",keys:["3"]})]),_:1},8,["loading","disabled"]),I(We,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:h},{default:j(()=>[ve(d(r(o)("approval.feedback")),1),I(is,{class:"k",keys:["4"]})]),_:1},8,["disabled"])]))]),key:"1"}]),1032,["class"]))}}),C7=Te(S7,[["__scopeId","data-v-458a9d7d"]]),_7=Ie({__name:"StatusGlyph",props:{status:{}},setup(e){const t=e,n={pending:"○",run:"●",done:"✓",fail:"✗"};return(s,o)=>(a(),u("span",{class:de(["status-glyph",`s-${t.status}`]),"aria-hidden":"true"},d(n[t.status]),3))}}),Cu=Te(_7,[["__scopeId","data-v-f595d935"]]),x7={class:"taskspane"},$7={class:"tp-head"},M7={class:"tp-title"},I7={class:"tp-count"},T7={class:"tp-list"},A7={key:0,class:"tp-empty"},L7=["role","onClick"],B7={class:"tp-name"},P7={class:"tp-time"},E7=["onClick"],R7={key:0,class:"tp-detail"},O7={key:0,class:"tp-codebox"},D7=["onClick"],z7={class:"tp-pre"},F7={class:"tp-cmd"},q7={key:1,class:"tp-codebox"},W7=["onClick"],N7={class:"tp-pre"},H7=Ie({__name:"TasksPane",props:{tasks:{}},emits:["cancel","open"],setup(e,{emit:t}){const n=t,{t:s}=Fe(),o=In(new Set),i=In(new Set),c=In(new Set);function p(w){return!!(w.output&&w.output.length>0||w.meta)}function v(w){if(w.kind==="subagent"){n("open",w.id);return}p(w)&&(o.has(w.id)?o.delete(w.id):o.add(w.id))}function g(w){return w.kind==="subagent"||p(w)}function C(w){return w==="run"||w==="done"||w==="fail"?w:"pending"}async function x(w,k,b){await Yt(w)&&(b.add(k),setTimeout(()=>b.delete(k),1500))}async function h(w){w.meta&&await x(w.meta,w.id,i)}async function m(w){const k=w.output?.join(`
-`)??"";k&&await x(k,w.id,c)}return(w,k)=>(a(),u("div",x7,[l("div",$7,[l("span",M7,d(r(s)("tasks.tag")),1),l("span",I7,d(e.tasks.length),1)]),l("div",T7,[e.tasks.length===0?(a(),u("div",A7,d(r(s)("tasks.emptyTasks")),1)):(a(!0),u(ye,{key:1},Be(e.tasks,b=>(a(),u("div",{key:b.id,class:de(["tp-row",{done:b.state==="done",fail:b.state==="fail",expandable:g(b)}])},[l("div",{class:"tp-main",role:g(b)?"button":void 0,onClick:_=>v(b)},[I(Cu,{status:C(b.state)},null,8,["status"]),l("span",B7,d(b.name),1),I(hn,{variant:"neutral",size:"sm"},{default:j(()=>[ve(d(b.kind),1)]),_:2},1024),l("span",P7,d(b.timing),1),b.state==="run"?(a(),u("button",{key:0,class:"tp-stop",onClick:Pe(_=>n("cancel",b.id),["stop"])},d(r(s)("tasks.stop")),9,E7)):B("",!0),b.kind==="subagent"?(a(),Z(ae,{key:1,class:"tp-chevron",name:"chevron-right",size:"sm"})):p(b)?(a(),Z(ae,{key:2,class:de(["tp-chevron",{open:o.has(b.id)}]),name:"chevron-right",size:"sm"},null,8,["class"])):B("",!0)],8,L7),o.has(b.id)&&p(b)?(a(),u("div",R7,[b.meta?(a(),u("div",O7,[l("button",{class:de(["tp-copy",{copied:i.has(b.id)}]),onClick:Pe(_=>h(b),["stop"])},d(i.has(b.id)?"已复制":"复制"),11,D7),l("pre",z7,[l("code",null,[l("span",F7,d(b.meta),1)])])])):B("",!0),b.output&&b.output.length>0?(a(),u("div",q7,[l("button",{class:de(["tp-copy",{copied:c.has(b.id)}]),onClick:Pe(_=>m(b),["stop"])},d(c.has(b.id)?"已复制":"复制"),11,W7),l("pre",N7,[l("code",null,[k[0]||(k[0]=ve(`
- `,-1)),(a(!0),u(ye,null,Be(b.output,(_,O)=>(a(),u("span",{key:O,class:"tp-line"},d(_),1))),128)),k[1]||(k[1]=ve(`
- `,-1))])])])):B("",!0)])):B("",!0)],2))),128))])]))}}),Mr=Te(H7,[["__scopeId","data-v-28fd5fc0"]]),U7={class:"todo-card"},V7={key:0,class:"tc-empty"},j7={class:"tc-name"},K7=Ie({__name:"TodoCard",props:{todos:{}},setup(e){const t=e,{t:n}=Fe();function s(o){return o==="in_progress"?"run":o}return(o,i)=>(a(),u("div",U7,[t.todos.length===0?(a(),u("div",V7,[I(ae,{name:"check-list",size:"md",class:"tc-empty-ico","aria-hidden":"true"}),l("span",null,d(r(n)("tasks.emptyTodo")),1)])):B("",!0),(a(!0),u(ye,null,Be(t.todos,(c,p)=>(a(),u("div",{key:p,class:de(["tc-row",`s-${c.status}`])},[I(Cu,{status:s(c.status)},null,8,["status"]),l("span",j7,d(c.title),1)],2))),128))]))}}),G7=Te(K7,[["__scopeId","data-v-99ab2067"]]),Q7={class:"terminal-panel"},Y7={key:0,class:"term-state"},Z7={key:1,class:"term-state"},X7={class:"term-toolbar"},J7=["aria-label"],ex=["aria-selected","onClick"],tx={class:"term-tab-label"},nx={key:0,class:"term-error",role:"alert"},sx={key:1,class:"term-exit"},ox={class:"term-input-row"},ix=["disabled","placeholder"],ax=Ie({__name:"TerminalPanel",props:{sessionId:{},store:{}},setup(e){const t=e,{t:n}=Fe(),s=Le(),o=T(""),i=T(!1),c=T(new Set),p=T(null),v=T(null),g=$(()=>t.store.terminals.value),C=$(()=>t.store.active.value),x=$(()=>t.store.activeLines.value),h=$(()=>t.store.loading.value),m=$(()=>t.store.error.value),w=$(()=>{const R=C.value?.exitCode;return R==null?"?":String(R)});let k=0;async function b(){const R=++k;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(R!==k)return;t.store.syncTerminals(ne);const se=t.store.terminals.value[0];se&&(t.store.setActive(se.id),t.store.attach(se.id))}catch(ne){if(R!==k)return;t.store.setError(L(ne)??n("terminal.listFailed"))}finally{R===k&&t.store.setLoading(!1)}}async function _(){if(!(!t.sessionId||i.value)){i.value=!0,t.store.setError(null);try{const R=await s.createTerminal(t.sessionId,{cols:uc,rows:dc});t.store.upsertTerminal(R),t.store.setActive(R.id),t.store.attach(R.id),await Ne(),M()}catch(R){t.store.setError(L(R)??n("terminal.createFailed"))}finally{i.value=!1}}}async function O(R){if(!(!t.sessionId||c.value.has(R))){c.value=new Set(c.value).add(R),t.store.setError(null);try{await s.closeTerminal(t.sessionId,R),t.store.detach(R),t.store.removeTerminal(R)}catch(ne){t.store.setError(L(ne)??n("terminal.closeFailed"))}finally{const ne=new Set(c.value);ne.delete(R),c.value=ne}}}function y(R){t.store.setActive(R),t.store.attach(R),M()}function L(R){return R instanceof Error&&R.message?R.message:null}let N=-1,H="";function U(){const R=C.value;if(!R||R.status==="exited")return;const ne=o.value;ne.trim().length!==0&&(t.store.submitInput(R.id,ne),o.value="",N=-1,M())}function Q(){const R=C.value?.history??[];if(R.length===0)return;if(N===-1)H=o.value,N=R.length-1;else if(N>0)N-=1;else return;const ne=R[N];ne!==void 0&&(o.value=ne)}function P(){const R=C.value?.history??[];if(N!==-1)if(N{v.value?.focus()})}function A(){const R=p.value;if(!R)return;R.scrollHeight-R.scrollTop-R.clientHeight<40&&(R.scrollTop=R.scrollHeight)}return Ee(()=>t.store.activeLines.value,A),Ee(()=>t.sessionId,()=>{b()}),lt(()=>{b()}),(R,ne)=>(a(),u("div",Q7,[h.value?(a(),u("div",Y7,[I(Jt,{size:"sm"}),l("span",null,d(r(n)("terminal.loading")),1)])):g.value.length===0?(a(),u("div",Z7,[l("span",null,d(r(n)("terminal.empty")),1),I(We,{variant:"secondary",size:"sm",loading:i.value,onClick:ne[0]||(ne[0]=se=>_())},{default:j(()=>[ve(d(r(n)("terminal.newTerminal")),1)]),_:1},8,["loading"])])):(a(),u(ye,{key:2},[l("div",X7,[g.value.length>1?(a(),u("div",{key:0,class:"term-tabs",role:"tablist","aria-label":r(n)("terminal.dockTerminal")},[(a(!0),u(ye,null,Be(g.value,(se,ke)=>(a(),u("button",{key:se.id,class:de(["term-tab",{active:se.id===t.store.activeId.value}]),type:"button",role:"tab","aria-selected":se.id===t.store.activeId.value,onClick:pe=>y(se.id)},[I(vo,{status:se.status},null,8,["status"]),l("span",tx,"#"+d(ke+1),1),I(et,{size:"sm",label:r(n)("terminal.closeTerminal"),disabled:c.value.has(se.id),onClick:Pe(pe=>O(se.id),["stop"])},{default:j(()=>[I(ae,{name:"close",size:"sm"})]),_:1},8,["label","disabled","onClick"])],10,ex))),128))],8,J7)):B("",!0),I(et,{class:"term-add",label:r(n)("terminal.newTerminal"),disabled:i.value,onClick:ne[1]||(ne[1]=se=>_())},{default:j(()=>[I(ae,{name:"plus",size:"sm"})]),_:1},8,["label","disabled"])]),m.value?(a(),u("div",nx,d(m.value),1)):B("",!0),C.value?.status==="exited"?(a(),u("div",sx,d(r(n)("terminal.exited",{code:w.value})),1)):B("",!0),C.value?(a(),u("pre",{key:2,ref_key:"preRef",ref:p,class:"term-output"},d(x.value),513)):B("",!0),l("div",ox,[ne[6]||(ne[6]=l("span",{class:"term-prompt"},"$",-1)),rt(l("input",{ref_key:"inputRef",ref:v,"onUpdate:modelValue":ne[2]||(ne[2]=se=>o.value=se),class:"term-input",disabled:!C.value||C.value.status==="exited",placeholder:r(n)("terminal.inputPlaceholder"),onKeydown:[ne[3]||(ne[3]=mn(Pe(se=>U(),["prevent"]),["enter"])),ne[4]||(ne[4]=mn(Pe(se=>Q(),["prevent"]),["up"])),ne[5]||(ne[5]=mn(Pe(se=>P(),["prevent"]),["down"]))]},null,40,ix),[[gn,o.value]])])],64))]))}}),lx=Te(ax,[["__scopeId","data-v-4d134005"]]),rx={class:"dock-work-head"},cx={key:0,class:"dock-work-tab static"},ux={key:1,class:"dock-work-tab static"},dx={key:2,class:"dock-work-tab static"},px={key:3,class:"dock-work-tab static"},fx={class:"dock-work-body"},mx={class:"dw-count"},vx={class:"dw-count"},hx={class:"dw-count"},gx={key:0,class:"dw-count"},yx=Ie({__name:"ChatDock",props:{sessionId:{},running:{type:Boolean},starting:{type:Boolean},queued:{},searchFiles:{type:Function},uploadImage:{type:Function},status:{},thinking:{},planMode:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},activationBadges:{},models:{},starredIds:{},skills:{},goal:{},goalExpandSignal:{},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","openBtw","createGoal","controlGoal","focusGoal","focusSwarm","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}=Fe(),c=$(()=>s.terminal!==void 0&&s.sessionId!==void 0),p=$(()=>s.terminal?.terminals.value.length??0),v=T(null),g=T(null),C=T(null),x=T(null);function h(O){return v.value?(v.value.loadForEdit(O),!0):!1}function m(O){v.value?.loadAttachmentsForEdit(O)}function w(){v.value?.focus()}function k(O){if(!s.dockPanel)return;const y=O.target;y&&(g.value?.contains(y)||C.value?.contains(y)||o("close-dock-panel"))}Ee(()=>s.dockPanel,O=>{typeof document>"u"||(document.removeEventListener("mousedown",k,!0),O&&document.addEventListener("mousedown",k,!0))},{immediate:!0});let b=null;function _(){const O=x.value?.offsetHeight??0;document.documentElement.style.setProperty("--dock-h",`${O}px`)}return lt(()=>{typeof ResizeObserver!="function"||!x.value||(b=new ResizeObserver(_),b.observe(x.value),_())}),ut(()=>{typeof document<"u"&&document.removeEventListener("mousedown",k,!0),b?.disconnect(),b=null}),t({loadForEdit:h,loadAttachmentsForEdit:m,focus:w}),(O,y)=>(a(),u("div",{ref_key:"dockRef",ref:x,class:de(["chat-dock",[e.mobile?"align-mobile":"align-center"]]),onClick:y[30]||(y[30]=Pe(()=>{},["stop"]))},[I(Io,{name:"dock-panel"},{default:j(()=>[e.dockPanel?(a(),u("div",{key:0,ref_key:"workPanelRef",ref:g,class:"dock-work-panel",onClick:y[3]||(y[3]=Pe(()=>{},["stop"]))},[l("div",rx,[e.dockPanel==="bash"?(a(),u("span",cx,d(r(i)("tasks.dockBash"))+" · "+d(e.bashRunning)+" "+d(r(i)("tasks.running")),1)):e.dockPanel==="subagent"?(a(),u("span",ux,d(r(i)("tasks.dockSubagent"))+" · "+d(e.subagentRunning)+" "+d(r(i)("tasks.running")),1)):e.dockPanel==="todos"?(a(),u("span",dx,d(r(i)("tasks.dockTodos"))+" · "+d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1)):e.dockPanel==="terminal"?(a(),u("span",px,d(r(i)("terminal.dockTerminal"))+" · "+d(p.value),1)):B("",!0)]),l("div",fx,[e.dockPanel==="bash"?(a(),Z(Mr,{key:0,tasks:e.bashTasks,onCancel:y[0]||(y[0]=L=>o("cancelTask",L))},null,8,["tasks"])):e.dockPanel==="subagent"?(a(),Z(Mr,{key:1,tasks:e.subagentTasks,onCancel:y[1]||(y[1]=L=>o("cancelTask",L)),onOpen:y[2]||(y[2]=L=>o("openAgent",L))},null,8,["tasks"])):e.dockPanel==="todos"?(a(),Z(G7,{key:2,todos:e.todos??[]},null,8,["todos"])):e.dockPanel==="terminal"&&e.terminal!==void 0?(a(),Z(lx,{key:3,"session-id":e.sessionId??"",store:e.terminal},null,8,["session-id","store"])):B("",!0)])],512)):B("",!0)]),_:1}),e.goal?(a(),Z(a6,{key:0,goal:e.goal,"force-expanded":e.goalExpandSignal,onControlGoal:y[4]||(y[4]=L=>o("controlGoal",L))},null,8,["goal","force-expanded"])):B("",!0),e.hasDockWork||c.value?(a(),u("div",{key:1,ref_key:"workbarRef",ref:C,class:"dock-workbar"},[e.bashTasks.length>0?(a(),Z($o,{key:0,active:e.dockPanel==="bash","aria-pressed":e.dockPanel==="bash",onClick:y[5]||(y[5]=L=>o("toggle-dock-panel","bash"))},{default:j(()=>[I(ae,{name:"clock",size:"md"}),l("span",null,d(r(i)("tasks.dockBash")),1),l("span",mx,[y[31]||(y[31]=ve("(",-1)),l("b",null,d(e.bashTasks.length),1),y[32]||(y[32]=ve(")",-1))])]),_:1},8,["active","aria-pressed"])):B("",!0),e.subagentTasks.length>0?(a(),Z($o,{key:1,active:e.dockPanel==="subagent","aria-pressed":e.dockPanel==="subagent",onClick:y[6]||(y[6]=L=>o("toggle-dock-panel","subagent"))},{default:j(()=>[I(ae,{name:"sparkles",size:"md"}),l("span",null,d(r(i)("tasks.dockSubagent")),1),l("span",vx,[y[33]||(y[33]=ve("(",-1)),l("b",null,d(e.subagentTasks.length),1),y[34]||(y[34]=ve(")",-1))])]),_:1},8,["active","aria-pressed"])):B("",!0),(e.todos?.length??0)>0?(a(),Z($o,{key:2,active:e.dockPanel==="todos","aria-pressed":e.dockPanel==="todos",onClick:y[7]||(y[7]=L=>o("toggle-dock-panel","todos"))},{default:j(()=>[I(ae,{name:"check-list",size:"md"}),l("span",null,d(r(i)("tasks.dockTodos")),1),l("span",hx,[y[35]||(y[35]=ve("(",-1)),l("b",null,d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1),y[36]||(y[36]=ve(")",-1))])]),_:1},8,["active","aria-pressed"])):B("",!0),c.value?(a(),Z($o,{key:3,active:e.dockPanel==="terminal","aria-pressed":e.dockPanel==="terminal",onClick:y[8]||(y[8]=L=>o("toggle-dock-panel","terminal"))},{default:j(()=>[I(ae,{name:"terminal",size:"md"}),l("span",null,d(r(i)("terminal.dockTerminal")),1),p.value>0?(a(),u("span",gx,[y[37]||(y[37]=ve("(",-1)),l("b",null,d(p.value),1),y[38]||(y[38]=ve(")",-1))])):B("",!0)]),_:1},8,["active","aria-pressed"])):B("",!0)],512)):B("",!0),e.pendingQuestion?(a(),Z(P6,{key:e.pendingQuestion.questionId,question:e.pendingQuestion,"busy-kind":e.questionBusyKind,onAnswer:y[9]||(y[9]=(L,N)=>o("answer",L,N)),onDismiss:y[10]||(y[10]=L=>o("dismiss",L))},null,8,["question","busy-kind"])):e.pendingApproval?(a(),Z(C7,{key:e.pendingApproval.approvalId,class:"dock-approval",block:e.pendingApproval.block,"agent-name":e.pendingApproval.agentName,busy:e.approvalBusy,onDecide:y[11]||(y[11]=L=>o("approval",e.pendingApproval.approvalId,L))},null,8,["block","agent-name","busy"])):(a(),Z(Su,{key:4,ref_key:"composerRef",ref:v,"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,"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:y[12]||(y[12]=L=>o("submit",L)),onSteer:y[13]||(y[13]=L=>o("steer",L)),onCommand:y[14]||(y[14]=L=>o("command",L)),onInterrupt:y[15]||(y[15]=L=>o("interrupt")),onSetPermission:y[16]||(y[16]=L=>o("setPermission",L)),onSetThinking:y[17]||(y[17]=L=>o("setThinking",L)),onTogglePlan:y[18]||(y[18]=L=>o("togglePlan")),onToggleSwarm:y[19]||(y[19]=L=>o("toggleSwarm")),onToggleSupermoon:y[20]||(y[20]=L=>o("toggleSupermoon")),onToggleGoal:y[21]||(y[21]=L=>o("toggleGoal")),onOpenBtw:y[22]||(y[22]=L=>o("openBtw")),onCreateGoal:y[23]||(y[23]=L=>o("createGoal",L)),onControlGoal:y[24]||(y[24]=L=>o("controlGoal",L)),onFocusGoal:y[25]||(y[25]=L=>o("focusGoal")),onFocusSwarm:y[26]||(y[26]=L=>o("focusSwarm")),onCompact:y[27]||(y[27]=L=>o("compact")),onPickModel:y[28]||(y[28]=L=>o("pickModel")),onSelectModel:y[29]||(y[29]=L=>o("selectModel",L))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]))],2))}}),kx=Te(yx,[["__scopeId","data-v-64ed7708"]]),bx=["type","value","placeholder","disabled","readonly"],wx=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=T();function i(v){s("update:modelValue",v.target.value)}function c(){o.value?.focus()}function p(){o.value?.select()}return t({focus:c,select:p,el:o}),(v,g)=>(a(),u("input",{ref_key:"el",ref:o,class:de(["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:g[0]||(g[0]=C=>v.$emit("focus",C)),onBlur:g[1]||(g[1]=C=>v.$emit("blur",C))},null,42,bx))}}),zn=Te(wx,[["__scopeId","data-v-340f0da2"]]),Sx={class:"conv-search",role:"search"},Cx={key:0,class:"conv-search-count"},_x={key:1,class:"conv-search-count conv-search-none"},xx=Ie({__name:"ConversationSearch",props:{query:{},total:{},activeIndex:{}},emits:["update:query","next","prev","close"],setup(e,{emit:t}){const{t:n}=Fe(),s=t,o=T(null);lt(()=>{o.value?.focus()});function i(c){c.key==="Enter"?(c.preventDefault(),c.shiftKey?s("prev"):s("next")):c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),s("close"))}return(c,p)=>(a(),u("div",Sx,[I(ae,{class:"conv-search-icon",name:"search",size:"sm"}),I(zn,{ref_key:"inputRef",ref:o,class:"conv-search-input",size:"sm",type:"text","model-value":e.query,placeholder:r(n)("conversation.searchPlaceholder"),"aria-label":r(n)("conversation.searchPlaceholder"),autocomplete:"off",spellcheck:"false","onUpdate:modelValue":p[0]||(p[0]=v=>s("update:query",v)),onKeydown:i},null,8,["model-value","placeholder","aria-label"]),e.total>0?(a(),u("span",Cx,d(r(n)("conversation.searchPosition",{current:Math.max(e.activeIndex,0)+1,total:e.total})),1)):e.query.trim().length>0?(a(),u("span",_x,d(r(n)("conversation.searchNoResults")),1)):B("",!0),I(et,{size:"sm",class:"conv-search-prev",label:r(n)("conversation.searchPrev"),disabled:e.total===0,onClick:p[1]||(p[1]=v=>s("prev"))},{default:j(()=>[I(ae,{name:"chevron-up",size:"sm"})]),_:1},8,["label","disabled"]),I(et,{size:"sm",class:"conv-search-next",label:r(n)("conversation.searchNext"),disabled:e.total===0,onClick:p[2]||(p[2]=v=>s("next"))},{default:j(()=>[I(ae,{name:"chevron-down",size:"sm"})]),_:1},8,["label","disabled"]),I(et,{size:"sm",class:"conv-search-close",label:r(n)("conversation.searchClose"),onClick:p[3]||(p[3]=v=>s("close"))},{default:j(()=>[I(ae,{name:"close",size:"sm"})]),_:1},8,["label"])]))}}),$x=Te(xx,[["__scopeId","data-v-c521ac2e"]]),Mx=["aria-label","aria-hidden"],Ix={class:"toc-scroll"},Tx=["onClick"],Ax={class:"toc-label"},Lx=240,Bx=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}=Fe(),i=T(null),c=T(!0);let p=null;function v(){const C=i.value,x=C?.offsetParent;if(!C||!x)return;const h=C.getBoundingClientRect().left,m=x.getBoundingClientRect().right;c.value=m-h>=Lx}const g=$(()=>!n.mobile&&!n.sessionLoading&&n.items.length>1);return Ee(g,C=>{p?.disconnect(),p=null,C&&Ne(()=>{const x=i.value,h=x?.offsetParent;!x||!h||(typeof ResizeObserver<"u"&&(p=new ResizeObserver(v),p.observe(h)),v())})},{immediate:!0}),vn(()=>{p?.disconnect(),p=null}),(C,x)=>g.value?(a(),u("nav",{key:0,ref_key:"navRef",ref:i,class:de(["conversation-toc",{"toc-clipped":!c.value||e.occluded}]),"aria-label":r(o)("conversation.toc"),"aria-hidden":c.value&&!e.occluded?void 0:!0},[l("div",Ix,[(a(!0),u(ye,null,Be(e.items,h=>(a(),u("button",{key:h.id,type:"button",class:de(["toc-row",{active:e.activeTurnId===h.id}]),onClick:m=>s("select",h.id)},[x[0]||(x[0]=l("span",{class:"toc-bar"},null,-1)),l("span",Ax,d(h.title),1)],10,Tx))),128))])],10,Mx)):B("",!0)}}),Px=Te(Bx,[["__scopeId","data-v-3f1c1f66"]]),Ex=5;function Rx(e,t,n,s=Ex){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(c=>c.id===t);i&&(o[s-1]=i)}return o}const ul={text:"",attachments:[]};Object.freeze(ul);Object.freeze(ul.attachments);function Ox(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 Dx(e,t){const n=t.trim();if(n.length===0)return[];const s=n.toLowerCase(),o=[];return e.forEach((i,c)=>{const p=Ox(i);if(p.length===0)return;const v=p.toLowerCase();let g=v.indexOf(s);for(;g!==-1;)o.push({turnId:i.id,turnIndex:c,start:g,end:g+n.length}),g=v.indexOf(s,g+n.length)}),o}function zx(e,t){return t<=0?-1:e<0?0:(e+1)%t}function Fx(e,t){return t<=0?-1:e<0?t-1:(e-1+t)%t}const qx={class:"chat-layout"},Wx={class:"empty-hint"},Nx={key:0,class:"empty-hint-text"},Hx={key:1,class:"ws-pick"},Ux={class:"ws-pick-name"},Vx={key:1,class:"ws-pick-menu"},jx=["onClick"],Kx={class:"ws-pick-item-name"},Gx={class:"ws-pick-item-path"},Qx=["aria-label"],Yx={key:0,class:"abort-toast",role:"status","aria-live":"polite"},Zx={class:"abort-toast-text"},sa=80,Ir=1e3,Xx=420,Jx=3e3,e$=Ie({__name:"ConversationPane",props:{turns:{},sessionId:{},approvals:{},gitInfo:{},tasks:{},todos:{},goal:{},activationBadges:{},status:{},thinking:{},planMode:{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},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","createGoal","controlGoal","compact","pickModel","selectModel","openFile","openMedia","openThinking","openCompaction","openAgent","openToolDiff","openChanges","refreshGitStatus","editMessage","selectWorkspace","addWorkspace","openPr","renameSession","forkSession","archiveSession","exportSession"],setup(e,{expose:t,emit:n}){const{t:s}=Fe(),o=e,i=n,c=T(!1),p=T(!1),v=$(()=>o.workspaces?.find(f=>f.id===o.activeWorkspaceId)?.name??o.workspaceName??""),g=$(()=>(o.workspaces?.length??0)>0),C=$(()=>Rx(o.workspaces??[],o.activeWorkspaceId,p.value)),x=$(()=>(o.workspaces?.length??0)-C.value.length);Ee(c,W=>{W||(p.value=!1)});function h(W){c.value=!1,W!==o.activeWorkspaceId&&i("selectWorkspace",W)}Ws(ze.contentAlign);const m=T(null),w=T(null),k=T(null),b=T(!1),_=T(0);let O=null;function y(W,f){const S=k.value??w.value;return!S||S.loadForEdit(W)===!1?!1:(S.loadAttachmentsForEdit(f??[]),!0)}function L(){b.value=!0,O!==null&&clearTimeout(O),O=setTimeout(()=>{O=null,b.value=!1},2e3)}function N(){_.value++}const H=$(()=>o.tasks.filter(W=>W.kind!=="subagent")),U=$(()=>o.tasks.filter(W=>W.kind==="subagent"&&W.runInBackground)),Q=$(()=>H.value.filter(W=>W.state==="run").length),P=$(()=>U.value.filter(W=>W.state==="run").length);function M(W){const f=o.tasks,S=f.find(G=>G.id===W)??f.find(G=>G.parentToolCallId===W);if(S)return S.id;const E=f.filter(G=>G.kind==="subagent"&&!G.parentToolCallId);if(E.length===1)return E[0].id}lo("resolveAgentTaskId",M),lo("pinScroll",vt),lo("sessionId",()=>o.sessionId);const A=$(()=>(o.todos??[]).filter(W=>W.status==="done").length),R=$(()=>H.value.length>0||U.value.length>0||(o.todos?.length??0)>0||(o.queued?.length??0)>0),ne=T(null),se=$(()=>o.gitInfo?o.changes?.length??0:0);function ke(W){ne.value=ne.value===W?null:W}function pe(){ne.value=null}Ee(R,W=>{!W&&ne.value!=="terminal"&&pe()});function V(W){if(W.role==="compaction")return s("conversation.compactedPlain");if(W.role==="user"){if(W.skillActivation)return`/${W.skillActivation.name}`;if(W.pluginCommand)return`/${W.pluginCommand.pluginId}:${W.pluginCommand.commandName}`;const S=W.text.trim().replaceAll(/\s+/g," ");return S.length>0?S:"user"}const f=(W.text||W.thinking||"").trim().replaceAll(/\s+/g," ");return f.length>0?f:(W.tools?.length??0)>0?`${W.tools.length} tools`:"kimi"}const ee=$(()=>o.turns.filter(W=>W.role==="user").map((W,f)=>({id:W.id,role:W.role,no:f+1,title:V(W)}))),le=T(null);function me(){const W=Ye.value;if(!W)return;const f=W.querySelectorAll(".turn-anchor[data-turn-id]");if(f.length===0)return;const S=ee.value;if(S.length===0)return;const E=new Set(S.map(De=>De.id));if(Ot()<=sa){le.value=S[S.length-1].id;return}const G=W.getBoundingClientRect(),re=G.height/2;let be=null;f.forEach(De=>{const je=De.dataset.turnId;if(!je||!E.has(je))return;De.getBoundingClientRect().top-G.top<=re&&(be=je)}),le.value=be??S[0].id}const _e=T(!1),ce=T(""),K=T(0),Y=$(()=>Dx(o.turns,ce.value)),Se=$(()=>Y.value.length);function oe(){_e.value?X():_e.value=!0}function X(){_e.value=!1,ce.value="",K.value=0}function ie(){K.value=zx(K.value,Se.value)}function Ce(){K.value=Fx(K.value,Se.value)}Ee(ce,()=>{K.value=0,D()}),Ee(Se,W=>{W===0?K.value=0:K.value>=W&&(K.value=W-1)}),Ee(K,()=>{D()});async function D(){if(Se.value===0)return;await Ne();const W=Ye.value;if(!W)return;const f=W.querySelector(".chat-search-hit--active");if(f){f.scrollIntoView({behavior:"smooth",block:"center"});return}const S=Math.min(K.value,Se.value-1),E=Y.value[S];E&&It(E.turnId)}const J=T(!1);let q=0;function fe(){q||(q=Ze(()=>{q=0,xe()}))}function xe(){const W=Ye.value,f=!o.mobile&&o.conversationToc&&W?W.closest(".con")?.querySelector(".conversation-toc"):null,S=f?.querySelector(".toc-bar");let E=!1;if(W&&f&&S){const G=S.getBoundingClientRect(),re=f.getBoundingClientRect(),be=G.left+G.width/2;E=Array.from(W.querySelectorAll(".table-node-wrapper")).some(De=>{const je=De.getBoundingClientRect();return je.left<=be&&be<=je.right&&je.topre.top})}J.value!==E&&(J.value=E)}const Ue=$(()=>o.questions&&o.questions.length>0?o.questions[0]:void 0),Ke=$(()=>{const W=Ue.value;if(W)return o.pendingQuestionActions?.[W.questionId]}),cn=$(()=>o.approvals&&o.approvals.length>0?o.approvals[0]:void 0),un=$(()=>{const W=cn.value;return W?!!o.pendingApprovalActions?.[W.approvalId]:!1}),Ye=T(null),Dt=T(null),yn=T(0),dn=T(0),kn=$(()=>({"--panes-scrollbar-width":`${yn.value}px`}));function Tn(W){return W instanceof HTMLElement?W:W&&"$el"in W&&W.$el instanceof HTMLElement?W.$el:null}function Rt(){const W=Ye.value;yn.value=W?Math.max(0,W.offsetWidth-W.clientWidth):0,dn.value=Dt.value?.offsetHeight??0}function Ht(W){const f=Tn(W);Ye.value=f,f&&te()}function Ut(W){const f=Tn(W);Dt.value=f??null,W&&"loadForEdit"in W&&typeof W.loadForEdit=="function"&&"focus"in W&&typeof W.focus=="function"?k.value={loadForEdit:W.loadForEdit.bind(W),loadAttachmentsForEdit:"loadAttachmentsForEdit"in W&&typeof W.loadAttachmentsForEdit=="function"?W.loadAttachmentsForEdit.bind(W):()=>{},focus:W.focus.bind(W)}:k.value=null,F()}const tt=T(!0),dt=T(!1);function Ot(){const W=Ye.value;return W?W.scrollHeight-W.scrollTop-W.clientHeight:0}let wt=0,Vt=0,St=0,zt=0,gt=0,en=0;function $t(){return Date.now()1?(tt.value=!1,dt.value=!0):S<=sa&&f>wt+1&&(tt.value=!0,dt.value=!1),wt=f,wn()}let Ft=0;function wn(){Ft||(Ft=Ze(()=>{Ft=0,me()}))}function Bt(W=!1){const f=Ye.value;tt.value=!0,dt.value=!1,f&&(!W&&performance.now()({node:re,top:Wn(W,re)})),E=S.findIndex(re=>re.top>=f),G=E<0?Math.max(0,S.length-1):E;return S.slice(G,G+2).flatMap(re=>{const be=re.node.dataset.scrollAnchorId,De=be??re.node.dataset.turnId;return De?[{kind:be?"tool":"turn",id:De,top:re.top}]:[]})}const jt=new Map;function Nn(W,f){for(const S of f.anchors){const E=S.kind==="tool"?"data-scroll-anchor-id":"data-turn-id",G=W.querySelector(`[${E}="${Mt(S.id)}"]`);if(G)return Wn(W,G)-S.top}return W.scrollHeight-f.oldHeight}function Kt(W,f,S=W.scrollTop){return W.scrollTop=S+Nn(W,f),wt=W.scrollTop,W.scrollTop}async function qt(){if(!o.sessionId||!o.loadOlderMessages||o.loadingMore||Pn.value||!o.hasMoreMessages)return;const W=o.sessionId,f=Ye.value,S=f?.scrollTop??0,E={anchors:f?pn(f,S):[],oldHeight:f?.scrollHeight??0};Zn(W,!0),En();try{if(await Ne(),await o.loadOlderMessages(W),await Ne(),o.sessionId!==W){jt.set(W,E);return}const G=Ye.value;if(!G)return;Kt(G,E),jt.delete(W)}finally{Zn(W,!1)}}function Mt(W){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(W):W.replaceAll(/["\\]/g,"\\$&")}function It(W){const f=Ye.value;if(!f)return;const S=f.querySelector(`.turn-anchor[data-turn-id="${Mt(W)}"]`);S&&(Rn(),tt.value=!1,dt.value=Ot()>sa,S.scrollIntoView({behavior:"smooth",block:"center"}))}function Wt(){const W=Ye.value;if(!W)return"none";const f=W.firstElementChild,S=f instanceof HTMLElement?f.offsetHeight:0,E=Dt.value?.offsetHeight??0;return`${W.scrollHeight}:${W.clientHeight}:${S}:${E}`}function Ze(W){return typeof requestAnimationFrame=="function"?requestAnimationFrame(W):setTimeout(W,16)}function yt(W){typeof cancelAnimationFrame=="function"?cancelAnimationFrame(W):clearTimeout(W)}let he=0,ge=0,qe=null,Qe=0;function ot(){return performance.now(){if(ge=0,performance.now()>=he||!qe){qe=null;return}const G=qe.getBoundingClientRect().top-Qe;G&&(S.scrollTop+=G),ge=Ze(E)};ge=Ze(E)}function pt(W=36){if(!tt.value&&!$t())return;const f=++en;let S="",E=0,G=0;gt&&(yt(gt),gt=0);const re=()=>{if(gt=0,f!==en||!tt.value&&!$t())return;Bt(!1);const be=Wt();E=be===S?E+1:0,S=be,G++,E<3&&G0&&f.length>=W.length&&W.firstId!==f.firstId&&W.lastId===f.lastId&&W.lastTextLen===f.lastTextLen&&W.lastThinkingLen===f.lastThinkingLen&&W.lastToolsLen===f.lastToolsLen&&W.approvalIds===f.approvalIds}const Nt=$(()=>{const W=(o.approvals??[]).map(re=>re.approvalId).join(","),f=o.turns,S=f.at(-1),E=S?.thinking?.length??0,G=S?.tools?.reduce((re,be)=>re+be.name.length+(be.arg?.length??0)+(be.output?.join("").length??0),0)??0;return{length:f.length,firstId:f[0]?.id??"",lastId:S?.id??"",lastTextLen:S?.text.length??0,lastThinkingLen:E,lastToolsLen:G,approvalIds:W}});Ee(Nt,async(W,f)=>{if(Pn.value&&_t(f,W)){me();return}await Ne(),tt.value||$t()?Bt(W.length{F()}),Ee(()=>o.mobile,async()=>{await Ne(),Rt()});const Pt=new Map;Ee(()=>o.fileReloadKey,async(W,f)=>{const S=Ye.value;f&&S&&Pt.set(String(f),{top:S.scrollTop,following:tt.value}),Rn(),await Ne();const E=Ye.value,G=W?Pt.get(String(W)):void 0;if(G&&E){const re=jt.get(String(W)),be=re?Kt(E,re,G.top):G.top;re&&jt.delete(String(W)),tt.value=G.following,E.scrollTop=be,wt=E.scrollTop,dt.value=!G.following&&Ot()>1,G.following&&pt()}else tt.value=!0,wt=0,Bt(!1),pt();me()}),Ee(()=>o.sessionLoading,async(W,f)=>{W||!f||(tt.value=!0,await Ne(),pt(),me())}),Ee(()=>o.turnActive,async(W,f)=>{W||!f||!tt.value&&!$t()||(await Ne(),pt(48),me())});function on(){tt.value=!0,dt.value=!1,Vt=Date.now()+Ir,Ne(()=>{Bt(!0),pt(16)})}function Sn(W){on(),i("submit",W)}function fs(W){tt.value=!0,dt.value=!1,Vt=Date.now()+Ir,i("editMessage",W)}function Qn(W){const f=o.queued?.[W],S=f?.text??"";y(S,f?.attachments)&&i("editQueued",W)}function Yn(W){i("reorderQueue",W)}function ms(){i("steer",ul)}function vs(W,f){on(),i("answer",W,f)}function Is(W,f){!W||!f||i("approval",W,f)}let an=null,ft=null,An=null,Cn=null,Hn=0,Ln=0,ln=0;const Bn=T(new Set),Pn=$(()=>!!o.sessionId&&Bn.value.has(o.sessionId));function Zn(W,f){const S=new Set(Bn.value);f?S.add(W):S.delete(W),Bn.value=S}function Xn(){Pn.value||ln||(ln=Ze(()=>{ln=0,!Pn.value&&(ot()||(tt.value||$t())&&Bt(!1))}))}function En(){en++,gt&&(yt(gt),gt=0),ln&&(yt(ln),ln=0)}function Rn(){const W=Ye.value;if(Vt=0,En(),he=0,qe=null,W){const f=W.scrollTop;typeof W.scrollTo=="function"?W.scrollTo({top:f,behavior:"auto"}):W.scrollTop=f}zt=0,St=Number.NEGATIVE_INFINITY,W&&(wt=W.scrollTop)}function Jn(){const W=Ye.value;!W||W.scrollHeight-W.clientHeight<=1&&!o.hasMoreMessages||(tt.value=!1,Rn(),W.scrollHeight-W.clientHeight>1&&(dt.value=!0))}function es(W){const f=Ye.value;if(!f)return!1;for(const S of W.composedPath()){if(S===f)return!1;if(S instanceof HTMLElement&&S.scrollHeight>S.clientHeight+1&&S.scrollTop>1)return!0}return!1}function ts(W){W.defaultPrevented||W.ctrlKey||W.shiftKey||W.deltaY>=0||es(W)||Jn()}function ns(W){const f=Ye.value;if(!f||W.defaultPrevented||W.button!==0||W.pointerType==="touch")return;const S=f.getBoundingClientRect(),E=f.offsetWidth-f.clientWidth,G=E>0?E:12;W.target===f&&W.clientX>=S.right-G&&Jn()}let ue=null;function $e(W){ue=W.touches.length===1?W.touches[0].clientY:null}function Me(W){const f=W.touches.length===1?W.touches[0].clientY:null;f!==null&&ue!==null&&f>ue+2&&!es(W)&&Jn(),ue=f}function we(){if(!ft)return;const W=Ye.value?.firstElementChild??null;W!==An&&(An&&ft.unobserve(An),An=W,W&&ft.observe(W))}function F(){if(!ft)return;const W=Dt.value;W!==Cn&&(Cn&&ft.unobserve(Cn),Cn=W,W&&ft.observe(W))}function te(){const W=Ye.value;Rt(),an&&(an.disconnect(),W&&an.observe(W,{childList:!0,subtree:!0,characterData:!0})),ft&&(ft.disconnect(),An=null,Cn=null,W&&ft.observe(W),we(),F()),Hn=W?.scrollHeight??0,Ln=W?.clientHeight??0,fe()}function nt(){we(),Xn(),fe()}function Qs(){typeof document>"u"||document.visibilityState==="visible"&&tt.value&&pt()}const Ts=T(!1);let As=null;function Bi(){Ts.value=!0,As!==null&&clearTimeout(As),As=setTimeout(()=>{Ts.value=!1},Jx)}function yo(){Bi(),i("interrupt")}function Ho(W){W.key==="Escape"&&(o.running||o.working)&&(W.preventDefault(),yo())}function Uo(){tt.value&&Xn()}lt(()=>{Ne(()=>{typeof MutationObserver=="function"&&(an=new MutationObserver(nt)),typeof ResizeObserver=="function"&&(ft=new ResizeObserver(()=>{fe(),Rt();const W=Ye.value;if(!W)return;const{scrollHeight:f,clientHeight:S}=W,E=f>Hn+1,G=S{an&&an.disconnect(),ft&&ft.disconnect(),ln&&yt(ln),gt&&yt(gt),ge&&yt(ge),q&&yt(q),As!==null&&clearTimeout(As),O!==null&&(clearTimeout(O),O=null),typeof document<"u"&&(document.removeEventListener("visibilitychange",Qs),document.removeEventListener("keydown",Ho)),window.visualViewport?.removeEventListener("resize",Uo)});function Pi(){(k.value??w.value)?.focus()}return t({loadComposerForEdit:y,focusComposer:Pi}),(W,f)=>(a(),u("section",{class:de(["con",{mobile:e.mobile}])},[!e.mobile&&!(e.turns.length===0&&!e.sessionLoading)?(a(),Z(X8,{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":se.value,"git-diff-stats":e.gitDiffStats,"is-git-repo":!!e.gitInfo,pr:e.pr,copied:b.value,"search-active":_e.value,onOpenChanges:f[0]||(f[0]=S=>i("openChanges")),onCopyAll:f[1]||(f[1]=S=>m.value?.copyConversation()),onCopyFinalSummary:f[2]||(f[2]=S=>m.value?.copyFinalSummary()),onOpenPr:f[3]||(f[3]=S=>e.pr&&i("openPr",e.pr.url)),onRenameSession:f[4]||(f[4]=(S,E)=>i("renameSession",S,E)),onForkSession:f[5]||(f[5]=S=>i("forkSession",S)),onArchiveSession:f[6]||(f[6]=S=>i("archiveSession",S)),onExportSession:f[7]||(f[7]=S=>i("exportSession",S)),onToggleSearch:oe},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"])):B("",!0),_e.value?(a(),Z($x,{key:1,query:ce.value,total:Se.value,"active-index":K.value,"onUpdate:query":f[8]||(f[8]=S=>ce.value=S),onNext:ie,onPrev:Ce,onClose:X},null,8,["query","total","active-index"])):B("",!0),e.conversationToc?(a(),Z(Px,{key:2,items:ee.value,"active-turn-id":le.value,mobile:e.mobile,"session-loading":e.sessionLoading,occluded:J.value,onSelect:It},null,8,["items","active-turn-id","mobile","session-loading","occluded"])):B("",!0),l("div",qx,[l("div",{ref:Ht,class:de(["panes chat-scroll",{"is-following":tt.value,"history-prepending":Pn.value}]),onScrollPassive:bn,onWheelPassive:ts,onPointerdownPassive:ns,onTouchstartPassive:$e,onTouchmovePassive:Me},[l("div",{class:de(["content-wrap",[e.mobile?"align-mobile":"align-center"]])},[e.turns.length===0&&!e.sessionLoading?(a(),u(ye,{key:0},[f[58]||(f[58]=l("div",{class:"empty-spacer"},null,-1)),l("div",Wx,[l("span",{class:de(["empty-hint-title",{"is-starting":e.starting}])},[e.starting?(a(),Z(Jt,{key:0,size:"sm"})):B("",!0),l("span",null,d(e.starting?r(s)("conversation.starting"):r(s)("composer.emptyConversationTitle")),1)],2),e.starting?B("",!0):(a(),u("span",Nx,d(r(s)("composer.emptyConversation")),1)),g.value&&!e.starting?(a(),u("div",Hx,[I(Je,{text:r(s)("conversation.switchWorkspace")},{default:j(()=>[l("button",{type:"button",class:"ws-pick-btn",onClick:f[9]||(f[9]=Pe(S=>c.value=!c.value,["stop"]))},[I(ae,{name:"folder",size:"sm"}),l("span",Ux,d(v.value),1),I(ae,{class:de(["ws-pick-chev",{open:c.value}]),name:"chevron-down",size:"sm"},null,8,["class"])])]),_:1},8,["text"]),c.value?(a(),u("div",{key:0,class:"ws-pick-backdrop",onClick:f[10]||(f[10]=S=>c.value=!1)})):B("",!0),c.value?(a(),u("div",Vx,[(a(!0),u(ye,null,Be(C.value,S=>(a(),u("button",{key:S.id,type:"button",class:de(["ws-pick-item",{on:S.id===e.activeWorkspaceId}]),onClick:Pe(E=>h(S.id),["stop"])},[l("span",Kx,d(S.name),1),l("span",Gx,d(S.shortPath),1)],10,jx))),128)),x.value>0?(a(),u("button",{key:0,type:"button",class:"ws-pick-item ws-pick-more",onClick:f[11]||(f[11]=Pe(S=>p.value=!p.value,["stop"]))},[l("span",null,d(r(s)("conversation.moreWorkspaces",{count:x.value})),1)])):B("",!0),f[57]||(f[57]=l("div",{class:"ws-pick-divider"},null,-1)),l("button",{type:"button",class:"ws-pick-action",onClick:f[12]||(f[12]=Pe(S=>{c.value=!1,i("addWorkspace")},["stop"]))},[I(ae,{name:"plus",size:"sm"}),l("span",null,d(r(s)("conversation.addWorkspace")),1)])])):B("",!0)])):e.starting?B("",!0):(a(),u("button",{key:2,type:"button",class:"empty-add-workspace",onClick:f[13]||(f[13]=S=>i("addWorkspace"))},[I(ae,{name:"folder-plus",size:"sm"}),l("span",null,d(r(s)("conversation.addWorkspace")),1)]))]),I(Su,{ref_key:"emptyComposerRef",ref:w,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,"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:Sn,onSteer:f[14]||(f[14]=S=>i("steer",S)),onCommand:f[15]||(f[15]=S=>i("command",S)),onInterrupt:yo,onUnqueue:f[16]||(f[16]=S=>i("unqueue",S)),onEditQueued:f[17]||(f[17]=S=>i("editQueued",S)),onSetPermission:f[18]||(f[18]=S=>i("setPermission",S)),onSetThinking:f[19]||(f[19]=S=>i("setThinking",S)),onTogglePlan:f[20]||(f[20]=S=>i("togglePlan")),onToggleSwarm:f[21]||(f[21]=S=>i("toggleSwarm")),onToggleSupermoon:f[22]||(f[22]=S=>i("toggleSupermoon")),onToggleGoal:f[23]||(f[23]=S=>i("toggleGoal")),onOpenBtw:f[24]||(f[24]=S=>i("command","/btw")),onCreateGoal:f[25]||(f[25]=S=>i("createGoal",S)),onControlGoal:f[26]||(f[26]=S=>i("controlGoal",S)),onFocusGoal:N,onCompact:f[27]||(f[27]=S=>i("compact")),onPickModel:f[28]||(f[28]=S=>i("pickModel")),onSelectModel:f[29]||(f[29]=S=>i("selectModel",S))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]),f[59]||(f[59]=l("div",{class:"empty-spacer"},null,-1))],64)):(a(),Z(hu,{ref_key:"chatPaneRef",ref:m,key:e.fileReloadKey??"no-session",turns:e.turns,approvals:e.approvals,"turn-active":e.turnActive,working:e.working,"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":tt.value,"tool-diff-panel":!0,queued:e.queued,"search-query":ce.value,"search-active-index":_e.value?K.value:-1,onOpenFile:f[30]||(f[30]=S=>i("openFile",S)),onOpenMedia:f[31]||(f[31]=S=>i("openMedia",S)),onCopyConversationCopied:L,onOpenThinking:f[32]||(f[32]=S=>i("openThinking",S)),onOpenCompaction:f[33]||(f[33]=S=>i("openCompaction",S)),onOpenAgent:f[34]||(f[34]=S=>i("openAgent",S)),onOpenToolDiff:f[35]||(f[35]=S=>i("openToolDiff",S)),onEditMessage:fs,onLoadOlderMessages:qt,onUnqueue:f[36]||(f[36]=S=>i("unqueue",S)),onEditQueued:Qn,onReorderQueue:Yn,onSteerQueued:ms},null,8,["turns","approvals","turn-active","working","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?B("",!0):(a(),Z(kx,{key:0,ref:Ut,style:ct(kn.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,"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":_.value,"dock-panel":ne.value,"bash-tasks":H.value,"subagent-tasks":U.value,"bash-running":Q.value,"subagent-running":P.value,"todo-done-count":A.value,"has-dock-work":R.value,todos:e.todos,"pending-question":Ue.value,"question-busy-kind":Ke.value,"pending-approval":cn.value,"approval-busy":un.value,terminal:e.terminal,mobile:e.mobile,onToggleDockPanel:f[37]||(f[37]=S=>ke(S)),onCloseDockPanel:f[38]||(f[38]=S=>pe()),onOpenAgent:f[39]||(f[39]=S=>i("openAgent",S)),onAnswer:vs,onDismiss:f[40]||(f[40]=S=>i("dismiss",S)),onApproval:Is,onCancelTask:f[41]||(f[41]=S=>i("cancelTask",S)),onControlGoal:f[42]||(f[42]=S=>i("controlGoal",S)),onSubmit:Sn,onSteer:f[43]||(f[43]=S=>i("steer",S)),onCommand:f[44]||(f[44]=S=>i("command",S)),onInterrupt:yo,onSetPermission:f[45]||(f[45]=S=>i("setPermission",S)),onSetThinking:f[46]||(f[46]=S=>i("setThinking",S)),onTogglePlan:f[47]||(f[47]=S=>i("togglePlan")),onToggleSwarm:f[48]||(f[48]=S=>i("toggleSwarm")),onToggleSupermoon:f[49]||(f[49]=S=>i("toggleSupermoon")),onToggleGoal:f[50]||(f[50]=S=>i("toggleGoal")),onOpenBtw:f[51]||(f[51]=S=>i("command","/btw")),onCreateGoal:f[52]||(f[52]=S=>i("createGoal",S)),onFocusGoal:N,onCompact:f[53]||(f[53]=S=>i("compact")),onPickModel:f[54]||(f[54]=S=>i("pickModel")),onSelectModel:f[55]||(f[55]=S=>i("selectModel",S))},null,8,["style","session-id","running","starting","queued","search-files","upload-image","status","thinking","plan-mode","swarm-mode","supermoon-mode","goal-mode","activation-badges","models","starred-ids","skills","goal","goal-expand-signal","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"]))]),I(Io,{name:"pill"},{default:j(()=>[dt.value?(a(),u("button",{key:0,class:"newmsg-pill",style:ct({bottom:`${dn.value+12}px`}),"aria-label":r(s)("conversation.jumpToLatestAria"),onClick:f[56]||(f[56]=S=>Bt(!0))},[I(ae,{class:"pill-chevron",name:"chevron-down",size:"md"}),ve(" "+d(r(s)("conversation.newMessages")),1)],12,Qx)):B("",!0)]),_:1}),I(Io,{name:"abort-toast"},{default:j(()=>[Ts.value?(a(),u("div",Yx,[l("span",Zx,d(r(s)("conversation.manuallyAborted")),1)])):B("",!0)]),_:1})],2))}}),t$=Te(e$,[["__scopeId","data-v-cf9dca94"]]),n$=["aria-selected","onClick"],s$=Ie({__name:"SegmentedControl",props:{modelValue:{},options:{},size:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;return(s,o)=>(a(),u("div",{class:de(["ui-seg",`ui-seg--${e.size??"md"}`]),role:"tablist"},[(a(!0),u(ye,null,Be(e.options,i=>(a(),u("button",{key:i.value,class:de(["ui-seg__item",{"is-on":i.value===e.modelValue}]),type:"button",role:"tab","aria-selected":i.value===e.modelValue,onClick:c=>n("update:modelValue",i.value)},d(i.label),11,n$))),128))],2))}}),Xt=Te(s$,[["__scopeId","data-v-d1aaccd7"]]),o$={class:"ui-panel-header__title"},i$={key:0,class:"ui-panel-header__sub"},a$=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(),u("div",{class:de(["ui-panel-header",{wrap:e.wrap}])},[l("span",o$,d(e.title),1),I(Je,{text:e.subtitle},{default:j(()=>[e.subtitle?(a(),u("span",i$,d(e.subtitle),1)):B("",!0)]),_:1},8,["text"]),bt(t.$slots,"default",{},void 0,!0),e.closable?(a(),Z(et,{key:0,class:"ui-panel-header__close",size:"sm",label:e.closeLabel,onClick:n[0]||(n[0]=s=>t.$emit("close"))},{default:j(()=>[I(ae,{name:"close",size:"sm"})]),_:1},8,["label"])):B("",!0)],2))}}),Vs=Te(a$,[["__scopeId","data-v-c47879ad"]]),l$={key:0,class:"fp-empty fp-error"},r$={key:1,class:"fp-empty"},c$={key:2,class:"fp-loading"},u$={class:"fp-path"},d$={class:"fp-meta"},p$={key:0,class:"fp-lines"},f$={class:"fp-size"},m$={key:3,class:"fp-search"},v$=["placeholder"],h$={key:0,class:"fp-search-count"},g$=["href","aria-label"],y$={key:1,class:"fp-code"},k$={class:"fp-line-table"},b$=["data-line"],w$={class:"fp-gutter"},S$=["innerHTML"],C$={key:1,class:"fp-body fp-code"},_$={class:"fp-line-table"},x$=["data-line"],$$={class:"fp-gutter"},M$=["innerHTML"],I$={key:2,class:"fp-body"},T$=["srcdoc","title"],A$={key:1,class:"fp-code"},L$={class:"fp-line-table"},B$=["data-line"],P$={class:"fp-gutter"},E$=["innerHTML"],R$={key:3,class:"fp-body fp-pdf-wrap"},O$=["src","title"],D$={key:1,class:"fp-binary-card"},z$={class:"fp-binary-label"},F$={key:4,class:"fp-body fp-table-wrap"},q$={class:"fp-table"},W$=["data-line"],N$={key:5,class:"fp-body fp-image-wrap"},H$=["src","alt"],U$={key:1,class:"fp-binary-card"},V$={class:"fp-binary-icon"},j$={class:"fp-binary-label"},K$={key:6,class:"fp-body fp-image-wrap"},G$=["src"],Q$={key:1,class:"fp-binary-card"},Y$={class:"fp-binary-icon"},Z$={class:"fp-binary-label"},X$={key:7,class:"fp-body fp-code"},J$={class:"fp-line-table"},eM=["data-line"],tM={class:"fp-gutter"},nM=["innerHTML"],sM={key:8,class:"fp-body fp-binary-wrap"},oM={class:"fp-binary-card"},iM={class:"fp-binary-icon"},aM={class:"fp-binary-label"},lM=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}=Fe();function s(D,J){const q=J?J.split("/").filter(Boolean):[];for(const fe of D.split("/"))fe===""||fe==="."||(fe===".."?q.pop():q.push(fe));return q.join("/")}const o=js("resolveImage",async D=>D),i=$(()=>{const D=g.file?.path??"",J=D.lastIndexOf("/");return J>0?D.slice(0,J):""});function c(D){if(/^(https?:|data:|blob:)/i.test(D)||D.startsWith("/"))return D;const J=i.value;return J?s(D,J):D}async function p(D){const J=c(D);return o?o(J):J}lo("resolveImage",p);function v(D){let J=D.path;if(/^(https?:|mailto:|tel:|data:|blob:|#)/i.test(J)||J.startsWith("/"))return D;for(const fe of["#","?"]){const xe=J.indexOf(fe);xe!==-1&&(J=J.slice(0,xe))}const q=i.value;return{...D,path:s(J,q)}}const g=e,C=t;function x(D){g.openFile?.(v(D))}const h=T(null),m=$(()=>{const D=g.file;if(!D)return"binary";const J=D.mime??"",q=D.languageId??"",fe=D.path.toLowerCase();return J==="text/markdown"||q==="markdown"||q==="md"||fe.endsWith(".mdx")?"markdown":J==="application/json"||q==="json"?"json":J==="text/html"||q==="html"||fe.endsWith(".html")||fe.endsWith(".htm")?"html":J==="application/pdf"||fe.endsWith(".pdf")?"pdf":J==="text/csv"||q==="csv"||fe.endsWith(".csv")?"csv":J.startsWith("image/")?"image":J.startsWith("video/")?"video":D.isBinary?"binary":J.startsWith("text/")||q!==""?"text":"binary"});function w(D){const J=atob(D),q=Uint8Array.from(J,fe=>fe.charCodeAt(0));return new TextDecoder().decode(q)}const k=$(()=>{const D=g.file;if(!D)return"";if(D.encoding==="base64")try{return w(D.content)}catch{return D.content}return D.content}),b=$(()=>{if(m.value!=="json"||!g.file)return"";try{return JSON.stringify(JSON.parse(k.value),null,2)}catch{return k.value}}),_=$(()=>g.file?(m.value==="json"?b.value:k.value).split(`
-`):[]),O=$(()=>g.file?m.value==="json"?b.value:k.value:""),y=T(""),L=T(0),N=$(()=>{const D=y.value.trim().toLowerCase();if(!D)return[];const J=[];return _.value.forEach((q,fe)=>{q.toLowerCase().includes(D)&&J.push(fe+1)}),J});Ee(y,()=>{L.value=0});function H(D,J=!1){D&&Ne(()=>{const q=h.value?.querySelector(".fp-body"),fe=q?.querySelector(`[data-line="${D}"]`);if(!q||!fe)return;J&&(q.scrollTop=0);const xe=q.getBoundingClientRect(),Ue=fe.getBoundingClientRect(),Ke=Ue.top-xe.top+q.scrollTop;q.scrollTop=Ke-q.clientHeight/2+Ue.height/2})}Ee(()=>[g.file?.path,g.line],()=>H(g.line,!0),{immediate:!0});function U(D){const J=N.value;J.length!==0&&(L.value=(L.value+D+J.length)%J.length,H(J[L.value]))}function Q(D){const J=N.value;return{target:g.line===D,hit:J.includes(D),active:J[L.value]===D}}function P(D){return D<1024?`${D} B`:D<1024*1024?`${(D/1024).toFixed(1)} KB`:`${(D/(1024*1024)).toFixed(1)} MB`}const M=T(!1),A=T(!1);function R(){g.file&&Yt(O.value).then(D=>{D&&(M.value=!0,setTimeout(()=>{M.value=!1},1400))})}function ne(){g.file&&Yt(g.file.path).then(D=>{D&&(A.value=!0,setTimeout(()=>{A.value=!1},1400))})}const se=T("preview"),ke=T("preview"),pe=T("fit");function V(D){se.value=D}function ee(D){ke.value=D}function le(D){pe.value=D}Ee(m,D=>{se.value=D==="html"?"preview":"source",ke.value="preview",pe.value="fit"});const me=$(()=>{const D=g.file;return!D||m.value!=="image"?null:D.sourceUrl?D.sourceUrl:D.encoding==="base64"?`data:${D.mime};base64,${D.content}`:D.mime==="image/svg+xml"?`data:${D.mime};charset=utf-8,${encodeURIComponent(D.content)}`:null}),_e=$(()=>{const D=g.file;return!D||m.value!=="video"?null:D.sourceUrl?D.sourceUrl:D.encoding==="base64"?`data:${D.mime};base64,${D.content}`:null}),ce=$(()=>{const D=g.file;return!D||m.value!=="pdf"?null:g.downloadUrl?g.downloadUrl:D.encoding==="base64"?`data:${D.mime};base64,${D.content}`:null}),K=$(()=>g.file?["",' ',` `,k.value].join(""):"");function Y(D){const J=[];let q="",fe=!1;for(let xe=0;xe_.value.slice(0,200).map(Y));function oe(D){return D.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function X(){const D=g.file;if(!D)return"";const J=D.languageId?.toLowerCase();return J||(D.path.split(".").pop()?.toLowerCase()??"")}function ie(D){const J=X();let q=oe(D);return m.value==="json"||J==="json"||J==="jsonc"?(q=q.replace(/("[^&]*?")(\s*:)/g,'$1 $2'),q=q.replace(/(:\s*)("[^&]*?")/g,'$1$2 '),q=q.replace(/\b(true|false|null)\b/g,'$1 '),q=q.replace(/(:\s*)(-?\d+(?:\.\d+)?)/g,'$1$2 '),q):m.value==="html"||J==="html"||J==="xml"||J==="svg"?(q=q.replace(/\s([A-Za-z_:][-A-Za-z0-9_:.]*)(=)/g,' $1 $2'),q=q.replace(/(".*?")/g,'$1 '),q=q.replace(/(<\/?)([A-Za-z][\w:-]*)/g,'$1$2 '),q):(q=q.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 '),q=q.replace(/(".*?"|'.*?')/g,'$1 '),q=q.replace(/(\/\/.*)$/g,''),q)}function Ce(D,J=55){return!D||D.length<=J?D:"…"+D.slice(D.length-J+1)}return(D,J)=>(a(),u("div",{ref_key:"rootRef",ref:h,class:"file-preview"},[e.error&&!e.loading?(a(),u("div",l$,[l("span",null,d(e.error),1),e.closable?(a(),Z(We,{key:0,variant:"secondary",size:"sm",onClick:J[0]||(J[0]=q=>C("close"))},{default:j(()=>[ve(d(r(n)("filePreview.close")),1)]),_:1})):B("",!0)])):!e.file&&!e.loading?(a(),u("div",r$,d(r(n)("filePreview.empty")),1)):e.loading?(a(),u("div",c$,[J[7]||(J[7]=l("span",{class:"spinner"},null,-1)),l("span",null,d(r(n)("filePreview.loading")),1)])):e.file?(a(),u(ye,{key:3},[I(Vs,{wrap:"",title:r(n)("common.preview"),closable:e.closable,"close-label":r(n)("filePreview.close"),onClose:J[6]||(J[6]=q=>C("close"))},{default:j(()=>[I(Je,{text:e.file.path},{default:j(()=>[l("span",u$,d(Ce(e.file.path)),1)]),_:1},8,["text"]),l("span",d$,[e.file.lineCount?(a(),u("span",p$,d(r(n)("filePreview.lineCount",{count:e.file.lineCount})),1)):B("",!0),l("span",f$,d(P(e.file.size)),1)]),m.value==="html"?(a(),Z(Xt,{key:0,"model-value":se.value,size:"sm",options:[{value:"preview",label:r(n)("filePreview.preview")},{value:"source",label:r(n)("filePreview.source")}],"onUpdate:modelValue":V},null,8,["model-value","options"])):B("",!0),m.value==="markdown"?(a(),Z(Xt,{key:1,"model-value":ke.value,size:"sm",options:[{value:"preview",label:r(n)("filePreview.preview")},{value:"source",label:r(n)("filePreview.source")}],"onUpdate:modelValue":ee},null,8,["model-value","options"])):B("",!0),m.value==="image"?(a(),Z(Xt,{key:2,"model-value":pe.value,size:"sm",options:[{value:"fit",label:r(n)("filePreview.fit")},{value:"actual",label:r(n)("filePreview.actual")}],"onUpdate:modelValue":le},null,8,["model-value","options"])):B("",!0),m.value==="text"||m.value==="json"||m.value==="html"||m.value==="csv"?(a(),u("div",m$,[rt(l("input",{"onUpdate:modelValue":J[1]||(J[1]=q=>y.value=q),class:"fp-search-input",type:"search",placeholder:r(n)("filePreview.search")},null,8,v$),[[gn,y.value]]),y.value.trim()?(a(),u("span",h$,d(N.value.length),1)):B("",!0),I(et,{size:"sm",disabled:N.value.length===0,label:r(n)("filePreview.prevMatch"),onClick:J[2]||(J[2]=q=>U(-1))},{default:j(()=>[I(ae,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),I(et,{size:"sm",disabled:N.value.length===0,label:r(n)("filePreview.nextMatch"),onClick:J[3]||(J[3]=q=>U(1))},{default:j(()=>[I(ae,{name:"arrow-down",size:"md"})]),_:1},8,["disabled","label"])])):B("",!0),I(et,{size:"sm",class:de({copied:A.value}),label:A.value?r(n)("filePreview.copied"):r(n)("filePreview.copyPath"),onClick:ne},{default:j(()=>[A.value?(a(),Z(ae,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),Z(ae,{key:0,name:"link",size:"md"}))]),_:1},8,["class","label"]),e.externalActions?(a(),Z(et,{key:4,size:"sm",label:r(n)("filePreview.openInEditor"),onClick:J[4]||(J[4]=q=>C("openExternal"))},{default:j(()=>[I(ae,{name:"external-link",size:"md"})]),_:1},8,["label"])):B("",!0),e.externalActions?(a(),Z(et,{key:5,size:"sm",label:r(n)("filePreview.reveal"),onClick:J[5]||(J[5]=q=>C("reveal"))},{default:j(()=>[I(ae,{name:"folder",size:"md"})]),_:1},8,["label"])):B("",!0),e.downloadUrl?(a(),u("a",{key:6,class:"fp-download",href:e.downloadUrl,target:"_blank",rel:"noreferrer",download:"","aria-label":r(n)("filePreview.download")},[I(ae,{name:"download",size:"md"})],8,g$)):B("",!0),!e.file.isBinary&&m.value!=="image"?(a(),Z(et,{key:7,size:"sm",class:de({copied:M.value}),label:M.value?r(n)("filePreview.copied"):r(n)("filePreview.copy"),onClick:R},{default:j(()=>[M.value?(a(),Z(ae,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),Z(ae,{key:0,name:"copy",size:"md"}))]),_:1},8,["class","label"])):B("",!0)]),_:1},8,["title","closable","close-label"]),m.value==="markdown"?(a(),u("div",{key:0,class:de(["fp-body",{"fp-markdown":ke.value==="preview"}])},[ke.value==="preview"?(a(),Z(No,{key:0,text:k.value,"open-file":g.openFile?x:void 0},null,8,["text","open-file"])):(a(),u("div",y$,[l("div",k$,[(a(!0),u(ye,null,Be(_.value,(q,fe)=>(a(),u("div",{key:fe,class:de(["fp-line-row",Q(fe+1)]),"data-line":fe+1},[l("span",w$,d(fe+1),1),l("span",{class:"fp-line-text",innerHTML:ie(q)},null,8,S$)],10,b$))),128))])]))],2)):m.value==="json"?(a(),u("div",C$,[l("div",_$,[(a(!0),u(ye,null,Be(_.value,(q,fe)=>(a(),u("div",{key:fe,class:de(["fp-line-row",Q(fe+1)]),"data-line":fe+1},[l("span",$$,d(fe+1),1),l("span",{class:"fp-line-text",innerHTML:ie(q)},null,8,M$)],10,x$))),128))])])):m.value==="html"?(a(),u("div",I$,[se.value==="preview"?(a(),u("iframe",{key:0,class:"fp-html-frame",sandbox:"",srcdoc:K.value,title:e.file.path},null,8,T$)):(a(),u("div",A$,[l("div",L$,[(a(!0),u(ye,null,Be(_.value,(q,fe)=>(a(),u("div",{key:fe,class:de(["fp-line-row",Q(fe+1)]),"data-line":fe+1},[l("span",P$,d(fe+1),1),l("span",{class:"fp-line-text",innerHTML:ie(q)},null,8,E$)],10,B$))),128))])]))])):m.value==="pdf"?(a(),u("div",R$,[ce.value?(a(),u("iframe",{key:0,class:"fp-pdf-frame",src:ce.value,title:e.file.path},null,8,O$)):(a(),u("div",D$,[l("span",z$,d(r(n)("filePreview.pdfNoPreview")),1)]))])):m.value==="csv"?(a(),u("div",F$,[l("table",q$,[l("tbody",null,[(a(!0),u(ye,null,Be(Se.value,(q,fe)=>(a(),u("tr",{key:fe,class:de(Q(fe+1)),"data-line":fe+1},[l("th",null,d(fe+1),1),(a(!0),u(ye,null,Be(q,(xe,Ue)=>(a(),u("td",{key:Ue},d(xe),1))),128))],10,W$))),128))])])])):m.value==="image"?(a(),u("div",N$,[me.value?(a(),u("img",{key:0,src:me.value,alt:e.file.path,class:de(["fp-image",{actual:pe.value==="actual"}])},null,10,H$)):(a(),u("div",U$,[l("span",V$,[I(ae,{name:"image-off",size:"lg"})]),l("span",j$,d(r(n)("filePreview.imageNoPreview",{mime:e.file.mime,size:P(e.file.size)})),1)]))])):m.value==="video"?(a(),u("div",K$,[_e.value?(a(),u("video",{key:0,src:_e.value,class:"fp-image",controls:"",playsinline:"",preload:"metadata"},null,8,G$)):(a(),u("div",Q$,[l("span",Y$,[I(ae,{name:"image-off",size:"lg"})]),l("span",Z$,d(r(n)("filePreview.videoNoPreview",{mime:e.file.mime,size:P(e.file.size)})),1)]))])):m.value==="text"?(a(),u("div",X$,[l("div",J$,[(a(!0),u(ye,null,Be(_.value,(q,fe)=>(a(),u("div",{key:fe,class:de(["fp-line-row",Q(fe+1)]),"data-line":fe+1},[l("span",tM,d(fe+1),1),l("span",{class:"fp-line-text",innerHTML:ie(q)},null,8,nM)],10,eM))),128))])])):(a(),u("div",sM,[l("div",oM,[l("span",iM,[I(ae,{name:"file-off",size:"lg"})]),l("span",aM,d(r(n)("filePreview.binaryNoPreview",{mime:e.file.mime||r(n)("filePreview.unknownType"),size:P(e.file.size)})),1)])]))],64)):B("",!0)],512))}}),rM=Te(lM,[["__scopeId","data-v-ded222d2"]]),cM={class:"tp"},uM=Ie({__name:"ThinkingPanel",props:{text:{},subtitle:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Fe(),i=T(null);return Ee(()=>n.text,()=>{const c=i.value;!c||!(c.scrollHeight-c.scrollTop-c.clientHeight<24)||Ne(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},{immediate:!0}),(c,p)=>(a(),u("div",cM,[I(Vs,{title:r(o)("common.preview"),subtitle:e.subtitle??r(o)("thinking.panelTitle"),"close-label":r(o)("thinking.close"),onClose:p[0]||(p[0]=v=>s("close"))},null,8,["title","subtitle","close-label"]),l("pre",{ref_key:"bodyEl",ref:i,class:"tp-body"},d(e.text),513)]))}}),Tr=Te(uM,[["__scopeId","data-v-98c343f3"]]),dM={class:"ap"},pM={key:0,class:"ap-type"},fM={key:1,class:"ap-reason"},mM={key:2,class:"ap-field"},vM={class:"ap-field-label"},hM={class:"ap-field-body"},gM={key:3,class:"ap-field"},yM={class:"ap-field-label"},kM={class:"ap-field-body ap-live"},bM={key:4,class:"ap-field"},wM={class:"ap-field-label"},SM={class:"ap-field-body ap-progress"},CM={key:0,class:"ap-call"},_M={key:1,class:"ap-output"},xM=["onClick"],$M={key:5,class:"ap-field"},MM={class:"ap-field-label"},IM={class:"ap-field-body"},TM=8,Ar=5,Lr=2,AM=Ie({__name:"AgentDetailPanel",props:{member:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Fe(),i=$(()=>(n.member.outputLines??[]).map(k=>k.trimEnd()).filter(k=>k.length>0)),c=$(()=>(n.member.text??"").trimEnd());function p(k){const b=[];let _=null,O=0;for(const y of k)y.startsWith("Calling ")?(_={key:`g${O++}`,call:y,output:[]},b.push(_)):_?_.output.push(y):(_={key:`g${O++}`,call:"",output:[y]},b.push(_));return b}const v=$(()=>p(i.value)),g=T(new Set);function C(k){return g.value.has(k)}function x(k){const b=new Set(g.value);b.has(k)?b.delete(k):b.add(k),g.value=b}function h(k){return k.output.length-Ar-Lr}function m(k){switch(k){case"queued":return"Queued";case"working":return"Working";case"suspended":return"Suspended";case"completed":return"Completed";case"failed":return"Failed"}}const w=T(null);return Ee(()=>i.value.length+c.value.length,()=>{const k=w.value;!k||!(k.scrollHeight-k.scrollTop-k.clientHeight<24)||Ne(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)})},{immediate:!0}),(k,b)=>(a(),u("div",dM,[I(Vs,{title:r(o)("common.preview"),subtitle:e.member.name,"close-label":r(o)("thinking.close"),onClose:b[0]||(b[0]=_=>s("close"))},{default:j(()=>[I(hn,{variant:"neutral",size:"sm",class:"ap-phase"},{default:j(()=>[ve(d(m(e.member.phase)),1)]),_:1})]),_:1},8,["title","subtitle","close-label"]),l("div",{ref_key:"bodyEl",ref:w,class:"ap-body"},[e.member.subagentType?(a(),u("div",pM,d(e.member.subagentType),1)):B("",!0),e.member.suspendedReason?(a(),u("div",fM,d(e.member.suspendedReason),1)):B("",!0),e.member.prompt?(a(),u("div",mM,[l("span",vM,d(r(o)("tasks.fieldTask")),1),l("div",hM,d(e.member.prompt),1)])):B("",!0),c.value?(a(),u("div",gM,[l("span",yM,d(r(o)("tasks.fieldOutput")),1),l("div",kM,d(c.value),1)])):B("",!0),v.value.length>0?(a(),u("div",bM,[l("span",wM,d(r(o)("tasks.fieldProgress")),1),l("div",SM,[(a(!0),u(ye,null,Be(v.value,_=>(a(),u("div",{key:_.key,class:"ap-group"},[_.call?(a(),u("div",CM,[b[1]||(b[1]=l("span",{class:"ap-glyph","aria-hidden":"true"},"▶",-1)),ve(" "+d(_.call),1)])):B("",!0),_.output.length>0?(a(),u("div",_M,[_.output.length<=TM||C(_.key)?(a(!0),u(ye,{key:0},Be(_.output,(O,y)=>(a(),u("div",{key:y,class:"ap-out-line"},d(O),1))),128)):(a(),u(ye,{key:1},[(a(!0),u(ye,null,Be(_.output.slice(0,Ar),(O,y)=>(a(),u("div",{key:y,class:"ap-out-line"},d(O),1))),128)),l("button",{type:"button",class:"ap-fold",onClick:O=>x(_.key)}," … ("+d(h(_))+" more) ",9,xM),(a(!0),u(ye,null,Be(_.output.slice(-Lr),(O,y)=>(a(),u("div",{key:"t"+y,class:"ap-out-line"},d(O),1))),128))],64))])):B("",!0)]))),128))])])):B("",!0),e.member.summary?(a(),u("div",$M,[l("span",MM,d(r(o)("tasks.fieldResult")),1),l("div",IM,d(e.member.summary),1)])):B("",!0)],512)]))}}),LM=Te(AM,[["__scopeId","data-v-59df0789"]]),_u=["off","protanopia-deuteranopia","tritanopia"],BM=["pierre-light","pierre-light-protanopia-deuteranopia","pierre-light-tritanopia","pierre-dark","pierre-dark-protanopia-deuteranopia","pierre-dark-tritanopia"];function PM(e){return typeof e=="string"&&_u.includes(e)}function Br(e){return PM(e)?e:"off"}function EM(e,t){const n=e?"pierre-dark":"pierre-light";return t==="off"?n:`${n}-${t}`}function RM(e,t,n=BM){const s=EM(e,t);return n.includes(s)?s:null}const OM={"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"}},DM=["data-theme"],zM={key:0,class:"hunk-text"},FM={class:"dl-gutter old"},qM={class:"dl-gutter new"},WM={class:"dl-sign"},NM={class:"dl-text"},HM=Ie({__name:"DiffLines",props:{lines:{},theme:{default:null}},setup(e){const t=e,n=$(()=>{const c=t.theme?OM[t.theme]:void 0;return c?{"--dl-add":c.add,"--dl-add-soft":c.addSoft,"--dl-del":c.del,"--dl-del-soft":c.delSoft}:null});function s(c){return c.oldNo!==void 0?String(c.oldNo):""}function o(c){return c.newNo!==void 0?String(c.newNo):""}function i(c){return`dl-${c.type}`}return(c,p)=>(a(),u("div",{class:"diff-lines","data-theme":n.value?t.theme:null,style:ct(n.value)},[(a(!0),u(ye,null,Be(e.lines,(v,g)=>(a(),u("div",{key:g,class:de(["dl",i(v)])},[v.type==="hunk"?(a(),u("span",zM,d(v.text),1)):(a(),u(ye,{key:1},[l("span",FM,d(s(v)),1),l("span",qM,d(o(v)),1),l("span",WM,d(v.type==="add"?"+":v.type==="del"?"-":" "),1),l("span",NM,d(v.text),1)],64))],2))),128))],12,DM))}}),xu=Te(HM,[["__scopeId","data-v-26e24204"]]),UM={class:"tdp"},VM={class:"tdp-body"},jM={key:1,class:"tdp-output"},KM={key:2,class:"tdp-empty"},GM=Ie({__name:"ToolDiffPanel",props:{target:{}},emits:["close"],setup(e,{emit:t}){const n=t,{t:s}=Fe();return(o,i)=>(a(),u("div",UM,[I(Vs,{title:e.target.title,subtitle:e.target.path,"close-label":r(s)("thinking.close"),onClose:i[0]||(i[0]=c=>n("close"))},null,8,["title","subtitle","close-label"]),l("div",VM,[e.target.lines&&e.target.lines.length>0?(a(),Z(xu,{key:0,lines:e.target.lines},null,8,["lines"])):e.target.output&&e.target.output.length>0?(a(),u("div",jM,[(a(!0),u(ye,null,Be(e.target.output,(c,p)=>(a(),u("div",{key:p},d(c),1))),128))])):(a(),u("div",KM,d(r(s)("diff.noDiff")),1))])]))}}),QM=Te(GM,[["__scopeId","data-v-76f2fbca"]]),YM={class:"sc"},ZM={key:0,class:"sc-empty"},XM={key:2,class:"sc-loading","aria-hidden":"true"},JM={class:"sc-composer"},eI=["placeholder"],tI=["disabled"],nI=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}=Fe(),i=$(()=>n.turns.find(O=>O.role==="user")?.text?.trim()??""),c=$(()=>n.title?.trim()||o("sideChat.title")),p=$(()=>n.subtitle?.trim()?n.subtitle.trim():i.value||o("sideChat.subtitle")),v=T(""),g=T(null),C=T(null);function x(){const _=v.value.trim();_&&(s("send",_),v.value="",Ne(()=>{g.value&&(g.value.style.height="auto"),h()}))}function h(){const _=C.value;_&&(_.scrollTop=_.scrollHeight)}const m=$(()=>{const _=n.turns;if(_.length===0)return"0";const O=_.at(-1),y=O.thinking?.length??0,L=O.tools?.reduce((N,H)=>N+H.name.length+(H.arg?.length??0)+(H.output?.join("").length??0),0)??0;return`${_.length}:${O.text.length}:${y}:${L}`});Ee(m,async()=>{!n.running&&!n.sending||(await Ne(),h())});const w=$(()=>n.sending?n.turns.at(-1)?.role==="user":!1);function k(_){_.key==="Enter"&&!_.shiftKey&&!_.isComposing&&(_.preventDefault(),x())}function b(){const _=g.value;_&&(_.style.height="auto",_.style.height=`${Math.min(_.scrollHeight,160)}px`)}return(_,O)=>(a(),u("div",YM,[I(Vs,{title:c.value,subtitle:p.value,"close-label":r(o)("thinking.close"),onClose:O[0]||(O[0]=y=>s("close"))},null,8,["title","subtitle","close-label"]),l("div",{ref_key:"bodyRef",ref:C,class:"sc-body"},[e.turns.length===0?(a(),u("div",ZM,d(r(o)("sideChat.empty")),1)):(a(),Z(hu,{key:1,turns:e.turns,approvals:[],"turn-active":e.running,working:e.sending||e.running},null,8,["turns","turn-active","working"])),w.value?(a(),u("div",XM,[I(mu,{label:r(o)("conversation.waitingForResponse")},null,8,["label"])])):B("",!0)],512),l("div",JM,[rt(l("textarea",{ref_key:"inputRef",ref:g,"onUpdate:modelValue":O[1]||(O[1]=y=>v.value=y),class:"sc-input",rows:"1",placeholder:r(o)("sideChat.placeholder"),onInput:b,onKeydown:k},null,40,eI),[[gn,v.value]]),I(Je,{text:r(o)("sideChat.send")},{default:j(()=>[l("button",{type:"button",class:"sc-send",disabled:!v.value.trim(),onClick:x},[I(ae,{name:"arrow-right",size:"sm"})],8,tI)]),_:1},8,["text"])])]))}}),sI=Te(nI,[["__scopeId","data-v-73258ff1"]]),oI={class:"changes-pane"},iI={class:"dv-path"},aI={class:"diff-head"},lI={class:"back-label"},rI={class:"dv-cb-label"},cI={key:0,class:"empty-state"},uI={key:1,class:"dv-lines-wrap"},dI={key:2,class:"empty-state"},pI={class:"dv-change-count"},fI={class:"ch-head"},mI={class:"br-label"},vI={class:"br-name"},hI={key:0,class:"sync-info"},gI={key:0,class:"ahead"},yI={key:0,class:"behind"},kI={key:1,class:"empty-head"},bI={key:0,class:"ch-list"},wI=["onClick"],SI={class:"fpath"},CI={key:1,class:"ch-list ch-tree"},_I={class:"tree-list"},xI=["onClick"],$I={class:"tree-name"},MI=["onClick"],II={class:"tree-name"},TI={key:2,class:"empty-state"},AI={key:3,class:"empty-state"},LI=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}=Fe(),s=e,o=t;function i(V){const ee=V.toLowerCase();return ee==="modified"?"modified":ee==="added"?"added":ee==="deleted"?"deleted":ee==="renamed"?"renamed":ee==="untracked"?"untracked":ee==="conflicted"?"conflicted":ee==="ignored"?"ignored":ee==="clean"?"clean":"unknown"}const c={modified:"M",added:"A",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"I",clean:"·",unknown:"?"};function p(V){return c[i(V)]??"?"}function v(V,ee=60){return V.length<=ee?V:"…"+V.slice(V.length-ee+1)}const g=$(()=>s.gitInfo!==null),C=$(()=>s.changes.length>0),x=$(()=>(s.selectedDiffPath??null)!==null),h=$(()=>s.mode==="detail"||s.mode==="full"&&x.value),m=$(()=>s.fileDiff??[]),w=$(()=>s.fileDiffLoading===!0),k=ru(),b=T(Br(xt(ze.diffColorblind))),_=$(()=>b.value==="off"?null:RM(k.value,b.value)),O={off:"colorblindOff","protanopia-deuteranopia":"colorblindRedGreen",tritanopia:"colorblindBlueYellow"},y=$(()=>_u.map(V=>({value:V,label:n(`diff.${O[V]}`)})));function L(V){const ee=Br(V);b.value=ee,Lt(ze.diffColorblind,ee)}function N(V){o("open",V)}function H(){o("back")}function U(){o("close")}const Q=T("list");function P(V){Q.value=V}function M(V){const ee={children:[]},le=[...V].sort((me,_e)=>me.path.localeCompare(_e.path));for(const me of le){const _e=me.path.split("/");let ce=ee;for(let K=0;K<_e.length;K++){const Y=_e[K],Se=K===_e.length-1,oe=_e.slice(0,K+1).join("/");let X=ce.children.find(ie=>ie.name===Y&&ie.kind===(Se?"file":"folder"));X||(X={name:Y,path:oe,kind:Se?"file":"folder",status:Se?me.status:void 0,children:[]},ce.children.push(X)),ce=X}}return ee.children}const A=$(()=>M(s.changes)),R=T(new Set);function ne(V){return!R.value.has(V)}const se=$(()=>{const V=[];function ee(le,me){for(const _e of le)V.push({node:_e,depth:me}),_e.kind==="folder"&&ne(_e.path)&&ee(_e.children,me+1)}return ee(A.value,0),V});function ke(V){const ee=new Set(R.value);ee.has(V.path)?ee.delete(V.path):ee.add(V.path),R.value=ee}function pe(V){return`${16+V*16}px`}return(V,ee)=>(a(),u("div",oI,[h.value?(a(),u(ye,{key:0},[I(Vs,{title:r(n)("diff.title"),closable:e.closable,"close-label":r(n)("diff.close"),onClose:U},{default:j(()=>[I(Je,{text:e.selectedDiffPath??""},{default:j(()=>[l("span",iI,d(v(e.selectedDiffPath??"",50)),1)]),_:1},8,["text"])]),_:1},8,["title","closable","close-label"]),l("div",aI,[e.hideBack?B("",!0):(a(),Z(We,{key:0,variant:"ghost",size:"sm",onClick:H},{default:j(()=>[ee[0]||(ee[0]=l("span",{"aria-hidden":"true"},"←",-1)),l("span",lI,d(r(n)("diff.back")),1)]),_:1})),m.value.length>0?(a(),u(ye,{key:1},[l("span",rI,d(r(n)("diff.colorblind")),1),I(Xt,{class:"dv-cb-toggle","model-value":b.value,size:"sm",options:y.value,"onUpdate:modelValue":L},null,8,["model-value","options"])],64)):B("",!0)]),w.value?(a(),u("div",cI,d(r(n)("diff.loading")),1)):m.value.length>0?(a(),u("div",uI,[I(xu,{lines:m.value,theme:_.value},null,8,["lines","theme"])])):(a(),u("div",dI,d(r(n)("diff.noDiff")),1))],64)):(a(),u(ye,{key:1},[I(Vs,{title:r(n)("diff.title"),closable:e.closable,"close-label":r(n)("diff.close"),onClose:U},{default:j(()=>[l("span",pI,d(r(n)("diff.changeCount",{count:e.changes.length})),1),I(Xt,{"model-value":Q.value,size:"sm",options:[{value:"list",label:r(n)("diff.list")},{value:"tree",label:r(n)("diff.tree")}],"onUpdate:modelValue":P},null,8,["model-value","options"])]),_:1},8,["title","closable","close-label"]),l("div",fI,[g.value?(a(),u(ye,{key:0},[l("span",mI,d(r(n)("diff.branch")),1),l("span",vI,d(e.gitInfo.branch),1),e.gitInfo.ahead>0||e.gitInfo.behind>0?(a(),u("span",hI,[I(Je,{text:r(n)("diff.aheadTitle")},{default:j(()=>[e.gitInfo.ahead>0?(a(),u("span",gI,"↑"+d(e.gitInfo.ahead),1)):B("",!0)]),_:1},8,["text"]),I(Je,{text:r(n)("diff.behindTitle")},{default:j(()=>[e.gitInfo.behind>0?(a(),u("span",yI,"↓"+d(e.gitInfo.behind),1)):B("",!0)]),_:1},8,["text"])])):B("",!0)],64)):(a(),u("span",kI,d(r(n)("diff.empty")),1))]),C.value&&Q.value==="list"?(a(),u("div",bI,[(a(!0),u(ye,null,Be(e.changes,le=>(a(),Z(Je,{key:le.path,text:le.path},{default:j(()=>[l("button",{type:"button",class:"ch-row",onClick:me=>N(le.path)},[l("span",{class:de(["badge",i(le.status)])},d(p(le.status)),3),l("span",SI,d(v(le.path)),1)],8,wI)]),_:2},1032,["text"]))),128))])):C.value&&Q.value==="tree"?(a(),u("div",CI,[l("ul",_I,[(a(!0),u(ye,null,Be(se.value,({node:le,depth:me})=>(a(),u("li",{key:le.path,class:"tree-node"},[le.kind==="folder"?(a(),u("button",{key:0,type:"button",class:"tree-row tree-folder",style:ct({paddingLeft:pe(me)}),onClick:_e=>ke(le)},[I(ae,{class:"tree-icon",name:"folder-solid",size:"sm"}),l("span",$I,d(le.name),1)],12,xI)):(a(),Z(Je,{key:1,text:le.path},{default:j(()=>[l("button",{type:"button",class:"tree-row tree-file",style:ct({paddingLeft:pe(me)}),onClick:_e=>N(le.path)},[l("span",{class:de(["badge",i(le.status)])},d(p(le.status)),3),l("span",II,d(le.name),1)],12,MI)]),_:2},1032,["text"]))]))),128))])])):g.value?(a(),u("div",TI,d(r(n)("diff.clean")),1)):(a(),u("div",AI,d(r(n)("diff.empty")),1))],64))]))}}),BI=Te(LI,[["__scopeId","data-v-6591e558"]]);function dl(e,t){let n=null;lt(()=>{n=typeof document<"u"&&document.activeElement instanceof HTMLElement?document.activeElement:null,Ne(()=>{const s=t?.value??e.value;try{s?.focus()}catch{}})}),vn(()=>{const s=n;if(n=null,!(!s||typeof document>"u"||!document.contains(s)))try{s.focus()}catch{}})}const PI={class:"search-wrap"},EI={key:0,class:"tab-strip"},RI={key:1,class:"state-row"},OI={key:2,class:"state-row unavail"},DI={key:3,class:"model-list"},zI=["aria-selected","onClick","onMouseenter"],FI={class:"check"},qI={class:"model-main"},WI={class:"model-name"},NI={class:"model-id"},HI={key:0,class:"caps"},UI={class:"model-provider"},VI={class:"model-ctx"},jI={key:0,class:"empty"},KI={class:"footer-hint"},GI=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}=Fe(),s=e,o=t,i=$(()=>new Set(s.starredIds??[]));function c(y){return i.value.has(y)}const p=T(""),v=T(null),g=T(null),C=T("all");dl(g,v);const x=$(()=>{const y=new Set,L=[{id:"all",label:n("model.allTab")}];for(const N of s.models)y.has(N.provider)||(y.add(N.provider),L.push({id:N.provider,label:N.provider}));return L}),h=$(()=>{const y=p.value.toLowerCase().trim(),L=s.models.filter(N=>{if(C.value!=="all"&&N.provider!==C.value)return!1;const H=(N.displayName??N.model).toLowerCase().includes(y),U=N.provider.toLowerCase().includes(y),Q=N.id.toLowerCase().includes(y);return!y||H||U||Q});return C.value!=="all"?L:L.sort((N,H)=>{const U=c(N.id)?1:0;return(c(H.id)?1:0)-U})}),m=$(()=>h.value),w=T(0);Ee([p,C],()=>{w.value=0}),Ee(x,y=>{y.some(L=>L.id===C.value)||(C.value="all")}),Ee(m,y=>{w.value=Math.min(w.value,Math.max(y.length-1,0))});function k(y){if(y.key==="Escape"){o("close");return}if(y.key==="ArrowDown")y.preventDefault(),w.value=Math.min(w.value+1,m.value.length-1);else if(y.key==="ArrowUp")y.preventDefault(),w.value=Math.max(w.value-1,0);else if(y.key==="Enter"){const L=m.value[w.value];L&&o("select",L.id)}}lt(()=>{document.addEventListener("keydown",k)}),ut(()=>{document.removeEventListener("keydown",k)});function b(y){o("select",y)}function _(y){return m.value.indexOf(y)}function O(y){C.value=y}return(y,L)=>(a(),Z(ds,{open:!0,"close-on-esc":!1,title:r(n)("model.title"),size:"xl",height:"fixed",onClose:L[1]||(L[1]=N=>o("close"))},{default:j(()=>[l("div",{ref_key:"dialogRef",ref:g,class:"mp"},[l("div",PI,[I(zn,{ref_key:"searchRef",ref:v,modelValue:p.value,"onUpdate:modelValue":L[0]||(L[0]=N=>p.value=N),placeholder:r(n)("model.searchPlaceholder"),autocomplete:"off",spellcheck:"false",autofocus:""},null,8,["modelValue","placeholder"])]),x.value.length>1?(a(),u("div",EI,[(a(!0),u(ye,null,Be(x.value,N=>(a(),Z(We,{key:N.id,variant:N.id===C.value?"secondary":"ghost",size:"sm",onClick:H=>O(N.id)},{default:j(()=>[ve(d(N.label),1)]),_:2},1032,["variant","onClick"]))),128))])):B("",!0),e.loading?(a(),u("div",RI,[I(Jt,{size:"sm"}),l("span",null,d(r(n)("model.loading")),1)])):e.unavailable?(a(),u("div",OI,[I(ae,{name:"alert-triangle",size:"lg"}),l("span",null,d(r(n)("model.unavailable")),1)])):(a(),u("div",DI,[(a(!0),u(ye,null,Be(m.value,N=>(a(),u("div",{key:N.id,class:de(["model-row",{"is-current":N.id===e.current,"is-selected":_(N)===w.value}]),role:"option","aria-selected":N.id===e.current,onClick:H=>b(N.id),onMouseenter:H=>w.value=_(N)},[l("span",FI,[N.id===e.current?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",qI,[l("span",WI,d(N.displayName??N.model),1),l("span",NI,d(N.id),1),N.capabilities&&N.capabilities.length>0?(a(),u("span",HI,[(a(!0),u(ye,null,Be(N.capabilities,H=>(a(),Z(hn,{key:H,variant:"info",size:"sm"},{default:j(()=>[ve(d(H),1)]),_:2},1024))),128))])):B("",!0)]),l("span",UI,d(N.provider),1),l("span",VI,d(r(n)("model.contextSuffix",{size:r(Gn)(N.maxContextSize)})),1),I(et,{size:"sm",label:c(N.id)?r(n)("model.unstarTitle"):r(n)("model.starTitle"),onClick:Pe(H=>o("toggle-star",N.id),["stop"])},{default:j(()=>[c(N.id)?(a(),Z(ae,{key:0,name:"star",size:"md"})):(a(),Z(ae,{key:1,name:"star-outline",size:"md"}))]),_:2},1032,["label","onClick"])],42,zI))),128)),m.value.length===0&&!e.loading&&!e.unavailable?(a(),u("div",jI,d(s.models.length===0?r(n)("model.emptyNoModels"):r(n)("model.emptyNoMatch")),1)):B("",!0)])),l("div",KI,d(r(n)("model.footerHint")),1)],512)]),_:1},8,["title"]))}}),QI=Te(GI,[["__scopeId","data-v-56cefe51"]]),YI={key:0,class:"ui-field__label"},ZI={key:1,class:"ui-field__error"},XI={key:2,class:"ui-field__hint"},JI=Ie({__name:"Field",props:{label:{},hint:{},error:{}},setup(e){return(t,n)=>(a(),u("div",{class:de(["ui-field",{"has-error":!!e.error}])},[e.label?(a(),u("label",YI,d(e.label),1)):B("",!0),bt(t.$slots,"default",{},void 0,!0),e.error?(a(),u("span",ZI,d(e.error),1)):e.hint?(a(),u("span",XI,d(e.hint),1)):B("",!0)],2))}}),bs=Te(JI,[["__scopeId","data-v-49bce958"]]),eT=["value","disabled"],tT=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(),u("select",{class:de(["ui-select",[`ui-select--${e.size}`,{"has-error":e.error}]]),value:e.modelValue,disabled:e.disabled,onChange:s},[bt(o.$slots,"default",{},void 0,!0)],42,eT))}}),Ma=Te(tT,[["__scopeId","data-v-92a040fd"]]),nT={class:"prov-list"},sT={key:0,class:"state-row"},oT={key:1,class:"state-row unavail"},iT={key:2,class:"empty"},aT={class:"prov-info"},lT={class:"prov-type"},rT={key:0,class:"prov-url"},cT={class:"prov-meta"},uT={key:0},dT={class:"prov-actions"},pT={key:0,class:"add-section"},fT={key:0,class:"add-btns"},mT={key:1,class:"add-form"},vT=["value"],hT={key:0,class:"add-error"},gT={class:"form-btns"},yT={key:2,class:"import-form"},kT={class:"import-head"},bT={class:"import-title"},wT={key:0,class:"state-row"},ST={key:1,class:"import-error"},CT={key:2,class:"empty"},_T={key:3,class:"catalog-list"},xT=["aria-disabled","onClick"],$T={class:"catalog-check"},MT={class:"catalog-main"},IT={class:"catalog-name"},TT={class:"catalog-id"},AT={key:0,class:"catalog-wire"},LT={class:"catalog-meta"},BT={key:2,class:"catalog-count"},PT={key:4,class:"catalog-selected"},ET={class:"form-btns"},RT={key:3,class:"import-form"},OT={class:"import-head"},DT={class:"import-title"},zT={key:0,class:"add-error"},FT={class:"form-btns"},qT={class:"footer-hint"},WT=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}=Fe(),s=T(null);dl(s);const o=t;function i(ce){o("delete",ce)}const c=T(!1),p=In({type:"moonshot",apiKey:"",baseUrl:"",defaultModel:""}),v=T(""),g=["moonshot","anthropic","openai","custom"];function C(){p.type="moonshot",p.apiKey="",p.baseUrl="",p.defaultModel="",v.value="",c.value=!0}function x(){c.value=!1}function h(){if(!p.apiKey.trim()){v.value=n("providers.apiKeyRequired");return}v.value="",o("add",{type:p.type,apiKey:p.apiKey.trim()||void 0,baseUrl:p.baseUrl.trim()||void 0,defaultModel:p.defaultModel.trim()||void 0}),c.value=!1}const m=T(!1),w=T(""),k=T([]),b=T(!1),_=T(""),O=T(""),y=T("");let L;const N=$(()=>P0(k.value,w.value).map(Ol)),H=$(()=>k.value.find(ce=>ce.id===O.value)??null),U=$(()=>H.value===null?null:Ol(H.value));async function Q(ce){b.value=!0,_.value="";try{k.value=await Le().browseCatalogProviders(ce)}catch{_.value=n("providers.import.catalogLoadError")}finally{b.value=!1}}Ee(w,ce=>{O.value="",y.value="",L!==void 0&&clearTimeout(L),L=setTimeout(()=>void Q(ce),250)});function P(){m.value=!0,w.value="",O.value="",y.value="",_.value="",k.value=[],Q("")}function M(){m.value=!1,L!==void 0&&(clearTimeout(L),L=void 0)}function A(ce){O.value=ce,y.value=""}function R(){const ce=H.value;ce!==null&&(o("import-catalog",{catalogId:ce.id,baseUrl:ce.needsBaseUrl&&y.value.trim()||void 0}),M())}const ne=T(!1),se=In({url:"",apiKey:""}),ke=T("");function pe(){se.url="",se.apiKey="",ke.value="",ne.value=!0}function V(){ne.value=!1}function ee(){const ce=se.url.trim();if(ce===""){ke.value=n("providers.import.registryUrlRequired");return}ke.value="",o("import-registry",{url:ce,apiKey:se.apiKey.trim()||void 0}),V()}function le(ce){if(ce.key==="Escape"){if(m.value){M();return}if(ne.value){V();return}if(c.value){x();return}o("close")}}lt(()=>document.addEventListener("keydown",le)),ut(()=>{document.removeEventListener("keydown",le),L!==void 0&&clearTimeout(L)});function me(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,K)=>(a(),Z(ds,{open:!0,"close-on-esc":!1,title:r(n)("providers.title"),size:"xl",height:"fixed",onClose:K[10]||(K[10]=Y=>o("close"))},{default:j(()=>[l("div",{ref_key:"dialogRef",ref:s,class:"pm"},[l("div",nT,[e.loading?(a(),u("div",sT,[I(Jt,{size:"sm"}),l("span",null,d(r(n)("providers.loading")),1)])):e.unavailable?(a(),u("div",oT,[I(ae,{name:"alert-triangle",size:"md"}),l("span",null,d(r(n)("providers.unavailable")),1)])):e.providers.length===0?(a(),u("div",iT,d(r(n)("providers.empty")),1)):(a(!0),u(ye,{key:3},Be(e.providers,Y=>(a(),u("div",{key:Y.id,class:"prov-row"},[I(Je,{text:_e(Y.status)},{default:j(()=>[l("span",{class:de(["status-dot",{"status-dot--empty":Y.status!=="connected"&&Y.status!=="error"}]),style:ct(Y.status==="connected"||Y.status==="error"?{background:me(Y.status)}:void 0)},null,6)]),_:2},1032,["text"]),l("div",aT,[l("span",lT,d(Y.type),1),Y.baseUrl?(a(),u("span",rT,d(Y.baseUrl),1)):B("",!0),l("span",cT,[I(hn,{variant:Y.hasApiKey?"success":"neutral",size:"sm"},{default:j(()=>[ve(d(Y.hasApiKey?r(n)("providers.keySet"):r(n)("providers.keyNotSet")),1)]),_:2},1032,["variant"]),Y.models&&Y.models.length>0?(a(),u("span",uT," · "+d(r(n)("providers.modelCount",{count:Y.models.length})),1)):B("",!0)])]),l("div",dT,[I(Je,{text:r(n)("providers.refreshTitle",{type:Y.type})},{default:j(()=>[I(We,{variant:"secondary",size:"sm",onClick:Se=>o("refresh",Y.id)},{default:j(()=>[ve(d(r(n)("providers.refresh")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"]),I(Je,{text:r(n)("providers.deleteTitle",{type:Y.type})},{default:j(()=>[I(We,{variant:"danger-soft",size:"sm",onClick:Se=>i(Y.id)},{default:j(()=>[ve(d(r(n)("providers.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"])])]))),128))]),e.unavailable?B("",!0):(a(),u("div",pT,[!c.value&&!m.value&&!ne.value?(a(),u("div",fT,[I(We,{variant:"secondary",size:"sm",onClick:K[0]||(K[0]=Y=>o("openLogin","moonshot"))},{default:j(()=>[I(ae,{name:"user",size:"sm"}),ve(" "+d(r(n)("providers.loginKimi")),1)]),_:1}),I(We,{variant:"secondary",size:"sm",onClick:K[1]||(K[1]=Y=>o("openLogin","anthropic"))},{default:j(()=>[I(ae,{name:"user",size:"sm"}),ve(" "+d(r(n)("providers.loginAnthropic")),1)]),_:1}),I(We,{variant:"primary",size:"sm",onClick:C},{default:j(()=>[I(ae,{name:"plus",size:"sm"}),ve(" "+d(r(n)("providers.enterApiKey")),1)]),_:1}),I(We,{variant:"secondary",size:"sm",onClick:P},{default:j(()=>[I(ae,{name:"globe",size:"sm"}),ve(" "+d(r(n)("providers.import.fromCatalog")),1)]),_:1}),I(We,{variant:"secondary",size:"sm",onClick:pe},{default:j(()=>[I(ae,{name:"download",size:"sm"}),ve(" "+d(r(n)("providers.import.fromRegistry")),1)]),_:1})])):c.value?(a(),u("div",mT,[I(bs,{label:r(n)("providers.fieldType")},{default:j(()=>[I(Ma,{modelValue:p.type,"onUpdate:modelValue":K[2]||(K[2]=Y=>p.type=Y)},{default:j(()=>[(a(),u(ye,null,Be(g,Y=>l("option",{key:Y,value:Y},d(Y),9,vT)),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),I(bs,{label:r(n)("providers.fieldApiKey")},{default:j(()=>[I(zn,{modelValue:p.apiKey,"onUpdate:modelValue":K[3]||(K[3]=Y=>p.apiKey=Y),type:"password",placeholder:"sk-…",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),I(bs,{label:r(n)("providers.fieldBaseUrl")},{default:j(()=>[I(zn,{modelValue:p.baseUrl,"onUpdate:modelValue":K[4]||(K[4]=Y=>p.baseUrl=Y),placeholder:r(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),I(bs,{label:r(n)("providers.fieldDefaultModel")},{default:j(()=>[I(zn,{modelValue:p.defaultModel,"onUpdate:modelValue":K[5]||(K[5]=Y=>p.defaultModel=Y),placeholder:r(n)("providers.optional"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),v.value?(a(),u("div",hT,d(v.value),1)):B("",!0),l("div",gT,[I(We,{variant:"primary",size:"sm",onClick:h},{default:j(()=>[ve(d(r(n)("providers.add")),1)]),_:1}),I(We,{variant:"secondary",size:"sm",onClick:x},{default:j(()=>[ve(d(r(n)("common.cancel")),1)]),_:1})])])):m.value?(a(),u("div",yT,[l("div",kT,[I(We,{variant:"ghost",size:"sm",onClick:M},{default:j(()=>[ve(d(r(n)("providers.import.back")),1)]),_:1}),l("span",bT,d(r(n)("providers.import.catalogTitle")),1)]),I(bs,{label:r(n)("providers.import.catalogSearchLabel")},{default:j(()=>[I(zn,{modelValue:w.value,"onUpdate:modelValue":K[6]||(K[6]=Y=>w.value=Y),placeholder:r(n)("providers.import.catalogSearchPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),b.value?(a(),u("div",wT,[I(Jt,{size:"sm"}),l("span",null,d(r(n)("providers.import.catalogLoading")),1)])):_.value?(a(),u("div",ST,d(_.value),1)):N.value.length===0?(a(),u("div",CT,d(r(n)("providers.import.catalogEmpty")),1)):(a(),u("div",_T,[(a(!0),u(ye,null,Be(N.value,Y=>(a(),u("div",{key:Y.id,class:de(["catalog-row",{"is-selected":Y.id===O.value,"is-rejected":Y.rejected}]),"aria-disabled":Y.rejected?"true":void 0,onClick:Se=>Y.rejected?void 0:A(Y.id)},[l("span",$T,[Y.id===O.value?(a(),Z(ae,{key:0,name:"check",size:"sm"})):B("",!0)]),l("span",MT,[l("span",IT,d(Y.name),1),l("span",TT,d(Y.id),1),Y.wireType?(a(),u("span",AT,d(Y.wireType),1)):B("",!0)]),l("span",LT,[Y.rejected?(a(),Z(hn,{key:0,variant:"danger",size:"sm"},{default:j(()=>[ve(d(r(n)("providers.import.catalogRejected",{reason:Y.rejectReason??""})),1)]),_:2},1024)):Y.needsBaseUrl?(a(),Z(hn,{key:1,variant:"warning",size:"sm"},{default:j(()=>[ve(d(r(n)("providers.import.catalogNeedsBaseUrl")),1)]),_:1})):(a(),u("span",BT,d(r(n)("providers.modelCount",{count:Y.modelCount})),1))])],10,xT))),128))])),U.value?(a(),u("div",PT,[U.value.needsBaseUrl?(a(),Z(bs,{key:0,label:r(n)("providers.fieldBaseUrl"),hint:r(n)("providers.import.catalogBaseUrlHint")},{default:j(()=>[I(zn,{modelValue:y.value,"onUpdate:modelValue":K[7]||(K[7]=Y=>y.value=Y),placeholder:r(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label","hint"])):B("",!0)])):B("",!0),l("div",ET,[I(We,{variant:"primary",size:"sm",disabled:H.value===null||U.value?.needsBaseUrl===!0&&y.value.trim()==="",onClick:R},{default:j(()=>[ve(d(r(n)("providers.import.importAction")),1)]),_:1},8,["disabled"]),I(We,{variant:"secondary",size:"sm",onClick:M},{default:j(()=>[ve(d(r(n)("common.cancel")),1)]),_:1})])])):ne.value?(a(),u("div",RT,[l("div",OT,[I(We,{variant:"ghost",size:"sm",onClick:V},{default:j(()=>[ve(d(r(n)("providers.import.back")),1)]),_:1}),l("span",DT,d(r(n)("providers.import.registryTitle")),1)]),I(bs,{label:r(n)("providers.import.registryUrlLabel")},{default:j(()=>[I(zn,{modelValue:se.url,"onUpdate:modelValue":K[8]||(K[8]=Y=>se.url=Y),placeholder:r(n)("providers.import.registryUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),I(bs,{label:r(n)("providers.import.registryApiKeyLabel")},{default:j(()=>[I(zn,{modelValue:se.apiKey,"onUpdate:modelValue":K[9]||(K[9]=Y=>se.apiKey=Y),type:"password",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),ke.value?(a(),u("div",zT,d(ke.value),1)):B("",!0),l("div",FT,[I(We,{variant:"primary",size:"sm",onClick:ee},{default:j(()=>[ve(d(r(n)("providers.import.importAction")),1)]),_:1}),I(We,{variant:"secondary",size:"sm",onClick:V},{default:j(()=>[ve(d(r(n)("common.cancel")),1)]),_:1})])])):B("",!0)])),l("div",qT,d(r(n)("providers.escClose")),1)],512)]),_:1},8,["title"]))}}),NT=Te(WT,[["__scopeId","data-v-b1859ac1"]]),HT={key:0,width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",stroke:"var(--color-success)","stroke-width":"2","aria-hidden":"true"},UT={key:1,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-danger)","stroke-width":"1.5","aria-hidden":"true"},VT={key:2,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-warning)","stroke-width":"1.5","aria-hidden":"true"},oa=Ie({__name:"AuthStateIcon",props:{kind:{}},setup(e){return(t,n)=>e.kind==="success"?(a(),u("svg",HT,[...n[0]||(n[0]=[l("circle",{cx:"18",cy:"18",r:"15"},null,-1),l("polyline",{points:"10,18 15,24 26,12"},null,-1)])])):e.kind==="expired"?(a(),u("svg",UT,[...n[1]||(n[1]=[l("circle",{cx:"14",cy:"14",r:"12"},null,-1),l("line",{x1:"14",y1:"8",x2:"14",y2:"15"},null,-1),l("circle",{cx:"14",cy:"19",r:"1.2",fill:"var(--color-danger)"},null,-1)])])):(a(),u("svg",VT,[...n[2]||(n[2]=[l("path",{d:"M14 3 L26 24 H2 Z"},null,-1),l("line",{x1:"14",y1:"12",x2:"14",y2:"18"},null,-1),l("circle",{cx:"14",cy:"21.5",r:"1",fill:"var(--color-warning)"},null,-1)])]))}}),jT={key:0,class:"center-body"},KT={class:"center-text"},GT={key:1,class:"nb"},QT={class:"nb-lead"},YT=["href"],ZT={class:"nb-or"},XT={class:"nb-fallback"},JT={class:"nb-fb-text"},eA=["href"],tA={class:"nb-code-row"},nA={class:"nb-code"},sA={class:"nb-status"},oA={class:"nb-status-text"},iA={class:"nb-countdown"},aA={key:2,class:"center-body"},lA={class:"center-text success-text"},rA={class:"center-hint"},cA={class:"center-body"},uA={class:"center-text err-text"},dA={class:"center-hint"},pA={class:"actions"},fA={class:"center-body"},mA={class:"center-text warn-text"},vA={class:"center-hint"},hA={class:"actions"},gA=3,yA=Ie({__name:"LoginDialog",props:{onStartOAuthLogin:{type:Function},onPollOAuthLogin:{type:Function},onCancelOAuthLogin:{type:Function}},emits:["success","close"],setup(e,{emit:t}){const{t:n}=Fe(),s=T(!0),o=t,i=e,c=T("starting"),p=T(!1),v=T(null),g=T(0),C=T(!1);let x=null,h=null,m=0;lt(async()=>{await w()}),ut(()=>{_()});async function w(){_(),v.value=null,p.value=!1,m=0,c.value="starting";const H=await i.onStartOAuthLogin();if(!H){c.value="error";return}if(H.status==="authenticated"){_(),c.value="success",setTimeout(()=>{o("success"),o("close")},800);return}v.value={flowId:H.flowId,verificationUri:H.verificationUri,verificationUriComplete:H.verificationUriComplete,userCode:H.userCode,expiresIn:H.expiresIn,interval:H.interval},g.value=H.expiresIn,c.value="device-code",k(),b(H.interval)}function k(){h&&clearInterval(h),h=setInterval(()=>{g.value>0?g.value--:(h&&clearInterval(h),h=null)},1e3)}function b(H){x&&clearTimeout(x),x=setTimeout(async()=>{const U=await i.onPollOAuthLogin();if(U===null){if(m+=1,m>=gA){_(),p.value=!0,c.value="error";return}b(H);return}m=0,U.status==="authenticated"?(_(),c.value="success",setTimeout(()=>{o("success"),o("close")},1200)):U.status==="expired"||U.status==="cancelled"?(_(),c.value="expired"):b(H)},H*1e3)}function _(){x&&(clearTimeout(x),x=null),h&&(clearInterval(h),h=null)}async function O(){await w()}async function y(){!v.value||!await Yt(v.value.userCode)||(C.value=!0,setTimeout(()=>{C.value=!1},2e3))}async function L(){_(),c.value==="device-code"&&i.onCancelOAuthLogin(),o("close")}function N(H){const U=Math.floor(H/60),Q=H%60;return`${U}:${String(Q).padStart(2,"0")}`}return(H,U)=>(a(),Z(ds,{open:s.value,"onUpdate:open":U[0]||(U[0]=Q=>s.value=Q),title:r(n)("login.title"),"close-on-overlay":!1,onClose:L},{default:j(()=>[c.value==="starting"?(a(),u("div",jT,[I(Jt,{size:"md"}),l("span",KT,d(r(n)("login.starting")),1)])):c.value==="device-code"&&v.value?(a(),u("div",GT,[l("div",QT,d(r(n)("login.lead")),1),l("a",{class:"nb-primary",href:v.value.verificationUriComplete,target:"_blank",rel:"noopener noreferrer"},[ve(d(r(n)("login.authorizeInBrowser"))+" ",1),I(ae,{name:"external-link",size:"sm"})],8,YT),l("div",ZT,d(r(n)("login.orDivider")),1),l("div",XT,[l("div",JT,[ve(d(r(n)("login.fallbackPrefix")),1),l("a",{class:"nb-fb-link",href:v.value.verificationUri,target:"_blank",rel:"noopener noreferrer"},d(v.value.verificationUri),9,eA),ve(d(r(n)("login.fallbackSuffix")),1)]),l("div",tA,[l("span",nA,d(v.value.userCode),1),I(We,{class:de(["nb-copy",{"is-copied":C.value}]),variant:"secondary",size:"sm",onClick:y},{default:j(()=>[C.value?(a(),u(ye,{key:0},[I(ae,{name:"check",size:"sm"}),ve(" "+d(r(n)("login.copied")),1)],64)):(a(),u(ye,{key:1},[I(ae,{name:"copy",size:"sm"}),ve(" "+d(r(n)("login.copy")),1)],64))]),_:1},8,["class"])])]),l("div",sA,[I(Jt,{size:"sm",label:r(n)("login.waitingAuth")},null,8,["label"]),l("span",oA,d(r(n)("login.waitingAutoClose")),1),l("span",iA,d(N(g.value)),1)])])):c.value==="success"?(a(),u("div",aA,[I(oa,{kind:"success"}),l("span",lA,d(r(n)("login.success")),1),l("span",rA,d(r(n)("login.successHint")),1)])):c.value==="expired"?(a(),u(ye,{key:3},[l("div",cA,[I(oa,{kind:"expired"}),l("span",uA,d(r(n)("login.expiredTitle")),1),l("span",dA,d(r(n)("login.expiredHint")),1)]),l("div",pA,[I(We,{variant:"primary",onClick:O},{default:j(()=>[ve(d(r(n)("login.retry")),1)]),_:1}),I(We,{variant:"secondary",onClick:L},{default:j(()=>[ve(d(r(n)("login.closeBtn")),1)]),_:1})])],64)):c.value==="error"?(a(),u(ye,{key:4},[l("div",fA,[I(oa,{kind:"error"}),l("span",mA,d(p.value?r(n)("login.pollErrorTitle"):r(n)("login.errorTitle")),1),l("span",vA,d(p.value?r(n)("login.pollErrorHint"):r(n)("login.errorHint")),1)]),l("div",hA,[I(We,{variant:"primary",onClick:O},{default:j(()=>[ve(d(r(n)("login.retry")),1)]),_:1}),I(We,{variant:"secondary",onClick:L},{default:j(()=>[ve(d(r(n)("login.closeBtn")),1)]),_:1})])],64)):B("",!0)]),_:1},8,["open","title"]))}}),kA=Te(yA,[["__scopeId","data-v-8308a28f"]]);function bA(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 wA(e,t){const n=new Set(e.map(o=>o.id)),s=t.filter(o=>!n.has(o.id));return[...e,...s]}const $u=Ie({__name:"LanguageSwitcher",setup(e){const{locale:t}=Fe(),n=Kr.map(o=>({value:o.code,label:o.label}));function s(o){t.value!==o&&Gr(o)}return(o,i)=>(a(),Z(Xt,{"model-value":r(t),options:r(n),"onUpdate:modelValue":s},null,8,["model-value","options"]))}}),SA=["aria-checked","aria-label","disabled"],CA=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(),u("button",{class:de(["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]=[l("span",{class:"ui-switch__thumb"},null,-1)])],10,SA))}}),ss=Te(CA,[["__scopeId","data-v-e5aecc8e"]]),_A=["aria-label"],xA=["aria-selected","onClick"],$A={class:"body"},MA={class:"panel"},IA={class:"sec"},TA={class:"sec-title"},AA={class:"row"},LA={class:"rlabel"},BA={class:"row"},PA={class:"rlabel"},EA={class:"row"},RA={class:"rlabel"},OA={class:"num-field"},DA=["value","aria-label"],zA={class:"row"},FA={class:"rlabel"},qA={class:"row"},WA={class:"rlabel"},NA={class:"hint"},HA={class:"sec"},UA={class:"sec-title"},VA={class:"row"},jA={class:"rlabel"},KA={key:0,class:"hint"},GA={class:"row"},QA={class:"rlabel"},YA={key:0,class:"hint"},ZA={class:"row"},XA={class:"rlabel"},JA={key:0,class:"hint"},eL={class:"row"},tL={class:"rlabel"},nL={class:"panel"},sL={class:"sec"},oL={class:"sec-title"},iL={class:"row"},aL={class:"rlabel"},lL={key:0,class:"rvalue"},rL={class:"actions"},cL={class:"panel"},uL={class:"sec"},dL={class:"sec-head"},pL={class:"sec-title"},fL={key:0,class:"saving"},mL={class:"row"},vL={class:"rlabel"},hL={class:"hint"},gL={key:0,class:"select-wrap"},yL={key:0,value:"",disabled:""},kL=["label"],bL=["value"],wL={key:1,class:"rvalue mono"},SL={class:"row"},CL={class:"rlabel"},_L={class:"hint"},xL={class:"row"},$L={class:"rlabel"},ML={class:"hint"},IL={class:"row"},TL={class:"rlabel"},AL={class:"hint"},LL={class:"row"},BL={class:"rlabel"},PL={class:"hint"},EL={key:1,class:"empty-config"},RL={class:"panel"},OL={class:"sec"},DL={class:"sec-title"},zL={class:"row"},FL={class:"rlabel"},qL={class:"rvalue mono"},WL={class:"row"},NL={class:"rlabel"},HL={class:"rvalue mono"},UL={class:"row"},VL={class:"rlabel"},jL={class:"rvalue mono"},KL={key:0,class:"row"},GL={class:"rlabel"},QL={class:"hint"},YL={class:"hint"},ZL={class:"row"},XL={class:"rlabel"},JL={key:0,class:"hint"},eB={class:"panel"},tB={class:"panel-head"},nB={class:"panel-kicker"},sB={class:"panel-title"},oB={class:"panel-desc"},iB={class:"archive-toolbar"},aB={class:"archive-search"},lB=["placeholder"],rB={value:"all"},cB=["value"],uB={key:0,class:"archive-empty"},dB={key:0,class:"archive-list"},pB={class:"archive-workspace"},fB={class:"path"},mB={class:"count"},vB={class:"setting-card"},hB={class:"archive-meta"},gB={class:"archive-name"},yB={class:"archive-time"},kB=["disabled"],bB={key:1,class:"archive-empty"},wB=50,SB=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}=Fe(),s=e,o=t,i=T("general"),c=[{id:"general",labelKey:"settings.tabs.general"},{id:"agent",labelKey:"settings.tabs.agent"},{id:"account",labelKey:"settings.tabs.account"},{id:"advanced",labelKey:"settings.tabs.advanced"},{id:"archived",labelKey:"settings.tabs.archived"}],p=sd(),v=$(()=>s.backend==="v2"?"v2 (kap-server)":"v1 (server)"),g=["manual","yolo","auto"],C={manual:"status.permissionManual",auto:"status.permissionAuto",yolo:"status.permissionYolo"},x=T(null);dl(x);function h(oe){oe.key==="Escape"&&o("close")}lt(()=>document.addEventListener("keydown",h)),ut(()=>document.removeEventListener("keydown",h));function m(){Zr()}const w=$(()=>{const oe=new Map;for(const X of s.models??[])oe.set(X.id,{id:X.id,label:X.displayName??X.model??X.id,provider:X.provider});for(const[X,ie]of Object.entries(s.config?.models??{})){if(oe.has(X))continue;const Ce=_(ie);oe.set(X,{id:X,label:O(X,ie,Ce),provider:Ce??X})}return Array.from(oe.values())}),k=$(()=>{const oe=new Map;for(const X of w.value){const ie=oe.get(X.provider)??[];ie.push(X),oe.set(X.provider,ie)}for(const X of oe.values())X.sort((ie,Ce)=>ie.label.localeCompare(Ce.label));return Array.from(oe.entries()).toSorted(([X],[ie])=>X.localeCompare(ie)).map(([X,ie])=>({provider:X,options:ie}))}),b=$(()=>{const oe=s.config?.defaultPermissionMode;return oe==="auto"||oe==="yolo"||oe==="manual"?oe:"manual"});function _(oe){if(!oe||typeof oe!="object")return;const X=oe;return typeof X.provider=="string"?X.provider:void 0}function O(oe,X,ie){if(!X||typeof X!="object")return oe;const Ce=X,D=typeof Ce.model=="string"?Ce.model:void 0,J=ie??_(X);return D&&J?`${oe} (${J}/${D})`:D?`${oe} (${D})`:oe}function y(oe){return oe===!0}function L(oe){!oe||oe===s.config?.defaultModel||o("updateConfig",{defaultModel:oe})}function N(oe){oe!==b.value&&o("updateConfig",{defaultPermissionMode:oe})}function H(oe){const X=s.config?.[oe];o("updateConfig",{[oe]:!y(X)})}function U(){const oe=s.config?.thinking;return!oe||typeof oe!="object"?!0:oe.enabled!==!1}function Q(){o("updateConfig",{thinking:{enabled:!U()}})}function P(){const oe=s.config?.telemetry!==!1;o("updateConfig",{telemetry:!oe})}function M(oe){i.value=oe}const A=Ai(),R=T([]),ne=T(!1),se=T(!1),ke=T(!1),pe=T(""),V=T("all"),ee=T("archived-desc");let le;async function me(oe){if(!ne.value){ne.value=!0;try{const X=await A.loadArchivedSessions({beforeId:oe?void 0:le,pageSize:wB});R.value=oe?X.items:wA(R.value,X.items),le=X.items.at(-1)?.id,ke.value=X.hasMore&&X.items.length>0,se.value=!0}catch(X){console.warn("fetchArchivedPage failed",X)}finally{ne.value=!1}}}Ee(i,oe=>{oe==="archived"&&!se.value&&me(!0)});const _e=$(()=>{const oe=new Set;for(const X of R.value)oe.add(X.cwd);return Array.from(oe).sort((X,ie)=>X.localeCompare(ie))}),ce=$(()=>{let oe=R.value.filter(ie=>ie.archived===!0);V.value!=="all"&&(oe=oe.filter(ie=>ie.cwd===V.value));const X=pe.value.trim().toLowerCase();return X&&(oe=oe.filter(ie=>ie.title.toLowerCase().includes(X))),bA(oe,ee.value)}),K=$(()=>{const oe=new Map;for(const X of ce.value){const ie=oe.get(X.cwd)??[];ie.push(X),oe.set(X.cwd,ie)}return Array.from(oe.entries()).map(([X,ie])=>({cwd:X,items:ie}))});async function Y(oe){await A.restoreSession(oe)&&(R.value=R.value.filter(ie=>ie.id!==oe))}function Se(oe){const X=new Date(oe);if(Number.isNaN(X.getTime()))return oe;const ie=Ce=>String(Ce).padStart(2,"0");return`${X.getFullYear()}-${ie(X.getMonth()+1)}-${ie(X.getDate())} ${ie(X.getHours())}:${ie(X.getMinutes())}`}return(oe,X)=>(a(),Z(ds,{open:!0,"close-on-esc":!1,title:r(n)("settings.title"),size:"xl",height:"fixed",padded:!1,onClose:X[20]||(X[20]=ie=>o("close"))},{default:j(()=>[l("div",{ref_key:"dialogRef",ref:x,class:"sd"},[l("nav",{class:"settings-tabs",role:"tablist","aria-label":r(n)("settings.title")},[(a(),u(ye,null,Be(c,ie=>l("button",{key:ie.id,type:"button",class:de(["tab",{on:i.value===ie.id}]),role:"tab","aria-selected":i.value===ie.id,onClick:Ce=>M(ie.id)},d(r(n)(ie.labelKey)),11,xA)),64))],8,_A),l("div",$A,[rt(l("section",MA,[l("section",IA,[l("h3",TA,d(r(n)("settings.appearance")),1),l("div",AA,[l("span",LA,d(r(n)("theme.colorSchemeLabel")),1),I(Xt,{"model-value":e.colorScheme,options:[{value:"light",label:r(n)("theme.light")},{value:"dark",label:r(n)("theme.dark")},{value:"system",label:r(n)("theme.system")}],"onUpdate:modelValue":X[0]||(X[0]=ie=>o("setColorScheme",ie))},null,8,["model-value","options"])]),l("div",BA,[l("span",PA,d(r(n)("theme.accentLabel")),1),I(Xt,{"model-value":e.accent,options:[{value:"blue",label:r(n)("theme.accentBlue")},{value:"mono",label:r(n)("theme.accentBlack")}],"onUpdate:modelValue":X[1]||(X[1]=ie=>o("setAccent",ie))},null,8,["model-value","options"])]),l("div",EA,[l("span",RA,d(r(n)("settings.uiFontSize")),1),l("label",OA,[l("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":r(n)("settings.uiFontSize"),onInput:X[2]||(X[2]=ie=>o("setUiFontSize",Number(ie.target.value)))},null,40,DA),X[21]||(X[21]=l("span",{class:"num-unit"},"px",-1))])]),l("div",zA,[l("span",FA,d(r(n)("sidebar.language")),1),I($u)]),l("div",qA,[l("span",WA,[ve(d(r(n)("settings.conversationToc"))+" ",1),l("span",NA,d(r(n)("settings.conversationTocHint")),1)]),I(ss,{"model-value":e.conversationToc??!0,label:r(n)("settings.conversationToc"),"onUpdate:modelValue":X[3]||(X[3]=ie=>o("setConversationToc",ie))},null,8,["model-value","label"])])]),l("section",HA,[l("h3",UA,d(r(n)("settings.notifications")),1),l("div",VA,[l("span",jA,[ve(d(r(n)("settings.notifyOnComplete"))+" ",1),e.notifyPermission==="denied"?(a(),u("span",KA,d(r(n)("settings.notifyDenied")),1)):B("",!0)]),I(ss,{"model-value":e.notify,disabled:e.notifyPermission==="denied",label:r(n)("settings.notifyOnComplete"),"onUpdate:modelValue":X[4]||(X[4]=ie=>o("setNotify",ie))},null,8,["model-value","disabled","label"])]),l("div",GA,[l("span",QA,[ve(d(r(n)("settings.notifyOnQuestion"))+" ",1),e.notifyPermission==="denied"?(a(),u("span",YA,d(r(n)("settings.notifyDenied")),1)):B("",!0)]),I(ss,{"model-value":e.notifyQuestion,disabled:e.notifyPermission==="denied",label:r(n)("settings.notifyOnQuestion"),"onUpdate:modelValue":X[5]||(X[5]=ie=>o("setNotifyQuestion",ie))},null,8,["model-value","disabled","label"])]),l("div",ZA,[l("span",XA,[ve(d(r(n)("settings.notifyOnApproval"))+" ",1),e.notifyPermission==="denied"?(a(),u("span",JA,d(r(n)("settings.notifyDenied")),1)):B("",!0)]),I(ss,{"model-value":e.notifyApproval,disabled:e.notifyPermission==="denied",label:r(n)("settings.notifyOnApproval"),"onUpdate:modelValue":X[6]||(X[6]=ie=>o("setNotifyApproval",ie))},null,8,["model-value","disabled","label"])]),l("div",eL,[l("span",tL,d(r(n)("settings.soundOnComplete")),1),I(ss,{"model-value":e.sound,label:r(n)("settings.soundOnComplete"),"onUpdate:modelValue":X[7]||(X[7]=ie=>o("setSound",ie))},null,8,["model-value","label"])])])],512),[[jn,i.value==="general"]]),rt(l("section",nL,[l("section",sL,[l("h3",oL,d(r(n)("settings.account")),1),l("div",iL,[l("span",aL,d(e.authReady?"managed:kimi-code":r(n)("sidebar.notSignedIn")),1),I(Je,{text:e.accountModel},{default:j(()=>[e.authReady&&e.accountModel?(a(),u("span",lL,d(e.accountModel),1)):B("",!0)]),_:1},8,["text"])]),l("div",rL,[I(We,{variant:"secondary",size:"sm",onClick:X[8]||(X[8]=ie=>{o("openOnboarding"),o("close")})},{default:j(()=>[ve(d(r(n)("onboarding.reopen")),1)]),_:1}),e.authReady?(a(),Z(We,{key:0,variant:"danger-soft",size:"sm",onClick:X[9]||(X[9]=ie=>o("logout"))},{default:j(()=>[ve(d(r(n)("sidebar.signOut")),1)]),_:1})):(a(),Z(We,{key:1,variant:"primary",size:"sm",onClick:X[10]||(X[10]=ie=>o("login"))},{default:j(()=>[ve(d(r(n)("sidebar.signIn")),1)]),_:1}))])])],512),[[jn,i.value==="account"]]),rt(l("section",cL,[l("section",uL,[l("div",dL,[l("h3",pL,d(r(n)("settings.agentDefaults")),1),e.configSaving?(a(),u("span",fL,d(r(n)("settings.saving")),1)):B("",!0)]),e.config?(a(),u(ye,{key:0},[l("div",mL,[l("span",vL,[ve(d(r(n)("settings.defaultModel"))+" ",1),l("span",hL,d(r(n)("settings.defaultModelHint")),1)]),k.value.length>0?(a(),u("div",gL,[I(Ma,{"model-value":e.config.defaultModel??"",disabled:e.configSaving,"aria-label":r(n)("settings.defaultModel"),"onUpdate:modelValue":L},{default:j(()=>[e.config.defaultModel?B("",!0):(a(),u("option",yL,d(r(n)("settings.noDefaultModel")),1)),(a(!0),u(ye,null,Be(k.value,ie=>(a(),u("optgroup",{key:ie.provider,label:ie.provider},[(a(!0),u(ye,null,Be(ie.options,Ce=>(a(),u("option",{key:Ce.id,value:Ce.id},d(Ce.label),9,bL))),128))],8,kL))),128))]),_:1},8,["model-value","disabled","aria-label"])])):(a(),u("span",wL,d(e.config.defaultModel??r(n)("settings.noDefaultModel")),1))]),l("div",SL,[l("span",CL,[ve(d(r(n)("settings.defaultPermission"))+" ",1),l("span",_L,d(r(n)("settings.defaultPermissionHint")),1)]),I(Xt,{"model-value":b.value,options:g.map(ie=>({value:ie,label:r(n)(C[ie])})),"onUpdate:modelValue":X[11]||(X[11]=ie=>N(ie))},null,8,["model-value","options"])]),l("div",xL,[l("span",$L,[ve(d(r(n)("settings.defaultThinking"))+" ",1),l("span",ML,d(r(n)("settings.defaultThinkingHint")),1)]),I(ss,{"model-value":U(),disabled:e.configSaving,label:r(n)("settings.defaultThinking"),"onUpdate:modelValue":X[12]||(X[12]=ie=>Q())},null,8,["model-value","disabled","label"])]),l("div",IL,[l("span",TL,[ve(d(r(n)("settings.defaultPlanMode"))+" ",1),l("span",AL,d(r(n)("settings.defaultPlanModeHint")),1)]),I(ss,{"model-value":y(e.config.defaultPlanMode),disabled:e.configSaving,label:r(n)("settings.defaultPlanMode"),"onUpdate:modelValue":X[13]||(X[13]=ie=>H("defaultPlanMode"))},null,8,["model-value","disabled","label"])]),l("div",LL,[l("span",BL,[ve(d(r(n)("settings.mergeSkills"))+" ",1),l("span",PL,d(r(n)("settings.mergeSkillsHint")),1)]),I(ss,{"model-value":y(e.config.mergeAllAvailableSkills),disabled:e.configSaving,label:r(n)("settings.mergeSkills"),"onUpdate:modelValue":X[14]||(X[14]=ie=>H("mergeAllAvailableSkills"))},null,8,["model-value","disabled","label"])])],64)):(a(),u("div",EL,d(r(n)("settings.configUnavailable")),1))])],512),[[jn,i.value==="agent"]]),rt(l("section",RL,[l("section",OL,[l("h3",DL,d(r(n)("settings.advanced")),1),l("div",zL,[l("span",FL,d(r(n)("sidebar.daemon")),1),l("span",qL,d(r(p)),1)]),l("div",WL,[l("span",NL,d(r(n)("settings.backend")),1),l("span",HL,d(v.value),1)]),l("div",UL,[l("span",VL,d(r(n)("settings.serverVersion")),1),l("span",jL,d(e.serverVersion||"-"),1)]),e.config?(a(),u("div",KL,[l("span",GL,[ve(d(r(n)("settings.telemetry"))+" ",1),l("span",QL,d(r(n)("settings.telemetryHint")),1),l("span",YL,d(r(n)("settings.telemetryRestartHint")),1)]),I(ss,{"model-value":e.config.telemetry!==!1,disabled:e.configSaving,label:r(n)("settings.telemetry"),"onUpdate:modelValue":X[15]||(X[15]=ie=>P())},null,8,["model-value","disabled","label"])])):B("",!0),l("div",ZL,[l("span",XL,[ve(d(r(n)("settings.exportLog"))+" ",1),r(qn)()?B("",!0):(a(),u("span",JL,d(r(n)("settings.logHint")),1))]),I(We,{variant:"secondary",size:"sm",onClick:m},{default:j(()=>[ve(d(r(n)("settings.exportLogBtn")),1)]),_:1})])])],512),[[jn,i.value==="advanced"]]),rt(l("section",eB,[l("div",tB,[l("div",nB,d(r(n)("settings.archivedTitle")),1),l("h4",sB,d(r(n)("settings.archivedTitle")),1),l("p",oB,d(r(n)("settings.archivedDesc")),1)]),l("div",iB,[l("label",aB,[I(ae,{name:"search",size:"sm"}),rt(l("input",{"onUpdate:modelValue":X[16]||(X[16]=ie=>pe.value=ie),placeholder:r(n)("settings.archivedSearch")},null,8,lB),[[gn,pe.value]])]),I(Ma,{"model-value":V.value,size:"sm","aria-label":r(n)("settings.archivedAllWorkspaces"),"onUpdate:modelValue":X[17]||(X[17]=ie=>V.value=ie)},{default:j(()=>[l("option",rB,d(r(n)("settings.archivedAllWorkspaces")),1),(a(!0),u(ye,null,Be(_e.value,ie=>(a(),u("option",{key:ie,value:ie},d(ie),9,cB))),128))]),_:1},8,["model-value","aria-label"]),I(Xt,{size:"sm","model-value":ee.value,options:[{value:"archived-desc",label:r(n)("settings.archivedSortArchived")},{value:"created-desc",label:r(n)("settings.archivedSortCreated")},{value:"name-asc",label:r(n)("settings.archivedSortName")}],"onUpdate:modelValue":X[18]||(X[18]=ie=>ee.value=ie)},null,8,["model-value","options"])]),ne.value&&!se.value?(a(),u("div",uB,d(r(n)("settings.archivedLoadingAll")),1)):(a(),u(ye,{key:1},[K.value.length>0?(a(),u("div",dB,[(a(!0),u(ye,null,Be(K.value,ie=>(a(),u("section",{key:ie.cwd,class:"archive-card"},[l("div",pB,[I(ae,{name:"folder-closed",size:"sm"}),l("span",fB,d(ie.cwd),1),l("span",mB,d(r(n)("settings.archivedSessionsCount",{count:ie.items.length})),1)]),l("div",vB,[(a(!0),u(ye,null,Be(ie.items,Ce=>(a(),u("div",{key:Ce.id,class:"archive-row"},[l("div",hB,[l("div",gB,d(Ce.title),1),l("div",yB,d(r(n)("settings.archivedAt",{time:Se(Ce.updatedAt)})),1)]),I(We,{variant:"secondary",size:"sm",onClick:D=>Y(Ce.id)},{default:j(()=>[ve(d(r(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128))])]))),128)),ke.value?(a(),u("button",{key:0,class:"archive-load-more",disabled:ne.value,onClick:X[19]||(X[19]=ie=>me(!1))},d(ne.value?r(n)("settings.archivedLoading"):r(n)("settings.archivedLoadMore")),9,kB)):B("",!0)])):(a(),u("div",bB,d(R.value.length===0?r(n)("settings.archivedEmpty"):r(n)("settings.archivedNoMatch")),1))],64))],512),[[jn,i.value==="archived"]])])],512)]),_:1},8,["title"]))}}),CB=Te(SB,[["__scopeId","data-v-a5062272"]]),_B=/^(?:\/|~(?:\/|$)|[A-Za-z]:[\\/]|\\\\)/,Mu=/^[A-Za-z]:[\\/]/,xB=/^\/\/(?!\/)/;function ia(e){return _B.test(e.trim())}function $B(e,t){return e==="~"?t||e:e.startsWith("~/")?(t||"~")+e.slice(1):e}function MB(e){return xB.test(e)?`//${e.slice(2).replaceAll(/\/{2,}/g,"/")}`:e.replaceAll(/\/{2,}/g,"/")}function IB(e){return Mu.test(e)||e.startsWith("\\\\")||e.startsWith("//")}function TB(e){return Mu.test(e)?3:e.startsWith("\\\\")||e.startsWith("//")?2:e.startsWith("/")?1:0}function Ia(e,t){let n=MB($B(e.trim(),t));const s=IB(n),o=n==="/"||n==="//"||n==="\\\\"||/^[A-Za-z]:[\\/]$/.test(n),i=s?/[\\/]$/.test(n):n.endsWith("/");!o&&i&&(n=n.slice(0,-1));const c=n.lastIndexOf("/"),p=s?n.lastIndexOf("\\"):-1,v=Math.max(c,p),g=p>c?"\\":"/",C=TB(n),x=vx.value.trim().length>0);let k=0,b=null;const _=$(()=>ia(x.value)),O=T("idle"),y=T(""),L=T("/"),N=T([]),H=T(""),U=T(null),Q=T(null),P=$(()=>O.value!=="valid"?null:LB(x.value,H.value,Q.value));let M=0,A=null;function R(Se,oe){const X=Se.toLowerCase(),ie=oe.toLowerCase();let Ce=0;for(let D=0;D0&&J=Pr))break;q.depth+1{b&&clearTimeout(b),A&&clearTimeout(A),M++,O.value="idle",N.value=[],Q.value=null;const oe=Se.trim();if(oe===""){k++,m.value=[],h.value=!1;return}if(ia(oe)){if(k++,m.value=[],h.value=!1,p.value)return;O.value="checking",A=setTimeout(()=>void se(oe),150);return}b=setTimeout(()=>void ne(Se),220)});async function se(Se){const oe=++M;O.value="checking",Q.value=null;const X=Ia(Se,H.value),{target:ie}=X;try{const D=await s.browseFs(ie);if(oe!==M)return;if(D.path){O.value="valid",N.value=[],Q.value=ie,v.value=D.path,g.value=D.parent,C.value=D.entries,p.value=!1;return}}catch{}if(oe!==M)return;const Ce=X.base.toLowerCase();y.value=X.parent,L.value=X.separator;try{const D=await s.browseFs(X.parent);if(oe!==M)return;if(D.path){N.value=D.entries.filter(J=>J.isDir&&J.name.toLowerCase().startsWith(Ce)),O.value="not-found";return}}catch{}oe===M&&(N.value=[],O.value="bad-parent")}function ke(Se){x.value=AB(y.value,Se,L.value),U.value?.focus()}const pe=$(()=>p.value?n("workspace.degradedPlaceholder"):n("workspace.searchPlaceholder")),V=$(()=>p.value?n("workspace.degradedHint"):_.value&&O.value==="valid"?n("workspace.pathFollowHint"):n("workspace.browseHint"));function ee(Se){if(Se.key==="Escape"){x.value?x.value="":o("close");return}if(Se.key!=="Enter")return;const oe=x.value.trim();if(ia(oe)){if(Se.preventDefault(),p.value){const{target:X}=Ia(oe,H.value);X&&o("add",X);return}O.value==="valid"?Y():O.value==="not-found"&&N.value[0]&&ke(N.value[0].name)}}const le=$(()=>{const Se=v.value;if(!Se)return[];const oe=Se.split("/").filter(Boolean),X=[{label:"/",path:"/"}];let ie="";for(const Ce of oe)ie+=`/${Ce}`,X.push({label:Ce,path:ie});return X}),me=$(()=>!(v.value.length===0||_.value&&P.value===null));async function _e(Se){c.value=!0;try{const oe=await s.browseFs(Se);if(!oe.path){p.value=!0;return}v.value=oe.path,g.value=oe.parent,C.value=oe.entries,x.value="",p.value=!1}catch{p.value=!0}finally{c.value=!1}}function ce(Se){Se.isDir&&_e(Se.path)}function K(){g.value&&_e(g.value)}function Y(){me.value&&o("add",P.value??v.value)}return lt(async()=>{c.value=!0;try{const Se=await s.getFsHome().catch(()=>({home:"",recentRoots:[]}));if(Se.home&&(H.value=Se.home),s.defaultPath&&(await _e(s.defaultPath),!p.value))return;H.value?await _e(H.value):p.value=!0}catch{p.value=!0}finally{c.value=!1}}),ut(()=>{b&&clearTimeout(b),A&&clearTimeout(A)}),(Se,oe)=>(a(),Z(ds,{open:i.value,"onUpdate:open":oe[2]||(oe[2]=X=>i.value=X),title:r(n)("workspace.addTitle"),size:"lg",height:"fixed",onClose:oe[3]||(oe[3]=X=>o("close"))},{default:j(()=>[l("div",BB,[p.value?B("",!0):(a(),u("div",PB,[I(et,{size:"sm",disabled:!g.value,label:r(n)("workspace.up"),onClick:K},{default:j(()=>[I(ae,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),l("div",EB,[(a(!0),u(ye,null,Be(le.value,(X,ie)=>(a(),u(ye,{key:X.path},[ie>1?(a(),u("span",RB,"/")):B("",!0),l("button",{class:de(["crumb",{last:ie===le.value.length-1}]),onClick:Ce=>_e(X.path)},d(X.label),11,OB)],64))),128))])])),!c.value||p.value?(a(),u("div",{key:1,class:de(["filterbar",{"has-error":O.value==="not-found"||O.value==="bad-parent"}])},[I(ae,{class:"filter-icon",name:"search",size:"md"}),rt(l("input",{ref_key:"filterEl",ref:U,"onUpdate:modelValue":oe[0]||(oe[0]=X=>x.value=X),class:"filter-input",type:"text",placeholder:pe.value,autocomplete:"off",spellcheck:"false",onKeydown:Pe(ee,["stop"])},null,40,DB),[[gn,x.value]]),h.value||O.value==="checking"?(a(),Z(Jt,{key:0,size:"sm"})):B("",!0)],2)):B("",!0),p.value?(a(),u("div",JB,d(r(n)("workspace.degradedHint")),1)):(a(),u("div",zB,[c.value?(a(),u("div",FB,d(r(n)("workspace.browsing")),1)):_.value&&O.value!=="valid"?(a(),u(ye,{key:1},[O.value==="checking"?(a(),u("div",qB,d(r(n)("workspace.checkingPath")),1)):O.value==="not-found"?(a(),u(ye,{key:1},[N.value.length>0?(a(),u("div",WB,d(r(n)("workspace.pathPickHint")),1)):B("",!0),(a(!0),u(ye,null,Be(N.value,X=>(a(),u("button",{key:X.path,class:"folder-row",onClick:ie=>ke(X.name)},[I(ae,{class:"dir-icon",name:"folder-closed",size:"sm"}),l("span",HB,d(X.name),1)],8,NB))),128)),N.value.length===0?(a(),u("div",UB,d(r(n)("workspace.noPathMatch",{parent:y.value})),1)):B("",!0)],64)):O.value==="bad-parent"?(a(),u("div",VB,d(r(n)("workspace.badParent",{parent:y.value})),1)):B("",!0)],64)):w.value&&!_.value?(a(),u(ye,{key:2},[(a(!0),u(ye,null,Be(m.value,X=>(a(),u("button",{key:X.path,class:"folder-row",onClick:ie=>_e(X.path)},[I(ae,{class:"dir-icon",name:"folder-closed",size:"sm"}),l("span",KB,d(X.rel),1)],8,jB))),128)),!h.value&&m.value.length===0?(a(),u("div",GB,d(r(n)("workspace.noFilterMatch",{q:x.value.trim()})),1)):h.value&&m.value.length===0?(a(),u("div",QB,d(r(n)("workspace.searching")),1)):B("",!0)],64)):(a(),u(ye,{key:3},[(a(!0),u(ye,null,Be(C.value,X=>(a(),u("button",{key:X.path,class:"folder-row",onClick:ie=>ce(X)},[I(ae,{class:"dir-icon",name:"folder-closed",size:"sm"}),l("span",ZB,d(X.name),1)],8,YB))),128)),C.value.length===0?(a(),u("div",XB,d(r(n)("workspace.noSubfolders")),1)):B("",!0)],64))])),e.error?(a(),u("div",eP,d(e.error),1)):B("",!0),l("div",tP,[I(Je,{text:v.value},{default:j(()=>[p.value?B("",!0):(a(),Z(We,{key:0,variant:"primary",disabled:!me.value,onClick:Y},{default:j(()=>[ve(d(r(n)("workspace.openThisFolder")),1)]),_:1},8,["disabled"]))]),_:1},8,["text"]),I(We,{variant:"secondary",onClick:oe[1]||(oe[1]=X=>o("close"))},{default:j(()=>[ve(d(r(n)("workspace.cancel")),1)]),_:1})]),l("div",nP,d(V.value),1)])]),_:1},8,["open","title"]))}}),aP=Te(iP,[["__scopeId","data-v-a2c2e0eb"]]),lP={key:0,class:"confirm-dialog__message"},rP=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}=Fe();function i(){n.loading||(s("update:open",!1),s("cancel"))}function c(p){if(p.key!=="Enter"||!n.open||n.loading)return;const v=p.target;v instanceof HTMLButtonElement||v instanceof HTMLAnchorElement||v instanceof HTMLTextAreaElement||v instanceof HTMLSelectElement||v instanceof HTMLInputElement||(p.preventDefault(),s("confirm"))}return typeof window<"u"&&window.addEventListener("keydown",c),vn(()=>{typeof window<"u"&&window.removeEventListener("keydown",c)}),(p,v)=>(a(),Z(ds,{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":v[1]||(v[1]=g=>s("update:open",g)),onClose:i},{foot:j(()=>[I(We,{variant:"secondary",disabled:e.loading,onClick:i},{default:j(()=>[ve(d(e.cancelLabel??r(o)("common.cancel")),1)]),_:1},8,["disabled"]),I(We,{class:"confirm-dialog__confirm",variant:e.variant,loading:e.loading,onClick:v[0]||(v[0]=g=>s("confirm"))},{default:j(()=>[ve(d(e.confirmLabel??r(o)("common.confirm")),1)]),_:1},8,["variant","loading"])]),default:j(()=>[e.message?(a(),u("p",lP,d(e.message),1)):B("",!0)]),_:1},8,["open","title","close-on-esc","close-on-overlay"]))}}),cP=Te(rP,[["__scopeId","data-v-2e719024"]]),uP=Ie({__name:"ConfirmDialogHost",setup(e){const{current:t,busy:n,settle:s,runAction:o}=Ro();function i(){o()}return(c,p)=>(a(),Z(cP,{open:r(t)!==null,title:r(t)?.title??"",message:r(t)?.message,"confirm-label":r(t)?.confirmLabel,"cancel-label":r(t)?.cancelLabel,variant:r(t)?.variant,loading:r(n),onConfirm:i,onCancel:p[0]||(p[0]=v=>r(s)(!1))},null,8,["open","title","message","confirm-label","cancel-label","variant","loading"]))}}),dP={class:"rows"},pP={class:"row"},fP={class:"row"},mP={class:"row"},vP={class:"row"},hP={class:"row"},gP={class:"row"},yP={class:"row"},kP={class:"ctx-text"},bP={key:0,class:"bar"},wP={class:"row"},SP=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}=Fe(),s=e,o=t,i=T(!0),c=$(()=>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:Gn(s.status.ctxUsed),max:Gn(s.status.ctxMax),pct:c.value}):n("status.statusNone"));function v(k){return n(k==="yolo"?"status.permissionYolo":k==="auto"?"status.permissionAuto":"status.permissionManual")}const g=$(()=>{const k=s.status.permission;return k==="yolo"?"var(--color-warning)":k==="auto"?"var(--color-danger)":"var(--color-text)"}),C=$(()=>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),w=$(()=>m.value?`$${s.costUsd.toFixed(4)}`:n("status.statusNone"));return(k,b)=>(a(),Z(ds,{open:i.value,"onUpdate:open":b[0]||(b[0]=_=>i.value=_),title:r(n)("status.statusPanelTitle"),onClose:b[1]||(b[1]=_=>o("close"))},{default:j(()=>[l("dl",dP,[l("div",pP,[l("dt",null,d(r(n)("status.statusModel")),1),l("dd",null,d(e.status.model),1)]),l("div",fP,[l("dt",null,d(r(n)("status.statusThinking")),1),l("dd",null,d(e.thinking),1)]),l("div",mP,[l("dt",null,d(r(n)("status.statusPermission")),1),l("dd",{style:ct({color:g.value})},d(v(e.status.permission)),5)]),l("div",vP,[l("dt",null,d(r(n)("status.statusPlanMode")),1),l("dd",{class:de({"plan-on":e.planMode})},d(C.value),3)]),l("div",hP,[l("dt",null,d(r(n)("status.statusSwarmMode")),1),l("dd",{class:de({"swarm-on":e.swarmMode})},d(x.value),3)]),l("div",gP,[l("dt",null,d(r(n)("status.statusSupermoonMode")),1),l("dd",{class:de({"supermoon-on":e.supermoonMode})},d(h.value),3)]),l("div",yP,[l("dt",null,d(r(n)("status.statusContext")),1),l("dd",null,[l("span",kP,d(p.value),1),e.status.ctxMax>0?(a(),u("span",bP,[l("i",{style:ct({width:c.value+"%"})},null,4)])):B("",!0)])]),l("div",wP,[l("dt",null,d(r(n)("status.statusCost")),1),l("dd",null,d(w.value),1)])])]),_:1},8,["open","title"]))}}),CP=Te(SP,[["__scopeId","data-v-5ba9ba29"]]),_P={class:"ui-toast__icon","aria-hidden":"true"},xP={class:"ui-toast__body"},$P={class:"ui-toast__title"},MP={key:0,class:"ui-toast__msg"},IP=Ie({__name:"Toast",props:{variant:{default:"info"},title:{},message:{},dismissLabel:{default:"Dismiss"}},emits:["dismiss"],setup(e){return(t,n)=>(a(),u("div",{class:de(["ui-toast",`ui-toast--${e.variant}`])},[l("span",_P,[bt(t.$slots,"icon",{},()=>[e.variant==="success"?(a(),Z(ae,{key:0,name:"check"})):e.variant==="danger"?(a(),Z(ae,{key:1,name:"close"})):e.variant==="warning"?(a(),Z(ae,{key:2,name:"alert-triangle"})):(a(),Z(ae,{key:3,name:"info"}))],!0)]),l("div",xP,[l("div",$P,d(e.title),1),e.message?(a(),u("div",MP,d(e.message),1)):B("",!0),bt(t.$slots,"default",{},void 0,!0)]),I(et,{class:"ui-toast__close",size:"sm",label:e.dismissLabel,onClick:n[0]||(n[0]=s=>t.$emit("dismiss"))},{default:j(()=>[I(ae,{name:"close",size:"sm"})]),_:1},8,["label"])],2))}}),TP=Te(IP,[["__scopeId","data-v-adc6f346"]]),AP={key:0,class:"actions"},LP=["onClick"],BP=["onClick"],PP={key:1,class:"details"},EP=Ie({__name:"WarningToasts",props:{warnings:{}},emits:["dismiss"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Fe();function i(P){return typeof P=="object"&&P!==null}function c(P){return i(P)?P.title:P}function p(P){return i(P)?P.message??"":""}function v(P){return i(P)?P.details:void 0}function g(P){return i(P)?P.severity==="error":P.startsWith(`${o("warnings.errorLabel")}:`)||/\b4\d\d\b|error|失败|failed/i.test(P)}function C(P){return i(P)&&P.sticky===!0}function x(P){return i(P)?`notice:${P.severity}:${P.title}:${P.message??""}:${JSON.stringify(P.details??[])}`:`text:${P}`}function h(P){if(!i(P))return P;const M=[P.title];P.message&&M.push(P.message);const A=P.details??[];if(A.length>0){M.push("",`${o("warnings.diagnostics")}:`);for(const R of A)M.push(`${R.label}: ${R.value}`)}return M.join(`
-`)}let m=1;const w=T([]),k=new Map,b=new Map;function _(P){const M=g(P)?12e3:6e3;return typeof window<"u"&&window.matchMedia?.("(hover: none)").matches===!0?M+5e3:M}function O(P,M){const A=k.get(P)??{handle:null,deadline:0,remaining:0};A.handle=setTimeout(()=>Q(P),M),A.deadline=Date.now()+M,k.set(P,A)}function y(P){const M=k.get(P);M&&M.handle!==null&&clearTimeout(M.handle),k.delete(P)}function L(P){const M=k.get(P);!M||M.handle===null||(clearTimeout(M.handle),M.handle=null,M.remaining=Math.max(0,M.deadline-Date.now()))}function N(P){if(w.value.find(R=>R.id===P)?.detailsOpen)return;const A=k.get(P);!A||A.handle!==null||O(P,A.remaining)}function H(P){P.detailsOpen=!P.detailsOpen,P.detailsOpen?L(P.id):N(P.id)}async function U(P){if(!await Yt(h(P.warning)))return;P.copied=!0;const A=b.get(P.id);A&&clearTimeout(A),b.set(P.id,setTimeout(()=>{P.copied=!1,b.delete(P.id)},1400))}function Q(P){y(P);const M=b.get(P);M&&clearTimeout(M),b.delete(P);const A=w.value.findIndex(R=>R.id===P);A!==-1&&(w.value=w.value.filter(R=>R.id!==P),s("dismiss",A))}return Ee(()=>n.warnings,P=>{const M=[...w.value];w.value=P.map(A=>{const R=x(A),ne=M.findIndex(pe=>pe.key===R),se=ne===-1?void 0:M.splice(ne,1)[0];if(se)return se.warning=A,se;const ke={id:m++,key:R,warning:A,detailsOpen:!1,copied:!1};return C(A)||O(ke.id,_(A)),ke});for(const A of M){y(A.id);const R=b.get(A.id);R&&clearTimeout(R),b.delete(A.id)}},{immediate:!0,flush:"post"}),ut(()=>{k.forEach(P=>{P.handle!==null&&clearTimeout(P.handle)}),k.clear(),b.forEach(P=>clearTimeout(P)),b.clear()}),(P,M)=>(a(),Z(Ou,{name:"toast",tag:"div",class:"toasts",role:"status","aria-live":"polite"},{default:j(()=>[(a(!0),u(ye,null,Be(w.value,A=>(a(),Z(TP,{key:A.id,variant:g(A.warning)?"danger":"warning",title:c(A.warning),message:p(A.warning),"dismiss-label":r(o)("warnings.dismiss"),onDismiss:R=>Q(A.id),onPointerenter:R=>L(A.id),onPointerleave:R=>N(A.id)},{default:j(()=>[v(A.warning)?.length?(a(),u("div",AP,[l("button",{class:"link",type:"button",onClick:R=>H(A)},d(A.detailsOpen?r(o)("warnings.hideDetails"):r(o)("warnings.showDetails")),9,LP),l("button",{class:"link",type:"button",onClick:R=>U(A)},d(A.copied?r(o)("warnings.copied"):r(o)("warnings.copyDetails")),9,BP)])):B("",!0),A.detailsOpen&&v(A.warning)?.length?(a(),u("dl",PP,[(a(!0),u(ye,null,Be(v(A.warning),R=>(a(),u("div",{key:`${R.label}:${R.value}`,class:"detail-row"},[l("dt",null,d(R.label),1),l("dd",null,d(R.value),1)]))),128))])):B("",!0)]),_:2},1032,["variant","title","message","dismiss-label","onDismiss","onPointerenter","onPointerleave"]))),128))]),_:1}))}}),RP=Te(EP,[["__scopeId","data-v-f5c667dc"]]),OP={class:"topbar"},DP={class:"wsq"},zP=["aria-label"],FP={class:"tb-path"},qP={class:"ws"},WP={class:"se"},NP={class:"tb-sub"},HP=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}=Fe(),s=e,o=t,i=$(()=>{const v=s.workspace,C=(v?.name||v?.root||"").trim().charAt(0);return C?C.toUpperCase():"K"}),c=$(()=>s.workspace?.name??n("workspace.noWorkspace")),p=$(()=>s.running?n("mobile.running"):n("mobile.idle"));return(v,g)=>(a(),u("div",OP,[l("span",DP,d(i.value),1),l("button",{type:"button",class:"tb-mid","aria-label":r(n)("mobile.openSwitcher"),onClick:g[0]||(g[0]=C=>o("openSwitcher"))},[l("span",FP,[l("span",qP,d(c.value),1),e.sessionTitle?(a(),u(ye,{key:0},[g[2]||(g[2]=l("span",{class:"sl"},"/",-1)),l("span",WP,d(e.sessionTitle),1)],64)):B("",!0),g[3]||(g[3]=l("span",{class:"cv"},"⌄",-1))]),l("span",NP,[l("span",{class:de(["rd",{on:e.running}])},null,2),l("span",null,d(p.value),1),e.branch?(a(),u(ye,{key:0},[ve(" · "+d(e.branch),1)],64)):B("",!0),e.sessionCount>0?(a(),u(ye,{key:1},[ve(" · "+d(r(n)("mobile.sessionCount",{n:e.sessionCount})),1)],64)):B("",!0)])],8,zP),I(et,{size:"lg",label:r(n)("mobile.openSettings"),onClick:g[1]||(g[1]=C=>o("openSettings"))},{default:j(()=>[I(ae,{name:"sliders",size:"lg"})]),_:1},8,["label"])]))}}),UP=Te(HP,[["__scopeId","data-v-6b4b901f"]]),VP={key:0,class:"sheet-root"},jP=["aria-label"],KP=["aria-label"],GP={key:0,class:"sheet-head"},QP={class:"sheet-title"},YP={class:"sheet-body"},ZP=Ie({__name:"BottomSheet",props:{modelValue:{type:Boolean},title:{default:""}},emits:["update:modelValue","close"],setup(e,{emit:t}){const{t:n}=Fe(),s=e,o=t;function i(){o("update:modelValue",!1),o("close")}function c(p){p.key==="Escape"&&i()}return Ee(()=>s.modelValue,p=>{typeof document>"u"||(p?document.addEventListener("keydown",c):document.removeEventListener("keydown",c))},{immediate:!0}),ut(()=>{typeof document<"u"&&document.removeEventListener("keydown",c)}),(p,v)=>(a(),Z(Io,{name:"sheet"},{default:j(()=>[e.modelValue?(a(),u("div",VP,[l("div",{class:"sheet-scrim",onClick:i}),l("div",{class:"sheet-panel",role:"dialog","aria-label":e.title||r(n)("mobile.sheetLabel")},[l("button",{type:"button",class:"sheet-grab","aria-label":r(n)("mobile.closeSheet"),onClick:i},null,8,KP),e.title?(a(),u("div",GP,[l("span",QP,d(e.title),1)])):B("",!0),l("div",YP,[bt(p.$slots,"default",{},void 0,!0)])],8,jP)])):B("",!0)]),_:3}))}}),Iu=Te(ZP,[["__scopeId","data-v-745ee5a2"]]),XP={class:"mlist"},JP={key:0,class:"mempty"},eE=["onClick"],tE={class:"mgh-main"},nE={class:"mgh-name"},sE={class:"mgh-path"},oE={key:2,class:"att"},iE={key:0,class:"mempty small"},aE=["onClick"],lE={class:"m"},rE={class:"s"},cE={key:0,class:"att"},uE=["disabled","onClick"],dE=["onClick"],pE=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}=Fe(),s=e,o=t;function i(){o("update:modelValue",!1)}function c(A){o("select",A),i()}function p(A){o("createInWorkspace",A),i()}function v(){o("create"),i()}function g(){o("addWorkspace"),i()}const C=T(new Set);function x(A){return C.value.has(A)}function h(A){const R=new Set(C.value);R.has(A)?R.delete(A):R.add(A),C.value=R,y.value=null,U.value=null}const m=T(new Set);function w(A){return m.value.has(A)}function k(A){const R=new Set(m.value);R.has(A)?R.delete(A):R.add(A),m.value=R}function b(A){if(w(A.workspace.id))return A.sessions;const R=A.sessions.slice(0,A.initialCount);if(s.activeId&&!R.some(ne=>ne.id===s.activeId)){const ne=A.sessions.find(se=>se.id===s.activeId);if(ne)return[...R,ne]}return R}function _(A){if(!m.value.has(A)){const R=new Set(m.value);R.add(A),m.value=R}o("loadMore",A)}function O(A){return s.attentionByWorkspace[A]??0}const y=T(null);function L(A){y.value=y.value===A?null:A,U.value=null}function N(A){y.value=null;const ne=(typeof window<"u"?window.prompt(n("sidebar.rename"),A.title):null)?.trim();ne&&o("rename",A.id,ne)}function H(A){y.value=null,o("archive",A)}const U=T(null);function Q(A){U.value=U.value===A?null:A,y.value=null}function P(A){Yt(A.root),U.value=null}function M(A){U.value=null,o("deleteWorkspace",A.id)}return(A,R)=>(a(),Z(Iu,{"model-value":e.modelValue,"onUpdate:modelValue":R[2]||(R[2]=ne=>o("update:modelValue",ne))},{default:j(()=>[l("button",{type:"button",class:"newrow",onClick:v},[I(ae,{name:"message",size:"sm"}),ve(" "+d(r(n)("sidebar.newChat")),1)]),l("button",{type:"button",class:"newrow secondary",onClick:g},[I(ae,{name:"folder",size:"sm"}),ve(" "+d(r(n)("sidebar.newWorkspace")),1)]),l("div",XP,[e.groups.length===0?(a(),u("div",JP,d(r(n)("workspace.noWorkspace")),1)):B("",!0),(a(!0),u(ye,null,Be(e.groups,ne=>(a(),u("div",{key:ne.workspace.id,class:"mgroup"},[l("div",{class:de(["mgh",{on:ne.workspace.id===e.activeWorkspaceId}]),onClick:se=>h(ne.workspace.id)},[x(ne.workspace.id)?(a(),Z(ae,{key:0,class:"mgh-folder",name:"folder-closed",size:"sm"})):(a(),Z(ae,{key:1,class:"mgh-folder",name:"folder",size:"sm"})),l("div",tE,[l("span",nE,d(ne.workspace.name),1),I(Je,{text:ne.workspace.root},{default:j(()=>[l("span",sE,d(ne.workspace.shortPath),1)]),_:2},1032,["text"])]),x(ne.workspace.id)&&O(ne.workspace.id)>0?(a(),u("span",oE,d(O(ne.workspace.id)),1)):B("",!0),I(et,{size:"lg",class:"mgh-more",label:r(n)("sidebar.options"),onClick:Pe(se=>Q(ne.workspace.id),["stop"])},{default:j(()=>[I(ae,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),I(et,{size:"lg",class:"mgh-add",label:r(n)("workspace.newInGroup"),onClick:Pe(se=>p(ne.workspace.id),["stop"])},{default:j(()=>[I(ae,{name:"plus",size:"md"})]),_:1},8,["label","onClick"]),U.value===ne.workspace.id?(a(),Z(_s,{key:3,class:"kmenu wsmenu",onClick:R[0]||(R[0]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{size:"lg",onClick:se=>P(ne.workspace)},{default:j(()=>[ve(d(r(n)("sidebar.copyPath")),1)]),_:1},8,["onClick"]),I(st,{size:"lg",danger:"",onClick:se=>M(ne.workspace)},{default:j(()=>[ve(d(r(n)("sidebar.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)):B("",!0)],10,eE),rt(l("div",null,[ne.sessions.length===0?(a(),u("div",iE,d(r(n)("sidebar.noSessions")),1)):B("",!0),(a(!0),u(ye,null,Be(b(ne),se=>(a(),u("div",{key:se.id,class:de(["srow",{cur:se.id===e.activeId}]),onClick:ke=>c(se.id)},[l("div",lE,[l("div",{class:de(["t",{run:se.busy,aborted:!se.busy&&(e.attentionBySession[se.id]??0)===0&&(se.lastTurnReason==="cancelled"||se.lastTurnReason==="failed")}])},d(se.title),3),l("div",rE,d(se.time),1)]),(e.attentionBySession[se.id]??0)>0?(a(),u("span",cE,d(e.attentionBySession[se.id]),1)):B("",!0),I(et,{size:"lg",class:"kb",label:r(n)("sidebar.options"),onClick:Pe(ke=>L(se.id),["stop"])},{default:j(()=>[I(ae,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),y.value===se.id?(a(),Z(_s,{key:1,class:"kmenu",onClick:R[1]||(R[1]=Pe(()=>{},["stop"]))},{default:j(()=>[I(st,{size:"lg",onClick:ke=>N(se)},{default:j(()=>[ve(d(r(n)("sidebar.rename")),1)]),_:1},8,["onClick"]),I(st,{size:"lg",danger:"",onClick:ke=>H(se.id)},{default:j(()=>[ve(d(r(n)("sidebar.archive")),1)]),_:1},8,["onClick"])]),_:2},1024)):B("",!0)],10,aE))),128)),ne.hasMore||ne.loadingMore?(a(),u("button",{key:1,type:"button",class:"mshow-more",disabled:ne.loadingMore,onClick:Pe(se=>_(ne.workspace.id),["stop"])},d(ne.loadingMore?r(n)("sidebar.loadingMore"):r(n)("sidebar.showMore",{count:Math.max(0,ne.workspace.sessionCount-ne.sessions.length)})),9,uE)):B("",!0),ne.sessions.length>ne.initialCount?(a(),u("button",{key:2,type:"button",class:"mshow-more",onClick:Pe(se=>k(ne.workspace.id),["stop"])},d(w(ne.workspace.id)?r(n)("sidebar.showLess"):r(n)("sidebar.showAll",{count:ne.sessions.length-ne.initialCount})),9,dE)):B("",!0)],512),[[jn,!x(ne.workspace.id)]])]))),128))])]),_:1},8,["model-value"]))}}),fE=Te(pE,[["__scopeId","data-v-1b9d51bc"]]),mE={class:"group-title"},vE={class:"srow-main"},hE={class:"srow-label"},gE={class:"srow-sub"},yE={class:"srow read-only"},kE={class:"srow-main"},bE={class:"srow-label"},wE={key:0,class:"srow-sub"},SE={class:"cache-note"},CE={class:"srow-main"},_E={class:"srow-label"},xE={class:"srow-sub"},$E=["aria-checked"],ME={class:"srow-main"},IE={class:"srow-label"},TE={class:"srow-sub"},AE=["aria-checked"],LE={class:"srow-main"},BE={class:"srow-label"},PE={class:"srow-sub"},EE=["aria-checked"],RE={class:"srow-main"},OE={class:"srow-label"},DE={class:"srow read-only"},zE={class:"srow-main"},FE={class:"srow-label"},qE={class:"srow-sub"},WE=["aria-label"],NE={class:"group-title"},HE={class:"srow-main"},UE={class:"srow-label"},VE={class:"srow-sub"},jE={class:"srow read-only pref"},KE={class:"srow-main"},GE={class:"srow-label"},QE={class:"srow read-only pref"},YE={class:"srow-main"},ZE={class:"srow-label"},XE={class:"srow read-only pref"},JE={class:"srow-main"},eR={class:"srow-label"},tR={class:"num-field"},nR=["value","aria-label"],sR={class:"srow-main"},oR={class:"srow-label"},iR={class:"srow-sub"},aR=["aria-checked"],lR={class:"srow-main"},rR={class:"srow-label"},cR={class:"srow-main"},uR={class:"srow-label"},dR={key:2,class:"srow read-only"},pR={class:"srow-main"},fR={class:"srow-label"},mR={class:"srow-val dim"},vR={class:"arch-subhead"},hR={class:"arch-count"},gR={class:"arch-tools"},yR={key:0,class:"arch-empty"},kR={class:"arch-meta"},bR={class:"arch-name"},wR={class:"arch-time"},SR={key:2,class:"arch-empty"},CR=100,_R=Ie({__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}=Fe(),s=e,o=t;function i(ce){o("setColorScheme",ce)}const c=["manual","yolo","auto"],p=$(()=>s.models?.find(ce=>ce.id===s.status?.modelId)),v=$(()=>Ci(p.value)),g=$(()=>_i(p.value)),C=$(()=>Ao(p.value,s.thinking)),x=$(()=>g.value.includes(C.value)?C.value:""),h=$(()=>g.value.map(ce=>({value:ce,label:ha(ce)}))),m=$(()=>s.planMode===!0),w=$(()=>s.swarmMode===!0),k=$(()=>s.supermoonMode===!0),b=$(()=>{const ce=s.status.permission;return ce==="yolo"?"var(--color-warning)":ce==="auto"?"var(--color-danger)":"var(--color-text-muted)"}),_=$(()=>{const ce=s.status.permission,K=n(ce==="yolo"?"mobile.permYoloSub":ce==="auto"?"mobile.permAutoSub":"mobile.permManualSub");return`${ce} · ${K}`}),O=$(()=>s.status.ctxMax>0?Math.min(100,Math.max(0,Math.ceil(s.status.ctxUsed/s.status.ctxMax*100))):0),y=$(()=>s.status.ctxMax>0?`${Gn(s.status.ctxUsed)}/${Gn(s.status.ctxMax)}`:n("status.statusNone"));function L(ce){o("setThinking",Za(p.value,ce))}function N(){const ce=c.indexOf(s.status.permission),K=c[(ce+1)%c.length];o("setPermission",K)}function H(){o("pickModel"),o("update:modelValue",!1)}function U(){o("login"),o("update:modelValue",!1)}function Q(){o("logout"),o("update:modelValue",!1)}const P=Ai(),M=T("main"),A=T([]),R=T(!1),ne=T(!1),se=T(""),ke=T("archived-desc");async function pe(){if(!R.value){R.value=!0,ne.value=!1;try{const ce=[];let K;for(;;){const Y=await P.loadArchivedSessions({beforeId:K,pageSize:CR});if(ce.push(...Y.items),!Y.hasMore||Y.items.length===0)break;const Se=Y.items.at(-1)?.id;if(Se===void 0)break;K=Se}A.value=ce,ne.value=!0}catch(ce){console.warn("loadAllArchived failed",ce)}finally{R.value=!1}}}function V(){M.value="archived",se.value="",pe()}function ee(){M.value="main"}const le=$(()=>{const ce=se.value.trim().toLowerCase();let K=A.value.filter(Y=>Y.archived===!0);return ce&&(K=K.filter(Y=>Y.title.toLowerCase().includes(ce))),K=K.slice(),ke.value==="archived-desc"?K.sort((Y,Se)=>Se.updatedAt.localeCompare(Y.updatedAt)):ke.value==="created-desc"?K.sort((Y,Se)=>Se.createdAt.localeCompare(Y.createdAt)):K.sort((Y,Se)=>Y.title.localeCompare(Se.title,"zh")),K});async function me(ce){await P.restoreSession(ce)&&(A.value=A.value.filter(Y=>Y.id!==ce))}function _e(ce){const K=new Date(ce);if(Number.isNaN(K.getTime()))return ce;const Y=Se=>String(Se).padStart(2,"0");return`${K.getFullYear()}-${Y(K.getMonth()+1)}-${Y(K.getDate())} ${Y(K.getHours())}:${Y(K.getMinutes())}`}return Ee(()=>s.modelValue,ce=>{ce||(M.value="main")}),(ce,K)=>(a(),Z(Iu,{"model-value":e.modelValue,title:r(n)("mobile.settingsTitle"),"onUpdate:modelValue":K[7]||(K[7]=Y=>o("update:modelValue",Y))},{default:j(()=>[M.value==="main"?(a(),u(ye,{key:0},[l("div",mE,d(r(n)("mobile.groupSession")),1),l("button",{type:"button",class:"srow",onClick:H},[l("span",vE,[l("span",hE,d(r(n)("status.statusModel")),1),l("span",gE,d(e.status.model),1)]),K[8]||(K[8]=l("span",{class:"chev"},"›",-1))]),l("div",yE,[l("span",kE,[l("span",bE,d(r(n)("status.statusThinking")),1),v.value==="unsupported"?(a(),u("span",wE,d(r(n)("status.modeNotSupported")),1)):B("",!0)]),g.value.length>1?(a(),Z(Xt,{key:0,"model-value":x.value,options:h.value,size:"sm","onUpdate:modelValue":L},null,8,["model-value","options"])):(a(),u("span",{key:1,class:de(["srow-val",{dim:C.value==="off"}])},d(C.value==="off"?r(n)("status.planOff"):r(ha)(C.value)),3))]),l("div",SE,d(r(n)("status.cacheNote")),1),l("button",{type:"button",class:"srow",onClick:K[0]||(K[0]=Y=>o("togglePlan"))},[l("span",CE,[l("span",_E,d(r(n)("status.statusPlanMode")),1),l("span",xE,d(r(n)("mobile.planModeSub")),1)]),l("span",{class:de(["toggle",{on:m.value}]),role:"switch","aria-checked":m.value},null,10,$E)]),l("button",{type:"button",class:"srow",onClick:K[1]||(K[1]=Y=>o("toggleSwarm"))},[l("span",ME,[l("span",IE,d(r(n)("status.statusSwarmMode")),1),l("span",TE,d(r(n)("mobile.swarmModeSub")),1)]),l("span",{class:de(["toggle",{on:w.value}]),role:"switch","aria-checked":w.value},null,10,AE)]),l("button",{type:"button",class:"srow",onClick:K[2]||(K[2]=Y=>o("toggleSupermoon"))},[l("span",LE,[l("span",BE,d(r(n)("status.statusSupermoonMode")),1),l("span",PE,d(r(n)("mobile.supermoonModeSub")),1)]),l("span",{class:de(["toggle",{on:k.value}]),role:"switch","aria-checked":k.value},null,10,EE)]),l("button",{type:"button",class:"srow",onClick:N},[l("span",RE,[l("span",OE,d(r(n)("status.statusPermission")),1),l("span",{class:"srow-sub",style:ct({color:b.value})},d(_.value),5)]),K[9]||(K[9]=l("span",{class:"chev"},"›",-1))]),l("div",DE,[l("span",zE,[l("span",FE,d(r(n)("status.statusContext")),1),l("span",qE,d(y.value),1)]),l("span",{class:"ctx-meter","aria-label":y.value},[l("i",{style:ct({width:O.value+"%"})},null,4)],8,WE)]),l("div",NE,d(r(n)("mobile.groupApp")),1),l("button",{type:"button",class:"srow",onClick:V},[l("span",HE,[l("span",UE,d(r(n)("mobile.archivedSessions")),1),l("span",VE,d(r(n)("mobile.archivedSessionsSub")),1)]),K[10]||(K[10]=l("span",{class:"chev"},"›",-1))]),l("div",jE,[l("span",KE,[l("span",GE,d(r(n)("theme.colorSchemeLabel")),1)]),I(Xt,{"model-value":e.colorScheme??"system",options:[{value:"light",label:r(n)("theme.light")},{value:"dark",label:r(n)("theme.dark")},{value:"system",label:r(n)("theme.system")}],"onUpdate:modelValue":i},null,8,["model-value","options"])]),l("div",QE,[l("span",YE,[l("span",ZE,d(r(n)("sidebar.language")),1)]),I($u)]),l("div",XE,[l("span",JE,[l("span",eR,d(r(n)("settings.uiFontSize")),1)]),l("label",tR,[l("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":r(n)("settings.uiFontSize"),onInput:K[3]||(K[3]=Y=>o("setUiFontSize",Number(Y.target.value)))},null,40,nR),K[11]||(K[11]=l("span",{class:"num-unit"},"px",-1))])]),l("button",{type:"button",class:"srow",onClick:K[4]||(K[4]=Y=>o("setConversationToc",!e.conversationToc))},[l("span",sR,[l("span",oR,d(r(n)("settings.conversationToc")),1),l("span",iR,d(r(n)("settings.conversationTocHint")),1)]),l("span",{class:de(["toggle",{on:e.conversationToc}]),role:"switch","aria-checked":e.conversationToc},null,10,aR)]),e.authReady?(a(),u("button",{key:0,type:"button",class:"srow acct out",onClick:Q},[l("span",lR,[l("span",rR,d(r(n)("sidebar.signOut")),1)])])):(a(),u("button",{key:1,type:"button",class:"srow acct in",onClick:U},[l("span",cR,[l("span",uR,d(r(n)("sidebar.signIn")),1)])])),e.serverVersion?(a(),u("div",dR,[l("span",pR,[l("span",fR,d(r(n)("settings.serverVersion")),1)]),l("span",mR,d(e.serverVersion),1)])):B("",!0)],64)):(a(),u(ye,{key:1},[l("div",vR,[l("button",{type:"button",class:"arch-back",onClick:ee},[K[12]||(K[12]=l("span",{class:"chev back"},"‹",-1)),ve(" "+d(r(n)("mobile.archivedBack")),1)]),l("span",hR,d(r(n)("mobile.sessionCount",{n:le.value.length})),1)]),l("div",gR,[I(zn,{class:"arch-search-input","model-value":se.value,size:"sm",placeholder:r(n)("settings.archivedSearch"),"onUpdate:modelValue":K[5]||(K[5]=Y=>se.value=Y)},null,8,["model-value","placeholder"]),I(Xt,{size:"sm","model-value":ke.value,options:[{value:"archived-desc",label:r(n)("settings.archivedSortArchived")},{value:"created-desc",label:r(n)("settings.archivedSortCreated")},{value:"name-asc",label:r(n)("settings.archivedSortName")}],"onUpdate:modelValue":K[6]||(K[6]=Y=>ke.value=Y)},null,8,["model-value","options"])]),R.value?(a(),u("div",yR,d(r(n)("settings.archivedLoadingAll")),1)):le.value.length>0?(a(!0),u(ye,{key:1},Be(le.value,Y=>(a(),u("div",{key:Y.id,class:"arch-row"},[l("div",kR,[l("div",bR,d(Y.title),1),l("div",wR,d(r(n)("settings.archivedAt",{time:_e(Y.updatedAt)})),1)]),I(We,{variant:"secondary",size:"sm",onClick:Se=>me(Y.id)},{default:j(()=>[ve(d(r(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128)):(a(),u("div",SR,d(A.value.length===0?r(n)("settings.archivedEmpty"):r(n)("settings.archivedNoMatch")),1))],64))]),_:1},8,["model-value","title"]))}}),xR=Te(_R,[["__scopeId","data-v-5ba9962c"]]),$R={class:"ob-brand"},MR={class:"ob-brand-text"},IR={class:"ob-title"},TR={class:"ob-sub"},AR={class:"ob-sec"},LR={class:"ob-label"},BR={class:"ob-sec"},PR={class:"ob-label"},ER={class:"ob-sec"},RR={class:"ob-label"},OR=Ie({__name:"Onboarding",emits:["complete","skip"],setup(e,{emit:t}){const n=t,{t:s,locale:o}=Fe(),{colorScheme:i,accent:c,setColorScheme:p,setAccent:v}=vc();function g(x){o.value!==x&&Gr(x)}function C(){n("complete")}return(x,h)=>(a(),Z(ds,{open:!0,size:"md","close-on-overlay":!1,"close-on-esc":!1,onClose:h[3]||(h[3]=m=>n("skip"))},{head:j(()=>[l("div",$R,[h[4]||(h[4]=l("svg",{class:"ob-logo",viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code"},[l("defs",null,[l("mask",{id:"obKimiEyes",maskUnits:"userSpaceOnUse"},[l("rect",{x:"0",y:"0",width:"32",height:"22",fill:"#fff"}),l("g",{class:"ob-eyes",fill:"#000"},[l("rect",{class:"ob-eye",x:"11.8",y:"7",width:"2.8",height:"8",rx:"1.4"}),l("rect",{class:"ob-eye",x:"17.4",y:"7",width:"2.8",height:"8",rx:"1.4"})])])]),l("rect",{x:"1",y:"1",width:"30",height:"20",rx:"6",fill:"var(--color-accent)",mask:"url(#obKimiEyes)"})],-1)),l("div",MR,[l("div",IR,d(r(s)("onboarding.title")),1),l("div",TR,d(r(s)("onboarding.subtitle")),1)])])]),default:j(()=>[l("section",AR,[l("div",LR,d(r(s)("onboarding.languageLabel")),1),I(Xt,{"model-value":r(o),options:r(Kr).map(m=>({value:m.code,label:m.label})),"onUpdate:modelValue":h[0]||(h[0]=m=>g(m))},null,8,["model-value","options"])]),l("section",BR,[l("div",PR,d(r(s)("theme.colorSchemeLabel")),1),I(Xt,{"model-value":r(i),options:[{value:"light",label:r(s)("theme.light")},{value:"dark",label:r(s)("theme.dark")},{value:"system",label:r(s)("theme.system")}],"onUpdate:modelValue":h[1]||(h[1]=m=>r(p)(m))},null,8,["model-value","options"])]),l("section",ER,[l("div",RR,d(r(s)("theme.accentLabel")),1),I(Xt,{"model-value":r(c),options:[{value:"blue",label:r(s)("theme.accentBlue")},{value:"mono",label:r(s)("theme.accentBlack")}],"onUpdate:modelValue":h[2]||(h[2]=m=>r(v)(m))},null,8,["model-value","options"])]),I(We,{variant:"primary",size:"lg",class:"ob-start",onClick:C},{default:j(()=>[ve(d(r(s)("onboarding.start")),1)]),_:1})]),_:1}))}}),DR=Te(OR,[["__scopeId","data-v-fbdd3eab"]]),zR=["aria-label"],FR={class:"gload-box"},qR={class:"gload-text"},WR={key:0,class:"gload-issue"},NR={class:"gload-issue-detail"},HR=Ie({__name:"GlobalLoading",props:{issue:{}},setup(e){const{t}=Fe();return(n,s)=>(a(),u("div",{class:"gload",role:"status","aria-label":r(t)("app.connecting")},[l("div",FR,[s[0]||(s[0]=La(' ',1)),I(Jt,{size:"md",label:r(t)("app.connecting")},null,8,["label"]),l("div",qR,d(r(t)("app.connecting")),1),e.issue?(a(),u("div",WR,[l("div",null,d(r(t)("app.connectRetrying")),1),l("div",NR,d(e.issue),1)])):B("",!0)])],8,zR))}}),UR=Te(HR,[["__scopeId","data-v-0b6dec6a"]]),VR={class:"kap-root"},jR={class:"kap-head"},KR={class:"kap-count"},GR={class:"kap-head-actions"},QR={class:"kap-filters"},YR=["value"],ZR={class:"kap-check"},XR={class:"kap-check"},JR={class:"kap-view-toggle",role:"group"},eO={key:0,class:"kap-empty"},tO=["onClick"],nO={class:"kap-ts"},sO={class:"kap-label"},oO={key:0,class:"kap-detail"},iO={class:"kap-detail-actions"},aO=["onClick"],lO={key:1,class:"kap-agg"},rO={class:"mono"},cO={class:"mono"},uO={class:"num"},dO={class:"num"},pO={key:0},fO={class:"mono"},mO={class:"num"},vO={class:"num"},hO={key:0},gO=Ie({__name:"KapDebugView",emits:["close"],setup(e,{emit:t}){const n=t,s=T("all"),o=T(""),i=T(""),c=T(!1),p=T("timeline"),v=$(()=>(Ea.value,[...hg()])),g=$(()=>{const P=new Set;for(const M of v.value)M.sessionId&&P.add(M.sessionId);return[...P].sort()});function C(P){return P.kind==="rest:error"||P.code!==void 0&&P.code!==0||P.eventType==="error"||P.eventType==="parse-error"}const x=$(()=>{const P=o.value.trim().toLowerCase();return v.value.filter(M=>!(s.value!=="all"&&M.source!==s.value||i.value&&M.sessionId!==i.value||c.value&&!C(M)||P&&!`${M.label} ${M.kind} ${M.eventType??""} ${M.sessionId??""} ${M.requestId??""}`.toLowerCase().includes(P)))}),h=$(()=>{const P=new Map;for(const M of x.value){if(M.kind!=="ws:in"&&M.kind!=="ws:out")continue;const A=M.kind==="ws:in"?"←":"→",R=`${A} ${M.eventType??"?"} @ ${M.sessionId??"-"}`,ne=P.get(R)??{key:R,sessionId:M.sessionId??"-",eventType:M.eventType??"?",dir:A,count:0};ne.count++,M.seq!==void 0&&(ne.lastSeq=M.seq),P.set(R,ne)}return[...P.values()].sort((M,A)=>A.count-M.count)}),m=$(()=>{const P=new Map;for(const M of x.value){if(M.source!=="rest"||M.kind==="rest:request")continue;const A=`${M.method??"?"} ${M.path??"?"}`,R=P.get(A)??{count:0,errors:0,totalMs:0,timed:0};R.count++,C(M)&&R.errors++,M.durationMs!==void 0&&(R.totalMs+=M.durationMs,R.timed++),P.set(A,R)}return[...P.entries()].map(([M,A])=>({key:M,count:A.count,errors:A.errors,avgMs:A.timed>0?Math.round(A.totalMs/A.timed):0})).sort((M,A)=>A.count-M.count)}),w=T(null),k=T(!0),b=T(null),_=T(null);Ee(()=>x.value.length,async()=>{if(!k.value||p.value!=="timeline")return;await Ne();const P=b.value;P&&(P.scrollTop=P.scrollHeight)});function O(P){w.value=w.value===P?null:P}function y(P){const M=new Date(P),A=(R,ne=2)=>String(R).padStart(ne,"0");return`${A(M.getHours())}:${A(M.getMinutes())}:${A(M.getSeconds())}.${A(M.getMilliseconds(),3)}`}function L(P){return JSON.stringify(P,null,2)}async function N(P){await Yt(L(P))&&(_.value=P.id,setTimeout(()=>{_.value===P.id&&(_.value=null)},1500))}function H(){Zr(x.value)}function U(P){return C(P)||P.source==="client"?"b-err":P.source==="rest"?"b-rest":P.kind==="ws:lifecycle"?"b-life":P.kind==="ws:out"?"b-out":"b-in"}function Q(P){return P.source==="rest"?"REST":P.source==="client"?"APP":"WS"}return(P,M)=>(a(),u("section",VR,[l("header",jR,[M[11]||(M[11]=l("strong",null,"KAP debug",-1)),l("span",KR,d(x.value.length)+"/"+d(v.value.length),1),l("div",GR,[l("button",{type:"button",class:de({on:r(_o)}),onClick:M[0]||(M[0]=A=>_o.value=!r(_o))},d(r(_o)?"resume":"pause"),3),l("button",{type:"button",onClick:M[1]||(M[1]=A=>r(gg)())},"clear"),l("button",{type:"button",onClick:M[2]||(M[2]=A=>H())},"export jsonl"),I(Je,{text:"Close window"},{default:j(()=>[l("button",{type:"button",onClick:M[3]||(M[3]=A=>n("close"))},"✕")]),_:1})])]),l("div",QR,[rt(l("select",{"onUpdate:modelValue":M[4]||(M[4]=A=>s.value=A),"aria-label":"Source filter"},[...M[12]||(M[12]=[l("option",{value:"all"},"rest + ws + app",-1),l("option",{value:"rest"},"rest",-1),l("option",{value:"ws"},"ws",-1),l("option",{value:"client"},"app errors",-1)])],512),[[pl,s.value]]),rt(l("select",{"onUpdate:modelValue":M[5]||(M[5]=A=>i.value=A),"aria-label":"Session filter"},[M[13]||(M[13]=l("option",{value:""},"all sessions",-1)),(a(!0),u(ye,null,Be(g.value,A=>(a(),u("option",{key:A,value:A},d(A),9,YR))),128))],512),[[pl,i.value]]),rt(l("input",{"onUpdate:modelValue":M[6]||(M[6]=A=>o.value=A),type:"text",placeholder:"filter (type / path / id)","aria-label":"Text filter"},null,512),[[gn,o.value]]),l("label",ZR,[rt(l("input",{"onUpdate:modelValue":M[7]||(M[7]=A=>c.value=A),type:"checkbox"},null,512),[[fl,c.value]]),M[14]||(M[14]=ve(" errors",-1))]),l("label",XR,[rt(l("input",{"onUpdate:modelValue":M[8]||(M[8]=A=>k.value=A),type:"checkbox"},null,512),[[fl,k.value]]),M[15]||(M[15]=ve(" follow",-1))]),l("div",JR,[l("button",{type:"button",class:de({on:p.value==="timeline"}),onClick:M[9]||(M[9]=A=>p.value="timeline")},"timeline",2),l("button",{type:"button",class:de({on:p.value==="aggregate"}),onClick:M[10]||(M[10]=A=>p.value="aggregate")},"aggregate",2)])]),p.value==="timeline"?(a(),u("div",{key:0,ref_key:"listRef",ref:b,class:"kap-list"},[x.value.length===0?(a(),u("div",eO," No trace entries yet. REST calls and WS frames will appear here. ")):B("",!0),(a(!0),u(ye,null,Be(x.value,A=>(a(),u("div",{key:A.id,class:"kap-row-wrap"},[l("button",{type:"button",class:de(["kap-row",{expanded:w.value===A.id}]),onClick:R=>O(A.id)},[l("span",nO,d(y(A.ts)),1),l("span",{class:de(["kap-badge",U(A)])},d(Q(A)),3),l("span",sO,d(A.label),1)],10,tO),w.value===A.id?(a(),u("div",oO,[l("div",iO,[l("button",{type:"button",onClick:R=>N(A)},d(_.value===A.id?"copied ✓":"copy json"),9,aO)]),l("pre",null,d(L(A)),1)])):B("",!0)]))),128))],512)):(a(),u("div",lO,[M[20]||(M[20]=l("h4",null,"WS frames by session / type",-1)),l("table",null,[M[17]||(M[17]=l("thead",null,[l("tr",null,[l("th",null,"dir"),l("th",null,"type"),l("th",null,"session"),l("th",null,"count"),l("th",null,"last seq")])],-1)),l("tbody",null,[(a(!0),u(ye,null,Be(h.value,A=>(a(),u("tr",{key:A.key},[l("td",null,d(A.dir),1),l("td",rO,d(A.eventType),1),l("td",cO,d(A.sessionId),1),l("td",uO,d(A.count),1),l("td",dO,d(A.lastSeq??"—"),1)]))),128)),h.value.length===0?(a(),u("tr",pO,[...M[16]||(M[16]=[l("td",{colspan:"5",class:"kap-empty"},"no ws frames",-1)])])):B("",!0)])]),M[21]||(M[21]=l("h4",null,"REST by endpoint",-1)),l("table",null,[M[19]||(M[19]=l("thead",null,[l("tr",null,[l("th",null,"endpoint"),l("th",null,"count"),l("th",null,"errors"),l("th",null,"avg ms")])],-1)),l("tbody",null,[(a(!0),u(ye,null,Be(m.value,A=>(a(),u("tr",{key:A.key},[l("td",fO,d(A.key),1),l("td",mO,d(A.count),1),l("td",{class:de(["num",{err:A.errors>0}])},d(A.errors),3),l("td",vO,d(A.avgMs),1)]))),128)),m.value.length===0?(a(),u("tr",hO,[...M[18]||(M[18]=[l("td",{colspan:"4",class:"kap-empty"},"no rest calls",-1)])])):B("",!0)])])]))]))}}),yO=Te(gO,[["__scopeId","data-v-3cda6fe3"]]),kO=Ie({__name:"DebugPanel",setup(e){const t=T(!1);let n=null,s=null,o=null;const i=["data-color-scheme","data-accent"];function c(C){const x=document.documentElement,h=C.documentElement;for(const m of i){const w=x.getAttribute(m);w!==null?h.setAttribute(m,w):h.removeAttribute(m)}}function p(C){const x=C.document;x.title="KAP debug";const h=x.createElement("base");h.href=location.href,x.head.appendChild(h);for(const w of Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')))x.head.appendChild(w.cloneNode(!0));c(x),x.body.style.margin="0";const m=x.createElement("div");return m.style.height="100vh",x.body.appendChild(m),m}function v(){o?.disconnect(),o=null;try{s?.unmount()}catch{}s=null,n=null,t.value=!1}function g(){if(n&&!n.closed){n.focus();return}const C=window.open("","kap-debug","popup=yes,width=1040,height=760");if(!C)return;n=C;const x=p(C),h=Fr(yO,{onClose:()=>C.close()});h.mount(x),s=h,t.value=!0,o=new MutationObserver(()=>{n&&!n.closed&&c(n.document)}),o.observe(document.documentElement,{attributes:!0,attributeFilter:[...i]}),C.addEventListener("pagehide",v),C.addEventListener("beforeunload",v)}return lt(()=>{g()}),vn(()=>{n&&!n.closed&&n.close(),v()}),(C,x)=>(a(),Z(Je,{text:t.value?"Focus KAP debug window":"Open KAP debug window"},{default:j(()=>[l("button",{class:"kap-fab",type:"button",onClick:g}," KAP ")]),_:1},8,["text"]))}}),bO=Te(kO,[["__scopeId","data-v-21346738"]]);function wO({client:e,authLogoRef:t}){const n=$(()=>e.authReady.value),s=$(()=>e.initialized.value&&!n.value),o="/login",i=T(null);let c=null;function p(){return typeof window>"u"?"/":`${window.location.pathname}${window.location.search}${window.location.hash}`}function v(C){typeof window>"u"||window.history.replaceState(window.history.state,"",C)}Ee(s,C=>{if(!(typeof window>"u")){if(C){window.location.pathname!==o&&(i.value=p(),v(o));return}window.location.pathname===o&&(v(i.value??"/"),i.value=null)}},{immediate:!0});function g(){const C=t.value;C&&(C.classList.remove("blink-now"),C.getBoundingClientRect(),C.classList.add("blink-now"),c!==null&&clearTimeout(c),c=setTimeout(()=>{c=null,C.classList.remove("blink-now")},300))}return ut(()=>{c!==null&&clearTimeout(c)}),{showAuthGate:s,blinkAuthLogo:g}}function SO({running:e,showAuthGate:t}){const{t:n}=Fe(),s=["◐","◓","◑","◒"],o=T(0);let i=null;function c(){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}Ee(e,g=>{g?c():p()},{immediate:!0});const v=$(()=>{const g=e.value?`${s[o.value]} `:"";return t.value?`${g}${n("app.authPageTitle")} - Kimi Code Web`:`${g}Kimi Code Web`});Du(()=>{typeof document<"u"&&(document.title=v.value)}),ut(()=>{p()})}const Tu=T(typeof window>"u"?0:window.innerWidth);let oi=0,wi=!1;function Ta(){Tu.value=window.innerWidth}function CO(){wi||typeof window>"u"||(window.addEventListener("resize",Ta),wi=!0,Ta())}function _O(){!wi||typeof window>"u"||(window.removeEventListener("resize",Ta),wi=!1)}function Au(e,t,n){return Math.max(t,e-n)}function Aa(e,t,n){return Math.min(n,Math.max(t,e))}function Lu(){return lt(()=>{oi+=1,CO()}),vn(()=>{oi=Math.max(0,oi-1),oi===0&&_O()}),{viewportWidth:Tu}}const xO="kimi-web.file-preview-width",io=320;function $O({client:e,sideWidth:t,detailTarget:n,closeFilePreview:s}){const{viewportWidth:o}=Lu(),i=$(()=>Math.max(0,o.value-t.value)),c=$(()=>Au(i.value,io,io));function p(q){return Aa(Math.round(q),io,c.value)}function v(){return p(i.value/2)}const g=$(()=>v()),C=T(g.value),x=$(()=>Aa(C.value,io,c.value)),h=T(null),m=$(()=>{const q=h.value;if(!q)return null;const xe=e.turns.value.find(Ue=>Ue.id===q.turnId)?.blocks?.[q.blockIndex];return xe?.kind==="thinking"?xe.thinking:null}),w=$(()=>m.value!==null);function k(q){const fe=h.value;if(fe&&fe.turnId===q.turnId&&fe.blockIndex===q.blockIndex){h.value=null,n.value==="thinking"&&(n.value=null);return}n.value="thinking",h.value=q}function b(){h.value=null,n.value==="thinking"&&(n.value=null)}const _=T(null),O=$(()=>{const q=_.value;if(!q)return null;const fe=e.turns.value.find(xe=>xe.id===q.turnId);return fe?.role==="compaction"&&fe.text?fe.text:null}),y=$(()=>O.value!==null);function L(q){if(_.value?.turnId===q.turnId){_.value=null,n.value==="compaction"&&(n.value=null);return}n.value="compaction",_.value=q}function N(){_.value=null,n.value==="compaction"&&(n.value=null)}const H=T(null);function U(q){const fe=e.activeAppTasks.value,xe=fe.find(Ke=>Ke.id===q)??fe.find(Ke=>Ke.parentToolCallId===q);if(xe)return xe.id;const Ue=fe.filter(Ke=>Ke.kind==="subagent"&&!Ke.parentToolCallId);if(Ue.length===1)return Ue[0].id}const Q=$(()=>{const q=H.value;if(!q)return null;const fe=e.activeAppTasks.value.find(xe=>xe.id===q.subagentId);return fe?u2(fe):null}),P=$(()=>Q.value!==null);function M(q){const fe=U(q);if(fe){if(H.value?.subagentId===fe){H.value=null,n.value==="agent"&&(n.value=null);return}H.value={subagentId:fe},n.value="agent"}}function A(){H.value=null,n.value==="agent"&&(n.value=null)}const R=T(null),ne=$(()=>{const q=R.value;if(!q)return null;const fe=GS(e.turns.value,q);return fe?{id:q,title:Ms(fe.name),path:KS(fe.arg),lines:fe.status==="error"?null:iu(fe),output:fe.output}:null}),se=$(()=>ne.value!==null);function ke(q){if(n.value==="toolDiff"&&R.value===q){pe();return}n.value="toolDiff",R.value=q}function pe(){R.value=null,n.value==="toolDiff"&&(n.value=null)}const V=T("list"),ee=T(null);function le(){if(n.value==="diff"){me();return}n.value="diff",V.value="list",ee.value=null;const q=e.activeSessionId.value;q&&e.loadGitStatus(q)}function me(){n.value==="diff"&&(n.value=null),V.value="list",ee.value=null,e.clearFileDiff()}async function _e(q){V.value="detail",ee.value=q,await e.loadFileDiff(q)}async function ce(q){!e.activeSessionId.value&&e.activeWorkspaceId.value?await e.startSessionAndOpenSideChat(e.activeWorkspaceId.value,q):await e.openSideChat(q),n.value="btw"}function K(){e.closeSideChat(),n.value==="btw"&&(n.value=null)}function Y(){n.value==="btw"&&(n.value=null)}const Se=$(()=>e.sideChatVisible.value),oe=$(()=>n.value!==null&&(n.value!=="thinking"||w.value)&&(n.value!=="compaction"||y.value)&&(n.value!=="agent"||P.value)&&(n.value!=="toolDiff"||se.value)&&(n.value!=="btw"||Se.value)),X=T(!1),ie=T({});function Ce(){switch(n.value){case"thinking":return h.value?{kind:"thinking",...h.value}:null;case"compaction":return _.value?{kind:"compaction",..._.value}:null;case"agent":return H.value?{kind:"agent",...H.value}:null;case"toolDiff":return R.value?{kind:"toolDiff",toolId:R.value}:null;case"btw":return{kind:"btw"};default:return null}}function D(q){if(q)switch(q.kind){case"thinking":h.value={turnId:q.turnId,blockIndex:q.blockIndex},n.value="thinking";break;case"compaction":_.value={turnId:q.turnId},n.value="compaction";break;case"agent":H.value={subagentId:q.subagentId},n.value="agent";break;case"toolDiff":R.value=q.toolId,n.value="toolDiff";break;case"btw":e.sideChatVisible.value&&(n.value="btw");break}}function J(){return n.value==="thinking"&&w.value?(b(),!0):n.value==="compaction"&&y.value?(N(),!0):n.value==="agent"&&P.value?(A(),!0):n.value==="toolDiff"&&se.value?(pe(),!0):n.value==="file"?(s(),!0):n.value==="diff"?(me(),!0):n.value==="btw"?(K(),!0):!1}return Ee(e.activeSessionId,(q,fe)=>{if(fe){const xe=Ce();xe?ie.value[fe]=xe:delete ie.value[fe]}s(),b(),N(),A(),pe(),me(),Y(),q&&D(ie.value[q])}),{PREVIEW_WIDTH_KEY:xO,PREVIEW_MIN:io,previewDefaultWidth:g,previewMax:c,previewWidth:C,previewPanelWidth:x,thinkingPanelText:m,thinkingVisible:w,openThinkingPanel:k,closeThinkingPanel:b,compactionPanelText:O,compactionPanelVisible:y,openCompactionPanel:L,closeCompactionPanel:N,agentPanelMember:Q,agentPanelVisible:P,openAgentPanel:M,closeAgentPanel:A,toolDiffTarget:ne,toolDiffVisible:se,openToolDiff:ke,closeToolDiff:pe,detailDiffMode:V,detailDiffPath:ee,openDiffDetail:le,closeDiffDetail:me,selectDiffFile:_e,btwVisible:Se,openSideChatTab:ce,closeSideChat:K,hideSideChatPanel:Y,sidePanelVisible:oe,panelDragging:X,closeOpenSidePanel:J}}const MO=ze.sidebarWidth,Er=ze.sidebarCollapsed,Rr=270,aa=170,IO=480,TO=320;function AO(e={}){const{viewportWidth:t}=Lu(),n=T(Rr),s=T(!1),o=T(null),i=T(!1),c=$(()=>{const h=TO+(wo(e.previewOpen)?io:0);return Math.min(IO,Au(t.value,aa,h))}),p=$(()=>Aa(n.value,aa,c.value)),v=$(()=>wo(e.isNarrow)?o.value??!0:s.value);function g(){try{s.value=xt(Er)==="true"}catch{s.value=!1}}function C(){try{Lt(Er,String(s.value))}catch{}}Ee(()=>wo(e.isNarrow),h=>{h||(o.value=null)},{flush:"sync"});function x(){if(wo(e.isNarrow)){o.value=!v.value;return}s.value=!s.value,C()}return{SIDEBAR_WIDTH_KEY:MO,SIDEBAR_DEFAULT:Rr,SIDEBAR_MIN:aa,sidebarMax:c,sessionColWidth:n,effectiveSidebarCollapsed:v,sidebarCollapsed:s,sidebarDragging:i,sideWidth:p,loadSidebarCollapsed:g,toggleSidebarCollapse:x}}function LO(e){return/^(?:https?:|blob:|data:)/i.test(e)}function BO({client:e,detailTarget:t}){const{t:n}=Fe(),s=T(null),o=T(null),i=T(!1),c=T(null),p=T(null);let v=0,g=null;function C(){g!==null&&(URL.revokeObjectURL(g),g=null)}const x=$(()=>{const U=p.value;return U?e.getFileDownloadUrl(U):null}),h=$(()=>s.value!==null);function m(U){return U.length>1?U.replace(/\/+$/,""):U}function w(U){const Q=[];for(const P of U.split(/[\\/]+/))if(!(!P||P===".")){if(P===".."){Q.pop();continue}Q.push(P)}return Q.join("/")}function k(U){const Q=U.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 P=m(e.status.value.cwd);if(Q.startsWith("/")){if(!P||Q!==P&&!Q.startsWith(`${P}/`))return{error:n("filePreview.errors.outsideWorkspace")};const A=Q===P?"":Q.slice(P.length+1);if(A.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const R=w(A);return R?{path:R}:{error:n("filePreview.errors.isDirectory")}}if(Q.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const M=w(Q);return M?{path:M}:{error:n("filePreview.errors.emptyPath")}}async function b(U){const Q=s.value;if(t.value==="file"&&Q&&Q.path===U.path&&Q.line===U.line){L();return}const P=++v;C(),t.value="file",o.value=null,c.value=null,i.value=!0,s.value=U,p.value=null;const M=k(U.path);if("error"in M){i.value=!1,c.value=M.error;return}p.value=M.path;try{const A=await e.readFileContent(M.path);if(P!==v)return;A?o.value={...A,path:A.path||M.path}:c.value=n("filePreview.errors.loadFailed")}catch(A){if(P!==v)return;c.value=A instanceof Error?A.message:n("filePreview.errors.loadFailed")}finally{P===v&&(i.value=!1)}}function _(U){return/^data:([^;,]+)/i.exec(U)?.[1]}function O(U){if(U.kind!=="image"&&U.kind!=="video")return;const Q=++v;C(),t.value="file",s.value=null,p.value=null,c.value=null;const P=U.kind==="video",M={path:U.path??n(P?"filePreview.videoFallback":"filePreview.imageFallback"),content:"",encoding:"utf-8",mime:U.mimeType??_(U.url)??(P?"video/*":"image/*"),isBinary:!0,size:U.bytes??0};U.fileId?(i.value=!0,o.value=M,Le().getFileBlob(U.fileId).then(A=>{if(Q===v){if(t.value!=="file"||!o.value){i.value=!1;return}g=URL.createObjectURL(A),o.value={...o.value,sourceUrl:g},i.value=!1}}).catch(()=>{Q===v&&(o.value&&(o.value={...o.value,sourceUrl:U.url}),i.value=!1)})):(i.value=!1,o.value=LO(U.url)?{...M,sourceUrl:U.url}:M)}function y(){v+=1,s.value=null,p.value=null,o.value=null,c.value=null,i.value=!1,C()}function L(){y(),t.value==="file"&&(t.value=null)}Ee(t,(U,Q)=>{Q==="file"&&U!=="file"&&y()});function N(){const U=o.value?.path??s.value?.path;U&&e.openWorkspaceFile(U,s.value?.line)}function H(){const U=o.value?.path??s.value?.path;U&&e.revealWorkspaceFile(U)}return{previewTarget:s,previewFile:o,previewLoading:i,previewError:c,previewDownloadUrl:x,previewExternalActions:h,openFilePreview:b,openMediaPreview:O,closeFilePreview:L,openPreviewInEditor:N,revealPreviewFile:H}}const PO=640,EO=`(max-width: ${PO}px)`;function RO(){const e=T(!1);if(typeof window>"u"||typeof window.matchMedia!="function")return e;const t=window.matchMedia(EO);e.value=t.matches;const n=s=>{e.value=s.matches};return typeof t.addEventListener=="function"?(t.addEventListener("change",n),ut(()=>t.removeEventListener("change",n))):typeof t.addListener=="function"&&(t.addListener(n),ut(()=>t.removeListener(n))),e}function OO(){const e=T(!1),t=$_(x_,n=>{e.value=n});return ut(t),e}const DO={class:"server-auth-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"server-auth-title"},zO={class:"server-auth-card"},FO={class:"server-auth-head"},qO={id:"server-auth-title",class:"server-auth-title"},WO={class:"server-auth-hint"},NO={class:"server-auth-body"},HO={class:"server-auth-foot"},UO=Ie({__name:"ServerAuthDialog",setup(e){const{t}=Fe(),n=T(""),s=T(null),o=T(!1);lt(()=>{Ne(()=>s.value?.focus())});function i(){const p=n.value;!p||o.value||(o.value=!0,ac(p),window.location.reload())}function c(p){p.key==="Enter"&&(p.preventDefault(),i())}return(p,v)=>(a(),u("div",DO,[l("div",zO,[l("div",FO,[l("h1",qO,d(r(t)("serverAuth.title")),1),l("p",WO,d(r(t)("serverAuth.hint",{password:"KIMI_CODE_PASSWORD"})),1)]),l("div",NO,[I(zn,{ref_key:"inputRef",ref:s,modelValue:n.value,"onUpdate:modelValue":v[0]||(v[0]=g=>n.value=g),type:"password",autocomplete:"current-password",placeholder:r(t)("serverAuth.placeholder"),disabled:o.value,onKeydown:c},null,8,["modelValue","placeholder","disabled"])]),l("div",HO,[I(We,{variant:"primary",disabled:!n.value||o.value,loading:o.value,onClick:i},{default:j(()=>[ve(d(o.value?r(t)("serverAuth.connecting"):r(t)("serverAuth.connect")),1)]),_:1},8,["disabled","loading"])])])]))}}),VO=Te(UO,[["__scopeId","data-v-469e14bc"]]),jO=["aria-label"],KO=Ie({__name:"InternalBuildBanner",setup(e){const{t}=Fe(),n=C4;return(s,o)=>r(n)?(a(),u("span",{key:0,class:"internal-build-tag",role:"note","aria-label":r(t)("app.internalBuildBanner")},[I(ae,{name:"alert-triangle",size:"sm","aria-hidden":"true"}),l("span",null,d(r(t)("app.internalBuildBanner")),1)],8,jO)):B("",!0)}}),GO=Te(KO,[["__scopeId","data-v-086c00dc"]]),QO={class:"app-shell"},YO={key:1,class:"auth-page"},ZO={class:"auth-page-inner"},XO={class:"auth-page-copy"},JO=["aria-label","aria-hidden"],eD=Ie({__name:"App",setup(e){w0();const t=T(!1);let n=null;const s=Ai(),o=$(()=>!s.dangerousBypassAuth.value&&t.value);lo("resolveImage",s.resolveImageUrl),lo("resolveSwarmMembers",we=>s.swarmMembersByToolCallId.value.get(we)??[]);const{t:i}=Fe(),{confirm:c}=Ro(),p=qn(),v=RO(),g=OO(),C=T(!1),x=T(!1),h=$(()=>{const we=s.activeSessionId.value;return s.sessions.value.find(F=>F.id===we)?.title??""}),m=$(()=>s.visibleWorkspace.value?.sessionCount??0),w=$(()=>s.activity.value!=="idle"),k=T(null),{showAuthGate:b,blinkAuthLogo:_}=wO({client:s,authLogoRef:k});SO({running:w,showAuthGate:b});function O(we){const F=s.models.value.find(Ts=>Ts.id===s.status.value.modelId),te=_i(F),nt=te.indexOf(Ao(F,we)),Qs=te[(nt+1)%te.length]??te[0]??"off";return Za(F,Qs)}const y=$(()=>{const we=s.models.value.find(F=>F.id===s.status.value.modelId);return Ao(we,s.thinking.value)}),L=T(!s.onboarded.value);function N(){s.setOnboarded(!0),L.value=!1}function H(){L.value=!0}let U=0;function Q(){const we=window.visualViewport,F=document.documentElement.style;F.setProperty("--app-height",`${we?.height??window.innerHeight}px`),F.setProperty("--app-top",`${we?.offsetTop??0}px`)}function P(){U||(U=requestAnimationFrame(()=>{U=0,Q()}))}lt(()=>{n=_0(()=>{t.value=!0,s.clearDangerousBypassAuth()}),s.load(),xe(),Q(),window.visualViewport?.addEventListener("resize",P),window.visualViewport?.addEventListener("scroll",P),window.addEventListener("resize",P),document.addEventListener("keydown",M,!0)}),ut(()=>{document.removeEventListener("keydown",M,!0),window.visualViewport?.removeEventListener("resize",P),window.visualViewport?.removeEventListener("scroll",P),window.removeEventListener("resize",P),U&&(cancelAnimationFrame(U),U=0),document.documentElement.style.removeProperty("--app-height"),document.documentElement.style.removeProperty("--app-top"),n!==null&&(n(),n=null)});function M(we){we.key==="Escape"&&(Qe.value||Kt()&&(we.stopPropagation(),we.preventDefault()))}const A=T(null),R=T(!1);Ee(s.activeSessionId,()=>{R.value=!0,Ne(()=>{R.value=!1})});const{previewTarget:ne,previewFile:se,previewLoading:ke,previewError:pe,previewDownloadUrl:V,previewExternalActions:ee,openFilePreview:le,openMediaPreview:me,closeFilePreview:_e,openPreviewInEditor:ce,revealPreviewFile:K}=BO({client:s,detailTarget:A}),Y=$(()=>v.value||g.value),Se=$(()=>A.value!==null&&!Y.value),{SIDEBAR_WIDTH_KEY:oe,SIDEBAR_DEFAULT:X,SIDEBAR_MIN:ie,sidebarMax:Ce,sessionColWidth:D,effectiveSidebarCollapsed:J,sidebarDragging:q,sideWidth:fe,loadSidebarCollapsed:xe,toggleSidebarCollapse:Ue}=AO({previewOpen:Se,isNarrow:g}),{PREVIEW_WIDTH_KEY:Ke,PREVIEW_MIN:cn,previewDefaultWidth:un,previewMax:Ye,previewWidth:Dt,previewPanelWidth:yn,thinkingPanelText:dn,thinkingVisible:kn,openThinkingPanel:Tn,closeThinkingPanel:Rt,compactionPanelText:Ht,compactionPanelVisible:Ut,openCompactionPanel:tt,closeCompactionPanel:dt,agentPanelMember:Ot,openAgentPanel:wt,closeAgentPanel:Vt,toolDiffTarget:St,openToolDiff:zt,closeToolDiff:gt,detailDiffMode:en,detailDiffPath:$t,openDiffDetail:bn,closeDiffDetail:Ft,selectDiffFile:wn,btwVisible:Bt,openSideChatTab:Wn,closeSideChat:pn,sidePanelVisible:jt,panelDragging:Nn,closeOpenSidePanel:Kt}=$O({client:s,sideWidth:fe,detailTarget:A,closeFilePreview:_e}),qt=T(null),Mt=T(!1),It=T(!1),Wt=T(!1),Ze=T(!1),yt=T(!1),he=T(!1),ge=T(null),qe=T(null),Qe=$(()=>to.value>0||Mt.value||It.value||Wt.value||Ze.value||yt.value||he.value||L.value||C.value||x.value),ot=T(!1),vt=T(!1),pt=T(!1),_t=T(!1),Nt=T(!1);async function Pt(){ot.value=!0,vt.value=!1,Mt.value=!0;try{await s.refreshAllProviders()}catch{vt.value=!0}finally{ot.value=!1}}async function on(){pt.value=!0,_t.value=!1,It.value=!0;try{await s.loadProviders()}catch{_t.value=!0}finally{pt.value=!1}}function Sn(){Wt.value=!0}async function fs(we){Mt.value=!1,await Qn(we)}async function Qn(we){await s.setModel(we)&&we!==s.defaultModel.value&&s.updateConfig({defaultModel:we})}async function Yn(we){await s.addProvider(we)}async function ms(we){await s.refreshProvider(we)}async function vs(we){await s.importCatalogProvider(we)}async function Is(we){await s.importRegistry(we)}async function an(we){await c({title:i("sidebar.archive"),message:i("sidebar.archiveConfirm"),variant:"danger",action:()=>s.archiveSession(we)})}async function ft(we){const F=s.workspacesView.value.find(te=>te.id===we)?.name??we;await c({title:i("sidebar.removeWorkspace"),message:i("workspace.removeWorkspaceConfirm",{name:F}),variant:"danger",action:()=>s.deleteWorkspace(we)})}async function An(we){await c({title:i("providers.delete"),message:i("providers.confirmDelete"),variant:"danger",action:()=>s.deleteProvider(we)})}async function Cn(we){Nt.value=!0;try{await s.updateConfig(we)&&await s.checkAuth()}finally{Nt.value=!1}}async function Hn(){return s.startOAuthLogin()}async function Ln(){return s.pollOAuthLogin()}async function ln(){return s.cancelOAuthLogin()}async function Bn(){Wt.value=!1,await s.checkAuth(),await s.load()}async function Pn(we){await s.undo(1),await Ne(),qt.value?.loadComposerForEdit(we.text,we.attachments)}function Zn(we){if(we==="/compact"||we.startsWith("/compact ")){s.compact(we.slice(8).trim()||void 0);return}if(we==="/swarm"||we.startsWith("/swarm ")){const F=we.slice(6).trim();F==="on"?s.setSwarmMode(!0):F==="off"?s.setSwarmMode(!1):F?(s.setSwarmMode(!0),s.sendPrompt(F)):s.toggleSwarmMode();return}if(we==="/goal"||we.startsWith("/goal ")){const F=we.slice(5).trim();F==="pause"||F==="resume"||F==="cancel"?s.controlGoal(F):F?s.createGoal(F):s.toggleGoalMode();return}if(we==="/btw"||we.startsWith("/btw ")){const F=we.slice(4).trim();!F&&s.sideChatVisible.value?pn():Wn(F||void 0);return}switch(we){case"/new":case"/clear":ue();break;case"/fork":s.forkSession();break;case"/export":s.exportSession();break;case"/undo":s.undo();break;case"/plan":s.togglePlanMode();break;case"/auto":s.setPermission("auto");break;case"/yolo":s.setPermission("yolo");break;case"/thinking":s.setThinking(O(s.thinking.value));break;case"/status":yt.value=!0;break;case"/login":Sn();break;default:{const F=we.indexOf(" "),te=v_((F===-1?we:we.slice(0,F)).slice(1)),nt=F===-1?void 0:we.slice(F+1).trim()||void 0;if(!te)break;!s.activeSessionId.value&&s.activeWorkspaceId.value?s.startSessionAndActivateSkill(s.activeWorkspaceId.value,te,nt):s.activateSkill(te,nt);break}}}function Xn(we){s.unqueue(we)}function En(we){s.unqueue(we)}function Rn(we){s.reorderQueue(we.from,we.to)}async function Jn(we){const F=s.activeWorkspaceId.value;if(!s.activeSessionId.value&&F){await s.startSessionAndSendPrompt(F,we.text,we.attachments);return}if(!s.activeSessionId.value&&!F){ge.value=we,Ze.value=!0;return}s.sendPrompt(we.text,we.attachments)}async function es(we){if(qe.value=null,!await s.addWorkspaceByPath(we)){qe.value=i("workspace.addFailed");return}Ze.value=!1;const te=ge.value;ge.value=null;const nt=s.activeWorkspaceId.value;te&&nt&&await s.startSessionAndSendPrompt(nt,te.text,te.attachments)}function ts(){ge.value=null,qe.value=null,Ze.value=!1}function ns(){Ne(()=>{qt.value?.focusComposer()})}function ue(){const we=s.activeWorkspaceId.value;we?s.openWorkspaceDraft(we):s.clearActiveSession(),ns()}function $e(we){s.openWorkspaceDraft(we),ns()}function Me(we){we&&window.open(we,"_blank","noopener")}return(we,F)=>(a(),u("div",QO,[o.value?(a(),Z(VO,{key:0})):B("",!0),r(b)?(a(),u("section",YO,[l("div",ZO,[(a(),u("svg",{ref_key:"authLogoRef",ref:k,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:F[0]||(F[0]=Pe(()=>{},["prevent"])),onClick:F[1]||(F[1]=(...te)=>r(_)&&r(_)(...te))},[...F[102]||(F[102]=[La(' ',2)])],544)),l("div",XO,[l("h1",null,d(r(i)("app.authPageTitle")),1),l("p",null,d(r(i)("app.authPageMessage")),1)]),I(We,{class:"auth-page-btn",variant:"primary",onClick:Sn},{default:j(()=>[I(ae,{name:"log-in",size:"md"}),l("span",null,d(r(i)("app.authPageLogin")),1)]),_:1})])])):(a(),u("div",{key:2,class:de(["app",{mobile:r(v),"sidebar-collapsed":r(J)&&!r(v),"macos-desktop":r(uo)}]),style:ct({"--preview-w":r(yn)+"px"})},[r(v)?(a(),Z(UP,{key:1,workspace:r(s).visibleWorkspace.value,"session-title":h.value,running:w.value,branch:r(s).status.value.branch,"session-count":m.value,onOpenSwitcher:F[19]||(F[19]=te=>C.value=!0),onOpenSettings:F[20]||(F[20]=te=>x.value=!0)},null,8,["workspace","session-title","running","branch","session-count"])):(a(),u(ye,{key:0},[I(X4,{collapsed:r(J),dragging:r(q),"col-width":r(fe),"active-workspace":r(s).visibleWorkspace.value,"active-workspace-id":r(s).activeWorkspaceId.value,sessions:r(s).sessionsForView.value,groups:r(s).workspaceGroups.value,"active-id":r(s).activeSessionId.value,"attention-by-session":r(s).attentionBySession.value,"pending-by-session":r(s).pendingBySession.value,"unread-by-session":r(s).unreadBySession.value,"workspace-sort-mode":r(s).workspaceSortMode.value,backend:r(s).backend.value,onSelect:F[2]||(F[2]=te=>r(s).selectSession(te)),onCreate:ue,onCreateInWorkspace:F[3]||(F[3]=te=>$e(te)),onSelectWorkspace:F[4]||(F[4]=te=>r(s).openWorkspace(te)),onAddWorkspace:F[5]||(F[5]=te=>Ze.value=!0),onRename:F[6]||(F[6]=(te,nt)=>r(s).renameSession(te,nt)),onArchive:F[7]||(F[7]=te=>an(te)),onFork:F[8]||(F[8]=te=>r(s).forkSession(te)),onExport:F[9]||(F[9]=te=>r(s).exportSession(te)),onRenameWorkspace:F[10]||(F[10]=(te,nt)=>r(s).renameWorkspace(te,nt)),onDeleteWorkspace:F[11]||(F[11]=te=>ft(te)),onReorderWorkspaces:F[12]||(F[12]=te=>r(s).reorderWorkspaces(te)),onSetWorkspaceSortMode:F[13]||(F[13]=te=>r(s).setWorkspaceSortMode(te)),onLoadMoreSessions:F[14]||(F[14]=te=>void r(s).loadMoreSessions(te)),onLoadAllSessions:F[15]||(F[15]=te=>void r(s).loadAllSessions()),onOpenSettings:F[16]||(F[16]=te=>he.value=!0),onCollapse:r(Ue)},null,8,["collapsed","dragging","col-width","active-workspace","active-workspace-id","sessions","groups","active-id","attention-by-session","pending-by-session","unread-by-session","workspace-sort-mode","backend","onCollapse"]),rt(I(cr,{class:"side-handle","storage-key":r(oe),"default-width":r(X),min:r(ie),max:r(Ce),"onUpdate:width":F[17]||(F[17]=te=>D.value=te),"onUpdate:dragging":F[18]||(F[18]=te=>q.value=te)},null,8,["storage-key","default-width","min","max"]),[[jn,!r(J)]])],64)),I(t$,{ref_key:"conversationPaneRef",ref:qt,mobile:r(v),turns:r(s).turns.value,"session-id":r(s).activeSessionId.value,approvals:r(s).pendingApprovals.value,changes:r(s).changes.value,"git-info":r(s).gitInfo.value,tasks:r(s).tasks.value,todos:r(s).todos.value,goal:r(s).goal.value,"activation-badges":r(s).activationBadges.value,status:r(s).status.value,thinking:r(s).thinking.value,"plan-mode":r(s).planMode.value,"swarm-mode":r(s).swarmMode.value,"supermoon-mode":r(s).supermoonMode.value,"goal-mode":r(s).goalMode.value,models:r(s).models.value,"starred-ids":r(s).starredModelIds.value,skills:r(s).skills.value,questions:r(s).questions.value,"pending-question-actions":r(s).pendingQuestionActions,"pending-approval-actions":r(s).pendingApprovalActions,running:w.value,"turn-active":r(s).turnActive.value,queued:r(s).queued.value,"search-files":r(s).searchFiles,"upload-image":r(s).uploadImage,working:r(s).working.value,starting:r(s).isStartingFirstPrompt.value,"fast-moon":r(s).fastMoon.value,"file-reload-key":r(s).activeSessionId.value,"session-loading":r(s).sessionLoading.value,compaction:r(s).compaction.value,"has-more-messages":r(s).hasMoreMessages.value,"loading-more":r(s).loadingMoreMessages.value,"loading-more-error":r(s).loadMoreMessagesError.value,"load-older-messages":r(s).loadOlderMessages,"workspace-name":r(s).visibleWorkspace.value?.name,"workspace-root":r(s).visibleWorkspace.value?.root??r(s).status.value.cwd,"git-diff-stats":r(s).gitDiffStats.value,workspaces:r(s).workspacesView.value,"active-workspace-id":r(s).activeWorkspaceId.value,"session-title":h.value,terminal:r(s).terminal,pr:r(s).activePullRequest.value,"conversation-toc":r(s).conversationToc.value,onOpenChanges:F[21]||(F[21]=te=>r(bn)()),onSelectWorkspace:F[22]||(F[22]=te=>$e(te)),onAddWorkspace:F[23]||(F[23]=te=>Ze.value=!0),onOpenPr:Me,onSubmit:F[24]||(F[24]=te=>Jn(te)),onSteer:F[25]||(F[25]=te=>r(s).steerPrompt(te.text,te.attachments)),onApproval:F[26]||(F[26]=(te,nt)=>r(s).respondApproval(te,nt)),onCancelTask:F[27]||(F[27]=te=>r(s).cancelTask(te)),onAnswer:F[28]||(F[28]=(te,nt)=>r(s).respondQuestion(te,nt)),onDismiss:F[29]||(F[29]=te=>r(s).dismissQuestion(te)),onCommand:Zn,onInterrupt:F[30]||(F[30]=te=>r(s).abortCurrentPrompt()),onUnqueue:Xn,onEditQueued:En,onReorderQueue:Rn,onSetPermission:F[31]||(F[31]=te=>r(s).setPermission(te)),onSetThinking:F[32]||(F[32]=te=>r(s).setThinking(te)),onTogglePlan:F[33]||(F[33]=te=>r(s).togglePlanMode()),onToggleSwarm:F[34]||(F[34]=te=>r(s).toggleSwarmMode()),onToggleSupermoon:F[35]||(F[35]=te=>r(s).toggleSupermoonMode()),onToggleGoal:F[36]||(F[36]=te=>r(s).toggleGoalMode()),onCreateGoal:F[37]||(F[37]=te=>r(s).createGoal(te)),onControlGoal:F[38]||(F[38]=te=>r(s).controlGoal(te)),onRefreshGitStatus:F[39]||(F[39]=te=>r(s).activeSessionId.value&&r(s).loadGitStatus(r(s).activeSessionId.value)),onRenameSession:F[40]||(F[40]=(te,nt)=>r(s).renameSession(te,nt)),onForkSession:F[41]||(F[41]=te=>r(s).forkSession(te)),onArchiveSession:F[42]||(F[42]=te=>an(te)),onExportSession:F[43]||(F[43]=te=>r(s).exportSession(te)),onCompact:F[44]||(F[44]=te=>r(s).compact()),onPickModel:F[45]||(F[45]=te=>Pt()),onSelectModel:F[46]||(F[46]=te=>Qn(te)),onOpenFile:F[47]||(F[47]=te=>r(le)(te)),onOpenMedia:F[48]||(F[48]=te=>r(me)(te)),onOpenThinking:F[49]||(F[49]=te=>r(Tn)(te)),onOpenCompaction:F[50]||(F[50]=te=>r(tt)(te)),onOpenAgent:F[51]||(F[51]=te=>r(wt)(te)),onOpenToolDiff:F[52]||(F[52]=te=>r(zt)(te)),onEditMessage:Pn},null,8,["mobile","turns","session-id","approvals","changes","git-info","tasks","todos","goal","activation-badges","status","thinking","plan-mode","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","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"]),!r(v)&&(r(uo)||r(J))?(a(),Z(et,{key:2,class:"sidebar-toggle-btn",size:"sm",label:r(J)?r(i)("sidebar.expandSidebar"):r(i)("sidebar.collapseSidebar"),onClick:r(Ue)},{default:j(()=>[I(ae,{name:r(J)?"panel-expand":"panel-collapse"},null,8,["name"])]),_:1},8,["label","onClick"])):B("",!0),r(jt)&&!Y.value?(a(),Z(cr,{key:3,class:"preview-handle","storage-key":r(Ke),"default-width":r(un),min:r(cn),max:r(Ye),reverse:"","aria-label":r(i)("layout.resizePreviewAria"),"onUpdate:width":F[53]||(F[53]=te=>Dt.value=te),"onUpdate:dragging":F[54]||(F[54]=te=>Nn.value=te)},null,8,["storage-key","default-width","min","max","aria-label"])):B("",!0),!Y.value||r(jt)?(a(),u("aside",{key:4,class:de(["global-preview",{open:r(jt),overlay:Y.value,"no-anim":r(Nn)||R.value}]),role:"complementary","aria-label":r(i)("layout.detailPanelAria"),"aria-hidden":!r(jt)},[A.value==="thinking"&&r(kn)?(a(),Z(Tr,{key:0,text:r(dn)??"",onClose:r(Rt)},null,8,["text","onClose"])):A.value==="compaction"&&r(Ut)?(a(),Z(Tr,{key:1,text:r(Ht)??"",subtitle:r(i)("conversation.summaryTitle"),onClose:r(dt)},null,8,["text","subtitle","onClose"])):A.value==="agent"&&r(Ot)?(a(),Z(LM,{key:2,member:r(Ot),onClose:r(Vt)},null,8,["member","onClose"])):A.value==="btw"&&r(Bt)?(a(),Z(sI,{key:3,turns:r(s).sideChatTurns.value,running:r(s).sideChatRunning.value,sending:r(s).sideChatSending.value,onSend:F[55]||(F[55]=te=>r(s).sendSideChatPrompt(te)),onClose:r(pn)},null,8,["turns","running","sending","onClose"])):A.value==="diff"?(a(),Z(BI,{key:4,mode:r(en),changes:r(s).changes.value,"git-info":r(s).gitInfo.value,"file-diff":r(s).fileDiff.value,"selected-diff-path":r(s).selectedDiffPath.value,"file-diff-loading":r(s).fileDiffLoading.value,closable:"",onOpen:r(wn),onBack:F[56]||(F[56]=te=>{en.value="list",$t.value=null,r(s).clearFileDiff()}),onClose:r(Ft)},null,8,["mode","changes","git-info","file-diff","selected-diff-path","file-diff-loading","onOpen","onClose"])):A.value==="toolDiff"&&r(St)?(a(),Z(QM,{key:5,target:r(St),onClose:r(gt)},null,8,["target","onClose"])):A.value==="file"?(a(),Z(rM,{key:6,file:r(se),loading:r(ke),error:r(pe),line:r(ne)?.line,"download-url":r(V),closable:"","external-actions":r(ee),"open-file":r(le),onClose:r(_e),onOpenExternal:r(ce),onReveal:r(K)},null,8,["file","loading","error","line","download-url","external-actions","open-file","onClose","onOpenExternal","onReveal"])):B("",!0)],10,JO)):B("",!0),I(GO,{class:"internal-build-fab"}),Mt.value?(a(),Z(QI,{key:5,models:r(s).models.value,current:r(s).status.value.modelId,"starred-ids":r(s).starredModelIds.value,loading:ot.value,unavailable:vt.value,onSelect:F[57]||(F[57]=te=>fs(te)),onToggleStar:F[58]||(F[58]=te=>r(s).toggleStarModel(te)),onClose:F[59]||(F[59]=te=>Mt.value=!1)},null,8,["models","current","starred-ids","loading","unavailable"])):B("",!0),he.value?(a(),Z(CB,{key:6,"color-scheme":r(s).colorScheme.value,accent:r(s).accent.value,"ui-font-size":r(s).uiFontSize.value,"auth-ready":r(s).authReady.value,"account-model":r(s).defaultModel.value,notify:r(s).notifyOnComplete.value,"notify-question":r(s).notifyOnQuestion.value,"notify-approval":r(s).notifyOnApproval.value,"notify-permission":r(s).notifyPermission.value,sound:r(s).soundOnComplete.value,"conversation-toc":r(s).conversationToc.value,config:r(s).config.value,models:r(s).models.value,"config-saving":Nt.value,"server-version":r(s).serverVersion.value,backend:r(s).backend.value,onSetColorScheme:F[60]||(F[60]=te=>r(s).setColorScheme(te)),onSetAccent:F[61]||(F[61]=te=>r(s).setAccent(te)),onSetUiFontSize:F[62]||(F[62]=te=>r(s).setUiFontSize(te)),onSetNotify:F[63]||(F[63]=te=>r(s).setNotifyOnComplete(te)),onSetNotifyQuestion:F[64]||(F[64]=te=>r(s).setNotifyOnQuestion(te)),onSetNotifyApproval:F[65]||(F[65]=te=>r(s).setNotifyOnApproval(te)),onSetSound:F[66]||(F[66]=te=>r(s).setSoundOnComplete(te)),onSetConversationToc:F[67]||(F[67]=te=>r(s).setConversationToc(te)),onUpdateConfig:F[68]||(F[68]=te=>Cn(te)),onLogin:F[69]||(F[69]=()=>{he.value=!1,Sn()}),onLogout:r(s).logout,onOpenOnboarding:F[70]||(F[70]=()=>{he.value=!1,H()}),onOpenProviders:F[71]||(F[71]=()=>{he.value=!1,on()}),onClose:F[72]||(F[72]=te=>he.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"])):B("",!0),It.value?(a(),Z(NT,{key:7,providers:r(s).providers.value,loading:pt.value,unavailable:_t.value,onAdd:F[73]||(F[73]=te=>Yn(te)),onRefresh:F[74]||(F[74]=te=>ms(te)),onDelete:F[75]||(F[75]=te=>An(te)),onImportCatalog:F[76]||(F[76]=te=>vs(te)),onImportRegistry:F[77]||(F[77]=te=>Is(te)),onOpenLogin:F[78]||(F[78]=()=>{It.value=!1,Sn()}),onClose:F[79]||(F[79]=te=>It.value=!1)},null,8,["providers","loading","unavailable"])):B("",!0),yt.value?(a(),Z(CP,{key:8,status:r(s).status.value,thinking:y.value,"plan-mode":r(s).planMode.value,"swarm-mode":r(s).swarmMode.value,"supermoon-mode":r(s).supermoonMode.value,"cost-usd":r(s).sessionCost.value,onClose:F[80]||(F[80]=te=>yt.value=!1)},null,8,["status","thinking","plan-mode","swarm-mode","supermoon-mode","cost-usd"])):B("",!0),Ze.value?(a(),Z(aP,{key:9,"browse-fs":r(s).browseFs,"get-fs-home":r(s).getFsHome,"default-path":r(s).visibleWorkspace.value?.root??r(s).status.value.cwd,error:qe.value,onAdd:F[81]||(F[81]=te=>es(te)),onClose:ts},null,8,["browse-fs","get-fs-home","default-path","error"])):B("",!0),I(Io,{name:"gload-fade"},{default:j(()=>[r(s).initialized.value?B("",!0):(a(),Z(UR,{key:0,issue:r(s).connectIssue.value},null,8,["issue"]))]),_:1}),r(s).initialized.value&&L.value&&!r(b)?(a(),Z(DR,{key:10,onComplete:N,onSkip:N})):B("",!0),I(RP,{warnings:r(s).warnings.value,onDismiss:r(s).dismissWarning},null,8,["warnings","onDismiss"]),r(p)?(a(),Z(bO,{key:11})):B("",!0),I(uP),r(v)?(a(),Z(fE,{key:12,modelValue:C.value,"onUpdate:modelValue":F[82]||(F[82]=te=>C.value=te),groups:r(s).workspaceGroups.value,"active-workspace-id":r(s).activeWorkspaceId.value,"active-id":r(s).activeSessionId.value,"attention-by-session":r(s).attentionBySession.value,"attention-by-workspace":r(s).attentionByWorkspace.value,onSelect:F[83]||(F[83]=te=>r(s).selectSession(te)),onCreate:ue,onCreateInWorkspace:F[84]||(F[84]=te=>$e(te)),onAddWorkspace:F[85]||(F[85]=te=>Ze.value=!0),onRename:F[86]||(F[86]=(te,nt)=>r(s).renameSession(te,nt)),onArchive:F[87]||(F[87]=te=>an(te)),onDeleteWorkspace:F[88]||(F[88]=te=>ft(te)),onLoadMore:F[89]||(F[89]=te=>void r(s).loadMoreSessions(te))},null,8,["modelValue","groups","active-workspace-id","active-id","attention-by-session","attention-by-workspace"])):B("",!0),r(v)?(a(),Z(xR,{key:13,modelValue:x.value,"onUpdate:modelValue":F[90]||(F[90]=te=>x.value=te),status:r(s).status.value,thinking:r(s).thinking.value,models:r(s).models.value,"plan-mode":r(s).planMode.value,"swarm-mode":r(s).swarmMode.value,"supermoon-mode":r(s).supermoonMode.value,"color-scheme":r(s).colorScheme.value,"ui-font-size":r(s).uiFontSize.value,"auth-ready":r(s).authReady.value,"conversation-toc":r(s).conversationToc.value,"server-version":r(s).serverVersion.value,onPickModel:F[91]||(F[91]=te=>Pt()),onSetThinking:F[92]||(F[92]=te=>r(s).setThinking(te)),onTogglePlan:F[93]||(F[93]=te=>r(s).togglePlanMode()),onToggleSwarm:F[94]||(F[94]=te=>r(s).toggleSwarmMode()),onToggleSupermoon:F[95]||(F[95]=te=>r(s).toggleSupermoonMode()),onSetPermission:F[96]||(F[96]=te=>r(s).setPermission(te)),onSetColorScheme:F[97]||(F[97]=te=>r(s).setColorScheme(te)),onSetUiFontSize:F[98]||(F[98]=te=>r(s).setUiFontSize(te)),onSetConversationToc:F[99]||(F[99]=te=>r(s).setConversationToc(te)),onLogin:F[100]||(F[100]=()=>{x.value=!1,Sn()}),onLogout:r(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"])):B("",!0)],6)),Wt.value?(a(),Z(kA,{key:3,"on-start-o-auth-login":Hn,"on-poll-o-auth-login":Ln,"on-cancel-o-auth-login":ln,onSuccess:Bn,onClose:F[101]||(F[101]=te=>Wt.value=!1)})):B("",!0)]))}}),tD=Te(eD,[["__scopeId","data-v-574d0b11"]]);Cg();Fr(tD).use(at).mount("#app");export{iD as I,ae as _,Te 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
new file mode 100644
index 00000000000..c2d529e4ca8
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/index-pE-bC6n5.js
@@ -0,0 +1,100 @@
+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 ccdf6409304..095e64c0adb 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
-
+
-
+
diff --git a/apps/kimi-code/src/constant/app.ts b/apps/kimi-code/src/constant/app.ts
index 7046d1df1ca..8691cc8e586 100644
--- a/apps/kimi-code/src/constant/app.ts
+++ b/apps/kimi-code/src/constant/app.ts
@@ -90,11 +90,15 @@ export const KIMI_CODE_CDN_LATEST_URL = `${KIMI_CODE_CDN_BASE}/latest`;
// bodies, and the CDN install scripts read it for fresh installs.
export const KIMI_CODE_CDN_LATEST_JSON_URL = `${KIMI_CODE_CDN_BASE}/latest.json`;
export const KIMI_CODE_TIPS_BANNER_URL = 'https://cdn.kimi.com/kimi-code-tips/tips.json';
-// Plugin marketplace stays on the upstream CDN: the catalog content is
-// upstream-hosted, and the fork's update channel does not mirror it.
-export const KIMI_CODE_PLUGIN_MARKETPLACE_URL =
- 'https://code.kimi.com/kimi-code/plugins/marketplace.json';
-export const KIMI_CODE_PLUGIN_MARKETPLACE_URL_ENV = 'KIMI_CODE_PLUGIN_MARKETPLACE_URL';
+// The marketplace catalog location constants live in the shared
+// agent-core-v2 plugin domain (kap-server consumes them from there).
+// Deep-path import: this module is evaluated on every CLI invocation, so it
+// must not pull in the engine root. Fork: the shared default is the upstream
+// CDN URL — the fork's update channel does not mirror the catalog.
+export {
+ KIMI_CODE_PLUGIN_MARKETPLACE_URL,
+ KIMI_CODE_PLUGIN_MARKETPLACE_URL_ENV,
+} from '@moonshot-ai/agent-core-v2/app/plugin/marketplace';
// Official plugins whose usage bills against the user's plan quota. Installing
// one of these shows a quota note after the install result.
export const QUOTA_CONSUMING_PLUGIN_IDS: readonly string[] = ['kimi-datasource'];
diff --git a/docs/en/guides/sessions.md b/docs/en/guides/sessions.md
index b63ee8d24a8..39aa2cb9e96 100644
--- a/docs/en/guides/sessions.md
+++ b/docs/en/guides/sessions.md
@@ -110,8 +110,6 @@ You can also export from inside the TUI without leaving the interactive session:
In the web UI, `/export` downloads the current session as a diagnostic ZIP. It includes the persisted session data, diagnostic logs, and a bounded metadata-only `logs/kimi-web.jsonl` record of key browser events. Prompt text, WebSocket payloads, and console arguments are not copied into this browser log. This web command differs from the TUI `/export` alias above.
-The browser buffers the ZIP before saving it, so web exports are limited to 64 MiB. For a larger session, use `kimi export ` or the TUI `/export-debug-zip` command.
-
::: tip
Exported files may contain code, command output, and file paths that are sensitive. Review the content before sharing.
:::
diff --git a/docs/zh/guides/sessions.md b/docs/zh/guides/sessions.md
index fb979b077bd..6501d29a16a 100644
--- a/docs/zh/guides/sessions.md
+++ b/docs/zh/guides/sessions.md
@@ -110,8 +110,6 @@ kimi export -o ~/Desktop/my-session.zip
在 web UI 中,`/export` 会把当前会话下载为诊断 ZIP。压缩包包含持久化的会话数据、诊断日志,以及记录浏览器关键事件且大小有上限、只含元数据的 `logs/kimi-web.jsonl`;提示词正文、WebSocket 内容和 console 参数不会写入这份浏览器日志。这里的 web 命令与上面的 TUI `/export` 别名行为不同。
-浏览器需要先把 ZIP 缓存在内存中再保存,因此 web 导出上限为 64 MiB。更大的会话请使用 `kimi export ` 或 TUI 的 `/export-debug-zip`。
-
::: tip 提示
导出文件可能包含代码、命令输出和路径等敏感信息,分享前请先确认内容。
:::
diff --git a/packages/agent-core-v2/docs/state-manifest.d.ts b/packages/agent-core-v2/docs/state-manifest.d.ts
index 2fddc05b547..343c18a17f2 100644
--- a/packages/agent-core-v2/docs/state-manifest.d.ts
+++ b/packages/agent-core-v2/docs/state-manifest.d.ts
@@ -1138,6 +1138,7 @@ export interface AgentStateSnapshot {
readonly kind: 'agent';
readonly agentId?: string;
readonly subagentType?: string;
+ readonly parentToolCallId?: string;
readonly model?: string;
readonly thinkingEffort?: string;
readonly taskId: string;
diff --git a/packages/agent-core-v2/package.json b/packages/agent-core-v2/package.json
index 716f008d39d..444ca329a9c 100644
--- a/packages/agent-core-v2/package.json
+++ b/packages/agent-core-v2/package.json
@@ -77,6 +77,7 @@
"pathe": "^2.0.3",
"picomatch": "^4.0.4",
"retry": "0.13.1",
+ "semver": "^7.7.4",
"smol-toml": "^1.6.1",
"socks": "^2.8.9",
"tar": "^7.5.22",
@@ -93,6 +94,7 @@
"@types/js-yaml": "^4.0.9",
"@types/picomatch": "^4.0.3",
"@types/retry": "0.12.0",
+ "@types/semver": "^7.7.0",
"@types/sinon": "^21.0.1",
"@types/tar": "^7.0.87",
"@types/yauzl": "^2.10.3",
diff --git a/packages/agent-core-v2/src/agent/tools/agent/agentTool.ts b/packages/agent-core-v2/src/agent/tools/agent/agentTool.ts
index 7401a36283d..fd8c4d625de 100644
--- a/packages/agent-core-v2/src/agent/tools/agent/agentTool.ts
+++ b/packages/agent-core-v2/src/agent/tools/agent/agentTool.ts
@@ -374,6 +374,7 @@ export class SubagentTool implements ISubagentTool {
return {
agentId,
profileName,
+ parentToolCallId: toolCallId,
model: displayModel,
thinkingEffort: this.lifecycle
.get(agentId)
diff --git a/packages/agent-core-v2/src/agent/tools/agent/subagent-task.ts b/packages/agent-core-v2/src/agent/tools/agent/subagent-task.ts
index 38cb41e0fa0..79a10ce1bb8 100644
--- a/packages/agent-core-v2/src/agent/tools/agent/subagent-task.ts
+++ b/packages/agent-core-v2/src/agent/tools/agent/subagent-task.ts
@@ -27,6 +27,7 @@ type SubagentCompletion = {
export type SubagentHandle = {
readonly agentId: string;
readonly profileName: string;
+ readonly parentToolCallId?: string;
readonly model?: string;
readonly thinkingEffort?: string;
readonly completion: Promise;
@@ -36,6 +37,7 @@ export interface SubagentTaskInfo extends AgentTaskInfoBase {
readonly kind: 'agent';
readonly agentId?: string;
readonly subagentType?: string;
+ readonly parentToolCallId?: string;
readonly model?: string;
readonly thinkingEffort?: string;
}
@@ -84,6 +86,7 @@ export class SubagentTask implements AgentTask {
readonly idPrefix: string = 'agent';
readonly agentId: string;
readonly subagentType: string;
+ readonly parentToolCallId?: string;
readonly model?: string;
readonly thinkingEffort?: string;
@@ -94,6 +97,7 @@ export class SubagentTask implements AgentTask {
) {
this.agentId = handle.agentId;
this.subagentType = handle.profileName;
+ this.parentToolCallId = handle.parentToolCallId;
this.model = handle.model;
this.thinkingEffort = handle.thinkingEffort;
}
@@ -129,6 +133,7 @@ export class SubagentTask implements AgentTask {
kind: 'agent',
agentId: this.agentId,
subagentType: this.subagentType,
+ parentToolCallId: this.parentToolCallId,
model: this.model,
thinkingEffort: this.thinkingEffort,
};
diff --git a/packages/agent-core-v2/src/app/capability/capability.ts b/packages/agent-core-v2/src/app/capability/capability.ts
index 15056fe0ae9..68ce444ac1e 100644
--- a/packages/agent-core-v2/src/app/capability/capability.ts
+++ b/packages/agent-core-v2/src/app/capability/capability.ts
@@ -4,16 +4,24 @@
* Manages the built-in product capabilities (`kimi-cu`, `kimi-webbridge`):
* layered readiness detection and idempotent install orchestration. Entries
* are hardcoded in a closed registry — install sources are fixed official
- * CDN URLs, never client-supplied.
+ * CDN URLs, never client-supplied. Install progress transitions are published
+ * through `onDidChangeInstall` (start / step / settle / error).
+ * `describeCapabilities` answers the static registry without running any
+ * detection probes.
*/
import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation';
+import type { Event } from '#/_base/event';
-import type { CapabilityStatus } from './types';
+import type { CapabilityDescriptor, CapabilityInstallChange, CapabilityStatus } from './types';
export interface ICapabilityService {
readonly _serviceBrand: undefined;
+ readonly onDidChangeInstall: Event;
+
+ describeCapabilities(): readonly CapabilityDescriptor[];
+
listCapabilities(): Promise;
getCapability(id: string): Promise;
diff --git a/packages/agent-core-v2/src/app/capability/capabilityService.ts b/packages/agent-core-v2/src/app/capability/capabilityService.ts
index 8c42563ac41..e58343e87e0 100644
--- a/packages/agent-core-v2/src/app/capability/capabilityService.ts
+++ b/packages/agent-core-v2/src/app/capability/capabilityService.ts
@@ -2,17 +2,20 @@
* `capability` domain (L3) — `ICapabilityService` implementation.
*
* Holds the closed registry of built-in capability entries and serializes
- * install runs per entry. Install progress lives in memory only and is
- * polled by clients; a failed attempt leaves its error in the progress state
- * until the next attempt starts and logs the failure through `log`. Listing
- * degrades a single entry's failing detection to a failed step on that entry
- * instead of rejecting the whole list. Bound at App scope.
+ * install runs per entry. Install progress lives in memory only; clients poll
+ * it or subscribe to `onDidChangeInstall` (fired on every transition), and a
+ * failed attempt leaves its error in the progress state until the next
+ * attempt starts and logs the failure through `log`. Listing degrades a
+ * single entry's failing detection to a failed step on that entry instead of
+ * rejecting the whole list. Bound at App scope.
*/
import { homedir } from 'node:os';
import { LifecycleScope } from '#/app/scopes';
import { ScopeActivation, registerScopedService } from '#/_base/di/scope';
+import { Disposable } from '#/_base/di/lifecycle';
+import { Emitter, type Event } from '#/_base/event';
import { ILogService } from '#/_base/log/log';
import { Error2 } from '#/errors';
import { IBootstrapService } from '#/app/bootstrap/bootstrap';
@@ -26,6 +29,8 @@ import { createKimiWebbridgeEntry } from './entries/kimiWebbridge';
import type {
CapabilityEntry,
CapabilityId,
+ CapabilityDescriptor,
+ CapabilityInstallChange,
CapabilityInstallProgress,
CapabilityReadiness,
CapabilityStatus,
@@ -33,13 +38,24 @@ import type {
const IDLE_PROGRESS: CapabilityInstallProgress = { running: false };
-export class CapabilityService implements ICapabilityService {
+export class CapabilityService extends Disposable implements ICapabilityService {
declare readonly _serviceBrand: undefined;
+ private readonly onDidChangeInstallEmitter = this._register(
+ new Emitter(),
+ );
+ readonly onDidChangeInstall: Event =
+ this.onDidChangeInstallEmitter.event;
+
private readonly entries: ReadonlyMap;
private readonly installProgress = new Map();
private readonly runningInstalls = new Set();
+ private setInstallProgress(id: CapabilityId, progress: CapabilityInstallProgress): void {
+ this.installProgress.set(id, progress);
+ this.onDidChangeInstallEmitter.fire({ id, install: progress });
+ }
+
constructor(
@IBootstrapService bootstrap: IBootstrapService,
@IPluginService plugins: IPluginService,
@@ -47,6 +63,7 @@ export class CapabilityService implements ICapabilityService {
@ILogService private readonly log: ILogService,
entriesOverride?: readonly CapabilityEntry[],
) {
+ super();
if (entriesOverride !== undefined) {
this.entries = new Map(entriesOverride.map((entry) => [entry.id, entry]));
} else {
@@ -65,6 +82,16 @@ export class CapabilityService implements ICapabilityService {
}
}
+ describeCapabilities(): readonly CapabilityDescriptor[] {
+ return [...this.entries.values()].map((entry) => ({
+ id: entry.id,
+ pluginId: entry.pluginId,
+ displayName: entry.displayName,
+ description: entry.description,
+ supported: entry.supported,
+ }));
+ }
+
listCapabilities(): Promise {
return Promise.all([...this.entries.values()].map((entry) => this.statusOfSafe(entry)));
}
@@ -90,16 +117,16 @@ export class CapabilityService implements ICapabilityService {
}
this.runningInstalls.add(entry.id);
- this.installProgress.set(entry.id, { running: true });
+ this.setInstallProgress(entry.id, { running: true });
void (async () => {
try {
- await entry.install((step, percent) => {
- this.installProgress.set(
+ const note = await entry.install((step, percent) => {
+ this.setInstallProgress(
entry.id,
percent === undefined ? { running: true, step } : { running: true, step, percent },
);
});
- this.installProgress.set(entry.id, { running: false });
+ this.setInstallProgress(entry.id, { running: false, note });
} catch (error) {
const step = this.installProgress.get(entry.id)?.step;
this.log.warn('capability install failed', {
@@ -107,7 +134,7 @@ export class CapabilityService implements ICapabilityService {
step,
error,
});
- this.installProgress.set(entry.id, {
+ this.setInstallProgress(entry.id, {
running: false,
error: error instanceof Error ? error.message : String(error),
});
diff --git a/packages/agent-core-v2/src/app/capability/entries/kimiCu.ts b/packages/agent-core-v2/src/app/capability/entries/kimiCu.ts
index af1c418ea98..0ff46330da5 100644
--- a/packages/agent-core-v2/src/app/capability/entries/kimiCu.ts
+++ b/packages/agent-core-v2/src/app/capability/entries/kimiCu.ts
@@ -433,7 +433,7 @@ function createMacKimiCuEntry(ctx: CapabilityEntryContext): CapabilityEntry {
}
}
- async function install(report: CapabilityInstallReporter): Promise {
+ async function install(report: CapabilityInstallReporter): Promise {
if (!supported) {
throw new Error(`kimi-cu is only supported on macOS (current: ${ctx.platform})`);
}
@@ -514,6 +514,7 @@ function createMacKimiCuEntry(ctx: CapabilityEntryContext): CapabilityEntry {
{ timeout: PERMISSIONS_TIMEOUT_MS },
).catch(() => undefined);
}
+ return undefined;
}
return {
@@ -630,7 +631,7 @@ function createWindowsKimiCuEntry(ctx: CapabilityEntryContext): CapabilityEntry
};
}
- async function install(report: CapabilityInstallReporter): Promise {
+ async function install(report: CapabilityInstallReporter): Promise {
if (!supported) {
throw new Error(
`kimi-cu is only supported on macOS or Windows x64 (current: ${ctx.platform}/${ctx.arch})`,
@@ -710,6 +711,7 @@ function createWindowsKimiCuEntry(ctx: CapabilityEntryContext): CapabilityEntry
);
}
}
+ return undefined;
}
return {
diff --git a/packages/agent-core-v2/src/app/capability/entries/kimiWebbridge.ts b/packages/agent-core-v2/src/app/capability/entries/kimiWebbridge.ts
index 5405a2deea7..8016e5d3659 100644
--- a/packages/agent-core-v2/src/app/capability/entries/kimiWebbridge.ts
+++ b/packages/agent-core-v2/src/app/capability/entries/kimiWebbridge.ts
@@ -206,7 +206,7 @@ export function createKimiWebbridgeEntry(ctx: CapabilityEntryContext): Capabilit
throw new Error(`WebBridge daemon did not come up on ${baseUrl} — check ~/.kimi-webbridge/logs`);
}
- async function install(report: CapabilityInstallReporter): Promise {
+ async function install(report: CapabilityInstallReporter): Promise {
const asset = binaryAssetName(ctx.platform, ctx.arch);
if (asset === undefined) {
throw new Error(`kimi-webbridge is not supported on ${ctx.platform}/${ctx.arch}`);
@@ -251,6 +251,9 @@ export function createKimiWebbridgeEntry(ctx: CapabilityEntryContext): Capabilit
`Could not back up the standalone kimi-webbridge skill: ${error instanceof Error ? error.message : String(error)}`;
}
}
+ return standaloneSkillMigrationPending && standaloneSkillMigrationError === undefined
+ ? 'user-skill-migrated'
+ : undefined;
}
async function installBinary(
diff --git a/packages/agent-core-v2/src/app/capability/types.ts b/packages/agent-core-v2/src/app/capability/types.ts
index 7497a206361..ae2dfdee083 100644
--- a/packages/agent-core-v2/src/app/capability/types.ts
+++ b/packages/agent-core-v2/src/app/capability/types.ts
@@ -27,6 +27,7 @@ export interface CapabilityInstallProgress {
readonly step?: string;
readonly percent?: number;
readonly error?: string;
+ readonly note?: string;
}
export interface CapabilityDetectResult {
@@ -49,6 +50,19 @@ export interface CapabilityStatus {
export type CapabilityInstallReporter = (step: string, percent?: number) => void;
+export interface CapabilityDescriptor {
+ readonly id: CapabilityId;
+ readonly pluginId?: string;
+ readonly displayName: string;
+ readonly description: string;
+ readonly supported: boolean;
+}
+
+export interface CapabilityInstallChange {
+ readonly id: CapabilityId;
+ readonly install: CapabilityInstallProgress;
+}
+
export interface CapabilityEntry {
readonly id: CapabilityId;
readonly pluginId?: string;
@@ -56,5 +70,5 @@ export interface CapabilityEntry {
readonly description: string;
readonly supported: boolean;
detect(): Promise;
- install(report: CapabilityInstallReporter): Promise;
+ install(report: CapabilityInstallReporter): Promise;
}
diff --git a/packages/agent-core-v2/src/app/plugin/marketplace.ts b/packages/agent-core-v2/src/app/plugin/marketplace.ts
new file mode 100644
index 00000000000..4a74102f93d
--- /dev/null
+++ b/packages/agent-core-v2/src/app/plugin/marketplace.ts
@@ -0,0 +1,394 @@
+/**
+ * `plugin` domain — plugin marketplace catalog client and parser.
+ *
+ * Loads and normalizes the plugin marketplace catalog (`marketplace.json`)
+ * for every host (CLI panel, kap-server REST route). The catalog format is a
+ * public, hand-writable contract, so parsing is deliberately lenient: legacy
+ * field aliases (`url`/`downloadUrl`, `name`/`shortDescription`/`websiteURL`)
+ * are honored, blank strings read as missing, `keywords` keeps only non-blank
+ * strings, and `type`/`tier` validate against the accepted vocabulary
+ * (`plugin` plus legacy `managed`/`guide`; `official`/`curated`). Entry
+ * sources may be http(s), GitHub repo/ref URLs, `file://`, absolute paths,
+ * `~`-relative, or catalog-relative (`./official/*.zip`) — all resolve to a
+ * directly installable form here. Entries without a `version` get one from a
+ * GitHub ref tail (`releases/tag/`, `tree/[`, `commit/]` —
+ * semver-shaped refs only), or from the bare repo's latest release via the
+ * `/releases/latest` redirect (a UI route, deliberately never the
+ * rate-limited api.github.com). `computeUpdateStatus` reports an update only
+ * on strict semver latest > installed, and never borrows the catalog version
+ * for an unknown local one. `withBuiltInEntries` masks same-id catalog rows
+ * with client-injected built-in capability entries (taking only their
+ * version), so what those ids mean stays bound to the client release; the
+ * `builtIn` flag is set only by that path, never from catalog data.
+ * `readPluginMarketplace` returns the location actually read, because entry
+ * sources resolve against it — including the host-supplied source-checkout
+ * fallback, which hosts pass only when the catalog location is the built-in
+ * default (an explicitly configured catalog fails hard). No DI collaborators
+ * — pure functions over `fetch`/`fs`.
+ */
+
+import { readFile } from 'node:fs/promises';
+import { homedir } from 'node:os';
+import { dirname, isAbsolute, join, resolve } from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+import { gt, valid } from 'semver';
+
+export const KIMI_CODE_PLUGIN_MARKETPLACE_URL =
+ 'https://code.kimi.com/kimi-code/plugins/marketplace.json';
+export const KIMI_CODE_PLUGIN_MARKETPLACE_URL_ENV = 'KIMI_CODE_PLUGIN_MARKETPLACE_URL';
+
+export const PLUGIN_MARKETPLACE_TIERS = ['official', 'curated'] as const;
+
+export type PluginMarketplaceTier = (typeof PLUGIN_MARKETPLACE_TIERS)[number];
+
+export interface PluginMarketplaceEntry {
+ readonly id: string;
+ readonly displayName: string;
+ readonly source: string;
+ readonly tier?: PluginMarketplaceTier;
+ readonly version?: string;
+ readonly description?: string;
+ readonly homepage?: string;
+ readonly keywords?: readonly string[];
+ readonly builtIn?: boolean;
+}
+
+export interface PluginMarketplace {
+ readonly source: string;
+ readonly version?: string;
+ readonly plugins: readonly PluginMarketplaceEntry[];
+}
+
+export type MarketplaceUpdateStatus =
+ | { readonly kind: 'not-installed' }
+ | { readonly kind: 'up-to-date'; readonly version?: string }
+ | { readonly kind: 'update'; readonly local: string; readonly latest: string };
+
+export interface MarketplaceLocation {
+ readonly raw: string;
+ readonly kind: 'remote' | 'local';
+ readonly resolved: string;
+}
+
+export interface ReadPluginMarketplaceOptions {
+ readonly source: string;
+ readonly workDir: string;
+ readonly fetchImpl?: typeof fetch;
+ readonly sourceCheckoutLocation?: () => Promise;
+}
+
+export function computeUpdateStatus(
+ latest: string | undefined,
+ local: string | undefined,
+ installed: boolean,
+): MarketplaceUpdateStatus {
+ if (!installed) return { kind: 'not-installed' };
+ if (
+ latest !== undefined &&
+ local !== undefined &&
+ valid(latest) !== null &&
+ valid(local) !== null &&
+ gt(latest, local)
+ ) {
+ return { kind: 'update', local, latest };
+ }
+ return { kind: 'up-to-date', version: local };
+}
+
+export function resolveMarketplaceLocation(source: string, workDir: string): MarketplaceLocation {
+ const trimmed = source.trim();
+ if (trimmed.length === 0) {
+ throw new Error(`${KIMI_CODE_PLUGIN_MARKETPLACE_URL_ENV} cannot be empty.`);
+ }
+ if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
+ return { raw: trimmed, kind: 'remote', resolved: trimmed };
+ }
+ if (trimmed.startsWith('file://')) {
+ const path = fileURLToPath(trimmed);
+ return { raw: trimmed, kind: 'local', resolved: path };
+ }
+ return { raw: trimmed, kind: 'local', resolved: resolveLocalPath(trimmed, workDir) };
+}
+
+export async function readPluginMarketplace(
+ options: ReadPluginMarketplaceOptions,
+): Promise<{ raw: string; location: MarketplaceLocation }> {
+ const location = resolveMarketplaceLocation(options.source, options.workDir);
+ const fetchImpl = options.fetchImpl ?? fetch;
+ try {
+ return { raw: await readMarketplaceText(location, fetchImpl), location };
+ } catch (error) {
+ const fallback =
+ options.sourceCheckoutLocation !== undefined
+ ? await options.sourceCheckoutLocation()
+ : undefined;
+ if (fallback === undefined) throw error;
+ return { raw: await readMarketplaceText(fallback, fetchImpl), location: fallback };
+ }
+}
+
+export function parsePluginMarketplace(raw: string, location: MarketplaceLocation): PluginMarketplace {
+ let parsed: unknown;
+ try {
+ parsed = JSON.parse(raw);
+ } catch (error) {
+ throw new Error(`Plugin marketplace is not valid JSON: ${formatParseError(error)}`, {
+ cause: error,
+ });
+ }
+
+ if (!isRecord(parsed)) {
+ throw new TypeError('Plugin marketplace must be an object.');
+ }
+ const rawPlugins = parsed['plugins'];
+ if (!Array.isArray(rawPlugins)) {
+ throw new TypeError('Plugin marketplace must contain a "plugins" array.');
+ }
+
+ return {
+ source: location.resolved,
+ version: stringField(parsed, 'version'),
+ plugins: rawPlugins.map((entry, index) => parseMarketplaceEntry(entry, index, location)),
+ };
+}
+
+export function withBuiltInEntries(
+ marketplace: PluginMarketplace,
+ builtIns: readonly PluginMarketplaceEntry[],
+): PluginMarketplace {
+ const builtInIds = new Set(builtIns.map((entry) => entry.id));
+ const catalogById = new Map(marketplace.plugins.map((entry) => [entry.id, entry]));
+ const catalog = marketplace.plugins.filter((entry) => !builtInIds.has(entry.id));
+ const enrichedBuiltIns = builtIns.map((entry) => {
+ const version = catalogById.get(entry.id)?.version;
+ return version === undefined ? entry : { ...entry, version };
+ });
+ return { ...marketplace, plugins: [...catalog, ...enrichedBuiltIns] };
+}
+
+export async function withLatestVersions(
+ marketplace: PluginMarketplace,
+ fetchImpl: typeof fetch,
+): Promise {
+ const plugins = await Promise.all(
+ marketplace.plugins.map(async (entry) => {
+ if (entry.version !== undefined) return entry;
+ const latest = await resolveLatestGithubRelease(entry.source, fetchImpl);
+ return latest === undefined ? entry : { ...entry, version: latest };
+ }),
+ );
+ return { ...marketplace, plugins };
+}
+
+async function readMarketplaceText(
+ location: MarketplaceLocation,
+ fetchImpl: typeof fetch,
+): Promise {
+ if (location.kind === 'local') {
+ return readFile(location.resolved, 'utf8');
+ }
+ const response = await fetchImpl(location.resolved);
+ if (!response.ok) {
+ throw new Error(`Plugin marketplace returned HTTP ${response.status}`);
+ }
+ return response.text();
+}
+
+function parseMarketplaceEntry(
+ value: unknown,
+ index: number,
+ location: MarketplaceLocation,
+): PluginMarketplaceEntry {
+ if (!isRecord(value)) {
+ throw new TypeError(`Plugin marketplace entry ${index + 1} must be an object.`);
+ }
+ const id = requiredString(value, 'id', index);
+ validateMarketplaceEntryType(value, id);
+ const source = stringField(value, 'source') ??
+ stringField(value, 'url') ??
+ stringField(value, 'downloadUrl');
+ if (source === undefined) {
+ throw new Error(`Plugin marketplace entry ${id} must define "source".`);
+ }
+ const resolvedSource = resolveEntrySource(source, location);
+ return {
+ id,
+ displayName: stringField(value, 'displayName') ?? stringField(value, 'name') ?? id,
+ source: resolvedSource,
+ tier: parseMarketplaceTier(value, id),
+ version: stringField(value, 'version') ?? deriveVersionFromGithubSource(resolvedSource),
+ description: stringField(value, 'description') ?? stringField(value, 'shortDescription'),
+ homepage: stringField(value, 'homepage') ?? stringField(value, 'websiteURL'),
+ keywords: stringArrayField(value, 'keywords'),
+ };
+}
+
+function validateMarketplaceEntryType(value: Record, id: string): void {
+ const raw = value['type'];
+ if (raw === undefined) return;
+ if (typeof raw !== 'string') {
+ throw new TypeError(`Plugin marketplace entry ${id} "type" must be a string.`);
+ }
+ const type = raw.trim();
+ if (type === 'plugin' || type === 'managed' || type === 'guide') return;
+ throw new Error(
+ `Plugin marketplace entry ${id} "type" must be "plugin". Legacy aliases "managed" and "guide" are also accepted.`,
+ );
+}
+
+function parseMarketplaceTier(
+ value: Record,
+ id: string,
+): PluginMarketplaceTier | undefined {
+ const raw = value['tier'];
+ if (raw === undefined) return undefined;
+ if (typeof raw !== 'string') {
+ throw new TypeError(`Plugin marketplace entry ${id} "tier" must be a string.`);
+ }
+ const tier = raw.trim();
+ if (tier.length === 0) return undefined;
+ if ((PLUGIN_MARKETPLACE_TIERS as readonly string[]).includes(tier)) {
+ return tier as PluginMarketplaceTier;
+ }
+ throw new Error(
+ `Plugin marketplace entry ${id} "tier" must be one of: ${PLUGIN_MARKETPLACE_TIERS.join(', ')}.`,
+ );
+}
+
+function resolveEntrySource(source: string, location: MarketplaceLocation): string {
+ const trimmed = source.trim();
+ if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
+ return trimmed;
+ }
+ if (trimmed.startsWith('file://')) return fileURLToPath(trimmed);
+ if (trimmed === '~' || trimmed.startsWith('~/')) {
+ return resolveLocalPath(trimmed, '');
+ }
+ if (isAbsolute(trimmed)) return trimmed;
+ if (location.kind === 'remote') {
+ return new URL(trimmed, location.resolved).toString();
+ }
+ return resolve(dirname(location.resolved), trimmed);
+}
+
+function deriveVersionFromGithubSource(source: string): string | undefined {
+ let url: URL;
+ try {
+ url = new URL(source);
+ } catch {
+ return undefined;
+ }
+ if (url.hostname !== 'github.com' && url.hostname !== 'www.github.com') {
+ return undefined;
+ }
+ const [, , kind, a, b] = url.pathname.split('/').filter(Boolean);
+ const ref =
+ kind === 'releases' && a === 'tag' ? b : kind === 'tree' || kind === 'commit' ? a : undefined;
+ if (ref === undefined) return undefined;
+ let decoded: string;
+ try {
+ decoded = decodeURIComponent(ref);
+ } catch {
+ decoded = ref;
+ }
+ const candidate = decoded.replace(/^v/i, '');
+ return valid(candidate) !== null ? candidate : undefined;
+}
+
+async function resolveLatestGithubRelease(
+ source: string,
+ fetchImpl: typeof fetch,
+): Promise {
+ const repo = parseGithubRepo(source);
+ if (repo === undefined) return undefined;
+ try {
+ const tag = await fetchLatestReleaseTag(repo.owner, repo.repo, fetchImpl);
+ if (tag === undefined) return undefined;
+ const candidate = tag.replace(/^v/i, '');
+ return valid(candidate) !== null ? candidate : undefined;
+ } catch {
+ return undefined;
+ }
+}
+
+function parseGithubRepo(source: string): { owner: string; repo: string } | undefined {
+ let url: URL;
+ try {
+ url = new URL(source);
+ } catch {
+ return undefined;
+ }
+ if (url.hostname !== 'github.com' && url.hostname !== 'www.github.com') return undefined;
+ const segments = url.pathname.split('/').filter(Boolean);
+ if (segments.length !== 2) return undefined;
+ const [owner, repo] = segments;
+ return { owner: owner!, repo: repo! };
+}
+
+async function fetchLatestReleaseTag(
+ owner: string,
+ repo: string,
+ fetchImpl: typeof fetch,
+): Promise {
+ const url = `https://github.com/${owner}/${repo}/releases/latest`;
+ const resp = await fetchImpl(url, { redirect: 'manual' });
+ if (resp.status === 404) return undefined;
+ if (resp.status !== 301 && resp.status !== 302) {
+ throw new Error(
+ `Could not look up latest release of ${owner}/${repo}: HTTP ${resp.status} (${url}).`,
+ );
+ }
+ const location = resp.headers.get('location');
+ if (location === null) return undefined;
+ const match = /\/releases\/tag\/([^/?#]+)/.exec(location);
+ const tag = match?.[1];
+ if (tag === undefined) return undefined;
+ try {
+ return decodeURIComponent(tag);
+ } catch {
+ return tag;
+ }
+}
+
+function resolveLocalPath(input: string, workDir: string): string {
+ if (input === '~') return homedir();
+ if (input.startsWith('~/')) return join(homedir(), input.slice(2));
+ return isAbsolute(input) ? input : resolve(workDir, input);
+}
+
+function requiredString(value: Record, field: string, index: number): string {
+ const result = stringField(value, field);
+ if (result === undefined) {
+ throw new Error(`Plugin marketplace entry ${index + 1} must define "${field}".`);
+ }
+ return result;
+}
+
+function stringField(value: Record, field: string): string | undefined {
+ const raw = value[field];
+ if (typeof raw !== 'string') return undefined;
+ const trimmed = raw.trim();
+ return trimmed.length > 0 ? trimmed : undefined;
+}
+
+function stringArrayField(
+ value: Record,
+ field: string,
+): readonly string[] | undefined {
+ const raw = value[field];
+ if (!Array.isArray(raw)) return undefined;
+ const out = raw
+ .filter((item): item is string => typeof item === 'string')
+ .map((item) => item.trim())
+ .filter((item) => item.length > 0);
+ return out.length > 0 ? out : undefined;
+}
+
+function isRecord(value: unknown): value is Record {
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
+}
+
+function formatParseError(error: unknown): string {
+ return error instanceof Error ? error.message : String(error);
+}
diff --git a/packages/agent-core-v2/src/app/sessionExport/sessionExport.ts b/packages/agent-core-v2/src/app/sessionExport/sessionExport.ts
index 4b84bfe1f61..ecf8e45fa7a 100644
--- a/packages/agent-core-v2/src/app/sessionExport/sessionExport.ts
+++ b/packages/agent-core-v2/src/app/sessionExport/sessionExport.ts
@@ -58,7 +58,6 @@ export interface ExportSessionResult {
export interface ExportSessionOptions {
readonly webLog?: string;
readonly signal?: AbortSignal;
- readonly maxArchiveBytes?: number;
}
export interface ISessionExportService {
diff --git a/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts b/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts
index 561d3c55859..73ee4c26f06 100644
--- a/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts
+++ b/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts
@@ -99,7 +99,6 @@ export class SessionExportService implements ISessionExportService {
: undefined,
webLog: options.webLog,
signal: options.signal,
- maxArchiveBytes: options.maxArchiveBytes,
});
}
@@ -185,7 +184,6 @@ export async function exportSessionDirectory(input: {
readonly desktopLogPath?: string | undefined;
readonly webLog?: string;
readonly signal?: AbortSignal;
- readonly maxArchiveBytes?: number;
}): Promise {
input.signal?.throwIfAborted();
const sessionDir = input.summary.sessionDir;
@@ -265,7 +263,6 @@ export async function exportSessionDirectory(input: {
sessionFiles: selectedSessionFiles,
extraEntries: extras,
signal: input.signal,
- maxArchiveBytes: input.maxArchiveBytes,
});
sessionLogSourceTransferred = sessionLogSource !== undefined;
globalSourceTransferred = globalSource !== undefined;
diff --git a/packages/agent-core-v2/src/app/sessionExport/zip.ts b/packages/agent-core-v2/src/app/sessionExport/zip.ts
index 7dbc97ae7a5..beb403eca12 100644
--- a/packages/agent-core-v2/src/app/sessionExport/zip.ts
+++ b/packages/agent-core-v2/src/app/sessionExport/zip.ts
@@ -8,7 +8,7 @@
import { createWriteStream } from 'node:fs';
import { mkdir, mkdtemp, readdir, rename, rm, stat } from 'node:fs/promises';
-import { Readable, Transform } from 'node:stream';
+import { Readable } from 'node:stream';
import { pipeline } from 'node:stream/promises';
import { dirname, join, relative, resolve } from 'pathe';
@@ -49,7 +49,6 @@ export async function writeExportZip(args: {
readonly sessionFiles: readonly SessionZipEntry[];
readonly extraEntries?: readonly ExtraZipEntry[];
readonly signal?: AbortSignal;
- readonly maxArchiveBytes?: number;
}): Promise {
const unusedSources = new Set([
...args.sessionFiles.flatMap((entry) => (typeof entry === 'string' ? [] : [entry.source])),
@@ -110,12 +109,7 @@ export async function writeExportZip(args: {
args.signal?.addEventListener('abort', onAbort, { once: true });
const destination = createWriteStream(tempOutputPath, { flags: 'wx' });
- writing =
- args.maxArchiveBytes === undefined
- ? pipeline(output, destination, { signal: args.signal })
- : pipeline(output, createArchiveLimit(args.maxArchiveBytes), destination, {
- signal: args.signal,
- });
+ writing = pipeline(output, destination, { signal: args.signal });
const activate = (source: ZipSource): Readable => {
unusedSources.delete(source);
@@ -263,26 +257,6 @@ function abortReason(signal: AbortSignal): Error {
: new DOMException('The operation was aborted.', 'AbortError');
}
-function createArchiveLimit(maxArchiveBytes: number): Transform {
- let archiveBytes = 0;
- return new Transform({
- transform(chunk: Buffer, _encoding, callback) {
- archiveBytes += chunk.length;
- if (archiveBytes > maxArchiveBytes) {
- callback(
- new Error2(
- ErrorCodes.SESSION_EXPORT_TOO_LARGE,
- `Session export exceeds the ${maxArchiveBytes} byte archive limit.`,
- { details: { archiveBytes, maxArchiveBytes } },
- ),
- );
- return;
- }
- callback(null, chunk);
- },
- });
-}
-
async function findConflictingSource(args: {
readonly outputPath: string;
readonly sessionFiles: readonly SessionZipEntry[];
diff --git a/packages/agent-core-v2/src/index.ts b/packages/agent-core-v2/src/index.ts
index cab234493b6..9674bd1cdca 100644
--- a/packages/agent-core-v2/src/index.ts
+++ b/packages/agent-core-v2/src/index.ts
@@ -217,6 +217,7 @@ export * from '#/app/plugin/source';
export * from '#/app/plugin/github-resolver';
export * from '#/app/plugin/archive';
export * from '#/app/plugin/manager';
+export * from '#/app/plugin/marketplace';
export * from '#/app/plugin/plugin';
export * from '#/app/plugin/pluginService';
export * from '#/app/capability/capability';
diff --git a/packages/agent-core-v2/test/agent/task/taskManager.test.ts b/packages/agent-core-v2/test/agent/task/taskManager.test.ts
index 3107a361371..4d12abd434c 100644
--- a/packages/agent-core-v2/test/agent/task/taskManager.test.ts
+++ b/packages/agent-core-v2/test/agent/task/taskManager.test.ts
@@ -85,6 +85,7 @@ function agentTask(
options: {
readonly agentId?: string;
readonly subagentType?: string;
+ readonly parentToolCallId?: string;
readonly abortController?: AbortController;
readonly timeoutMs?: number;
} = {},
@@ -92,6 +93,7 @@ function agentTask(
const handle: SubagentHandle = {
agentId: options.agentId ?? 'agent-child',
profileName: options.subagentType ?? 'coder',
+ parentToolCallId: options.parentToolCallId,
completion,
};
const task = new SubagentTask(
@@ -410,6 +412,7 @@ describe('AgentTaskService', () => {
agentTask(new Promise(() => {}), 'investigate bug', {
agentId: 'agent-child',
subagentType: 'coder',
+ parentToolCallId: 'call-parent-1',
}),
);
@@ -420,6 +423,7 @@ describe('AgentTaskService', () => {
description: 'investigate bug',
agentId: 'agent-child',
subagentType: 'coder',
+ parentToolCallId: 'call-parent-1',
status: 'running',
});
});
diff --git a/packages/agent-core-v2/test/app/capability/capabilityService.test.ts b/packages/agent-core-v2/test/app/capability/capabilityService.test.ts
index 4deb6461119..8d3d259277f 100644
--- a/packages/agent-core-v2/test/app/capability/capabilityService.test.ts
+++ b/packages/agent-core-v2/test/app/capability/capabilityService.test.ts
@@ -23,7 +23,7 @@ function fakeEntry(overrides: {
pluginId?: string;
supported?: boolean;
detect?: CapabilityDetectResult;
- install?: (report: CapabilityInstallReporter) => Promise;
+ install?: (report: CapabilityInstallReporter) => Promise;
}): CapabilityEntry {
return {
id: overrides.id,
@@ -35,7 +35,7 @@ function fakeEntry(overrides: {
Promise.resolve(
overrides.detect ?? { steps: [{ id: 'plugin', state: 'ok' }] },
),
- install: overrides.install ?? (() => Promise.resolve()),
+ install: overrides.install ?? (() => Promise.resolve(undefined)),
};
}
@@ -92,7 +92,7 @@ describe('CapabilityService', () => {
description: 'fake',
supported: true,
detect: () => Promise.reject(new Error('probe timed out')),
- install: () => Promise.resolve(),
+ install: () => Promise.resolve(undefined),
};
const service = fakeService([
broken,
@@ -176,9 +176,9 @@ describe('CapabilityService', () => {
id: 'kimi-cu',
install: (report) => {
report('download', 42);
- return new Promise((resolve) => {
+ return new Promise((resolve) => {
release = () => {
- resolve();
+ resolve(undefined);
};
});
},
@@ -213,6 +213,59 @@ describe('CapabilityService', () => {
expect.unreachable('install never settled');
});
+ it('describes the registry without running detectors', async () => {
+ const service = fakeService([
+ fakeEntry({ id: 'kimi-cu', supported: true }),
+ fakeEntry({ id: 'kimi-webbridge', supported: false }),
+ ]);
+ const descriptors = service.describeCapabilities();
+ expect(descriptors.map((d) => d.id)).toEqual(['kimi-cu', 'kimi-webbridge']);
+ expect(descriptors.find((d) => d.id === 'kimi-webbridge')?.supported).toBe(false);
+ });
+
+ it('emits onDidChangeInstall on every progress transition', async () => {
+ const service = fakeService([
+ fakeEntry({
+ id: 'kimi-cu',
+ install: (report) => {
+ report('download', 42);
+ return Promise.resolve(undefined);
+ },
+ }),
+ ]);
+ const seen: Array<{ id: string; install: { running: boolean; step?: string } }> = [];
+ service.onDidChangeInstall((change) => {
+ seen.push({ id: change.id, install: change.install });
+ });
+
+ await service.installCapability('kimi-cu');
+ for (let i = 0; i < 50; i += 1) {
+ const status = await service.getCapability('kimi-cu');
+ if (!status.install.running) break;
+ await new Promise((resolve) => setTimeout(resolve, 10));
+ }
+
+ expect(seen[0]).toEqual({ id: 'kimi-cu', install: { running: true } });
+ expect(seen).toContainEqual({ id: 'kimi-cu', install: { running: true, step: 'download', percent: 42 } });
+ expect(seen.at(-1)).toEqual({ id: 'kimi-cu', install: { running: false } });
+ });
+
+ it('surfaces an install note from the entry through progress', async () => {
+ const service = fakeService([
+ fakeEntry({
+ id: 'kimi-cu',
+ install: () => Promise.resolve('user-skill-migrated'),
+ }),
+ ]);
+ await service.installCapability('kimi-cu');
+ for (let i = 0; i < 50; i += 1) {
+ const status = await service.getCapability('kimi-cu');
+ if (!status.install.running) break;
+ await new Promise((resolve) => setTimeout(resolve, 10));
+ }
+ expect((await service.getCapability('kimi-cu')).install.note).toBe('user-skill-migrated');
+ });
+
it('surfaces install errors through progress until the next attempt', async () => {
let attempts = 0;
const service = fakeService([
@@ -222,7 +275,7 @@ describe('CapabilityService', () => {
attempts += 1;
return attempts === 1
? Promise.reject(new Error('boom'))
- : Promise.resolve();
+ : Promise.resolve(undefined);
},
}),
]);
diff --git a/packages/agent-core-v2/test/app/capability/kimiWebbridge.test.ts b/packages/agent-core-v2/test/app/capability/kimiWebbridge.test.ts
index 6ce01a74f48..1aaff95586d 100644
--- a/packages/agent-core-v2/test/app/capability/kimiWebbridge.test.ts
+++ b/packages/agent-core-v2/test/app/capability/kimiWebbridge.test.ts
@@ -239,11 +239,12 @@ describe('kimi-webbridge entry', () => {
optional: true,
});
const reports: string[] = [];
- await entry.install((step) => reports.push(step));
+ const note = await entry.install((step) => reports.push(step));
expect(plugins.installs).toEqual([
'https://code.kimi.com/kimi-code/plugins/official/kimi-webbridge.zip',
]);
+ expect(note).toBe('user-skill-migrated');
expect(reports).toContain('standalone-skill-migration');
await expect(access(path.join(kimiHome, 'skills', 'kimi-webbridge'))).rejects.toThrow();
await expect(access(path.join(userHome, '.agents', 'skills', 'kimi-webbridge'))).rejects.toThrow();
@@ -302,7 +303,8 @@ describe('kimi-webbridge entry', () => {
makeCtx({ plugins: plugins.service, hostProcess: host.service, fetchImpl }),
);
- await entry.install(() => {});
+ const note = await entry.install(() => {});
+ expect(note).toBeUndefined();
expect(host.calls).toEqual([]);
});
diff --git a/packages/agent-core-v2/test/app/sessionExport/sessionExport.test.ts b/packages/agent-core-v2/test/app/sessionExport/sessionExport.test.ts
index 543c5c5bba5..4eda5a157ca 100644
--- a/packages/agent-core-v2/test/app/sessionExport/sessionExport.test.ts
+++ b/packages/agent-core-v2/test/app/sessionExport/sessionExport.test.ts
@@ -710,23 +710,6 @@ describe('sessionExport', () => {
expect((await readdir(tmp)).toSorted()).toEqual(['export.zip', 'safe-output', 'state.json']);
});
- it('rejects with a coded error when compressed output exceeds the configured limit', async () => {
- const tmp = await mkdtemp(join(tmpdir(), 'session-export-test-'));
-
- await expect(
- writeExportZip({
- outputPath: join(tmp, 'too-large.zip'),
- manifest: testManifest('ses_too_large'),
- sessionDir: tmp,
- sessionFiles: [],
- maxArchiveBytes: 1,
- }),
- ).rejects.toMatchObject({
- code: 'session.export_too_large',
- details: { maxArchiveBytes: 1 },
- });
- });
-
it('throws a coded error when the session is unknown', async () => {
const tmp = await mkdtemp(join(tmpdir(), 'session-export-test-'));
ix = createTestServices(tmp, {
diff --git a/packages/kap-server/package.json b/packages/kap-server/package.json
index 994312c73ac..d4b74ea8665 100644
--- a/packages/kap-server/package.json
+++ b/packages/kap-server/package.json
@@ -34,6 +34,7 @@
"bcryptjs": "^2.4.3",
"fastify": "^5.1.0",
"pino": "^9.5.0",
+ "semver": "^7.7.4",
"smol-toml": "^1.6.1",
"ulid": "^3.0.1",
"ws": "^8.21.3",
@@ -41,6 +42,7 @@
},
"devDependencies": {
"@types/bcryptjs": "^2.4.6",
+ "@types/semver": "^7.7.0",
"@types/ws": "^8.18.0",
"tsx": "^4.21.0"
}
diff --git a/packages/kap-server/src/protocol/error-codes.ts b/packages/kap-server/src/protocol/error-codes.ts
index 2fadbc3dd33..c26accddbca 100644
--- a/packages/kap-server/src/protocol/error-codes.ts
+++ b/packages/kap-server/src/protocol/error-codes.ts
@@ -72,6 +72,10 @@ export const ErrorCode = {
TOOL_CALL_NOT_FOUND: 40416,
/** 目录(models.dev catalog)中不存在该条目 */
CATALOG_ENTRY_NOT_FOUND: 40417,
+ /** capability_id 不存在 */
+ CAPABILITY_NOT_FOUND: 40418,
+ /** plugin_id 不存在 */
+ PLUGIN_NOT_FOUND: 40419,
/** session 有正在进行的 prompt,拒绝新请求 */
SESSION_BUSY: 40901,
@@ -120,6 +124,10 @@ export const ErrorCode = {
PAGE_TOKEN_MISMATCH: 40922,
/** 会话标题生成不可用(flag 未开 / 无 managed OAuth 登录 / 还没有 prompt / 后端失败) */
SESSION_TITLE_UNAVAILABLE: 40923,
+ /** capability 正在安装中,拒绝并发安装 */
+ CAPABILITY_INSTALL_IN_PROGRESS: 40924,
+ /** 当前平台/架构不支持该 capability */
+ CAPABILITY_UNSUPPORTED: 40925,
/** approval 60s 超时 */
APPROVAL_EXPIRED: 41001,
diff --git a/packages/kap-server/src/protocol/events-zod.ts b/packages/kap-server/src/protocol/events-zod.ts
index 46022531290..fb4caa680fb 100644
--- a/packages/kap-server/src/protocol/events-zod.ts
+++ b/packages/kap-server/src/protocol/events-zod.ts
@@ -629,6 +629,22 @@ export const configWarningEventSchema = z.object({
),
});
+export const pluginChangedEventSchema = z.object({
+ type: z.literal('event.plugin.changed'),
+});
+
+export const capabilityChangedEventSchema = z.object({
+ type: z.literal('event.capability.changed'),
+ capability_id: z.string(),
+ install: z.object({
+ running: z.boolean(),
+ step: z.string().optional(),
+ percent: z.number().optional(),
+ error: z.string().optional(),
+ note: z.string().optional(),
+ }),
+});
+
export const diUnitChangedEventSchema = z.object({
type: z.literal('event.di.unit_changed'),
scope: z.string().min(1),
@@ -966,6 +982,8 @@ export const agentEventSchema = z.discriminatedUnion('type', [
sessionWorkChangedEventSchema,
sessionStatusChangedEventSchema,
diUnitChangedEventSchema,
+ pluginChangedEventSchema,
+ capabilityChangedEventSchema,
goalUpdatedEventSchema,
skillActivatedEventSchema,
pluginCommandActivatedEventSchema,
diff --git a/packages/kap-server/src/protocol/rest-capability.ts b/packages/kap-server/src/protocol/rest-capability.ts
new file mode 100644
index 00000000000..a68d53f3ea5
--- /dev/null
+++ b/packages/kap-server/src/protocol/rest-capability.ts
@@ -0,0 +1,47 @@
+/**
+ * GET /v1/capabilities
+ * GET /v1/capabilities/{capability_id}
+ * POST /v1/capabilities/{capability_id}:install
+ */
+
+import { z } from 'zod';
+
+export const capabilityStepSchema = z.object({
+ id: z.string(),
+ state: z.enum(['ok', 'missing', 'failed']),
+ detail: z.string().optional(),
+ optional: z.boolean().optional(),
+});
+export type CapabilityStepWire = z.infer;
+
+export const capabilityInstallProgressSchema = z.object({
+ running: z.boolean(),
+ step: z.string().optional(),
+ percent: z.number().min(0).max(100).optional(),
+ error: z.string().optional(),
+ note: z.string().optional(),
+});
+export type CapabilityInstallProgressWire = z.infer;
+
+export const capabilityStatusSchema = z.object({
+ id: z.string(),
+ pluginId: z.string().optional(),
+ displayName: z.string(),
+ description: z.string(),
+ supported: z.boolean(),
+ state: z.enum(['not_installed', 'partial', 'ready', 'unsupported']),
+ version: z.string().optional(),
+ steps: z.array(capabilityStepSchema),
+ install: capabilityInstallProgressSchema,
+});
+export type CapabilityStatusWire = z.infer;
+
+export const listCapabilitiesResponseSchema = z.object({
+ capabilities: z.array(capabilityStatusSchema),
+});
+export type ListCapabilitiesResponse = z.infer;
+
+export const capabilityIdParamSchema = z.object({
+ capability_id: z.string().min(1),
+});
+export type CapabilityIdParam = z.infer;
diff --git a/packages/kap-server/src/protocol/rest-plugin.ts b/packages/kap-server/src/protocol/rest-plugin.ts
new file mode 100644
index 00000000000..fa3003cfeb5
--- /dev/null
+++ b/packages/kap-server/src/protocol/rest-plugin.ts
@@ -0,0 +1,86 @@
+/**
+ * GET /v1/plugins
+ * GET /v1/plugins/marketplace
+ * POST /v1/plugins
+ * POST /v1/plugins/{plugin_id}:{enable,disable,remove}
+ */
+
+import { z } from 'zod';
+
+/** GitHub provenance for github-sourced plugins (domain PluginGithubMetadata). */
+export const pluginGithubMetadataSchema = z.object({
+ owner: z.string(),
+ repo: z.string(),
+ ref: z.object({
+ kind: z.enum(['branch', 'tag', 'sha']),
+ value: z.string(),
+ }),
+ installedSha: z.string().optional(),
+});
+
+export const pluginSummarySchema = z.object({
+ id: z.string(),
+ displayName: z.string(),
+ version: z.string().optional(),
+ enabled: z.boolean(),
+ state: z.enum(['ok', 'error']),
+ skillCount: z.number(),
+ mcpServerCount: z.number(),
+ enabledMcpServerCount: z.number(),
+ hookCount: z.number(),
+ commandCount: z.number(),
+ hasErrors: z.boolean(),
+ source: z.enum(['local-path', 'zip-url', 'github']),
+ originalSource: z.string().optional(),
+ github: pluginGithubMetadataSchema.optional(),
+});
+export type PluginSummaryWire = z.infer;
+
+export const listPluginsResponseSchema = z.object({
+ plugins: z.array(pluginSummarySchema),
+});
+export type ListPluginsResponse = z.infer;
+
+export const installPluginRequestSchema = z.object({
+ /** local path, https zip URL, or GitHub repo URL — same semantics as the CLI. */
+ source: z.string().min(1),
+});
+export type InstallPluginRequest = z.infer;
+
+export const pluginMarketplaceEntrySchema = z.object({
+ id: z.string(),
+ tier: z.enum(['official', 'curated', 'third-party']),
+ displayName: z.string(),
+ description: z.string().optional(),
+ homepage: z.string().optional(),
+ keywords: z.array(z.string()).optional(),
+ /** Catalog-declared version; absent for entries that track a moving source. */
+ version: z.string().optional(),
+ source: z.string(),
+ /** Present when the plugin is installed locally (detected on demand). */
+ installed: z
+ .object({
+ version: z.string().optional(),
+ enabled: z.boolean(),
+ })
+ .optional(),
+ /** True only when both versions are valid semver and catalog > installed. */
+ updateAvailable: z.boolean().optional(),
+ /**
+ * Set when the entry is a built-in capability's wiring plugin — install it
+ * through `/capabilities/{capabilityId}:install` (binary runtime + wiring);
+ * a plain plugin install sets up the wiring layer only.
+ */
+ capabilityId: z.string().optional(),
+});
+export type PluginMarketplaceEntryWire = z.infer;
+
+export const pluginMarketplaceResponseSchema = z.object({
+ entries: z.array(pluginMarketplaceEntrySchema),
+});
+export type PluginMarketplaceResponse = z.infer;
+
+export const pluginIdParamSchema = z.object({
+ tail: z.string().min(1),
+});
+export type PluginIdParam = z.infer;
diff --git a/packages/kap-server/src/protocol/task.ts b/packages/kap-server/src/protocol/task.ts
index f1a84ed65c5..8e7bfd737d5 100644
--- a/packages/kap-server/src/protocol/task.ts
+++ b/packages/kap-server/src/protocol/task.ts
@@ -30,5 +30,8 @@ export const taskSchema = z.object({
model: z.string().optional(),
/** Subagent tasks only: the child's effective thinking effort at spawn. */
thinking_effort: z.string().optional(),
+ agent_id: z.string().optional(),
+ subagent_type: z.string().optional(),
+ parent_tool_call_id: z.string().optional(),
});
export type Task = z.infer;
diff --git a/packages/kap-server/src/routes/capabilities.ts b/packages/kap-server/src/routes/capabilities.ts
new file mode 100644
index 00000000000..124999ab7de
--- /dev/null
+++ b/packages/kap-server/src/routes/capabilities.ts
@@ -0,0 +1,177 @@
+/**
+ * `/capabilities` REST routes — built-in product capabilities (kimi-cu,
+ * kimi-webbridge): layered readiness detection + idempotent install.
+ *
+ * GET /capabilities data: {capabilities: CapabilityStatus[]}
+ * GET /capabilities/{capability_id} data: CapabilityStatus
+ * POST /capabilities/{capability_id}:install data: CapabilityStatus (install running)
+ *
+ * The route surface is a thin projection of the App-scope `ICapabilityService`
+ * (`agent-core-v2/app/capability`): the closed registry lives there, install
+ * sources are fixed official CDN URLs, and progress is polled through these
+ * reads (no WS events in v1).
+ *
+ * **Action suffix**: `:install` is the only action — the `POST` path uses the
+ * shared `parseActionSuffix` helper (bare ids are rejected).
+ *
+ * **Error mapping**:
+ * - unknown capability id → envelope `code: 40418 capability.not_found`
+ * - install on wrong platform → `40923 capability.unsupported`
+ * - install already running → `40922 capability.install_in_progress`
+ * - malformed `{tail}` → `40001 validation.failed`
+ * - other errors → `50001` via the global error handler
+ */
+
+import { CapabilityErrors, ICapabilityService, isError2, type Scope } from '@moonshot-ai/agent-core-v2';
+import { z } from 'zod';
+
+import { errEnvelope, okEnvelope } from '../envelope';
+import { defineRoute } from '../middleware/defineRoute';
+import { ErrorCode } from '../protocol/error-codes';
+import {
+ capabilityIdParamSchema,
+ capabilityStatusSchema,
+ listCapabilitiesResponseSchema,
+} from '../protocol/rest-capability';
+import { parseActionSuffix } from './action-suffix';
+
+interface CapabilitiesRouteHost {
+ get(
+ path: string,
+ options: { preHandler: unknown[]; schema?: Record },
+ handler: (
+ req: { id: string; params: unknown },
+ reply: { send(payload: unknown): unknown },
+ ) => Promise | void,
+ ): unknown;
+ post(
+ path: string,
+ options: { preHandler: unknown[]; schema?: Record },
+ handler: (
+ req: { id: string; body: unknown; params: unknown },
+ reply: { send(payload: unknown): unknown },
+ ) => Promise | void,
+ ): unknown;
+}
+
+const capabilityTailParamsSchema = z.object({
+ tail: z.string().min(1),
+});
+
+export function registerCapabilitiesRoutes(app: CapabilitiesRouteHost, core: Scope): void {
+ // GET /capabilities -----------------------------------------------------
+ const listRoute = defineRoute(
+ {
+ method: 'GET',
+ path: '/capabilities',
+ success: { data: listCapabilitiesResponseSchema },
+ errors: {},
+ description: 'List built-in capabilities with layered readiness status',
+ tags: ['capabilities'],
+ operationId: 'listCapabilities',
+ },
+ async (req, reply) => {
+ const capabilities = await core.accessor.get(ICapabilityService).listCapabilities();
+ reply.send(okEnvelope({ capabilities }, req.id));
+ },
+ );
+ app.get(
+ listRoute.path,
+ listRoute.options,
+ listRoute.handler as Parameters[2],
+ );
+
+ // GET /capabilities/{capability_id} --------------------------------------
+ const getRoute = defineRoute(
+ {
+ method: 'GET',
+ path: '/capabilities/{capability_id}',
+ params: capabilityIdParamSchema,
+ success: { data: capabilityStatusSchema },
+ errors: {
+ [ErrorCode.CAPABILITY_NOT_FOUND]: {},
+ },
+ description: 'Get one capability readiness status',
+ tags: ['capabilities'],
+ operationId: 'getCapability',
+ },
+ async (req, reply) => {
+ try {
+ const capability = await core.accessor
+ .get(ICapabilityService)
+ .getCapability(req.params.capability_id);
+ reply.send(okEnvelope(capability, req.id));
+ } catch (error) {
+ reply.send(mapCapabilityError(error, req.id));
+ }
+ },
+ );
+ app.get(
+ getRoute.path,
+ getRoute.options,
+ getRoute.handler as Parameters[2],
+ );
+
+ // POST /capabilities/{capability_id}:install -----------------------------
+ const installRoute = defineRoute(
+ {
+ method: 'POST',
+ path: '/capabilities/{tail}',
+ params: capabilityTailParamsSchema,
+ success: { data: capabilityStatusSchema },
+ errors: {
+ [ErrorCode.VALIDATION_FAILED]: {},
+ [ErrorCode.CAPABILITY_NOT_FOUND]: {},
+ [ErrorCode.CAPABILITY_UNSUPPORTED]: {},
+ [ErrorCode.CAPABILITY_INSTALL_IN_PROGRESS]: {},
+ },
+ description: 'Start an idempotent capability install (poll GET for progress)',
+ tags: ['capabilities'],
+ operationId: 'installCapability',
+ },
+ async (req, reply) => {
+ const parsed = parseActionSuffix({
+ tail: req.params.tail,
+ allowedActions: ['install'],
+ resourceLabel: 'capability',
+ });
+ if (parsed.kind !== 'action') {
+ const message = parsed.kind === 'invalid' ? parsed.reason : `unsupported action: ${req.params.tail}`;
+ reply.send(errEnvelope(ErrorCode.VALIDATION_FAILED, message, req.id));
+ return;
+ }
+ try {
+ const capability = await core.accessor
+ .get(ICapabilityService)
+ .installCapability(parsed.id);
+ reply.send(okEnvelope(capability, req.id));
+ } catch (error) {
+ reply.send(mapCapabilityError(error, req.id));
+ }
+ },
+ );
+ app.post(
+ installRoute.path,
+ installRoute.options,
+ installRoute.handler as Parameters[2],
+ );
+}
+
+const CAPABILITY_ERROR_MAP: Readonly> = {
+ [CapabilityErrors.codes.CAPABILITY_NOT_FOUND]: ErrorCode.CAPABILITY_NOT_FOUND,
+ [CapabilityErrors.codes.CAPABILITY_UNSUPPORTED]: ErrorCode.CAPABILITY_UNSUPPORTED,
+ [CapabilityErrors.codes.CAPABILITY_INSTALL_IN_PROGRESS]: ErrorCode.CAPABILITY_INSTALL_IN_PROGRESS,
+};
+
+function mapCapabilityError(error: unknown, requestId: string) {
+ const mapped = isError2(error) ? CAPABILITY_ERROR_MAP[error.code] : undefined;
+ if (mapped !== undefined && isError2(error)) {
+ return errEnvelope(mapped, error.message, requestId, error.stack);
+ }
+ return errEnvelope(
+ ErrorCode.INTERNAL_ERROR,
+ error instanceof Error ? error.message : String(error),
+ requestId,
+ error instanceof Error ? error.stack : undefined,
+ );
+}
diff --git a/packages/kap-server/src/routes/plugins.ts b/packages/kap-server/src/routes/plugins.ts
new file mode 100644
index 00000000000..63a7d79ea5d
--- /dev/null
+++ b/packages/kap-server/src/routes/plugins.ts
@@ -0,0 +1,411 @@
+/**
+ * `/plugins` REST routes — plugin management and the marketplace catalog.
+ *
+ * GET /plugins data: {plugins: PluginSummary[]}
+ * GET /plugins/marketplace data: {entries: MarketplaceEntry[]}
+ * POST /plugins body {source} data: PluginSummary
+ * POST /plugins/{plugin_id}:enable|:disable|:remove
+ *
+ * Thin projection of the App-scope `IPluginService` (install/remove/enable
+ * are serialized there and fire `onDidReload`, which converges session skill
+ * catalogs and the capability shelf-install hook). The marketplace catalog is
+ * read on demand from the configured location (`pluginMarketplaceUrl` server
+ * option, env `KIMI_CODE_PLUGIN_MARKETPLACE_URL`, default the production
+ * catalog) through the shared `app/plugin/marketplace` client — catalog
+ * reading, the lenient entry normalization, source resolution, and version
+ * derivation all live there (one implementation, consumed by the CLI too).
+ * When the location is the built-in default, a failed read falls back to the
+ * source checkout's own catalog (offline dev); an explicitly configured
+ * catalog fails hard. The route merges the entries with the live install
+ * state — install status is always detected from the local records, never
+ * from the catalog — and marks capability wiring rows with `capabilityId` so
+ * clients route them through `/capabilities/{id}:install`.
+ *
+ * **Action suffix**: `:enable` / `:disable` / `:remove` via `parseActionSuffix`
+ * (bare ids rejected).
+ *
+ * **Error mapping**:
+ * - unknown plugin id → `40419 plugin.not_found` (from the domain code)
+ * - bad install source / path → `40001 validation.failed` / `40409 fs.path_not_found`
+ * - malformed `{tail}` / body → `40001 validation.failed`
+ * - catalog unreachable/invalid → `50001` with a plain-language message
+ * - other errors → `50001` via the global error handler
+ */
+
+import { stat } from 'node:fs/promises';
+import { resolve } from 'node:path';
+
+import {
+ computeUpdateStatus,
+ ErrorCodes as DomainErrorCodes,
+ ICapabilityService,
+ IPluginService,
+ PluginErrors,
+ isError2,
+ parsePluginMarketplace,
+ readPluginMarketplace,
+ withLatestVersions,
+ type MarketplaceLocation,
+ type PluginMarketplace,
+ type Scope,
+} from '@moonshot-ai/agent-core-v2';
+import { z } from 'zod';
+
+import { errEnvelope, okEnvelope } from '../envelope';
+import { defineRoute } from '../middleware/defineRoute';
+import { ErrorCode } from '../protocol/error-codes';
+import {
+ installPluginRequestSchema,
+ listPluginsResponseSchema,
+ pluginMarketplaceResponseSchema,
+ pluginIdParamSchema,
+ pluginSummarySchema,
+ type PluginMarketplaceEntryWire,
+} from '../protocol/rest-plugin';
+import { parseActionSuffix } from './action-suffix';
+
+interface PluginsRouteHost {
+ get(
+ path: string,
+ options: { preHandler: unknown[]; schema?: Record },
+ handler: (
+ req: { id: string; params: unknown },
+ reply: { send(payload: unknown): unknown },
+ ) => Promise | void,
+ ): unknown;
+ post(
+ path: string,
+ options: { preHandler: unknown[]; schema?: Record },
+ handler: (
+ req: { id: string; body: unknown; params: unknown },
+ reply: { send(payload: unknown): unknown },
+ ) => Promise | void,
+ ): unknown;
+}
+
+const PLUGIN_ACTIONS = ['enable', 'disable', 'remove'] as const;
+
+/**
+ * Capability wiring plugin id → capability id, applied only to the DEFAULT
+ * catalog (a custom catalog may legitimately carry a same-id fork — the CLI
+ * likewise injects built-in rows only for the default catalog). The closed
+ * id set belongs to the client/engine contract (mirrored by the klient
+ * schema; the CLI names it inline). Marking these rows lets clients route
+ * them through `/capabilities/{id}:install` — a plain `POST /plugins`
+ * installs only the wiring layer, never the binary runtime.
+ */
+const CAPABILITY_ROW_IDS: Readonly<
+ Record
+> = {
+ // kimi-cu's wiring plugin id is platform-specific ('kimi-cu-win' on
+ // Windows x64); the catalog row joins install state through either id.
+ 'kimi-cu': { capabilityId: 'kimi-cu', wiringPluginIds: ['kimi-cu', 'kimi-cu-win'] },
+ 'kimi-cu-win': { capabilityId: 'kimi-cu', wiringPluginIds: ['kimi-cu', 'kimi-cu-win'] },
+ 'kimi-webbridge': { capabilityId: 'kimi-webbridge', wiringPluginIds: ['kimi-webbridge'] },
+};
+
+/**
+ * Wiring plugin ids in this platform's preference order — the canonical one
+ * first ('kimi-cu-win' on Windows x64), so a stale same-id record never
+ * shadows the capability's actual wiring plugin.
+ */
+function orderedWiringPluginIds(ids: readonly string[]): readonly string[] {
+ if (process.platform === 'win32' && process.arch === 'x64' && ids.includes('kimi-cu-win')) {
+ return ['kimi-cu-win', ...ids.filter((id) => id !== 'kimi-cu-win')];
+ }
+ return ids;
+}
+
+const MARKETPLACE_FETCH_TIMEOUT_MS = 10_000;
+
+function fetchWithTimeout(...args: Parameters): Promise {
+ const [input, init] = args;
+ return fetch(input, { ...init, signal: AbortSignal.timeout(MARKETPLACE_FETCH_TIMEOUT_MS) });
+}
+
+/**
+ * The repo checkout's own catalog — the fallback when the default location
+ * is unreachable (offline / source-checkout dev). Absent in bundled
+ * installs, where the fallback simply never fires.
+ */
+async function getSourceCheckoutLocation(): Promise {
+ const candidate = resolve(import.meta.dirname, '../../../../plugins/marketplace.json');
+ const info = await stat(candidate).catch(() => undefined);
+ if (info?.isFile() !== true) return undefined;
+ return { raw: candidate, kind: 'local', resolved: candidate };
+}
+
+export interface PluginsRouteOptions {
+ /** Resolved catalog URL (server option / env already applied by start.ts). */
+ readonly marketplaceUrl: string;
+ /**
+ * True when the catalog location is the built-in default (neither the
+ * server option nor the env var set) — only then does a failed remote read
+ * fall back to the source-checkout catalog and get capability markers
+ * (an explicitly configured catalog fails hard and stays unmarked).
+ */
+ readonly marketplaceIsDefault?: boolean;
+ readonly fetchImpl?: typeof fetch;
+}
+
+export function registerPluginsRoutes(
+ app: PluginsRouteHost,
+ core: Scope,
+ opts: PluginsRouteOptions,
+): void {
+ // GET /plugins/marketplace — registered BEFORE /plugins/{tail} so the
+ // literal segment wins over the param route.
+ const marketplaceRoute = defineRoute(
+ {
+ method: 'GET',
+ path: '/plugins/marketplace',
+ success: { data: pluginMarketplaceResponseSchema },
+ errors: {},
+ description: 'List the plugin marketplace catalog merged with live install state',
+ tags: ['plugins'],
+ operationId: 'listPluginMarketplace',
+ },
+ async (req, reply) => {
+ const fetchImpl = opts.fetchImpl ?? fetchWithTimeout;
+ let read: { raw: string; location: MarketplaceLocation };
+ try {
+ read = await readPluginMarketplace({
+ source: opts.marketplaceUrl,
+ workDir: process.cwd(),
+ fetchImpl,
+ sourceCheckoutLocation:
+ opts.marketplaceIsDefault === true ? getSourceCheckoutLocation : undefined,
+ });
+ } catch (error) {
+ reply.send(
+ errEnvelope(
+ ErrorCode.INTERNAL_ERROR,
+ `Plugin marketplace is unreachable: ${error instanceof Error ? error.message : String(error)}`,
+ req.id,
+ ),
+ );
+ return;
+ }
+ let marketplace: PluginMarketplace;
+ try {
+ marketplace = parsePluginMarketplace(read.raw, read.location);
+ } catch (error) {
+ reply.send(
+ errEnvelope(
+ ErrorCode.INTERNAL_ERROR,
+ `Plugin marketplace returned an invalid catalog: ${error instanceof Error ? error.message : String(error)}`,
+ req.id,
+ ),
+ );
+ return;
+ }
+ // The default catalog is completed with the built-in capability rows
+ // it does not carry itself (e.g. kimi-cu) — the CLI injects the same
+ // rows client-side. Injected before the projection below so they get
+ // the same install-state join and capabilityId marker; the
+ // `capability:` source is a sentinel, never a plain-plugin source.
+ if (opts.marketplaceIsDefault === true) {
+ const presentIds = new Set(marketplace.plugins.map((entry) => entry.id));
+ const missing = core.accessor
+ .get(ICapabilityService)
+ .describeCapabilities()
+ .filter((descriptor) => descriptor.supported && !presentIds.has(descriptor.id))
+ .map((descriptor) => ({
+ id: descriptor.id,
+ tier: 'official' as const,
+ displayName: descriptor.displayName,
+ description: descriptor.description,
+ source: `capability:${descriptor.id}`,
+ }));
+ if (missing.length > 0) {
+ marketplace = { ...marketplace, plugins: [...marketplace.plugins, ...missing] };
+ }
+ }
+ marketplace = await withLatestVersions(marketplace, fetchImpl);
+ const installed = await core.accessor.get(IPluginService).listPlugins();
+ const byId = new Map(installed.map((p) => [p.id, p]));
+ // Capability rows unsupported on this host are hidden entirely (the CLI
+ // does the same for its built-in rows) — never marked, never offered.
+ const supportedCapabilityIds = new Set(
+ core.accessor
+ .get(ICapabilityService)
+ .describeCapabilities()
+ .filter((descriptor) => descriptor.supported)
+ .map((descriptor) => descriptor.id),
+ );
+ const entries: PluginMarketplaceEntryWire[] = [];
+ for (const entry of marketplace.plugins) {
+ const capabilityRow =
+ opts.marketplaceIsDefault === true ? CAPABILITY_ROW_IDS[entry.id] : undefined;
+ if (
+ capabilityRow !== undefined &&
+ !supportedCapabilityIds.has(capabilityRow.capabilityId)
+ ) {
+ continue;
+ }
+
+ // Capability rows join through the wiring plugin ids (platform order)
+ // BEFORE the bare catalog id — a stale same-id record must not win.
+ const record =
+ capabilityRow !== undefined
+ ? (orderedWiringPluginIds(capabilityRow.wiringPluginIds)
+ .map((id) => byId.get(id))
+ .find((candidate) => candidate !== undefined) ?? byId.get(entry.id))
+ : byId.get(entry.id);
+ const installedInfo =
+ record === undefined
+ ? undefined
+ : { enabled: record.enabled, version: record.version };
+ const updateAvailable =
+ computeUpdateStatus(entry.version, record?.version, record !== undefined).kind ===
+ 'update';
+ entries.push({
+ id: entry.id,
+ tier: entry.tier ?? 'third-party',
+ displayName: entry.displayName,
+ description: entry.description,
+ homepage: entry.homepage,
+ keywords: entry.keywords === undefined ? undefined : [...entry.keywords],
+ version: entry.version,
+ source: entry.source,
+ installed: installedInfo,
+ updateAvailable: updateAvailable ? true : undefined,
+ capabilityId: capabilityRow?.capabilityId,
+ });
+ }
+ reply.send(okEnvelope({ entries }, req.id));
+ },
+ );
+ app.get(
+ marketplaceRoute.path,
+ marketplaceRoute.options,
+ marketplaceRoute.handler as Parameters[2],
+ );
+
+ // GET /plugins ------------------------------------------------------------
+ const listRoute = defineRoute(
+ {
+ method: 'GET',
+ path: '/plugins',
+ success: { data: listPluginsResponseSchema },
+ errors: {},
+ description: 'List installed plugins',
+ tags: ['plugins'],
+ operationId: 'listPlugins',
+ },
+ async (req, reply) => {
+ const plugins = await core.accessor.get(IPluginService).listPlugins();
+ reply.send(okEnvelope({ plugins }, req.id));
+ },
+ );
+ app.get(
+ listRoute.path,
+ listRoute.options,
+ listRoute.handler as Parameters[2],
+ );
+
+ // POST /plugins {source} --------------------------------------------------
+ const installRoute = defineRoute(
+ {
+ method: 'POST',
+ path: '/plugins',
+ body: installPluginRequestSchema,
+ success: { data: pluginSummarySchema },
+ errors: {
+ [ErrorCode.VALIDATION_FAILED]: {},
+ [ErrorCode.FS_PATH_NOT_FOUND]: {},
+ },
+ description: 'Install a plugin from a local path, zip URL, or GitHub repo',
+ tags: ['plugins'],
+ operationId: 'installPlugin',
+ },
+ async (req, reply) => {
+ try {
+ const plugin = await core.accessor.get(IPluginService).installPlugin(req.body);
+ reply.send(okEnvelope(plugin, req.id));
+ } catch (error) {
+ reply.send(mapPluginError(error, req.id));
+ }
+ },
+ );
+ app.post(
+ installRoute.path,
+ installRoute.options,
+ installRoute.handler as Parameters[2],
+ );
+
+ // POST /plugins/{plugin_id}:{enable|disable|remove} ------------------------
+ const actionRoute = defineRoute(
+ {
+ method: 'POST',
+ path: '/plugins/{tail}',
+ params: pluginIdParamSchema,
+ success: { data: z.object({ ok: z.literal(true) }) },
+ errors: {
+ [ErrorCode.VALIDATION_FAILED]: {},
+ [ErrorCode.PLUGIN_NOT_FOUND]: {},
+ },
+ description: 'Enable, disable, or remove an installed plugin',
+ tags: ['plugins'],
+ operationId: 'pluginAction',
+ },
+ async (req, reply) => {
+ const parsed = parseActionSuffix({
+ tail: req.params.tail,
+ allowedActions: PLUGIN_ACTIONS,
+ resourceLabel: 'plugin',
+ });
+ if (parsed.kind !== 'action') {
+ const message =
+ parsed.kind === 'invalid' ? parsed.reason : `unsupported action: ${req.params.tail}`;
+ reply.send(errEnvelope(ErrorCode.VALIDATION_FAILED, message, req.id));
+ return;
+ }
+ const plugins = core.accessor.get(IPluginService);
+ try {
+ switch (parsed.action) {
+ case 'enable':
+ await plugins.setPluginEnabled({ id: parsed.id, enabled: true });
+ break;
+ case 'disable':
+ await plugins.setPluginEnabled({ id: parsed.id, enabled: false });
+ break;
+ case 'remove':
+ await plugins.removePlugin({ id: parsed.id });
+ break;
+ }
+ reply.send(okEnvelope({ ok: true as const }, req.id));
+ } catch (error) {
+ reply.send(mapPluginError(error, req.id));
+ }
+ },
+ );
+ app.post(
+ actionRoute.path,
+ actionRoute.options,
+ actionRoute.handler as Parameters[2],
+ );
+}
+
+const PLUGIN_ERROR_MAP: Readonly> = {
+ [PluginErrors.codes.PLUGIN_NOT_FOUND]: ErrorCode.PLUGIN_NOT_FOUND,
+ // Client-fixable input mistakes (relative source, missing local path, an
+ // unloadable manifest at a valid location) keep their 4xx semantics
+ // instead of collapsing into a 50001.
+ [PluginErrors.codes.PLUGIN_LOAD_FAILED]: ErrorCode.VALIDATION_FAILED,
+ [DomainErrorCodes.VALIDATION_FAILED]: ErrorCode.VALIDATION_FAILED,
+ [DomainErrorCodes.FS_PATH_NOT_FOUND]: ErrorCode.FS_PATH_NOT_FOUND,
+};
+
+function mapPluginError(error: unknown, requestId: string) {
+ const mapped = isError2(error) ? PLUGIN_ERROR_MAP[error.code] : undefined;
+ if (mapped !== undefined && isError2(error)) {
+ return errEnvelope(mapped, error.message, requestId, error.stack);
+ }
+ return errEnvelope(
+ ErrorCode.INTERNAL_ERROR,
+ error instanceof Error ? error.message : String(error),
+ requestId,
+ error instanceof Error ? error.stack : undefined,
+ );
+}
diff --git a/packages/kap-server/src/routes/registerApiV1Routes.ts b/packages/kap-server/src/routes/registerApiV1Routes.ts
index 1bb705a3a29..3a2231e1d1b 100644
--- a/packages/kap-server/src/routes/registerApiV1Routes.ts
+++ b/packages/kap-server/src/routes/registerApiV1Routes.ts
@@ -20,6 +20,7 @@ import { type SessionEventBroadcaster } from '../transport/ws/v1/sessionEventBro
import type { TranscriptService } from '../services/transcript/transcriptService';
import { registerApprovalsRoutes } from './approvals';
import { registerAuthRoute } from './auth';
+import { registerCapabilitiesRoutes } from './capabilities';
import { registerConfigRoutes } from './config';
import { registerConnectionsRoutes } from './connections';
import { registerFilesRoutes } from './files';
@@ -31,6 +32,7 @@ import { registerDebugRoutes } from '../transport/registerDebugRoutes';
import { registerMetaRoute } from './meta';
import { registerModelCatalogRoutes } from './modelCatalog';
import { registerOAuthRoutes } from './oauth';
+import { registerPluginsRoutes } from './plugins';
import { registerPromptsRoutes } from './prompts';
import { registerQuestionsRoutes } from './questions';
import { registerSearchRoutes } from './search';
@@ -76,6 +78,10 @@ export interface RegisterApiV1RoutesOptions {
readonly connectionRegistry: IConnectionRegistry;
readonly broadcaster: SessionEventBroadcaster;
readonly transcriptService: TranscriptService;
+ /** Catalog URL for the `/plugins/marketplace` route (resolved by start.ts). */
+ readonly pluginMarketplaceUrl: string;
+ /** True when the catalog URL is the built-in default (no option/env set). */
+ readonly pluginMarketplaceIsDefault: boolean;
/**
* Surface `dangerous_bypass_auth` in the `/meta` payload. Set by `start.ts`
* from the `disableAuth` server option (the `--dangerous-bypass-auth` CLI
@@ -132,6 +138,14 @@ export async function registerApiV1Routes(
{ hostIdentity: opts.hostIdentity },
);
registerSkillsRoutes(apiV1 as unknown as Parameters[0], core);
+ registerCapabilitiesRoutes(
+ apiV1 as unknown as Parameters[0],
+ core,
+ );
+ registerPluginsRoutes(apiV1 as unknown as Parameters[0], core, {
+ marketplaceUrl: opts.pluginMarketplaceUrl,
+ marketplaceIsDefault: opts.pluginMarketplaceIsDefault,
+ });
registerMessagesRoutes(
apiV1 as unknown as Parameters[0],
core,
diff --git a/packages/kap-server/src/routes/sessionExport.ts b/packages/kap-server/src/routes/sessionExport.ts
index bc47540490a..8fa1788a514 100644
--- a/packages/kap-server/src/routes/sessionExport.ts
+++ b/packages/kap-server/src/routes/sessionExport.ts
@@ -29,8 +29,6 @@ import {
exportSessionRequestSchema,
} from '../protocol/rest-session';
-const MAX_WEB_SESSION_EXPORT_BYTES = 64 * 1024 * 1024;
-
interface SessionExportRouteHost {
post(
path: string,
@@ -64,7 +62,6 @@ export function registerSessionExportRoute(
errors: {
[ErrorCode.VALIDATION_FAILED]: {},
[ErrorCode.SESSION_NOT_FOUND]: {},
- [ErrorCode.FILE_TOO_LARGE]: {},
[ErrorCode.INTERNAL_ERROR]: {},
},
description: 'Export a session and diagnostic logs as a zip archive',
@@ -132,7 +129,6 @@ export function registerSessionExportRoute(
{
webLog: req.body.web_log,
signal: exportAbort.signal,
- maxArchiveBytes: MAX_WEB_SESSION_EXPORT_BYTES,
},
);
if (aborted) {
@@ -200,16 +196,6 @@ function sendMappedError(reply: SessionExportReply, req: { id: string }, error:
reply.send(errEnvelope(ErrorCode.SESSION_NOT_FOUND, error.message, requestId));
return;
}
- if (error.code === ErrorCodes.SESSION_EXPORT_TOO_LARGE) {
- reply.send(
- errEnvelope(
- ErrorCode.FILE_TOO_LARGE,
- 'session export exceeds the 64 MiB web limit',
- requestId,
- ),
- );
- return;
- }
}
requestLog(req)?.error({ err: error }, 'session export failed');
reply.send(
diff --git a/packages/kap-server/src/routes/tasks.ts b/packages/kap-server/src/routes/tasks.ts
index e83bf9a0d58..744b54e90e4 100644
--- a/packages/kap-server/src/routes/tasks.ts
+++ b/packages/kap-server/src/routes/tasks.ts
@@ -375,6 +375,15 @@ function toWireTask(
if (info.kind === 'agent' && info.thinkingEffort !== undefined) {
base.thinking_effort = info.thinkingEffort;
}
+ if (info.kind === 'agent' && info.agentId !== undefined) {
+ base.agent_id = info.agentId;
+ }
+ if (info.kind === 'agent' && info.subagentType !== undefined) {
+ base.subagent_type = info.subagentType;
+ }
+ if (info.kind === 'agent' && info.parentToolCallId !== undefined) {
+ base.parent_tool_call_id = info.parentToolCallId;
+ }
if (output !== undefined) {
base.output_preview = output.preview;
base.output_bytes = output.bytes;
diff --git a/packages/kap-server/src/routes/webAssets.ts b/packages/kap-server/src/routes/webAssets.ts
index 7b7ad017600..e453593171b 100644
--- a/packages/kap-server/src/routes/webAssets.ts
+++ b/packages/kap-server/src/routes/webAssets.ts
@@ -1,6 +1,6 @@
import { createReadStream } from 'node:fs';
import { stat } from 'node:fs/promises';
-import { extname, join, normalize, resolve, sep } from 'node:path';
+import { extname, join, normalize, relative, resolve, sep } from 'node:path';
import type { FastifyReply, FastifyRequest } from 'fastify';
@@ -56,10 +56,20 @@ async function serveWebAsset(
return reply
.type(mimeType(filePath))
+ .header('Cache-Control', cacheControl(assetsDir, filePath))
.header('Content-Length', String(fileInfo.size))
.send(createReadStream(filePath));
}
+function cacheControl(assetsDir: string, filePath: string): string {
+ const assetPath = relative(assetsDir, filePath);
+ const fileName = filePath.slice(filePath.lastIndexOf(sep) + 1);
+ if (assetPath.startsWith(`assets${sep}`) && /[-.][A-Za-z0-9_-]{8}\.[^.]+$/.test(fileName)) {
+ return 'public, max-age=31536000, immutable';
+ }
+ return 'no-cache';
+}
+
async function resolveStaticFile(
assetsDir: string,
pathname: string,
diff --git a/packages/kap-server/src/start.ts b/packages/kap-server/src/start.ts
index 91d5b74276c..ad84e493f8d 100644
--- a/packages/kap-server/src/start.ts
+++ b/packages/kap-server/src/start.ts
@@ -17,7 +17,10 @@ import {
IProviderDiscoveryService,
ISessionIndex,
ISessionIndexMirror,
+ ICapabilityService,
+ IPluginService,
IWorkspaceService,
+ KIMI_CODE_PLUGIN_MARKETPLACE_URL,
logSeed,
resolveConfigPath,
resolveKimiHome,
@@ -104,6 +107,12 @@ export interface ServerStartOptions {
readonly host?: string;
readonly port?: number;
readonly homeDir?: string;
+ /**
+ * Plugin marketplace catalog URL for `GET /api/v1/plugins/marketplace`.
+ * Defaults to the `KIMI_CODE_PLUGIN_MARKETPLACE_URL` env var, then the
+ * production catalog.
+ */
+ readonly pluginMarketplaceUrl?: string;
readonly configPath?: string;
/**
* Override the instance-registry directory — used in tests that need the
@@ -374,6 +383,8 @@ export async function startServer(opts: ServerStartOptions): Promise => {
await app.close();
configWarningSubscription.dispose();
+ pluginChangeSubscription.dispose();
+ capabilityInstallSubscription.dispose();
authFailureLimiter?.dispose();
modelCatalogRefreshScheduler.dispose();
// Telemetry is best-effort and must never prevent core or instance cleanup.
@@ -443,6 +454,22 @@ export async function startServer(opts: ServerStartOptions): Promise {
+ core.accessor.get(IEventService).publish({ type: 'event.plugin.changed', payload: {} });
+ });
+ const capabilityService = core.accessor.get(ICapabilityService);
+ const capabilityInstallSubscription = capabilityService.onDidChangeInstall((change) => {
+ core.accessor.get(IEventService).publish({
+ type: 'event.capability.changed',
+ payload: { capability_id: change.id, install: change.install },
+ });
+ });
void configService.ready
.then(() => {
if (configService.diagnostics().some((diagnostic) => diagnostic.severity === 'warning')) {
@@ -504,6 +531,16 @@ export async function startServer(opts: ServerStartOptions): Promise {
void close().catch((err: unknown) => logger.error({ err }, 'server close failed'));
},
diff --git a/packages/kap-server/src/transport/ws/v1/events.ts b/packages/kap-server/src/transport/ws/v1/events.ts
index 49474daeaba..dbf8c31aaec 100644
--- a/packages/kap-server/src/transport/ws/v1/events.ts
+++ b/packages/kap-server/src/transport/ws/v1/events.ts
@@ -113,6 +113,30 @@ export interface ConfigWarningEvent {
readonly warnings: readonly ConfigWarningItem[];
}
+/**
+ * Plugin set mutation (install / enable / disable / remove from any client).
+ * Bare fan-out signal — clients re-read the plugins REST surface.
+ */
+export interface PluginChangedEvent {
+ readonly type: 'event.plugin.changed';
+}
+
+/**
+ * Capability install progress transition. Global fan-out; clients update the
+ * row live and re-read the capability once it settles (`running: false`).
+ */
+export interface CapabilityChangedEvent {
+ readonly type: 'event.capability.changed';
+ readonly capability_id: string;
+ readonly install: {
+ readonly running: boolean;
+ readonly step?: string;
+ readonly percent?: number;
+ readonly error?: string;
+ readonly note?: string;
+ };
+}
+
/**
* DI unit state transition of the engine's scope tree, produced by
* agent-core-v2's `IDebugCascadeService` (the L5 debug surface feed). Global:
@@ -210,6 +234,8 @@ export type AgentEvent =
| SessionStatusChangedEvent
| ConfigChangedEvent
| ConfigWarningEvent
+ | PluginChangedEvent
+ | CapabilityChangedEvent
| DiUnitChangedEvent
| PromptSubmittedEvent
| BackgroundTaskStartedEvent
@@ -227,6 +253,10 @@ export const VOLATILE_EVENT_TYPES = [
'shell.completed',
'agent.status.updated',
'event.di.unit_changed',
+ // Live-only install progress (per-chunk download ticks) — durable journaling
+ // would persist hundreds of stale frames per install. The settle frame is
+ // recoverable via a direct capability read, so the whole type stays volatile.
+ 'event.capability.changed',
] as const;
export type VolatileEventType = (typeof VOLATILE_EVENT_TYPES)[number];
diff --git a/packages/kap-server/src/transport/ws/v1/sessionEventBroadcaster.ts b/packages/kap-server/src/transport/ws/v1/sessionEventBroadcaster.ts
index 38f151e7d92..303d4b5fe52 100644
--- a/packages/kap-server/src/transport/ws/v1/sessionEventBroadcaster.ts
+++ b/packages/kap-server/src/transport/ws/v1/sessionEventBroadcaster.ts
@@ -939,6 +939,32 @@ export class SessionEventBroadcaster {
);
return;
}
+ if (event.type === 'event.plugin.changed') {
+ // Plugin set mutations (install/enable/disable/remove from ANY client)
+ // fan out so every host re-reads instead of caching stale rows. Bare
+ // signal by design — the payload is the services' own REST surfaces.
+ void this.dispatchGlobal({
+ type: 'event.plugin.changed',
+ agentId: 'main',
+ sessionId: GLOBAL_SESSION_ID,
+ } as Event).catch((error: unknown) =>
+ this.logDispatchError(GLOBAL_SESSION_ID, 'event.plugin.changed', error),
+ );
+ return;
+ }
+ if (event.type === 'event.capability.changed') {
+ const payload = capabilityChangedPayload(event.payload);
+ if (payload === undefined) return;
+ void this.dispatchGlobal({
+ type: 'event.capability.changed',
+ ...payload,
+ agentId: 'main',
+ sessionId: GLOBAL_SESSION_ID,
+ } as Event).catch((error: unknown) =>
+ this.logDispatchError(GLOBAL_SESSION_ID, 'event.capability.changed', error),
+ );
+ return;
+ }
}
private async dispatchGlobal(event: Event): Promise {
@@ -1380,6 +1406,8 @@ function isGlobalEvent(type: string): boolean {
type.startsWith('event.session.') ||
type.startsWith('event.workspace.') ||
type.startsWith('event.config.') ||
+ type.startsWith('event.plugin.') ||
+ type.startsWith('event.capability.') ||
type.startsWith('event.di.')
);
}
@@ -1691,6 +1719,35 @@ function sessionCreatedPayload(
* entry rejects the whole batch — the publisher always sends the full current
* warning set, so a partial frame would be a lie by omission.
*/
+interface CapabilityChangedPayload {
+ capability_id: string;
+ install: {
+ running: boolean;
+ step?: string;
+ percent?: number;
+ error?: string;
+ note?: string;
+ };
+}
+
+function capabilityChangedPayload(payload: unknown): CapabilityChangedPayload | undefined {
+ if (typeof payload !== 'object' || payload === null) return undefined;
+ const id = (payload as { capability_id?: unknown }).capability_id;
+ if (typeof id !== 'string' || id.length === 0) return undefined;
+ const install = (payload as { install?: unknown }).install;
+ if (typeof install !== 'object' || install === null) return undefined;
+ const running = (install as { running?: unknown }).running;
+ if (typeof running !== 'boolean') return undefined;
+ const out: CapabilityChangedPayload['install'] = { running };
+ for (const key of ['step', 'error', 'note'] as const) {
+ const value = (install as Record)[key];
+ if (typeof value === 'string') out[key] = value;
+ }
+ const percent = (install as { percent?: unknown }).percent;
+ if (typeof percent === 'number') out.percent = percent;
+ return { capability_id: id, install: out };
+}
+
function configWarningPayload(payload: unknown): { warnings: ConfigWarningItem[] } | undefined {
if (typeof payload !== 'object' || payload === null) return undefined;
const warnings = (payload as { warnings?: unknown }).warnings;
diff --git a/packages/kap-server/test/__snapshots__/apiSurface.snapshot.test.ts.snap b/packages/kap-server/test/__snapshots__/apiSurface.snapshot.test.ts.snap
index b03321c439f..a12395892b7 100644
--- a/packages/kap-server/test/__snapshots__/apiSurface.snapshot.test.ts.snap
+++ b/packages/kap-server/test/__snapshots__/apiSurface.snapshot.test.ts.snap
@@ -40,6 +40,14 @@ exports[`API surface snapshot > matches the documented v2 route table and meta e
"GET",
"/api/v1/auth",
],
+ [
+ "GET",
+ "/api/v1/capabilities",
+ ],
+ [
+ "GET",
+ "/api/v1/capabilities/{capability_id}",
+ ],
[
"GET",
"/api/v1/catalog/providers",
@@ -128,6 +136,14 @@ exports[`API surface snapshot > matches the documented v2 route table and meta e
"GET",
"/api/v1/oauth/userinfo",
],
+ [
+ "GET",
+ "/api/v1/plugins",
+ ],
+ [
+ "GET",
+ "/api/v1/plugins/marketplace",
+ ],
[
"GET",
"/api/v1/providers",
@@ -260,6 +276,10 @@ exports[`API surface snapshot > matches the documented v2 route table and meta e
"PATCH",
"/api/v1/workspaces/{workspace_id}",
],
+ [
+ "POST",
+ "/api/v1/capabilities/{tail}",
+ ],
[
"POST",
"/api/v1/config",
@@ -316,6 +336,14 @@ exports[`API surface snapshot > matches the documented v2 route table and meta e
"POST",
"/api/v1/oauth/logout",
],
+ [
+ "POST",
+ "/api/v1/plugins",
+ ],
+ [
+ "POST",
+ "/api/v1/plugins/{tail}",
+ ],
[
"POST",
"/api/v1/providers",
diff --git a/packages/kap-server/test/capabilities.test.ts b/packages/kap-server/test/capabilities.test.ts
new file mode 100644
index 00000000000..09715db6e7c
--- /dev/null
+++ b/packages/kap-server/test/capabilities.test.ts
@@ -0,0 +1,138 @@
+/**
+ * `/api/v1` capabilities routes — wire contract:
+ * - GET /api/v1/capabilities → envelope shape + both entries
+ * - GET /api/v1/capabilities/{unknown} → 40418
+ * - POST /api/v1/capabilities/{unknown}:install → 40418
+ * - POST /api/v1/capabilities/{id} (bare) → 40001
+ * - POST /api/v1/capabilities/{id}:{bogus} → 40001
+ * - POST /api/v1/capabilities/kimi-cu:install on an unsupported host → 40925
+ * (skipped on macOS and Windows x64, where kimi-cu is supported)
+ *
+ * Real installs are never triggered from tests: the only `:install` calls
+ * target an unknown id or an unsupported platform. `GET` runs the entries'
+ * read-only detection against the isolated home dir.
+ */
+
+import { mkdtemp, rm } from 'node:fs/promises';
+import { tmpdir } from 'node:os';
+import { join } from 'node:path';
+
+import { afterEach, beforeEach, describe, expect, it } from 'vitest';
+
+import {
+ capabilityStatusSchema,
+ listCapabilitiesResponseSchema,
+} from '../src/protocol/rest-capability';
+import { type RunningServer, startServer } from '../src/start';
+import { TEST_HOST_IDENTITY } from './helpers/hostIdentity';
+import { authHeaders } from './helpers/auth';
+
+interface Envelope {
+ code: number;
+ msg: string;
+ data: T;
+ request_id: string;
+}
+
+describe('server-v2 /api/v1 capabilities', () => {
+ let server: RunningServer | undefined;
+ let home: string | undefined;
+ let base: string;
+
+ beforeEach(async () => {
+ home = await mkdtemp(join(tmpdir(), 'kimi-server-v2-capabilities-'));
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home,
+ logLevel: 'silent',
+ });
+ base = `http://127.0.0.1:${server.port}`;
+ });
+
+ afterEach(async () => {
+ if (server !== undefined) {
+ await server.close();
+ server = undefined;
+ }
+ if (home !== undefined) {
+ await rm(home, { recursive: true, force: true, maxRetries: 3, retryDelay: 25 } as never);
+ home = undefined;
+ }
+ });
+
+ async function getJson(path: string): Promise<{ status: number; body: Envelope }> {
+ const res = await fetch(`${base}${path}`, {
+ headers: authHeaders(server as RunningServer),
+ } as never);
+ return { status: res.status, body: (await res.json()) as Envelope };
+ }
+
+ async function postJson(path: string): Promise<{ status: number; body: Envelope }> {
+ const res = await fetch(`${base}${path}`, {
+ method: 'POST',
+ headers: authHeaders(server as RunningServer, { 'content-type': 'application/json' }),
+ body: '{}',
+ } as never);
+ return { status: res.status, body: (await res.json()) as Envelope };
+ }
+
+ it('lists both built-in capabilities with the documented shape', async () => {
+ const { body } = await getJson('/api/v1/capabilities');
+ expect(body.code).toBe(0);
+ const parsed = listCapabilitiesResponseSchema.parse(body.data);
+ const ids = parsed.capabilities.map((c) => c.id).toSorted();
+ expect(ids).toEqual(['kimi-cu', 'kimi-webbridge']);
+ for (const capability of parsed.capabilities) {
+ expect(capabilityStatusSchema.parse(capability)).toBeTruthy();
+ expect(capability.install.running).toBe(false);
+ }
+ // Platform-gated entry: kimi-cu runs on macOS and Windows x64.
+ const kimiCu = parsed.capabilities.find((c) => c.id === 'kimi-cu');
+ if (process.platform === 'darwin' || (process.platform === 'win32' && process.arch === 'x64')) {
+ expect(kimiCu?.supported).toBe(true);
+ } else {
+ expect(kimiCu?.supported).toBe(false);
+ expect(kimiCu?.state).toBe('unsupported');
+ }
+ // The isolated home dir has no plugin records → the skill step is missing.
+ const webbridge = parsed.capabilities.find((c) => c.id === 'kimi-webbridge');
+ expect(webbridge?.supported).toBe(true);
+ expect(webbridge?.steps.find((s) => s.id === 'skill')?.state).toBe('missing');
+ // The browser extension is a soft gate (never blocks readiness).
+ expect(webbridge?.steps.find((s) => s.id === 'extension')?.optional).toBe(true);
+ });
+
+ it('gets a single capability and 40418s on an unknown id', async () => {
+ const { body } = await getJson('/api/v1/capabilities/kimi-webbridge');
+ expect(body.code).toBe(0);
+ expect(capabilityStatusSchema.parse(body.data).id).toBe('kimi-webbridge');
+
+ const missing = await getJson('/api/v1/capabilities/nope');
+ expect(missing.body.code).toBe(40418);
+ expect(missing.body.data).toBeNull();
+ });
+
+ it('installs 40418 on an unknown id without side effects', async () => {
+ const { body } = await postJson('/api/v1/capabilities/nope:install');
+ expect(body.code).toBe(40418);
+ });
+
+ it('rejects bare ids and unknown actions with 40001', async () => {
+ const bare = await postJson('/api/v1/capabilities/kimi-cu');
+ expect(bare.body.code).toBe(40001);
+ const bogus = await postJson('/api/v1/capabilities/kimi-cu:uninstall');
+ expect(bogus.body.code).toBe(40001);
+ });
+
+ // kimi-cu is supported on macOS and Windows x64 — only genuinely
+ // unsupported platforms (Linux, win32-arm64, …) get the 40924 rejection.
+ it.skipIf(process.platform === 'darwin' || (process.platform === 'win32' && process.arch === 'x64'))(
+ 'rejects kimi-cu install on unsupported platforms with 40925',
+ async () => {
+ const { body } = await postJson('/api/v1/capabilities/kimi-cu:install');
+ expect(body.code).toBe(40925);
+ },
+ );
+});
diff --git a/packages/kap-server/test/plugins.test.ts b/packages/kap-server/test/plugins.test.ts
new file mode 100644
index 00000000000..7d10ef179b6
--- /dev/null
+++ b/packages/kap-server/test/plugins.test.ts
@@ -0,0 +1,632 @@
+/**
+ * `/api/v1` plugins routes — wire contract:
+ * - GET /plugins → installed list (empty → 1 after install)
+ * - POST /plugins {source} → installs (local path), returns summary
+ * - POST /plugins/{id}:disable / :enable → toggles enabled
+ * - POST /plugins/{id}:remove → removes
+ * - POST bare id / bogus action → 40001
+ * - POST unknown id :remove → 40419
+ * - POST relative / nonexistent source → 40001 / 40409 (never 50001)
+ * - GET /plugins/marketplace → catalog merged with live install state
+ * - GET /plugins/marketplace unreachable → 50001
+ *
+ * The marketplace catalog is served by a stubbed global fetch; installs use
+ * local-path sources in temp dirs (no network).
+ */
+
+import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
+import { tmpdir } from 'node:os';
+import { join } from 'node:path';
+import { pathToFileURL } from 'node:url';
+
+import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
+
+import { WebSocket } from 'ws';
+
+import { type RunningServer, startServer } from '../src/start';
+import { TEST_HOST_IDENTITY } from './helpers/hostIdentity';
+import { authHeaders, bearerToken } from './helpers/auth';
+
+interface Envelope {
+ code: number;
+ msg: string;
+ data: T;
+ request_id: string;
+}
+
+const CATALOG_URL = 'http://marketplace.test/marketplace.json';
+
+const CATALOG = {
+ version: '1',
+ plugins: [
+ {
+ id: 'demo-plugin',
+ tier: 'official',
+ displayName: 'Demo Plugin',
+ // A `v`-prefixed catalog version still drives the update check.
+ version: 'v2.0.0',
+ source: 'https://cdn.example.test/demo.zip',
+ },
+ {
+ id: 'third-party-plugin',
+ displayName: 'Third Party',
+ source: 'https://github.com/example/third',
+ },
+ {
+ // Catalog-relative source (the production CDN catalog's shape).
+ id: 'relative-plugin',
+ displayName: 'Relative',
+ source: './plugins/relative.zip',
+ },
+ {
+ // Legacy `url` alias (accepted by the CLI parser); a blank `source`
+ // must not shadow the alias.
+ id: 'alias-plugin',
+ displayName: 'Alias',
+ source: ' ',
+ url: './plugins/alias.zip',
+ },
+ {
+ // A blank tier reads as missing (third-party), not a validation error.
+ id: 'blank-tier-plugin',
+ displayName: 'Blank Tier',
+ tier: ' ',
+ source: 'https://example.test/bt.zip',
+ },
+ {
+ // A non-string version reads as missing, so the GitHub release-tag
+ // source supplies it.
+ id: 'gh-plugin',
+ displayName: 'GH Plugin',
+ version: 2,
+ source: 'https://github.com/example/gh/releases/tag/v2.0.0',
+ },
+ {
+ // A capability's wiring plugin — the response marks it so clients
+ // route the install through the capability surface.
+ id: 'kimi-webbridge',
+ displayName: 'Kimi WebBridge',
+ source: 'https://cdn.example.test/kimi-webbridge.zip',
+ },
+ {
+ // kimi-cu joins install state through the platform wiring id too
+ // ('kimi-cu-win' on Windows x64).
+ id: 'kimi-cu',
+ displayName: 'Kimi Computer Use',
+ source: 'https://cdn.example.test/kimi-cu.zip',
+ },
+ {
+ // CLI metadata aliases: name / shortDescription / websiteURL.
+ // The padded id trims before the install-state join.
+ id: ' meta-alias-plugin ',
+ name: 'Meta Alias',
+ shortDescription: 'Aliased metadata',
+ websiteURL: 'https://example.test/meta',
+ keywords: ['web', 3, ' ', 'tools'],
+ source: 'https://example.test/meta.zip',
+ },
+ ],
+};
+
+describe('server-v2 /api/v1 plugins', () => {
+ let server: RunningServer | undefined;
+ let home: string | undefined;
+ let base: string;
+ const createdDirs: string[] = [];
+
+ beforeEach(async () => {
+ home = await mkdtemp(join(tmpdir(), 'kimi-server-v2-plugins-'));
+ const realFetch = globalThis.fetch;
+ vi.stubGlobal(
+ 'fetch',
+ vi.fn(async (url: string | URL, init?: RequestInit) => {
+ if (url === CATALOG_URL) {
+ return new Response(JSON.stringify(CATALOG), { status: 200 });
+ }
+ // Latest-release lookups for bare GitHub repo sources.
+ if (url === 'https://github.com/example/third/releases/latest') {
+ return new Response(null, {
+ status: 302,
+ headers: { location: 'https://github.com/example/third/releases/tag/v3.1.0' },
+ });
+ }
+ if (typeof url === 'string' && url.includes('/releases/latest')) {
+ return new Response(null, { status: 404 });
+ }
+ return realFetch(url as never, init);
+ }),
+ );
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home,
+ logLevel: 'silent',
+ pluginMarketplaceUrl: CATALOG_URL,
+ });
+ base = `http://127.0.0.1:${server.port}`;
+ });
+
+ afterEach(async () => {
+ vi.unstubAllGlobals();
+ vi.unstubAllEnvs();
+ if (server !== undefined) {
+ await server.close();
+ server = undefined;
+ }
+ for (const dir of createdDirs.splice(0)) {
+ await rm(dir, { recursive: true, force: true });
+ }
+ if (home !== undefined) {
+ await rm(home, { recursive: true, force: true, maxRetries: 3, retryDelay: 25 } as never);
+ home = undefined;
+ }
+ });
+
+ async function call(
+ method: 'GET' | 'POST',
+ path: string,
+ body?: unknown,
+ ): Promise<{ status: number; body: Envelope }> {
+ const res = await fetch(`${base}${path}`, {
+ method,
+ headers: authHeaders(server as RunningServer, { 'content-type': 'application/json' }),
+ // A JSON content-type with an empty body is rejected by Fastify.
+ body: method === 'POST' ? JSON.stringify(body ?? {}) : undefined,
+ } as never);
+ return { status: res.status, body: (await res.json()) as Envelope };
+ }
+
+ async function makePluginDir(id: string, version: string): Promise {
+ const dir = await mkdtemp(join(tmpdir(), `kimi-test-plugin-${id}-`));
+ createdDirs.push(dir);
+ await writeFile(
+ join(dir, 'kimi.plugin.json'),
+ JSON.stringify({ name: id, version, description: 'test plugin' }),
+ );
+ return dir;
+ }
+
+ it('installs, lists, disables, enables, and removes a plugin', async () => {
+ const empty = await call<{ plugins: unknown[] }>('GET', '/api/v1/plugins');
+ expect(empty.body.data.plugins).toEqual([]);
+
+ const source = await makePluginDir('demo-plugin', '1.0.0');
+ const installed = await call<{ id: string; version: string; enabled: boolean }>(
+ 'POST',
+ '/api/v1/plugins',
+ { source },
+ );
+ expect(installed.body.code).toBe(0);
+ expect(installed.body.data).toMatchObject({ id: 'demo-plugin', version: '1.0.0', enabled: true });
+
+ const list = await call<{ plugins: { id: string; enabled: boolean }[] }>(
+ 'GET',
+ '/api/v1/plugins',
+ );
+ expect(list.body.data.plugins.map((p) => [p.id, p.enabled])).toEqual([['demo-plugin', true]]);
+
+ const disabled = await call<{ ok: true }>('POST', '/api/v1/plugins/demo-plugin:disable');
+ expect(disabled.body.code).toBe(0);
+ const afterDisable = await call<{ plugins: { enabled: boolean }[] }>('GET', '/api/v1/plugins');
+ expect(afterDisable.body.data.plugins[0]?.enabled).toBe(false);
+
+ const enabled = await call<{ ok: true }>('POST', '/api/v1/plugins/demo-plugin:enable');
+ expect(enabled.body.code).toBe(0);
+
+ const removed = await call<{ ok: true }>('POST', '/api/v1/plugins/demo-plugin:remove');
+ expect(removed.body.code).toBe(0);
+ const afterRemove = await call<{ plugins: unknown[] }>('GET', '/api/v1/plugins');
+ expect(afterRemove.body.data.plugins).toEqual([]);
+ });
+
+ it('rejects bare ids, bogus actions, and unknown plugins', async () => {
+ const bare = await call('POST', '/api/v1/plugins/demo-plugin');
+ expect(bare.body.code).toBe(40001);
+ const bogus = await call('POST', '/api/v1/plugins/demo-plugin:explode');
+ expect(bogus.body.code).toBe(40001);
+ const unknown = await call('POST', '/api/v1/plugins/nope:remove');
+ expect(unknown.body.code).toBe(40419);
+ const badSource = await call('POST', '/api/v1/plugins', { source: '' });
+ expect(badSource.body.code).toBe(40001);
+ });
+
+ it('fans out event.plugin.changed over WS on install and remove', async () => {
+ const ws = new WebSocket(`${base.replace('http', 'ws')}/api/v1/ws`, [
+ `kimi-code.bearer.${bearerToken(server!)}`,
+ ]);
+ const types: string[] = [];
+ try {
+ await new Promise((resolve, reject) => {
+ ws.once('message', () => {
+ resolve();
+ }); // server_hello
+ ws.once('error', reject);
+ });
+ ws.on('message', (data: Buffer) => {
+ const frame = JSON.parse(data.toString('utf8')) as { type?: string };
+ if (frame.type !== undefined) types.push(frame.type);
+ });
+
+ const source = await makePluginDir('demo-plugin', '1.0.0');
+ await call('POST', '/api/v1/plugins', { source });
+ await vi.waitFor(() => {
+ expect(types).toContain('event.plugin.changed');
+ });
+
+ await call('POST', '/api/v1/plugins/demo-plugin:remove');
+ await vi.waitFor(() => {
+ expect(types.filter((t) => t === 'event.plugin.changed').length).toBeGreaterThanOrEqual(2);
+ });
+ } finally {
+ ws.close();
+ }
+ });
+
+ it('maps client-fixable install input errors to 4xx, never 50001', async () => {
+ // Relative source: the domain rejects non-absolute local paths.
+ const relative = await call('POST', '/api/v1/plugins', { source: 'relative/dir' });
+ expect(relative.body.code).toBe(40001);
+ // Absolute but nonexistent path.
+ const missing = await call('POST', '/api/v1/plugins', {
+ source: join(home!, 'no-such-plugin-dir'),
+ });
+ expect(missing.body.code).toBe(40409);
+ // Existing directory without a valid manifest → plugin.load_failed.
+ const noManifest = await mkdtemp(join(tmpdir(), 'kimi-no-manifest-'));
+ createdDirs.push(noManifest);
+ const unloadable = await call('POST', '/api/v1/plugins', { source: noManifest });
+ expect(unloadable.body.code).toBe(40001);
+ });
+
+ it('serves the marketplace catalog merged with live install state', async () => {
+ const before = await call<{
+ entries: {
+ id: string;
+ tier: string;
+ displayName: string;
+ source: string;
+ version?: string;
+ capabilityId?: string;
+ description?: string;
+ homepage?: string;
+ keywords?: string[];
+ installed?: { version?: string };
+ }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ expect(before.body.code).toBe(0);
+ expect(before.body.data.entries.map((e) => [e.id, e.tier])).toEqual([
+ ['demo-plugin', 'official'],
+ ['third-party-plugin', 'third-party'],
+ ['relative-plugin', 'third-party'],
+ ['alias-plugin', 'third-party'],
+ ['blank-tier-plugin', 'third-party'],
+ ['gh-plugin', 'third-party'],
+ ['kimi-webbridge', 'third-party'],
+ ['kimi-cu', 'third-party'],
+ ['meta-alias-plugin', 'third-party'],
+ ]);
+ expect(before.body.data.entries[0]?.installed).toBeUndefined();
+ // Catalog-relative sources resolve against the catalog URL.
+ const relative = before.body.data.entries.find((e) => e.id === 'relative-plugin');
+ expect(relative?.source).toBe('http://marketplace.test/plugins/relative.zip');
+ // The legacy `url` alias is accepted and resolved the same way.
+ const alias = before.body.data.entries.find((e) => e.id === 'alias-plugin');
+ expect(alias?.source).toBe('http://marketplace.test/plugins/alias.zip');
+ // Version derived from the GitHub release-tag source.
+ expect(before.body.data.entries.find((e) => e.id === 'gh-plugin')?.version).toBe('2.0.0');
+ // Bare GitHub repo source: latest release tag resolved through the
+ // /releases/latest redirect.
+ expect(before.body.data.entries.find((e) => e.id === 'third-party-plugin')?.version).toBe(
+ '3.1.0',
+ );
+ // A custom catalog never gets capability markers (same-id forks stay
+ // plain plugins) — markers only apply to the default catalog.
+ expect(
+ before.body.data.entries.find((e) => e.id === 'kimi-webbridge')?.capabilityId,
+ ).toBeUndefined();
+ // And no built-in injection either.
+ expect(before.body.data.entries.some((e) => e.source.startsWith('capability:'))).toBe(false);
+ // CLI metadata aliases map onto the wire fields.
+ const meta = before.body.data.entries.find((e) => e.id === 'meta-alias-plugin');
+ expect(meta?.displayName).toBe('Meta Alias');
+ expect(meta?.description).toBe('Aliased metadata');
+ expect(meta?.homepage).toBe('https://example.test/meta');
+ // Keywords filter to non-blank strings instead of failing the catalog.
+ expect(meta?.keywords).toEqual(['web', 'tools']);
+
+ // Install an older version than the catalog → updateAvailable.
+ const source = await makePluginDir('demo-plugin', '1.0.0');
+ await call('POST', '/api/v1/plugins', { source });
+
+ const after = await call<{
+ entries: {
+ id: string;
+ installed?: { version?: string; enabled: boolean };
+ updateAvailable?: boolean;
+ }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ const demo = after.body.data.entries.find((e) => e.id === 'demo-plugin');
+ expect(demo?.installed).toEqual({ version: '1.0.0', enabled: true });
+ expect(demo?.updateAvailable).toBe(true);
+
+ // A version derived from the GitHub tag source drives updateAvailable too.
+ const ghSource = await makePluginDir('gh-plugin', '1.5.0');
+ await call('POST', '/api/v1/plugins', { source: ghSource });
+ const afterGh = await call<{
+ entries: { id: string; updateAvailable?: boolean }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ expect(afterGh.body.data.entries.find((e) => e.id === 'gh-plugin')?.updateAvailable).toBe(true);
+ });
+
+ it('rejects a catalog whose entry has no usable source', async () => {
+ const realFetch = globalThis.fetch;
+ vi.stubGlobal(
+ 'fetch',
+ vi.fn(async (url: string | URL, init?: RequestInit) => {
+ if (url === CATALOG_URL) {
+ return new Response(
+ JSON.stringify({ plugins: [{ id: 'bad', source: ' ' }] }),
+ { status: 200 },
+ );
+ }
+ return realFetch(url as never, init);
+ }),
+ );
+ const { body } = await call('GET', '/api/v1/plugins/marketplace');
+ expect(body.code).toBe(50001);
+ expect(body.msg).toContain('invalid catalog');
+ });
+
+ it('rejects a catalog with an unsupported entry type', async () => {
+ const realFetch = globalThis.fetch;
+ vi.stubGlobal(
+ 'fetch',
+ vi.fn(async (url: string | URL, init?: RequestInit) => {
+ if (url === CATALOG_URL) {
+ return new Response(
+ JSON.stringify({
+ plugins: [{ id: 'bad', type: 'integration', source: 'https://example.test/x.zip' }],
+ }),
+ { status: 200 },
+ );
+ }
+ return realFetch(url as never, init);
+ }),
+ );
+ const { body } = await call('GET', '/api/v1/plugins/marketplace');
+ expect(body.code).toBe(50001);
+ expect(body.msg).toContain('invalid catalog');
+ });
+
+ it('treats the dev marketplace server as the default catalog', async () => {
+ // scripts/dev.mjs serves the repo catalog and marks itself; capability
+ // markers apply as if no env were set.
+ await server?.close();
+ vi.stubEnv('KIMI_CODE_PLUGIN_MARKETPLACE_URL', CATALOG_URL);
+ vi.stubEnv('KIMI_CODE_PLUGIN_MARKETPLACE_FROM_DEV_SERVER', '1');
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home!,
+ logLevel: 'silent',
+ });
+ base = `http://127.0.0.1:${server.port}`;
+
+ const { body } = await call<{ entries: { id: string; capabilityId?: string }[] }>(
+ 'GET',
+ '/api/v1/plugins/marketplace',
+ );
+ expect(body.code).toBe(0);
+ expect(body.data.entries.find((e) => e.id === 'kimi-webbridge')?.capabilityId).toBe(
+ 'kimi-webbridge',
+ );
+
+ // kimi-cu row assertions: on unsupported platforms the row is hidden
+ // entirely (never marked, never offered).
+ const cuSupported = process.platform === 'darwin' || (process.platform === 'win32' && process.arch === 'x64');
+ const after0 = await call<{
+ entries: { id: string; capabilityId?: string; installed?: { version?: string } }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ if (!cuSupported) {
+ expect(after0.body.data.entries.find((e) => e.id === 'kimi-cu')).toBeUndefined();
+ return;
+ }
+
+ // A plugin installed under the Windows wiring id still marks the
+ // kimi-cu row installed (the join follows the capability's plugin ids).
+ const winSource = await makePluginDir('kimi-cu-win', '0.5.4');
+ await call('POST', '/api/v1/plugins', { source: winSource });
+ const after = await call<{
+ entries: { id: string; capabilityId?: string; installed?: { version?: string } }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ const cu = after.body.data.entries.find((e) => e.id === 'kimi-cu');
+ expect(cu?.capabilityId).toBe('kimi-cu');
+ expect(cu?.installed?.version).toBe('0.5.4');
+
+ // With BOTH records present, the platform-canonical wiring plugin wins
+ // (on macOS that is the bare kimi-cu id, so this stale record shows).
+ const staleSource = await makePluginDir('kimi-cu', '0.1.0');
+ await call('POST', '/api/v1/plugins', { source: staleSource });
+ const both = await call<{
+ entries: { id: string; installed?: { version?: string } }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ const expected = process.platform === 'win32' && process.arch === 'x64' ? '0.5.4' : '0.1.0';
+ expect(both.body.data.entries.find((e) => e.id === 'kimi-cu')?.installed?.version).toBe(
+ expected,
+ );
+ });
+
+ it('maps an unreachable marketplace to 50001', async () => {
+ const realFetch = globalThis.fetch;
+ vi.stubGlobal(
+ 'fetch',
+ vi.fn(async (url: string | URL, init?: RequestInit) => {
+ if (url === CATALOG_URL) {
+ throw new Error('network down');
+ }
+ return realFetch(url as never, init);
+ }),
+ );
+ const { body } = await call('GET', '/api/v1/plugins/marketplace');
+ expect(body.code).toBe(50001);
+ expect(body.msg).toContain('unreachable');
+ });
+
+ it('reads a local marketplace catalog from disk (plain path or file://)', async () => {
+ // Restart with a file-based catalog — the same env the CLI accepts.
+ await server?.close();
+ const catalogDir = await mkdtemp(join(tmpdir(), 'kimi-local-catalog-'));
+ createdDirs.push(catalogDir);
+ const fileUrlPluginPath = join(catalogDir, 'plugins', 'file.zip');
+ await writeFile(
+ join(catalogDir, 'marketplace.json'),
+ JSON.stringify({
+ plugins: [
+ { id: 'local-plugin', source: './zips/local.zip' },
+ // Portable absolute file URL (drive-rooted on Windows).
+ { id: 'file-url-plugin', source: pathToFileURL(fileUrlPluginPath).href },
+ ],
+ }),
+ );
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home!,
+ logLevel: 'silent',
+ pluginMarketplaceUrl: join(catalogDir, 'marketplace.json'),
+ });
+ base = `http://127.0.0.1:${server.port}`;
+
+ const { body } = await call<{ entries: { id: string; source: string }[] }>(
+ 'GET',
+ '/api/v1/plugins/marketplace',
+ );
+ expect(body.code).toBe(0);
+ expect(body.data.entries).toEqual([
+ {
+ id: 'local-plugin',
+ tier: 'third-party',
+ displayName: 'local-plugin',
+ // Relative sources resolve against the catalog file's directory.
+ source: join(catalogDir, 'zips', 'local.zip'),
+ },
+ {
+ id: 'file-url-plugin',
+ tier: 'third-party',
+ displayName: 'file-url-plugin',
+ // file:// sources convert to plain absolute paths (installable).
+ source: fileUrlPluginPath,
+ },
+ ]);
+ });
+
+ it('falls back to the source-checkout catalog when the remote is unreachable', async () => {
+ await server?.close();
+ const realFetch = globalThis.fetch;
+ vi.stubGlobal(
+ 'fetch',
+ vi.fn(async (url: string | URL, init?: RequestInit) => {
+ if (typeof url === 'string' && url.includes('/releases/latest')) {
+ return new Response(null, { status: 404 });
+ }
+ if (url === 'https://code.kimi.com/kimi-code/plugins/marketplace.json') {
+ throw new Error('offline');
+ }
+ return realFetch(url as never, init);
+ }),
+ );
+ // No pluginMarketplaceUrl / env: the default production catalog is
+ // unreachable and the repo checkout's own catalog takes over (CLI parity).
+ vi.stubEnv('KIMI_CODE_PLUGIN_MARKETPLACE_URL', undefined as unknown as string);
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home!,
+ logLevel: 'silent',
+ });
+ base = `http://127.0.0.1:${server.port}`;
+
+ const { body } = await call<{
+ entries: {
+ id: string;
+ source: string;
+ tier?: string;
+ displayName?: string;
+ capabilityId?: string;
+ }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ expect(body.code).toBe(0);
+ const datasource = body.data.entries.find((e) => e.id === 'kimi-datasource');
+ // Relative sources resolve against the fallback file, not the failed URL.
+ expect(datasource?.source.startsWith('http')).toBe(false);
+ expect(datasource?.source.endsWith(join('plugins', 'official', 'kimi-datasource'))).toBe(true);
+ // The default catalog (even served from the checkout fallback) marks
+ // capability wiring rows.
+ const webbridge = body.data.entries.find((e) => e.id === 'kimi-webbridge');
+ expect(webbridge?.capabilityId).toBe('kimi-webbridge');
+ // Capabilities the catalog does not carry are injected as built-in rows
+ // where supported (kimi-cu is not in the checked-in catalog, and is
+ // supported on macOS / Windows x64 only).
+ const cuSupported = process.platform === 'darwin' || (process.platform === 'win32' && process.arch === 'x64');
+ const cu = body.data.entries.find((e) => e.id === 'kimi-cu');
+ if (!cuSupported) {
+ expect(cu).toBeUndefined();
+ return;
+ }
+ expect(cu?.tier).toBe('official');
+ expect(cu?.capabilityId).toBe('kimi-cu');
+ expect(cu?.source).toBe('capability:kimi-cu');
+ expect(cu?.displayName).toBe('Kimi Computer Use');
+
+ // Injected rows join install state like catalog rows.
+ const cuSource = await makePluginDir('kimi-cu', '0.5.8');
+ await call('POST', '/api/v1/plugins', { source: cuSource });
+ const after = await call<{
+ entries: { id: string; installed?: { version?: string; enabled: boolean } }[];
+ }>('GET', '/api/v1/plugins/marketplace');
+ expect(after.body.data.entries.find((e) => e.id === 'kimi-cu')?.installed).toEqual({
+ version: '0.5.8',
+ enabled: true,
+ });
+ });
+
+ it('expands ~ in local catalog paths like the CLI loader', async () => {
+ await server?.close();
+ const fakeHome = await mkdtemp(join(tmpdir(), 'kimi-tilde-home-'));
+ createdDirs.push(fakeHome);
+ await writeFile(
+ join(fakeHome, 'marketplace.json'),
+ JSON.stringify({
+ plugins: [
+ { id: 'tilde-plugin', source: 'https://example.test/t.zip' },
+ // Home-relative entry source expands against the stubbed HOME.
+ { id: 'tilde-entry-plugin', source: '~/plugins/t.zip' },
+ ],
+ }),
+ );
+ // os.homedir() reads HOME on POSIX and USERPROFILE on Windows.
+ vi.stubEnv('HOME', fakeHome);
+ vi.stubEnv('USERPROFILE', fakeHome);
+ server = await startServer({
+ hostIdentity: TEST_HOST_IDENTITY,
+ host: '127.0.0.1',
+ port: 0,
+ homeDir: home!,
+ logLevel: 'silent',
+ pluginMarketplaceUrl: '~/marketplace.json',
+ });
+ base = `http://127.0.0.1:${server.port}`;
+
+ const { body } = await call<{ entries: { id: string; source: string }[] }>(
+ 'GET',
+ '/api/v1/plugins/marketplace',
+ );
+ expect(body.code).toBe(0);
+ expect(body.data.entries.map((e) => e.id)).toEqual(['tilde-plugin', 'tilde-entry-plugin']);
+ expect(body.data.entries[1]?.source).toBe(join(fakeHome, 'plugins', 't.zip'));
+ });
+});
diff --git a/packages/kap-server/test/sessionEventBroadcaster.test.ts b/packages/kap-server/test/sessionEventBroadcaster.test.ts
index 88408732d42..0fae462e9be 100644
--- a/packages/kap-server/test/sessionEventBroadcaster.test.ts
+++ b/packages/kap-server/test/sessionEventBroadcaster.test.ts
@@ -1194,6 +1194,64 @@ describe('SessionEventBroadcaster', () => {
expect(globalView.deliveries).toEqual(['immediate']);
});
+ it('fans out event.plugin.changed and event.capability.changed to global targets', async () => {
+ const globalView = collectingTarget();
+ bc.addGlobalTarget(globalView.target);
+
+ eventBus.emit({ type: 'event.plugin.changed', payload: {} });
+ eventBus.emit({
+ type: 'event.capability.changed',
+ payload: {
+ capability_id: 'kimi-webbridge',
+ install: { running: true, step: 'download', percent: 42 },
+ },
+ });
+
+ await vi.waitFor(() => expect(globalView.envelopes).toHaveLength(2));
+ expect(globalView.envelopes[0]).toMatchObject({
+ type: 'event.plugin.changed',
+ session_id: '__global__',
+ });
+ expect(globalView.envelopes[1]).toMatchObject({
+ type: 'event.capability.changed',
+ session_id: '__global__',
+ payload: {
+ capability_id: 'kimi-webbridge',
+ install: { running: true, step: 'download', percent: 42 },
+ },
+ });
+ // Progress ticks are live-only (volatile, not journaled); the plugin
+ // change signal stays durable so a reconnecting client can replay it.
+ expect(globalView.envelopes[0]!.volatile).toBeUndefined();
+ expect(globalView.envelopes[1]!.volatile).toBe(true);
+ });
+
+ it('drops malformed event.capability.changed payloads', async () => {
+ const globalView = collectingTarget();
+ bc.addGlobalTarget(globalView.target);
+
+ eventBus.emit({ type: 'event.capability.changed', payload: null });
+ eventBus.emit({
+ type: 'event.capability.changed',
+ payload: { capability_id: 7, install: { running: true } },
+ });
+ eventBus.emit({
+ type: 'event.capability.changed',
+ payload: { capability_id: 'kimi-cu' }, // no install object
+ });
+
+ eventBus.emit({
+ type: 'event.capability.changed',
+ payload: { capability_id: 'kimi-cu', install: { running: false } },
+ });
+
+ await vi.waitFor(() => expect(globalView.envelopes).toHaveLength(1));
+ expect(globalView.envelopes[0]).toMatchObject({
+ type: 'event.capability.changed',
+ payload: { capability_id: 'kimi-cu', install: { running: false } },
+ });
+ });
+
it('drops malformed event.config.warning payloads', async () => {
const globalView = collectingTarget();
bc.addGlobalTarget(globalView.target);
diff --git a/packages/kap-server/test/tasks.test.ts b/packages/kap-server/test/tasks.test.ts
index e70ddf50b29..cd686ab87b4 100644
--- a/packages/kap-server/test/tasks.test.ts
+++ b/packages/kap-server/test/tasks.test.ts
@@ -35,6 +35,9 @@ interface TaskWire {
completed_at?: string;
output_preview?: string;
output_bytes?: number;
+ agent_id?: string;
+ subagent_type?: string;
+ parent_tool_call_id?: string;
}
interface ListWire {
@@ -158,6 +161,7 @@ describe('server-v2 /api/v1/sessions/{sid}/tasks', () => {
kind: 'agent',
agentId: 'sub-1',
subagentType: 'explore',
+ parentToolCallId: 'call-parent-1',
model: 'provider/secondary',
thinkingEffort: 'low',
};
@@ -214,6 +218,9 @@ describe('server-v2 /api/v1/sessions/{sid}/tasks', () => {
status: 'running',
model: 'provider/secondary', // subagent tasks expose the bound display model
thinking_effort: 'low', // …and its effective thinking effort
+ agent_id: 'sub-1',
+ subagent_type: 'explore',
+ parent_tool_call_id: 'call-parent-1',
});
expect(byId.get(agentId)?.command).toBeUndefined();
@@ -223,6 +230,12 @@ describe('server-v2 /api/v1/sessions/{sid}/tasks', () => {
kind: 'tool', // question → tool
status: 'running',
});
+ expect(byId.get(processId)?.agent_id).toBeUndefined();
+ expect(byId.get(questionId)?.agent_id).toBeUndefined();
+ expect(byId.get(processId)?.subagent_type).toBeUndefined();
+ expect(byId.get(questionId)?.subagent_type).toBeUndefined();
+ expect(byId.get(processId)?.parent_tool_call_id).toBeUndefined();
+ expect(byId.get(questionId)?.parent_tool_call_id).toBeUndefined();
});
it('filters the list by wire status', async () => {
@@ -245,11 +258,24 @@ describe('server-v2 /api/v1/sessions/{sid}/tasks', () => {
const id = await createSession();
const tasks = await mainAgentTasks(id);
const taskId = tasks.registerTask(fakeTask('process'));
+ const subagentId = tasks.registerTask(fakeTask('agent'));
await flush();
const got = await getJson(`/api/v1/sessions/${id}/tasks/${taskId}`);
expect(got.body.code).toBe(0);
expect(got.body.data).toMatchObject({ id: taskId, session_id: id, kind: 'bash' });
+ expect(got.body.data.agent_id).toBeUndefined();
+
+ const gotSubagent = await getJson(`/api/v1/sessions/${id}/tasks/${subagentId}`);
+ expect(gotSubagent.body.code).toBe(0);
+ expect(gotSubagent.body.data).toMatchObject({
+ id: subagentId,
+ session_id: id,
+ kind: 'subagent',
+ agent_id: 'sub-1',
+ subagent_type: 'explore',
+ parent_tool_call_id: 'call-parent-1',
+ });
const missing = await getJson(`/api/v1/sessions/${id}/tasks/nope`);
expect(missing.body.code).toBe(40406);
diff --git a/packages/kap-server/test/webAssets.test.ts b/packages/kap-server/test/webAssets.test.ts
new file mode 100644
index 00000000000..70dbb5995f3
--- /dev/null
+++ b/packages/kap-server/test/webAssets.test.ts
@@ -0,0 +1,53 @@
+import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
+import { tmpdir } from 'node:os';
+import { join } from 'node:path';
+
+import Fastify, { type FastifyInstance } from 'fastify';
+import { afterEach, beforeEach, describe, expect, it } from 'vitest';
+
+import { registerWebAssetRoutes } from '../src/routes/webAssets';
+
+describe('web asset cache policy', () => {
+ let app: FastifyInstance;
+ let assetsDir: string;
+
+ beforeEach(async () => {
+ assetsDir = await mkdtemp(join(tmpdir(), 'kimi-web-assets-'));
+ await mkdir(join(assetsDir, 'assets'));
+ await Promise.all([
+ writeFile(join(assetsDir, 'index.html'), 'Kimi '),
+ writeFile(join(assetsDir, 'assets', 'index-Dy7xs5tu.js'), 'export {};'),
+ writeFile(join(assetsDir, 'assets', 'application-configuration.json'), '{}'),
+ writeFile(join(assetsDir, 'favicon.svg'), ' '),
+ ]);
+ app = Fastify();
+ await registerWebAssetRoutes(app, assetsDir);
+ });
+
+ afterEach(async () => {
+ await app.close();
+ await rm(assetsDir, { recursive: true, force: true });
+ });
+
+ it('caches content-hashed assets as immutable', async () => {
+ const response = await app.inject({ method: 'GET', url: '/assets/index-Dy7xs5tu.js' });
+
+ expect(response.statusCode).toBe(200);
+ expect(response.headers['cache-control']).toBe('public, max-age=31536000, immutable');
+ });
+
+ it.each([
+ '/index.html',
+ '/sessions/active',
+ '/favicon.svg',
+ '/assets/application-configuration.json',
+ ])(
+ 'requires revalidation for %s',
+ async (url) => {
+ const response = await app.inject({ method: 'GET', url });
+
+ expect(response.statusCode).toBe(200);
+ expect(response.headers['cache-control']).toBe('no-cache');
+ },
+ );
+});
diff --git a/packages/klient/src/contract/global/capabilities.ts b/packages/klient/src/contract/global/capabilities.ts
index 7575facab69..c34efd5c6db 100644
--- a/packages/klient/src/contract/global/capabilities.ts
+++ b/packages/klient/src/contract/global/capabilities.ts
@@ -19,6 +19,7 @@ export const capabilityInstallProgressSchema = z.object({
step: z.string().optional(),
percent: z.number().optional(),
error: z.string().optional(),
+ note: z.string().optional(),
});
export const capabilityStatusSchema = z.object({
diff --git a/packages/klient/test/facade.test.ts b/packages/klient/test/facade.test.ts
index 6999f9ff335..7435a59fd5d 100644
--- a/packages/klient/test/facade.test.ts
+++ b/packages/klient/test/facade.test.ts
@@ -105,7 +105,8 @@ describe('facade routing', () => {
supported: true,
state: 'partial',
steps: [{ id: 'permissions', state: 'missing' }],
- install: { running: false },
+ // The completed-install note survives the contract parse (not stripped).
+ install: { running: false, note: 'user-skill-migrated' },
};
channel.result = [status];
diff --git a/packages/node-sdk/test/session-event-types.test.ts b/packages/node-sdk/test/session-event-types.test.ts
index 61797a9e656..4e59030510b 100644
--- a/packages/node-sdk/test/session-event-types.test.ts
+++ b/packages/node-sdk/test/session-event-types.test.ts
@@ -76,6 +76,8 @@ describe('Event public types', () => {
case 'event.workspace.deleted':
case 'event.config.changed':
case 'event.model_catalog.changed':
+ case 'event.plugin.changed':
+ case 'event.capability.changed':
case 'goal.updated':
case 'skill.activated':
case 'plugin_command.activated':
diff --git a/packages/protocol/src/__tests__/snapshot.test.ts b/packages/protocol/src/__tests__/snapshot.test.ts
index 3301d51768c..3b23aad0fda 100644
--- a/packages/protocol/src/__tests__/snapshot.test.ts
+++ b/packages/protocol/src/__tests__/snapshot.test.ts
@@ -182,10 +182,11 @@ describe('events — volatile classification', () => {
'shell.started',
'shell.completed',
'agent.status.updated',
+ 'event.capability.changed',
]) {
expect(isVolatileEventType(type)).toBe(true);
}
- expect(VOLATILE_EVENT_TYPES).toHaveLength(8);
+ expect(VOLATILE_EVENT_TYPES).toHaveLength(9);
});
it('keeps timeline-bearing events durable', () => {
diff --git a/packages/protocol/src/events.ts b/packages/protocol/src/events.ts
index 768b8706396..fdbff078891 100644
--- a/packages/protocol/src/events.ts
+++ b/packages/protocol/src/events.ts
@@ -593,6 +593,30 @@ export interface ModelCatalogChangedEvent {
readonly failed: readonly ProviderRefreshFailure[];
}
+/**
+ * Plugin set mutation (install / enable / disable / remove from any client).
+ * Bare global fan-out — clients re-read the plugins REST surface.
+ */
+export interface PluginChangedEvent {
+ readonly type: 'event.plugin.changed';
+}
+
+/**
+ * Capability install progress transition, fanned out globally. Clients update
+ * the row live and re-read the capability once it settles (`running: false`).
+ */
+export interface CapabilityChangedEvent {
+ readonly type: 'event.capability.changed';
+ readonly capability_id: string;
+ readonly install: {
+ readonly running: boolean;
+ readonly step?: string;
+ readonly percent?: number;
+ readonly error?: string;
+ readonly note?: string;
+ };
+}
+
export interface GoalUpdatedEvent {
readonly type: 'goal.updated';
readonly snapshot: GoalSnapshot | null;
@@ -950,6 +974,8 @@ export type AgentEvent =
| SessionStatusChangedEvent
| ConfigChangedEvent
| ModelCatalogChangedEvent
+ | PluginChangedEvent
+ | CapabilityChangedEvent
| GoalUpdatedEvent
| SkillActivatedEvent
| PluginCommandActivatedEvent
@@ -1526,6 +1552,22 @@ export const modelCatalogChangedEventSchema = z.object({
failed: z.array(providerRefreshFailureSchema),
}) satisfies z.ZodType;
+export const pluginChangedEventSchema = z.object({
+ type: z.literal('event.plugin.changed'),
+}) satisfies z.ZodType;
+
+export const capabilityChangedEventSchema = z.object({
+ type: z.literal('event.capability.changed'),
+ capability_id: z.string().min(1),
+ install: z.object({
+ running: z.boolean(),
+ step: z.string().optional(),
+ percent: z.number().optional(),
+ error: z.string().optional(),
+ note: z.string().optional(),
+ }),
+}) satisfies z.ZodType;
+
export const goalUpdatedEventSchema = z.object({
type: z.literal('goal.updated'),
snapshot: goalSnapshotSchema.nullable(),
@@ -1850,6 +1892,8 @@ export const agentEventSchema = z.discriminatedUnion('type', [
sessionWorkChangedEventSchema,
sessionStatusChangedEventSchema,
modelCatalogChangedEventSchema,
+ pluginChangedEventSchema,
+ capabilityChangedEventSchema,
goalUpdatedEventSchema,
skillActivatedEventSchema,
pluginCommandActivatedEventSchema,
@@ -1925,6 +1969,10 @@ export const VOLATILE_EVENT_TYPES = [
'shell.started',
'shell.completed',
'agent.status.updated',
+ // Live-only capability install progress (per-chunk ticks); kap-server
+ // classifies it volatile (never journaled), so shared-protocol clients must
+ // not treat it as durable/replayable either.
+ 'event.capability.changed',
] as const satisfies readonly AgentEvent['type'][];
export type VolatileEventType = (typeof VOLATILE_EVENT_TYPES)[number];
diff --git a/packages/protocol/src/task.ts b/packages/protocol/src/task.ts
index e18f6981743..a96b3a8a100 100644
--- a/packages/protocol/src/task.ts
+++ b/packages/protocol/src/task.ts
@@ -30,6 +30,7 @@ export const taskSchema = z.object({
model: z.string().optional(),
/** Subagent tasks only: the child's effective thinking effort at spawn. */
thinking_effort: z.string().optional(),
+ agent_id: z.string().optional(),
});
export type Task = z.infer;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0ffef41c7ef..6aedfeed29c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -691,6 +691,9 @@ importers:
retry:
specifier: 0.13.1
version: 0.13.1
+ semver:
+ specifier: ^7.7.4
+ version: 7.7.4
smol-toml:
specifier: ^1.6.1
version: 1.6.1
@@ -725,6 +728,9 @@ importers:
'@types/retry':
specifier: 0.12.0
version: 0.12.0
+ '@types/semver':
+ specifier: ^7.7.0
+ version: 7.7.1
'@types/sinon':
specifier: ^21.0.1
version: 21.0.1
@@ -793,6 +799,9 @@ importers:
pino:
specifier: ^9.5.0
version: 9.14.0
+ semver:
+ specifier: ^7.7.4
+ version: 7.7.4
smol-toml:
specifier: ^1.6.1
version: 1.6.1
@@ -809,6 +818,9 @@ importers:
'@types/bcryptjs':
specifier: ^2.4.6
version: 2.4.6
+ '@types/semver':
+ specifier: ^7.7.0
+ version: 7.7.1
'@types/ws':
specifier: ^8.18.0
version: 8.18.1