@ganglion/xacpx-relay 0.5.1 → 0.5.2

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.
@@ -1 +1 @@
1
- import{d as e,c as s,Q as a,o as n}from"./index-Ccu9C2LP.js";const o={class:"flex items-center gap-2 select-none"},d=e({__name:"BrandLogo",setup(r){return(p,t)=>(n(),s("div",o,[...t[0]||(t[0]=[a('<svg data-test="brand-x" width="22" height="22" viewBox="0 0 24 24" fill="none" aria-hidden="true"><defs><linearGradient id="xacpxBrand" x1="3" y1="3" x2="21" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#4F9BF5"></stop><stop offset="1" stop-color="#69D689"></stop></linearGradient></defs><path d="M5 5 L19 19 M19 5 L5 19" stroke="url(#xacpxBrand)" stroke-width="3.2" stroke-linecap="round"></path></svg><span class="text-[15px] font-semibold tracking-tight text-fg">xacpx</span><span class="text-fg-muted text-xs">· relay</span>',3)])]))}});export{d as _};
1
+ import{d as e,c as s,Q as a,o as n}from"./index-B_zwxZen.js";const o={class:"flex items-center gap-2 select-none"},d=e({__name:"BrandLogo",setup(r){return(p,t)=>(n(),s("div",o,[...t[0]||(t[0]=[a('<svg data-test="brand-x" width="22" height="22" viewBox="0 0 24 24" fill="none" aria-hidden="true"><defs><linearGradient id="xacpxBrand" x1="3" y1="3" x2="21" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#4F9BF5"></stop><stop offset="1" stop-color="#69D689"></stop></linearGradient></defs><path d="M5 5 L19 19 M19 5 L5 19" stroke="url(#xacpxBrand)" stroke-width="3.2" stroke-linecap="round"></path></svg><span class="text-[15px] font-semibold tracking-tight text-fg">xacpx</span><span class="text-fg-muted text-xs">· relay</span>',3)])]))}});export{d as _};
@@ -1,4 +1,4 @@
1
- import{j as X,k as yt,r as T,l as ue,A as Su,m as K,n as Ma,d as ie,p as mt,q as zu,c as y,a as f,s as W,t as k,b as O,f as x,F as Y,x as oe,g as I,h as Xe,y as j,o as d,z as St,B as he,T as Ru,e as le,w as Ee,v as Oe,C as On,D as iu,E as Lu,G as bu,H as Oa,I as zn,J as Rn,K as rt,L as za,M as Tt,N as ft,O as Ra,P as La}from"./index-Ccu9C2LP.js";import{_ as Na}from"./BrandLogo.vue_vue_type_script_setup_true_lang-BWvSYb7-.js";import{u as Pa}from"./theme-CSnImvQq.js";/**
1
+ import{j as X,k as yt,r as T,l as ue,A as Su,m as K,n as Ma,d as ie,p as mt,q as zu,c as y,a as f,s as W,t as k,b as O,f as x,F as Y,x as oe,g as I,h as Xe,y as j,o as d,z as St,B as he,T as Ru,e as le,w as Ee,v as Oe,C as On,D as iu,E as Lu,G as bu,H as Oa,I as zn,J as Rn,K as rt,L as za,M as Tt,N as ft,O as Ra,P as La}from"./index-B_zwxZen.js";import{_ as Na}from"./BrandLogo.vue_vue_type_script_setup_true_lang-DJP2AXeI.js";import{u as Pa}from"./theme-CxgdBqbU.js";/**
2
2
  * @license lucide-vue-next v1.0.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -265,7 +265,7 @@ $$`:`${e}$$`},Gf=e=>Hf(e)%2===0?e:Wf(e),Kf=e=>Vf(e)%2===1?`${e}$`:e,Zf=(e,t,u)=>
265
265
  `),u=[];let n=!1;for(let s=0;s<t.length;s++){const r=t[s];if(/^\s*(```|~~~)/.test(r)){n=!n,u.push(r);continue}if(n){u.push(r);continue}const a=u.length>0?u[u.length-1]:null,o=a!==null&&ou(a);if(ou(r)&&!c1(r)&&!o&&!ar(r)){const i=s+1<t.length?t[s+1]:null;if(i!==null&&ou(i)&&ar(i)){u.length>0&&u[u.length-1].trim()!==""&&u.push(""),u.push(r);continue}if(i!==null&&ou(i)){u.length>0&&u[u.length-1].trim()!==""&&u.push(""),u.push(r),u.push(d1(la(r).length));continue}u.push(r);continue}u.push(r)}return u.join(`
266
266
  `)}const Zn=new Ne({html:!1,linkify:!0,breaks:!0});Zn.renderer.rules.table_open=()=>'<div class="md-table-wrap"><table>';Zn.renderer.rules.table_close=()=>"</table></div>";Qr.addHook("afterSanitizeAttributes",e=>{e.nodeName==="A"&&e.hasAttribute("href")&&(e.setAttribute("target","_blank"),e.setAttribute("rel","noopener noreferrer nofollow"))});function p1(e,t={}){const u=t.streaming?l1(e):e,n=f1(u),s=Zn.render(n);return Qr.sanitize(s)}const h1=["innerHTML"],ca=ie({__name:"StreamMarkdown",props:{text:{},streaming:{type:Boolean}},setup(e){const t=e,u=K(()=>p1(t.text,{streaming:t.streaming}));return(n,s)=>(d(),y("div",{class:"stream-md text-sm",innerHTML:u.value},null,8,h1))}}),Ut=ie({__name:"ExpandableBlock",props:{maxPx:{default:200}},setup(e){const t=e,u=T(!1),n=T(!1),s=T(null);let r=null;function a(){const o=s.value;o&&(n.value=o.scrollHeight>t.maxPx+8)}return mt(()=>{rt(a),typeof ResizeObserver<"u"&&s.value&&(r=new ResizeObserver(()=>a()),r.observe(s.value))}),zu(()=>r==null?void 0:r.disconnect()),he(u,()=>{u.value||rt(a)}),(o,i)=>(d(),y("div",null,[f("div",{ref_key:"inner",ref:s,"data-test":"clamp-inner",class:W(!u.value&&n.value?"overflow-hidden":""),style:Lu(!u.value&&n.value?{maxHeight:e.maxPx+"px"}:void 0)},[za(o.$slots,"default")],6),n.value?(d(),y("button",{key:0,type:"button","data-test":"expand-toggle",class:"mt-1 inline-flex items-center gap-1 text-[10.5px] font-medium text-accent hover:underline",onClick:i[0]||(i[0]=l=>u.value=!u.value)},[(d(),j(Tt(u.value?x(Ua):x(Je)),{size:12})),le(" "+k(u.value?"Show less":"Show more"),1)])):I("",!0)]))}}),b1={class:"mt-1 space-y-1 text-xs"},m1={class:"flex min-w-0 items-center gap-2 font-mono text-fg-muted"},g1={class:"inline-flex min-w-0 items-center gap-1"},x1={class:"truncate"},v1={"data-test":"diff-stats",class:"ml-auto flex shrink-0 items-center gap-2 font-mono text-[10px]"},y1={key:0,class:"text-run"},k1={key:1,class:"text-danger"},_1={class:"overflow-x-auto rounded bg-bg p-2 font-mono"},w1={"data-test":"cmd-command",class:"break-all font-mono text-fg"},E1={"data-test":"cmd-output",class:"overflow-x-auto rounded bg-raised p-2 font-mono text-fg whitespace-pre-wrap"},A1={key:1,class:"text-fg-muted"},C1={"data-test":"read-path",class:"flex min-w-0 items-center gap-1 font-mono text-fg"},D1={class:"truncate"},$1={key:0,class:"ml-2 shrink-0 text-fg-muted"},T1={class:"overflow-x-auto rounded bg-bg p-2 font-mono text-fg-muted whitespace-pre-wrap"},S1={"data-test":"search-query",class:"flex min-w-0 items-center gap-1 font-mono text-fg"},F1={class:"truncate"},I1={"data-test":"search-output",class:"overflow-x-auto rounded bg-bg p-2 font-mono text-fg-muted whitespace-pre-wrap"},M1={class:"grid grid-cols-[auto,1fr] gap-x-3 gap-y-1"},O1={class:"text-fg-muted"},z1=["data-test"],R1={class:"overflow-x-auto rounded bg-bg p-2 font-mono text-fg-muted whitespace-pre-wrap"},L1={"data-test":"tool-text",class:"whitespace-pre-wrap text-fg-muted"},da=ie({__name:"ToolDetail",props:{detail:{}},setup(e){const t=e,u=K(()=>t.detail.type!=="diff"?{del:[],add:[]}:{del:t.detail.oldText.split(`
267
267
  `),add:t.detail.newText.split(`
268
- `)}),n=K(()=>({add:u.value.add.filter(s=>s.length>0).length,del:u.value.del.filter(s=>s.length>0).length}));return(s,r)=>(d(),y("div",b1,[e.detail.type==="diff"?(d(),y(Y,{key:0},[f("div",m1,[f("span",g1,[O(x(Fu),{size:14,class:"shrink-0"}),f("span",x1,k(e.detail.path),1)]),f("span",v1,[n.value.add?(d(),y("span",y1,"+"+k(n.value.add),1)):I("",!0),n.value.del?(d(),y("span",k1,"−"+k(n.value.del),1)):I("",!0)])]),O(Ut,null,{default:ft(()=>[f("div",_1,[(d(!0),y(Y,null,oe(u.value.del,(a,o)=>(d(),y("div",{key:"d"+o,"data-test":"diff-del",class:"whitespace-pre text-danger"},"- "+k(a),1))),128)),(d(!0),y(Y,null,oe(u.value.add,(a,o)=>(d(),y("div",{key:"a"+o,"data-test":"diff-add",class:"whitespace-pre text-run"},"+ "+k(a),1))),128))])]),_:1})],64)):e.detail.type==="command"?(d(),y(Y,{key:1},[f("div",w1,"$ "+k(e.detail.command),1),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",E1,k(e.detail.output),1)]),_:1})):I("",!0),e.detail.exitCode!==void 0?(d(),y("div",A1,"exit "+k(e.detail.exitCode),1)):I("",!0)],64)):e.detail.type==="read"?(d(),y(Y,{key:2},[f("div",C1,[O(x(Fu),{size:14,class:"shrink-0"}),f("span",D1,k(e.detail.path),1),e.detail.lines?(d(),y("span",$1,k(e.detail.lines),1)):I("",!0)]),e.detail.preview?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",T1,k(e.detail.preview),1)]),_:1})):I("",!0)],64)):e.detail.type==="search"?(d(),y(Y,{key:3},[f("div",S1,[O(x(Nu),{size:14,class:"shrink-0"}),f("span",F1,k(e.detail.query),1)]),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",I1,k(e.detail.output),1)]),_:1})):I("",!0)],64)):e.detail.type==="fields"?(d(),y(Y,{key:4},[f("dl",M1,[(d(!0),y(Y,null,oe(e.detail.fields,a=>(d(),y(Y,{key:a.label},[f("dt",O1,k(a.label),1),f("dd",{"data-test":"field-"+a.label,class:"font-mono text-fg break-all"},k(a.value),9,z1)],64))),128))]),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",R1,k(e.detail.output),1)]),_:1})):I("",!0)],64)):e.detail.type==="text"?(d(),j(Ut,{key:5},{default:ft(()=>[f("p",L1,k(e.detail.text),1)]),_:1})):I("",!0)]))}}),N1=ie({__name:"FueDot",props:{pulsing:{type:Boolean,default:!0}},setup(e){return(t,u)=>(d(),y("span",{"data-test":"fue-dot",class:W(["inline-block h-2 w-2 rounded-full bg-accent",e.pulsing?"animate-pulse motion-reduce:animate-none":""]),"aria-hidden":"true"},null,2))}}),jt=8;function P1(e,t,u,n=jt){const s=e.top+e.height+n,r=e.top-t.height-n,a=u.height-(e.top+e.height),o=e.top,p=s+t.height>u.height-jt&&o>a?"above":"below",c=p==="above"?Math.max(jt,r):s,v=e.left+e.width/2-t.width/2,h=Math.max(jt,u.width-t.width-jt),m=Math.min(Math.max(jt,v),h);return{top:c,left:m,placement:p}}const B1={class:"flex items-center gap-2 font-medium text-fg"},q1={class:"mt-1 text-xs text-fg-muted"},U1={class:"mt-2 flex justify-end"},j1=ie({__name:"FueCallout",props:{title:{},body:{},anchor:{}},emits:["dismiss"],setup(e,{emit:t}){const u=e,n=t,s=T(null),r=T({visibility:"hidden"});function a(){const i=s.value;if(!i)return;const l={width:i.offsetWidth||256,height:i.offsetHeight||96},p={width:window.innerWidth,height:window.innerHeight};if(u.anchor){const c=P1(u.anchor,l,p);r.value={top:`${c.top}px`,left:`${c.left}px`,visibility:"visible"}}else r.value={top:`${Math.max(8,p.height/2-l.height/2)}px`,left:`${Math.max(8,p.width/2-l.width/2)}px`,visibility:"visible"}}function o(i){i.key==="Escape"&&n("dismiss")}return mt(()=>{a(),window.addEventListener("keydown",o),window.addEventListener("resize",a)}),zu(()=>{window.removeEventListener("keydown",o),window.removeEventListener("resize",a)}),(i,l)=>(d(),j(Ru,{to:"body"},[f("div",{ref_key:"card",ref:s,"data-test":"fue-callout",class:"fixed z-50 w-64 rounded-lg border border-border bg-raised p-3 text-sm shadow-lg",style:Lu(r.value),role:"dialog"},[f("p",B1,[l[1]||(l[1]=f("span",{class:"inline-block h-2 w-2 rounded-full bg-accent","aria-hidden":"true"},null,-1)),le(" "+k(e.title),1)]),f("p",q1,k(e.body),1),f("div",U1,[f("button",{"data-test":"fue-dismiss",type:"button",class:"rounded bg-accent px-2 py-1 text-xs font-medium text-white hover:bg-accent-hover",onClick:l[0]||(l[0]=p=>n("dismiss"))},k(i.$t("fue.gotIt")),1)])],4)]))}}),fa="xacpx.fue.v1.";function H1(e){try{return localStorage.getItem(fa+e)==="1"}catch{return!1}}function V1(e){try{localStorage.setItem(fa+e,"1")}catch{}}function W1(e){const t=T(H1(e)?"acknowledged":"unseen");function u(){t.value==="unseen"&&(t.value="engaging")}function n(){t.value="acknowledged",V1(e)}return{status:t,engage:u,dismiss:n}}const Yn={read:Ba,search:Nu,execute:lo,edit:no,think:Ln,other:gr},G1={running:It,success:Yt,error:at},K1=["read","search","execute","edit","think","other"],Z1=["running","success","error"],or=5;function Y1(e){const t=new Map,u=new Map;for(const n of e)t.set(n.kind,(t.get(n.kind)??0)+1),u.set(n.status,(u.get(n.status)??0)+1);return{kinds:K1.filter(n=>t.has(n)).map(n=>({icon:Yn[n],count:t.get(n),label:n})),statuses:Z1.filter(n=>u.has(n)).map(n=>({icon:G1[n],count:u.get(n),label:n}))}}const X1={class:"overflow-hidden rounded-lg border border-border bg-surface text-xs shadow-e1"},J1={class:"inline-flex items-center gap-1.5 text-[11.5px] font-semibold text-fg-muted"},Q1={key:3,"data-test":"tool-count",class:"font-mono text-[10.5px] text-fg-muted"},ep={"data-test":"tool-summary",class:"ml-1 flex items-center gap-1.5 text-[10.5px] text-fg-muted"},tp=["data-test"],up={class:"tabular-nums"},np={key:0,class:"text-fg-muted"},sp=["data-test"],rp={class:"tabular-nums"},ap={key:1,class:"space-y-1 border-t border-border px-3 pb-2.5 pt-2"},op=["onClick"],ip={class:"truncate font-mono text-[11px] text-fg"},lp={key:0,class:"ml-auto font-mono text-[10.5px] text-fg-muted"},cp={key:0,class:"px-2 pb-2 pt-1"},dp=ie({__name:"ToolCallPanel",props:{steps:{}},setup(e){const t=e,u=T(t.steps.length<=or),n=T(new Set);function s(h){n.value.has(h)?n.value.delete(h):n.value.add(h),n.value=new Set(n.value)}const r=K(()=>Y1(t.steps)),a=W1("tool-group-collapse"),o=K(()=>t.steps.length>or),i=K(()=>o.value&&a.status.value!=="acknowledged"),l=T(null),p=T(null);function c(){var h;if(u.value=!u.value,i.value){const m=(h=l.value)==null?void 0:h.getBoundingClientRect();m&&(p.value={top:m.top,left:m.left,width:m.width,height:m.height}),a.engage()}}function v(h){return h===void 0?"":h>=1e3?`${(h/1e3).toFixed(1)}s`:`${h}ms`}return(h,m)=>(d(),y("div",X1,[f("button",{ref_key:"header",ref:l,type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-bg",onClick:c},[u.value?(d(),j(x(Je),{key:0,size:13,class:"text-fg-muted"})):(d(),j(x(Ft),{key:1,size:13,class:"text-fg-muted"})),f("span",J1,[O(x(gr),{size:13}),le(" "+k(h.$t("tools.toolSteps")),1)]),i.value?(d(),j(N1,{key:2,pulsing:x(a).status.value==="unseen"},null,8,["pulsing"])):(d(),y("span",Q1,k(e.steps.length),1)),f("span",ep,[(d(!0),y(Y,null,oe(r.value.kinds,E=>(d(),y("span",{key:"k"+E.label,"data-test":"sum-"+E.label,class:"inline-flex items-center gap-0.5"},[(d(),j(Tt(E.icon),{size:11})),f("span",up,k(E.count),1)],8,tp))),128)),r.value.statuses.length?(d(),y("span",np,"·")):I("",!0),(d(!0),y(Y,null,oe(r.value.statuses,E=>(d(),y("span",{key:"s"+E.label,"data-test":"sum-"+E.label,class:W(["inline-flex items-center gap-0.5",E.label==="success"?"text-run":E.label==="error"?"text-danger":"text-fg-muted"])},[(d(),j(Tt(E.icon),{size:11,class:W(E.label==="running"?"animate-spin motion-reduce:animate-none":"")},null,8,["class"])),f("span",rp,k(E.count),1)],10,sp))),128))])],512),x(a).status.value==="engaging"?(d(),j(j1,{key:0,title:h.$t("tools.collapsed"),body:h.$t("tools.collapsedBody"),anchor:p.value,onDismiss:m[0]||(m[0]=E=>x(a).dismiss())},null,8,["title","body","anchor"])):I("",!0),u.value?(d(),y("ul",ap,[(d(!0),y(Y,null,oe(e.steps,E=>(d(),y("li",{key:E.toolCallId},[f("button",{type:"button","data-test":"tool-row",class:"flex w-full items-center gap-2 rounded text-left text-[12px] hover:bg-fg/5",onClick:A=>s(E.toolCallId)},[f("span",{class:W(["grid h-4 w-4 shrink-0 place-items-center rounded-full",E.status==="success"?"bg-run/15":E.status==="running"?"bg-accent/15":"bg-danger/15"])},[E.status==="success"?(d(),j(x(Yt),{key:0,"data-test":"step-status-success",size:9,class:"text-run"})):E.status==="running"?(d(),j(x(It),{key:1,"data-test":"step-status-running",size:9,class:"animate-spin motion-reduce:animate-none text-accent"})):(d(),j(x(iu),{key:2,"data-test":"step-status-error",size:9,class:"text-danger"}))],2),(d(),j(Tt(x(Yn)[E.kind]),{size:12,class:"shrink-0 text-fg-muted"})),f("span",ip,k(E.title),1),E.durationMs!==void 0?(d(),y("span",lp,k(v(E.durationMs)),1)):I("",!0)],8,op),n.value.has(E.toolCallId)&&E.detail?(d(),y("div",cp,[O(da,{detail:E.detail},null,8,["detail"])])):I("",!0)]))),128))])):I("",!0)]))}}),fp={class:"overflow-hidden rounded-lg border border-border bg-surface text-xs shadow-e1"},pp={key:2,"data-test":"reasoning-shimmer",class:"ml-1 inline-block h-1.5 w-1.5 animate-pulse motion-reduce:animate-none rounded-full bg-fg-muted","aria-hidden":"true"},hp={key:0,"data-test":"reasoning-body",class:"whitespace-pre-wrap border-t border-border px-3 pb-2.5 pt-2 text-[12px] leading-relaxed text-fg-muted"},pa=ie({__name:"ReasoningPanel",props:{reasoning:{},defaultOpen:{type:Boolean,default:!1},streaming:{type:Boolean,default:!1}},setup(e){const u=T(e.defaultOpen??!1),n=K(()=>u.value);return(s,r)=>(d(),y("div",fp,[f("button",{type:"button",class:"flex w-full items-center gap-1.5 px-3 py-2 text-left text-fg-muted",onClick:r[0]||(r[0]=a=>u.value=!u.value)},[n.value?(d(),j(x(Je),{key:0,size:13})):(d(),j(x(Ft),{key:1,size:13})),O(x(Ln),{size:13,class:W(e.streaming?"text-accent":"")},null,8,["class"]),f("span",{class:W(["text-[12px] font-medium",e.streaming?"shimmer-text":""])},k(e.streaming?s.$t("reasoning.reasoningStreaming"):s.$t("reasoning.reasoning")),3),e.streaming?(d(),y("span",pp)):I("",!0)]),n.value?(d(),y("p",hp,k(e.reasoning),1)):I("",!0)]))}}),bp={class:"truncate font-mono text-[11.5px] text-fg"},mp={class:"ml-auto flex shrink-0 items-center gap-2"},gp={key:0,class:"font-mono text-[10.5px] text-fg-muted"},xp={key:0,class:"border-t border-border px-3 pb-2.5 pt-2"},vp={key:0,"data-test":"tool-step-error",class:"mb-1.5 flex items-start gap-1.5 rounded bg-danger/10 px-2 py-1.5 text-danger"},yp={class:"whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},kp=ie({__name:"ToolStepCard",props:{step:{}},setup(e){const t=T(!0);function u(n){return n===void 0?"":n>=1e3?`${(n/1e3).toFixed(1)}s`:`${n}ms`}return(n,s)=>(d(),y("div",{"data-test":"tool-step-card",class:W(["overflow-hidden rounded-lg border bg-surface text-xs shadow-e1",e.step.status==="error"?"border-danger/40":"border-border"])},[f("button",{type:"button","data-test":"tool-step-header",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-bg",onClick:s[0]||(s[0]=r=>t.value=!t.value)},[t.value?(d(),j(x(Je),{key:0,size:13,class:"text-fg-muted"})):(d(),j(x(Ft),{key:1,size:13,class:"text-fg-muted"})),(d(),j(Tt(x(Yn)[e.step.kind]),{size:13,class:"shrink-0 text-fg-muted"})),f("span",bp,k(e.step.title),1),f("span",mp,[e.step.durationMs!==void 0?(d(),y("span",gp,k(u(e.step.durationMs)),1)):I("",!0),e.step.status==="success"?(d(),j(x(Yt),{key:1,"data-test":"step-status-success",size:13,class:"text-run"})):e.step.status==="running"?(d(),j(x(It),{key:2,"data-test":"step-status-running",size:13,class:"animate-spin motion-reduce:animate-none text-accent"})):(d(),j(x(iu),{key:3,"data-test":"step-status-error",size:13,class:"text-danger"}))])]),t.value?(d(),y("div",xp,[e.step.status==="error"&&e.step.error?(d(),y("div",vp,[O(x(iu),{size:13,class:"mt-0.5 shrink-0"}),f("span",yp,k(e.step.error),1)])):I("",!0),e.step.detail?(d(),j(da,{key:1,detail:e.step.detail},null,8,["detail"])):I("",!0)])):I("",!0)],2))}}),_p={class:"space-y-2.5"},ir=ie({__name:"TurnParts",props:{parts:{},streaming:{type:Boolean}},setup(e){const t=e,u=n=>t.streaming===!0&&n===t.parts.length-1;return(n,s)=>(d(),y("div",_p,[(d(!0),y(Y,null,oe(e.parts,(r,a)=>(d(),y(Y,{key:a},[r.type==="reasoning"?(d(),j(pa,{key:0,reasoning:r.text,streaming:u(a),"default-open":!1},null,8,["reasoning","streaming"])):r.type==="tool"?(d(),j(kp,{key:1,step:r.step},null,8,["step"])):(d(),j(ca,{key:2,text:r.text,streaming:u(a),class:W(["text-[14px] leading-relaxed text-fg",u(a)?"caret":""])},null,8,["text","streaming","class"]))],64))),128))]))}}),wp=["aria-label","title"],ha=ie({__name:"CopyButton",props:{text:{}},setup(e){const t=e,u=T(!1);let n=null;async function s(){try{await navigator.clipboard.writeText(t.text)}catch{const r=document.createElement("textarea");r.value=t.text,r.style.position="fixed",r.style.opacity="0",document.body.appendChild(r),r.select();try{document.execCommand("copy")}catch{}document.body.removeChild(r)}u.value=!0,n&&clearTimeout(n),n=setTimeout(()=>u.value=!1,1200)}return(r,a)=>(d(),y("button",{"data-test":"copy-button",type:"button","aria-label":r.$t("copy.copy"),title:u.value?r.$t("copy.copied"):r.$t("copy.copy"),class:"rounded p-1 leading-none text-fg-muted hover:bg-fg/5 hover:text-fg",onClick:Xe(s,["stop"])},[u.value?(d(),j(x(Yt),{key:0,size:14,class:"text-run"})):(d(),j(x(Wa),{key:1,size:14}))],8,wp))}}),Ep={class:"relative flex-1 overflow-hidden"},Ap={class:"mx-auto max-w-3xl space-y-5"},Cp={key:0,"data-test":"loading-older",class:"flex justify-center py-1 text-[11px] text-fg-muted"},Dp=["data-scheduled-task"],$p={class:"flex max-w-[80%] flex-col items-end"},Tp=["title"],Sp={class:"whitespace-pre-wrap text-[14px] leading-relaxed text-fg"},Fp={key:1,class:"mt-1 flex items-center gap-2"},Ip={"data-test":"msg-failed",class:"text-xs text-danger"},Mp=["title","onClick"],Op={key:1,class:"cv-row group flex gap-2.5"},zp={class:"mt-0.5 grid h-6 w-6 shrink-0 place-items-center rounded-lg border border-border bg-surface"},Rp={"data-test":"msg-actions",class:"flex items-center gap-1.5 pt-0.5 text-fg-muted"},Lp={key:1,"data-test":"msg-time",class:"font-mono text-[10.5px] tabular-nums"},Np={key:2,"data-test":"msg-cancelled",class:"inline-flex items-center gap-1 text-[11px] text-warn"},Pp={key:3,"data-test":"msg-failed",class:"text-[11px] text-danger"},Bp={key:1,class:"flex gap-2.5"},qp={class:"mt-0.5 grid h-6 w-6 shrink-0 place-items-center rounded-lg border border-border bg-surface"},Up={"data-test":"msg-streaming",class:"min-w-0 flex-1"},jp=48,Hp=240,Vp=ie({__name:"MessageList",props:{messages:{},liveTurn:{},hasMoreOlder:{type:Boolean},loadingOlder:{type:Boolean},sessionKey:{},scrollToScheduled:{}},emits:["resend","loadOlder"],setup(e,{emit:t}){const u=e,n=t;function s(c){var v;return c.scheduled??((v=c.structured)==null?void 0:v.scheduled)}const r=T(null),a=T(!0);let o=null;function i(){const c=r.value;c&&(a.value=c.scrollHeight-c.scrollTop-c.clientHeight<=jp,c.scrollTop<=Hp&&u.hasMoreOlder&&!u.loadingOlder&&o===null&&(o=c.scrollHeight-c.scrollTop,n("loadOlder")))}he(()=>u.loadingOlder,(c,v)=>{if(!(v&&!c)||o===null)return;const h=o;o=null,rt(()=>{const m=r.value;m&&(m.scrollTop=m.scrollHeight-h)})});let l=0;function p(c=!1){const v=r.value;if(!v||(typeof v.scrollTo=="function"?v.scrollTo({top:v.scrollHeight,behavior:c?"smooth":"auto"}):v.scrollTop=v.scrollHeight,a.value=!0,c||typeof requestAnimationFrame!="function"))return;l&&cancelAnimationFrame(l);let h=0;const m=()=>{l=0;const E=r.value;E&&(E.scrollHeight-E.scrollTop-E.clientHeight>1&&(E.scrollTop=E.scrollHeight),++h<4&&(l=requestAnimationFrame(m)))};l=requestAnimationFrame(m)}return he(()=>u.sessionKey,()=>{a.value=!0,o=null,rt(()=>p(!1))}),he(()=>{var c;return(c=u.scrollToScheduled)==null?void 0:c.nonce},()=>{var v;const c=(v=u.scrollToScheduled)==null?void 0:v.taskId;c&&rt(()=>{var m;const h=(m=r.value)==null?void 0:m.querySelector(`[data-scheduled-task="${c}"]`);h&&typeof h.scrollIntoView=="function"&&(h.scrollIntoView({behavior:"smooth",block:"center"}),a.value=!1)})}),he(()=>{const c=u.liveTurn,v=c==null?void 0:c.parts[c.parts.length-1],h=v?v.type==="tool"?v.step.status:v.text.length:0;return[u.messages.length,(c==null?void 0:c.parts.length)??0,h]},()=>{a.value&&rt(()=>p(!1))}),(c,v)=>(d(),y("div",Ep,[f("div",{ref_key:"scroller",ref:r,"data-test":"msg-scroller",class:"thin-scroll h-full overflow-y-auto px-3 py-4 lg:px-5 lg:py-5",onScroll:i},[f("div",Ap,[e.loadingOlder?(d(),y("div",Cp,[O(x(It),{size:13,class:"animate-spin motion-reduce:animate-none"})])):I("",!0),(d(!0),y(Y,null,oe(e.messages,(h,m)=>{var E,A,_,g,w,D;return d(),y(Y,{key:h.id!==void 0?`p${h.id}`:`o${h.createdAt}:${m}`},[h.direction==="in"?(d(),y("div",{key:0,class:"cv-row flex justify-end","data-scheduled-task":(E=s(h))==null?void 0:E.taskId},[f("div",$p,[s(h)?(d(),y("span",{key:0,"data-test":"msg-scheduled-badge",class:"mb-1 inline-flex items-center gap-1 rounded-full bg-accent/10 px-2 py-0.5 text-[10.5px] font-medium text-accent",title:`${c.$t("chat.scheduledFor")} ${x(Nn)(s(h).executeAt)}`},[O(x(br),{size:11}),le(k(c.$t("chat.scheduled")),1)],8,Tp)):I("",!0),f("div",{"data-test":"msg-in",class:W(["rounded-2xl rounded-tr-md border border-accent/15 bg-accent/10 px-3.5 py-2",h.failed?"ring-1 ring-danger":""])},[f("p",Sp,k(h.text),1)],2),h.failed?(d(),y("div",Fp,[f("span",Ip,k(c.$t("chat.failedToSend")),1),f("button",{type:"button","data-test":"msg-resend",class:"inline-flex items-center gap-1 text-xs font-medium text-accent hover:opacity-80",title:c.$t("chat.resendThis"),onClick:M=>n("resend",h)},[O(x(ro),{size:12}),le(k(c.$t("chat.resend")),1)],8,Mp)])):I("",!0)])],8,Dp)):(d(),y("div",Op,[f("div",zp,[O(x(Dn),{size:13,class:"text-accent"})]),f("div",{"data-test":"msg-out",class:W(["min-w-0 flex-1 space-y-2.5",h.failed?"rounded-lg ring-1 ring-danger":""])},[(_=(A=h.structured)==null?void 0:A.parts)!=null&&_.length?(d(),j(ir,{key:0,parts:h.structured.parts},null,8,["parts"])):(d(),y(Y,{key:1},[(w=(g=h.structured)==null?void 0:g.toolSteps)!=null&&w.length?(d(),j(dp,{key:0,steps:h.structured.toolSteps},null,8,["steps"])):I("",!0),(D=h.structured)!=null&&D.reasoning?(d(),j(pa,{key:1,reasoning:h.structured.reasoning,"default-open":!1},null,8,["reasoning"])):I("",!0),h.text?(d(),j(ca,{key:2,text:h.text,class:"text-[14px] leading-relaxed text-fg"},null,8,["text"])):I("",!0)],64)),f("div",Rp,[h.text?(d(),j(ha,{key:0,text:h.text},null,8,["text"])):I("",!0),x(ks)(h.createdAt)?(d(),y("span",Lp,k(x(ks)(h.createdAt)),1)):I("",!0),h.status==="cancelled"?(d(),y("span",Np,[O(x(ja),{size:12}),le(" "+k(c.$t("chat.stopped")),1)])):I("",!0),h.failed?(d(),y("span",Pp,k(c.$t("chat.failed")),1)):I("",!0)])],2)]))],64)}),128)),e.liveTurn&&e.liveTurn.parts.length?(d(),y("div",Bp,[f("div",qp,[O(x(Dn),{size:13,class:"text-accent"})]),f("div",Up,[O(ir,{parts:e.liveTurn.parts,streaming:!0},null,8,["parts"])])])):I("",!0)])],544),Ee(f("button",{"data-test":"jump-latest",type:"button",class:"absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full border border-border bg-raised px-3 py-1 text-xs text-fg-muted shadow hover:bg-fg/5",onClick:v[0]||(v[0]=h=>p(!0))},k(c.$t("chat.jumpLatest")),513),[[Rn,!a.value]])]))}}),Wp=(e,t)=>{const u=e.__vccOpts||e;for(const[n,s]of t)u[n]=s;return u},Gp=Wp(Vp,[["__scopeId","data-v-e4c8869b"]]),ba="xacpx.composer-drafts.v1";function ma(){try{const e=sessionStorage.getItem(ba);return e?JSON.parse(e):{}}catch{return{}}}function Kp(e){try{sessionStorage.setItem(ba,JSON.stringify(e))}catch{}}function lr(e){return e?ma()[e]??"":""}function cr(e,t){if(!e)return;const u=ma();t?u[e]=t:delete u[e],Kp(u)}const Zp=yt("composer",()=>{const e=T(null);let t=0;function u(n,s){e.value={key:n,text:s,seq:++t}}return{insertRequest:e,requestInsert:u}}),Yp=yt("session-controls",()=>{const e=T(void 0),t=T([]),u=T(!1),n=T("");function s(){e.value=void 0,t.value=[],n.value=""}async function r(o,i){if(!o||!i){s();return}u.value=!0,n.value="";try{const l=await ue.rpc(o,"control.session.model.get",{sessionAlias:i});if(Gt(l)){s();return}e.value=typeof l.current=="string"?l.current:void 0,t.value=Array.isArray(l.available)?l.available:[]}catch{s()}finally{u.value=!1}}async function a(o,i,l){n.value="";const p=e.value;e.value=l;try{const c=await ue.rpc(o,"control.session.model.set",{sessionAlias:i,modelId:l});return Gt(c)?(e.value=p,n.value=c.error.message,!1):!0}catch(c){return e.value=p,n.value=c instanceof Error?c.message:"set-failed",!1}}return{current:e,available:t,loading:u,error:n,reset:s,loadModel:r,setModel:a}}),Xp={class:"rounded-lg border border-border bg-surface shadow-e2 focus-within:border-accent/50 transition-colors"},Jp=["placeholder"],Qp={class:"flex items-center justify-between px-2.5 pb-2.5 pt-0.5"},e2={key:0,class:"relative flex items-center gap-2"},t2=["disabled"],u2={class:"font-mono text-[11.5px] font-medium text-fg"},n2={key:0,"data-test":"model-menu",class:"absolute bottom-full left-0 z-10 mb-1 max-h-48 min-w-40 overflow-y-auto rounded-lg border border-border bg-raised shadow-lg"},s2=["onClick"],r2={class:"font-mono"},a2={key:1,"data-test":"model-error",class:"text-xs text-danger"},o2=["title"],i2={class:"relative h-1 w-8 shrink-0 overflow-hidden rounded-full bg-border"},l2={class:"shrink-0 text-[11.5px] font-medium tabular-nums text-fg-muted"},c2={key:1},d2=["disabled"],f2=ie({__name:"PromptInput",props:{busy:{type:Boolean},draftKey:{},instanceId:{},sessionAlias:{}},emits:["send","cancel"],setup(e,{emit:t}){const u=e,n=t,s=Zp(),r=Yp(),a=kt(),o=K(()=>{const g=a.sessionUsage;if(!g||g.size<=0)return null;const w=Math.min(100,Math.round(g.used/g.size*100)),D=w>=90?"danger":w>=75?"warn":"accent";return{used:g.used,size:g.size,pct:w,tone:D}}),i=T(!1);he(()=>[u.instanceId,u.sessionAlias],([g,w])=>{r.loadModel(g??null,w??null),i.value=!1},{immediate:!0});async function l(g){i.value=!1,u.instanceId&&u.sessionAlias&&await r.setModel(u.instanceId,u.sessionAlias,g)}const p=T(lr(u.draftKey??"")),c=T(null);he(p,g=>cr(u.draftKey??"",g)),he(()=>u.draftKey,(g,w)=>{w&&cr(w,p.value),p.value=lr(g??"")}),he(()=>s.insertRequest,g=>{!g||g.key!==(u.draftKey??"")||(p.value=p.value.trim()?`${p.value.trimEnd()} ${g.text}`:g.text,rt(()=>{var w;return(w=c.value)==null?void 0:w.focus()}))});const v=T([]);let h=-1;function m(){if(u.busy)return;const g=p.value.trim();g&&(n("send",g),v.value[v.value.length-1]!==g&&v.value.push(g),h=-1,p.value="")}function E(g){if(v.value.length!==0){if(g===-1)h=h===-1?v.value.length-1:Math.max(0,h-1);else{if(h===-1)return;if(h=h+1,h>=v.value.length){h=-1,p.value="";return}}p.value=v.value[h]}}function A(g){var D,M;if(g.isComposing)return;if(g.key==="Escape"){u.busy&&(n("cancel"),g.preventDefault());return}if(g.key==="Enter"&&!g.shiftKey){m(),g.preventDefault();return}const w=(((D=c.value)==null?void 0:D.selectionStart)??0)===0&&(((M=c.value)==null?void 0:M.selectionEnd)??0)===0;if(g.key==="ArrowUp"&&w){E(-1),g.preventDefault();return}if(g.key==="ArrowDown"&&h!==-1&&w){E(1),g.preventDefault();return}}function _(){h=-1}return(g,w)=>(d(),y("form",{class:"relative border-t border-border px-0 py-3 lg:p-3",onSubmit:Xe(m,["prevent"])},[f("div",Xp,[Ee(f("textarea",{ref_key:"textarea",ref:c,"onUpdate:modelValue":w[0]||(w[0]=D=>p.value=D),rows:"2",class:"w-full resize-none bg-transparent px-3.5 pt-2.5 pb-1 text-[16px] lg:text-[14px] leading-relaxed text-fg placeholder:text-fg-muted focus:outline-none",placeholder:e.busy?g.$t("chat.working"):g.$t("chat.message"),onInput:_,onKeydown:A},null,40,Jp),[[Oe,p.value]]),f("div",Qp,[e.instanceId&&e.sessionAlias?(d(),y("div",e2,[f("button",{type:"button","data-test":"model-chip",class:"flex items-center gap-1.5 px-1.5 py-1 rounded-md text-fg-muted hover:bg-raised transition-colors disabled:opacity-60",disabled:!x(r).available.length,onClick:w[1]||(w[1]=D=>i.value=!i.value)},[O(x(Ln),{size:14,class:"text-accent"}),f("span",u2,k(x(r).current||g.$t("chat.model")),1),x(r).available.length?(d(),j(x(Je),{key:0,size:13})):I("",!0)],8,t2),i.value&&x(r).available.length?(d(),y("ul",n2,[(d(!0),y(Y,null,oe(x(r).available,D=>(d(),y("li",{key:D},[f("button",{type:"button","data-test":"model-option",class:W(["flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm",D===x(r).current?"bg-accent/10 text-accent":"hover:bg-fg/10 text-fg-muted"]),onClick:M=>l(D)},[f("span",r2,k(D),1),D===x(r).current?(d(),j(x(Yt),{key:0,size:14,class:"ml-auto"})):I("",!0)],10,s2)]))),128))])):I("",!0),x(r).error?(d(),y("span",a2,k(x(r).error),1)):I("",!0),o.value?(d(),y("span",{key:2,"data-test":"context-meter",class:"flex shrink-0 items-center gap-1.5 whitespace-nowrap pl-0.5",title:g.$t("chat.contextUsage",{used:o.value.used.toLocaleString(),size:o.value.size.toLocaleString()})},[O(x(Xa),{size:13,class:W(["shrink-0",o.value.tone==="danger"?"text-danger":o.value.tone==="warn"?"text-warn":"text-accent"])},null,8,["class"]),f("span",i2,[f("span",{class:W(["absolute inset-y-0 left-0 rounded-full",o.value.tone==="danger"?"bg-danger":o.value.tone==="warn"?"bg-warn":"bg-accent"]),style:Lu({width:o.value.pct+"%"})},null,6)]),f("span",l2,k(o.value.pct)+"%",1)],8,o2)):I("",!0)])):(d(),y("span",c2)),e.busy?(d(),y("button",{key:2,type:"button","data-test":"composer-stop",class:"flex items-center gap-1.5 pl-3 pr-2.5 py-1.5 rounded-md bg-danger text-white text-[12.5px] font-semibold hover:opacity-90 transition-all",onClick:w[2]||(w[2]=D=>n("cancel"))},k(g.$t("chat.stop")),1)):(d(),y("button",{key:3,type:"submit","data-test":"composer-send",disabled:!p.value.trim(),class:"flex items-center gap-1.5 pl-3 pr-2.5 py-1.5 rounded-md bg-accent text-white text-[12.5px] font-semibold shadow-e1 hover:bg-accent-hover hover:shadow-e2 transition-all disabled:bg-fg/10 disabled:text-fg-muted disabled:shadow-none"},[le(k(g.$t("chat.send"))+" ",1),O(x(ao),{size:14})],8,d2))])])],32))}}),p2={key:0,"data-test":"plan-panel",class:"rounded-md border border-border bg-surface p-2 text-sm"},h2=["aria-expanded","aria-label"],b2={class:"ml-auto font-mono tabular-nums"},m2=["data-test"],g2=ie({__name:"PlanPanel",props:{entries:{},active:{type:Boolean,default:void 0}},setup(e){const t=e,u=T(t.active??!0),n=T(null),s=K(()=>t.entries.filter(l=>l.status==="completed").length),r=K(()=>{let l=-1;return t.entries.forEach((p,c)=>{p.status==="in_progress"&&(l=c)}),l>=0?l:(t.entries.forEach((p,c)=>{p.status==="completed"&&(l=c)}),l>=0?l:t.entries.length-1)}),a=l=>l==="completed"?hr:l==="in_progress"?It:Va,o=l=>l==="completed"?"text-run":l==="in_progress"?"text-accent":"text-fg-muted";async function i(){var c;if(!u.value)return;await rt();const l=n.value;if(!l)return;const p=l.children[r.value];(c=p==null?void 0:p.scrollIntoView)==null||c.call(p,{block:"nearest"})}return he(()=>t.entries,i,{flush:"post"}),he(u,i),he(()=>t.active,l=>{l!==void 0&&(u.value=l)}),(l,p)=>e.entries.length?(d(),y("div",p2,[f("button",{type:"button","data-test":"plan-toggle","aria-expanded":u.value,"aria-controls":"plan-list","aria-label":l.$t("plan.togglePlan"),class:"mb-1 flex w-full items-center gap-1.5 text-xs font-semibold uppercase text-fg-muted hover:text-fg transition-colors",onClick:p[0]||(p[0]=c=>u.value=!u.value)},[u.value?(d(),j(x(Je),{key:0,size:12,class:"shrink-0"})):(d(),j(x(Ft),{key:1,size:12,class:"shrink-0"})),le(" "+k(l.$t("plan.title"))+" ",1),f("span",b2,k(s.value)+"/"+k(e.entries.length),1)],8,h2),Ee(f("ul",{id:"plan-list",ref_key:"listEl",ref:n,class:"max-h-48 overflow-y-auto thin-scroll space-y-0.5"},[(d(!0),y(Y,null,oe(e.entries,(c,v)=>(d(),y("li",{key:v,"data-test":v===r.value?"plan-active":void 0,class:"flex items-start gap-1.5"},[(d(),j(Tt(a(c.status)),{size:13,class:W([o(c.status),"mt-0.5 shrink-0",c.status==="in_progress"?"animate-spin motion-reduce:animate-none":""])},null,8,["class"])),f("span",{class:W(["min-w-0",c.status==="completed"?"text-fg-muted line-through":"text-fg"])},k(c.content),3)],8,m2))),128))],512),[[Rn,u.value]])])):I("",!0)}}),x2={class:"flex h-full flex-1 flex-col"},v2={key:0,class:"flex flex-1 items-center justify-center text-fg-muted"},y2={class:"shrink-0 flex min-h-11 lg:h-11 items-center gap-2.5 border-b border-border bg-surface/60 px-3 lg:px-5 py-1.5 lg:py-0 backdrop-blur-md"},k2={class:"hidden lg:block text-[14px] font-semibold tracking-tight text-fg"},_2={key:0,class:"flex min-w-0 flex-1 items-center gap-1 overflow-hidden"},w2=["title"],E2={class:"min-w-0 truncate"},A2={key:1,"data-test":"ctx-chip-instance",class:"flex min-w-0 max-w-[9rem] items-center gap-1 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted"},C2={class:"min-w-0 truncate"},D2={key:2,"data-test":"ctx-chip-agent",class:"flex min-w-0 max-w-[9rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted"},$2={class:"min-w-0 truncate"},T2=["title"],S2={key:0,class:"min-w-0 truncate font-mono"},F2={key:1,class:"shrink-0 italic"},I2={class:"shrink-0 text-warn"},M2={key:0,"data-test":"chat-error",class:"bg-danger/10 px-4 py-1 text-xs text-danger"},O2={class:"shrink-0 space-y-2 bg-gradient-to-t from-bg to-transparent px-2 lg:px-5 pb-4 pt-1.5"},z2={key:0,"data-test":"turn-hud",class:"flex items-center gap-2 rounded-lg border border-run/20 bg-run/8 px-3 py-1.5"},R2={class:"text-[12px] font-semibold text-run"},L2={class:"font-mono text-[12px] font-semibold tabular-nums text-run"},N2={key:0,class:"text-[11.5px] text-fg-muted"},P2=ie({__name:"ChatPane",emits:["show-files"],setup(e,{emit:t}){const u=t,n=kt(),s=ot(),r=Bu(),a=K(()=>n.instanceId?s.byId(n.instanceId):void 0),o=K(()=>{var m;return(m=a.value)==null?void 0:m.sessions.find(E=>E.alias===n.sessionAlias)});he(()=>{var m;return[n.instanceId,(m=o.value)==null?void 0:m.workspace]},([m,E])=>{m&&E?r.loadGitSummary(m,E):r.gitSummary=null},{immediate:!0});const i=T(Date.now()),l=setInterval(()=>{i.value=Date.now()},1e3);zn(()=>clearInterval(l));const p=K(()=>{if(!n.liveTurn)return"";const m=Math.max(0,Math.floor((i.value-n.liveTurn.startedAt)/1e3));return`${Math.floor(m/60)}:${String(m%60).padStart(2,"0")}`}),c=K(()=>n.liveToolSteps.filter(m=>m.status==="running").length),v=["Working","Thinking","Pondering","Cogitating","Reasoning","Computing","Churning","Crunching","Percolating","Noodling","Mulling","Brewing","Processing","Deliberating","Ruminating","Synthesizing","Wrangling","Tinkering"],h=K(()=>{if(!n.liveTurn)return v[0];const m=Math.max(0,Math.floor((i.value-n.liveTurn.startedAt)/1e3));return v[Math.floor(m/4)%v.length]});return(m,E)=>{var A,_,g,w;return d(),y("div",x2,[x(n).sessionAlias?(d(),y(Y,{key:1},[f("div",y2,[f("h1",k2,k(x(n).sessionAlias),1),o.value||a.value?(d(),y("div",_2,[(A=o.value)!=null&&A.workspace?(d(),y("button",{key:0,"data-test":"ctx-chip-workspace",class:"flex min-w-0 max-w-[10rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted hover:bg-fg/5",title:m.$t("chat.browseFiles"),onClick:E[0]||(E[0]=D=>u("show-files"))},[O(x($n),{size:11,class:"shrink-0 text-warn"}),f("span",E2,k(o.value.workspace),1)],8,w2)):I("",!0),(_=a.value)!=null&&_.name?(d(),y("span",A2,[E[4]||(E[4]=f("span",{class:"shrink-0 font-mono text-accent"},"@",-1)),f("span",C2,k(a.value.name),1)])):I("",!0),(g=o.value)!=null&&g.agent?(d(),y("span",D2,[O(x(Dn),{size:11,class:"shrink-0 text-accent"}),f("span",$2,k(o.value.agent),1)])):I("",!0),x(r).gitSummary?(d(),y("button",{key:3,"data-test":"git-summary",class:"flex min-w-0 max-w-[13rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted hover:bg-fg/5",title:x(r).gitSummary.branch||m.$t("chat.viewChanges"),onClick:E[1]||(E[1]=D=>{x(r).tab="changes",u("show-files")})},[O(x(Tn),{size:11,class:"shrink-0 text-warn"}),x(r).gitSummary.branch?(d(),y("span",S2,k(x(r).gitSummary.branch),1)):x(r).gitSummary.detached?(d(),y("span",F2,k(m.$t("files.detached")),1)):I("",!0),E[5]||(E[5]=f("span",{class:"h-1 w-1 shrink-0 rounded-full bg-warn","aria-hidden":"true"},null,-1)),f("span",I2,k(x(r).gitSummary.changedCount)+" "+k(m.$t("chat.changed")),1)],8,T2)):I("",!0)])):I("",!0)]),x(n).error?(d(),y("div",M2,[le(k(x(n).error)+" ",1),f("button",{class:"ml-2 text-danger underline",onClick:E[2]||(E[2]=D=>x(n).error="")},k(m.$t("common.dismiss")),1)])):I("",!0),O(Gp,{messages:x(n).messages,"live-turn":x(n).liveTurn,"session-key":`${x(n).instanceId}\0${x(n).sessionAlias}`,"scroll-to-scheduled":x(n).scrollRequest,"has-more-older":x(n).hasMoreOlder,"loading-older":x(n).loadingOlder,onResend:x(n).resend,onLoadOlder:x(n).loadOlder},null,8,["messages","live-turn","session-key","scroll-to-scheduled","has-more-older","loading-older","onResend","onLoadOlder"]),f("div",O2,[x(n).busy?(d(),y("div",z2,[E[6]||(E[6]=f("span",{class:"h-2 w-2 rounded-full bg-run pulse-dot","aria-hidden":"true"},null,-1)),f("span",R2,k(h.value)+"…",1),f("span",L2,k(p.value),1),c.value>0?(d(),y("span",N2,"· "+k(c.value)+" "+k(c.value===1?m.$t("chat.tool"):m.$t("chat.tools")),1)):I("",!0),E[7]||(E[7]=f("span",{class:"flex-1"},null,-1)),f("button",{"data-test":"cancel-turn",class:"flex items-center gap-1.5 text-[11.5px] font-medium text-danger transition-opacity hover:opacity-80",onClick:E[3]||(E[3]=(...D)=>x(n).cancel&&x(n).cancel(...D))},[O(x(at),{size:13}),le(k(m.$t("common.cancel")),1)])])):I("",!0),(w=x(n).sessionPlan)!=null&&w.length?(d(),j(g2,{key:1,entries:x(n).sessionPlan,active:x(n).busy},null,8,["entries","active"])):I("",!0),O(f2,{busy:x(n).busy,"draft-key":`${x(n).instanceId}\0${x(n).sessionAlias}`,"instance-id":x(n).instanceId,"session-alias":x(n).sessionAlias,onSend:x(n).send,onCancel:x(n).cancel},null,8,["busy","draft-key","instance-id","session-alias","onSend","onCancel"])])],64)):(d(),y("div",v2,k(m.$t("chat.selectSession")),1))])}}}),B2={class:"flex h-full flex-1 flex-col bg-bg","data-test":"file-viewer-center"},q2={class:"flex h-11 shrink-0 items-center gap-2 border-b border-border bg-surface/60 px-3 backdrop-blur-md"},U2=["aria-label"],j2=["aria-label"],H2={class:"truncate font-mono text-[12.5px] text-fg"},V2={class:"shrink-0 text-[11px] text-fg-muted"},W2={key:0,class:"shrink-0 rounded bg-warn/10 px-1 text-[10.5px] text-warn"},G2={key:1,class:"shrink-0 rounded bg-fg/5 px-1 text-[10.5px] text-fg-muted"},K2={class:"truncate font-mono text-[12.5px] text-fg"},Z2={class:"ml-auto flex shrink-0 items-center gap-1"},Y2=["aria-label"],X2={class:"min-h-0 flex-1 overflow-auto thin-scroll"},J2={key:0,"data-test":"fv-file-body",class:"font-mono text-[12.5px] leading-relaxed"},Q2={class:"sticky left-0 w-14 shrink-0 select-none border-r border-border bg-surface px-3 text-right text-fg-muted tabular-nums"},eh={class:"whitespace-pre px-4 text-fg"},th={key:1,class:"overflow-x-auto p-4 font-mono text-[12.5px] leading-relaxed text-fg whitespace-pre"},uh={key:2,class:"p-6 text-sm text-fg-muted"},nh={key:0,"data-test":"fv-diff-body",class:"p-4 font-mono text-[12.5px] leading-relaxed whitespace-pre"},sh={key:1,class:"p-6 text-sm text-fg-muted"},rh={key:2,class:"px-4 py-1 text-xs text-warn"},ah=5e3,oh=ie({__name:"FileViewer",emits:["back","close"],setup(e,{emit:t}){const u=t,n=Bu(),s=K(()=>{const o=n.file;return!o||o.binary?[]:o.content.split(`
268
+ `)}),n=K(()=>({add:u.value.add.filter(s=>s.length>0).length,del:u.value.del.filter(s=>s.length>0).length}));return(s,r)=>(d(),y("div",b1,[e.detail.type==="diff"?(d(),y(Y,{key:0},[f("div",m1,[f("span",g1,[O(x(Fu),{size:14,class:"shrink-0"}),f("span",x1,k(e.detail.path),1)]),f("span",v1,[n.value.add?(d(),y("span",y1,"+"+k(n.value.add),1)):I("",!0),n.value.del?(d(),y("span",k1,"−"+k(n.value.del),1)):I("",!0)])]),O(Ut,null,{default:ft(()=>[f("div",_1,[(d(!0),y(Y,null,oe(u.value.del,(a,o)=>(d(),y("div",{key:"d"+o,"data-test":"diff-del",class:"whitespace-pre text-danger"},"- "+k(a),1))),128)),(d(!0),y(Y,null,oe(u.value.add,(a,o)=>(d(),y("div",{key:"a"+o,"data-test":"diff-add",class:"whitespace-pre text-run"},"+ "+k(a),1))),128))])]),_:1})],64)):e.detail.type==="command"?(d(),y(Y,{key:1},[f("div",w1,"$ "+k(e.detail.command),1),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",E1,k(e.detail.output),1)]),_:1})):I("",!0),e.detail.exitCode!==void 0?(d(),y("div",A1,"exit "+k(e.detail.exitCode),1)):I("",!0)],64)):e.detail.type==="read"?(d(),y(Y,{key:2},[f("div",C1,[O(x(Fu),{size:14,class:"shrink-0"}),f("span",D1,k(e.detail.path),1),e.detail.lines?(d(),y("span",$1,k(e.detail.lines),1)):I("",!0)]),e.detail.preview?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",T1,k(e.detail.preview),1)]),_:1})):I("",!0)],64)):e.detail.type==="search"?(d(),y(Y,{key:3},[f("div",S1,[O(x(Nu),{size:14,class:"shrink-0"}),f("span",F1,k(e.detail.query),1)]),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",I1,k(e.detail.output),1)]),_:1})):I("",!0)],64)):e.detail.type==="fields"?(d(),y(Y,{key:4},[f("dl",M1,[(d(!0),y(Y,null,oe(e.detail.fields,a=>(d(),y(Y,{key:a.label},[f("dt",O1,k(a.label),1),f("dd",{"data-test":"field-"+a.label,class:"font-mono text-fg break-all"},k(a.value),9,z1)],64))),128))]),e.detail.output?(d(),j(Ut,{key:0},{default:ft(()=>[f("pre",R1,k(e.detail.output),1)]),_:1})):I("",!0)],64)):e.detail.type==="text"?(d(),j(Ut,{key:5},{default:ft(()=>[f("p",L1,k(e.detail.text),1)]),_:1})):I("",!0)]))}}),N1=ie({__name:"FueDot",props:{pulsing:{type:Boolean,default:!0}},setup(e){return(t,u)=>(d(),y("span",{"data-test":"fue-dot",class:W(["inline-block h-2 w-2 rounded-full bg-accent",e.pulsing?"animate-pulse motion-reduce:animate-none":""]),"aria-hidden":"true"},null,2))}}),jt=8;function P1(e,t,u,n=jt){const s=e.top+e.height+n,r=e.top-t.height-n,a=u.height-(e.top+e.height),o=e.top,p=s+t.height>u.height-jt&&o>a?"above":"below",c=p==="above"?Math.max(jt,r):s,v=e.left+e.width/2-t.width/2,h=Math.max(jt,u.width-t.width-jt),m=Math.min(Math.max(jt,v),h);return{top:c,left:m,placement:p}}const B1={class:"flex items-center gap-2 font-medium text-fg"},q1={class:"mt-1 text-xs text-fg-muted"},U1={class:"mt-2 flex justify-end"},j1=ie({__name:"FueCallout",props:{title:{},body:{},anchor:{}},emits:["dismiss"],setup(e,{emit:t}){const u=e,n=t,s=T(null),r=T({visibility:"hidden"});function a(){const i=s.value;if(!i)return;const l={width:i.offsetWidth||256,height:i.offsetHeight||96},p={width:window.innerWidth,height:window.innerHeight};if(u.anchor){const c=P1(u.anchor,l,p);r.value={top:`${c.top}px`,left:`${c.left}px`,visibility:"visible"}}else r.value={top:`${Math.max(8,p.height/2-l.height/2)}px`,left:`${Math.max(8,p.width/2-l.width/2)}px`,visibility:"visible"}}function o(i){i.key==="Escape"&&n("dismiss")}return mt(()=>{a(),window.addEventListener("keydown",o),window.addEventListener("resize",a)}),zu(()=>{window.removeEventListener("keydown",o),window.removeEventListener("resize",a)}),(i,l)=>(d(),j(Ru,{to:"body"},[f("div",{ref_key:"card",ref:s,"data-test":"fue-callout",class:"fixed z-50 w-64 rounded-lg border border-border bg-raised p-3 text-sm shadow-lg",style:Lu(r.value),role:"dialog"},[f("p",B1,[l[1]||(l[1]=f("span",{class:"inline-block h-2 w-2 rounded-full bg-accent","aria-hidden":"true"},null,-1)),le(" "+k(e.title),1)]),f("p",q1,k(e.body),1),f("div",U1,[f("button",{"data-test":"fue-dismiss",type:"button",class:"rounded bg-accent px-2 py-1 text-xs font-medium text-white hover:bg-accent-hover",onClick:l[0]||(l[0]=p=>n("dismiss"))},k(i.$t("fue.gotIt")),1)])],4)]))}}),fa="xacpx.fue.v1.";function H1(e){try{return localStorage.getItem(fa+e)==="1"}catch{return!1}}function V1(e){try{localStorage.setItem(fa+e,"1")}catch{}}function W1(e){const t=T(H1(e)?"acknowledged":"unseen");function u(){t.value==="unseen"&&(t.value="engaging")}function n(){t.value="acknowledged",V1(e)}return{status:t,engage:u,dismiss:n}}const Yn={read:Ba,search:Nu,execute:lo,edit:no,think:Ln,other:gr},G1={running:It,success:Yt,error:at},K1=["read","search","execute","edit","think","other"],Z1=["running","success","error"],or=5;function Y1(e){const t=new Map,u=new Map;for(const n of e)t.set(n.kind,(t.get(n.kind)??0)+1),u.set(n.status,(u.get(n.status)??0)+1);return{kinds:K1.filter(n=>t.has(n)).map(n=>({icon:Yn[n],count:t.get(n),label:n})),statuses:Z1.filter(n=>u.has(n)).map(n=>({icon:G1[n],count:u.get(n),label:n}))}}const X1={class:"overflow-hidden rounded-lg border border-border bg-surface text-xs shadow-e1"},J1={class:"inline-flex items-center gap-1.5 text-[11.5px] font-semibold text-fg-muted"},Q1={key:3,"data-test":"tool-count",class:"font-mono text-[10.5px] text-fg-muted"},ep={"data-test":"tool-summary",class:"ml-1 flex items-center gap-1.5 text-[10.5px] text-fg-muted"},tp=["data-test"],up={class:"tabular-nums"},np={key:0,class:"text-fg-muted"},sp=["data-test"],rp={class:"tabular-nums"},ap={key:1,class:"space-y-1 border-t border-border px-3 pb-2.5 pt-2"},op=["onClick"],ip={class:"truncate font-mono text-[11px] text-fg"},lp={key:0,class:"ml-auto font-mono text-[10.5px] text-fg-muted"},cp={key:0,class:"px-2 pb-2 pt-1"},dp=ie({__name:"ToolCallPanel",props:{steps:{}},setup(e){const t=e,u=T(t.steps.length<=or),n=T(new Set);function s(h){n.value.has(h)?n.value.delete(h):n.value.add(h),n.value=new Set(n.value)}const r=K(()=>Y1(t.steps)),a=W1("tool-group-collapse"),o=K(()=>t.steps.length>or),i=K(()=>o.value&&a.status.value!=="acknowledged"),l=T(null),p=T(null);function c(){var h;if(u.value=!u.value,i.value){const m=(h=l.value)==null?void 0:h.getBoundingClientRect();m&&(p.value={top:m.top,left:m.left,width:m.width,height:m.height}),a.engage()}}function v(h){return h===void 0?"":h>=1e3?`${(h/1e3).toFixed(1)}s`:`${h}ms`}return(h,m)=>(d(),y("div",X1,[f("button",{ref_key:"header",ref:l,type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-bg",onClick:c},[u.value?(d(),j(x(Je),{key:0,size:13,class:"text-fg-muted"})):(d(),j(x(Ft),{key:1,size:13,class:"text-fg-muted"})),f("span",J1,[O(x(gr),{size:13}),le(" "+k(h.$t("tools.toolSteps")),1)]),i.value?(d(),j(N1,{key:2,pulsing:x(a).status.value==="unseen"},null,8,["pulsing"])):(d(),y("span",Q1,k(e.steps.length),1)),f("span",ep,[(d(!0),y(Y,null,oe(r.value.kinds,E=>(d(),y("span",{key:"k"+E.label,"data-test":"sum-"+E.label,class:"inline-flex items-center gap-0.5"},[(d(),j(Tt(E.icon),{size:11})),f("span",up,k(E.count),1)],8,tp))),128)),r.value.statuses.length?(d(),y("span",np,"·")):I("",!0),(d(!0),y(Y,null,oe(r.value.statuses,E=>(d(),y("span",{key:"s"+E.label,"data-test":"sum-"+E.label,class:W(["inline-flex items-center gap-0.5",E.label==="success"?"text-run":E.label==="error"?"text-danger":"text-fg-muted"])},[(d(),j(Tt(E.icon),{size:11,class:W(E.label==="running"?"animate-spin motion-reduce:animate-none":"")},null,8,["class"])),f("span",rp,k(E.count),1)],10,sp))),128))])],512),x(a).status.value==="engaging"?(d(),j(j1,{key:0,title:h.$t("tools.collapsed"),body:h.$t("tools.collapsedBody"),anchor:p.value,onDismiss:m[0]||(m[0]=E=>x(a).dismiss())},null,8,["title","body","anchor"])):I("",!0),u.value?(d(),y("ul",ap,[(d(!0),y(Y,null,oe(e.steps,E=>(d(),y("li",{key:E.toolCallId},[f("button",{type:"button","data-test":"tool-row",class:"flex w-full items-center gap-2 rounded text-left text-[12px] hover:bg-fg/5",onClick:A=>s(E.toolCallId)},[f("span",{class:W(["grid h-4 w-4 shrink-0 place-items-center rounded-full",E.status==="success"?"bg-run/15":E.status==="running"?"bg-accent/15":"bg-danger/15"])},[E.status==="success"?(d(),j(x(Yt),{key:0,"data-test":"step-status-success",size:9,class:"text-run"})):E.status==="running"?(d(),j(x(It),{key:1,"data-test":"step-status-running",size:9,class:"animate-spin motion-reduce:animate-none text-accent"})):(d(),j(x(iu),{key:2,"data-test":"step-status-error",size:9,class:"text-danger"}))],2),(d(),j(Tt(x(Yn)[E.kind]),{size:12,class:"shrink-0 text-fg-muted"})),f("span",ip,k(E.title),1),E.durationMs!==void 0?(d(),y("span",lp,k(v(E.durationMs)),1)):I("",!0)],8,op),n.value.has(E.toolCallId)&&E.detail?(d(),y("div",cp,[O(da,{detail:E.detail},null,8,["detail"])])):I("",!0)]))),128))])):I("",!0)]))}}),fp={class:"overflow-hidden rounded-lg border border-border bg-surface text-xs shadow-e1"},pp={key:2,"data-test":"reasoning-shimmer",class:"ml-1 inline-block h-1.5 w-1.5 animate-pulse motion-reduce:animate-none rounded-full bg-fg-muted","aria-hidden":"true"},hp={key:0,"data-test":"reasoning-body",class:"whitespace-pre-wrap border-t border-border px-3 pb-2.5 pt-2 text-[12px] leading-relaxed text-fg-muted"},pa=ie({__name:"ReasoningPanel",props:{reasoning:{},defaultOpen:{type:Boolean,default:!1},streaming:{type:Boolean,default:!1}},setup(e){const u=T(e.defaultOpen??!1),n=K(()=>u.value);return(s,r)=>(d(),y("div",fp,[f("button",{type:"button",class:"flex w-full items-center gap-1.5 px-3 py-2 text-left text-fg-muted",onClick:r[0]||(r[0]=a=>u.value=!u.value)},[n.value?(d(),j(x(Je),{key:0,size:13})):(d(),j(x(Ft),{key:1,size:13})),O(x(Ln),{size:13,class:W(e.streaming?"text-accent":"")},null,8,["class"]),f("span",{class:W(["text-[12px] font-medium",e.streaming?"shimmer-text":""])},k(e.streaming?s.$t("reasoning.reasoningStreaming"):s.$t("reasoning.reasoning")),3),e.streaming?(d(),y("span",pp)):I("",!0)]),n.value?(d(),y("p",hp,k(e.reasoning),1)):I("",!0)]))}}),bp={class:"truncate font-mono text-[11.5px] text-fg"},mp={class:"ml-auto flex shrink-0 items-center gap-2"},gp={key:0,class:"font-mono text-[10.5px] text-fg-muted"},xp={key:0,class:"border-t border-border px-3 pb-2.5 pt-2"},vp={key:0,"data-test":"tool-step-error",class:"mb-1.5 flex items-start gap-1.5 rounded bg-danger/10 px-2 py-1.5 text-danger"},yp={class:"whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"},kp=ie({__name:"ToolStepCard",props:{step:{}},setup(e){const t=T(!0);function u(n){return n===void 0?"":n>=1e3?`${(n/1e3).toFixed(1)}s`:`${n}ms`}return(n,s)=>(d(),y("div",{"data-test":"tool-step-card",class:W(["overflow-hidden rounded-lg border bg-surface text-xs shadow-e1",e.step.status==="error"?"border-danger/40":"border-border"])},[f("button",{type:"button","data-test":"tool-step-header",class:"flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-bg",onClick:s[0]||(s[0]=r=>t.value=!t.value)},[t.value?(d(),j(x(Je),{key:0,size:13,class:"text-fg-muted"})):(d(),j(x(Ft),{key:1,size:13,class:"text-fg-muted"})),(d(),j(Tt(x(Yn)[e.step.kind]),{size:13,class:"shrink-0 text-fg-muted"})),f("span",bp,k(e.step.title),1),f("span",mp,[e.step.durationMs!==void 0?(d(),y("span",gp,k(u(e.step.durationMs)),1)):I("",!0),e.step.status==="success"?(d(),j(x(Yt),{key:1,"data-test":"step-status-success",size:13,class:"text-run"})):e.step.status==="running"?(d(),j(x(It),{key:2,"data-test":"step-status-running",size:13,class:"animate-spin motion-reduce:animate-none text-accent"})):(d(),j(x(iu),{key:3,"data-test":"step-status-error",size:13,class:"text-danger"}))])]),t.value?(d(),y("div",xp,[e.step.status==="error"&&e.step.error?(d(),y("div",vp,[O(x(iu),{size:13,class:"mt-0.5 shrink-0"}),f("span",yp,k(e.step.error),1)])):I("",!0),e.step.detail?(d(),j(da,{key:1,detail:e.step.detail},null,8,["detail"])):I("",!0)])):I("",!0)],2))}}),_p={class:"space-y-2.5"},ir=ie({__name:"TurnParts",props:{parts:{},streaming:{type:Boolean}},setup(e){const t=e,u=n=>t.streaming===!0&&n===t.parts.length-1;return(n,s)=>(d(),y("div",_p,[(d(!0),y(Y,null,oe(e.parts,(r,a)=>(d(),y(Y,{key:a},[r.type==="reasoning"?(d(),j(pa,{key:0,reasoning:r.text,streaming:u(a),"default-open":!1},null,8,["reasoning","streaming"])):r.type==="tool"?(d(),j(kp,{key:1,step:r.step},null,8,["step"])):(d(),j(ca,{key:2,text:r.text,streaming:u(a),class:W(["text-[14px] leading-relaxed text-fg",u(a)?"caret":""])},null,8,["text","streaming","class"]))],64))),128))]))}}),wp=["aria-label","title"],ha=ie({__name:"CopyButton",props:{text:{}},setup(e){const t=e,u=T(!1);let n=null;async function s(){try{await navigator.clipboard.writeText(t.text)}catch{const r=document.createElement("textarea");r.value=t.text,r.style.position="fixed",r.style.opacity="0",document.body.appendChild(r),r.select();try{document.execCommand("copy")}catch{}document.body.removeChild(r)}u.value=!0,n&&clearTimeout(n),n=setTimeout(()=>u.value=!1,1200)}return(r,a)=>(d(),y("button",{"data-test":"copy-button",type:"button","aria-label":r.$t("copy.copy"),title:u.value?r.$t("copy.copied"):r.$t("copy.copy"),class:"rounded p-1 leading-none text-fg-muted hover:bg-fg/5 hover:text-fg",onClick:Xe(s,["stop"])},[u.value?(d(),j(x(Yt),{key:0,size:14,class:"text-run"})):(d(),j(x(Wa),{key:1,size:14}))],8,wp))}}),Ep={class:"relative flex-1 overflow-hidden"},Ap={class:"mx-auto max-w-3xl space-y-5"},Cp={key:0,"data-test":"loading-older",class:"flex justify-center py-1 text-[11px] text-fg-muted"},Dp=["data-scheduled-task"],$p={class:"flex max-w-[80%] flex-col items-end"},Tp=["title"],Sp={class:"whitespace-pre-wrap text-[14px] leading-relaxed text-fg"},Fp={key:1,class:"mt-1 flex items-center gap-2"},Ip={"data-test":"msg-failed",class:"text-xs text-danger"},Mp=["title","onClick"],Op={key:1,class:"cv-row group flex gap-2.5"},zp={class:"mt-0.5 grid h-6 w-6 shrink-0 place-items-center rounded-lg border border-border bg-surface"},Rp={"data-test":"msg-actions",class:"flex items-center gap-1.5 pt-0.5 text-fg-muted"},Lp={key:1,"data-test":"msg-time",class:"font-mono text-[10.5px] tabular-nums"},Np={key:2,"data-test":"msg-cancelled",class:"inline-flex items-center gap-1 text-[11px] text-warn"},Pp={key:3,"data-test":"msg-failed",class:"text-[11px] text-danger"},Bp={key:1,class:"flex gap-2.5"},qp={class:"mt-0.5 grid h-6 w-6 shrink-0 place-items-center rounded-lg border border-border bg-surface"},Up={"data-test":"msg-streaming",class:"min-w-0 flex-1"},jp=48,Hp=240,Vp=ie({__name:"MessageList",props:{messages:{},liveTurn:{},hasMoreOlder:{type:Boolean},loadingOlder:{type:Boolean},sessionKey:{},scrollToScheduled:{}},emits:["resend","loadOlder"],setup(e,{emit:t}){const u=e,n=t;function s(c){var v;return c.scheduled??((v=c.structured)==null?void 0:v.scheduled)}const r=T(null),a=T(!0);let o=null;function i(){const c=r.value;c&&(a.value=c.scrollHeight-c.scrollTop-c.clientHeight<=jp,c.scrollTop<=Hp&&u.hasMoreOlder&&!u.loadingOlder&&o===null&&(o=c.scrollHeight-c.scrollTop,n("loadOlder")))}he(()=>u.loadingOlder,(c,v)=>{if(!(v&&!c)||o===null)return;const h=o;o=null,rt(()=>{const m=r.value;m&&(m.scrollTop=m.scrollHeight-h)})});let l=0;function p(c=!1){const v=r.value;if(!v||(typeof v.scrollTo=="function"?v.scrollTo({top:v.scrollHeight,behavior:c?"smooth":"auto"}):v.scrollTop=v.scrollHeight,a.value=!0,c||typeof requestAnimationFrame!="function"))return;l&&cancelAnimationFrame(l);let h=0;const m=()=>{l=0;const E=r.value;E&&(E.scrollHeight-E.scrollTop-E.clientHeight>1&&(E.scrollTop=E.scrollHeight),++h<4&&(l=requestAnimationFrame(m)))};l=requestAnimationFrame(m)}return he(()=>u.sessionKey,()=>{a.value=!0,o=null,rt(()=>p(!1))}),he(()=>{var c;return(c=u.scrollToScheduled)==null?void 0:c.nonce},()=>{var v;const c=(v=u.scrollToScheduled)==null?void 0:v.taskId;c&&rt(()=>{var m;const h=(m=r.value)==null?void 0:m.querySelector(`[data-scheduled-task="${c}"]`);h&&typeof h.scrollIntoView=="function"&&(h.scrollIntoView({behavior:"smooth",block:"center"}),a.value=!1)})}),he(()=>{const c=u.liveTurn,v=c==null?void 0:c.parts[c.parts.length-1],h=v?v.type==="tool"?v.step.status:v.text.length:0;return[u.messages.length,(c==null?void 0:c.parts.length)??0,h]},()=>{a.value&&rt(()=>p(!1))}),(c,v)=>(d(),y("div",Ep,[f("div",{ref_key:"scroller",ref:r,"data-test":"msg-scroller",class:"thin-scroll h-full overflow-y-auto px-3 py-4 lg:px-5 lg:py-5",onScroll:i},[f("div",Ap,[e.loadingOlder?(d(),y("div",Cp,[O(x(It),{size:13,class:"animate-spin motion-reduce:animate-none"})])):I("",!0),(d(!0),y(Y,null,oe(e.messages,(h,m)=>{var E,A,_,g,w,D;return d(),y(Y,{key:h.id!==void 0?`p${h.id}`:`o${h.createdAt}:${m}`},[h.direction==="in"?(d(),y("div",{key:0,class:"cv-row flex justify-end","data-scheduled-task":(E=s(h))==null?void 0:E.taskId},[f("div",$p,[s(h)?(d(),y("span",{key:0,"data-test":"msg-scheduled-badge",class:"mb-1 inline-flex items-center gap-1 rounded-full bg-accent/10 px-2 py-0.5 text-[10.5px] font-medium text-accent",title:`${c.$t("chat.scheduledFor")} ${x(Nn)(s(h).executeAt)}`},[O(x(br),{size:11}),le(k(c.$t("chat.scheduled")),1)],8,Tp)):I("",!0),f("div",{"data-test":"msg-in",class:W(["rounded-2xl rounded-tr-md border border-accent/15 bg-accent/10 px-3.5 py-2",h.failed?"ring-1 ring-danger":""])},[f("p",Sp,k(h.text),1)],2),h.failed?(d(),y("div",Fp,[f("span",Ip,k(c.$t("chat.failedToSend")),1),f("button",{type:"button","data-test":"msg-resend",class:"inline-flex items-center gap-1 text-xs font-medium text-accent hover:opacity-80",title:c.$t("chat.resendThis"),onClick:M=>n("resend",h)},[O(x(ro),{size:12}),le(k(c.$t("chat.resend")),1)],8,Mp)])):I("",!0)])],8,Dp)):(d(),y("div",Op,[f("div",zp,[O(x(Dn),{size:13,class:"text-accent"})]),f("div",{"data-test":"msg-out",class:W(["min-w-0 flex-1 space-y-2.5",h.failed?"rounded-lg ring-1 ring-danger":""])},[(_=(A=h.structured)==null?void 0:A.parts)!=null&&_.length?(d(),j(ir,{key:0,parts:h.structured.parts},null,8,["parts"])):(d(),y(Y,{key:1},[(w=(g=h.structured)==null?void 0:g.toolSteps)!=null&&w.length?(d(),j(dp,{key:0,steps:h.structured.toolSteps},null,8,["steps"])):I("",!0),(D=h.structured)!=null&&D.reasoning?(d(),j(pa,{key:1,reasoning:h.structured.reasoning,"default-open":!1},null,8,["reasoning"])):I("",!0),h.text?(d(),j(ca,{key:2,text:h.text,class:"text-[14px] leading-relaxed text-fg"},null,8,["text"])):I("",!0)],64)),f("div",Rp,[h.text?(d(),j(ha,{key:0,text:h.text},null,8,["text"])):I("",!0),x(ks)(h.createdAt)?(d(),y("span",Lp,k(x(ks)(h.createdAt)),1)):I("",!0),h.status==="cancelled"?(d(),y("span",Np,[O(x(ja),{size:12}),le(" "+k(c.$t("chat.stopped")),1)])):I("",!0),h.failed?(d(),y("span",Pp,k(c.$t("chat.failed")),1)):I("",!0)])],2)]))],64)}),128)),e.liveTurn&&e.liveTurn.parts.length?(d(),y("div",Bp,[f("div",qp,[O(x(Dn),{size:13,class:"text-accent"})]),f("div",Up,[O(ir,{parts:e.liveTurn.parts,streaming:!0},null,8,["parts"])])])):I("",!0)])],544),Ee(f("button",{"data-test":"jump-latest",type:"button",class:"absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full border border-border bg-raised px-3 py-1 text-xs text-fg-muted shadow hover:bg-fg/5",onClick:v[0]||(v[0]=h=>p(!0))},k(c.$t("chat.jumpLatest")),513),[[Rn,!a.value]])]))}}),Wp=(e,t)=>{const u=e.__vccOpts||e;for(const[n,s]of t)u[n]=s;return u},Gp=Wp(Vp,[["__scopeId","data-v-e4c8869b"]]),ba="xacpx.composer-drafts.v1";function ma(){try{const e=sessionStorage.getItem(ba);return e?JSON.parse(e):{}}catch{return{}}}function Kp(e){try{sessionStorage.setItem(ba,JSON.stringify(e))}catch{}}function lr(e){return e?ma()[e]??"":""}function cr(e,t){if(!e)return;const u=ma();t?u[e]=t:delete u[e],Kp(u)}const Zp=yt("composer",()=>{const e=T(null);let t=0;function u(n,s){e.value={key:n,text:s,seq:++t}}return{insertRequest:e,requestInsert:u}}),Yp=yt("session-controls",()=>{const e=T(void 0),t=T([]),u=T(!1),n=T("");function s(){e.value=void 0,t.value=[],n.value=""}async function r(o,i){if(!o||!i){s();return}u.value=!0,n.value="";try{const l=await ue.rpc(o,"control.session.model.get",{sessionAlias:i});if(Gt(l)){s();return}e.value=typeof l.current=="string"?l.current:void 0,t.value=Array.isArray(l.available)?l.available:[]}catch{s()}finally{u.value=!1}}async function a(o,i,l){n.value="";const p=e.value;e.value=l;try{const c=await ue.rpc(o,"control.session.model.set",{sessionAlias:i,modelId:l});return Gt(c)?(e.value=p,n.value=c.error.message,!1):!0}catch(c){return e.value=p,n.value=c instanceof Error?c.message:"set-failed",!1}}return{current:e,available:t,loading:u,error:n,reset:s,loadModel:r,setModel:a}}),Xp={class:"rounded-lg border border-border bg-surface shadow-e2 focus-within:border-accent/50 transition-colors"},Jp=["placeholder"],Qp={class:"flex items-center justify-between px-2.5 pb-2.5 pt-0.5"},e2={key:0,class:"relative flex items-center gap-2"},t2=["disabled"],u2={class:"font-mono text-[11.5px] font-medium text-fg"},n2={key:0,"data-test":"model-menu",class:"absolute bottom-full left-0 z-10 mb-1 max-h-48 min-w-40 overflow-y-auto rounded-lg border border-border bg-raised shadow-lg"},s2=["onClick"],r2={class:"font-mono"},a2={key:1,"data-test":"model-error",class:"text-xs text-danger"},o2=["title"],i2={class:"relative h-1 w-8 shrink-0 overflow-hidden rounded-full bg-border"},l2={class:"shrink-0 text-[11.5px] font-medium tabular-nums text-fg-muted"},c2={key:1},d2=["disabled"],f2=ie({__name:"PromptInput",props:{busy:{type:Boolean},draftKey:{},instanceId:{},sessionAlias:{}},emits:["send","cancel"],setup(e,{emit:t}){const u=e,n=t,s=Zp(),r=Yp(),a=kt(),o=K(()=>{const g=a.sessionUsage;if(!g||g.size<=0)return null;const w=Math.min(100,Math.round(g.used/g.size*100)),D=w>=90?"danger":w>=75?"warn":"accent";return{used:g.used,size:g.size,pct:w,tone:D}}),i=T(!1);he(()=>[u.instanceId,u.sessionAlias],([g,w])=>{r.loadModel(g??null,w??null),i.value=!1},{immediate:!0});async function l(g){i.value=!1,u.instanceId&&u.sessionAlias&&await r.setModel(u.instanceId,u.sessionAlias,g)}const p=T(lr(u.draftKey??"")),c=T(null);he(p,g=>cr(u.draftKey??"",g)),he(()=>u.draftKey,(g,w)=>{w&&cr(w,p.value),p.value=lr(g??"")}),he(()=>s.insertRequest,g=>{!g||g.key!==(u.draftKey??"")||(p.value=p.value.trim()?`${p.value.trimEnd()} ${g.text}`:g.text,rt(()=>{var w;return(w=c.value)==null?void 0:w.focus()}))});const v=T([]);let h=-1;function m(){if(u.busy)return;const g=p.value.trim();g&&(n("send",g),v.value[v.value.length-1]!==g&&v.value.push(g),h=-1,p.value="")}function E(g){if(v.value.length!==0){if(g===-1)h=h===-1?v.value.length-1:Math.max(0,h-1);else{if(h===-1)return;if(h=h+1,h>=v.value.length){h=-1,p.value="";return}}p.value=v.value[h]}}function A(g){var D,M;if(g.isComposing)return;if(g.key==="Escape"){u.busy&&(n("cancel"),g.preventDefault());return}if(g.key==="Enter"&&!g.shiftKey){m(),g.preventDefault();return}const w=(((D=c.value)==null?void 0:D.selectionStart)??0)===0&&(((M=c.value)==null?void 0:M.selectionEnd)??0)===0;if(g.key==="ArrowUp"&&w){E(-1),g.preventDefault();return}if(g.key==="ArrowDown"&&h!==-1&&w){E(1),g.preventDefault();return}}function _(){h=-1}return(g,w)=>(d(),y("form",{class:"relative border-t border-border px-0 py-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))] lg:p-3 lg:pb-[calc(0.75rem+env(safe-area-inset-bottom))]",onSubmit:Xe(m,["prevent"])},[f("div",Xp,[Ee(f("textarea",{ref_key:"textarea",ref:c,"onUpdate:modelValue":w[0]||(w[0]=D=>p.value=D),rows:"2",class:"w-full resize-none bg-transparent px-3.5 pt-2.5 pb-1 text-[16px] lg:text-[14px] leading-relaxed text-fg placeholder:text-fg-muted focus:outline-none",placeholder:e.busy?g.$t("chat.working"):g.$t("chat.message"),onInput:_,onKeydown:A},null,40,Jp),[[Oe,p.value]]),f("div",Qp,[e.instanceId&&e.sessionAlias?(d(),y("div",e2,[f("button",{type:"button","data-test":"model-chip",class:"flex items-center gap-1.5 px-1.5 py-1 rounded-md text-fg-muted hover:bg-raised transition-colors disabled:opacity-60",disabled:!x(r).available.length,onClick:w[1]||(w[1]=D=>i.value=!i.value)},[O(x(Ln),{size:14,class:"text-accent"}),f("span",u2,k(x(r).current||g.$t("chat.model")),1),x(r).available.length?(d(),j(x(Je),{key:0,size:13})):I("",!0)],8,t2),i.value&&x(r).available.length?(d(),y("ul",n2,[(d(!0),y(Y,null,oe(x(r).available,D=>(d(),y("li",{key:D},[f("button",{type:"button","data-test":"model-option",class:W(["flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm",D===x(r).current?"bg-accent/10 text-accent":"hover:bg-fg/10 text-fg-muted"]),onClick:M=>l(D)},[f("span",r2,k(D),1),D===x(r).current?(d(),j(x(Yt),{key:0,size:14,class:"ml-auto"})):I("",!0)],10,s2)]))),128))])):I("",!0),x(r).error?(d(),y("span",a2,k(x(r).error),1)):I("",!0),o.value?(d(),y("span",{key:2,"data-test":"context-meter",class:"flex shrink-0 items-center gap-1.5 whitespace-nowrap pl-0.5",title:g.$t("chat.contextUsage",{used:o.value.used.toLocaleString(),size:o.value.size.toLocaleString()})},[O(x(Xa),{size:13,class:W(["shrink-0",o.value.tone==="danger"?"text-danger":o.value.tone==="warn"?"text-warn":"text-accent"])},null,8,["class"]),f("span",i2,[f("span",{class:W(["absolute inset-y-0 left-0 rounded-full",o.value.tone==="danger"?"bg-danger":o.value.tone==="warn"?"bg-warn":"bg-accent"]),style:Lu({width:o.value.pct+"%"})},null,6)]),f("span",l2,k(o.value.pct)+"%",1)],8,o2)):I("",!0)])):(d(),y("span",c2)),e.busy?(d(),y("button",{key:2,type:"button","data-test":"composer-stop",class:"flex items-center gap-1.5 pl-3 pr-2.5 py-1.5 rounded-md bg-danger text-white text-[12.5px] font-semibold hover:opacity-90 transition-all",onClick:w[2]||(w[2]=D=>n("cancel"))},k(g.$t("chat.stop")),1)):(d(),y("button",{key:3,type:"submit","data-test":"composer-send",disabled:!p.value.trim(),class:"flex items-center gap-1.5 pl-3 pr-2.5 py-1.5 rounded-md bg-accent text-white text-[12.5px] font-semibold shadow-e1 hover:bg-accent-hover hover:shadow-e2 transition-all disabled:bg-fg/10 disabled:text-fg-muted disabled:shadow-none"},[le(k(g.$t("chat.send"))+" ",1),O(x(ao),{size:14})],8,d2))])])],32))}}),p2={key:0,"data-test":"plan-panel",class:"rounded-md border border-border bg-surface p-2 text-sm"},h2=["aria-expanded","aria-label"],b2={class:"ml-auto font-mono tabular-nums"},m2=["data-test"],g2=ie({__name:"PlanPanel",props:{entries:{},active:{type:Boolean,default:void 0}},setup(e){const t=e,u=T(t.active??!0),n=T(null),s=K(()=>t.entries.filter(l=>l.status==="completed").length),r=K(()=>{let l=-1;return t.entries.forEach((p,c)=>{p.status==="in_progress"&&(l=c)}),l>=0?l:(t.entries.forEach((p,c)=>{p.status==="completed"&&(l=c)}),l>=0?l:t.entries.length-1)}),a=l=>l==="completed"?hr:l==="in_progress"?It:Va,o=l=>l==="completed"?"text-run":l==="in_progress"?"text-accent":"text-fg-muted";async function i(){var c;if(!u.value)return;await rt();const l=n.value;if(!l)return;const p=l.children[r.value];(c=p==null?void 0:p.scrollIntoView)==null||c.call(p,{block:"nearest"})}return he(()=>t.entries,i,{flush:"post"}),he(u,i),he(()=>t.active,l=>{l!==void 0&&(u.value=l)}),(l,p)=>e.entries.length?(d(),y("div",p2,[f("button",{type:"button","data-test":"plan-toggle","aria-expanded":u.value,"aria-controls":"plan-list","aria-label":l.$t("plan.togglePlan"),class:"mb-1 flex w-full items-center gap-1.5 text-xs font-semibold uppercase text-fg-muted hover:text-fg transition-colors",onClick:p[0]||(p[0]=c=>u.value=!u.value)},[u.value?(d(),j(x(Je),{key:0,size:12,class:"shrink-0"})):(d(),j(x(Ft),{key:1,size:12,class:"shrink-0"})),le(" "+k(l.$t("plan.title"))+" ",1),f("span",b2,k(s.value)+"/"+k(e.entries.length),1)],8,h2),Ee(f("ul",{id:"plan-list",ref_key:"listEl",ref:n,class:"max-h-48 overflow-y-auto thin-scroll space-y-0.5"},[(d(!0),y(Y,null,oe(e.entries,(c,v)=>(d(),y("li",{key:v,"data-test":v===r.value?"plan-active":void 0,class:"flex items-start gap-1.5"},[(d(),j(Tt(a(c.status)),{size:13,class:W([o(c.status),"mt-0.5 shrink-0",c.status==="in_progress"?"animate-spin motion-reduce:animate-none":""])},null,8,["class"])),f("span",{class:W(["min-w-0",c.status==="completed"?"text-fg-muted line-through":"text-fg"])},k(c.content),3)],8,m2))),128))],512),[[Rn,u.value]])])):I("",!0)}}),x2={class:"flex h-full flex-1 flex-col"},v2={key:0,class:"flex flex-1 items-center justify-center text-fg-muted"},y2={class:"shrink-0 flex min-h-11 lg:h-11 items-center gap-2.5 border-b border-border bg-surface/60 px-3 lg:px-5 py-1.5 lg:py-0 backdrop-blur-md"},k2={class:"hidden lg:block text-[14px] font-semibold tracking-tight text-fg"},_2={key:0,class:"flex min-w-0 flex-1 items-center gap-1 overflow-hidden"},w2=["title"],E2={class:"min-w-0 truncate"},A2={key:1,"data-test":"ctx-chip-instance",class:"flex min-w-0 max-w-[9rem] items-center gap-1 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted"},C2={class:"min-w-0 truncate"},D2={key:2,"data-test":"ctx-chip-agent",class:"flex min-w-0 max-w-[9rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted"},$2={class:"min-w-0 truncate"},T2=["title"],S2={key:0,class:"min-w-0 truncate font-mono"},F2={key:1,class:"shrink-0 italic"},I2={class:"shrink-0 text-warn"},M2={key:0,"data-test":"chat-error",class:"bg-danger/10 px-4 py-1 text-xs text-danger"},O2={class:"shrink-0 space-y-2 bg-gradient-to-t from-bg to-transparent px-2 lg:px-5 pb-4 pt-1.5"},z2={key:0,"data-test":"turn-hud",class:"flex items-center gap-2 rounded-lg border border-run/20 bg-run/8 px-3 py-1.5"},R2={class:"text-[12px] font-semibold text-run"},L2={class:"font-mono text-[12px] font-semibold tabular-nums text-run"},N2={key:0,class:"text-[11.5px] text-fg-muted"},P2=ie({__name:"ChatPane",emits:["show-files"],setup(e,{emit:t}){const u=t,n=kt(),s=ot(),r=Bu(),a=K(()=>n.instanceId?s.byId(n.instanceId):void 0),o=K(()=>{var m;return(m=a.value)==null?void 0:m.sessions.find(E=>E.alias===n.sessionAlias)});he(()=>{var m;return[n.instanceId,(m=o.value)==null?void 0:m.workspace]},([m,E])=>{m&&E?r.loadGitSummary(m,E):r.gitSummary=null},{immediate:!0});const i=T(Date.now()),l=setInterval(()=>{i.value=Date.now()},1e3);zn(()=>clearInterval(l));const p=K(()=>{if(!n.liveTurn)return"";const m=Math.max(0,Math.floor((i.value-n.liveTurn.startedAt)/1e3));return`${Math.floor(m/60)}:${String(m%60).padStart(2,"0")}`}),c=K(()=>n.liveToolSteps.filter(m=>m.status==="running").length),v=["Working","Thinking","Pondering","Cogitating","Reasoning","Computing","Churning","Crunching","Percolating","Noodling","Mulling","Brewing","Processing","Deliberating","Ruminating","Synthesizing","Wrangling","Tinkering"],h=K(()=>{if(!n.liveTurn)return v[0];const m=Math.max(0,Math.floor((i.value-n.liveTurn.startedAt)/1e3));return v[Math.floor(m/4)%v.length]});return(m,E)=>{var A,_,g,w;return d(),y("div",x2,[x(n).sessionAlias?(d(),y(Y,{key:1},[f("div",y2,[f("h1",k2,k(x(n).sessionAlias),1),o.value||a.value?(d(),y("div",_2,[(A=o.value)!=null&&A.workspace?(d(),y("button",{key:0,"data-test":"ctx-chip-workspace",class:"flex min-w-0 max-w-[10rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted hover:bg-fg/5",title:m.$t("chat.browseFiles"),onClick:E[0]||(E[0]=D=>u("show-files"))},[O(x($n),{size:11,class:"shrink-0 text-warn"}),f("span",E2,k(o.value.workspace),1)],8,w2)):I("",!0),(_=a.value)!=null&&_.name?(d(),y("span",A2,[E[4]||(E[4]=f("span",{class:"shrink-0 font-mono text-accent"},"@",-1)),f("span",C2,k(a.value.name),1)])):I("",!0),(g=o.value)!=null&&g.agent?(d(),y("span",D2,[O(x(Dn),{size:11,class:"shrink-0 text-accent"}),f("span",$2,k(o.value.agent),1)])):I("",!0),x(r).gitSummary?(d(),y("button",{key:3,"data-test":"git-summary",class:"flex min-w-0 max-w-[13rem] items-center gap-1.5 whitespace-nowrap rounded-md border border-border bg-surface py-0.5 pl-1.5 pr-2 text-[10.5px] font-medium text-fg-muted hover:bg-fg/5",title:x(r).gitSummary.branch||m.$t("chat.viewChanges"),onClick:E[1]||(E[1]=D=>{x(r).tab="changes",u("show-files")})},[O(x(Tn),{size:11,class:"shrink-0 text-warn"}),x(r).gitSummary.branch?(d(),y("span",S2,k(x(r).gitSummary.branch),1)):x(r).gitSummary.detached?(d(),y("span",F2,k(m.$t("files.detached")),1)):I("",!0),E[5]||(E[5]=f("span",{class:"h-1 w-1 shrink-0 rounded-full bg-warn","aria-hidden":"true"},null,-1)),f("span",I2,k(x(r).gitSummary.changedCount)+" "+k(m.$t("chat.changed")),1)],8,T2)):I("",!0)])):I("",!0)]),x(n).error?(d(),y("div",M2,[le(k(x(n).error)+" ",1),f("button",{class:"ml-2 text-danger underline",onClick:E[2]||(E[2]=D=>x(n).error="")},k(m.$t("common.dismiss")),1)])):I("",!0),O(Gp,{messages:x(n).messages,"live-turn":x(n).liveTurn,"session-key":`${x(n).instanceId}\0${x(n).sessionAlias}`,"scroll-to-scheduled":x(n).scrollRequest,"has-more-older":x(n).hasMoreOlder,"loading-older":x(n).loadingOlder,onResend:x(n).resend,onLoadOlder:x(n).loadOlder},null,8,["messages","live-turn","session-key","scroll-to-scheduled","has-more-older","loading-older","onResend","onLoadOlder"]),f("div",O2,[x(n).busy?(d(),y("div",z2,[E[6]||(E[6]=f("span",{class:"h-2 w-2 rounded-full bg-run pulse-dot","aria-hidden":"true"},null,-1)),f("span",R2,k(h.value)+"…",1),f("span",L2,k(p.value),1),c.value>0?(d(),y("span",N2,"· "+k(c.value)+" "+k(c.value===1?m.$t("chat.tool"):m.$t("chat.tools")),1)):I("",!0),E[7]||(E[7]=f("span",{class:"flex-1"},null,-1)),f("button",{"data-test":"cancel-turn",class:"flex items-center gap-1.5 text-[11.5px] font-medium text-danger transition-opacity hover:opacity-80",onClick:E[3]||(E[3]=(...D)=>x(n).cancel&&x(n).cancel(...D))},[O(x(at),{size:13}),le(k(m.$t("common.cancel")),1)])])):I("",!0),(w=x(n).sessionPlan)!=null&&w.length?(d(),j(g2,{key:1,entries:x(n).sessionPlan,active:x(n).busy},null,8,["entries","active"])):I("",!0),O(f2,{busy:x(n).busy,"draft-key":`${x(n).instanceId}\0${x(n).sessionAlias}`,"instance-id":x(n).instanceId,"session-alias":x(n).sessionAlias,onSend:x(n).send,onCancel:x(n).cancel},null,8,["busy","draft-key","instance-id","session-alias","onSend","onCancel"])])],64)):(d(),y("div",v2,k(m.$t("chat.selectSession")),1))])}}}),B2={class:"flex h-full flex-1 flex-col bg-bg","data-test":"file-viewer-center"},q2={class:"flex h-11 shrink-0 items-center gap-2 border-b border-border bg-surface/60 px-3 backdrop-blur-md"},U2=["aria-label"],j2=["aria-label"],H2={class:"truncate font-mono text-[12.5px] text-fg"},V2={class:"shrink-0 text-[11px] text-fg-muted"},W2={key:0,class:"shrink-0 rounded bg-warn/10 px-1 text-[10.5px] text-warn"},G2={key:1,class:"shrink-0 rounded bg-fg/5 px-1 text-[10.5px] text-fg-muted"},K2={class:"truncate font-mono text-[12.5px] text-fg"},Z2={class:"ml-auto flex shrink-0 items-center gap-1"},Y2=["aria-label"],X2={class:"min-h-0 flex-1 overflow-auto thin-scroll"},J2={key:0,"data-test":"fv-file-body",class:"font-mono text-[12.5px] leading-relaxed"},Q2={class:"sticky left-0 w-14 shrink-0 select-none border-r border-border bg-surface px-3 text-right text-fg-muted tabular-nums"},eh={class:"whitespace-pre px-4 text-fg"},th={key:1,class:"overflow-x-auto p-4 font-mono text-[12.5px] leading-relaxed text-fg whitespace-pre"},uh={key:2,class:"p-6 text-sm text-fg-muted"},nh={key:0,"data-test":"fv-diff-body",class:"p-4 font-mono text-[12.5px] leading-relaxed whitespace-pre"},sh={key:1,class:"p-6 text-sm text-fg-muted"},rh={key:2,class:"px-4 py-1 text-xs text-warn"},ah=5e3,oh=ie({__name:"FileViewer",emits:["back","close"],setup(e,{emit:t}){const u=t,n=Bu(),s=K(()=>{const o=n.file;return!o||o.binary?[]:o.content.split(`
269
269
  `)});function r(o){return o===void 0?"":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/1024/1024).toFixed(1)} MB`}function a(o){return o.startsWith("+")&&!o.startsWith("+++")?"text-run":o.startsWith("-")&&!o.startsWith("---")?"text-danger":o.startsWith("@@")?"text-info":(o.startsWith("diff ")||o.startsWith("index "),"text-fg-muted")}return(o,i)=>(d(),y("div",B2,[f("div",q2,[f("button",{"data-test":"fv-back-list","aria-label":o.$t("files.backToList"),class:"flex lg:hidden items-center gap-1.5 rounded-md px-2 py-1 text-[12px] font-medium text-fg-muted transition-colors hover:bg-raised hover:text-fg",onClick:i[0]||(i[0]=l=>u("back"))},[O(x(bs),{size:14}),le(k(o.$t("files.title")),1)],8,U2),f("button",{"data-test":"fv-back","aria-label":o.$t("files.back"),class:"hidden lg:flex items-center gap-1.5 rounded-md px-2 py-1 text-[12px] font-medium text-fg-muted transition-colors hover:bg-raised hover:text-fg",onClick:i[1]||(i[1]=l=>u("close"))},[O(x(bs),{size:14}),le(k(o.$t("files.back")),1)],8,j2),i[3]||(i[3]=f("span",{class:"h-4 w-px bg-border","aria-hidden":"true"},null,-1)),x(n).file?(d(),y(Y,{key:0},[O(x(lu),{size:14,class:"shrink-0 text-accent"}),f("span",H2,k(x(n).file.path),1),f("span",V2,k(r(x(n).file.size)),1),x(n).file.truncated?(d(),y("span",W2,k(o.$t("files.truncated")),1)):I("",!0),x(n).file.binary?(d(),y("span",G2,k(o.$t("files.binary")),1)):I("",!0)],64)):x(n).diffPath?(d(),y(Y,{key:1},[O(x(Za),{size:14,class:"shrink-0 text-accent"}),f("span",K2,k(x(n).diffPath),1)],64)):I("",!0),f("div",Z2,[x(n).file&&!x(n).file.binary?(d(),j(ha,{key:0,text:x(n).file.content},null,8,["text"])):I("",!0),f("button",{"data-test":"fv-close","aria-label":o.$t("files.closeFile"),class:"grid h-7 w-7 place-items-center rounded text-fg-muted transition-colors hover:bg-raised hover:text-fg lg:hidden",onClick:i[2]||(i[2]=l=>u("close"))},[O(x(at),{size:16})],8,Y2)])]),f("div",X2,[x(n).file?(d(),y(Y,{key:0},[!x(n).file.binary&&s.value.length<=ah?(d(),y("div",J2,[(d(!0),y(Y,null,oe(s.value,(l,p)=>(d(),y("div",{key:p,"data-test":"fv-line",class:"flex"},[f("span",Q2,k(p+1),1),f("span",eh,k(l||" "),1)]))),128))])):x(n).file.binary?(d(),y("div",uh,k(o.$t("files.binaryNotShown")),1)):(d(),y("pre",th,k(x(n).file.content),1))],64)):x(n).diffPath&&x(n).diff?(d(),y(Y,{key:1},[x(n).diff.diff?(d(),y("pre",nh,[(d(!0),y(Y,null,oe(x(n).diff.diff.split(`
270
270
  `),(l,p)=>(d(),y("span",{key:p,class:W(["block",a(l)])},k(l),3))),128))])):(d(),y("div",sh,k(o.$t("files.noDiffContent")),1)),x(n).diff.truncated?(d(),y("div",rh,k(o.$t("files.diffTruncated")),1)):I("",!0)],64)):I("",!0)])]))}}),ih={"data-test":"scheduled-item",class:"rounded-md border border-border bg-bg text-sm"},lh={class:"flex items-center gap-1 px-2 py-1.5"},ch=["data-test"],dh=["data-test"],fh={class:"min-w-0 flex-1 truncate text-[12.5px] text-fg"},ph={class:"flex shrink-0 items-center gap-0.5"},hh=["title","aria-label"],bh=["title","aria-label"],mh=["data-test"],gh={class:"whitespace-pre-wrap text-[12.5px] text-fg"},xh={class:"font-mono text-[10.5px] tabular-nums text-fg-muted"},vh=["data-test"],dr=ie({__name:"ScheduledTaskRow",props:{task:{}},emits:["view"],setup(e,{emit:t}){const u=e,n=t,{t:s}=St(),r=mu(),a=kt(),o=T(!1);function i(c){switch(c){case"pending":return{label:s("tasks.statusUpcoming"),cls:"text-fg-muted",icon:br};case"triggering":return{label:s("tasks.statusRunning"),cls:"text-run",icon:It,spin:!0};case"executed":return{label:s("tasks.statusDone"),cls:"text-run",icon:hr};case"failed":return{label:s("tasks.statusFailed"),cls:"text-danger",icon:Ha};case"missed":return{label:s("tasks.statusMissed"),cls:"text-warn",icon:iu};case"cancelled":return{label:s("tasks.statusCancelled"),cls:"text-fg-muted",icon:pr}}}function l(){a.requestScrollToScheduled(u.task.id),n("view")}async function p(c){await bu({title:s("tasks.cancelScheduledTitle"),message:s("tasks.cancelScheduledBody"),confirmLabel:s("tasks.cancelTask"),cancelLabel:s("tasks.keep"),tone:"danger"})&&await r.cancelScheduled(c)}return(c,v)=>(d(),y("li",ih,[f("div",lh,[f("button",{type:"button","data-test":`scheduled-toggle-${e.task.id}`,class:"flex min-w-0 flex-1 items-center gap-1.5 text-left cursor-pointer",onClick:v[0]||(v[0]=h=>o.value=!o.value)},[O(x(Ft),{size:12,class:W(["shrink-0 text-fg-muted transition-transform",o.value?"rotate-90":""])},null,8,["class"]),f("span",{"data-test":`scheduled-status-${e.task.id}`,class:W(["inline-flex shrink-0 items-center gap-1 text-[11px] font-medium",i(e.task.status).cls])},[(d(),j(Tt(i(e.task.status).icon),{size:12,class:W(i(e.task.status).spin?"animate-spin motion-reduce:animate-none":"")},null,8,["class"])),le(" "+k(i(e.task.status).label),1)],10,dh),f("span",fh,k(e.task.message),1)],8,ch),f("span",ph,[e.task.status==="executed"?(d(),y("button",{key:0,"data-test":"view-scheduled",title:c.$t("tasks.viewRunTitle"),"aria-label":c.$t("tasks.viewRun"),class:"grid h-6 w-6 place-items-center rounded text-fg-muted transition-colors hover:bg-accent/15 hover:text-accent",onClick:l},[O(x(Ka),{size:13})],8,hh)):I("",!0),e.task.status==="pending"?(d(),y("button",{key:1,"data-test":"cancel-scheduled",title:c.$t("tasks.cancelScheduled"),"aria-label":c.$t("tasks.cancelScheduled"),class:"grid h-6 w-6 place-items-center rounded text-fg-muted transition-colors hover:bg-danger/15 hover:text-danger",onClick:v[1]||(v[1]=h=>p(e.task.id))},[O(x(Pu),{size:13})],8,bh)):I("",!0)])]),o.value?(d(),y("div",{key:0,"data-test":`scheduled-detail-${e.task.id}`,class:"space-y-1 border-t border-border px-2 py-1.5"},[f("p",gh,k(e.task.message),1),f("p",xh,k(x(Nn)(e.task.executeAt)),1),e.task.status==="failed"&&e.task.lastError?(d(),y("p",{key:0,"data-test":`scheduled-error-${e.task.id}`,class:"rounded bg-danger/10 px-2 py-1 text-[11px] text-danger"},k(e.task.lastError),9,vh)):I("",!0)],8,mh)):I("",!0)]))}}),yh={class:"shrink-0 border-b border-border bg-surface p-3"},kh={class:"mb-2 flex items-center gap-1.5"},_h={class:"text-xs font-semibold uppercase tracking-wide text-fg-muted"},wh={key:0,class:"rounded-full bg-bg px-1.5 font-mono text-[10px] tabular-nums text-fg-muted"},Eh=["title","aria-label"],Ah={class:"space-y-1"},Ch={key:0,class:"rounded-md border border-dashed border-border px-2 py-2 text-center text-[11px] text-fg-muted"},Dh={class:"flex flex-col gap-1"},$h={class:"text-[10px] font-semibold uppercase tracking-wide text-fg-muted"},Th={class:"flex flex-col gap-1"},Sh={class:"text-[10px] font-semibold uppercase tracking-wide text-fg-muted"},Fh=["placeholder"],Ih={class:"flex items-center gap-1.5 pt-0.5"},Mh=["disabled"],Oh=["aria-label"],zh={class:"flex items-center justify-between border-b border-border px-4 py-3"},Rh={class:"text-sm font-semibold text-fg"},Lh=["aria-label"],Nh={class:"flex-1 space-y-1 overflow-y-auto p-3"},fr=3,Ph=ie({__name:"ScheduledTasks",setup(e){const t=mu(),u=kt(),n=T(""),s=T(""),r=T(!1),a=K(()=>t.scheduled.slice(0,fr)),o=K(()=>Math.max(0,t.scheduled.length-fr)),i=T(!1);async function l(){if(!u.instanceId||!u.sessionAlias||!n.value||!s.value)return;const p=new Date(n.value).toISOString();await t.createScheduled(u.instanceId,u.sessionAlias,p,s.value),n.value="",s.value="",r.value=!1}return(p,c)=>(d(),y("div",yh,[f("div",kh,[O(x(qa),{size:13,class:"shrink-0 text-fg-muted"}),f("h3",_h,k(p.$t("tasks.scheduled")),1),x(t).scheduled.length?(d(),y("span",wh,k(x(t).scheduled.length),1)):I("",!0),f("button",{type:"button","data-test":"scheduled-compose-toggle",title:p.$t("tasks.newScheduled"),"aria-label":p.$t("tasks.newScheduled"),class:W(["ml-auto grid h-6 w-6 place-items-center rounded-md transition-colors hover:bg-raised hover:text-fg",r.value?"bg-raised text-fg":"text-fg-muted"]),onClick:c[0]||(c[0]=v=>r.value=!r.value)},[O(x(mr),{size:14,class:W(["transition-transform",r.value?"rotate-45":""])},null,8,["class"])],10,Eh)]),f("ul",Ah,[(d(!0),y(Y,null,oe(a.value,v=>(d(),j(dr,{key:v.id,task:v},null,8,["task"]))),128)),x(t).scheduled.length===0?(d(),y("li",Ch,k(p.$t("tasks.noScheduled")),1)):I("",!0)]),o.value>0?(d(),y("button",{key:0,type:"button","data-test":"scheduled-view-all",class:"mt-1.5 flex w-full items-center justify-center gap-1 rounded-md border border-border bg-bg px-2 py-1 text-[11px] font-medium text-fg-muted transition-colors hover:bg-accent/10 hover:text-accent",onClick:c[1]||(c[1]=v=>i.value=!0)},[le(k(p.$t("tasks.viewAll",{count:x(t).scheduled.length}))+" ",1),O(x(Je),{size:12})])):I("",!0),r.value?(d(),y("form",{key:1,"data-test":"scheduled-composer",class:"mt-2 space-y-2 rounded-lg border border-border bg-bg p-2.5",onSubmit:Xe(l,["prevent"])},[f("label",Dh,[f("span",$h,k(p.$t("tasks.whenLabel")),1),Ee(f("input",{"onUpdate:modelValue":c[2]||(c[2]=v=>n.value=v),type:"datetime-local",class:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs text-fg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent"},null,512),[[Oe,n.value]])]),f("label",Th,[f("span",Sh,k(p.$t("tasks.messageLabel")),1),Ee(f("input",{"onUpdate:modelValue":c[3]||(c[3]=v=>s.value=v),placeholder:p.$t("tasks.messagePlaceholder"),class:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs text-fg placeholder:text-fg-muted focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent"},null,8,Fh),[[Oe,s.value]])]),f("div",Ih,[f("button",{type:"submit",disabled:!n.value||!s.value,class:"flex-1 rounded-md bg-accent px-2 py-1 text-xs font-medium text-white transition-colors hover:bg-accent-hover disabled:cursor-not-allowed disabled:opacity-40"},k(p.$t("tasks.schedule")),9,Mh),f("button",{type:"button",class:"rounded-md border border-border px-2 py-1 text-xs text-fg-muted transition-colors hover:bg-raised hover:text-fg",onClick:c[4]||(c[4]=v=>r.value=!1)},k(p.$t("common.cancel")),1)])],32)):I("",!0),(d(),j(Ru,{to:"body"},[O(Ra,{"enter-active-class":"transition-opacity duration-200 ease-out motion-reduce:transition-none","enter-from-class":"opacity-0","leave-active-class":"transition-opacity duration-150 ease-in motion-reduce:transition-none","leave-to-class":"opacity-0"},{default:ft(()=>[i.value?(d(),y("div",{key:0,"data-test":"scheduled-drawer",class:"fixed inset-0 z-50 flex justify-end bg-black/50",onClick:c[7]||(c[7]=Xe(v=>i.value=!1,["self"])),onKeydown:c[8]||(c[8]=On(v=>i.value=!1,["esc"]))},[f("aside",{class:"flex h-full w-full max-w-md flex-col border-l border-border bg-raised shadow-xl",role:"dialog","aria-label":p.$t("tasks.allScheduled")},[f("header",zh,[f("h2",Rh,k(p.$t("tasks.scheduledCount",{count:x(t).scheduled.length})),1),f("button",{class:"rounded p-1 text-fg-muted hover:bg-fg/5 hover:text-fg","aria-label":p.$t("tasks.close"),"data-test":"scheduled-drawer-close",onClick:c[5]||(c[5]=v=>i.value=!1)},[O(x(at),{size:16})],8,Lh)]),f("ul",Nh,[(d(!0),y(Y,null,oe(x(t).scheduled,v=>(d(),j(dr,{key:v.id,task:v,onView:c[6]||(c[6]=h=>i.value=!1)},null,8,["task"]))),128))])],8,Oh)],32)):I("",!0)]),_:1})]))]))}}),Bh={class:"flex min-h-0 flex-col bg-surface"},qh={class:"shrink-0 px-3 pt-3 pb-2 text-xs font-semibold uppercase text-fg-muted"},Uh={class:"min-h-0 flex-1 space-y-1 overflow-y-auto thin-scroll px-3 pb-3"},jh={class:"flex min-w-0 items-center gap-1.5"},Hh={class:"truncate"},Vh=["title","aria-label","onClick"],Wh={key:0,class:"text-xs text-fg-muted"},Gh={key:1,class:"pt-0.5 text-center text-[10.5px] text-fg-muted"},Cn=10,Kh=ie({__name:"OrchestrationTasks",setup(e){const{t}=St(),u=mu(),n=K(()=>[...u.orchestration].sort((a,o)=>o.createdAt.localeCompare(a.createdAt)).slice(0,Cn));async function s(a){await bu({title:t("tasks.cancelTitle"),message:t("tasks.cancelBody"),confirmLabel:t("tasks.cancelConfirm"),cancelLabel:t("tasks.keepRunning"),tone:"danger"})&&await u.cancelOrchestration(a)}function r(a){const o=a.toLowerCase();return o.includes("run")||o.includes("active")?"text-run":o.includes("fail")||o.includes("error")||o.includes("cancel")?"text-danger":o.includes("wait")||o.includes("pending")||o.includes("block")?"text-warn":"text-fg-muted"}return(a,o)=>(d(),y("div",Bh,[f("h3",qh,k(a.$t("tasks.orchestration")),1),f("ul",Uh,[(d(!0),y(Y,null,oe(n.value,i=>(d(),y("li",{key:i.taskId,class:"flex items-center justify-between text-sm text-fg"},[f("span",jh,[O(x(Iu),{size:14,class:"shrink-0 text-fg-muted"}),f("span",Hh,[le(k(i.task)+" ",1),f("span",{class:W(["text-xs",r(i.status)])},"("+k(i.status)+")",3)])]),f("button",{"data-test":"cancel-orchestration",title:a.$t("tasks.cancelTask"),"aria-label":a.$t("tasks.cancelOrchestrationAria"),class:"ml-2 grid h-6 w-6 shrink-0 place-items-center rounded text-fg-muted transition-colors hover:bg-danger/15 hover:text-danger",onClick:l=>s(i.taskId)},[O(x(pr),{size:13})],8,Vh)]))),128)),x(u).orchestration.length===0?(d(),y("li",Wh,k(a.$t("tasks.noOrchestration")),1)):I("",!0),x(u).orchestration.length>Cn?(d(),y("li",Gh,k(a.$t("tasks.moreOrchestration",{count:x(u).orchestration.length-Cn})),1)):I("",!0)])]))}}),Zh={key:0,class:"flex h-full flex-col"},Yh={key:1,class:"p-4 text-sm text-fg-muted"},Xh=ie({__name:"TaskPanel",setup(e){const t=kt(),u=mu();return he(()=>[t.instanceId,t.sessionAlias],([n,s])=>{n&&s&&u.loadFor(n,s)},{immediate:!0}),(n,s)=>x(t).instanceId&&x(t).sessionAlias?(d(),y("div",Zh,[O(Ph),O(Kh,{class:"min-h-0 flex-1"})])):(d(),y("div",Yh,k(n.$t("taskPanel.noSession")),1))}}),Jh={class:"flex h-full flex-col bg-surface text-sm text-fg-muted"},Qh={key:0,class:"flex flex-1 items-center justify-center p-4 text-center text-xs text-fg-muted"},eb={class:"flex shrink-0 items-center gap-2 border-b border-border p-2"},tb=["title"],ub={class:"truncate font-medium"},nb={class:"flex shrink-0 items-center gap-1"},sb=["title","aria-label","disabled"],rb={key:0,"data-test":"files-error",class:"shrink-0 bg-danger/10 px-2 py-1 text-xs text-danger"},ab={key:1,class:"flex min-h-0 flex-1 flex-col"},ob={class:"flex shrink-0 items-center gap-1 border-b border-border px-2 py-1"},ib=["placeholder"],lb=["aria-label"],cb={key:0,"data-test":"fs-results",class:"min-h-0 flex-1 overflow-y-auto thin-scroll"},db={class:"p-2.5 text-[11px] font-mono leading-5 space-y-px"},fb=["onClick"],pb={class:"truncate font-sans text-[12px] text-fg-muted"},hb={key:0,class:"px-1.5 py-1 text-xs text-fg-muted"},bb={key:0,class:"px-2.5 pb-1 text-xs text-warn"},mb={class:"flex shrink-0 flex-wrap items-center gap-1 border-b border-border px-2.5 py-1.5 font-mono text-[11px] text-fg-muted"},gb=["title","aria-label","disabled"],xb=["onClick"],vb={class:"min-h-0 flex-1 overflow-y-auto thin-scroll p-2.5 text-[11px] font-mono leading-5 space-y-px"},yb=["onClick"],kb={key:1,class:"w-[11px] shrink-0"},_b=["title"],wb={key:5,class:"shrink-0 font-mono text-[10.5px] text-fg-muted tabular-nums"},Eb={key:0,class:"px-1.5 py-1 text-xs text-fg-muted"},Ab={key:2,class:"flex min-h-0 flex-1 flex-col"},Cb={class:"shrink-0 border-b border-border"},Db={key:0,"data-test":"changes-branch",class:"truncate font-mono text-[11.5px] font-medium text-fg"},$b={key:1,"data-test":"changes-branch",class:"truncate font-mono text-[11.5px] italic text-fg-muted"},Tb={key:2,class:"text-[10.5px] font-semibold uppercase tracking-wider text-fg-muted"},Sb={key:3,"data-test":"worktree-linked",class:"shrink-0 rounded-full border border-accent/30 bg-accent/10 px-1.5 py-px text-[9px] font-semibold uppercase tracking-wide text-accent"},Fb={key:4,class:"flex shrink-0 items-center gap-1.5 font-mono text-[10.5px] tabular-nums"},Ib={class:"text-fg-muted"},Mb={class:"text-run"},Ob={class:"text-danger"},zb=["title"],Rb={class:"truncate font-mono",dir:"rtl"},Lb={class:"min-h-0 flex-1 overflow-y-auto thin-scroll p-2.5 space-y-px"},Nb=["onClick"],Pb={key:0,class:"px-1.5 py-1 text-xs text-fg-muted"},Bb={key:1,"data-test":"changes-not-git",class:"flex min-h-0 flex-1 flex-col items-center justify-center gap-1.5 p-6 text-center text-xs text-fg-muted"},qb={class:"text-[11px] text-fg-muted/70"},Ub={key:2,class:"p-3 text-xs text-fg-muted"},jb={key:3,class:"shrink-0 border-t border-border px-3 py-1 text-xs text-fg-muted"},Hb=ie({__name:"FilesPanel",props:{instanceId:{}},setup(e){const t=e,u=Bu(),n=ot(),s=kt(),r=K(()=>u.path?u.path.split("/"):[]),a=K(()=>r.value.length===0);function o(){a.value||u.up(r.value.length-2)}const i=K(()=>{var F;const $=t.instanceId?n.byId(t.instanceId):void 0;return((F=$==null?void 0:$.sessions.find(R=>R.alias===s.sessionAlias))==null?void 0:F.workspace)??null}),l=K(()=>{const $=u.diff;return $?{branch:$.branch,detached:$.detached===!0,worktree:$.worktree}:null}),p=K(()=>{const $=u.diff;if(!$)return null;let F=0,R=0;for(const Q of $.diff?$.diff.split(`
271
- `):[])Q.startsWith("+")&&!Q.startsWith("+++")?F++:Q.startsWith("-")&&!Q.startsWith("---")&&R++;return{fileCount:$.files.length,add:F,del:R}}),c=T("");let v=null;function h(){v&&clearTimeout(v),v=setTimeout(()=>void u.search(c.value),250)}function m(){c.value="",u.search("")}function E($){return $===void 0?"":$<1024?`${$} B`:$<1024*1024?`${($/1024).toFixed(1)} KB`:`${($/1024/1024).toFixed(1)} MB`}function A($){return u.path?`${u.path}/${$}`:$}function _($){const F=$.trim();return F.includes("?")?{label:"U",cls:"text-warn",dot:"bg-warn"}:F.includes("A")?{label:"A",cls:"text-run",dot:"bg-run"}:F.includes("D")?{label:"D",cls:"text-danger",dot:"bg-danger"}:F.includes("R")?{label:"R",cls:"text-accent",dot:"bg-accent"}:F.includes("M")?{label:"M",cls:"text-info",dot:"bg-warn"}:{label:F[0]??"•",cls:"text-fg-muted",dot:"bg-warn"}}function g($){const F=A($.name);if($.type==="file"){const Q=u.changed[F];return Q?_(Q):null}const R=`${F}/`;return Object.keys(u.changed).some(Q=>Q.startsWith(R))?{label:"•",cls:"text-warn",dot:"bg-warn"}:null}function w($){return!!u.file&&u.file.path===A($)}function D($){$.type==="file"&&(u.diffPath=null),u.open($)}function M($){u.diffPath=null,u.openFile($)}function q($){u.file=null,u.loadDiff($)}return he(()=>[t.instanceId,i.value],async([$,F])=>{var Q,te,G;if(u.reset(),c.value="",!$)return;u.instanceId=$,await n.loadWorkspaces($).catch(()=>{});const R=F??((G=(te=(Q=n.byId($))==null?void 0:Q.workspaces)==null?void 0:te[0])==null?void 0:G.name);R&&u.selectWorkspace($,R)},{immediate:!0}),he(()=>u.tab,$=>{$==="changes"&&!u.diff&&u.loadDiff()}),($,F)=>{var R,Q,te,G,J,ae;return d(),y("div",Jh,[e.instanceId?(d(),y(Y,{key:1},[f("div",eb,[f("div",{"data-test":"ws-label",class:"flex min-w-0 flex-1 items-center gap-1.5 text-xs text-fg",title:x(u).workspace??""},[O(x($n),{size:13,class:"shrink-0 text-warn"}),f("span",ub,k(x(u).workspace??"—"),1)],8,tb),f("div",nb,[f("button",{"data-test":"refresh-files",title:$.$t("files.refresh"),"aria-label":$.$t("files.refresh"),class:"grid h-6 w-6 place-items-center rounded text-fg-muted transition-colors hover:bg-raised hover:text-fg disabled:opacity-50",disabled:x(u).loading,onClick:F[0]||(F[0]=U=>x(u).refresh())},[O(x(so),{size:13,class:W(x(u).loading?"animate-spin motion-reduce:animate-none":"")},null,8,["class"])],8,sb),f("button",{"data-test":"tab-files",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",x(u).tab==="files"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:F[1]||(F[1]=U=>x(u).tab="files")},[O(x(lu),{size:13}),le(k($.$t("files.title")),1)],2),f("button",{"data-test":"tab-changes",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",x(u).tab==="changes"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:F[2]||(F[2]=U=>x(u).tab="changes")},[O(x(Iu),{size:13}),le(k($.$t("files.changes")),1)],2)])]),x(u).error?(d(),y("div",rb,k(x(u).error),1)):I("",!0),x(u).tab==="files"?(d(),y("div",ab,[f("div",ob,[Ee(f("input",{"onUpdate:modelValue":F[3]||(F[3]=U=>c.value=U),"data-test":"fs-search",placeholder:$.$t("files.searchPlaceholder"),class:"min-w-0 flex-1 rounded border border-border bg-bg px-2 py-1 text-xs text-fg placeholder:text-fg-muted",onInput:h},null,40,ib),[[Oe,c.value]]),c.value?(d(),y("button",{key:0,"aria-label":$.$t("files.clearSearch"),class:"text-fg-muted hover:text-fg",onClick:m},[O(x(at),{size:14})],8,lb)):I("",!0)]),x(u).query.trim()?(d(),y("div",cb,[f("ul",db,[(d(!0),y(Y,null,oe(x(u).results,U=>(d(),y("li",{key:U},[f("button",{"data-test":"fs-result",class:"flex w-full items-center gap-1.5 rounded-md px-1.5 py-1 text-left hover:bg-raised cursor-pointer",onClick:me=>M(U)},[O(x(Fu),{size:13,class:"shrink-0 text-fg-muted"}),f("span",pb,k(U),1)],8,fb)]))),128)),!x(u).results.length&&!x(u).searching?(d(),y("li",hb,k($.$t("palette.noMatches")),1)):I("",!0)]),x(u).searchTruncated?(d(),y("div",bb,k($.$t("files.showingFirstMatches")),1)):I("",!0)])):(d(),y(Y,{key:1},[f("div",mb,[f("button",{"data-test":"fs-up",title:$.$t("files.upOneLevel"),"aria-label":$.$t("files.upOneLevel"),class:"grid h-5 w-5 shrink-0 place-items-center rounded text-fg-muted hover:bg-raised hover:text-fg disabled:opacity-40 disabled:hover:bg-transparent disabled:hover:text-fg-muted",disabled:a.value||x(u).loading,onClick:o},[O(x(Ga),{size:13})],8,gb),f("button",{class:"hover:text-fg",onClick:F[4]||(F[4]=U=>x(u).up(-1))},k(x(u).workspace??$.$t("files.root")),1),(d(!0),y(Y,null,oe(r.value,(U,me)=>(d(),y(Y,{key:me},[F[5]||(F[5]=f("span",null,"/",-1)),f("button",{class:"hover:text-fg",onClick:Re=>x(u).up(me)},k(U),9,xb)],64))),128))]),f("ul",vb,[(d(!0),y(Y,null,oe(x(u).entries,U=>(d(),y("li",{key:U.name},[f("button",{"data-test":"fs-entry",class:W(["flex w-full items-center gap-1.5 rounded-md px-1.5 py-1 text-left cursor-pointer",w(U.name)?"bg-accent/15":g(U)?"bg-accent/10":"hover:bg-raised"]),onClick:me=>D(U)},[U.type==="dir"?(d(),j(x(Ft),{key:0,size:11,class:"shrink-0 text-fg-muted"})):(d(),y("span",kb)),U.type==="dir"?(d(),j(x($n),{key:2,size:13,class:W(["shrink-0",g(U)?"text-accent":"text-fg-muted"])},null,8,["class"])):(d(),j(x(Fu),{key:3,size:13,class:W(["shrink-0",w(U.name)||g(U)?"text-accent":"text-fg-muted"])},null,8,["class"])),f("span",{class:W(["flex-1 truncate font-sans text-[12px]",w(U.name)||g(U)?"text-accent font-medium":U.type==="dir"?"text-fg font-medium":"text-fg-muted"])},k(U.name),3),g(U)?(d(),y("span",{key:4,"data-test":"fs-status",class:W(["w-1.5 h-1.5 shrink-0 rounded-full",g(U).dot]),title:`${g(U).label} — ${x(u).changed[A(U.name)]||$.$t("files.containsChanges")}`},null,10,_b)):I("",!0),U.type==="file"&&!g(U)?(d(),y("span",wb,k(E(U.size)),1)):I("",!0)],10,yb)]))),128)),!x(u).entries.length&&!x(u).loading?(d(),y("li",Eb,k($.$t("files.emptyDirectory")),1)):I("",!0)])],64))])):(d(),y("div",Ab,[x(u).diff?(d(),y(Y,{key:0},[f("div",Cb,[f("div",{"data-test":"changes-summary",class:W(["flex items-center gap-1.5 px-2.5 pt-2",(R=l.value)!=null&&R.worktree?"pb-1":"pb-2"])},[O(x(Tn),{size:12,class:"shrink-0 text-accent"}),(Q=l.value)!=null&&Q.branch?(d(),y("span",Db,k(l.value.branch),1)):(te=l.value)!=null&&te.detached?(d(),y("span",$b,k($.$t("files.detached")),1)):(d(),y("span",Tb,k($.$t("files.changes")),1)),(J=(G=l.value)==null?void 0:G.worktree)!=null&&J.linked?(d(),y("span",Sb,k($.$t("files.linked")),1)):I("",!0),F[6]||(F[6]=f("span",{class:"flex-1"},null,-1)),p.value?(d(),y("div",Fb,[f("span",Ib,k(p.value.fileCount)+" "+k($.$t("files.filesCount")),1),f("span",Mb,"+"+k(p.value.add),1),f("span",Ob,"−"+k(p.value.del),1)])):I("",!0)],2),(ae=l.value)!=null&&ae.worktree?(d(),y("div",{key:0,"data-test":"worktree-path",class:"flex items-center gap-1.5 px-2.5 pb-2 text-[10px] text-fg-muted",title:`${$.$t("files.worktree")}: ${l.value.worktree.root}`},[O(x(Ya),{size:11,class:"shrink-0 opacity-70"}),f("span",Rb,k(l.value.worktree.root),1)],8,zb)):I("",!0)]),f("ul",Lb,[(d(!0),y(Y,null,oe(x(u).diff.files,U=>(d(),y("li",{key:U.path},[f("button",{"data-test":"diff-file",class:W(["flex w-full items-center gap-2 rounded-md px-1.5 py-1 text-left cursor-pointer",x(u).diffPath===U.path?"bg-accent/10":"hover:bg-raised"]),onClick:me=>q(U.path)},[O(x(lu),{size:12,class:W(["shrink-0",x(u).diffPath===U.path?"text-accent":"text-fg-muted"])},null,8,["class"]),f("span",{class:W(["flex-1 truncate font-mono text-[11px]",x(u).diffPath===U.path?"text-accent":"text-fg"])},k(U.path),3),f("span",{class:W(["shrink-0 font-mono text-[10.5px] uppercase tabular-nums",_(U.status).cls])},k(U.status.trim()||"··"),3)],10,Nb)]))),128)),x(u).diff.files.length?I("",!0):(d(),y("li",Pb,k($.$t("files.noChanges")),1))])],64)):x(u).notGit?(d(),y("div",Bb,[O(x(Tn),{size:20,class:"text-fg-muted/60"}),f("span",null,k($.$t("files.notGitRepo")),1),f("span",qb,k($.$t("files.notGitRepoBody")),1)])):x(u).loading?I("",!0):(d(),y("div",Ub,k($.$t("files.noDiffLoaded")),1))])),x(u).loading?(d(),y("div",jb,k($.$t("files.loading")),1)):I("",!0)],64)):(d(),y("div",Qh,k($.$t("files.selectToBrowse")),1))])}}}),Vb={class:"pointer-events-none fixed bottom-4 right-4 z-50 flex w-72 flex-col gap-2","aria-live":"polite"},Wb={class:"flex items-start justify-between gap-2"},Gb=["aria-label","onClick"],Kb=ie({__name:"NoticeToast",setup(e){const t=vr();function u(n){const s=n.toLowerCase();return s.includes("fail")||s.includes("error")?"text-danger":s.includes("complet")||s.includes("done")||s.includes("success")?"text-run":"text-info"}return(n,s)=>(d(),y("div",Vb,[(d(!0),y(Y,null,oe(x(t).items.slice(0,4),r=>(d(),y("div",{key:r.id,"data-test":"notice",class:"pointer-events-auto rounded border border-border bg-raised px-3 py-2 text-sm text-fg shadow-lg"},[f("div",Wb,[f("span",null,[f("span",{class:W(["text-xs uppercase",u(r.kind)])},k(r.kind),3),s[0]||(s[0]=f("br",null,null,-1)),le(k(r.text),1)]),f("button",{class:"text-xs text-fg-muted hover:text-fg","aria-label":n.$t("common.dismissNotice"),onClick:a=>x(t).dismiss(r.id)},"×",8,Gb)])]))),128))]))}}),Zb=["title"],Yb=ie({__name:"ConnectionBadge",setup(e){const t=yr();return(u,n)=>(d(),y("div",{"data-test":"conn-badge",class:W(["inline-flex items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-xs",x(t).online?"text-run":"text-danger"]),title:x(t).online?u.$t("connection.online"):u.$t("connection.reconnecting")},[f("span",{class:W(["h-2 w-2 rounded-full",x(t).online?"bg-run":"bg-danger"]),"aria-hidden":"true"},null,2),f("span",null,k(x(t).online?u.$t("connection.online"):u.$t("connection.reconnecting")),1)],10,Zb))}}),Xb={class:"w-full max-w-lg overflow-hidden rounded-xl border border-border bg-raised shadow-xl"},Jb={class:"flex items-center gap-2 border-b border-border px-4 py-3"},Qb=["placeholder"],em={class:"max-h-80 overflow-y-auto py-1 text-sm"},tm=["onMouseenter","onClick"],um={class:"font-medium"},nm={class:"truncate text-xs text-fg-muted"},sm={key:0,class:"px-4 py-3 text-xs text-fg-muted"},rm=ie({__name:"CommandPalette",emits:["close","select-session"],setup(e,{emit:t}){const u=t,n=ot(),s=T(""),r=T(null),a=T(0),o=K(()=>n.instances.flatMap(h=>h.sessions.map(m=>({label:m.alias,sub:`${h.name} · ${m.agent}`,instanceId:h.id,alias:m.alias}))));function i(h,m){return m?`${h.label} ${h.sub}`.toLowerCase().includes(m.toLowerCase()):!0}const l=K(()=>{const h=s.value.trim();return o.value.filter(m=>i(m,h))});function p(){a.value>=l.value.length&&(a.value=Math.max(0,l.value.length-1))}function c(h){u("select-session",h.instanceId,h.alias),u("close")}function v(h){if(h.key==="Escape"){u("close");return}if(h.key==="ArrowDown")h.preventDefault(),a.value=Math.min(a.value+1,l.value.length-1);else if(h.key==="ArrowUp")h.preventDefault(),a.value=Math.max(a.value-1,0);else if(h.key==="Enter"){h.preventDefault();const m=l.value[a.value];m&&c(m)}}return mt(()=>void rt(()=>{var h;return(h=r.value)==null?void 0:h.focus()})),(h,m)=>(d(),y("div",{class:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 pt-24","data-test":"command-palette",onClick:m[2]||(m[2]=Xe(E=>u("close"),["self"]))},[f("div",Xb,[f("div",Jb,[O(x(Nu),{size:16,class:"shrink-0 text-fg-muted"}),Ee(f("input",{ref_key:"input",ref:r,"onUpdate:modelValue":m[0]||(m[0]=E=>s.value=E),"data-test":"palette-input",placeholder:h.$t("palette.placeholder"),class:"w-full bg-transparent text-sm text-fg placeholder:text-fg-muted outline-none",onInput:m[1]||(m[1]=E=>{a.value=0,p()}),onKeydown:v},null,40,Qb),[[Oe,s.value]])]),f("ul",em,[(d(!0),y(Y,null,oe(l.value,(E,A)=>(d(),y("li",{key:`${E.instanceId}:${E.alias}:${A}`},[f("button",{"data-test":"palette-row",class:W(["flex w-full items-center gap-2 px-4 py-1.5 text-left",A===a.value?"bg-accent/10 text-accent":"text-fg hover:bg-fg/5"]),onMouseenter:_=>a.value=A,onClick:_=>c(E)},[O(x(Qa),{size:14,class:"shrink-0"}),f("span",um,k(E.label),1),f("span",nm,k(E.sub),1)],42,tm)]))),128)),l.value.length?I("",!0):(d(),y("li",sm,k(h.$t("palette.noMatches")),1))])])]))}}),am={class:"flex h-dvh flex-col bg-bg text-fg"},om={class:"sticky top-0 z-30 flex h-11 shrink-0 items-center justify-between border-b border-border bg-surface/80 px-3 backdrop-blur-xl"},im={class:"flex items-center gap-2"},lm={class:"flex items-center gap-1.5"},cm=["aria-label"],dm={class:"hidden flex-1 text-[12.5px] text-fg-muted sm:inline"},fm=["aria-label"],pm={class:"flex items-center gap-2 border-b border-border bg-surface px-2 py-1.5 lg:hidden"},hm=["aria-label"],bm={class:"min-w-0 flex-1 truncate text-center text-sm font-medium"},mm={class:"flex shrink-0 items-center gap-0.5"},gm=["aria-label","title"],xm=["aria-label","title"],vm={class:"flex flex-1 overflow-hidden"},ym={class:"flex h-9 shrink-0 items-center justify-between px-3 text-xs"},km={class:"font-semibold uppercase tracking-wider text-fg-muted"},_m={class:"flex items-center gap-2"},wm=["aria-label","title"],Em=["aria-label"],Am=["aria-label","title"],Cm={"data-test":"column",class:"relative flex min-w-0 flex-1 flex-col"},Dm={class:"flex h-9 shrink-0 items-center gap-1 border-b border-border px-2.5"},$m=["aria-label"],Tm={class:"min-h-0 flex-1 overflow-hidden"},Mm=ie({__name:"DashboardView",setup(e){const t=Pa(),u=ot(),n=kt(),s=Bu(),r=mu(),a=vr(),o=yr();let i=null;const l=T(!1),p=T(!1),c=T("tasks");function v(){l.value=!1,p.value=!1}function h(F){c.value=F,p.value=!0}function m(){_(),h("files")}const E=T(localStorage.getItem("xacpx.leftCollapsed")==="1");he(E,F=>localStorage.setItem("xacpx.leftCollapsed",F?"1":"0"));const A=K(()=>!!(s.file||s.diffPath));function _(){s.file=null,s.diffPath=null}he(A,F=>{F&&(p.value=!1)});const g=T(!1);function w(F){(F.metaKey||F.ctrlKey)&&F.key.toLowerCase()==="k"&&(F.preventDefault(),g.value=!g.value)}function D(F,R){n.select(F,R),n.loadHistory().catch(()=>{}),l.value=!1}let M=!1;async function q(){await u.loadInstances().catch(()=>{}),await n.loadActiveTurns().catch(()=>{}),n.instanceId&&n.sessionAlias&&(await u.loadSessions(n.instanceId).catch(()=>{}),await n.loadHistory().catch(()=>{}),await r.loadFor(n.instanceId,n.sessionAlias).catch(()=>{}))}function $(F){o.setOnline(F),F&&(M&&q(),M=!0)}return mt(async()=>{window.addEventListener("keydown",w),await u.loadInstances(),i=Co(R=>{u.applyEvent(R),n.applyEvent(R),r.applyEvent(R),a.applyEvent(R)},$),await n.loadActiveTurns().catch(()=>{});const F=$o();F&&u.byId(F.instanceId)&&D(F.instanceId,F.alias)}),zn(()=>{window.removeEventListener("keydown",w),i==null||i()}),(F,R)=>{const Q=La("router-link");return d(),y("div",am,[f("header",om,[f("div",im,[O(Na),O(Yb)]),f("div",lm,[f("button",{"data-test":"global-search","aria-label":F.$t("nav.search"),class:"group flex h-7 items-center gap-2 rounded-lg border border-border bg-bg px-2.5 text-left transition-colors hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:w-64",onClick:R[0]||(R[0]=te=>g.value=!0)},[O(x(Nu),{size:14,class:"text-fg-muted"}),f("span",dm,k(F.$t("nav.searchPlaceholder")),1),R[14]||(R[14]=f("kbd",{class:"hidden rounded border border-border bg-raised px-1.5 py-0.5 font-mono text-[10px] text-fg-muted sm:inline"},"⌘K",-1))],8,cm),f("button",{"data-test":"theme-toggle","aria-label":x(t).mode==="dark"?F.$t("nav.toLight"):F.$t("nav.toDark"),class:"grid h-7 w-7 place-items-center rounded-lg border border-border text-fg-muted transition-colors hover:bg-raised focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent",onClick:R[1]||(R[1]=te=>x(t).toggle())},[x(t).mode==="dark"?(d(),j(x(eo),{key:0,size:15})):(d(),j(x(co),{key:1,size:15}))],8,fm),O(Q,{to:"/settings","data-test":"settings-link","aria-label":F.$t("nav.settings"),class:"grid h-7 w-7 place-items-center rounded-lg border border-border text-fg-muted transition-colors hover:bg-raised focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent"},{default:ft(()=>[O(x(io),{size:15})]),_:1},8,["aria-label"])])]),f("div",pm,[f("button",{"data-test":"open-instances","aria-label":F.$t("nav.openInstances"),class:"rounded p-1 leading-none text-fg-muted hover:bg-fg/5",onClick:R[2]||(R[2]=te=>l.value=!0)},[O(x(Ja),{size:20})],8,hm),f("span",bm,k(x(n).sessionAlias??"xacpx relay"),1),f("div",mm,[f("button",{"data-test":"open-files","aria-label":F.$t("nav.openFiles"),title:F.$t("nav.files"),class:"grid h-8 w-8 place-items-center rounded text-fg-muted hover:bg-fg/5",onClick:R[3]||(R[3]=te=>h("files"))},[O(x(lu),{size:18})],8,gm),f("button",{"data-test":"open-tasks","aria-label":F.$t("nav.openTasks"),title:F.$t("nav.tasks"),class:"grid h-8 w-8 place-items-center rounded text-fg-muted hover:bg-fg/5",onClick:R[4]||(R[4]=te=>h("tasks"))},[O(x(Iu),{size:18})],8,xm)])]),f("div",vm,[l.value||p.value?(d(),y("div",{key:0,"data-test":"drawer-backdrop",class:"fixed inset-0 z-30 bg-black/30 lg:hidden",onClick:v})):I("",!0),f("div",{"data-test":"column","data-drawer":"left",class:W(["fixed inset-y-0 left-0 z-40 flex w-72 max-w-[85%] shrink-0 transform flex-col border-r border-border bg-surface shadow-lg transition-[transform,width] lg:static lg:z-auto lg:max-w-none lg:translate-x-0 lg:transform-none lg:shadow-none",[l.value?"translate-x-0":"-translate-x-full",E.value?"lg:w-0 lg:min-w-0 lg:overflow-hidden lg:border-r-0":"lg:w-[248px]"]])},[f("div",ym,[f("span",km,k(F.$t("nav.instances")),1),f("div",_m,[f("button",{"data-test":"toggle-left","aria-label":F.$t("nav.hideSidebar"),title:F.$t("nav.hideSidebar"),class:"hidden h-6 w-6 place-items-center rounded-md text-fg-muted transition-colors hover:bg-raised hover:text-fg lg:grid",onClick:R[5]||(R[5]=te=>E.value=!0)},[O(x(to),{size:15})],8,wm),f("button",{"data-test":"close-instances","aria-label":F.$t("nav.closeInstances"),class:"text-fg-muted hover:text-fg lg:hidden",onClick:R[6]||(R[6]=te=>l.value=!1)},[O(x(at),{size:18})],8,Em)])]),O(Ml,{onSelect:D})],2),E.value?(d(),y("button",{key:1,"data-test":"expand-left","aria-label":F.$t("nav.showSidebar"),title:F.$t("nav.showSidebar"),class:"hidden w-5 shrink-0 items-center justify-center border-r border-border bg-surface/60 text-fg-muted transition-colors hover:bg-raised hover:text-fg lg:flex",onClick:R[7]||(R[7]=te=>E.value=!1)},[O(x(uo),{size:15})],8,Am)):I("",!0),f("div",Cm,[O(P2,{class:"absolute inset-0",inert:A.value,onShowFiles:R[8]||(R[8]=te=>c.value="files")},null,8,["inert"]),A.value?(d(),j(oh,{key:0,class:"absolute inset-0 z-10",onBack:m,onClose:_})):I("",!0)]),f("div",{"data-test":"column","data-drawer":"right",class:W(["fixed inset-y-0 right-0 z-40 flex w-72 max-w-[85%] shrink-0 transform flex-col overflow-hidden border-l border-border bg-surface shadow-lg transition-transform lg:static lg:z-auto lg:w-[296px] lg:max-w-none lg:translate-x-0 lg:transform-none lg:shadow-none",p.value?"translate-x-0":"translate-x-full"])},[f("div",Dm,[f("button",{"data-test":"right-tab-files",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",c.value==="files"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:R[9]||(R[9]=te=>c.value="files")},[O(x(lu),{size:13}),le(k(F.$t("nav.files")),1)],2),f("button",{"data-test":"right-tab-tasks",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",c.value==="tasks"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:R[10]||(R[10]=te=>c.value="tasks")},[O(x(Iu),{size:13}),le(k(F.$t("nav.tasks")),1)],2),f("button",{"data-test":"close-tasks","aria-label":F.$t("nav.closeTasks"),class:"ml-auto text-fg-muted hover:text-fg lg:hidden",onClick:R[11]||(R[11]=te=>p.value=!1)},[O(x(at),{size:18})],8,$m)]),f("div",Tm,[c.value==="tasks"?(d(),j(Xh,{key:0})):(d(),j(Hb,{key:1,"instance-id":x(n).instanceId},null,8,["instance-id"]))])],2)]),O(Kb),g.value?(d(),j(rm,{key:0,onClose:R[12]||(R[12]=te=>g.value=!1),onSelectSession:R[13]||(R[13]=(te,G)=>{D(te,G),g.value=!1})})):I("",!0)])}}});export{Mm as default};
271
+ `):[])Q.startsWith("+")&&!Q.startsWith("+++")?F++:Q.startsWith("-")&&!Q.startsWith("---")&&R++;return{fileCount:$.files.length,add:F,del:R}}),c=T("");let v=null;function h(){v&&clearTimeout(v),v=setTimeout(()=>void u.search(c.value),250)}function m(){c.value="",u.search("")}function E($){return $===void 0?"":$<1024?`${$} B`:$<1024*1024?`${($/1024).toFixed(1)} KB`:`${($/1024/1024).toFixed(1)} MB`}function A($){return u.path?`${u.path}/${$}`:$}function _($){const F=$.trim();return F.includes("?")?{label:"U",cls:"text-warn",dot:"bg-warn"}:F.includes("A")?{label:"A",cls:"text-run",dot:"bg-run"}:F.includes("D")?{label:"D",cls:"text-danger",dot:"bg-danger"}:F.includes("R")?{label:"R",cls:"text-accent",dot:"bg-accent"}:F.includes("M")?{label:"M",cls:"text-info",dot:"bg-warn"}:{label:F[0]??"•",cls:"text-fg-muted",dot:"bg-warn"}}function g($){const F=A($.name);if($.type==="file"){const Q=u.changed[F];return Q?_(Q):null}const R=`${F}/`;return Object.keys(u.changed).some(Q=>Q.startsWith(R))?{label:"•",cls:"text-warn",dot:"bg-warn"}:null}function w($){return!!u.file&&u.file.path===A($)}function D($){$.type==="file"&&(u.diffPath=null),u.open($)}function M($){u.diffPath=null,u.openFile($)}function q($){u.file=null,u.loadDiff($)}return he(()=>[t.instanceId,i.value],async([$,F])=>{var Q,te,G;if(u.reset(),c.value="",!$)return;u.instanceId=$,await n.loadWorkspaces($).catch(()=>{});const R=F??((G=(te=(Q=n.byId($))==null?void 0:Q.workspaces)==null?void 0:te[0])==null?void 0:G.name);R&&u.selectWorkspace($,R)},{immediate:!0}),he(()=>u.tab,$=>{$==="changes"&&!u.diff&&u.loadDiff()}),($,F)=>{var R,Q,te,G,J,ae;return d(),y("div",Jh,[e.instanceId?(d(),y(Y,{key:1},[f("div",eb,[f("div",{"data-test":"ws-label",class:"flex min-w-0 flex-1 items-center gap-1.5 text-xs text-fg",title:x(u).workspace??""},[O(x($n),{size:13,class:"shrink-0 text-warn"}),f("span",ub,k(x(u).workspace??"—"),1)],8,tb),f("div",nb,[f("button",{"data-test":"refresh-files",title:$.$t("files.refresh"),"aria-label":$.$t("files.refresh"),class:"grid h-6 w-6 place-items-center rounded text-fg-muted transition-colors hover:bg-raised hover:text-fg disabled:opacity-50",disabled:x(u).loading,onClick:F[0]||(F[0]=U=>x(u).refresh())},[O(x(so),{size:13,class:W(x(u).loading?"animate-spin motion-reduce:animate-none":"")},null,8,["class"])],8,sb),f("button",{"data-test":"tab-files",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",x(u).tab==="files"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:F[1]||(F[1]=U=>x(u).tab="files")},[O(x(lu),{size:13}),le(k($.$t("files.title")),1)],2),f("button",{"data-test":"tab-changes",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",x(u).tab==="changes"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:F[2]||(F[2]=U=>x(u).tab="changes")},[O(x(Iu),{size:13}),le(k($.$t("files.changes")),1)],2)])]),x(u).error?(d(),y("div",rb,k(x(u).error),1)):I("",!0),x(u).tab==="files"?(d(),y("div",ab,[f("div",ob,[Ee(f("input",{"onUpdate:modelValue":F[3]||(F[3]=U=>c.value=U),"data-test":"fs-search",placeholder:$.$t("files.searchPlaceholder"),class:"min-w-0 flex-1 rounded border border-border bg-bg px-2 py-1 text-xs text-fg placeholder:text-fg-muted",onInput:h},null,40,ib),[[Oe,c.value]]),c.value?(d(),y("button",{key:0,"aria-label":$.$t("files.clearSearch"),class:"text-fg-muted hover:text-fg",onClick:m},[O(x(at),{size:14})],8,lb)):I("",!0)]),x(u).query.trim()?(d(),y("div",cb,[f("ul",db,[(d(!0),y(Y,null,oe(x(u).results,U=>(d(),y("li",{key:U},[f("button",{"data-test":"fs-result",class:"flex w-full items-center gap-1.5 rounded-md px-1.5 py-1 text-left hover:bg-raised cursor-pointer",onClick:me=>M(U)},[O(x(Fu),{size:13,class:"shrink-0 text-fg-muted"}),f("span",pb,k(U),1)],8,fb)]))),128)),!x(u).results.length&&!x(u).searching?(d(),y("li",hb,k($.$t("palette.noMatches")),1)):I("",!0)]),x(u).searchTruncated?(d(),y("div",bb,k($.$t("files.showingFirstMatches")),1)):I("",!0)])):(d(),y(Y,{key:1},[f("div",mb,[f("button",{"data-test":"fs-up",title:$.$t("files.upOneLevel"),"aria-label":$.$t("files.upOneLevel"),class:"grid h-5 w-5 shrink-0 place-items-center rounded text-fg-muted hover:bg-raised hover:text-fg disabled:opacity-40 disabled:hover:bg-transparent disabled:hover:text-fg-muted",disabled:a.value||x(u).loading,onClick:o},[O(x(Ga),{size:13})],8,gb),f("button",{class:"hover:text-fg",onClick:F[4]||(F[4]=U=>x(u).up(-1))},k(x(u).workspace??$.$t("files.root")),1),(d(!0),y(Y,null,oe(r.value,(U,me)=>(d(),y(Y,{key:me},[F[5]||(F[5]=f("span",null,"/",-1)),f("button",{class:"hover:text-fg",onClick:Re=>x(u).up(me)},k(U),9,xb)],64))),128))]),f("ul",vb,[(d(!0),y(Y,null,oe(x(u).entries,U=>(d(),y("li",{key:U.name},[f("button",{"data-test":"fs-entry",class:W(["flex w-full items-center gap-1.5 rounded-md px-1.5 py-1 text-left cursor-pointer",w(U.name)?"bg-accent/15":g(U)?"bg-accent/10":"hover:bg-raised"]),onClick:me=>D(U)},[U.type==="dir"?(d(),j(x(Ft),{key:0,size:11,class:"shrink-0 text-fg-muted"})):(d(),y("span",kb)),U.type==="dir"?(d(),j(x($n),{key:2,size:13,class:W(["shrink-0",g(U)?"text-accent":"text-fg-muted"])},null,8,["class"])):(d(),j(x(Fu),{key:3,size:13,class:W(["shrink-0",w(U.name)||g(U)?"text-accent":"text-fg-muted"])},null,8,["class"])),f("span",{class:W(["flex-1 truncate font-sans text-[12px]",w(U.name)||g(U)?"text-accent font-medium":U.type==="dir"?"text-fg font-medium":"text-fg-muted"])},k(U.name),3),g(U)?(d(),y("span",{key:4,"data-test":"fs-status",class:W(["w-1.5 h-1.5 shrink-0 rounded-full",g(U).dot]),title:`${g(U).label} — ${x(u).changed[A(U.name)]||$.$t("files.containsChanges")}`},null,10,_b)):I("",!0),U.type==="file"&&!g(U)?(d(),y("span",wb,k(E(U.size)),1)):I("",!0)],10,yb)]))),128)),!x(u).entries.length&&!x(u).loading?(d(),y("li",Eb,k($.$t("files.emptyDirectory")),1)):I("",!0)])],64))])):(d(),y("div",Ab,[x(u).diff?(d(),y(Y,{key:0},[f("div",Cb,[f("div",{"data-test":"changes-summary",class:W(["flex items-center gap-1.5 px-2.5 pt-2",(R=l.value)!=null&&R.worktree?"pb-1":"pb-2"])},[O(x(Tn),{size:12,class:"shrink-0 text-accent"}),(Q=l.value)!=null&&Q.branch?(d(),y("span",Db,k(l.value.branch),1)):(te=l.value)!=null&&te.detached?(d(),y("span",$b,k($.$t("files.detached")),1)):(d(),y("span",Tb,k($.$t("files.changes")),1)),(J=(G=l.value)==null?void 0:G.worktree)!=null&&J.linked?(d(),y("span",Sb,k($.$t("files.linked")),1)):I("",!0),F[6]||(F[6]=f("span",{class:"flex-1"},null,-1)),p.value?(d(),y("div",Fb,[f("span",Ib,k(p.value.fileCount)+" "+k($.$t("files.filesCount")),1),f("span",Mb,"+"+k(p.value.add),1),f("span",Ob,"−"+k(p.value.del),1)])):I("",!0)],2),(ae=l.value)!=null&&ae.worktree?(d(),y("div",{key:0,"data-test":"worktree-path",class:"flex items-center gap-1.5 px-2.5 pb-2 text-[10px] text-fg-muted",title:`${$.$t("files.worktree")}: ${l.value.worktree.root}`},[O(x(Ya),{size:11,class:"shrink-0 opacity-70"}),f("span",Rb,k(l.value.worktree.root),1)],8,zb)):I("",!0)]),f("ul",Lb,[(d(!0),y(Y,null,oe(x(u).diff.files,U=>(d(),y("li",{key:U.path},[f("button",{"data-test":"diff-file",class:W(["flex w-full items-center gap-2 rounded-md px-1.5 py-1 text-left cursor-pointer",x(u).diffPath===U.path?"bg-accent/10":"hover:bg-raised"]),onClick:me=>q(U.path)},[O(x(lu),{size:12,class:W(["shrink-0",x(u).diffPath===U.path?"text-accent":"text-fg-muted"])},null,8,["class"]),f("span",{class:W(["flex-1 truncate font-mono text-[11px]",x(u).diffPath===U.path?"text-accent":"text-fg"])},k(U.path),3),f("span",{class:W(["shrink-0 font-mono text-[10.5px] uppercase tabular-nums",_(U.status).cls])},k(U.status.trim()||"··"),3)],10,Nb)]))),128)),x(u).diff.files.length?I("",!0):(d(),y("li",Pb,k($.$t("files.noChanges")),1))])],64)):x(u).notGit?(d(),y("div",Bb,[O(x(Tn),{size:20,class:"text-fg-muted/60"}),f("span",null,k($.$t("files.notGitRepo")),1),f("span",qb,k($.$t("files.notGitRepoBody")),1)])):x(u).loading?I("",!0):(d(),y("div",Ub,k($.$t("files.noDiffLoaded")),1))])),x(u).loading?(d(),y("div",jb,k($.$t("files.loading")),1)):I("",!0)],64)):(d(),y("div",Qh,k($.$t("files.selectToBrowse")),1))])}}}),Vb={class:"pointer-events-none fixed bottom-4 right-4 z-50 flex w-72 flex-col gap-2","aria-live":"polite"},Wb={class:"flex items-start justify-between gap-2"},Gb=["aria-label","onClick"],Kb=ie({__name:"NoticeToast",setup(e){const t=vr();function u(n){const s=n.toLowerCase();return s.includes("fail")||s.includes("error")?"text-danger":s.includes("complet")||s.includes("done")||s.includes("success")?"text-run":"text-info"}return(n,s)=>(d(),y("div",Vb,[(d(!0),y(Y,null,oe(x(t).items.slice(0,4),r=>(d(),y("div",{key:r.id,"data-test":"notice",class:"pointer-events-auto rounded border border-border bg-raised px-3 py-2 text-sm text-fg shadow-lg"},[f("div",Wb,[f("span",null,[f("span",{class:W(["text-xs uppercase",u(r.kind)])},k(r.kind),3),s[0]||(s[0]=f("br",null,null,-1)),le(k(r.text),1)]),f("button",{class:"text-xs text-fg-muted hover:text-fg","aria-label":n.$t("common.dismissNotice"),onClick:a=>x(t).dismiss(r.id)},"×",8,Gb)])]))),128))]))}}),Zb=["title"],Yb=ie({__name:"ConnectionBadge",setup(e){const t=yr();return(u,n)=>(d(),y("div",{"data-test":"conn-badge",class:W(["inline-flex items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-xs",x(t).online?"text-run":"text-danger"]),title:x(t).online?u.$t("connection.online"):u.$t("connection.reconnecting")},[f("span",{class:W(["h-2 w-2 rounded-full",x(t).online?"bg-run":"bg-danger"]),"aria-hidden":"true"},null,2),f("span",null,k(x(t).online?u.$t("connection.online"):u.$t("connection.reconnecting")),1)],10,Zb))}}),Xb={class:"w-full max-w-lg overflow-hidden rounded-xl border border-border bg-raised shadow-xl"},Jb={class:"flex items-center gap-2 border-b border-border px-4 py-3"},Qb=["placeholder"],em={class:"max-h-80 overflow-y-auto py-1 text-sm"},tm=["onMouseenter","onClick"],um={class:"font-medium"},nm={class:"truncate text-xs text-fg-muted"},sm={key:0,class:"px-4 py-3 text-xs text-fg-muted"},rm=ie({__name:"CommandPalette",emits:["close","select-session"],setup(e,{emit:t}){const u=t,n=ot(),s=T(""),r=T(null),a=T(0),o=K(()=>n.instances.flatMap(h=>h.sessions.map(m=>({label:m.alias,sub:`${h.name} · ${m.agent}`,instanceId:h.id,alias:m.alias}))));function i(h,m){return m?`${h.label} ${h.sub}`.toLowerCase().includes(m.toLowerCase()):!0}const l=K(()=>{const h=s.value.trim();return o.value.filter(m=>i(m,h))});function p(){a.value>=l.value.length&&(a.value=Math.max(0,l.value.length-1))}function c(h){u("select-session",h.instanceId,h.alias),u("close")}function v(h){if(h.key==="Escape"){u("close");return}if(h.key==="ArrowDown")h.preventDefault(),a.value=Math.min(a.value+1,l.value.length-1);else if(h.key==="ArrowUp")h.preventDefault(),a.value=Math.max(a.value-1,0);else if(h.key==="Enter"){h.preventDefault();const m=l.value[a.value];m&&c(m)}}return mt(()=>void rt(()=>{var h;return(h=r.value)==null?void 0:h.focus()})),(h,m)=>(d(),y("div",{class:"fixed inset-0 z-50 flex items-start justify-center bg-black/50 pt-24","data-test":"command-palette",onClick:m[2]||(m[2]=Xe(E=>u("close"),["self"]))},[f("div",Xb,[f("div",Jb,[O(x(Nu),{size:16,class:"shrink-0 text-fg-muted"}),Ee(f("input",{ref_key:"input",ref:r,"onUpdate:modelValue":m[0]||(m[0]=E=>s.value=E),"data-test":"palette-input",placeholder:h.$t("palette.placeholder"),class:"w-full bg-transparent text-sm text-fg placeholder:text-fg-muted outline-none",onInput:m[1]||(m[1]=E=>{a.value=0,p()}),onKeydown:v},null,40,Qb),[[Oe,s.value]])]),f("ul",em,[(d(!0),y(Y,null,oe(l.value,(E,A)=>(d(),y("li",{key:`${E.instanceId}:${E.alias}:${A}`},[f("button",{"data-test":"palette-row",class:W(["flex w-full items-center gap-2 px-4 py-1.5 text-left",A===a.value?"bg-accent/10 text-accent":"text-fg hover:bg-fg/5"]),onMouseenter:_=>a.value=A,onClick:_=>c(E)},[O(x(Qa),{size:14,class:"shrink-0"}),f("span",um,k(E.label),1),f("span",nm,k(E.sub),1)],42,tm)]))),128)),l.value.length?I("",!0):(d(),y("li",sm,k(h.$t("palette.noMatches")),1))])])]))}}),am={class:"flex h-dvh flex-col bg-bg text-fg"},om={class:"sticky top-0 z-30 flex h-[calc(2.75rem+env(safe-area-inset-top))] shrink-0 items-center justify-between border-b border-border bg-surface/80 px-3 pt-[env(safe-area-inset-top)] backdrop-blur-xl"},im={class:"flex items-center gap-2"},lm={class:"flex items-center gap-1.5"},cm=["aria-label"],dm={class:"hidden flex-1 text-[12.5px] text-fg-muted sm:inline"},fm=["aria-label"],pm={class:"flex items-center gap-2 border-b border-border bg-surface px-2 py-1.5 lg:hidden"},hm=["aria-label"],bm={class:"min-w-0 flex-1 truncate text-center text-sm font-medium"},mm={class:"flex shrink-0 items-center gap-0.5"},gm=["aria-label","title"],xm=["aria-label","title"],vm={class:"flex flex-1 overflow-hidden"},ym={class:"flex h-9 shrink-0 items-center justify-between px-3 text-xs"},km={class:"font-semibold uppercase tracking-wider text-fg-muted"},_m={class:"flex items-center gap-2"},wm=["aria-label","title"],Em=["aria-label"],Am=["aria-label","title"],Cm={"data-test":"column",class:"relative flex min-w-0 flex-1 flex-col"},Dm={class:"flex h-9 shrink-0 items-center gap-1 border-b border-border px-2.5"},$m=["aria-label"],Tm={class:"min-h-0 flex-1 overflow-hidden"},Mm=ie({__name:"DashboardView",setup(e){const t=Pa(),u=ot(),n=kt(),s=Bu(),r=mu(),a=vr(),o=yr();let i=null;const l=T(!1),p=T(!1),c=T("tasks");function v(){l.value=!1,p.value=!1}function h(F){c.value=F,p.value=!0}function m(){_(),h("files")}const E=T(localStorage.getItem("xacpx.leftCollapsed")==="1");he(E,F=>localStorage.setItem("xacpx.leftCollapsed",F?"1":"0"));const A=K(()=>!!(s.file||s.diffPath));function _(){s.file=null,s.diffPath=null}he(A,F=>{F&&(p.value=!1)});const g=T(!1);function w(F){(F.metaKey||F.ctrlKey)&&F.key.toLowerCase()==="k"&&(F.preventDefault(),g.value=!g.value)}function D(F,R){n.select(F,R),n.loadHistory().catch(()=>{}),l.value=!1}let M=!1;async function q(){await u.loadInstances().catch(()=>{}),await n.loadActiveTurns().catch(()=>{}),n.instanceId&&n.sessionAlias&&(await u.loadSessions(n.instanceId).catch(()=>{}),await n.loadHistory().catch(()=>{}),await r.loadFor(n.instanceId,n.sessionAlias).catch(()=>{}))}function $(F){o.setOnline(F),F&&(M&&q(),M=!0)}return mt(async()=>{window.addEventListener("keydown",w),await u.loadInstances(),i=Co(R=>{u.applyEvent(R),n.applyEvent(R),r.applyEvent(R),a.applyEvent(R)},$),await n.loadActiveTurns().catch(()=>{});const F=$o();F&&u.byId(F.instanceId)&&D(F.instanceId,F.alias)}),zn(()=>{window.removeEventListener("keydown",w),i==null||i()}),(F,R)=>{const Q=La("router-link");return d(),y("div",am,[f("header",om,[f("div",im,[O(Na),O(Yb)]),f("div",lm,[f("button",{"data-test":"global-search","aria-label":F.$t("nav.search"),class:"group flex h-7 items-center gap-2 rounded-lg border border-border bg-bg px-2.5 text-left transition-colors hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:w-64",onClick:R[0]||(R[0]=te=>g.value=!0)},[O(x(Nu),{size:14,class:"text-fg-muted"}),f("span",dm,k(F.$t("nav.searchPlaceholder")),1),R[14]||(R[14]=f("kbd",{class:"hidden rounded border border-border bg-raised px-1.5 py-0.5 font-mono text-[10px] text-fg-muted sm:inline"},"⌘K",-1))],8,cm),f("button",{"data-test":"theme-toggle","aria-label":x(t).mode==="dark"?F.$t("nav.toLight"):F.$t("nav.toDark"),class:"grid h-7 w-7 place-items-center rounded-lg border border-border text-fg-muted transition-colors hover:bg-raised focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent",onClick:R[1]||(R[1]=te=>x(t).toggle())},[x(t).mode==="dark"?(d(),j(x(eo),{key:0,size:15})):(d(),j(x(co),{key:1,size:15}))],8,fm),O(Q,{to:"/settings","data-test":"settings-link","aria-label":F.$t("nav.settings"),class:"grid h-7 w-7 place-items-center rounded-lg border border-border text-fg-muted transition-colors hover:bg-raised focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent"},{default:ft(()=>[O(x(io),{size:15})]),_:1},8,["aria-label"])])]),f("div",pm,[f("button",{"data-test":"open-instances","aria-label":F.$t("nav.openInstances"),class:"rounded p-1 leading-none text-fg-muted hover:bg-fg/5",onClick:R[2]||(R[2]=te=>l.value=!0)},[O(x(Ja),{size:20})],8,hm),f("span",bm,k(x(n).sessionAlias??"xacpx relay"),1),f("div",mm,[f("button",{"data-test":"open-files","aria-label":F.$t("nav.openFiles"),title:F.$t("nav.files"),class:"grid h-8 w-8 place-items-center rounded text-fg-muted hover:bg-fg/5",onClick:R[3]||(R[3]=te=>h("files"))},[O(x(lu),{size:18})],8,gm),f("button",{"data-test":"open-tasks","aria-label":F.$t("nav.openTasks"),title:F.$t("nav.tasks"),class:"grid h-8 w-8 place-items-center rounded text-fg-muted hover:bg-fg/5",onClick:R[4]||(R[4]=te=>h("tasks"))},[O(x(Iu),{size:18})],8,xm)])]),f("div",vm,[l.value||p.value?(d(),y("div",{key:0,"data-test":"drawer-backdrop",class:"fixed inset-0 z-30 bg-black/30 lg:hidden",onClick:v})):I("",!0),f("div",{"data-test":"column","data-drawer":"left",class:W(["fixed inset-y-0 left-0 z-40 flex w-72 max-w-[85%] shrink-0 transform flex-col border-r border-border bg-surface shadow-lg transition-[transform,width] pt-[env(safe-area-inset-top)] lg:static lg:z-auto lg:max-w-none lg:translate-x-0 lg:transform-none lg:shadow-none lg:pt-0",[l.value?"translate-x-0":"-translate-x-full",E.value?"lg:w-0 lg:min-w-0 lg:overflow-hidden lg:border-r-0":"lg:w-[248px]"]])},[f("div",ym,[f("span",km,k(F.$t("nav.instances")),1),f("div",_m,[f("button",{"data-test":"toggle-left","aria-label":F.$t("nav.hideSidebar"),title:F.$t("nav.hideSidebar"),class:"hidden h-6 w-6 place-items-center rounded-md text-fg-muted transition-colors hover:bg-raised hover:text-fg lg:grid",onClick:R[5]||(R[5]=te=>E.value=!0)},[O(x(to),{size:15})],8,wm),f("button",{"data-test":"close-instances","aria-label":F.$t("nav.closeInstances"),class:"text-fg-muted hover:text-fg lg:hidden",onClick:R[6]||(R[6]=te=>l.value=!1)},[O(x(at),{size:18})],8,Em)])]),O(Ml,{onSelect:D})],2),E.value?(d(),y("button",{key:1,"data-test":"expand-left","aria-label":F.$t("nav.showSidebar"),title:F.$t("nav.showSidebar"),class:"hidden w-5 shrink-0 items-center justify-center border-r border-border bg-surface/60 text-fg-muted transition-colors hover:bg-raised hover:text-fg lg:flex",onClick:R[7]||(R[7]=te=>E.value=!1)},[O(x(uo),{size:15})],8,Am)):I("",!0),f("div",Cm,[O(P2,{class:"absolute inset-0",inert:A.value,onShowFiles:R[8]||(R[8]=te=>c.value="files")},null,8,["inert"]),A.value?(d(),j(oh,{key:0,class:"absolute inset-0 z-10",onBack:m,onClose:_})):I("",!0)]),f("div",{"data-test":"column","data-drawer":"right",class:W(["fixed inset-y-0 right-0 z-40 flex w-72 max-w-[85%] shrink-0 transform flex-col overflow-hidden border-l border-border bg-surface shadow-lg transition-transform pt-[env(safe-area-inset-top)] lg:static lg:z-auto lg:w-[296px] lg:max-w-none lg:translate-x-0 lg:transform-none lg:shadow-none lg:pt-0",p.value?"translate-x-0":"translate-x-full"])},[f("div",Dm,[f("button",{"data-test":"right-tab-files",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",c.value==="files"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:R[9]||(R[9]=te=>c.value="files")},[O(x(lu),{size:13}),le(k(F.$t("nav.files")),1)],2),f("button",{"data-test":"right-tab-tasks",class:W(["flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11.5px] transition-colors cursor-pointer",c.value==="tasks"?"bg-accent/10 text-accent font-semibold":"text-fg-muted font-medium hover:bg-raised"]),onClick:R[10]||(R[10]=te=>c.value="tasks")},[O(x(Iu),{size:13}),le(k(F.$t("nav.tasks")),1)],2),f("button",{"data-test":"close-tasks","aria-label":F.$t("nav.closeTasks"),class:"ml-auto text-fg-muted hover:text-fg lg:hidden",onClick:R[11]||(R[11]=te=>p.value=!1)},[O(x(at),{size:18})],8,$m)]),f("div",Tm,[c.value==="tasks"?(d(),j(Xh,{key:0})):(d(),j(Hb,{key:1,"instance-id":x(n).instanceId},null,8,["instance-id"]))])],2)]),O(Kb),g.value?(d(),j(rm,{key:0,onClose:R[12]||(R[12]=te=>g.value=!1),onSelectSession:R[13]||(R[13]=(te,G)=>{D(te,G),g.value=!1})})):I("",!0)])}}});export{Mm as default};
@@ -0,0 +1 @@
1
+ import{d as g,u as h,c as i,a as e,b as m,t as s,w as v,v as y,e as l,f as d,g as _,h as x,r as c,i as k,o as u}from"./index-B_zwxZen.js";import{_ as w}from"./BrandLogo.vue_vue_type_script_setup_true_lang-DJP2AXeI.js";const $={class:"flex h-dvh items-center justify-center bg-bg"},V={class:"mb-2 flex justify-center"},B={for:"access-token",class:"sr-only"},N=["placeholder","disabled"],S={id:"token-hint",class:"text-sm text-fg-muted"},j={key:0,class:"text-sm text-danger"},A=["disabled"],L=g({__name:"LoginView",setup(C){const n=h(),f=k(),r=c(""),t=c(!1);async function b(){if(!t.value){t.value=!0;try{await n.login(r.value)&&f.replace("/")}finally{t.value=!1}}}return(o,a)=>(u(),i("div",$,[e("form",{class:"w-80 space-y-3 rounded-lg border border-border bg-surface p-6 shadow-xl",onSubmit:x(b,["prevent"])},[e("div",V,[m(w)]),e("label",B,s(o.$t("login.tokenLabel")),1),v(e("input",{id:"access-token","onUpdate:modelValue":a[0]||(a[0]=p=>r.value=p),type:"password",autocomplete:"off","aria-describedby":"token-hint",class:"w-full rounded border border-border bg-bg px-3 py-2 text-fg placeholder:text-fg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50",placeholder:o.$t("login.tokenPlaceholder"),disabled:t.value},null,8,N),[[y,r.value]]),e("p",S,[l(s(o.$t("login.hintBefore")),1),a[1]||(a[1]=e("code",null,"xacpx-relay add token",-1)),l(s(o.$t("login.hintAfter")),1)]),d(n).error?(u(),i("p",j,s(d(n).error),1)):_("",!0),e("button",{class:"w-full rounded bg-accent px-3 py-2 text-white hover:bg-accent-hover disabled:opacity-50",type:"submit",disabled:t.value},s(t.value?o.$t("login.signingIn"):o.$t("login.signIn")),9,A)],32)]))}});export{L as default};
@@ -1,4 +1,4 @@
1
- import{j as S,d as N,u as O,R as T,z as V,p as P,l as x,c as r,a as t,t as s,b as v,N as B,f as o,s as m,F as z,x as E,S as M,w as R,v as j,g as D,e as _,r as p,G as H,P as I,i as A,o as d}from"./index-Ccu9C2LP.js";import{u as F}from"./theme-CSnImvQq.js";/**
1
+ import{j as S,d as N,u as O,R as T,z as V,p as P,l as x,c as r,a as t,t as s,b as v,N as B,f as o,s as m,F as z,x as E,S as M,w as R,v as j,g as D,e as _,r as p,G as H,P as I,i as A,o as d}from"./index-B_zwxZen.js";import{u as F}from"./theme-CxgdBqbU.js";/**
2
2
  * @license lucide-vue-next v1.0.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-Bc0b1UH3.js","assets/BrandLogo.vue_vue_type_script_setup_true_lang-BWvSYb7-.js","assets/DashboardView-qeO0cGEa.js","assets/theme-CSnImvQq.js","assets/DashboardView-Di-qpvLF.css","assets/SettingsView-X2_13xBa.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-Cc1pyK2H.js","assets/BrandLogo.vue_vue_type_script_setup_true_lang-DJP2AXeI.js","assets/DashboardView-CBYGWHdu.js","assets/theme-CxgdBqbU.js","assets/DashboardView-Di-qpvLF.css","assets/SettingsView-Cl3pdwq8.js"])))=>i.map(i=>d[i]);
2
2
  (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)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 n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/**
3
3
  * @vue/shared v3.5.35
4
4
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -77,7 +77,7 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-Bc0b1
77
77
  * vue-router v4.6.4
78
78
  * (c) 2025 Eduardo San Martin Morote
79
79
  * @license MIT
80
- */let Bh=()=>location.protocol+"//"+location.host;function _c(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Bi(l,"")}return Bi(n,e)+s+r}function jh(e,t,n,s){let r=[],o=[],i=null;const l=({state:d})=>{const _=_c(e,location),N=n.value,y=t.value;let w=0;if(d){if(n.value=_,t.value=d,i&&i===N){i=null;return}w=y?d.position-y.position:0}else s(_);r.forEach(M=>{M(n.value,N,{delta:w,type:lo.pop,direction:w?w>0?xr.forward:xr.back:xr.unknown})})};function a(){i=n.value}function c(d){r.push(d);const _=()=>{const N=r.indexOf(d);N>-1&&r.splice(N,1)};return o.push(_),_}function u(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(ue({},d.state,{scroll:gr()}),"")}}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:c,destroy:f}}function Xi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?gr():null}}function Gh(e){const{history:t,location:n}=window,s={value:_c(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Bh()+e+a;try{t[u?"replaceState":"pushState"](c,"",d),r.value=c}catch(_){console.error(_),n[u?"replace":"assign"](d)}}function i(a,c){o(a,ue({},t.state,Xi(r.value.back,a,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=a}function l(a,c){const u=ue({},r.value,t.state,{forward:a,scroll:gr()});o(u.current,u,!0),o(a,ue({},Xi(s.value,a,null),{position:u.position+1},c),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Kh(e){e=Oh(e);const t=Gh(e),n=jh(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ue({location:"",base:e,go:s,createHref:Rh.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let _n=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Oe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Oe||{});const Yh={type:_n.Static,value:""},Xh=/[a-zA-Z0-9_]/;function qh(e){if(!e)return[[]];if(e==="/")return[[Yh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${n})/"${c}": ${_}`)}let n=Oe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,c="",u="";function f(){c&&(n===Oe.Static?o.push({type:_n.Static,value:c}):n===Oe.Param||n===Oe.ParamRegExp||n===Oe.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:_n.Param,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=a}for(;l<e.length;){if(a=e[l++],a==="\\"&&n!==Oe.ParamRegExp){s=n,n=Oe.EscapeNext;continue}switch(n){case Oe.Static:a==="/"?(c&&f(),i()):a===":"?(f(),n=Oe.Param):d();break;case Oe.EscapeNext:d(),n=s;break;case Oe.Param:a==="("?n=Oe.ParamRegExp:Xh.test(a)?d():(f(),n=Oe.Static,a!=="*"&&a!=="?"&&a!=="+"&&l--);break;case Oe.ParamRegExp:a===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+a:n=Oe.ParamRegExpEnd:u+=a;break;case Oe.ParamRegExpEnd:f(),n=Oe.Static,a!=="*"&&a!=="?"&&a!=="+"&&l--,u="";break;default:t("Unknown state");break}}return n===Oe.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),f(),i(),r}const qi="[^/]+?",Jh={sensitive:!1,strict:!1,start:!0,end:!0};var Xe=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Xe||{});const Qh=/[.+*?^${}()[\]/\\]/g;function Zh(e,t){const n=ue({},Jh,t),s=[];let r=n.start?"^":"";const o=[];for(const c of e){const u=c.length?[]:[Xe.Root];n.strict&&!c.length&&(r+="/");for(let f=0;f<c.length;f++){const d=c[f];let _=Xe.Segment+(n.sensitive?Xe.BonusCaseSensitive:0);if(d.type===_n.Static)f||(r+="/"),r+=d.value.replace(Qh,"\\$&"),_+=Xe.Static;else if(d.type===_n.Param){const{value:N,repeatable:y,optional:w,regexp:M}=d;o.push({name:N,repeatable:y,optional:w});const P=M||qi;if(P!==qi){_+=Xe.BonusCustomRegExp;try{`${P}`}catch(b){throw new Error(`Invalid custom RegExp for param "${N}" (${P}): `+b.message)}}let v=y?`((?:${P})(?:/(?:${P}))*)`:`(${P})`;f||(v=w&&c.length<2?`(?:/${v})`:"/"+v),w&&(v+="?"),r+=v,_+=Xe.Dynamic,w&&(_+=Xe.BonusOptional),y&&(_+=Xe.BonusRepeatable),P===".*"&&(_+=Xe.BonusWildcard)}u.push(_)}s.push(u)}if(n.strict&&n.end){const c=s.length-1;s[c][s[c].length-1]+=Xe.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function l(c){const u=c.match(i),f={};if(!u)return null;for(let d=1;d<u.length;d++){const _=u[d]||"",N=o[d-1];f[N.name]=_&&N.repeatable?_.split("/"):_}return f}function a(c){let u="",f=!1;for(const d of e){(!f||!u.endsWith("/"))&&(u+="/"),f=!1;for(const _ of d)if(_.type===_n.Static)u+=_.value;else if(_.type===_n.Param){const{value:N,repeatable:y,optional:w}=_,M=N in c?c[N]:"";if(Et(M)&&!y)throw new Error(`Provided param "${N}" is an array but it is not repeatable (* or + modifiers)`);const P=Et(M)?M.join("/"):M;if(!P)if(w)d.length<2&&(u.endsWith("/")?u=u.slice(0,-1):f=!0);else throw new Error(`Missing required param "${N}"`);u+=P}}return u||"/"}return{re:i,score:s,keys:o,parse:l,stringify:a}}function zh(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Xe.Static+Xe.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Xe.Static+Xe.Segment?1:-1:0}function Ec(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=zh(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(Ji(s))return 1;if(Ji(r))return-1}return r.length-s.length}function Ji(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const em={strict:!1,end:!0,sensitive:!1};function tm(e,t,n){const s=Zh(qh(e.path),n),r=ue(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function nm(e,t){const n=[],s=new Map;t=$i(em,t);function r(f){return s.get(f)}function o(f,d,_){const N=!_,y=Zi(f);y.aliasOf=_&&_.record;const w=$i(t,f),M=[y];if("alias"in f){const b=typeof f.alias=="string"?[f.alias]:f.alias;for(const I of b)M.push(Zi(ue({},y,{components:_?_.record.components:y.components,path:I,aliasOf:_?_.record:y})))}let P,v;for(const b of M){const{path:I}=b;if(d&&I[0]!=="/"){const O=d.record.path,L=O[O.length-1]==="/"?"":"/";b.path=d.record.path+(I&&L+I)}if(P=tm(b,d,w),_?_.alias.push(P):(v=v||P,v!==P&&v.alias.push(P),N&&f.name&&!zi(P)&&i(f.name)),vc(P)&&a(P),y.children){const O=y.children;for(let L=0;L<O.length;L++)o(O[L],P,_&&_.children[L])}_=_||P}return v?()=>{i(v)}:os}function i(f){if(mc(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const d=om(f,n);n.splice(d,0,f),f.record.name&&!zi(f)&&s.set(f.record.name,f)}function c(f,d){let _,N={},y,w;if("name"in f&&f.name){if(_=s.get(f.name),!_)throw Mn(Ae.MATCHER_NOT_FOUND,{location:f});w=_.record.name,N=ue(Qi(d.params,_.keys.filter(v=>!v.optional).concat(_.parent?_.parent.keys.filter(v=>v.optional):[]).map(v=>v.name)),f.params&&Qi(f.params,_.keys.map(v=>v.name))),y=_.stringify(N)}else if(f.path!=null)y=f.path,_=n.find(v=>v.re.test(y)),_&&(N=_.parse(y),w=_.record.name);else{if(_=d.name?s.get(d.name):n.find(v=>v.re.test(d.path)),!_)throw Mn(Ae.MATCHER_NOT_FOUND,{location:f,currentLocation:d});w=_.record.name,N=ue({},d.params,f.params),y=_.stringify(N)}const M=[];let P=_;for(;P;)M.unshift(P.record),P=P.parent;return{name:w,path:y,params:N,matched:M,meta:rm(M)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function Qi(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Zi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:sm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function sm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function zi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function rm(e){return e.reduce((t,n)=>ue(t,n.meta),{})}function om(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Ec(e,t[o])<0?s=o:n=o+1}const r=im(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function im(e){let t=e;for(;t=t.parent;)if(vc(t)&&Ec(e,t)===0)return t}function vc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function el(e){const t=ut(_r),n=ut(gc),s=Ne(()=>{const a=Ie(e.to);return t.resolve(a)}),r=Ne(()=>{const{matched:a}=s.value,{length:c}=a,u=a[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(Dn.bind(null,u));if(d>-1)return d;const _=tl(a[c-2]);return c>1&&tl(u)===_&&f[f.length-1].path!==_?f.findIndex(Dn.bind(null,a[c-2])):d}),o=Ne(()=>r.value>-1&&fm(n.params,s.value.params)),i=Ne(()=>r.value>-1&&r.value===n.matched.length-1&&hc(n.params,s.value.params));function l(a={}){if(um(a)){const c=t[Ie(e.replace)?"replace":"push"](Ie(e.to)).catch(os);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:Ne(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function lm(e){return e.length===1?e[0]:e}const am=yn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:el,setup(e,{slots:t}){const n=Ts(el(e)),{options:s}=ut(_r),r=Ne(()=>({[nl(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[nl(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&lm(t.default(n));return e.custom?o:zt("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),cm=am;function um(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function fm(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Et(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function tl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const nl=(e,t,n)=>e??t??n,dm=yn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ut(co),r=Ne(()=>e.route||s.value),o=ut(Yi,0),i=Ne(()=>{let c=Ie(o);const{matched:u}=r.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),l=Ne(()=>r.value.matched[i.value]);ks(Yi,Ne(()=>i.value+1)),ks(Wh,l),ks(co,r);const a=ct();return Jt(()=>[a.value,l.value,e.name],([c,u,f],[d,_,N])=>{u&&(u.instances[f]=c,_&&_!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=_.leaveGuards),u.updateGuards.size||(u.updateGuards=_.updateGuards))),c&&u&&(!_||!Dn(u,_)||!d)&&(u.enterCallbacks[f]||[]).forEach(y=>y(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,f=l.value,d=f&&f.components[u];if(!d)return sl(n.default,{Component:d,route:c});const _=f.props[u],N=_?_===!0?c.params:typeof _=="function"?_(c):_:null,w=zt(d,ue({},N,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(f.instances[u]=null)},ref:a}));return sl(n.default,{Component:w,route:c})||w}}});function sl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const hm=dm;function mm(e){const t=nm(e.routes,e),n=e.parseQuery||Vh,s=e.stringifyQuery||Ki,r=e.history,o=Gn(),i=Gn(),l=Gn(),a=Ro(jt);let c=jt;Nn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Mr.bind(null,x=>""+x),f=Mr.bind(null,Th),d=Mr.bind(null,gs);function _(x,Y){let j,X;return mc(x)?(j=t.getRecordMatcher(x),X=Y):X=x,t.addRoute(X,j)}function N(x){const Y=t.getRecordMatcher(x);Y&&t.removeRoute(Y)}function y(){return t.getRoutes().map(x=>x.record)}function w(x){return!!t.getRecordMatcher(x)}function M(x,Y){if(Y=ue({},Y||a.value),typeof x=="string"){const g=Fr(n,x,Y.path),C=t.resolve({path:g.path},Y),U=r.createHref(g.fullPath);return ue(g,C,{params:d(C.params),hash:gs(g.hash),redirectedFrom:void 0,href:U})}let j;if(x.path!=null)j=ue({},x,{path:Fr(n,x.path,Y.path).path});else{const g=ue({},x.params);for(const C in g)g[C]==null&&delete g[C];j=ue({},x,{params:f(g)}),Y.params=f(Y.params)}const X=t.resolve(j,Y),re=x.hash||"";X.params=u(d(X.params));const p=Nh(s,ue({},x,{hash:vh(re),path:X.path})),E=r.createHref(p);return ue({fullPath:p,hash:re,query:s===Ki?Hh(x.query):x.query||{}},X,{redirectedFrom:void 0,href:E})}function P(x){return typeof x=="string"?Fr(n,x,a.value.path):ue({},x)}function v(x,Y){if(c!==x)return Mn(Ae.NAVIGATION_CANCELLED,{from:Y,to:x})}function b(x){return L(x)}function I(x){return b(ue(P(x),{replace:!0}))}function O(x,Y){const j=x.matched[x.matched.length-1];if(j&&j.redirect){const{redirect:X}=j;let re=typeof X=="function"?X(x,Y):X;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=P(re):{path:re},re.params={}),ue({query:x.query,hash:x.hash,params:re.path!=null?{}:x.params},re)}}function L(x,Y){const j=c=M(x),X=a.value,re=x.state,p=x.force,E=x.replace===!0,g=O(j,X);if(g)return L(ue(P(g),{state:typeof g=="object"?ue({},re,g.state):re,force:p,replace:E}),Y||j);const C=j;C.redirectedFrom=Y;let U;return!p&&Ch(s,X,j)&&(U=Mn(Ae.NAVIGATION_DUPLICATED,{to:C,from:X}),Te(X,X,!0,!1)),(U?Promise.resolve(U):K(C,X)).catch(k=>Pt(k)?Pt(k,Ae.NAVIGATION_GUARD_REDIRECT)?k:Qe(k):le(k,C,X)).then(k=>{if(k){if(Pt(k,Ae.NAVIGATION_GUARD_REDIRECT))return L(ue({replace:E},P(k.to),{state:typeof k.to=="object"?ue({},re,k.to.state):re,force:p}),Y||C)}else k=V(C,X,!0,E,re);return Q(C,X,k),k})}function F(x,Y){const j=v(x,Y);return j?Promise.reject(j):Promise.resolve()}function T(x){const Y=ze.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(x):x()}function K(x,Y){let j;const[X,re,p]=$h(x,Y);j=Ur(X.reverse(),"beforeRouteLeave",x,Y);for(const g of X)g.leaveGuards.forEach(C=>{j.push(qt(C,x,Y))});const E=F.bind(null,x,Y);return j.push(E),De(j).then(()=>{j=[];for(const g of o.list())j.push(qt(g,x,Y));return j.push(E),De(j)}).then(()=>{j=Ur(re,"beforeRouteUpdate",x,Y);for(const g of re)g.updateGuards.forEach(C=>{j.push(qt(C,x,Y))});return j.push(E),De(j)}).then(()=>{j=[];for(const g of p)if(g.beforeEnter)if(Et(g.beforeEnter))for(const C of g.beforeEnter)j.push(qt(C,x,Y));else j.push(qt(g.beforeEnter,x,Y));return j.push(E),De(j)}).then(()=>(x.matched.forEach(g=>g.enterCallbacks={}),j=Ur(p,"beforeRouteEnter",x,Y,T),j.push(E),De(j))).then(()=>{j=[];for(const g of i.list())j.push(qt(g,x,Y));return j.push(E),De(j)}).catch(g=>Pt(g,Ae.NAVIGATION_CANCELLED)?g:Promise.reject(g))}function Q(x,Y,j){l.list().forEach(X=>T(()=>X(x,Y,j)))}function V(x,Y,j,X,re){const p=v(x,Y);if(p)return p;const E=Y===jt,g=Nn?history.state:{};j&&(X||E?r.replace(x.fullPath,ue({scroll:E&&g&&g.scroll},re)):r.push(x.fullPath,re)),a.value=x,Te(x,Y,j,E),Qe()}let J;function he(){J||(J=r.listen((x,Y,j)=>{if(!et.listening)return;const X=M(x),re=O(X,et.currentRoute.value);if(re){L(ue(re,{replace:!0,force:!0}),X).catch(os);return}c=X;const p=a.value;Nn&&Dh(Gi(p.fullPath,j.delta),gr()),K(X,p).catch(E=>Pt(E,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_CANCELLED)?E:Pt(E,Ae.NAVIGATION_GUARD_REDIRECT)?(L(ue(P(E.to),{force:!0}),X).then(g=>{Pt(g,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&!j.delta&&j.type===lo.pop&&r.go(-1,!1)}).catch(os),Promise.reject()):(j.delta&&r.go(-j.delta,!1),le(E,X,p))).then(E=>{E=E||V(X,p,!1),E&&(j.delta&&!Pt(E,Ae.NAVIGATION_CANCELLED)?r.go(-j.delta,!1):j.type===lo.pop&&Pt(E,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Q(X,p,E)}).catch(os)}))}let Ce=Gn(),oe=Gn(),ee;function le(x,Y,j){Qe(x);const X=oe.list();return X.length?X.forEach(re=>re(x,Y,j)):console.error(x),Promise.reject(x)}function Be(){return ee&&a.value!==jt?Promise.resolve():new Promise((x,Y)=>{Ce.add([x,Y])})}function Qe(x){return ee||(ee=!x,he(),Ce.list().forEach(([Y,j])=>x?j(x):Y()),Ce.reset()),x}function Te(x,Y,j,X){const{scrollBehavior:re}=e;if(!Nn||!re)return Promise.resolve();const p=!j&&Mh(Gi(x.fullPath,0))||(X||!j)&&history.state&&history.state.scroll||null;return cr().then(()=>re(x,Y,p)).then(E=>E&&kh(E)).catch(E=>le(E,x,Y))}const Se=x=>r.go(x);let ot;const ze=new Set,et={currentRoute:a,listening:!0,addRoute:_,removeRoute:N,clearRoutes:t.clearRoutes,hasRoute:w,getRoutes:y,resolve:M,options:e,push:b,replace:I,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:oe.add,isReady:Be,install(x){x.component("RouterLink",cm),x.component("RouterView",hm),x.config.globalProperties.$router=et,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Ie(a)}),Nn&&!ot&&a.value===jt&&(ot=!0,b(r.location).catch(X=>{}));const Y={};for(const X in jt)Object.defineProperty(Y,X,{get:()=>a.value[X],enumerable:!0});x.provide(_r,et),x.provide(gc,ca(Y)),x.provide(co,a);const j=x.unmount;ze.add(x),x.unmount=function(){ze.delete(x),ze.size<1&&(c=jt,J&&J(),J=null,a.value=jt,ot=!1,ee=!1),j()}}};function De(x){return x.reduce((Y,j)=>Y.then(()=>T(j)),Promise.resolve())}return et}function Gg(){return ut(_r)}class bc extends Error{constructor(t,n){super(t),this.code=t,this.status=n}}async function Kn(e,t,n){const r=await fetch(t,{method:e,credentials:"include",headers:e==="GET"?{}:{"content-type":"application/json"},body:n===void 0?void 0:JSON.stringify(n)}),o=r.status===204?void 0:await r.json().catch(()=>{});if(!r.ok)throw new bc((o==null?void 0:o.error)??"request-failed",r.status);return o}const Vr={get:e=>Kn("GET",e),post:(e,t)=>Kn("POST",e,t),patch:(e,t)=>Kn("PATCH",e,t),del:e=>Kn("DELETE",e),rpc:(e,t,n={})=>Kn("POST",`/api/instances/${e}/rpc`,{type:t,payload:n}).then(s=>s.result)},pm=ic("auth",()=>{const e=ct(null),t=ct("");async function n(o){t.value="";try{return e.value=await Vr.post("/api/login",{token:o}),!0}catch(i){return t.value=i instanceof bc?i.code:"request-failed",e.value=null,!1}}async function s(){try{return e.value=await Vr.get("/api/me"),!0}catch{return e.value=null,!1}}async function r(){await Vr.post("/api/logout").catch(()=>{}),e.value=null}return{account:e,error:t,login:n,fetchMe:s,logout:r}}),gm=[{path:"/login",name:"login",component:()=>Fs(()=>import("./LoginView-Bc0b1UH3.js"),__vite__mapDeps([0,1]))},{path:"/",name:"dashboard",component:()=>Fs(()=>import("./DashboardView-qeO0cGEa.js"),__vite__mapDeps([2,1,3,4]))},{path:"/settings",name:"settings",component:()=>Fs(()=>import("./SettingsView-X2_13xBa.js"),__vite__mapDeps([5,3]))}],yc=mm({history:Kh(),routes:gm});yc.beforeEach(async e=>{if(e.name==="login")return!0;const t=pm();return t.account||await t.fetchMe()?!0:{name:"login"}});/*!
80
+ */let Bh=()=>location.protocol+"//"+location.host;function _c(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Bi(l,"")}return Bi(n,e)+s+r}function jh(e,t,n,s){let r=[],o=[],i=null;const l=({state:d})=>{const _=_c(e,location),N=n.value,y=t.value;let w=0;if(d){if(n.value=_,t.value=d,i&&i===N){i=null;return}w=y?d.position-y.position:0}else s(_);r.forEach(M=>{M(n.value,N,{delta:w,type:lo.pop,direction:w?w>0?xr.forward:xr.back:xr.unknown})})};function a(){i=n.value}function c(d){r.push(d);const _=()=>{const N=r.indexOf(d);N>-1&&r.splice(N,1)};return o.push(_),_}function u(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(ue({},d.state,{scroll:gr()}),"")}}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:c,destroy:f}}function Xi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?gr():null}}function Gh(e){const{history:t,location:n}=window,s={value:_c(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Bh()+e+a;try{t[u?"replaceState":"pushState"](c,"",d),r.value=c}catch(_){console.error(_),n[u?"replace":"assign"](d)}}function i(a,c){o(a,ue({},t.state,Xi(r.value.back,a,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=a}function l(a,c){const u=ue({},r.value,t.state,{forward:a,scroll:gr()});o(u.current,u,!0),o(a,ue({},Xi(s.value,a,null),{position:u.position+1},c),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Kh(e){e=Oh(e);const t=Gh(e),n=jh(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ue({location:"",base:e,go:s,createHref:Rh.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let _n=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Oe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Oe||{});const Yh={type:_n.Static,value:""},Xh=/[a-zA-Z0-9_]/;function qh(e){if(!e)return[[]];if(e==="/")return[[Yh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${n})/"${c}": ${_}`)}let n=Oe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,c="",u="";function f(){c&&(n===Oe.Static?o.push({type:_n.Static,value:c}):n===Oe.Param||n===Oe.ParamRegExp||n===Oe.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:_n.Param,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=a}for(;l<e.length;){if(a=e[l++],a==="\\"&&n!==Oe.ParamRegExp){s=n,n=Oe.EscapeNext;continue}switch(n){case Oe.Static:a==="/"?(c&&f(),i()):a===":"?(f(),n=Oe.Param):d();break;case Oe.EscapeNext:d(),n=s;break;case Oe.Param:a==="("?n=Oe.ParamRegExp:Xh.test(a)?d():(f(),n=Oe.Static,a!=="*"&&a!=="?"&&a!=="+"&&l--);break;case Oe.ParamRegExp:a===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+a:n=Oe.ParamRegExpEnd:u+=a;break;case Oe.ParamRegExpEnd:f(),n=Oe.Static,a!=="*"&&a!=="?"&&a!=="+"&&l--,u="";break;default:t("Unknown state");break}}return n===Oe.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),f(),i(),r}const qi="[^/]+?",Jh={sensitive:!1,strict:!1,start:!0,end:!0};var Xe=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Xe||{});const Qh=/[.+*?^${}()[\]/\\]/g;function Zh(e,t){const n=ue({},Jh,t),s=[];let r=n.start?"^":"";const o=[];for(const c of e){const u=c.length?[]:[Xe.Root];n.strict&&!c.length&&(r+="/");for(let f=0;f<c.length;f++){const d=c[f];let _=Xe.Segment+(n.sensitive?Xe.BonusCaseSensitive:0);if(d.type===_n.Static)f||(r+="/"),r+=d.value.replace(Qh,"\\$&"),_+=Xe.Static;else if(d.type===_n.Param){const{value:N,repeatable:y,optional:w,regexp:M}=d;o.push({name:N,repeatable:y,optional:w});const P=M||qi;if(P!==qi){_+=Xe.BonusCustomRegExp;try{`${P}`}catch(b){throw new Error(`Invalid custom RegExp for param "${N}" (${P}): `+b.message)}}let v=y?`((?:${P})(?:/(?:${P}))*)`:`(${P})`;f||(v=w&&c.length<2?`(?:/${v})`:"/"+v),w&&(v+="?"),r+=v,_+=Xe.Dynamic,w&&(_+=Xe.BonusOptional),y&&(_+=Xe.BonusRepeatable),P===".*"&&(_+=Xe.BonusWildcard)}u.push(_)}s.push(u)}if(n.strict&&n.end){const c=s.length-1;s[c][s[c].length-1]+=Xe.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function l(c){const u=c.match(i),f={};if(!u)return null;for(let d=1;d<u.length;d++){const _=u[d]||"",N=o[d-1];f[N.name]=_&&N.repeatable?_.split("/"):_}return f}function a(c){let u="",f=!1;for(const d of e){(!f||!u.endsWith("/"))&&(u+="/"),f=!1;for(const _ of d)if(_.type===_n.Static)u+=_.value;else if(_.type===_n.Param){const{value:N,repeatable:y,optional:w}=_,M=N in c?c[N]:"";if(Et(M)&&!y)throw new Error(`Provided param "${N}" is an array but it is not repeatable (* or + modifiers)`);const P=Et(M)?M.join("/"):M;if(!P)if(w)d.length<2&&(u.endsWith("/")?u=u.slice(0,-1):f=!0);else throw new Error(`Missing required param "${N}"`);u+=P}}return u||"/"}return{re:i,score:s,keys:o,parse:l,stringify:a}}function zh(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Xe.Static+Xe.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Xe.Static+Xe.Segment?1:-1:0}function Ec(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=zh(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(Ji(s))return 1;if(Ji(r))return-1}return r.length-s.length}function Ji(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const em={strict:!1,end:!0,sensitive:!1};function tm(e,t,n){const s=Zh(qh(e.path),n),r=ue(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function nm(e,t){const n=[],s=new Map;t=$i(em,t);function r(f){return s.get(f)}function o(f,d,_){const N=!_,y=Zi(f);y.aliasOf=_&&_.record;const w=$i(t,f),M=[y];if("alias"in f){const b=typeof f.alias=="string"?[f.alias]:f.alias;for(const I of b)M.push(Zi(ue({},y,{components:_?_.record.components:y.components,path:I,aliasOf:_?_.record:y})))}let P,v;for(const b of M){const{path:I}=b;if(d&&I[0]!=="/"){const O=d.record.path,L=O[O.length-1]==="/"?"":"/";b.path=d.record.path+(I&&L+I)}if(P=tm(b,d,w),_?_.alias.push(P):(v=v||P,v!==P&&v.alias.push(P),N&&f.name&&!zi(P)&&i(f.name)),vc(P)&&a(P),y.children){const O=y.children;for(let L=0;L<O.length;L++)o(O[L],P,_&&_.children[L])}_=_||P}return v?()=>{i(v)}:os}function i(f){if(mc(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const d=om(f,n);n.splice(d,0,f),f.record.name&&!zi(f)&&s.set(f.record.name,f)}function c(f,d){let _,N={},y,w;if("name"in f&&f.name){if(_=s.get(f.name),!_)throw Mn(Ae.MATCHER_NOT_FOUND,{location:f});w=_.record.name,N=ue(Qi(d.params,_.keys.filter(v=>!v.optional).concat(_.parent?_.parent.keys.filter(v=>v.optional):[]).map(v=>v.name)),f.params&&Qi(f.params,_.keys.map(v=>v.name))),y=_.stringify(N)}else if(f.path!=null)y=f.path,_=n.find(v=>v.re.test(y)),_&&(N=_.parse(y),w=_.record.name);else{if(_=d.name?s.get(d.name):n.find(v=>v.re.test(d.path)),!_)throw Mn(Ae.MATCHER_NOT_FOUND,{location:f,currentLocation:d});w=_.record.name,N=ue({},d.params,f.params),y=_.stringify(N)}const M=[];let P=_;for(;P;)M.unshift(P.record),P=P.parent;return{name:w,path:y,params:N,matched:M,meta:rm(M)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function Qi(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Zi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:sm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function sm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function zi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function rm(e){return e.reduce((t,n)=>ue(t,n.meta),{})}function om(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Ec(e,t[o])<0?s=o:n=o+1}const r=im(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function im(e){let t=e;for(;t=t.parent;)if(vc(t)&&Ec(e,t)===0)return t}function vc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function el(e){const t=ut(_r),n=ut(gc),s=Ne(()=>{const a=Ie(e.to);return t.resolve(a)}),r=Ne(()=>{const{matched:a}=s.value,{length:c}=a,u=a[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(Dn.bind(null,u));if(d>-1)return d;const _=tl(a[c-2]);return c>1&&tl(u)===_&&f[f.length-1].path!==_?f.findIndex(Dn.bind(null,a[c-2])):d}),o=Ne(()=>r.value>-1&&fm(n.params,s.value.params)),i=Ne(()=>r.value>-1&&r.value===n.matched.length-1&&hc(n.params,s.value.params));function l(a={}){if(um(a)){const c=t[Ie(e.replace)?"replace":"push"](Ie(e.to)).catch(os);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:Ne(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function lm(e){return e.length===1?e[0]:e}const am=yn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:el,setup(e,{slots:t}){const n=Ts(el(e)),{options:s}=ut(_r),r=Ne(()=>({[nl(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[nl(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&lm(t.default(n));return e.custom?o:zt("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),cm=am;function um(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function fm(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Et(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function tl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const nl=(e,t,n)=>e??t??n,dm=yn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=ut(co),r=Ne(()=>e.route||s.value),o=ut(Yi,0),i=Ne(()=>{let c=Ie(o);const{matched:u}=r.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),l=Ne(()=>r.value.matched[i.value]);ks(Yi,Ne(()=>i.value+1)),ks(Wh,l),ks(co,r);const a=ct();return Jt(()=>[a.value,l.value,e.name],([c,u,f],[d,_,N])=>{u&&(u.instances[f]=c,_&&_!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=_.leaveGuards),u.updateGuards.size||(u.updateGuards=_.updateGuards))),c&&u&&(!_||!Dn(u,_)||!d)&&(u.enterCallbacks[f]||[]).forEach(y=>y(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,f=l.value,d=f&&f.components[u];if(!d)return sl(n.default,{Component:d,route:c});const _=f.props[u],N=_?_===!0?c.params:typeof _=="function"?_(c):_:null,w=zt(d,ue({},N,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(f.instances[u]=null)},ref:a}));return sl(n.default,{Component:w,route:c})||w}}});function sl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const hm=dm;function mm(e){const t=nm(e.routes,e),n=e.parseQuery||Vh,s=e.stringifyQuery||Ki,r=e.history,o=Gn(),i=Gn(),l=Gn(),a=Ro(jt);let c=jt;Nn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Mr.bind(null,x=>""+x),f=Mr.bind(null,Th),d=Mr.bind(null,gs);function _(x,Y){let j,X;return mc(x)?(j=t.getRecordMatcher(x),X=Y):X=x,t.addRoute(X,j)}function N(x){const Y=t.getRecordMatcher(x);Y&&t.removeRoute(Y)}function y(){return t.getRoutes().map(x=>x.record)}function w(x){return!!t.getRecordMatcher(x)}function M(x,Y){if(Y=ue({},Y||a.value),typeof x=="string"){const g=Fr(n,x,Y.path),C=t.resolve({path:g.path},Y),U=r.createHref(g.fullPath);return ue(g,C,{params:d(C.params),hash:gs(g.hash),redirectedFrom:void 0,href:U})}let j;if(x.path!=null)j=ue({},x,{path:Fr(n,x.path,Y.path).path});else{const g=ue({},x.params);for(const C in g)g[C]==null&&delete g[C];j=ue({},x,{params:f(g)}),Y.params=f(Y.params)}const X=t.resolve(j,Y),re=x.hash||"";X.params=u(d(X.params));const p=Nh(s,ue({},x,{hash:vh(re),path:X.path})),E=r.createHref(p);return ue({fullPath:p,hash:re,query:s===Ki?Hh(x.query):x.query||{}},X,{redirectedFrom:void 0,href:E})}function P(x){return typeof x=="string"?Fr(n,x,a.value.path):ue({},x)}function v(x,Y){if(c!==x)return Mn(Ae.NAVIGATION_CANCELLED,{from:Y,to:x})}function b(x){return L(x)}function I(x){return b(ue(P(x),{replace:!0}))}function O(x,Y){const j=x.matched[x.matched.length-1];if(j&&j.redirect){const{redirect:X}=j;let re=typeof X=="function"?X(x,Y):X;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=P(re):{path:re},re.params={}),ue({query:x.query,hash:x.hash,params:re.path!=null?{}:x.params},re)}}function L(x,Y){const j=c=M(x),X=a.value,re=x.state,p=x.force,E=x.replace===!0,g=O(j,X);if(g)return L(ue(P(g),{state:typeof g=="object"?ue({},re,g.state):re,force:p,replace:E}),Y||j);const C=j;C.redirectedFrom=Y;let U;return!p&&Ch(s,X,j)&&(U=Mn(Ae.NAVIGATION_DUPLICATED,{to:C,from:X}),Te(X,X,!0,!1)),(U?Promise.resolve(U):K(C,X)).catch(k=>Pt(k)?Pt(k,Ae.NAVIGATION_GUARD_REDIRECT)?k:Qe(k):le(k,C,X)).then(k=>{if(k){if(Pt(k,Ae.NAVIGATION_GUARD_REDIRECT))return L(ue({replace:E},P(k.to),{state:typeof k.to=="object"?ue({},re,k.to.state):re,force:p}),Y||C)}else k=V(C,X,!0,E,re);return Q(C,X,k),k})}function F(x,Y){const j=v(x,Y);return j?Promise.reject(j):Promise.resolve()}function T(x){const Y=ze.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(x):x()}function K(x,Y){let j;const[X,re,p]=$h(x,Y);j=Ur(X.reverse(),"beforeRouteLeave",x,Y);for(const g of X)g.leaveGuards.forEach(C=>{j.push(qt(C,x,Y))});const E=F.bind(null,x,Y);return j.push(E),De(j).then(()=>{j=[];for(const g of o.list())j.push(qt(g,x,Y));return j.push(E),De(j)}).then(()=>{j=Ur(re,"beforeRouteUpdate",x,Y);for(const g of re)g.updateGuards.forEach(C=>{j.push(qt(C,x,Y))});return j.push(E),De(j)}).then(()=>{j=[];for(const g of p)if(g.beforeEnter)if(Et(g.beforeEnter))for(const C of g.beforeEnter)j.push(qt(C,x,Y));else j.push(qt(g.beforeEnter,x,Y));return j.push(E),De(j)}).then(()=>(x.matched.forEach(g=>g.enterCallbacks={}),j=Ur(p,"beforeRouteEnter",x,Y,T),j.push(E),De(j))).then(()=>{j=[];for(const g of i.list())j.push(qt(g,x,Y));return j.push(E),De(j)}).catch(g=>Pt(g,Ae.NAVIGATION_CANCELLED)?g:Promise.reject(g))}function Q(x,Y,j){l.list().forEach(X=>T(()=>X(x,Y,j)))}function V(x,Y,j,X,re){const p=v(x,Y);if(p)return p;const E=Y===jt,g=Nn?history.state:{};j&&(X||E?r.replace(x.fullPath,ue({scroll:E&&g&&g.scroll},re)):r.push(x.fullPath,re)),a.value=x,Te(x,Y,j,E),Qe()}let J;function he(){J||(J=r.listen((x,Y,j)=>{if(!et.listening)return;const X=M(x),re=O(X,et.currentRoute.value);if(re){L(ue(re,{replace:!0,force:!0}),X).catch(os);return}c=X;const p=a.value;Nn&&Dh(Gi(p.fullPath,j.delta),gr()),K(X,p).catch(E=>Pt(E,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_CANCELLED)?E:Pt(E,Ae.NAVIGATION_GUARD_REDIRECT)?(L(ue(P(E.to),{force:!0}),X).then(g=>{Pt(g,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&!j.delta&&j.type===lo.pop&&r.go(-1,!1)}).catch(os),Promise.reject()):(j.delta&&r.go(-j.delta,!1),le(E,X,p))).then(E=>{E=E||V(X,p,!1),E&&(j.delta&&!Pt(E,Ae.NAVIGATION_CANCELLED)?r.go(-j.delta,!1):j.type===lo.pop&&Pt(E,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Q(X,p,E)}).catch(os)}))}let Ce=Gn(),oe=Gn(),ee;function le(x,Y,j){Qe(x);const X=oe.list();return X.length?X.forEach(re=>re(x,Y,j)):console.error(x),Promise.reject(x)}function Be(){return ee&&a.value!==jt?Promise.resolve():new Promise((x,Y)=>{Ce.add([x,Y])})}function Qe(x){return ee||(ee=!x,he(),Ce.list().forEach(([Y,j])=>x?j(x):Y()),Ce.reset()),x}function Te(x,Y,j,X){const{scrollBehavior:re}=e;if(!Nn||!re)return Promise.resolve();const p=!j&&Mh(Gi(x.fullPath,0))||(X||!j)&&history.state&&history.state.scroll||null;return cr().then(()=>re(x,Y,p)).then(E=>E&&kh(E)).catch(E=>le(E,x,Y))}const Se=x=>r.go(x);let ot;const ze=new Set,et={currentRoute:a,listening:!0,addRoute:_,removeRoute:N,clearRoutes:t.clearRoutes,hasRoute:w,getRoutes:y,resolve:M,options:e,push:b,replace:I,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:oe.add,isReady:Be,install(x){x.component("RouterLink",cm),x.component("RouterView",hm),x.config.globalProperties.$router=et,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Ie(a)}),Nn&&!ot&&a.value===jt&&(ot=!0,b(r.location).catch(X=>{}));const Y={};for(const X in jt)Object.defineProperty(Y,X,{get:()=>a.value[X],enumerable:!0});x.provide(_r,et),x.provide(gc,ca(Y)),x.provide(co,a);const j=x.unmount;ze.add(x),x.unmount=function(){ze.delete(x),ze.size<1&&(c=jt,J&&J(),J=null,a.value=jt,ot=!1,ee=!1),j()}}};function De(x){return x.reduce((Y,j)=>Y.then(()=>T(j)),Promise.resolve())}return et}function Gg(){return ut(_r)}class bc extends Error{constructor(t,n){super(t),this.code=t,this.status=n}}async function Kn(e,t,n){const r=await fetch(t,{method:e,credentials:"include",headers:e==="GET"?{}:{"content-type":"application/json"},body:n===void 0?void 0:JSON.stringify(n)}),o=r.status===204?void 0:await r.json().catch(()=>{});if(!r.ok)throw new bc((o==null?void 0:o.error)??"request-failed",r.status);return o}const Vr={get:e=>Kn("GET",e),post:(e,t)=>Kn("POST",e,t),patch:(e,t)=>Kn("PATCH",e,t),del:e=>Kn("DELETE",e),rpc:(e,t,n={})=>Kn("POST",`/api/instances/${e}/rpc`,{type:t,payload:n}).then(s=>s.result)},pm=ic("auth",()=>{const e=ct(null),t=ct("");async function n(o){t.value="";try{return e.value=await Vr.post("/api/login",{token:o}),!0}catch(i){return t.value=i instanceof bc?i.code:"request-failed",e.value=null,!1}}async function s(){try{return e.value=await Vr.get("/api/me"),!0}catch{return e.value=null,!1}}async function r(){await Vr.post("/api/logout").catch(()=>{}),e.value=null}return{account:e,error:t,login:n,fetchMe:s,logout:r}}),gm=[{path:"/login",name:"login",component:()=>Fs(()=>import("./LoginView-Cc1pyK2H.js"),__vite__mapDeps([0,1]))},{path:"/",name:"dashboard",component:()=>Fs(()=>import("./DashboardView-CBYGWHdu.js"),__vite__mapDeps([2,1,3,4]))},{path:"/settings",name:"settings",component:()=>Fs(()=>import("./SettingsView-Cl3pdwq8.js"),__vite__mapDeps([5,3]))}],yc=mm({history:Kh(),routes:gm});yc.beforeEach(async e=>{if(e.name==="login")return!0;const t=pm();return t.account||await t.fetchMe()?!0:{name:"login"}});/*!
81
81
  * shared v9.14.5
82
82
  * (c) 2025 kazuya kawaguchi
83
83
  * Released under the MIT License.
@@ -1 +1 @@
1
- @font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2) format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2) format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbQAA8AAAAACMAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgF2hca1NUQVQAAAIMAAAAPQAAAEzpM8woY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB8AAAAl604cJFaGVhZAAABJgAAAA2AAAANhSS8UNoaGVhAAAE0AAAAB8AAAAkAcwBEGhtdHgAAATwAAAAHwAAADoe/QLmbG9jYQAABRAAAAAgAAAAIATcBZ9tYXhwAAAFMAAAABwAAAAgAIcCb25hbWUAAAVMAAABEwAAAmo0OV08cG9zdAAABmAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWADbPDjoAAAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942mzQNZTUQAAG4H9mIDlbySoOt5I9HHZiL+vS4VDh7u40OFRo3+FQ464V7tbiUmHdJczicsm4fe/9YBgDEIc+BYOEeoArzUqyWSGkeQzZ6+wmfZwLot6nT1vVNM04oBlQ9AZoX3FHhh/gQR6Mp+JykKdUNSVJcu9T20/N73OrT3F/2qMw5vfWLp88SQL3rFE+3ygTrvv9BXaMqiCAkD3d2lr1ipagK4QqNDHjCuPBSCRqGGaQM+XLk0XrPX5GlaY1i54QD7nhvO/c3+Pp35mEHO58dN2fd6mEdgAYRrhfqEyfi7ei6AG0j6m6ohk8HQkrIUlKpQ1dj4dDEcZ1TY3HpDDpM3PZspkzl+lTqlbmZUYUy8o0LJtKSlOXLp3qnC9N1ieU7FWr7BIZPssuFm1hpt3BVBW/yPMPcwAUdEL8m6nqumbU1Eg4/Ceb+s2WpxrG1HKtnVKxcm9zolhWrkGbVN5RmqQJdGdpkj6ukGluzhTed7ULBRvkp4wAENVFUt1oNGrmaS2r8JcrCxfJjXWUUCo3yvMXXDlyhKrO3mhLj/qGhvoeLREyvvXpEYDgGutFDrFjYEDQ5PK1OcsWs15bt4JgM0uQe2LHAxCRHA9FeNoQnUS+Tsc7JkRXVV03JIZZJcBJRUdHxSmAAQCFZYU3AAEAAAACNgQJCtdkXw889QADA+gAAAAA29KmmgAAAADb2tDy+Tv+1ASSA/wAAAAGAAIAAAAAAAB42mNgZGBg/vPvCgMDy4af1n9rWSYBRVABHwCudAbaAHjaY4pgiAJibSQsC8WBQGyERDNAMQicZmgFAOeFB/4AAAAAGgA7AEYAUQBvAHcAqQCxAOYBCQEJAQkBCQEWAS942mNgZGBg4GfcwZDHsIWBDcxDAGYGJgAtGgH4eNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpjYGIAg/+pDEZAipEBHfADsQrDSUYmBhtGZkYWRlZGNkZ2BmZGDkZORi5GbjbHpKLUslT20rxMAxNHVwjtagHlu0H5lqzpibm5iWCegaMBk3MQX2JyaUlqcn5ukl5yYnEqD0jG2MAMzAEAoO0cmA==) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2) format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2) format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-1{bottom:.25rem}.bottom-3{bottom:.75rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-1\.5{right:.375rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0px}.min-h-11{min-height:2.75rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[11px\]{width:11px}.w-\[3px\]{width:3px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-40{min-width:10rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[13rem\]{max-width:13rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-\[9rem\]{max-width:9rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[auto\,1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1px * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(var(--c-border) / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-tr-md{border-top-right-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-accent\/15{border-color:rgb(var(--c-accent) / .15)}.border-accent\/30{border-color:rgb(var(--c-accent) / .3)}.border-border{--tw-border-opacity: 1;border-color:rgb(var(--c-border) / var(--tw-border-opacity, 1))}.border-danger\/40{border-color:rgb(var(--c-danger) / .4)}.border-run\/20{border-color:rgb(var(--c-run) / .2)}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent) / var(--tw-bg-opacity, 1))}.bg-accent\/10{background-color:rgb(var(--c-accent) / .1)}.bg-accent\/15{background-color:rgb(var(--c-accent) / .15)}.bg-bg{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1))}.bg-black\/30{background-color:#0000004d}.bg-black\/50{background-color:#00000080}.bg-border{--tw-bg-opacity: 1;background-color:rgb(var(--c-border) / var(--tw-bg-opacity, 1))}.bg-danger{--tw-bg-opacity: 1;background-color:rgb(var(--c-danger) / var(--tw-bg-opacity, 1))}.bg-danger\/10{background-color:rgb(var(--c-danger) / .1)}.bg-danger\/15{background-color:rgb(var(--c-danger) / .15)}.bg-fg-muted{--tw-bg-opacity: 1;background-color:rgb(var(--c-fg-muted) / var(--tw-bg-opacity, 1))}.bg-fg\/5{background-color:rgb(var(--c-fg) / .05)}.bg-info{--tw-bg-opacity: 1;background-color:rgb(var(--c-info) / var(--tw-bg-opacity, 1))}.bg-info\/10{background-color:rgb(var(--c-info) / .1)}.bg-raised{--tw-bg-opacity: 1;background-color:rgb(var(--c-raised) / var(--tw-bg-opacity, 1))}.bg-run{--tw-bg-opacity: 1;background-color:rgb(var(--c-run) / var(--tw-bg-opacity, 1))}.bg-run-bright{--tw-bg-opacity: 1;background-color:rgb(var(--c-run-bright) / var(--tw-bg-opacity, 1))}.bg-run\/15{background-color:rgb(var(--c-run) / .15)}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(var(--c-surface) / var(--tw-bg-opacity, 1))}.bg-surface\/60{background-color:rgb(var(--c-surface) / .6)}.bg-surface\/80{background-color:rgb(var(--c-surface) / .8)}.bg-transparent{background-color:transparent}.bg-warn{--tw-bg-opacity: 1;background-color:rgb(var(--c-warn) / var(--tw-bg-opacity, 1))}.bg-warn\/10{background-color:rgb(var(--c-warn) / .1)}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-bg{--tw-gradient-from: rgb(var(--c-bg) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--c-bg) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-px{padding-bottom:1px}.pl-0\.5{padding-left:.125rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pr-1\.5{padding-right:.375rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-9{padding-right:2.25rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.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-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-accent{--tw-text-opacity: 1;color:rgb(var(--c-accent) / var(--tw-text-opacity, 1))}.text-danger{--tw-text-opacity: 1;color:rgb(var(--c-danger) / var(--tw-text-opacity, 1))}.text-danger\/80{color:rgb(var(--c-danger) / .8)}.text-fg{--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1))}.text-fg-muted{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.text-fg-muted\/50{color:rgb(var(--c-fg-muted) / .5)}.text-fg-muted\/60{color:rgb(var(--c-fg-muted) / .6)}.text-fg-muted\/70{color:rgb(var(--c-fg-muted) / .7)}.text-info{--tw-text-opacity: 1;color:rgb(var(--c-info) / var(--tw-text-opacity, 1))}.text-run{--tw-text-opacity: 1;color:rgb(var(--c-run) / var(--tw-text-opacity, 1))}.text-warn{--tw-text-opacity: 1;color:rgb(var(--c-warn) / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e1{--tw-shadow: var(--shadow-e1);--tw-shadow-colored: var(--shadow-e1);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e2{--tw-shadow: var(--shadow-e2);--tw-shadow-colored: var(--shadow-e2);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e3{--tw-shadow: var(--shadow-e3);--tw-shadow-colored: var(--shadow-e3);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-danger{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-danger) / var(--tw-ring-opacity, 1))}.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-md{--tw-backdrop-blur: blur(12px);-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(4px);-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-xl{--tw-backdrop-blur: blur(24px);-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-\[transform\,width\]{transition-property:transform,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--c-bg: 246 248 251;--c-surface: 255 255 255;--c-raised: 255 255 255;--c-border: 228 233 240;--c-fg: 18 24 35;--c-fg-muted: 91 102 117;--c-accent: 29 111 214;--c-accent-hover: 26 99 192;--c-run: 25 122 67;--c-run-bright: 52 192 110;--c-warn: 180 83 9;--c-danger: 200 30 30;--c-info: 37 99 235;--shadow-e1: 0 1px 2px rgba(12,18,28,.06), 0 1px 1px rgba(12,18,28,.04);--shadow-e2: 0 4px 12px rgba(12,18,28,.08), 0 2px 4px rgba(12,18,28,.05);--shadow-e3: 0 12px 32px rgba(12,18,28,.14), 0 4px 8px rgba(12,18,28,.06)}.dark{--c-bg: 14 17 22;--c-surface: 21 26 33;--c-raised: 27 33 42;--c-border: 38 45 56;--c-fg: 232 236 241;--c-fg-muted: 148 160 176;--c-accent: 79 155 245;--c-accent-hover: 107 176 248;--c-run: 70 194 119;--c-run-bright: 105 214 137;--c-warn: 251 191 36;--c-danger: 248 113 113;--c-info: 96 165 250;--shadow-e1: 0 1px 2px rgba(0,0,0,.5);--shadow-e2: 0 6px 18px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.45);--shadow-e3: 0 18px 48px rgba(0,0,0,.7), 0 6px 16px rgba(0,0,0,.55)}:root{--brand-from: #4F9BF5;--brand-to: #69D689}html,body,#app{height:100%}html,body{overflow-x:hidden}body{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1));font-family:Inter,ui-sans-serif,system-ui,sans-serif;--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline:none;box-shadow:0 0 0 2px rgb(var(--c-bg)),0 0 0 4px rgb(var(--c-accent));border-radius:6px}@keyframes softpulse{0%,to{box-shadow:0 0 #69d68980}50%{box-shadow:0 0 0 5px #69d68900}}.pulse-dot{animation:softpulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer-text{background:linear-gradient(90deg,rgb(var(--c-fg-muted)),rgb(var(--c-fg)),rgb(var(--c-fg-muted)));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 2.4s linear infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.caret:after{content:"";display:inline-block;width:2px;height:1em;background:rgb(var(--c-accent));margin-left:2px;vertical-align:text-bottom;animation:blink 1s step-end infinite}.thin-scroll::-webkit-scrollbar{width:8px;height:8px}.thin-scroll::-webkit-scrollbar-thumb{background:rgb(var(--c-fg-muted) / .28);border-radius:8px}.thin-scroll::-webkit-scrollbar-track{background:transparent}@media (prefers-reduced-motion: reduce){.pulse-dot,.shimmer-text,.caret:after{animation:none!important}}.placeholder\:text-fg-muted::-moz-placeholder{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.placeholder\:text-fg-muted::placeholder{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.focus-within\:border-accent\/50:focus-within{border-color:rgb(var(--c-accent) / .5)}.hover\:border-accent\/40:hover{border-color:rgb(var(--c-accent) / .4)}.hover\:border-danger\/40:hover{border-color:rgb(var(--c-danger) / .4)}.hover\:bg-accent-hover:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent-hover) / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/10:hover{background-color:rgb(var(--c-accent) / .1)}.hover\:bg-accent\/15:hover{background-color:rgb(var(--c-accent) / .15)}.hover\:bg-bg:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1))}.hover\:bg-danger\/10:hover{background-color:rgb(var(--c-danger) / .1)}.hover\:bg-danger\/15:hover{background-color:rgb(var(--c-danger) / .15)}.hover\:bg-fg\/10:hover{background-color:rgb(var(--c-fg) / .1)}.hover\:bg-fg\/5:hover{background-color:rgb(var(--c-fg) / .05)}.hover\:bg-raised:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-raised) / var(--tw-bg-opacity, 1))}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(var(--c-accent) / var(--tw-text-opacity, 1))}.hover\:text-danger:hover{--tw-text-opacity: 1;color:rgb(var(--c-danger) / var(--tw-text-opacity, 1))}.hover\:text-fg:hover{--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-e2:hover{--tw-shadow: var(--shadow-e2);--tw-shadow-colored: var(--shadow-e2);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-accent:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-accent) / var(--tw-ring-opacity, 1))}.enabled\:hover\:bg-accent-hover:hover:enabled{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent-hover) / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-fg\/10:disabled{background-color:rgb(var(--c-fg) / .1)}.disabled\:text-fg-muted:disabled{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:shadow-none:disabled{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:hover\:text-fg-muted:hover:disabled{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (prefers-reduced-motion: reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:w-64{width:16rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:static{position:static}.lg\:z-auto{z-index:auto}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-11{height:2.75rem}.lg\:w-0{width:0px}.lg\:w-\[248px\]{width:248px}.lg\:w-\[296px\]{width:296px}.lg\:min-w-0{min-width:0px}.lg\:max-w-none{max-width:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:transform-none{transform:none}.lg\:overflow-hidden{overflow:hidden}.lg\:border-r-0{border-right-width:0px}.lg\:p-3{padding:.75rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:py-0{padding-top:0;padding-bottom:0}.lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.lg\:text-\[14px\]{font-size:14px}.lg\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}
1
+ @font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2) format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2) format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA) format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2) format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2) format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-1{bottom:.25rem}.bottom-3{bottom:.75rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-1\.5{right:.375rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-5{margin-top:1.25rem}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[calc\(2\.75rem\+env\(safe-area-inset-top\)\)\]{height:calc(2.75rem + env(safe-area-inset-top))}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0px}.min-h-11{min-height:2.75rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[11px\]{width:11px}.w-\[3px\]{width:3px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-40{min-width:10rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[13rem\]{max-width:13rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-\[9rem\]{max-width:9rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[auto\,1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1px * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(var(--c-border) / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-tr-md{border-top-right-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-accent\/15{border-color:rgb(var(--c-accent) / .15)}.border-accent\/30{border-color:rgb(var(--c-accent) / .3)}.border-border{--tw-border-opacity: 1;border-color:rgb(var(--c-border) / var(--tw-border-opacity, 1))}.border-danger\/40{border-color:rgb(var(--c-danger) / .4)}.border-run\/20{border-color:rgb(var(--c-run) / .2)}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent) / var(--tw-bg-opacity, 1))}.bg-accent\/10{background-color:rgb(var(--c-accent) / .1)}.bg-accent\/15{background-color:rgb(var(--c-accent) / .15)}.bg-bg{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1))}.bg-black\/30{background-color:#0000004d}.bg-black\/50{background-color:#00000080}.bg-border{--tw-bg-opacity: 1;background-color:rgb(var(--c-border) / var(--tw-bg-opacity, 1))}.bg-danger{--tw-bg-opacity: 1;background-color:rgb(var(--c-danger) / var(--tw-bg-opacity, 1))}.bg-danger\/10{background-color:rgb(var(--c-danger) / .1)}.bg-danger\/15{background-color:rgb(var(--c-danger) / .15)}.bg-fg-muted{--tw-bg-opacity: 1;background-color:rgb(var(--c-fg-muted) / var(--tw-bg-opacity, 1))}.bg-fg\/5{background-color:rgb(var(--c-fg) / .05)}.bg-info{--tw-bg-opacity: 1;background-color:rgb(var(--c-info) / var(--tw-bg-opacity, 1))}.bg-info\/10{background-color:rgb(var(--c-info) / .1)}.bg-raised{--tw-bg-opacity: 1;background-color:rgb(var(--c-raised) / var(--tw-bg-opacity, 1))}.bg-run{--tw-bg-opacity: 1;background-color:rgb(var(--c-run) / var(--tw-bg-opacity, 1))}.bg-run-bright{--tw-bg-opacity: 1;background-color:rgb(var(--c-run-bright) / var(--tw-bg-opacity, 1))}.bg-run\/15{background-color:rgb(var(--c-run) / .15)}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(var(--c-surface) / var(--tw-bg-opacity, 1))}.bg-surface\/60{background-color:rgb(var(--c-surface) / .6)}.bg-surface\/80{background-color:rgb(var(--c-surface) / .8)}.bg-transparent{background-color:transparent}.bg-warn{--tw-bg-opacity: 1;background-color:rgb(var(--c-warn) / var(--tw-bg-opacity, 1))}.bg-warn\/10{background-color:rgb(var(--c-warn) / .1)}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-bg{--tw-gradient-from: rgb(var(--c-bg) / 1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(var(--c-bg) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-\[calc\(0\.75rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}.pb-px{padding-bottom:1px}.pl-0\.5{padding-left:.125rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pr-1\.5{padding-right:.375rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-9{padding-right:2.25rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-\[env\(safe-area-inset-top\)\]{padding-top:env(safe-area-inset-top)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.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-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-accent{--tw-text-opacity: 1;color:rgb(var(--c-accent) / var(--tw-text-opacity, 1))}.text-danger{--tw-text-opacity: 1;color:rgb(var(--c-danger) / var(--tw-text-opacity, 1))}.text-danger\/80{color:rgb(var(--c-danger) / .8)}.text-fg{--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1))}.text-fg-muted{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.text-fg-muted\/50{color:rgb(var(--c-fg-muted) / .5)}.text-fg-muted\/60{color:rgb(var(--c-fg-muted) / .6)}.text-fg-muted\/70{color:rgb(var(--c-fg-muted) / .7)}.text-info{--tw-text-opacity: 1;color:rgb(var(--c-info) / var(--tw-text-opacity, 1))}.text-run{--tw-text-opacity: 1;color:rgb(var(--c-run) / var(--tw-text-opacity, 1))}.text-warn{--tw-text-opacity: 1;color:rgb(var(--c-warn) / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e1{--tw-shadow: var(--shadow-e1);--tw-shadow-colored: var(--shadow-e1);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e2{--tw-shadow: var(--shadow-e2);--tw-shadow-colored: var(--shadow-e2);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-e3{--tw-shadow: var(--shadow-e3);--tw-shadow-colored: var(--shadow-e3);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-danger{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-danger) / var(--tw-ring-opacity, 1))}.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-md{--tw-backdrop-blur: blur(12px);-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(4px);-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-xl{--tw-backdrop-blur: blur(24px);-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-\[transform\,width\]{transition-property:transform,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--c-bg: 246 248 251;--c-surface: 255 255 255;--c-raised: 255 255 255;--c-border: 228 233 240;--c-fg: 18 24 35;--c-fg-muted: 91 102 117;--c-accent: 29 111 214;--c-accent-hover: 26 99 192;--c-run: 25 122 67;--c-run-bright: 52 192 110;--c-warn: 180 83 9;--c-danger: 200 30 30;--c-info: 37 99 235;--shadow-e1: 0 1px 2px rgba(12,18,28,.06), 0 1px 1px rgba(12,18,28,.04);--shadow-e2: 0 4px 12px rgba(12,18,28,.08), 0 2px 4px rgba(12,18,28,.05);--shadow-e3: 0 12px 32px rgba(12,18,28,.14), 0 4px 8px rgba(12,18,28,.06)}.dark{--c-bg: 14 17 22;--c-surface: 21 26 33;--c-raised: 27 33 42;--c-border: 38 45 56;--c-fg: 232 236 241;--c-fg-muted: 148 160 176;--c-accent: 79 155 245;--c-accent-hover: 107 176 248;--c-run: 70 194 119;--c-run-bright: 105 214 137;--c-warn: 251 191 36;--c-danger: 248 113 113;--c-info: 96 165 250;--shadow-e1: 0 1px 2px rgba(0,0,0,.5);--shadow-e2: 0 6px 18px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.45);--shadow-e3: 0 18px 48px rgba(0,0,0,.7), 0 6px 16px rgba(0,0,0,.55)}:root{--brand-from: #4F9BF5;--brand-to: #69D689}html,body,#app{height:100%}html,body{overflow-x:hidden}body{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1));font-family:Inter,ui-sans-serif,system-ui,sans-serif;--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline:none;box-shadow:0 0 0 2px rgb(var(--c-bg)),0 0 0 4px rgb(var(--c-accent));border-radius:6px}@keyframes softpulse{0%,to{box-shadow:0 0 #69d68980}50%{box-shadow:0 0 0 5px #69d68900}}.pulse-dot{animation:softpulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer-text{background:linear-gradient(90deg,rgb(var(--c-fg-muted)),rgb(var(--c-fg)),rgb(var(--c-fg-muted)));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 2.4s linear infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.caret:after{content:"";display:inline-block;width:2px;height:1em;background:rgb(var(--c-accent));margin-left:2px;vertical-align:text-bottom;animation:blink 1s step-end infinite}.thin-scroll::-webkit-scrollbar{width:8px;height:8px}.thin-scroll::-webkit-scrollbar-thumb{background:rgb(var(--c-fg-muted) / .28);border-radius:8px}.thin-scroll::-webkit-scrollbar-track{background:transparent}@media (prefers-reduced-motion: reduce){.pulse-dot,.shimmer-text,.caret:after{animation:none!important}}.placeholder\:text-fg-muted::-moz-placeholder{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.placeholder\:text-fg-muted::placeholder{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.focus-within\:border-accent\/50:focus-within{border-color:rgb(var(--c-accent) / .5)}.hover\:border-accent\/40:hover{border-color:rgb(var(--c-accent) / .4)}.hover\:border-danger\/40:hover{border-color:rgb(var(--c-danger) / .4)}.hover\:bg-accent-hover:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent-hover) / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/10:hover{background-color:rgb(var(--c-accent) / .1)}.hover\:bg-accent\/15:hover{background-color:rgb(var(--c-accent) / .15)}.hover\:bg-bg:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-bg) / var(--tw-bg-opacity, 1))}.hover\:bg-danger\/10:hover{background-color:rgb(var(--c-danger) / .1)}.hover\:bg-danger\/15:hover{background-color:rgb(var(--c-danger) / .15)}.hover\:bg-fg\/10:hover{background-color:rgb(var(--c-fg) / .1)}.hover\:bg-fg\/5:hover{background-color:rgb(var(--c-fg) / .05)}.hover\:bg-raised:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-raised) / var(--tw-bg-opacity, 1))}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(var(--c-accent) / var(--tw-text-opacity, 1))}.hover\:text-danger:hover{--tw-text-opacity: 1;color:rgb(var(--c-danger) / var(--tw-text-opacity, 1))}.hover\:text-fg:hover{--tw-text-opacity: 1;color:rgb(var(--c-fg) / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-e2:hover{--tw-shadow: var(--shadow-e2);--tw-shadow-colored: var(--shadow-e2);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-accent:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-accent) / var(--tw-ring-opacity, 1))}.enabled\:hover\:bg-accent-hover:hover:enabled{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent-hover) / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-fg\/10:disabled{background-color:rgb(var(--c-fg) / .1)}.disabled\:text-fg-muted:disabled{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:shadow-none:disabled{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:hover\:text-fg-muted:hover:disabled{--tw-text-opacity: 1;color:rgb(var(--c-fg-muted) / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (prefers-reduced-motion: reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:w-64{width:16rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:static{position:static}.lg\:z-auto{z-index:auto}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-11{height:2.75rem}.lg\:w-0{width:0px}.lg\:w-\[248px\]{width:248px}.lg\:w-\[296px\]{width:296px}.lg\:min-w-0{min-width:0px}.lg\:max-w-none{max-width:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:transform-none{transform:none}.lg\:overflow-hidden{overflow:hidden}.lg\:border-r-0{border-right-width:0px}.lg\:p-3{padding:.75rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:py-0{padding-top:0;padding-bottom:0}.lg\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.lg\:pb-\[calc\(0\.75rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}.lg\:pt-0{padding-top:0}.lg\:text-\[14px\]{font-size:14px}.lg\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}
@@ -1 +1 @@
1
- import{k as n,r as c}from"./index-Ccu9C2LP.js";const a="relay-theme";function m(){var t;const e=localStorage.getItem(a);return e==="dark"||e==="light"?e:(t=window.matchMedia)!=null&&t.call(window,"(prefers-color-scheme: light)").matches?"light":"dark"}const i=n("theme",()=>{const e=c(m());function t(){document.documentElement.classList.toggle("dark",e.value==="dark"),document.documentElement.style.colorScheme=e.value}function o(r){e.value=r,localStorage.setItem(a,r),t()}function l(){o(e.value==="dark"?"light":"dark")}return t(),{mode:e,set:o,toggle:l,apply:t}});export{i as u};
1
+ import{k as n,r as c}from"./index-B_zwxZen.js";const a="relay-theme";function m(){var t;const e=localStorage.getItem(a);return e==="dark"||e==="light"?e:(t=window.matchMedia)!=null&&t.call(window,"(prefers-color-scheme: light)").matches?"light":"dark"}const i=n("theme",()=>{const e=c(m());function t(){document.documentElement.classList.toggle("dark",e.value==="dark"),document.documentElement.style.colorScheme=e.value}function o(r){e.value=r,localStorage.setItem(a,r),t()}function l(){o(e.value==="dark"?"light":"dark")}return t(),{mode:e,set:o,toggle:l,apply:t}});export{i as u};
Binary file
@@ -0,0 +1,13 @@
1
+ <svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- SVG favicon: dark rounded tile + the xacpx blue/green "X" (kept in sync
3
+ with assets/pwa-source.svg / BrandLogo.vue). -->
4
+ <defs>
5
+ <linearGradient id="xacpxFavicon" x1="7" y1="7" x2="17" y2="17" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#4F9BF5" />
7
+ <stop offset="1" stop-color="#69D689" />
8
+ </linearGradient>
9
+ </defs>
10
+ <rect width="24" height="24" rx="5" fill="#0E1116" />
11
+ <path d="M7.5 7.5 L16.5 16.5 M16.5 7.5 L7.5 16.5" stroke="url(#xacpxFavicon)"
12
+ stroke-width="2.6" stroke-linecap="round" fill="none" />
13
+ </svg>
@@ -2,11 +2,13 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, interactive-widget=resizes-content" />
6
6
  <title>xacpx relay</title>
7
7
  <meta name="theme-color" content="#0E1116" />
8
8
  <meta name="description" content="Self-hosted relay dashboard for xacpx — remote-control acpx sessions." />
9
9
  <link rel="icon" href="/favicon.ico" sizes="48x48" />
10
+ <link rel="icon" href="/icon.svg" sizes="any" type="image/svg+xml" />
11
+ <link rel="mask-icon" href="/mask-icon.svg" color="#0E1116" />
10
12
  <link rel="apple-touch-icon" href="/apple-touch-icon-180x180.png" />
11
13
  <meta name="apple-mobile-web-app-capable" content="yes" />
12
14
  <meta name="mobile-web-app-capable" content="yes" />
@@ -27,8 +29,8 @@
27
29
  }
28
30
  })();
29
31
  </script>
30
- <script type="module" crossorigin src="/assets/index-Ccu9C2LP.js"></script>
31
- <link rel="stylesheet" crossorigin href="/assets/index-BD4N8wJc.css">
32
+ <script type="module" crossorigin src="/assets/index-B_zwxZen.js"></script>
33
+ <link rel="stylesheet" crossorigin href="/assets/index-CwYMuvhS.css">
32
34
  <link rel="manifest" href="/manifest.webmanifest"></head>
33
35
  <body>
34
36
  <div id="app"></div>
@@ -1 +1 @@
1
- {"name":"xacpx relay","short_name":"xacpx","description":"Self-hosted relay dashboard for xacpx — remote-control acpx sessions.","start_url":"/","display":"standalone","background_color":"#0E1116","theme_color":"#0E1116","lang":"en","scope":"/","orientation":"any","icons":[{"src":"pwa-64x64.png","sizes":"64x64","type":"image/png"},{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png"},{"src":"maskable-icon-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]}
1
+ {"name":"xacpx relay","short_name":"xacpx","description":"Self-hosted relay dashboard for xacpx — remote-control acpx sessions.","start_url":"/","display":"standalone","background_color":"#0E1116","theme_color":"#0E1116","lang":"en","scope":"/","orientation":"any","icons":[{"src":"pwa-64x64.png","sizes":"64x64","type":"image/png"},{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png"}]}
@@ -0,0 +1,6 @@
1
+ <svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Safari pinned-tab mask icon: single-layer, 100% black, transparent
3
+ background. Safari recolors it via the rel="mask-icon" color attribute. -->
4
+ <path d="M7.5 7.5 L16.5 16.5 M16.5 7.5 L7.5 16.5" stroke="#000000"
5
+ stroke-width="2.8" stroke-linecap="round" fill="none" />
6
+ </svg>
Binary file
Binary file
Binary file
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const n=(n,l)=>(n=new URL(n+".js",l).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(l,r)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let o={};const a=e=>n(e,i),t={module:{uri:i},exports:o,require:a};s[i]=Promise.all(l.map(e=>t[e]||a(e))).then(e=>(r(...e),o))}}define(["./workbox-9c191d2f"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"pwa-64x64.png",revision:"081e711070142608e018ac2c30e7ca2f"},{url:"pwa-512x512.png",revision:"07a2e687471b1cf58dad9b397e9fc4bb"},{url:"pwa-192x192.png",revision:"f3d44f6810b603f2337716944102db8d"},{url:"maskable-icon-512x512.png",revision:"51d6b34875db51e7509fff7283bd7747"},{url:"index.html",revision:"41ff573e5165f390d548a4d17a2d89ad"},{url:"favicon.ico",revision:"ef63b3cb6d2fd717fab89e4d35b44803"},{url:"apple-touch-icon-180x180.png",revision:"ca3cc18d8ef0b0ee40baef7dfb200ee2"},{url:"assets/workbox-window.prod.es5-BqEJf4Xk.js",revision:null},{url:"assets/theme-CSnImvQq.js",revision:null},{url:"assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2",revision:null},{url:"assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2",revision:null},{url:"assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2",revision:null},{url:"assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2",revision:null},{url:"assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2",revision:null},{url:"assets/jetbrains-mono-greek-400-normal-C190GLew.woff2",revision:null},{url:"assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2",revision:null},{url:"assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2",revision:null},{url:"assets/inter-vietnamese-700-normal-DlLaEgI2.woff2",revision:null},{url:"assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2",revision:null},{url:"assets/inter-vietnamese-500-normal-DOriooB6.woff2",revision:null},{url:"assets/inter-vietnamese-400-normal-DMkecbls.woff2",revision:null},{url:"assets/inter-latin-ext-700-normal-Ca8adRJv.woff2",revision:null},{url:"assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2",revision:null},{url:"assets/inter-latin-ext-500-normal-CV4jyFjo.woff2",revision:null},{url:"assets/inter-latin-ext-400-normal-C1nco2VV.woff2",revision:null},{url:"assets/inter-latin-700-normal-Yt3aPRUw.woff2",revision:null},{url:"assets/inter-latin-600-normal-LgqL8muc.woff2",revision:null},{url:"assets/inter-latin-500-normal-Cerq10X2.woff2",revision:null},{url:"assets/inter-latin-400-normal-C38fXH4l.woff2",revision:null},{url:"assets/inter-greek-ext-700-normal-qfdV9bQt.woff2",revision:null},{url:"assets/inter-greek-ext-600-normal-DRtmH8MT.woff2",revision:null},{url:"assets/inter-greek-ext-500-normal-C4iEst2y.woff2",revision:null},{url:"assets/inter-greek-ext-400-normal-DGGRlc-M.woff2",revision:null},{url:"assets/inter-greek-700-normal-C3JjAnD8.woff2",revision:null},{url:"assets/inter-greek-600-normal-plRanbMR.woff2",revision:null},{url:"assets/inter-greek-500-normal-BIZE56-Y.woff2",revision:null},{url:"assets/inter-greek-400-normal-B4URO6DV.woff2",revision:null},{url:"assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2",revision:null},{url:"assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2",revision:null},{url:"assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2",revision:null},{url:"assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2",revision:null},{url:"assets/inter-cyrillic-700-normal-CjBOestx.woff2",revision:null},{url:"assets/inter-cyrillic-600-normal-CWCymEST.woff2",revision:null},{url:"assets/inter-cyrillic-500-normal-BasfLYem.woff2",revision:null},{url:"assets/inter-cyrillic-400-normal-obahsSVq.woff2",revision:null},{url:"assets/index-Ccu9C2LP.js",revision:null},{url:"assets/index-BD4N8wJc.css",revision:null},{url:"assets/SettingsView-X2_13xBa.js",revision:null},{url:"assets/LoginView-Bc0b1UH3.js",revision:null},{url:"assets/DashboardView-qeO0cGEa.js",revision:null},{url:"assets/DashboardView-Di-qpvLF.css",revision:null},{url:"assets/BrandLogo.vue_vue_type_script_setup_true_lang-BWvSYb7-.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"ca3cc18d8ef0b0ee40baef7dfb200ee2"},{url:"favicon.ico",revision:"ef63b3cb6d2fd717fab89e4d35b44803"},{url:"maskable-icon-512x512.png",revision:"51d6b34875db51e7509fff7283bd7747"},{url:"pwa-192x192.png",revision:"f3d44f6810b603f2337716944102db8d"},{url:"pwa-512x512.png",revision:"07a2e687471b1cf58dad9b397e9fc4bb"},{url:"pwa-64x64.png",revision:"081e711070142608e018ac2c30e7ca2f"},{url:"manifest.webmanifest",revision:"53c4ee23bc81fdcd5b9aa077efd7de04"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/ws/]}))});
1
+ if(!self.define){let e,s={};const n=(n,l)=>(n=new URL(n+".js",l).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(l,r)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let o={};const a=e=>n(e,i),t={module:{uri:i},exports:o,require:a};s[i]=Promise.all(l.map(e=>t[e]||a(e))).then(e=>(r(...e),o))}}define(["./workbox-9c191d2f"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"pwa-64x64.png",revision:"d2af46f4bb347977f19595bda6caaed4"},{url:"pwa-512x512.png",revision:"f16a01bab067f36b39a42485d686e3be"},{url:"pwa-192x192.png",revision:"fa77320642032c636d96f216b9ed84a3"},{url:"mask-icon.svg",revision:"78d0341702fa97ead2e057c910ac730e"},{url:"index.html",revision:"5701141a98832a7d7f7d3900a8993129"},{url:"icon.svg",revision:"108e2c2390e392bf1df806b0fac8630b"},{url:"favicon.ico",revision:"f3b082619625b4e8aba703acb01d86c9"},{url:"apple-touch-icon-180x180.png",revision:"e55c4a308bb7b81b46fc17ca3cecc9df"},{url:"assets/workbox-window.prod.es5-BqEJf4Xk.js",revision:null},{url:"assets/theme-CxgdBqbU.js",revision:null},{url:"assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2",revision:null},{url:"assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2",revision:null},{url:"assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2",revision:null},{url:"assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2",revision:null},{url:"assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2",revision:null},{url:"assets/jetbrains-mono-greek-400-normal-C190GLew.woff2",revision:null},{url:"assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2",revision:null},{url:"assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2",revision:null},{url:"assets/inter-vietnamese-700-normal-DlLaEgI2.woff2",revision:null},{url:"assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2",revision:null},{url:"assets/inter-vietnamese-500-normal-DOriooB6.woff2",revision:null},{url:"assets/inter-vietnamese-400-normal-DMkecbls.woff2",revision:null},{url:"assets/inter-latin-ext-700-normal-Ca8adRJv.woff2",revision:null},{url:"assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2",revision:null},{url:"assets/inter-latin-ext-500-normal-CV4jyFjo.woff2",revision:null},{url:"assets/inter-latin-ext-400-normal-C1nco2VV.woff2",revision:null},{url:"assets/inter-latin-700-normal-Yt3aPRUw.woff2",revision:null},{url:"assets/inter-latin-600-normal-LgqL8muc.woff2",revision:null},{url:"assets/inter-latin-500-normal-Cerq10X2.woff2",revision:null},{url:"assets/inter-latin-400-normal-C38fXH4l.woff2",revision:null},{url:"assets/inter-greek-ext-700-normal-qfdV9bQt.woff2",revision:null},{url:"assets/inter-greek-ext-600-normal-DRtmH8MT.woff2",revision:null},{url:"assets/inter-greek-ext-500-normal-C4iEst2y.woff2",revision:null},{url:"assets/inter-greek-ext-400-normal-DGGRlc-M.woff2",revision:null},{url:"assets/inter-greek-700-normal-C3JjAnD8.woff2",revision:null},{url:"assets/inter-greek-600-normal-plRanbMR.woff2",revision:null},{url:"assets/inter-greek-500-normal-BIZE56-Y.woff2",revision:null},{url:"assets/inter-greek-400-normal-B4URO6DV.woff2",revision:null},{url:"assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2",revision:null},{url:"assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2",revision:null},{url:"assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2",revision:null},{url:"assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2",revision:null},{url:"assets/inter-cyrillic-700-normal-CjBOestx.woff2",revision:null},{url:"assets/inter-cyrillic-600-normal-CWCymEST.woff2",revision:null},{url:"assets/inter-cyrillic-500-normal-BasfLYem.woff2",revision:null},{url:"assets/inter-cyrillic-400-normal-obahsSVq.woff2",revision:null},{url:"assets/index-CwYMuvhS.css",revision:null},{url:"assets/index-B_zwxZen.js",revision:null},{url:"assets/SettingsView-Cl3pdwq8.js",revision:null},{url:"assets/LoginView-Cc1pyK2H.js",revision:null},{url:"assets/DashboardView-Di-qpvLF.css",revision:null},{url:"assets/DashboardView-CBYGWHdu.js",revision:null},{url:"assets/BrandLogo.vue_vue_type_script_setup_true_lang-DJP2AXeI.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"e55c4a308bb7b81b46fc17ca3cecc9df"},{url:"favicon.ico",revision:"f3b082619625b4e8aba703acb01d86c9"},{url:"icon.svg",revision:"108e2c2390e392bf1df806b0fac8630b"},{url:"mask-icon.svg",revision:"78d0341702fa97ead2e057c910ac730e"},{url:"pwa-192x192.png",revision:"fa77320642032c636d96f216b9ed84a3"},{url:"pwa-512x512.png",revision:"f16a01bab067f36b39a42485d686e3be"},{url:"pwa-64x64.png",revision:"d2af46f4bb347977f19595bda6caaed4"},{url:"manifest.webmanifest",revision:"b4ffc8074149528886e792c1f7aec4ef"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/ws/]}))});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganglion/xacpx-relay",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Self-hosted relay hub for xacpx: instance gateway, accounts, and web API.",
5
5
  "license": "MIT",
6
6
  "keywords": ["xacpx", "relay", "hub"],
@@ -1 +0,0 @@
1
- import{d as g,u as m,c as i,a as e,b as h,t as o,w as v,v as y,e as l,f as d,g as _,h as x,r as c,i as k,o as u}from"./index-Ccu9C2LP.js";import{_ as w}from"./BrandLogo.vue_vue_type_script_setup_true_lang-BWvSYb7-.js";const $={class:"flex h-screen items-center justify-center bg-bg"},V={class:"mb-2 flex justify-center"},B={for:"access-token",class:"sr-only"},N=["placeholder","disabled"],S={id:"token-hint",class:"text-sm text-fg-muted"},j={key:0,class:"text-sm text-danger"},A=["disabled"],L=g({__name:"LoginView",setup(C){const n=m(),f=k(),r=c(""),t=c(!1);async function b(){if(!t.value){t.value=!0;try{await n.login(r.value)&&f.replace("/")}finally{t.value=!1}}}return(s,a)=>(u(),i("div",$,[e("form",{class:"w-80 space-y-3 rounded-lg border border-border bg-surface p-6 shadow-xl",onSubmit:x(b,["prevent"])},[e("div",V,[h(w)]),e("label",B,o(s.$t("login.tokenLabel")),1),v(e("input",{id:"access-token","onUpdate:modelValue":a[0]||(a[0]=p=>r.value=p),type:"password",autocomplete:"off","aria-describedby":"token-hint",class:"w-full rounded border border-border bg-bg px-3 py-2 text-fg placeholder:text-fg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:opacity-50",placeholder:s.$t("login.tokenPlaceholder"),disabled:t.value},null,8,N),[[y,r.value]]),e("p",S,[l(o(s.$t("login.hintBefore")),1),a[1]||(a[1]=e("code",null,"xacpx-relay add token",-1)),l(o(s.$t("login.hintAfter")),1)]),d(n).error?(u(),i("p",j,o(d(n).error),1)):_("",!0),e("button",{class:"w-full rounded bg-accent px-3 py-2 text-white hover:bg-accent-hover disabled:opacity-50",type:"submit",disabled:t.value},o(t.value?s.$t("login.signingIn"):s.$t("login.signIn")),9,A)],32)]))}});export{L as default};