turbollm 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +12 -1
- package/dist/webdist/assets/{AgentsScreen-BISmGjbo.js → AgentsScreen-EiPT9y2w.js} +1 -1
- package/dist/webdist/assets/{ChatScreen-CdGovrD_.js → ChatScreen-DUrkqMeC.js} +3 -3
- package/dist/webdist/assets/{CustomizeScreen-vCdaeaYm.js → CustomizeScreen-D3gT5m17.js} +1 -1
- package/dist/webdist/assets/{DeveloperScreen-DTDECTfQ.js → DeveloperScreen-CrpBr1sb.js} +1 -1
- package/dist/webdist/assets/{EnginesScreen-BLqB4B4s.js → EnginesScreen-bg__-Fi5.js} +1 -1
- package/dist/webdist/assets/{ModelDetailDialog-CmcauyUd.js → ModelDetailDialog-DJ7_7jXE.js} +1 -1
- package/dist/webdist/assets/{ModelDirs-CVl421kH.js → ModelDirs-D2fiDrlX.js} +1 -1
- package/dist/webdist/assets/ModelsScreen-_LBVdJl4.js +1 -0
- package/dist/webdist/assets/{SettingsScreen-DZQ1lIIa.js → SettingsScreen-cFZbfIwT.js} +1 -1
- package/dist/webdist/assets/{arc-BOg2ZUVv.js → arc-CkxesN47.js} +1 -1
- package/dist/webdist/assets/{architectureDiagram-3BPJPVTR-JA6U-k6V.js → architectureDiagram-3BPJPVTR-095VL47n.js} +1 -1
- package/dist/webdist/assets/{blockDiagram-GPEHLZMM-CeFKl5gt.js → blockDiagram-GPEHLZMM-BvWCQJ88.js} +1 -1
- package/dist/webdist/assets/{c4Diagram-AAUBKEIU-NAYIvLue.js → c4Diagram-AAUBKEIU-DMuOSoD7.js} +1 -1
- package/dist/webdist/assets/channel-DPr90gR6.js +1 -0
- package/dist/webdist/assets/check-C66UWSMM.js +1 -0
- package/dist/webdist/assets/{chunk-2J33WTMH-CZAFUB1n.js → chunk-2J33WTMH-CDRuE0ZL.js} +1 -1
- package/dist/webdist/assets/{chunk-4BX2VUAB-BwDeI7tm.js → chunk-4BX2VUAB-73mafPnW.js} +1 -1
- package/dist/webdist/assets/{chunk-55IACEB6-CrMcwFFf.js → chunk-55IACEB6-QZcxum_K.js} +1 -1
- package/dist/webdist/assets/{chunk-727SXJPM-B8pvS-2b.js → chunk-727SXJPM-CqmFodef.js} +1 -1
- package/dist/webdist/assets/{chunk-AQP2D5EJ-4nG2xg8B.js → chunk-AQP2D5EJ-CgXMhB73.js} +1 -1
- package/dist/webdist/assets/{chunk-FMBD7UC4-4dS81TVH.js → chunk-FMBD7UC4-BJCFWImJ.js} +1 -1
- package/dist/webdist/assets/{chunk-ND2GUHAM-BOND_2fr.js → chunk-ND2GUHAM-iEKljTeu.js} +1 -1
- package/dist/webdist/assets/{chunk-QZHKN3VN-uo5AhgZ_.js → chunk-QZHKN3VN-VKpcy2sD.js} +1 -1
- package/dist/webdist/assets/{circle-check-BM1U1LBh.js → circle-check-C73Lr6Uy.js} +1 -1
- package/dist/webdist/assets/{circle-x-BQVgQDWt.js → circle-x-vhvOc_s6.js} +1 -1
- package/dist/webdist/assets/classDiagram-4FO5ZUOK-CS-C7Cls.js +1 -0
- package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-CS-C7Cls.js +1 -0
- package/dist/webdist/assets/{common-CREyTFTu.js → common-DzMdqlCp.js} +1 -1
- package/dist/webdist/assets/{copy-button-CCE6xN9X.js → copy-button-llYeGT-i.js} +1 -1
- package/dist/webdist/assets/{cose-bilkent-S5V4N54A-C2Hznw_T.js → cose-bilkent-S5V4N54A-eGsFCV6V.js} +1 -1
- package/dist/webdist/assets/{dagre-BM42HDAG-DfgRJcxi.js → dagre-BM42HDAG-C2DRiz9O.js} +1 -1
- package/dist/webdist/assets/{diagram-2AECGRRQ-B3NKQXs-.js → diagram-2AECGRRQ-FaJsb5ra.js} +1 -1
- package/dist/webdist/assets/{diagram-5GNKFQAL-CsddCSIK.js → diagram-5GNKFQAL-qAiWM4UF.js} +1 -1
- package/dist/webdist/assets/{diagram-KO2AKTUF-B-0Scyhf.js → diagram-KO2AKTUF-bSkRUGWZ.js} +1 -1
- package/dist/webdist/assets/{diagram-LMA3HP47-zZMoAxon.js → diagram-LMA3HP47-pjs1A0Dk.js} +1 -1
- package/dist/webdist/assets/{diagram-OG6HWLK6-DkhKqVoh.js → diagram-OG6HWLK6-BqCMIsmf.js} +1 -1
- package/dist/webdist/assets/{dialog-Bu_dNoGl.js → dialog-DCS2uvxk.js} +1 -1
- package/dist/webdist/assets/{erDiagram-TEJ5UH35-N3kX36Fb.js → erDiagram-TEJ5UH35-Bv1h9dbW.js} +1 -1
- package/dist/webdist/assets/{flowDiagram-I6XJVG4X-MBmSjZLW.js → flowDiagram-I6XJVG4X-C-v71MLV.js} +1 -1
- package/dist/webdist/assets/{ganttDiagram-6RSMTGT7-BemcAo3u.js → ganttDiagram-6RSMTGT7-BV5AS1TO.js} +1 -1
- package/dist/webdist/assets/{gitGraphDiagram-PVQCEYII-C3Z2MeCR.js → gitGraphDiagram-PVQCEYII-BxGo8YVL.js} +1 -1
- package/dist/webdist/assets/{index-C07fQlaV.js → index-DH6LUjzQ.js} +2 -2
- package/dist/webdist/assets/{infoDiagram-5YYISTIA-CJ9bQKM4.js → infoDiagram-5YYISTIA-CYkfbi9v.js} +1 -1
- package/dist/webdist/assets/{ishikawaDiagram-YF4QCWOH-DAU8qHuy.js → ishikawaDiagram-YF4QCWOH-BnGF7ohg.js} +1 -1
- package/dist/webdist/assets/{journeyDiagram-JHISSGLW-DYWLdObC.js → journeyDiagram-JHISSGLW-CdHcTbON.js} +1 -1
- package/dist/webdist/assets/{kanban-definition-UN3LZRKU-SRRfAaYQ.js → kanban-definition-UN3LZRKU-C7cGcsQk.js} +1 -1
- package/dist/webdist/assets/{linear-Cn3E4T4R.js → linear-CDPDzqam.js} +1 -1
- package/dist/webdist/assets/{mermaid.core-D0LNV0aO.js → mermaid.core-Bkp248fX.js} +4 -4
- package/dist/webdist/assets/{mindmap-definition-RKZ34NQL-4OzvUsMs.js → mindmap-definition-RKZ34NQL-D4GkC3GJ.js} +1 -1
- package/dist/webdist/assets/{pencil-Ds4UYumb.js → pencil-Cfn97uuD.js} +1 -1
- package/dist/webdist/assets/{pieDiagram-4H26LBE5-DnUMRqxT.js → pieDiagram-4H26LBE5-CXEAL2o0.js} +1 -1
- package/dist/webdist/assets/{plus-3UMxyIEk.js → plus-BSLbFnG4.js} +1 -1
- package/dist/webdist/assets/{quadrantDiagram-W4KKPZXB-CuGEtBna.js → quadrantDiagram-W4KKPZXB-qOQG3ciS.js} +1 -1
- package/dist/webdist/assets/{refresh-cw-kd3J_RQJ.js → refresh-cw-D6_BcM7q.js} +1 -1
- package/dist/webdist/assets/{requirementDiagram-4Y6WPE33-D6JrM-I-.js → requirementDiagram-4Y6WPE33-DsKVmkow.js} +1 -1
- package/dist/webdist/assets/{sankeyDiagram-5OEKKPKP-7SVXztDZ.js → sankeyDiagram-5OEKKPKP-BpGFJ3p6.js} +1 -1
- package/dist/webdist/assets/{save-CTNv_c8L.js → save-CkZF-RBo.js} +1 -1
- package/dist/webdist/assets/{sequenceDiagram-3UESZ5HK-DBPkd_Mz.js → sequenceDiagram-3UESZ5HK-BtTWta9u.js} +1 -1
- package/dist/webdist/assets/{skeleton-D4pn0jcp.js → skeleton-C8uO_3IS.js} +1 -1
- package/dist/webdist/assets/{stateDiagram-AJRCARHV-CeJn57NH.js → stateDiagram-AJRCARHV-ClaR6bLX.js} +1 -1
- package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-D8QU94bs.js +1 -0
- package/dist/webdist/assets/{timeline-definition-PNZ67QCA-4wGzSbT-.js → timeline-definition-PNZ67QCA-Dgl-tSbG.js} +1 -1
- package/dist/webdist/assets/{trash-2-Ct_313d6.js → trash-2-CqQWzJ1Q.js} +1 -1
- package/dist/webdist/assets/{vennDiagram-CIIHVFJN-C07Iks1t.js → vennDiagram-CIIHVFJN-BaUjNRiO.js} +1 -1
- package/dist/webdist/assets/{wardley-L42UT6IY-CkjQxAi3.js → wardley-L42UT6IY-CK0qHrWX.js} +1 -1
- package/dist/webdist/assets/{wardleyDiagram-YWT4CUSO-CrfLbu_T.js → wardleyDiagram-YWT4CUSO-D7I0ntRP.js} +1 -1
- package/dist/webdist/assets/{wrench-CBGqccQu.js → wrench-BMZR8C90.js} +1 -1
- package/dist/webdist/assets/{xychartDiagram-2RQKCTM6-VlKQgaXq.js → xychartDiagram-2RQKCTM6-DGpy17g3.js} +1 -1
- package/dist/webdist/index.html +1 -1
- package/package.json +1 -1
- package/dist/webdist/assets/ModelsScreen-BsjQ-rXT.js +0 -1
- package/dist/webdist/assets/channel-R-Cc4MxS.js +0 -1
- package/dist/webdist/assets/check-BEf12PVV.js +0 -1
- package/dist/webdist/assets/classDiagram-4FO5ZUOK-Bo30oFs_.js +0 -1
- package/dist/webdist/assets/classDiagram-v2-Q7XG4LA2-Bo30oFs_.js +0 -1
- package/dist/webdist/assets/stateDiagram-v2-BHNVJYJU-64xpB2-o.js +0 -1
package/dist/cli.js
CHANGED
|
@@ -4338,7 +4338,7 @@ var DownloadManager = class {
|
|
|
4338
4338
|
let url;
|
|
4339
4339
|
let filename;
|
|
4340
4340
|
if (input.url) {
|
|
4341
|
-
const u = input.url.trim();
|
|
4341
|
+
const u = normalizeHfBlobUrl(input.url.trim());
|
|
4342
4342
|
if (!/^https?:\/\//i.test(u)) throw new DownloadError("invalid_url", "URL must start with http:// or https://.");
|
|
4343
4343
|
const path = safePathname(u);
|
|
4344
4344
|
if (!subdir && !/\.gguf$/i.test(path) && !HF_BLOB_RE.test(u.split("?")[0])) {
|
|
@@ -4612,6 +4612,17 @@ var DownloadManager = class {
|
|
|
4612
4612
|
function gb(bytes) {
|
|
4613
4613
|
return (bytes / 1e9).toFixed(1);
|
|
4614
4614
|
}
|
|
4615
|
+
function normalizeHfBlobUrl(u) {
|
|
4616
|
+
try {
|
|
4617
|
+
const parsed = new URL(u);
|
|
4618
|
+
if (parsed.hostname === "huggingface.co") {
|
|
4619
|
+
parsed.pathname = parsed.pathname.replace(/\/blob\//, "/resolve/");
|
|
4620
|
+
}
|
|
4621
|
+
return parsed.toString();
|
|
4622
|
+
} catch {
|
|
4623
|
+
return u;
|
|
4624
|
+
}
|
|
4625
|
+
}
|
|
4615
4626
|
function safePathname(u) {
|
|
4616
4627
|
try {
|
|
4617
4628
|
return new URL(u).pathname;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"./radix-4XwKfE88.js";import{r as u}from"./vendor-CKtmMAvG.js";import{c as w,d as k,A as T,e as v,L as h,f as S,b,g as C,h as q,X as A}from"./index-
|
|
1
|
+
import{j as e}from"./radix-4XwKfE88.js";import{r as u}from"./vendor-CKtmMAvG.js";import{c as w,d as k,A as T,e as v,L as h,f as S,b,g as C,h as q,X as A}from"./index-DH6LUjzQ.js";import{P as N}from"./plus-BSLbFnG4.js";import{C as y}from"./circle-x-vhvOc_s6.js";import{C as O}from"./circle-check-C73Lr6Uy.js";import{W as E}from"./wrench-BMZR8C90.js";const _=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]],D=w("circle-dot",_);const L=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],P=w("clock",L),p={all:["agent-runs"],list:()=>[...p.all,"list"],detail:t=>[...p.all,"detail",t]};async function g(t,a){const l={Accept:"application/json",...k(),...a?.headers??{}},i=await fetch(t,{...a,headers:l});if(i.status===204)return;const r=await i.text(),o=r?JSON.parse(r):void 0;if(!i.ok){const d=o;throw new T(d?.error?.code??"http_error",d?.error?.message??`Request failed with status ${i.status}.`,i.status)}return o}async function $(){return g("/api/v1/agents/runs")}async function I(t){return g(`/api/v1/agents/runs/${t}`)}async function Q(t){return g("/api/v1/agents/runs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async function K(t){await g(`/api/v1/agents/runs/${t}`,{method:"DELETE"})}async function*F(t,a=0,l){const i=`/api/v1/agents/runs/${t}/stream?fromSeq=${a}`,r=await fetch(i,{headers:{Accept:"text/event-stream",...k()},signal:l});if(!r.ok||!r.body)throw new Error(`Stream error: ${r.status}`);const o=r.body.getReader(),d=new TextDecoder;let m="";try{for(;;){const{done:s,value:x}=await o.read();if(s)break;m+=d.decode(x,{stream:!0});const c=m.split(`
|
|
2
2
|
`);m=c.pop()??"";let n="message";for(const f of c){if(f.startsWith("event: ")){n=f.slice(7).trim();continue}if(f.startsWith("data: ")){const j=f.slice(6).trim();if(j==="[DONE]")return;try{const R=JSON.parse(j);if(yield{event:n,data:R},n==="done"||n==="error")return}catch{}n="message"}}}}finally{o.cancel()}}const J={queued:e.jsx(P,{size:12}),running:e.jsx(h,{size:12,className:"animate-spin"}),done:e.jsx(O,{size:12}),failed:e.jsx(y,{size:12}),cancelled:e.jsx(y,{size:12}),interrupted:e.jsx(y,{size:12})},M={queued:"text-muted",running:"text-accent",done:"text-green-500",failed:"text-red-500",cancelled:"text-muted",interrupted:"text-orange-500"};function z({status:t}){return e.jsxs("span",{className:b("flex items-center gap-1 text-[11px] capitalize",M[t]),children:[J[t],t]})}function W(t){const a=Date.now()-new Date(t).getTime();return a<6e4?"just now":a<36e5?`${Math.floor(a/6e4)}m ago`:a<864e5?`${Math.floor(a/36e5)}h ago`:new Date(t).toLocaleDateString()}const U=[{id:"web_search",label:"Web search",hint:"Search the web (needs a provider configured in Settings)"},{id:"fetch_url",label:"Fetch URL",hint:"Read the contents of a web page"},{id:"run_code",label:"Run code",hint:"Execute JS in a sandbox — no mid-run confirmation, opt in only if you trust the task"}];function B({onClose:t,onCreated:a}){const[l,i]=u.useState(""),[r,o]=u.useState(""),[d,m]=u.useState({web_search:!0,fetch_url:!0,run_code:!1}),s=C(),x=n=>m(f=>({...f,[n]:!f[n]})),c=q({mutationFn:()=>Q({title:l.slice(0,60)||"Agent run",systemPrompt:r||void 0,userMessage:l,allowedTools:Object.entries(d).filter(([,n])=>n).map(([n])=>n)}),onSuccess:n=>{s.invalidateQueries({queryKey:p.list()}),a(n.id),t()}});return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:t,children:e.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-border bg-panel p-5 shadow-xl",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-[15px] font-semibold",children:"New agent run"}),e.jsx("button",{type:"button",onClick:t,className:"text-faint hover:text-ink",children:e.jsx(A,{size:16})})]}),e.jsx("label",{className:"mb-1 block text-[12px] text-muted",children:"Task"}),e.jsx("textarea",{autoFocus:!0,value:l,onChange:n=>i(n.target.value),placeholder:"Describe what the agent should do…",rows:4,className:"mb-3 w-full resize-none rounded-lg border border-border bg-input px-3 py-2 text-[13px] text-ink placeholder:text-faint focus:border-accent focus:outline-none"}),e.jsxs("label",{className:"mb-1 block text-[12px] text-muted",children:["System prompt ",e.jsx("span",{className:"text-faint",children:"(optional)"})]}),e.jsx("textarea",{value:r,onChange:n=>o(n.target.value),placeholder:"You are a helpful assistant…",rows:2,className:"mb-4 w-full resize-none rounded-lg border border-border bg-input px-3 py-2 text-[13px] text-ink placeholder:text-faint focus:border-accent focus:outline-none"}),e.jsx("label",{className:"mb-1.5 block text-[12px] text-muted",children:"Tools"}),e.jsx("div",{className:"mb-4 space-y-1.5",children:U.map(n=>e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 rounded-lg border border-border px-2.5 py-2 hover:bg-panel-2",children:[e.jsx("input",{type:"checkbox",checked:d[n.id],onChange:()=>x(n.id),className:"mt-0.5 accent-[var(--accent)]"}),e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block text-[13px] font-medium text-ink",children:n.label}),e.jsx("span",{className:"block text-[11px] leading-snug text-faint",children:n.hint})]})]},n.id))}),e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx("button",{type:"button",onClick:t,className:"rounded-lg px-3 py-1.5 text-[13px] text-muted hover:text-ink",children:"Cancel"}),e.jsxs("button",{type:"button",disabled:!l.trim()||c.isPending,onClick:()=>c.mutate(),className:"flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white disabled:opacity-50",children:[c.isPending?e.jsx(h,{size:13,className:"animate-spin"}):e.jsx(S,{size:13}),"Run agent"]})]}),c.isError&&e.jsx("p",{className:"mt-2 text-[12px]",style:{color:"var(--err)"},children:c.error.message})]})})}function X({call:t}){const[a,l]=u.useState(!1),i=typeof t.args?.query=="string"?t.args.query:typeof t.args?.url=="string"?t.args.url:JSON.stringify(t.args??{});return e.jsxs("div",{className:"w-full max-w-[85%] rounded-lg border border-border bg-panel px-2.5 py-1.5 text-[12px]",children:[e.jsxs("button",{type:"button",onClick:()=>l(r=>!r),className:"flex w-full items-center gap-1.5 text-left text-muted hover:text-ink",children:[e.jsx(E,{size:12,className:"shrink-0 text-accent"}),e.jsx("span",{className:"font-medium text-ink",children:t.name}),e.jsx("span",{className:"truncate text-faint",children:i})]}),a&&e.jsx("pre",{className:"mt-1.5 max-h-48 overflow-auto whitespace-pre-wrap break-words rounded bg-panel-2 p-2 text-[11px] text-muted",children:t.result})]})}function H({run:t}){const a=C(),l=u.useRef(null),[i,r]=u.useState(""),o=u.useRef(null),d=q({mutationFn:()=>K(t.id),onSuccess:()=>{a.invalidateQueries({queryKey:p.list()})}});u.useEffect(()=>{if(t.status!=="running"&&t.status!=="queued")return;const s=new AbortController;l.current=s;let x="";return(async()=>{try{for await(const c of F(t.id,0,s.signal))if(c.event==="delta")x+=c.data.delta,r(x);else if(c.event==="done"||c.event==="error"){r(""),a.invalidateQueries({queryKey:p.detail(t.id)}),a.invalidateQueries({queryKey:p.list()});break}}catch{}})(),()=>{s.abort(),l.current=null}},[t.id,t.status,a]),u.useEffect(()=>{o.current?.scrollIntoView({behavior:"smooth"})},[i,t.messages?.length]);const m=t.messages??[];return e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-4 py-2.5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[14px] font-medium text-ink",children:t.title}),e.jsx(z,{status:t.status})]}),(t.status==="running"||t.status==="queued")&&e.jsx("button",{type:"button",onClick:()=>d.mutate(),className:"rounded-lg border border-border px-3 py-1 text-[12px] text-muted transition-colors hover:border-red-400 hover:text-red-500",children:d.isPending?e.jsx(h,{size:12,className:"inline animate-spin"}):"Cancel"})]}),e.jsxs("div",{className:"flex-1 space-y-3 overflow-y-auto p-4",children:[m.map(s=>e.jsxs("div",{className:b("flex flex-col gap-1.5",s.role==="user"?"items-end":"items-start"),children:[s.toolCalls?.map(x=>e.jsx(X,{call:x},x.id)),(s.content||s.role==="user"||t.status==="running")&&e.jsx("div",{className:b("max-w-[85%] rounded-xl px-3 py-2 text-[13px] leading-relaxed",s.role==="user"?"bg-accent/15 text-ink":"bg-panel-2 text-ink"),children:e.jsx("p",{className:"whitespace-pre-wrap break-words",children:s.content||(s.role==="assistant"&&t.status==="running"?"…":"")})})]},s.id)),i&&e.jsx("div",{className:"flex gap-2",children:e.jsx("div",{className:"max-w-[85%] rounded-xl bg-panel-2 px-3 py-2 text-[13px] leading-relaxed text-ink",children:e.jsx("p",{className:"whitespace-pre-wrap break-words",children:i})})}),t.error&&e.jsxs("div",{className:"rounded-lg bg-red-500/10 px-3 py-2 text-[12px] text-red-500",children:["Error: ",t.error]}),e.jsx("div",{ref:o})]})]})}function ne(){const[t,a]=u.useState(null),[l,i]=u.useState(!1),r=v({queryKey:p.list(),queryFn:$,refetchInterval:s=>(s.state.data??[]).some(n=>n.status==="queued"||n.status==="running")?3e3:!1}),o=v({queryKey:p.detail(t??""),queryFn:()=>I(t),enabled:!!t,refetchInterval:s=>{const x=s.state.data;return x?.status==="queued"||x?.status==="running"?5e3:!1}}),d=r.data??[],m=o.data;return e.jsxs("div",{className:"flex h-full",children:[e.jsxs("div",{className:"flex w-64 shrink-0 flex-col border-r border-border",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-3 py-2.5",children:[e.jsx("span",{className:"text-[13px] font-semibold text-ink",children:"Agents"}),e.jsxs("button",{type:"button",title:"New agent run",onClick:()=>i(!0),className:"flex items-center gap-1 rounded-lg bg-accent px-2 py-1 text-[11px] font-medium text-white transition-opacity hover:opacity-90",children:[e.jsx(N,{size:11})," New"]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto",children:[r.isLoading&&e.jsx("div",{className:"flex h-20 items-center justify-center",children:e.jsx(h,{size:16,className:"animate-spin text-faint"})}),d.length===0&&!r.isLoading&&e.jsxs("div",{className:"px-4 py-8 text-center",children:[e.jsx(S,{size:28,className:"mx-auto mb-2 text-faint"}),e.jsx("p",{className:"text-[12px] text-muted",children:"No agent runs yet."}),e.jsx("p",{className:"mt-0.5 text-[11px] text-faint",children:"Click “New” to start one."})]}),d.map(s=>e.jsxs("button",{type:"button",onClick:()=>a(s.id),className:b("w-full border-b border-border px-3 py-2.5 text-left transition-colors hover:bg-panel-2",t===s.id&&"bg-panel-2"),children:[e.jsx("p",{className:"mb-0.5 truncate text-[13px] font-medium text-ink",children:s.title}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(z,{status:s.status}),e.jsx("span",{className:"text-[10px] text-faint",children:W(s.createdAt)})]})]},s.id))]})]}),e.jsx("div",{className:"flex min-w-0 flex-1 flex-col",children:t?o.isLoading?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(h,{size:20,className:"animate-spin text-faint"})}):m?e.jsx(H,{run:m}):null:e.jsxs("div",{className:"flex h-full flex-col items-center justify-center text-center",children:[e.jsx(D,{size:32,className:"mb-3 text-faint"}),e.jsx("p",{className:"text-[14px] font-medium text-ink",children:"Select a run"}),e.jsx("p",{className:"mt-1 text-[12px] text-muted",children:"or create a new agent run to get started"}),e.jsxs("button",{type:"button",onClick:()=>i(!0),className:"mt-4 flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white hover:opacity-90",children:[e.jsx(N,{size:13})," New agent run"]})]})}),l&&e.jsx(B,{onClose:()=>i(!1),onCreated:s=>{a(s),r.refetch()}})]})}export{ne as AgentsScreen};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-
|
|
2
|
-
import{j as m}from"./radix-4XwKfE88.js";import{g as Pr,r as j,k as Ss,l as Ns}from"./vendor-CKtmMAvG.js";import{c as it,d as Br,A as Et,g as Sa,h as Rt,e as Na,m as _r,a5 as Fr,a6 as Ts,L as ln,H as Dn,b as Cs,t as Be,B as je,I as As,a3 as Rs,a7 as Is,q as Os,M as Ms,C as Ls,X as _n,a8 as Ds,a9 as Ps,aa as Bs,ab as Fs}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-Bkp248fX.js","assets/index-DH6LUjzQ.js","assets/radix-4XwKfE88.js","assets/vendor-CKtmMAvG.js","assets/index-FmTuHPCZ.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as m}from"./radix-4XwKfE88.js";import{g as Pr,r as j,k as Ss,l as Ns}from"./vendor-CKtmMAvG.js";import{c as it,d as Br,A as Et,g as Sa,h as Rt,e as Na,m as _r,a5 as Fr,a6 as Ts,L as ln,H as Dn,b as Cs,t as Be,B as je,I as As,a3 as Rs,a7 as Is,q as Os,M as Ms,C as Ls,X as _n,a8 as Ds,a9 as Ps,aa as Bs,ab as Fs}from"./index-DH6LUjzQ.js";import{C as wr,a as mi}from"./copy-button-llYeGT-i.js";import{C as Wt,r as zr,n as zs,o as Us,p as $s,t as js,q as Hs,m as Gs,D as Ks,s as qs,h as Ws,u as Vs}from"./dialog-DCS2uvxk.js";import{P as Ta}from"./pencil-Cfn97uuD.js";import{T as kr}from"./trash-2-CqQWzJ1Q.js";import{R as Ys}from"./refresh-cw-D6_BcM7q.js";import{C as Zs}from"./circle-check-C73Lr6Uy.js";import{C as Xs}from"./circle-x-vhvOc_s6.js";import{S as Qs,a as Js,M as el}from"./ModelDetailDialog-DJ7_7jXE.js";import{C as tl}from"./check-C66UWSMM.js";import{g as gi,c as nl,P as Ca,d as rl,a as il,e as al}from"./personas-C4oTeImA.js";import"./save-CkZF-RBo.js";const ol=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],sl=it("arrow-down",ol);const ll=[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]],cl=it("brain",ll);const ul=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],dl=it("chevron-left",ul);const pl=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],fl=it("file-text",pl);const ml=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],gl=it("maximize-2",ml);const hl=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 8v6",key:"1ib9pf"}],["path",{d:"M9 11h6",key:"1fldmi"}]],hi=it("message-square-plus",hl);const bl=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],yl=it("minimize-2",bl);const xl=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],El=it("paperclip",xl);const _l=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z",key:"117uat"}],["path",{d:"M6 12h16",key:"s4cdu5"}]],wl=it("send-horizontal",_l);const kl=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],vl=it("share-2",kl);const Sl=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Nl=it("square",Sl);const Tl=[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]],Cl=it("user-round",Tl);async function bt(e,t){const n={Accept:"application/json",...Br(),...t?.headers??{}};let r=t?.body;t&&"json"in t&&t.json!==void 0&&(n["Content-Type"]="application/json",r=JSON.stringify(t.json));const i=await fetch(e,{...t,headers:n,body:r});if(i.status===204)return;const o=await i.text(),a=o?(()=>{try{return JSON.parse(o)}catch{return}})():void 0;if(!i.ok){const s=a;throw new Et(s?.error?.code??"http_error",s?.error?.message??`Request failed with status ${i.status}.`,i.status)}return a}function Al(){return bt("/api/v1/sysinfo")}function Rl(e){return bt(`/api/v1/conversations${e?`?q=${encodeURIComponent(e)}`:""}`)}function Il(e){return bt("/api/v1/conversations",{method:"POST",json:e??{}})}function Ol(e){return bt(`/api/v1/conversations/${encodeURIComponent(e)}`)}function Ml(e,t){return bt(`/api/v1/conversations/${encodeURIComponent(e)}`,{method:"PATCH",json:t})}function Ll(e){return bt(`/api/v1/conversations/${encodeURIComponent(e)}`,{method:"DELETE"})}function Dl(e){return bt("/api/v1/chat/stop",{method:"POST",json:{conversationId:e}})}function Pl(e,t,n){return bt(`/api/v1/conversations/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}`,{method:"PUT",json:{content:n}})}function Bl(e,t){return bt(`/api/v1/conversations/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}`,{method:"DELETE"})}function Fl(e){return bt(`/api/v1/conversations/${encodeURIComponent(e)}/regenerate`,{method:"POST",json:{}})}async function*zl(e,t,n,r,i,o,a){const s=await fetch(`/api/v1/conversations/${encodeURIComponent(e)}/messages`,{method:"POST",headers:{"Content-Type":"application/json",...Br()},body:JSON.stringify({content:t,images:r?.length?r:void 0,docContext:i||void 0,textAttachments:o?.length?o:void 0,disableThinking:a||void 0}),signal:n});if(!s.ok||!s.body){const d=await s.text().catch(()=>""),f=(()=>{try{return JSON.parse(d)}catch{return}})();throw new Et(f?.error?.code??"http_error",f?.error?.message??`Request failed with status ${s.status}.`,s.status)}const l=s.body.getReader(),c=new TextDecoder;let u="";try{for(;;){const{done:d,value:f}=await l.read();if(d)break;u+=c.decode(f,{stream:!0});const p=u.split(`
|
|
3
3
|
`);u=p.pop()??"";let g="";for(const x of p)if(x.startsWith("event: "))g=x.slice(7).trim();else if(x.startsWith("data: ")){const _=x.slice(6).trim();try{const E=JSON.parse(_);g&&(yield{event:g,data:E})}catch{}g=""}}}finally{l.releaseLock()}}async function*bi(e,t,n){const r=await fetch(`/api/v1/conversations/${encodeURIComponent(e)}/continue`,{method:"POST",headers:{"Content-Type":"application/json",...Br()},body:JSON.stringify({disableThinking:n||void 0}),signal:t});if(!r.ok||!r.body){const s=await r.text().catch(()=>""),l=(()=>{try{return JSON.parse(s)}catch{return}})();throw new Et(l?.error?.code??"http_error",l?.error?.message??`Request failed with status ${r.status}.`,r.status)}const i=r.body.getReader(),o=new TextDecoder;let a="";try{for(;;){const{done:s,value:l}=await i.read();if(s)break;a+=o.decode(l,{stream:!0});const c=a.split(`
|
|
4
4
|
`);a=c.pop()??"";let u="";for(const d of c)if(d.startsWith("event: "))u=d.slice(7).trim();else if(d.startsWith("data: ")){const f=d.slice(6).trim();try{const p=JSON.parse(f);u&&(yield{event:u,data:p})}catch{}u=""}}}finally{i.releaseLock()}}const Ur={list:e=>["conversations",e??""],detail:e=>["conversation",e]};function Ul(e){return Na({queryKey:Ur.list(e),queryFn:()=>Rl(e),staleTime:0,retry:!1})}function $l(e){return Na({queryKey:Ur.detail(e),queryFn:()=>Ol(e),enabled:!!e,retry:!1})}function Gn(){const e=Sa(),t=()=>{e.invalidateQueries({queryKey:["conversations"]})},n=r=>{e.invalidateQueries({queryKey:Ur.detail(r)})};return{create:Rt({mutationFn:r=>Il(r),onSuccess:t}),update:Rt({mutationFn:r=>Ml(r.id,r),onSuccess:(r,i)=>{t(),n(i.id)}}),remove:Rt({mutationFn:r=>Ll(r),onSuccess:t}),stop:Rt({mutationFn:r=>Dl(r)}),editMsg:Rt({mutationFn:r=>Pl(r.convId,r.msgId,r.content),onSuccess:(r,i)=>n(i.convId)}),deleteMsg:Rt({mutationFn:r=>Bl(r.convId,r.msgId),onSuccess:(r,i)=>n(i.convId)}),regenerate:Rt({mutationFn:r=>Fl(r),onSuccess:(r,i)=>n(i)})}}function jl(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Hl=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Gl=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Kl={};function yi(e,t){return(Kl.jsx?Gl:Hl).test(e)}const ql=/[ \t\n\f\r]/g;function Wl(e){return typeof e=="object"?e.type==="text"?xi(e.value):!1:xi(e)}function xi(e){return e.replace(ql,"")===""}class dn{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}}dn.prototype.normal={};dn.prototype.property={};dn.prototype.space=void 0;function Aa(e,t){const n={},r={};for(const i of e)Object.assign(n,i.property),Object.assign(r,i.normal);return new dn(n,r,t)}function vr(e){return e.toLowerCase()}class Xe{constructor(t,n){this.attribute=n,this.property=t}}Xe.prototype.attribute="";Xe.prototype.booleanish=!1;Xe.prototype.boolean=!1;Xe.prototype.commaOrSpaceSeparated=!1;Xe.prototype.commaSeparated=!1;Xe.prototype.defined=!1;Xe.prototype.mustUseProperty=!1;Xe.prototype.number=!1;Xe.prototype.overloadedBoolean=!1;Xe.prototype.property="";Xe.prototype.spaceSeparated=!1;Xe.prototype.space=void 0;let Vl=0;const ie=Lt(),Me=Lt(),Sr=Lt(),O=Lt(),ke=Lt(),Ot=Lt(),Je=Lt();function Lt(){return 2**++Vl}const Nr=Object.freeze(Object.defineProperty({__proto__:null,boolean:ie,booleanish:Me,commaOrSpaceSeparated:Je,commaSeparated:Ot,number:O,overloadedBoolean:Sr,spaceSeparated:ke},Symbol.toStringTag,{value:"Module"})),tr=Object.keys(Nr);class $r extends Xe{constructor(t,n,r,i){let o=-1;if(super(t,n),Ei(this,"space",i),typeof r=="number")for(;++o<tr.length;){const a=tr[o];Ei(this,tr[o],(r&Nr[a])===Nr[a])}}}$r.prototype.defined=!0;function Ei(e,t,n){n&&(e[t]=n)}function Vt(e){const t={},n={};for(const[r,i]of Object.entries(e.properties)){const o=new $r(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(o.mustUseProperty=!0),t[r]=o,n[vr(r)]=r,n[vr(o.attribute)]=r}return new dn(t,n,e.space)}const Ra=Vt({properties:{ariaActiveDescendant:null,ariaAtomic:Me,ariaAutoComplete:null,ariaBusy:Me,ariaChecked:Me,ariaColCount:O,ariaColIndex:O,ariaColSpan:O,ariaControls:ke,ariaCurrent:null,ariaDescribedBy:ke,ariaDetails:null,ariaDisabled:Me,ariaDropEffect:ke,ariaErrorMessage:null,ariaExpanded:Me,ariaFlowTo:ke,ariaGrabbed:Me,ariaHasPopup:null,ariaHidden:Me,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:ke,ariaLevel:O,ariaLive:null,ariaModal:Me,ariaMultiLine:Me,ariaMultiSelectable:Me,ariaOrientation:null,ariaOwns:ke,ariaPlaceholder:null,ariaPosInSet:O,ariaPressed:Me,ariaReadOnly:Me,ariaRelevant:null,ariaRequired:Me,ariaRoleDescription:ke,ariaRowCount:O,ariaRowIndex:O,ariaRowSpan:O,ariaSelected:Me,ariaSetSize:O,ariaSort:null,ariaValueMax:O,ariaValueMin:O,ariaValueNow:O,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function Ia(e,t){return t in e?e[t]:t}function Oa(e,t){return Ia(e,t.toLowerCase())}const Yl=Vt({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Ot,acceptCharset:ke,accessKey:ke,action:null,allow:null,allowFullScreen:ie,allowPaymentRequest:ie,allowUserMedia:ie,alpha:ie,alt:null,as:null,async:ie,autoCapitalize:null,autoComplete:ke,autoFocus:ie,autoPlay:ie,blocking:ke,capture:null,charSet:null,checked:ie,cite:null,className:ke,closedBy:null,colorSpace:null,cols:O,colSpan:O,command:null,commandFor:null,content:null,contentEditable:Me,controls:ie,controlsList:ke,coords:O|Ot,crossOrigin:null,data:null,dateTime:null,decoding:null,default:ie,defer:ie,dir:null,dirName:null,disabled:ie,download:Sr,draggable:Me,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:ie,formTarget:null,headers:ke,height:O,hidden:Sr,high:O,href:null,hrefLang:null,htmlFor:ke,httpEquiv:ke,id:null,imageSizes:null,imageSrcSet:null,inert:ie,inputMode:null,integrity:null,is:null,isMap:ie,itemId:null,itemProp:ke,itemRef:ke,itemScope:ie,itemType:ke,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:ie,low:O,manifest:null,max:null,maxLength:O,media:null,method:null,min:null,minLength:O,multiple:ie,muted:ie,name:null,nonce:null,noModule:ie,noValidate:ie,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:ie,optimum:O,pattern:null,ping:ke,placeholder:null,playsInline:ie,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:ie,referrerPolicy:null,rel:ke,required:ie,reversed:ie,rows:O,rowSpan:O,sandbox:ke,scope:null,scoped:ie,seamless:ie,selected:ie,shadowRootClonable:ie,shadowRootCustomElementRegistry:ie,shadowRootDelegatesFocus:ie,shadowRootMode:null,shadowRootSerializable:ie,shape:null,size:O,sizes:null,slot:null,span:O,spellCheck:Me,src:null,srcDoc:null,srcLang:null,srcSet:null,start:O,step:null,style:null,tabIndex:O,target:null,title:null,translate:null,type:null,typeMustMatch:ie,useMap:null,value:Me,width:O,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:ke,axis:null,background:null,bgColor:null,border:O,borderColor:null,bottomMargin:O,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:ie,declare:ie,event:null,face:null,frame:null,frameBorder:null,hSpace:O,leftMargin:O,link:null,longDesc:null,lowSrc:null,marginHeight:O,marginWidth:O,noResize:ie,noHref:ie,noShade:ie,noWrap:ie,object:null,profile:null,prompt:null,rev:null,rightMargin:O,rules:null,scheme:null,scrolling:Me,standby:null,summary:null,text:null,topMargin:O,valueType:null,version:null,vAlign:null,vLink:null,vSpace:O,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:ie,disablePictureInPicture:ie,disableRemotePlayback:ie,exportParts:Ot,part:ke,prefix:null,property:null,results:O,security:null,unselectable:null},space:"html",transform:Oa}),Zl=Vt({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",maskType:"mask-type",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Je,accentHeight:O,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:O,amplitude:O,arabicForm:null,ascent:O,attributeName:null,attributeType:null,azimuth:O,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:O,by:null,calcMode:null,capHeight:O,className:ke,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:O,diffuseConstant:O,direction:null,display:null,dur:null,divisor:O,dominantBaseline:null,download:ie,dx:null,dy:null,edgeMode:null,editable:null,elevation:O,enableBackground:null,end:null,event:null,exponent:O,externalResourcesRequired:null,fill:null,fillOpacity:O,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Ot,g2:Ot,glyphName:Ot,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:O,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:O,horizOriginX:O,horizOriginY:O,id:null,ideographic:O,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:O,k:O,k1:O,k2:O,k3:O,k4:O,kernelMatrix:Je,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:O,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:O,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:O,overlineThickness:O,paintOrder:null,panose1:null,path:null,pathLength:O,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:ke,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:O,pointsAtY:O,pointsAtZ:O,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Je,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Je,rev:Je,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Je,requiredFeatures:Je,requiredFonts:Je,requiredFormats:Je,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:O,specularExponent:O,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:O,strikethroughThickness:O,string:null,stroke:null,strokeDashArray:Je,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:O,strokeOpacity:O,strokeWidth:null,style:null,surfaceScale:O,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Je,tabIndex:O,tableValues:null,target:null,targetX:O,targetY:O,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Je,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:O,underlineThickness:O,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:O,values:null,vAlphabetic:O,vMathematical:O,vectorEffect:null,vHanging:O,vIdeographic:O,version:null,vertAdvY:O,vertOriginX:O,vertOriginY:O,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:O,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:Ia}),Ma=Vt({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}}),La=Vt({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:Oa}),Da=Vt({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),Xl={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},Ql=/[A-Z]/g,_i=/-[a-z]/g,Jl=/^data[-\w.:]+$/i;function ec(e,t){const n=vr(t);let r=t,i=Xe;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&Jl.test(t)){if(t.charAt(4)==="-"){const o=t.slice(5).replace(_i,nc);r="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=t.slice(4);if(!_i.test(o)){let a=o.replace(Ql,tc);a.charAt(0)!=="-"&&(a="-"+a),t="data"+a}}i=$r}return new i(r,t)}function tc(e){return"-"+e.toLowerCase()}function nc(e){return e.charAt(1).toUpperCase()}const rc=Aa([Ra,Yl,Ma,La,Da],"html"),jr=Aa([Ra,Zl,Ma,La,Da],"svg");function ic(e){return e.join(" ").trim()}var $t={},nr,wi;function ac(){if(wi)return nr;wi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,o=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,s=/^\s+|\s+$/g,l=`
|
|
5
5
|
`,c="/",u="*",d="",f="comment",p="declaration";function g(_,E){if(typeof _!="string")throw new TypeError("First argument must be a string");if(!_)return[];E=E||{};var N=1,S=1;function I(B){var R=B.match(t);R&&(N+=R.length);var te=B.lastIndexOf(l);S=~te?B.length-te:S+B.length}function D(){var B={line:N,column:S};return function(R){return R.position=new w(B),K(),R}}function w(B){this.start=B,this.end={line:N,column:S},this.source=E.source}w.prototype.content=_;function H(B){var R=new Error(E.source+":"+N+":"+S+": "+B);if(R.reason=B,R.filename=E.source,R.line=N,R.column=S,R.source=_,!E.silent)throw R}function G(B){var R=B.exec(_);if(R){var te=R[0];return I(te),_=_.slice(te.length),R}}function K(){G(n)}function v(B){var R;for(B=B||[];R=F();)R!==!1&&B.push(R);return B}function F(){var B=D();if(!(c!=_.charAt(0)||u!=_.charAt(1))){for(var R=2;d!=_.charAt(R)&&(u!=_.charAt(R)||c!=_.charAt(R+1));)++R;if(R+=2,d===_.charAt(R-1))return H("End of comment missing");var te=_.slice(2,R-2);return S+=2,I(te),_=_.slice(R),S+=2,B({type:f,comment:te})}}function z(){var B=D(),R=G(r);if(R){if(F(),!G(i))return H("property missing ':'");var te=G(o),ce=B({type:p,property:x(R[0].replace(e,d)),value:te?x(te[0].replace(e,d)):d});return G(a),ce}}function V(){var B=[];v(B);for(var R;R=z();)R!==!1&&(B.push(R),v(B));return B}return K(),V()}function x(_){return _?_.replace(s,d):d}return nr=g,nr}var ki;function oc(){if(ki)return $t;ki=1;var e=$t&&$t.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty($t,"__esModule",{value:!0}),$t.default=n;const t=e(ac());function n(r,i){let o=null;if(!r||typeof r!="string")return o;const a=(0,t.default)(r),s=typeof i=="function";return a.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:u}=l;s?i(c,u,l):u&&(o=o||{},o[c]=u)}),o}return $t}var Qt={},vi;function sc(){if(vi)return Qt;vi=1,Object.defineProperty(Qt,"__esModule",{value:!0}),Qt.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,i=/^-(ms)-/,o=function(c){return!c||n.test(c)||e.test(c)},a=function(c,u){return u.toUpperCase()},s=function(c,u){return"".concat(u,"-")},l=function(c,u){return u===void 0&&(u={}),o(c)?c:(c=c.toLowerCase(),u.reactCompat?c=c.replace(i,s):c=c.replace(r,s),c.replace(t,a))};return Qt.camelCase=l,Qt}var Jt,Si;function lc(){if(Si)return Jt;Si=1;var e=Jt&&Jt.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},t=e(oc()),n=sc();function r(i,o){var a={};return!i||typeof i!="string"||(0,t.default)(i,function(s,l){s&&l&&(a[(0,n.camelCase)(s,o)]=l)}),a}return r.default=r,Jt=r,Jt}var cc=lc();const uc=Pr(cc),Pa=Ba("end"),Hr=Ba("start");function Ba(e){return t;function t(n){const r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function dc(e){const t=Hr(e),n=Pa(e);if(t&&n)return{start:t,end:n}}function an(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Ni(e.position):"start"in e||"end"in e?Ni(e):"line"in e||"column"in e?Tr(e):""}function Tr(e){return Ti(e&&e.line)+":"+Ti(e&&e.column)}function Ni(e){return Tr(e&&e.start)+"-"+Tr(e&&e.end)}function Ti(e){return e&&typeof e=="number"?e:1}class Ge extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let i="",o={},a=!1;if(n&&("line"in n&&"column"in n?o={place:n}:"start"in n&&"end"in n?o={place:n}:"type"in n?o={ancestors:[n],place:n.position}:o={...n}),typeof t=="string"?i=t:!o.cause&&t&&(a=!0,i=t.message,o.cause=t),!o.ruleId&&!o.source&&typeof r=="string"){const l=r.indexOf(":");l===-1?o.ruleId=r:(o.source=r.slice(0,l),o.ruleId=r.slice(l+1))}if(!o.place&&o.ancestors&&o.ancestors){const l=o.ancestors[o.ancestors.length-1];l&&(o.place=l.position)}const s=o.place&&"start"in o.place?o.place.start:o.place;this.ancestors=o.ancestors||void 0,this.cause=o.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=i,this.line=s?s.line:void 0,this.name=an(o.place)||"1:1",this.place=o.place||void 0,this.reason=this.message,this.ruleId=o.ruleId||void 0,this.source=o.source||void 0,this.stack=a&&o.cause&&typeof o.cause.stack=="string"?o.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ge.prototype.file="";Ge.prototype.name="";Ge.prototype.reason="";Ge.prototype.message="";Ge.prototype.stack="";Ge.prototype.column=void 0;Ge.prototype.line=void 0;Ge.prototype.ancestors=void 0;Ge.prototype.cause=void 0;Ge.prototype.fatal=void 0;Ge.prototype.place=void 0;Ge.prototype.ruleId=void 0;Ge.prototype.source=void 0;const Gr={}.hasOwnProperty,pc=new Map,fc=/[A-Z]/g,mc=new Set(["table","tbody","thead","tfoot","tr"]),gc=new Set(["td","th"]),Fa="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function hc(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=t.filePath||void 0;let r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=vc(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=kc(n,t.jsx,t.jsxs)}const i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?jr:rc,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},o=za(i,e,void 0);return o&&typeof o!="string"?o:i.create(e,i.Fragment,{children:o||void 0},void 0)}function za(e,t,n){if(t.type==="element")return bc(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return yc(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return Ec(e,t,n);if(t.type==="mdxjsEsm")return xc(e,t);if(t.type==="root")return _c(e,t,n);if(t.type==="text")return wc(e,t)}function bc(e,t,n){const r=e.schema;let i=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(i=jr,e.schema=i),e.ancestors.push(t);const o=$a(e,t.tagName,!1),a=Sc(e,t);let s=qr(e,t);return mc.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Wl(l):!0})),Ua(e,a,o,t),Kr(a,s),e.ancestors.pop(),e.schema=r,e.create(t,o,a,n)}function yc(e,t){if(t.data&&t.data.estree&&e.evaluater){const r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}cn(e,t.position)}function xc(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);cn(e,t.position)}function Ec(e,t,n){const r=e.schema;let i=r;t.name==="svg"&&r.space==="html"&&(i=jr,e.schema=i),e.ancestors.push(t);const o=t.name===null?e.Fragment:$a(e,t.name,!0),a=Nc(e,t),s=qr(e,t);return Ua(e,a,o,t),Kr(a,s),e.ancestors.pop(),e.schema=r,e.create(t,o,a,n)}function _c(e,t,n){const r={};return Kr(r,qr(e,t)),e.create(t,e.Fragment,r,n)}function wc(e,t){return t.value}function Ua(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function Kr(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function kc(e,t,n){return r;function r(i,o,a,s){const c=Array.isArray(a.children)?n:t;return s?c(o,a,s):c(o,a)}}function vc(e,t){return n;function n(r,i,o,a){const s=Array.isArray(o.children),l=Hr(r);return t(i,o,a,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function Sc(e,t){const n={};let r,i;for(i in t.properties)if(i!=="children"&&Gr.call(t.properties,i)){const o=Tc(e,i,t.properties[i]);if(o){const[a,s]=o;e.tableCellAlignToStyle&&a==="align"&&typeof s=="string"&&gc.has(t.tagName)?r=s:n[a]=s}}if(r){const o=n.style||(n.style={});o[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Nc(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const o=r.data.estree.body[0];o.type;const a=o.expression;a.type;const s=a.properties[0];s.type,Object.assign(n,e.evaluater.evaluateExpression(s.argument))}else cn(e,t.position);else{const i=r.name;let o;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const s=r.value.data.estree.body[0];s.type,o=e.evaluater.evaluateExpression(s.expression)}else cn(e,t.position);else o=r.value===null?!0:r.value;n[i]=o}return n}function qr(e,t){const n=[];let r=-1;const i=e.passKeys?new Map:pc;for(;++r<t.children.length;){const o=t.children[r];let a;if(e.passKeys){const l=o.type==="element"?o.tagName:o.type==="mdxJsxFlowElement"||o.type==="mdxJsxTextElement"?o.name:void 0;if(l){const c=i.get(l)||0;a=l+"-"+c,i.set(l,c+1)}}const s=za(e,o,a);s!==void 0&&n.push(s)}return n}function Tc(e,t,n){const r=ec(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?jl(n):ic(n)),r.property==="style"){let i=typeof n=="object"?n:Cc(e,String(n));return e.stylePropertyNameCase==="css"&&(i=Ac(i)),["style",i]}return[e.elementAttributeNameCase==="react"&&r.space?Xl[r.property]||r.property:r.attribute,n]}}function Cc(e,t){try{return uc(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};const r=n,i=new Ge("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw i.file=e.filePath||void 0,i.url=Fa+"#cannot-parse-style-attribute",i}}function $a(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){const i=t.split(".");let o=-1,a;for(;++o<i.length;){const s=yi(i[o])?{type:"Identifier",name:i[o]}:{type:"Literal",value:i[o]};a=a?{type:"MemberExpression",object:a,property:s,computed:!!(o&&s.type==="Literal"),optional:!1}:s}r=a}else r=yi(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){const i=r.value;return Gr.call(e.components,i)?e.components[i]:i}if(e.evaluater)return e.evaluater.evaluateExpression(r);cn(e)}function cn(e,t){const n=new Ge("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=e.filePath||void 0,n.url=Fa+"#cannot-handle-mdx-estrees-without-createevaluater",n}function Ac(e){const t={};let n;for(n in e)Gr.call(e,n)&&(t[Rc(n)]=e[n]);return t}function Rc(e){let t=e.replace(fc,Ic);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function Ic(e){return"-"+e.toLowerCase()}const rr={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},Oc={};function Wr(e,t){const n=Oc,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return ja(e,r,i)}function ja(e,t,n){if(Mc(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return Ci(e.children,t,n)}return Array.isArray(e)?Ci(e,t,n):""}function Ci(e,t,n){const r=[];let i=-1;for(;++i<e.length;)r[i]=ja(e[i],t,n);return r.join("")}function Mc(e){return!!(e&&typeof e=="object")}const Ai=document.createElement("i");function Vr(e){const t="&"+e+";";Ai.innerHTML=t;const n=Ai.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function et(e,t,n,r){const i=e.length;let o=0,a;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(t,n),e.splice(...a);else for(n&&e.splice(t,n);o<r.length;)a=r.slice(o,o+1e4),a.unshift(t,0),e.splice(...a),o+=1e4,t+=1e4}function rt(e,t){return e.length>0?(et(e,e.length,0,t),e):t}const Ri={}.hasOwnProperty;function Ha(e){const t={};let n=-1;for(;++n<e.length;)Lc(t,e[n]);return t}function Lc(e,t){let n;for(n in t){const i=(Ri.call(e,n)?e[n]:void 0)||(e[n]={}),o=t[n];let a;if(o)for(a in o){Ri.call(i,a)||(i[a]=[]);const s=o[a];Dc(i[a],Array.isArray(s)?s:s?[s]:[])}}}function Dc(e,t){let n=-1;const r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);et(e,0,0,r)}function Ga(e,t){const n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function ct(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const We=Tt(/[A-Za-z]/),He=Tt(/[\dA-Za-z]/),Pc=Tt(/[#-'*+\--9=?A-Z^-~]/);function Pn(e){return e!==null&&(e<32||e===127)}const Cr=Tt(/\d/),Bc=Tt(/[\dA-Fa-f]/),Fc=Tt(/[!-/:-@[-`{-~]/);function ee(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function de(e){return e===-2||e===-1||e===32}const Kn=Tt(new RegExp("\\p{P}|\\p{S}","u")),Mt=Tt(/\s/);function Tt(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function Yt(e){const t=[];let n=-1,r=0,i=0;for(;++n<e.length;){const o=e.charCodeAt(n);let a="";if(o===37&&He(e.charCodeAt(n+1))&&He(e.charCodeAt(n+2)))i=2;else if(o<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(o))||(a=String.fromCharCode(o));else if(o>55295&&o<57344){const s=e.charCodeAt(n+1);o<56320&&s>56319&&s<57344?(a=String.fromCharCode(o,s),i=1):a="�"}else a=String.fromCharCode(o);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+i+1,a=""),i&&(n+=i,i=0)}return t.join("")+e.slice(r)}function ge(e,t,n,r){const i=r?r-1:Number.POSITIVE_INFINITY;let o=0;return a;function a(l){return de(l)?(e.enter(n),s(l)):t(l)}function s(l){return de(l)&&o++<i?(e.consume(l),s):(e.exit(n),t(l))}}const zc={tokenize:Uc};function Uc(e){const t=e.attempt(this.parser.constructs.contentInitial,r,i);let n;return t;function r(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),ge(e,t,"linePrefix")}function i(s){return e.enter("paragraph"),o(s)}function o(s){const l=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=l),n=l,a(s)}function a(s){if(s===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(s);return}return ee(s)?(e.consume(s),e.exit("chunkText"),o):(e.consume(s),a)}}const $c={tokenize:jc},Ii={tokenize:Hc};function jc(e){const t=this,n=[];let r=0,i,o,a;return s;function s(S){if(r<n.length){const I=n[r];return t.containerState=I[1],e.attempt(I[0].continuation,l,c)(S)}return c(S)}function l(S){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,i&&N();const I=t.events.length;let D=I,w;for(;D--;)if(t.events[D][0]==="exit"&&t.events[D][1].type==="chunkFlow"){w=t.events[D][1].end;break}E(r);let H=I;for(;H<t.events.length;)t.events[H][1].end={...w},H++;return et(t.events,D+1,0,t.events.slice(I)),t.events.length=H,c(S)}return s(S)}function c(S){if(r===n.length){if(!i)return f(S);if(i.currentConstruct&&i.currentConstruct.concrete)return g(S);t.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Ii,u,d)(S)}function u(S){return i&&N(),E(r),f(S)}function d(S){return t.parser.lazy[t.now().line]=r!==n.length,a=t.now().offset,g(S)}function f(S){return t.containerState={},e.attempt(Ii,p,g)(S)}function p(S){return r++,n.push([t.currentConstruct,t.containerState]),f(S)}function g(S){if(S===null){i&&N(),E(0),e.consume(S);return}return i=i||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:i,contentType:"flow",previous:o}),x(S)}function x(S){if(S===null){_(e.exit("chunkFlow"),!0),E(0),e.consume(S);return}return ee(S)?(e.consume(S),_(e.exit("chunkFlow")),r=0,t.interrupt=void 0,s):(e.consume(S),x)}function _(S,I){const D=t.sliceStream(S);if(I&&D.push(null),S.previous=o,o&&(o.next=S),o=S,i.defineSkip(S.start),i.write(D),t.parser.lazy[S.start.line]){let w=i.events.length;for(;w--;)if(i.events[w][1].start.offset<a&&(!i.events[w][1].end||i.events[w][1].end.offset>a))return;const H=t.events.length;let G=H,K,v;for(;G--;)if(t.events[G][0]==="exit"&&t.events[G][1].type==="chunkFlow"){if(K){v=t.events[G][1].end;break}K=!0}for(E(r),w=H;w<t.events.length;)t.events[w][1].end={...v},w++;et(t.events,G+1,0,t.events.slice(H)),t.events.length=w}}function E(S){let I=n.length;for(;I-- >S;){const D=n[I];t.containerState=D[1],D[0].exit.call(t,e)}n.length=S}function N(){i.write([null]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Hc(e,t,n){return ge(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function qt(e){if(e===null||ve(e)||Mt(e))return 1;if(Kn(e))return 2}function qn(e,t,n){const r=[];let i=-1;for(;++i<e.length;){const o=e[i].resolveAll;o&&!r.includes(o)&&(t=o(t,n),r.push(o))}return t}const Ar={name:"attention",resolveAll:Gc,tokenize:Kc};function Gc(e,t){let n=-1,r,i,o,a,s,l,c,u;for(;++n<e.length;)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){for(r=n;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;l=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const d={...e[r][1].end},f={...e[n][1].start};Oi(d,-l),Oi(f,l),a={type:l>1?"strongSequence":"emphasisSequence",start:d,end:{...e[r][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:f},o={type:l>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},i={type:l>1?"strong":"emphasis",start:{...a.start},end:{...s.end}},e[r][1].end={...a.start},e[n][1].start={...s.end},c=[],e[r][1].end.offset-e[r][1].start.offset&&(c=rt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])),c=rt(c,[["enter",i,t],["enter",a,t],["exit",a,t],["enter",o,t]]),c=rt(c,qn(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),c=rt(c,[["exit",o,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,c=rt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])):u=0,et(e,r-1,n-r+3,c),n=r+c.length-u-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function Kc(e,t){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=qt(r);let o;return a;function a(l){return o=l,e.enter("attentionSequence"),s(l)}function s(l){if(l===o)return e.consume(l),s;const c=e.exit("attentionSequence"),u=qt(l),d=!u||u===2&&i||n.includes(l),f=!i||i===2&&u||n.includes(r);return c._open=!!(o===42?d:d&&(i||!f)),c._close=!!(o===42?f:f&&(u||!d)),t(l)}}function Oi(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const qc={name:"autolink",tokenize:Wc};function Wc(e,t,n){let r=0;return i;function i(p){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),o}function o(p){return We(p)?(e.consume(p),a):p===64?n(p):c(p)}function a(p){return p===43||p===45||p===46||He(p)?(r=1,s(p)):c(p)}function s(p){return p===58?(e.consume(p),r=0,l):(p===43||p===45||p===46||He(p))&&r++<32?(e.consume(p),s):(r=0,c(p))}function l(p){return p===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):p===null||p===32||p===60||Pn(p)?n(p):(e.consume(p),l)}function c(p){return p===64?(e.consume(p),u):Pc(p)?(e.consume(p),c):n(p)}function u(p){return He(p)?d(p):n(p)}function d(p){return p===46?(e.consume(p),r=0,u):p===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):f(p)}function f(p){if((p===45||He(p))&&r++<63){const g=p===45?f:d;return e.consume(p),g}return n(p)}}const pn={partial:!0,tokenize:Vc};function Vc(e,t,n){return r;function r(o){return de(o)?ge(e,i,"linePrefix")(o):i(o)}function i(o){return o===null||ee(o)?t(o):n(o)}}const Ka={continuation:{tokenize:Zc},exit:Xc,name:"blockQuote",tokenize:Yc};function Yc(e,t,n){const r=this;return i;function i(a){if(a===62){const s=r.containerState;return s.open||(e.enter("blockQuote",{_container:!0}),s.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(a),e.exit("blockQuoteMarker"),o}return n(a)}function o(a){return de(a)?(e.enter("blockQuotePrefixWhitespace"),e.consume(a),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(a))}}function Zc(e,t,n){const r=this;return i;function i(a){return de(a)?ge(e,o,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a):o(a)}function o(a){return e.attempt(Ka,t,n)(a)}}function Xc(e){e.exit("blockQuote")}const qa={name:"characterEscape",tokenize:Qc};function Qc(e,t,n){return r;function r(o){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(o),e.exit("escapeMarker"),i}function i(o){return Fc(o)?(e.enter("characterEscapeValue"),e.consume(o),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(o)}}const Wa={name:"characterReference",tokenize:Jc};function Jc(e,t,n){const r=this;let i=0,o,a;return s;function s(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),l}function l(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),o=31,a=He,u(d))}function c(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),o=6,a=Bc,u):(e.enter("characterReferenceValue"),o=7,a=Cr,u(d))}function u(d){if(d===59&&i){const f=e.exit("characterReferenceValue");return a===He&&!Vr(r.sliceSerialize(f))?n(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return a(d)&&i++<o?(e.consume(d),u):n(d)}}const Mi={partial:!0,tokenize:tu},Li={concrete:!0,name:"codeFenced",tokenize:eu};function eu(e,t,n){const r=this,i={partial:!0,tokenize:D};let o=0,a=0,s;return l;function l(w){return c(w)}function c(w){const H=r.events[r.events.length-1];return o=H&&H[1].type==="linePrefix"?H[2].sliceSerialize(H[1],!0).length:0,s=w,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),u(w)}function u(w){return w===s?(a++,e.consume(w),u):a<3?n(w):(e.exit("codeFencedFenceSequence"),de(w)?ge(e,d,"whitespace")(w):d(w))}function d(w){return w===null||ee(w)?(e.exit("codeFencedFence"),r.interrupt?t(w):e.check(Mi,x,I)(w)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),f(w))}function f(w){return w===null||ee(w)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),d(w)):de(w)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),ge(e,p,"whitespace")(w)):w===96&&w===s?n(w):(e.consume(w),f)}function p(w){return w===null||ee(w)?d(w):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),g(w))}function g(w){return w===null||ee(w)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),d(w)):w===96&&w===s?n(w):(e.consume(w),g)}function x(w){return e.attempt(i,I,_)(w)}function _(w){return e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),E}function E(w){return o>0&&de(w)?ge(e,N,"linePrefix",o+1)(w):N(w)}function N(w){return w===null||ee(w)?e.check(Mi,x,I)(w):(e.enter("codeFlowValue"),S(w))}function S(w){return w===null||ee(w)?(e.exit("codeFlowValue"),N(w)):(e.consume(w),S)}function I(w){return e.exit("codeFenced"),t(w)}function D(w,H,G){let K=0;return v;function v(R){return w.enter("lineEnding"),w.consume(R),w.exit("lineEnding"),F}function F(R){return w.enter("codeFencedFence"),de(R)?ge(w,z,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):z(R)}function z(R){return R===s?(w.enter("codeFencedFenceSequence"),V(R)):G(R)}function V(R){return R===s?(K++,w.consume(R),V):K>=a?(w.exit("codeFencedFenceSequence"),de(R)?ge(w,B,"whitespace")(R):B(R)):G(R)}function B(R){return R===null||ee(R)?(w.exit("codeFencedFence"),H(R)):G(R)}}}function tu(e,t,n){const r=this;return i;function i(a){return a===null?n(a):(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}const ir={name:"codeIndented",tokenize:ru},nu={partial:!0,tokenize:iu};function ru(e,t,n){const r=this;return i;function i(c){return e.enter("codeIndented"),ge(e,o,"linePrefix",5)(c)}function o(c){const u=r.events[r.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?a(c):n(c)}function a(c){return c===null?l(c):ee(c)?e.attempt(nu,a,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ee(c)?(e.exit("codeFlowValue"),a(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function iu(e,t,n){const r=this;return i;function i(a){return r.parser.lazy[r.now().line]?n(a):ee(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),i):ge(e,o,"linePrefix",5)(a)}function o(a){const s=r.events[r.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(a):ee(a)?i(a):n(a)}}const au={name:"codeText",previous:su,resolve:ou,tokenize:lu};function ou(e){let t=e.length-4,n=3,r,i;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r<t;)if(e[r][1].type==="codeTextData"){e[n][1].type="codeTextPadding",e[t][1].type="codeTextPadding",n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)i===void 0?r!==t&&e[r][1].type!=="lineEnding"&&(i=r):(r===t||e[r][1].type==="lineEnding")&&(e[i][1].type="codeTextData",r!==i+2&&(e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2),i=void 0);return e}function su(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function lu(e,t,n){let r=0,i,o;return a;function a(d){return e.enter("codeText"),e.enter("codeTextSequence"),s(d)}function s(d){return d===96?(e.consume(d),r++,s):(e.exit("codeTextSequence"),l(d))}function l(d){return d===null?n(d):d===32?(e.enter("space"),e.consume(d),e.exit("space"),l):d===96?(o=e.enter("codeTextSequence"),i=0,u(d)):ee(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),l):(e.enter("codeTextData"),c(d))}function c(d){return d===null||d===32||d===96||ee(d)?(e.exit("codeTextData"),l(d)):(e.consume(d),c)}function u(d){return d===96?(e.consume(d),i++,u):i===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(d)):(o.type="codeTextData",c(d))}}class cu{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,n){const r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(t,r):t>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){const i=n||0;this.setCursor(Math.trunc(t));const o=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return r&&en(this.left,r),o.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),en(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),en(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){const n=this.left.splice(t,Number.POSITIVE_INFINITY);en(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);en(this.left,n.reverse())}}}function en(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function Va(e){const t={};let n=-1,r,i,o,a,s,l,c;const u=new cu(e);for(;++n<u.length;){for(;n in t;)n=t[n];if(r=u.get(n),n&&r[1].type==="chunkFlow"&&u.get(n-1)[1].type==="listItemPrefix"&&(l=r[1]._tokenizer.events,o=0,o<l.length&&l[o][1].type==="lineEndingBlank"&&(o+=2),o<l.length&&l[o][1].type==="content"))for(;++o<l.length&&l[o][1].type!=="content";)l[o][1].type==="chunkText"&&(l[o][1]._isInFirstContentOfListItem=!0,o++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,uu(u,n)),n=t[n],c=!0);else if(r[1]._container){for(o=n,i=void 0;o--;)if(a=u.get(o),a[1].type==="lineEnding"||a[1].type==="lineEndingBlank")a[0]==="enter"&&(i&&(u.get(i)[1].type="lineEndingBlank"),a[1].type="lineEnding",i=o);else if(!(a[1].type==="linePrefix"||a[1].type==="listItemIndent"))break;i&&(r[1].end={...u.get(i)[1].start},s=u.slice(i,n),s.unshift(r),u.splice(i,n-i+1,s))}}return et(e,0,Number.POSITIVE_INFINITY,u.slice(0)),!c}function uu(e,t){const n=e.get(t)[1],r=e.get(t)[2];let i=t-1;const o=[];let a=n._tokenizer;a||(a=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(a._contentTypeTextTrailing=!0));const s=a.events,l=[],c={};let u,d,f=-1,p=n,g=0,x=0;const _=[x];for(;p;){for(;e.get(++i)[1]!==p;);o.push(i),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),d&&a.defineSkip(p.start),p._isInFirstContentOfListItem&&(a._gfmTasklistFirstContentOfListItem=!0),a.write(u),p._isInFirstContentOfListItem&&(a._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++f<s.length;)s[f][0]==="exit"&&s[f-1][0]==="enter"&&s[f][1].type===s[f-1][1].type&&s[f][1].start.line!==s[f][1].end.line&&(x=f+1,_.push(x),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(a.events=[],p?(p._tokenizer=void 0,p.previous=void 0):_.pop(),f=_.length;f--;){const E=s.slice(_[f],_[f+1]),N=o.pop();l.push([N,N+E.length-1]),e.splice(N,2,E)}for(l.reverse(),f=-1;++f<l.length;)c[g+l[f][0]]=g+l[f][1],g+=l[f][1]-l[f][0]-1;return c}const du={resolve:fu,tokenize:mu},pu={partial:!0,tokenize:gu};function fu(e){return Va(e),e}function mu(e,t){let n;return r;function r(s){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),i(s)}function i(s){return s===null?o(s):ee(s)?e.check(pu,a,o)(s):(e.consume(s),i)}function o(s){return e.exit("chunkContent"),e.exit("content"),t(s)}function a(s){return e.consume(s),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,i}}function gu(e,t,n){const r=this;return i;function i(a){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),ge(e,o,"linePrefix")}function o(a){if(a===null||ee(a))return n(a);const s=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(a):e.interrupt(r.parser.constructs.flow,n,t)(a)}}function Ya(e,t,n,r,i,o,a,s,l){const c=l||Number.POSITIVE_INFINITY;let u=0;return d;function d(E){return E===60?(e.enter(r),e.enter(i),e.enter(o),e.consume(E),e.exit(o),f):E===null||E===32||E===41||Pn(E)?n(E):(e.enter(r),e.enter(a),e.enter(s),e.enter("chunkString",{contentType:"string"}),x(E))}function f(E){return E===62?(e.enter(o),e.consume(E),e.exit(o),e.exit(i),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(E))}function p(E){return E===62?(e.exit("chunkString"),e.exit(s),f(E)):E===null||E===60||ee(E)?n(E):(e.consume(E),E===92?g:p)}function g(E){return E===60||E===62||E===92?(e.consume(E),p):p(E)}function x(E){return!u&&(E===null||E===41||ve(E))?(e.exit("chunkString"),e.exit(s),e.exit(a),e.exit(r),t(E)):u<c&&E===40?(e.consume(E),u++,x):E===41?(e.consume(E),u--,x):E===null||E===32||E===40||Pn(E)?n(E):(e.consume(E),E===92?_:x)}function _(E){return E===40||E===41||E===92?(e.consume(E),x):x(E)}}function Za(e,t,n,r,i,o){const a=this;let s=0,l;return c;function c(p){return e.enter(r),e.enter(i),e.consume(p),e.exit(i),e.enter(o),u}function u(p){return s>999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in a.parser.constructs?n(p):p===93?(e.exit(o),e.enter(i),e.consume(p),e.exit(i),e.exit(r),t):ee(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||ee(p)||s++>999?(e.exit("chunkString"),u(p)):(e.consume(p),l||(l=!de(p)),p===92?f:d)}function f(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}function Xa(e,t,n,r,i,o){let a;return s;function s(f){return f===34||f===39||f===40?(e.enter(r),e.enter(i),e.consume(f),e.exit(i),a=f===40?41:f,l):n(f)}function l(f){return f===a?(e.enter(i),e.consume(f),e.exit(i),e.exit(r),t):(e.enter(o),c(f))}function c(f){return f===a?(e.exit(o),l(a)):f===null?n(f):ee(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),ge(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(f))}function u(f){return f===a||f===null||ee(f)?(e.exit("chunkString"),c(f)):(e.consume(f),f===92?d:u)}function d(f){return f===a||f===92?(e.consume(f),u):u(f)}}function on(e,t){let n;return r;function r(i){return ee(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r):de(i)?ge(e,r,n?"linePrefix":"lineSuffix")(i):t(i)}}const hu={name:"definition",tokenize:yu},bu={partial:!0,tokenize:xu};function yu(e,t,n){const r=this;let i;return o;function o(p){return e.enter("definition"),a(p)}function a(p){return Za.call(r,e,s,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return i=ct(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):n(p)}function l(p){return ve(p)?on(e,c)(p):c(p)}function c(p){return Ya(e,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function u(p){return e.attempt(bu,d,d)(p)}function d(p){return de(p)?ge(e,f,"whitespace")(p):f(p)}function f(p){return p===null||ee(p)?(e.exit("definition"),r.parser.defined.push(i),t(p)):n(p)}}function xu(e,t,n){return r;function r(s){return ve(s)?on(e,i)(s):n(s)}function i(s){return Xa(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function o(s){return de(s)?ge(e,a,"whitespace")(s):a(s)}function a(s){return s===null||ee(s)?t(s):n(s)}}const Eu={name:"hardBreakEscape",tokenize:_u};function _u(e,t,n){return r;function r(o){return e.enter("hardBreakEscape"),e.consume(o),i}function i(o){return ee(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const wu={name:"headingAtx",resolve:ku,tokenize:vu};function ku(e,t){let n=e.length-2,r=3,i,o;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},o={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},et(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]])),e}function vu(e,t,n){let r=0;return i;function i(u){return e.enter("atxHeading"),o(u)}function o(u){return e.enter("atxHeadingSequence"),a(u)}function a(u){return u===35&&r++<6?(e.consume(u),a):u===null||ve(u)?(e.exit("atxHeadingSequence"),s(u)):n(u)}function s(u){return u===35?(e.enter("atxHeadingSequence"),l(u)):u===null||ee(u)?(e.exit("atxHeading"),t(u)):de(u)?ge(e,s,"whitespace")(u):(e.enter("atxHeadingText"),c(u))}function l(u){return u===35?(e.consume(u),l):(e.exit("atxHeadingSequence"),s(u))}function c(u){return u===null||u===35||ve(u)?(e.exit("atxHeadingText"),s(u)):(e.consume(u),c)}}const Su=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Di=["pre","script","style","textarea"],Nu={concrete:!0,name:"htmlFlow",resolveTo:Au,tokenize:Ru},Tu={partial:!0,tokenize:Ou},Cu={partial:!0,tokenize:Iu};function Au(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Ru(e,t,n){const r=this;let i,o,a,s,l;return c;function c(y){return u(y)}function u(y){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(y),d}function d(y){return y===33?(e.consume(y),f):y===47?(e.consume(y),o=!0,x):y===63?(e.consume(y),i=3,r.interrupt?t:b):We(y)?(e.consume(y),a=String.fromCharCode(y),_):n(y)}function f(y){return y===45?(e.consume(y),i=2,p):y===91?(e.consume(y),i=5,s=0,g):We(y)?(e.consume(y),i=4,r.interrupt?t:b):n(y)}function p(y){return y===45?(e.consume(y),r.interrupt?t:b):n(y)}function g(y){const we="CDATA[";return y===we.charCodeAt(s++)?(e.consume(y),s===we.length?r.interrupt?t:z:g):n(y)}function x(y){return We(y)?(e.consume(y),a=String.fromCharCode(y),_):n(y)}function _(y){if(y===null||y===47||y===62||ve(y)){const we=y===47,Le=a.toLowerCase();return!we&&!o&&Di.includes(Le)?(i=1,r.interrupt?t(y):z(y)):Su.includes(a.toLowerCase())?(i=6,we?(e.consume(y),E):r.interrupt?t(y):z(y)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(y):o?N(y):S(y))}return y===45||He(y)?(e.consume(y),a+=String.fromCharCode(y),_):n(y)}function E(y){return y===62?(e.consume(y),r.interrupt?t:z):n(y)}function N(y){return de(y)?(e.consume(y),N):v(y)}function S(y){return y===47?(e.consume(y),v):y===58||y===95||We(y)?(e.consume(y),I):de(y)?(e.consume(y),S):v(y)}function I(y){return y===45||y===46||y===58||y===95||He(y)?(e.consume(y),I):D(y)}function D(y){return y===61?(e.consume(y),w):de(y)?(e.consume(y),D):S(y)}function w(y){return y===null||y===60||y===61||y===62||y===96?n(y):y===34||y===39?(e.consume(y),l=y,H):de(y)?(e.consume(y),w):G(y)}function H(y){return y===l?(e.consume(y),l=null,K):y===null||ee(y)?n(y):(e.consume(y),H)}function G(y){return y===null||y===34||y===39||y===47||y===60||y===61||y===62||y===96||ve(y)?D(y):(e.consume(y),G)}function K(y){return y===47||y===62||de(y)?S(y):n(y)}function v(y){return y===62?(e.consume(y),F):n(y)}function F(y){return y===null||ee(y)?z(y):de(y)?(e.consume(y),F):n(y)}function z(y){return y===45&&i===2?(e.consume(y),te):y===60&&i===1?(e.consume(y),ce):y===62&&i===4?(e.consume(y),pe):y===63&&i===3?(e.consume(y),b):y===93&&i===5?(e.consume(y),be):ee(y)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(Tu,ue,V)(y)):y===null||ee(y)?(e.exit("htmlFlowData"),V(y)):(e.consume(y),z)}function V(y){return e.check(Cu,B,ue)(y)}function B(y){return e.enter("lineEnding"),e.consume(y),e.exit("lineEnding"),R}function R(y){return y===null||ee(y)?V(y):(e.enter("htmlFlowData"),z(y))}function te(y){return y===45?(e.consume(y),b):z(y)}function ce(y){return y===47?(e.consume(y),a="",ne):z(y)}function ne(y){if(y===62){const we=a.toLowerCase();return Di.includes(we)?(e.consume(y),pe):z(y)}return We(y)&&a.length<8?(e.consume(y),a+=String.fromCharCode(y),ne):z(y)}function be(y){return y===93?(e.consume(y),b):z(y)}function b(y){return y===62?(e.consume(y),pe):y===45&&i===2?(e.consume(y),b):z(y)}function pe(y){return y===null||ee(y)?(e.exit("htmlFlowData"),ue(y)):(e.consume(y),pe)}function ue(y){return e.exit("htmlFlow"),t(y)}}function Iu(e,t,n){const r=this;return i;function i(a){return ee(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o):n(a)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}function Ou(e,t,n){return r;function r(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(pn,t,n)}}const Mu={name:"htmlText",tokenize:Lu};function Lu(e,t,n){const r=this;let i,o,a;return s;function s(b){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(b),l}function l(b){return b===33?(e.consume(b),c):b===47?(e.consume(b),D):b===63?(e.consume(b),S):We(b)?(e.consume(b),G):n(b)}function c(b){return b===45?(e.consume(b),u):b===91?(e.consume(b),o=0,g):We(b)?(e.consume(b),N):n(b)}function u(b){return b===45?(e.consume(b),p):n(b)}function d(b){return b===null?n(b):b===45?(e.consume(b),f):ee(b)?(a=d,ce(b)):(e.consume(b),d)}function f(b){return b===45?(e.consume(b),p):d(b)}function p(b){return b===62?te(b):b===45?f(b):d(b)}function g(b){const pe="CDATA[";return b===pe.charCodeAt(o++)?(e.consume(b),o===pe.length?x:g):n(b)}function x(b){return b===null?n(b):b===93?(e.consume(b),_):ee(b)?(a=x,ce(b)):(e.consume(b),x)}function _(b){return b===93?(e.consume(b),E):x(b)}function E(b){return b===62?te(b):b===93?(e.consume(b),E):x(b)}function N(b){return b===null||b===62?te(b):ee(b)?(a=N,ce(b)):(e.consume(b),N)}function S(b){return b===null?n(b):b===63?(e.consume(b),I):ee(b)?(a=S,ce(b)):(e.consume(b),S)}function I(b){return b===62?te(b):S(b)}function D(b){return We(b)?(e.consume(b),w):n(b)}function w(b){return b===45||He(b)?(e.consume(b),w):H(b)}function H(b){return ee(b)?(a=H,ce(b)):de(b)?(e.consume(b),H):te(b)}function G(b){return b===45||He(b)?(e.consume(b),G):b===47||b===62||ve(b)?K(b):n(b)}function K(b){return b===47?(e.consume(b),te):b===58||b===95||We(b)?(e.consume(b),v):ee(b)?(a=K,ce(b)):de(b)?(e.consume(b),K):te(b)}function v(b){return b===45||b===46||b===58||b===95||He(b)?(e.consume(b),v):F(b)}function F(b){return b===61?(e.consume(b),z):ee(b)?(a=F,ce(b)):de(b)?(e.consume(b),F):K(b)}function z(b){return b===null||b===60||b===61||b===62||b===96?n(b):b===34||b===39?(e.consume(b),i=b,V):ee(b)?(a=z,ce(b)):de(b)?(e.consume(b),z):(e.consume(b),B)}function V(b){return b===i?(e.consume(b),i=void 0,R):b===null?n(b):ee(b)?(a=V,ce(b)):(e.consume(b),V)}function B(b){return b===null||b===34||b===39||b===60||b===61||b===96?n(b):b===47||b===62||ve(b)?K(b):(e.consume(b),B)}function R(b){return b===47||b===62||ve(b)?K(b):n(b)}function te(b){return b===62?(e.consume(b),e.exit("htmlTextData"),e.exit("htmlText"),t):n(b)}function ce(b){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(b),e.exit("lineEnding"),ne}function ne(b){return de(b)?ge(e,be,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(b):be(b)}function be(b){return e.enter("htmlTextData"),a(b)}}const Yr={name:"labelEnd",resolveAll:Fu,resolveTo:zu,tokenize:Uu},Du={tokenize:$u},Pu={tokenize:ju},Bu={tokenize:Hu};function Fu(e){let t=-1;const n=[];for(;++t<e.length;){const r=e[t][1];if(n.push(e[t]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const i=r.type==="labelImage"?4:2;r.type="data",t+=i}}return e.length!==n.length&&et(e,0,e.length,n),e}function zu(e,t){let n=e.length,r=0,i,o,a,s;for(;n--;)if(i=e[n][1],o){if(i.type==="link"||i.type==="labelLink"&&i._inactive)break;e[n][0]==="enter"&&i.type==="labelLink"&&(i._inactive=!0)}else if(a){if(e[n][0]==="enter"&&(i.type==="labelImage"||i.type==="labelLink")&&!i._balanced&&(o=n,i.type!=="labelLink")){r=2;break}}else i.type==="labelEnd"&&(a=n);const l={type:e[o][1].type==="labelLink"?"link":"image",start:{...e[o][1].start},end:{...e[e.length-1][1].end}},c={type:"label",start:{...e[o][1].start},end:{...e[a][1].end}},u={type:"labelText",start:{...e[o+r+2][1].end},end:{...e[a-2][1].start}};return s=[["enter",l,t],["enter",c,t]],s=rt(s,e.slice(o+1,o+r+3)),s=rt(s,[["enter",u,t]]),s=rt(s,qn(t.parser.constructs.insideSpan.null,e.slice(o+r+4,a-3),t)),s=rt(s,[["exit",u,t],e[a-2],e[a-1],["exit",c,t]]),s=rt(s,e.slice(a+1)),s=rt(s,[["exit",l,t]]),et(e,o,e.length,s),e}function Uu(e,t,n){const r=this;let i=r.events.length,o,a;for(;i--;)if((r.events[i][1].type==="labelImage"||r.events[i][1].type==="labelLink")&&!r.events[i][1]._balanced){o=r.events[i][1];break}return s;function s(f){return o?o._inactive?d(f):(a=r.parser.defined.includes(ct(r.sliceSerialize({start:o.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(f),e.exit("labelMarker"),e.exit("labelEnd"),l):n(f)}function l(f){return f===40?e.attempt(Du,u,a?u:d)(f):f===91?e.attempt(Pu,u,a?c:d)(f):a?u(f):d(f)}function c(f){return e.attempt(Bu,u,d)(f)}function u(f){return t(f)}function d(f){return o._balanced=!0,n(f)}}function $u(e,t,n){return r;function r(d){return e.enter("resource"),e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),i}function i(d){return ve(d)?on(e,o)(d):o(d)}function o(d){return d===41?u(d):Ya(e,a,s,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(d)}function a(d){return ve(d)?on(e,l)(d):u(d)}function s(d){return n(d)}function l(d){return d===34||d===39||d===40?Xa(e,c,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(d):u(d)}function c(d){return ve(d)?on(e,u)(d):u(d)}function u(d){return d===41?(e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),e.exit("resource"),t):n(d)}}function ju(e,t,n){const r=this;return i;function i(s){return Za.call(r,e,o,a,"reference","referenceMarker","referenceString")(s)}function o(s){return r.parser.defined.includes(ct(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(s):n(s)}function a(s){return n(s)}}function Hu(e,t,n){return r;function r(o){return e.enter("reference"),e.enter("referenceMarker"),e.consume(o),e.exit("referenceMarker"),i}function i(o){return o===93?(e.enter("referenceMarker"),e.consume(o),e.exit("referenceMarker"),e.exit("reference"),t):n(o)}}const Gu={name:"labelStartImage",resolveAll:Yr.resolveAll,tokenize:Ku};function Ku(e,t,n){const r=this;return i;function i(s){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(s),e.exit("labelImageMarker"),o}function o(s){return s===91?(e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelImage"),a):n(s)}function a(s){return s===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}const qu={name:"labelStartLink",resolveAll:Yr.resolveAll,tokenize:Wu};function Wu(e,t,n){const r=this;return i;function i(a){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(a),e.exit("labelMarker"),e.exit("labelLink"),o}function o(a){return a===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(a):t(a)}}const ar={name:"lineEnding",tokenize:Vu};function Vu(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),ge(e,t,"linePrefix")}}const Ln={name:"thematicBreak",tokenize:Yu};function Yu(e,t,n){let r=0,i;return o;function o(c){return e.enter("thematicBreak"),a(c)}function a(c){return i=c,s(c)}function s(c){return c===i?(e.enter("thematicBreakSequence"),l(c)):r>=3&&(c===null||ee(c))?(e.exit("thematicBreak"),t(c)):n(c)}function l(c){return c===i?(e.consume(c),r++,l):(e.exit("thematicBreakSequence"),de(c)?ge(e,s,"whitespace")(c):s(c))}}const Ze={continuation:{tokenize:Ju},exit:td,name:"list",tokenize:Qu},Zu={partial:!0,tokenize:nd},Xu={partial:!0,tokenize:ed};function Qu(e,t,n){const r=this,i=r.events[r.events.length-1];let o=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,a=0;return s;function s(p){const g=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(g==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:Cr(p)){if(r.containerState.type||(r.containerState.type=g,e.enter(g,{_container:!0})),g==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Ln,n,c)(p):c(p);if(!r.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return n(p)}function l(p){return Cr(p)&&++a<10?(e.consume(p),l):(!r.interrupt||a<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):n(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,e.check(pn,r.interrupt?n:u,e.attempt(Zu,f,d))}function u(p){return r.containerState.initialBlankLine=!0,o++,f(p)}function d(p){return de(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),f):n(p)}function f(p){return r.containerState.size=o+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Ju(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(pn,i,o);function i(s){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,ge(e,t,"listItemIndent",r.containerState.size+1)(s)}function o(s){return r.containerState.furtherBlankLines||!de(s)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(s)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Xu,t,a)(s))}function a(s){return r.containerState._closeFlow=!0,r.interrupt=void 0,ge(e,e.attempt(Ze,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function ed(e,t,n){const r=this;return ge(e,i,"listItemIndent",r.containerState.size+1);function i(o){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?t(o):n(o)}}function td(e){e.exit(this.containerState.type)}function nd(e,t,n){const r=this;return ge(e,i,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(o){const a=r.events[r.events.length-1];return!de(o)&&a&&a[1].type==="listItemPrefixWhitespace"?t(o):n(o)}}const Pi={name:"setextUnderline",resolveTo:rd,tokenize:id};function rd(e,t){let n=e.length,r,i,o;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(i=n)}else e[n][1].type==="content"&&e.splice(n,1),!o&&e[n][1].type==="definition"&&(o=n);const a={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type="setextHeadingText",o?(e.splice(i,0,["enter",a,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end={...e[o][1].end}):e[r][1]=a,e.push(["exit",a,t]),e}function id(e,t,n){const r=this;let i;return o;function o(c){let u=r.events.length,d;for(;u--;)if(r.events[u][1].type!=="lineEnding"&&r.events[u][1].type!=="linePrefix"&&r.events[u][1].type!=="content"){d=r.events[u][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||d)?(e.enter("setextHeadingLine"),i=c,a(c)):n(c)}function a(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===i?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),de(c)?ge(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ee(c)?(e.exit("setextHeadingLine"),t(c)):n(c)}}const ad={tokenize:od};function od(e){const t=this,n=e.attempt(pn,r,e.attempt(this.parser.constructs.flowInitial,i,ge(e,e.attempt(this.parser.constructs.flow,i,e.attempt(du,i)),"linePrefix")));return n;function r(o){if(o===null){e.consume(o);return}return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function i(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const sd={resolveAll:Ja()},ld=Qa("string"),cd=Qa("text");function Qa(e){return{resolveAll:Ja(e==="text"?ud:void 0),tokenize:t};function t(n){const r=this,i=this.parser.constructs[e],o=n.attempt(i,a,s);return a;function a(u){return c(u)?o(u):s(u)}function s(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),l}function l(u){return c(u)?(n.exit("data"),o(u)):(n.consume(u),l)}function c(u){if(u===null)return!0;const d=i[u];let f=-1;if(d)for(;++f<d.length;){const p=d[f];if(!p.previous||p.previous.call(r,r.previous))return!0}return!1}}}function Ja(e){return t;function t(n,r){let i=-1,o;for(;++i<=n.length;)o===void 0?n[i]&&n[i][1].type==="data"&&(o=i,i++):(!n[i]||n[i][1].type!=="data")&&(i!==o+2&&(n[o][1].end=n[i-1][1].end,n.splice(o+2,i-o-2),i=o+2),o=void 0);return e?e(n,r):n}}function ud(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type==="lineEnding")&&e[n-1][1].type==="data"){const r=e[n-1][1],i=t.sliceStream(r);let o=i.length,a=-1,s=0,l;for(;o--;){const c=i[o];if(typeof c=="string"){for(a=c.length;c.charCodeAt(a-1)===32;)s++,a--;if(a)break;a=-1}else if(c===-2)l=!0,s++;else if(c!==-1){o++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(s=0),s){const c={type:n===e.length||l||s<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:o?a:r.start._bufferIndex+a,_index:r.start._index+o,line:r.end.line,column:r.end.column-s,offset:r.end.offset-s},end:{...r.end}};r.end={...c.start},r.start.offset===r.end.offset?Object.assign(r,c):(e.splice(n,0,["enter",c,t],["exit",c,t]),n+=2)}n++}return e}const dd={42:Ze,43:Ze,45:Ze,48:Ze,49:Ze,50:Ze,51:Ze,52:Ze,53:Ze,54:Ze,55:Ze,56:Ze,57:Ze,62:Ka},pd={91:hu},fd={[-2]:ir,[-1]:ir,32:ir},md={35:wu,42:Ln,45:[Pi,Ln],60:Nu,61:Pi,95:Ln,96:Li,126:Li},gd={38:Wa,92:qa},hd={[-5]:ar,[-4]:ar,[-3]:ar,33:Gu,38:Wa,42:Ar,60:[qc,Mu],91:qu,92:[Eu,qa],93:Yr,95:Ar,96:au},bd={null:[Ar,sd]},yd={null:[42,95]},xd={null:[]},Ed=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:yd,contentInitial:pd,disable:xd,document:dd,flow:md,flowInitial:fd,insideSpan:bd,string:gd,text:hd},Symbol.toStringTag,{value:"Module"}));function _d(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0};const i={},o=[];let a=[],s=[];const l={attempt:H(D),check:H(w),consume:N,enter:S,exit:I,interrupt:H(w,{interrupt:!0})},c={code:null,containerState:{},defineSkip:x,events:[],now:g,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d};let u=t.tokenize.call(c,l);return t.resolveAll&&o.push(t),c;function d(F){return a=rt(a,F),_(),a[a.length-1]!==null?[]:(G(t,0),c.events=qn(o,c.events,c),c.events)}function f(F,z){return kd(p(F),z)}function p(F){return wd(a,F)}function g(){const{_bufferIndex:F,_index:z,line:V,column:B,offset:R}=r;return{_bufferIndex:F,_index:z,line:V,column:B,offset:R}}function x(F){i[F.line]=F.column,v()}function _(){let F;for(;r._index<a.length;){const z=a[r._index];if(typeof z=="string")for(F=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===F&&r._bufferIndex<z.length;)E(z.charCodeAt(r._bufferIndex));else E(z)}}function E(F){u=u(F)}function N(F){ee(F)?(r.line++,r.column=1,r.offset+=F===-3?2:1,v()):F!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===a[r._index].length&&(r._bufferIndex=-1,r._index++)),c.previous=F}function S(F,z){const V=z||{};return V.type=F,V.start=g(),c.events.push(["enter",V,c]),s.push(V),V}function I(F){const z=s.pop();return z.end=g(),c.events.push(["exit",z,c]),z}function D(F,z){G(F,z.from)}function w(F,z){z.restore()}function H(F,z){return V;function V(B,R,te){let ce,ne,be,b;return Array.isArray(B)?ue(B):"tokenize"in B?ue([B]):pe(B);function pe(Ee){return Ve;function Ve(Ie){const Te=Ie!==null&&Ee[Ie],P=Ie!==null&&Ee.null,Q=[...Array.isArray(Te)?Te:Te?[Te]:[],...Array.isArray(P)?P:P?[P]:[]];return ue(Q)(Ie)}}function ue(Ee){return ce=Ee,ne=0,Ee.length===0?te:y(Ee[ne])}function y(Ee){return Ve;function Ve(Ie){return b=K(),be=Ee,Ee.partial||(c.currentConstruct=Ee),Ee.name&&c.parser.constructs.disable.null.includes(Ee.name)?Le():Ee.tokenize.call(z?Object.assign(Object.create(c),z):c,l,we,Le)(Ie)}}function we(Ee){return F(be,b),R}function Le(Ee){return b.restore(),++ne<ce.length?y(ce[ne]):te}}}function G(F,z){F.resolveAll&&!o.includes(F)&&o.push(F),F.resolve&&et(c.events,z,c.events.length-z,F.resolve(c.events.slice(z),c)),F.resolveTo&&(c.events=F.resolveTo(c.events,c))}function K(){const F=g(),z=c.previous,V=c.currentConstruct,B=c.events.length,R=Array.from(s);return{from:B,restore:te};function te(){r=F,c.previous=z,c.currentConstruct=V,c.events.length=B,s=R,v()}}function v(){r.line in i&&r.column<2&&(r.column=i[r.line],r.offset+=i[r.line]-1)}}function wd(e,t){const n=t.start._index,r=t.start._bufferIndex,i=t.end._index,o=t.end._bufferIndex;let a;if(n===i)a=[e[n].slice(r,o)];else{if(a=e.slice(n,i),r>-1){const s=a[0];typeof s=="string"?a[0]=s.slice(r):a.shift()}o>0&&a.push(e[i].slice(0,o))}return a}function kd(e,t){let n=-1;const r=[];let i;for(;++n<e.length;){const o=e[n];let a;if(typeof o=="string")a=o;else switch(o){case-5:{a="\r";break}case-4:{a=`
|
|
@@ -43,7 +43,7 @@ ${s}
|
|
|
43
43
|
${l}`;return/<head[\s>]/i.test(t)?t.replace(/(<head[^>]*>)/i,`$1
|
|
44
44
|
${c}`):`<!doctype html><html><head>${c}</head><body>${t}</body></html>`}return e==="image/svg+xml"?`<!doctype html><html><head>${n}${i}<style>html,body{height:auto;margin:0}body{display:flex;justify-content:flex-start;align-items:flex-start;background:transparent}svg{max-width:100%;height:auto}</style></head><body>${t}</body></html>`:""}function In({srcDoc:e,frameRef:t,naturalW:n,naturalH:r,scale:i,cap:o,ready:a,sandbox:s="allow-scripts"}){const l=a?Math.round(n*i):void 0,c=a?Math.round(r*i):Math.min(r,o);return m.jsx("div",{className:a?"":"w-full",style:{width:l,height:c,overflow:"hidden"},children:m.jsx("iframe",{ref:t,srcDoc:e,sandbox:s,title:"Artifact",className:Cs("block border-0",a?"":"w-full"),style:a?{width:n,height:r,transform:i!==1?`scale(${i})`:void 0,transformOrigin:"top left"}:{height:r}})})}function rn(e,t){const n=URL.createObjectURL(e),r=document.createElement("a");r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}function Ea(e,t,n=2){return new Promise(r=>{const i=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),o=URL.createObjectURL(i),a=new Image;a.onload=()=>{let s=a.naturalWidth,l=a.naturalHeight;if(!s||!l){const f=/viewBox="([^"]+)"/.exec(e),p=f?f[1].trim().split(/\s+/).map(Number):[];p.length===4?(s=p[2],l=p[3]):(s=800,l=600)}const c=document.createElement("canvas"),u=Math.max(n,2048/Math.min(s,l));c.width=Math.max(1,Math.round(s*u)),c.height=Math.max(1,Math.round(l*u));const d=c.getContext("2d");if(!d)return URL.revokeObjectURL(o),r(null);t==="image/jpeg"?d.fillStyle="#ffffff":d.fillStyle=getComputedStyle(document.documentElement).getPropertyValue("--bg").trim()||"#ffffff",d.fillRect(0,0,c.width,c.height),d.scale(u,u),d.drawImage(a,0,0,s,l),URL.revokeObjectURL(o);try{c.toBlob(f=>r(f),t,.95)}catch{r(null)}},a.onerror=()=>{URL.revokeObjectURL(o),r(null)},a.src=o})}function _a(e){return new Promise(t=>{const n=URL.createObjectURL(e),r=new Image;r.onload=()=>{const i=document.createElement("canvas");i.width=r.naturalWidth||800,i.height=r.naturalHeight||600;const o=i.getContext("2d");if(!o)return URL.revokeObjectURL(n),t(null);o.fillStyle="#ffffff",o.fillRect(0,0,i.width,i.height),o.drawImage(r,0,0),URL.revokeObjectURL(n);try{i.toBlob(a=>t(a),"image/jpeg",.95)}catch{t(null)}},r.onerror=()=>{URL.revokeObjectURL(n),t(null)},r.src=n})}function ns(e){return new Promise(t=>{const n=e?.contentWindow;if(!n)return t(null);const r=i=>{i.source===n&&(typeof i.data!="object"||i.data?.type!=="tllm-shot-result"||(window.removeEventListener("message",r),i.data.png&&typeof i.data.png=="string"&&i.data.png.startsWith("data:")?fetch(i.data.png).then(o=>o.blob()).then(t).catch(()=>t(null)):t(null)))};window.addEventListener("message",r),n.postMessage({type:"tllm-shot"},"*"),setTimeout(()=>{window.removeEventListener("message",r),t(null)},4e3)})}function ib(e){return new Promise(t=>{const n=e?.contentWindow;if(!n)return t(null);const r=i=>{i.source===n&&(typeof i.data!="object"||i.data?.type!=="tllm-frame-result"||(window.removeEventListener("message",r),i.data.png&&typeof i.data.png=="string"&&i.data.png.startsWith("data:")?fetch(i.data.png).then(o=>o.blob()).then(t).catch(()=>t(null)):t(null)))};window.addEventListener("message",r),n.postMessage({type:"tllm-frame"},"*"),setTimeout(()=>{window.removeEventListener("message",r),t(null)},3e3)})}function ab(e){return new Promise(t=>{const n=e?.contentWindow;if(!n)return t(null);const r=async i=>{if(i.source!==n||typeof i.data!="object"||i.data?.type!=="tllm-gif-result")return;window.removeEventListener("message",r);const{w:o,h:a,frames:s}=i.data;if(!s||!s.length||!o||!a)return t(null);try{const{GIFEncoder:l,quantize:c,applyPalette:u}=await Fr(async()=>{const{GIFEncoder:f,quantize:p,applyPalette:g}=await import("./gifenc.esm-sOOlYEo8.js");return{GIFEncoder:f,quantize:p,applyPalette:g}},[]),d=l();for(const f of s){const p=new Uint8Array(f),g=c(p,256),x=u(p,g);d.writeFrame(x,o,a,{palette:g,delay:70})}d.finish(),t(new Blob([new Uint8Array(d.bytes())],{type:"image/gif"}))}catch{t(null)}};window.addEventListener("message",r),n.postMessage({type:"tllm-gif"},"*"),setTimeout(()=>{window.removeEventListener("message",r),t(null)},1e4)})}function On(e){return new Promise(t=>{const n=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),r=URL.createObjectURL(n),i=new Image;i.onload=()=>{let o=i.naturalWidth,a=i.naturalHeight;if(!o||!a){const u=/viewBox="([^"]+)"/.exec(e),d=u?u[1].trim().split(/\s+/).map(Number):[];d.length===4?(o=d[2],a=d[3]):(o=800,a=600)}const s=Math.max(2,2048/Math.min(o,a)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(o*s)),l.height=Math.max(1,Math.round(a*s));const c=l.getContext("2d");if(!c)return URL.revokeObjectURL(r),t(null);c.fillStyle=getComputedStyle(document.documentElement).getPropertyValue("--bg").trim()||"#ffffff",c.fillRect(0,0,l.width,l.height),c.scale(s,s),c.drawImage(i,0,0,o,a),URL.revokeObjectURL(r),t(l.toDataURL("image/png"))},i.onerror=()=>{URL.revokeObjectURL(r),t(null)},i.src=r})}function ob(e){return new Promise(t=>{const n=URL.createObjectURL(e),r=new Image;r.onload=()=>{const i=r.naturalWidth||800,o=r.naturalHeight||600,a=Math.max(1,2048/Math.min(i,o)),s=document.createElement("canvas");s.width=Math.round(i*a),s.height=Math.round(o*a);const l=s.getContext("2d");if(!l)return URL.revokeObjectURL(n),t(null);l.fillStyle=getComputedStyle(document.documentElement).getPropertyValue("--bg").trim()||"#ffffff",l.fillRect(0,0,s.width,s.height),l.drawImage(r,0,0,s.width,s.height),URL.revokeObjectURL(n),t(s.toDataURL("image/png"))},r.onerror=()=>{URL.revokeObjectURL(n),t(null)},r.src=n})}function sb(){return getComputedStyle(document.documentElement).getPropertyValue("--bg").trim()||"#ffffff"}function rs(e){const t=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data: blob:; font-src data:;">`,n="<style>html,body{margin:0}img,svg,canvas,video{max-width:100%}</style>";return/<head[\s>]/i.test(e)?e.replace(/(<head[^>]*>)/i,`$1
|
|
45
45
|
${t}
|
|
46
|
-
${n}`):`<!doctype html><html><head>${t}${n}</head><body>${e}</body></html>`}const lb="*,*::before,*::after{animation-duration:0s!important;animation-delay:0s!important;animation-fill-mode:forwards!important;transition:none!important}";async function cb(e,t,n){const r=sb(),i=Math.max(320,Math.round(t)||800),o=Math.max(200,Math.round(n)||600),a=document.createElement("iframe");a.setAttribute("sandbox","allow-same-origin"),a.style.cssText=`position:fixed;left:-100000px;top:0;border:0;background:${r};width:${i}px;height:${o}px;`,a.srcdoc=rs(e),document.body.appendChild(a);try{await new Promise(p=>{a.onload=()=>p(null),setTimeout(()=>p(null),4e3)});const s=a.contentDocument;if(!s||!s.body)return null;try{s.fonts?.ready&&await s.fonts.ready}catch{}await new Promise(p=>setTimeout(p,250));const l=Math.max(s.documentElement.scrollWidth,s.body.scrollWidth,i),c=Math.max(s.documentElement.scrollHeight,s.body.scrollHeight,200),u=Math.max(2,2048/Math.min(l,c)),{default:d}=await Fr(async()=>{const{default:p}=await import("./html2canvas.esm-DXEQVQnt.js");return{default:p}},[]);return(await d(s.body,{width:l,height:c,windowWidth:l,windowHeight:c,scale:u,backgroundColor:r,useCORS:!0,logging:!1,scrollX:0,scrollY:0,onclone:p=>{const g=p.createElement("style");g.textContent=lb,p.head.appendChild(g)}})).toDataURL("image/png")}catch{return null}finally{a.remove()}}async function ub(e,t,n,r){if(!(/<canvas[\s>]/i.test(e)&&/<script[\s>]/i.test(e))){const a=await cb(e,n,r);if(a)return a}await new Promise(a=>setTimeout(a,200));const o=await ib(t)??await ns(t);return o?ob(o):null}async function wa(e){try{const t=await fetch("/api/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:[{type:"image_url",image_url:{url:e}},{type:"text",text:'Does this diagram or UI render correctly with no visual errors or garbled content? Reply only "ok" or briefly describe any issue.'}]}],max_tokens:30,stream:!1})});if(!t.ok)return!0;const r=((await t.json()).choices?.[0]?.message?.content??"ok").toLowerCase().trim();return r.startsWith("ok")||r.length<=2}catch{return!0}}const db=200,pb=300,fb=350;function ka(){const e=typeof window<"u"?window.innerHeight:800;return Math.max(200,Math.round(e*.6/10)*10)}const mb={png:"PNG",jpeg:"JPEG",svg:"SVG",gif:"GIF",html:"HTML"};function gb({lang:e,code:t}){const n=ts[e.toLowerCase()]??"text/html",r=_r(P=>P.theme),[i,o]=j.useState("height"),[a,s]=j.useState(db),[l,c]=j.useState(0),[u,d]=j.useState(0),[f,p]=j.useState(ka),[g,x]=j.useState({}),[_,E]=j.useState(!1),[N,S]=j.useState(!1),I=j.useRef(null),D=j.useRef(null),w=j.useRef(null),[H,G]=j.useState(null),[K,v]=j.useState(!1),[F,z]=j.useState(null),[V,B]=j.useState(t);j.useEffect(()=>{const P=setTimeout(()=>B(t),fb);return()=>clearTimeout(P)},[t]),j.useEffect(()=>{const P=()=>p(Q=>{const oe=ka();return oe===Q?Q:oe});return window.addEventListener("resize",P),()=>window.removeEventListener("resize",P)},[]),j.useEffect(()=>{const P=w.current;if(!P)return;const Q=()=>d(P.clientWidth);Q();const oe=new ResizeObserver(Q);return oe.observe(P),()=>oe.disconnect()},[]),j.useEffect(()=>{function P(Q){if(Q.source!==I.current?.contentWindow||typeof Q.data!="object"||Q.data?.type!=="tllm-size")return;const oe=Number(Q.data.w),Ae=Number(Q.data.h);if(!isNaN(Ae)&&Ae>0){const Re=Math.min(Math.ceil(Ae)+2,15e3);s(Oe=>Math.abs(Re-Oe)>4?Re:Oe)}if(!isNaN(oe)&&oe>0){const Re=Math.min(Math.ceil(oe),15e3);c(Oe=>Math.abs(Re-Oe)>4?Re:Oe)}}return window.addEventListener("message",P),()=>window.removeEventListener("message",P)},[]),j.useEffect(()=>{if(n!=="application/vnd.mermaid")return;let P=!1;return(async()=>{x({loading:!0});try{const Q=(await Fr(async()=>{const{default:Re}=await import("./mermaid.core-D0LNV0aO.js").then(Oe=>Oe.bm);return{default:Re}},__vite__mapDeps([0,1,2,3,4]))).default;if(Q.initialize({startOnLoad:!1,theme:Ts(r)?"dark":"default",suppressErrorRendering:!0,securityLevel:"strict",htmlLabels:!1,flowchart:{htmlLabels:!1}}),await Q.parse(V),P)return;const oe=`mmd${Math.random().toString(36).slice(2,8)}`,{svg:Ae}=await Q.render(oe,V);P||x({svg:Ae})}catch(Q){P||x({error:Q.message})}})(),()=>{P=!0}},[n,V,r]);const R=l>0&&u>0;j.useEffect(()=>{G(null),v(!1),z(null)},[V,r]),j.useEffect(()=>{if(n!=="application/vnd.mermaid"||!g.svg)return;let P=!1;const Q=g.svg;return On(Q).then(oe=>{P||!oe||(G(oe),wa(oe).then(Ae=>{!Ae&&!P&&On(Q).then(Re=>{Re&&!P&&G(Re)})}))}),()=>{P=!0}},[n,g.svg]),j.useEffect(()=>{if(n!=="image/svg+xml"||!R)return;let P=!1;return On(V).then(Q=>{P||!Q||(G(Q),wa(Q).then(oe=>{!oe&&!P&&On(V).then(Ae=>{Ae&&!P&&G(Ae)})}))}),()=>{P=!0}},[n,R,V]),j.useEffect(()=>{if(!_)return;const P=()=>E(!1);return document.addEventListener("mousedown",P),()=>document.removeEventListener("mousedown",P)},[_]);const te=n!=="application/vnd.mermaid"?xa(n,V):"",ce=g.svg?xa("image/svg+xml",g.svg):"",ne=(n==="text/html"||!!H)&&!K,be=ne&&n!=="text/html"&&!!F,b=be?F.w:l,pe=be?F.h:a,ue=b>0&&u>0,y=f;let we=1;if(ue)if(i==="width")we=u/b;else{const P=pe>y?y/pe:1,Q=b*P,oe=Q>u?u/Q:1;we=P*oe}const Le=ue?Math.round(b*we):0,Ee=ue&&i==="height"?`${Le}px`:"100%",Ve=n==="text/html"?["png","jpeg","gif","html"]:["png","jpeg","svg"];async function Ie(P){E(!1),S(!0);try{if(P==="svg"){const Q=n==="application/vnd.mermaid"?g.svg??"":V;Q&&rn(new Blob([Q],{type:"image/svg+xml"}),"artifact.svg")}else if(P==="html")rn(new Blob([V],{type:"text/html"}),"artifact.html");else if(P==="gif"){const Q=await ab(I.current);if(Q)rn(Q,"artifact.gif");else{const oe=await ns(I.current);oe&&rn(oe,"artifact.png")}}else{const Q=P==="jpeg"?"image/jpeg":"image/png";let oe=null;if(n==="application/vnd.mermaid")oe=g.svg?await Ea(g.svg,Q):null;else if(n==="image/svg+xml")oe=await Ea(V,Q);else if(H){const Ae=await(await fetch(H)).blob();oe=P==="jpeg"?await _a(Ae):Ae}else{const Ae=await ub(V,I.current,l,a),Re=Ae?await(await fetch(Ae)).blob():null;oe=Re?P==="jpeg"?await _a(Re):Re:null}oe?rn(oe,P==="jpeg"?"artifact.jpg":"artifact.png"):Be.error("Couldn’t export this artifact as an image — try GIF or HTML.")}}finally{S(!1)}}let Te;if(n==="application/vnd.mermaid"&&g.error)Te=m.jsx("div",{className:"flex items-center justify-center px-3 py-6 text-[12px] text-muted",style:{minHeight:100},children:"This artifact couldn't be rendered."});else if(n==="application/vnd.mermaid"&&(g.loading||!g.svg))Te=m.jsx("div",{className:"flex items-center justify-center",style:{minHeight:120},children:m.jsxs("div",{className:"flex items-center gap-2 text-faint",children:[m.jsx(ln,{size:14,className:"animate-spin"}),m.jsx("span",{className:"text-[13px]",children:"Rendering artifact…"})]})});else if(n==="text/html")Te=K?m.jsx(In,{frameRef:I,srcDoc:te,sandbox:"allow-scripts",naturalW:l,naturalH:a,scale:we,cap:y,ready:R}):m.jsxs(m.Fragment,{children:[m.jsx(In,{frameRef:D,srcDoc:rs(V),sandbox:"allow-same-origin",naturalW:l,naturalH:a,scale:we,cap:y,ready:R}),m.jsx("div",{style:{height:0,overflow:"hidden"},"aria-hidden":!0,children:m.jsx(In,{frameRef:I,srcDoc:te,naturalW:l,naturalH:a,scale:we,cap:y,ready:R})})]});else if(ne)Te=m.jsx("img",{src:H,alt:"Artifact",onLoad:P=>{const Q=P.currentTarget;Q.naturalWidth&&Q.naturalHeight&&z({w:Q.naturalWidth,h:Q.naturalHeight})},style:{width:Ee,height:"auto",display:"block"},className:"min-w-0"});else{const P=n==="application/vnd.mermaid"?ce:te;Te=m.jsx(In,{frameRef:I,srcDoc:P,naturalW:l,naturalH:a,scale:we,cap:y,ready:R})}return m.jsx("div",{ref:w,className:"my-2 flex justify-start",children:m.jsxs("div",{className:"overflow-hidden rounded-lg border border-border",style:{width:Ee,minWidth:"min(100%, "+pb+"px)"},children:[m.jsxs("div",{className:"flex items-center justify-between border-b border-border bg-panel-2 px-3 py-1",children:[m.jsx("span",{className:"text-[11px] text-faint",children:"Artifact"}),m.jsxs("div",{className:"flex items-center gap-0.5",children:[n==="text/html"&&m.jsx("button",{type:"button",onClick:()=>v(P=>!P),title:K?"Switch to static render":"Switch to interactive mode",className:"rounded px-1.5 py-0.5 text-[11px] text-faint transition-colors hover:text-ink",children:K?"Static":"Interactive"}),m.jsx("button",{type:"button",title:i==="height"?"Expand to full width":"Fit to screen height",onClick:()=>o(P=>P==="height"?"width":"height"),className:"rounded p-1 text-faint transition-colors hover:text-ink",children:i==="height"?m.jsx(gl,{size:12}):m.jsx(yl,{size:12})}),m.jsxs("div",{className:"relative",onMouseDown:P=>P.stopPropagation(),children:[m.jsxs("button",{type:"button",title:"Download",onClick:()=>E(P=>!P),className:"flex items-center rounded p-1 text-faint transition-colors hover:text-ink",children:[N?m.jsx(ln,{size:12,className:"animate-spin"}):m.jsx(Dn,{size:12}),m.jsx(Wt,{size:9,className:"ml-0.5"})]}),_&&m.jsx("div",{className:"absolute right-0 z-10 mt-1 min-w-28 overflow-hidden rounded-md border border-border bg-panel shadow-lg",children:Ve.map(P=>m.jsxs("button",{type:"button",onClick:()=>{Ie(P)},className:"block w-full px-3 py-1.5 text-left text-[12px] text-muted hover:bg-panel-2 hover:text-ink",children:[mb[P],P==="gif"&&m.jsx("span",{className:"ml-1 text-[10px] text-faint",children:"animation"}),P==="html"&&m.jsx("span",{className:"ml-1 text-[10px] text-faint",children:"source"})]},P))})]})]})]}),Te]})})}function is({reasoning:e,thinkMs:t,streaming:n,showThinking:r=!0}){const[i,o]=j.useState(!1),a=j.useRef(null);j.useEffect(()=>{i&&n&&a.current&&(a.current.scrollTop=a.current.scrollHeight)},[e,i,n]);const s=t?`Thought for ${(t/1e3).toFixed(1)}s`:n?"Thinking…":"Thinking";return r?m.jsxs("div",{className:"mb-3 rounded-lg border border-border bg-panel-2",children:[m.jsxs("button",{type:"button",onClick:()=>o(l=>!l),className:"flex w-full items-center gap-1.5 px-3 py-2 text-[12px] font-medium text-muted hover:text-ink",children:[m.jsx(Wt,{size:13,className:i?"rotate-180 transition-transform":"transition-transform"}),s,n&&!i&&m.jsx("span",{className:"tllm-pulse ml-0.5",children:"·"})]}),i&&m.jsx("pre",{ref:a,className:"max-h-48 overflow-auto px-3 pb-3 font-mono text-[12px] leading-relaxed text-muted whitespace-pre-wrap",children:e})]}):m.jsx("div",{className:"mb-3 text-[12px] font-medium text-faint px-0 py-0.5",children:s})}function hb({stats:e}){const t=[];if(e.tps&&t.push(`${e.tps.toFixed(1)} tok/s`),e.promptTps&&t.push(`${e.promptTps.toFixed(0)} tok/s prefill`),e.ttftMs!=null&&e.ttftMs>0&&t.push(`${(e.ttftMs/1e3).toFixed(2)}s TTFT`),e.promptTokens!=null&&e.genTokens!=null&&t.push(`${e.promptTokens}+${e.genTokens} tokens`),e.cachedTokens!=null&&e.cachedTokens>0){const r=e.promptTokens?Math.round(e.cachedTokens/e.promptTokens*100):0;t.push(`${e.cachedTokens} cached${r?` (${r}%)`:""}`)}if(e.totalMs&&t.push(`${(e.totalMs/1e3).toFixed(1)}s total`),!t.length)return null;const n=[e.model?`Model: ${e.model}`:"",e.promptMs?`Prefill: ${e.promptMs.toFixed(0)}ms`:"",e.genMs?`Gen: ${e.genMs.toFixed(0)}ms`:"",e.ctxUsed!=null?`Context: ${e.ctxUsed} / ${e.ctxMax}`:"",e.aborted?"Aborted":""].filter(Boolean).join(`
|
|
46
|
+
${n}`):`<!doctype html><html><head>${t}${n}</head><body>${e}</body></html>`}const lb="*,*::before,*::after{animation-duration:0s!important;animation-delay:0s!important;animation-fill-mode:forwards!important;transition:none!important}";async function cb(e,t,n){const r=sb(),i=Math.max(320,Math.round(t)||800),o=Math.max(200,Math.round(n)||600),a=document.createElement("iframe");a.setAttribute("sandbox","allow-same-origin"),a.style.cssText=`position:fixed;left:-100000px;top:0;border:0;background:${r};width:${i}px;height:${o}px;`,a.srcdoc=rs(e),document.body.appendChild(a);try{await new Promise(p=>{a.onload=()=>p(null),setTimeout(()=>p(null),4e3)});const s=a.contentDocument;if(!s||!s.body)return null;try{s.fonts?.ready&&await s.fonts.ready}catch{}await new Promise(p=>setTimeout(p,250));const l=Math.max(s.documentElement.scrollWidth,s.body.scrollWidth,i),c=Math.max(s.documentElement.scrollHeight,s.body.scrollHeight,200),u=Math.max(2,2048/Math.min(l,c)),{default:d}=await Fr(async()=>{const{default:p}=await import("./html2canvas.esm-DXEQVQnt.js");return{default:p}},[]);return(await d(s.body,{width:l,height:c,windowWidth:l,windowHeight:c,scale:u,backgroundColor:r,useCORS:!0,logging:!1,scrollX:0,scrollY:0,onclone:p=>{const g=p.createElement("style");g.textContent=lb,p.head.appendChild(g)}})).toDataURL("image/png")}catch{return null}finally{a.remove()}}async function ub(e,t,n,r){if(!(/<canvas[\s>]/i.test(e)&&/<script[\s>]/i.test(e))){const a=await cb(e,n,r);if(a)return a}await new Promise(a=>setTimeout(a,200));const o=await ib(t)??await ns(t);return o?ob(o):null}async function wa(e){try{const t=await fetch("/api/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:[{type:"image_url",image_url:{url:e}},{type:"text",text:'Does this diagram or UI render correctly with no visual errors or garbled content? Reply only "ok" or briefly describe any issue.'}]}],max_tokens:30,stream:!1})});if(!t.ok)return!0;const r=((await t.json()).choices?.[0]?.message?.content??"ok").toLowerCase().trim();return r.startsWith("ok")||r.length<=2}catch{return!0}}const db=200,pb=300,fb=350;function ka(){const e=typeof window<"u"?window.innerHeight:800;return Math.max(200,Math.round(e*.6/10)*10)}const mb={png:"PNG",jpeg:"JPEG",svg:"SVG",gif:"GIF",html:"HTML"};function gb({lang:e,code:t}){const n=ts[e.toLowerCase()]??"text/html",r=_r(P=>P.theme),[i,o]=j.useState("height"),[a,s]=j.useState(db),[l,c]=j.useState(0),[u,d]=j.useState(0),[f,p]=j.useState(ka),[g,x]=j.useState({}),[_,E]=j.useState(!1),[N,S]=j.useState(!1),I=j.useRef(null),D=j.useRef(null),w=j.useRef(null),[H,G]=j.useState(null),[K,v]=j.useState(!1),[F,z]=j.useState(null),[V,B]=j.useState(t);j.useEffect(()=>{const P=setTimeout(()=>B(t),fb);return()=>clearTimeout(P)},[t]),j.useEffect(()=>{const P=()=>p(Q=>{const oe=ka();return oe===Q?Q:oe});return window.addEventListener("resize",P),()=>window.removeEventListener("resize",P)},[]),j.useEffect(()=>{const P=w.current;if(!P)return;const Q=()=>d(P.clientWidth);Q();const oe=new ResizeObserver(Q);return oe.observe(P),()=>oe.disconnect()},[]),j.useEffect(()=>{function P(Q){if(Q.source!==I.current?.contentWindow||typeof Q.data!="object"||Q.data?.type!=="tllm-size")return;const oe=Number(Q.data.w),Ae=Number(Q.data.h);if(!isNaN(Ae)&&Ae>0){const Re=Math.min(Math.ceil(Ae)+2,15e3);s(Oe=>Math.abs(Re-Oe)>4?Re:Oe)}if(!isNaN(oe)&&oe>0){const Re=Math.min(Math.ceil(oe),15e3);c(Oe=>Math.abs(Re-Oe)>4?Re:Oe)}}return window.addEventListener("message",P),()=>window.removeEventListener("message",P)},[]),j.useEffect(()=>{if(n!=="application/vnd.mermaid")return;let P=!1;return(async()=>{x({loading:!0});try{const Q=(await Fr(async()=>{const{default:Re}=await import("./mermaid.core-Bkp248fX.js").then(Oe=>Oe.bm);return{default:Re}},__vite__mapDeps([0,1,2,3,4]))).default;if(Q.initialize({startOnLoad:!1,theme:Ts(r)?"dark":"default",suppressErrorRendering:!0,securityLevel:"strict",htmlLabels:!1,flowchart:{htmlLabels:!1}}),await Q.parse(V),P)return;const oe=`mmd${Math.random().toString(36).slice(2,8)}`,{svg:Ae}=await Q.render(oe,V);P||x({svg:Ae})}catch(Q){P||x({error:Q.message})}})(),()=>{P=!0}},[n,V,r]);const R=l>0&&u>0;j.useEffect(()=>{G(null),v(!1),z(null)},[V,r]),j.useEffect(()=>{if(n!=="application/vnd.mermaid"||!g.svg)return;let P=!1;const Q=g.svg;return On(Q).then(oe=>{P||!oe||(G(oe),wa(oe).then(Ae=>{!Ae&&!P&&On(Q).then(Re=>{Re&&!P&&G(Re)})}))}),()=>{P=!0}},[n,g.svg]),j.useEffect(()=>{if(n!=="image/svg+xml"||!R)return;let P=!1;return On(V).then(Q=>{P||!Q||(G(Q),wa(Q).then(oe=>{!oe&&!P&&On(V).then(Ae=>{Ae&&!P&&G(Ae)})}))}),()=>{P=!0}},[n,R,V]),j.useEffect(()=>{if(!_)return;const P=()=>E(!1);return document.addEventListener("mousedown",P),()=>document.removeEventListener("mousedown",P)},[_]);const te=n!=="application/vnd.mermaid"?xa(n,V):"",ce=g.svg?xa("image/svg+xml",g.svg):"",ne=(n==="text/html"||!!H)&&!K,be=ne&&n!=="text/html"&&!!F,b=be?F.w:l,pe=be?F.h:a,ue=b>0&&u>0,y=f;let we=1;if(ue)if(i==="width")we=u/b;else{const P=pe>y?y/pe:1,Q=b*P,oe=Q>u?u/Q:1;we=P*oe}const Le=ue?Math.round(b*we):0,Ee=ue&&i==="height"?`${Le}px`:"100%",Ve=n==="text/html"?["png","jpeg","gif","html"]:["png","jpeg","svg"];async function Ie(P){E(!1),S(!0);try{if(P==="svg"){const Q=n==="application/vnd.mermaid"?g.svg??"":V;Q&&rn(new Blob([Q],{type:"image/svg+xml"}),"artifact.svg")}else if(P==="html")rn(new Blob([V],{type:"text/html"}),"artifact.html");else if(P==="gif"){const Q=await ab(I.current);if(Q)rn(Q,"artifact.gif");else{const oe=await ns(I.current);oe&&rn(oe,"artifact.png")}}else{const Q=P==="jpeg"?"image/jpeg":"image/png";let oe=null;if(n==="application/vnd.mermaid")oe=g.svg?await Ea(g.svg,Q):null;else if(n==="image/svg+xml")oe=await Ea(V,Q);else if(H){const Ae=await(await fetch(H)).blob();oe=P==="jpeg"?await _a(Ae):Ae}else{const Ae=await ub(V,I.current,l,a),Re=Ae?await(await fetch(Ae)).blob():null;oe=Re?P==="jpeg"?await _a(Re):Re:null}oe?rn(oe,P==="jpeg"?"artifact.jpg":"artifact.png"):Be.error("Couldn’t export this artifact as an image — try GIF or HTML.")}}finally{S(!1)}}let Te;if(n==="application/vnd.mermaid"&&g.error)Te=m.jsx("div",{className:"flex items-center justify-center px-3 py-6 text-[12px] text-muted",style:{minHeight:100},children:"This artifact couldn't be rendered."});else if(n==="application/vnd.mermaid"&&(g.loading||!g.svg))Te=m.jsx("div",{className:"flex items-center justify-center",style:{minHeight:120},children:m.jsxs("div",{className:"flex items-center gap-2 text-faint",children:[m.jsx(ln,{size:14,className:"animate-spin"}),m.jsx("span",{className:"text-[13px]",children:"Rendering artifact…"})]})});else if(n==="text/html")Te=K?m.jsx(In,{frameRef:I,srcDoc:te,sandbox:"allow-scripts",naturalW:l,naturalH:a,scale:we,cap:y,ready:R}):m.jsxs(m.Fragment,{children:[m.jsx(In,{frameRef:D,srcDoc:rs(V),sandbox:"allow-same-origin",naturalW:l,naturalH:a,scale:we,cap:y,ready:R}),m.jsx("div",{style:{height:0,overflow:"hidden"},"aria-hidden":!0,children:m.jsx(In,{frameRef:I,srcDoc:te,naturalW:l,naturalH:a,scale:we,cap:y,ready:R})})]});else if(ne)Te=m.jsx("img",{src:H,alt:"Artifact",onLoad:P=>{const Q=P.currentTarget;Q.naturalWidth&&Q.naturalHeight&&z({w:Q.naturalWidth,h:Q.naturalHeight})},style:{width:Ee,height:"auto",display:"block"},className:"min-w-0"});else{const P=n==="application/vnd.mermaid"?ce:te;Te=m.jsx(In,{frameRef:I,srcDoc:P,naturalW:l,naturalH:a,scale:we,cap:y,ready:R})}return m.jsx("div",{ref:w,className:"my-2 flex justify-start",children:m.jsxs("div",{className:"overflow-hidden rounded-lg border border-border",style:{width:Ee,minWidth:"min(100%, "+pb+"px)"},children:[m.jsxs("div",{className:"flex items-center justify-between border-b border-border bg-panel-2 px-3 py-1",children:[m.jsx("span",{className:"text-[11px] text-faint",children:"Artifact"}),m.jsxs("div",{className:"flex items-center gap-0.5",children:[n==="text/html"&&m.jsx("button",{type:"button",onClick:()=>v(P=>!P),title:K?"Switch to static render":"Switch to interactive mode",className:"rounded px-1.5 py-0.5 text-[11px] text-faint transition-colors hover:text-ink",children:K?"Static":"Interactive"}),m.jsx("button",{type:"button",title:i==="height"?"Expand to full width":"Fit to screen height",onClick:()=>o(P=>P==="height"?"width":"height"),className:"rounded p-1 text-faint transition-colors hover:text-ink",children:i==="height"?m.jsx(gl,{size:12}):m.jsx(yl,{size:12})}),m.jsxs("div",{className:"relative",onMouseDown:P=>P.stopPropagation(),children:[m.jsxs("button",{type:"button",title:"Download",onClick:()=>E(P=>!P),className:"flex items-center rounded p-1 text-faint transition-colors hover:text-ink",children:[N?m.jsx(ln,{size:12,className:"animate-spin"}):m.jsx(Dn,{size:12}),m.jsx(Wt,{size:9,className:"ml-0.5"})]}),_&&m.jsx("div",{className:"absolute right-0 z-10 mt-1 min-w-28 overflow-hidden rounded-md border border-border bg-panel shadow-lg",children:Ve.map(P=>m.jsxs("button",{type:"button",onClick:()=>{Ie(P)},className:"block w-full px-3 py-1.5 text-left text-[12px] text-muted hover:bg-panel-2 hover:text-ink",children:[mb[P],P==="gif"&&m.jsx("span",{className:"ml-1 text-[10px] text-faint",children:"animation"}),P==="html"&&m.jsx("span",{className:"ml-1 text-[10px] text-faint",children:"source"})]},P))})]})]})]}),Te]})})}function is({reasoning:e,thinkMs:t,streaming:n,showThinking:r=!0}){const[i,o]=j.useState(!1),a=j.useRef(null);j.useEffect(()=>{i&&n&&a.current&&(a.current.scrollTop=a.current.scrollHeight)},[e,i,n]);const s=t?`Thought for ${(t/1e3).toFixed(1)}s`:n?"Thinking…":"Thinking";return r?m.jsxs("div",{className:"mb-3 rounded-lg border border-border bg-panel-2",children:[m.jsxs("button",{type:"button",onClick:()=>o(l=>!l),className:"flex w-full items-center gap-1.5 px-3 py-2 text-[12px] font-medium text-muted hover:text-ink",children:[m.jsx(Wt,{size:13,className:i?"rotate-180 transition-transform":"transition-transform"}),s,n&&!i&&m.jsx("span",{className:"tllm-pulse ml-0.5",children:"·"})]}),i&&m.jsx("pre",{ref:a,className:"max-h-48 overflow-auto px-3 pb-3 font-mono text-[12px] leading-relaxed text-muted whitespace-pre-wrap",children:e})]}):m.jsx("div",{className:"mb-3 text-[12px] font-medium text-faint px-0 py-0.5",children:s})}function hb({stats:e}){const t=[];if(e.tps&&t.push(`${e.tps.toFixed(1)} tok/s`),e.promptTps&&t.push(`${e.promptTps.toFixed(0)} tok/s prefill`),e.ttftMs!=null&&e.ttftMs>0&&t.push(`${(e.ttftMs/1e3).toFixed(2)}s TTFT`),e.promptTokens!=null&&e.genTokens!=null&&t.push(`${e.promptTokens}+${e.genTokens} tokens`),e.cachedTokens!=null&&e.cachedTokens>0){const r=e.promptTokens?Math.round(e.cachedTokens/e.promptTokens*100):0;t.push(`${e.cachedTokens} cached${r?` (${r}%)`:""}`)}if(e.totalMs&&t.push(`${(e.totalMs/1e3).toFixed(1)}s total`),!t.length)return null;const n=[e.model?`Model: ${e.model}`:"",e.promptMs?`Prefill: ${e.promptMs.toFixed(0)}ms`:"",e.genMs?`Gen: ${e.genMs.toFixed(0)}ms`:"",e.ctxUsed!=null?`Context: ${e.ctxUsed} / ${e.ctxMax}`:"",e.aborted?"Aborted":""].filter(Boolean).join(`
|
|
47
47
|
`);return m.jsxs("div",{className:"mt-2 text-[11px] text-faint",title:n,children:[t.join(" · "),e.aborted&&m.jsx("span",{className:"ml-2",style:{color:"var(--warn)"},children:"· aborted"})]})}function jn(e){return e==null||typeof e=="boolean"?"":typeof e=="string"?e:typeof e=="number"?String(e):Array.isArray(e)?e.map(jn).join(""):typeof e=="object"&&"props"in e?jn(e.props?.children):""}const Hn=j.memo(function({children:t,streaming:n}){return m.jsx(Jp,{remarkPlugins:[fg],rehypePlugins:[tb],components:{a:({children:r,href:i})=>m.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-accent underline underline-offset-2",children:r}),code:({className:r,children:i,...o})=>{if(!(!!r?.includes("language-")||typeof i=="string"&&i.includes(`
|
|
48
48
|
`)))return m.jsx("code",{className:"rounded bg-panel-2 px-1 py-0.5 font-mono text-[0.88em]",...o,children:i});const l=r?.match(/language-(\S+)/)?.[1]??"";return rb(l)?n?m.jsxs("div",{className:"my-2 flex items-center gap-2 rounded-lg border border-border bg-panel-2 px-3 py-2 text-[12px] text-muted",children:[m.jsx(ln,{size:12,className:"animate-spin"}),"Generating artifact…"]}):m.jsx(gb,{lang:l,code:jn(i).replace(/\n$/,"")}):m.jsxs("div",{className:"relative my-2 overflow-hidden rounded-lg border border-border",children:[m.jsxs("div",{className:"flex items-center justify-between border-b border-border bg-panel-2 px-3 py-1 font-mono text-[11px] text-muted",children:[m.jsx("span",{children:l}),m.jsx(wr,{text:jn(i),size:12})]}),m.jsx("div",{className:"overflow-x-auto overscroll-x-contain",onScroll:u=>u.stopPropagation(),children:m.jsx("code",{className:`${r??""} block p-3 font-mono text-[13px] leading-relaxed whitespace-pre`,...o,children:i})})]})},pre:({children:r})=>m.jsx(m.Fragment,{children:r}),table:({children:r})=>m.jsx("div",{className:"overflow-x-auto my-2",children:m.jsx("table",{className:"w-full border-collapse text-[13px]",children:r})}),th:({children:r})=>m.jsx("th",{className:"border border-border bg-panel-2 px-3 py-1.5 text-left font-semibold text-[13px]",children:r}),td:({children:r})=>m.jsx("td",{className:"border border-border px-3 py-1.5 text-[13px]",children:r})},children:t})});function bb(e){return e.startsWith("mcp__")?e.replace(/^mcp__[^_]+(?:_[^_]+)*__/,""):e.replace(/_/g," ")}function yb({call:e}){const[t,n]=j.useState(!1),r=!!e.result?.length;return m.jsxs("div",{className:"overflow-hidden rounded-lg border border-border bg-panel-2",children:[m.jsxs("button",{type:"button",onClick:()=>r&&n(i=>!i),className:"flex w-full items-center gap-2 px-3 py-1.5 text-left",style:{cursor:r?"pointer":"default"},children:[e.status==="pending"&&m.jsx(ln,{size:12,className:"shrink-0 animate-spin",style:{color:"var(--accent)"}}),e.status==="done"&&m.jsx(Zs,{size:12,className:"shrink-0",style:{color:"#4ade80"}}),e.status==="error"&&m.jsx(Xs,{size:12,className:"shrink-0",style:{color:"var(--err)"}}),m.jsx("span",{className:"font-mono text-[12px] font-medium text-ink",children:bb(e.name)}),m.jsx("span",{className:"text-[11px] text-faint",children:e.status==="pending"?"running…":e.status==="error"?"error":"done"}),r&&m.jsx(Wt,{size:11,className:`ml-auto shrink-0 text-faint transition-transform ${t?"rotate-180":""}`})]}),t&&e.result&&m.jsx("pre",{className:"max-h-48 overflow-auto border-t border-border px-3 pb-3 pt-2 font-mono text-[11px] leading-relaxed text-muted whitespace-pre-wrap",children:e.result.length>2e3?`${e.result.slice(0,2e3)}
|
|
49
49
|
…(truncated)`:e.result})]})}function as({calls:e}){return e.length?m.jsx("div",{className:"mb-3 space-y-1",children:e.map(t=>m.jsx(yb,{call:t},t.id))}):null}function xb({confidence:e}){const t=Math.round(e*100),n=e>=.8;return m.jsxs("span",{title:"Model's self-assessed confidence. A local LLM never reaches 1.0 — that's expected.",className:"inline-flex items-center rounded px-1.5 py-0.5 text-[11px] font-medium",style:{background:n?"color-mix(in srgb, var(--accent) 15%, transparent)":"color-mix(in srgb, var(--warn) 15%, transparent)",color:n?"var(--accent)":"var(--warn)",border:`1px solid ${n?"color-mix(in srgb, var(--accent) 30%, transparent)":"color-mix(in srgb, var(--warn) 30%, transparent)"}`},children:["Confidence ",t,"%"]})}function Eb({source:e,idx:t}){const[n,r]=j.useState(!1),i=e.relevanceScore>=.7?"var(--accent)":e.relevanceScore>=.5?"var(--warn)":"var(--faint)";return m.jsxs("div",{className:"rounded border border-border bg-panel-2 overflow-hidden",children:[m.jsxs("button",{type:"button",onClick:()=>r(o=>!o),className:"flex w-full items-start gap-2 px-3 py-1.5 text-left text-[12px]",children:[m.jsxs("span",{className:"shrink-0 font-mono text-faint",children:[t+1,"."]}),m.jsxs("span",{className:"min-w-0 flex-1",children:[m.jsx("span",{className:"font-medium text-ink truncate block",children:e.title||e.domain}),m.jsx("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"text-faint hover:text-accent truncate block",onClick:o=>o.stopPropagation(),children:e.domain})]}),m.jsxs("span",{className:"shrink-0 rounded px-1 py-0.5 text-[10px] font-medium",style:{background:"color-mix(in srgb, currentColor 12%, transparent)",color:i},children:[Math.round(e.relevanceScore*100),"%"]}),n?m.jsx(Wt,{size:11,className:"shrink-0 text-faint mt-0.5"}):m.jsx(zr,{size:11,className:"shrink-0 text-faint mt-0.5"})]}),n&&m.jsx("p",{className:"border-t border-border px-3 pb-2 pt-1.5 text-[11px] leading-relaxed text-muted",children:e.passage||"(no passage)"})]})}function _b({meta:e}){const[t,n]=j.useState(!1),r=e.sources??[];return r.length===0?null:m.jsxs("div",{className:"mt-2",children:[m.jsxs("button",{type:"button",onClick:()=>n(i=>!i),className:"flex items-center gap-1 text-[12px] text-muted hover:text-ink",children:[t?m.jsx(Wt,{size:12}):m.jsx(zr,{size:12}),m.jsxs("span",{children:["Sources [",r.length,"]"]})]}),t&&m.jsx("div",{className:"mt-1.5 space-y-1",children:r.map((i,o)=>m.jsx(Eb,{source:i,idx:o},i.url))})]})}function wb({content:e,verdicts:t}){if(!t.length)return m.jsx(Hn,{children:e});const n=new Map;for(const o of t)n.set(o.sentence.trim(),o);const r=[];let i=e;for(const[o,a]of n){const s=i.indexOf(o);s!==-1&&(s>0&&r.push({text:i.slice(0,s)}),r.push({text:o,verdict:a.verdict==="uncited"?void 0:a.verdict}),i=i.slice(s+o.length))}return i&&r.push({text:i}),m.jsx(m.Fragment,{children:r.map((o,a)=>m.jsxs("span",{className:"relative",children:[o.verdict==="verified"&&m.jsx("span",{title:"Claim found in cited source",className:"inline-block text-[9px] font-bold ml-0.5 mr-0.5 align-super",style:{color:"var(--ok)"},children:"✓"}),o.verdict==="unverified"&&m.jsx("span",{title:"Could not verify this claim in the cited source — check manually",className:"inline-block text-[9px] font-bold ml-0.5 mr-0.5 align-super",style:{color:"var(--warn)"},children:"?"}),m.jsx(Hn,{children:o.text})]},a))})}function kb({content:e,reasoning:t,progress:n,liveGenTps:r,genTokens:i,toolCalls:o=[]}){const a=!!n&&n.phase==="prompt";return m.jsxs("div",{className:"flex gap-3",children:[m.jsx(os,{}),m.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[t&&m.jsx(is,{reasoning:t,streaming:!0}),m.jsx(as,{calls:o}),m.jsx("div",{className:"prose-tllm text-[15px] leading-[1.7] text-ink",children:e?m.jsx(Hn,{streaming:!0,children:e}):m.jsx("span",{className:"text-muted",children:a?"Processing prompt…":t?"Generating…":o.length?"Working…":"Thinking…"})}),a&&m.jsxs("div",{className:"mt-2 space-y-1",children:[m.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] text-faint",children:[m.jsx("span",{children:"Processing prompt"}),m.jsxs("span",{className:"font-medium",style:{color:"var(--ink)"},children:[n.pct,"%"]}),n.tps>0&&m.jsxs("span",{children:["· ",n.tps.toFixed(0)," tok/s prefill"]})]}),m.jsx("div",{className:"h-[3px] w-full overflow-hidden rounded-full",style:{background:"var(--border)"},children:m.jsx("div",{className:"h-full rounded-full transition-all duration-200",style:{width:`${n.pct}%`,background:"var(--accent)"}})})]}),!a&&(e||t)&&m.jsxs("div",{className:"mt-1 flex items-center gap-1.5 text-[11px] text-faint",children:[m.jsx("span",{className:"tllm-pulse",children:"·"}),i>0&&m.jsxs("span",{className:"font-medium",style:{color:"var(--ink)"},children:[i," tok"]}),r>0?m.jsxs("span",{children:["· ",r.toFixed(1)," tok/s"]}):i===0&&m.jsx("span",{children:"…"})]})]})]})}function vb({message:e,isLast:t,onEdit:n,onDelete:r,onRegenerate:i,editingId:o,onEditSave:a,onEditCancel:s,showThinking:l=!0}){const[c,u]=j.useState(e.content),d=o===e.id;if(e.role==="user")return m.jsx("div",{className:"group flex justify-end gap-2",children:m.jsxs("div",{className:"flex flex-col items-end gap-1",children:[d?m.jsxs("div",{className:"w-full max-w-[75%]",children:[m.jsx("textarea",{autoFocus:!0,className:"w-full resize-none rounded-[var(--radius-lg)] border border-accent bg-panel px-4 py-2.5 text-[15px] leading-[1.6] text-ink outline-none",rows:3,value:c,onChange:_=>u(_.target.value),onKeyDown:_=>{(_.ctrlKey||_.metaKey)&&_.key==="Enter"&&(_.preventDefault(),a(c)),_.key==="Escape"&&s()}}),m.jsxs("div",{className:"mt-1.5 flex gap-1.5 justify-end",children:[m.jsx(je,{size:"sm",variant:"ghost",onClick:s,children:"Cancel"}),m.jsx(je,{size:"sm",onClick:()=>a(c),children:"Save & Resend"})]})]}):m.jsxs("div",{className:"flex max-w-[75%] flex-col items-end",children:[m.jsx("div",{className:"whitespace-pre-wrap rounded-[var(--radius-lg)] bg-accent px-4 py-2.5 text-[15px] leading-[1.6] text-on-accent",children:e.content}),e.attachments?.filter(_=>_.startsWith("data:image")).map((_,E)=>m.jsx("img",{src:_,className:"mt-2 max-h-48 max-w-xs rounded-lg object-contain",alt:"attached image"},E)),e.textAttachments?.length>0&&m.jsx("div",{className:"mt-1.5 flex flex-wrap gap-1 justify-end",children:e.textAttachments.map((_,E)=>m.jsxs("span",{className:"flex items-center gap-1 rounded border border-border bg-panel-2 px-2 py-0.5 text-[12px] text-muted",children:[m.jsx(fl,{size:11,className:"shrink-0"}),_]},E))})]}),!d&&m.jsxs("div",{className:"flex items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100",children:[m.jsx(wr,{text:e.content,className:"rounded p-1 hover:bg-panel-2"}),n&&m.jsx(Mn,{icon:m.jsx(Ta,{size:12}),label:"Edit",onClick:()=>{u(e.content),n(e)}}),r&&m.jsx(Mn,{icon:m.jsx(kr,{size:12}),label:"Delete",onClick:()=>r(e),destructive:!0})]})]})});const f=e.stats.aborted&&!e.content,p=(e.toolCalls??[]).map(_=>({id:_.id,name:_.name,status:_.error?"error":"done",result:_.error??_.result})),g=e.researchMeta,x=g?.refereeVerdicts??[];return m.jsxs("div",{className:"group flex gap-3",children:[m.jsx(os,{}),m.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[e.reasoning&&m.jsx(is,{reasoning:e.reasoning,thinkMs:e.stats.thinkMs,showThinking:l}),m.jsx(as,{calls:p}),f?m.jsxs("div",{className:"rounded-lg border px-4 py-3 text-[14px]",style:{borderColor:"var(--err)",color:"var(--err)",background:"color-mix(in srgb, var(--err) 8%, transparent)"},children:["Generation failed or was stopped.",t&&i&&m.jsx("button",{type:"button",className:"ml-3 underline",onClick:i,children:"Regenerate"})]}):m.jsx("div",{className:"prose-tllm text-[15px] leading-[1.7] text-ink",children:x.length>0?m.jsx(wb,{content:e.content,verdicts:x}):m.jsx(Hn,{children:e.content})}),g?.confidence!==void 0&&m.jsx("div",{className:"mt-1.5",children:m.jsx(xb,{confidence:g.confidence})}),g&&m.jsx(_b,{meta:g}),m.jsx(hb,{stats:e.stats}),m.jsxs("div",{className:"mt-1 flex items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100",children:[m.jsx(wr,{text:e.content,className:"rounded p-1 hover:bg-panel-2"}),t&&i&&m.jsx(Mn,{icon:m.jsx(Ys,{size:12}),label:"Regenerate",onClick:i}),r&&m.jsx(Mn,{icon:m.jsx(kr,{size:12}),label:"Delete",onClick:()=>r(e),destructive:!0})]})]})]})}function os(){return m.jsx("div",{className:"mt-1 grid h-5 w-5 shrink-0 place-items-center rounded bg-panel-2 text-[9px] font-bold text-muted",children:"T"})}function Mn({icon:e,label:t,onClick:n,destructive:r}){return m.jsx("button",{type:"button",title:t,onClick:n,className:"rounded p-1 transition-colors hover:bg-panel-2",style:{color:r?"var(--err)":"var(--faint)"},children:e})}function va(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Sb({ctxUsed:e,ctxMax:t}){if(t<=0)return null;const n=t>0?e/t:0,r=Math.min(1,n),i=Math.round(r*100),o=n>.9?"var(--err)":n>.75?"var(--warn)":"var(--accent)",a=n>.9?{color:"var(--err)"}:n>.75?{color:"var(--warn)"}:{},s=n>.9?"Context nearly full — older messages may be truncated":`Context: ${e.toLocaleString()} / ${t.toLocaleString()} tokens`;return m.jsxs("div",{className:"flex items-center gap-1.5 ml-auto",title:s,children:[m.jsx("div",{className:"h-[3px] w-20 overflow-hidden rounded-full shrink-0",style:{background:"var(--border)"},children:m.jsx("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${(r*100).toFixed(1)}%`,background:o}})}),m.jsx("span",{className:"text-[11px] text-faint whitespace-nowrap tabular-nums shrink-0",style:a,children:`${va(e)} / ${va(t)} · ${i}%`})]})}function Nb(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}function Tb({activeId:e,onSelect:t,onNew:n,onImport:r,collapsed:i,onToggle:o}){const[a,s]=j.useState(""),[l,c]=j.useState(""),u=j.useRef(null),d=Gn(),p=Ul(l||void 0).data?.conversations??[];j.useEffect(()=>{const x=setTimeout(()=>c(a),200);return()=>clearTimeout(x)},[a]),j.useEffect(()=>{const x=_=>{(_.ctrlKey||_.metaKey)&&_.key==="k"&&(_.preventDefault(),u.current?.focus())};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[]);const g=(x,_)=>{x.stopPropagation(),d.remove.mutate(_.id,{onSuccess:()=>{Be.success("Conversation deleted")},onError:()=>{Be.error("Could not delete conversation.")}})};return i?m.jsxs("div",{className:"flex h-full flex-col items-center gap-1 border-r border-border bg-panel-2 py-3",children:[o&&m.jsx(je,{size:"icon",variant:"ghost",onClick:o,title:"Expand sidebar",className:"h-7 w-7",children:m.jsx(zr,{size:15})}),m.jsx(je,{size:"icon",variant:"ghost",onClick:n,title:"New chat (Ctrl+N)",className:"h-7 w-7",children:m.jsx(hi,{size:15})}),r&&m.jsx(je,{size:"icon",variant:"ghost",onClick:r,title:"Import chat (.turbollm-chat.json or OpenAI JSON)",className:"h-7 w-7",children:m.jsx(Dn,{size:15})})]}):m.jsxs("div",{className:"flex h-full flex-col border-r border-border bg-panel-2",children:[m.jsxs("div",{className:"flex items-center gap-2 px-3 py-3",children:[o&&m.jsx(je,{size:"icon",variant:"ghost",onClick:o,title:"Collapse sidebar",className:"h-7 w-7 shrink-0",children:m.jsx(dl,{size:15})}),m.jsxs("div",{className:"relative flex-1",children:[m.jsx(Qs,{size:13,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-faint"}),m.jsx(As,{ref:u,value:a,onChange:x=>s(x.target.value),placeholder:"Search…",className:"h-7 pl-7 text-[12px]"})]}),m.jsx(je,{size:"icon",variant:"ghost",onClick:n,title:"New chat (Ctrl+N)",className:"h-7 w-7 shrink-0",children:m.jsx(hi,{size:15})}),r&&m.jsx(je,{size:"icon",variant:"ghost",onClick:r,title:"Import chat (.turbollm-chat.json or OpenAI JSON)",className:"h-7 w-7 shrink-0",children:m.jsx(Dn,{size:15})})]}),m.jsxs("div",{className:"flex-1 overflow-y-auto px-1 pb-2",children:[p.length===0&&m.jsx("p",{className:"px-3 py-4 text-[12px] text-faint",children:a?"No results.":"No conversations yet."}),p.map(x=>m.jsx(Cb,{conv:x,active:x.id===e,onSelect:t,onDelete:g},x.id))]})]})}function Cb({conv:e,active:t,onSelect:n,onDelete:r}){const[i,o]=j.useState(!1),[a,s]=j.useState(e.title),l=Gn(),c=()=>{o(!1);const u=a.trim();if(!u||u===e.title){s(e.title);return}l.update.mutate({id:e.id,title:u},{onError:()=>{s(e.title),Be.error("Could not rename conversation.")}})};return m.jsxs("div",{onClick:()=>!i&&n(e.id),className:"group relative flex cursor-pointer flex-col gap-0.5 rounded-md px-3 py-2 transition-colors",style:{background:t?"color-mix(in srgb, var(--accent) 10%, transparent)":"transparent"},children:[i?m.jsx("input",{autoFocus:!0,className:"w-full bg-transparent text-[13px] font-medium text-ink outline-none",value:a,onChange:u=>s(u.target.value),onBlur:c,onKeyDown:u=>{u.key==="Enter"&&c(),u.key==="Escape"&&(s(e.title),o(!1))},onClick:u=>u.stopPropagation()}):m.jsx("span",{className:"truncate text-[13px] font-medium text-ink",style:{color:t?"var(--accent)":void 0},onDoubleClick:u=>{u.stopPropagation(),o(!0)},children:e.title}),m.jsx("span",{className:"text-[11px] text-faint",children:Nb(e.updatedAt)}),!i&&m.jsxs("div",{className:"absolute right-1.5 top-1/2 flex -translate-y-1/2 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100",children:[m.jsx("button",{type:"button",onClick:u=>{u.stopPropagation(),s(e.title),o(!0)},className:"rounded p-1 text-faint transition-colors hover:text-ink",title:"Rename conversation",children:m.jsx(Ta,{size:13})}),m.jsx("button",{type:"button",onClick:u=>r(u,e),className:"rounded p-1 text-faint transition-colors hover:text-err",title:"Delete conversation",children:m.jsx(kr,{size:13})})]})]})}function Ab({models:e,loadedKey:t,loadedName:n,pending:r,ejecting:i,onLoad:o,onEject:a,onSettings:s,align:l="start"}){const c=e.filter(d=>!d.incomplete&&!d.parseError),u=i?"Ejecting…":n||(t?"Loaded model":"Load a model");return m.jsxs(zs,{children:[m.jsxs(Us,{className:"flex h-8 max-w-[260px] items-center gap-1.5 rounded-md border border-border bg-panel px-2.5 text-[13px] text-ink transition-colors hover:border-[color:var(--accent)] disabled:opacity-60",disabled:r,children:[r||i?m.jsx(ln,{size:14,className:"animate-spin text-muted"}):m.jsx(Rs,{size:14,className:t?"text-accent":"text-muted"}),m.jsx("span",{className:"truncate",children:u}),m.jsx(Wt,{size:14,className:"shrink-0 text-muted"})]}),m.jsxs($s,{align:l,className:"max-h-[60vh] w-[280px] overflow-y-auto",children:[m.jsx("div",{className:"px-2 py-1.5 text-[11px] font-medium uppercase tracking-wide text-faint",children:c.length?"Load a model":"No models found"}),c.map(d=>{const f=d.key===t;return m.jsxs("div",{role:"menuitem",tabIndex:-1,className:"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-[13px] outline-none hover:bg-panel-2 focus:bg-panel-2",onClick:p=>{if(p.altKey&&s){s(d.key);return}f||o(d.key)},children:[m.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:f&&m.jsx(tl,{size:14,className:"text-accent"})}),m.jsx("span",{className:"min-w-0 flex-1 truncate",children:d.name}),m.jsx("span",{className:"shrink-0 text-[11px] uppercase text-faint",children:d.quant})]},d.key)}),s&&m.jsx("div",{className:"px-2 py-1 text-[11px] text-faint",children:"Alt+click to configure"}),t&&m.jsxs(m.Fragment,{children:[m.jsx(js,{}),m.jsxs(Hs,{onSelect:a,style:{color:"var(--err)"},children:[m.jsx(Gs,{size:14})," Eject model"]})]})]})]})}const Rb=[{key:"temperature",label:"Temperature",min:0,max:2,step:.01,def:.8},{key:"top_p",label:"Top P",min:0,max:1,step:.01,def:.95},{key:"top_k",label:"Top K",min:0,max:200,step:1,def:40},{key:"min_p",label:"Min P",min:0,max:1,step:.01,def:.05}];function Ib({conv:e}){const t=Gn(),[n,r]=j.useState(!1),[i,o]=j.useState(""),[a,s]=j.useState({});j.useEffect(()=>{n&&e&&(o(e.systemPrompt??""),s(e.sampling??{}))},[n,e]);const l=Object.keys(a).length>0,c=e?.expertMode??!1,u=(p,g)=>s(x=>({...x,[p]:g})),d=()=>s({}),f=()=>{if(!e)return;const p=c?{id:e.id,sampling:a}:{id:e.id,systemPrompt:i,sampling:a};t.update.mutate(p,{onSuccess:()=>{Be.success("Thread settings saved"),r(!1)},onError:g=>Be.error(g instanceof Et?g.message:"Could not save settings.")})};return m.jsxs(Ks,{open:n,onOpenChange:r,children:[m.jsx(qs,{asChild:!0,children:m.jsx(je,{size:"icon",variant:"ghost",className:"h-8 w-8",title:"Thread settings — system prompt & sampling overrides",disabled:!e,children:m.jsx(Is,{size:15})})}),m.jsxs(Ws,{className:"max-w-md",children:[m.jsx("div",{className:"mb-4",children:m.jsx("span",{className:"text-[15px] font-semibold text-ink",children:"Thread settings"})}),m.jsxs("div",{className:"flex flex-col gap-5",children:[m.jsxs("div",{children:[m.jsx("label",{className:"mb-1.5 block text-[11px] font-medium uppercase tracking-wide text-faint",children:"System prompt"}),c?m.jsx("p",{className:"rounded-lg border border-border bg-panel-2 px-3 py-2 text-[13px] text-muted",children:"System prompt is managed by TurboLLM for the Expert assistant."}):m.jsx("textarea",{rows:4,value:i,onChange:p=>o(p.target.value),placeholder:"Leave blank to use the model's built-in default",className:"w-full resize-none rounded-lg border border-border bg-bg px-3 py-2 text-[14px] leading-[1.6] text-ink outline-none placeholder:text-faint focus:border-[color:var(--accent)]"})]}),m.jsxs("div",{children:[m.jsxs("div",{className:"mb-2.5 flex items-center justify-between",children:[m.jsx("span",{className:"text-[11px] font-medium uppercase tracking-wide text-faint",children:"Sampling overrides"}),l&&m.jsx("button",{type:"button",onClick:d,className:"text-[12px] text-muted underline-offset-2 hover:text-ink hover:underline",children:"Reset to model defaults"})]}),m.jsx("div",{className:"flex flex-col gap-3.5",children:Rb.map(p=>{const g=p.key in a,x=g?a[p.key]??p.def:p.def;return m.jsxs("div",{className:"flex items-center gap-3",children:[m.jsx("span",{className:"w-24 shrink-0 text-[13px]",style:{color:g?"var(--ink)":"var(--muted)"},children:p.label}),m.jsx("input",{type:"range",min:p.min,max:p.max,step:p.step,value:x,onChange:_=>u(p.key,parseFloat(_.target.value)),className:"flex-1",style:{accentColor:"var(--accent)"}}),m.jsx("span",{className:"w-10 shrink-0 text-right font-mono text-[13px] tabular-nums text-ink",children:p.step<1?x.toFixed(2):String(Math.round(x))})]},p.key)})}),!l&&m.jsx("p",{className:"mt-2.5 text-[12px] text-faint",children:"Using model defaults · move any slider to override for this thread"})]})]}),m.jsxs("div",{className:"mt-5 flex justify-end gap-2",children:[m.jsx(Vs,{asChild:!0,children:m.jsx(je,{variant:"ghost",size:"sm",children:"Cancel"})}),m.jsx(je,{size:"sm",onClick:f,disabled:t.update.isPending,children:t.update.isPending?"Saving…":"Save"})]})]})]})}function Wb(){const{data:e}=Os(),t=e?.model,n=e?.engine.state,{convId:r}=Ss(),[i]=Ns(),o=i.get("readonly")==="1",[a,s]=j.useState(r??null),[l,c]=j.useState(null),[u,d]=j.useState(""),[f,p]=j.useState(null),[g,x]=j.useState(null),[_,E]=j.useState(!1),[N,S]=j.useState(!0),[I,D]=j.useState([]),[w,H]=j.useState(!1),[G,K]=j.useState(null),v=j.useRef(null),F=j.useRef(null),[z,V]=j.useState(null),[B,R]=j.useState(null),te=A=>{if(A){const k=localStorage.getItem(`tllm.thinkingEnabled.${A}`);if(k!==null)return k!=="false"}return localStorage.getItem("tllm.thinkingEnabled.default")!=="false"},[ce,ne]=j.useState(()=>te(null)),be=A=>{a&&localStorage.setItem(`tllm.thinkingEnabled.${a}`,String(A)),ne(A)},[b,pe]=j.useState(()=>gi()),ue=j.useRef(null),y=j.useRef([]),we=j.useRef(null),Le=j.useRef(null),Ee=j.useRef(null),Ve=j.useRef(null),Ie=j.useRef(!1),Te=Sa(),P=Gn(),Q=Ms(),oe=Ls(),Re=$l(a).data,Oe=Re?.messages??[],fe=_r(A=>A.pendingConversationId),at=_r(A=>A.setPendingConversationId);j.useEffect(()=>{fe&&(he(fe),at(null))},[fe]);const ot=(Q.data?.models??[]).filter(A=>A.compatibleWithActiveEngine),wt=oe.load.isPending||oe.eject.isPending||n==="starting"||n==="stopping",Ct=A=>{oe.load.mutate({key:A},{onError:h=>Be.error(h instanceof Et?h.message:"Could not load model.")})},Zt=()=>{l&&(ue.current?.abort(),c(null)),oe.eject.mutate(void 0,{onError:A=>Be.error(A instanceof Et?A.message:"Could not eject model.")})},Pt=()=>{const A=Le.current;A&&(A.style.height="auto",A.style.height=`${Math.min(A.scrollHeight,160)}px`)},ut=j.useCallback((A=!1)=>{const h=we.current;h&&(A||!Ie.current)&&(h.scrollTo({top:h.scrollHeight,behavior:"smooth"}),E(!1))},[]);j.useEffect(()=>{const A=we.current;if(!A)return;const h=()=>{const k=A.scrollHeight-A.scrollTop-A.clientHeight<80;Ie.current=!k,E(!k&&!!l)};return A.addEventListener("scroll",h),()=>A.removeEventListener("scroll",h)},[l]),j.useEffect(()=>{l&&ut()},[l,ut]),j.useEffect(()=>{const A=h=>{(h.ctrlKey||h.metaKey)&&h.key==="n"&&(h.preventDefault(),se()),h.key==="Escape"&&l&&Ue()};return window.addEventListener("keydown",A),()=>window.removeEventListener("keydown",A)}),j.useEffect(()=>{ne(te(a))},[a]),j.useEffect(()=>{if(!w)return;const A=h=>{v.current&&!v.current.contains(h.target)&&H(!1)};return document.addEventListener("mousedown",A),()=>document.removeEventListener("mousedown",A)},[w]);const tt=async(A,h,k)=>{H(!1);try{await navigator.clipboard.writeText(A),Be.success(h)}catch{K({text:A,title:k})}},Bt=async()=>{if(a)try{const{url:A}=await Ds(a);await tt(A,"Link copied","Share link")}catch{Be.error("Could not get share URL.")}},T=async()=>{if(a)try{const A=await Ps(a);await tt(A,"Debug info copied","Debug snapshot")}catch{Be.error("Could not get debug info.")}},L=()=>{a&&(H(!1),Bs(a))},re=async A=>{const h=A.target.files?.[0];if(A.target.value="",!h)return;V(null),R(null);let k;try{const C=await h.text();k=JSON.parse(C)}catch{V("Invalid file — could not parse JSON.");return}if(!Array.isArray(k)){const C=k?.model;C&&((Q.data?.models??[]).some(Z=>Z.key===C)||R(C))}try{const{id:C}=await Fs(k);Te.invalidateQueries({queryKey:["conversations"]}),he(C)}catch(C){const U=C instanceof Et?C.message:"Import failed. Check the file is a valid .turbollm-chat.json or OpenAI-format JSON.";V(U)}},se=()=>{s(null),d(""),c(null),pe(gi()),Le.current?.focus()},he=A=>{l&&(ue.current?.abort(),c(null)),s(A),p(null),pe(nl(A)),Ie.current=!1,setTimeout(()=>ut(!0),50)},Ue=async()=>{ue.current?.abort(),a&&await P.stop.mutateAsync(a).catch(()=>{})},st=async A=>{const h=Array.from(A.target.files??[]),k=await Promise.all(h.map(async C=>{const U=await new Promise(ye=>{const Z=new FileReader;Z.onload=()=>ye(Z.result),C.type.startsWith("image/")?Z.readAsDataURL(C):Z.readAsText(C)});return{file:C,dataUrl:U}}));D(C=>[...C,...k]),A.target.value=""},Ye=()=>{const A=Date.now();return y.current.push(A),y.current=y.current.filter(h=>h>A-2e3),Math.round(y.current.length/2*10)/10},nt=async(A,h)=>{try{for await(const k of h)if(k.event==="meta")y.current=[],c({assistantId:k.data.assistantMessageId,content:"",reasoning:"",progress:null,liveGenTps:0,genTokens:0,toolCalls:[]}),Te.invalidateQueries({queryKey:["conversation",A]});else if(k.event==="progress")c(C=>C&&{...C,progress:{phase:k.data.phase,pct:k.data.pct,tps:k.data.tps}});else if(k.event==="reasoning"){const C=Ye();c(U=>U&&{...U,reasoning:U.reasoning+k.data.delta,progress:null,liveGenTps:C,genTokens:U.genTokens+1})}else if(k.event==="delta"){const C=Ye();c(U=>U&&{...U,content:U.content+k.data.delta,progress:null,liveGenTps:C,genTokens:U.genTokens+1})}else if(k.event==="tool_call"){const C=k.data;c(U=>{if(!U)return U;const ye=U.toolCalls.findIndex(Z=>Z.id===C.id);if(ye>=0){const Z=[...U.toolCalls];return Z[ye]={...Z[ye],status:C.status,result:C.result},{...U,toolCalls:Z}}return{...U,toolCalls:[...U.toolCalls,{id:C.id,name:C.name,args:C.args,status:C.status,result:C.result}]}})}else k.event==="done"?(c(null),Te.invalidateQueries({queryKey:["conversation",A]}),Te.invalidateQueries({queryKey:["conversations"]}),setTimeout(()=>ut(!0),80)):k.event==="error"&&(c(null),Te.invalidateQueries({queryKey:["conversation",A]}),Be.error(k.data.message));c(null),Te.invalidateQueries({queryKey:["conversation",A]})}catch(k){c(null),k?.name!=="AbortError"&&Be.error(k instanceof Et?k.message:"Request failed."),Te.invalidateQueries({queryKey:["conversation",A]})}},dt=async A=>{const h=u.trim();if(!h&&I.length===0||l)return;if(n!=="running"||!t){Be.error("Load a model first.");return}const k=I.filter(Z=>Z.dataUrl.startsWith("data:image/")),C=I.filter(Z=>!Z.dataUrl.startsWith("data:image/")),U=k.map(Z=>Z.dataUrl),ye=C.map(Z=>`[Attached: ${Z.file.name}]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as e}from"./radix-4XwKfE88.js";import{r as g}from"./vendor-CKtmMAvG.js";import{S as w}from"./common-
|
|
1
|
+
import{j as e}from"./radix-4XwKfE88.js";import{r as g}from"./vendor-CKtmMAvG.js";import{S as w}from"./common-DzMdqlCp.js";import{u as P,B as y,a as A,L as K,t as d,A as N}from"./index-DH6LUjzQ.js";import{C as U}from"./check-C66UWSMM.js";import{P as T}from"./pencil-Cfn97uuD.js";import{T as z}from"./trash-2-CqQWzJ1Q.js";import{P as M}from"./plus-BSLbFnG4.js";function Y(){const{query:r}=P(),a=r.data;return e.jsxs("div",{className:"w-full px-6 py-6",children:[e.jsx(w,{title:"Customize",description:"Add tools and external providers the model can call during conversations."}),e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx(L,{search:a?.search??{provider:"tavily",tavilyKeySet:!1,kagiKeySet:!1,searxngUrl:""},onSaved:()=>{r.refetch()}}),e.jsx($,{servers:a?.mcp?.servers??[]})]})]})}const C=[{id:"tavily",label:"Tavily",blurb:"AI-search API tuned for LLMs. Reliable default.",getKey:"https://app.tavily.com"},{id:"kagi",label:"Kagi",blurb:"Premium search, no bot-blocking, no tracking ($0.012/query).",getKey:"https://kagi.com/settings?p=api"},{id:"searxng",label:"SearXNG",blurb:"Your own self-hosted meta-search. Fully local — no key, just a URL."}];function L({search:r,onSaved:a}){const{save:l}=P(),[n,x]=g.useState(r.provider),[p,u]=g.useState(""),c=C.find(s=>s.id===n),o=n==="searxng",v=n==="tavily"?r.tavilyKeySet:n==="kagi"?r.kagiKeySet:!!r.searxngUrl,k=s=>{x(s),u(s==="searxng"?r.searxngUrl:"")},f=()=>{const s=p.trim(),b={provider:n};o?b.searxngUrl=s:s&&n==="tavily"?b.tavilyApiKey=s:s&&n==="kagi"&&(b.kagiApiKey=s),l.mutate({search:b},{onSuccess:()=>{d.success(`Search set to ${c.label}${s?` — ${o?"URL":"key"} saved`:""}`),o||u(""),a()},onError:j=>d.error(j instanceof N?j.message:"Could not save search settings.")})};return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsx("h2",{className:"mb-1 text-[13px] font-semibold uppercase tracking-wide text-faint",children:"Web Search"}),e.jsxs("p",{className:"mb-3 text-[12px] text-muted",children:["Choose a search provider. When one is configured, the model can call the"," ",e.jsx("span",{className:"font-mono text-ink",children:"web_search"})," tool automatically."]}),e.jsx("div",{className:"mb-3 inline-flex rounded-md border border-border p-0.5",children:C.map(s=>e.jsx("button",{onClick:()=>k(s.id),className:`rounded px-3 py-1 text-[13px] transition-colors ${n===s.id?"bg-bg text-ink":"text-muted hover:text-ink"}`,children:s.label},s.id))}),e.jsxs("p",{className:"mb-2 text-[12px] text-muted",children:[c.blurb," ",c.getKey&&e.jsx("a",{href:c.getKey,target:"_blank",rel:"noopener noreferrer",className:"text-ink underline-offset-2 hover:underline",children:"Get a key"})]}),e.jsx("div",{className:"mb-2 text-[13px] text-muted",children:v?e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-ink",children:[e.jsx(U,{size:13,style:{color:"var(--ok)"}})," ",o?"A URL is configured":"A key is configured"]}):o?"No URL configured":"No key configured"}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsx("input",{type:o?"text":"password",value:p,onChange:s=>u(s.target.value),placeholder:o?"http://localhost:8888":v?"Enter a new key to replace the current one":n==="tavily"?"tvly-…":"Kagi API key",autoComplete:"off",className:"flex-1 rounded-md border border-border bg-bg px-2 py-1.5 font-mono text-[13px] text-ink outline-none"}),e.jsx(y,{size:"sm",onClick:f,disabled:l.isPending,children:"Save"})]}),e.jsxs("p",{className:"mt-3 text-[12px] text-faint",children:[e.jsx("span",{className:"font-mono text-ink",children:"fetch_url"})," and"," ",e.jsx("span",{className:"font-mono text-ink",children:"run_code"})," (sandboxed JS) are always available — no key needed."]})]})}const E=()=>({name:"",transport:"stdio",command:"",argsStr:"",envStr:"",url:"",enabled:!0});function R(r){return{name:r.name,transport:r.transport,command:r.command??"",argsStr:(r.args??[]).join(", "),envStr:Object.entries(r.env??{}).map(([a,l])=>`${a}=${l}`).join(`
|
|
2
2
|
`),url:r.url??"",enabled:r.enabled}}function F(r){const a=r.argsStr.trim()?r.argsStr.split(",").map(n=>n.trim()).filter(Boolean):[],l={};for(const n of r.envStr.split(`
|
|
3
3
|
`)){const x=n.indexOf("=");x>0&&(l[n.slice(0,x).trim()]=n.slice(x+1).trim())}return{name:r.name.trim(),transport:r.transport,command:r.transport==="stdio"&&r.command.trim()||void 0,args:r.transport==="stdio"&&a.length?a:void 0,env:r.transport==="stdio"&&Object.keys(l).length?l:void 0,url:r.transport==="sse"&&r.url.trim()||void 0,enabled:r.enabled}}function $({servers:r}){const a=A(),[l,n]=g.useState(null),[x,p]=g.useState(!1),[u,c]=g.useState(E()),o=t=>c(i=>({...i,...t})),v=()=>{n(null),c(E()),p(!0)},k=t=>{n(t.id),c(R(t)),p(!0)},f=()=>{p(!1),n(null)},s=()=>{const t=F(u);if(!t.name)return void d.error("Server name is required.");if(t.transport==="stdio"&&!t.command)return void d.error("Command is required for stdio transport.");if(t.transport==="sse"&&!t.url)return void d.error("URL is required for SSE transport.");const i={onSuccess:()=>{d.success(l?"MCP server updated":"MCP server added"),f()},onError:h=>d.error(h instanceof N?h.message:"Could not save server.")};l?a.update.mutate({id:l,patch:t},i):a.add.mutate(t,i)},b=(t,i)=>{window.confirm(`Remove MCP server "${i}"?`)&&a.remove.mutate(t,{onError:h=>d.error(h instanceof N?h.message:"Could not remove server.")})},j=t=>{a.update.mutate({id:t.id,patch:{enabled:!t.enabled}},{onError:i=>d.error(i instanceof N?i.message:"Could not update server.")})},m=u,S=a.add.isPending||a.update.isPending;return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsx("h2",{className:"mb-1 text-[13px] font-semibold uppercase tracking-wide text-faint",children:"MCP Servers"}),e.jsx("p",{className:"mb-3 text-[12px] text-muted",children:"Connect external tool providers via the Model Context Protocol. Supports stdio (subprocess) and SSE (HTTP) transports per the MCP 2024-11-05 spec."}),r.length>0&&e.jsx("div",{className:"mb-3 flex flex-col gap-1.5",children:r.map(t=>e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-panel-2 px-3 py-2",children:[e.jsx("span",{className:"shrink-0 rounded px-1.5 py-0.5 font-mono text-[10px] font-medium",style:{background:t.transport==="sse"?"color-mix(in srgb, var(--accent) 15%, transparent)":"color-mix(in srgb, var(--muted) 20%, transparent)",color:t.transport==="sse"?"var(--accent)":"var(--muted)"},children:t.transport}),e.jsx("span",{className:"flex-1 truncate text-[13px] font-medium text-ink",children:t.name}),e.jsx("span",{className:"hidden shrink-0 max-w-[220px] truncate font-mono text-[11px] text-faint sm:block",title:t.transport==="stdio"?t.command:t.url,children:t.transport==="stdio"?t.command?.split(/[\\/]/).slice(-1)[0]:t.url}),e.jsx("input",{type:"checkbox",checked:t.enabled,onChange:()=>j(t),title:t.enabled?"Disable":"Enable",className:"h-3.5 w-3.5 accent-[var(--accent)]"}),e.jsx("button",{type:"button",onClick:()=>k(t),title:"Edit",className:"rounded p-1 text-faint transition-colors hover:bg-bg hover:text-ink",children:e.jsx(T,{size:12})}),e.jsx("button",{type:"button",onClick:()=>b(t.id,t.name),title:"Delete",className:"rounded p-1 transition-colors hover:bg-bg",style:{color:"var(--err)"},children:e.jsx(z,{size:12})})]},t.id))}),x?e.jsxs("div",{className:"flex flex-col gap-3 rounded-lg border border-border bg-panel-2 p-3",children:[e.jsx("div",{className:"text-[13px] font-medium text-ink",children:l?"Edit server":"Add server"}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[12px] text-muted",children:"Name"}),e.jsx("input",{type:"text",value:m.name,onChange:t=>o({name:t.target.value}),placeholder:"My Tool Server",className:"rounded-md border border-border bg-bg px-2 py-1.5 text-[13px] text-ink outline-none"})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[12px] text-muted",children:"Transport"}),e.jsx("div",{className:"flex gap-4",children:["stdio","sse"].map(t=>e.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5 text-[13px] text-ink",children:[e.jsx("input",{type:"radio",name:"mcp-transport",checked:m.transport===t,onChange:()=>o({transport:t}),className:"h-3.5 w-3.5 accent-[var(--accent)]"}),e.jsx("span",{className:"font-mono",children:t}),e.jsx("span",{className:"text-[11px] text-faint",children:t==="stdio"?"(subprocess)":"(HTTP)"})]},t))})]}),m.transport==="stdio"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[12px] text-muted",children:"Command"}),e.jsx("input",{type:"text",value:m.command,onChange:t=>o({command:t.target.value}),placeholder:"npx -y @modelcontextprotocol/server-filesystem",className:"rounded-md border border-border bg-bg px-2 py-1.5 font-mono text-[12px] text-ink outline-none"})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("label",{className:"text-[12px] text-muted",children:["Args ",e.jsx("span",{className:"text-faint",children:"(comma-separated, optional)"})]}),e.jsx("input",{type:"text",value:m.argsStr,onChange:t=>o({argsStr:t.target.value}),placeholder:"--port, 3000",className:"rounded-md border border-border bg-bg px-2 py-1.5 font-mono text-[12px] text-ink outline-none"})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("label",{className:"text-[12px] text-muted",children:["Env vars ",e.jsx("span",{className:"text-faint",children:"(KEY=VALUE, one per line, optional)"})]}),e.jsx("textarea",{rows:2,value:m.envStr,onChange:t=>o({envStr:t.target.value}),placeholder:`API_KEY=abc123
|
|
4
4
|
DEBUG=true`,className:"resize-none rounded-md border border-border bg-bg px-2 py-1.5 font-mono text-[12px] text-ink outline-none"})]})]}):e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[12px] text-muted",children:"URL"}),e.jsx("input",{type:"text",value:m.url,onChange:t=>o({url:t.target.value}),placeholder:"http://localhost:3000",className:"rounded-md border border-border bg-bg px-2 py-1.5 font-mono text-[12px] text-ink outline-none"})]}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 text-[13px] text-ink",children:[e.jsx("input",{type:"checkbox",checked:m.enabled,onChange:t=>o({enabled:t.target.checked}),className:"h-3.5 w-3.5 accent-[var(--accent)]"}),"Enable immediately"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(y,{size:"sm",onClick:s,disabled:S,children:[S?e.jsx(K,{size:13,className:"animate-spin"}):null,l?"Update":"Add"]}),e.jsx(y,{variant:"outline",size:"sm",onClick:f,children:"Cancel"})]})]}):e.jsxs(y,{variant:"outline",size:"sm",onClick:v,children:[e.jsx(M,{size:13}),"Add server"]})]})}export{Y as CustomizeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"./radix-4XwKfE88.js";import{r as p}from"./vendor-CKtmMAvG.js";import{C as m}from"./copy-button-
|
|
1
|
+
import{j as e}from"./radix-4XwKfE88.js";import{r as p}from"./vendor-CKtmMAvG.js";import{C as m}from"./copy-button-llYeGT-i.js";import{S as y}from"./common-DzMdqlCp.js";import{c as f,j as N,B as v,t as b,A as g,k}from"./index-DH6LUjzQ.js";import{T as C}from"./trash-2-CqQWzJ1Q.js";import{P as S}from"./plus-BSLbFnG4.js";import"./check-C66UWSMM.js";const w=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],A=f("globe",w);const I=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],E=f("key",I);const L=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],P=f("terminal",L),u=window.location.origin,T=[{method:"POST",path:"/v1/chat/completions",desc:"OpenAI Chat Completions"},{method:"POST",path:"/v1/messages",desc:"Anthropic Messages"},{method:"GET",path:"/v1/models",desc:"OpenAI Models List"},{method:"GET",path:"/api/v1/status",desc:"Daemon Status"},{method:"GET",path:"/api/v1/engines",desc:"Engine Registry"},{method:"GET",path:"/api/v1/models",desc:"Model Library"},{method:"GET",path:"/api/v1/keys",desc:"API Keys"}],K=[{id:"claude-code",name:"Claude Code",desc:"Anthropic-compatible endpoint — the hero demo"},{id:"opencode",name:"opencode",desc:"OpenAI-compatible, AI SDK provider config"},{id:"kilo",name:"Kilo Code",desc:"OpenAI-compatible, kilo.jsonc provider entry"},{id:"qwen",name:"Qwen Code",desc:"OpenAI-compatible (OPENAI_BASE_URL)"}];function V(){return e.jsxs("div",{className:"w-full px-6 py-6",children:[e.jsx(y,{title:"Developer",description:"Server URLs, API endpoints, keys, and CLI setup."}),e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsx(_,{}),e.jsx(G,{}),e.jsx(z,{}),e.jsx(O,{})]})]})}function _(){return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(A,{size:15,className:"text-accent"}),e.jsx("h2",{className:"text-[13px] font-semibold uppercase tracking-wide text-faint",children:"Server"})]}),e.jsxs("div",{className:"flex items-center justify-between py-1",children:[e.jsx("span",{className:"text-[13px] text-muted",children:"Local URL"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"font-mono text-[13px] text-ink",children:u}),e.jsx(m,{text:u})]})]})]})}function G(){const{query:s,create:n,revoke:c}=N(),[a,l]=p.useState(""),[r,o]=p.useState(null),x=s.data?.keys??[],i=()=>{const t=a.trim();t&&n.mutate(t,{onSuccess:d=>{l(""),o(d.key)},onError:d=>b.error(d instanceof g?d.message:"Could not create key.")})},h=(t,d)=>{c.mutate(t,{onSuccess:()=>{r?.startsWith(d)&&o(null)},onError:j=>b.error(j instanceof g?j.message:"Could not revoke key.")})};return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(E,{size:15,className:"text-accent"}),e.jsx("h2",{className:"text-[13px] font-semibold uppercase tracking-wide text-faint",children:"API Keys"})]}),r&&e.jsxs("div",{className:"mb-4 rounded-md border p-3",style:{borderColor:"var(--ok)",background:"color-mix(in srgb, var(--ok) 8%, transparent)"},children:[e.jsx("p",{className:"mb-1.5 text-[12px] font-medium",style:{color:"var(--ok)"},children:"Key created — copy it now, it won't be shown again."}),e.jsxs("div",{className:"flex items-center gap-2 rounded border border-border bg-bg px-2 py-1.5",children:[e.jsx("code",{className:"min-w-0 flex-1 break-all font-mono text-[12px] text-ink",children:r}),e.jsx(m,{text:r})]})]}),x.length===0&&!r&&e.jsx("p",{className:"mb-3 text-[13px] text-faint",children:"No API keys yet."}),x.length>0&&e.jsx("div",{className:"mb-3 divide-y divide-border rounded-md border border-border",children:x.map(t=>e.jsxs("div",{className:"flex items-center justify-between px-3 py-2.5",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-[13px] font-medium text-ink",children:t.name}),e.jsxs("span",{className:"ml-2 font-mono text-[11px] text-faint",children:[t.prefix,"…"]})]}),e.jsx("button",{type:"button",onClick:()=>h(t.id,t.prefix),className:"rounded p-1 text-faint transition-colors hover:text-err",title:"Revoke key",children:e.jsx(C,{size:14})})]},t.id))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{value:a,onChange:t=>l(t.target.value),placeholder:"Key name (e.g. claude-code)",className:"flex-1 rounded-md border border-border bg-bg px-2.5 py-1.5 text-[13px] text-ink outline-none placeholder:text-faint focus:border-[color:var(--accent)]",onKeyDown:t=>t.key==="Enter"&&i()}),e.jsxs(v,{size:"sm",onClick:i,disabled:!a.trim()||n.isPending,children:[e.jsx(S,{size:13}),n.isPending?"Creating…":"Create"]})]})]})}function z(){return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsx("h2",{className:"mb-3 text-[13px] font-semibold uppercase tracking-wide text-faint",children:"Available APIs"}),e.jsx("div",{className:"divide-y divide-border rounded-md border border-border",children:T.map(({method:s,path:n,desc:c})=>e.jsxs("div",{className:"flex items-center gap-3 px-3 py-2",children:[e.jsx("span",{className:"w-10 shrink-0 rounded px-1 py-0.5 text-center font-mono text-[10px] font-bold uppercase",style:{background:s==="GET"?"color-mix(in srgb, var(--ok) 15%, transparent)":"color-mix(in srgb, var(--accent) 15%, transparent)",color:s==="GET"?"var(--ok)":"var(--accent)"},children:s}),e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] text-ink",children:n}),e.jsx("span",{className:"hidden shrink-0 text-[11px] text-muted sm:block",children:c}),e.jsx(m,{text:`${u}${n}`})]},n))})]})}function O(){return e.jsxs("section",{className:"rounded-lg border border-border bg-panel p-4",children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx(P,{size:15,className:"text-accent"}),e.jsx("h2",{className:"text-[13px] font-semibold uppercase tracking-wide text-faint",children:"Connect a CLI"})]}),e.jsx("div",{className:"flex flex-col gap-2.5",children:K.map(s=>e.jsx(B,{cli:s},s.id))})]})}function B({cli:s}){const[n,c]=p.useState(null),[a,l]=p.useState(!1),[r,o]=p.useState(!1),x=()=>{if(r){o(!1);return}if(n){o(!0);return}l(!0),k(s.id).then(i=>{c(i),o(!0)}).catch(()=>b.error("Could not fetch setup snippets.")).finally(()=>l(!1))};return e.jsxs("div",{className:"rounded-md border border-border bg-bg",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2.5",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-[13px] font-semibold text-ink",children:s.name}),e.jsx("span",{className:"ml-2 text-[11px] text-muted",children:s.desc})]}),e.jsx(v,{size:"sm",variant:r?"outline":"default",onClick:x,disabled:a,children:a?"Loading…":r?"Hide":"Get setup"})]}),r&&n&&e.jsx("div",{className:"flex flex-col gap-2.5 border-t border-border px-3 pb-3 pt-2.5",children:n.steps.map((i,h)=>e.jsx(R,{step:i},h))})]})}function R({step:s}){return e.jsxs("div",{children:[e.jsx("div",{className:"mb-1 text-[11px] text-faint",children:s.label}),e.jsxs("div",{className:"relative rounded border border-border bg-panel-2",children:[e.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all px-3 py-2 pr-10 font-mono text-[12px] leading-relaxed text-ink",children:s.snippet}),e.jsx(m,{text:s.snippet,className:"absolute right-2 top-2"})]})]})}export{V as DeveloperScreen};
|