@tyanxie/paimon-darwin-arm64 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/paimon CHANGED
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/bin/paimon
3
- size: 63644258 bytes
4
- sha256: d16322b33f3c1b839409e25740853f679986cc3a2c9fa718b6312c44c42273d7
3
+ size: 63660770 bytes
4
+ sha256: a2948ca306004188a40e2bb74813997175af46ef0d306846983a7198cfbc7fe5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyanxie/paimon-darwin-arm64",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Paimon binary for darwin arm64",
5
5
  "license": "MIT",
6
6
  "os": [
@@ -0,0 +1,6 @@
1
+ import{a as l,j as t,r as Je,c as ln}from"./framework-CY9iUjoF.js";import{s as Me,x as cn,E as Ie,u as Xe,K as z,m as St,C as xe,h as Ct,l as dn,S as un,c as Ze,X as Qe,L as ue,g as Et,W as pn,p as xn,P as ut,T as fn,F as mn,e as He,b as hn,i as Tt,G as gn,H as bn,r as vn,f as yn,k as jn,a as Rt,M as wn,I as Nn,o as kn,A as Sn,J as Cn,d as En,O as Tn,t as Rn,j as Mn,q as In,n as An,R as ye,D as _n,B as Ln}from"./vendor-BXh3TPFq.js";import{d as Le,M as Pn,a as $n,b as On,r as zn,e as Bn,s as Fn,c as Dn,j as Mt}from"./markdown-CbB-lJ6c.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=r(a);fetch(a.href,o)}})();function Hn(){l.useEffect(()=>{const e=window.visualViewport;if(!e)return;const n=document.documentElement;function r(){if(!e)return;window.innerHeight-e.height>1?(n.style.setProperty("--app-viewport-height",`${e.height}px`),window.scrollY>0&&window.scrollTo(0,0)):n.style.removeProperty("--app-viewport-height")}return e.addEventListener("resize",r),e.addEventListener("scroll",r),()=>{e.removeEventListener("resize",r),e.removeEventListener("scroll",r),n.style.removeProperty("--app-viewport-height")}},[])}const et="paimon:accessToken";function qe(){return localStorage.getItem(et)}function It(e){localStorage.setItem(et,e)}function At(){localStorage.removeItem(et)}const pt=window.__BASE_PATH__||"/",_t=pt==="/"?"":pt;function ee(e){return`${_t}${e}`}function qn(){const[e,n]=l.useState(qe()),[r,s]=l.useState(!1),[a,o]=l.useState(()=>qe()===null);l.useEffect(()=>{if(!a)return;let d=!1;return(async()=>{try{const p=await fetch(ee("/api/token"),{signal:AbortSignal.timeout(3e3)});if(d||!p.ok)return;const m=await p.json();if(d)return;const g=m.token;It(g),n(g)}catch{}finally{d||o(!1)}})(),()=>{d=!0}},[a]);const i=l.useCallback(d=>{s(!1),n(d)},[]),c=l.useCallback(()=>{At(),n(null),s(!0)},[]);return{authToken:e,authError:r,probing:a,handleLogin:i,handleAuthError:c}}const xt={BROWSER_HEARTBEAT_INTERVAL:3e4,BROWSER_PONG_TIMEOUT:1e4};let V=null;const Ke=new Set;let ae=!1,we=null,Q=null,Ne=null,ie=null,re=null,ce,Pe=!1;const Kn=3e3,Un=3e3;function Wn(e){for(const n of Ke)try{n(e)}catch(r){console.error("[useWebSocket] listener error:",r)}}function Yn(e){we=setInterval(()=>{e.readyState===WebSocket.OPEN&&(e.send(JSON.stringify({type:"ping"})),Q=setTimeout(()=>{e.close()},xt.BROWSER_PONG_TIMEOUT))},xt.BROWSER_HEARTBEAT_INTERVAL)}function Lt(){we&&(clearInterval(we),we=null),Q&&(clearTimeout(Q),Q=null)}function $e(){ae||(Ne=setTimeout(Pt,Un))}function Ue(){ie&&(clearTimeout(ie),ie=null)}function Pt(){if(ae||!re)return;const r=`${`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${ee("/ws/browser")}`}?token=${encodeURIComponent(re)}`;Pe=!1;const s=new WebSocket(r);V=s,K.setState({connectionState:"connecting"}),ie=setTimeout(()=>{ie=null,s.readyState===WebSocket.CONNECTING&&s.close()},Kn),s.onopen=()=>{Ue(),Pe=!0,K.setState({connectionState:"connected"}),s.send(JSON.stringify({type:"list"})),Yn(s)},s.onmessage=a=>{try{const o=JSON.parse(a.data);if(o.type==="pong"){Q&&(clearTimeout(Q),Q=null);return}Wn(o)}catch{}},s.onclose=a=>{if(Ue(),K.setState({connectionState:"disconnected"}),V=null,Lt(),!ae&&!Pe){const o={};re&&(o.Authorization=`Bearer ${re}`),fetch(ee("/api/instances"),{headers:o}).then(i=>{i.status===401?ce==null||ce():$e()}).catch(()=>{$e()});return}ae||$e()},s.onerror=()=>{s.close()}}const K=Me((e,n)=>({connectionState:"idle",send:r=>{(V==null?void 0:V.readyState)===WebSocket.OPEN&&V.send(JSON.stringify(r))},subscribe:r=>(Ke.add(r),()=>{Ke.delete(r)}),connect:(r,s)=>{n().disconnect(),ae=!1,re=r,ce=s,Pt()},disconnect:()=>{ae=!0,re=null,ce=void 0,Lt(),Ue(),Ne&&(clearTimeout(Ne),Ne=null),V&&(V.close(),V=null),e({connectionState:"idle"})}})),se=Me()(cn((e,n)=>({instances:[],instanceListReady:!1,handleMessage:r=>{switch(r.type){case"instance_list":e({instances:r.payload.instances,instanceListReady:!0});break;case"instance_update":{const{instance:s,action:a}=r.payload;a==="connected"?e(o=>({instances:o.instances.some(c=>c.id===s.id)?o.instances.map(c=>c.id===s.id?s:c):[...o.instances,s]})):a==="disconnected"?e(o=>({instances:o.instances.filter(i=>i.id!==s.id)})):a==="updated"&&e(o=>({instances:o.instances.map(i=>i.id===s.id?s:i)}));break}}}}),{name:"paimon:instances",partialize:e=>({instances:e.instances})}));function Gn(e){return n=>e?n.instances.find(r=>r.id===e):void 0}const oe={appearance:"paimon:appearance",background:"paimon:background",notification:"paimon:notification"};function We(){const e=localStorage.getItem(oe.appearance);return e==="light"||e==="dark"||e==="system"?e:"system"}function $t(){const e=localStorage.getItem(oe.background);return e==="mist"||e==="aurora"||e==="ember"?e:"mist"}function Vn(){return localStorage.getItem(oe.notification)==="true"}function Ot(e){return e==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}function Se(e,n){const r=Ot(e);return document.documentElement.setAttribute("data-theme",r),document.documentElement.setAttribute("data-bg",n),r}const q=Me(e=>({appearance:We(),background:$t(),resolvedTheme:Ot(We()),notification:Vn(),setAppearance:n=>{localStorage.setItem(oe.appearance,n);const r=Se(n,q.getState().background);e({appearance:n,resolvedTheme:r})},setBackground:n=>{localStorage.setItem(oe.background,n),Se(q.getState().appearance,n),e({background:n})},setNotification:n=>{localStorage.setItem(oe.notification,String(n)),e({notification:n})}})),Jn=window.matchMedia("(prefers-color-scheme: dark)");Jn.addEventListener("change",()=>{const{appearance:e,background:n}=q.getState();if(e==="system"){const r=Se(e,n);q.setState({resolvedTheme:r})}});function Xn(){const e=q(r=>r.appearance),n=q(r=>r.setAppearance);return[e,n]}function zt(){const e=q(r=>r.background),n=q(r=>r.setBackground);return[e,n]}function Zn(){return q(e=>e.resolvedTheme)}function Qn(){const e=q(r=>r.notification),n=q(r=>r.setNotification);return[e,n]}Se(We(),$t());const er=ee("/logos/mist/light/paimon-logo.png");function Bt(e,n){return!e||!n?er:ee(`/logos/${e}/${n}/paimon-logo.png`)}function tt(){const[e]=zt(),n=Zn();return Bt(e,n)}function tr(){const{background:e,resolvedTheme:n}=q.getState();return Bt(e,n)}const Ft="Notification"in window;function nr(e,n){return(e==="streaming"||e==="compacting")&&n==="idle"}function rr(){const e=K(o=>o.subscribe),n=Ie(),r=l.useRef(n);l.useEffect(()=>{r.current=n},[n]);const s=l.useRef(q.getState().notification);l.useEffect(()=>q.subscribe(o=>{s.current=o.notification}),[]);const a=l.useRef(new Map);l.useEffect(()=>{const o=se.getState().instances;for(const i of o)a.current.set(i.id,i.status)},[]),l.useEffect(()=>e(o=>{if(o.type==="instance_list"){a.current.clear();for(const i of o.payload.instances)a.current.set(i.id,i.status);return}if(o.type==="instance_update"){const{action:i,instance:c}=o.payload;if(i==="disconnected"){a.current.delete(c.id);return}const d=a.current.get(c.id);a.current.set(c.id,c.status),i==="updated"&&s.current&&nr(d,c.status)&&sr(c.id,c.cwd,r)}}),[e])}function sr(e,n,r){if(document.hasFocus()||!Ft||Notification.permission!=="granted")return;const s=n.split("/").pop()||n,a=new Notification("Paimon",{body:Xe.t("notification.taskComplete",{name:s}),icon:tr()});a.onclick=()=>{var o;window.focus(),(o=r.current)==null||o.call(r,`/instance/${e}`),a.close()}}function ar(){const{t:e}=z(),n=K(a=>a.connectionState),r=l.useRef(!1);n==="disconnected"&&(r.current=!0),n==="connected"&&(r.current=!1);const s=r.current&&n!=="connected";return t.jsx("span",{className:`w-2 h-2 rounded-full transition-colors ${s?"bg-red-500":"bg-green-500"}`,title:e(s?"common.offline":"common.online")})}function or(e,n,r=12){const{innerWidth:s,innerHeight:a}=window;let o=e.x,i=e.y;return o+n.width+r>s&&(o=s-n.width-r),i+n.height+r>a&&(i=a-n.height-r),o=Math.max(r,o),i=Math.max(r,i),{left:o,top:i}}function lr({position:e,onClose:n,children:r}){const s=l.useRef(null),a=l.useRef(n);a.current=n;const o=l.useCallback(()=>a.current(),[]);return l.useEffect(()=>{function i(u){s.current&&!s.current.contains(u.target)&&o()}function c(u){s.current&&!s.current.contains(u.target)&&o()}function d(u){u.key==="Escape"&&o()}return document.addEventListener("mousedown",i),document.addEventListener("contextmenu",c),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("contextmenu",c),document.removeEventListener("keydown",d)}},[o]),l.useEffect(()=>{if(s.current){const i=s.current.getBoundingClientRect(),c=or(e,{width:i.width,height:i.height});s.current.style.left=`${c.left}px`,s.current.style.top=`${c.top}px`,s.current.style.opacity="1"}},[e]),Je.createPortal(t.jsx("div",{ref:s,className:"glass-popover z-50 py-1.5 min-w-[160px]",style:{position:"fixed",left:e.x,top:e.y,opacity:0},children:r}),document.body)}function ir({icon:e,label:n,danger:r=!1,disabled:s=!1,onClick:a}){return t.jsxs("button",{onClick:o=>{o.stopPropagation(),s||a()},disabled:s,className:`w-full text-left flex items-center gap-2 px-3 py-1.5 text-[13px] leading-[18px] transition-colors ${s?"opacity-40 cursor-default":r?"text-red-500 hover:bg-[var(--fill-tertiary)]":"text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)]"}`,children:[e&&t.jsx("span",{className:"flex-shrink-0 w-4 h-4 flex items-center justify-center",children:e}),t.jsx("span",{children:n})]})}const cr=500;function ft({instances:e,selectedId:n,onSelect:r,onShutdown:s,onNewInstance:a}){const{t:o}=z(),i=Ie(),c=tt(),[d,u]=l.useState(null),p=l.useRef(null),m=l.useRef(!1),g=l.useCallback((N,P)=>{N.preventDefault(),N.stopPropagation(),u({position:{x:N.clientX,y:N.clientY},instanceId:P})},[]),v=l.useCallback((N,P)=>{m.current=!1;const y=N.touches[0],w={x:y.clientX,y:y.clientY};p.current=setTimeout(()=>{var M;m.current=!0,(M=navigator.vibrate)==null||M.call(navigator,10),u({position:w,instanceId:P})},cr)},[]),j=l.useCallback(()=>{p.current&&(clearTimeout(p.current),p.current=null)},[]),R=l.useCallback(()=>{p.current&&(clearTimeout(p.current),p.current=null)},[]),T=l.useCallback(()=>u(null),[]),[b,h]=l.useState(null),k=l.useRef(null);l.useEffect(()=>()=>{k.current&&clearTimeout(k.current)},[]);const I=l.useCallback(N=>{navigator.clipboard.writeText(N).then(()=>{h(N),k.current&&clearTimeout(k.current),k.current=setTimeout(()=>h(null),1500)},()=>{})},[]),E=l.useMemo(()=>{const N=new Map;for(const P of e){const y=N.get(P.edgeId);y?y.push(P):N.set(P.edgeId,[P])}return[...N.entries()].sort((P,y)=>P[0].localeCompare(y[0]))},[e]);return t.jsxs("aside",{className:"glass-panel select-none w-[240px] md:w-[240px] flex-shrink-0 flex flex-col overflow-hidden max-md:w-full max-md:flex-1",children:[t.jsx("div",{className:"px-4 pt-4 pb-2",children:t.jsxs("div",{className:"grid grid-cols-[auto_1fr] grid-rows-[auto_auto] gap-x-2.5 items-center",children:[t.jsx("div",{className:"row-span-2",children:t.jsx("img",{src:c,alt:"Paimon",className:"h-[34px] aspect-square object-contain"})}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("h1",{className:"text-[16px] leading-[20px] max-md:text-[18px] max-md:leading-[24px] font-semibold text-[var(--label-primary)]",children:"Paimon"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("button",{onClick:a,title:o("sidebar.newInstance"),className:"select-none w-6 h-6 flex items-center justify-center rounded-full text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-all duration-150",children:t.jsx(St,{size:16})}),t.jsx(ar,{})]})]}),t.jsxs("div",{className:"text-[12px] leading-[15px] max-md:text-[13px] max-md:leading-[18px] text-[var(--label-tertiary)]",children:[o("sidebar.machine",{count:E.length})," · ",o("sidebar.instance",{count:e.length})]})]})}),t.jsx("div",{className:"flex-1 overflow-y-auto px-2 py-1 scrollbar-auto",children:e.length===0?t.jsx("div",{className:"px-3 py-8 text-center text-[var(--label-tertiary)] text-[12px] leading-[16px] max-md:text-[13px] max-md:leading-[18px]",children:o("sidebar.noInstances")}):t.jsx("div",{children:E.map(([N,P],y)=>t.jsxs("div",{children:[t.jsxs("button",{type:"button",onClick:()=>I(N),title:N,className:`flex items-center gap-1 px-2.5 pb-1 text-[11px] leading-[14px] font-semibold text-[var(--label-tertiary)] max-w-full max-md:px-3 rounded-[4px] hover:text-[var(--label-secondary)] transition-colors cursor-pointer ${y===0?"pt-1":"pt-3"}`,children:[t.jsx("span",{className:"truncate",children:N}),t.jsx("span",{className:"shrink-0 opacity-60",children:b===N?t.jsx(xe,{size:10,className:"text-green-500"}):t.jsx(Ct,{size:10})})]}),t.jsx("ul",{className:"space-y-0.5 max-md:space-y-1",children:P.map(w=>{var M;return t.jsx("li",{children:t.jsxs("button",{onClick:()=>{m.current||r(w.id)},onContextMenu:$=>g($,w.id),onTouchStart:$=>v($,w.id),onTouchEnd:j,onTouchMove:R,className:`w-full text-left px-2.5 py-1.5 max-md:px-3 max-md:py-2.5 rounded-[8px] transition-all duration-150 ${n===w.id?"bg-[rgba(0,145,255,0.08)] dark:bg-[rgba(0,145,255,0.12)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:`w-1.5 h-1.5 max-md:w-2 max-md:h-2 rounded-full flex-shrink-0 transition-colors ${w.status==="streaming"?"bg-[var(--color-accent)] animate-pulse":w.status==="compacting"?"bg-amber-500 animate-pulse":"bg-green-500"}`,title:w.status==="streaming"?o("sidebar.statusStreaming"):w.status==="compacting"?o("sidebar.statusCompacting"):o("sidebar.statusIdle")}),t.jsx("span",{className:"text-[14px] leading-[18px] max-md:text-[15px] max-md:leading-[21px] text-[var(--label-primary)] truncate",children:w.cwd.split("/").pop()||w.cwd})]}),t.jsx("div",{className:"ml-3.5 text-[11px] leading-[14px] max-md:text-[12px] max-md:leading-[16px] text-[var(--label-secondary)] truncate mt-0.5",children:w.model.name||`${w.model.provider}/${w.model.id}`}),((M=w.contextUsage)==null?void 0:M.percent)!=null&&w.contextUsage.percent>0&&t.jsx("div",{className:"ml-3.5 mt-1.5 h-[3px] rounded-full bg-[var(--fill-quaternary)] overflow-hidden",children:t.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${Math.max(2,Math.min(100,w.contextUsage.percent))}%`,backgroundColor:w.contextUsage.percent>=90?"#ff4245":w.contextUsage.percent>=60?"#ff9230":"#30d158"}})})]})},w.id)})})]},N))})}),d&&t.jsx(lr,{position:d.position,onClose:T,children:t.jsx(ir,{icon:t.jsx(dn,{size:14}),label:o("sidebar.shutdown"),danger:!0,onClick:()=>{s(d.instanceId),T()}})}),t.jsx("div",{className:"px-3 py-2 border-t border-[var(--separator)]",children:t.jsxs("button",{onClick:()=>i("/settings"),className:"flex items-center gap-2 w-full px-2.5 py-1.5 max-md:py-2.5 rounded-[8px] text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-all duration-150",children:[t.jsx(un,{size:15,className:"max-md:w-4 max-md:h-4"}),t.jsx("span",{className:"text-[13px] leading-[18px] max-md:text-[14px] max-md:leading-[20px]",children:o("sidebar.settings")})]})})]})}function Ye(e){const n=e.id??e.__renderKey;if(!n)throw new Error(`SessionEntry missing stable render key: type=${e.type}`);return n}const nt=Object.freeze({text:"",images:[]}),Ce=Me((e,n)=>({drafts:new Map,setDraft:(r,s)=>{e(a=>{const o=a.drafts.get(r)??nt,i=typeof s=="function"?s(o):s,c=new Map(a.drafts);return i.text||i.images.length>0?c.set(r,i):c.delete(r),{drafts:c}})}})),pe=e=>e!==void 0&&e!=="idle";function dr(){return e=>{var n;((n=e.children[0])==null?void 0:n.type)==="yaml"&&(e.children[0]={type:"code",lang:"__frontmatter__",value:e.children[0].value})}}function ur({yamlText:e}){let n=[];try{const r=Mt.load(e);r&&typeof r=="object"&&!Array.isArray(r)&&(n=Object.entries(r).map(([s,a])=>{const o=typeof a=="string"?a:JSON.stringify(a,null,2);return[s,o]}))}catch{n=[["raw",e]]}return n.length===0?null:t.jsx("div",{className:"my-2 rounded-[8px] border border-[var(--separator)] overflow-hidden",children:t.jsx("table",{className:"w-full text-[13px]",children:t.jsx("tbody",{children:n.map(([r,s])=>t.jsxs("tr",{className:"border-b last:border-b-0 border-[var(--separator)]",children:[t.jsx("td",{className:"px-3 py-1.5 bg-[var(--fill-quaternary)] text-[var(--label-secondary)] font-medium whitespace-nowrap align-top w-[1%]",children:r}),t.jsx("td",{className:"px-3 py-1.5 text-[var(--label-primary)] whitespace-pre-wrap break-all",children:s})]},r))})})})}function Ee(e){return e==null||typeof e=="boolean"?"":typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(Ee).join(""):typeof e=="object"&&"props"in e?Ee(e.props.children):""}function mt({language:e,children:n}){const{t:r}=z(),[s,a]=l.useState(!1),o=Ee(n).replace(/\n$/,""),i=l.useCallback(()=>{navigator.clipboard.writeText(o),a(!0),setTimeout(()=>a(!1),2e3)},[o]);return t.jsxs("div",{className:"group/code relative my-2 rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] overflow-hidden",children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-[var(--separator)]",children:[t.jsx("span",{className:"text-[11px] text-[var(--label-tertiary)] font-medium",children:e||"code"}),t.jsxs("button",{onClick:i,className:"flex items-center gap-1 text-[11px] text-[var(--label-tertiary)] hover:text-[var(--label-secondary)] transition-colors",children:[s?t.jsx(xe,{size:12}):t.jsx(Ct,{size:12}),r(s?"entries.copied":"entries.copy")]})]}),t.jsx("pre",{className:"px-3 py-2.5 overflow-x-auto text-[13px] leading-[20px]",children:t.jsx("code",{children:n})})]})}const pr={code({className:e,children:n,...r}){const s=/language-(\w+)/.exec(e||"");if((s==null?void 0:s[1])==="__frontmatter__"){const a=Ee(n).replace(/\n$/,"");return t.jsx(ur,{yamlText:a})}return s?t.jsx(mt,{language:s[1],children:n}):String(n).includes(`
2
+ `)?t.jsx(mt,{language:"",children:n}):t.jsx("code",{className:"px-1.5 py-0.5 rounded-[4px] bg-[var(--fill-secondary)] text-[13px] font-mono break-words",...r,children:n})},pre({children:e}){return t.jsx(t.Fragment,{children:e})},p({children:e}){return t.jsx("p",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] mb-2 last:mb-0",children:e})},h1({children:e}){return t.jsx("h1",{className:"text-[20px] leading-[26px] font-semibold text-[var(--label-primary)] mt-4 mb-2",children:e})},h2({children:e}){return t.jsx("h2",{className:"text-[17px] leading-[23px] font-semibold text-[var(--label-primary)] mt-3 mb-1.5",children:e})},h3({children:e}){return t.jsx("h3",{className:"text-[15px] leading-[21px] font-semibold text-[var(--label-primary)] mt-2 mb-1",children:e})},ul({children:e}){return t.jsx("ul",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] pl-5 mb-2 list-disc space-y-0.5",children:e})},ol({children:e}){return t.jsx("ol",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] pl-5 mb-2 list-decimal space-y-0.5",children:e})},li({children:e}){return t.jsx("li",{className:"text-[14px] leading-[22px]",children:e})},blockquote({children:e}){return t.jsx("blockquote",{className:"pl-3 border-l-2 border-[var(--color-accent)] text-[14px] leading-[22px] text-[var(--label-secondary)] my-2",children:e})},table({children:e}){return t.jsx("div",{className:"overflow-x-auto my-2 rounded-[8px] border border-[var(--separator)]",children:t.jsx("table",{className:"w-full text-[13px]",children:e})})},thead({children:e}){return t.jsx("thead",{className:"bg-[var(--fill-tertiary)] text-[var(--label-secondary)]",children:e})},th({children:e}){return t.jsx("th",{className:"px-3 py-1.5 text-left font-medium border-b border-[var(--separator)]",children:e})},td({children:e}){return t.jsx("td",{className:"px-3 py-1.5 border-b border-[var(--separator)]",children:e})},hr(){return t.jsx("hr",{className:"my-3 border-[var(--separator)]"})},a({href:e,children:n}){return t.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-accent)] hover:underline",children:n})},strong({children:e}){return t.jsx("strong",{className:"font-semibold text-[var(--label-primary)]",children:e})},em({children:e}){return t.jsx("em",{className:"italic text-[var(--label-primary)]",children:e})}};function xr(e){if(!/^---\s*\n/.test(e))return e;const n=e.match(/\n---\s*(?:\n|$)/);if(!n||n.index===void 0)return e;const r=e.slice(4,n.index);let s=!1;try{const a=Mt.load(r);s=typeof a=="object"&&a!==null&&!Array.isArray(a)&&Object.keys(a).length>0}catch{}return s?e:"***"+e.slice(3)}var kt;const fr={...Le,attributes:{...Le.attributes,code:[...((kt=Le.attributes)==null?void 0:kt.code)||[],["className",/^language-.+/]]}};function J({content:e}){if(!e.trim())return null;const n=l.useMemo(()=>xr(e),[e]);return t.jsx("div",{className:"markdown-body min-w-0 max-w-full break-words",children:t.jsx(Pn,{remarkPlugins:[Bn,Fn,Dn,dr],rehypePlugins:[$n,[On,fr],zn],components:pr,children:n})})}function mr({content:e,streaming:n,autoCollapse:r}){const{t:s}=z(),[a,o]=l.useState(r),i=l.useRef(!1);return l.useEffect(()=>{r&&!i.current&&(i.current=!0,o(!0))},[r]),t.jsxs("div",{className:`rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] overflow-hidden transition-all ${a?"max-w-[640px]":""}`,children:[t.jsxs("button",{onClick:()=>o(!a),className:"w-full flex items-center gap-1.5 px-3 py-1.5 text-left hover:bg-[var(--fill-quaternary)] transition-colors",children:[t.jsx(Ze,{size:12,className:`text-[var(--label-tertiary)] transition-transform ${a?"":"rotate-90"}`}),t.jsx("span",{className:"text-[12px] font-medium text-[var(--label-tertiary)]",children:s(n?"entries.thinkingStreaming":"entries.thinking")})]}),!a&&t.jsx("div",{className:"px-3 pb-2.5 pt-0.5 text-[var(--label-secondary)] italic",children:t.jsx(J,{content:e})})]})}function X({title:e,trailing:n,onClose:r,children:s}){return t.jsx("div",{className:"fixed-viewport z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm",onClick:r,children:t.jsxs("div",{className:"w-[90%] max-w-[640px] max-h-[80vh] rounded-[18px] bg-[var(--material-modal)] backdrop-blur-[30px] border border-[var(--separator)] shadow-[0_8px_40px_rgba(0,0,0,0.12)] flex flex-col overflow-hidden",onClick:a=>a.stopPropagation(),children:[t.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-[var(--separator)]",children:[t.jsx("div",{className:"flex items-center gap-2 text-[15px] font-semibold text-[var(--label-primary)] select-text",children:e}),t.jsxs("div",{className:"flex items-center gap-2 select-text",children:[n,t.jsx("button",{onClick:r,className:"select-none w-7 h-7 flex items-center justify-center rounded-full hover:bg-[var(--fill-secondary)] transition-colors text-[var(--label-secondary)]",children:t.jsx(Qe,{size:14})})]})]}),s]})})}function Dt(e){return{read:t.jsx(mn,{size:14}),bash:t.jsx(fn,{size:14}),edit:t.jsx(ut,{size:14}),write:t.jsx(ut,{size:14})}[e]??t.jsx(pn,{size:14})}function hr(e,n){switch(e){case"read":{const r=n.path??"",s=n.offset,a=n.limit;if(s!=null||a!=null){const o=s??"",i=a!=null?(s??1)+a-1:"";return`${r} [${o}:${i}]`}return r}case"bash":return n.command?String(n.command).slice(0,80):"";case"edit":return n.path??"";case"write":return n.path??"";default:return""}}function Te(e,n){let r=0;const s=/`+/g;let a;for(;(a=s.exec(e))!==null;)a[0].length>r&&(r=a[0].length);const o="`".repeat(Math.max(3,r+1));return`${o}${n}
3
+ ${e}
4
+ ${o}`}const gr={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",json:"json",css:"css",scss:"scss",less:"less",html:"xml",htm:"xml",xml:"xml",svg:"xml",md:"markdown",mdx:"markdown",yaml:"yaml",yml:"yaml",toml:"ini",ini:"ini",sh:"bash",bash:"bash",zsh:"bash",fish:"bash",py:"python",rb:"ruby",rs:"rust",go:"go",java:"java",kt:"kotlin",swift:"swift",c:"c",h:"c",cpp:"cpp",hpp:"cpp",cs:"csharp",php:"php",sql:"sql",graphql:"graphql",gql:"graphql",dockerfile:"dockerfile",makefile:"makefile",lua:"lua",vim:"vim",diff:"diff",patch:"diff"};function Ht(e){var a;const n=e.split("/").pop()??"",r=n.toLowerCase();if(r==="dockerfile")return"dockerfile";if(r==="makefile"||r==="gnumakefile")return"makefile";const s=(a=n.split(".").pop())==null?void 0:a.toLowerCase();if(s)return gr[s]}function br(e,n){for(const r of e){const s=r.message;if((s==null?void 0:s.role)==="toolResult"&&s.toolCallId===n)return{content:Array.isArray(s.content)?s.content.filter(o=>o.type==="text").map(o=>o.text).join(`
5
+ `):String(s.content??""),isError:s.isError??!1,details:s.details??void 0}}return null}function vr({name:e,args:n,toolCallId:r,entries:s,isAborted:a=!1}){const[o,i]=l.useState(!1),c=hr(e,n),d=l.useMemo(()=>r?br(s,r):null,[s,r]),u=d!==null,m=((d==null?void 0:d.isError)??!1)||!u&&a,g=e==="read"?yr:e==="bash"?jr:e==="write"?wr:e==="edit"?kr:Sr;return t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>i(!0),className:"w-full max-w-[640px] flex items-center gap-2.5 px-3 py-2 rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] hover:bg-[var(--fill-tertiary)] transition-colors text-left group select-none",children:[t.jsx("span",{className:"text-[var(--label-secondary)] group-hover:text-[var(--color-accent)] transition-colors",children:Dt(e)}),t.jsx("span",{className:"text-[13px] font-medium text-[var(--label-primary)]",children:e}),c&&t.jsx("span",{className:"text-[12px] text-[var(--label-tertiary)] truncate flex-1 min-w-0",children:c}),t.jsx("span",{className:"flex-shrink-0 ml-auto",children:!u&&!a?t.jsx(ue,{size:14,className:"text-[var(--label-tertiary)] animate-spin"}):m?t.jsx(Et,{size:14,className:"text-red-400"}):t.jsx(Ze,{size:14,className:"text-[var(--label-tertiary)] group-hover:text-[var(--label-secondary)] transition-colors"})})]}),o&&t.jsx(g,{name:e,args:n,result:d,isAborted:a,onClose:()=>i(!1)})]})}function fe(){const{t:e}=z();return t.jsxs("div",{className:"flex items-center gap-2 text-[12px] text-[var(--label-tertiary)]",children:[t.jsx(ue,{size:14,className:"animate-spin"}),t.jsx("span",{children:e("entries.running")})]})}function me(){const{t:e}=z();return t.jsxs("div",{className:"flex items-center gap-2 text-[12px] text-red-400",children:[t.jsx(Et,{size:14}),t.jsx("span",{children:e("entries.aborted")})]})}function he({name:e}){return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-[var(--label-secondary)] select-none",children:Dt(e)}),e]})}function yr({name:e,args:n,result:r,isAborted:s,onClose:a}){const o=n.path??"",i=n.offset,c=n.limit,d=Ht(o);let u=o;if(i!=null||c!=null){const g=i??"",v=c!=null?(i??1)+c-1:"";u+=` [${g}:${v}]`}const p=d==="markdown",m=r&&!r.isError&&!p?Te(r.content,d??""):null;return t.jsxs(X,{title:t.jsx(he,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:u})}),t.jsx("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 scrollbar-auto",children:r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):p?t.jsx(J,{content:r.content}):t.jsx(J,{content:m}):s?t.jsx(me,{}):t.jsx(fe,{})})]})}function jr({name:e,args:n,result:r,isAborted:s,onClose:a}){const o=n.command??"",i=n.timeout,c=Te(o,"bash"),d=r&&!r.isError?Te(r.content.trim(),"plaintext"):null;return t.jsx(X,{title:t.jsx(he,{name:e}),onClose:a,trailing:i!=null?t.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-[var(--label-tertiary)]",children:[t.jsx(xn,{size:12}),i,"s"]}):void 0,children:t.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto scrollbar-auto",children:[t.jsx("div",{className:"px-5 pt-3 pb-3 bg-[var(--fill-quaternary)]",children:t.jsx(J,{content:c})}),t.jsxs("div",{className:"px-5 pt-3 pb-5",children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-2",children:"Output"}),r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):t.jsx(J,{content:d}):s?t.jsx(me,{}):t.jsx(fe,{})]})]})})}function wr({name:e,args:n,result:r,isAborted:s,onClose:a}){const{t:o}=z(),i=n.path??"",c=n.content??"",d=Ht(i),u=d==="markdown",p=u?null:Te(c,d??"");return t.jsxs(X,{title:t.jsx(he,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:i})}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 space-y-3 scrollbar-auto",children:[t.jsx("section",{children:t.jsx(J,{content:u?c:p})}),r!==null&&t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.result")}),t.jsx("pre",{className:`text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 ${r.isError?"text-red-400 bg-red-400/5":"text-[var(--label-secondary)] bg-[var(--fill-tertiary)]"}`,children:r.content})]}),r===null&&(s?t.jsx(me,{}):t.jsx(fe,{}))]})]})}function Nr({diff:e}){const n=e.split(`
6
+ `);return t.jsx("pre",{className:"text-[13px] leading-[20px] font-mono overflow-x-auto",children:t.jsx("div",{style:{minWidth:"fit-content"},children:n.map((r,s)=>{const a=r[0];return a==="+"?t.jsx("div",{className:"px-3 rounded-[2px]",style:{backgroundColor:"var(--diff-add-bg)",color:"var(--diff-add-text)"},children:r},s):a==="-"?t.jsx("div",{className:"px-3 rounded-[2px]",style:{backgroundColor:"var(--diff-del-bg)",color:"var(--diff-del-text)"},children:r},s):t.jsx("div",{className:"px-3",style:{color:"var(--diff-context-text)"},children:r},s)})})})}function kr({name:e,args:n,result:r,isAborted:s,onClose:a}){var c;const o=n.path??"",i=(c=r==null?void 0:r.details)==null?void 0:c.diff;return t.jsxs(X,{title:t.jsx(he,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:o})}),t.jsx("div",{className:"flex-1 overflow-y-auto pt-3 pb-5 scrollbar-auto",children:r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] mx-5 px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):i?t.jsx(Nr,{diff:i}):t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words mx-5 px-3 py-2 text-[var(--label-secondary)] bg-[var(--fill-tertiary)] rounded-[8px]",children:r.content}):s?t.jsx("div",{className:"px-5",children:t.jsx(me,{})}):t.jsx("div",{className:"px-5",children:t.jsx(fe,{})})})]})}function Sr({name:e,args:n,result:r,isAborted:s,onClose:a}){const{t:o}=z();return t.jsx(X,{title:t.jsx(he,{name:e}),onClose:a,children:t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 space-y-3 scrollbar-auto",children:[t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.params")}),t.jsx("pre",{className:"text-[13px] leading-[20px] text-[var(--label-secondary)] whitespace-pre-wrap break-words bg-[var(--fill-tertiary)] rounded-[8px] px-3 py-2 overflow-x-auto",children:JSON.stringify(n,null,2)})]}),r!==null&&t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.result")}),t.jsx("pre",{className:`text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 overflow-x-auto ${r.isError?"text-red-400 bg-red-400/5":"text-[var(--label-secondary)] bg-[var(--fill-tertiary)]"}`,children:r.content})]}),r===null&&t.jsx("section",{children:s?t.jsx(me,{}):t.jsx(fe,{})})]})})}function qt({src:e,alt:n,onClose:r}){const s=l.useCallback(a=>{a.key==="Escape"&&r()},[r]);return l.useEffect(()=>(document.addEventListener("keydown",s),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",s),document.body.style.overflow=""}),[s]),t.jsxs("div",{className:"fixed-viewport z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-[30px] animate-in fade-in duration-150",onClick:r,children:[t.jsx("button",{onClick:r,className:"absolute top-4 right-4 z-10 w-9 h-9 rounded-full bg-[var(--badge-bg)] hover:bg-[var(--badge-bg-hover)] text-[var(--badge-text)] flex items-center justify-center transition-colors","aria-label":"Close",children:t.jsx(Qe,{size:18})}),t.jsx("img",{src:e,alt:n??"Image preview",onClick:a=>a.stopPropagation(),className:"max-w-[90vw] max-h-[90vh] object-contain rounded-lg shadow-2xl select-none",draggable:!1})]})}function Cr({entry:e,entries:n,isLast:r,isStreaming:s,onReEdit:a}){const o=r&&s;switch(e.type){case"message":return t.jsx(Er,{entry:e,entries:n,streaming:o,onReEdit:a});case"compaction":case"branch_summary":return t.jsx(Ir,{type:e.type,summary:e.summary??""});default:return null}}function Er({entry:e,entries:n,streaming:r,onReEdit:s}){const a=e.message;if(!a)return null;switch(a.role){case"user":return t.jsx(Tr,{content:a.content});case"assistant":return t.jsx(Rr,{content:a.content,entries:n,streaming:r,stopReason:a.stopReason,errorMessage:a.errorMessage,onReEdit:s});case"toolResult":return null;default:return null}}function Tr({content:e}){const[n,r]=l.useState(null);let s="",a=[];return typeof e=="string"?s=e:Array.isArray(e)?(s=e.filter(o=>o.type==="text").map(o=>o.text).join(""),a=e.filter(o=>o.type==="image")):s=JSON.stringify(e),t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex justify-end px-4 py-1.5",children:t.jsxs("div",{className:"max-w-[80%] rounded-[16px] rounded-br-[4px] bg-[var(--color-accent)] text-white",children:[a.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1.5 p-2 pb-0",children:a.map((o,i)=>{const c=`data:${o.mimeType};base64,${o.data}`;return t.jsx("button",{onClick:()=>r(c),className:"block rounded-[8px] overflow-hidden hover:opacity-90 transition-opacity",children:t.jsx("img",{src:c,alt:`Attached image ${i+1}`,className:"max-w-[200px] max-h-[150px] object-cover",draggable:!1})},i)})}),s&&t.jsx("p",{className:"text-[14px] leading-[21px] whitespace-pre-wrap break-words px-3.5 py-2",children:s}),!s&&a.length>0&&t.jsx("div",{className:"h-2"})]})}),n&&t.jsx(qt,{src:n,onClose:()=>r(null)})]})}function Rr({content:e,entries:n,streaming:r,stopReason:s,errorMessage:a,onReEdit:o}){if((s==="error"||s==="aborted")&&a&&(!Array.isArray(e)||e.length===0))return t.jsx("div",{className:"px-4",children:t.jsx(ht,{message:a,onReEdit:s==="aborted"?o:void 0})});if(!Array.isArray(e))return t.jsx("div",{className:"px-4",children:t.jsx(J,{content:String(e)})});const i=s==="aborted"||s==="error",c=e[e.length-1],d=r&&(c==null?void 0:c.type)==="thinking",u=e.some(p=>p.type==="text"||p.type==="toolCall")||i;return t.jsxs("div",{className:"px-4 space-y-2",children:[e.map((p,m)=>t.jsx(Mr,{block:p,entries:n,streaming:r&&m===e.length-1,autoCollapse:p.type==="thinking"&&u&&!d,isAborted:i},m)),(s==="error"||s==="aborted")&&a&&t.jsx(ht,{message:a,onReEdit:s==="aborted"&&!r?o:void 0}),r&&(c==null?void 0:c.type)!=="thinking"&&t.jsx("span",{className:"inline-block w-2 h-4 bg-[var(--label-tertiary)] rounded-sm animate-pulse"})]})}function Mr({block:e,entries:n,streaming:r,autoCollapse:s,isAborted:a}){var o;switch(e.type){case"text":return t.jsx(J,{content:e.text});case"thinking":return(o=e.thinking)!=null&&o.trim()?t.jsx(mr,{content:e.thinking,streaming:r,autoCollapse:s}):null;case"toolCall":return t.jsx(vr,{name:e.name,args:e.arguments,toolCallId:e.id,entries:n,isAborted:a});default:return null}}function Ir({type:e,summary:n}){const{t:r}=z(),[s,a]=l.useState(!1),o=r(e==="compaction"?"entries.contextCompacted":"entries.branchSummary");return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex justify-center px-4 py-2",children:t.jsxs("button",{onClick:()=>n&&a(!0),className:`px-3 py-1 rounded-full bg-[var(--fill-tertiary)] text-[11px] text-[var(--label-tertiary)] transition-colors ${n?"hover:bg-[var(--fill-secondary)] cursor-pointer":""}`,children:[o,n&&t.jsxs("span",{className:"ml-1.5 opacity-70",children:["— ",n.slice(0,60),n.length>60?"...":""]})]})}),s&&t.jsx(X,{title:o,onClose:()=>a(!1),children:t.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4 scrollbar-auto",children:t.jsx(J,{content:n})})})]})}function ht({message:e,onReEdit:n}){var m,g;const{t:r}=z(),[s,a]=l.useState(!1);let o=e,i="",c="",d="";const u=e.indexOf("{");if(u>0){o=e.slice(0,u).trim();try{const v=JSON.parse(e.slice(u));i=((m=v==null?void 0:v.error)==null?void 0:m.message)??e.slice(u),c=((g=v==null?void 0:v.error)==null?void 0:g.type)??"";const j=i.match(/request id:\s*([\w]+)/i);j&&(d=j[1])}catch{i=e.slice(u)}}const p=i.length>200;return t.jsxs(t.Fragment,{children:[t.jsx("div",{onClick:p?()=>a(!0):void 0,className:`rounded-[10px] border border-[rgba(255,66,69,0.3)] bg-[rgba(255,66,69,0.06)] dark:bg-[rgba(255,66,69,0.1)] px-3.5 py-2.5 max-w-[640px] ${p?"cursor-pointer":""}`,children:t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx(He,{size:14,className:"text-[#ff4245] flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("p",{className:"text-[12px] font-medium text-[#ff4245]",children:o}),t.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[n&&t.jsx("button",{onClick:v=>{v.stopPropagation(),n()},className:"text-[12px] leading-[15px] text-[var(--color-accent)] hover:opacity-70 active:opacity-50 transition-opacity select-none",children:r("reEdit.button")}),p&&t.jsx(Ze,{size:12,className:"text-[var(--label-tertiary)] flex-shrink-0"})]})]}),i&&!p&&t.jsx("p",{className:"text-[11px] text-[var(--label-secondary)] mt-1.5 break-all whitespace-pre-wrap",children:i})]})]})}),s&&t.jsx(X,{title:r("error.title"),onClose:()=>a(!1),children:t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 py-6 scrollbar-auto",children:[t.jsxs("div",{className:"flex flex-col items-center text-center mb-5",children:[t.jsx("div",{className:"w-10 h-10 rounded-full bg-[rgba(255,66,69,0.1)] dark:bg-[rgba(255,66,69,0.15)] flex items-center justify-center mb-3",children:t.jsx(He,{size:20,className:"text-[#ff4245]"})}),t.jsx("p",{className:"text-[15px] font-semibold text-[#ff4245]",children:o})]}),t.jsxs("div",{className:"rounded-[10px] bg-[var(--fill-card)] p-4 space-y-3",children:[t.jsx(Oe,{label:r("error.message"),value:i}),c&&t.jsx(Oe,{label:r("error.type"),value:c}),d&&t.jsx(Oe,{label:r("error.requestId"),value:d,mono:!0})]})]})})]})}function Oe({label:e,value:n,mono:r}){return t.jsxs("div",{children:[t.jsx("p",{className:"text-[11px] text-[var(--label-tertiary)] mb-0.5",children:e}),t.jsx("p",{className:`text-[14px] leading-[22px] text-[var(--label-primary)] break-all whitespace-pre-wrap ${r?"font-mono text-[13px] leading-[20px]":""}`,children:n})]})}function Kt({title:e,subtitle:n,backTo:r="/",actions:s,children:a}){const o=Ie();return t.jsxs("div",{className:"md:hidden flex items-center gap-2",children:[t.jsx("button",{onClick:()=>o(r),"aria-label":"Back to instances",className:"flex select-none items-center text-[var(--label-secondary)] active:opacity-60 transition-opacity",children:t.jsx(hn,{size:20})}),a??t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[14px] font-medium text-[var(--label-primary)] truncate select-text",children:e}),n&&t.jsx("div",{className:"text-[11px] text-[var(--label-tertiary)] truncate select-text",children:n})]}),s]})]})}function Ar(e,n){if(n&&e.startsWith(n)){const r=e.slice(n.length);return!r||r==="/"?"~":"~"+(r.startsWith("/")?r:"/"+r)}return e}function Ge(e,n){if(e.length<=n)return e;const r=Math.floor((n-1)/2),s=n-1-r;return e.slice(0,s)+"…"+e.slice(-r)}function _r(e){const n=e.split("/").filter(Boolean);return n.length<=2?e.length:n.slice(-2).join("/").length}function gt(e,n){if(e.length<=n)return e;const r=_r(e);if(r+2<=n){const s=n-1-r;return e.slice(0,s)+"…"+e.slice(-r)}return Ge(e,n)}const Lr=6.2,Pr=20,$r=8;function bt({icon:e,text:n,copyText:r,title:s}){const[a,o]=l.useState(!1),i=l.useRef(null);l.useEffect(()=>()=>{i.current&&clearTimeout(i.current)},[]);const c=l.useCallback(()=>{navigator.clipboard.writeText(r),o(!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>o(!1),1500)},[r]);return t.jsxs("button",{type:"button",onClick:c,title:s??r,className:"inline-flex min-w-0 items-center gap-1 rounded-[4px] px-1 py-0.5 -mx-1 transition-colors hover:bg-[var(--fill-tertiary)] active:bg-[var(--fill-secondary)] cursor-pointer select-none",children:[t.jsx("span",{className:"shrink-0 opacity-70",children:a?t.jsx(xe,{size:11,className:"text-green-500"}):e}),t.jsx("span",{className:"truncate",children:n})]})}function vt({title:e,cwd:n,homedir:r,gitBranch:s,actions:a}){const o=n?Ar(n,r):null,i=l.useRef(null),[c,d]=l.useState(o),[u,p]=l.useState(s),m=l.useCallback(()=>{const g=i.current;if(!g)return;const v=g.getBoundingClientRect().width;if(v<=0)return;const j=(o?1:0)+(s?1:0),R=j*Pr+(j-1)*$r,T=Math.floor((v-R)/Lr);if(o&&s){const b=Math.max(10,Math.floor(T*.6)),h=Math.max(8,T-b);d(gt(o,b)),p(Ge(s,h))}else o?d(gt(o,Math.max(10,T))):s&&p(Ge(s,Math.max(8,T)))},[o,s]);return l.useEffect(()=>{const g=i.current;if(!g)return;const v=new ResizeObserver(()=>m());return v.observe(g),m(),()=>v.disconnect()},[m]),l.useEffect(()=>{d(o),p(s),m()},[o,s,m]),t.jsxs("div",{className:"flex items-center justify-between gap-2 min-w-0 flex-1 min-h-[40px]",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"truncate text-[14px] leading-[20px] font-medium text-[var(--label-primary)] select-text",children:e}),(o||s)&&t.jsxs("div",{ref:i,className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] leading-[14px] text-[var(--label-secondary)]",children:[c&&t.jsx(bt,{icon:t.jsx(Tt,{size:11}),text:c,copyText:n,title:n},n),u&&t.jsx(bt,{icon:t.jsx(gn,{size:11}),text:u,copyText:s},s)]})]}),a]})}function Or(e,n="top",r="right",s=8,a=12){const{innerWidth:o,innerHeight:i}=window,c=r==="left"?{left:Math.max(a,e.left)}:{right:Math.max(a,o-e.right)};return n==="bottom"?{...c,top:Math.max(a,e.bottom+s)}:{...c,bottom:Math.max(a,i-e.top+s)}}function rt({trigger:e,width:n=200,children:r,disabled:s=!1,placement:a="top",align:o="right"}){const[i,c]=l.useState(!1),[d,u]=l.useState(null),p=l.useRef(null),m=l.useRef(null);l.useEffect(()=>{if(!i)return;function R(T){var h,k;const b=T.target;!((h=p.current)!=null&&h.contains(b))&&!((k=m.current)!=null&&k.contains(b))&&c(!1)}return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[i]),l.useEffect(()=>{if(!i)return;const R=()=>c(!1);return window.addEventListener("resize",R),()=>{window.removeEventListener("resize",R)}},[i]);const g=()=>{var T;if(s)return;if(i){c(!1);return}const R=(T=p.current)==null?void 0:T.getBoundingClientRect();R&&(u(Or(R,a,o)),c(!0))},v=()=>c(!1),j=i&&d?Je.createPortal(t.jsx("div",{ref:m,className:"glass-popover z-50",style:{position:"fixed",...d.left!==void 0?{left:d.left}:{right:d.right},...d.top!==void 0?{top:d.top}:{bottom:d.bottom},width:`${n}px`},children:r(v)}),document.body):null;return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"relative",ref:p,onClick:g,children:e({open:i})}),j]})}function zr(e,n){const r=new Date(e),a=Date.now()-r.getTime(),o=Math.floor(a/6e4);if(o<1)return n("session.timeJustNow");if(o<60)return`${o}m`;const i=Math.floor(o/60);if(i<24)return`${i}h`;const c=Math.floor(i/24);if(c<7)return`${c}d`;const d=Math.floor(c/7);return d<4?`${d}w`:r.toLocaleDateString()}function Br({sessions:e,loading:n,hasMore:r,total:s,disabled:a,onOpen:o,onNewSession:i,onSwitchSession:c,onLoadMore:d,onFilterChange:u}){const{t:p}=z(),[m,g]=l.useState(""),v=l.useRef(null),j=l.useRef(null),R=l.useCallback(b=>{g(b),v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{u(b)},300)},[u]),T=l.useCallback(b=>{if(!r||n)return;const h=b.currentTarget;h.scrollHeight-h.scrollTop-h.clientHeight<40&&d(e.length,m)},[r,n,e.length,m,d]);return t.jsx(rt,{trigger:({open:b})=>t.jsx("button",{className:`flex items-center justify-center w-9 h-9 rounded-[8px] transition-colors ${b?"bg-[rgba(0,0,0,0.11)] dark:bg-[rgba(255,255,255,0.11)]":"hover:bg-[var(--fill-tertiary)]"} ${a?"opacity-40 pointer-events-none":""}`,title:p("session.title"),onClick:()=>{b||(g(""),o())},children:t.jsx(bn,{size:16,className:"text-[var(--label-secondary)]"})}),width:320,disabled:a,placement:"bottom",children:b=>t.jsxs("div",{className:"flex flex-col max-h-[360px]",children:[t.jsxs("div",{className:"flex items-center justify-between px-3 pt-2.5 pb-2",children:[t.jsxs("span",{className:"text-[13px] font-medium text-[var(--label-primary)] select-none",children:[p("session.title"),s>0&&t.jsxs("span",{className:"ml-1.5 text-[11px] font-normal text-[var(--label-tertiary)]",children:["(",s,")"]})]}),t.jsxs("button",{onClick:()=>{i(),b()},disabled:a,className:"flex items-center gap-1 px-2 py-1 rounded-[6px] text-[12px] text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-40",children:[t.jsx(St,{size:12}),t.jsx("span",{children:p("session.new")})]})]}),t.jsx("div",{className:"px-3 pb-2",children:t.jsx("input",{type:"text",placeholder:p("session.filter"),value:m,onChange:h=>R(h.target.value),className:"w-full px-2.5 py-1.5 rounded-[6px] bg-[var(--fill-tertiary)] text-[12px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none border border-transparent focus:border-[var(--separator)]",autoFocus:!0})}),t.jsx("div",{className:"h-px bg-[var(--separator)] mx-2"}),t.jsx("div",{ref:j,className:"flex-1 overflow-y-auto scrollbar-auto py-1.5 px-1.5",onScroll:T,children:n&&e.length===0?t.jsx("div",{className:"flex items-center justify-center py-6",children:t.jsx(ue,{size:16,className:"animate-spin text-[var(--label-tertiary)]"})}):e.length===0?t.jsx("div",{className:"py-4 text-center text-[12px] text-[var(--label-tertiary)] select-none",children:p(m?"session.noMatch":"session.noPrevious")}):t.jsxs(t.Fragment,{children:[e.map(h=>t.jsxs("button",{onClick:()=>{h.isCurrent||(c(h.path),b())},disabled:h.isCurrent,className:`w-full text-left px-2.5 py-2 rounded-[8px] transition-colors mb-0.5 ${h.isCurrent?"bg-[var(--fill-secondary)] cursor-default":"hover:bg-[var(--fill-tertiary)] cursor-pointer"}`,children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("span",{className:`text-[13px] leading-[18px] truncate ${h.isCurrent?"font-medium text-[var(--color-accent)]":"text-[var(--label-primary)]"}`,children:h.name||h.firstMessage||p("session.empty")}),t.jsx("span",{className:"text-[11px] text-[var(--label-tertiary)] whitespace-nowrap shrink-0",children:zr(h.modified,p)})]}),h.name&&h.firstMessage&&t.jsx("div",{className:"mt-0.5 text-[11px] leading-[15px] text-[var(--label-tertiary)] truncate",children:h.firstMessage}),t.jsx("div",{className:"mt-0.5 text-[10px] text-[var(--label-quaternary)]",children:p("session.messageCount",{count:h.messageCount})})]},h.id)),n&&e.length>0&&t.jsx("div",{className:"flex items-center justify-center py-2",children:t.jsx(ue,{size:14,className:"animate-spin text-[var(--label-tertiary)]"})})]})})]})})}const Fr=["image/png","image/jpeg","image/gif","image/webp"],Dr=2048,Hr=2048,yt=.85,ze=5*1024*1024;function Ut(){return`img_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}async function jt(e){if(!Fr.includes(e.type))throw new Error(`Unsupported image type: ${e.type}`);const n=await createImageBitmap(e),{width:r,height:s}=Kr(n.width,n.height,Dr,Hr),a=document.createElement("canvas");a.width=r,a.height=s,a.getContext("2d").drawImage(n,0,0,r,s),n.close();let i=e.type,c=yt;e.type!=="image/png"&&e.type!=="image/gif"&&(i="image/jpeg");let d=a.toDataURL(i,c);if(i==="image/jpeg"||i==="image/webp")for(;Be(d)>ze&&c>.3;)c-=.1,d=a.toDataURL(i,c);if(i==="image/png"&&Be(d)>ze)for(i="image/jpeg",c=yt,d=a.toDataURL(i,c);Be(d)>ze&&c>.3;)c-=.1,d=a.toDataURL(i,c);const u=d.split(",")[1];return{id:Ut(),data:u,mimeType:i,previewUrl:d}}function qr(e){const n=[];for(let r=0;r<e.items.length;r++){const s=e.items[r];if(s.type.startsWith("image/")){const a=s.getAsFile();a&&n.push(a)}}return n}function Kr(e,n,r,s){if(e<=r&&n<=s)return{width:e,height:n};const a=Math.min(r/e,s/n);return{width:Math.round(e*a),height:Math.round(n*a)}}function Be(e){const n=e.split(",")[1];return n?Math.ceil(n.length*3/4):0}let Ur=0,ke=[];function te(e,n="info"){const r={id:++Ur,message:e,level:n,phase:"entering"};ke.forEach(s=>s(r))}const Wr=16,Yr=300,Gr={info:3e3,success:3e3,warning:4e3,error:5e3},Vr={info:jn,success:yn,warning:vn,error:He},Jr={info:"var(--toast-icon-info)",success:"var(--toast-icon-success)",warning:"var(--toast-icon-warning)",error:"var(--toast-icon-error)"};function Xr(){const[e,n]=l.useState([]),r=l.useRef(new Set);return l.useEffect(()=>{const s=a=>{n(d=>[...d,a]);const o=setTimeout(()=>{r.current.delete(o),n(d=>d.map(u=>u.id===a.id?{...u,phase:"visible"}:u))},Wr);r.current.add(o);const i=Gr[a.level],c=setTimeout(()=>{r.current.delete(c),n(u=>u.map(p=>p.id===a.id?{...p,phase:"exiting"}:p));const d=setTimeout(()=>{r.current.delete(d),n(u=>u.filter(p=>p.id!==a.id))},Yr);r.current.add(d)},i);r.current.add(c)};return ke.push(s),()=>{ke=ke.filter(a=>a!==s),r.current.forEach(a=>clearTimeout(a)),r.current.clear()}},[]),e.length===0?null:t.jsx("div",{className:"fixed top-[max(1rem,env(safe-area-inset-top))] left-1/2 -translate-x-1/2 z-[100] flex flex-col items-center gap-2 pointer-events-none",children:e.map(s=>{const a=Vr[s.level],o=Jr[s.level];return t.jsxs("div",{className:"pointer-events-auto flex items-center gap-2 rounded-full bg-[var(--panel-bg)] backdrop-blur-[30px] border-[0.5px] border-[var(--panel-border)] shadow-[var(--panel-shadow)] px-4 py-2.5 text-[13px] leading-[16px] text-[var(--label-primary)] select-none transition-all duration-300 ease-out",style:s.phase==="entering"?{opacity:0,transform:"translateY(-8px)"}:s.phase==="exiting"?{opacity:0,transform:"translateY(-4px)"}:{opacity:1,transform:"translateY(0)"},children:[t.jsx(a,{size:14,className:"shrink-0",style:{color:o}}),t.jsx("span",{children:s.message})]},s.id)})})}function Zr({currentModel:e,availableModels:n,onSelect:r}){const a=n&&n.length>0&&r,o=new Map;if(n)for(const c of n){const d=o.get(c.provider)??[];d.push(c),o.set(c.provider,d)}const i=c=>c.provider===e.provider&&c.id===e.id;return t.jsx(rt,{disabled:!a,width:280,align:"left",trigger:({open:c})=>t.jsxs("button",{className:`inline-flex items-center gap-1 px-2 py-1 rounded-[9px] bg-[var(--fill-tertiary)] text-[12px] transition-colors ${a?"hover:bg-[var(--fill-secondary)] hover:text-[var(--label-primary)] cursor-pointer":"cursor-default"} text-[var(--label-secondary)]`,children:[t.jsx("span",{className:"max-w-[140px] truncate select-text",children:e.name||e.id}),a&&t.jsx(Rt,{size:10,className:`transition-transform ${c?"rotate-180":""}`})]}),children:c=>t.jsx("div",{className:"max-h-[320px] overflow-y-auto py-1.5 px-1.5 scrollbar-auto",children:Array.from(o.entries()).map(([d,u],p)=>t.jsxs("div",{children:[p>0&&t.jsx("div",{className:"mx-1 my-1 h-px bg-[var(--separator)]"}),t.jsx("div",{className:"px-2.5 pt-2 pb-1 text-[11px] font-bold text-[var(--label-tertiary)] uppercase select-none",children:d}),u.map(m=>{const g=i(m);return t.jsxs("button",{onClick:()=>{g||r==null||r(m.provider,m.id),c()},className:`w-full text-left px-2.5 py-2 rounded-[8px] flex items-center gap-2 transition-colors select-none mb-0.5 ${g?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[13px] text-[var(--label-primary)] truncate select-text",children:m.name||m.id}),t.jsx("div",{className:"text-[11px] text-[var(--label-tertiary)] truncate select-text",children:m.id})]}),g&&t.jsx(xe,{size:14,className:"text-[var(--color-accent)] flex-shrink-0"})]},`${m.provider}/${m.id}`)})]},d))})})}const Qr=["off","minimal","low","medium","high"];function es({currentLevel:e,availableLevels:n,onSelect:r}){const s=!!r,a=n.length>0?n:Qr;return t.jsx(rt,{disabled:!s,width:160,align:"left",trigger:({open:o})=>t.jsxs("button",{className:`inline-flex items-center gap-1 px-2 py-1 rounded-[9px] bg-[var(--fill-tertiary)] text-[12px] transition-colors ${s?"hover:bg-[var(--fill-secondary)] hover:text-[var(--label-primary)] cursor-pointer":"cursor-default"} text-[var(--label-secondary)]`,children:[t.jsx("span",{className:"select-text",children:e}),s&&t.jsx(Rt,{size:10,className:`transition-transform ${o?"rotate-180":""}`})]}),children:o=>t.jsx("div",{className:"py-1.5 px-1.5",children:a.map(i=>{const c=i===e;return t.jsxs("button",{onClick:()=>{c||r==null||r(i),o()},className:`w-full text-left px-2.5 py-2 rounded-[8px] flex items-center gap-2 transition-colors select-none mb-0.5 ${c?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsx("span",{className:"flex-1 text-[13px] text-[var(--label-primary)]",children:i}),c&&t.jsx(xe,{size:14,className:"text-[var(--color-accent)] flex-shrink-0"})]},i)})})})}function ts({onClose:e,onConfirm:n}){const{t:r}=z(),[s,a]=l.useState(""),o=l.useCallback(()=>{n(s.trim()||void 0)},[s,n]);return t.jsx(X,{title:r("compact.title"),onClose:e,children:t.jsxs("div",{className:"px-5 py-4 space-y-3",children:[t.jsx("p",{className:"text-[13px] leading-[18px] text-[var(--label-secondary)] select-none",children:r("compact.description")}),t.jsx("textarea",{value:s,onChange:i=>a(i.target.value),placeholder:r("compact.placeholder"),rows:3,className:"w-full px-3 py-2 rounded-[10px] bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] leading-[20px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none resize-none focus:border-[var(--color-accent)] transition-colors"}),t.jsxs("div",{className:"flex justify-end gap-2 pt-1",children:[t.jsx("button",{onClick:e,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] text-[var(--label-secondary)] hover:bg-[var(--fill-tertiary)] transition-colors",children:r("common.cancel")}),t.jsx("button",{onClick:o,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] font-medium text-white bg-[var(--color-accent)] hover:opacity-90 active:opacity-80 transition-opacity",children:r("compact.start")})]})]})})}function ns({ref:e,instance:n,draft:r,onDraftChange:s,onSendMessage:a,onAbort:o,onSetModel:i,onSetThinkingLevel:c,onCompact:d,buttonMode:u,showCompactButton:p,compactDisabled:m,onImageLightbox:g,startBottomFollow:v}){var C;const{t:j}=z(),R=l.useRef(null);l.useImperativeHandle(e,()=>({focus(){const f=R.current;if(!f)return;f.focus();const x=f.value.length;f.selectionStart=f.selectionEnd=x,f.scrollTop=f.scrollHeight}}));const T=l.useRef(null),b=l.useRef(r);b.current=r;const[h,k]=l.useState(!1),I=n==null?void 0:n.status,E=n==null?void 0:n.contextUsage,N=n==null?void 0:n.model,P=n==null?void 0:n.availableModels,y=n==null?void 0:n.thinkingLevel,w=(C=P==null?void 0:P.find(f=>f.provider===(N==null?void 0:N.provider)&&f.id===(N==null?void 0:N.id)))==null?void 0:C.availableThinkingLevels,M=!!E&&E.tokens!=null&&E.percent!=null,$=l.useCallback(f=>{f.style.height="auto";const x=Math.min(f.scrollHeight,150);f.style.height=`${x}px`,f.style.overflowY=f.scrollHeight>150?"auto":"hidden"},[]);l.useLayoutEffect(()=>{R.current&&$(R.current)},[r.text,$]);const O=l.useCallback(f=>{s(x=>({...x,text:f.target.value})),$(f.target)},[s,$]),D=!pe(I)&&(!!r.text.trim()||r.images.length>0),F=l.useCallback(()=>{const f=b.current;if(pe(I)||!f.text.trim()&&f.images.length===0)return;const x=f.images.length?f.images.map(S=>({data:S.data,mimeType:S.mimeType})):void 0;a(f.text.trim(),x),R.current&&(R.current.style.height="auto"),v()},[I,a,v]),W=l.useCallback(f=>{f.nativeEvent.isComposing||f.keyCode===229||f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),F())},[F]),Y=l.useCallback(f=>{const x=qr(f.clipboardData);x.length!==0&&(f.preventDefault(),Promise.all(x.map(jt)).then(S=>{s(A=>({...A,images:[...A.images,...S]}))}).catch(S=>{te(j("eventStream.imageProcessFailed"),"error"),console.error("Image process failed:",S)}))},[s,j]),Z=l.useCallback(f=>{const x=Array.from(f.target.files??[]);x.length!==0&&(Promise.all(x.map(jt)).then(S=>{s(A=>({...A,images:[...A.images,...S]}))}).catch(S=>{te(j("eventStream.imageProcessFailed"),"error"),console.error("Image process failed:",S)}),f.target.value="")},[s,j]),G=l.useCallback(f=>{s(x=>({...x,images:x.images.filter(S=>S.id!==f)}))},[s]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"glass-panel glass-panel-input px-3 py-2 md:px-4",children:[(I||M)&&t.jsxs("div",{className:"mb-1.5 flex items-center gap-2 px-1 text-[12px] leading-[15px] text-[var(--label-secondary)]",children:[t.jsx(rs,{status:I}),M&&t.jsxs("span",{className:"min-w-0 flex items-center gap-1",children:[t.jsx("span",{className:"min-w-0 truncate",children:t.jsx(ss,{contextUsage:E})}),p&&t.jsx("button",{onClick:()=>k(!0),disabled:m,title:j("eventStream.compactContext"),className:"shrink-0 inline-flex items-center justify-center p-0.5 rounded-[4px] text-[var(--label-secondary)] hover:text-[var(--color-accent)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-40 disabled:pointer-events-none",children:t.jsx(wn,{size:12})})]})]}),t.jsxs("div",{className:"flex flex-col overflow-hidden rounded-[14px] border border-[var(--separator)]",children:[r.images.length>0&&t.jsx("div",{className:"flex gap-2 px-3 pt-2 pb-0 overflow-x-auto scrollbar-none md:px-4",children:r.images.map(f=>t.jsxs("div",{className:"relative flex-shrink-0 group",children:[t.jsx("button",{onClick:()=>g(f.previewUrl),className:"block rounded-[8px] overflow-hidden border border-[var(--separator)] hover:border-[var(--color-accent)] transition-colors",children:t.jsx("img",{src:f.previewUrl,alt:"Attached",className:"w-[60px] h-[60px] object-cover",draggable:!1})}),t.jsx("button",{onClick:()=>G(f.id),className:"absolute -top-1 -right-1 w-[14px] h-[14px] rounded-full bg-[var(--badge-bg)] text-[var(--badge-text)] flex items-center justify-center hover:bg-[var(--badge-bg-hover)] transition-colors","aria-label":"Remove image",children:t.jsx(Qe,{size:8})})]},f.id))}),t.jsx("textarea",{ref:R,rows:1,placeholder:j("eventStream.sendPlaceholder"),value:r.text,onChange:O,onKeyDown:W,onPaste:Y,className:"resize-none bg-transparent text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] text-[16px] leading-[24px] px-3 pt-[9px] pb-0 outline-none overflow-hidden md:px-4 md:pt-[10px] md:text-[14px] md:leading-[22px]"}),t.jsxs("div",{className:"flex items-center justify-between px-1.5 pt-[9px] pb-1.5 md:pt-[10px]",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[N&&t.jsx(Zr,{currentModel:N,availableModels:P,onSelect:i}),y&&t.jsx(es,{currentLevel:y,availableLevels:w??[],onSelect:c}),t.jsx("button",{onClick:()=>{var f;return(f=T.current)==null?void 0:f.click()},className:"select-none h-[26px] px-1.5 rounded-[6px] flex items-center justify-center text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-colors",title:j("eventStream.attachImage"),children:t.jsx(Nn,{size:15})}),t.jsx("input",{ref:T,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",multiple:!0,onChange:Z,className:"hidden"})]}),t.jsx("div",{className:"flex-shrink-0",children:u==="stop"?t.jsx("button",{onClick:o,className:"select-none w-[28px] h-[28px] rounded-full bg-red-500 text-white flex items-center justify-center hover:opacity-90 active:opacity-80 transition-opacity",title:j("eventStream.stop"),children:t.jsx(kn,{size:12,fill:"currentColor"})}):t.jsx("button",{onClick:F,disabled:!D,className:`select-none w-[28px] h-[28px] rounded-full flex items-center justify-center transition-opacity ${D?"bg-[var(--color-accent)] text-white hover:opacity-90 active:opacity-80":"bg-[var(--fill-secondary)] text-[var(--label-tertiary)] opacity-50 cursor-default"}`,title:j("eventStream.send"),children:t.jsx(Sn,{size:16,strokeWidth:2.5})})})]})]})]}),h&&t.jsx(ts,{onClose:()=>k(!1),onConfirm:f=>{d(f),k(!1)}})]})}function rs({status:e}){const{t:n}=z();if(!e)return null;const r=e==="streaming",s=e==="compacting",a=r?"bg-[color-mix(in_srgb,var(--color-accent)_12%,transparent)] text-[var(--color-accent)]":s?"bg-amber-500/10 text-amber-500":"bg-green-500/10 text-green-500",o=r?"bg-[var(--color-accent)] animate-pulse":s?"bg-amber-500 animate-pulse":"bg-green-500",i=n(r?"eventStream.statusRunning":s?"eventStream.statusCompacting":"eventStream.statusOnline");return t.jsxs("span",{className:`flex shrink-0 items-center gap-1 rounded-full px-1.5 py-0.5 ${a}`,title:i,role:"status","aria-live":"polite","aria-label":i,children:[t.jsx("span",{"aria-hidden":"true",className:`h-2 w-2 rounded-full ${o}`}),t.jsx("span",{className:"text-[11px] font-medium leading-none",children:i})]})}function ss({contextUsage:e}){const{tokens:n,contextWindow:r,percent:s}=e;if(n==null||s==null)return null;const a=s>90?"#ff4245":s>60?"#ff9230":"#30d158",o=i=>{if(i<1e3)return String(i);if(i<1e4)return`${(i/1e3).toFixed(1)}k`;if(i<1e6)return`${Math.round(i/1e3)}k`;const c=i/1e6;return c%1===0?`${c}M`:`${c.toFixed(1)}M`};return t.jsxs("span",{className:"select-text",style:{color:a},children:[o(n)," / ",o(r)," (",Math.round(s),"%)"]})}let as=0;function Wt(e,n){return`${e}:${n}:${as++}`}function Fe(e,n,r){return n.id||n.__renderKey?n:{...n,__renderKey:Wt(e,r)}}function os(e,n){const{t:r}=z(),s=K(x=>x.send),a=K(x=>x.subscribe),o=K(x=>x.connectionState==="connected"),[i,c]=l.useState([]),[d,u]=l.useState(null),p=l.useRef(null),[m,g]=l.useState("idle"),[v,j]=l.useState(null),[R,T]=l.useState(!1),[b,h]=l.useState([]),[k,I]=l.useState(!1),[E,N]=l.useState(!1),[P,y]=l.useState(0),w=l.useRef(0),M=l.useRef(i);M.current=i;const $=l.useRef(m);$.current=m;const O=l.useRef(R);O.current=R;const D=l.useCallback(()=>{c([]),u(null),g("refreshing"),j(null),T(!1),h([]),I(!1),N(!1),y(0)},[]);l.useEffect(()=>a(x=>{switch(x.type){case"forwarded_event":{if(x.payload.instanceId!==e)return;Z(e,x.payload.event,x.payload.data);break}case"history":{if(x.payload.instanceId!==e)return;const S=x.payload.messages,A=x.payload.hasMore??!1;G(e,S,A);break}case"session_list":{if(x.payload.instanceId!==e)return;w.current>0?h(S=>[...S,...x.payload.sessions]):h(x.payload.sessions),N(x.payload.hasMore??!1),y(x.payload.total??x.payload.sessions.length),I(!1);break}case"error":{console.error("[Paimon]",x.payload.message),g("error"),j(x.payload.message);break}case"instance_error":{if(x.payload.instanceId!==e)return;const S=x.payload.action?`error.action.${x.payload.action}`:null,A=S?r(S,{message:x.payload.message,defaultValue:x.payload.message}):x.payload.message;te(A,"error");break}}}),[e,a]),l.useEffect(()=>{if(o)return D(),s({type:"subscribe",payload:{instanceId:e}}),s({type:"get_history",payload:{instanceId:e}}),()=>{s({type:"unsubscribe",payload:{instanceId:e}})}},[e,o,s,D]);const F=l.useRef(n==null?void 0:n.sessionId),W=l.useRef(e);l.useEffect(()=>{const x=n==null?void 0:n.sessionId;if(e!==W.current){W.current=e,x!==void 0&&(F.current=x);return}F.current!==void 0&&x!==void 0&&x!==F.current&&(D(),s({type:"get_history",payload:{instanceId:e}})),x!==void 0&&(F.current=x)},[n==null?void 0:n.sessionId,e,s,D]);const Y=l.useRef(n==null?void 0:n.status);l.useEffect(()=>{const x=n==null?void 0:n.status;Y.current==="compacting"&&x!=="compacting"&&(D(),s({type:"get_history",payload:{instanceId:e}})),Y.current=x},[n==null?void 0:n.status,e,s,D]);function Z(x,S,A){const B=A;switch(S){case"message_start":{const _=B.message;if(!_||_.role!=="assistant")break;const H=Fe(x,{type:"message",timestamp:new Date().toISOString(),message:_},"streaming");p.current=H.__renderKey??H.id??null,u(H);break}case"message_update":{const _=B.message;if(!_)break;u(H=>H?{...H,message:_}:Fe(x,{type:"message",timestamp:new Date().toISOString(),message:_},"streaming"));break}case"message_end":{const _=B.message;if(_){const H=p.current??Wt(x,"live"),le={type:"message",timestamp:new Date().toISOString(),message:_,__renderKey:H};c(ne=>[...ne,le])}p.current=null,u(null);break}}}function G(x,S,A){const B=S.map(_=>Fe(x,_,"history"));$.current==="loadingMore"?c(_=>[...B,..._]):c(B),T(A),g("idle"),j(null)}const C=l.useCallback(()=>{if(!O.current||$.current!=="idle")return;const x=M.current.length;g("loadingMore"),s({type:"get_history",payload:{instanceId:e,offset:x}})},[e,s]),f=l.useCallback(x=>{const S=(x==null?void 0:x.offset)??0;w.current=S,S===0&&h([]),I(!0),s({type:"list_sessions",payload:{instanceId:e,offset:S,limit:x==null?void 0:x.limit,filter:x==null?void 0:x.filter}})},[e,s]);return{entries:d?[...i,d]:i,streamingEntry:d,isStreaming:d!==null,loadState:m,errorMessage:v,hasMore:R,sessionList:b,sessionListLoading:k,sessionHasMore:E,sessionTotal:P,loadMore:C,requestSessionList:f}}const ls=.5;function is({topChromeHeight:e,bottomChromeHeight:n,bottomSafeGap:r=0}){const s=Math.max(0,n-r),a=Math.max(40,s+12);return{paddingTop:Math.max(24,e-4),paddingBottom:a,scrollButtonBottom:r+a}}function cs({previousScrollTop:e,previousScrollHeight:n,nextScrollHeight:r}){return e+r-n}function ds(e){return e==="streaming"||e==="compacting"?"stop":"send"}function Re(e){return Math.max(0,e)}function us({isAtBottom:e,isLoadingMore:n,distanceToBottom:r,overlap:s,force:a=!1,scrollToBottom:o}){return!e||n||!a&&r<=ls&&s<=0?!1:(o(),!0)}function ps({rawScrollTop:e,hasMore:n,canLoadMore:r,isLoadingMore:s,isSuppressed:a}){return e>=0&&Re(e)<100&&n&&r&&!s&&!a}const xs=350,ge="data-entry-key",Yt=.5,fs=3,ms=2e3;function st(e){return e.getAttribute(ge)??void 0}function Gt(e,n){const r=n.closest(`[${ge}]`);return!r||!e.contains(r)?null:r}function Vt(e,n){const r=e.querySelectorAll(`[${ge}]`);for(const s of r)if(st(s)===n)return s;return null}function de(e,n){return n.getBoundingClientRect().top-e.top}function hs(e){const n=e.getBoundingClientRect(),r=n.top+8,s=e.querySelectorAll(`[${ge}]`);for(const a of s){const o=a.getBoundingClientRect();if(o.bottom>r&&o.top<n.bottom)return a}return null}function gs(e){const n={fallbackScrollTop:Re(e.scrollTop),fallbackScrollHeight:e.scrollHeight},r=e.getBoundingClientRect(),s=hs(e);if(!s)return n;const a=st(s);if(!a)return n;const o=s.getBoundingClientRect(),i=Math.min(Math.max(r.top+12,o.top+8),Math.min(o.bottom-1,r.bottom-1)),c=[{x:r.left+r.width/2,y:i},{x:r.left+24,y:i},{x:r.right-24,y:i}];for(const d of c){const u=document.elementsFromPoint(d.x,d.y);for(const p of u){if(p===e||!e.contains(p))continue;const m=Gt(e,p);if(!m||m!==s)continue;const g=p.getBoundingClientRect();if(!(g.bottom<=r.top||g.top>=r.bottom))return{...n,entryKey:a,element:p,elementTop:de(r,p),entryTop:de(r,s)}}}return{...n,entryKey:a,entryTop:de(r,s)}}function wt(e,n){return Math.abs(n)<=Yt?!1:(e.scrollTop+=n,!0)}function Nt(e,n,{allowDiffFallback:r}){const s=e.getBoundingClientRect();if(n.element&&n.elementTop!=null&&n.element.isConnected&&e.contains(n.element)){const a=Gt(e,n.element),o=a?st(a):void 0;if(!n.entryKey||o===n.entryKey){const i=de(s,n.element)-n.elementTop;return{mode:"deep",delta:i,adjusted:wt(e,i)}}}if(n.entryKey&&n.entryTop!=null){const a=Vt(e,n.entryKey);if(a){const o=de(s,a)-n.entryTop;return{mode:"entry",delta:o,adjusted:wt(e,o)}}}if(r){const a=cs({previousScrollTop:n.fallbackScrollTop,previousScrollHeight:n.fallbackScrollHeight,nextScrollHeight:e.scrollHeight}),o=a-e.scrollTop;return e.scrollTop=a,{mode:"diff",delta:o,adjusted:Math.abs(o)>Yt}}return{mode:"none",delta:0,adjusted:!1}}function bs({scrollRef:e,contentRef:n,bottomChromeRef:r,entries:s,entriesRef:a,instanceId:o,hasMore:i,shouldScrollToBottom:c,onScrollToBottomHandled:d,onLoadMore:u,bottomChromeHeight:p,bottomSafeGap:m}){const g=l.useRef(!0),[v,j]=l.useState(!1),R=l.useRef(!1),T=l.useRef(!1),b=l.useRef(null),h=l.useRef(null),k=l.useRef(!1),I=l.useRef(null),E=l.useRef(s.length),N=l.useRef(void 0),P=l.useRef(0),y=l.useRef(null),w=l.useCallback(C=>{b.current!=null&&cancelAnimationFrame(b.current),T.current=!0,R.current=!0,C(),b.current=requestAnimationFrame(()=>{T.current=!1,R.current=!1,b.current=null})},[]),M=l.useCallback(()=>{var f;const C=y.current;C&&(C.rafId!=null&&cancelAnimationFrame(C.rafId),(f=C.observer)==null||f.disconnect(),y.current=null)},[]),$=l.useCallback(({force:C=!1}={})=>{const f=e.current,x=n.current,S=r.current;if(!f||!x||!S)return!1;const A=x.querySelectorAll(`[${ge}]`),B=A[A.length-1],_=B==null?void 0:B.getBoundingClientRect(),H=S.getBoundingClientRect(),le=f.scrollHeight-Re(f.scrollTop)-f.clientHeight,ne=_?_.bottom-H.top:0;return us({isAtBottom:g.current,isLoadingMore:k.current,distanceToBottom:le,overlap:ne,force:C,scrollToBottom:()=>{M(),w(()=>{f.scrollTop=f.scrollHeight}),j(!1)}})},[e,n,r,w,M]),O=l.useCallback(()=>{var C;(C=h.current)==null||C.call(h),h.current=null},[]),D=l.useCallback(()=>{O();const C=performance.now();let f=null,x=!1;const S=(A=performance.now())=>{f=null,!(x||A-C>=ms)&&(!g.current||k.current||($(),f=requestAnimationFrame(S)))};S(),h.current=()=>{x=!0,f!=null&&(cancelAnimationFrame(f),f=null)}},[$,O]);l.useLayoutEffect(()=>{k.current||$()},[p,m,$]),l.useLayoutEffect(()=>{const C=n.current;if(!C||typeof ResizeObserver>"u")return;const f=new ResizeObserver(()=>{$()});return f.observe(C),()=>f.disconnect()},[o,n,$]);const F=l.useCallback(()=>{const C=e.current,f=y.current;if(!C||!f)return;let x={mode:"none"};w(()=>{x=Nt(C,f.snapshot,{allowDiffFallback:!1})}),x.mode==="none"&&M()},[e,w,M]),W=l.useCallback(()=>{const C=y.current;!C||C.rafId!=null||(C.rafId=requestAnimationFrame(()=>{const f=y.current;!f||f!==C||(f.rafId=null,F())}))},[F]),Y=l.useCallback(C=>{const f=e.current,x=n.current;if(!f||!x||!C.entryKey)return;M();const S={snapshot:C,observer:null,rafId:null,warmupFrame:0};if(y.current=S,typeof ResizeObserver<"u"){const B=new ResizeObserver(()=>{W()});B.observe(x);const _=Vt(f,C.entryKey);_&&_!==x&&B.observe(_),S.observer=B}const A=()=>{const B=y.current;!B||B!==S||B.warmupFrame>=fs||(B.rafId=requestAnimationFrame(()=>{const _=y.current;!_||_!==S||(_.rafId=null,_.warmupFrame+=1,F(),A())}))};A()},[e,n,F,W,M]);l.useLayoutEffect(()=>(k.current=!1,I.current=null,N.current=void 0,P.current=0,E.current=a.current.length,g.current=!0,j(!1),()=>{O(),M(),b.current!=null&&(cancelAnimationFrame(b.current),b.current=null),T.current=!1,R.current=!1,k.current=!1,I.current=null,N.current=void 0,P.current=0}),[o,a,M,O]),l.useLayoutEffect(()=>{e.current&&(k.current||$())},[s,o,e,$]),l.useLayoutEffect(()=>{if(!c)return;if(!e.current){d();return}g.current=!0,$({force:!0}),j(!1),d()},[c,s,e,$,d]),l.useLayoutEffect(()=>{const C=e.current;if(k.current&&C&&s.length>E.current){const f=s[0]?Ye(s[0]):void 0;if(!N.current||f!==N.current){const S=I.current;let A={mode:"none"};S&&w(()=>{A=Nt(C,S,{allowDiffFallback:!0})}),P.current=performance.now()+xs,S&&S.entryKey&&A.mode!=="none"&&Y(S),k.current=!1,I.current=null,N.current=void 0}else I.current&&(I.current={...I.current,fallbackScrollHeight:C.scrollHeight})}k.current&&!i&&(k.current=!1,I.current=null,N.current=void 0),E.current=s.length},[s,i,o,e,w,Y]);const Z=l.useCallback(()=>{const C=e.current;if(!C)return;const f=C.scrollTop,x=Re(f),S=performance.now()<P.current;if(f<0||R.current||T.current)return;y.current&&M();const A=C.scrollHeight-x-C.clientHeight<60;if(g.current=A,A||O(),j(!A),ps({rawScrollTop:f,hasMore:i,canLoadMore:!!u,isLoadingMore:k.current,isSuppressed:S})&&u){O(),M(),k.current=!0;const _=a.current,H=gs(C);I.current=H,N.current=_[0]?Ye(_[0]):void 0,u()}},[e,a,i,u,M,O]),G=l.useCallback(()=>{e.current&&(M(),w(()=>{e.current.scrollTop=e.current.scrollHeight}),g.current=!0,j(!1))},[e,w,M]);return{handleScroll:Z,scrollToBottom:G,showScrollBtn:v,startBottomFollow:D}}function vs(e,n,r,s){const{t:a}=z(),o=Ce(u=>u.setDraft),{canReEdit:i,userContent:c}=l.useMemo(()=>{var p,m;if(r!=="idle"||n.length===0)return{canReEdit:!1,userContent:null};const u=n[n.length-1];if(u.type!=="message"||((p=u.message)==null?void 0:p.role)!=="assistant"||u.message.stopReason!=="aborted")return{canReEdit:!1,userContent:null};for(let g=n.length-2;g>=0;g--){const v=n[g];if(v.type==="message"&&((m=v.message)==null?void 0:m.role)==="user")return{canReEdit:!0,userContent:v.message.content}}return{canReEdit:!1,userContent:null}},[n,r]),d=l.useCallback(()=>{if(!i||c==null)return;const u=Ce.getState().drafts.get(e)??nt;if(u.text.trim()||u.images.length>0){te(a("reEdit.draftNotEmpty"),"warning");return}const p=ys(c);Je.flushSync(()=>{o(e,p)}),s==null||s()},[i,c,e,o,a,s]);return i?d:void 0}function ys(e){let n="";const r=[];if(typeof e=="string")n=e;else if(Array.isArray(e)){const s=[];for(const a of e)if(a.type==="text")s.push(a.text);else if(a.type==="image"){const o=a,i=Ut();r.push({id:i,data:o.data,mimeType:o.mimeType,previewUrl:`data:${o.mimeType};base64,${o.data}`})}n=s.join("")}return{text:n,images:r}}function js(){const{t:e}=z(),{id:n}=Cn(),r=n,s=K(L=>L.send),a=se(Gn(r)),o=Ce(L=>L.drafts.get(r)??nt),i=Ce(L=>L.setDraft),{entries:c,isStreaming:d,loadState:u,errorMessage:p,hasMore:m,sessionList:g,sessionListLoading:v,sessionHasMore:j,sessionTotal:R,loadMore:T,requestSessionList:b}=os(r,a),h=l.useCallback(L=>{i(r,L)},[r,i]),k=l.useCallback((L,U)=>{s({type:"prompt",payload:{instanceId:r,message:L,images:U!=null&&U.length?U:void 0}}),i(r,{text:"",images:[]})},[r,s,i]),I=l.useCallback(()=>{s({type:"abort",payload:{instanceId:r}})},[r,s]),E=l.useCallback((L,U)=>{s({type:"set_model",payload:{instanceId:r,provider:L,id:U}})},[r,s]),N=l.useCallback(L=>{s({type:"set_thinking_level",payload:{instanceId:r,level:L}})},[r,s]),P=l.useCallback(()=>{b({offset:0})},[b]),y=l.useCallback((L,U)=>{b({offset:L,filter:U})},[b]),w=l.useCallback(L=>{b({offset:0,filter:L||void 0})},[b]),M=l.useCallback(()=>{s({type:"new_session",payload:{instanceId:r}})},[r,s]),$=l.useCallback(L=>{s({type:"switch_session",payload:{instanceId:r,path:L}})},[r,s]),O=l.useCallback(L=>{s({type:"compact",payload:{instanceId:r,customInstructions:L}})},[r,s]),D=l.useRef(null),F=vs(r,c,a==null?void 0:a.status,()=>{var L;(L=D.current)==null||L.focus()}),W=l.useRef(null),Y=l.useRef(null),Z=l.useRef(null),G=l.useRef(null),C=l.useRef(null),[f,x]=l.useState(null),S=l.useRef(c);S.current=c;const A=u==="refreshing",B=ds(a==null?void 0:a.status),_=c.length>0&&c[c.length-1].type==="compaction",H=pe(a==null?void 0:a.status),[le,ne]=l.useState(!1),Xt=l.useCallback(()=>{ne(!1)},[]),at=l.useRef(u);l.useLayoutEffect(()=>{at.current==="refreshing"&&u==="idle"&&ne(!0),at.current=u},[u]);const[Zt,Qt]=l.useState(64),[ot,en]=l.useState(96),[lt,tn]=l.useState(12),Ae=is({topChromeHeight:Zt,bottomChromeHeight:ot,bottomSafeGap:lt});l.useLayoutEffect(()=>{const L=(_e,on)=>{if(!_e)return()=>{};const ct=()=>{on(Math.ceil(_e.getBoundingClientRect().height))};if(ct(),typeof ResizeObserver>"u")return()=>{};const dt=new ResizeObserver(ct);return dt.observe(_e),()=>dt.disconnect()},U=L(Z.current,Qt),be=L(G.current,en),ve=L(C.current,tn);return()=>{U(),be(),ve()}},[r]);const{handleScroll:nn,scrollToBottom:rn,showScrollBtn:sn,startBottomFollow:an}=bs({scrollRef:W,contentRef:Y,bottomChromeRef:G,entries:c,entriesRef:S,instanceId:r,hasMore:m,shouldScrollToBottom:le,onScrollToBottomHandled:Xt,onLoadMore:T,bottomChromeHeight:ot,bottomSafeGap:lt}),it={title:(a==null?void 0:a.cwd.split("/").pop())||(a==null?void 0:a.cwd)||"",cwd:a==null?void 0:a.cwd,homedir:a==null?void 0:a.homedir,gitBranch:a==null?void 0:a.gitBranch,actions:t.jsx(Br,{sessions:g,loading:v,hasMore:j,total:R,disabled:pe(a==null?void 0:a.status),onOpen:P,onNewSession:M,onSwitchSession:$,onLoadMore:y,onFilterChange:w})};return t.jsxs("div",{className:"relative flex-1 min-w-0 overflow-hidden",children:[t.jsxs("main",{className:"absolute inset-0 flex min-h-0 flex-col overflow-hidden",children:[t.jsx("div",{className:"pointer-events-none absolute left-0 right-0 top-0 z-20 px-3 pt-3 md:px-4 md:pt-4",children:t.jsxs("div",{ref:Z,className:"glass-panel pointer-events-auto mx-auto w-full max-w-[920px] px-3 py-2 md:px-4 md:py-2.5",role:"region","aria-label":"Instance info",children:[t.jsx("div",{className:"hidden md:flex",children:t.jsx(vt,{...it})}),t.jsx(Kt,{children:t.jsx(vt,{...it})})]})}),t.jsx("div",{ref:W,onScroll:nn,style:{overflowAnchor:"none"},"aria-busy":A,className:"absolute bottom-[var(--bottom-safe-gap)] left-0 right-0 top-6 overflow-y-auto scrollbar-auto px-3 md:bottom-0 md:top-7 md:px-4",children:t.jsxs("div",{ref:Y,style:{paddingTop:Ae.paddingTop,paddingBottom:Ae.paddingBottom},className:"mx-auto max-w-[920px] space-y-2",children:[u==="loadingMore"&&t.jsx("div",{className:"text-center text-[var(--label-tertiary)] text-[11px] py-2 select-none",children:"Loading earlier messages..."}),A?t.jsx(ws,{}):u==="error"?t.jsxs("div",{className:"mx-auto mt-8 max-w-[520px] rounded-[12px] border border-[var(--separator)] bg-[var(--fill-card)] px-4 py-3 text-center",children:[t.jsx("div",{className:"text-[13px] text-[var(--label-primary)] select-none",children:"Failed to load conversation"}),p&&t.jsx("div",{className:"mt-1 text-[12px] text-[var(--label-secondary)] break-words select-text",children:p})]}):c.length===0&&!m?t.jsx("div",{className:"text-center text-[var(--label-tertiary)] text-[12px] pt-8 select-none",children:"No messages yet"}):c.map((L,U)=>{const be=Ye(L),ve=U===c.length-1;return t.jsx("div",{"data-entry-key":be,children:t.jsx(Cr,{entry:L,entries:c,isLast:ve,isStreaming:d,onReEdit:ve?F:void 0})},be)})]})}),sn&&t.jsx("div",{style:{bottom:Ae.scrollButtonBottom},className:"absolute left-1/2 z-30 -translate-x-1/2",children:t.jsx("button",{onClick:rn,className:"select-none w-9 h-9 rounded-full bg-[var(--btn-solid)] border border-[var(--separator)] text-[var(--label-secondary)] flex items-center justify-center hover:bg-[var(--btn-solid-hover)] active:scale-95 transition-all shadow-[0_4px_20px_rgba(0,0,0,0.12)]",title:e("eventStream.scrollToBottom"),children:t.jsx(En,{size:16})})}),t.jsx("div",{ref:G,className:"pointer-events-none absolute bottom-0 left-0 right-0 z-20 px-3 pb-0 md:px-4",children:t.jsxs("div",{className:"pointer-events-auto mx-auto w-full max-w-[920px]",children:[t.jsx(ns,{ref:D,instance:a,draft:o,onDraftChange:h,onSendMessage:k,onAbort:I,onSetModel:E,onSetThinkingLevel:N,onCompact:O,buttonMode:B,showCompactButton:!_,compactDisabled:H,onImageLightbox:x,startBottomFollow:an}),t.jsx("div",{ref:C,className:"h-[var(--bottom-safe-gap)] md:h-0","aria-hidden":"true"})]})})]}),f&&t.jsx(qt,{src:f,onClose:()=>x(null)})]})}function ws(){return t.jsx("div",{className:"space-y-3 pt-3 select-none","aria-label":"Loading conversation",children:[0,1,2,3].map(e=>t.jsxs("div",{className:"space-y-1.5 animate-pulse",children:[t.jsx("div",{className:"h-3 w-20 rounded-full bg-[var(--fill-tertiary)]"}),t.jsxs("div",{className:"max-w-[680px] space-y-1.5 rounded-[10px] border border-[var(--separator)] bg-[var(--fill-card)] p-3",children:[t.jsx("div",{className:"h-3 w-[82%] rounded-full bg-[var(--fill-secondary)]"}),t.jsx("div",{className:"h-3 w-[64%] rounded-full bg-[var(--fill-tertiary)]"})]})]},e))})}function Ns(){const{t:e}=z(),n=tt();return t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center select-none",children:[t.jsx("img",{src:n,alt:"Paimon",className:"w-16 h-16 mx-auto mb-4 opacity-80"}),t.jsx("div",{className:"text-[14px] text-[var(--label-tertiary)] tracking-wide",children:e("eventStream.tagline")})]})})}function ks(){return t.jsx("div",{className:"relative flex-1 min-w-0 overflow-hidden flex flex-col",children:t.jsx(Tn,{})})}const Ss={common:{cancel:"取消",confirm:"确认",loading:"加载中…",online:"在线",offline:"离线"},login:{subtitle:"输入 Access Token 以连接",placeholder:"Access Token",invalidToken:"Token 无效,请检查后重试。",connect:"连接",verifying:"验证中…",tokenHint:"Token 可在 <1>~/.paimon/hub.json</1> 中找到"},sidebar:{newInstance:"新建实例",machine_one:"{{count}} 台机器",machine_other:"{{count}} 台机器",instance_one:"{{count}} 个实例",instance_other:"{{count}} 个实例",noInstances:"暂无 pi 实例连接",settings:"设置",shutdown:"退出实例",shutdownBusy:"实例正在执行中,请等待完成后再退出",statusStreaming:"生成中",statusCompacting:"压缩中",statusIdle:"空闲"},eventStream:{tagline:"守望 · 交互 · 掌控",sendPlaceholder:"发送消息…",scrollToBottom:"滚到底部",stop:"停止",send:"发送",attachImage:"添加图片",imageProcessFailed:"图片处理失败,请检查图片格式",statusRunning:"执行中",statusCompacting:"压缩中",statusOnline:"在线",compactContext:"压缩上下文",instanceNotFound:"实例不存在"},compact:{title:"压缩上下文",description:"压缩将总结旧的对话内容以释放上下文空间。可选填自定义提示词来指定压缩时关注的方向。",placeholder:"例如:重点保留关于数据库设计的讨论…",start:"开始压缩"},settings:{title:"设置",appearance:"外观",theme:"主题",themeLight:"浅色",themeDark:"深色",themeSystem:"系统",background:"背景",bgMist:"雾",bgAurora:"极光",bgEmber:"余烬",language:"语言",langZhCN:"简体中文",langEn:"English"},notification:{title:"通知",label:"任务完成通知",on:"开启",off:"关闭",denied:"通知权限已被浏览器拒绝,请在浏览器设置中允许",taskComplete:"✅ {{name}} 任务完成"},newInstance:{title:"新建实例",edgeNode:"Edge 节点",noEdges:"没有可用的 Edge 节点",workingDir:"工作目录",pathPlaceholder:"/path/to/your/project",create:"创建",creating:"创建中…",truncatedHint:"输入更多字符以缩小范围…",fetchEdgeError:"获取 Edge 列表失败",noEdgeSelected:"未选择 Edge 节点",requestTimeout:"请求超时",networkError:"网络错误",requestFailed:"请求失败 (HTTP {{status}})"},session:{title:"Sessions",new:"新建",filter:"筛选…",noMatch:"无匹配的 Session",noPrevious:"暂无历史 Session",empty:"空 Session",messageCount_one:"{{count}} 条消息",messageCount_other:"{{count}} 条消息",timeJustNow:"刚刚"},entries:{contextCompacted:"上下文已压缩",branchSummary:"分支摘要",thinking:"思考",thinkingStreaming:"思考中...",running:"执行中...",aborted:"已终止",copied:"已复制",copy:"复制",result:"结果",params:"参数"},reEdit:{button:"重新编辑",draftNotEmpty:"输入框已有内容,请先清空"},error:{title:"错误详情",message:"错误信息",type:"错误类型",requestId:"请求 ID",action:{compact:"压缩失败:{{message}}"}}},Cs={common:{cancel:"Cancel",confirm:"Confirm",loading:"Loading…",online:"Online",offline:"Offline"},login:{subtitle:"Enter access token to connect",placeholder:"Access Token",invalidToken:"Invalid token. Please check and try again.",connect:"Connect",verifying:"Verifying…",tokenHint:"Find your token in <1>~/.paimon/hub.json</1>"},sidebar:{newInstance:"New instance",machine_one:"{{count}} machine",machine_other:"{{count}} machines",instance_one:"{{count}} instance",instance_other:"{{count}} instances",noInstances:"No pi instances connected",settings:"Settings",shutdown:"Shutdown instance",shutdownBusy:"Instance is running, please wait before shutting down",statusStreaming:"Streaming",statusCompacting:"Compacting",statusIdle:"Idle"},eventStream:{tagline:"Watch · Interact · Control",sendPlaceholder:"Send a message...",scrollToBottom:"Scroll to bottom",stop:"Stop",send:"Send",attachImage:"Attach image",imageProcessFailed:"Image processing failed, please check the format",statusRunning:"Running",statusCompacting:"Compacting",statusOnline:"Online",compactContext:"Compact context",instanceNotFound:"Instance not found"},compact:{title:"Compact Context",description:"Compaction summarizes older conversation to free up context space. Optionally provide custom instructions to guide what to focus on.",placeholder:"e.g. Keep the discussion about database design…",start:"Start compaction"},settings:{title:"Settings",appearance:"Appearance",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",background:"Background",bgMist:"Mist",bgAurora:"Aurora",bgEmber:"Ember",language:"Language",langZhCN:"简体中文",langEn:"English"},notification:{title:"Notification",label:"Task Completion Notification",on:"On",off:"Off",denied:"Notification permission denied. Please allow in browser settings",taskComplete:"✅ {{name}} task completed"},newInstance:{title:"New Instance",edgeNode:"Edge Node",noEdges:"No available Edge nodes",workingDir:"Working Directory",pathPlaceholder:"/path/to/your/project",create:"Create",creating:"Creating…",truncatedHint:"Type more to narrow results…",fetchEdgeError:"Failed to fetch edge list",noEdgeSelected:"No edge selected",requestTimeout:"Request timed out",networkError:"Network error",requestFailed:"Request failed (HTTP {{status}})"},session:{title:"Sessions",new:"New",filter:"Filter…",noMatch:"No matching sessions",noPrevious:"No previous sessions",empty:"Empty session",messageCount_one:"{{count}} message",messageCount_other:"{{count}} messages",timeJustNow:"just now"},entries:{contextCompacted:"Context compacted",branchSummary:"Branch summary",thinking:"Thinking",thinkingStreaming:"Thinking...",running:"Running...",aborted:"Aborted",copied:"Copied",copy:"Copy",result:"Result",params:"Parameters"},reEdit:{button:"Edit",draftNotEmpty:"Input is not empty, please clear first"},error:{title:"Error Details",message:"Error message",type:"Error type",requestId:"Request ID",action:{compact:"Compaction failed: {{message}}"}}},Jt="paimon:language";function Es(){const e=localStorage.getItem(Jt);return e==="zh-CN"||e==="en"?e:"zh-CN"}function Ts(e){localStorage.setItem(Jt,e),Xe.changeLanguage(e)}Xe.use(Rn).init({resources:{"zh-CN":{translation:Ss},en:{translation:Cs}},lng:Es(),fallbackLng:"zh-CN",interpolation:{escapeValue:!1}});function De({options:e,value:n,onChange:r}){return t.jsx("div",{className:"flex rounded-[8px] bg-[var(--fill-secondary)] p-[2px] select-none",children:e.map(s=>t.jsx("button",{onClick:()=>r(s.value),className:`px-3 py-1.5 rounded-[6px] text-[13px] leading-[18px] transition-all ${n===s.value?"bg-[var(--panel-bg)] text-[var(--label-primary)] font-semibold shadow-sm backdrop-blur-sm":"text-[var(--label-secondary)] font-normal hover:text-[var(--label-primary)]"}`,children:s.label},s.value))})}function je({label:e,children:n,showSeparator:r=!0}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 select-none",children:[t.jsx("span",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)]",children:e}),n]}),r&&t.jsx("div",{className:"ml-4 border-b border-[var(--separator)]"})]})}function Rs({value:e,onChange:n,options:r}){return t.jsx("div",{className:"flex items-center gap-3 select-none",children:r.map(s=>t.jsxs("button",{onClick:()=>n(s.value),className:"flex flex-col items-center gap-1",children:[t.jsx("div",{className:`w-7 h-7 rounded-full transition-all ${e===s.value?"ring-2 ring-[var(--color-accent)] ring-offset-1":"hover:scale-110"}`,style:{background:`conic-gradient(${s.colors.join(", ")})`}}),t.jsx("span",{className:`text-[12px] leading-[16px] ${e===s.value?"text-[var(--label-primary)] font-semibold":"text-[var(--label-secondary)] font-normal"}`,children:s.label})]},s.value))})}function Ms(){const{t:e,i18n:n}=z(),[r,s]=Xn(),[a,o]=zt(),[i,c]=Qn(),d=[{value:"light",label:e("settings.themeLight")},{value:"dark",label:e("settings.themeDark")},{value:"system",label:e("settings.themeSystem")}],u=[{value:"mist",label:e("settings.bgMist"),colors:["#e8f0fe","#f5e6f0","#e6f0f5","#f0f5e6"]},{value:"aurora",label:e("settings.bgAurora"),colors:["#a8d8ea","#aa96da","#8fd3c4","#c4a8d8"]},{value:"ember",label:e("settings.bgEmber"),colors:["#f8d4b0","#f0b0c0","#f8e0a0","#e8c0d0"]}],p=[{value:"zh-CN",label:e("settings.langZhCN")},{value:"en",label:e("settings.langEn")}],m=[{value:"on",label:e("notification.on")},{value:"off",label:e("notification.off")}];return t.jsx("div",{className:"flex-1 flex items-start justify-center p-4 md:p-6 overflow-y-auto scrollbar-auto",children:t.jsxs("div",{className:"w-full max-w-[480px]",children:[t.jsx(Kt,{title:e("settings.title")}),t.jsx("h1",{className:"hidden md:block text-[22px] font-semibold text-[var(--label-primary)] mb-6 px-4 select-none",children:e("settings.title")}),t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 px-4 select-none",children:e("settings.appearance")}),t.jsxs("section",{className:"glass-panel overflow-hidden",children:[t.jsx(je,{label:e("settings.theme"),children:t.jsx(De,{options:d,value:r,onChange:s})}),t.jsx(je,{label:e("settings.background"),showSeparator:!1,children:t.jsx(Rs,{value:a,onChange:o,options:u})})]}),t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 mt-6 px-4 select-none",children:e("settings.language")}),t.jsx("section",{className:"glass-panel overflow-hidden",children:t.jsx(je,{label:e("settings.language"),showSeparator:!1,children:t.jsx(De,{options:p,value:n.language,onChange:Ts})})}),Ft&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 mt-6 px-4 select-none",children:e("notification.title")}),t.jsx("section",{className:"glass-panel overflow-hidden",children:t.jsx(je,{label:e("notification.label"),showSeparator:!1,children:t.jsx(De,{options:m,value:i?"on":"off",onChange:async g=>{g==="on"?await Notification.requestPermission()==="granted"?c(!0):te(e("notification.denied"),"warning"):c(!1)}})})})]})]})})}async function Ve(e,n){typeof e=="string"&&e.startsWith("/")&&(e=ee(e));const r=qe(),s=new Headers(n==null?void 0:n.headers);r&&s.set("Authorization",`Bearer ${r}`);const a=await fetch(e,{...n,headers:s});return a.status===401&&(At(),window.location.reload()),a}function Is({value:e,onChange:n,edgeId:r,disabled:s=!1,autoFocus:a=!1,onSubmit:o}){const{t:i}=z(),[c,d]=l.useState([]),[u,p]=l.useState(!1),[m,g]=l.useState(!1),[v,j]=l.useState(-1),[R,T]=l.useState(!1),b=l.useRef(null),h=l.useRef(null),k=l.useRef(null),I=l.useRef(null);l.useEffect(()=>()=>{var y;(y=k.current)==null||y.abort()},[]),l.useEffect(()=>{var y;a&&((y=b.current)==null||y.focus())},[a]);const E=l.useCallback(async(y,w)=>{k.current&&k.current.abort();const M=new AbortController;k.current=M,g(!0);try{const O=await(await Ve(`/api/edges/${encodeURIComponent(y)}/browse?path=${encodeURIComponent(w)}`,{signal:M.signal})).json();if(M.signal.aborted)return;O.error?(d([]),p(!1),T(!1)):(d(O.entries??[]),p(O.truncated??!1),T((O.entries??[]).length>0||O.truncated)),j(-1)}catch{M.signal.aborted||(d([]),T(!1))}finally{M.signal.aborted||g(!1)}},[]);l.useEffect(()=>{if(!r||!e||!e.startsWith("/")){d([]),T(!1);return}return I.current&&clearTimeout(I.current),I.current=setTimeout(()=>{E(r,e)},250),()=>{I.current&&clearTimeout(I.current)}},[e,r,E]);const N=l.useCallback(y=>{var O;const $=(e.endsWith("/")?e:e.substring(0,e.lastIndexOf("/")+1))+y.name+"/";n($),j(-1),(O=b.current)==null||O.focus()},[e,n]),P=l.useCallback(y=>{if(R&&c.length>0){if(y.key==="ArrowDown"){y.preventDefault(),j(w=>w<c.length-1?w+1:0);return}if(y.key==="ArrowUp"){y.preventDefault(),j(w=>w>0?w-1:c.length-1);return}if(y.key==="Tab"){y.preventDefault(),v>=0&&v<c.length?N(c[v]):c.length===1&&N(c[0]);return}if(y.key==="Enter"&&v>=0&&v<c.length){y.preventDefault(),N(c[v]);return}if(y.key==="Escape"){y.preventDefault(),T(!1),j(-1);return}}y.key==="Enter"&&(y.preventDefault(),o==null||o())},[R,c,v,N,o]);return l.useEffect(()=>{if(v<0||!h.current)return;const w=h.current.children[v];w==null||w.scrollIntoView({block:"nearest"})},[v]),l.useEffect(()=>{d([]),T(!1),j(-1)},[r]),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsxs("div",{className:"relative",children:[t.jsx("input",{ref:b,type:"text",value:e,onChange:y=>n(y.target.value),onKeyDown:P,onFocus:()=>{c.length>0&&T(!0)},onBlur:()=>{setTimeout(()=>T(!1),150)},placeholder:i("newInstance.pathPlaceholder"),disabled:s,spellCheck:!1,autoComplete:"off",className:"w-full rounded-[10px] px-3 py-2 bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] leading-[20px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none focus:border-[var(--color-accent)] transition-colors disabled:opacity-50 pr-8"}),m&&t.jsx("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2",children:t.jsx(ue,{size:14,className:"animate-spin text-[var(--label-tertiary)]"})})]}),R&&t.jsxs("div",{ref:h,className:"max-h-[200px] overflow-y-auto rounded-[10px] border border-[var(--separator)] bg-[var(--fill-quaternary)]",children:[c.map((y,w)=>t.jsxs("button",{type:"button",onMouseDown:M=>{M.preventDefault(),N(y)},onMouseEnter:()=>j(w),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-[13px] transition-colors ${w===v?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsx(Tt,{size:14,className:"shrink-0 text-[var(--label-tertiary)]"}),t.jsx("span",{className:"text-[var(--label-primary)] truncate",children:y.name})]},y.name)),u&&t.jsx("div",{className:"px-3 py-1.5 text-[12px] text-[var(--label-tertiary)] border-t border-[var(--separator)]",children:i("newInstance.truncatedHint")})]})]})}function As({onClose:e,onCreated:n}){const{t:r}=z(),[s,a]=l.useState(""),[o,i]=l.useState([]),[c,d]=l.useState(""),[u,p]=l.useState(!0),[m,g]=l.useState(!1),[v,j]=l.useState(null);l.useEffect(()=>{Ve("/api/edges").then(b=>b.json()).then(b=>{if(i(b.edges),b.edges.length>0){d(b.edges[0].edgeId);const h=b.edges[0].homedir;if(h){const k=h.endsWith("/")?h:h+"/";a(k)}}p(!1)}).catch(()=>{p(!1),j(r("newInstance.fetchEdgeError"))})},[]);const R=l.useCallback(b=>{d(b);const h=o.find(k=>k.edgeId===b);if(h!=null&&h.homedir){const k=h.homedir.endsWith("/")?h.homedir:h.homedir+"/";a(k)}},[o]),T=l.useCallback(async()=>{const b=s.trim();if(!(!b||m)){if(!c){j(r("newInstance.noEdgeSelected"));return}g(!0),j(null);try{const h=await Ve("/api/instances",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:b,edgeId:c}),signal:AbortSignal.timeout(2e4)}),k=await h.json();if(!h.ok||!k.instanceId){j(k.error||r("newInstance.requestFailed",{status:h.status})),g(!1);return}n(k.instanceId)}catch(h){const k=h.name==="TimeoutError"?r("newInstance.requestTimeout"):h.message||r("newInstance.networkError");j(k),g(!1)}}},[s,m,c,n]);return t.jsx(X,{title:t.jsxs(t.Fragment,{children:[t.jsx(Mn,{size:16}),t.jsx("span",{children:r("newInstance.title")})]}),onClose:e,children:t.jsxs("div",{className:"px-5 py-4 flex flex-col gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("label",{className:"text-[13px] text-[var(--label-secondary)]",children:r("newInstance.edgeNode")}),u?t.jsx("div",{className:"text-[13px] text-[var(--label-tertiary)]",children:r("common.loading")}):o.length===0?t.jsx("div",{className:"text-[12px] text-[#ff4245]",children:r("newInstance.noEdges")}):o.length===1?t.jsxs("div",{className:"text-[13px] text-[var(--label-primary)]",children:[o[0].hostname,t.jsxs("span",{className:"text-[var(--label-tertiary)] ml-1.5",children:["(",o[0].edgeId,")"]})]}):t.jsx("select",{value:c,onChange:b=>R(b.target.value),disabled:m,className:"w-full rounded-[10px] px-3 py-2 bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] text-[var(--label-primary)] outline-none focus:border-[var(--color-accent)] transition-colors disabled:opacity-50",children:o.map(b=>t.jsxs("option",{value:b.edgeId,children:[b.hostname," (",b.edgeId,")"]},b.edgeId))})]}),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("label",{className:"text-[13px] text-[var(--label-secondary)]",children:r("newInstance.workingDir")}),t.jsx(Is,{value:s,onChange:a,edgeId:c,disabled:m||u,autoFocus:!u,onSubmit:T})]}),v&&t.jsx("div",{className:"text-[12px] leading-[16px] text-[#ff4245] whitespace-pre-wrap break-words",children:v}),t.jsxs("div",{className:"flex items-center justify-end gap-2 pt-1",children:[t.jsx("button",{onClick:e,disabled:m,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] text-[var(--label-secondary)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-50",children:r("common.cancel")}),t.jsx("button",{onClick:T,disabled:m||!s.trim()||!c,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] font-medium text-white bg-[var(--color-accent)] hover:opacity-90 transition-opacity disabled:opacity-40",children:r(m?"newInstance.creating":"newInstance.create")})]})]})})}function _s({onLogin:e,error:n}){const{t:r}=z(),[s,a]=l.useState(""),[o,i]=l.useState(!1),[c,d]=l.useState(!1),u=tt(),p=l.useCallback(async m=>{m.preventDefault();const g=s.trim();if(!(!g||o)){i(!0),d(!1);try{if((await fetch(ee("/api/instances"),{headers:{Authorization:`Bearer ${g}`}})).status===401){d(!0),i(!1);return}}catch{}i(!1),It(g),e(g)}},[s,o,e]);return t.jsx("div",{className:"fixed-viewport flex items-center justify-center p-4 overflow-y-auto",children:t.jsxs("form",{onSubmit:p,className:"glass-panel w-full max-w-[380px] p-8 flex flex-col items-center gap-6",children:[t.jsx("img",{src:u,alt:"Paimon",className:"w-16 h-16 select-none",draggable:!1}),t.jsxs("div",{className:"text-center",children:[t.jsx("h1",{className:"text-[17px] font-semibold text-[var(--label-primary)]",children:"Paimon"}),t.jsx("p",{className:"mt-1 text-[13px] text-[var(--label-secondary)]",children:r("login.subtitle")})]}),t.jsxs("div",{className:"w-full",children:[t.jsx("input",{type:"password",value:s,onChange:m=>a(m.target.value),placeholder:r("login.placeholder"),autoFocus:!0,className:`w-full h-9 px-3 rounded-[9px] text-[13px] bg-[var(--fill-primary)] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] border outline-none transition-colors ${n||c?"border-red-500 focus:border-red-500":"border-[var(--separator)] focus:border-[var(--color-accent)]"}`}),(n||c)&&t.jsx("p",{className:"mt-2 text-[11px] text-red-500",children:r("login.invalidToken")})]}),t.jsx("button",{type:"submit",disabled:!s.trim()||o,className:"w-full h-9 rounded-[1000px] bg-[var(--color-accent)] text-white text-[13px] font-medium transition-opacity disabled:opacity-40 hover:opacity-90 active:opacity-80",children:r(o?"login.verifying":"login.connect")}),t.jsx("p",{className:"text-[11px] text-[var(--label-tertiary)] text-center leading-relaxed",children:t.jsx(In,{i18nKey:"login.tokenHint",components:{1:t.jsx("code",{className:"px-1 py-0.5 rounded bg-[var(--fill-secondary)] text-[var(--label-secondary)]"})}})})]})})}function Ls(){const{pathname:e}=_n(),n=e.match(/^\/instance\/(.+)$/);return n?n[1]:null}function Ps(){const{t:e}=z(),{authToken:n,authError:r,probing:s,handleLogin:a,handleAuthError:o}=qn(),i=K(E=>E.connect),c=K(E=>E.disconnect),d=K(E=>E.subscribe),u=K(E=>E.send),p=se(E=>E.instances),m=se(E=>E.instanceListReady),g=se(E=>E.handleMessage),v=Ie();Hn();const j=Ls();l.useEffect(()=>(n?i(n,o):c(),()=>c()),[n,i,c,o]),rr(),l.useEffect(()=>d(E=>{(E.type==="instance_list"||E.type==="instance_update")&&g(E)}),[d,g]);const R=l.useCallback(E=>{v(`/instance/${E}`)},[v]),T=l.useRef(new Set),b=l.useCallback(E=>{const N=se.getState().instances.find(P=>P.id===E);if(N&&pe(N.status)){te(e("sidebar.shutdownBusy"),"warning");return}T.current.add(E),u({type:"shutdown",payload:{instanceId:E}})},[u,e]),[h,k]=l.useState(!1),I=l.useCallback(E=>{k(!1),v(`/instance/${E}`)},[v]);return l.useEffect(()=>{if(!m||!j)return;p.some(N=>N.id===j)||(T.current.has(j)?T.current.delete(j):te(e("eventStream.instanceNotFound"),"error"),v("/"))},[m,j,p,v,e]),s?t.jsx("div",{className:"h-[var(--app-viewport-height,100dvh)] w-screen animated-bg flex items-center justify-center",children:t.jsx("div",{className:"glass-panel p-8 flex flex-col items-center gap-4",children:t.jsx("div",{className:"w-6 h-6 border-2 border-[var(--label-tertiary)] border-t-transparent rounded-full animate-spin"})})}):n?t.jsxs("div",{className:"h-[var(--app-viewport-height,100dvh)] w-screen animated-bg flex items-stretch p-2 gap-2 md:p-3 md:gap-3 overflow-hidden pb-[max(0.5rem,env(safe-area-inset-bottom))]",children:[t.jsx("div",{className:"hidden md:flex self-stretch",children:t.jsx(ft,{instances:p,selectedId:j,onSelect:R,onShutdown:b,onNewInstance:()=>k(!0)})}),t.jsx(An,{children:t.jsxs(ye,{element:t.jsx(ks,{}),children:[t.jsx(ye,{path:"/settings",element:t.jsx(Ms,{})}),t.jsx(ye,{path:"/instance/:id",element:t.jsx(js,{})}),t.jsx(ye,{path:"*",element:t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex-1 md:hidden min-w-0 flex flex-col",children:t.jsx(ft,{instances:p,selectedId:j,onSelect:R,onShutdown:b,onNewInstance:()=>k(!0)})}),t.jsx("div",{className:"hidden md:flex flex-1 min-w-0",children:t.jsx(Ns,{})})]})})]})}),h&&t.jsx(As,{onClose:()=>k(!1),onCreated:I}),t.jsx(Xr,{})]}):t.jsx("div",{className:"h-[var(--app-viewport-height,100dvh)] w-screen animated-bg flex items-stretch overflow-hidden",children:t.jsx(_s,{onLogin:a,error:r})})}ln.createRoot(document.getElementById("root")).render(t.jsx(Ln,{basename:_t||"/",children:t.jsx(Ps,{})}));
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Inter", "SF Pro", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-green-500:oklch(72.3% .219 149.579);--color-black:#000;--color-white:#fff;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#0091ff;--bottom-safe-gap:max(.75rem, env(safe-area-inset-bottom))}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed-viewport{height:var(--app-viewport-height,100dvh);position:fixed;top:0;left:0;right:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-\[max\(1rem\,env\(safe-area-inset-top\)\)\]{top:max(1rem,env(safe-area-inset-top))}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[var\(--bottom-safe-gap\)\]{bottom:var(--bottom-safe-gap)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[26px\]{height:26px}.h-\[28px\]{height:28px}.h-\[34px\]{height:34px}.h-\[60px\]{height:60px}.h-\[var\(--app-viewport-height\,100dvh\)\]{height:var(--app-viewport-height,100dvh)}.h-\[var\(--bottom-safe-gap\)\]{height:var(--bottom-safe-gap)}.h-full{height:100%}.h-px{height:1px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[150px\]{max-height:150px}.max-h-\[200px\]{max-height:200px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[40px\]{min-height:40px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1\%\]{width:1%}.w-\[14px\]{width:14px}.w-\[28px\]{width:28px}.w-\[60px\]{width:60px}.w-\[64\%\]{width:64%}.w-\[82\%\]{width:82%}.w-\[90\%\]{width:90%}.w-\[240px\]{width:240px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[80\%\]{max-width:80%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[140px\]{max-width:140px}.max-w-\[200px\]{max-width:200px}.max-w-\[380px\]{max-width:380px}.max-w-\[480px\]{max-width:480px}.max-w-\[520px\]{max-width:520px}.max-w-\[640px\]{max-width:640px}.max-w-\[680px\]{max-width:680px}.max-w-\[920px\]{max-width:920px}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[160px\]{min-width:160px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.scrollbar-auto{scrollbar-width:auto}.scrollbar-none{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[1000px\]{border-radius:1000px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-br-\[4px\]{border-bottom-right-radius:4px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[0\.5px\]{border-style:var(--tw-border-style);border-width:.5px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[rgba\(255\,66\,69\,0\.3\)\]{border-color:#ff42454d}.border-\[var\(--color-accent\)\]{border-color:var(--color-accent)}.border-\[var\(--label-tertiary\)\]{border-color:var(--label-tertiary)}.border-\[var\(--panel-border\)\]{border-color:var(--panel-border)}.border-\[var\(--separator\)\]{border-color:var(--separator)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-\[color-mix\(in_srgb\,var\(--color-accent\)_12\%\,transparent\)\]{background-color:#0091ff1f}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--color-accent\)_12\%\,transparent\)\]{background-color:color-mix(in srgb,var(--color-accent) 12%,transparent)}}.bg-\[rgba\(0\,0\,0\,0\.11\)\]{background-color:#0000001c}.bg-\[rgba\(0\,145\,255\,0\.08\)\]{background-color:#0091ff14}.bg-\[rgba\(255\,66\,69\,0\.1\)\]{background-color:#ff42451a}.bg-\[rgba\(255\,66\,69\,0\.06\)\]{background-color:#ff42450f}.bg-\[var\(--badge-bg\)\]{background-color:var(--badge-bg)}.bg-\[var\(--btn-solid\)\]{background-color:var(--btn-solid)}.bg-\[var\(--color-accent\)\]{background-color:var(--color-accent)}.bg-\[var\(--fill-card\)\]{background-color:var(--fill-card)}.bg-\[var\(--fill-primary\)\]{background-color:var(--fill-primary)}.bg-\[var\(--fill-quaternary\)\]{background-color:var(--fill-quaternary)}.bg-\[var\(--fill-secondary\)\]{background-color:var(--fill-secondary)}.bg-\[var\(--fill-tertiary\)\]{background-color:var(--fill-tertiary)}.bg-\[var\(--label-tertiary\)\]{background-color:var(--label-tertiary)}.bg-\[var\(--material-modal\)\]{background-color:var(--material-modal)}.bg-\[var\(--panel-bg\)\]{background-color:var(--panel-bg)}.bg-\[var\(--separator\)\]{background-color:var(--separator)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-red-400\/5{background-color:#ff65680d}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/5{background-color:color-mix(in oklab,var(--color-red-400) 5%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[2px\]{padding:2px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-\[9px\]{padding-top:9px}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-\[max\(0\.5rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(.5rem,env(safe-area-inset-bottom))}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[15px\]{--tw-leading:15px;line-height:15px}.leading-\[16px\]{--tw-leading:16px;line-height:16px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[20px\]{--tw-leading:20px;line-height:20px}.leading-\[21px\]{--tw-leading:21px;line-height:21px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-\[23px\]{--tw-leading:23px;line-height:23px}.leading-\[24px\]{--tw-leading:24px;line-height:24px}.leading-\[26px\]{--tw-leading:26px;line-height:26px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#ff4245\]{color:#ff4245}.text-\[var\(--badge-text\)\]{color:var(--badge-text)}.text-\[var\(--color-accent\)\]{color:var(--color-accent)}.text-\[var\(--label-primary\)\]{color:var(--label-primary)}.text-\[var\(--label-quaternary\)\]{color:var(--label-quaternary)}.text-\[var\(--label-secondary\)\]{color:var(--label-secondary)}.text-\[var\(--label-tertiary\)\]{color:var(--label-tertiary)}.text-amber-500{color:var(--color-amber-500)}.text-green-500{color:var(--color-green-500)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_40px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 40px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--panel-shadow\)\]{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--color-accent\)\]{--tw-ring-color:var(--color-accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[30px\]{--tw-backdrop-blur:blur(30px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}@media(hover:hover){.group-hover\:text-\[var\(--color-accent\)\]:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\:text-\[var\(--label-secondary\)\]:is(:where(.group):hover *){color:var(--label-secondary)}}.placeholder\:text-\[var\(--label-tertiary\)\]::placeholder{color:var(--label-tertiary)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-\[var\(--color-accent\)\]:hover{border-color:var(--color-accent)}.hover\:bg-\[var\(--badge-bg-hover\)\]:hover{background-color:var(--badge-bg-hover)}.hover\:bg-\[var\(--btn-solid-hover\)\]:hover{background-color:var(--btn-solid-hover)}.hover\:bg-\[var\(--fill-quaternary\)\]:hover{background-color:var(--fill-quaternary)}.hover\:bg-\[var\(--fill-secondary\)\]:hover{background-color:var(--fill-secondary)}.hover\:bg-\[var\(--fill-tertiary\)\]:hover{background-color:var(--fill-tertiary)}.hover\:text-\[var\(--color-accent\)\]:hover{color:var(--color-accent)}.hover\:text-\[var\(--label-primary\)\]:hover{color:var(--label-primary)}.hover\:text-\[var\(--label-secondary\)\]:hover{color:var(--label-secondary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-\[var\(--color-accent\)\]:focus{border-color:var(--color-accent)}.focus\:border-\[var\(--separator\)\]:focus{border-color:var(--separator)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:bg-\[var\(--fill-secondary\)\]:active{background-color:var(--fill-secondary)}.active\:opacity-50:active{opacity:.5}.active\:opacity-60:active{opacity:.6}.active\:opacity-80:active{opacity:.8}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media not all and (min-width:48rem){.max-md\:h-2{height:calc(var(--spacing) * 2)}.max-md\:h-4{height:calc(var(--spacing) * 4)}.max-md\:w-2{width:calc(var(--spacing) * 2)}.max-md\:w-4{width:calc(var(--spacing) * 4)}.max-md\:w-full{width:100%}.max-md\:flex-1{flex:1}:where(.max-md\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}.max-md\:px-3{padding-inline:calc(var(--spacing) * 3)}.max-md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.max-md\:text-\[12px\]{font-size:12px}.max-md\:text-\[13px\]{font-size:13px}.max-md\:text-\[14px\]{font-size:14px}.max-md\:text-\[15px\]{font-size:15px}.max-md\:text-\[18px\]{font-size:18px}.max-md\:leading-\[16px\]{--tw-leading:16px;line-height:16px}.max-md\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.max-md\:leading-\[20px\]{--tw-leading:20px;line-height:20px}.max-md\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.max-md\:leading-\[24px\]{--tw-leading:24px;line-height:24px}}@media(min-width:48rem){.md\:top-7{top:calc(var(--spacing) * 7)}.md\:bottom-0{bottom:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-0{height:calc(var(--spacing) * 0)}.md\:w-\[240px\]{width:240px}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.md\:pt-4{padding-top:calc(var(--spacing) * 4)}.md\:pt-\[10px\]{padding-top:10px}.md\:text-\[14px\]{font-size:14px}.md\:leading-\[22px\]{--tw-leading:22px;line-height:22px}}@media(prefers-color-scheme:dark){.dark\:bg-\[rgba\(0\,145\,255\,0\.12\)\]{background-color:#0091ff1f}.dark\:bg-\[rgba\(255\,66\,69\,0\.1\)\]{background-color:#ff42451a}.dark\:bg-\[rgba\(255\,66\,69\,0\.15\)\]{background-color:#ff424526}.dark\:bg-\[rgba\(255\,255\,255\,0\.11\)\]{background-color:#ffffff1c}}}@keyframes gradient-shift{0%,to{background-position:0%}25%{background-position:100% 0}50%{background-position:100% 100%}75%{background-position:0 100%}}:root{font-family:var(--font-sans);--label-primary:#000000d9;--label-secondary:#00000080;--label-tertiary:#00000040;--fill-primary:#0000001a;--fill-secondary:#00000014;--fill-tertiary:#0000000d;--fill-quaternary:#00000008;--material-thick:#f6f6f6b8;--material-medium:#f6f6f699;--material-thin:#f6f6f67a;--material-modal:#f6f6f6d1;--panel-bg:var(--material-medium);--panel-border:#ffffff80;--panel-shadow:0 8px 40px #00000014, 0 2px 8px #0000000a;--separator:#00000014;--fill-card:#00000008;--diff-add-bg:#30d15814;--diff-add-text:var(--label-primary);--diff-del-bg:#ff3b3014;--diff-del-text:var(--label-primary);--diff-context-text:var(--label-secondary);--diff-line-num:var(--label-tertiary);--btn-solid:#f6f6f6;--btn-solid-hover:#ddd;--badge-bg:#00000080;--badge-bg-hover:#000000b3;--badge-text:#fff;--toast-icon-info:#0091ff;--toast-icon-success:#30d158;--toast-icon-warning:#ff9230;--toast-icon-error:#ff4245;font-size:13px;line-height:16px}@media(prefers-color-scheme:dark){:root:not([data-theme]){--label-primary:#ffffffd9;--label-secondary:#ffffff8c;--label-tertiary:#ffffff40;--fill-primary:#ffffff1a;--fill-secondary:#ffffff14;--fill-tertiary:#ffffff0d;--fill-quaternary:#ffffff08;--material-thick:#282828cc;--material-medium:#28282899;--material-thin:#28282866;--material-modal:#282828d1;--fill-card:#ffffff14;--panel-bg:var(--material-medium);--panel-border:#ffffff14;--panel-shadow:0 8px 40px #0000004d, 0 2px 8px #0003;--separator:#ffffff0f;--diff-add-bg:#30d1581f;--diff-add-text:#30d158d9;--diff-del-bg:#ff453a1f;--diff-del-text:#ff453ad9;--diff-context-text:var(--label-secondary);--btn-solid:#282828;--btn-solid-hover:#3d3d3d;--bg-gradient:linear-gradient(135deg, #1a1a2e 0%, #2d1b3e 25%, #1b2838 50%, #1e2e1e 75%, #1a1a2e 100%);--toast-icon-info:#0a99ff;--toast-icon-success:#3bdb63;--toast-icon-warning:#ff9e33;--toast-icon-error:#ff4747}}[data-theme=dark]{--label-primary:#ffffffd9;--label-secondary:#ffffff8c;--label-tertiary:#ffffff40;--fill-primary:#ffffff1a;--fill-secondary:#ffffff14;--fill-tertiary:#ffffff0d;--fill-quaternary:#ffffff08;--material-thick:#282828cc;--material-medium:#28282899;--material-thin:#28282866;--material-modal:#282828d1;--fill-card:#ffffff14;--panel-bg:var(--material-medium);--panel-border:#ffffff14;--panel-shadow:0 8px 40px #0000004d, 0 2px 8px #0003;--separator:#ffffff0f;--diff-add-bg:#30d1581f;--diff-add-text:#30d158d9;--diff-del-bg:#ff453a1f;--diff-del-text:#ff453ad9;--diff-context-text:var(--label-secondary);--btn-solid:#282828;--btn-solid-hover:#3d3d3d;--toast-icon-info:#0a99ff;--toast-icon-success:#3bdb63;--toast-icon-warning:#ff9e33;--toast-icon-error:#ff4747}:root{--hljs-base:#000000d9;--hljs-keyword:#c4344d;--hljs-function:#6f42c1;--hljs-variable:#0060b0;--hljs-string:#1a7a5a;--hljs-builtin:#b05000;--hljs-comment:#0006;--hljs-tag:#1a7040;--hljs-section:#0060b0;--hljs-bullet:#7a5a00;--hljs-addition-fg:#1a7040;--hljs-addition-bg:#e6ffe6;--hljs-deletion-fg:#c4344d;--hljs-deletion-bg:#fff0f0}@media(prefers-color-scheme:dark){:root:not([data-theme]){--hljs-base:#ffffffd9;--hljs-keyword:#ff7b9f;--hljs-function:#b4a0ff;--hljs-variable:#7ec8ff;--hljs-string:#7edcb5;--hljs-builtin:#ffb870;--hljs-comment:#ffffff59;--hljs-tag:#7ee0a0;--hljs-section:#7ec8ff;--hljs-bullet:#f2cc60;--hljs-addition-fg:#7ee0a0;--hljs-addition-bg:#1e50324d;--hljs-deletion-fg:#ff7b9f;--hljs-deletion-bg:#641e284d}}[data-theme=dark]{--hljs-base:#ffffffd9;--hljs-keyword:#ff7b9f;--hljs-function:#b4a0ff;--hljs-variable:#7ec8ff;--hljs-string:#7edcb5;--hljs-builtin:#ffb870;--hljs-comment:#ffffff59;--hljs-tag:#7ee0a0;--hljs-section:#7ec8ff;--hljs-bullet:#f2cc60;--hljs-addition-fg:#7ee0a0;--hljs-addition-bg:#1e50324d;--hljs-deletion-fg:#ff7b9f;--hljs-deletion-bg:#641e284d}pre code.hljs{display:block;overflow-x:auto}.hljs{color:var(--hljs-base);background:0 0}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:var(--hljs-keyword)}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:var(--hljs-function)}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:var(--hljs-variable)}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:var(--hljs-string)}.hljs-built_in,.hljs-symbol{color:var(--hljs-builtin)}.hljs-code,.hljs-comment,.hljs-formula{color:var(--hljs-comment);font-style:italic}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--hljs-tag)}.hljs-subst{color:var(--hljs-base)}.hljs-section{color:var(--hljs-section);font-weight:700}.hljs-bullet{color:var(--hljs-bullet)}.hljs-emphasis{color:var(--hljs-base);font-style:italic}.hljs-strong{color:var(--hljs-base);font-weight:700}.hljs-addition{color:var(--hljs-addition-fg);background-color:var(--hljs-addition-bg)}.hljs-deletion{color:var(--hljs-deletion-fg);background-color:var(--hljs-deletion-bg)}[data-bg=mist],:root:not([data-bg]){--bg-gradient:linear-gradient(135deg, #e8f0fe 0%, #f5e6f0 25%, #e6f0f5 50%, #f0f5e6 75%, #e8f0fe 100%)}[data-bg=mist][data-theme=dark],:root:not([data-bg])[data-theme=dark]{--bg-gradient:linear-gradient(135deg, #1a1a2e 0%, #2d1b3e 25%, #1b2838 50%, #1e2e1e 75%, #1a1a2e 100%)}[data-bg=aurora]{--bg-gradient:linear-gradient(135deg, #a8d8ea 0%, #aa96da 25%, #8fd3c4 50%, #c4a8d8 75%, #a8d8ea 100%)}[data-bg=aurora][data-theme=dark]{--bg-gradient:linear-gradient(135deg, #0d1b2a 0%, #1b0033 25%, #0a2e26 50%, #1a0a2e 75%, #0d1b2a 100%)}[data-bg=ember]{--bg-gradient:linear-gradient(135deg, #f8d4b0 0%, #f0b0c0 25%, #f8e0a0 50%, #e8c0d0 75%, #f8d4b0 100%)}[data-bg=ember][data-theme=dark]{--bg-gradient:linear-gradient(135deg, #2e1a0a 0%, #3e1b2d 25%, #2e2410 50%, #2d1a2e 75%, #2e1a0a 100%)}html,body{overscroll-behavior:none;overflow:hidden}body{color:var(--label-primary);margin:0}button,[role=button]{cursor:pointer}.animated-bg{background:var(--bg-gradient);background-size:300% 300%;animation:20s infinite gradient-shift}.glass-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);border:.5px solid var(--panel-border);box-shadow:var(--panel-shadow);border-radius:18px;transition:box-shadow .2s,border-color .2s}.glass-popover{background:var(--panel-bg);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);border:.5px solid var(--panel-border);box-shadow:var(--panel-shadow);border-radius:14px}.glass-panel-input:focus-within{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.glass-panel-disabled{opacity:.6;pointer-events:none}.scrollbar-auto{scrollbar-width:thin;scrollbar-color:transparent transparent}.scrollbar-auto:hover{scrollbar-color:var(--fill-secondary) transparent}.scrollbar-auto::-webkit-scrollbar{width:6px}.scrollbar-auto::-webkit-scrollbar-track{background:0 0}.scrollbar-auto::-webkit-scrollbar-thumb{background:0 0;border-radius:3px}.scrollbar-auto:hover::-webkit-scrollbar-thumb{background:var(--fill-secondary)}.scrollbar-auto:hover::-webkit-scrollbar-thumb:hover{background:var(--fill-primary)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
package/web/index.html CHANGED
@@ -6,10 +6,10 @@
6
6
  name="viewport"
7
7
  content="width=device-width, initial-scale=1.0, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content"
8
8
  />
9
- <link rel="icon" type="image/x-icon" href="/favicon.ico" />
10
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
11
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
12
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
9
+ <link rel="icon" type="image/x-icon" href="favicon.ico" />
10
+ <link rel="icon" type="image/png" sizes="32x32" href="favicon-32.png" />
11
+ <link rel="icon" type="image/png" sizes="16x16" href="favicon-16.png" />
12
+ <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" />
13
13
  <title>Paimon</title>
14
14
  <style>
15
15
  /* Safe area 兜底色(必须内联,Safari 仅从内联样式读取 safe area 背景) */
@@ -32,11 +32,11 @@
32
32
  background-color: #2e1a0a;
33
33
  }
34
34
  </style>
35
- <script type="module" crossorigin src="/assets/index-BVDOOsji.js"></script>
36
- <link rel="modulepreload" crossorigin href="/assets/framework-CY9iUjoF.js">
37
- <link rel="modulepreload" crossorigin href="/assets/vendor-BXh3TPFq.js">
38
- <link rel="modulepreload" crossorigin href="/assets/markdown-CbB-lJ6c.js">
39
- <link rel="stylesheet" crossorigin href="/assets/index-DGclViZs.css">
35
+ <script type="module" crossorigin src="./assets/index-BTA-j8zf.js"></script>
36
+ <link rel="modulepreload" crossorigin href="./assets/framework-CY9iUjoF.js">
37
+ <link rel="modulepreload" crossorigin href="./assets/vendor-BXh3TPFq.js">
38
+ <link rel="modulepreload" crossorigin href="./assets/markdown-CbB-lJ6c.js">
39
+ <link rel="stylesheet" crossorigin href="./assets/index-CTEVuRr7.css">
40
40
  </head>
41
41
  <body class="antialiased">
42
42
  <script>
@@ -59,7 +59,13 @@
59
59
  var link = document.createElement("link");
60
60
  link.rel = "preload";
61
61
  link.as = "image";
62
- link.href = "/logos/" + bg + "/" + theme + "/paimon-logo.png";
62
+ link.href =
63
+ (window.__BASE_PATH__ || "") +
64
+ "/logos/" +
65
+ bg +
66
+ "/" +
67
+ theme +
68
+ "/paimon-logo.png";
63
69
  document.head.appendChild(link);
64
70
  })();
65
71
  </script>
@@ -1,6 +0,0 @@
1
- import{a as l,j as t,r as Ge,c as rn}from"./framework-CY9iUjoF.js";import{s as Re,x as sn,E as Me,u as Ve,K as z,m as wt,C as pe,h as Nt,l as an,S as on,c as Je,X as Xe,L as de,g as kt,W as ln,p as cn,P as ct,T as dn,F as un,e as De,b as pn,i as St,G as xn,H as fn,r as mn,f as hn,k as gn,a as Ct,M as bn,I as vn,o as yn,A as jn,J as wn,d as Nn,O as kn,t as Sn,j as Cn,q as En,n as Tn,R as ve,D as Rn,B as Mn}from"./vendor-BXh3TPFq.js";import{d as Le,M as In,a as An,b as Ln,r as _n,e as Pn,s as On,c as $n,j as Et}from"./markdown-CbB-lJ6c.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=r(a);fetch(a.href,o)}})();function zn(){l.useEffect(()=>{const e=window.visualViewport;if(!e)return;const n=document.documentElement;function r(){if(!e)return;window.innerHeight-e.height>1?(n.style.setProperty("--app-viewport-height",`${e.height}px`),window.scrollY>0&&window.scrollTo(0,0)):n.style.removeProperty("--app-viewport-height")}return e.addEventListener("resize",r),e.addEventListener("scroll",r),()=>{e.removeEventListener("resize",r),e.removeEventListener("scroll",r),n.style.removeProperty("--app-viewport-height")}},[])}const Ze="paimon:accessToken";function Tt(){return localStorage.getItem(Ze)}function Bn(e){localStorage.setItem(Ze,e)}function Rt(){localStorage.removeItem(Ze)}function Fn(){const[e,n]=l.useState(Tt()),[r,s]=l.useState(!1),a=l.useCallback(i=>{s(!1),n(i)},[]),o=l.useCallback(()=>{Rt(),n(null),s(!0)},[]);return{authToken:e,authError:r,handleLogin:a,handleAuthError:o}}const dt={BROWSER_HEARTBEAT_INTERVAL:3e4,BROWSER_PONG_TIMEOUT:1e4};let V=null;const He=new Set;let se=!1,je=null,Q=null,we=null,le=null,ne=null,ie,_e=!1;const Dn=3e3,Hn=3e3;function qn(e){for(const n of He)try{n(e)}catch(r){console.error("[useWebSocket] listener error:",r)}}function Kn(e){je=setInterval(()=>{e.readyState===WebSocket.OPEN&&(e.send(JSON.stringify({type:"ping"})),Q=setTimeout(()=>{e.close()},dt.BROWSER_PONG_TIMEOUT))},dt.BROWSER_HEARTBEAT_INTERVAL)}function Mt(){je&&(clearInterval(je),je=null),Q&&(clearTimeout(Q),Q=null)}function Pe(){se||(we=setTimeout(It,Hn))}function qe(){le&&(clearTimeout(le),le=null)}function It(){if(se||!ne)return;const r=`${`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/browser`}?token=${encodeURIComponent(ne)}`;_e=!1;const s=new WebSocket(r);V=s,K.setState({connectionState:"connecting"}),le=setTimeout(()=>{le=null,s.readyState===WebSocket.CONNECTING&&s.close()},Dn),s.onopen=()=>{qe(),_e=!0,K.setState({connectionState:"connected"}),s.send(JSON.stringify({type:"list"})),Kn(s)},s.onmessage=a=>{try{const o=JSON.parse(a.data);if(o.type==="pong"){Q&&(clearTimeout(Q),Q=null);return}qn(o)}catch{}},s.onclose=a=>{if(qe(),K.setState({connectionState:"disconnected"}),V=null,Mt(),!se&&!_e){const o={};ne&&(o.Authorization=`Bearer ${ne}`),fetch("/api/instances",{headers:o}).then(i=>{i.status===401?ie==null||ie():Pe()}).catch(()=>{Pe()});return}se||Pe()},s.onerror=()=>{s.close()}}const K=Re((e,n)=>({connectionState:"idle",send:r=>{(V==null?void 0:V.readyState)===WebSocket.OPEN&&V.send(JSON.stringify(r))},subscribe:r=>(He.add(r),()=>{He.delete(r)}),connect:(r,s)=>{n().disconnect(),se=!1,ne=r,ie=s,It()},disconnect:()=>{se=!0,ne=null,ie=void 0,Mt(),qe(),we&&(clearTimeout(we),we=null),V&&(V.close(),V=null),e({connectionState:"idle"})}})),re=Re()(sn((e,n)=>({instances:[],instanceListReady:!1,handleMessage:r=>{switch(r.type){case"instance_list":e({instances:r.payload.instances,instanceListReady:!0});break;case"instance_update":{const{instance:s,action:a}=r.payload;a==="connected"?e(o=>({instances:o.instances.some(c=>c.id===s.id)?o.instances.map(c=>c.id===s.id?s:c):[...o.instances,s]})):a==="disconnected"?e(o=>({instances:o.instances.filter(i=>i.id!==s.id)})):a==="updated"&&e(o=>({instances:o.instances.map(i=>i.id===s.id?s:i)}));break}}}}),{name:"paimon:instances",partialize:e=>({instances:e.instances})}));function Un(e){return n=>e?n.instances.find(r=>r.id===e):void 0}const ae={appearance:"paimon:appearance",background:"paimon:background",notification:"paimon:notification"};function Ke(){const e=localStorage.getItem(ae.appearance);return e==="light"||e==="dark"||e==="system"?e:"system"}function At(){const e=localStorage.getItem(ae.background);return e==="mist"||e==="aurora"||e==="ember"?e:"mist"}function Wn(){return localStorage.getItem(ae.notification)==="true"}function Lt(e){return e==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}function ke(e,n){const r=Lt(e);return document.documentElement.setAttribute("data-theme",r),document.documentElement.setAttribute("data-bg",n),r}const q=Re(e=>({appearance:Ke(),background:At(),resolvedTheme:Lt(Ke()),notification:Wn(),setAppearance:n=>{localStorage.setItem(ae.appearance,n);const r=ke(n,q.getState().background);e({appearance:n,resolvedTheme:r})},setBackground:n=>{localStorage.setItem(ae.background,n),ke(q.getState().appearance,n),e({background:n})},setNotification:n=>{localStorage.setItem(ae.notification,String(n)),e({notification:n})}})),Yn=window.matchMedia("(prefers-color-scheme: dark)");Yn.addEventListener("change",()=>{const{appearance:e,background:n}=q.getState();if(e==="system"){const r=ke(e,n);q.setState({resolvedTheme:r})}});function Gn(){const e=q(r=>r.appearance),n=q(r=>r.setAppearance);return[e,n]}function _t(){const e=q(r=>r.background),n=q(r=>r.setBackground);return[e,n]}function Vn(){return q(e=>e.resolvedTheme)}function Jn(){const e=q(r=>r.notification),n=q(r=>r.setNotification);return[e,n]}ke(Ke(),At());const Xn="/logos/mist/light/paimon-logo.png";function Pt(e,n){return!e||!n?Xn:`/logos/${e}/${n}/paimon-logo.png`}function Qe(){const[e]=_t(),n=Vn();return Pt(e,n)}function Zn(){const{background:e,resolvedTheme:n}=q.getState();return Pt(e,n)}const Ot="Notification"in window;function Qn(e,n){return(e==="streaming"||e==="compacting")&&n==="idle"}function er(){const e=K(o=>o.subscribe),n=Me(),r=l.useRef(n);l.useEffect(()=>{r.current=n},[n]);const s=l.useRef(q.getState().notification);l.useEffect(()=>q.subscribe(o=>{s.current=o.notification}),[]);const a=l.useRef(new Map);l.useEffect(()=>{const o=re.getState().instances;for(const i of o)a.current.set(i.id,i.status)},[]),l.useEffect(()=>e(o=>{if(o.type==="instance_list"){a.current.clear();for(const i of o.payload.instances)a.current.set(i.id,i.status);return}if(o.type==="instance_update"){const{action:i,instance:c}=o.payload;if(i==="disconnected"){a.current.delete(c.id);return}const d=a.current.get(c.id);a.current.set(c.id,c.status),i==="updated"&&s.current&&Qn(d,c.status)&&tr(c.id,c.cwd,r)}}),[e])}function tr(e,n,r){if(document.hasFocus()||!Ot||Notification.permission!=="granted")return;const s=n.split("/").pop()||n,a=new Notification("Paimon",{body:Ve.t("notification.taskComplete",{name:s}),icon:Zn()});a.onclick=()=>{var o;window.focus(),(o=r.current)==null||o.call(r,`/instance/${e}`),a.close()}}function nr(){const{t:e}=z(),n=K(a=>a.connectionState),r=l.useRef(!1);n==="disconnected"&&(r.current=!0),n==="connected"&&(r.current=!1);const s=r.current&&n!=="connected";return t.jsx("span",{className:`w-2 h-2 rounded-full transition-colors ${s?"bg-red-500":"bg-green-500"}`,title:e(s?"common.offline":"common.online")})}function rr(e,n,r=12){const{innerWidth:s,innerHeight:a}=window;let o=e.x,i=e.y;return o+n.width+r>s&&(o=s-n.width-r),i+n.height+r>a&&(i=a-n.height-r),o=Math.max(r,o),i=Math.max(r,i),{left:o,top:i}}function sr({position:e,onClose:n,children:r}){const s=l.useRef(null),a=l.useRef(n);a.current=n;const o=l.useCallback(()=>a.current(),[]);return l.useEffect(()=>{function i(u){s.current&&!s.current.contains(u.target)&&o()}function c(u){s.current&&!s.current.contains(u.target)&&o()}function d(u){u.key==="Escape"&&o()}return document.addEventListener("mousedown",i),document.addEventListener("contextmenu",c),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("contextmenu",c),document.removeEventListener("keydown",d)}},[o]),l.useEffect(()=>{if(s.current){const i=s.current.getBoundingClientRect(),c=rr(e,{width:i.width,height:i.height});s.current.style.left=`${c.left}px`,s.current.style.top=`${c.top}px`,s.current.style.opacity="1"}},[e]),Ge.createPortal(t.jsx("div",{ref:s,className:"glass-popover z-50 py-1.5 min-w-[160px]",style:{position:"fixed",left:e.x,top:e.y,opacity:0},children:r}),document.body)}function ar({icon:e,label:n,danger:r=!1,disabled:s=!1,onClick:a}){return t.jsxs("button",{onClick:o=>{o.stopPropagation(),s||a()},disabled:s,className:`w-full text-left flex items-center gap-2 px-3 py-1.5 text-[13px] leading-[18px] transition-colors ${s?"opacity-40 cursor-default":r?"text-red-500 hover:bg-[var(--fill-tertiary)]":"text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)]"}`,children:[e&&t.jsx("span",{className:"flex-shrink-0 w-4 h-4 flex items-center justify-center",children:e}),t.jsx("span",{children:n})]})}const or=500;function ut({instances:e,selectedId:n,onSelect:r,onShutdown:s,onNewInstance:a}){const{t:o}=z(),i=Me(),c=Qe(),[d,u]=l.useState(null),f=l.useRef(null),m=l.useRef(!1),g=l.useCallback((k,_)=>{k.preventDefault(),k.stopPropagation(),u({position:{x:k.clientX,y:k.clientY},instanceId:_})},[]),v=l.useCallback((k,_)=>{m.current=!1;const y=k.touches[0],w={x:y.clientX,y:y.clientY};f.current=setTimeout(()=>{var M;m.current=!0,(M=navigator.vibrate)==null||M.call(navigator,10),u({position:w,instanceId:_})},or)},[]),N=l.useCallback(()=>{f.current&&(clearTimeout(f.current),f.current=null)},[]),T=l.useCallback(()=>{f.current&&(clearTimeout(f.current),f.current=null)},[]),R=l.useCallback(()=>u(null),[]),[b,h]=l.useState(null),C=l.useRef(null);l.useEffect(()=>()=>{C.current&&clearTimeout(C.current)},[]);const j=l.useCallback(k=>{navigator.clipboard.writeText(k).then(()=>{h(k),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>h(null),1500)},()=>{})},[]),O=l.useMemo(()=>{const k=new Map;for(const _ of e){const y=k.get(_.edgeId);y?y.push(_):k.set(_.edgeId,[_])}return[...k.entries()].sort((_,y)=>_[0].localeCompare(y[0]))},[e]);return t.jsxs("aside",{className:"glass-panel select-none w-[240px] md:w-[240px] flex-shrink-0 flex flex-col overflow-hidden max-md:w-full max-md:flex-1",children:[t.jsx("div",{className:"px-4 pt-4 pb-2",children:t.jsxs("div",{className:"grid grid-cols-[auto_1fr] grid-rows-[auto_auto] gap-x-2.5 items-center",children:[t.jsx("div",{className:"row-span-2",children:t.jsx("img",{src:c,alt:"Paimon",className:"h-[34px] aspect-square object-contain"})}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("h1",{className:"text-[16px] leading-[20px] max-md:text-[18px] max-md:leading-[24px] font-semibold text-[var(--label-primary)]",children:"Paimon"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("button",{onClick:a,title:o("sidebar.newInstance"),className:"select-none w-6 h-6 flex items-center justify-center rounded-full text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-all duration-150",children:t.jsx(wt,{size:16})}),t.jsx(nr,{})]})]}),t.jsxs("div",{className:"text-[12px] leading-[15px] max-md:text-[13px] max-md:leading-[18px] text-[var(--label-tertiary)]",children:[o("sidebar.machine",{count:O.length})," · ",o("sidebar.instance",{count:e.length})]})]})}),t.jsx("div",{className:"flex-1 overflow-y-auto px-2 py-1 scrollbar-auto",children:e.length===0?t.jsx("div",{className:"px-3 py-8 text-center text-[var(--label-tertiary)] text-[12px] leading-[16px] max-md:text-[13px] max-md:leading-[18px]",children:o("sidebar.noInstances")}):t.jsx("div",{children:O.map(([k,_],y)=>t.jsxs("div",{children:[t.jsxs("button",{type:"button",onClick:()=>j(k),title:k,className:`flex items-center gap-1 px-2.5 pb-1 text-[11px] leading-[14px] font-semibold text-[var(--label-tertiary)] max-w-full max-md:px-3 rounded-[4px] hover:text-[var(--label-secondary)] transition-colors cursor-pointer ${y===0?"pt-1":"pt-3"}`,children:[t.jsx("span",{className:"truncate",children:k}),t.jsx("span",{className:"shrink-0 opacity-60",children:b===k?t.jsx(pe,{size:10,className:"text-green-500"}):t.jsx(Nt,{size:10})})]}),t.jsx("ul",{className:"space-y-0.5 max-md:space-y-1",children:_.map(w=>{var M;return t.jsx("li",{children:t.jsxs("button",{onClick:()=>{m.current||r(w.id)},onContextMenu:P=>g(P,w.id),onTouchStart:P=>v(P,w.id),onTouchEnd:N,onTouchMove:T,className:`w-full text-left px-2.5 py-1.5 max-md:px-3 max-md:py-2.5 rounded-[8px] transition-all duration-150 ${n===w.id?"bg-[rgba(0,145,255,0.08)] dark:bg-[rgba(0,145,255,0.12)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:`w-1.5 h-1.5 max-md:w-2 max-md:h-2 rounded-full flex-shrink-0 transition-colors ${w.status==="streaming"?"bg-[var(--color-accent)] animate-pulse":w.status==="compacting"?"bg-amber-500 animate-pulse":"bg-green-500"}`,title:w.status==="streaming"?o("sidebar.statusStreaming"):w.status==="compacting"?o("sidebar.statusCompacting"):o("sidebar.statusIdle")}),t.jsx("span",{className:"text-[14px] leading-[18px] max-md:text-[15px] max-md:leading-[21px] text-[var(--label-primary)] truncate",children:w.cwd.split("/").pop()||w.cwd})]}),t.jsx("div",{className:"ml-3.5 text-[11px] leading-[14px] max-md:text-[12px] max-md:leading-[16px] text-[var(--label-secondary)] truncate mt-0.5",children:w.model.name||`${w.model.provider}/${w.model.id}`}),((M=w.contextUsage)==null?void 0:M.percent)!=null&&w.contextUsage.percent>0&&t.jsx("div",{className:"ml-3.5 mt-1.5 h-[3px] rounded-full bg-[var(--fill-quaternary)] overflow-hidden",children:t.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${Math.max(2,Math.min(100,w.contextUsage.percent))}%`,backgroundColor:w.contextUsage.percent>=90?"#ff4245":w.contextUsage.percent>=60?"#ff9230":"#30d158"}})})]})},w.id)})})]},k))})}),d&&t.jsx(sr,{position:d.position,onClose:R,children:t.jsx(ar,{icon:t.jsx(an,{size:14}),label:o("sidebar.shutdown"),danger:!0,onClick:()=>{s(d.instanceId),R()}})}),t.jsx("div",{className:"px-3 py-2 border-t border-[var(--separator)]",children:t.jsxs("button",{onClick:()=>i("/settings"),className:"flex items-center gap-2 w-full px-2.5 py-1.5 max-md:py-2.5 rounded-[8px] text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-all duration-150",children:[t.jsx(on,{size:15,className:"max-md:w-4 max-md:h-4"}),t.jsx("span",{className:"text-[13px] leading-[18px] max-md:text-[14px] max-md:leading-[20px]",children:o("sidebar.settings")})]})})]})}function Ue(e){const n=e.id??e.__renderKey;if(!n)throw new Error(`SessionEntry missing stable render key: type=${e.type}`);return n}const et=Object.freeze({text:"",images:[]}),Se=Re((e,n)=>({drafts:new Map,setDraft:(r,s)=>{e(a=>{const o=a.drafts.get(r)??et,i=typeof s=="function"?s(o):s,c=new Map(a.drafts);return i.text||i.images.length>0?c.set(r,i):c.delete(r),{drafts:c}})}})),ue=e=>e!==void 0&&e!=="idle";function lr(){return e=>{var n;((n=e.children[0])==null?void 0:n.type)==="yaml"&&(e.children[0]={type:"code",lang:"__frontmatter__",value:e.children[0].value})}}function ir({yamlText:e}){let n=[];try{const r=Et.load(e);r&&typeof r=="object"&&!Array.isArray(r)&&(n=Object.entries(r).map(([s,a])=>{const o=typeof a=="string"?a:JSON.stringify(a,null,2);return[s,o]}))}catch{n=[["raw",e]]}return n.length===0?null:t.jsx("div",{className:"my-2 rounded-[8px] border border-[var(--separator)] overflow-hidden",children:t.jsx("table",{className:"w-full text-[13px]",children:t.jsx("tbody",{children:n.map(([r,s])=>t.jsxs("tr",{className:"border-b last:border-b-0 border-[var(--separator)]",children:[t.jsx("td",{className:"px-3 py-1.5 bg-[var(--fill-quaternary)] text-[var(--label-secondary)] font-medium whitespace-nowrap align-top w-[1%]",children:r}),t.jsx("td",{className:"px-3 py-1.5 text-[var(--label-primary)] whitespace-pre-wrap break-all",children:s})]},r))})})})}function Ce(e){return e==null||typeof e=="boolean"?"":typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(Ce).join(""):typeof e=="object"&&"props"in e?Ce(e.props.children):""}function pt({language:e,children:n}){const{t:r}=z(),[s,a]=l.useState(!1),o=Ce(n).replace(/\n$/,""),i=l.useCallback(()=>{navigator.clipboard.writeText(o),a(!0),setTimeout(()=>a(!1),2e3)},[o]);return t.jsxs("div",{className:"group/code relative my-2 rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] overflow-hidden",children:[t.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-[var(--separator)]",children:[t.jsx("span",{className:"text-[11px] text-[var(--label-tertiary)] font-medium",children:e||"code"}),t.jsxs("button",{onClick:i,className:"flex items-center gap-1 text-[11px] text-[var(--label-tertiary)] hover:text-[var(--label-secondary)] transition-colors",children:[s?t.jsx(pe,{size:12}):t.jsx(Nt,{size:12}),r(s?"entries.copied":"entries.copy")]})]}),t.jsx("pre",{className:"px-3 py-2.5 overflow-x-auto text-[13px] leading-[20px]",children:t.jsx("code",{children:n})})]})}const cr={code({className:e,children:n,...r}){const s=/language-(\w+)/.exec(e||"");if((s==null?void 0:s[1])==="__frontmatter__"){const a=Ce(n).replace(/\n$/,"");return t.jsx(ir,{yamlText:a})}return s?t.jsx(pt,{language:s[1],children:n}):String(n).includes(`
2
- `)?t.jsx(pt,{language:"",children:n}):t.jsx("code",{className:"px-1.5 py-0.5 rounded-[4px] bg-[var(--fill-secondary)] text-[13px] font-mono break-words",...r,children:n})},pre({children:e}){return t.jsx(t.Fragment,{children:e})},p({children:e}){return t.jsx("p",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] mb-2 last:mb-0",children:e})},h1({children:e}){return t.jsx("h1",{className:"text-[20px] leading-[26px] font-semibold text-[var(--label-primary)] mt-4 mb-2",children:e})},h2({children:e}){return t.jsx("h2",{className:"text-[17px] leading-[23px] font-semibold text-[var(--label-primary)] mt-3 mb-1.5",children:e})},h3({children:e}){return t.jsx("h3",{className:"text-[15px] leading-[21px] font-semibold text-[var(--label-primary)] mt-2 mb-1",children:e})},ul({children:e}){return t.jsx("ul",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] pl-5 mb-2 list-disc space-y-0.5",children:e})},ol({children:e}){return t.jsx("ol",{className:"text-[14px] leading-[22px] text-[var(--label-primary)] pl-5 mb-2 list-decimal space-y-0.5",children:e})},li({children:e}){return t.jsx("li",{className:"text-[14px] leading-[22px]",children:e})},blockquote({children:e}){return t.jsx("blockquote",{className:"pl-3 border-l-2 border-[var(--color-accent)] text-[14px] leading-[22px] text-[var(--label-secondary)] my-2",children:e})},table({children:e}){return t.jsx("div",{className:"overflow-x-auto my-2 rounded-[8px] border border-[var(--separator)]",children:t.jsx("table",{className:"w-full text-[13px]",children:e})})},thead({children:e}){return t.jsx("thead",{className:"bg-[var(--fill-tertiary)] text-[var(--label-secondary)]",children:e})},th({children:e}){return t.jsx("th",{className:"px-3 py-1.5 text-left font-medium border-b border-[var(--separator)]",children:e})},td({children:e}){return t.jsx("td",{className:"px-3 py-1.5 border-b border-[var(--separator)]",children:e})},hr(){return t.jsx("hr",{className:"my-3 border-[var(--separator)]"})},a({href:e,children:n}){return t.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-accent)] hover:underline",children:n})},strong({children:e}){return t.jsx("strong",{className:"font-semibold text-[var(--label-primary)]",children:e})},em({children:e}){return t.jsx("em",{className:"italic text-[var(--label-primary)]",children:e})}};function dr(e){if(!/^---\s*\n/.test(e))return e;const n=e.match(/\n---\s*(?:\n|$)/);if(!n||n.index===void 0)return e;const r=e.slice(4,n.index);let s=!1;try{const a=Et.load(r);s=typeof a=="object"&&a!==null&&!Array.isArray(a)&&Object.keys(a).length>0}catch{}return s?e:"***"+e.slice(3)}var jt;const ur={...Le,attributes:{...Le.attributes,code:[...((jt=Le.attributes)==null?void 0:jt.code)||[],["className",/^language-.+/]]}};function J({content:e}){if(!e.trim())return null;const n=l.useMemo(()=>dr(e),[e]);return t.jsx("div",{className:"markdown-body min-w-0 max-w-full break-words",children:t.jsx(In,{remarkPlugins:[Pn,On,$n,lr],rehypePlugins:[An,[Ln,ur],_n],components:cr,children:n})})}function pr({content:e,streaming:n,autoCollapse:r}){const{t:s}=z(),[a,o]=l.useState(r),i=l.useRef(!1);return l.useEffect(()=>{r&&!i.current&&(i.current=!0,o(!0))},[r]),t.jsxs("div",{className:`rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] overflow-hidden transition-all ${a?"max-w-[640px]":""}`,children:[t.jsxs("button",{onClick:()=>o(!a),className:"w-full flex items-center gap-1.5 px-3 py-1.5 text-left hover:bg-[var(--fill-quaternary)] transition-colors",children:[t.jsx(Je,{size:12,className:`text-[var(--label-tertiary)] transition-transform ${a?"":"rotate-90"}`}),t.jsx("span",{className:"text-[12px] font-medium text-[var(--label-tertiary)]",children:s(n?"entries.thinkingStreaming":"entries.thinking")})]}),!a&&t.jsx("div",{className:"px-3 pb-2.5 pt-0.5 text-[var(--label-secondary)] italic",children:t.jsx(J,{content:e})})]})}function X({title:e,trailing:n,onClose:r,children:s}){return t.jsx("div",{className:"fixed-viewport z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm",onClick:r,children:t.jsxs("div",{className:"w-[90%] max-w-[640px] max-h-[80vh] rounded-[18px] bg-[var(--material-modal)] backdrop-blur-[30px] border border-[var(--separator)] shadow-[0_8px_40px_rgba(0,0,0,0.12)] flex flex-col overflow-hidden",onClick:a=>a.stopPropagation(),children:[t.jsxs("div",{className:"flex items-center justify-between px-5 py-3 border-b border-[var(--separator)]",children:[t.jsx("div",{className:"flex items-center gap-2 text-[15px] font-semibold text-[var(--label-primary)] select-text",children:e}),t.jsxs("div",{className:"flex items-center gap-2 select-text",children:[n,t.jsx("button",{onClick:r,className:"select-none w-7 h-7 flex items-center justify-center rounded-full hover:bg-[var(--fill-secondary)] transition-colors text-[var(--label-secondary)]",children:t.jsx(Xe,{size:14})})]})]}),s]})})}function $t(e){return{read:t.jsx(un,{size:14}),bash:t.jsx(dn,{size:14}),edit:t.jsx(ct,{size:14}),write:t.jsx(ct,{size:14})}[e]??t.jsx(ln,{size:14})}function xr(e,n){switch(e){case"read":{const r=n.path??"",s=n.offset,a=n.limit;if(s!=null||a!=null){const o=s??"",i=a!=null?(s??1)+a-1:"";return`${r} [${o}:${i}]`}return r}case"bash":return n.command?String(n.command).slice(0,80):"";case"edit":return n.path??"";case"write":return n.path??"";default:return""}}function Ee(e,n){let r=0;const s=/`+/g;let a;for(;(a=s.exec(e))!==null;)a[0].length>r&&(r=a[0].length);const o="`".repeat(Math.max(3,r+1));return`${o}${n}
3
- ${e}
4
- ${o}`}const fr={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",json:"json",css:"css",scss:"scss",less:"less",html:"xml",htm:"xml",xml:"xml",svg:"xml",md:"markdown",mdx:"markdown",yaml:"yaml",yml:"yaml",toml:"ini",ini:"ini",sh:"bash",bash:"bash",zsh:"bash",fish:"bash",py:"python",rb:"ruby",rs:"rust",go:"go",java:"java",kt:"kotlin",swift:"swift",c:"c",h:"c",cpp:"cpp",hpp:"cpp",cs:"csharp",php:"php",sql:"sql",graphql:"graphql",gql:"graphql",dockerfile:"dockerfile",makefile:"makefile",lua:"lua",vim:"vim",diff:"diff",patch:"diff"};function zt(e){var a;const n=e.split("/").pop()??"",r=n.toLowerCase();if(r==="dockerfile")return"dockerfile";if(r==="makefile"||r==="gnumakefile")return"makefile";const s=(a=n.split(".").pop())==null?void 0:a.toLowerCase();if(s)return fr[s]}function mr(e,n){for(const r of e){const s=r.message;if((s==null?void 0:s.role)==="toolResult"&&s.toolCallId===n)return{content:Array.isArray(s.content)?s.content.filter(o=>o.type==="text").map(o=>o.text).join(`
5
- `):String(s.content??""),isError:s.isError??!1,details:s.details??void 0}}return null}function hr({name:e,args:n,toolCallId:r,entries:s,isAborted:a=!1}){const[o,i]=l.useState(!1),c=xr(e,n),d=l.useMemo(()=>r?mr(s,r):null,[s,r]),u=d!==null,m=((d==null?void 0:d.isError)??!1)||!u&&a,g=e==="read"?gr:e==="bash"?br:e==="write"?vr:e==="edit"?jr:wr;return t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:()=>i(!0),className:"w-full max-w-[640px] flex items-center gap-2.5 px-3 py-2 rounded-[8px] bg-[var(--fill-card)] border border-[var(--separator)] hover:bg-[var(--fill-tertiary)] transition-colors text-left group select-none",children:[t.jsx("span",{className:"text-[var(--label-secondary)] group-hover:text-[var(--color-accent)] transition-colors",children:$t(e)}),t.jsx("span",{className:"text-[13px] font-medium text-[var(--label-primary)]",children:e}),c&&t.jsx("span",{className:"text-[12px] text-[var(--label-tertiary)] truncate flex-1 min-w-0",children:c}),t.jsx("span",{className:"flex-shrink-0 ml-auto",children:!u&&!a?t.jsx(de,{size:14,className:"text-[var(--label-tertiary)] animate-spin"}):m?t.jsx(kt,{size:14,className:"text-red-400"}):t.jsx(Je,{size:14,className:"text-[var(--label-tertiary)] group-hover:text-[var(--label-secondary)] transition-colors"})})]}),o&&t.jsx(g,{name:e,args:n,result:d,isAborted:a,onClose:()=>i(!1)})]})}function xe(){const{t:e}=z();return t.jsxs("div",{className:"flex items-center gap-2 text-[12px] text-[var(--label-tertiary)]",children:[t.jsx(de,{size:14,className:"animate-spin"}),t.jsx("span",{children:e("entries.running")})]})}function fe(){const{t:e}=z();return t.jsxs("div",{className:"flex items-center gap-2 text-[12px] text-red-400",children:[t.jsx(kt,{size:14}),t.jsx("span",{children:e("entries.aborted")})]})}function me({name:e}){return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-[var(--label-secondary)] select-none",children:$t(e)}),e]})}function gr({name:e,args:n,result:r,isAborted:s,onClose:a}){const o=n.path??"",i=n.offset,c=n.limit,d=zt(o);let u=o;if(i!=null||c!=null){const g=i??"",v=c!=null?(i??1)+c-1:"";u+=` [${g}:${v}]`}const f=d==="markdown",m=r&&!r.isError&&!f?Ee(r.content,d??""):null;return t.jsxs(X,{title:t.jsx(me,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:u})}),t.jsx("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 scrollbar-auto",children:r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):f?t.jsx(J,{content:r.content}):t.jsx(J,{content:m}):s?t.jsx(fe,{}):t.jsx(xe,{})})]})}function br({name:e,args:n,result:r,isAborted:s,onClose:a}){const o=n.command??"",i=n.timeout,c=Ee(o,"bash"),d=r&&!r.isError?Ee(r.content.trim(),"plaintext"):null;return t.jsx(X,{title:t.jsx(me,{name:e}),onClose:a,trailing:i!=null?t.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-[var(--label-tertiary)]",children:[t.jsx(cn,{size:12}),i,"s"]}):void 0,children:t.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto scrollbar-auto",children:[t.jsx("div",{className:"px-5 pt-3 pb-3 bg-[var(--fill-quaternary)]",children:t.jsx(J,{content:c})}),t.jsxs("div",{className:"px-5 pt-3 pb-5",children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-2",children:"Output"}),r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):t.jsx(J,{content:d}):s?t.jsx(fe,{}):t.jsx(xe,{})]})]})})}function vr({name:e,args:n,result:r,isAborted:s,onClose:a}){const{t:o}=z(),i=n.path??"",c=n.content??"",d=zt(i),u=d==="markdown",f=u?null:Ee(c,d??"");return t.jsxs(X,{title:t.jsx(me,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:i})}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 space-y-3 scrollbar-auto",children:[t.jsx("section",{children:t.jsx(J,{content:u?c:f})}),r!==null&&t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.result")}),t.jsx("pre",{className:`text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 ${r.isError?"text-red-400 bg-red-400/5":"text-[var(--label-secondary)] bg-[var(--fill-tertiary)]"}`,children:r.content})]}),r===null&&(s?t.jsx(fe,{}):t.jsx(xe,{}))]})]})}function yr({diff:e}){const n=e.split(`
6
- `);return t.jsx("pre",{className:"text-[13px] leading-[20px] font-mono overflow-x-auto",children:t.jsx("div",{style:{minWidth:"fit-content"},children:n.map((r,s)=>{const a=r[0];return a==="+"?t.jsx("div",{className:"px-3 rounded-[2px]",style:{backgroundColor:"var(--diff-add-bg)",color:"var(--diff-add-text)"},children:r},s):a==="-"?t.jsx("div",{className:"px-3 rounded-[2px]",style:{backgroundColor:"var(--diff-del-bg)",color:"var(--diff-del-text)"},children:r},s):t.jsx("div",{className:"px-3",style:{color:"var(--diff-context-text)"},children:r},s)})})})}function jr({name:e,args:n,result:r,isAborted:s,onClose:a}){var c;const o=n.path??"",i=(c=r==null?void 0:r.details)==null?void 0:c.diff;return t.jsxs(X,{title:t.jsx(me,{name:e}),onClose:a,children:[t.jsx("div",{className:"px-5 py-2 border-b border-[var(--separator)] bg-[var(--fill-quaternary)]",children:t.jsx("p",{className:"text-[13px] text-[var(--label-secondary)] break-all leading-[20px] font-mono",children:o})}),t.jsx("div",{className:"flex-1 overflow-y-auto pt-3 pb-5 scrollbar-auto",children:r!==null?r.isError?t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] mx-5 px-3 py-2 text-red-400 bg-red-400/5",children:r.content}):i?t.jsx(yr,{diff:i}):t.jsx("pre",{className:"text-[13px] leading-[20px] whitespace-pre-wrap break-words mx-5 px-3 py-2 text-[var(--label-secondary)] bg-[var(--fill-tertiary)] rounded-[8px]",children:r.content}):s?t.jsx("div",{className:"px-5",children:t.jsx(fe,{})}):t.jsx("div",{className:"px-5",children:t.jsx(xe,{})})})]})}function wr({name:e,args:n,result:r,isAborted:s,onClose:a}){const{t:o}=z();return t.jsx(X,{title:t.jsx(me,{name:e}),onClose:a,children:t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pt-3 pb-5 space-y-3 scrollbar-auto",children:[t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.params")}),t.jsx("pre",{className:"text-[13px] leading-[20px] text-[var(--label-secondary)] whitespace-pre-wrap break-words bg-[var(--fill-tertiary)] rounded-[8px] px-3 py-2 overflow-x-auto",children:JSON.stringify(n,null,2)})]}),r!==null&&t.jsxs("section",{children:[t.jsx("h4",{className:"text-[11px] font-semibold text-[var(--label-tertiary)] uppercase tracking-wide mb-1.5",children:o("entries.result")}),t.jsx("pre",{className:`text-[13px] leading-[20px] whitespace-pre-wrap break-words rounded-[8px] px-3 py-2 overflow-x-auto ${r.isError?"text-red-400 bg-red-400/5":"text-[var(--label-secondary)] bg-[var(--fill-tertiary)]"}`,children:r.content})]}),r===null&&t.jsx("section",{children:s?t.jsx(fe,{}):t.jsx(xe,{})})]})})}function Bt({src:e,alt:n,onClose:r}){const s=l.useCallback(a=>{a.key==="Escape"&&r()},[r]);return l.useEffect(()=>(document.addEventListener("keydown",s),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",s),document.body.style.overflow=""}),[s]),t.jsxs("div",{className:"fixed-viewport z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-[30px] animate-in fade-in duration-150",onClick:r,children:[t.jsx("button",{onClick:r,className:"absolute top-4 right-4 z-10 w-9 h-9 rounded-full bg-[var(--badge-bg)] hover:bg-[var(--badge-bg-hover)] text-[var(--badge-text)] flex items-center justify-center transition-colors","aria-label":"Close",children:t.jsx(Xe,{size:18})}),t.jsx("img",{src:e,alt:n??"Image preview",onClick:a=>a.stopPropagation(),className:"max-w-[90vw] max-h-[90vh] object-contain rounded-lg shadow-2xl select-none",draggable:!1})]})}function Nr({entry:e,entries:n,isLast:r,isStreaming:s,onReEdit:a}){const o=r&&s;switch(e.type){case"message":return t.jsx(kr,{entry:e,entries:n,streaming:o,onReEdit:a});case"compaction":case"branch_summary":return t.jsx(Tr,{type:e.type,summary:e.summary??""});default:return null}}function kr({entry:e,entries:n,streaming:r,onReEdit:s}){const a=e.message;if(!a)return null;switch(a.role){case"user":return t.jsx(Sr,{content:a.content});case"assistant":return t.jsx(Cr,{content:a.content,entries:n,streaming:r,stopReason:a.stopReason,errorMessage:a.errorMessage,onReEdit:s});case"toolResult":return null;default:return null}}function Sr({content:e}){const[n,r]=l.useState(null);let s="",a=[];return typeof e=="string"?s=e:Array.isArray(e)?(s=e.filter(o=>o.type==="text").map(o=>o.text).join(""),a=e.filter(o=>o.type==="image")):s=JSON.stringify(e),t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex justify-end px-4 py-1.5",children:t.jsxs("div",{className:"max-w-[80%] rounded-[16px] rounded-br-[4px] bg-[var(--color-accent)] text-white",children:[a.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1.5 p-2 pb-0",children:a.map((o,i)=>{const c=`data:${o.mimeType};base64,${o.data}`;return t.jsx("button",{onClick:()=>r(c),className:"block rounded-[8px] overflow-hidden hover:opacity-90 transition-opacity",children:t.jsx("img",{src:c,alt:`Attached image ${i+1}`,className:"max-w-[200px] max-h-[150px] object-cover",draggable:!1})},i)})}),s&&t.jsx("p",{className:"text-[14px] leading-[21px] whitespace-pre-wrap break-words px-3.5 py-2",children:s}),!s&&a.length>0&&t.jsx("div",{className:"h-2"})]})}),n&&t.jsx(Bt,{src:n,onClose:()=>r(null)})]})}function Cr({content:e,entries:n,streaming:r,stopReason:s,errorMessage:a,onReEdit:o}){if((s==="error"||s==="aborted")&&a&&(!Array.isArray(e)||e.length===0))return t.jsx("div",{className:"px-4",children:t.jsx(xt,{message:a,onReEdit:s==="aborted"?o:void 0})});if(!Array.isArray(e))return t.jsx("div",{className:"px-4",children:t.jsx(J,{content:String(e)})});const i=s==="aborted"||s==="error",c=e[e.length-1],d=r&&(c==null?void 0:c.type)==="thinking",u=e.some(f=>f.type==="text"||f.type==="toolCall")||i;return t.jsxs("div",{className:"px-4 space-y-2",children:[e.map((f,m)=>t.jsx(Er,{block:f,entries:n,streaming:r&&m===e.length-1,autoCollapse:f.type==="thinking"&&u&&!d,isAborted:i},m)),(s==="error"||s==="aborted")&&a&&t.jsx(xt,{message:a,onReEdit:s==="aborted"&&!r?o:void 0}),r&&(c==null?void 0:c.type)!=="thinking"&&t.jsx("span",{className:"inline-block w-2 h-4 bg-[var(--label-tertiary)] rounded-sm animate-pulse"})]})}function Er({block:e,entries:n,streaming:r,autoCollapse:s,isAborted:a}){var o;switch(e.type){case"text":return t.jsx(J,{content:e.text});case"thinking":return(o=e.thinking)!=null&&o.trim()?t.jsx(pr,{content:e.thinking,streaming:r,autoCollapse:s}):null;case"toolCall":return t.jsx(hr,{name:e.name,args:e.arguments,toolCallId:e.id,entries:n,isAborted:a});default:return null}}function Tr({type:e,summary:n}){const{t:r}=z(),[s,a]=l.useState(!1),o=r(e==="compaction"?"entries.contextCompacted":"entries.branchSummary");return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex justify-center px-4 py-2",children:t.jsxs("button",{onClick:()=>n&&a(!0),className:`px-3 py-1 rounded-full bg-[var(--fill-tertiary)] text-[11px] text-[var(--label-tertiary)] transition-colors ${n?"hover:bg-[var(--fill-secondary)] cursor-pointer":""}`,children:[o,n&&t.jsxs("span",{className:"ml-1.5 opacity-70",children:["— ",n.slice(0,60),n.length>60?"...":""]})]})}),s&&t.jsx(X,{title:o,onClose:()=>a(!1),children:t.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4 scrollbar-auto",children:t.jsx(J,{content:n})})})]})}function xt({message:e,onReEdit:n}){var m,g;const{t:r}=z(),[s,a]=l.useState(!1);let o=e,i="",c="",d="";const u=e.indexOf("{");if(u>0){o=e.slice(0,u).trim();try{const v=JSON.parse(e.slice(u));i=((m=v==null?void 0:v.error)==null?void 0:m.message)??e.slice(u),c=((g=v==null?void 0:v.error)==null?void 0:g.type)??"";const N=i.match(/request id:\s*([\w]+)/i);N&&(d=N[1])}catch{i=e.slice(u)}}const f=i.length>200;return t.jsxs(t.Fragment,{children:[t.jsx("div",{onClick:f?()=>a(!0):void 0,className:`rounded-[10px] border border-[rgba(255,66,69,0.3)] bg-[rgba(255,66,69,0.06)] dark:bg-[rgba(255,66,69,0.1)] px-3.5 py-2.5 max-w-[640px] ${f?"cursor-pointer":""}`,children:t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx(De,{size:14,className:"text-[#ff4245] flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("p",{className:"text-[12px] font-medium text-[#ff4245]",children:o}),t.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[n&&t.jsx("button",{onClick:v=>{v.stopPropagation(),n()},className:"text-[12px] leading-[15px] text-[var(--color-accent)] hover:opacity-70 active:opacity-50 transition-opacity select-none",children:r("reEdit.button")}),f&&t.jsx(Je,{size:12,className:"text-[var(--label-tertiary)] flex-shrink-0"})]})]}),i&&!f&&t.jsx("p",{className:"text-[11px] text-[var(--label-secondary)] mt-1.5 break-all whitespace-pre-wrap",children:i})]})]})}),s&&t.jsx(X,{title:r("error.title"),onClose:()=>a(!1),children:t.jsxs("div",{className:"flex-1 overflow-y-auto px-5 py-6 scrollbar-auto",children:[t.jsxs("div",{className:"flex flex-col items-center text-center mb-5",children:[t.jsx("div",{className:"w-10 h-10 rounded-full bg-[rgba(255,66,69,0.1)] dark:bg-[rgba(255,66,69,0.15)] flex items-center justify-center mb-3",children:t.jsx(De,{size:20,className:"text-[#ff4245]"})}),t.jsx("p",{className:"text-[15px] font-semibold text-[#ff4245]",children:o})]}),t.jsxs("div",{className:"rounded-[10px] bg-[var(--fill-card)] p-4 space-y-3",children:[t.jsx(Oe,{label:r("error.message"),value:i}),c&&t.jsx(Oe,{label:r("error.type"),value:c}),d&&t.jsx(Oe,{label:r("error.requestId"),value:d,mono:!0})]})]})})]})}function Oe({label:e,value:n,mono:r}){return t.jsxs("div",{children:[t.jsx("p",{className:"text-[11px] text-[var(--label-tertiary)] mb-0.5",children:e}),t.jsx("p",{className:`text-[14px] leading-[22px] text-[var(--label-primary)] break-all whitespace-pre-wrap ${r?"font-mono text-[13px] leading-[20px]":""}`,children:n})]})}function Ft({title:e,subtitle:n,backTo:r="/",actions:s,children:a}){const o=Me();return t.jsxs("div",{className:"md:hidden flex items-center gap-2",children:[t.jsx("button",{onClick:()=>o(r),"aria-label":"Back to instances",className:"flex select-none items-center text-[var(--label-secondary)] active:opacity-60 transition-opacity",children:t.jsx(pn,{size:20})}),a??t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[14px] font-medium text-[var(--label-primary)] truncate select-text",children:e}),n&&t.jsx("div",{className:"text-[11px] text-[var(--label-tertiary)] truncate select-text",children:n})]}),s]})]})}function Rr(e,n){if(n&&e.startsWith(n)){const r=e.slice(n.length);return!r||r==="/"?"~":"~"+(r.startsWith("/")?r:"/"+r)}return e}function We(e,n){if(e.length<=n)return e;const r=Math.floor((n-1)/2),s=n-1-r;return e.slice(0,s)+"…"+e.slice(-r)}function Mr(e){const n=e.split("/").filter(Boolean);return n.length<=2?e.length:n.slice(-2).join("/").length}function ft(e,n){if(e.length<=n)return e;const r=Mr(e);if(r+2<=n){const s=n-1-r;return e.slice(0,s)+"…"+e.slice(-r)}return We(e,n)}const Ir=6.2,Ar=20,Lr=8;function mt({icon:e,text:n,copyText:r,title:s}){const[a,o]=l.useState(!1),i=l.useRef(null);l.useEffect(()=>()=>{i.current&&clearTimeout(i.current)},[]);const c=l.useCallback(()=>{navigator.clipboard.writeText(r),o(!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>o(!1),1500)},[r]);return t.jsxs("button",{type:"button",onClick:c,title:s??r,className:"inline-flex min-w-0 items-center gap-1 rounded-[4px] px-1 py-0.5 -mx-1 transition-colors hover:bg-[var(--fill-tertiary)] active:bg-[var(--fill-secondary)] cursor-pointer select-none",children:[t.jsx("span",{className:"shrink-0 opacity-70",children:a?t.jsx(pe,{size:11,className:"text-green-500"}):e}),t.jsx("span",{className:"truncate",children:n})]})}function ht({title:e,cwd:n,homedir:r,gitBranch:s,actions:a}){const o=n?Rr(n,r):null,i=l.useRef(null),[c,d]=l.useState(o),[u,f]=l.useState(s),m=l.useCallback(()=>{const g=i.current;if(!g)return;const v=g.getBoundingClientRect().width;if(v<=0)return;const N=(o?1:0)+(s?1:0),T=N*Ar+(N-1)*Lr,R=Math.floor((v-T)/Ir);if(o&&s){const b=Math.max(10,Math.floor(R*.6)),h=Math.max(8,R-b);d(ft(o,b)),f(We(s,h))}else o?d(ft(o,Math.max(10,R))):s&&f(We(s,Math.max(8,R)))},[o,s]);return l.useEffect(()=>{const g=i.current;if(!g)return;const v=new ResizeObserver(()=>m());return v.observe(g),m(),()=>v.disconnect()},[m]),l.useEffect(()=>{d(o),f(s),m()},[o,s,m]),t.jsxs("div",{className:"flex items-center justify-between gap-2 min-w-0 flex-1 min-h-[40px]",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"truncate text-[14px] leading-[20px] font-medium text-[var(--label-primary)] select-text",children:e}),(o||s)&&t.jsxs("div",{ref:i,className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] leading-[14px] text-[var(--label-secondary)]",children:[c&&t.jsx(mt,{icon:t.jsx(St,{size:11}),text:c,copyText:n,title:n},n),u&&t.jsx(mt,{icon:t.jsx(xn,{size:11}),text:u,copyText:s},s)]})]}),a]})}function _r(e,n="top",r="right",s=8,a=12){const{innerWidth:o,innerHeight:i}=window,c=r==="left"?{left:Math.max(a,e.left)}:{right:Math.max(a,o-e.right)};return n==="bottom"?{...c,top:Math.max(a,e.bottom+s)}:{...c,bottom:Math.max(a,i-e.top+s)}}function tt({trigger:e,width:n=200,children:r,disabled:s=!1,placement:a="top",align:o="right"}){const[i,c]=l.useState(!1),[d,u]=l.useState(null),f=l.useRef(null),m=l.useRef(null);l.useEffect(()=>{if(!i)return;function T(R){var h,C;const b=R.target;!((h=f.current)!=null&&h.contains(b))&&!((C=m.current)!=null&&C.contains(b))&&c(!1)}return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[i]),l.useEffect(()=>{if(!i)return;const T=()=>c(!1);return window.addEventListener("resize",T),()=>{window.removeEventListener("resize",T)}},[i]);const g=()=>{var R;if(s)return;if(i){c(!1);return}const T=(R=f.current)==null?void 0:R.getBoundingClientRect();T&&(u(_r(T,a,o)),c(!0))},v=()=>c(!1),N=i&&d?Ge.createPortal(t.jsx("div",{ref:m,className:"glass-popover z-50",style:{position:"fixed",...d.left!==void 0?{left:d.left}:{right:d.right},...d.top!==void 0?{top:d.top}:{bottom:d.bottom},width:`${n}px`},children:r(v)}),document.body):null;return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"relative",ref:f,onClick:g,children:e({open:i})}),N]})}function Pr(e,n){const r=new Date(e),a=Date.now()-r.getTime(),o=Math.floor(a/6e4);if(o<1)return n("session.timeJustNow");if(o<60)return`${o}m`;const i=Math.floor(o/60);if(i<24)return`${i}h`;const c=Math.floor(i/24);if(c<7)return`${c}d`;const d=Math.floor(c/7);return d<4?`${d}w`:r.toLocaleDateString()}function Or({sessions:e,loading:n,hasMore:r,total:s,disabled:a,onOpen:o,onNewSession:i,onSwitchSession:c,onLoadMore:d,onFilterChange:u}){const{t:f}=z(),[m,g]=l.useState(""),v=l.useRef(null),N=l.useRef(null),T=l.useCallback(b=>{g(b),v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{u(b)},300)},[u]),R=l.useCallback(b=>{if(!r||n)return;const h=b.currentTarget;h.scrollHeight-h.scrollTop-h.clientHeight<40&&d(e.length,m)},[r,n,e.length,m,d]);return t.jsx(tt,{trigger:({open:b})=>t.jsx("button",{className:`flex items-center justify-center w-9 h-9 rounded-[8px] transition-colors ${b?"bg-[rgba(0,0,0,0.11)] dark:bg-[rgba(255,255,255,0.11)]":"hover:bg-[var(--fill-tertiary)]"} ${a?"opacity-40 pointer-events-none":""}`,title:f("session.title"),onClick:()=>{b||(g(""),o())},children:t.jsx(fn,{size:16,className:"text-[var(--label-secondary)]"})}),width:320,disabled:a,placement:"bottom",children:b=>t.jsxs("div",{className:"flex flex-col max-h-[360px]",children:[t.jsxs("div",{className:"flex items-center justify-between px-3 pt-2.5 pb-2",children:[t.jsxs("span",{className:"text-[13px] font-medium text-[var(--label-primary)] select-none",children:[f("session.title"),s>0&&t.jsxs("span",{className:"ml-1.5 text-[11px] font-normal text-[var(--label-tertiary)]",children:["(",s,")"]})]}),t.jsxs("button",{onClick:()=>{i(),b()},disabled:a,className:"flex items-center gap-1 px-2 py-1 rounded-[6px] text-[12px] text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-40",children:[t.jsx(wt,{size:12}),t.jsx("span",{children:f("session.new")})]})]}),t.jsx("div",{className:"px-3 pb-2",children:t.jsx("input",{type:"text",placeholder:f("session.filter"),value:m,onChange:h=>T(h.target.value),className:"w-full px-2.5 py-1.5 rounded-[6px] bg-[var(--fill-tertiary)] text-[12px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none border border-transparent focus:border-[var(--separator)]",autoFocus:!0})}),t.jsx("div",{className:"h-px bg-[var(--separator)] mx-2"}),t.jsx("div",{ref:N,className:"flex-1 overflow-y-auto scrollbar-auto py-1.5 px-1.5",onScroll:R,children:n&&e.length===0?t.jsx("div",{className:"flex items-center justify-center py-6",children:t.jsx(de,{size:16,className:"animate-spin text-[var(--label-tertiary)]"})}):e.length===0?t.jsx("div",{className:"py-4 text-center text-[12px] text-[var(--label-tertiary)] select-none",children:f(m?"session.noMatch":"session.noPrevious")}):t.jsxs(t.Fragment,{children:[e.map(h=>t.jsxs("button",{onClick:()=>{h.isCurrent||(c(h.path),b())},disabled:h.isCurrent,className:`w-full text-left px-2.5 py-2 rounded-[8px] transition-colors mb-0.5 ${h.isCurrent?"bg-[var(--fill-secondary)] cursor-default":"hover:bg-[var(--fill-tertiary)] cursor-pointer"}`,children:[t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("span",{className:`text-[13px] leading-[18px] truncate ${h.isCurrent?"font-medium text-[var(--color-accent)]":"text-[var(--label-primary)]"}`,children:h.name||h.firstMessage||f("session.empty")}),t.jsx("span",{className:"text-[11px] text-[var(--label-tertiary)] whitespace-nowrap shrink-0",children:Pr(h.modified,f)})]}),h.name&&h.firstMessage&&t.jsx("div",{className:"mt-0.5 text-[11px] leading-[15px] text-[var(--label-tertiary)] truncate",children:h.firstMessage}),t.jsx("div",{className:"mt-0.5 text-[10px] text-[var(--label-quaternary)]",children:f("session.messageCount",{count:h.messageCount})})]},h.id)),n&&e.length>0&&t.jsx("div",{className:"flex items-center justify-center py-2",children:t.jsx(de,{size:14,className:"animate-spin text-[var(--label-tertiary)]"})})]})})]})})}const $r=["image/png","image/jpeg","image/gif","image/webp"],zr=2048,Br=2048,gt=.85,$e=5*1024*1024;function Dt(){return`img_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}async function bt(e){if(!$r.includes(e.type))throw new Error(`Unsupported image type: ${e.type}`);const n=await createImageBitmap(e),{width:r,height:s}=Dr(n.width,n.height,zr,Br),a=document.createElement("canvas");a.width=r,a.height=s,a.getContext("2d").drawImage(n,0,0,r,s),n.close();let i=e.type,c=gt;e.type!=="image/png"&&e.type!=="image/gif"&&(i="image/jpeg");let d=a.toDataURL(i,c);if(i==="image/jpeg"||i==="image/webp")for(;ze(d)>$e&&c>.3;)c-=.1,d=a.toDataURL(i,c);if(i==="image/png"&&ze(d)>$e)for(i="image/jpeg",c=gt,d=a.toDataURL(i,c);ze(d)>$e&&c>.3;)c-=.1,d=a.toDataURL(i,c);const u=d.split(",")[1];return{id:Dt(),data:u,mimeType:i,previewUrl:d}}function Fr(e){const n=[];for(let r=0;r<e.items.length;r++){const s=e.items[r];if(s.type.startsWith("image/")){const a=s.getAsFile();a&&n.push(a)}}return n}function Dr(e,n,r,s){if(e<=r&&n<=s)return{width:e,height:n};const a=Math.min(r/e,s/n);return{width:Math.round(e*a),height:Math.round(n*a)}}function ze(e){const n=e.split(",")[1];return n?Math.ceil(n.length*3/4):0}let Hr=0,Ne=[];function ee(e,n="info"){const r={id:++Hr,message:e,level:n,phase:"entering"};Ne.forEach(s=>s(r))}const qr=16,Kr=300,Ur={info:3e3,success:3e3,warning:4e3,error:5e3},Wr={info:gn,success:hn,warning:mn,error:De},Yr={info:"var(--toast-icon-info)",success:"var(--toast-icon-success)",warning:"var(--toast-icon-warning)",error:"var(--toast-icon-error)"};function Gr(){const[e,n]=l.useState([]),r=l.useRef(new Set);return l.useEffect(()=>{const s=a=>{n(d=>[...d,a]);const o=setTimeout(()=>{r.current.delete(o),n(d=>d.map(u=>u.id===a.id?{...u,phase:"visible"}:u))},qr);r.current.add(o);const i=Ur[a.level],c=setTimeout(()=>{r.current.delete(c),n(u=>u.map(f=>f.id===a.id?{...f,phase:"exiting"}:f));const d=setTimeout(()=>{r.current.delete(d),n(u=>u.filter(f=>f.id!==a.id))},Kr);r.current.add(d)},i);r.current.add(c)};return Ne.push(s),()=>{Ne=Ne.filter(a=>a!==s),r.current.forEach(a=>clearTimeout(a)),r.current.clear()}},[]),e.length===0?null:t.jsx("div",{className:"fixed top-[max(1rem,env(safe-area-inset-top))] left-1/2 -translate-x-1/2 z-[100] flex flex-col items-center gap-2 pointer-events-none",children:e.map(s=>{const a=Wr[s.level],o=Yr[s.level];return t.jsxs("div",{className:"pointer-events-auto flex items-center gap-2 rounded-full bg-[var(--panel-bg)] backdrop-blur-[30px] border-[0.5px] border-[var(--panel-border)] shadow-[var(--panel-shadow)] px-4 py-2.5 text-[13px] leading-[16px] text-[var(--label-primary)] select-none transition-all duration-300 ease-out",style:s.phase==="entering"?{opacity:0,transform:"translateY(-8px)"}:s.phase==="exiting"?{opacity:0,transform:"translateY(-4px)"}:{opacity:1,transform:"translateY(0)"},children:[t.jsx(a,{size:14,className:"shrink-0",style:{color:o}}),t.jsx("span",{children:s.message})]},s.id)})})}function Vr({currentModel:e,availableModels:n,onSelect:r}){const a=n&&n.length>0&&r,o=new Map;if(n)for(const c of n){const d=o.get(c.provider)??[];d.push(c),o.set(c.provider,d)}const i=c=>c.provider===e.provider&&c.id===e.id;return t.jsx(tt,{disabled:!a,width:280,align:"left",trigger:({open:c})=>t.jsxs("button",{className:`inline-flex items-center gap-1 px-2 py-1 rounded-[9px] bg-[var(--fill-tertiary)] text-[12px] transition-colors ${a?"hover:bg-[var(--fill-secondary)] hover:text-[var(--label-primary)] cursor-pointer":"cursor-default"} text-[var(--label-secondary)]`,children:[t.jsx("span",{className:"max-w-[140px] truncate select-text",children:e.name||e.id}),a&&t.jsx(Ct,{size:10,className:`transition-transform ${c?"rotate-180":""}`})]}),children:c=>t.jsx("div",{className:"max-h-[320px] overflow-y-auto py-1.5 px-1.5 scrollbar-auto",children:Array.from(o.entries()).map(([d,u],f)=>t.jsxs("div",{children:[f>0&&t.jsx("div",{className:"mx-1 my-1 h-px bg-[var(--separator)]"}),t.jsx("div",{className:"px-2.5 pt-2 pb-1 text-[11px] font-bold text-[var(--label-tertiary)] uppercase select-none",children:d}),u.map(m=>{const g=i(m);return t.jsxs("button",{onClick:()=>{g||r==null||r(m.provider,m.id),c()},className:`w-full text-left px-2.5 py-2 rounded-[8px] flex items-center gap-2 transition-colors select-none mb-0.5 ${g?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[13px] text-[var(--label-primary)] truncate select-text",children:m.name||m.id}),t.jsx("div",{className:"text-[11px] text-[var(--label-tertiary)] truncate select-text",children:m.id})]}),g&&t.jsx(pe,{size:14,className:"text-[var(--color-accent)] flex-shrink-0"})]},`${m.provider}/${m.id}`)})]},d))})})}const Jr=["off","minimal","low","medium","high"];function Xr({currentLevel:e,availableLevels:n,onSelect:r}){const s=!!r,a=n.length>0?n:Jr;return t.jsx(tt,{disabled:!s,width:160,align:"left",trigger:({open:o})=>t.jsxs("button",{className:`inline-flex items-center gap-1 px-2 py-1 rounded-[9px] bg-[var(--fill-tertiary)] text-[12px] transition-colors ${s?"hover:bg-[var(--fill-secondary)] hover:text-[var(--label-primary)] cursor-pointer":"cursor-default"} text-[var(--label-secondary)]`,children:[t.jsx("span",{className:"select-text",children:e}),s&&t.jsx(Ct,{size:10,className:`transition-transform ${o?"rotate-180":""}`})]}),children:o=>t.jsx("div",{className:"py-1.5 px-1.5",children:a.map(i=>{const c=i===e;return t.jsxs("button",{onClick:()=>{c||r==null||r(i),o()},className:`w-full text-left px-2.5 py-2 rounded-[8px] flex items-center gap-2 transition-colors select-none mb-0.5 ${c?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsx("span",{className:"flex-1 text-[13px] text-[var(--label-primary)]",children:i}),c&&t.jsx(pe,{size:14,className:"text-[var(--color-accent)] flex-shrink-0"})]},i)})})})}function Zr({onClose:e,onConfirm:n}){const{t:r}=z(),[s,a]=l.useState(""),o=l.useCallback(()=>{n(s.trim()||void 0)},[s,n]);return t.jsx(X,{title:r("compact.title"),onClose:e,children:t.jsxs("div",{className:"px-5 py-4 space-y-3",children:[t.jsx("p",{className:"text-[13px] leading-[18px] text-[var(--label-secondary)] select-none",children:r("compact.description")}),t.jsx("textarea",{value:s,onChange:i=>a(i.target.value),placeholder:r("compact.placeholder"),rows:3,className:"w-full px-3 py-2 rounded-[10px] bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] leading-[20px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none resize-none focus:border-[var(--color-accent)] transition-colors"}),t.jsxs("div",{className:"flex justify-end gap-2 pt-1",children:[t.jsx("button",{onClick:e,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] text-[var(--label-secondary)] hover:bg-[var(--fill-tertiary)] transition-colors",children:r("common.cancel")}),t.jsx("button",{onClick:o,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] font-medium text-white bg-[var(--color-accent)] hover:opacity-90 active:opacity-80 transition-opacity",children:r("compact.start")})]})]})})}function Qr({ref:e,instance:n,draft:r,onDraftChange:s,onSendMessage:a,onAbort:o,onSetModel:i,onSetThinkingLevel:c,onCompact:d,buttonMode:u,showCompactButton:f,compactDisabled:m,onImageLightbox:g,startBottomFollow:v}){var E;const{t:N}=z(),T=l.useRef(null);l.useImperativeHandle(e,()=>({focus(){const x=T.current;if(!x)return;x.focus();const p=x.value.length;x.selectionStart=x.selectionEnd=p,x.scrollTop=x.scrollHeight}}));const R=l.useRef(null),b=l.useRef(r);b.current=r;const[h,C]=l.useState(!1),j=n==null?void 0:n.status,O=n==null?void 0:n.contextUsage,k=n==null?void 0:n.model,_=n==null?void 0:n.availableModels,y=n==null?void 0:n.thinkingLevel,w=(E=_==null?void 0:_.find(x=>x.provider===(k==null?void 0:k.provider)&&x.id===(k==null?void 0:k.id)))==null?void 0:E.availableThinkingLevels,M=!!O&&O.tokens!=null&&O.percent!=null,P=l.useCallback(x=>{x.style.height="auto";const p=Math.min(x.scrollHeight,150);x.style.height=`${p}px`,x.style.overflowY=x.scrollHeight>150?"auto":"hidden"},[]);l.useLayoutEffect(()=>{T.current&&P(T.current)},[r.text,P]);const $=l.useCallback(x=>{s(p=>({...p,text:x.target.value})),P(x.target)},[s,P]),D=!ue(j)&&(!!r.text.trim()||r.images.length>0),F=l.useCallback(()=>{const x=b.current;if(ue(j)||!x.text.trim()&&x.images.length===0)return;const p=x.images.length?x.images.map(S=>({data:S.data,mimeType:S.mimeType})):void 0;a(x.text.trim(),p),T.current&&(T.current.style.height="auto"),v()},[j,a,v]),W=l.useCallback(x=>{x.nativeEvent.isComposing||x.keyCode===229||x.key==="Enter"&&!x.shiftKey&&(x.preventDefault(),F())},[F]),Y=l.useCallback(x=>{const p=Fr(x.clipboardData);p.length!==0&&(x.preventDefault(),Promise.all(p.map(bt)).then(S=>{s(I=>({...I,images:[...I.images,...S]}))}).catch(S=>{ee(N("eventStream.imageProcessFailed"),"error"),console.error("Image process failed:",S)}))},[s,N]),Z=l.useCallback(x=>{const p=Array.from(x.target.files??[]);p.length!==0&&(Promise.all(p.map(bt)).then(S=>{s(I=>({...I,images:[...I.images,...S]}))}).catch(S=>{ee(N("eventStream.imageProcessFailed"),"error"),console.error("Image process failed:",S)}),x.target.value="")},[s,N]),G=l.useCallback(x=>{s(p=>({...p,images:p.images.filter(S=>S.id!==x)}))},[s]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"glass-panel glass-panel-input px-3 py-2 md:px-4",children:[(j||M)&&t.jsxs("div",{className:"mb-1.5 flex items-center gap-2 px-1 text-[12px] leading-[15px] text-[var(--label-secondary)]",children:[t.jsx(es,{status:j}),M&&t.jsxs("span",{className:"min-w-0 flex items-center gap-1",children:[t.jsx("span",{className:"min-w-0 truncate",children:t.jsx(ts,{contextUsage:O})}),f&&t.jsx("button",{onClick:()=>C(!0),disabled:m,title:N("eventStream.compactContext"),className:"shrink-0 inline-flex items-center justify-center p-0.5 rounded-[4px] text-[var(--label-secondary)] hover:text-[var(--color-accent)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-40 disabled:pointer-events-none",children:t.jsx(bn,{size:12})})]})]}),t.jsxs("div",{className:"flex flex-col overflow-hidden rounded-[14px] border border-[var(--separator)]",children:[r.images.length>0&&t.jsx("div",{className:"flex gap-2 px-3 pt-2 pb-0 overflow-x-auto scrollbar-none md:px-4",children:r.images.map(x=>t.jsxs("div",{className:"relative flex-shrink-0 group",children:[t.jsx("button",{onClick:()=>g(x.previewUrl),className:"block rounded-[8px] overflow-hidden border border-[var(--separator)] hover:border-[var(--color-accent)] transition-colors",children:t.jsx("img",{src:x.previewUrl,alt:"Attached",className:"w-[60px] h-[60px] object-cover",draggable:!1})}),t.jsx("button",{onClick:()=>G(x.id),className:"absolute -top-1 -right-1 w-[14px] h-[14px] rounded-full bg-[var(--badge-bg)] text-[var(--badge-text)] flex items-center justify-center hover:bg-[var(--badge-bg-hover)] transition-colors","aria-label":"Remove image",children:t.jsx(Xe,{size:8})})]},x.id))}),t.jsx("textarea",{ref:T,rows:1,placeholder:N("eventStream.sendPlaceholder"),value:r.text,onChange:$,onKeyDown:W,onPaste:Y,className:"resize-none bg-transparent text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] text-[16px] leading-[24px] px-3 pt-[9px] pb-0 outline-none overflow-hidden md:px-4 md:pt-[10px] md:text-[14px] md:leading-[22px]"}),t.jsxs("div",{className:"flex items-center justify-between px-1.5 pt-[9px] pb-1.5 md:pt-[10px]",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[k&&t.jsx(Vr,{currentModel:k,availableModels:_,onSelect:i}),y&&t.jsx(Xr,{currentLevel:y,availableLevels:w??[],onSelect:c}),t.jsx("button",{onClick:()=>{var x;return(x=R.current)==null?void 0:x.click()},className:"select-none h-[26px] px-1.5 rounded-[6px] flex items-center justify-center text-[var(--label-secondary)] hover:text-[var(--label-primary)] hover:bg-[var(--fill-tertiary)] transition-colors",title:N("eventStream.attachImage"),children:t.jsx(vn,{size:15})}),t.jsx("input",{ref:R,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",multiple:!0,onChange:Z,className:"hidden"})]}),t.jsx("div",{className:"flex-shrink-0",children:u==="stop"?t.jsx("button",{onClick:o,className:"select-none w-[28px] h-[28px] rounded-full bg-red-500 text-white flex items-center justify-center hover:opacity-90 active:opacity-80 transition-opacity",title:N("eventStream.stop"),children:t.jsx(yn,{size:12,fill:"currentColor"})}):t.jsx("button",{onClick:F,disabled:!D,className:`select-none w-[28px] h-[28px] rounded-full flex items-center justify-center transition-opacity ${D?"bg-[var(--color-accent)] text-white hover:opacity-90 active:opacity-80":"bg-[var(--fill-secondary)] text-[var(--label-tertiary)] opacity-50 cursor-default"}`,title:N("eventStream.send"),children:t.jsx(jn,{size:16,strokeWidth:2.5})})})]})]})]}),h&&t.jsx(Zr,{onClose:()=>C(!1),onConfirm:x=>{d(x),C(!1)}})]})}function es({status:e}){const{t:n}=z();if(!e)return null;const r=e==="streaming",s=e==="compacting",a=r?"bg-[color-mix(in_srgb,var(--color-accent)_12%,transparent)] text-[var(--color-accent)]":s?"bg-amber-500/10 text-amber-500":"bg-green-500/10 text-green-500",o=r?"bg-[var(--color-accent)] animate-pulse":s?"bg-amber-500 animate-pulse":"bg-green-500",i=n(r?"eventStream.statusRunning":s?"eventStream.statusCompacting":"eventStream.statusOnline");return t.jsxs("span",{className:`flex shrink-0 items-center gap-1 rounded-full px-1.5 py-0.5 ${a}`,title:i,role:"status","aria-live":"polite","aria-label":i,children:[t.jsx("span",{"aria-hidden":"true",className:`h-2 w-2 rounded-full ${o}`}),t.jsx("span",{className:"text-[11px] font-medium leading-none",children:i})]})}function ts({contextUsage:e}){const{tokens:n,contextWindow:r,percent:s}=e;if(n==null||s==null)return null;const a=s>90?"#ff4245":s>60?"#ff9230":"#30d158",o=i=>{if(i<1e3)return String(i);if(i<1e4)return`${(i/1e3).toFixed(1)}k`;if(i<1e6)return`${Math.round(i/1e3)}k`;const c=i/1e6;return c%1===0?`${c}M`:`${c.toFixed(1)}M`};return t.jsxs("span",{className:"select-text",style:{color:a},children:[o(n)," / ",o(r)," (",Math.round(s),"%)"]})}let ns=0;function Ht(e,n){return`${e}:${n}:${ns++}`}function Be(e,n,r){return n.id||n.__renderKey?n:{...n,__renderKey:Ht(e,r)}}function rs(e,n){const{t:r}=z(),s=K(p=>p.send),a=K(p=>p.subscribe),o=K(p=>p.connectionState==="connected"),[i,c]=l.useState([]),[d,u]=l.useState(null),f=l.useRef(null),[m,g]=l.useState("idle"),[v,N]=l.useState(null),[T,R]=l.useState(!1),[b,h]=l.useState([]),[C,j]=l.useState(!1),[O,k]=l.useState(!1),[_,y]=l.useState(0),w=l.useRef(0),M=l.useRef(i);M.current=i;const P=l.useRef(m);P.current=m;const $=l.useRef(T);$.current=T;const D=l.useCallback(()=>{c([]),u(null),g("refreshing"),N(null),R(!1),h([]),j(!1),k(!1),y(0)},[]);l.useEffect(()=>a(p=>{switch(p.type){case"forwarded_event":{if(p.payload.instanceId!==e)return;Z(e,p.payload.event,p.payload.data);break}case"history":{if(p.payload.instanceId!==e)return;const S=p.payload.messages,I=p.payload.hasMore??!1;G(e,S,I);break}case"session_list":{if(p.payload.instanceId!==e)return;w.current>0?h(S=>[...S,...p.payload.sessions]):h(p.payload.sessions),k(p.payload.hasMore??!1),y(p.payload.total??p.payload.sessions.length),j(!1);break}case"error":{console.error("[Paimon]",p.payload.message),g("error"),N(p.payload.message);break}case"instance_error":{if(p.payload.instanceId!==e)return;const S=p.payload.action?`error.action.${p.payload.action}`:null,I=S?r(S,{message:p.payload.message,defaultValue:p.payload.message}):p.payload.message;ee(I,"error");break}}}),[e,a]),l.useEffect(()=>{if(o)return D(),s({type:"subscribe",payload:{instanceId:e}}),s({type:"get_history",payload:{instanceId:e}}),()=>{s({type:"unsubscribe",payload:{instanceId:e}})}},[e,o,s,D]);const F=l.useRef(n==null?void 0:n.sessionId),W=l.useRef(e);l.useEffect(()=>{const p=n==null?void 0:n.sessionId;if(e!==W.current){W.current=e,p!==void 0&&(F.current=p);return}F.current!==void 0&&p!==void 0&&p!==F.current&&(D(),s({type:"get_history",payload:{instanceId:e}})),p!==void 0&&(F.current=p)},[n==null?void 0:n.sessionId,e,s,D]);const Y=l.useRef(n==null?void 0:n.status);l.useEffect(()=>{const p=n==null?void 0:n.status;Y.current==="compacting"&&p!=="compacting"&&(D(),s({type:"get_history",payload:{instanceId:e}})),Y.current=p},[n==null?void 0:n.status,e,s,D]);function Z(p,S,I){const B=I;switch(S){case"message_start":{const A=B.message;if(!A||A.role!=="assistant")break;const H=Be(p,{type:"message",timestamp:new Date().toISOString(),message:A},"streaming");f.current=H.__renderKey??H.id??null,u(H);break}case"message_update":{const A=B.message;if(!A)break;u(H=>H?{...H,message:A}:Be(p,{type:"message",timestamp:new Date().toISOString(),message:A},"streaming"));break}case"message_end":{const A=B.message;if(A){const H=f.current??Ht(p,"live"),oe={type:"message",timestamp:new Date().toISOString(),message:A,__renderKey:H};c(te=>[...te,oe])}f.current=null,u(null);break}}}function G(p,S,I){const B=S.map(A=>Be(p,A,"history"));P.current==="loadingMore"?c(A=>[...B,...A]):c(B),R(I),g("idle"),N(null)}const E=l.useCallback(()=>{if(!$.current||P.current!=="idle")return;const p=M.current.length;g("loadingMore"),s({type:"get_history",payload:{instanceId:e,offset:p}})},[e,s]),x=l.useCallback(p=>{const S=(p==null?void 0:p.offset)??0;w.current=S,S===0&&h([]),j(!0),s({type:"list_sessions",payload:{instanceId:e,offset:S,limit:p==null?void 0:p.limit,filter:p==null?void 0:p.filter}})},[e,s]);return{entries:d?[...i,d]:i,streamingEntry:d,isStreaming:d!==null,loadState:m,errorMessage:v,hasMore:T,sessionList:b,sessionListLoading:C,sessionHasMore:O,sessionTotal:_,loadMore:E,requestSessionList:x}}const ss=.5;function as({topChromeHeight:e,bottomChromeHeight:n,bottomSafeGap:r=0}){const s=Math.max(0,n-r),a=Math.max(40,s+12);return{paddingTop:Math.max(24,e-4),paddingBottom:a,scrollButtonBottom:r+a}}function os({previousScrollTop:e,previousScrollHeight:n,nextScrollHeight:r}){return e+r-n}function ls(e){return e==="streaming"||e==="compacting"?"stop":"send"}function Te(e){return Math.max(0,e)}function is({isAtBottom:e,isLoadingMore:n,distanceToBottom:r,overlap:s,force:a=!1,scrollToBottom:o}){return!e||n||!a&&r<=ss&&s<=0?!1:(o(),!0)}function cs({rawScrollTop:e,hasMore:n,canLoadMore:r,isLoadingMore:s,isSuppressed:a}){return e>=0&&Te(e)<100&&n&&r&&!s&&!a}const ds=350,he="data-entry-key",qt=.5,us=3,ps=2e3;function nt(e){return e.getAttribute(he)??void 0}function Kt(e,n){const r=n.closest(`[${he}]`);return!r||!e.contains(r)?null:r}function Ut(e,n){const r=e.querySelectorAll(`[${he}]`);for(const s of r)if(nt(s)===n)return s;return null}function ce(e,n){return n.getBoundingClientRect().top-e.top}function xs(e){const n=e.getBoundingClientRect(),r=n.top+8,s=e.querySelectorAll(`[${he}]`);for(const a of s){const o=a.getBoundingClientRect();if(o.bottom>r&&o.top<n.bottom)return a}return null}function fs(e){const n={fallbackScrollTop:Te(e.scrollTop),fallbackScrollHeight:e.scrollHeight},r=e.getBoundingClientRect(),s=xs(e);if(!s)return n;const a=nt(s);if(!a)return n;const o=s.getBoundingClientRect(),i=Math.min(Math.max(r.top+12,o.top+8),Math.min(o.bottom-1,r.bottom-1)),c=[{x:r.left+r.width/2,y:i},{x:r.left+24,y:i},{x:r.right-24,y:i}];for(const d of c){const u=document.elementsFromPoint(d.x,d.y);for(const f of u){if(f===e||!e.contains(f))continue;const m=Kt(e,f);if(!m||m!==s)continue;const g=f.getBoundingClientRect();if(!(g.bottom<=r.top||g.top>=r.bottom))return{...n,entryKey:a,element:f,elementTop:ce(r,f),entryTop:ce(r,s)}}}return{...n,entryKey:a,entryTop:ce(r,s)}}function vt(e,n){return Math.abs(n)<=qt?!1:(e.scrollTop+=n,!0)}function yt(e,n,{allowDiffFallback:r}){const s=e.getBoundingClientRect();if(n.element&&n.elementTop!=null&&n.element.isConnected&&e.contains(n.element)){const a=Kt(e,n.element),o=a?nt(a):void 0;if(!n.entryKey||o===n.entryKey){const i=ce(s,n.element)-n.elementTop;return{mode:"deep",delta:i,adjusted:vt(e,i)}}}if(n.entryKey&&n.entryTop!=null){const a=Ut(e,n.entryKey);if(a){const o=ce(s,a)-n.entryTop;return{mode:"entry",delta:o,adjusted:vt(e,o)}}}if(r){const a=os({previousScrollTop:n.fallbackScrollTop,previousScrollHeight:n.fallbackScrollHeight,nextScrollHeight:e.scrollHeight}),o=a-e.scrollTop;return e.scrollTop=a,{mode:"diff",delta:o,adjusted:Math.abs(o)>qt}}return{mode:"none",delta:0,adjusted:!1}}function ms({scrollRef:e,contentRef:n,bottomChromeRef:r,entries:s,entriesRef:a,instanceId:o,hasMore:i,shouldScrollToBottom:c,onScrollToBottomHandled:d,onLoadMore:u,bottomChromeHeight:f,bottomSafeGap:m}){const g=l.useRef(!0),[v,N]=l.useState(!1),T=l.useRef(!1),R=l.useRef(!1),b=l.useRef(null),h=l.useRef(null),C=l.useRef(!1),j=l.useRef(null),O=l.useRef(s.length),k=l.useRef(void 0),_=l.useRef(0),y=l.useRef(null),w=l.useCallback(E=>{b.current!=null&&cancelAnimationFrame(b.current),R.current=!0,T.current=!0,E(),b.current=requestAnimationFrame(()=>{R.current=!1,T.current=!1,b.current=null})},[]),M=l.useCallback(()=>{var x;const E=y.current;E&&(E.rafId!=null&&cancelAnimationFrame(E.rafId),(x=E.observer)==null||x.disconnect(),y.current=null)},[]),P=l.useCallback(({force:E=!1}={})=>{const x=e.current,p=n.current,S=r.current;if(!x||!p||!S)return!1;const I=p.querySelectorAll(`[${he}]`),B=I[I.length-1],A=B==null?void 0:B.getBoundingClientRect(),H=S.getBoundingClientRect(),oe=x.scrollHeight-Te(x.scrollTop)-x.clientHeight,te=A?A.bottom-H.top:0;return is({isAtBottom:g.current,isLoadingMore:C.current,distanceToBottom:oe,overlap:te,force:E,scrollToBottom:()=>{M(),w(()=>{x.scrollTop=x.scrollHeight}),N(!1)}})},[e,n,r,w,M]),$=l.useCallback(()=>{var E;(E=h.current)==null||E.call(h),h.current=null},[]),D=l.useCallback(()=>{$();const E=performance.now();let x=null,p=!1;const S=(I=performance.now())=>{x=null,!(p||I-E>=ps)&&(!g.current||C.current||(P(),x=requestAnimationFrame(S)))};S(),h.current=()=>{p=!0,x!=null&&(cancelAnimationFrame(x),x=null)}},[P,$]);l.useLayoutEffect(()=>{C.current||P()},[f,m,P]),l.useLayoutEffect(()=>{const E=n.current;if(!E||typeof ResizeObserver>"u")return;const x=new ResizeObserver(()=>{P()});return x.observe(E),()=>x.disconnect()},[o,n,P]);const F=l.useCallback(()=>{const E=e.current,x=y.current;if(!E||!x)return;let p={mode:"none"};w(()=>{p=yt(E,x.snapshot,{allowDiffFallback:!1})}),p.mode==="none"&&M()},[e,w,M]),W=l.useCallback(()=>{const E=y.current;!E||E.rafId!=null||(E.rafId=requestAnimationFrame(()=>{const x=y.current;!x||x!==E||(x.rafId=null,F())}))},[F]),Y=l.useCallback(E=>{const x=e.current,p=n.current;if(!x||!p||!E.entryKey)return;M();const S={snapshot:E,observer:null,rafId:null,warmupFrame:0};if(y.current=S,typeof ResizeObserver<"u"){const B=new ResizeObserver(()=>{W()});B.observe(p);const A=Ut(x,E.entryKey);A&&A!==p&&B.observe(A),S.observer=B}const I=()=>{const B=y.current;!B||B!==S||B.warmupFrame>=us||(B.rafId=requestAnimationFrame(()=>{const A=y.current;!A||A!==S||(A.rafId=null,A.warmupFrame+=1,F(),I())}))};I()},[e,n,F,W,M]);l.useLayoutEffect(()=>(C.current=!1,j.current=null,k.current=void 0,_.current=0,O.current=a.current.length,g.current=!0,N(!1),()=>{$(),M(),b.current!=null&&(cancelAnimationFrame(b.current),b.current=null),R.current=!1,T.current=!1,C.current=!1,j.current=null,k.current=void 0,_.current=0}),[o,a,M,$]),l.useLayoutEffect(()=>{e.current&&(C.current||P())},[s,o,e,P]),l.useLayoutEffect(()=>{if(!c)return;if(!e.current){d();return}g.current=!0,P({force:!0}),N(!1),d()},[c,s,e,P,d]),l.useLayoutEffect(()=>{const E=e.current;if(C.current&&E&&s.length>O.current){const x=s[0]?Ue(s[0]):void 0;if(!k.current||x!==k.current){const S=j.current;let I={mode:"none"};S&&w(()=>{I=yt(E,S,{allowDiffFallback:!0})}),_.current=performance.now()+ds,S&&S.entryKey&&I.mode!=="none"&&Y(S),C.current=!1,j.current=null,k.current=void 0}else j.current&&(j.current={...j.current,fallbackScrollHeight:E.scrollHeight})}C.current&&!i&&(C.current=!1,j.current=null,k.current=void 0),O.current=s.length},[s,i,o,e,w,Y]);const Z=l.useCallback(()=>{const E=e.current;if(!E)return;const x=E.scrollTop,p=Te(x),S=performance.now()<_.current;if(x<0||T.current||R.current)return;y.current&&M();const I=E.scrollHeight-p-E.clientHeight<60;if(g.current=I,I||$(),N(!I),cs({rawScrollTop:x,hasMore:i,canLoadMore:!!u,isLoadingMore:C.current,isSuppressed:S})&&u){$(),M(),C.current=!0;const A=a.current,H=fs(E);j.current=H,k.current=A[0]?Ue(A[0]):void 0,u()}},[e,a,i,u,M,$]),G=l.useCallback(()=>{e.current&&(M(),w(()=>{e.current.scrollTop=e.current.scrollHeight}),g.current=!0,N(!1))},[e,w,M]);return{handleScroll:Z,scrollToBottom:G,showScrollBtn:v,startBottomFollow:D}}function hs(e,n,r,s){const{t:a}=z(),o=Se(u=>u.setDraft),{canReEdit:i,userContent:c}=l.useMemo(()=>{var f,m;if(r!=="idle"||n.length===0)return{canReEdit:!1,userContent:null};const u=n[n.length-1];if(u.type!=="message"||((f=u.message)==null?void 0:f.role)!=="assistant"||u.message.stopReason!=="aborted")return{canReEdit:!1,userContent:null};for(let g=n.length-2;g>=0;g--){const v=n[g];if(v.type==="message"&&((m=v.message)==null?void 0:m.role)==="user")return{canReEdit:!0,userContent:v.message.content}}return{canReEdit:!1,userContent:null}},[n,r]),d=l.useCallback(()=>{if(!i||c==null)return;const u=Se.getState().drafts.get(e)??et;if(u.text.trim()||u.images.length>0){ee(a("reEdit.draftNotEmpty"),"warning");return}const f=gs(c);Ge.flushSync(()=>{o(e,f)}),s==null||s()},[i,c,e,o,a,s]);return i?d:void 0}function gs(e){let n="";const r=[];if(typeof e=="string")n=e;else if(Array.isArray(e)){const s=[];for(const a of e)if(a.type==="text")s.push(a.text);else if(a.type==="image"){const o=a,i=Dt();r.push({id:i,data:o.data,mimeType:o.mimeType,previewUrl:`data:${o.mimeType};base64,${o.data}`})}n=s.join("")}return{text:n,images:r}}function bs(){const{t:e}=z(),{id:n}=wn(),r=n,s=K(L=>L.send),a=re(Un(r)),o=Se(L=>L.drafts.get(r)??et),i=Se(L=>L.setDraft),{entries:c,isStreaming:d,loadState:u,errorMessage:f,hasMore:m,sessionList:g,sessionListLoading:v,sessionHasMore:N,sessionTotal:T,loadMore:R,requestSessionList:b}=rs(r,a),h=l.useCallback(L=>{i(r,L)},[r,i]),C=l.useCallback((L,U)=>{s({type:"prompt",payload:{instanceId:r,message:L,images:U!=null&&U.length?U:void 0}}),i(r,{text:"",images:[]})},[r,s,i]),j=l.useCallback(()=>{s({type:"abort",payload:{instanceId:r}})},[r,s]),O=l.useCallback((L,U)=>{s({type:"set_model",payload:{instanceId:r,provider:L,id:U}})},[r,s]),k=l.useCallback(L=>{s({type:"set_thinking_level",payload:{instanceId:r,level:L}})},[r,s]),_=l.useCallback(()=>{b({offset:0})},[b]),y=l.useCallback((L,U)=>{b({offset:L,filter:U})},[b]),w=l.useCallback(L=>{b({offset:0,filter:L||void 0})},[b]),M=l.useCallback(()=>{s({type:"new_session",payload:{instanceId:r}})},[r,s]),P=l.useCallback(L=>{s({type:"switch_session",payload:{instanceId:r,path:L}})},[r,s]),$=l.useCallback(L=>{s({type:"compact",payload:{instanceId:r,customInstructions:L}})},[r,s]),D=l.useRef(null),F=hs(r,c,a==null?void 0:a.status,()=>{var L;(L=D.current)==null||L.focus()}),W=l.useRef(null),Y=l.useRef(null),Z=l.useRef(null),G=l.useRef(null),E=l.useRef(null),[x,p]=l.useState(null),S=l.useRef(c);S.current=c;const I=u==="refreshing",B=ls(a==null?void 0:a.status),A=c.length>0&&c[c.length-1].type==="compaction",H=ue(a==null?void 0:a.status),[oe,te]=l.useState(!1),Yt=l.useCallback(()=>{te(!1)},[]),rt=l.useRef(u);l.useLayoutEffect(()=>{rt.current==="refreshing"&&u==="idle"&&te(!0),rt.current=u},[u]);const[Gt,Vt]=l.useState(64),[st,Jt]=l.useState(96),[at,Xt]=l.useState(12),Ie=as({topChromeHeight:Gt,bottomChromeHeight:st,bottomSafeGap:at});l.useLayoutEffect(()=>{const L=(Ae,nn)=>{if(!Ae)return()=>{};const lt=()=>{nn(Math.ceil(Ae.getBoundingClientRect().height))};if(lt(),typeof ResizeObserver>"u")return()=>{};const it=new ResizeObserver(lt);return it.observe(Ae),()=>it.disconnect()},U=L(Z.current,Vt),ge=L(G.current,Jt),be=L(E.current,Xt);return()=>{U(),ge(),be()}},[r]);const{handleScroll:Zt,scrollToBottom:Qt,showScrollBtn:en,startBottomFollow:tn}=ms({scrollRef:W,contentRef:Y,bottomChromeRef:G,entries:c,entriesRef:S,instanceId:r,hasMore:m,shouldScrollToBottom:oe,onScrollToBottomHandled:Yt,onLoadMore:R,bottomChromeHeight:st,bottomSafeGap:at}),ot={title:(a==null?void 0:a.cwd.split("/").pop())||(a==null?void 0:a.cwd)||"",cwd:a==null?void 0:a.cwd,homedir:a==null?void 0:a.homedir,gitBranch:a==null?void 0:a.gitBranch,actions:t.jsx(Or,{sessions:g,loading:v,hasMore:N,total:T,disabled:ue(a==null?void 0:a.status),onOpen:_,onNewSession:M,onSwitchSession:P,onLoadMore:y,onFilterChange:w})};return t.jsxs("div",{className:"relative flex-1 min-w-0 overflow-hidden",children:[t.jsxs("main",{className:"absolute inset-0 flex min-h-0 flex-col overflow-hidden",children:[t.jsx("div",{className:"pointer-events-none absolute left-0 right-0 top-0 z-20 px-3 pt-3 md:px-4 md:pt-4",children:t.jsxs("div",{ref:Z,className:"glass-panel pointer-events-auto mx-auto w-full max-w-[920px] px-3 py-2 md:px-4 md:py-2.5",role:"region","aria-label":"Instance info",children:[t.jsx("div",{className:"hidden md:flex",children:t.jsx(ht,{...ot})}),t.jsx(Ft,{children:t.jsx(ht,{...ot})})]})}),t.jsx("div",{ref:W,onScroll:Zt,style:{overflowAnchor:"none"},"aria-busy":I,className:"absolute bottom-[var(--bottom-safe-gap)] left-0 right-0 top-6 overflow-y-auto scrollbar-auto px-3 md:bottom-0 md:top-7 md:px-4",children:t.jsxs("div",{ref:Y,style:{paddingTop:Ie.paddingTop,paddingBottom:Ie.paddingBottom},className:"mx-auto max-w-[920px] space-y-2",children:[u==="loadingMore"&&t.jsx("div",{className:"text-center text-[var(--label-tertiary)] text-[11px] py-2 select-none",children:"Loading earlier messages..."}),I?t.jsx(vs,{}):u==="error"?t.jsxs("div",{className:"mx-auto mt-8 max-w-[520px] rounded-[12px] border border-[var(--separator)] bg-[var(--fill-card)] px-4 py-3 text-center",children:[t.jsx("div",{className:"text-[13px] text-[var(--label-primary)] select-none",children:"Failed to load conversation"}),f&&t.jsx("div",{className:"mt-1 text-[12px] text-[var(--label-secondary)] break-words select-text",children:f})]}):c.length===0&&!m?t.jsx("div",{className:"text-center text-[var(--label-tertiary)] text-[12px] pt-8 select-none",children:"No messages yet"}):c.map((L,U)=>{const ge=Ue(L),be=U===c.length-1;return t.jsx("div",{"data-entry-key":ge,children:t.jsx(Nr,{entry:L,entries:c,isLast:be,isStreaming:d,onReEdit:be?F:void 0})},ge)})]})}),en&&t.jsx("div",{style:{bottom:Ie.scrollButtonBottom},className:"absolute left-1/2 z-30 -translate-x-1/2",children:t.jsx("button",{onClick:Qt,className:"select-none w-9 h-9 rounded-full bg-[var(--btn-solid)] border border-[var(--separator)] text-[var(--label-secondary)] flex items-center justify-center hover:bg-[var(--btn-solid-hover)] active:scale-95 transition-all shadow-[0_4px_20px_rgba(0,0,0,0.12)]",title:e("eventStream.scrollToBottom"),children:t.jsx(Nn,{size:16})})}),t.jsx("div",{ref:G,className:"pointer-events-none absolute bottom-0 left-0 right-0 z-20 px-3 pb-0 md:px-4",children:t.jsxs("div",{className:"pointer-events-auto mx-auto w-full max-w-[920px]",children:[t.jsx(Qr,{ref:D,instance:a,draft:o,onDraftChange:h,onSendMessage:C,onAbort:j,onSetModel:O,onSetThinkingLevel:k,onCompact:$,buttonMode:B,showCompactButton:!A,compactDisabled:H,onImageLightbox:p,startBottomFollow:tn}),t.jsx("div",{ref:E,className:"h-[var(--bottom-safe-gap)] md:h-0","aria-hidden":"true"})]})})]}),x&&t.jsx(Bt,{src:x,onClose:()=>p(null)})]})}function vs(){return t.jsx("div",{className:"space-y-3 pt-3 select-none","aria-label":"Loading conversation",children:[0,1,2,3].map(e=>t.jsxs("div",{className:"space-y-1.5 animate-pulse",children:[t.jsx("div",{className:"h-3 w-20 rounded-full bg-[var(--fill-tertiary)]"}),t.jsxs("div",{className:"max-w-[680px] space-y-1.5 rounded-[10px] border border-[var(--separator)] bg-[var(--fill-card)] p-3",children:[t.jsx("div",{className:"h-3 w-[82%] rounded-full bg-[var(--fill-secondary)]"}),t.jsx("div",{className:"h-3 w-[64%] rounded-full bg-[var(--fill-tertiary)]"})]})]},e))})}function ys(){const{t:e}=z(),n=Qe();return t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsxs("div",{className:"text-center select-none",children:[t.jsx("img",{src:n,alt:"Paimon",className:"w-16 h-16 mx-auto mb-4 opacity-80"}),t.jsx("div",{className:"text-[14px] text-[var(--label-tertiary)] tracking-wide",children:e("eventStream.tagline")})]})})}function js(){return t.jsx("div",{className:"relative flex-1 min-w-0 overflow-hidden flex flex-col",children:t.jsx(kn,{})})}const ws={common:{cancel:"取消",confirm:"确认",loading:"加载中…",online:"在线",offline:"离线"},login:{subtitle:"输入 Access Token 以连接",placeholder:"Access Token",invalidToken:"Token 无效,请检查后重试。",connect:"连接",verifying:"验证中…",tokenHint:"Token 可在 <1>~/.paimon/hub.json</1> 中找到"},sidebar:{newInstance:"新建实例",machine_one:"{{count}} 台机器",machine_other:"{{count}} 台机器",instance_one:"{{count}} 个实例",instance_other:"{{count}} 个实例",noInstances:"暂无 pi 实例连接",settings:"设置",shutdown:"退出实例",shutdownBusy:"实例正在执行中,请等待完成后再退出",statusStreaming:"生成中",statusCompacting:"压缩中",statusIdle:"空闲"},eventStream:{tagline:"守望 · 交互 · 掌控",sendPlaceholder:"发送消息…",scrollToBottom:"滚到底部",stop:"停止",send:"发送",attachImage:"添加图片",imageProcessFailed:"图片处理失败,请检查图片格式",statusRunning:"执行中",statusCompacting:"压缩中",statusOnline:"在线",compactContext:"压缩上下文",instanceNotFound:"实例不存在"},compact:{title:"压缩上下文",description:"压缩将总结旧的对话内容以释放上下文空间。可选填自定义提示词来指定压缩时关注的方向。",placeholder:"例如:重点保留关于数据库设计的讨论…",start:"开始压缩"},settings:{title:"设置",appearance:"外观",theme:"主题",themeLight:"浅色",themeDark:"深色",themeSystem:"系统",background:"背景",bgMist:"雾",bgAurora:"极光",bgEmber:"余烬",language:"语言",langZhCN:"简体中文",langEn:"English"},notification:{title:"通知",label:"任务完成通知",on:"开启",off:"关闭",denied:"通知权限已被浏览器拒绝,请在浏览器设置中允许",taskComplete:"✅ {{name}} 任务完成"},newInstance:{title:"新建实例",edgeNode:"Edge 节点",noEdges:"没有可用的 Edge 节点",workingDir:"工作目录",pathPlaceholder:"/path/to/your/project",create:"创建",creating:"创建中…",truncatedHint:"输入更多字符以缩小范围…",fetchEdgeError:"获取 Edge 列表失败",noEdgeSelected:"未选择 Edge 节点",requestTimeout:"请求超时",networkError:"网络错误",requestFailed:"请求失败 (HTTP {{status}})"},session:{title:"Sessions",new:"新建",filter:"筛选…",noMatch:"无匹配的 Session",noPrevious:"暂无历史 Session",empty:"空 Session",messageCount_one:"{{count}} 条消息",messageCount_other:"{{count}} 条消息",timeJustNow:"刚刚"},entries:{contextCompacted:"上下文已压缩",branchSummary:"分支摘要",thinking:"思考",thinkingStreaming:"思考中...",running:"执行中...",aborted:"已终止",copied:"已复制",copy:"复制",result:"结果",params:"参数"},reEdit:{button:"重新编辑",draftNotEmpty:"输入框已有内容,请先清空"},error:{title:"错误详情",message:"错误信息",type:"错误类型",requestId:"请求 ID",action:{compact:"压缩失败:{{message}}"}}},Ns={common:{cancel:"Cancel",confirm:"Confirm",loading:"Loading…",online:"Online",offline:"Offline"},login:{subtitle:"Enter access token to connect",placeholder:"Access Token",invalidToken:"Invalid token. Please check and try again.",connect:"Connect",verifying:"Verifying…",tokenHint:"Find your token in <1>~/.paimon/hub.json</1>"},sidebar:{newInstance:"New instance",machine_one:"{{count}} machine",machine_other:"{{count}} machines",instance_one:"{{count}} instance",instance_other:"{{count}} instances",noInstances:"No pi instances connected",settings:"Settings",shutdown:"Shutdown instance",shutdownBusy:"Instance is running, please wait before shutting down",statusStreaming:"Streaming",statusCompacting:"Compacting",statusIdle:"Idle"},eventStream:{tagline:"Watch · Interact · Control",sendPlaceholder:"Send a message...",scrollToBottom:"Scroll to bottom",stop:"Stop",send:"Send",attachImage:"Attach image",imageProcessFailed:"Image processing failed, please check the format",statusRunning:"Running",statusCompacting:"Compacting",statusOnline:"Online",compactContext:"Compact context",instanceNotFound:"Instance not found"},compact:{title:"Compact Context",description:"Compaction summarizes older conversation to free up context space. Optionally provide custom instructions to guide what to focus on.",placeholder:"e.g. Keep the discussion about database design…",start:"Start compaction"},settings:{title:"Settings",appearance:"Appearance",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",background:"Background",bgMist:"Mist",bgAurora:"Aurora",bgEmber:"Ember",language:"Language",langZhCN:"简体中文",langEn:"English"},notification:{title:"Notification",label:"Task Completion Notification",on:"On",off:"Off",denied:"Notification permission denied. Please allow in browser settings",taskComplete:"✅ {{name}} task completed"},newInstance:{title:"New Instance",edgeNode:"Edge Node",noEdges:"No available Edge nodes",workingDir:"Working Directory",pathPlaceholder:"/path/to/your/project",create:"Create",creating:"Creating…",truncatedHint:"Type more to narrow results…",fetchEdgeError:"Failed to fetch edge list",noEdgeSelected:"No edge selected",requestTimeout:"Request timed out",networkError:"Network error",requestFailed:"Request failed (HTTP {{status}})"},session:{title:"Sessions",new:"New",filter:"Filter…",noMatch:"No matching sessions",noPrevious:"No previous sessions",empty:"Empty session",messageCount_one:"{{count}} message",messageCount_other:"{{count}} messages",timeJustNow:"just now"},entries:{contextCompacted:"Context compacted",branchSummary:"Branch summary",thinking:"Thinking",thinkingStreaming:"Thinking...",running:"Running...",aborted:"Aborted",copied:"Copied",copy:"Copy",result:"Result",params:"Parameters"},reEdit:{button:"Edit",draftNotEmpty:"Input is not empty, please clear first"},error:{title:"Error Details",message:"Error message",type:"Error type",requestId:"Request ID",action:{compact:"Compaction failed: {{message}}"}}},Wt="paimon:language";function ks(){const e=localStorage.getItem(Wt);return e==="zh-CN"||e==="en"?e:"zh-CN"}function Ss(e){localStorage.setItem(Wt,e),Ve.changeLanguage(e)}Ve.use(Sn).init({resources:{"zh-CN":{translation:ws},en:{translation:Ns}},lng:ks(),fallbackLng:"zh-CN",interpolation:{escapeValue:!1}});function Fe({options:e,value:n,onChange:r}){return t.jsx("div",{className:"flex rounded-[8px] bg-[var(--fill-secondary)] p-[2px] select-none",children:e.map(s=>t.jsx("button",{onClick:()=>r(s.value),className:`px-3 py-1.5 rounded-[6px] text-[13px] leading-[18px] transition-all ${n===s.value?"bg-[var(--panel-bg)] text-[var(--label-primary)] font-semibold shadow-sm backdrop-blur-sm":"text-[var(--label-secondary)] font-normal hover:text-[var(--label-primary)]"}`,children:s.label},s.value))})}function ye({label:e,children:n,showSeparator:r=!0}){return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center justify-between px-4 py-3 select-none",children:[t.jsx("span",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)]",children:e}),n]}),r&&t.jsx("div",{className:"ml-4 border-b border-[var(--separator)]"})]})}function Cs({value:e,onChange:n,options:r}){return t.jsx("div",{className:"flex items-center gap-3 select-none",children:r.map(s=>t.jsxs("button",{onClick:()=>n(s.value),className:"flex flex-col items-center gap-1",children:[t.jsx("div",{className:`w-7 h-7 rounded-full transition-all ${e===s.value?"ring-2 ring-[var(--color-accent)] ring-offset-1":"hover:scale-110"}`,style:{background:`conic-gradient(${s.colors.join(", ")})`}}),t.jsx("span",{className:`text-[12px] leading-[16px] ${e===s.value?"text-[var(--label-primary)] font-semibold":"text-[var(--label-secondary)] font-normal"}`,children:s.label})]},s.value))})}function Es(){const{t:e,i18n:n}=z(),[r,s]=Gn(),[a,o]=_t(),[i,c]=Jn(),d=[{value:"light",label:e("settings.themeLight")},{value:"dark",label:e("settings.themeDark")},{value:"system",label:e("settings.themeSystem")}],u=[{value:"mist",label:e("settings.bgMist"),colors:["#e8f0fe","#f5e6f0","#e6f0f5","#f0f5e6"]},{value:"aurora",label:e("settings.bgAurora"),colors:["#a8d8ea","#aa96da","#8fd3c4","#c4a8d8"]},{value:"ember",label:e("settings.bgEmber"),colors:["#f8d4b0","#f0b0c0","#f8e0a0","#e8c0d0"]}],f=[{value:"zh-CN",label:e("settings.langZhCN")},{value:"en",label:e("settings.langEn")}],m=[{value:"on",label:e("notification.on")},{value:"off",label:e("notification.off")}];return t.jsx("div",{className:"flex-1 flex items-start justify-center p-4 md:p-6 overflow-y-auto scrollbar-auto",children:t.jsxs("div",{className:"w-full max-w-[480px]",children:[t.jsx(Ft,{title:e("settings.title")}),t.jsx("h1",{className:"hidden md:block text-[22px] font-semibold text-[var(--label-primary)] mb-6 px-4 select-none",children:e("settings.title")}),t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 px-4 select-none",children:e("settings.appearance")}),t.jsxs("section",{className:"glass-panel overflow-hidden",children:[t.jsx(ye,{label:e("settings.theme"),children:t.jsx(Fe,{options:d,value:r,onChange:s})}),t.jsx(ye,{label:e("settings.background"),showSeparator:!1,children:t.jsx(Cs,{value:a,onChange:o,options:u})})]}),t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 mt-6 px-4 select-none",children:e("settings.language")}),t.jsx("section",{className:"glass-panel overflow-hidden",children:t.jsx(ye,{label:e("settings.language"),showSeparator:!1,children:t.jsx(Fe,{options:f,value:n.language,onChange:Ss})})}),Ot&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"text-[14px] leading-[20px] font-semibold text-[var(--label-primary)] mb-2 mt-6 px-4 select-none",children:e("notification.title")}),t.jsx("section",{className:"glass-panel overflow-hidden",children:t.jsx(ye,{label:e("notification.label"),showSeparator:!1,children:t.jsx(Fe,{options:m,value:i?"on":"off",onChange:async g=>{g==="on"?await Notification.requestPermission()==="granted"?c(!0):ee(e("notification.denied"),"warning"):c(!1)}})})})]})]})})}async function Ye(e,n){const r=Tt(),s=new Headers(n==null?void 0:n.headers);r&&s.set("Authorization",`Bearer ${r}`);const a=await fetch(e,{...n,headers:s});return a.status===401&&(Rt(),window.location.reload()),a}function Ts({value:e,onChange:n,edgeId:r,disabled:s=!1,autoFocus:a=!1,onSubmit:o}){const{t:i}=z(),[c,d]=l.useState([]),[u,f]=l.useState(!1),[m,g]=l.useState(!1),[v,N]=l.useState(-1),[T,R]=l.useState(!1),b=l.useRef(null),h=l.useRef(null),C=l.useRef(null),j=l.useRef(null);l.useEffect(()=>()=>{var y;(y=C.current)==null||y.abort()},[]),l.useEffect(()=>{var y;a&&((y=b.current)==null||y.focus())},[a]);const O=l.useCallback(async(y,w)=>{C.current&&C.current.abort();const M=new AbortController;C.current=M,g(!0);try{const $=await(await Ye(`/api/edges/${encodeURIComponent(y)}/browse?path=${encodeURIComponent(w)}`,{signal:M.signal})).json();if(M.signal.aborted)return;$.error?(d([]),f(!1),R(!1)):(d($.entries??[]),f($.truncated??!1),R(($.entries??[]).length>0||$.truncated)),N(-1)}catch{M.signal.aborted||(d([]),R(!1))}finally{M.signal.aborted||g(!1)}},[]);l.useEffect(()=>{if(!r||!e||!e.startsWith("/")){d([]),R(!1);return}return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{O(r,e)},250),()=>{j.current&&clearTimeout(j.current)}},[e,r,O]);const k=l.useCallback(y=>{var $;const P=(e.endsWith("/")?e:e.substring(0,e.lastIndexOf("/")+1))+y.name+"/";n(P),N(-1),($=b.current)==null||$.focus()},[e,n]),_=l.useCallback(y=>{if(T&&c.length>0){if(y.key==="ArrowDown"){y.preventDefault(),N(w=>w<c.length-1?w+1:0);return}if(y.key==="ArrowUp"){y.preventDefault(),N(w=>w>0?w-1:c.length-1);return}if(y.key==="Tab"){y.preventDefault(),v>=0&&v<c.length?k(c[v]):c.length===1&&k(c[0]);return}if(y.key==="Enter"&&v>=0&&v<c.length){y.preventDefault(),k(c[v]);return}if(y.key==="Escape"){y.preventDefault(),R(!1),N(-1);return}}y.key==="Enter"&&(y.preventDefault(),o==null||o())},[T,c,v,k,o]);return l.useEffect(()=>{if(v<0||!h.current)return;const w=h.current.children[v];w==null||w.scrollIntoView({block:"nearest"})},[v]),l.useEffect(()=>{d([]),R(!1),N(-1)},[r]),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsxs("div",{className:"relative",children:[t.jsx("input",{ref:b,type:"text",value:e,onChange:y=>n(y.target.value),onKeyDown:_,onFocus:()=>{c.length>0&&R(!0)},onBlur:()=>{setTimeout(()=>R(!1),150)},placeholder:i("newInstance.pathPlaceholder"),disabled:s,spellCheck:!1,autoComplete:"off",className:"w-full rounded-[10px] px-3 py-2 bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] leading-[20px] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] outline-none focus:border-[var(--color-accent)] transition-colors disabled:opacity-50 pr-8"}),m&&t.jsx("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2",children:t.jsx(de,{size:14,className:"animate-spin text-[var(--label-tertiary)]"})})]}),T&&t.jsxs("div",{ref:h,className:"max-h-[200px] overflow-y-auto rounded-[10px] border border-[var(--separator)] bg-[var(--fill-quaternary)]",children:[c.map((y,w)=>t.jsxs("button",{type:"button",onMouseDown:M=>{M.preventDefault(),k(y)},onMouseEnter:()=>N(w),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-[13px] transition-colors ${w===v?"bg-[var(--fill-secondary)]":"hover:bg-[var(--fill-tertiary)]"}`,children:[t.jsx(St,{size:14,className:"shrink-0 text-[var(--label-tertiary)]"}),t.jsx("span",{className:"text-[var(--label-primary)] truncate",children:y.name})]},y.name)),u&&t.jsx("div",{className:"px-3 py-1.5 text-[12px] text-[var(--label-tertiary)] border-t border-[var(--separator)]",children:i("newInstance.truncatedHint")})]})]})}function Rs({onClose:e,onCreated:n}){const{t:r}=z(),[s,a]=l.useState(""),[o,i]=l.useState([]),[c,d]=l.useState(""),[u,f]=l.useState(!0),[m,g]=l.useState(!1),[v,N]=l.useState(null);l.useEffect(()=>{Ye("/api/edges").then(b=>b.json()).then(b=>{if(i(b.edges),b.edges.length>0){d(b.edges[0].edgeId);const h=b.edges[0].homedir;if(h){const C=h.endsWith("/")?h:h+"/";a(C)}}f(!1)}).catch(()=>{f(!1),N(r("newInstance.fetchEdgeError"))})},[]);const T=l.useCallback(b=>{d(b);const h=o.find(C=>C.edgeId===b);if(h!=null&&h.homedir){const C=h.homedir.endsWith("/")?h.homedir:h.homedir+"/";a(C)}},[o]),R=l.useCallback(async()=>{const b=s.trim();if(!(!b||m)){if(!c){N(r("newInstance.noEdgeSelected"));return}g(!0),N(null);try{const h=await Ye("/api/instances",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:b,edgeId:c}),signal:AbortSignal.timeout(2e4)}),C=await h.json();if(!h.ok||!C.instanceId){N(C.error||r("newInstance.requestFailed",{status:h.status})),g(!1);return}n(C.instanceId)}catch(h){const C=h.name==="TimeoutError"?r("newInstance.requestTimeout"):h.message||r("newInstance.networkError");N(C),g(!1)}}},[s,m,c,n]);return t.jsx(X,{title:t.jsxs(t.Fragment,{children:[t.jsx(Cn,{size:16}),t.jsx("span",{children:r("newInstance.title")})]}),onClose:e,children:t.jsxs("div",{className:"px-5 py-4 flex flex-col gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("label",{className:"text-[13px] text-[var(--label-secondary)]",children:r("newInstance.edgeNode")}),u?t.jsx("div",{className:"text-[13px] text-[var(--label-tertiary)]",children:r("common.loading")}):o.length===0?t.jsx("div",{className:"text-[12px] text-[#ff4245]",children:r("newInstance.noEdges")}):o.length===1?t.jsxs("div",{className:"text-[13px] text-[var(--label-primary)]",children:[o[0].hostname,t.jsxs("span",{className:"text-[var(--label-tertiary)] ml-1.5",children:["(",o[0].edgeId,")"]})]}):t.jsx("select",{value:c,onChange:b=>T(b.target.value),disabled:m,className:"w-full rounded-[10px] px-3 py-2 bg-[var(--fill-tertiary)] border border-[var(--separator)] text-[14px] text-[var(--label-primary)] outline-none focus:border-[var(--color-accent)] transition-colors disabled:opacity-50",children:o.map(b=>t.jsxs("option",{value:b.edgeId,children:[b.hostname," (",b.edgeId,")"]},b.edgeId))})]}),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("label",{className:"text-[13px] text-[var(--label-secondary)]",children:r("newInstance.workingDir")}),t.jsx(Ts,{value:s,onChange:a,edgeId:c,disabled:m||u,autoFocus:!u,onSubmit:R})]}),v&&t.jsx("div",{className:"text-[12px] leading-[16px] text-[#ff4245] whitespace-pre-wrap break-words",children:v}),t.jsxs("div",{className:"flex items-center justify-end gap-2 pt-1",children:[t.jsx("button",{onClick:e,disabled:m,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] text-[var(--label-secondary)] hover:bg-[var(--fill-tertiary)] transition-colors disabled:opacity-50",children:r("common.cancel")}),t.jsx("button",{onClick:R,disabled:m||!s.trim()||!c,className:"px-3.5 py-1.5 rounded-[8px] text-[13px] font-medium text-white bg-[var(--color-accent)] hover:opacity-90 transition-opacity disabled:opacity-40",children:r(m?"newInstance.creating":"newInstance.create")})]})]})})}function Ms({onLogin:e,error:n}){const{t:r}=z(),[s,a]=l.useState(""),[o,i]=l.useState(!1),[c,d]=l.useState(!1),u=Qe(),f=l.useCallback(async m=>{m.preventDefault();const g=s.trim();if(!(!g||o)){i(!0),d(!1);try{if((await fetch("/api/instances",{headers:{Authorization:`Bearer ${g}`}})).status===401){d(!0),i(!1);return}}catch{}i(!1),Bn(g),e(g)}},[s,o,e]);return t.jsx("div",{className:"fixed-viewport flex items-center justify-center p-4 overflow-y-auto",children:t.jsxs("form",{onSubmit:f,className:"glass-panel w-full max-w-[380px] p-8 flex flex-col items-center gap-6",children:[t.jsx("img",{src:u,alt:"Paimon",className:"w-16 h-16 select-none",draggable:!1}),t.jsxs("div",{className:"text-center",children:[t.jsx("h1",{className:"text-[17px] font-semibold text-[var(--label-primary)]",children:"Paimon"}),t.jsx("p",{className:"mt-1 text-[13px] text-[var(--label-secondary)]",children:r("login.subtitle")})]}),t.jsxs("div",{className:"w-full",children:[t.jsx("input",{type:"password",value:s,onChange:m=>a(m.target.value),placeholder:r("login.placeholder"),autoFocus:!0,className:`w-full h-9 px-3 rounded-[9px] text-[13px] bg-[var(--fill-primary)] text-[var(--label-primary)] placeholder:text-[var(--label-tertiary)] border outline-none transition-colors ${n||c?"border-red-500 focus:border-red-500":"border-[var(--separator)] focus:border-[var(--color-accent)]"}`}),(n||c)&&t.jsx("p",{className:"mt-2 text-[11px] text-red-500",children:r("login.invalidToken")})]}),t.jsx("button",{type:"submit",disabled:!s.trim()||o,className:"w-full h-9 rounded-[1000px] bg-[var(--color-accent)] text-white text-[13px] font-medium transition-opacity disabled:opacity-40 hover:opacity-90 active:opacity-80",children:r(o?"login.verifying":"login.connect")}),t.jsx("p",{className:"text-[11px] text-[var(--label-tertiary)] text-center leading-relaxed",children:t.jsx(En,{i18nKey:"login.tokenHint",components:{1:t.jsx("code",{className:"px-1 py-0.5 rounded bg-[var(--fill-secondary)] text-[var(--label-secondary)]"})}})})]})})}function Is(){const{pathname:e}=Rn(),n=e.match(/^\/instance\/(.+)$/);return n?n[1]:null}function As(){const{t:e}=z(),{authToken:n,authError:r,handleLogin:s,handleAuthError:a}=Fn(),o=K(j=>j.connect),i=K(j=>j.disconnect),c=K(j=>j.subscribe),d=K(j=>j.send),u=re(j=>j.instances),f=re(j=>j.instanceListReady),m=re(j=>j.handleMessage),g=Me();zn();const v=Is();l.useEffect(()=>(n?o(n,a):i(),()=>i()),[n,o,i,a]),er(),l.useEffect(()=>c(j=>{(j.type==="instance_list"||j.type==="instance_update")&&m(j)}),[c,m]);const N=l.useCallback(j=>{g(`/instance/${j}`)},[g]),T=l.useRef(new Set),R=l.useCallback(j=>{const O=re.getState().instances.find(k=>k.id===j);if(O&&ue(O.status)){ee(e("sidebar.shutdownBusy"),"warning");return}T.current.add(j),d({type:"shutdown",payload:{instanceId:j}})},[d,e]),[b,h]=l.useState(!1),C=l.useCallback(j=>{h(!1),g(`/instance/${j}`)},[g]);return l.useEffect(()=>{if(!f||!v)return;u.some(O=>O.id===v)||(T.current.has(v)?T.current.delete(v):ee(e("eventStream.instanceNotFound"),"error"),g("/"))},[f,v,u,g,e]),n?t.jsxs("div",{className:"h-[var(--app-viewport-height,100dvh)] w-screen animated-bg flex items-stretch p-2 gap-2 md:p-3 md:gap-3 overflow-hidden pb-[max(0.5rem,env(safe-area-inset-bottom))]",children:[t.jsx("div",{className:"hidden md:flex self-stretch",children:t.jsx(ut,{instances:u,selectedId:v,onSelect:N,onShutdown:R,onNewInstance:()=>h(!0)})}),t.jsx(Tn,{children:t.jsxs(ve,{element:t.jsx(js,{}),children:[t.jsx(ve,{path:"/settings",element:t.jsx(Es,{})}),t.jsx(ve,{path:"/instance/:id",element:t.jsx(bs,{})}),t.jsx(ve,{path:"*",element:t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex-1 md:hidden min-w-0 flex flex-col",children:t.jsx(ut,{instances:u,selectedId:v,onSelect:N,onShutdown:R,onNewInstance:()=>h(!0)})}),t.jsx("div",{className:"hidden md:flex flex-1 min-w-0",children:t.jsx(ys,{})})]})})]})}),b&&t.jsx(Rs,{onClose:()=>h(!1),onCreated:C}),t.jsx(Gr,{})]}):t.jsx("div",{className:"h-[var(--app-viewport-height,100dvh)] w-screen animated-bg flex items-stretch overflow-hidden",children:t.jsx(Ms,{onLogin:s,error:r})})}rn.createRoot(document.getElementById("root")).render(t.jsx(Mn,{children:t.jsx(As,{})}));
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Inter", "SF Pro", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-green-500:oklch(72.3% .219 149.579);--color-black:#000;--color-white:#fff;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#0091ff;--bottom-safe-gap:max(.75rem, env(safe-area-inset-bottom))}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed-viewport{height:var(--app-viewport-height,100dvh);position:fixed;top:0;left:0;right:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-\[max\(1rem\,env\(safe-area-inset-top\)\)\]{top:max(1rem,env(safe-area-inset-top))}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[var\(--bottom-safe-gap\)\]{bottom:var(--bottom-safe-gap)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[26px\]{height:26px}.h-\[28px\]{height:28px}.h-\[34px\]{height:34px}.h-\[60px\]{height:60px}.h-\[var\(--app-viewport-height\,100dvh\)\]{height:var(--app-viewport-height,100dvh)}.h-\[var\(--bottom-safe-gap\)\]{height:var(--bottom-safe-gap)}.h-full{height:100%}.h-px{height:1px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[150px\]{max-height:150px}.max-h-\[200px\]{max-height:200px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[40px\]{min-height:40px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1\%\]{width:1%}.w-\[14px\]{width:14px}.w-\[28px\]{width:28px}.w-\[60px\]{width:60px}.w-\[64\%\]{width:64%}.w-\[82\%\]{width:82%}.w-\[90\%\]{width:90%}.w-\[240px\]{width:240px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[80\%\]{max-width:80%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[140px\]{max-width:140px}.max-w-\[200px\]{max-width:200px}.max-w-\[380px\]{max-width:380px}.max-w-\[480px\]{max-width:480px}.max-w-\[520px\]{max-width:520px}.max-w-\[640px\]{max-width:640px}.max-w-\[680px\]{max-width:680px}.max-w-\[920px\]{max-width:920px}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[160px\]{min-width:160px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.scrollbar-auto{scrollbar-width:auto}.scrollbar-none{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[1000px\]{border-radius:1000px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-br-\[4px\]{border-bottom-right-radius:4px}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[0\.5px\]{border-style:var(--tw-border-style);border-width:.5px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[rgba\(255\,66\,69\,0\.3\)\]{border-color:#ff42454d}.border-\[var\(--color-accent\)\]{border-color:var(--color-accent)}.border-\[var\(--panel-border\)\]{border-color:var(--panel-border)}.border-\[var\(--separator\)\]{border-color:var(--separator)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:#0000}.bg-\[color-mix\(in_srgb\,var\(--color-accent\)_12\%\,transparent\)\]{background-color:#0091ff1f}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--color-accent\)_12\%\,transparent\)\]{background-color:color-mix(in srgb,var(--color-accent) 12%,transparent)}}.bg-\[rgba\(0\,0\,0\,0\.11\)\]{background-color:#0000001c}.bg-\[rgba\(0\,145\,255\,0\.08\)\]{background-color:#0091ff14}.bg-\[rgba\(255\,66\,69\,0\.1\)\]{background-color:#ff42451a}.bg-\[rgba\(255\,66\,69\,0\.06\)\]{background-color:#ff42450f}.bg-\[var\(--badge-bg\)\]{background-color:var(--badge-bg)}.bg-\[var\(--btn-solid\)\]{background-color:var(--btn-solid)}.bg-\[var\(--color-accent\)\]{background-color:var(--color-accent)}.bg-\[var\(--fill-card\)\]{background-color:var(--fill-card)}.bg-\[var\(--fill-primary\)\]{background-color:var(--fill-primary)}.bg-\[var\(--fill-quaternary\)\]{background-color:var(--fill-quaternary)}.bg-\[var\(--fill-secondary\)\]{background-color:var(--fill-secondary)}.bg-\[var\(--fill-tertiary\)\]{background-color:var(--fill-tertiary)}.bg-\[var\(--label-tertiary\)\]{background-color:var(--label-tertiary)}.bg-\[var\(--material-modal\)\]{background-color:var(--material-modal)}.bg-\[var\(--panel-bg\)\]{background-color:var(--panel-bg)}.bg-\[var\(--separator\)\]{background-color:var(--separator)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-red-400\/5{background-color:#ff65680d}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/5{background-color:color-mix(in oklab,var(--color-red-400) 5%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[2px\]{padding:2px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-\[9px\]{padding-top:9px}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-\[max\(0\.5rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(.5rem,env(safe-area-inset-bottom))}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[15px\]{--tw-leading:15px;line-height:15px}.leading-\[16px\]{--tw-leading:16px;line-height:16px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[20px\]{--tw-leading:20px;line-height:20px}.leading-\[21px\]{--tw-leading:21px;line-height:21px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-\[23px\]{--tw-leading:23px;line-height:23px}.leading-\[24px\]{--tw-leading:24px;line-height:24px}.leading-\[26px\]{--tw-leading:26px;line-height:26px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#ff4245\]{color:#ff4245}.text-\[var\(--badge-text\)\]{color:var(--badge-text)}.text-\[var\(--color-accent\)\]{color:var(--color-accent)}.text-\[var\(--label-primary\)\]{color:var(--label-primary)}.text-\[var\(--label-quaternary\)\]{color:var(--label-quaternary)}.text-\[var\(--label-secondary\)\]{color:var(--label-secondary)}.text-\[var\(--label-tertiary\)\]{color:var(--label-tertiary)}.text-amber-500{color:var(--color-amber-500)}.text-green-500{color:var(--color-green-500)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_40px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 40px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--panel-shadow\)\]{--tw-shadow:var(--panel-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--color-accent\)\]{--tw-ring-color:var(--color-accent)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[30px\]{--tw-backdrop-blur:blur(30px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}@media(hover:hover){.group-hover\:text-\[var\(--color-accent\)\]:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\:text-\[var\(--label-secondary\)\]:is(:where(.group):hover *){color:var(--label-secondary)}}.placeholder\:text-\[var\(--label-tertiary\)\]::placeholder{color:var(--label-tertiary)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-\[var\(--color-accent\)\]:hover{border-color:var(--color-accent)}.hover\:bg-\[var\(--badge-bg-hover\)\]:hover{background-color:var(--badge-bg-hover)}.hover\:bg-\[var\(--btn-solid-hover\)\]:hover{background-color:var(--btn-solid-hover)}.hover\:bg-\[var\(--fill-quaternary\)\]:hover{background-color:var(--fill-quaternary)}.hover\:bg-\[var\(--fill-secondary\)\]:hover{background-color:var(--fill-secondary)}.hover\:bg-\[var\(--fill-tertiary\)\]:hover{background-color:var(--fill-tertiary)}.hover\:text-\[var\(--color-accent\)\]:hover{color:var(--color-accent)}.hover\:text-\[var\(--label-primary\)\]:hover{color:var(--label-primary)}.hover\:text-\[var\(--label-secondary\)\]:hover{color:var(--label-secondary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-\[var\(--color-accent\)\]:focus{border-color:var(--color-accent)}.focus\:border-\[var\(--separator\)\]:focus{border-color:var(--separator)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:bg-\[var\(--fill-secondary\)\]:active{background-color:var(--fill-secondary)}.active\:opacity-50:active{opacity:.5}.active\:opacity-60:active{opacity:.6}.active\:opacity-80:active{opacity:.8}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media not all and (min-width:48rem){.max-md\:h-2{height:calc(var(--spacing) * 2)}.max-md\:h-4{height:calc(var(--spacing) * 4)}.max-md\:w-2{width:calc(var(--spacing) * 2)}.max-md\:w-4{width:calc(var(--spacing) * 4)}.max-md\:w-full{width:100%}.max-md\:flex-1{flex:1}:where(.max-md\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}.max-md\:px-3{padding-inline:calc(var(--spacing) * 3)}.max-md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.max-md\:text-\[12px\]{font-size:12px}.max-md\:text-\[13px\]{font-size:13px}.max-md\:text-\[14px\]{font-size:14px}.max-md\:text-\[15px\]{font-size:15px}.max-md\:text-\[18px\]{font-size:18px}.max-md\:leading-\[16px\]{--tw-leading:16px;line-height:16px}.max-md\:leading-\[18px\]{--tw-leading:18px;line-height:18px}.max-md\:leading-\[20px\]{--tw-leading:20px;line-height:20px}.max-md\:leading-\[21px\]{--tw-leading:21px;line-height:21px}.max-md\:leading-\[24px\]{--tw-leading:24px;line-height:24px}}@media(min-width:48rem){.md\:top-7{top:calc(var(--spacing) * 7)}.md\:bottom-0{bottom:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-0{height:calc(var(--spacing) * 0)}.md\:w-\[240px\]{width:240px}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.md\:pt-4{padding-top:calc(var(--spacing) * 4)}.md\:pt-\[10px\]{padding-top:10px}.md\:text-\[14px\]{font-size:14px}.md\:leading-\[22px\]{--tw-leading:22px;line-height:22px}}@media(prefers-color-scheme:dark){.dark\:bg-\[rgba\(0\,145\,255\,0\.12\)\]{background-color:#0091ff1f}.dark\:bg-\[rgba\(255\,66\,69\,0\.1\)\]{background-color:#ff42451a}.dark\:bg-\[rgba\(255\,66\,69\,0\.15\)\]{background-color:#ff424526}.dark\:bg-\[rgba\(255\,255\,255\,0\.11\)\]{background-color:#ffffff1c}}}@keyframes gradient-shift{0%,to{background-position:0%}25%{background-position:100% 0}50%{background-position:100% 100%}75%{background-position:0 100%}}:root{font-family:var(--font-sans);--label-primary:#000000d9;--label-secondary:#00000080;--label-tertiary:#00000040;--fill-primary:#0000001a;--fill-secondary:#00000014;--fill-tertiary:#0000000d;--fill-quaternary:#00000008;--material-thick:#f6f6f6b8;--material-medium:#f6f6f699;--material-thin:#f6f6f67a;--material-modal:#f6f6f6d1;--panel-bg:var(--material-medium);--panel-border:#ffffff80;--panel-shadow:0 8px 40px #00000014, 0 2px 8px #0000000a;--separator:#00000014;--fill-card:#00000008;--diff-add-bg:#30d15814;--diff-add-text:var(--label-primary);--diff-del-bg:#ff3b3014;--diff-del-text:var(--label-primary);--diff-context-text:var(--label-secondary);--diff-line-num:var(--label-tertiary);--btn-solid:#f6f6f6;--btn-solid-hover:#ddd;--badge-bg:#00000080;--badge-bg-hover:#000000b3;--badge-text:#fff;--toast-icon-info:#0091ff;--toast-icon-success:#30d158;--toast-icon-warning:#ff9230;--toast-icon-error:#ff4245;font-size:13px;line-height:16px}@media(prefers-color-scheme:dark){:root:not([data-theme]){--label-primary:#ffffffd9;--label-secondary:#ffffff8c;--label-tertiary:#ffffff40;--fill-primary:#ffffff1a;--fill-secondary:#ffffff14;--fill-tertiary:#ffffff0d;--fill-quaternary:#ffffff08;--material-thick:#282828cc;--material-medium:#28282899;--material-thin:#28282866;--material-modal:#282828d1;--fill-card:#ffffff14;--panel-bg:var(--material-medium);--panel-border:#ffffff14;--panel-shadow:0 8px 40px #0000004d, 0 2px 8px #0003;--separator:#ffffff0f;--diff-add-bg:#30d1581f;--diff-add-text:#30d158d9;--diff-del-bg:#ff453a1f;--diff-del-text:#ff453ad9;--diff-context-text:var(--label-secondary);--btn-solid:#282828;--btn-solid-hover:#3d3d3d;--bg-gradient:linear-gradient(135deg, #1a1a2e 0%, #2d1b3e 25%, #1b2838 50%, #1e2e1e 75%, #1a1a2e 100%);--toast-icon-info:#0a99ff;--toast-icon-success:#3bdb63;--toast-icon-warning:#ff9e33;--toast-icon-error:#ff4747}}[data-theme=dark]{--label-primary:#ffffffd9;--label-secondary:#ffffff8c;--label-tertiary:#ffffff40;--fill-primary:#ffffff1a;--fill-secondary:#ffffff14;--fill-tertiary:#ffffff0d;--fill-quaternary:#ffffff08;--material-thick:#282828cc;--material-medium:#28282899;--material-thin:#28282866;--material-modal:#282828d1;--fill-card:#ffffff14;--panel-bg:var(--material-medium);--panel-border:#ffffff14;--panel-shadow:0 8px 40px #0000004d, 0 2px 8px #0003;--separator:#ffffff0f;--diff-add-bg:#30d1581f;--diff-add-text:#30d158d9;--diff-del-bg:#ff453a1f;--diff-del-text:#ff453ad9;--diff-context-text:var(--label-secondary);--btn-solid:#282828;--btn-solid-hover:#3d3d3d;--toast-icon-info:#0a99ff;--toast-icon-success:#3bdb63;--toast-icon-warning:#ff9e33;--toast-icon-error:#ff4747}:root{--hljs-base:#000000d9;--hljs-keyword:#c4344d;--hljs-function:#6f42c1;--hljs-variable:#0060b0;--hljs-string:#1a7a5a;--hljs-builtin:#b05000;--hljs-comment:#0006;--hljs-tag:#1a7040;--hljs-section:#0060b0;--hljs-bullet:#7a5a00;--hljs-addition-fg:#1a7040;--hljs-addition-bg:#e6ffe6;--hljs-deletion-fg:#c4344d;--hljs-deletion-bg:#fff0f0}@media(prefers-color-scheme:dark){:root:not([data-theme]){--hljs-base:#ffffffd9;--hljs-keyword:#ff7b9f;--hljs-function:#b4a0ff;--hljs-variable:#7ec8ff;--hljs-string:#7edcb5;--hljs-builtin:#ffb870;--hljs-comment:#ffffff59;--hljs-tag:#7ee0a0;--hljs-section:#7ec8ff;--hljs-bullet:#f2cc60;--hljs-addition-fg:#7ee0a0;--hljs-addition-bg:#1e50324d;--hljs-deletion-fg:#ff7b9f;--hljs-deletion-bg:#641e284d}}[data-theme=dark]{--hljs-base:#ffffffd9;--hljs-keyword:#ff7b9f;--hljs-function:#b4a0ff;--hljs-variable:#7ec8ff;--hljs-string:#7edcb5;--hljs-builtin:#ffb870;--hljs-comment:#ffffff59;--hljs-tag:#7ee0a0;--hljs-section:#7ec8ff;--hljs-bullet:#f2cc60;--hljs-addition-fg:#7ee0a0;--hljs-addition-bg:#1e50324d;--hljs-deletion-fg:#ff7b9f;--hljs-deletion-bg:#641e284d}pre code.hljs{display:block;overflow-x:auto}.hljs{color:var(--hljs-base);background:0 0}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:var(--hljs-keyword)}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:var(--hljs-function)}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:var(--hljs-variable)}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:var(--hljs-string)}.hljs-built_in,.hljs-symbol{color:var(--hljs-builtin)}.hljs-code,.hljs-comment,.hljs-formula{color:var(--hljs-comment);font-style:italic}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:var(--hljs-tag)}.hljs-subst{color:var(--hljs-base)}.hljs-section{color:var(--hljs-section);font-weight:700}.hljs-bullet{color:var(--hljs-bullet)}.hljs-emphasis{color:var(--hljs-base);font-style:italic}.hljs-strong{color:var(--hljs-base);font-weight:700}.hljs-addition{color:var(--hljs-addition-fg);background-color:var(--hljs-addition-bg)}.hljs-deletion{color:var(--hljs-deletion-fg);background-color:var(--hljs-deletion-bg)}[data-bg=mist],:root:not([data-bg]){--bg-gradient:linear-gradient(135deg, #e8f0fe 0%, #f5e6f0 25%, #e6f0f5 50%, #f0f5e6 75%, #e8f0fe 100%)}[data-bg=mist][data-theme=dark],:root:not([data-bg])[data-theme=dark]{--bg-gradient:linear-gradient(135deg, #1a1a2e 0%, #2d1b3e 25%, #1b2838 50%, #1e2e1e 75%, #1a1a2e 100%)}[data-bg=aurora]{--bg-gradient:linear-gradient(135deg, #a8d8ea 0%, #aa96da 25%, #8fd3c4 50%, #c4a8d8 75%, #a8d8ea 100%)}[data-bg=aurora][data-theme=dark]{--bg-gradient:linear-gradient(135deg, #0d1b2a 0%, #1b0033 25%, #0a2e26 50%, #1a0a2e 75%, #0d1b2a 100%)}[data-bg=ember]{--bg-gradient:linear-gradient(135deg, #f8d4b0 0%, #f0b0c0 25%, #f8e0a0 50%, #e8c0d0 75%, #f8d4b0 100%)}[data-bg=ember][data-theme=dark]{--bg-gradient:linear-gradient(135deg, #2e1a0a 0%, #3e1b2d 25%, #2e2410 50%, #2d1a2e 75%, #2e1a0a 100%)}html,body{overscroll-behavior:none;overflow:hidden}body{color:var(--label-primary);margin:0}button,[role=button]{cursor:pointer}.animated-bg{background:var(--bg-gradient);background-size:300% 300%;animation:20s infinite gradient-shift}.glass-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);border:.5px solid var(--panel-border);box-shadow:var(--panel-shadow);border-radius:18px;transition:box-shadow .2s,border-color .2s}.glass-popover{background:var(--panel-bg);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);border:.5px solid var(--panel-border);box-shadow:var(--panel-shadow);border-radius:14px}.glass-panel-input:focus-within{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.glass-panel-disabled{opacity:.6;pointer-events:none}.scrollbar-auto{scrollbar-width:thin;scrollbar-color:transparent transparent}.scrollbar-auto:hover{scrollbar-color:var(--fill-secondary) transparent}.scrollbar-auto::-webkit-scrollbar{width:6px}.scrollbar-auto::-webkit-scrollbar-track{background:0 0}.scrollbar-auto::-webkit-scrollbar-thumb{background:0 0;border-radius:3px}.scrollbar-auto:hover::-webkit-scrollbar-thumb{background:var(--fill-secondary)}.scrollbar-auto:hover::-webkit-scrollbar-thumb:hover{background:var(--fill-primary)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}