neoctl-web 0.1.13 → 0.1.14

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.
@@ -0,0 +1,105 @@
1
+ var ig=Object.defineProperty;var ag=(n,r,s)=>r in n?ig(n,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[r]=s;var _e=(n,r,s)=>ag(n,typeof r!="symbol"?r+"":r,s);import{w as De,o as Jt,a as m,c as b,t as x,b as C,r as ar,d as ke,F as Y,e as ce,f as a,g as oe,u as Re,h as Da,i as lg,s as cg,j as V,_ as bl,k as zo,n as Q,l as Ye,m as Qn,p as $e,v as ug,q as nt,x as at,y as he,z as dg,A as ft,B as Ue,C as Pa,D as je,E as Ua,G as Ba,H as gn,I as tt,T as it,J as gg,K as fg,L as pg,M as za,N as Fa}from"./index-Ckm5fgYu.js";function Fo(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var en=Fo();function kl(n){en=n}var Zt={exec:()=>null};function pe(n,r=""){let s=typeof n=="string"?n:n.source,i={replace:(c,d)=>{let g=typeof d=="string"?d:d.source;return g=g.replace(Ge.caret,"$1"),s=s.replace(c,g),i},getRegex:()=>new RegExp(s,r)};return i}var hg=((n="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+n)}catch{return!1}})(),Ge={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),htmlBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:n=>new RegExp(`^ {0,${Math.min(3,n-1)}}>`)},mg=/^(?:[ \t]*(?:\n|$))+/,bg=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,kg=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,yg=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ho=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,yl=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,vl=pe(yl).replace(/bull/g,Ho).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),vg=pe(yl).replace(/bull/g,Ho).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),jo=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,wg=/^[^\n]+/,Go=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,_g=pe(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Go).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),xg=pe(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ho).getRegex(),wr="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|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",qo=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Sg=pe("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",qo).replace("tag",wr).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),wl=pe(jo).replace("hr",is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wr).getRegex(),Eg=pe(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",wl).getRegex(),Wo={blockquote:Eg,code:bg,def:_g,fences:kg,heading:yg,hr:is,html:Sg,lheading:vl,list:xg,newline:mg,paragraph:wl,table:Zt,text:wg},Ha=pe("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wr).getRegex(),Tg={...Wo,lheading:vg,table:Ha,paragraph:pe(jo).replace("hr",is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ha).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wr).getRegex()},Ig={...Wo,html:pe(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",qo).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Zt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:pe(jo).replace("hr",is).replace("heading",` *#{1,6} *[^
2
+ ]`).replace("lheading",vl).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ag=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Cg=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,_l=/^( {2,}|\\)\n(?!\s*$)/,Mg=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,kn=/[\p{P}\p{S}]/u,_r=/[\s\p{P}\p{S}]/u,Ko=/[^\s\p{P}\p{S}]/u,Ng=pe(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,_r).getRegex(),xl=/(?!~)[\p{P}\p{S}]/u,Rg=/(?!~)[\s\p{P}\p{S}]/u,Lg=/(?:[^\s\p{P}\p{S}]|~)/u,$g=pe(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",hg?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Sl=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Og=pe(Sl,"u").replace(/punct/g,kn).getRegex(),Dg=pe(Sl,"u").replace(/punct/g,xl).getRegex(),El="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Pg=pe(El,"gu").replace(/notPunctSpace/g,Ko).replace(/punctSpace/g,_r).replace(/punct/g,kn).getRegex(),Ug=pe(El,"gu").replace(/notPunctSpace/g,Lg).replace(/punctSpace/g,Rg).replace(/punct/g,xl).getRegex(),Bg=pe("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ko).replace(/punctSpace/g,_r).replace(/punct/g,kn).getRegex(),zg=pe(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,kn).getRegex(),Fg="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Hg=pe(Fg,"gu").replace(/notPunctSpace/g,Ko).replace(/punctSpace/g,_r).replace(/punct/g,kn).getRegex(),jg=pe(/\\(punct)/,"gu").replace(/punct/g,kn).getRegex(),Gg=pe(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),qg=pe(qo).replace("(?:-->|$)","-->").getRegex(),Wg=pe("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",qg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),dr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Kg=pe(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",dr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Tl=pe(/^!?\[(label)\]\[(ref)\]/).replace("label",dr).replace("ref",Go).getRegex(),Il=pe(/^!?\[(ref)\](?:\[\])?/).replace("ref",Go).getRegex(),Vg=pe("reflink|nolink(?!\\()","g").replace("reflink",Tl).replace("nolink",Il).getRegex(),ja=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Vo={_backpedal:Zt,anyPunctuation:jg,autolink:Gg,blockSkip:$g,br:_l,code:Cg,del:Zt,delLDelim:Zt,delRDelim:Zt,emStrongLDelim:Og,emStrongRDelimAst:Pg,emStrongRDelimUnd:Bg,escape:Ag,link:Kg,nolink:Il,punctuation:Ng,reflink:Tl,reflinkSearch:Vg,tag:Wg,text:Mg,url:Zt},Zg={...Vo,link:pe(/^!?\[(label)\]\((.*?)\)/).replace("label",dr).getRegex(),reflink:pe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",dr).getRegex()},Ro={...Vo,emStrongRDelimAst:Ug,emStrongLDelim:Dg,delLDelim:zg,delRDelim:Hg,url:pe(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ja).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:pe(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ja).getRegex()},Qg={...Ro,br:pe(_l).replace("{2,}","*").getRegex(),text:pe(Ro.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},er={normal:Wo,gfm:Tg,pedantic:Ig},Kn={normal:Vo,gfm:Ro,breaks:Qg,pedantic:Zg},Yg={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ga=n=>Yg[n];function pt(n,r){if(r){if(Ge.escapeTest.test(n))return n.replace(Ge.escapeReplace,Ga)}else if(Ge.escapeTestNoEncode.test(n))return n.replace(Ge.escapeReplaceNoEncode,Ga);return n}function qa(n){try{n=encodeURI(n).replace(Ge.percentDecode,"%")}catch{return null}return n}function Wa(n,r){var d;let s=n.replace(Ge.findPipe,(g,f,h)=>{let w=!1,v=f;for(;--v>=0&&h[v]==="\\";)w=!w;return w?"|":" |"}),i=s.split(Ge.splitPipe),c=0;if(i[0].trim()||i.shift(),i.length>0&&!((d=i.at(-1))!=null&&d.trim())&&i.pop(),r)if(i.length>r)i.splice(r);else for(;i.length<r;)i.push("");for(;c<i.length;c++)i[c]=i[c].trim().replace(Ge.slashPipe,"|");return i}function Lt(n,r,s){let i=n.length;if(i===0)return"";let c=0;for(;c<i&&n.charAt(i-c-1)===r;)c++;return n.slice(0,i-c)}function Ka(n){let r=n.split(`
3
+ `),s=r.length-1;for(;s>=0&&Ge.blankLine.test(r[s]);)s--;return r.length-s<=2?n:r.slice(0,s+1).join(`
4
+ `)}function Jg(n,r){if(n.indexOf(r[1])===-1)return-1;let s=0;for(let i=0;i<n.length;i++)if(n[i]==="\\")i++;else if(n[i]===r[0])s++;else if(n[i]===r[1]&&(s--,s<0))return i;return s>0?-2:-1}function Xg(n,r=0){let s=r,i="";for(let c of n)if(c===" "){let d=4-s%4;i+=" ".repeat(d),s+=d}else i+=c,s++;return i}function Va(n,r,s,i,c){let d=r.href,g=r.title||null,f=n[1].replace(c.other.outputLinkReplace,"$1");i.state.inLink=!0;let h={type:n[0].charAt(0)==="!"?"image":"link",raw:s,href:d,title:g,text:f,tokens:i.inlineTokens(f)};return i.state.inLink=!1,h}function ef(n,r,s){let i=n.match(s.other.indentCodeCompensation);if(i===null)return r;let c=i[1];return r.split(`
5
+ `).map(d=>{let g=d.match(s.other.beginningSpace);if(g===null)return d;let[f]=g;return f.length>=c.length?d.slice(c.length):d}).join(`
6
+ `)}var gr=class{constructor(n){_e(this,"options");_e(this,"rules");_e(this,"lexer");this.options=n||en}space(n){let r=this.rules.block.newline.exec(n);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(n){let r=this.rules.block.code.exec(n);if(r){let s=this.options.pedantic?r[0]:Ka(r[0]),i=s.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:s,codeBlockStyle:"indented",text:i}}}fences(n){let r=this.rules.block.fences.exec(n);if(r){let s=r[0],i=ef(s,r[3]||"",this.rules);return{type:"code",raw:s,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(n){let r=this.rules.block.heading.exec(n);if(r){let s=r[2].trim();if(this.rules.other.endingHash.test(s)){let i=Lt(s,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(s=i.trim())}return{type:"heading",raw:Lt(r[0],`
7
+ `),depth:r[1].length,text:s,tokens:this.lexer.inline(s)}}}hr(n){let r=this.rules.block.hr.exec(n);if(r)return{type:"hr",raw:Lt(r[0],`
8
+ `)}}blockquote(n){let r=this.rules.block.blockquote.exec(n);if(r){let s=Lt(r[0],`
9
+ `).split(`
10
+ `),i="",c="",d=[];for(;s.length>0;){let g=!1,f=[],h;for(h=0;h<s.length;h++)if(this.rules.other.blockquoteStart.test(s[h]))f.push(s[h]),g=!0;else if(!g)f.push(s[h]);else break;s=s.slice(h);let w=f.join(`
11
+ `),v=w.replace(this.rules.other.blockquoteSetextReplace,`
12
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
13
+ ${w}`:w,c=c?`${c}
14
+ ${v}`:v;let I=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(v,d,!0),this.lexer.state.top=I,s.length===0)break;let _=d.at(-1);if((_==null?void 0:_.type)==="code")break;if((_==null?void 0:_.type)==="blockquote"){let A=_,S=A.raw+`
15
+ `+s.join(`
16
+ `),O=this.blockquote(S);d[d.length-1]=O,i=i.substring(0,i.length-A.raw.length)+O.raw,c=c.substring(0,c.length-A.text.length)+O.text;break}else if((_==null?void 0:_.type)==="list"){let A=_,S=A.raw+`
17
+ `+s.join(`
18
+ `),O=this.list(S);d[d.length-1]=O,i=i.substring(0,i.length-_.raw.length)+O.raw,c=c.substring(0,c.length-A.raw.length)+O.raw,s=S.substring(d.at(-1).raw.length).split(`
19
+ `);continue}}return{type:"blockquote",raw:i,tokens:d,text:c}}}list(n){let r=this.rules.block.list.exec(n);if(r){let s=r[1].trim(),i=s.length>1,c={type:"list",raw:"",ordered:i,start:i?+s.slice(0,-1):"",loose:!1,items:[]};s=i?`\\d{1,9}\\${s.slice(-1)}`:`\\${s}`,this.options.pedantic&&(s=i?s:"[*+-]");let d=this.rules.other.listItemRegex(s),g=!1;for(;n;){let h=!1,w="",v="";if(!(r=d.exec(n))||this.rules.block.hr.test(n))break;w=r[0],n=n.substring(w.length);let I=Xg(r[2].split(`
20
+ `,1)[0],r[1].length),_=n.split(`
21
+ `,1)[0],A=!I.trim(),S=0;if(this.options.pedantic?(S=2,v=I.trimStart()):A?S=r[1].length+1:(S=I.search(this.rules.other.nonSpaceChar),S=S>4?1:S,v=I.slice(S),S+=r[1].length),A&&this.rules.other.blankLine.test(_)&&(w+=_+`
22
+ `,n=n.substring(_.length+1),h=!0),!h){let O=this.rules.other.nextBulletRegex(S),N=this.rules.other.hrRegex(S),R=this.rules.other.fencesBeginRegex(S),U=this.rules.other.headingBeginRegex(S),M=this.rules.other.htmlBeginRegex(S),P=this.rules.other.blockquoteBeginRegex(S);for(;n;){let j=n.split(`
23
+ `,1)[0],F;if(_=j,this.options.pedantic?(_=_.replace(this.rules.other.listReplaceNesting," "),F=_):F=_.replace(this.rules.other.tabCharGlobal," "),R.test(_)||U.test(_)||M.test(_)||P.test(_)||O.test(_)||N.test(_))break;if(F.search(this.rules.other.nonSpaceChar)>=S||!_.trim())v+=`
24
+ `+F.slice(S);else{if(A||I.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||R.test(I)||U.test(I)||N.test(I))break;v+=`
25
+ `+_}A=!_.trim(),w+=j+`
26
+ `,n=n.substring(j.length+1),I=F.slice(S)}}c.loose||(g?c.loose=!0:this.rules.other.doubleBlankLine.test(w)&&(g=!0)),c.items.push({type:"list_item",raw:w,task:!!this.options.gfm&&this.rules.other.listIsTask.test(v),loose:!1,text:v,tokens:[]}),c.raw+=w}let f=c.items.at(-1);if(f)f.raw=f.raw.trimEnd(),f.text=f.text.trimEnd();else return;c.raw=c.raw.trimEnd();for(let h of c.items){this.lexer.state.top=!1,h.tokens=this.lexer.blockTokens(h.text,[]);let w=h.tokens[0];if(h.task&&((w==null?void 0:w.type)==="text"||(w==null?void 0:w.type)==="paragraph")){h.text=h.text.replace(this.rules.other.listReplaceTask,""),w.raw=w.raw.replace(this.rules.other.listReplaceTask,""),w.text=w.text.replace(this.rules.other.listReplaceTask,"");for(let I=this.lexer.inlineQueue.length-1;I>=0;I--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[I].src)){this.lexer.inlineQueue[I].src=this.lexer.inlineQueue[I].src.replace(this.rules.other.listReplaceTask,"");break}let v=this.rules.other.listTaskCheckbox.exec(h.raw);if(v){let I={type:"checkbox",raw:v[0]+" ",checked:v[0]!=="[ ]"};h.checked=I.checked,c.loose?h.tokens[0]&&["paragraph","text"].includes(h.tokens[0].type)&&"tokens"in h.tokens[0]&&h.tokens[0].tokens?(h.tokens[0].raw=I.raw+h.tokens[0].raw,h.tokens[0].text=I.raw+h.tokens[0].text,h.tokens[0].tokens.unshift(I)):h.tokens.unshift({type:"paragraph",raw:I.raw,text:I.raw,tokens:[I]}):h.tokens.unshift(I)}}else h.task&&(h.task=!1);if(!c.loose){let v=h.tokens.filter(_=>_.type==="space"),I=v.length>0&&v.some(_=>this.rules.other.anyLine.test(_.raw));c.loose=I}}if(c.loose)for(let h of c.items){h.loose=!0;for(let w of h.tokens)w.type==="text"&&(w.type="paragraph")}return c}}html(n){let r=this.rules.block.html.exec(n);if(r){let s=Ka(r[0]);return{type:"html",block:!0,raw:s,pre:r[1]==="pre"||r[1]==="script"||r[1]==="style",text:s}}}def(n){let r=this.rules.block.def.exec(n);if(r){let s=r[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),i=r[2]?r[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",c=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):r[3];return{type:"def",tag:s,raw:Lt(r[0],`
27
+ `),href:i,title:c}}}table(n){var g;let r=this.rules.block.table.exec(n);if(!r||!this.rules.other.tableDelimiter.test(r[2]))return;let s=Wa(r[1]),i=r[2].replace(this.rules.other.tableAlignChars,"").split("|"),c=(g=r[3])!=null&&g.trim()?r[3].replace(this.rules.other.tableRowBlankLine,"").split(`
28
+ `):[],d={type:"table",raw:Lt(r[0],`
29
+ `),header:[],align:[],rows:[]};if(s.length===i.length){for(let f of i)this.rules.other.tableAlignRight.test(f)?d.align.push("right"):this.rules.other.tableAlignCenter.test(f)?d.align.push("center"):this.rules.other.tableAlignLeft.test(f)?d.align.push("left"):d.align.push(null);for(let f=0;f<s.length;f++)d.header.push({text:s[f],tokens:this.lexer.inline(s[f]),header:!0,align:d.align[f]});for(let f of c)d.rows.push(Wa(f,d.header.length).map((h,w)=>({text:h,tokens:this.lexer.inline(h),header:!1,align:d.align[w]})));return d}}lheading(n){let r=this.rules.block.lheading.exec(n);if(r){let s=r[1].trim();return{type:"heading",raw:Lt(r[0],`
30
+ `),depth:r[2].charAt(0)==="="?1:2,text:s,tokens:this.lexer.inline(s)}}}paragraph(n){let r=this.rules.block.paragraph.exec(n);if(r){let s=r[1].charAt(r[1].length-1)===`
31
+ `?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:s,tokens:this.lexer.inline(s)}}}text(n){let r=this.rules.block.text.exec(n);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(n){let r=this.rules.inline.escape.exec(n);if(r)return{type:"escape",raw:r[0],text:r[1]}}tag(n){let r=this.rules.inline.tag.exec(n);if(r)return!this.lexer.state.inLink&&this.rules.other.startATag.test(r[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(n){let r=this.rules.inline.link.exec(n);if(r){let s=r[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(s)){if(!this.rules.other.endAngleBracket.test(s))return;let d=Lt(s.slice(0,-1),"\\");if((s.length-d.length)%2===0)return}else{let d=Jg(r[2],"()");if(d===-2)return;if(d>-1){let g=(r[0].indexOf("!")===0?5:4)+r[1].length+d;r[2]=r[2].substring(0,d),r[0]=r[0].substring(0,g).trim(),r[3]=""}}let i=r[2],c="";if(this.options.pedantic){let d=this.rules.other.pedanticHrefTitle.exec(i);d&&(i=d[1],c=d[3])}else c=r[3]?r[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(s)?i=i.slice(1):i=i.slice(1,-1)),Va(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:c&&c.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer,this.rules)}}reflink(n,r){let s;if((s=this.rules.inline.reflink.exec(n))||(s=this.rules.inline.nolink.exec(n))){let i=(s[2]||s[1]).replace(this.rules.other.multipleSpaceGlobal," "),c=r[i.toLowerCase()];if(!c){let d=s[0].charAt(0);return{type:"text",raw:d,text:d}}return Va(s,c,s[0],this.lexer,this.rules)}}emStrong(n,r,s=""){let i=this.rules.inline.emStrongLDelim.exec(n);if(!(!i||!i[1]&&!i[2]&&!i[3]&&!i[4]||i[4]&&s.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[3])||!s||this.rules.inline.punctuation.exec(s))){let c=[...i[0]].length-1,d,g,f=c,h=0,w=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(w.lastIndex=0,r=r.slice(-1*n.length+c);(i=w.exec(r))!==null;){if(d=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!d)continue;if(g=[...d].length,i[3]||i[4]){f+=g;continue}else if((i[5]||i[6])&&c%3&&!((c+g)%3)){h+=g;continue}if(f-=g,f>0)continue;g=Math.min(g,g+f+h);let v=[...i[0]][0].length,I=n.slice(0,c+i.index+v+g);if(Math.min(c,g)%2){let A=I.slice(1,-1);return{type:"em",raw:I,text:A,tokens:this.lexer.inlineTokens(A)}}let _=I.slice(2,-2);return{type:"strong",raw:I,text:_,tokens:this.lexer.inlineTokens(_)}}}}codespan(n){let r=this.rules.inline.code.exec(n);if(r){let s=r[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(s),c=this.rules.other.startingSpaceChar.test(s)&&this.rules.other.endingSpaceChar.test(s);return i&&c&&(s=s.substring(1,s.length-1)),{type:"codespan",raw:r[0],text:s}}}br(n){let r=this.rules.inline.br.exec(n);if(r)return{type:"br",raw:r[0]}}del(n,r,s=""){let i=this.rules.inline.delLDelim.exec(n);if(i&&(!i[1]||!s||this.rules.inline.punctuation.exec(s))){let c=[...i[0]].length-1,d,g,f=c,h=this.rules.inline.delRDelim;for(h.lastIndex=0,r=r.slice(-1*n.length+c);(i=h.exec(r))!==null;){if(d=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!d||(g=[...d].length,g!==c))continue;if(i[3]||i[4]){f+=g;continue}if(f-=g,f>0)continue;g=Math.min(g,g+f);let w=[...i[0]][0].length,v=n.slice(0,c+i.index+w+g),I=v.slice(c,-c);return{type:"del",raw:v,text:I,tokens:this.lexer.inlineTokens(I)}}}}autolink(n){let r=this.rules.inline.autolink.exec(n);if(r){let s,i;return r[2]==="@"?(s=r[1],i="mailto:"+s):(s=r[1],i=s),{type:"link",raw:r[0],text:s,href:i,tokens:[{type:"text",raw:s,text:s}]}}}url(n){var s;let r;if(r=this.rules.inline.url.exec(n)){let i,c;if(r[2]==="@")i=r[0],c="mailto:"+i;else{let d;do d=r[0],r[0]=((s=this.rules.inline._backpedal.exec(r[0]))==null?void 0:s[0])??"";while(d!==r[0]);i=r[0],r[1]==="www."?c="http://"+r[0]:c=r[0]}return{type:"link",raw:r[0],text:i,href:c,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(n){let r=this.rules.inline.text.exec(n);if(r){let s=this.lexer.state.inRawBlock;return{type:"text",raw:r[0],text:r[0],escaped:s}}}},lt=class Lo{constructor(r){_e(this,"tokens");_e(this,"options");_e(this,"state");_e(this,"inlineQueue");_e(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=r||en,this.options.tokenizer=this.options.tokenizer||new gr,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let s={other:Ge,block:er.normal,inline:Kn.normal};this.options.pedantic?(s.block=er.pedantic,s.inline=Kn.pedantic):this.options.gfm&&(s.block=er.gfm,this.options.breaks?s.inline=Kn.breaks:s.inline=Kn.gfm),this.tokenizer.rules=s}static get rules(){return{block:er,inline:Kn}}static lex(r,s){return new Lo(s).lex(r)}static lexInline(r,s){return new Lo(s).inlineTokens(r)}lex(r){r=r.replace(Ge.carriageReturn,`
32
+ `),this.blockTokens(r,this.tokens);for(let s=0;s<this.inlineQueue.length;s++){let i=this.inlineQueue[s];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(r,s=[],i=!1){var d,g,f;this.tokenizer.lexer=this,this.options.pedantic&&(r=r.replace(Ge.tabCharGlobal," ").replace(Ge.spaceLine,""));let c=1/0;for(;r;){if(r.length<c)c=r.length;else{this.infiniteLoopError(r.charCodeAt(0));break}let h;if((g=(d=this.options.extensions)==null?void 0:d.block)!=null&&g.some(v=>(h=v.call({lexer:this},r,s))?(r=r.substring(h.raw.length),s.push(h),!0):!1))continue;if(h=this.tokenizer.space(r)){r=r.substring(h.raw.length);let v=s.at(-1);h.raw.length===1&&v!==void 0?v.raw+=`
33
+ `:s.push(h);continue}if(h=this.tokenizer.code(r)){r=r.substring(h.raw.length);let v=s.at(-1);(v==null?void 0:v.type)==="paragraph"||(v==null?void 0:v.type)==="text"?(v.raw+=(v.raw.endsWith(`
34
+ `)?"":`
35
+ `)+h.raw,v.text+=`
36
+ `+h.text,this.inlineQueue.at(-1).src=v.text):s.push(h);continue}if(h=this.tokenizer.fences(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.heading(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.hr(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.blockquote(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.list(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.html(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.def(r)){r=r.substring(h.raw.length);let v=s.at(-1);(v==null?void 0:v.type)==="paragraph"||(v==null?void 0:v.type)==="text"?(v.raw+=(v.raw.endsWith(`
37
+ `)?"":`
38
+ `)+h.raw,v.text+=`
39
+ `+h.raw,this.inlineQueue.at(-1).src=v.text):this.tokens.links[h.tag]||(this.tokens.links[h.tag]={href:h.href,title:h.title},s.push(h));continue}if(h=this.tokenizer.table(r)){r=r.substring(h.raw.length),s.push(h);continue}if(h=this.tokenizer.lheading(r)){r=r.substring(h.raw.length),s.push(h);continue}let w=r;if((f=this.options.extensions)!=null&&f.startBlock){let v=1/0,I=r.slice(1),_;this.options.extensions.startBlock.forEach(A=>{_=A.call({lexer:this},I),typeof _=="number"&&_>=0&&(v=Math.min(v,_))}),v<1/0&&v>=0&&(w=r.substring(0,v+1))}if(this.state.top&&(h=this.tokenizer.paragraph(w))){let v=s.at(-1);i&&(v==null?void 0:v.type)==="paragraph"?(v.raw+=(v.raw.endsWith(`
40
+ `)?"":`
41
+ `)+h.raw,v.text+=`
42
+ `+h.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=v.text):s.push(h),i=w.length!==r.length,r=r.substring(h.raw.length);continue}if(h=this.tokenizer.text(r)){r=r.substring(h.raw.length);let v=s.at(-1);(v==null?void 0:v.type)==="text"?(v.raw+=(v.raw.endsWith(`
43
+ `)?"":`
44
+ `)+h.raw,v.text+=`
45
+ `+h.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=v.text):s.push(h);continue}if(r){this.infiniteLoopError(r.charCodeAt(0));break}}return this.state.top=!0,s}inline(r,s=[]){return this.inlineQueue.push({src:r,tokens:s}),s}inlineTokens(r,s=[]){var w,v,I,_,A;this.tokenizer.lexer=this;let i=r,c=null;if(this.tokens.links){let S=Object.keys(this.tokens.links);if(S.length>0)for(;(c=this.tokenizer.rules.inline.reflinkSearch.exec(i))!==null;)S.includes(c[0].slice(c[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,c.index)+"["+"a".repeat(c[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(c=this.tokenizer.rules.inline.anyPunctuation.exec(i))!==null;)i=i.slice(0,c.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let d;for(;(c=this.tokenizer.rules.inline.blockSkip.exec(i))!==null;)d=c[2]?c[2].length:0,i=i.slice(0,c.index+d)+"["+"a".repeat(c[0].length-d-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=((v=(w=this.options.hooks)==null?void 0:w.emStrongMask)==null?void 0:v.call({lexer:this},i))??i;let g=!1,f="",h=1/0;for(;r;){if(r.length<h)h=r.length;else{this.infiniteLoopError(r.charCodeAt(0));break}g||(f=""),g=!1;let S;if((_=(I=this.options.extensions)==null?void 0:I.inline)!=null&&_.some(N=>(S=N.call({lexer:this},r,s))?(r=r.substring(S.raw.length),s.push(S),!0):!1))continue;if(S=this.tokenizer.escape(r)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.tag(r)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.link(r)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.reflink(r,this.tokens.links)){r=r.substring(S.raw.length);let N=s.at(-1);S.type==="text"&&(N==null?void 0:N.type)==="text"?(N.raw+=S.raw,N.text+=S.text):s.push(S);continue}if(S=this.tokenizer.emStrong(r,i,f)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.codespan(r)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.br(r)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.del(r,i,f)){r=r.substring(S.raw.length),s.push(S);continue}if(S=this.tokenizer.autolink(r)){r=r.substring(S.raw.length),s.push(S);continue}if(!this.state.inLink&&(S=this.tokenizer.url(r))){r=r.substring(S.raw.length),s.push(S);continue}let O=r;if((A=this.options.extensions)!=null&&A.startInline){let N=1/0,R=r.slice(1),U;this.options.extensions.startInline.forEach(M=>{U=M.call({lexer:this},R),typeof U=="number"&&U>=0&&(N=Math.min(N,U))}),N<1/0&&N>=0&&(O=r.substring(0,N+1))}if(S=this.tokenizer.inlineText(O)){r=r.substring(S.raw.length),S.raw.slice(-1)!=="_"&&(f=S.raw.slice(-1)),g=!0;let N=s.at(-1);(N==null?void 0:N.type)==="text"?(N.raw+=S.raw,N.text+=S.text):s.push(S);continue}if(r){this.infiniteLoopError(r.charCodeAt(0));break}}return s}infiniteLoopError(r){let s="Infinite loop on byte: "+r;if(this.options.silent)console.error(s);else throw new Error(s)}},fr=class{constructor(n){_e(this,"options");_e(this,"parser");this.options=n||en}space(n){return""}code({text:n,lang:r,escaped:s}){var d;let i=(d=(r||"").match(Ge.notSpaceStart))==null?void 0:d[0],c=n.replace(Ge.endingNewline,"")+`
46
+ `;return i?'<pre><code class="language-'+pt(i)+'">'+(s?c:pt(c,!0))+`</code></pre>
47
+ `:"<pre><code>"+(s?c:pt(c,!0))+`</code></pre>
48
+ `}blockquote({tokens:n}){return`<blockquote>
49
+ ${this.parser.parse(n)}</blockquote>
50
+ `}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:r}){return`<h${r}>${this.parser.parseInline(n)}</h${r}>
51
+ `}hr(n){return`<hr>
52
+ `}list(n){let r=n.ordered,s=n.start,i="";for(let g=0;g<n.items.length;g++){let f=n.items[g];i+=this.listitem(f)}let c=r?"ol":"ul",d=r&&s!==1?' start="'+s+'"':"";return"<"+c+d+`>
53
+ `+i+"</"+c+`>
54
+ `}listitem(n){return`<li>${this.parser.parse(n.tokens)}</li>
55
+ `}checkbox({checked:n}){return"<input "+(n?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:n}){return`<p>${this.parser.parseInline(n)}</p>
56
+ `}table(n){let r="",s="";for(let c=0;c<n.header.length;c++)s+=this.tablecell(n.header[c]);r+=this.tablerow({text:s});let i="";for(let c=0;c<n.rows.length;c++){let d=n.rows[c];s="";for(let g=0;g<d.length;g++)s+=this.tablecell(d[g]);i+=this.tablerow({text:s})}return i&&(i=`<tbody>${i}</tbody>`),`<table>
57
+ <thead>
58
+ `+r+`</thead>
59
+ `+i+`</table>
60
+ `}tablerow({text:n}){return`<tr>
61
+ ${n}</tr>
62
+ `}tablecell(n){let r=this.parser.parseInline(n.tokens),s=n.header?"th":"td";return(n.align?`<${s} align="${n.align}">`:`<${s}>`)+r+`</${s}>
63
+ `}strong({tokens:n}){return`<strong>${this.parser.parseInline(n)}</strong>`}em({tokens:n}){return`<em>${this.parser.parseInline(n)}</em>`}codespan({text:n}){return`<code>${pt(n,!0)}</code>`}br(n){return"<br>"}del({tokens:n}){return`<del>${this.parser.parseInline(n)}</del>`}link({href:n,title:r,tokens:s}){let i=this.parser.parseInline(s),c=qa(n);if(c===null)return i;n=c;let d='<a href="'+n+'"';return r&&(d+=' title="'+pt(r)+'"'),d+=">"+i+"</a>",d}image({href:n,title:r,text:s,tokens:i}){i&&(s=this.parser.parseInline(i,this.parser.textRenderer));let c=qa(n);if(c===null)return pt(s);n=c;let d=`<img src="${n}" alt="${pt(s)}"`;return r&&(d+=` title="${pt(r)}"`),d+=">",d}text(n){return"tokens"in n&&n.tokens?this.parser.parseInline(n.tokens):"escaped"in n&&n.escaped?n.text:pt(n.text)}},Zo=class{strong({text:n}){return n}em({text:n}){return n}codespan({text:n}){return n}del({text:n}){return n}html({text:n}){return n}text({text:n}){return n}link({text:n}){return""+n}image({text:n}){return""+n}br(){return""}checkbox({raw:n}){return n}},ct=class $o{constructor(r){_e(this,"options");_e(this,"renderer");_e(this,"textRenderer");this.options=r||en,this.options.renderer=this.options.renderer||new fr,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Zo}static parse(r,s){return new $o(s).parse(r)}static parseInline(r,s){return new $o(s).parseInline(r)}parse(r){var i,c;this.renderer.parser=this;let s="";for(let d=0;d<r.length;d++){let g=r[d];if((c=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&c[g.type]){let h=g,w=this.options.extensions.renderers[h.type].call({parser:this},h);if(w!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(h.type)){s+=w||"";continue}}let f=g;switch(f.type){case"space":{s+=this.renderer.space(f);break}case"hr":{s+=this.renderer.hr(f);break}case"heading":{s+=this.renderer.heading(f);break}case"code":{s+=this.renderer.code(f);break}case"table":{s+=this.renderer.table(f);break}case"blockquote":{s+=this.renderer.blockquote(f);break}case"list":{s+=this.renderer.list(f);break}case"checkbox":{s+=this.renderer.checkbox(f);break}case"html":{s+=this.renderer.html(f);break}case"def":{s+=this.renderer.def(f);break}case"paragraph":{s+=this.renderer.paragraph(f);break}case"text":{s+=this.renderer.text(f);break}default:{let h='Token with "'+f.type+'" type was not found.';if(this.options.silent)return console.error(h),"";throw new Error(h)}}}return s}parseInline(r,s=this.renderer){var c,d;this.renderer.parser=this;let i="";for(let g=0;g<r.length;g++){let f=r[g];if((d=(c=this.options.extensions)==null?void 0:c.renderers)!=null&&d[f.type]){let w=this.options.extensions.renderers[f.type].call({parser:this},f);if(w!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(f.type)){i+=w||"";continue}}let h=f;switch(h.type){case"escape":{i+=s.text(h);break}case"html":{i+=s.html(h);break}case"link":{i+=s.link(h);break}case"image":{i+=s.image(h);break}case"checkbox":{i+=s.checkbox(h);break}case"strong":{i+=s.strong(h);break}case"em":{i+=s.em(h);break}case"codespan":{i+=s.codespan(h);break}case"br":{i+=s.br(h);break}case"del":{i+=s.del(h);break}case"text":{i+=s.text(h);break}default:{let w='Token with "'+h.type+'" type was not found.';if(this.options.silent)return console.error(w),"";throw new Error(w)}}}return i}},ir,Yn=(ir=class{constructor(n){_e(this,"options");_e(this,"block");this.options=n||en}preprocess(n){return n}postprocess(n){return n}processAllTokens(n){return n}emStrongMask(n){return n}provideLexer(n=this.block){return n?lt.lex:lt.lexInline}provideParser(n=this.block){return n?ct.parse:ct.parseInline}},_e(ir,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),_e(ir,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),ir),tf=class{constructor(...n){_e(this,"defaults",Fo());_e(this,"options",this.setOptions);_e(this,"parse",this.parseMarkdown(!0));_e(this,"parseInline",this.parseMarkdown(!1));_e(this,"Parser",ct);_e(this,"Renderer",fr);_e(this,"TextRenderer",Zo);_e(this,"Lexer",lt);_e(this,"Tokenizer",gr);_e(this,"Hooks",Yn);this.use(...n)}walkTokens(n,r){var i,c;let s=[];for(let d of n)switch(s=s.concat(r.call(this,d)),d.type){case"table":{let g=d;for(let f of g.header)s=s.concat(this.walkTokens(f.tokens,r));for(let f of g.rows)for(let h of f)s=s.concat(this.walkTokens(h.tokens,r));break}case"list":{let g=d;s=s.concat(this.walkTokens(g.items,r));break}default:{let g=d;(c=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&c[g.type]?this.defaults.extensions.childTokens[g.type].forEach(f=>{let h=g[f].flat(1/0);s=s.concat(this.walkTokens(h,r))}):g.tokens&&(s=s.concat(this.walkTokens(g.tokens,r)))}}return s}use(...n){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(s=>{let i={...s};if(i.async=this.defaults.async||i.async||!1,s.extensions&&(s.extensions.forEach(c=>{if(!c.name)throw new Error("extension name required");if("renderer"in c){let d=r.renderers[c.name];d?r.renderers[c.name]=function(...g){let f=c.renderer.apply(this,g);return f===!1&&(f=d.apply(this,g)),f}:r.renderers[c.name]=c.renderer}if("tokenizer"in c){if(!c.level||c.level!=="block"&&c.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let d=r[c.level];d?d.unshift(c.tokenizer):r[c.level]=[c.tokenizer],c.start&&(c.level==="block"?r.startBlock?r.startBlock.push(c.start):r.startBlock=[c.start]:c.level==="inline"&&(r.startInline?r.startInline.push(c.start):r.startInline=[c.start]))}"childTokens"in c&&c.childTokens&&(r.childTokens[c.name]=c.childTokens)}),i.extensions=r),s.renderer){let c=this.defaults.renderer||new fr(this.defaults);for(let d in s.renderer){if(!(d in c))throw new Error(`renderer '${d}' does not exist`);if(["options","parser"].includes(d))continue;let g=d,f=s.renderer[g],h=c[g];c[g]=(...w)=>{let v=f.apply(c,w);return v===!1&&(v=h.apply(c,w)),v||""}}i.renderer=c}if(s.tokenizer){let c=this.defaults.tokenizer||new gr(this.defaults);for(let d in s.tokenizer){if(!(d in c))throw new Error(`tokenizer '${d}' does not exist`);if(["options","rules","lexer"].includes(d))continue;let g=d,f=s.tokenizer[g],h=c[g];c[g]=(...w)=>{let v=f.apply(c,w);return v===!1&&(v=h.apply(c,w)),v}}i.tokenizer=c}if(s.hooks){let c=this.defaults.hooks||new Yn;for(let d in s.hooks){if(!(d in c))throw new Error(`hook '${d}' does not exist`);if(["options","block"].includes(d))continue;let g=d,f=s.hooks[g],h=c[g];Yn.passThroughHooks.has(d)?c[g]=w=>{if(this.defaults.async&&Yn.passThroughHooksRespectAsync.has(d))return(async()=>{let I=await f.call(c,w);return h.call(c,I)})();let v=f.call(c,w);return h.call(c,v)}:c[g]=(...w)=>{if(this.defaults.async)return(async()=>{let I=await f.apply(c,w);return I===!1&&(I=await h.apply(c,w)),I})();let v=f.apply(c,w);return v===!1&&(v=h.apply(c,w)),v}}i.hooks=c}if(s.walkTokens){let c=this.defaults.walkTokens,d=s.walkTokens;i.walkTokens=function(g){let f=[];return f.push(d.call(this,g)),c&&(f=f.concat(c.call(this,g))),f}}this.defaults={...this.defaults,...i}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,r){return lt.lex(n,r??this.defaults)}parser(n,r){return ct.parse(n,r??this.defaults)}parseMarkdown(n){return(r,s)=>{let i={...s},c={...this.defaults,...i},d=this.onError(!!c.silent,!!c.async);if(this.defaults.async===!0&&i.async===!1)return d(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof r>"u"||r===null)return d(new Error("marked(): input parameter is undefined or null"));if(typeof r!="string")return d(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(r)+", string expected"));if(c.hooks&&(c.hooks.options=c,c.hooks.block=n),c.async)return(async()=>{let g=c.hooks?await c.hooks.preprocess(r):r,f=await(c.hooks?await c.hooks.provideLexer(n):n?lt.lex:lt.lexInline)(g,c),h=c.hooks?await c.hooks.processAllTokens(f):f;c.walkTokens&&await Promise.all(this.walkTokens(h,c.walkTokens));let w=await(c.hooks?await c.hooks.provideParser(n):n?ct.parse:ct.parseInline)(h,c);return c.hooks?await c.hooks.postprocess(w):w})().catch(d);try{c.hooks&&(r=c.hooks.preprocess(r));let g=(c.hooks?c.hooks.provideLexer(n):n?lt.lex:lt.lexInline)(r,c);c.hooks&&(g=c.hooks.processAllTokens(g)),c.walkTokens&&this.walkTokens(g,c.walkTokens);let f=(c.hooks?c.hooks.provideParser(n):n?ct.parse:ct.parseInline)(g,c);return c.hooks&&(f=c.hooks.postprocess(f)),f}catch(g){return d(g)}}}onError(n,r){return s=>{if(s.message+=`
64
+ Please report this to https://github.com/markedjs/marked.`,n){let i="<p>An error occurred:</p><pre>"+pt(s.message+"",!0)+"</pre>";return r?Promise.resolve(i):i}if(r)return Promise.reject(s);throw s}}},Xt=new tf;function fe(n,r){return Xt.parse(n,r)}fe.options=fe.setOptions=function(n){return Xt.setOptions(n),fe.defaults=Xt.defaults,kl(fe.defaults),fe};fe.getDefaults=Fo;fe.defaults=en;fe.use=function(...n){return Xt.use(...n),fe.defaults=Xt.defaults,kl(fe.defaults),fe};fe.walkTokens=function(n,r){return Xt.walkTokens(n,r)};fe.parseInline=Xt.parseInline;fe.Parser=ct;fe.parser=ct.parse;fe.Renderer=fr;fe.TextRenderer=Zo;fe.Lexer=lt;fe.lexer=lt.lex;fe.Tokenizer=gr;fe.Hooks=Yn;fe.parse=fe;fe.options;fe.setOptions;fe.use;fe.walkTokens;fe.parseInline;ct.parse;lt.lex;const nf={key:0,class:"terminal-output-reader","aria-label":"终端运行输出"},sf={key:0,class:"background-task-live-output",tabindex:"0"},rf={key:1,class:"background-task-live-output terminal-stderr",tabindex:"0"},of={__name:"TerminalOutputReader",props:{ownerSessionId:String,runId:String},setup(n){const r=n,s=ar({record:null,stdout:"",stderr:"",offsets:{stdout:0,stderr:0}});let i=0,c,d;async function g(){var h;const f=i;try{for(const w of["stdout","stderr"]){let v;do{const I=s.offsets[w],_=new URLSearchParams({sessionId:r.ownerSessionId,runId:r.runId,stream:w,offset:String(I),limitBytes:"65536"}),A=await ke(`/api/terminal-output?${_}`,{signal:d.signal,cache:"no-store"});if(f!==i||!A.ok)return;const S=await A.json();if(f!==i||S.sessionId!==r.ownerSessionId||S.runId!==r.runId||S.stream!==w||S.offset!==I||!Number.isSafeInteger(S.nextOffset)||S.nextOffset<I||(s.record=S.record,((h=S.record)==null?void 0:h.availability)!=="available"||typeof S.text!="string")||S.text&&S.nextOffset===I)return;if(v??(v=S.record.streams[w].storedBytes),s[w]+=S.text,s.offsets[w]=S.nextOffset,S.endOfStoredOutput||S.nextOffset>=v)break}while(f===i)}}catch{}finally{f===i&&(!s.record||s.record.lifecycle==="running")&&(c=setTimeout(g,1e3))}}return De(()=>[r.ownerSessionId,r.runId],()=>{i++,d==null||d.abort(),d=new AbortController,clearTimeout(c),Object.assign(s,{record:null,stdout:"",stderr:"",offsets:{stdout:0,stderr:0}}),r.ownerSessionId&&r.runId&&g()},{immediate:!0,flush:"pre"}),Jt(()=>{i++,d==null||d.abort(),clearTimeout(c)}),(f,h)=>s.stdout||s.stderr?(m(),b("section",nf,[s.stdout?(m(),b("pre",sf,x(s.stdout),1)):C("",!0),s.stderr?(m(),b("pre",rf,x(s.stderr),1)):C("",!0)])):C("",!0)}},af=["report","timeline","messages","delegation"],Al=(n,r)=>n.ownerSessionId===r.ownerSessionId&&n.taskId===r.taskId&&n.runGeneration===r.runGeneration,Cl=n=>typeof n.ownerSessionId=="string"&&!!n.ownerSessionId&&typeof n.taskId=="string"&&!!n.taskId&&Number.isSafeInteger(n.runGeneration)&&n.runGeneration>0;function lf(n,r,s,i=!1){if(!Cl(n)||!af.includes(r)||i&&(!s||r!=="timeline"))throw new Error("所属会话、任务、轮次或读取方式无效");const c=new URLSearchParams({sessionId:n.ownerSessionId,taskId:n.taskId,runGeneration:String(n.runGeneration),view:r,pageChars:"16000"});return s&&c.set("cursor",s),i&&c.set("refresh","true"),`/api/agent-content?${c}`}const cf=["complete","truncated","missing","unavailable"];function Za(n,r){if(!r||!cf.includes(r.state)||typeof r.text!="string"||!Number.isSafeInteger(r.offset)||r.offset<0||!Number.isSafeInteger(r.totalChars)||r.totalChars<0||typeof r.hasMore!="boolean")throw new Error("内容分片格式无效");const s=r.offset+r.text.length;if(s>r.totalChars||r.hasMore!==s<r.totalChars)throw new Error("内容分片范围无效");if(n&&(n.totalChars!==r.totalChars||n.state!==r.state))throw new Error("分片源内容已改变,请重新读取");const i=(n==null?void 0:n.text)??"";if(r.offset>i.length)throw new Error("内容分片缺页,请重新读取");const c=Math.min(i.length-r.offset,r.text.length);if(i.slice(r.offset,r.offset+c)!==r.text.slice(0,c))throw new Error("内容分片冲突,请重新读取");const d=i+r.text.slice(c);return{...r,offset:0,text:d,hasMore:d.length<r.totalChars}}function Ml(){return{page:null,items:[],fragment:null}}function uf(n,r,s,i,c="next"){var f,h,w,v,I;if(!r||!Al(r,s))throw new Error("响应所属会话、任务或轮次不匹配,已丢弃");if(!["complete","partial","missing","unavailable"].includes(r.state))throw new Error("未知内容读取状态");for(const _ of["nextCursor","refreshCursor","snapshotId"])if(r[_]!==void 0&&(typeof r[_]!="string"||!r[_]))throw new Error("响应游标或快照无效");const d=c==="start"?Ml():n;if(c==="next"&&((f=d.page)!=null&&f.snapshotId)&&r.snapshotId&&d.page.snapshotId!==r.snapshotId)throw new Error("分页快照已改变,请重新读取");if(c==="refresh"&&(i!=="timeline"||!((h=d.page)!=null&&h.refreshCursor)||d.page.nextCursor))throw new Error("尚未读完快照,不能增量刷新");if(r.state==="partial"&&!r.nextCursor)throw new Error("分页未完成但未提供继续游标");if(r.nextCursor&&r.refreshCursor)throw new Error("分页与刷新游标冲突");if(r.state==="unavailable")return{...d,page:r};if(i==="timeline"){if(!Array.isArray(r.items)&&r.state!=="missing")throw new Error("过程页未提供 items");const _=d.items.slice(),A=new Map(_.map((S,O)=>[S.id,O]));for(const S of r.items??[]){if(!S||typeof S.id!="string"||!S.id||!["assistant","tool_use","tool_result"].includes(S.kind))throw new Error("过程条目身份或类型无效");const O=A.get(S.id),N=O===void 0?void 0:_[O];if(N&&(N.kind!==S.kind||N.messageId!==S.messageId||N.toolUseId!==S.toolUseId||N.toolName!==S.toolName))throw new Error("过程条目身份冲突");const R={...S,content:Za(N==null?void 0:N.content,S.content)};O===void 0?(A.set(S.id,_.length),_.push(R)):_[O]=R}return{page:r,items:_,fragment:null}}if(i==="delegation"&&r.delegation&&r.delegation.scope!=="task")throw new Error("未知委派 scope;不展示上下文或续跑指令");const g=i==="delegation"?(w=r.delegation)==null?void 0:w.prompt:i==="messages"?(v=r.messages)==null?void 0:v.content:(I=r.report)==null?void 0:I.content;if(!g&&r.state!=="missing")throw new Error("读取页未提供正文");return{page:r,items:[],fragment:g?Za(d.fragment,g):null}}const df={class:"agent-content-reader agent-parent-messages","aria-label":"代理消息"},gf=["innerHTML"],ff={key:0,class:"reader-error",role:"alert"},pf={__name:"AgentExchangeReader",props:{ownerSessionId:String,task:Object,renderMarkdown:Function},setup(n){const r=n,s=oe([]),i=oe("");let c=0,d,g;const f={whiteSpace:"pre-wrap",overflowWrap:"anywhere"},h=()=>{var v,I;return{ownerSessionId:r.ownerSessionId,taskId:(v=r.task)==null?void 0:v.taskId,runGeneration:(I=r.task)==null?void 0:I.runGeneration}};async function w(){var F;const v=++c;d==null||d.abort(),d=new AbortController;const I=d.signal;clearTimeout(g);const _=r.task,A=h(),{ownerSessionId:S}=A;if(!Cl(A))return;const O=()=>v===c&&!I.aborted&&Al(A,h()),N=[];let R=!1;async function U(ie,o){var Z;const ae={ownerSessionId:S,taskId:_.taskId,runGeneration:o};let de=Ml(),G;do{const le=await ke(lf(ae,ie,G),{signal:I,cache:"no-store"});if(!le.ok)throw new Error("加载失败");const ne=await le.json();if(!O())return"";if(ne.state==="unavailable")throw new Error("加载失败");if(de=uf(de,ne,ae,ie,G?"next":"start"),G&&ne.nextCursor===G)throw new Error("加载失败");G=ne.nextCursor}while(G&&O());return((Z=de.fragment)==null?void 0:Z.text)||""}async function M(ie,o){try{return await U(ie,o)}catch(ae){return O()&&ae.name!=="AbortError"&&(R=!0),""}}function P(ie,o,ae){typeof ae=="string"&&ae.trim()&&N.push({id:ie,direction:o,text:ae})}P("delegation","主代理 → 子代理",await M("delegation",_.runGeneration));const j=[..._.runHistory||[],_].filter(ie=>Number.isSafeInteger(ie.runGeneration)).sort((ie,o)=>ie.runGeneration-o.runGeneration);for(const ie of j){if(!O())return;const o=await M("messages",ie.runGeneration);try{const ae=JSON.parse(o||"[]");if(!Array.isArray(ae))throw new Error;for(const de of ae)P(`message:${ie.runGeneration}:${de.id}`,"主代理 → 子代理",de.text)}catch{R=!0}P(`report:${ie.runGeneration}`,"子代理 → 主代理",await M("report",ie.runGeneration))}O()&&((!R||!s.value.length)&&(s.value=N),i.value=R?"加载失败":"",["pending","running"].includes((F=r.task)==null?void 0:F.status)&&(g=setTimeout(w,3e3)))}return De([()=>r.ownerSessionId,()=>{var v;return(v=r.task)==null?void 0:v.taskId},()=>{var v;return(v=r.task)==null?void 0:v.runGeneration},()=>{var v;return(v=r.task)==null?void 0:v.status}],(v,I)=>{v.slice(0,3).some((_,A)=>_!==I[A])&&(s.value=[],i.value=""),w()},{immediate:!0}),Jt(()=>{c++,d==null||d.abort(),clearTimeout(g)}),(v,I)=>(m(),b("section",df,[(m(!0),b(Y,null,ce(s.value,_=>(m(),b("article",{key:_.id,class:"agent-parent-message"},[a("header",null,[a("strong",null,x(_.direction),1)]),n.renderMarkdown?(m(),b("div",{key:0,class:"markdown",innerHTML:n.renderMarkdown(_.text)},null,8,gf)):(m(),b("pre",{key:1,style:f},x(_.text),1))]))),128)),i.value?(m(),b("p",ff,x(i.value),1)):C("",!0)]))}};function hf(n,r,s){const i=new Array(n);return new Proxy(i,{get(c,d,g){if(typeof d=="string"){const f=d.charCodeAt(0);if(f>=48&&f<=57){const h=+d;if(Number.isInteger(h)&&h>=0&&h<n){let w=c[h];if(!w){const v=r[h*2];w=c[h]={index:h,key:s(h),start:v,size:r[h*2+1],end:v+r[h*2+1],lane:0}}return w}}if(d==="length")return n}return Reflect.get(c,d,g)}})}function fn(n,r,s){let i=s.initialDeps??[],c,d=!0;function g(){const f=n();return(f.length!==i.length||f.some((w,v)=>i[v]!==w))&&(i=f,c=r(...f),s!=null&&s.onChange&&!(d&&s.skipInitialOnChange)&&s.onChange(c),d=!1),c}return g.updateDeps=f=>{i=f},g}function Qa(n,r){if(n===void 0)throw new Error("Unexpected undefined");return n}const mf=(n,r)=>Math.abs(n-r)<1.01,bf=(n,r,s)=>{let i;return Object.assign(function(...c){n.clearTimeout(i),i=n.setTimeout(()=>r.apply(this,c),s)},{cancel:()=>{n.clearTimeout(i)}})};let Vn;const ko=()=>{if(Vn!==void 0)return Vn;if(typeof navigator>"u")return Vn=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Vn=!0;const n=navigator.maxTouchPoints;return Vn=navigator.platform==="MacIntel"&&n!==void 0&&n>0},Ya=n=>{const{offsetWidth:r,offsetHeight:s}=n;return{width:r,height:s}},kf=n=>n,Nl=n=>{const r=Math.max(n.startIndex-n.overscan,0),i=Math.min(n.endIndex+n.overscan,n.count-1)-r+1,c=new Array(i);for(let d=0;d<i;d++)c[d]=r+d;return c},yf=(n,r)=>{const s=n.scrollElement;if(!s)return;const i=n.targetWindow;if(!i)return;const c=g=>{const{width:f,height:h}=g;r({width:Math.round(f),height:Math.round(h)})};if(c(Ya(s)),!i.ResizeObserver)return()=>{};const d=new i.ResizeObserver(g=>{const f=()=>{const h=g[0];if(h!=null&&h.borderBoxSize){const w=h.borderBoxSize[0];if(w){c({width:w.inlineSize,height:w.blockSize});return}}c(Ya(s))};n.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(f):f()});return d.observe(s,{box:"border-box"}),()=>{d.unobserve(s)}},pr={passive:!0},vf=typeof window>"u"?!0:"onscrollend"in window,wf=(n,r,s)=>{const i=n.scrollElement;if(!i)return;const c=n.targetWindow;if(!c)return;const d=n.options.useScrollendEvent&&vf;let g=0;const f=d?null:bf(c,()=>r(g,!1),n.options.isScrollingResetDelay),h=I=>()=>{g=s(i),f==null||f(),r(g,I)},w=h(!0),v=h(!1);return i.addEventListener("scroll",w,pr),d&&i.addEventListener("scrollend",v,pr),()=>{i.removeEventListener("scroll",w),d&&i.removeEventListener("scrollend",v),f==null||f.cancel()}},_f=(n,r)=>wf(n,r,s=>{const{horizontal:i,isRtl:c}=n.options;return i?s.scrollLeft*(c&&-1||1):s.scrollTop}),xf=(n,r,s)=>{if(s.options.useCachedMeasurements){const i=s.indexFromElement(n),c=s.options.getItemKey(i);return s.itemSizeCache.get(c)??s.options.estimateSize(i)}if(r!=null&&r.borderBoxSize){const i=r.borderBoxSize[0];if(i)return Math.round(i[s.options.horizontal?"inlineSize":"blockSize"])}if(!r){const i=s.indexFromElement(n),c=s.options.getItemKey(i),d=s.itemSizeCache.get(c);if(d!==void 0)return d}return n[s.options.horizontal?"offsetWidth":"offsetHeight"]},Sf=(n,{adjustments:r=0,behavior:s},i)=>{var c,d;(d=(c=i.scrollElement)==null?void 0:c.scrollTo)==null||d.call(c,{[i.options.horizontal?"left":"top"]:n+r,behavior:s})},Ef=Sf;class Tf{constructor(r){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var s,i,c;return((c=(i=(s=this.targetWindow)==null?void 0:s.performance)==null?void 0:i.now)==null?void 0:c.call(i))??Date.now()},this.observer=(()=>{let s=null;const i=()=>s||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:s=new this.targetWindow.ResizeObserver(c=>{c.forEach(d=>{const g=()=>{const f=d.target,h=this.indexFromElement(f);if(!f.isConnected){this.observer.unobserve(f);for(const[w,v]of this.elementsCache)if(v===f){this.elementsCache.delete(w);break}return}this.isIndexInRange(h)&&this.shouldMeasureDuringScroll(h)&&this.resizeItem(h,this.options.measureElement(f,d,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(g):g()})}));return{disconnect:()=>{var c;(c=i())==null||c.disconnect(),s=null},observe:c=>{var d;return(d=i())==null?void 0:d.observe(c,{box:"border-box"})},unobserve:c=>{var d;return(d=i())==null?void 0:d.unobserve(c)}}})(),this.range=null,this.setOptions=s=>{var i,c;const d={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:kf,rangeExtractor:Nl,onChange:()=>{},measureElement:xf,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const _ in s){const A=s[_];A!==void 0&&(d[_]=A)}const g=this.options;let f=null,h=null,w=!1;if(g!==void 0&&g.enabled&&d.enabled&&d.anchorTo==="end"&&this.scrollElement!==null){const _=g.count,A=d.count,S=this.getMeasurements(),O=_>0?((i=S[0])==null?void 0:i.key)??g.getItemKey(0):null,N=_>0?((c=S[_-1])==null?void 0:c.key)??g.getItemKey(_-1):null;if(A!==_||_>0&&A>0&&(d.getItemKey(0)!==O||d.getItemKey(A-1)!==N)){w=!0;const M=_>0?this.getVirtualItemForOffset(this.getScrollOffset())??S[0]:null;M&&(f=[M.key,this.getScrollOffset()-M.start]);const P=d.followOnAppend===!0?"auto":d.followOnAppend||null;P&&A>_&&this.isAtEnd(g.scrollEndThreshold)&&(_===0||d.getItemKey(A-1)!==N)&&(h=P)}}this.options=d,w&&(this.pendingMin=0,this.itemSizeCacheVersion++);let v=!1,I=0;if(f&&this.scrollOffset!==null){const[_,A]=f,S=this.getMeasurements(),{count:O,getItemKey:N}=this.options;let R=0;for(;R<O&&N(R)!==_;)R++;if(R<O){const U=S[R];if(U){const M=Math.max(0,U.start+A);M!==this.scrollOffset&&(I=M-this.scrollOffset,this.scrollOffset=M,v=!0)}}}(v||h)&&(this.pendingScrollAnchor=[v?f[0]:null,v?f[1]:0,h,I])},this.notify=s=>{var i,c;(c=(i=this.options).onChange)==null||c.call(i,this,s)},this.maybeNotify=fn(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),s=>{this.notify(s)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(s=>s()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.isScrolling=!1,this.scrollDirection=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var s;const i=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==i){if(this.cleanup(),!i){this.maybeNotify();return}if(this.scrollElement=i,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((s=this.scrollElement)==null?void 0:s.window)??null,this.elementsCache.forEach(d=>{this.observer.observe(d)}),this.unsubs.push(this.options.observeElementRect(this,d=>{this.scrollRect=d,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(d,g)=>{if(g&&this._intendedScrollOffset===null&&d===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(d-this._intendedScrollOffset)<1.5&&(d=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const f=this.getScrollOffset();this.scrollDirection=g?f===d?this.scrollDirection:f<d?"forward":"backward":null,this.scrollOffset=d,this.isScrolling=g,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const d=this.scrollElement,g=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},f=()=>{this._iosTouching=!1,!(!ko()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};d.addEventListener("touchstart",g,pr),d.addEventListener("touchend",f,pr),this.unsubs.push(()=>{d.removeEventListener("touchstart",g),d.removeEventListener("touchend",f),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const c=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,c&&this.scrollElement&&this.options.enabled){const[d,g,f,h]=c;d!==null&&!f&&(ko()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?h!==0&&(this._iosDeferredAdjustment+=h):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),f&&this.scrollToEnd({behavior:f})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const s=this.getScrollOffset(),i=this.getMaxScrollOffset();if(s<0||s>i)return;if(this._iosDeferredAdjustment<0&&s>=i-1){this._iosDeferredAdjustment=0;return}const c=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(s,{adjustments:this.scrollAdjustments+=c,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=fn(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(s,i,c,d,g,f,h,w)=>(this.prevLanes!==void 0&&this.prevLanes!==f&&(this.lanesChangedFlag=!0),this.prevLanes=f,this.pendingMin=null,{count:s,paddingStart:i,scrollMargin:c,getItemKey:d,enabled:g,lanes:f,laneAssignmentMode:h,gap:w}),{key:!1}),this.isIndexInRange=s=>s>=0&&s<this.options.count,this.getMeasurements=fn(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:s,paddingStart:i,scrollMargin:c,getItemKey:d,enabled:g,lanes:f,laneAssignmentMode:h,gap:w},v)=>{const I=this.itemSizeCache;if(!g)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>s)for(const R of this.laneAssignments.keys())R>=s&&this.laneAssignments.delete(R);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(R=>{this.itemSizeCache.set(R.key,R.size)}));const _=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===s&&(this.lanesSettling=!1),f===1){const R=s*2;let U=this._flatMeasurements;if(!U||U.length<R){const j=new Float64Array(R);U&&_>0&&j.set(U.subarray(0,_*2)),U=j,this._flatMeasurements=U}let M;if(_===0)M=i+c;else{const j=_-1;M=U[j*2]+U[j*2+1]+w}for(let j=_;j<s;j++){const F=d(j),ie=I.get(F),o=typeof ie=="number"?ie:this.options.estimateSize(j);U[j*2]=M,U[j*2+1]=o,M+=o+w}const P=hf(s,U,d);return this.measurementsCache=P,P}const A=this.measurementsCache.slice(0,_),S=new Array(f).fill(void 0),O=new Float64Array(f);let N=0;for(let R=0;R<_;R++){const U=A[R];U&&(S[U.lane]===void 0&&N++,S[U.lane]=R,O[U.lane]=U.end)}for(let R=_;R<s;R++){const U=d(R),M=this.laneAssignments.get(R);let P,j;const F=h==="estimate"||I.has(U);if(M!==void 0&&this.options.lanes>1){P=M;const de=S[P],G=de!==void 0?A[de]:void 0;j=G?G.end+w:i+c}else if(N===f){let de=0,G=O[0],Z=S[0];for(let le=1;le<f;le++){const ne=O[le];(ne<G||ne===G&&S[le]<Z)&&(de=le,G=ne,Z=S[le])}P=de,j=G+w,F&&this.laneAssignments.set(R,P)}else P=R%this.options.lanes,j=i+c,F&&this.laneAssignments.set(R,P);const ie=I.get(U),o=typeof ie=="number"?ie:this.options.estimateSize(R),ae=j+o;A[R]={index:R,start:j,size:o,end:ae,key:U,lane:P},S[P]===void 0&&N++,S[P]=R,O[P]=ae}return this.measurementsCache=A,A},{key:!1,debug:()=>this.options.debug}),this.calculateRange=fn(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(s,i,c,d)=>s.length===0||i===0?(this.range=null,null):(this.range=Af(s,i,c,d,d===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=fn(()=>{let s=null,i=null;const c=this.calculateRange();return c&&(s=c.startIndex,i=c.endIndex),this.maybeNotify.updateDeps([this.isScrolling,s,i]),[this.options.rangeExtractor,this.options.overscan,this.options.count,s,i]},(s,i,c,d,g)=>d===null||g===null?[]:s({startIndex:d,endIndex:g,overscan:i,count:c}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=s=>{const i=this.options.indexAttribute,c=s.getAttribute(i);return c?parseInt(c,10):(console.warn(`Missing attribute name '${i}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=s=>{var i;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const c=this.scrollState.index??((i=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:i.index);if(c!==void 0&&this.range){const d=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),g=Math.max(0,c-d),f=Math.min(this.options.count-1,c+d);return s>=g&&s<=f}return!0},this.measureElement=s=>{if(!s){this.elementsCache.forEach((g,f)=>{g.isConnected||(this.observer.unobserve(g),this.elementsCache.delete(f))});return}const i=this.indexFromElement(s);if(!this.isIndexInRange(i))return;const c=this.options.getItemKey(i),d=this.elementsCache.get(c);d!==s&&(d&&this.observer.unobserve(d),this.observer.observe(s),this.elementsCache.set(c,s)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(i)&&this.resizeItem(i,this.options.measureElement(s,void 0,this))},this.resizeItem=(s,i)=>{var c,d;if(!this.isIndexInRange(s))return;let g,f,h;const w=this._flatMeasurements;if(this.options.lanes===1&&w!==null)h=this.options.getItemKey(s),f=w[s*2],g=w[s*2+1];else{const _=this.measurementsCache[s];if(!_)return;h=_.key,f=_.start,g=_.size}const v=this.itemSizeCache.get(h)??g,I=i-v;if(I!==0){const _=this.options.anchorTo==="end"&&((c=this.scrollState)==null?void 0:c.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,A=_?this.getTotalSize():0,S=this.getScrollOffset()+this.scrollAdjustments,N=!this.itemSizeCache.has(h)?f<S:f+v<=S&&this.scrollDirection!=="backward",R=((d=this.scrollState)==null?void 0:d.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[s]??{index:s,key:h,start:f,size:g,end:f+g,lane:0},I,this):N);(this.pendingMin===null||s<this.pendingMin)&&(this.pendingMin=s),this.itemSizeCache.set(h,i),this.itemSizeCacheVersion++;let U=!1;_?U=this.applyScrollAdjustment(this.getTotalSize()-A):R&&(U=this.applyScrollAdjustment(I)),this.notify(U)}},this.getVirtualItems=fn(()=>[this.getVirtualIndexes(),this.getMeasurements()],(s,i)=>{const c=[];for(let d=0,g=s.length;d<g;d++){const f=s[d],h=i[f];c.push(h)}return c},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=s=>{const i=this.getMeasurements();if(i.length===0)return;const c=this._flatMeasurements,d=this.options.lanes===1&&c!=null,g=Rl(0,i.length-1,d?f=>c[f*2]:f=>Qa(i[f]).start,s);return Qa(i[g])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const s=this.scrollElement.document.documentElement;return this.options.horizontal?s.scrollWidth-this.scrollElement.innerWidth:s.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(s=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=s,this.getOffsetForAlignment=(s,i,c=0)=>{if(!this.scrollElement)return 0;const d=this.getSize(),g=this.getScrollOffset();i==="auto"&&(i=s>=g+d?"end":"start"),i==="center"?s+=(c-d)/2:i==="end"&&(s-=d);const f=this.getMaxScrollOffset();return Math.max(Math.min(f,s),0)},this.getOffsetForIndex=(s,i="auto")=>{s=Math.max(0,Math.min(s,this.options.count-1));const c=this.getSize(),d=this.getScrollOffset(),g=this.measurementsCache[s];if(!g)return;if(i==="auto")if(g.end>=d+c-this.options.scrollPaddingEnd)i="end";else if(g.start<=d+this.options.scrollPaddingStart)i="start";else return[d,i];if(i==="end"&&s===this.options.count-1)return[this.getMaxScrollOffset(),i];const f=i==="end"?g.end+this.options.scrollPaddingEnd:g.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(f,i,g.size),i]},this.scrollToOffset=(s,{align:i="start",behavior:c="auto"}={})=>{this._iosDeferredAdjustment=0;const d=this.getOffsetForAlignment(s,i),g=this.now();this.scrollState={index:null,align:i,behavior:c,startedAt:g,lastTargetOffset:d,stableFrames:0},this._scrollToOffset(d,{adjustments:void 0,behavior:c}),this.scheduleScrollReconcile()},this.scrollToIndex=(s,{align:i="auto",behavior:c="auto"}={})=>{this._iosDeferredAdjustment=0,s=Math.max(0,Math.min(s,this.options.count-1));const d=this.getOffsetForIndex(s,i);if(!d)return;const[g,f]=d,h=this.now();this.scrollState={index:s,align:f,behavior:c,startedAt:h,lastTargetOffset:g,stableFrames:0},this._scrollToOffset(g,{adjustments:void 0,behavior:c}),this.scheduleScrollReconcile()},this.scrollBy=(s,{behavior:i="auto"}={})=>{const c=this.getScrollOffset()+s,d=this.now();this.scrollState={index:null,align:"start",behavior:i,startedAt:d,lastTargetOffset:c,stableFrames:0},this._scrollToOffset(c,{adjustments:void 0,behavior:i}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:s="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:s});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:s})},this.getTotalSize=()=>{var s;const i=this.getMeasurements();let c;if(i.length===0)c=this.options.paddingStart;else if(this.options.lanes===1){const d=i.length-1,g=this._flatMeasurements;g!=null?c=g[d*2]+g[d*2+1]:c=((s=i[d])==null?void 0:s.end)??0}else{const d=Array(this.options.lanes).fill(null);let g=i.length-1;for(;g>=0&&d.some(f=>f===null);){const f=i[g];d[f.lane]===null&&(d[f.lane]=f.end),g--}c=Math.max(...d.filter(f=>f!==null))}return Math.max(c-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const s=[];if(this.itemSizeCache.size===0)return s;const i=this.getMeasurements();for(const c of i)c&&this.itemSizeCache.has(c.key)&&s.push({index:c.index,key:c.key,start:c.start,size:c.size,end:c.end,lane:c.lane});return s},this._scrollToOffset=(s,{adjustments:i,behavior:c})=>{this._intendedScrollOffset=s+(i??0),this.options.scrollToFn(s,{behavior:c,adjustments:i},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(r)}applyScrollAdjustment(r,s){return r===0?!1:ko()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=r,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:s}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const i=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,c=i?i[0]:this.scrollState.lastTargetOffset,d=1,g=c!==this.scrollState.lastTargetOffset;if(!g&&mf(c,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=d){this.getScrollOffset()!==c&&this._scrollToOffset(c,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,g){const f=this.getSize()||600,h=Math.abs(c-this.getScrollOffset()),w=this.scrollState.behavior==="smooth"&&h>f;this.scrollState.lastTargetOffset=c,w||(this.scrollState.behavior="auto"),this._scrollToOffset(c,{adjustments:void 0,behavior:w?"smooth":"auto"})}this.scheduleScrollReconcile()}}const Rl=(n,r,s,i)=>{for(;n<=r;){const c=(n+r)/2|0,d=s(c);if(d<i)n=c+1;else if(d>i)r=c-1;else return c}return n>0?n-1:0};function If(n,r,s){let i=0;for(;i<=r;){const c=(i+r)/2|0,d=n[c*2];if(d<s)i=c+1;else if(d>s)r=c-1;else return c}return i>0?i-1:0}function Af(n,r,s,i,c){const d=n.length-1;if(n.length<=i)return{startIndex:0,endIndex:d};if(i===1&&c!==null){const w=If(c,d,s);let v=w;const I=s+r;for(;v<d&&c[v*2]+c[v*2+1]<I;)v++;return{startIndex:w,endIndex:v}}let f=Rl(0,d,w=>n[w].start,s),h=f;if(i===1)for(;h<d&&n[h].end<s+r;)h++;else if(i>1){const w=Array(i).fill(0);for(;h<d&&w.some(I=>I<s+r);){const I=n[h];w[I.lane]=I.end,h++}const v=Array(i).fill(s+r);for(;f>=0&&v.some(I=>I>=s);){const I=n[f];v[I.lane]=I.start,f--}f=Math.max(0,f-f%i),h=Math.min(d,h+(i-1-h%i))}return{startIndex:f,endIndex:h}}function Cf(n){const r=new Tf(Re(n)),s=cg(r),i=r._didMount();return De(()=>Re(n).getScrollElement(),c=>{c&&r._willUpdate()},{immediate:!0}),De(()=>Re(n),c=>{r.setOptions({...c,onChange:(d,g)=>{var f;Da(s),(f=c.onChange)==null||f.call(c,d,g)}}),r._willUpdate(),Da(s)},{immediate:!0}),lg(i),s}function Mf(n){return Cf(V(()=>({observeElementRect:yf,observeElementOffset:_f,scrollToFn:Ef,...Re(n)})))}function Nf(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function Ll(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(r=>{const s=n[r],i=typeof s;(i==="object"||i==="function")&&!Object.isFrozen(s)&&Ll(s)}),n}class Ja{constructor(r){r.data===void 0&&(r.data={}),this.data=r.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function $l(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function Ot(n,...r){const s=Object.create(null);for(const i in n)s[i]=n[i];return r.forEach(function(i){for(const c in i)s[c]=i[c]}),s}const Rf="</span>",Xa=n=>!!n.scope,Lf=(n,{prefix:r})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const s=n.split(".");return[`${r}${s.shift()}`,...s.map((i,c)=>`${i}${"_".repeat(c+1)}`)].join(" ")}return`${r}${n}`};class $f{constructor(r,s){this.buffer="",this.classPrefix=s.classPrefix,r.walk(this)}addText(r){this.buffer+=$l(r)}openNode(r){if(!Xa(r))return;const s=Lf(r.scope,{prefix:this.classPrefix});this.span(s)}closeNode(r){Xa(r)&&(this.buffer+=Rf)}value(){return this.buffer}span(r){this.buffer+=`<span class="${r}">`}}const el=(n={})=>{const r={children:[]};return Object.assign(r,n),r};class Qo{constructor(){this.rootNode=el(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(r){this.top.children.push(r)}openNode(r){const s=el({scope:r});this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(r){return this.constructor._walk(r,this.rootNode)}static _walk(r,s){return typeof s=="string"?r.addText(s):s.children&&(r.openNode(s),s.children.forEach(i=>this._walk(r,i)),r.closeNode(s)),r}static _collapse(r){typeof r!="string"&&r.children&&(r.children.every(s=>typeof s=="string")?r.children=[r.children.join("")]:r.children.forEach(s=>{Qo._collapse(s)}))}}class Of extends Qo{constructor(r){super(),this.options=r}addText(r){r!==""&&this.add(r)}startScope(r){this.openNode(r)}endScope(){this.closeNode()}__addSublanguage(r,s){const i=r.root;s&&(i.scope=`language:${s}`),this.add(i)}toHTML(){return new $f(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function rs(n){return n?typeof n=="string"?n:n.source:null}function Ol(n){return tn("(?=",n,")")}function Df(n){return tn("(?:",n,")*")}function Pf(n){return tn("(?:",n,")?")}function tn(...n){return n.map(s=>rs(s)).join("")}function Uf(n){const r=n[n.length-1];return typeof r=="object"&&r.constructor===Object?(n.splice(n.length-1,1),r):{}}function Yo(...n){return"("+(Uf(n).capture?"":"?:")+n.map(i=>rs(i)).join("|")+")"}function Dl(n){return new RegExp(n.toString()+"|").exec("").length-1}function Bf(n,r){const s=n&&n.exec(r);return s&&s.index===0}const zf=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Jo(n,{joinWith:r}){let s=0;return n.map(i=>{s+=1;const c=s;let d=rs(i),g="";for(;d.length>0;){const f=zf.exec(d);if(!f){g+=d;break}g+=d.substring(0,f.index),d=d.substring(f.index+f[0].length),f[0][0]==="\\"&&f[1]?g+="\\"+String(Number(f[1])+c):(g+=f[0],f[0]==="("&&s++)}return g}).map(i=>`(${i})`).join(r)}const Ff=/\b\B/,Pl="[a-zA-Z]\\w*",Xo="[a-zA-Z_]\\w*",Ul="\\b\\d+(\\.\\d+)?",Bl="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",zl="\\b(0b[01]+)",Hf="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",jf=(n={})=>{const r=/^#![ ]*\//;return n.binary&&(n.begin=tn(r,/.*\b/,n.binary,/\b.*/)),Ot({scope:"meta",begin:r,end:/$/,relevance:0,"on:begin":(s,i)=>{s.index!==0&&i.ignoreMatch()}},n)},os={begin:"\\\\[\\s\\S]",relevance:0},Gf={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[os]},qf={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[os]},Wf={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},xr=function(n,r,s={}){const i=Ot({scope:"comment",begin:n,end:r,contains:[]},s);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const c=Yo("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:tn(/[ ]+/,"(",c,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Kf=xr("//","$"),Vf=xr("/\\*","\\*/"),Zf=xr("#","$"),Qf={scope:"number",begin:Ul,relevance:0},Yf={scope:"number",begin:Bl,relevance:0},Jf={scope:"number",begin:zl,relevance:0},Xf={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[os,{begin:/\[/,end:/\]/,relevance:0,contains:[os]}]},ep={scope:"title",begin:Pl,relevance:0},tp={scope:"title",begin:Xo,relevance:0},np={begin:"\\.\\s*"+Xo,relevance:0},sp=function(n){return Object.assign(n,{"on:begin":(r,s)=>{s.data._beginMatch=r[1]},"on:end":(r,s)=>{s.data._beginMatch!==r[1]&&s.ignoreMatch()}})};var tr=Object.freeze({__proto__:null,APOS_STRING_MODE:Gf,BACKSLASH_ESCAPE:os,BINARY_NUMBER_MODE:Jf,BINARY_NUMBER_RE:zl,COMMENT:xr,C_BLOCK_COMMENT_MODE:Vf,C_LINE_COMMENT_MODE:Kf,C_NUMBER_MODE:Yf,C_NUMBER_RE:Bl,END_SAME_AS_BEGIN:sp,HASH_COMMENT_MODE:Zf,IDENT_RE:Pl,MATCH_NOTHING_RE:Ff,METHOD_GUARD:np,NUMBER_MODE:Qf,NUMBER_RE:Ul,PHRASAL_WORDS_MODE:Wf,QUOTE_STRING_MODE:qf,REGEXP_MODE:Xf,RE_STARTERS_RE:Hf,SHEBANG:jf,TITLE_MODE:ep,UNDERSCORE_IDENT_RE:Xo,UNDERSCORE_TITLE_MODE:tp});function rp(n,r){n.input[n.index-1]==="."&&r.ignoreMatch()}function op(n,r){n.className!==void 0&&(n.scope=n.className,delete n.className)}function ip(n,r){r&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=rp,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function ap(n,r){Array.isArray(n.illegal)&&(n.illegal=Yo(...n.illegal))}function lp(n,r){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function cp(n,r){n.relevance===void 0&&(n.relevance=1)}const up=(n,r)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const s=Object.assign({},n);Object.keys(n).forEach(i=>{delete n[i]}),n.keywords=s.keywords,n.begin=tn(s.beforeMatch,Ol(s.begin)),n.starts={relevance:0,contains:[Object.assign(s,{endsParent:!0})]},n.relevance=0,delete s.beforeMatch},dp=["of","and","for","in","not","or","if","then","parent","list","value"],gp="keyword";function Fl(n,r,s=gp){const i=Object.create(null);return typeof n=="string"?c(s,n.split(" ")):Array.isArray(n)?c(s,n):Object.keys(n).forEach(function(d){Object.assign(i,Fl(n[d],r,d))}),i;function c(d,g){r&&(g=g.map(f=>f.toLowerCase())),g.forEach(function(f){const h=f.split("|");i[h[0]]=[d,fp(h[0],h[1])]})}}function fp(n,r){return r?Number(r):pp(n)?0:1}function pp(n){return dp.includes(n.toLowerCase())}const tl={},Yt=n=>{console.error(n)},nl=(n,...r)=>{console.log(`WARN: ${n}`,...r)},pn=(n,r)=>{tl[`${n}/${r}`]||(console.log(`Deprecated as of ${n}. ${r}`),tl[`${n}/${r}`]=!0)},hr=new Error;function Hl(n,r,{key:s}){let i=0;const c=n[s],d={},g={};for(let f=1;f<=r.length;f++)g[f+i]=c[f],d[f+i]=!0,i+=Dl(r[f-1]);n[s]=g,n[s]._emit=d,n[s]._multi=!0}function hp(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw Yt("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),hr;if(typeof n.beginScope!="object"||n.beginScope===null)throw Yt("beginScope must be object"),hr;Hl(n,n.begin,{key:"beginScope"}),n.begin=Jo(n.begin,{joinWith:""})}}function mp(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw Yt("skip, excludeEnd, returnEnd not compatible with endScope: {}"),hr;if(typeof n.endScope!="object"||n.endScope===null)throw Yt("endScope must be object"),hr;Hl(n,n.end,{key:"endScope"}),n.end=Jo(n.end,{joinWith:""})}}function bp(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function kp(n){bp(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),hp(n),mp(n)}function yp(n){function r(g,f){return new RegExp(rs(g),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(f?"g":""))}class s{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(f,h){h.position=this.position++,this.matchIndexes[this.matchAt]=h,this.regexes.push([h,f]),this.matchAt+=Dl(f)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const f=this.regexes.map(h=>h[1]);this.matcherRe=r(Jo(f,{joinWith:"|"}),!0),this.lastIndex=0}exec(f){this.matcherRe.lastIndex=this.lastIndex;const h=this.matcherRe.exec(f);if(!h)return null;const w=h.findIndex((I,_)=>_>0&&I!==void 0),v=this.matchIndexes[w];return h.splice(0,w),Object.assign(h,v)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(f){if(this.multiRegexes[f])return this.multiRegexes[f];const h=new s;return this.rules.slice(f).forEach(([w,v])=>h.addRule(w,v)),h.compile(),this.multiRegexes[f]=h,h}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(f,h){this.rules.push([f,h]),h.type==="begin"&&this.count++}exec(f){const h=this.getMatcher(this.regexIndex);h.lastIndex=this.lastIndex;let w=h.exec(f);if(this.resumingScanAtSamePosition()&&!(w&&w.index===this.lastIndex)){const v=this.getMatcher(0);v.lastIndex=this.lastIndex+1,w=v.exec(f)}return w&&(this.regexIndex+=w.position+1,this.regexIndex===this.count&&this.considerAll()),w}}function c(g){const f=new i;return g.contains.forEach(h=>f.addRule(h.begin,{rule:h,type:"begin"})),g.terminatorEnd&&f.addRule(g.terminatorEnd,{type:"end"}),g.illegal&&f.addRule(g.illegal,{type:"illegal"}),f}function d(g,f){const h=g;if(g.isCompiled)return h;[op,lp,kp,up].forEach(v=>v(g,f)),n.compilerExtensions.forEach(v=>v(g,f)),g.__beforeBegin=null,[ip,ap,cp].forEach(v=>v(g,f)),g.isCompiled=!0;let w=null;return typeof g.keywords=="object"&&g.keywords.$pattern&&(g.keywords=Object.assign({},g.keywords),w=g.keywords.$pattern,delete g.keywords.$pattern),w=w||/\w+/,g.keywords&&(g.keywords=Fl(g.keywords,n.case_insensitive)),h.keywordPatternRe=r(w,!0),f&&(g.begin||(g.begin=/\B|\b/),h.beginRe=r(h.begin),!g.end&&!g.endsWithParent&&(g.end=/\B|\b/),g.end&&(h.endRe=r(h.end)),h.terminatorEnd=rs(h.end)||"",g.endsWithParent&&f.terminatorEnd&&(h.terminatorEnd+=(g.end?"|":"")+f.terminatorEnd)),g.illegal&&(h.illegalRe=r(g.illegal)),g.contains||(g.contains=[]),g.contains=[].concat(...g.contains.map(function(v){return vp(v==="self"?g:v)})),g.contains.forEach(function(v){d(v,h)}),g.starts&&d(g.starts,f),h.matcher=c(h),h}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=Ot(n.classNameAliases||{}),d(n)}function jl(n){return n?n.endsWithParent||jl(n.starts):!1}function vp(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(r){return Ot(n,{variants:null},r)})),n.cachedVariants?n.cachedVariants:jl(n)?Ot(n,{starts:n.starts?Ot(n.starts):null}):Object.isFrozen(n)?Ot(n):n}var wp="11.11.1";class _p extends Error{constructor(r,s){super(r),this.name="HTMLInjectionError",this.html=s}}const yo=$l,sl=Ot,rl=Symbol("nomatch"),xp=7,Gl=function(n){const r=Object.create(null),s=Object.create(null),i=[];let c=!0;const d="Could not find the language '{}', did you forget to load/include a language module?",g={disableAutodetect:!0,name:"Plain text",contains:[]};let f={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Of};function h($){return f.noHighlightRe.test($)}function w($){let q=$.className+" ";q+=$.parentNode?$.parentNode.className:"";const W=f.languageDetectRe.exec(q);if(W){const se=o(W[1]);return se||(nl(d.replace("{}",W[1])),nl("Falling back to no-highlight mode for this block.",$)),se?W[1]:"no-highlight"}return q.split(/\s+/).find(se=>h(se)||o(se))}function v($,q,W){let se="",ue="";typeof q=="object"?(se=$,W=q.ignoreIllegals,ue=q.language):(pn("10.7.0","highlight(lang, code, ...args) has been deprecated."),pn("10.7.0",`Please use highlight(code, options) instead.
65
+ https://github.com/highlightjs/highlight.js/issues/2277`),ue=$,se=q),W===void 0&&(W=!0);const xe={code:se,language:ue};ne("before:highlight",xe);const Me=xe.result?xe.result:I(xe.language,xe.code,W);return Me.code=xe.code,ne("after:highlight",Me),Me}function I($,q,W,se){const ue=Object.create(null);function xe(B,K){return B.keywords[K]}function Me(){if(!J.keywords){Ce.addText(me);return}let B=0;J.keywordPatternRe.lastIndex=0;let K=J.keywordPatternRe.exec(me),ee="";for(;K;){ee+=me.substring(B,K.index);const ge=Fe.case_insensitive?K[0].toLowerCase():K[0],Le=xe(J,ge);if(Le){const[qe,mt]=Le;if(Ce.addText(ee),ee="",ue[ge]=(ue[ge]||0)+1,ue[ge]<=xp&&(Tt+=mt),qe.startsWith("_"))ee+=K[0];else{const bt=Fe.classNameAliases[qe]||qe;ze(K[0],bt)}}else ee+=K[0];B=J.keywordPatternRe.lastIndex,K=J.keywordPatternRe.exec(me)}ee+=me.substring(B),Ce.addText(ee)}function et(){if(me==="")return;let B=null;if(typeof J.subLanguage=="string"){if(!r[J.subLanguage]){Ce.addText(me);return}B=I(J.subLanguage,me,!0,Et[J.subLanguage]),Et[J.subLanguage]=B._top}else B=A(me,J.subLanguage.length?J.subLanguage:null);J.relevance>0&&(Tt+=B.relevance),Ce.__addSublanguage(B._emitter,B.language)}function Be(){J.subLanguage!=null?et():Me(),me=""}function ze(B,K){B!==""&&(Ce.startScope(K),Ce.addText(B),Ce.endScope())}function st(B,K){let ee=1;const ge=K.length-1;for(;ee<=ge;){if(!B._emit[ee]){ee++;continue}const Le=Fe.classNameAliases[B[ee]]||B[ee],qe=K[ee];Le?ze(qe,Le):(me=qe,Me(),me=""),ee++}}function Ne(B,K){return B.scope&&typeof B.scope=="string"&&Ce.openNode(Fe.classNameAliases[B.scope]||B.scope),B.beginScope&&(B.beginScope._wrap?(ze(me,Fe.classNameAliases[B.beginScope._wrap]||B.beginScope._wrap),me=""):B.beginScope._multi&&(st(B.beginScope,K),me="")),J=Object.create(B,{parent:{value:J}}),J}function xt(B,K,ee){let ge=Bf(B.endRe,ee);if(ge){if(B["on:end"]){const Le=new Ja(B);B["on:end"](K,Le),Le.isMatchIgnored&&(ge=!1)}if(ge){for(;B.endsParent&&B.parent;)B=B.parent;return B}}if(B.endsWithParent)return xt(B.parent,K,ee)}function Dt(B){return J.matcher.regexIndex===0?(me+=B[0],1):(dt=!0,0)}function Pt(B){const K=B[0],ee=B.rule,ge=new Ja(ee),Le=[ee.__beforeBegin,ee["on:begin"]];for(const qe of Le)if(qe&&(qe(B,ge),ge.isMatchIgnored))return Dt(K);return ee.skip?me+=K:(ee.excludeBegin&&(me+=K),Be(),!ee.returnBegin&&!ee.excludeBegin&&(me=K)),Ne(ee,B),ee.returnBegin?0:K.length}function Ut(B){const K=B[0],ee=q.substring(B.index),ge=xt(J,B,ee);if(!ge)return rl;const Le=J;J.endScope&&J.endScope._wrap?(Be(),ze(K,J.endScope._wrap)):J.endScope&&J.endScope._multi?(Be(),st(J.endScope,B)):Le.skip?me+=K:(Le.returnEnd||Le.excludeEnd||(me+=K),Be(),Le.excludeEnd&&(me=K));do J.scope&&Ce.closeNode(),!J.skip&&!J.subLanguage&&(Tt+=J.relevance),J=J.parent;while(J!==ge.parent);return ge.starts&&Ne(ge.starts,B),Le.returnEnd?0:K.length}function St(){const B=[];for(let K=J;K!==Fe;K=K.parent)K.scope&&B.unshift(K.scope);B.forEach(K=>Ce.openNode(K))}let Ie={};function vn(B,K){const ee=K&&K[0];if(me+=B,ee==null)return Be(),0;if(Ie.type==="begin"&&K.type==="end"&&Ie.index===K.index&&ee===""){if(me+=q.slice(K.index,K.index+1),!c){const ge=new Error(`0 width match regex (${$})`);throw ge.languageName=$,ge.badRule=Ie.rule,ge}return 1}if(Ie=K,K.type==="begin")return Pt(K);if(K.type==="illegal"&&!W){const ge=new Error('Illegal lexeme "'+ee+'" for mode "'+(J.scope||"<unnamed>")+'"');throw ge.mode=J,ge}else if(K.type==="end"){const ge=Ut(K);if(ge!==rl)return ge}if(K.type==="illegal"&&ee==="")return me+=`
66
+ `,1;if(Bt>1e5&&Bt>K.index*3)throw new Error("potential infinite loop, way more iterations than matches");return me+=ee,ee.length}const Fe=o($);if(!Fe)throw Yt(d.replace("{}",$)),new Error('Unknown language: "'+$+'"');const He=yp(Fe);let ut="",J=se||He;const Et={},Ce=new f.__emitter(f);St();let me="",Tt=0,Ze=0,Bt=0,dt=!1;try{if(Fe.__emitTokens)Fe.__emitTokens(q,Ce);else{for(J.matcher.considerAll();;){Bt++,dt?dt=!1:J.matcher.considerAll(),J.matcher.lastIndex=Ze;const B=J.matcher.exec(q);if(!B)break;const K=q.substring(Ze,B.index),ee=vn(K,B);Ze=B.index+ee}vn(q.substring(Ze))}return Ce.finalize(),ut=Ce.toHTML(),{language:$,value:ut,relevance:Tt,illegal:!1,_emitter:Ce,_top:J}}catch(B){if(B.message&&B.message.includes("Illegal"))return{language:$,value:yo(q),illegal:!0,relevance:0,_illegalBy:{message:B.message,index:Ze,context:q.slice(Ze-100,Ze+100),mode:B.mode,resultSoFar:ut},_emitter:Ce};if(c)return{language:$,value:yo(q),illegal:!1,relevance:0,errorRaised:B,_emitter:Ce,_top:J};throw B}}function _($){const q={value:yo($),illegal:!1,relevance:0,_top:g,_emitter:new f.__emitter(f)};return q._emitter.addText($),q}function A($,q){q=q||f.languages||Object.keys(r);const W=_($),se=q.filter(o).filter(de).map(Be=>I(Be,$,!1));se.unshift(W);const ue=se.sort((Be,ze)=>{if(Be.relevance!==ze.relevance)return ze.relevance-Be.relevance;if(Be.language&&ze.language){if(o(Be.language).supersetOf===ze.language)return 1;if(o(ze.language).supersetOf===Be.language)return-1}return 0}),[xe,Me]=ue,et=xe;return et.secondBest=Me,et}function S($,q,W){const se=q&&s[q]||W;$.classList.add("hljs"),$.classList.add(`language-${se}`)}function O($){let q=null;const W=w($);if(h(W))return;if(ne("before:highlightElement",{el:$,language:W}),$.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",$);return}if($.children.length>0&&(f.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn($)),f.throwUnescapedHTML))throw new _p("One of your code blocks includes unescaped HTML.",$.innerHTML);q=$;const se=q.textContent,ue=W?v(se,{language:W,ignoreIllegals:!0}):A(se);$.innerHTML=ue.value,$.dataset.highlighted="yes",S($,W,ue.language),$.result={language:ue.language,re:ue.relevance,relevance:ue.relevance},ue.secondBest&&($.secondBest={language:ue.secondBest.language,relevance:ue.secondBest.relevance}),ne("after:highlightElement",{el:$,result:ue,text:se})}function N($){f=sl(f,$)}const R=()=>{P(),pn("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function U(){P(),pn("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let M=!1;function P(){function $(){P()}if(document.readyState==="loading"){M||window.addEventListener("DOMContentLoaded",$,!1),M=!0;return}document.querySelectorAll(f.cssSelector).forEach(O)}function j($,q){let W=null;try{W=q(n)}catch(se){if(Yt("Language definition for '{}' could not be registered.".replace("{}",$)),c)Yt(se);else throw se;W=g}W.name||(W.name=$),r[$]=W,W.rawDefinition=q.bind(null,n),W.aliases&&ae(W.aliases,{languageName:$})}function F($){delete r[$];for(const q of Object.keys(s))s[q]===$&&delete s[q]}function ie(){return Object.keys(r)}function o($){return $=($||"").toLowerCase(),r[$]||r[s[$]]}function ae($,{languageName:q}){typeof $=="string"&&($=[$]),$.forEach(W=>{s[W.toLowerCase()]=q})}function de($){const q=o($);return q&&!q.disableAutodetect}function G($){$["before:highlightBlock"]&&!$["before:highlightElement"]&&($["before:highlightElement"]=q=>{$["before:highlightBlock"](Object.assign({block:q.el},q))}),$["after:highlightBlock"]&&!$["after:highlightElement"]&&($["after:highlightElement"]=q=>{$["after:highlightBlock"](Object.assign({block:q.el},q))})}function Z($){G($),i.push($)}function le($){const q=i.indexOf($);q!==-1&&i.splice(q,1)}function ne($,q){const W=$;i.forEach(function(se){se[W]&&se[W](q)})}function ye($){return pn("10.7.0","highlightBlock will be removed entirely in v12.0"),pn("10.7.0","Please use highlightElement now."),O($)}Object.assign(n,{highlight:v,highlightAuto:A,highlightAll:P,highlightElement:O,highlightBlock:ye,configure:N,initHighlighting:R,initHighlightingOnLoad:U,registerLanguage:j,unregisterLanguage:F,listLanguages:ie,getLanguage:o,registerAliases:ae,autoDetection:de,inherit:sl,addPlugin:Z,removePlugin:le}),n.debugMode=function(){c=!1},n.safeMode=function(){c=!0},n.versionString=wp,n.regex={concat:tn,lookahead:Ol,either:Yo,optional:Pf,anyNumberOfTimes:Df};for(const $ in tr)typeof tr[$]=="object"&&Ll(tr[$]);return Object.assign(n,tr),n},bn=Gl({});bn.newInstance=()=>Gl({});var Sp=bn;bn.HighlightJS=bn;bn.default=bn;const Ee=Nf(Sp),ol="[A-Za-z$_][0-9A-Za-z$_]*",Ep=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Tp=["true","false","null","undefined","NaN","Infinity"],ql=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Wl=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Kl=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ip=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ap=[].concat(Kl,ql,Wl);function vo(n){const r=n.regex,s=(W,{after:se})=>{const ue="</"+W[0].slice(1);return W.input.indexOf(ue,se)!==-1},i=ol,c={begin:"<>",end:"</>"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,g={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(W,se)=>{const ue=W[0].length+W.index,xe=W.input[ue];if(xe==="<"||xe===","){se.ignoreMatch();return}xe===">"&&(s(W,{after:ue})||se.ignoreMatch());let Me;const et=W.input.substring(ue);if(Me=et.match(/^\s*=/)){se.ignoreMatch();return}if((Me=et.match(/^\s+extends\s+/))&&Me.index===0){se.ignoreMatch();return}}},f={$pattern:ol,keyword:Ep,literal:Tp,built_in:Ap,"variable.language":Ip},h="[0-9](_?[0-9])*",w=`\\.(${h})`,v="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",I={className:"number",variants:[{begin:`(\\b(${v})((${w})|\\.)?|(${w}))[eE][+-]?(${h})\\b`},{begin:`\\b(${v})\\b((${w})\\b|\\.)?|(${w})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:f,contains:[]},A={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"css"}},O={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},N={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,_]},U={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},M=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,S,O,N,{match:/\$\d+/},I];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const P=[].concat(U,_.contains),j=P.concat([{begin:/(\s*)\(/,end:/\)/,keywords:f,contains:["self"].concat(P)}]),F={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:j},ie={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,r.concat(i,"(",r.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},o={relevance:0,match:r.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ql,...Wl]}},ae={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},de={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[F],illegal:/%/},G={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Z(W){return r.concat("(?!",W.join("|"),")")}const le={match:r.concat(/\b/,Z([...Kl,"super","import"].map(W=>`${W}\\s*\\(`)),i,r.lookahead(/\s*\(/)),className:"title.function",relevance:0},ne={begin:r.concat(/\./,r.lookahead(r.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ye={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},F]},$="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",q={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,r.lookahead($)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[F]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:f,exports:{PARAMS_CONTAINS:j,CLASS_REFERENCE:o},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),ae,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,S,O,N,U,{match:/\$\d+/},I,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},q,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[U,n.REGEXP_MODE,{className:"function",begin:$,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:j}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:c.begin,end:c.end},{match:d},{begin:g.begin,"on:begin":g.isTrulyOpeningTag,end:g.end}],subLanguage:"xml",contains:[{begin:g.begin,end:g.end,skip:!0,contains:["self"]}]}]},de,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[F,n.inherit(n.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[F]},le,G,ie,ye,{match:/\$[(.]/}]}}const mr="[A-Za-z$_][0-9A-Za-z$_]*",Vl=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Zl=["true","false","null","undefined","NaN","Infinity"],Ql=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Yl=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Jl=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Xl=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],ec=[].concat(Jl,Ql,Yl);function Cp(n){const r=n.regex,s=(W,{after:se})=>{const ue="</"+W[0].slice(1);return W.input.indexOf(ue,se)!==-1},i=mr,c={begin:"<>",end:"</>"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,g={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(W,se)=>{const ue=W[0].length+W.index,xe=W.input[ue];if(xe==="<"||xe===","){se.ignoreMatch();return}xe===">"&&(s(W,{after:ue})||se.ignoreMatch());let Me;const et=W.input.substring(ue);if(Me=et.match(/^\s*=/)){se.ignoreMatch();return}if((Me=et.match(/^\s+extends\s+/))&&Me.index===0){se.ignoreMatch();return}}},f={$pattern:mr,keyword:Vl,literal:Zl,built_in:ec,"variable.language":Xl},h="[0-9](_?[0-9])*",w=`\\.(${h})`,v="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",I={className:"number",variants:[{begin:`(\\b(${v})((${w})|\\.)?|(${w}))[eE][+-]?(${h})\\b`},{begin:`\\b(${v})\\b((${w})\\b|\\.)?|(${w})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:f,contains:[]},A={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"css"}},O={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},N={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,_]},U={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},M=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,S,O,N,{match:/\$\d+/},I];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const P=[].concat(U,_.contains),j=P.concat([{begin:/(\s*)\(/,end:/\)/,keywords:f,contains:["self"].concat(P)}]),F={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:j},ie={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,r.concat(i,"(",r.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},o={relevance:0,match:r.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ql,...Yl]}},ae={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},de={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[F],illegal:/%/},G={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Z(W){return r.concat("(?!",W.join("|"),")")}const le={match:r.concat(/\b/,Z([...Jl,"super","import"].map(W=>`${W}\\s*\\(`)),i,r.lookahead(/\s*\(/)),className:"title.function",relevance:0},ne={begin:r.concat(/\./,r.lookahead(r.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ye={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},F]},$="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",q={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,r.lookahead($)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[F]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:f,exports:{PARAMS_CONTAINS:j,CLASS_REFERENCE:o},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),ae,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,S,O,N,U,{match:/\$\d+/},I,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},q,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[U,n.REGEXP_MODE,{className:"function",begin:$,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:j}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:c.begin,end:c.end},{match:d},{begin:g.begin,"on:begin":g.isTrulyOpeningTag,end:g.end}],subLanguage:"xml",contains:[{begin:g.begin,end:g.end,skip:!0,contains:["self"]}]}]},de,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[F,n.inherit(n.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[F]},le,G,ie,ye,{match:/\$[(.]/}]}}function wo(n){const r=n.regex,s=Cp(n),i=mr,c=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],d={begin:[/namespace/,/\s+/,n.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},g={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:c},contains:[s.exports.CLASS_REFERENCE]},f={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},h=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],w={$pattern:mr,keyword:Vl.concat(h),literal:Zl,built_in:ec.concat(c),"variable.language":Xl},v={className:"meta",begin:"@"+i},I=(O,N,R)=>{const U=O.contains.findIndex(M=>M.label===N);if(U===-1)throw new Error("can not find mode to replace");O.contains.splice(U,1,R)};Object.assign(s.keywords,w),s.exports.PARAMS_CONTAINS.push(v);const _=s.contains.find(O=>O.scope==="attr"),A=Object.assign({},_,{match:r.concat(i,r.lookahead(/\s*\?:/))});s.exports.PARAMS_CONTAINS.push([s.exports.CLASS_REFERENCE,_,A]),s.contains=s.contains.concat([v,d,g,A]),I(s,"shebang",n.SHEBANG()),I(s,"use_strict",f);const S=s.contains.find(O=>O.label==="func.def");return S.relevance=0,Object.assign(s,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),s}function il(n){const r=n.regex,s=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],f={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},h={className:"meta",begin:/^(>>>|\.\.\.) /},w={className:"subst",begin:/\{/,end:/\}/,keywords:f,illegal:/#/},v={begin:/\{\{/,relevance:0},I={className:"string",contains:[n.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[n.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,h,v,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[n.BACKSLASH_ESCAPE,h,v,w]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[n.BACKSLASH_ESCAPE,v,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[n.BACKSLASH_ESCAPE,v,w]},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},_="[0-9](_?[0-9])*",A=`(\\b(${_}))?\\.(${_})|\\b(${_})\\.`,S=`\\b|${i.join("|")}`,O={className:"number",relevance:0,variants:[{begin:`(\\b(${_})|(${A}))[eE][+-]?(${_})[jJ]?(?=${S})`},{begin:`(${A})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${S})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${S})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${S})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${S})`},{begin:`\\b(${_})[jJ](?=${S})`}]},N={className:"comment",begin:r.lookahead(/# type:/),end:/$/,keywords:f,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},R={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:["self",h,O,I,n.HASH_COMMENT_MODE]}]};return w.contains=[I,O,h],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:f,illegal:/(<\/|\?)|=>/,contains:[h,O,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},I,N,n.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,s],scope:{1:"keyword",3:"title.function"},contains:[R]},{variants:[{match:[/\bclass/,/\s+/,s,/\s*/,/\(\s*/,s,/\s*\)/]},{match:[/\bclass/,/\s+/,s]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[O,R,I]}]}}function _o(n){const r=n.regex,s={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:r.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const c={className:"subst",begin:/\$\(/,end:/\)/,contains:[n.BACKSLASH_ESCAPE]},d=n.inherit(n.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),g={begin:/<<-?\s*(?=\w+)/,starts:{contains:[n.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},f={className:"string",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE,s,c]};c.contains.push(f);const h={match:/\\"/},w={className:"string",begin:/'/,end:/'/},v={match:/\\'/},I={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},n.NUMBER_MODE,s]},_=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],A=n.SHEBANG({binary:`(${_.join("|")})`,relevance:10}),S={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[n.inherit(n.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},O=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],N=["true","false"],R={match:/(\/[a-z._-]+)+/},U=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],M=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],P=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],j=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:O,literal:N,built_in:[...U,...M,"set","shopt",...P,...j]},contains:[A,n.SHEBANG(),S,I,d,g,R,f,h,w,v,s]}}function Mp(n){const r={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},s={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],c={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:i},contains:[r,s,n.QUOTE_STRING_MODE,c,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}const Np=n=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:n.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:n.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Rp=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Lp=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],$p=[...Rp,...Lp],Op=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Dp=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Pp=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Up=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Bp(n){const r=n.regex,s=Np(n),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},c="and or not only",d=/@-?\w[\w]*(-\w+)*/,g="[a-zA-Z-][a-zA-Z0-9_-]*",f=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[s.BLOCK_COMMENT,i,s.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+g,relevance:0},s.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+Dp.join("|")+")"},{begin:":(:)?("+Pp.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Up.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[s.BLOCK_COMMENT,s.HEXCOLOR,s.IMPORTANT,s.CSS_NUMBER_MODE,...f,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...f,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},s.FUNCTION_DISPATCH]},{begin:r.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:d},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:c,attribute:Op.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...f,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+$p.join("|")+")\\b"}]}}function xo(n){const r=n.regex,s=r.concat(/[\p{L}_]/u,r.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),i=/[\p{L}0-9._:-]+/u,c={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},d={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},g=n.inherit(d,{begin:/\(/,end:/\)/}),f=n.inherit(n.APOS_STRING_MODE,{className:"string"}),h=n.inherit(n.QUOTE_STRING_MODE,{className:"string"}),w={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:i,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[c]},{begin:/'/,end:/'/,contains:[c]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[d,h,f,g,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[d,g,h,f]}]}]},n.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},c,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[h]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[w],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[w],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:r.concat(/</,r.lookahead(r.concat(s,r.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:s,relevance:0,starts:w}]},{className:"tag",begin:r.concat(/<\//,r.lookahead(r.concat(s,/>/))),contains:[{className:"name",begin:s,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function al(n){const r=n.regex,s={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},c={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},d={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},g={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},f=/[A-Za-z][A-Za-z0-9+.-]*/,h={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:r.concat(/\[.+?\]\(/,f,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},w={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},v={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},I=n.inherit(w,{contains:[]}),_=n.inherit(v,{contains:[]});w.contains.push(_),v.contains.push(I);let A=[s,h];return[w,v,I,_].forEach(R=>{R.contains=R.contains.concat(A)}),A=A.concat(w,v),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:A},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:A}]}]},s,d,w,v,{className:"quote",begin:"^>\\s+",contains:A,end:"$"},c,i,h,g,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function ll(n){const r="true false yes no null",s="[\\w#;/?:@&=+$,.~*'()[\\]]+",i={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},c={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},d={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},g={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[n.BACKSLASH_ESCAPE,c]},f=n.inherit(g,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},A={end:",",endsWithParent:!0,excludeEnd:!0,keywords:r,relevance:0},S={begin:/\{/,end:/\}/,contains:[A],illegal:"\\n",relevance:0},O={begin:"\\[",end:"\\]",contains:[A],illegal:"\\n",relevance:0},N=[i,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+s},{className:"type",begin:"!<"+s+">"},{className:"type",begin:"!"+s},{className:"type",begin:"!!"+s},{className:"meta",begin:"&"+n.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+n.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},n.HASH_COMMENT_MODE,{beginKeywords:r,keywords:{literal:r}},_,{className:"number",begin:n.C_NUMBER_RE+"\\b",relevance:0},S,O,d,g],R=[...N];return R.pop(),R.push(f),A.contains=R,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:N}}function zp(n){const r=n.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:r.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:r.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}const Fp=["disabled","aria-label","aria-expanded"],Hp=["aria-label"],jp=["disabled","aria-selected","onClick"],Gp={__name:"NeoSelect",props:{modelValue:{default:""},options:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:"请选择"}},emits:["update:modelValue","change"],setup(n,{emit:r}){const s=n,i=r,c=oe(null),d=oe(null),g=oe(!1),f=`neo-select-${Math.random().toString(36).slice(2,10)}`,h=V(()=>s.options.map((M,P)=>M&&typeof M=="object"&&!Array.isArray(M)?{value:Object.prototype.hasOwnProperty.call(M,"value")?M.value:M.label,label:String(M.label??M.value??""),disabled:M.disabled===!0,key:String(M.key??M.value??P)}:{value:M,label:String(M??""),disabled:!1,key:`${String(M)}-${P}`})),w=V(()=>h.value.find(M=>Object.is(M.value,s.modelValue))),v=V(()=>{var M;return((M=w.value)==null?void 0:M.label)||"请选择"});function I(){g.value=!1}async function _(M=!1){var ie,o;if(s.disabled||g.value)return;g.value=!0,await Ye();const P=[...((ie=d.value)==null?void 0:ie.querySelectorAll("button:not(:disabled)"))||[]],F=((o=d.value)==null?void 0:o.querySelector('button[aria-selected="true"]'))||(M?P.at(-1):P[0]);F==null||F.focus()}function A(){g.value?I():_()}function S(M){M.disabled||(I(),Object.is(M.value,s.modelValue)||(i("update:modelValue",M.value),i("change",M.value)),Ye(()=>{var P,j;return(j=(P=c.value)==null?void 0:P.querySelector(".neo-select-trigger"))==null?void 0:j.focus()}))}function O(M){(M.key==="ArrowDown"||M.key==="ArrowUp")&&(M.preventDefault(),_(M.key==="ArrowUp")),M.key==="Escape"&&g.value&&(M.preventDefault(),M.stopPropagation(),I())}function N(M,P){var o,ae;const j=[...((o=d.value)==null?void 0:o.querySelectorAll("button:not(:disabled)"))||[]];if(!j.length)return;const F=j.indexOf(document.activeElement),ie=P==="start"?0:P==="end"?j.length-1:(F+P+j.length)%j.length;M.preventDefault(),(ae=j[ie])==null||ae.focus()}function R(M){M.key==="ArrowDown"?N(M,1):M.key==="ArrowUp"?N(M,-1):M.key==="Home"?N(M,"start"):M.key==="End"?N(M,"end"):M.key==="Escape"?(M.preventDefault(),M.stopPropagation(),I(),Ye(()=>{var P,j;return(j=(P=c.value)==null?void 0:P.querySelector(".neo-select-trigger"))==null?void 0:j.focus()})):M.key==="Tab"&&I()}function U(M){var P;g.value&&!((P=c.value)!=null&&P.contains(M.target))&&I()}return zo(()=>document.addEventListener("pointerdown",U)),Jt(()=>document.removeEventListener("pointerdown",U)),(M,P)=>(m(),b("span",{ref_key:"root",ref:c,class:Q(["neo-select",{open:g.value,disabled:n.disabled}])},[a("button",{type:"button",class:"neo-select-trigger",disabled:n.disabled,"aria-label":n.ariaLabel,"aria-haspopup":"listbox","aria-expanded":g.value,"aria-controls":f,onClick:A,onKeydown:O},[a("span",null,x(v.value),1)],40,Fp),g.value?(m(),b("span",{key:0,id:f,ref_key:"menu",ref:d,class:"neo-select-menu",role:"listbox","aria-label":n.ariaLabel,onKeydown:R},[(m(!0),b(Y,null,ce(h.value,j=>(m(),b("button",{key:j.key,type:"button",role:"option",disabled:j.disabled,class:Q({selected:Object.is(j.value,n.modelValue)}),"aria-selected":Object.is(j.value,n.modelValue),onClick:F=>S(j)},x(j.label),11,jp))),128))],40,Hp)):C("",!0)],2))}},nr=bl(Gp,[["__scopeId","data-v-edb5aaac"]]),qp=["aria-busy"],Wp={class:"prompt-config-toolbar"},Kp={class:"prompt-config-scope"},Vp={class:"prompt-config-actions"},Zp=["disabled"],Qp=["disabled"],Yp=["disabled"],Jp={class:"prompt-config-mode"},Xp=["disabled"],eh={key:0,value:"legacy_full_override"},th={class:"prompt-config-note"},nh={key:0,class:"prompt-config-note",role:"status"},sh={key:1,class:"runtime-context-empty",role:"status"},rh=["disabled"],oh={key:3,class:"prompt-config-preview"},ih={key:4,class:"prompt-config-preview"},ah={key:5,class:"prompt-config-error",role:"alert"},lh={__name:"PromptConfigEditor",props:{endpoint:{type:String,required:!0},session:{type:Boolean,default:!1},runtimePrompt:{type:Object,default:void 0}},emits:["saved"],setup(n,{emit:r}){const s=n,i=r,c=oe(""),d=oe(""),g=oe(""),f=oe(!1),h=oe("append"),w=oe("append"),v=oe(!1),I=oe(""),_=oe(!1),A=V(()=>{var G;return(G=s.runtimePrompt)!=null&&G.sessionPrompt?s.runtimePrompt.sessionPrompt.deferred:_.value}),S=V(()=>{var G,Z;return((Z=(G=s.runtimePrompt)==null?void 0:G.systemPrompt)==null?void 0:Z.replace("__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__",""))||I.value}),O=oe(!1),N=oe(!1),R=oe(!1),U=oe("");let M=0,P;const j=V(()=>c.value!==d.value||s.session&&h.value!==w.value),F=V(()=>R.value&&j.value&&!!c.value.trim()&&!O.value&&!N.value);function ie(G,Z){const le=String((G==null?void 0:G.errorCode)||"");return le.includes("CONFLICT")?"配置已更新,请重新加载":le.includes("INVALID")?"提示词内容无效":le.includes("TOO_LARGE")?"提示词内容过长":le.includes("BUSY")?"配置忙碌,请稍后重试":Z}function o(G){if(typeof(G==null?void 0:G.content)!="string"||typeof(G==null?void 0:G.revision)!="string")throw new Error("invalid payload");c.value=G.content,d.value=G.content,g.value=G.revision,f.value=G.override===!0,h.value=G.mode==="inherit"?"append":G.mode||"append",w.value=h.value,v.value=h.value==="legacy_full_override",I.value=G.effectiveContent||"",_.value=G.deferred===!0,R.value=!0}async function ae(){if(N.value)return;P==null||P.abort(),P=new AbortController;const G=++M,Z=s.endpoint;O.value=!0,U.value="";try{const le=await ke(Z,{cache:"no-store",signal:P.signal}),ne=await le.json();if(G!==M||Z!==s.endpoint)return;if(!le.ok||(ne==null?void 0:ne.ok)===!1||ne!=null&&ne.error){U.value=ie(ne,"加载失败");return}o(ne)}catch(le){G===M&&(le==null?void 0:le.name)!=="AbortError"&&(U.value="加载失败")}finally{G===M&&(O.value=!1)}}async function de(G=!1){if(N.value||O.value||!R.value||!G&&!F.value||!G&&v.value&&h.value!=="legacy_full_override"&&!window.confirm("转换后将重新合成全局和工具上下文。请确认编辑框只保留你需要的自定义指令,避免重复注入旧内容。"))return;const Z=M,le=s.endpoint;N.value=!0,U.value="";try{const ne=await ke(le,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(G?{reset:!0,revision:g.value}:{content:c.value,revision:g.value,...s.session?{mode:h.value}:{}}),signal:P==null?void 0:P.signal}),ye=await ne.json();if(Z!==M||le!==s.endpoint)return;if(!ne.ok||(ye==null?void 0:ye.ok)===!1||ye!=null&&ye.error){U.value=ie(ye,"保存失败");return}o(ye),i("saved",ye)}catch(ne){Z===M&&(ne==null?void 0:ne.name)!=="AbortError"&&(U.value="保存失败")}finally{Z===M&&(N.value=!1)}}return De(()=>s.endpoint,()=>{M+=1,P==null||P.abort(),c.value="",d.value="",g.value="",R.value=!1,N.value=!1,f.value=!1,h.value=w.value="append",v.value=!1,I.value="",_.value=!1,ae()},{immediate:!0}),Jt(()=>{M+=1,P==null||P.abort()}),(G,Z)=>{var le,ne;return m(),b("form",{class:"prompt-config-editor","aria-busy":O.value||N.value,onSubmit:Z[5]||(Z[5]=he(ye=>de(),["prevent"]))},[a("div",Wp,[a("span",Kp,x(n.session?"当前会话":"系统提示词"),1),a("div",Vp,[a("button",{type:"button",class:"mini-button",disabled:O.value||N.value,onClick:ae},"重新加载",8,Zp),n.session?(m(),b("button",{key:0,type:"button",class:"mini-button",disabled:!R.value||!f.value||O.value||N.value,onClick:Z[0]||(Z[0]=ye=>de(!0))},"恢复默认",8,Qp)):C("",!0),a("button",{type:"submit",class:"primary",disabled:!F.value},x(N.value?"保存中":"保存"),9,Yp)])]),n.session&&R.value?(m(),b(Y,{key:0},[a("label",Jp,[Z[8]||(Z[8]=Qn("会话指令模式 ",-1)),$e(a("select",{"onUpdate:modelValue":Z[1]||(Z[1]=ye=>h.value=ye),"aria-label":"会话指令模式",disabled:O.value||N.value},[Z[6]||(Z[6]=a("option",{value:"append"},"继承全局并追加",-1)),Z[7]||(Z[7]=a("option",{value:"replace_base"},"仅替换全局正文(保留工具和插件上下文)",-1)),v.value?(m(),b("option",eh,"旧版完整覆盖(不继承)")):C("",!0)],8,Xp),[[ug,h.value]])]),a("p",th,x(f.value?"已配置会话指令":"当前继承全局;下方仅编辑会话追加指令")+"。工具开关只更新运行时能力说明,不改写自定义文本。",1),v.value?(m(),b("p",nh,"旧版完整覆盖保留了原文,可能包含过期的工具说明。请手动保留自定义指令并切换模式,或恢复默认;不会自动删改旧内容。")):C("",!0)],64)):C("",!0),O.value&&!R.value?(m(),b("div",sh,"加载中")):$e((m(),b("textarea",{key:2,"onUpdate:modelValue":Z[2]||(Z[2]=ye=>c.value=ye),class:"prompt-config-textarea","aria-label":"系统提示词",disabled:!R.value||O.value||N.value,spellcheck:"false",autocomplete:"off",rows:"18",onKeydown:[Z[3]||(Z[3]=at(he(ye=>de(),["ctrl","prevent"]),["enter"])),Z[4]||(Z[4]=at(he(ye=>de(),["meta","prevent"]),["enter"]))]},null,40,rh)),[[nt,c.value]]),n.session&&R.value?(m(),b("details",oh,[a("summary",null,"当前有效上下文(只读)"+x((ne=(le=n.runtimePrompt)==null?void 0:le.sessionPrompt)!=null&&ne.deferred?" · 有待生效修改":""),1),a("pre",null,x(S.value),1)])):C("",!0),n.session&&A.value?(m(),b("details",ih,[Z[9]||(Z[9]=a("summary",null,"已保存配置的合成预览(下一轮生效)",-1)),a("pre",null,x(I.value),1)])):C("",!0),U.value?(m(),b("div",ah,x(U.value),1)):C("",!0)],40,qp)}}},cl=bl(lh,[["__scopeId","data-v-41954d08"]]),br=1,Oo=2,ei=3,ti=4,ni=5,si=6,ri=7,oi=8,kr=9,yr=10,Do=11,lr=12,Jn=13,Xn=14,es=15,ts=16,hn=17,Po=18,Xe=19,ns=20,$t=21,tc=22,ss=23,vr=24,yn=25,nc=26,Uo=27,cr=28,ur=29,wt=30,ht=31,sr=101,ul=102,sc=103,dl=104,So=105,mn=1,ii=2,rc=4,oc=8,ic=16;function ch(n){switch(n){case mn:return"href";case ii:return"src";case rc:return"class";case oc:return"checked";case ic:return"start"}}const uh=n=>{switch(n){case 1:return ei;case 2:return ti;case 3:return ni;case 4:return si;case 5:return ri;default:return oi}},dh=uh,gl=24;function gh(n){const r=new Uint32Array(gl);return r[0]=br,{renderer:n,text:"",pending:"",tokens:r,len:0,token:br,fence_end:0,blockquote_idx:0,hr_char:"",hr_chars:0,fence_start:0,spaces:new Uint8Array(gl),indent:"",indent_len:0,table_state:0}}function fl(n){n.pending.length>0&&Oe(n,`
67
+ `)}function be(n){n.text.length!==0&&(console.assert(n.len>0,"Never adding text to root"),n.renderer.add_text(n.renderer.data,n.text),n.text="")}function Ae(n){console.assert(n.len>0,"No nodes to end"),n.len-=1,n.token=n.tokens[n.len],n.renderer.end_token(n.renderer.data)}function ve(n,r){(n.tokens[n.len]===vr||n.tokens[n.len]===ss)&&r!==yn&&Ae(n),n.len+=1,n.tokens[n.len]=r,n.token=r,n.renderer.add_token(n.renderer.data,r)}function fh(n,r,s){for(;s<=n.len;){if(n.tokens[s]===r)return s;s+=1}return-1}function Qt(n,r){for(n.fence_start=0;n.len>r;)Ae(n)}function rr(n,r){let s=0;for(let i=0;i<=n.len&&(r-=n.spaces[i],!(r<0));i+=1)switch(n.tokens[i]){case kr:case yr:case ns:case yn:s=i;break}for(;n.len>s;)Ae(n);return r}function Eo(n,r){let s=-1,i=-1;for(let c=n.blockquote_idx+1;c<=n.len;c+=1)if(n.tokens[c]===yn){if(n.indent_len<n.spaces[c]){i=-1;break}i=c}else n.tokens[c]===r&&(s=c);return i===-1?s===-1?(Qt(n,n.blockquote_idx),ve(n,r),!0):(Qt(n,s),!1):(Qt(n,i),ve(n,r),!0)}function To(n,r){ve(n,yn),n.spaces[n.len]=n.indent_len+r,_t(n),n.token=sc}function _t(n){n.indent="",n.indent_len=0,n.pending=""}function Bo(n){switch(n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return!0;default:return!1}}function ph(n){switch(n){case 32:case 58:case 59:case 41:case 44:case 33:case 46:case 63:case 93:case 10:return!0;default:return!1}}function hh(n){return Bo(n)||ph(n)}function Oe(n,r){for(const s of r){if(n.token===sr){switch(s){case" ":n.indent_len+=1;continue;case" ":n.indent_len+=4;continue}let c=rr(n,n.indent_len);n.indent_len=0,n.token=n.tokens[n.len],c>0&&Oe(n," ".repeat(c))}const i=n.pending+s;switch(n.token){case $t:case br:case ns:case vr:case ss:switch(console.assert(n.text.length===0,"Root should not have any text"),n.pending[0]){case void 0:n.pending=s;continue;case" ":console.assert(n.pending.length===1),n.pending=s,n.indent+=" ",n.indent_len+=1;continue;case" ":console.assert(n.pending.length===1),n.pending=s,n.indent+=" ",n.indent_len+=4;continue;case`
68
+ `:if(console.assert(n.pending.length===1),n.tokens[n.len]===yn&&n.token===$t){Ae(n),_t(n),n.pending=s;continue}Qt(n,n.blockquote_idx),_t(n),n.blockquote_idx=0,n.fence_start=0,n.pending=s;continue;case"#":switch(s){case"#":if(n.pending.length<6){n.pending=i;continue}break;case" ":rr(n,n.indent_len),ve(n,dh(n.pending.length)),_t(n);continue}break;case">":{const d=fh(n,ns,n.blockquote_idx+1);d===-1?(Qt(n,n.blockquote_idx),n.blockquote_idx+=1,n.fence_start=0,ve(n,ns)):n.blockquote_idx=d,_t(n),n.pending=s;continue}case"-":case"*":case"_":if(n.hr_chars===0&&(console.assert(n.pending.length===1,"Pending should be one character"),n.hr_chars=1,n.hr_char=n.pending),n.hr_chars>0){switch(s){case n.hr_char:n.hr_chars+=1,n.pending=i;continue;case" ":n.pending=i;continue;case`
69
+ `:if(n.hr_chars<3)break;rr(n,n.indent_len),n.renderer.add_token(n.renderer.data,tc),n.renderer.end_token(n.renderer.data),_t(n),n.hr_chars=0;continue}n.hr_chars=0}if(n.pending[0]!=="_"&&n.pending[1]===" "){Eo(n,ss),To(n,2),Oe(n,i.slice(2));continue}break;case"`":if(n.pending.length<3){if(s==="`"){n.pending=i,n.fence_start=i.length;continue}n.fence_start=0;break}switch(s){case"`":n.pending.length===n.fence_start?(n.pending=i,n.fence_start=i.length):(ve(n,Oo),_t(n),n.fence_start=0,Oe(n,i));continue;case`
70
+ `:{rr(n,n.indent_len),ve(n,yr),n.pending.length>n.fence_start&&n.renderer.set_attr(n.renderer.data,rc,n.pending.slice(n.fence_start)),_t(n),n.token=sr;continue}default:n.pending=i;continue}case"+":if(s!==" ")break;Eo(n,ss),To(n,2);continue;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":if(n.pending[n.pending.length-1]==="."){if(s!==" ")break;Eo(n,vr)&&n.pending!=="1."&&n.renderer.set_attr(n.renderer.data,ic,n.pending.slice(0,-1)),To(n,n.pending.length+1);continue}else{const d=s.charCodeAt(0);if(d===46||Bo(d)){n.pending=i;continue}}break;case"|":Qt(n,n.blockquote_idx),ve(n,Uo),ve(n,cr),n.pending="",Oe(n,s);continue}let c=i;if(n.token===$t)n.token=n.tokens[n.len],n.renderer.add_token(n.renderer.data,$t),n.renderer.end_token(n.renderer.data);else if(n.indent_len>=4){let d=0;for(;d<4;d+=1)if(n.indent[d]===" "){d=d+1;break}c=n.indent.slice(d)+i,ve(n,kr)}else ve(n,Oo);_t(n),Oe(n,c);continue;case Uo:if(n.table_state===1)switch(s){case"-":case" ":case"|":case":":n.pending=i;continue;case`
71
+ `:n.table_state=2,n.pending="";continue;default:Ae(n),n.table_state=0;break}else switch(n.pending){case"|":ve(n,cr),n.pending="",Oe(n,s);continue;case`
72
+ `:Ae(n),n.pending="",n.table_state=0,Oe(n,s);continue}break;case cr:switch(n.pending){case"":break;case"|":ve(n,ur),Ae(n),n.pending="",Oe(n,s);continue;case`
73
+ `:Ae(n),n.table_state=Math.min(n.table_state+1,2),n.pending="",Oe(n,s);continue;default:ve(n,ur),Oe(n,s);continue}break;case ur:if(n.pending==="|"){be(n),Ae(n),n.pending="",Oe(n,s);continue}break;case kr:switch(i){case`
74
+ `:case`
75
+ `:case`
76
+ `:case`
77
+ `:case`
78
+ `:n.text+=`
79
+ `,n.pending="";continue;case`
80
+ `:case`
81
+ `:case`
82
+ `:case`
83
+ `:n.pending=i;continue;default:n.pending.length!==0?(be(n),Ae(n),n.pending=s):n.text+=s;continue}case yr:switch(s){case"`":n.pending=i;continue;case`
84
+ `:if(i.length===n.fence_start+n.fence_end+1){be(n),Ae(n),n.pending="",n.fence_start=0,n.fence_end=0,n.token=sr;continue}n.token=sr;break;case" ":if(n.pending[0]===`
85
+ `){n.pending=i,n.fence_end+=1;continue}break}n.text+=n.pending,n.pending=s,n.fence_end=1;continue;case Do:switch(s){case"`":i.length===n.fence_start+ +(n.pending[0]===" ")?(be(n),Ae(n),n.pending="",n.fence_start=0):n.pending=i;continue;case`
86
+ `:n.text+=n.pending,n.pending="",n.token=$t,n.blockquote_idx=0,be(n);continue;case" ":n.text+=n.pending,n.pending=s;continue;default:n.text+=i,n.pending="";continue}case sc:switch(n.pending.length){case 0:if(s!=="[")break;n.pending=i;continue;case 1:if(s!==" "&&s!=="x")break;n.pending=i;continue;case 2:if(s!=="]")break;n.pending=i;continue;case 3:if(s!==" ")break;n.renderer.add_token(n.renderer.data,nc),n.pending[1]==="x"&&n.renderer.set_attr(n.renderer.data,oc,""),n.renderer.end_token(n.renderer.data),n.pending=" ";continue}n.token=n.tokens[n.len],n.pending="",Oe(n,i);continue;case Xn:case es:{let d="*",g=lr;if(n.token===es&&(d="_",g=Jn),d===n.pending){if(be(n),d===s){Ae(n),n.pending="";continue}ve(n,g),n.pending=s;continue}break}case lr:case Jn:{let d="*",g=Xn;switch(n.token===Jn&&(d="_",g=es),n.pending){case d:d===s?n.tokens[n.len-1]===g?n.pending=i:(be(n),ve(n,g),n.pending=""):(be(n),Ae(n),n.pending=s);continue;case d+d:const f=n.token;be(n),Ae(n),Ae(n),d!==s?(ve(n,f),n.pending=s):n.pending="";continue}break}case ts:if(i==="~~"){be(n),Ae(n),n.pending="";continue}break;case So:s===`
87
+ `?(be(n),ve(n,wt),n.pending=""):(n.token=n.tokens[n.len],n.pending[0]==="\\"?n.text+="[":n.text+="$$",n.pending="",Oe(n,s));continue;case wt:if(i==="\\]"||i==="$$"){be(n),Ae(n),n.pending="";continue}break;case ht:if(i==="\\)"||n.pending[0]==="$"){be(n),Ae(n),s===")"?n.pending="":n.pending=s;continue}break;case ul:i==="http://"||i==="https://"?(be(n),ve(n,Po),n.pending=i,n.text=i):"http:/"[n.pending.length]===s||"https:/"[n.pending.length]===s?n.pending=i:(n.token=n.tokens[n.len],Oe(n,s));continue;case hn:case Xe:if(n.pending==="]"){be(n),s==="("?n.pending=i:(Ae(n),n.pending=s);continue}if(n.pending[0]==="]"&&n.pending[1]==="("){if(s===")"){const d=n.token===hn?mn:ii,g=n.pending.slice(2);n.renderer.set_attr(n.renderer.data,d,g),Ae(n),n.pending=""}else n.pending+=s;continue}break;case Po:s===" "||s===`
88
+ `||s==="\\"?(n.renderer.set_attr(n.renderer.data,mn,n.pending),be(n),Ae(n),n.pending=s):(n.text+=s,n.pending=i);continue;case dl:if(i.startsWith("<br")){if(i.length===3||s===" "||s==="/"&&(i.length===4||n.pending[n.pending.length-1]===" ")){n.pending=i;continue}if(s===">"){be(n),n.token=n.tokens[n.len],n.renderer.add_token(n.renderer.data,$t),n.renderer.end_token(n.renderer.data),n.pending="";continue}}n.token=n.tokens[n.len],n.text+="<",n.pending=n.pending.slice(1),Oe(n,s);continue}switch(n.pending[0]){case"\\":if(n.token===Xe||n.token===wt||n.token===ht)break;switch(s){case"(":be(n),ve(n,ht),n.pending="";continue;case"[":n.token=So,n.pending=i;continue;case`
89
+ `:n.pending=s;continue;default:let c=s.charCodeAt(0);n.pending="",n.text+=Bo(c)||c>=65&&c<=90||c>=97&&c<=122?i:s;continue}case`
90
+ `:switch(n.token){case Xe:case wt:case ht:break;case ei:case ti:case ni:case si:case ri:case oi:be(n),Qt(n,n.blockquote_idx),n.blockquote_idx=0,n.pending=s;continue;default:be(n),n.pending=s,n.token=$t,n.blockquote_idx=0;continue}break;case"<":if(n.token!==Xe&&n.token!==wt&&n.token!==ht){be(n),n.pending=i,n.token=dl;continue}break;case"`":if(n.token===Xe)break;s==="`"?(n.fence_start+=1,n.pending=i):(n.fence_start+=1,be(n),ve(n,Do),n.text=s===" "||s===`
91
+ `?"":s,n.pending="");continue;case"_":case"*":{if(n.token===Xe||n.token===wt||n.token===ht||n.token===Xn)break;let c=lr,d=Xn;const g=n.pending[0];if(g==="_"&&(c=Jn,d=es),n.pending.length===1){if(g===s){n.pending=i;continue}if(s!==" "&&s!==`
92
+ `){be(n),ve(n,c),n.pending=s;continue}}else{if(g===s){be(n),ve(n,d),ve(n,c),n.pending="";continue}if(s!==" "&&s!==`
93
+ `){be(n),ve(n,d),n.pending=s;continue}}break}case"~":if(n.token!==Xe&&n.token!==ts){if(n.pending==="~"){if(s==="~"){n.pending=i;continue}}else if(s!==" "&&s!==`
94
+ `){be(n),ve(n,ts),n.pending=s;continue}}break;case"$":if(n.token!==Xe&&n.token!==ts&&n.pending==="$")if(s==="$"){n.token=So,n.pending=i;continue}else{if(hh(s.charCodeAt(0)))break;be(n),ve(n,ht),n.pending=s;continue}break;case"[":if(n.token!==Xe&&n.token!==hn&&n.token!==wt&&n.token!==ht&&s!=="]"){be(n),ve(n,hn),n.pending=s;continue}break;case"!":if(n.token!==Xe&&s==="["){be(n),ve(n,Xe),n.pending="";continue}break;case" ":if(n.pending.length===1&&s===" ")continue;break}if(n.token!==Xe&&n.token!==hn&&n.token!==wt&&n.token!==ht&&s==="h"&&(n.pending===" "||n.pending==="")){n.text+=n.pending,n.pending=s,n.token=ul;continue}n.text+=n.pending,n.pending=s}be(n)}function mh(n){return{add_token:bh,end_token:kh,add_text:yh,set_attr:ac,data:{nodes:[n,,,,,],index:0}}}function bh(n,r){var c;let s=n.nodes[n.index],i;switch(r){case br:return;case ns:i=document.createElement("blockquote");break;case Oo:i=document.createElement("p");break;case $t:i=document.createElement("br");break;case tc:i=document.createElement("hr");break;case ei:i=document.createElement("h1");break;case ti:i=document.createElement("h2");break;case ni:i=document.createElement("h3");break;case si:i=document.createElement("h4");break;case ri:i=document.createElement("h5");break;case oi:i=document.createElement("h6");break;case lr:case Jn:i=document.createElement("em");break;case Xn:case es:i=document.createElement("strong");break;case ts:i=document.createElement("s");break;case Do:i=document.createElement("code");break;case Po:case hn:i=document.createElement("a");break;case Xe:i=document.createElement("img");break;case ss:i=document.createElement("ul");break;case vr:i=document.createElement("ol");break;case yn:i=document.createElement("li");break;case nc:let d=i=document.createElement("input");d.type="checkbox",d.disabled=!0;break;case kr:case yr:s=s.appendChild(document.createElement("pre")),i=document.createElement("code");break;case Uo:i=document.createElement("table");break;case cr:switch(s.children.length){case 0:s=s.appendChild(document.createElement("thead"));break;case 1:s=s.appendChild(document.createElement("tbody"));break;default:s=s.children[1]}i=document.createElement("tr");break;case ur:i=document.createElement(((c=s.parentElement)==null?void 0:c.tagName)==="THEAD"?"th":"td");break;case wt:i=document.createElement("equation-block");break;case ht:i=document.createElement("equation-inline");break}n.nodes[++n.index]=s.appendChild(i)}function kh(n){n.index-=1}function yh(n,r){n.nodes[n.index].appendChild(document.createTextNode(r))}function ac(n,r,s){n.nodes[n.index].setAttribute(ch(r),s)}const vh={__name:"StreamingMarkdown",props:{text:{type:String,default:""},exposedResources:{type:Array,default:()=>[]}},setup(n){const r=n,s=oe(null);let i,c="",d="",g;function f(){g&&clearTimeout(g),g=void 0}function h(){f(),g=setTimeout(()=>{g=void 0,i!=null&&i.pending&&c&&S(`${c}
95
+ `,c)},80)}function w(O){const N=String(O||"").trim();return N?/^(?:https?:|mailto:|\/|#)/i.test(N)?!0:!/^[a-z][a-z\d+.-]*:/i.test(N):!1}function v(O){const N=String(O||"").trim();return r.exposedResources.find(R=>String((R==null?void 0:R.reference)||"").trim()===N)}function I(O){const N=Number(O);if(!Number.isFinite(N)||N<=0)return"";const R=["B","KB","MB","GB"];let U=N,M=0;for(;U>=1024&&M<R.length-1;)U/=1024,M+=1;return`${U>=10||M===0?Math.round(U):U.toFixed(1)}${R[M]}`}function _(O){return{...mh(O),set_attr(R,U,M){const P=U===mn?v(M):void 0,j=(P==null?void 0:P.url)||M;if(!((U===mn||U===ii)&&!w(j))&&(ac(R,U,j),U===mn)){const F=R.nodes[R.index];if(P){if(F.classList.add("inline-resource-link",`inline-resource-${P.kind||"link"}`),P.kind==="download"||P.downloadName){F.setAttribute("download",P.downloadName||P.label||""),F.setAttribute("title",`下载 ${P.label||P.downloadName||"资源"}`),F.removeAttribute("target"),F.removeAttribute("rel"),F.dataset.resourceDownload="true",F.dataset.resourceExpiresAt=String(Number(P.expiresAt)||0);const ie=I(P.sizeBytes);ie&&(F.dataset.resourceSize=`(${ie})`)}}else F.setAttribute("target","_blank"),F.setAttribute("rel","noreferrer noopener")}}}}function A(O){if(!i)return;const N=String(O||"");if(f(),!N.startsWith(c)||d!==c){S(N),h();return}const R=N.slice(c.length);c=N,d=N,R&&Oe(i,R),h()}function S(O=r.text,N=O){const R=s.value;R&&(i&&fl(i),R.replaceChildren(),i=gh(_(R)),d=String(O||""),c=String(N||""),d&&Oe(i,d))}return zo(()=>{S(),h()}),De(()=>r.text,A,{flush:"post"}),De(()=>r.exposedResources,()=>S(),{deep:!0,flush:"post"}),Jt(()=>{f(),i&&fl(i),i=void 0}),(O,N)=>(m(),b("div",{ref_key:"root",ref:s,class:"streaming-markdown-content"},null,512))}},wh=["onDblclick"],_h=["aria-label","onClick"],xh=["title","onClick"],Sh=["aria-label","onClick"],Eh=Object.assign({name:"CwdTreeNode"},{__name:"CwdTreeNode",props:{nodes:{type:Array,default:()=>[]},children:{type:Object,default:()=>({})},expanded:{type:Object,default:()=>({})},selectedPath:{type:String,default:""},level:{type:Number,default:0},allowDelete:{type:Boolean,default:!0}},emits:["toggle","select","delete"],setup(n,{emit:r}){const s=r;return(i,c)=>{const d=dg("CwdTreeNode",!0);return m(!0),b(Y,null,ce(n.nodes,g=>(m(),b("div",{key:g.path,class:"cwd-tree-branch"},[a("div",{class:Q(["cwd-tree-row",{selected:n.selectedPath===g.path}]),style:ft({"--cwd-tree-level":n.level}),onDblclick:f=>s("toggle",g)},[a("button",{type:"button",class:"cwd-tree-toggle","aria-label":n.expanded[g.path]?"收起":"展开",onClick:he(f=>s("toggle",g),["stop"])},x(n.expanded[g.path]?"▾":"▸"),9,_h),a("button",{type:"button",class:"cwd-tree-name",title:g.path,onClick:f=>s("select",g)},[c[3]||(c[3]=a("span",{"aria-hidden":"true"},"◇",-1)),a("strong",null,x(g.name),1)],8,xh),n.allowDelete?(m(),b("button",{key:0,type:"button",class:"cwd-tree-delete","aria-label":`删除 ${g.name}`,onClick:he(f=>s("delete",g),["stop"])},"×",8,Sh)):C("",!0)],46,wh),n.expanded[g.path]&&n.children[g.path]?(m(),Ue(d,{key:0,nodes:n.children[g.path],children:n.children,expanded:n.expanded,"selected-path":n.selectedPath,level:n.level+1,onToggle:c[0]||(c[0]=f=>s("toggle",f)),onSelect:c[1]||(c[1]=f=>s("select",f)),onDelete:c[2]||(c[2]=f=>s("delete",f))},null,8,["nodes","children","expanded","selected-path","level"])):C("",!0)]))),128)}}});function Th(n,r=Date.now()){const s=typeof(n==null?void 0:n.startedAt)=="string"?Date.parse(n.startedAt):NaN;if(!Number.isSafeInteger(s)||s<0)return;if(n.status==="running"){const c=r-s;return Number.isSafeInteger(c)&&c>=0?c:void 0}if(!["completed","failed","killed"].includes(n.status))return;const i=typeof n.completedAt=="string"?Date.parse(n.completedAt):NaN;return Number.isSafeInteger(i)&&i>=s&&Number.isSafeInteger(n.durationMs)&&n.durationMs>=0&&n.durationMs===i-s?n.durationMs:void 0}function Ih(n){return n!=null&&n.live?{key:"running",label:"执行中"}:(n==null?void 0:n.titleStatus)==="failure"||(n==null?void 0:n.titleStatus)==="failed"||(n==null?void 0:n.kind)==="error"||n!=null&&n.toolError?{key:"failed",label:"失败"}:(n==null?void 0:n.titleStatus)==="success"?{key:"completed",label:"完成"}:{key:"unknown",label:"未提供"}}function Ah(n,r){const s=String(n||"").trim();if(!s)return"模型未配置";const i=String(r||"").trim();return i?`${s}(${i})`:s}function Ch(n,r){const s=n.map(g=>Math.max(1,Number(g.size)||0)),i=s.reduce((g,f)=>g+f,0);let c=0,d=0;return r(0),{update(g,f){const h=Math.floor(100*(c+s[g]*Math.max(0,Math.min(1,f)))/i);d=Math.max(d,Math.min(99,h)),r(d)},complete(g){this.update(g,1),c+=s[g]},succeed(){r(100)},fail(){r(0)}}}async function Mh(n,r,s){var f,h;const i=new URL(n,((f=globalThis.location)==null?void 0:f.href)||"http://localhost");i.pathname+="/chunks";const c=async(w,v,I)=>{const _=await ke(w,{method:v,headers:I?{"Content-Type":"application/json"}:{},body:I?JSON.stringify(I):void 0}),A=await _.json();if(!_.ok||(A==null?void 0:A.ok)===!1||A!=null&&A.error)throw new Error((A==null?void 0:A.error)||`上传失败 (${_.status})`);return A},d=await c(i,"POST",{name:r.name,size:r.size,mimeType:r.type||"application/octet-stream"});if(!d.uploadId||!Number.isSafeInteger(d.chunkBytes)||d.chunkBytes<=0)throw new Error("上传初始化响应无效");i.pathname+="/"+encodeURIComponent(d.uploadId);let g=0;try{for(;g<r.size;){const I=Math.min(r.size,g+d.chunkBytes);let _=!1;for(let A=0;A<3;A++)try{if((await Nh(i,r.slice(g,I),g,O=>s==null?void 0:s((g+O*(I-g))/r.size))).offset!==I)throw new Error("分片确认偏移无效");_=!0;break}catch(S){if(A===2)throw S;await new Promise(N=>setTimeout(N,400*(A+1)));const O=await c(i,"GET");if(O.offset===I){_=!0;break}if(O.offset!==g)throw new Error("上传进度不一致,请重新上传")}if(!_)throw new Error("分片上传失败");g=I,s==null||s(r.size?g/r.size:1)}const w=new URL(i);w.pathname+="/complete";const v=await c(w,"POST");if(!((h=v.file)!=null&&h.absolutePath))throw new Error("上传完成响应无效");return v}catch(w){throw await c(i,"DELETE").catch(()=>{}),w}}function Nh(n,r,s,i){return new Promise((c,d)=>{const g=new XMLHttpRequest;g.upload.onprogress=f=>{f.lengthComputable&&f.total&&i(f.loaded/f.total)},g.onload=()=>{try{const f=JSON.parse(g.responseText);if(g.status<200||g.status>=300||(f==null?void 0:f.ok)===!1||f!=null&&f.error)throw new Error((f==null?void 0:f.error)||`上传失败 (${g.status})`);c(f)}catch(f){d(f)}},g.onerror=()=>d(new Error("上传失败:网络连接异常")),g.onabort=()=>d(new Error("上传已取消")),g.ontimeout=()=>d(new Error("分片上传超时")),g.open("PATCH",n),g.setRequestHeader("Content-Type","application/octet-stream"),g.setRequestHeader("X-Upload-Offset",String(s)),g.send(r)})}function Rh({maxEntries:n=64,timeoutMs:r=15e3,createImage:s,fetchOriginal:i=s?null:(c,d)=>ke(c,{cache:"no-store",signal:d})}={}){if(s||(s=()=>new Image),!Number.isInteger(n)||n<1||n>512)throw new RangeError("maxEntries must be 1..512");if(!Number.isFinite(r)||r<1)throw new RangeError("timeoutMs must be positive");const c=new Map;let d="";const g=(_,A)=>JSON.stringify([_,A]);function f(_){const A=c.get(_);c.delete(_),A==null||A.cancel()}function h(){for(const _ of c.keys())f(_)}function w(_){_!==d&&(h(),d=_)}function v(_){f(g(d,_))}function I({sessionId:_,originalUrl:A,available:S=!0}){const O={sessionId:_,originalUrl:A},N=Z=>Object.freeze({...O,state:Z});if(!_||_!==d)return Promise.resolve(N("stale"));const R=g(_,A);if(S===!1)return f(R),Promise.resolve(N("unavailable"));if(typeof A!="string"||!A.trim())return Promise.resolve(N("unknown"));const U=c.get(R);if(U)return c.delete(R),c.set(R,U),U.promise;for(;c.size>=n;)f(c.keys().next().value);let M,P,j,F=!1,ie;const o=new AbortController,ae=new Promise(Z=>{ie=Z}),de=Z=>{F||(F=!0,clearTimeout(P),o.abort(),j&&URL.revokeObjectURL(j),ie(Object.freeze(Z)))},G={promise:ae,cancel:()=>{de(N("stale")),M&&(M.src="")}};return c.set(R,G),P=setTimeout(()=>{de(N("unknown")),M&&(M.src="")},r),(async()=>{try{let Z=A;if(i&&!/^(data:|blob:)/i.test(A)){const ye=await i(A,o.signal);if(!ye.ok)throw new Error("Original unavailable");const $=await ye.blob();if(F)return;Z=j=URL.createObjectURL($)}if(F)return;M=s(),M.src=Z,await M.decode();const le=M.naturalWidth,ne=M.naturalHeight;Number.isInteger(le)&&le>0&&Number.isInteger(ne)&&ne>0?de({...O,state:"actual",width:le,height:ne,source:"original-decode"}):de(N("unknown"))}catch{de(N("unknown"))}})(),ae}return{setSession:w,load:I,invalidate:v,clear:h,get size(){return c.size}}}function Io(n,r){const s=typeof n=="string"&&/^(\d+)x(\d+)$/.exec(n),i=(r==null?void 0:r.state)==="actual"&&Number.isInteger(r.width)&&r.width>0&&Number.isInteger(r.height)&&r.height>0;return{requested:n==="auto"?"auto(自动策略)":typeof n=="string"&&n?n:"未提供",actual:i?`${r.width} × ${r.height}`:(r==null?void 0:r.state)==="unavailable"?"不可获取":"未知",mismatch:!!(i&&s&&(+s[1]!==r.width||+s[2]!==r.height))}}const Lh={class:"shell"},$h={class:"sidebar"},Oh={class:"brand-row logo-only"},Dh=["aria-label","aria-pressed","title"],Ph={class:"nav"},Uh=["title"],Bh={class:"session-entry-main"},zh={key:0,"aria-hidden":"true"},Fh={key:0,class:"sidebar-card prompt-stack"},Hh={class:"prompt-stack-head"},jh={class:"prompt-list"},Gh={key:0,class:"prompt-list-empty"},qh={key:1,class:"prompt-list-empty"},Wh=["onDragstart","onDblclick"],Kh={class:"prompt-card-body"},Vh={class:"prompt-card-actions"},Zh=["onClick"],Qh=["onClick"],Yh={key:1,class:"sidebar-footer"},Jh=["title"],Xh={class:"workspace"},em={class:"topbar"},tm={class:"top-actions"},nm=["onClick"],sm=["onKeydown"],rm=["title"],om=["aria-label","aria-pressed","title"],im={key:0,class:"content-grid chat-grid"},am={class:"chat-panel"},lm={key:0,class:"runtime-context-bar"},cm={key:0,class:"runtime-context-bar-actions"},um={key:2,class:"runtime-context-syncing"},dm={key:1,class:"runtime-context-bar project-context-bar"},gm={class:"runtime-context-bar-actions"},fm=["data-index"],pm={class:"tool-group-shell"},hm=["aria-expanded","onClick"],mm={class:"tool-group-label"},bm={class:"tool-group-label-name"},km={key:0,class:"tool-group-label-count"},ym={key:1,class:"tool-group-label-separator"},vm={key:1,class:"tool-group-lines"},wm=["open"],_m={class:"reasoning-reveal"},xm={class:"reasoning-paper"},Sm=["innerHTML"],Em=["onClick","onKeydown"],Tm={class:"compaction-context-actions"},Im={key:0},Am={class:"tool-result-title-row"},Cm={class:"tool-result-name"},Mm={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},Nm={class:"tool-result-detail-row"},Rm={key:0,class:"tool-result-primary"},Lm={key:1},$m={key:2,class:"tool-group-shell"},Om=["aria-expanded","onClick"],Dm={class:"tool-group-label"},Pm={class:"tool-group-label-name"},Um={key:0,class:"tool-group-label-count"},Bm={key:1,class:"tool-group-label-separator"},zm={key:0,class:"tool-group-purposes"},Fm={key:3,class:"tool-result-primary"},Hm={key:0},jm={key:4,class:"tool-result-previews"},Gm={class:"tool-result-preview kind-list"},qm={tabindex:"0"},Wm={key:5,class:"tool-result-previews"},Km={class:"tool-result-preview kind-code"},Vm={tabindex:"0"},Zm={key:6,class:"tool-result-previews"},Qm={tabindex:"0"},Ym={key:3},Jm={key:0,class:"message-head"},Xm={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},eb=["innerHTML"],tb={key:0,class:"message-body compaction-message-body"},nb=["onClick","onKeydown"],sb={class:"compaction-context-actions"},rb={key:0},ob={key:1,class:"message-body reasoning-body"},ib=["open"],ab={key:0,class:"reasoning-elapsed"},lb={class:"reasoning-reveal"},cb={class:"reasoning-paper"},ub=["innerHTML"],db={key:2,class:"message-body"},gb={key:0,class:"message-head"},fb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},pb={key:1},hb={key:2,class:"elapsed-pill"},mb={key:1,class:"image2-result-shell"},bb=["innerHTML"],kb={key:0,class:"message-image-attachments image2-output-images"},yb=["data-preview-src","aria-label"],vb=["src","alt"],wb={key:1,class:"image-unavailable-placeholder",role:"status"},_b={class:"image-card-actions"},xb=["href","download"],Sb=["onClick"],Eb=["onClick"],Tb={class:"tool-result-title-row"},Ib={class:"tool-result-name"},Ab={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},Cb={class:"tool-result-detail-row"},Mb={key:0,class:"tool-result-primary"},Nb={key:1},Rb={key:2,class:"tool-group-shell"},Lb=["aria-expanded","onClick"],$b={class:"tool-group-label"},Ob={class:"tool-group-label-name"},Db={key:0,class:"tool-group-label-count"},Pb={key:1,class:"tool-group-label-separator"},Ub={key:0,class:"tool-group-purposes"},Bb={key:3,class:"tool-result-primary"},zb={key:0},Fb={key:4,class:"tool-result-previews"},Hb={class:"tool-result-preview kind-list"},jb={tabindex:"0"},Gb={key:5,class:"tool-result-previews"},qb={class:"tool-result-preview kind-code"},Wb={tabindex:"0"},Kb={key:6,class:"tool-result-previews"},Vb={tabindex:"0"},Zb={class:"plugin-resource-stack"},Qb=["src","title"],Yb=["innerHTML"],Jb={key:1,class:"message-text markdown streaming-markdown"},Xb=["innerHTML"],ek={key:0,class:"message-image-attachments"},tk=["data-preview-src","aria-label"],nk=["src","alt"],sk={key:1,class:"image-unavailable-placeholder",role:"status"},rk=["href","download"],ok={key:2,class:"message-loading",role:"status","aria-live":"polite"},ik={class:"message-loading-body"},ak={class:"message-loading-label"},lk={key:0,class:"queued"},ck=["disabled"],uk=["disabled"],dk={key:0,class:"composer-app-prompt"},gk={key:1,class:"attachments file-attachments"},fk=["onClick"],pk={key:2,class:"attachments image-attachments"},hk=["src","alt"],mk=["onClick"],bk={class:"composer-path-row"},kk=["title"],yk={id:"composer-session-metrics",class:"composer-metrics","aria-label":"运行状态指标"},vk=["aria-pressed","title"],wk={class:"compress-wrap"},_k=["disabled"],xk={class:"composer-actions"},Sk=["aria-expanded"],Ek=["disabled","aria-busy","aria-label","title"],Tk=["type","disabled","aria-busy","aria-label","title"],Ik={key:0,class:"composer-button-icon composer-wait-icon","data-action":"waiting",viewBox:"0 0 20 20","aria-hidden":"true"},Ak={key:1,class:"composer-button-icon","data-action":"send",viewBox:"0 0 20 20","aria-hidden":"true"},Ck={key:2,class:"composer-button-icon","data-action":"interrupt-send",viewBox:"0 0 20 20","aria-hidden":"true"},Mk={key:3,class:"composer-button-icon","data-action":"send-now",viewBox:"0 0 20 20","aria-hidden":"true"},Nk={key:4,class:"composer-button-icon","data-action":"stop",viewBox:"0 0 20 20","aria-hidden":"true"},Rk=["data-mobile-card","onKeydown"],Lk={class:"background-task-section","data-card":"tasks"},$k={class:"background-task-head"},Ok={class:"panel-title"},Dk={key:0,class:"background-task-count"},Pk=["title"],Uk={key:0,class:"background-task-more"},Bk={key:1,class:"background-task-history"},zk={class:"background-task-history-list"},Fk=["title","onClick"],Hk={key:1,class:"quota-card","data-card":"quota"},jk={class:"quota-card-head"},Gk={class:"quota-card-controls"},qk=["aria-valuenow"],Wk={class:"quota-card-foot"},Kk={class:"quota-card-update"},Vk={class:"quota-card memory-card","data-card":"memory"},Zk={class:"memory-card-head"},Qk={class:"memory-trend",viewBox:"0 0 260 44",preserveAspectRatio:"none",role:"img","aria-label":"最近一小时 RSS 趋势"},Yk=["d"],Jk=["cx","cy","r","onFocus"],Xk={key:1,class:"memory-trend-empty"},ey={class:"memory-stats"},ty={class:"memory-card-foot"},ny={key:1,class:"content-grid single"},sy={class:"panel-page sessions-page"},ry={class:"page-head sessions-page-head"},oy={class:"session-toolbar"},iy={class:"session-search","aria-label":"搜索会话"},ay={class:"session-count"},ly={key:0,class:"empty-state"},cy={key:1,class:"empty-state"},uy={key:2,class:"empty-state"},dy={key:3,class:"session-list"},gy={class:"session-card-main"},fy={class:"session-card-title"},py={key:0,class:"current-pill"},hy={key:1,class:"current-pill"},my={key:2,class:"live-pill"},by={class:"session-card-meta"},ky=["title"],yy=["datetime"],vy={class:"session-actions"},wy=["disabled","onClick"],_y=["disabled","onClick"],xy={key:4,class:"session-pagination","aria-label":"会话分页"},Sy=["disabled"],Ey=["aria-current","onClick"],Ty=["disabled"],Iy={key:2,class:"content-grid single"},Ay={class:"panel-page sessions-page admin-users-page"},Cy=["disabled"],My={key:0,class:"admin-user-error",role:"alert"},Ny={key:1,class:"empty-state"},Ry={key:2,class:"session-list admin-user-list"},Ly={class:"session-card-main"},$y={class:"session-card-title"},Oy={class:"current-pill"},Dy={class:"session-actions"},Py=["disabled","onClick"],Uy={key:3,class:"content-grid single"},By={class:"panel-page prompt-page"},zy={class:"page-head"},Fy={class:"page-head-actions"},Hy={class:"prompt-workbench"},jy={class:"prompt-library-panel"},Gy={class:"prompt-library-head"},qy={class:"prompt-library-list"},Wy={key:0,class:"prompt-list-empty"},Ky={key:1,class:"prompt-list-empty"},Vy=["onClick","onDblclick","onDragstart","onDragover","onDrop"],Zy={key:0},Qy={class:"prompt-editor-panel"},Yy={class:"prompt-editor-toolbar"},Jy={class:"prompt-editor-current"},Xy={class:"prompt-editor-toolbar-actions"},ev=["disabled"],tv=["disabled"],nv={class:"prompt-editor-grid"},sv={class:"prompt-editor-field"},rv={class:"prompt-editor-field prompt-editor-field-full"},ov={class:"prompt-editor-field prompt-editor-field-full"},iv={key:4,class:"content-grid single"},av={class:"panel-page settings-page"},lv={class:"page-head settings-page-head"},cv={class:"settings-subpage-title"},uv={class:"page-head settings-page-head"},dv=["disabled"],gv={key:0,class:"empty-state"},fv={class:"settings-card"},pv={class:"settings-field-grid"},hv={class:"settings-field"},mv={key:0,class:"settings-required","aria-label":"必填"},bv=["onUpdate:modelValue","type","placeholder"],kv={key:1,class:"settings-card"},yv={class:"settings-field-grid"},vv={class:"settings-field"},wv={class:"settings-field"},_v={key:2,class:"settings-card settings-plugin-card"},xv={class:"settings-card-head"},Sv=["disabled"],Ev={class:"plugin-settings-list"},Tv={class:"plugin-toggle"},Iv=["onUpdate:modelValue","aria-label"],Av={key:3,class:"settings-card settings-plugin-card"},Cv={class:"settings-card-head"},Mv=["disabled"],Nv={class:"plugin-settings-list"},Rv={class:"plugin-toggle"},Lv=["onUpdate:modelValue","disabled","aria-label"],$v={key:5,class:"content-grid single"},Ov={class:"panel-page"},Dv={class:"capability-grid"},Pv={key:0,class:"toast"},Uv=["title","onKeydown"],Bv={class:"cwd-picker-modal",role:"dialog","aria-modal":"true","aria-label":"选择工作目录"},zv=["disabled"],Fv=["disabled"],Hv={class:"cwd-picker-shortcuts"},jv={class:"cwd-picker-browser"},Gv={class:"cwd-picker-locations","aria-label":"常用位置"},qv=["title","onClick"],Wv={"aria-hidden":"true"},Kv={class:"cwd-picker-tree"},Vv={key:0,class:"cwd-picker-empty"},Zv={key:1,class:"cwd-picker-error"},Qv={class:"cwd-picker-actions"},Yv=["disabled"],Jv={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"项目上下文"},Xv={class:"runtime-context-modal-head"},ew={key:0,class:"runtime-context-kicker"},tw=["aria-label"],nw={class:"runtime-context-modal-content"},sw={key:0,class:"runtime-context-index"},rw=["onClick"],ow={key:1,class:"project-context-document"},iw=["aria-label"],aw={class:"confirm-dialog-content"},lw={class:"confirm-dialog-actions"},cw={class:"session-model-list",role:"radiogroup","aria-label":"模型"},uw=["value","disabled"],dw=["disabled"],gw=["value"],fw={key:0,class:"context-window-error",role:"alert"},pw={class:"context-window-actions"},hw=["disabled"],mw={class:"context-window-input-wrap"},bw={key:0,class:"context-window-error",role:"alert"},kw={class:"context-window-actions"},yw=["disabled"],vw=["aria-label"],ww={class:"image-preview-canvas"},_w=["src","alt"],xw={key:0,class:"image-preview-caption"},Sw={class:"runtime-context-detail-modal compaction-detail-modal",role:"dialog","aria-modal":"true","aria-label":"压缩上下文详情"},Ew={class:"runtime-context-detail-content compaction-detail-content"},Tw={class:"compaction-detail-stats"},Iw={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"运行上下文"},Aw={class:"runtime-context-modal-head"},Cw={class:"runtime-context-modal-content"},Mw={key:1,class:"runtime-plugin-list"},Nw={key:0,class:"runtime-context-empty"},Rw={class:"runtime-tool-status"},Lw=["disabled","onClick"],$w={key:2,class:"runtime-plugin-list"},Ow={key:0,class:"runtime-context-empty"},Dw=["aria-label"],Pw={class:"runtime-context-modal-head"},Uw={key:0,class:"runtime-context-kicker"},Bw={class:"runtime-context-detail-content"},zw={key:0},Fw={key:1},Hw={class:"tool-result-modal background-task-modal",role:"dialog","aria-modal":"true","aria-label":"后台任务"},jw={class:"tool-result-modal-head"},Gw={class:"tool-result-modal-title"},qw={class:"background-task-modal-count"},Ww={key:0,class:"background-task-index","aria-label":"后台任务列表"},Kw=["title","onClick"],Vw={class:"background-task-index-copy"},Zw={class:"background-task-detail"},Qw={class:"background-task-detail-head"},Yw={class:"background-task-detail-title"},Jw={class:"background-task-meta"},Xw={key:0},e0={key:1,class:"wide"},t0={class:"background-task-detail-body"},n0={key:0,class:"background-task-command-section"},s0={class:"background-task-command"},r0={key:2,style:{"min-width":"0",width:"100%"}},o0=["aria-label"],i0={class:"tool-result-modal-head"},a0={class:"tool-result-modal-title"},l0={key:0},c0={class:"tool-result-modal-content"},u0=["innerHTML"],d0=2048,g0=18e5,Ao=.62,Co=10,f0="System hint: if the user is asking you to draw, render, create, generate, or illustrate a new image, you must call the image2 tool with mode=generate instead of replying with text-only description. After the tool returns images, continue the response normally so the UI can display them in the conversation.",p0="System hint: the user attached an image. If this request involves image editing, modification, redraw, background replacement, style transfer, repair, object removal, or localized changes, you must call the image2 tool with mode=edit and use the attached or most recent image as the source image. Image operations may take a while, so wait up to 10 minutes by default unless the tool returns an error or the user interrupts.",h0="System hint from web UI: if your final answer produces, creates, modifies, exports, packages, or identifies local files that the user should receive, you must call the expose_downloads tool with all relevant absolute file paths before your final textual response. Do not paste absolute paths as the primary delivery method; expose them as browser downloads.",m0="<<ATTACHMENT_MANIFEST>>",b0="<</ATTACHMENT_MANIFEST>>",or="••••••••••••••••••",Zn="neoctl-web.adminOwnerUsername",pl="neoctl-web.theme",Mo="neoctl-web.clientRevision",hl="neoctl-web.clientReloadRequest",No="__neo_reload",k0=112,ml=4e4,w0={__name:"App",setup(n){Ee.registerLanguage("javascript",vo),Ee.registerLanguage("js",vo),Ee.registerLanguage("jsx",vo),Ee.registerLanguage("typescript",wo),Ee.registerLanguage("ts",wo),Ee.registerLanguage("tsx",wo),Ee.registerLanguage("python",il),Ee.registerLanguage("py",il),Ee.registerLanguage("bash",_o),Ee.registerLanguage("sh",_o),Ee.registerLanguage("shell",_o),Ee.registerLanguage("json",Mp),Ee.registerLanguage("css",Bp),Ee.registerLanguage("html",xo),Ee.registerLanguage("xml",xo),Ee.registerLanguage("vue",xo),Ee.registerLanguage("markdown",al),Ee.registerLanguage("md",al),Ee.registerLanguage("yaml",ll),Ee.registerLanguage("yml",ll),Ee.registerLanguage("diff",zp);const r=oe(!1),s=oe(!1),i=V(Pa),c=V(()=>!je.isolation||i.value),d=[{value:"inherit",label:"跟随全局"},{value:"enabled",label:"启用"},{value:"disabled",label:"关闭"}],g={Assistant:"助手",You:"你",User:"你",System:"系统","Context compaction":"上下文压缩",Config:"配置",Reasoning:"思考","Runtime tool":"运行时工具",multi_tool_use:"并行执行工具",文件下载:"文件下载"},f={"API key":"API Key","Base URL":"Base URL",Model:"模型","Fallback model":"备用模型",Endpoint:"Endpoint","Reasoning effort":"推理强度","Reasoning summary":"推理摘要","Max output tokens":"最大输出 Token","Timeout ms":"请求超时(ms)","Stream idle timeout ms":"流式空闲超时(ms)","Max retries":"最大重试次数"},h={openai:"OpenAI"},w={INVALID_REQUEST:"请求参数无效",SESSION_ACTIVE:"当前会话不能删除,请先切换到其他会话",SESSION_RUNNING:"运行中的会话不能删除,请等待运行结束",SESSION_NOT_FOUND:"会话不存在或已被删除",SESSION_RESUME_FAILED:"打开会话失败",SESSION_CREATE_FAILED:"新建会话失败",SESSION_DELETE_FAILED:"删除会话失败",PLUGIN_UPDATE_BLOCKED:"模型回答期间不能修改会话插件",PLUGIN_NOT_CONFIGURED:"插件功能未配置",PLUGIN_INVALID:"插件配置无效",PLUGIN_UPDATE_FAILED:"插件配置更新失败",PLUGINS_LOCKED:"插件配置已由环境变量锁定",TOOL_UPDATE_BLOCKED:"模型回答期间不能修改会话工具",TOOL_NOT_CONFIGURED:"工具配置功能未启用",TOOL_INVALID:"工具配置无效",TOOL_UPDATE_FAILED:"工具配置更新失败",PROMPT_UPDATE_FAILED:"提示词更新失败",PROMPT_INVALID:"提示词内容无效",FAST_MODE_UPDATE_FAILED:"快速模式切换失败",CONTEXT_WINDOW_UPDATE_BLOCKED:"回答期间不能调整上下文窗口",CONTEXT_WINDOW_INVALID:"请输入大于 0 的整数",CONTEXT_WINDOW_UPDATE_FAILED:"上下文窗口调整失败",CWD_NOT_CONFIGURED:"当前运行时不支持工作目录切换",CWD_INVALID:"路径不存在或不可访问",CWD_UPDATE_BLOCKED:"模型回答期间不能切换工作目录",CWD_UPDATE_FAILED:"工作目录切换失败",CWD_CREATE_FAILED:"文件夹新建失败",CWD_DELETE_FAILED:"只能删除空文件夹,且不能删除当前目录或其上级目录",LOGIN_INVALID:"模型配置无效",LOGIN_SAVE_FAILED:"模型配置保存失败",API_NOT_FOUND:"当前运行时不支持此功能,请重启服务",WEB_REQUEST_FAILED:"请求处理失败"};Pa()&&(je.adminOwnerUsername=sessionStorage.getItem(Zn)||"");const v="neoctl-web.tabId"+Ua(),I="neoctl-web.sessionId"+Ua();let _=P(),A=sessionStorage.getItem(I)||"",S=!A,O=!1;const N=[];function R(){return{id:"",title:"",content:"",usage:""}}function U(e){if(!e||typeof e!="object")return null;const t=String(e.title||"").trim(),l=String(e.content||"").trim();return!t||!l?null:{id:String(e.id||M()).trim(),title:t,content:l,usage:String(e.usage||"").trim()}}function M(){return`prompt-${Math.random().toString(36).slice(2,10)}`}function P(){let e=sessionStorage.getItem(v);return e||(e=j(),sessionStorage.setItem(v,e)),e}function j(){var l,u;if((l=globalThis.crypto)!=null&&l.randomUUID)return globalThis.crypto.randomUUID();const e=new Uint8Array(16);if((u=globalThis.crypto)!=null&&u.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let p=0;p<e.length;p+=1)e[p]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=[...e].map(p=>p.toString(16).padStart(2,"0"));return`${t.slice(0,4).join("")}-${t.slice(4,6).join("")}-${t.slice(6,8).join("")}-${t.slice(8,10).join("")}-${t.slice(10).join("")}`}function F(e){const t=new URL(e,window.location.origin);return t.searchParams.set("tabId",_),A&&t.searchParams.set("sessionId",A),tt(`${t.pathname}${t.search}${t.hash}`)}function ie(e,t=!1){const l=(e==null?void 0:e.sessionId)||"";!l||l===A||!t&&!S&&A||(A=l,S=!1,sessionStorage.setItem(I,l))}const o=ar({connected:!1,connecting:!0,coreVersion:"",coreEasterEgg:!1,lines:[],status:{phase:"ready",streamedOutputTokens:0},appPrompt:{hasActivePrompt:!1,activePrompt:void 0},runtimeContext:void 0,runtimeContextLoading:!0,runtimeContextError:"",runtimeContextModal:"",runtimeContextDetail:void 0,settingsPage:"",projectContextOpen:!1,projectContextDocument:void 0,globalPlugins:{items:[],locked:!1,restartRequired:!0,loading:!1},sessionPlugins:{items:[],busy:!1,loading:!1},globalTools:{items:[],loading:!1},sessionTools:{items:[],busy:!1,loading:!1},fastMode:!1,fastModeMutating:!1,fastModeDraft:!1,pendingSessionSettings:{},compactSaving:!1,modelModalOpen:!1,modelDraft:"",reasoningDraft:"default",modelSearch:"",modelError:"",modelSaving:!1,contextWindowModalOpen:!1,contextWindowDraft:"",contextWindowError:"",contextWindowSaving:!1,busy:!1,queuedInput:void 0,backgroundTaskCount:0,backgroundTasks:[],agentTaskHistory:[],terminalTaskHistory:[],backgroundSessionRunCount:0,runningSessionIds:[],session:void 0,modelSettings:void 0,cwd:"",cwdPicker:{open:!1,cwd:"",parent:"",home:"",entries:[],locations:[],treeRoots:[],treeChildren:{},treeExpanded:{},selectedPath:"",selectionExplicit:!1,input:"",loading:!1,mutating:!1,error:""},sessionsLoading:!1,sessionResumeLoading:!1,pendingResumeSessionId:"",catalog:{commands:[],modelIds:[],reasoning:[]},interactive:{},sessions:[],adminUsers:[],adminUsersLoading:!1,adminUserBusy:!1,adminUserError:"",login:void 0,cpaConfig:{url:"",password:"",hasPassword:!1,loaded:!1},cpaQuotas:[],cpaQuotaIndex:0,memory:{current:null,history:[],sampleMs:6e4,retentionMs:864e5},activePanel:"chat",toolDetailLineId:void 0,expandedToolGroups:{},compactionDetailLineId:void 0,backgroundTaskDetail:void 0,imagePreview:void 0,confirmDialog:{open:!1,title:"",message:"",confirmLabel:"确认",cancelLabel:"取消",tone:"warning"},promptLibrary:[],promptLibraryLoading:!0,promptManagerOpen:!1,selectedPromptId:"",composerDropActive:!1,composerDropMode:"prompt",attachments:[],attachmentCounter:0,uploadingFiles:!1,uploadProgress:0,messageImagePreviews:[],liveToolStartedAt:{},clockTick:Date.now(),composerMetrics:{context:{display:0,target:0,bump:0,initialized:!1},inputTokens:{display:0,target:0,bump:0,initialized:!1},outputTokens:{display:0,target:0,bump:0,initialized:!1}},toast:""}),ae=oe(""),de=oe(""),G=oe(1),Z=oe(""),le=oe(Ad()),ne=oe(null),ye=oe(null),$=oe(null),q=oe(null),W=oe(null),se=oe(null),ue=oe(""),xe=V(()=>[{id:"tasks",title:"后台任务"},...yt.value?[{id:"quota",title:"周额度"}]:[],{id:"memory",title:"服务端内存"}]),Me=e=>{var t;return((t=xe.value.find(l=>l.id===e))==null?void 0:t.title)||""};function et(e){Xs(),o.activePanel="chat",ue.value=e,Ye(()=>{var t;return(t=document.querySelector(".mobile-card-close"))==null?void 0:t.focus()})}function Be(){ue.value="",Ye(()=>{var e,t;return(t=(e=se.value)==null?void 0:e.querySelector("summary"))==null?void 0:t.focus()})}const ze=oe(""),st=ar({}),Ne=ar(R()),xt=oe(""),Dt=oe(""),Pt=oe(""),Ut=oe("before"),St=oe(-1);let Ie,vn,Fe=0,He=0,ut=0,J,Et=!1,Ce,me,Tt,Ze=0,Bt=Promise.resolve(),dt=0,B=0,K=0,ee,ge,Le=!1,qe,mt;Dc();const bt=new Map,It=new Map,Sr=oe(0),wn=V(()=>[...o.lines||[]].reverse().find(e=>Fr(e))||null),lc=V(()=>{var e;return Hu((e=o.status)==null?void 0:e.phase)}),cc=V(()=>{var e,t;if(wn.value)return Zi(wn.value)?"整理图片结果":"图片生成中";if(((e=o.status)==null?void 0:e.phase)==="running_tools"){const l=(t=o.status)==null?void 0:t.currentTool;if(String((l==null?void 0:l.name)||"").toLowerCase()==="image_create")return"图片生成中";if(l!=null&&l.name)return`调用 ${l.name}${l.kind?` · ${l.kind}`:""}`}return lc.value}),ai=V(()=>{var e;return rg((e=o.status)==null?void 0:e.phase)}),uc=V(()=>ai.value||o.busy||o.sessionResumeLoading),dc=V(()=>{if(o.sessionResumeLoading)return"正在加载会话";if(wn.value){const e=Hn(wn.value),t=Zi(wn.value)?"正在载入图片结果":"图片模型正在生成";return e?`${t} · 已用时 ${e}`:t}return`正在${cc.value}`}),li=e=>String(e||"").replace(/设计/g,"").trim(),ci=e=>li(e==null?void 0:e.title)||"未命名会话",_n=V(()=>{var t;const e=li((t=o.session)==null?void 0:t.title);return e&&e!=="neo"?e:""}),as=V(()=>_n.value||"未命名会话"),ls=oe(null),ui=oe(null),Er=oe(!1);let cs;const Tr=async()=>{await Ye();const e=ls.value,t=ui.value;Er.value=!!(e&&t&&t.scrollWidth>e.clientWidth+2)},di=V(()=>o.cwd||"—"),xn=V(()=>{var l,u;const e=o.pendingSessionSettings,t=o.modelSettings||{model:(u=(l=o.status)==null?void 0:l.metrics)==null?void 0:u.model};return{model:e.model??t.model,reasoning:Object.hasOwn(e,"reasoning")||Object.hasOwn(e,"model")?e.reasoning:t.reasoning}}),gc=V(()=>{var e;return Ah(xn.value.model,(e=xn.value.reasoning)==null?void 0:e.effort)}),us=V(()=>o.fastModeMutating?o.fastModeDraft:o.pendingSessionSettings.fastMode??o.fastMode),gi=V(()=>{var e;return[...new Set([xn.value.model,(e=o.modelSettings)==null?void 0:e.model,...o.catalog.modelIds||[]].filter(Boolean))]}),fc=V(()=>gi.value.filter(e=>e.toLowerCase().includes(o.modelSearch.trim().toLowerCase()))),ds=V(()=>{var l;const e=((l=o.catalog.modelReasoning)==null?void 0:l[o.modelDraft])||[],t=o.catalog.reasoning||[];return["default","off",...e.filter(u=>t.includes(u)&&u!=="default"&&u!=="off")]});De(()=>o.modelDraft,()=>{ds.value.includes(o.reasoningDraft)||(o.reasoningDraft="default")});const pc=V(()=>`${o.composerMetrics.context.display.toFixed(1)}%`),hc=V(()=>{var t,l;const e=Number(o.pendingSessionSettings.contextWindowTokens??((l=(t=o.status)==null?void 0:t.metrics)==null?void 0:l.contextWindowTokens));return Number.isFinite(e)&&e>0?String(Math.max(1,Math.round(e/1e3))):""}),mc=V(()=>dn(o.composerMetrics.inputTokens.display)),bc=V(()=>dn(o.composerMetrics.outputTokens.display)),At=V(()=>ai.value||o.busy),gs=V(()=>o.backgroundTasks.length),fs=V(()=>[...o.agentTaskHistory,...o.terminalTaskHistory].sort((e,t)=>{const l=u=>typeof u.completedAt=="number"?u.completedAt:Date.parse(u.completedAt||u.updatedAt||"")||(typeof u.createdAt=="number"?u.createdAt:0);return l(t)-l(e)})),Sn=V(()=>{const e=new Set;return[...o.backgroundTasks,...fs.value].filter(t=>{const l=qt(t);return e.has(l)?!1:(e.add(l),!0)})}),En=V(()=>o.backgroundTasks[0]),Ir=V(()=>!!(ae.value.trim()||o.attachments.length)),fi=V(()=>r.value?"正在处理":At.value?Ir.value?"打断并发送":o.queuedInput?"立即发送":"停止":"发送 ↵"),Tn=V(()=>{const e=de.value.trim().toLocaleLowerCase(),t=o.sessions||[];return e?t.filter(l=>[ci(l),l.ownerUsername,l.title,l.sessionId,l.updatedAt,l.createdAt].some(u=>String(u||"").toLocaleLowerCase().includes(e))):t}),ps=V(()=>Math.max(1,Math.ceil(Tn.value.length/Co))),kc=V(()=>{const e=(G.value-1)*Co;return Tn.value.slice(e,e+Co)}),yc=V(()=>{const e=ps.value,t=Math.max(1,Math.min(G.value-2,e-4)),l=Math.min(e,t+4);return Array.from({length:l-t+1},(u,p)=>t+p)}),zt=V(()=>o.sessionResumeLoading?[]:Mu((o.lines||[]).filter(e=>!Uu(e)))),hs=Mf(V(()=>({count:zt.value.length,getScrollElement:()=>$.value,estimateSize:Xd,getItemKey:e=>Jd(zt.value[e]),rangeExtractor:e=>{const t=new Set(Nl(e));return zt.value.forEach((l,u)=>{(l==null?void 0:l.live)===!0&&t.add(u)}),[...t].sort((l,u)=>l-u)},overscan:8,scrollMargin:Sr.value,anchorTo:"end",followOnAppend:!0,scrollEndThreshold:96,useAnimationFrameWithResizeObserver:!0}))),vc=V(()=>hs.value.getVirtualItems().filter(e=>zt.value[e.index])),wc=V(()=>hs.value.getTotalSize()),_c=V(()=>{var e,t;return Array.isArray((t=(e=o.runtimeContext)==null?void 0:e.prompt)==null?void 0:t.sections)?o.runtimeContext.prompt.sections:[]}),Ar=V(()=>{var e;return Array.isArray((e=o.runtimeContext)==null?void 0:e.tools)?o.runtimeContext.tools:[]}),In=V(()=>{var e,t;return Array.isArray((t=(e=o.runtimeContext)==null?void 0:e.project)==null?void 0:t.documents)?o.runtimeContext.project.documents:[]}),xc=V(()=>o.sessionPlugins.items.filter(e=>e.effectiveEnabled).length),Sc=V(()=>o.sessionTools.items.filter(e=>e.effectiveEnabled).length),rt=V(()=>o.lines.find(e=>String(e.id)===String(o.toolDetailLineId))||null),kt=V(()=>o.lines.find(e=>String(e.id)===String(o.compactionDetailLineId))||null),Ft=V(()=>{var e;return((e=o.appPrompt)==null?void 0:e.activePrompt)||void 0}),Ec=V(()=>{var e,t;return((e=Ft.value)==null?void 0:e.title)||((t=Ft.value)==null?void 0:t.id)||""}),ms=V(()=>o.promptLibrary.find(e=>e.id===o.selectedPromptId)||o.promptLibrary[0]||null),bs=V(()=>le.value==="dark"),ks=V(()=>bs.value?"切换到日间模式":"切换到夜间模式"),yt=V(()=>o.cpaQuotas.length?o.cpaQuotas[o.cpaQuotaIndex%o.cpaQuotas.length]||o.cpaQuotas[0]:null),ys=V(()=>{var e;return((e=o.memory)==null?void 0:e.current)||null}),vs=V(()=>{var y;const e=(((y=o.memory)==null?void 0:y.history)||[]).filter(E=>Number.isFinite(Number(E==null?void 0:E.rss))),t=e.map(E=>Number(E.rss));if(!t.length)return[];const l=Math.min(...t),u=Math.max(...t),p=Math.max(1,u-l);return t.map((E,L)=>({entry:e[L],x:t.length===1?130:L/(t.length-1)*260,y:t.length===1?22:40-(E-l)/p*36}))}),pi=V(()=>vs.value.map((e,t)=>`${t?"L":"M"} ${e.x.toFixed(1)} ${e.y.toFixed(1)}`).join(" ")),An=V(()=>vs.value[St.value]||null);De(le,Cd,{immediate:!0}),De([At,bs],([e,t])=>{const u=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><path d="M32 4 50 32 32 60 14 32Z" fill="${e?t?"#bef264":"#a3e635":t?"#38bdf8":"#7dd3fc"}"/></svg>`,p=document.querySelector('link[rel="icon"]');p&&(p.href=`data:image/svg+xml,${encodeURIComponent(u)}`)},{immediate:!0}),De(_n,e=>{document.title=e||"对话工作台"},{immediate:!0}),De(as,Tr,{immediate:!0}),De(de,()=>{G.value=1}),De(ps,e=>{G.value>e&&(G.value=e)}),De(()=>{var e;return(e=o.backgroundTaskDetail)==null?void 0:e.output},async()=>{await Ye();const e=W.value;e&&(e.scrollTop=e.scrollHeight)}),De(()=>zt.value.length,async()=>{await Ye(),fo(),Ys()}),De(()=>o.activePanel,async e=>{e==="chat"&&(await Ye(),fo(),Ys())});async function Tc(){sessionStorage.removeItem(Zn),(await ke("/api/auth/logout",{method:"POST"})).ok&&location.reload()}zo(async()=>{typeof ResizeObserver<"u"&&(mt=new ResizeObserver(Ys),fo()),Ys(),await Promise.all([Cn(),Ic(),Mn(),Cr(),ws(),hi(),Rr(),Mi()]),_s(),Ce=setInterval(()=>{o.clockTick=Date.now()},1e3),me=setInterval(Rr,6e4),Tt=setInterval(Mi,6e4),window.addEventListener("keydown",ga),document.addEventListener("click",Fi),document.addEventListener("click",Hi),document.addEventListener("pointerdown",Na,!0),typeof ResizeObserver<"u"&&ls.value&&(cs=new ResizeObserver(Tr),cs.observe(ls.value)),Tr()}),Jt(()=>{Ie&&Ie.close(),Fe&&cancelAnimationFrame(Fe),He&&cancelAnimationFrame(He),xs(),J=void 0,Ze&&cancelAnimationFrame(Ze),Ce&&clearInterval(Ce),me&&clearInterval(me),Tt&&clearInterval(Tt),qe&&clearTimeout(qe),cs&&cs.disconnect(),mt&&mt.disconnect(),document.body.classList.remove("tool-detail-open","image-preview-open","runtime-context-open","context-window-open","cwd-picker-lock"),ge&&sn(!1),window.removeEventListener("keydown",ga),document.removeEventListener("click",Fi),document.removeEventListener("click",Hi),document.removeEventListener("pointerdown",Na,!0)});async function Cn(e={}){try{const t=await ke(F("/api/state"));if(!t.ok)throw new Error(`state ${t.status}`);return Ss(await t.json()),!0}catch(t){return e.silent||X(`运行时不可用:${t.message||t}`),!1}}async function Ic(){try{const e=await ke(F("/api/client-info"),{cache:"no-store"});if(!e.ok)return;mi(await e.json())}catch{}}async function Mn(){o.runtimeContextLoading=!0;try{const e=await ke(F("/api/runtime-context")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`runtime-context ${e.status}`);return ki(t),!0}catch(e){return o.runtimeContextError=e.message||String(e),!1}finally{o.runtimeContextLoading=!1}}async function Ac(){o.globalTools.loading=!0;try{const e=await ke(F("/api/tools")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`tools ${e.status}`);o.globalTools={items:Array.isArray(t.items)?t.items.map(l=>({...l})):[],loading:!1}}catch(e){o.globalTools.loading=!1,X(e.message||String(e))}}async function Cc(){const e=Object.fromEntries(o.globalTools.items.map(t=>[t.name,t.configuredEnabled!==!1]));o.globalTools.loading=!0;try{const t=await Te("/api/tools/global",{overrides:e});o.globalTools={...t.state,loading:!1},await Promise.all([ws(),Mn()]),X("全局工具配置已保存,各会话在下一轮或刷新时生效")}catch(t){o.globalTools.loading=!1,Qe(t,"工具配置保存失败")}}async function ws(){o.sessionTools.loading=!0;try{const e=await ke(F("/api/session-tools")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`session-tools ${e.status}`);o.sessionTools={...t,items:Array.isArray(t.items)?t.items:[],loading:!1}}catch(e){o.sessionTools.loading=!1,X(e.message||String(e))}}async function Mc(e,t){const l=Object.fromEntries(o.sessionTools.items.map(u=>[u.name,u.name===e.name?t:u.mode]));o.sessionTools.busy=!0;try{const u=await Te("/api/session-tools",{overrides:l});o.sessionTools={...u.state,loading:!1,busy:!1}}catch(u){o.sessionTools.busy=!1,Qe(u,"会话工具更新失败")}}async function Nc(){o.globalPlugins.loading=!0;try{const e=await ke(F("/api/plugins")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`plugins ${e.status}`);o.globalPlugins={items:Array.isArray(t.items)?t.items.map(l=>({...l})):[],locked:t.locked===!0,restartRequired:t.restartRequired!==!1,loading:!1}}catch(e){o.globalPlugins.loading=!1,X(e.message||String(e))}}async function Rc(){const e=o.globalPlugins.items.filter(t=>t.configuredEnabled!==!1).map(t=>t.id);o.globalPlugins.loading=!0;try{const t=await Te("/api/plugins/global",{enabledIds:e}),l=new Set(t.enabledIds||e);o.globalPlugins.items=o.globalPlugins.items.map(u=>({...u,configuredEnabled:l.has(u.id)})),X("插件配置已保存,重启后生效")}catch(t){Qe(t,"插件配置保存失败")}finally{o.globalPlugins.loading=!1}}async function Cr(){o.sessionPlugins.loading=!0;try{const e=await ke(F("/api/session-plugins")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`session-plugins ${e.status}`);o.sessionPlugins={...t,items:Array.isArray(t.items)?t.items:[],loading:!1}}catch(e){o.sessionPlugins.loading=!1,X(e.message||String(e))}}async function Lc(e,t){const l=Object.fromEntries(o.sessionPlugins.items.map(u=>[u.id,u.id===e.id?t:u.mode]));o.sessionPlugins.busy=!0;try{const u=await Te("/api/session-plugins",{overrides:l});o.sessionPlugins={...u.state,loading:!1,busy:!1}}catch(u){o.sessionPlugins.busy=!1,Qe(u,"会话插件更新失败")}}async function hi(){if(je.isolation){o.promptLibraryLoading=!1;return}o.promptLibraryLoading=!0;try{const e=await ke(F("/api/prompt-library")),t=await e.json().catch(()=>({}));if(!e.ok)throw new Error(t.error||`prompt-library ${e.status}`);Nn(Array.isArray(t.items)?t.items:N)}catch(e){Nn([]),X(e.message||String(e))}finally{o.promptLibraryLoading=!1}}function _s(){Ie&&Ie.close(),He&&cancelAnimationFrame(He),He=0,xs(),J=void 0,Et=!1,o.connecting=!0,Ie=new EventSource(F("/events")),Ie.addEventListener("open",()=>{Et=!1,o.connected=!0,o.connecting=!1}),Ie.addEventListener("error",()=>{Mr(),o.connected=!1,o.connecting=!1}),Ie.addEventListener("sync",e=>{if(!Et){Et=!0,vi(e.data);return}Pc(e.data)}),Ie.addEventListener("delta",e=>{Mr(),Uc(e.data)}),Ie.addEventListener("terminal.output",e=>{try{Mr(),jc(JSON.parse(e.data))}catch{}}),Ie.addEventListener("client.version",e=>{try{mi(JSON.parse(e.data))}catch{}}),Ie.addEventListener("client.reload",e=>{try{$c(JSON.parse(e.data))}catch{}}),Ie.addEventListener("runtime.context",e=>{try{ki(JSON.parse(e.data))}catch(t){o.runtimeContextError=t.message||String(t)}}),Ie.addEventListener("runtime.context.error",e=>{try{const t=JSON.parse(e.data);o.runtimeContextError=t.message||"运行上下文同步失败"}catch{o.runtimeContextError="运行上下文同步失败"}})}function mi(e){if(Number(e==null?void 0:e.protocolVersion)!==1)return;o.coreVersion=String(e.coreVersion||"");const t=String(e.revision||"").trim();if(!t)return;const l=localStorage.getItem(Mo);localStorage.setItem(Mo,t),l&&l!==t&&bi({...e,requestId:`revision:${t}`,clearCache:!0})}async function $c(e){if(Number(e==null?void 0:e.protocolVersion)!==1)return;const t=String(e.requestId||"").trim();if(!t||sessionStorage.getItem(hl)===t)return;sessionStorage.setItem(hl,t);const l=String(e.revision||"").trim();l&&localStorage.setItem(Mo,l),o.coreVersion=String(e.coreVersion||o.coreVersion||""),await bi(e)}async function bi(e){if(Le)return;Le=!0,e.clearCache!==!1&&await Oc();const t=new URL(window.location.href);t.searchParams.set(No,String(e.requestId||e.revision||Date.now())),window.location.replace(t.href)}async function Oc(){const e=[];"caches"in window&&e.push(caches.keys().then(t=>Promise.all(t.map(l=>caches.delete(l))))),"serviceWorker"in navigator&&e.push(navigator.serviceWorker.getRegistrations().then(t=>Promise.all(t.map(l=>l.unregister())))),await Promise.allSettled(e)}function Dc(){const e=new URL(window.location.href);e.searchParams.has(No)&&(e.searchParams.delete(No),window.history.replaceState(window.history.state,"",e.href))}function nn(){qe&&clearTimeout(qe),o.coreEasterEgg=!1,requestAnimationFrame(()=>{o.coreEasterEgg=!0,qe=setTimeout(()=>{o.coreEasterEgg=!1},1300)})}function ki(e){var p,y;if(![1,2].includes(Number(e==null?void 0:e.protocolVersion)))throw new Error(`不支持的运行上下文协议版本:${(e==null?void 0:e.protocolVersion)??"未知"}`);const t=Number(e.revision||0),l=Number(((p=o.runtimeContext)==null?void 0:p.revision)||0);(!e.sessionId||!((y=o.runtimeContext)!=null&&y.sessionId)||e.sessionId===o.runtimeContext.sessionId)&&t<l||(o.runtimeContext=e,o.projectContextDocument&&!In.value.some(E=>E.path===o.projectContextDocument.path)&&(o.projectContextDocument=void 0),o.projectContextOpen&&In.value.length===0&&(o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")),o.runtimeContextLoading=!1,o.runtimeContextError="")}function Pc(e){J=e,!He&&(He=requestAnimationFrame(()=>{He=0,yi()}))}function Mr(){He&&cancelAnimationFrame(He),He=0,yi()}function yi(){const e=J;J=void 0,e&&vi(e)}function vi(e){try{Ss(JSON.parse(e))}catch(t){X(`运行状态同步失败:${t.message||t}`)}}function Uc(e){try{Hc(JSON.parse(e))}catch(t){X(`流式增量同步失败:${t.message||t}`),Cn()}}function Bc(e,t){const l=String(t||"");if(!l)return;const u=String(e);It.set(u,`${It.get(u)||""}${l}`),wi()}function wi(){ut||(ut=requestAnimationFrame(zc))}function zc(){ut=0;const e=uo(),t=[...It];It.clear();for(const[l,u]of t){const p=o.lines.findIndex(E=>String(E.id)===l);if(p<0)continue;const y=o.lines[p];o.lines[p]={...y,text:`${y.text||""}${u}`}}e&&ho(),It.size&&wi()}function Fc(e){const t=String(e),l=It.get(t);if(!l)return;It.delete(t);const u=o.lines.findIndex(y=>String(y.id)===t);if(u<0)return;const p=o.lines[u];o.lines[u]={...p,text:`${p.text||""}${l}`}}function xs(){ut&&cancelAnimationFrame(ut),ut=0,It.clear()}function Hc(e){const t=String(e.sessionId||"");if(A&&t&&t!==A&&!S){na();return}const l=uo();for(const u of e.operations||[]){if(u.type==="line.append"){o.lines.some(y=>{var E;return String(y.id)===String((E=u.line)==null?void 0:E.id)})||o.lines.push(u.line);continue}const p=o.lines.findIndex(y=>String(y.id)===String(u.id));if(p<0)throw new Error(`找不到增量消息行 ${u.id}`);if(o.lines[p],u.type==="line.text.append")Bc(u.id,u.text);else if(u.type==="line.patch"){Fc(u.id);const y=o.lines[p];o.lines[p]={...y,...u.patch||{}}}}e.status&&(o.status=e.status),Hr(),o.connected=!0,o.connecting=!1,l&&ho()}function jc(e){var t,l;for(const u of(e==null?void 0:e.updates)||[]){const p=String((u==null?void 0:u.sessionId)||"");if(!p||u.ownerSessionId!==((t=o.session)==null?void 0:t.sessionId)||u.invalidated===!0)continue;const y=o.backgroundTasks.findIndex(T=>String((T==null?void 0:T.sessionId)||"")===p);if(y<0)continue;const E=String(u.text||"");if(!E)continue;const L=o.backgroundTasks[y],z=String(L.output||""),H=Number(L.outputEnd??z.length),re=Number(u.outputStart??H),we=Number(u.outputEnd??re+E.length),k=re===H?Gc(z,E,ml):E.slice(-ml);o.backgroundTasks[y]={...L,output:k,outputEnd:we},String(((l=o.backgroundTaskDetail)==null?void 0:l.sessionId)||"")===p&&(o.backgroundTaskDetail={...o.backgroundTaskDetail,output:k,outputEnd:we})}}function Gc(e,t,l){const u=`${e}${t}`;return u.length<=l?u:u.slice(-l)}function Ss(e){var p,y,E,L;xs();const t=String(((p=e.session)==null?void 0:p.sessionId)||""),l=String(((y=o.session)==null?void 0:y.sessionId)||"");if(t&&t!==l&&an(),A&&t&&t!==A&&!S){na();return}K+=1;const u=uo();if(t!==l&&(Is(),po(),o.messageImagePreviews=o.messageImagePreviews.filter(z=>z.sessionId===t),o.attachmentCounter=0),o.lines=e.lines||[],o.toolDetailLineId!==void 0&&!o.lines.some(z=>String(z.id)===String(o.toolDetailLineId))&&an(),o.compactionDetailLineId!==void 0&&!o.lines.some(z=>String(z.id)===String(o.compactionDetailLineId))&&$s(),Dd(o.lines),Bu(o.lines),o.status=e.status||o.status,Hr(),o.busy=!!e.busy,o.queuedInput=e.queuedInput,o.backgroundTaskCount=e.backgroundTaskCount||0,o.backgroundTasks=e.backgroundTasks||[],o.agentTaskHistory=e.agentTaskHistory||[],o.terminalTaskHistory=e.terminalTaskHistory||[],o.backgroundTaskDetail){const z=Sn.value.find(H=>qt(H)===qt(o.backgroundTaskDetail));z?o.backgroundTaskDetail={...z}:o.backgroundTaskDetail.kind==="terminal"&&o.backgroundTaskDetail.ownerSessionId===((E=e.session)==null?void 0:E.sessionId)?o.backgroundTaskDetail={...o.backgroundTaskDetail,status:"unknown",outputAvailability:"unavailable"}:Fs()}if(o.backgroundSessionRunCount=e.backgroundSessionRunCount||0,o.runningSessionIds=e.runningSessionIds||[],o.session=e.session,o.modelSettings=e.modelSettings,o.pendingSessionSettings={...e.pendingSessionSettings||{}},o.cwd=e.cwd||"",o.fastMode=e.fastMode===!0,o.appPrompt=e.appPrompt||{hasActivePrompt:!1,activePrompt:void 0},ie(e.session,S),t&&t!==l&&Promise.all([Cr(),ws()]),o.sessionResumeLoading){const z=((L=e.session)==null?void 0:L.sessionId)||"";o.pendingResumeSessionId&&z===o.pendingResumeSessionId&&(o.sessionResumeLoading=!1,o.pendingResumeSessionId="")}e.catalog&&(o.catalog=e.catalog),e.interactive&&(o.interactive=e.interactive),e.tips&&(o.tips=e.tips),e.tipIndex!==void 0&&o.tipIndex===0&&(o.tipIndex=e.tipIndex),o.connected=!0,o.connecting=!1,Fu(o.backgroundTasks),sg(),u&&ho()}function Nn(e,t=o.selectedPromptId){const l=(e||[]).map(U).filter(Boolean);o.promptLibrary=l;const u=l.find(p=>p.id===t)||l[0]||null;o.selectedPromptId=(u==null?void 0:u.id)||"",Rn(u||R())}function Rn(e){Ne.id=(e==null?void 0:e.id)||"",Ne.title=(e==null?void 0:e.title)||"",Ne.content=(e==null?void 0:e.content)||"",Ne.usage=(e==null?void 0:e.usage)||""}function Nr(e){if(je.isolation)return;o.activePanel="prompts",o.promptManagerOpen=!0,e&&(o.selectedPromptId=e);const t=o.promptLibrary.find(l=>l.id===o.selectedPromptId)||o.promptLibrary[0]||R();o.selectedPromptId=t.id||"",Rn(t)}function qc(e){o.selectedPromptId=e.id,Nr(e.id)}function Wc(){o.selectedPromptId="",Rn(R()),o.activePanel="prompts",o.promptManagerOpen=!0}function Kc(e){o.selectedPromptId=e.id,Rn(e)}async function Vc(){const e=U({id:Ne.id||M(),title:Ne.title,content:Ne.content,usage:Ne.usage});if(!e){X("标题和内容不能为空");return}try{const t=await Te("/api/prompt-library",{item:e});Nn(t.items,e.id)}catch(t){X(t.message||String(t));return}X("已保存提示词")}async function Zc(){var u;const e=String(Ne.id||"").trim();if(!e){Rn(R());return}const t=o.promptLibrary.find(p=>p.id===e);if(!(!t||!await $n({title:"删除提示词?",message:`“${t.title}”删除后无法恢复。`,confirmLabel:"确认删除",tone:"danger"}))){try{const p=await Te("/api/prompt-library/delete",{id:e});Nn(p.items)}catch(p){X(p.message||String(p));return}((u=Ft.value)==null?void 0:u.id)===t.id&&_i({confirm:!1}),X("已删除提示词")}}async function Ln(e){const t=U(e);if(!t){X("提示词无效");return}const l=Ft.value;if(l&&(l.id!==t.id||String(l.content||"").trim()!==t.content)){const p=l.id===t.id;if(!await $n({title:p?"更新当前提示词?":"切换当前提示词?",message:p?`“${t.title}”的内容已经变化。重新应用会影响模型对后续问题的理解和回答方式。`:`将从“${l.title||l.id||"当前提示词"}”切换为“${t.title}”。提示词变化会影响模型对后续问题的理解和回答方式。`,confirmLabel:p?"确认更新":"确认切换"}))return}try{const p=await Te("/api/app-prompt",{id:t.id,title:t.title,usage:t.usage,source:"sidebar-library",content:t.content});(p==null?void 0:p.ok)!==!1&&(o.appPrompt=p.appPrompt||{hasActivePrompt:!0,activePrompt:t},X(`已应用:${t.title}`))}catch(p){Qe(p,"应用提示词失败")}}async function _i(e={}){if(Ft.value&&!(e.confirm!==!1&&!await $n({title:"清除当前提示词?",message:"清除后,模型将不再遵循当前应用提示词,这会改变它对后续问题的理解和回答方式。",confirmLabel:"确认清除",tone:"danger"})))try{const t=await Te("/api/app-prompt",{clear:!0});(t==null?void 0:t.ok)!==!1&&(o.appPrompt=t.appPrompt||{hasActivePrompt:!1,activePrompt:void 0},X("已清空应用提示词"))}catch(t){Qe(t,"清空提示词失败")}}function $n(e){return ge&&sn(!1),Object.assign(o.confirmDialog,{open:!0,title:String((e==null?void 0:e.title)||"请确认"),message:String((e==null?void 0:e.message)||""),confirmLabel:String((e==null?void 0:e.confirmLabel)||"确认"),cancelLabel:String((e==null?void 0:e.cancelLabel)||"取消"),tone:(e==null?void 0:e.tone)==="danger"?"danger":"warning"}),new Promise(t=>{ge=t})}function sn(e){const t=ge;ge=void 0,o.confirmDialog.open=!1,t==null||t(e===!0)}function Qc(e,t){xt.value=t.id,e!=null&&e.dataTransfer&&(e.dataTransfer.effectAllowed="copy",e.dataTransfer.setData("application/x-neoctl-prompt-id",t.id),e.dataTransfer.setData("text/plain",t.title))}function Yc(e){var u;const t=Array.from(((u=e==null?void 0:e.dataTransfer)==null?void 0:u.types)||[]),l=eu(e);!t.includes("application/x-neoctl-prompt-id")&&!l||(e.preventDefault(),o.composerDropActive=!0,o.composerDropMode=l?"files":"prompt",e.dataTransfer&&(e.dataTransfer.dropEffect="copy"))}function Jc(e){e!=null&&e.currentTarget&&(e!=null&&e.relatedTarget)&&e.currentTarget.contains(e.relatedTarget)||(o.composerDropActive=!1,o.composerDropMode="prompt")}async function Xc(e){var p,y;const t=tu(e==null?void 0:e.dataTransfer);if(t.length){e.preventDefault(),o.composerDropActive=!1,o.composerDropMode="prompt",xt.value="",await pa(t),(p=ne.value)==null||p.focus();return}const l=((y=e==null?void 0:e.dataTransfer)==null?void 0:y.getData("application/x-neoctl-prompt-id"))||xt.value;if(o.composerDropActive=!1,o.composerDropMode="prompt",!l)return;e.preventDefault();const u=o.promptLibrary.find(E=>E.id===l);if(xt.value="",!u){X("未找到提示词");return}await Ln(u)}function eu(e){var l,u;return Array.from(((l=e==null?void 0:e.dataTransfer)==null?void 0:l.types)||[]).includes("Files")?!0:Array.from(((u=e==null?void 0:e.dataTransfer)==null?void 0:u.items)||[]).some(p=>p.kind==="file")}function tu(e){const t=Array.from((e==null?void 0:e.files)||[]);return t.length?t:Array.from((e==null?void 0:e.items)||[]).filter(l=>l.kind==="file").map(l=>l.getAsFile()).filter(Boolean)}function nu(){xt.value="",o.composerDropActive=!1,o.composerDropMode="prompt"}function su(e,t){Dt.value=t.id,Pt.value="",e!=null&&e.dataTransfer&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("application/x-neoctl-prompt-sort-id",t.id),e.dataTransfer.setData("text/plain",t.title))}function ru(e,t){var p,y,E;const l=Dt.value||((p=e==null?void 0:e.dataTransfer)==null?void 0:p.getData("application/x-neoctl-prompt-sort-id"));if(!l||l===t.id)return;e.preventDefault();const u=(E=(y=e.currentTarget)==null?void 0:y.getBoundingClientRect)==null?void 0:E.call(y);Pt.value=t.id,Ut.value=u&&e.clientY>u.top+u.height/2?"after":"before",e.dataTransfer&&(e.dataTransfer.dropEffect="move")}async function ou(e,t){var z;e.preventDefault();const l=((z=e==null?void 0:e.dataTransfer)==null?void 0:z.getData("application/x-neoctl-prompt-sort-id"))||Dt.value,u=Ut.value;if(xi(),!l||l===t.id)return;const p=[...o.promptLibrary],y=p.findIndex(H=>H.id===l);if(y<0)return;const[E]=p.splice(y,1),L=p.findIndex(H=>H.id===t.id);if(!(L<0)){p.splice(L+(u==="after"?1:0),0,E),o.promptLibrary=p;try{const H=await Te("/api/prompt-library/reorder",{ids:p.map(re=>re.id)});Nn(H.items,o.selectedPromptId),X("提示词顺序已更新")}catch(H){await hi(),X(H.message||String(H))}}}function xi(){Dt.value="",Pt.value="",Ut.value="before"}async function Si(){if(r.value||i.value)return;const e=ae.value;if(!e.trim()&&o.attachments.length===0)return;if(e.trim()==="/sessions"){ae.value="",Gn(),await Ms();return}if(e.trim()==="/login"){ae.value="",Gn(),await Dn();return}if(e.trim()==="/new"){ae.value="",Gn(),await Rs();return}const t=[...o.attachments],l=t.filter(y=>y.kind==="image"),u=t.filter(y=>y.kind==="file"&&y.absolutePath),p=ma(e,l);ba(l),ae.value="",o.attachments=[],Gn(),r.value=!0;try{const y=await ke(F("/api/submit"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:p,attachments:[...l,...u]})}),E=await y.json();if(!y.ok||E!=null&&E.error)throw new Error(E.error||`submit ${y.status}`)}catch(y){X(y.message||String(y))}finally{r.value=!1}}async function iu(){if(r.value)return;if(!Ir.value){o.queuedInput?await Ti():await Ei();return}const e=ae.value,t=[...o.attachments],l=t.filter(y=>y.kind==="image"),u=t.filter(y=>y.kind==="file"&&y.absolutePath),p=ma(e,l);ba(l),ae.value="",o.attachments=[],Gn(),r.value=!0;try{await Te("/api/submit-now",{text:p,attachments:[...l,...u]})}catch(y){X(y.message||String(y))}finally{r.value=!1}}async function Ei(){if(!r.value){r.value=!0;try{await Te("/api/interrupt",{})}catch(e){Qe(e,"停止回答失败")}finally{r.value=!1}}}async function au(){try{const e=await Te("/api/queue/cancel",{});X(e.cancelled?"已撤回排队消息":"没有待撤回的消息")}catch(e){Qe(e,"撤回排队消息失败")}}async function Ti(){if(!r.value){r.value=!0;try{const e=await Te("/api/queue/send-now",{});X(e.interrupted?"已打断并发送排队消息":"已发送排队消息")}catch(e){Qe(e,"发送排队消息失败")}finally{r.value=!1}}}function Es(e){const t=F(e),l=B;return{url:t,revision:K,isCurrent:()=>l===B&&t===F(e)}}async function Ts(e,t=()=>!0){if(!e.isCurrent()||!t()||e.revision===K)return;const l=K;try{const u=new URL(e.url,window.location.origin);u.pathname="/api/state";const p=await ke(`${u.pathname}${u.search}`,{cache:"no-store"}),y=await p.json();p.ok&&e.isCurrent()&&t()&&l===K&&Ss(y)}catch{}}function Is(){B+=1,dt+=1,Bt=Promise.resolve(),o.fastModeMutating=!1,o.compactSaving=!1,o.modelSaving=!1,o.contextWindowSaving=!1,o.modelModalOpen=!1,o.contextWindowModalOpen=!1,o.modelError="",o.contextWindowError="",o.pendingSessionSettings={},ee=void 0,document.body.classList.remove("context-window-open")}function As(e,t){X(`${e}${t.deferred===!0?"将在下一轮生效":"已生效"}`)}function Ii(e){ee=document.activeElement,document.body.classList.add("context-window-open"),Ye(()=>{var t;return(t=document.querySelector(e))==null?void 0:t.focus()})}function Ai(){document.body.classList.remove("context-window-open"),ee!=null&&ee.isConnected&&ee.focus(),ee=void 0}function Ci(e){if(e.key!=="Tab")return;const t=[...e.currentTarget.querySelectorAll('button:not(:disabled), input:not(:disabled), select:not(:disabled), [tabindex="0"]')].filter(p=>p.getClientRects().length),l=t[0],u=t.at(-1);e.shiftKey&&document.activeElement===l?(e.preventDefault(),u==null||u.focus()):!e.shiftKey&&document.activeElement===u&&(e.preventDefault(),l==null||l.focus())}async function lu(){if(o.compactSaving||o.pendingSessionSettings.compact)return;const e=Es("/api/compact");o.compactSaving=!0;try{const t=await Te(e.url,{},!0);if(!e.isCurrent())return;t.deferred&&(o.pendingSessionSettings.compact=!0),As("压缩会话",t),await Ts(e)}catch(t){e.isCurrent()&&Qe(t,"压缩上下文失败")}finally{e.isCurrent()&&(o.compactSaving=!1)}}function cu(){o.modelDraft=xn.value.model||gi.value[0]||"";const e=xn.value.reasoning;o.reasoningDraft=e===null?"off":(e==null?void 0:e.effort)||"default",ds.value.includes(o.reasoningDraft)||(o.reasoningDraft="default"),o.modelSearch="",o.modelError="",o.modelModalOpen=!0,Ii("#session-model-search")}function On(){o.modelModalOpen=!1,o.modelError="",Ai()}async function uu(){if(o.modelSaving||!o.modelDraft)return;const e=Es("/api/session-model"),t=o.modelDraft,l=ds.value.includes(o.reasoningDraft)?o.reasoningDraft:"default";o.modelSaving=!0,o.modelError="";try{const u=await Te(e.url,{model:t,reasoning:l},!0);if(!e.isCurrent())return;delete o.pendingSessionSettings.model,delete o.pendingSessionSettings.reasoning,u.deferred?Object.assign(o.pendingSessionSettings,{model:u.modelSettings.model,reasoning:u.modelSettings.reasoning}):o.modelSettings=u.modelSettings,On(),As("模型",u),await Ts(e)}catch(u){e.isCurrent()&&(o.modelError=Je(u,"模型切换失败"))}finally{e.isCurrent()&&(o.modelSaving=!1)}}function du(){o.contextWindowDraft=hc.value,o.contextWindowError="",o.contextWindowModalOpen=!0,Ii("#context-window-input")}function Cs(){o.contextWindowModalOpen=!1,o.contextWindowError="",Ai()}function gu(){o.contextWindowError=""}async function fu(){var l;if(o.contextWindowSaving)return;const e=String(o.contextWindowDraft||"").trim();if(!/^\d+$/.test(e)||!Number.isSafeInteger(Number(e)*1e3)||Number(e)<=0){o.contextWindowError="请输入大于 0 的整数";return}const t=Es("/api/context-window");o.contextWindowSaving=!0,o.contextWindowError="";try{const u=await Te(t.url,{value:e},!0);if(!t.isCurrent())return;const p=Number(u.contextWindowTokens);if(u.deferred)o.pendingSessionSettings.contextWindowTokens=p;else{delete o.pendingSessionSettings.contextWindowTokens;const y=((l=o.status)==null?void 0:l.metrics)||{};o.status={...o.status,metrics:{...y,contextWindowTokens:p,contextWindowSource:"session",contextUsageRatio:p>0?Number(y.estimatedInputTokens||0)/p:void 0}},Hr()}Cs(),As("上下文窗口",u),await Ts(t)}catch(u){t.isCurrent()&&(o.contextWindowError=Je(u,"调整失败"))}finally{t.isCurrent()&&(o.contextWindowSaving=!1)}}function pu(){const e=!us.value,t=++dt,l=Es("/api/fast-mode");o.fastModeDraft=e,o.fastModeMutating=!0,Bt=Bt.catch(()=>{}).then(()=>Te(l.url,{enabled:e},!0)).then(async u=>{!l.isCurrent()||t!==dt||(u.deferred?o.pendingSessionSettings.fastMode=u.fastMode===!0:(delete o.pendingSessionSettings.fastMode,o.fastMode=u.fastMode===!0),o.fastModeMutating=!1,As("快速模式",u),await Ts(l,()=>t===dt))}).catch(async u=>{if(!(!l.isCurrent()||t!==dt)){o.fastModeMutating=!1,Qe(u,"快速模式切换失败");try{const p=await ke(l.url.replace("/api/fast-mode?","/api/state?")),y=await p.json();p.ok&&l.isCurrent()&&t===dt&&Ss(y)}catch{}}})}async function Ms(){o.activePanel="sessions",o.sessionsLoading=!0;try{if(i.value){const e=await ke("/api/admin/sessions"),t=await e.json().catch(()=>({}));if(!e.ok||t!=null&&t.error)throw vt(t,e.status);o.sessions=(t.groups||[]).flatMap(l=>(l.sessions||[]).map(u=>({...u,ownerUsername:l.user.username,ownerDeleted:l.user.deleted===!0}))),o.runningSessionIds=[]}else{const e=await ke(F("/api/sessions")),t=await e.json().catch(()=>({}));if(!e.ok||t!=null&&t.error||(t==null?void 0:t.ok)===!1)throw vt(t,e.status);o.sessions=t.sessions||[],o.runningSessionIds=t.runningSessionIds||[]}}catch(e){Qe(e,"加载会话失败")}finally{o.sessionsLoading=!1}}async function Ns(){if(i.value){o.activePanel="users",o.adminUsersLoading=!0,o.adminUserError="";try{const e=await ke("/api/admin/users"),t=await e.json().catch(()=>({}));if(!e.ok||t!=null&&t.error)throw vt(t,e.status);o.adminUsers=t.users||[]}catch(e){o.adminUserError=Je(e,"加载用户失败")}finally{o.adminUsersLoading=!1}}}async function hu(){o.adminUserBusy=!0,o.adminUserError="";try{const e=await ke("/api/admin/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:Z.value})}),t=await e.json().catch(()=>({}));if(!e.ok||t!=null&&t.error)throw vt(t,e.status);Z.value="",X("普通用户已创建"),await Ns()}catch(e){o.adminUserError=Je(e,"创建用户失败")}finally{o.adminUserBusy=!1}}async function mu(e){if(window.confirm(`删除账号 ${e.username}?历史会话将保留。`)){o.adminUserBusy=!0,o.adminUserError="";try{const t=await ke("/api/admin/users/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.username})}),l=await t.json().catch(()=>({}));if(!t.ok||l!=null&&l.error)throw vt(l,t.status);X("普通用户已删除"),await Ns()}catch(t){o.adminUserError=Je(t,"删除用户失败")}finally{o.adminUserBusy=!1}}}async function bu(e){const t=typeof e=="object"?e:{sessionId:e},l=t.sessionId,u=_,p=A,y=je.adminOwnerUsername;if(i.value&&t.ownerUsername&&(je.adminOwnerUsername=t.ownerUsername,sessionStorage.setItem(Zn,t.ownerUsername)),o.pendingResumeSessionId=l,o.sessionResumeLoading=!0,await sa(l))o.activePanel="chat",X(i.value?`已打开 ${t.ownerUsername} 的会话`:"已打开会话");else{je.adminOwnerUsername=y,y?sessionStorage.setItem(Zn,y):sessionStorage.removeItem(Zn);const L=await ra(u,p);X(L?"打开会话失败,已恢复原会话":"打开会话失败,运行时连接已断开")}o.sessionResumeLoading=!1,o.pendingResumeSessionId=""}async function Rr(){try{const e=await ke(F("/api/cpa-quota"));if(!e.ok)throw new Error(`cpa-quota ${e.status}`);const t=await e.json();o.cpaQuotas=Array.isArray(t==null?void 0:t.quotas)?t.quotas:[],o.cpaQuotaIndex>=o.cpaQuotas.length&&(o.cpaQuotaIndex=0),t!=null&&t.config&&(o.cpaConfig.loaded||(o.cpaConfig.url=String(t.config.url||""),o.cpaConfig.password=t.config.hasPassword?or:"",o.cpaConfig.loaded=!0),o.cpaConfig.hasPassword=!!t.config.hasPassword)}catch{o.cpaQuotas=[],o.cpaQuotaIndex=0}}async function Mi(){try{const e=await ke(F("/api/memory"));if(!e.ok)throw new Error(`memory ${e.status}`);const t=await e.json();o.memory={current:(t==null?void 0:t.current)||null,history:Array.isArray(t==null?void 0:t.history)?t.history:[],sampleMs:Number(t==null?void 0:t.sampleMs)||6e4,retentionMs:Number(t==null?void 0:t.retentionMs)||864e5}}catch{}}async function Rs(){if(i.value)return;Is();const e=_,t=A;if(eo(),_=j(),A="",S=!0,sessionStorage.setItem(v,_),sessionStorage.removeItem(I),o.sessionResumeLoading=!0,o.pendingResumeSessionId="",await Cn({silent:!0}))o.activePanel="chat",X("已创建新会话"),_s();else{const u=await ra(e,t);X(u?"新建会话失败,已恢复原会话":"新建会话失败,运行时连接已断开")}o.sessionResumeLoading=!1}function Lr(e){var t;return!!e&&String(((t=o.session)==null?void 0:t.sessionId)||"")===String(e)}function $r(e){return o.runningSessionIds.includes(e)}async function ku(e){const t=o.sessions.find(u=>u.sessionId===e);if(Lr(e)){X(w.SESSION_ACTIVE);return}if($r(e)){X(w.SESSION_RUNNING);return}if(await $n({title:"删除会话?",message:`“${(t==null?void 0:t.title)||e||"这个会话"}”删除后无法恢复。`,confirmLabel:"确认删除",tone:"danger"}))try{await Te("/api/sessions/delete",{sessionId:e}),await Ms(),X("会话已删除")}catch(u){Qe(u,"删除会话失败")}}async function Dn(e){if(!c.value)return;o.activePanel="settings",o.settingsPage="";const t=e?`?provider=${encodeURIComponent(e)}`:"";try{const l=await ke(F(`/api/login${t}`)),u=await l.json().catch(()=>({}));if(!l.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,l.status);o.login=u,ze.value=u.provider,Object.keys(st).forEach(p=>delete st[p]),Object.assign(st,u.values||{}),await Promise.all([Rr(),Nc(),Ac()])}catch(l){Qe(l,"加载模型配置失败")}}async function Ni(e){X(e!=null&&e.deferred?"已保存,下一轮生效":"提示词已保存"),await Mn()}async function yu(){await Dn(ze.value)}async function Ri(){var u;if(!c.value)return;const[e,t]=await Promise.allSettled([Te("/api/login",{provider:ze.value,values:{...st}}),Te("/api/cpa-config",{url:o.cpaConfig.url,password:o.cpaConfig.password===or?"":o.cpaConfig.password,preservePassword:o.cpaConfig.hasPassword&&(!o.cpaConfig.password||o.cpaConfig.password===or)})]);if(t.status==="fulfilled"){const p=t.value;o.cpaQuotas=Array.isArray(p==null?void 0:p.quotas)?p.quotas:[],o.cpaQuotaIndex=0,o.cpaConfig.loaded=!0,o.cpaConfig.hasPassword=!!((u=p==null?void 0:p.config)!=null&&u.hasPassword),o.cpaConfig.password=o.cpaConfig.hasPassword?or:""}if(e.status==="fulfilled"&&t.status==="fulfilled"){X("模型配置已保存");return}const l=[];e.status==="rejected"&&l.push(Je(e.reason,"模型配置保存失败")),t.status==="rejected"&&l.push(Je(t.reason,"CPA 配置保存失败")),X(l.join(";"))}function Or(e){const t=Number.parseFloat(String(e??"").replace("%",""));return Number.isFinite(t)?Math.max(0,Math.min(100,t)):0}function Li(e){const t=Number.parseFloat(String(e??"").replace("%",""));if(!Number.isFinite(t))return"—";const l=Or(t);return`${l.toFixed(l%1?1:0)}%`}function $i(e){const t=new Date(e);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(t)}function Oi(e){const t=new Date(e);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(t)}function Di(e){const t=o.cpaQuotas.length;t<2||(o.cpaQuotaIndex=(o.cpaQuotaIndex+e+t)%t)}function vu(e){const t=String(e||"").trim();if(!t)return"Codex 凭据";const[l,u]=t.split("@");return!u||l.length<=3?t:`${l.slice(0,3)}***@${u}`}function Ls(e){const t=Number(e);if(!Number.isFinite(t)||t<0)return"—";const l=t/1024/1024;return`${l.toFixed(l>=100?0:1)} MB`}function wu(e){const t=new Date(e);return Number.isNaN(t.getTime())?"等待采样":new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(t)}function _u(e){const t=new Date(e);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(t)}function xu(e){const t=vs.value.length;if(!t)return;const l=e.currentTarget.getBoundingClientRect(),u=Math.min(1,Math.max(0,(e.clientX-l.left)/Math.max(1,l.width)));St.value=t===1?0:Math.round(u*(t-1))}function Pi(){St.value=-1}async function Te(e,t,l=!1){const u=await ke(l?e:F(e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),p=await u.json().catch(()=>({}));if(!u.ok||p!=null&&p.error||(p==null?void 0:p.ok)===!1)throw vt(p,u.status);return p}class Su extends Error{constructor(t,l=""){super(t),this.name="ActionRequestError",this.code=l}}function vt(e,t){const l=String((e==null?void 0:e.errorCode)||(t===404?"API_NOT_FOUND":""));return new Su((e==null?void 0:e.error)||`请求失败(${t})`,l)}function Je(e,t="操作失败"){const l=String((e==null?void 0:e.code)||"");if(l&&w[l])return w[l];const u=String((e==null?void 0:e.message)||e||"").trim();return u?`${t}:${u}`:t}function Qe(e,t){X(Je(e,t))}function Ht(e){const t=Od($d(Ld(e.text||"")));return e.kind==="system"||e.kind==="meta"?Eu(t):t}function Eu(e){return String(e||"").replace(/^Interactive web UI enabled\.\s*Type \/help for commands\.\s*/i,"工作台已连接。输入 `/help` 可查看命令说明。").replace(/\bSession:\s*/gi,"会话:").replace(/\bTip:\s*/gi,"提示:").replace(/Start fresh/gi,"重新开始").replace(/\/reset clears the visible conversation and adds a reset marker so you can start a fresh thread in the same session\./gi,"`/reset` 会清空当前可见对话,并插入一个重置标记,方便你在同一会话中重新开始。").replace(/^new session\s+/i,"已新建会话:").replace(/^deleted session\s+/i,"已删除会话:").replace(/^resumed session\s+(.+?):\s+(\d+)\s+messages?\s+from\s+(.+)$/i,"已恢复会话:$1,共载入 $2 条消息,来源:$3").replace(/\((\d+)\s+resumed messages\)/gi,"(已恢复 $1 条消息)").replace(/\bType \/help for commands\./gi,"输入 `/help` 可查看命令说明。")}function jt(e){var t;if(e.kind==="tool"||e.toolName){const l=Gt(e);return(t=e==null?void 0:e.toolPresentation)!=null&&t.label?String(e.toolPresentation.label):Pn(e)?"任务计划":e.title?g[e.title]||g[String(e.title).toLowerCase()]||e.title:g[l]||l}return e.title?g[e.title]||g[String(e.title).toLowerCase()]||e.title:e.kind==="assistant"?"助手":e.kind==="user"?"你":e.kind==="thinking"?"思考":"系统"}function Gt(e){return String((e==null?void 0:e.toolName)||"tool").trim()||"tool"}function Pn(e){return(e==null?void 0:e.kind)==="tool"&&Gt(e)==="plan_update"}function Tu(e){return Pn(e)||ot(e)||ln(e).length>0}function Dr(e){return(e==null?void 0:e.kind)==="meta"&&String((e==null?void 0:e.title)||"")==="提示词用法"}function Un(e){return!!(e!=null&&e.compaction&&typeof e.compaction=="object")}function Iu(e){var t;return(t=e==null?void 0:e.compaction)!=null&&t.modelDriven?"模型生成摘要":"确定性摘要"}function rn(e){Un(e)&&(o.compactionDetailLineId=e.id,document.body.classList.add("runtime-context-open"))}function $s(){o.compactionDetailLineId=void 0,!o.runtimeContextModal&&!o.runtimeContextDetail&&!o.projectContextOpen&&document.body.classList.remove("runtime-context-open")}function Bn(e){return((e==null?void 0:e.kind)==="tool"||(e==null?void 0:e.kind)==="error"&&(e==null?void 0:e.toolName))&&!Tu(e)}function Pr(e){return(e==null?void 0:e.kind)==="tool-group"&&Array.isArray(e.lines)}function Au(e){return!e||e.presentationLevel==="primary"||Dr(e)||e.kind==="user"||e.kind==="assistant"?!0:ot(e)}function Cu(e){return!e||Au(e)?!1:["thinking","tool","error","meta","system","agent"].includes(String(e.kind||"system"))}function Mu(e){const t=[];let l=[];const u=()=>{if(!l.length)return;const p=l.some(y=>(y==null?void 0:y.kind)!=="thinking");l.length===1||!p?t.push(...l):t.push({id:`tool-group:${l[0].id}`,kind:"tool-group",lines:l,live:l.some(y=>(y==null?void 0:y.live)===!0)}),l=[]};for(const p of e||[])Cu(p)?l.push(p):(u(),t.push(p));return u(),t}function on(e){return o.expandedToolGroups[e==null?void 0:e.id]===!0}async function Nu(e){Pr(e)&&(o.expandedToolGroups[e.id]=!on(e),await Ye(),po())}function Ui(e){const t=new Map;for(const u of(e==null?void 0:e.lines)||[]){const p=(u==null?void 0:u.kind)==="thinking"?"思考":jt(u);p&&t.set(p,(t.get(p)||0)+1)}const l=[...t.entries()].map(([u,p])=>({name:u,count:p}));return l.length?l:[{name:"过程",count:1}]}function Ur(e){return((e==null?void 0:e.lines)||[]).flatMap((t,l)=>{var p;const u=String(((p=t==null?void 0:t.toolDisplay)==null?void 0:p.purpose)||"").trim();return u?[{id:`${t.id}:purpose:${l}`,text:u,live:(t==null?void 0:t.live)===!0}]:[]})}let Bi;function zi(e,t){Rt(e)&&(Bi=document.activeElement,o.toolDetailLineId=e.id,document.body.classList.add("tool-detail-open"),Ye(()=>{var l;return(l=document.querySelector(".tool-result-modal-close"))==null?void 0:l.focus()}))}function Ru(e){return cn(fe.parse(String(e??"")))}function an(){o.toolDetailLineId=void 0,document.body.classList.remove("tool-detail-open");const e=Bi;Ye(()=>{e!=null&&e.isConnected&&e.focus()})}function Lu(e){if(e.key!=="Tab")return;const t=Array.from(e.currentTarget.querySelectorAll('button:not(:disabled), [tabindex="0"]')),l=t[0],u=t.at(-1);e.shiftKey&&document.activeElement===l?(e.preventDefault(),u==null||u.focus()):!e.shiftKey&&document.activeElement===u&&(e.preventDefault(),l==null||l.focus())}function Fi(e){var u;const t=e.target instanceof HTMLImageElement?e.target:null;if(!t||t.closest(".image-preview-modal"))return;const l=((u=t.closest("[data-preview-src]"))==null?void 0:u.dataset.previewSrc)||t.currentSrc||t.src;l&&(e.preventDefault(),e.stopPropagation(),$u(l,t.alt))}async function Hi(e){const t=e.target instanceof Element?e.target.closest('a[data-resource-download="true"]'):null;if(!(t instanceof HTMLAnchorElement))return;e.preventDefault(),e.stopPropagation();const l=Number(t.dataset.resourceExpiresAt);if(Number.isFinite(l)&&l>0&&Date.now()>=l){X("下载链接已过期,请重新生成");return}try{const u=await ke(t.href);if(!u.ok){X(u.status===404||u.status===410?"下载链接已过期,请重新生成":`下载失败(${u.status})`);return}const p=URL.createObjectURL(await u.blob()),y=document.createElement("a");y.href=p,y.download=t.download||"download",document.body.appendChild(y),y.click(),y.remove(),setTimeout(()=>URL.revokeObjectURL(p),3e4)}catch{X("下载失败,请稍后重试")}}function $u(e,t=""){o.imagePreview={src:String(e||""),caption:String(t||"").trim()},document.body.classList.add("image-preview-open")}function Br(){o.imagePreview=void 0,document.body.classList.remove("image-preview-open")}function Ct(e){return Ih(e)}function ji(e){return Du(e).summary}function Gi(e){var t;return(((t=e==null?void 0:e.toolDisplay)==null?void 0:t.previews)||[]).filter(l=>l.content!==void 0&&l.content!==null&&String(l.content).trim()!=="")}function Mt(e){var t;return Array.isArray((t=e==null?void 0:e.toolStream)==null?void 0:t.steps)?e.toolStream.steps:[]}function Nt(e){return Gt(e)==="subagent_run"}function Os(e){return["file_write","file_edit","write_file","edit_file"].includes(Gt(e).toLowerCase())}function zr(e){const t=Gt(e).toLowerCase();return t==="terminal_run"||t==="terminal_control"}function qi(e){var t;return Array.isArray((t=e==null?void 0:e.toolDisplay)==null?void 0:t.previews)&&e.toolDisplay.previews.length>0&&(!Gt(e).startsWith("subagent_")||Gt(e)==="subagent_message")&&!(zr(e)&&(e==null?void 0:e.live)===!0&&Ou(e))}function zn(e){var y,E,L,z;const t=Array.isArray((y=e==null?void 0:e.toolStream)==null?void 0:y.chunks)?e.toolStream.chunks:[];if(t.length)return t.map(H=>String((H==null?void 0:H.text)||"")).join("").trimEnd();const l=String(((E=e==null?void 0:e.toolStream)==null?void 0:E.stdout)||""),u=String(((L=e==null?void 0:e.toolStream)==null?void 0:L.stderr)||""),p=String(((z=e==null?void 0:e.toolStream)==null?void 0:z.output)||"");return[l,u,p].filter(Boolean).join(`
96
+ `).trimEnd()}function Fn(e){var u,p,y;const t=String(((u=e==null?void 0:e.toolStream)==null?void 0:u.message)||"").trim(),l=String(((p=e==null?void 0:e.toolDisplay)==null?void 0:p.purpose)||((y=e==null?void 0:e.toolDisplay)==null?void 0:y.subject)||"").trim();return t&&t!==l?t:""}function Wi(e){return Mt(e).map(t=>`${(t==null?void 0:t.status)==="completed"?"✓":(t==null?void 0:t.status)==="failed"?"×":"•"} ${String((t==null?void 0:t.message)||"").trim()}${(t==null?void 0:t.status)==="unknown"||!(e!=null&&e.live)&&(t==null?void 0:t.status)==="running"?"(阶段结果未提供)":""}`.trimEnd()).join(`
97
+ `)}function Ds(e){const t=new Map;for(const l of Mt(e)){const u=String((l==null?void 0:l.toolName)||"").trim();if(!u)continue;const p=t.get(u);t.set(u,{label:(p==null?void 0:p.label)||String((l==null?void 0:l.toolLabel)||u),count:((p==null?void 0:p.count)||0)+1})}return[...t.entries()].map(([l,u])=>({name:l,label:u.label,count:u.count}))}function Ki(e){return Mt(e).flatMap((t,l)=>{const u=String((t==null?void 0:t.message)||"").trim();return u?[{key:`${t.key}:${l}`,purpose:u}]:[]})}function Ps(e){return o.expandedToolGroups[`agent:${e==null?void 0:e.id}`]===!0}async function Vi(e){const t=`agent:${e==null?void 0:e.id}`;o.expandedToolGroups[t]=!o.expandedToolGroups[t],await Ye(),po()}function Ou(e){return!!(Fn(e)||Mt(e).length||zn(e))}function Us(e){var p,y,E;const t=Number((p=e==null?void 0:e.toolStream)==null?void 0:p.current),l=Number((y=e==null?void 0:e.toolStream)==null?void 0:y.total);if(!Number.isFinite(t))return"";const u=String(((E=e==null?void 0:e.toolStream)==null?void 0:E.unit)||"").trim();return Number.isFinite(l)&&l>0?`${t}/${l}${u?` ${u}`:""}`:`${t}${u?` ${u}`:""}`}function Du(e){const t=(e==null?void 0:e.live)===!0,l=(e==null?void 0:e.titleStatus)==="failure"||(e==null?void 0:e.kind)==="error",u=t?{key:"running",label:"运行中"}:l?{key:"failed",label:"失败"}:{key:"completed",label:"成功"},p=e!=null&&e.toolDisplay&&typeof e.toolDisplay=="object"?e.toolDisplay:void 0,y=String((p==null?void 0:p.purpose)||(p==null?void 0:p.subject)||(e==null?void 0:e.bodyTitle)||"").trim();return{status:u,summary:y}}function Pu(e,t){const l=String(e||"").replace(/\s+/g," ").trim();return l.length>t?`${l.slice(0,t)}…`:l}function ot(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.toolName)||"").toLowerCase()==="image_create"}function Fr(e){return(e==null?void 0:e.live)&&ot(e)}function Zi(e){return ot(e)&&(e==null?void 0:e.pendingReplacement)===!0}function Uu(e){var l,u;if(Qs(e)&&!ot(e)||((l=e==null?void 0:e.toolPresentation)==null?void 0:l.visibility)==="hidden"&&(e==null?void 0:e.kind)!=="error")return!0;if((e==null?void 0:e.kind)!=="user")return!1;const t=ya(e);return Ud(t)?String((u=Bd(t))==null?void 0:u.id)!==String(e==null?void 0:e.id):!Ht(e)&&Vs(e).length===0&&Ks(e==null?void 0:e.text).length===0}function Bu(e){const t=new Set,l=Date.now();for(const u of e||[]){if(!Fr(u))continue;const p=String(u.id);t.add(p),o.liveToolStartedAt[p]||(o.liveToolStartedAt[p]=l)}for(const u of Object.keys(o.liveToolStartedAt))t.has(u)||delete o.liveToolStartedAt[u]}function Hn(e){if(!Fr(e))return"";const t=o.liveToolStartedAt[String(e.id)];return t?Wt(o.clockTick-t):""}function Hr(){var t,l,u,p,y,E,L,z,H;const e=(l=(t=o.status)==null?void 0:t.metrics)==null?void 0:l.contextUsageRatio;jr("context",e===void 0?0:e*100),jr("inputTokens",Number(((p=(u=o.status)==null?void 0:u.usage)==null?void 0:p.inputTokens)??((E=(y=o.status)==null?void 0:y.metrics)==null?void 0:E.estimatedInputTokens)??0)),jr("outputTokens",Number(((z=(L=o.status)==null?void 0:L.usage)==null?void 0:z.outputTokens)??((H=o.status)==null?void 0:H.streamedOutputTokens)??0))}function jr(e,t){const l=o.composerMetrics[e],u=Number.isFinite(t)?Math.max(0,t):0;if(!l.initialized){l.display=u,l.target=u,l.initialized=!0;return}Math.abs(l.target-u)<.001||(l.target=u,l.bump+=1,zu())}function zu(){if(Ze)return;const e=()=>{let t=!1;for(const l of Object.values(o.composerMetrics)){const u=l.target-l.display;if(Math.abs(u)<.01){l.display=l.target;continue}const p=Math.min(.42,Math.max(.14,Math.abs(u)>1e3?.32:.2)),y=Math.sin(Date.now()/90)*Math.min(Math.abs(u)*.018,l.target*.006+1);l.display+=u*p+y,l.display<0&&(l.display=0),t=!0}t?Ze=requestAnimationFrame(e):Ze=0};Ze=requestAnimationFrame(e)}function Gr(e){return`bump-${o.composerMetrics[e].bump%2}`}function Fu(e=[]){return new Map(e.map(t=>[String(t.taskId||t.agentId||t.description||t.type),t.status]))}function qt(e){var l;const t=String((e==null?void 0:e.taskId)||(e==null?void 0:e.agentId)||(e==null?void 0:e.sessionId)||"");return(e==null?void 0:e.kind)==="terminal"?`${e.ownerSessionId||((l=o.session)==null?void 0:l.sessionId)||""}:${t}`:t}function Bs(e){return String((e==null?void 0:e.description)||(e==null?void 0:e.command)||(e==null?void 0:e.type)||"后台任务").replace(/\s+/g," ").trim()||"后台任务"}function zs(e){const t=Bs(e);return t.length>72?`${t.slice(0,72)}…`:t}function Qi(e){if((e==null?void 0:e.kind)==="terminal")return e.status!=="running"?Number.isFinite(e.durationMs)&&e.durationMs>=0?Wt(e.durationMs):"":Number.isFinite(e.createdAt)&&e.createdAt<=o.clockTick?Wt(o.clockTick-e.createdAt):"";if((e==null?void 0:e.kind)==="agent"){const p=Th(e,o.clockTick);return p===void 0?"":Wt(p)}const t=e==null?void 0:e.createdAt,l=Number(t),u=Number.isFinite(l)&&l>0?l:Date.parse(String(t||""));return!Number.isFinite(u)||u<=0?"":Wt((e!=null&&e.completedAt?Date.parse(e.completedAt):o.clockTick)-u)}function Yi(e){return String((e==null?void 0:e.prompt)||(e==null?void 0:e.command)||"").trim()}function qr(e){o.backgroundTaskDetail={...e},document.body.classList.add("tool-detail-open")}function Fs(){o.backgroundTaskDetail=void 0,document.body.classList.remove("tool-detail-open")}function Hu(e="ready"){return{ready:"就绪",running:"运行中",preparing:"准备中",calling_model:"调用模型",thinking:"推理中",running_tools:"调用工具",injecting_context:"注入上下文",compacting:"压缩上下文",stopped:"已停止",error:"出错"}[e]||e}function Wr(e){return{pending:"排队中",running:"运行中",completed:"已完成",failed:"失败",killed:"已停止",stopped:"已停止",exited:"已退出",lost:"已失联",unknown:"未提供"}[e]||(e?"未知状态":"未提供")}function Kr(e){return f[e]||e}function ju(e){return(e||[]).map(t=>({value:t,label:h[t]||t}))}function Gu(e){return((e==null?void 0:e.options)||[]).map(t=>({value:t,label:t||"默认"}))}function qu(e){return!["ansi","plain","diff"].includes(e.format)&&(Dr(e)||["assistant","thinking","system","tool"].includes(e.kind))}function Wu(e){return JSON.stringify((e==null?void 0:e.inputSchema)||{},null,2)}function Vr(e){je.isolation&&e==="prompt"||(o.runtimeContextModal=e,o.runtimeContextDetail=void 0,document.body.classList.add("runtime-context-open"),e==="plugins"&&Cr(),e==="tools"&&ws())}function Zr(){o.runtimeContextDetail=void 0,o.runtimeContextModal="",document.body.classList.remove("runtime-context-open")}function Qr(){o.runtimeContextDetail=void 0}function Ku(){o.projectContextOpen=!0,o.projectContextDocument=void 0,document.body.classList.add("runtime-context-open")}function Vu(e){o.projectContextDocument=e}function Yr(){if(o.projectContextDocument){o.projectContextDocument=void 0;return}o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")}async function Zu(){o.cwdPicker.open=!0,o.cwdPicker.input=o.cwd||"",o.cwdPicker.selectionExplicit=!1,o.cwdPicker.error="",document.body.classList.add("cwd-picker-lock"),await js(o.cwd)}function Hs(){o.cwdPicker.mutating||(o.cwdPicker.open=!1,o.cwdPicker.error="",document.body.classList.remove("cwd-picker-lock"))}async function js(e=o.cwdPicker.input){o.cwdPicker.loading=!0,o.cwdPicker.error="";try{const t=new URL("/api/cwd",window.location.origin);String(e||"").trim()&&t.searchParams.set("path",String(e).trim());const l=await ke(F(`${t.pathname}${t.search}`)),u=await l.json().catch(()=>({}));if(!l.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,l.status);Jr(u)}catch(t){o.cwdPicker.error=Je(t,"无法打开路径")}finally{o.cwdPicker.loading=!1}}function Qu(e){return String(e||"").replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||String(e||"")}function Jr(e){const t=String(e.cwd||""),l={name:Qu(t),path:t};o.cwdPicker.cwd=t,o.cwdPicker.parent=e.parent||"",o.cwdPicker.home=e.home||"",o.cwdPicker.locations=Array.isArray(e.locations)?e.locations:o.cwdPicker.locations,o.cwdPicker.entries=Array.isArray(e.entries)?e.entries:[],o.cwdPicker.input=t,o.cwdPicker.selectedPath=e.fallback?"":t,o.cwdPicker.selectionExplicit=!1,o.cwdPicker.treeRoots=[l],o.cwdPicker.treeChildren={[t]:o.cwdPicker.entries},o.cwdPicker.treeExpanded={[t]:!0}}async function Yu(e){const t=new URL("/api/cwd",window.location.origin);t.searchParams.set("path",e);const l=await ke(F(`${t.pathname}${t.search}`)),u=await l.json().catch(()=>({}));if(!l.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,l.status);return Array.isArray(u.locations)&&(o.cwdPicker.locations=u.locations),u}async function Ju(e){const t=e.path;if(o.cwdPicker.treeExpanded[t]){o.cwdPicker.treeExpanded={...o.cwdPicker.treeExpanded,[t]:!1};return}o.cwdPicker.error="";try{if(!o.cwdPicker.treeChildren[t]){const l=await Yu(t);o.cwdPicker.treeChildren={...o.cwdPicker.treeChildren,[t]:l.entries||[]}}o.cwdPicker.treeExpanded={...o.cwdPicker.treeExpanded,[t]:!0}}catch(l){o.cwdPicker.error=Je(l,"无法展开路径")}}function Xu(e){o.cwdPicker.selectedPath=e.path,o.cwdPicker.selectionExplicit=!0,o.cwdPicker.input=e.path}async function ed(){const e=String(o.cwdPicker.input||"").trim();if(e){o.cwdPicker.mutating=!0,o.cwdPicker.error="";try{const t=await Te("/api/cwd/create",{path:e});Jr(t)}catch(t){o.cwdPicker.error=Je(t,"新建失败")}finally{o.cwdPicker.mutating=!1}}}async function td(e){if(await $n({title:"删除文件夹?",message:e.path,confirmLabel:"删除",tone:"danger"})){o.cwdPicker.mutating=!0;try{const l=await Te("/api/cwd/delete",{path:e.path});Jr(l)}catch(l){o.cwdPicker.error=Je(l,"删除失败")}finally{o.cwdPicker.mutating=!1}}}async function nd(){const e=String(o.cwdPicker.selectionExplicit?o.cwdPicker.selectedPath:o.cwdPicker.input).trim();if(e&&!(!o.cwdPicker.selectionExplicit&&e===o.cwdPicker.cwd&&e!==o.cwd)){o.cwdPicker.mutating=!0,o.cwdPicker.error="";try{const t=await Te("/api/cwd/change",{path:e});o.cwd=t.cwd||e,o.cwdPicker.open=!1,document.body.classList.remove("cwd-picker-lock"),await Mn(),X(t.unchanged?"工作目录未变":"工作目录已切换")}catch(t){o.cwdPicker.error=Je(t,"切换失败")}finally{o.cwdPicker.mutating=!1}}}function sd(e){e&&(o.runtimeContextDetail={kind:"tool",title:e.name,meta:e.strict?"严格模式":"兼容模式",description:e.description||"",schema:Wu(e)})}function Gs(e){if(Pn(e))return od(e);if(Rt(e))return so(e);if(ln(e).length)return aa(e);if(ld(e))return gd(e);if(cd(e))return ud(e);const t=Ht(e),l=la(e),u=l.map(L=>`${L.kind}:${L.reference||""}:${L.url}:${L.label||L.downloadName||""}:${L.expiresAt||""}`).join("|"),p=[e.id,e.kind,e.format,e.title,e.titleStatus,e.live?"1":"0",u,t].join(""),y=bt.get(p);if(y!==void 0)return y;let E;return e.format==="diff"?E=ta(t):e.format==="ansi"||!qu(e)?E=Ma(Se(Js(t))):E=md(cn(fe.parse(t||""),l.map(ca)),l),bt.set(p,E),E}function rd(e){if(!e)return"";if(ot(e))return xd(e);const t=Ht(e);if(e.format==="diff"||/(?:^|\n)---\s+.+\n\+\+\+\s+/.test(t))return ta(t);if(e.format==="ansi")return`<pre class="tool-detail-pre">${Se(Js(t))}</pre>`;const l=no(t);if(l){const u=JSON.stringify(l,null,2);return cn(fe.parse(`\`\`\`json
98
+ ${u}
99
+ \`\`\``))}return`<pre class="tool-detail-pre">${Se(Js(t))}</pre>`}function od(e){const t=id(e),l=Array.isArray(t==null?void 0:t.items)?t.items:[];if(!t||!l.length)return cn(fe.parse(Ht(e)||""));const u=Xi(l),p=Number.isFinite(Number(t.completed))?Number(t.completed):u.completed,y=Number.isFinite(Number(t.total))?Number(t.total):u.total,E=Se(t.title||"任务计划"),L=Ji(l);return`<section class="plan-card"><div class="plan-card-head"><strong>${E}</strong><span class="plan-progress-label">${p} / ${y}</span></div><ol class="plan-items">${L}</ol></section>`}function Ji(e,t=0){return e.map((l,u)=>{const p=ea(l==null?void 0:l.status),y=p==="completed"?"✓":p==="in_progress"?"●":p==="failed"?"!":String(u+1),E=Array.isArray(l==null?void 0:l.subitems)?l.subitems:[],L=E.length?`<ol class="plan-subitems" aria-label="${Se((l==null?void 0:l.description)||`步骤 ${u+1}`)}的子步骤">${Ji(E,t+1)}</ol>`:"";return`<li class="plan-item status-${p}" data-plan-depth="${t}"><div class="plan-item-row"><span class="plan-item-marker" role="img" aria-label="${ad(p)}">${y}</span><span class="plan-item-text">${Se((l==null?void 0:l.description)||`步骤 ${u+1}`)}</span></div>${L}</li>`}).join("")}function Xi(e){return e.reduce((t,l)=>{if(t.total+=1,ea(l==null?void 0:l.status)==="completed"&&(t.completed+=1),Array.isArray(l==null?void 0:l.subitems)&&l.subitems.length){const u=Xi(l.subitems);t.total+=u.total,t.completed+=u.completed}return t},{total:0,completed:0})}function id(e){const t=String((e==null?void 0:e.text)||""),l=no(t),u=l!=null&&l.output&&typeof l.output=="object"?l.output:l;if(Array.isArray(u==null?void 0:u.items))return u;const p=t.split(/\r?\n/).map(H=>H.trim()).filter(Boolean),y=/^(\d+)\s*\/\s*(\d+)\s+completed/i.exec(p[0]||""),L=p.filter(H=>/^[-*]\s+/.test(H)).map(H=>{let re=H.replace(/^[-*]\s+/,"").trim(),we="pending";return/^~~[\s\S]+~~$/.test(re)?(we="completed",re=re.slice(2,-2).trim()):/^[▶►●]\s*/.test(re)?(we="in_progress",re=re.replace(/^[▶►●]\s*/,"").trim()):/^[!✗×]\s*/.test(re)&&(we="failed",re=re.replace(/^[!✗×]\s*/,"").trim()),{description:re,status:we}});return{title:"当前执行计划",note:p.slice(y?1:0).filter(H=>!/^[-*]\s+/.test(H)).join(" "),items:L,completed:y?Number(y[1]):L.filter(H=>H.status==="completed").length,total:y?Number(y[2]):L.length}}function ea(e){const t=String(e||"pending").toLowerCase().replace(/[\s-]+/g,"_");return t==="complete"||t==="done"?"completed":t==="running"||t==="inprogress"?"in_progress":t==="error"?"failed":["completed","in_progress","failed","pending"].includes(t)?t:"pending"}function ad(e){return{completed:"已完成",in_progress:"进行中",failed:"失败",pending:"待处理"}[e]||"待处理"}function ta(e){return`<pre class="diff-block">${Se(e)}</pre>`}function Rt(e){return ot(e)&&/\b(ok|failed|generated|edited|image\s+(?:generate|edit)\s+failed)\b/i.test(String((e==null?void 0:e.text)||""))}function ld(e){const t=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&t==="image_note"}function cd(e){const t=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&t==="skill_read"}function ud(e){return cn(fe.parse(`技能${dd((e==null?void 0:e.text)||"")}`))}function dd(e){var p,y,E;const t=String(e||""),l=((p=/\bname:\s*([^\s]+)/i.exec(t))==null?void 0:p[1])||((y=/(?:^|\s)skill:\s*([^\s]+)/i.exec(t))==null?void 0:y[1])||((E=/(?:^|\s)id:\s*([^\s]+)/i.exec(t))==null?void 0:E[1]),u=String(l||"").trim();return u||""}function gd(e){return cn(fe.parse(`图片记录${fd((e==null?void 0:e.text)||"")}`))}function fd(e){const t=pd(e);return t?` ${t}`:""}function pd(e){var L,z,H,re,we;const t=String(e||""),l=(L=/(?:^|\s)(?:storagePath|path|file|filename):\s*([^\s]+\.(?:png|jpe?g|webp|gif|bmp|avif|txt))/i.exec(t))==null?void 0:L[1],u=l?Xr(l.split(/[\\/]/).pop()||""):"";if(u)return u;const p=(z=/(?:^|\s)imageRef:\s*([^\s]+)/i.exec(t))==null?void 0:z[1],y=Xr(p||"");if(y)return y;const E=((H=/(?:^|\s)tags:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(t))==null?void 0:H[1])||((re=/(?:^|\s)detectedText:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(t))==null?void 0:re[1])||((we=/(?:^|\s)caption:\s*([^.,,。;\n\r]{2,24})/i.exec(t))==null?void 0:we[1]);return Xr(E||"")}function Xr(e){let t=String(e||"").trim();return t=t.replace(/\.base64\.txt$/i,"").replace(/\.(?:png|jpe?g|webp|gif|bmp|avif|txt)$/i,""),t=t.replace(/^[-*]\s*/,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim(),!t||/^ok$/i.test(t)?"":t.length>18?`${t.slice(0,18)}...`:t}async function na(){if(!(O||!A)){O=!0;try{if(!await sa(A))throw new Error("无法重新绑定目标会话")}catch(e){X(`会话恢复失败:${e.message||e}`)}finally{O=!1}}}async function sa(e){var u;const t=String(e||"").trim();return!t||(t!==A&&Is(),eo(),A=t,S=!1,sessionStorage.setItem(I,t),!await Cn({silent:!0})||String(((u=o.session)==null?void 0:u.sessionId)||"")!==t)?!1:(_s(),!0)}async function ra(e,t){Is(),eo(),_=e,A=t,S=!t,sessionStorage.setItem(v,e),t?sessionStorage.setItem(I,t):sessionStorage.removeItem(I);const l=await Cn({silent:!0});return l&&_s(),l}function eo(){Ie&&Ie.close(),Ie=void 0,He&&cancelAnimationFrame(He),He=0,xs(),J=void 0,Et=!1,o.connected=!1,o.connecting=!0}function ln(e){return Array.isArray(e==null?void 0:e.resources)?e.resources.filter(t=>t&&typeof t=="object"&&typeof t.url=="string"&&t.url):[]}function to(e){return ln(e).filter(t=>t.kind==="embed")}function oa(e){return ln(e).filter(t=>t.kind!=="embed")}function hd(e){const t=new URL(e.url,window.location.origin);return t.searchParams.set("theme",le.value),t.origin===window.location.origin?tt(`${t.pathname}${t.search}${t.hash}`):t.href}function ia(e){const t=Number(e==null?void 0:e.height);return Number.isFinite(t)?Math.max(240,Math.min(1600,Math.round(t))):640}function aa(e){const t=oa(e);return t.length?`<div class="resource-result"><div class="resource-grid">${t.map((u,p)=>{const y=Se(u.label||u.downloadName||`资源 ${p+1}`),E=Se(tt(u.url)),L=u.sizeBytes?lo(u.sizeBytes):"",z=u.expiresAt?kd(u.expiresAt):"",H=[L,z].filter(Boolean).join(" · "),re=u.kind==="download"||u.downloadName,we=re?"下载":"打开",k=re?` download="${Se(u.downloadName||u.label||"")}"`:' target="_blank" rel="noreferrer noopener"';if(re){const T=Se(L.replace(/\s+/g,"")),Pe=Number(u.expiresAt)||0;return`<a class="resource-file-link" href="${E}"${k} data-resource-download="true" data-resource-expires-at="${Pe}"><span class="resource-file-name">${y}</span>${T?`<span class="resource-file-size">(${T})</span>`:""}</a>`}return`<a class="resource-card resource-${Se(u.kind||"link")}" href="${E}"${k}><span class="resource-icon" aria-hidden="true"></span><span class="resource-main"><strong>${y}</strong><span>${Se(H||(re?"文件已就绪":"资源已就绪"))}</span></span><span class="resource-action"><span>${we}</span><i aria-hidden="true">${re?"↓":"↗"}</i></span></a>`}).join("")}</div></div>`:Ma(Se(Js(Ht(e))))}function la(e){if((e==null?void 0:e.kind)!=="assistant")return[];const t=o.lines||[],l=t.findIndex(E=>String(E==null?void 0:E.id)===String(e==null?void 0:e.id)),u=l>=0?l:t.length,p=[],y=new Set;for(let E=0;E<u;E+=1){const L=t[E];if(!(L!=null&&L.live))for(const z of ln(L))y.has(z.url)||(y.add(z.url),p.push(z))}return p}function md(e,t){if(!t.length)return e;const l=new Map(t.map(p=>[ca(p),p]).filter(([p])=>p)),u=document.createElement("template");u.innerHTML=String(e||"");for(const p of u.content.querySelectorAll("a[href]")){const y=p.getAttribute("href")||"",E=l.get(y);E&&(p.classList.add("inline-resource-link",`inline-resource-${E.kind||"link"}`),p.setAttribute("href",tt(E.url)),(E.kind==="download"||E.downloadName)&&(p.setAttribute("download",E.downloadName||E.label||""),p.removeAttribute("target"),p.removeAttribute("rel"),p.setAttribute("title",`下载 ${E.label||E.downloadName||"资源"}`),p.dataset.resourceDownload="true",p.dataset.resourceExpiresAt=String(Number(E.expiresAt)||0),E.sizeBytes&&(p.dataset.resourceSize=`(${lo(E.sizeBytes).replace(/\s+/g,"")})`)))}return u.innerHTML}function ca(e){return String((e==null?void 0:e.reference)||"").trim()}function no(e){const t=String(e||"");if(!t.includes("{"))return null;const l=bd(t);l.sort((u,p)=>u.start-p.start||p.end-u.end);for(const{start:u,end:p}of l)try{return JSON.parse(t.slice(u,p+1))}catch{}return null}function bd(e){const t=[],l=[];let u=!1,p=!1;for(let y=0;y<e.length;y+=1){const E=e[y];if(u){p?p=!1:E==="\\"?p=!0:E==='"'?u=!1:(E===`
100
+ `||E==="\r")&&(u=!1,p=!1);continue}if(l.length&&E==='"'){u=!0;continue}if(E==="{"){l.push(y);continue}E==="}"&&l.length&&t.push({start:l.pop(),end:y})}return t}function kd(e){const t=Number(e);if(!Number.isFinite(t))return"";const l=t-Date.now();return l<=0?"已过期":`${Wt(l)} 后过期`}function yd(e){return Kt(e).length||Rt(e)?so(e):vd(e)}function vd(e){const t=wd(e),l=t.prompt?`<div class="image2-stage-prompt"><p>${Se(Pu(t.prompt,240))}</p></div>`:"";return`<div class="image2-stage"><div class="image2-diamond-field" aria-hidden="true">${Array.from({length:11},(p,y)=>`<i class="diamond-${y+1}"></i>`).join("")}<b></b></div>${l}</div>`}function wd(e){const t=no((e==null?void 0:e.text)||"")||{},l=t.input||t.arguments||t.args||t;return{mode:String(l.mode||"").toLowerCase(),model:String(l.model||""),size:String(l.size||""),prompt:String(l.prompt||"")}}function so(e){const t=da(e.text||""),l=String(e.text||""),u=/\bfail(?:ed)?\b|failed/i.test(l)?"生成失败":/^edited\b/i.test(l.trim())?"修改完成":"生成完成",p=[t.count?`${t.count} 张`:"",t.model,`请求尺寸 ${Io(t.size).requested}`,t.quality,t.outputFormat,t.sourceImages?`源图 ${t.sourceImages} 张`:"",t.duration].filter(Boolean);return`<div class="image2-result"><div class="image2-summary"><strong>${Se(u)}</strong>${p.map(y=>`<span>${Se(y)}</span>`).join("")}</div></div>`}const qs=Rh(),Ws=oe([]);let ro=0;const ua=V(()=>{var t;const e=rt.value;return JSON.stringify([((t=o.session)==null?void 0:t.sessionId)||"",e==null?void 0:e.id,e==null?void 0:e.toolUseId,e==null?void 0:e.messageId,e&&Rt(e)?Kt(e).map(l=>[l.originalDecodeUrl,l.available,un(l)]):[]])});De(ua,async e=>{var y;const t=++ro;Ws.value=[],qs.clear();const l=((y=o.session)==null?void 0:y.sessionId)||"";qs.setSession(l);const u=rt.value;if(!u||!Rt(u))return;const p=Kt(u);Ws.value=p.map(E=>({state:E.available?"loading":"unavailable"})),await Promise.all(p.map(async(E,L)=>{const z=await qs.load({sessionId:l,originalUrl:E.originalDecodeUrl,available:E.available});t!==ro||e!==ua.value||z.state==="stale"||(Ws.value[L]=z)}))},{immediate:!0,flush:"sync"}),Jt(()=>{++ro,qs.clear()});function _d(e,t){const l=Kt(e);return l.length?l.map((u,p)=>{const y=Ws.value[p],E=Io(t,u.available?y:{state:"unavailable"}),L=(y==null?void 0:y.state)==="loading"&&u.available?"加载中…":E.actual;return`<section class="image2-detail-prompt" data-original-dimensions="${p}"><span>${Se(Vt(u,p))}</span><dl class="image2-detail-grid"><div><dt>请求尺寸</dt><dd>${Se(E.requested)}</dd></div><div><dt>实际尺寸</dt><dd>${Se(L)}</dd></div></dl>${E.mismatch?"<p>实际尺寸与请求尺寸不同(保留原图)</p>":""}</section>`}).join(""):"<p>实际尺寸:未知(未提供原图资源)</p>"}function xd(e){const t=da((e==null?void 0:e.text)||""),l=[["模型",t.model],["模式",t.mode],["请求尺寸",Io(t.size).requested],["质量",t.quality],["格式",t.outputFormat],["背景",t.background],["图片数量",t.count?`${t.count} 张`:""],["源图数量",t.sourceImages?`${t.sourceImages} 张`:""],["耗时",t.duration],["语义名称",t.semanticName],["开始时间",t.startedAt],["完成时间",t.finishedAt]].filter(([,E])=>E),u=l.length?`<dl class="image2-detail-grid">${l.map(([E,L])=>`<div><dt>${Se(E)}</dt><dd>${Se(L)}</dd></div>`).join("")}</dl>`:"",p=t.prompt?`<section class="image2-detail-prompt"><span>调用提示词</span><p>${Se(t.prompt)}</p></section>`:'<section class="image2-detail-prompt empty"><span>调用提示词</span><p>当前历史记录未保存提示词;新执行的 image_create 调用会在这里显示。</p></section>',y=t.revisedPrompt&&t.revisedPrompt!==t.prompt?`<section class="image2-detail-prompt"><span>修订提示词</span><p>${Se(t.revisedPrompt)}</p></section>`:"";return`<div class="image2-detail-view">${u}${_d(e,t.size)}${p}${y}</div>`}function da(e){const t=String(e||""),l=t.replace(/\s+/g," ").trim(),u=t.split(/\r?\n/).map(z=>z.trim()).filter(Boolean),p=/^(generated|edited)\s+(\d+)\s+images?/i.exec(u[0]||l),E=(u.find(z=>z.includes(" · "))||"").split(" · ").map(z=>z.trim()).filter(Boolean),L=Sd(l,["duration","durationMs","elapsed","elapsedMs"]);return{provider:We(l,"provider",["model","prompt"])||E[0]||"",model:We(l,"model",["prompt"])||E[1]||"",prompt:We(l,"prompt",["revisedPrompt","mode","semanticName","size","quality","outputFormat","background","returnedImages","startedAt","finishedAt","duration"]),mode:We(l,"mode",["semanticName","prompt","size","quality"]),semanticName:We(l,"semanticName",["prompt","size","quality","outputFormat"]),size:We(l,"size",["quality","outputFormat","background","returnedImages","duration"])||E.find(z=>/^\d+x\d+$/i.test(z))||"",quality:We(l,"quality",["outputFormat","background","returnedImages","duration"])||E.find(z=>["low","medium","high"].includes(z.toLowerCase()))||"",outputFormat:We(l,"outputFormat",["background","returnedImages","images","duration"])||E.find(z=>["png","jpeg","jpg","webp"].includes(z.toLowerCase()))||"",background:We(l,"background",["returnedImages","images","startedAt","finishedAt","duration"]),sourceImages:We(l,"source images",["prompt","mode","semanticName","duration"]),count:We(l,"returnedImages",["images","index","duration"])||(p==null?void 0:p[2])||"",revisedPrompt:We(l,"revisedPrompt",["mode","semanticName","raw","created","data","b64_json","background","output_format","quality","size","usage","startedAt","finishedAt","duration"]),usage:We(l,"usage",["duration"]),startedAt:We(l,"startedAt",["finishedAt","duration"]),finishedAt:We(l,"finishedAt",["duration"]),duration:L===void 0?"":Wt(L)}}function We(e,t,l){var E;const u=l.length?`(?=\\s(?:${l.map(jn).join("|")}):)`:"$",y=new RegExp(`(?:^|\\s)${jn(t)}:\\s*([\\s\\S]*?)${u}`,"i").exec(e);return((E=y==null?void 0:y[1])==null?void 0:E.replace(/\[(?:base64 image|data URL) omitted[^\]]*\]/gi,"").trim().replace(/\s{2,}/g," "))||""}function Sd(e,t){for(const l of t){const u=new RegExp(`(?:^|\\s)${jn(l)}:\\s*(\\d+(?:\\.\\d+)?)\\s*ms?\\b`,"i").exec(e);if(u)return Number(u[1])}}function Wt(e){const t=Math.max(0,Number(e)||0);if(t<1e3)return`${Math.round(t)}ms`;if(t<6e4)return`${(t/1e3).toFixed(t<1e4?1:0).replace(/\.0$/,"")}s`;const l=Math.floor(t/6e4),u=Math.round(t%6e4/1e3);return`${l}m ${u}s`}function jn(e){return String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function cn(e,t=[]){const l=new Set(t.map(L=>String(L||"").trim()).filter(Boolean)),u=document.createElement("template");u.innerHTML=String(e);const p=new Set(["A","P","BR","STRONG","B","EM","I","CODE","PRE","BLOCKQUOTE","UL","OL","LI","H1","H2","H3","H4","H5","H6","HR","TABLE","THEAD","TBODY","TR","TH","TD","DEL","S","INPUT"]),y=document.createTreeWalker(u.content,NodeFilter.SHOW_ELEMENT),E=[];for(;y.nextNode();)E.push(y.currentNode);for(const L of E){if(!p.has(L.tagName)){L.replaceWith(document.createTextNode(L.textContent||""));continue}for(const z of Array.from(L.attributes)){const H=z.name.toLowerCase(),re=z.value;L.tagName==="A"&&H==="href"&&(og(re)||l.has(re))||L.tagName==="A"&&H==="title"||L.tagName==="CODE"&&H==="class"&&/^language-[\w-]+$/.test(re)||L.tagName==="PRE"&&H==="data-lang"&&/^[\w-]+$/.test(re)||L.tagName==="INPUT"&&["type","checked","disabled"].includes(H)||L.removeAttribute(z.name)}L.tagName==="A"&&!l.has(L.getAttribute("href")||"")&&(L.setAttribute("target","_blank"),L.setAttribute("rel","noreferrer noopener"))}return Ed(u.content),u.innerHTML}function Ed(e){for(const t of e.querySelectorAll("pre > code")){const l=Td(t.className),u=t.textContent||"",p=t.parentElement;p&&l&&p.setAttribute("data-lang",l);try{const y=l&&Ee.getLanguage(l)?Ee.highlight(u,{language:l,ignoreIllegals:!0}):u.length<=2e4?Ee.highlightAuto(u):void 0;if(!y)continue;t.innerHTML=y.value,t.className=["hljs",y.language?`language-${y.language}`:l?`language-${l}`:""].filter(Boolean).join(" "),p&&y.language&&!p.hasAttribute("data-lang")&&p.setAttribute("data-lang",y.language)}catch{t.textContent=u}}}function Td(e){const t=/(?:^|\s)language-([\w-]+)/.exec(e||"")||/(?:^|\s)lang-([\w-]+)/.exec(e||"");if(!t)return"";const l=t[1].toLowerCase();return{cjs:"javascript",mjs:"javascript",node:"javascript",shell:"bash",zsh:"bash",powershell:"bash",ps1:"bash",python3:"python",yml:"yaml",html:"xml",vue:"xml"}[l]||l}function Id(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Si())}function ga(e){var t;if(e.key==="Escape"&&o.confirmDialog.open){e.preventDefault(),sn(!1);return}if(e.key==="Escape"&&o.modelModalOpen){e.preventDefault(),On();return}if(e.key==="Escape"&&o.contextWindowModalOpen){e.preventDefault(),Cs();return}if(e.key==="Escape"&&o.compactionDetailLineId!==void 0){e.preventDefault(),$s();return}if(e.key==="Escape"&&o.backgroundTaskDetail){e.preventDefault(),Fs();return}if(e.key==="Escape"&&o.projectContextOpen){e.preventDefault(),Yr();return}if(e.key==="Escape"&&o.cwdPicker.open){e.preventDefault(),Hs();return}if(e.key==="Escape"&&o.runtimeContextDetail){e.preventDefault(),Qr();return}if(e.key==="Escape"&&o.runtimeContextModal){e.preventDefault(),Zr();return}if(e.key==="Escape"&&o.imagePreview){e.preventDefault(),Br();return}if(e.key==="Escape"&&o.toolDetailLineId!==void 0){e.preventDefault(),an();return}(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),(t=ne.value)==null||t.focus()),(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="c"&&!ae.value&&Ei()}function Ad(){var e;try{const t=localStorage.getItem(pl);if(t==="light"||t==="dark")return t}catch{}return(e=window.matchMedia)!=null&&e.call(window,"(prefers-color-scheme: dark)").matches?"dark":"light"}function Cd(e){var t,l,u,p;document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e,(t=document.querySelector('meta[name="theme-color"]'))==null||t.setAttribute("content",e==="dark"?"#0c0c0f":"#ffffff"),(p=(u=(l=window.__TAURI__)==null?void 0:l.core)==null?void 0:u.invoke)==null||p.call(u,"sync_window_theme",{theme:e}).catch(()=>{});try{localStorage.setItem(pl,e)}catch{}}function fa(){le.value=le.value==="dark"?"light":"dark"}async function Md(e){var u;const t=Array.from(((u=e.clipboardData)==null?void 0:u.files)||[]).filter(p=>p.type.startsWith("image/"));if(!t.length)return;e.preventDefault();const l=[];for(const p of t){const y=++o.attachmentCounter,E=`[img#${y}]`,L=await Sa(p);L.compressionRate>0&&l.push(L.compressionRate),o.attachments.push({kind:"image",imageId:ha(),label:E,mimeType:L.mimeType,data:L.data,previewUrl:L.previewUrl,name:p.name||`图片 ${y}`})}X(`已添加 ${t.length} 张图片附件`),l.length&&setTimeout(()=>X(Ia(l)),0)}function Nd(){var e;(e=ye.value)==null||e.click()}async function Rd(e){var l;const t=Array.from(((l=e==null?void 0:e.target)==null?void 0:l.files)||[]);t.length&&(await pa(t),e!=null&&e.target&&(e.target.value=""))}async function pa(e){var u;if(!e.length||o.uploadingFiles)return;o.uploadingFiles=!0;const t=Ch(e,p=>{o.uploadProgress=p}),l=F("/api/uploads");try{const p=[],y=[];for(const[E,L]of e.entries()){if(L.type.startsWith("image/")){const H=await Sa(L,we=>t.update(E,we*.9)),re=`[img#${++o.attachmentCounter}]`;H.compressionRate>0&&y.push(H.compressionRate),p.push({kind:"image",imageId:ha(),label:re,name:L.name||re,mimeType:H.mimeType,data:H.data,previewUrl:H.previewUrl}),t.complete(E);continue}const z=await Mh(l,L,H=>t.update(E,H));if(!((u=z==null?void 0:z.file)!=null&&u.absolutePath))throw new Error("upload response missing path");p.push({kind:"file",label:`[file#${++o.attachmentCounter}]`,name:z.file.name||L.name||`附件 ${o.attachmentCounter}`,mimeType:z.file.mimeType||L.type||"application/octet-stream",size:Number(z.file.size||L.size||0),absolutePath:z.file.absolutePath,relativePath:z.file.relativePath||""}),t.complete(E)}o.attachments.push(...p),t.succeed(),y.length&&setTimeout(()=>X(Ia(y)),0),X(`已上传 ${p.length} 个附件`)}catch(p){t.fail(),X(p.message||String(p))}finally{o.uploadingFiles=!1,o.uploadProgress=0}}function ha(){return typeof(crypto==null?void 0:crypto.randomUUID)=="function"?`image_${crypto.randomUUID()}`:`image_${Date.now().toString(16).slice(-8).padStart(8,"0")}-${Math.random().toString(16).slice(2,6).padEnd(4,"0")}-4${Math.random().toString(16).slice(2,5).padEnd(3,"0")}-a${Math.random().toString(16).slice(2,5).padEnd(3,"0")}-${Math.random().toString(16).slice(2,14).padEnd(12,"0")}`}function ma(e,t){if(!t.length)return e;const l=t.map(u=>u.label).join(" ");return e.trim()?`${e.trim()}
101
+
102
+ ${l}`:l}function Ld(e){return String(e).replace(/\s*\[img#\d+\]\s*/g," ").replace(/[ \t]{2,}/g," ").trim()}function $d(e){return String(e).replace(f0,"").replace(p0,"").replace(h0,"").replace(/[ \t]{2,}/g," ").trim()}function Od(e){return String(e||"").replace(new RegExp(`${jn(m0)}[\\s\\S]*?${jn(b0)}`,"g"),"").replace(/[ \t]{2,}/g," ").replace(/\n{3,}/g,`
103
+
104
+ `).trim()}function Ks(e){return Array.from(new Set(String(e||"").match(/\[img#\d+\]/g)||[]))}function ba(e){var u;const t=String(((u=o.session)==null?void 0:u.sessionId)||A||""),l=e.filter(p=>(p==null?void 0:p.kind)==="image"&&p.imageId&&p.previewUrl).map(p=>({sessionId:t,imageId:p.imageId,label:p.label,mimeType:p.mimeType,previewUrl:p.previewUrl,originalUrl:p.previewUrl,name:p.name,available:!0,pending:!0}));ka(l)}function Dd(e){const t=[];for(const l of e||[])Zs(l,t);ka(t.map(oo).filter(Boolean))}function un(e){var l;const t=String((e==null?void 0:e.sessionId)||((l=o.session)==null?void 0:l.sessionId)||A||"");return e!=null&&e.imageId?`${t}:image:${e.imageId}`:e!=null&&e.messageId&&Number.isInteger(Number(e==null?void 0:e.blockIndex))?`${t}:block:${e.messageId}:${Number(e.blockIndex)}`:""}function ka(e){if(!e.length)return;const t=e.map(u=>{var p;return{...u,sessionId:String(u.sessionId||((p=o.session)==null?void 0:p.sessionId)||A||"")}}),l=new Set(t.map(un).filter(Boolean));o.messageImagePreviews=[...o.messageImagePreviews.filter(u=>{const p=un(u);return!p||!l.has(p)}),...t].slice(-200)}function Kt(e){var u;if(ot(e))return Pd(e);const t=(e==null?void 0:e.kind)==="user"?ya(e):[e],l=[];for(const p of t){l.push(...Vs(p));for(const y of Ks(p==null?void 0:p.text)){const E=String(((u=o.session)==null?void 0:u.sessionId)||A||""),L=o.messageImagePreviews.filter(H=>H.sessionId===E&&H.label===y),z=String((p==null?void 0:p.messageId)||"").startsWith("web-user-")?[...L].reverse().find(H=>H.pending):L.length===1?L[0]:void 0;z&&l.push(z)}}return ao(l)}function Pd(e){const t=[];Zs(e,t);for(const l of zd(e))Zs(l,t);return ao(t.map(oo).filter(Boolean))}function Vs(e){const t=[];return Zs(e,t),ao(t.map(l=>oo(l)).filter(Boolean))}function ya(e){if((e==null?void 0:e.kind)!=="user")return[e];const t=String((e==null?void 0:e.messageId)||"");return t?(o.lines||[]).filter(u=>(u==null?void 0:u.kind)==="user"&&String((u==null?void 0:u.messageId)||"")===t):[e]}function Ud(e){return e.some(t=>Vs(t).length>0||Ks(t==null?void 0:t.text).length>0)}function Bd(e){return e.find(t=>Ht(t))||e.find(t=>Vs(t).length>0||Ks(t==null?void 0:t.text).length>0)||e[0]}function zd(e){const t=o.lines||[],l=String((e==null?void 0:e.toolUseId)||"");if(l)return t.filter(y=>Qs(y)&&String((y==null?void 0:y.parentToolUseId)||"")===l);const u=t.findIndex(y=>(y==null?void 0:y.id)===(e==null?void 0:e.id));if(u<0)return[];const p=[];for(let y=u+1;y<t.length;y+=1){const E=t[y];if(Qs(E)&&!ot(E)){p.push(E);continue}if((E==null?void 0:E.kind)==="tool"||(E==null?void 0:E.kind)==="user"||(E==null?void 0:E.kind)==="assistant"&&String((E==null?void 0:E.text)||"").trim())break}return p}function Zs(e,t){if(!e||typeof e!="object")return;const l=p=>{var y;return t.push({...p,messageId:p.messageId||e.messageId,sessionId:p.sessionId||((y=o.session)==null?void 0:y.sessionId)||A||""})},u=[e.images,e.imageAttachments,e.attachments,e.thumbnails];for(const p of u)if(Array.isArray(p))for(const y of p)!y||y.kind&&y.kind!=="image"||y.type&&y.type!=="image"||l(y);if(Array.isArray(e.blocks))for(const p of e.blocks)(p==null?void 0:p.type)==="image"&&l(p);e.image&&l(e.image)}function oo(e){var y,E,L,z,H,re,we,k;if(!e||typeof e!="object")return;const t=e.mimeType||((y=e.thumbnail)==null?void 0:y.mimeType)||((E=e.original)==null?void 0:E.mimeType)||"image/png",l=e.thumbnailSrc||((L=e.thumbnail)==null?void 0:L.src)||e.previewUrl||e.src||e.originalSrc||((z=e.original)==null?void 0:z.src)||io(e.data,t);if(!l&&e.available!==!1)return;const u=l?mo(l):"",p=e.originalSrc||((H=e.original)==null?void 0:H.src)||e.src||e.previewUrl||l;return{sessionId:String(e.sessionId||((re=o.session)==null?void 0:re.sessionId)||A||""),messageId:e.messageId,blockIndex:Number.isInteger(Number(e.blockIndex??e.index))?Number(e.blockIndex??e.index):void 0,imageId:e.imageId,label:e.label,mimeType:t,available:e.available!==!1&&!!u,error:e.error,previewUrl:u,originalUrl:p?mo(p):"",originalDecodeUrl:e.originalSrc||(we=e.original)!=null&&we.src||e.originalUrl||io(e.data,t)?mo(e.originalSrc||((k=e.original)==null?void 0:k.src)||e.originalUrl||io(e.data,t)):"",name:e.name||e.filename||e.label,sizeBytes:e.sizeBytes,pending:e.pending===!0}}function io(e,t){return!e||typeof e!="string"?"":e.startsWith("data:")?e:`data:${t};base64,${e}`}function ao(e){const t=new Set,l=[];for(const[u,p]of e.entries()){const y=un(p)||(p.previewUrl?`url:${p.previewUrl}`:`position:${p.messageId||"unknown"}:${p.blockIndex??u}`);t.has(y)||(t.add(y),l.push(p))}return l}function Vt(e,t){return(e==null?void 0:e.label)||(e!=null&&e.name&&!/^\[img#\d+\]$/.test(e.name)?e.name:`图片 ${t+1}`)}function va(e,t){const l=Fd(e==null?void 0:e.mimeType),u=((e==null?void 0:e.name)||(e==null?void 0:e.label)||`image-${t+1}`).replace(/[^\p{L}\p{N}._-]+/gu,"-").replace(/^-+|-+$/g,"")||`image-${t+1}`;return/\.[a-z0-9]{2,5}$/i.test(u)?u:`${u}.${l}`}function Fd(e){const t=String(e||"").toLowerCase();return t.includes("jpeg")?"jpg":t.includes("webp")?"webp":t.includes("gif")?"gif":"png"}function Qs(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.parentToolName)||"").toLowerCase()==="image_create"}function Hd(e){return Qs(e)&&Kt(e).length>0}function wa(e){o.attachments=o.attachments.filter(t=>t.label!==e)}function _a(){return o.attachments.filter(e=>e.kind==="file")}function xa(){return o.attachments.filter(e=>e.kind==="image")}function jd(e,t){return(e==null?void 0:e.name)||`附件 ${t+1}`}function Gd(e){return`${qd(e)} · ${lo(e==null?void 0:e.size)}`}function qd(e){const t=String((e==null?void 0:e.mimeType)||"").toLowerCase();return t?t.includes("pdf")?"PDF":t.includes("spreadsheet")||t.includes("excel")||t.includes("csv")?"表格":t.includes("word")||t.includes("document")?"文档":t.startsWith("text/")?"文本":t.startsWith("image/")?"图片":"文件":"文件"}function lo(e){const t=Number(e||0);return!Number.isFinite(t)||t<=0?"0 B":t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(t<10*1024?1:0).replace(/\.0$/,"")} KB`:t<1024*1024*1024?`${(t/(1024*1024)).toFixed(t<10*1024*1024?1:0).replace(/\.0$/,"")} MB`:`${(t/(1024*1024*1024)).toFixed(1).replace(/\.0$/,"")} GB`}async function Sa(e,t){const l=await Ea(e,t);return Wd(l,e.type||"image/png")}async function Ea(e,t){return new Promise((l,u)=>{const p=new FileReader;p.onprogress=y=>{y.lengthComputable&&y.total>0&&(t==null||t(y.loaded/y.total))},p.onload=()=>{t==null||t(1),l(String(p.result||""))},p.onabort=()=>u(new Error("文件读取已取消")),p.onerror=()=>u(p.error||new Error("read failed")),p.readAsDataURL(e)})}async function Wd(e,t="image/png"){const l=Ta(e,t),u=Kd(l.base64),p=await Zd(l.dataUrl).catch(()=>{});if(!p){const we=co(l.base64);if(!we)throw new Error("图片格式异常,无法读取为有效图片");return{mimeType:l.mimeType,data:we,previewUrl:`data:${l.mimeType};base64,${we}`,compressionRate:0}}const y=Math.min(1,d0/Math.max(p.naturalWidth||p.width,p.naturalHeight||p.height));let E=Math.max(1,Math.round((p.naturalWidth||p.width)*y)),L=Math.max(1,Math.round((p.naturalHeight||p.height)*y)),z=.88,H;for(let we=0;we<8&&(H=await Qd(p,E,L,"image/jpeg",z),!(H.bytes<=g0||z<=Ao&&Math.max(E,L)<=1280));we+=1)z>Ao?z=Math.max(Ao,z-.1):(E=Math.max(1,Math.round(E*.82)),L=Math.max(1,Math.round(L*.82)));const re=co(H==null?void 0:H.base64);if(!re)throw new Error("图片格式异常,无法转换为有效图片");return{mimeType:H.mimeType,data:re,previewUrl:`data:${H.mimeType};base64,${re}`,compressionRate:Vd(u,H.bytes)}}function Ta(e,t){var E;const l=String(e||"").trim(),u=/^data:([^;,]+);base64,([\s\S]*)$/i.exec(l),p=(E=u==null?void 0:u[1])!=null&&E.startsWith("image/")?u[1]:t,y=u?u[2]:l;return{mimeType:p,base64:y,dataUrl:u?l:`data:${p};base64,${y}`}}function Kd(e){const t=co(e);if(!t)return 0;const l=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*.75)-l)}function Vd(e,t){return!e||!t||t>=e?0:Math.round((1-t/e)*100)}function Ia(e){const t=Math.max(...e);return e.length>1?`图片已压缩,最高压缩率为 ${t}%`:`图片已压缩,压缩率为 ${t}%`}function co(e){let t=String(e||"").trim().replace(/^data:[^;,]+;base64,/i,"").replace(/\s+/g,"");if(!t)return"";t=t.replace(/-/g,"+").replace(/_/g,"/");const l=t.length%4;if(l&&(t+="=".repeat(4-l)),!/^[A-Za-z0-9+/]*={0,2}$/.test(t))return"";try{return atob(t),t}catch{return""}}function Zd(e){return new Promise((t,l)=>{const u=new Image;u.onload=()=>t(u),u.onerror=()=>l(new Error("image decode failed")),u.src=e})}async function Qd(e,t,l,u,p){const y=document.createElement("canvas");y.width=t,y.height=l;const E=y.getContext("2d");if(!E)throw new Error("canvas unavailable");E.fillStyle="#fff",E.fillRect(0,0,t,l),E.drawImage(e,0,0,t,l);const L=await new Promise(re=>y.toBlob(re,u,p));if(!L)throw new Error("image encode failed");const z=await Ea(L),H=Ta(z,u);return{mimeType:H.mimeType,base64:H.base64,bytes:L.size}}function Aa(){return window.matchMedia("(max-width: 820px)").matches?50:64}function Gn(){const e=ne.value;e&&(e.style.height=`${Aa()}px`,e.scrollTop=0)}function Yd(){const e=ne.value;if(!e)return;e.style.height="auto";const t=window.innerHeight*(window.matchMedia("(max-width: 820px)").matches?.28:.34);e.style.height=`${Math.max(Aa(),Math.min(e.scrollHeight,t))}px`}function uo(e=96){const t=$.value;return t?t.scrollHeight-t.scrollTop-t.clientHeight<=e:!0}function Jd(e){return String((e==null?void 0:e.id)??"")}function Xd(e){const t=zt.value[e];if(!t)return k0;if(Pr(t))return on(t)?Math.min(1200,72+t.lines.reduce((u,p)=>u+go(p),0)):Math.max(72,52+Ur(t).length*28);if(Un(t))return 74;if(Bn(t))return 88;const l=to(t);return l.length?64+l.reduce((u,p)=>u+ia(p),0):ot(t)||eg(t)?Math.max(560,go(t)):go(t)}function go(e){const t=Ht(e),l=Math.max(1,t.split(`
105
+ `).length),u=Math.ceil(t.length/72);return Math.max(72,Math.min(1200,52+Math.max(l,u)*24))}function eg(e){return e!=null&&e.image||[e==null?void 0:e.images,e==null?void 0:e.imageAttachments,e==null?void 0:e.thumbnails].some(t=>Array.isArray(t)&&t.length)||Array.isArray(e==null?void 0:e.attachments)&&e.attachments.some(t=>(t==null?void 0:t.kind)==="image"||(t==null?void 0:t.type)==="image"||String((t==null?void 0:t.mimeType)||"").startsWith("image/"))?!0:Array.isArray(e==null?void 0:e.blocks)&&e.blocks.some(t=>(t==null?void 0:t.type)==="image")}function Ys(){const e=$.value,t=q.value;!e||!t||(Sr.value=Math.max(0,t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop))}function fo(){mt&&(mt.disconnect(),$.value&&mt.observe($.value),q.value&&mt.observe(q.value))}function tg(e){e instanceof Element&&hs.value.measureElement(e)}function po(){hs.value.measure()}function ho(){Fe||(Fe=requestAnimationFrame(()=>{Fe=0,ng()}))}function ng(){const e=$.value;e&&(e.scrollTop=e.scrollHeight)}function sg(){if(bt.size<300)return;const e=new Set(o.lines.map(t=>t.id));for(const t of bt.keys()){const l=Number(String(t).split("",1)[0]);e.has(l)||bt.delete(t)}bt.size>500&&bt.clear()}function X(e){o.toast=e,clearTimeout(vn),vn=setTimeout(()=>{o.toast=""},3600)}function rg(e){return["running","preparing","calling_model","thinking","running_tools","compacting","injecting_context"].includes(e)}function dn(e){if(e==null||!Number.isFinite(Number(e)))return"—";const t=Math.max(0,Math.round(Number(e)));return t>=1e6?`${Ca(t/1e6)}m`:t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?`${Ca(t/1e3)}k`:String(t)}function Ca(e){return e>=10?e.toFixed(0):e.toFixed(1).replace(/\.0$/,"")}function Js(e){return String(e).replace(/\x1b\[[0-9;]*m/g,"")}function og(e){try{const t=new URL(e,window.location.href);return["http:","https:","mailto:"].includes(t.protocol)}catch{return!1}}function Se(e){return String(e).replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t])}function Ma(e){return e.replace(/(https?:\/\/[^\s<]+)/g,'<a target="_blank" rel="noreferrer noopener" href="$1">$1</a>')}function mo(e){const t=String(e||"");return t.startsWith("/api/images/")?F(t):t}function Xs(){var e;(e=se.value)==null||e.removeAttribute("open")}function Na(e){const t=se.value;t!=null&&t.open&&!e.composedPath().includes(t)&&Xs()}function qn(e){if(ue.value="",Xs(),e==="sessions")return Ms();if(e==="users")return Ns();if(e==="prompts")return Nr();if(e==="settings")return Dn();o.activePanel="chat"}function Ra(){return ue.value="",Xs(),Rs()}return(e,t)=>{var l,u,p,y,E,L,z,H,re,we;return m(),b(Y,null,[a("div",Lh,[a("aside",$h,[a("div",Oh,[a("button",{class:"theme-toggle celestial-theme-toggle",type:"button","aria-label":ks.value,"aria-pressed":bs.value,title:ks.value,onClick:fa},[...t[42]||(t[42]=[Ba('<span class="theme-orbit-scene" aria-hidden="true"><i class="theme-cloud theme-cloud-one"></i><i class="theme-cloud theme-cloud-two"></i><i class="theme-star theme-star-one"></i><i class="theme-star theme-star-two"></i><i class="theme-star theme-star-three"></i><span class="theme-orbit-body"><svg class="theme-sun" viewBox="0 0 28 28"><circle cx="14" cy="14" r="5.2"></circle><path d="M14 2.5v3M14 22.5v3M2.5 14h3M22.5 14h3M5.9 5.9 8 8M20 20l2.1 2.1M22.1 5.9 20 8M8 20l-2.1 2.1"></path></svg><svg class="theme-moon" viewBox="0 0 28 28"><path d="M20.8 18.8A9.2 9.2 0 0 1 9.2 7.2a9.2 9.2 0 1 0 11.6 11.6Z"></path><circle cx="10.2" cy="16.8" r="1"></circle><circle cx="15.4" cy="21" r=".75"></circle></svg></span></span>',1)])],8,Dh)]),a("nav",Ph,[i.value?C("",!0):(m(),b("button",{key:0,class:Q({active:o.activePanel==="chat"}),onClick:Rs},[...t[43]||(t[43]=[a("span",{class:"nav-button-content"},[a("svg",{class:"ui-icon nav-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M10 4v12M4 10h12"})]),a("span",null,"新建会话")],-1)])],2)),a("button",{class:Q({active:o.activePanel==="sessions"}),onClick:Ms},[...t[44]||(t[44]=[a("span",{class:"nav-button-content"},[a("svg",{class:"ui-icon nav-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M5 4.5h10a1.5 1.5 0 0 1 1.5 1.5v8A1.5 1.5 0 0 1 15 15.5H8l-3.5 2v-3.5A1.5 1.5 0 0 1 3 12.5V6A1.5 1.5 0 0 1 4.5 4.5Z"}),a("path",{d:"M6.75 8h6.5M6.75 11h4.5"})]),a("span",null,"会话管理")],-1)])],2),i.value?(m(),b("button",{key:1,class:Q({active:o.activePanel==="users"}),onClick:Ns},[...t[45]||(t[45]=[a("span",{class:"nav-button-content"},[a("svg",{class:"ui-icon nav-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("circle",{cx:"7",cy:"7",r:"3"}),a("path",{d:"M2.5 16c.5-3 2-4.5 4.5-4.5s4 1.5 4.5 4.5M13 7h4M15 5v4"})]),a("span",null,"用户管理")],-1)])],2)):C("",!0),c.value?(m(),b("button",{key:2,class:Q({active:o.activePanel==="settings"}),onClick:t[0]||(t[0]=k=>Dn())},[...t[46]||(t[46]=[a("span",{class:"nav-button-content"},[a("svg",{class:"ui-icon nav-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M10 3.5v2M10 14.5v2M5.4 5.4l1.4 1.4M13.2 13.2l1.4 1.4M3.5 10h2M14.5 10h2M5.4 14.6l1.4-1.4M13.2 6.8l1.4-1.4"}),a("circle",{cx:"10",cy:"10",r:"2.75"})]),a("span",null,"模型配置")],-1)])],2)):C("",!0)]),a("button",{class:Q(["sidebar-card","session-entry",{working:At.value}]),type:"button",onClick:t[1]||(t[1]=k=>o.activePanel="chat"),title:as.value},[t[47]||(t[47]=a("span",{class:"session-entry-icon","aria-hidden":"true"},[a("i",{class:"session-diamond"})],-1)),a("span",Bh,[a("span",{ref_key:"sessionTitleViewport",ref:ls,class:Q(["session-title-line",{marquee:Er.value}])},[a("strong",{ref_key:"sessionTitleText",ref:ui},x(as.value),513),Er.value?(m(),b("strong",zh,x(as.value),1)):C("",!0)],2)])],10,Uh),Re(je).isolation?C("",!0):(m(),b("section",Fh,[a("div",Hh,[a("button",{type:"button",class:"mini-button",onClick:t[2]||(t[2]=k=>Nr())},"提示词管理")]),a("div",jh,[o.promptLibraryLoading?(m(),b("div",Gh,"正在加载…")):o.promptLibrary.length?(m(!0),b(Y,{key:2},ce(o.promptLibrary,k=>{var T;return m(),b("article",{key:k.id,class:Q(["prompt-card",{active:((T=Ft.value)==null?void 0:T.id)===k.id}]),draggable:"true",onDragstart:Pe=>Qc(Pe,k),onDragend:nu,onDblclick:Pe=>Ln(k)},[a("div",Kh,[a("strong",null,x(k.title),1)]),a("div",Vh,[a("button",{type:"button",class:"mini-button",onClick:Pe=>Ln(k)},"应用",8,Zh),a("button",{type:"button",class:"mini-button",onClick:Pe=>qc(k)},"编辑",8,Qh)])],42,Wh)}),128)):(m(),b("div",qh,"暂无提示词"))])])),Re(je).isolation?(m(),b("div",Yh,[a("button",{class:"logout-icon-button",type:"button","aria-label":"退出登录",title:`${(l=Re(je).user)==null?void 0:l.username} · 退出登录`,onClick:Tc},[...t[48]||(t[48]=[a("svg",{class:"ui-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M8 4H4.75A1.75 1.75 0 0 0 3 5.75v8.5A1.75 1.75 0 0 0 4.75 16H8"}),a("path",{d:"M11 6.5 14.5 10 11 13.5M6.5 10h8"})],-1)])],8,Jh)])):C("",!0)]),a("main",Xh,[a("header",em,[a("div",tm,[a("details",{ref_key:"mobileMenu",ref:se,class:"mobile-nav-menu"},[t[52]||(t[52]=a("summary",{"aria-label":"打开导航菜单",title:"导航菜单"},[a("svg",{class:"ui-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M4 5.5h12M4 10h12M4 14.5h12"})])],-1)),a("nav",null,[a("button",{type:"button",class:Q({active:o.activePanel==="chat"}),onClick:t[3]||(t[3]=k=>qn("chat"))},"对话",2),i.value?C("",!0):(m(),b("button",{key:0,type:"button",onClick:Ra},"新建会话")),a("button",{type:"button",class:Q({active:o.activePanel==="sessions"}),onClick:t[4]||(t[4]=k=>qn("sessions"))},"会话",2),i.value?(m(),b("button",{key:1,type:"button",class:Q({active:o.activePanel==="users"}),onClick:t[5]||(t[5]=k=>qn("users"))},"用户",2)):C("",!0),Re(je).isolation?C("",!0):(m(),b("button",{key:2,type:"button",class:Q({active:o.activePanel==="prompts"}),onClick:t[6]||(t[6]=k=>qn("prompts"))},"提示词",2)),c.value?(m(),b("button",{key:3,type:"button",class:Q({active:o.activePanel==="settings"}),onClick:t[7]||(t[7]=k=>qn("settings"))},"模型配置",2)):C("",!0),(m(!0),b(Y,null,ce(xe.value,k=>(m(),b("button",{key:k.id,type:"button",onClick:T=>et(k.id)},x(k.title),9,nm))),128)),o.coreVersion?(m(),b("div",{key:4,class:Q(["core-version","mobile-core-version",{celebrating:o.coreEasterEgg}]),role:"button",tabindex:"0",onClick:nn,onKeydown:[at(he(nn,["prevent"]),["enter"]),at(he(nn,["prevent"]),["space"])]},[t[49]||(t[49]=a("span",{class:"core-version-spark spark-a","aria-hidden":"true"},null,-1)),t[50]||(t[50]=a("span",{class:"core-version-spark spark-b","aria-hidden":"true"},null,-1)),t[51]||(t[51]=a("span",{class:"core-version-spark spark-c","aria-hidden":"true"},null,-1)),a("span",null,"内核版本 "+x(o.coreVersion),1)],42,sm)):C("",!0)])],512),_n.value?(m(),b("strong",{key:0,class:"mobile-session-title",title:_n.value},x(_n.value),9,rm)):C("",!0),a("button",{class:"ghost mobile-theme-toggle celestial-theme-toggle",type:"button","aria-label":ks.value,"aria-pressed":bs.value,title:ks.value,onClick:fa},[...t[53]||(t[53]=[Ba('<span class="theme-orbit-scene" aria-hidden="true"><i class="theme-cloud theme-cloud-one"></i><i class="theme-cloud theme-cloud-two"></i><i class="theme-star theme-star-one"></i><i class="theme-star theme-star-two"></i><i class="theme-star theme-star-three"></i><span class="theme-orbit-body"><svg class="theme-sun" viewBox="0 0 28 28"><circle cx="14" cy="14" r="5.2"></circle><path d="M14 2.5v3M14 22.5v3M2.5 14h3M22.5 14h3M5.9 5.9 8 8M20 20l2.1 2.1M22.1 5.9 20 8M8 20l-2.1 2.1"></path></svg><svg class="theme-moon" viewBox="0 0 28 28"><path d="M20.8 18.8A9.2 9.2 0 0 1 9.2 7.2a9.2 9.2 0 1 0 11.6 11.6Z"></path><circle cx="10.2" cy="16.8" r="1"></circle><circle cx="15.4" cy="21" r=".75"></circle></svg></span></span>',1)])],8,om),c.value?(m(),b("button",{key:1,class:"ghost desktop-config-button",onClick:t[8]||(t[8]=k=>Dn())},"配置模型")):C("",!0),a("button",{class:"primary new-session-button",onClick:Ra},"+ 新建")])]),o.activePanel==="chat"?(m(),b("section",im,[a("div",am,[a("div",{ref_key:"transcript",ref:$,class:"transcript"},[o.runtimeContext||o.runtimeContextLoading||o.runtimeContextError?(m(),b("section",lm,[t[57]||(t[57]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"运行上下文")],-1)),o.runtimeContext?(m(),b("div",cm,[Re(je).isolation?C("",!0):(m(),b("button",{key:0,type:"button",onClick:t[9]||(t[9]=k=>Vr("prompt"))},[t[54]||(t[54]=a("span",null,"系统提示词",-1)),a("strong",null,x(_c.value.length),1)])),a("button",{type:"button",onClick:t[10]||(t[10]=k=>Vr("tools"))},[t[55]||(t[55]=a("span",null,"工具",-1)),a("strong",null,x(Ar.value.length),1)]),a("button",{type:"button",onClick:t[11]||(t[11]=k=>Vr("plugins"))},[t[56]||(t[56]=a("span",null,"插件",-1)),a("strong",null,x(xc.value),1)])])):o.runtimeContextError?(m(),b("button",{key:1,type:"button",class:"runtime-context-retry",onClick:Mn},"重试")):(m(),b("span",um,"同步中"))])):C("",!0),In.value.length?(m(),b("section",dm,[t[59]||(t[59]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"项目上下文")],-1)),a("div",gm,[a("button",{type:"button",onClick:Ku},[t[58]||(t[58]=a("span",null,"文档",-1)),a("strong",null,x(In.value.length),1)])])])):C("",!0),a("div",{ref_key:"messageList",ref:q,class:"virtual-message-list",style:ft({height:`${wc.value}px`})},[(m(!0),b(Y,null,ce(vc.value,k=>(m(),b("div",{key:k.key,ref_for:!0,ref:tg,class:"virtual-message-row","data-index":k.index,style:ft({transform:`translateY(${k.start-Sr.value}px)`})},[(m(!0),b(Y,null,ce([zt.value[k.index]],T=>{var Pe,gt,La,$a;return m(),b(Y,{key:T.id},[Pr(T)?(m(),b("article",{key:0,class:Q(["message","tool-group-message",{live:T.live,expanded:on(T)}])},[a("div",pm,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":on(T),onClick:D=>Nu(T)},[a("span",mm,[(m(!0),b(Y,null,ce(Ui(T),(D,te)=>(m(),b(Y,{key:D.name},[a("span",bm,x(D.name),1),D.count>1?(m(),b("span",km,"×"+x(D.count),1)):C("",!0),te<Ui(T).length-1?(m(),b("span",ym,"、")):C("",!0)],64))),128))]),t[60]||(t[60]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,hm),!on(T)&&Ur(T).length?(m(),Ue(fg,{key:0,name:"tool-purpose",tag:"div",class:"tool-group-purposes"},{default:gg(()=>[(m(!0),b(Y,null,ce(Ur(T),(D,te)=>(m(),b("div",{key:D.id,class:Q(["tool-group-purpose",{live:D.live}]),style:ft({"--purpose-index":te})},[a("span",null,x(D.text),1)],6))),128))]),_:2},1024)):C("",!0),on(T)?(m(),b("div",vm,[(m(!0),b(Y,null,ce(T.lines,D=>{var te,Ke,bo,Oa;return m(),b("div",{key:D.id,class:Q(["tool-group-result",`kind-${D.kind||"system"}`])},[D.kind==="thinking"?(m(),b("details",{key:0,class:"reasoning-sheet",open:D.live||void 0},[t[61]||(t[61]=a("summary",null,[a("span",{class:"reasoning-title-mark","aria-hidden":"true"},[a("i"),a("i"),a("i")]),a("span",{class:"reasoning-heading"},"思考")],-1)),a("div",_m,[a("div",xm,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Gs(D)},null,8,Sm)])])],8,wm)):Un(D)?(m(),b("section",{key:1,class:Q(["compaction-context-bar",{current:D.compaction.current}]),role:"button",tabindex:"0","aria-label":"查看压缩上下文",onClick:Ve=>rn(D),onKeydown:[at(he(Ve=>rn(D),["prevent"]),["enter"]),at(he(Ve=>rn(D),["prevent"]),["space"])]},[t[64]||(t[64]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",Tm,[a("span",null,[t[62]||(t[62]=a("span",null,"摘要",-1)),a("strong",null,x(dn(String(D.compaction.summary||"").length)),1)]),D.compaction.imageCount?(m(),b("span",Im,[t[63]||(t[63]=a("span",null,"图片",-1)),a("strong",null,x(D.compaction.imageCount),1)])):C("",!0)])],42,Em)):Bn(D)?(m(),b("div",{key:2,class:Q(["tool-result-summary",`status-${Ct(D).key}`])},[a("div",Am,[(m(),b("svg",{class:Q(["tool-result-diamond",{spinning:D.live}]),viewBox:"0 0 20 20","aria-hidden":"true"},[...t[65]||(t[65]=[a("path",{d:"M10 2.75 17.25 10 10 17.25 2.75 10Z"},null,-1)])],2)),a("strong",Cm,x(jt(D)),1),Ct(D).key==="failed"?(m(),b("span",Mm,"×")):C("",!0)]),a("div",Nm,[(te=D.toolDisplay)!=null&&te.purpose||(Ke=D.toolDisplay)!=null&&Ke.subject?(m(),b("p",Rm,x(((bo=D.toolDisplay)==null?void 0:bo.purpose)||((Oa=D.toolDisplay)==null?void 0:Oa.subject)),1)):C("",!0),D.toolError?(m(),b("p",Lm,x(D.toolError),1)):C("",!0),Nt(D)&&Mt(D).length?(m(),b("div",$m,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":Ps(D),onClick:Ve=>Vi(D)},[a("span",Dm,[(m(!0),b(Y,null,ce(Ds(D),(Ve,Wn)=>(m(),b(Y,{key:Ve.name},[a("span",Pm,x(Ve.label),1),Ve.count>1?(m(),b("span",Um,"×"+x(Ve.count),1)):C("",!0),Wn<Ds(D).length-1?(m(),b("span",Bm,"、")):C("",!0)],64))),128))]),t[66]||(t[66]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,Om),Ps(D)?(m(),b("div",zm,[(m(!0),b(Y,null,ce(Ki(D),(Ve,Wn)=>(m(),b("div",{key:Ve.key,class:"tool-group-purpose",style:ft({"--purpose-index":Wn})},[a("span",null,x(Ve.purpose),1)],4))),128))])):C("",!0)])):!Os(D)&&Fn(D)?(m(),b("p",Fm,[Qn(x(Fn(D)),1),Us(D)?(m(),b("span",Hm,x(Us(D)),1)):C("",!0)])):C("",!0),!Os(D)&&!Nt(D)&&Mt(D).length?(m(),b("div",jm,[a("section",Gm,[a("pre",qm,x(Wi(D)),1)])])):C("",!0),!Nt(D)&&zn(D)&&(!zr(D)||D.live===!0)?(m(),b("div",Wm,[a("section",Km,[a("pre",Vm,x(zn(D)),1)])])):C("",!0),!Nt(D)&&qi(D)?(m(),b("div",Zm,[(m(!0),b(Y,null,ce(Gi(D),(Ve,Wn)=>(m(),b("section",{key:`${Ve.kind}-${Wn}`,class:Q(["tool-result-preview",`kind-${Ve.kind}`])},[a("pre",Qm,x(Ve.content),1)],2))),128))])):C("",!0)])],2)):(m(),b("div",Ym,[Pn(D)?C("",!0):(m(),b("div",Jm,[a("strong",null,x(jt(D)),1),D.toolName&&Ct(D).key==="failed"?(m(),b("span",Xm,"×")):C("",!0)])),a("div",{class:"message-text markdown",innerHTML:Gs(D)},null,8,eb)]))],2)}),128))])):C("",!0)])],2)):(m(),b("article",{key:1,class:Q(["message",T.kind||"system",{live:T.live,"prompt-usage":Dr(T),"context-compaction":Un(T),"compact-tool":Bn(T)}])},[a("div",{class:Q(["message-marker",{spinning:T.live}])},[...t[67]||(t[67]=[a("svg",{class:"message-marker-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M10 2.75 17.25 10 10 17.25 2.75 10Z"})],-1)])],2),Un(T)?(m(),b("div",tb,[a("section",{class:Q(["compaction-context-bar",{current:T.compaction.current}]),role:"button",tabindex:"0","aria-label":"查看压缩上下文",onClick:D=>rn(T),onKeydown:[at(he(D=>rn(T),["prevent"]),["enter"]),at(he(D=>rn(T),["prevent"]),["space"])]},[t[70]||(t[70]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",sb,[a("span",null,[t[68]||(t[68]=a("span",null,"摘要",-1)),a("strong",null,x(dn(String(T.compaction.summary||"").length)),1)]),T.compaction.imageCount?(m(),b("span",rb,[t[69]||(t[69]=a("span",null,"图片",-1)),a("strong",null,x(T.compaction.imageCount),1)])):C("",!0)])],42,nb)])):T.kind==="thinking"?(m(),b("div",ob,[a("details",{class:"reasoning-sheet",open:T.live||void 0},[a("summary",null,[t[71]||(t[71]=a("span",{class:"reasoning-title-mark","aria-hidden":"true"},[a("i"),a("i"),a("i")],-1)),t[72]||(t[72]=a("span",{class:"reasoning-heading"},"思考",-1)),Hn(T)?(m(),b("span",ab,x(Hn(T)),1)):C("",!0)]),a("div",lb,[a("div",cb,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Gs(T)},null,8,ub)])])],8,ib)])):(m(),b("div",db,[!Pn(T)&&(T.kind!=="tool"||ln(T).length)&&!Bn(T)?(m(),b("div",gb,[a("strong",null,x(jt(T)),1),T.toolName&&Ct(T).key==="failed"?(m(),b("span",fb,"×")):C("",!0),!T.toolName&&T.titleStatus?(m(),b("span",pb,x(T.titleStatus),1)):C("",!0),Hn(T)?(m(),b("span",hb,x(Hn(T)),1)):C("",!0)])):C("",!0),ot(T)?(m(),b("div",mb,[a("div",{class:"message-text markdown image2-stage-wrap",innerHTML:yd(T)},null,8,bb),(m(!0),b(Y,null,ce([Kt(T)],D=>(m(),b(Y,{key:`${T.id}-image2-images`},[D.length?(m(),b("div",kb,[(m(!0),b(Y,null,ce(D,(te,Ke)=>(m(),b("figure",{key:un(te)||te.previewUrl||Ke,class:Q(["message-image-attachment",{"image-unavailable":!te.available}])},[te.available&&te.previewUrl?(m(),b("button",{key:0,type:"button",class:"image-preview-trigger","data-preview-src":Re(tt)(te.originalUrl||te.previewUrl),"aria-label":`预览 ${Vt(te,Ke)}`},[a("img",{src:Re(tt)(te.previewUrl),alt:Vt(te,Ke),loading:"lazy",decoding:"async"},null,8,vb)],8,yb)):(m(),b("div",wb,"图片不可用")),a("figcaption",null,x(Vt(te,Ke)),1),a("div",_b,[te.available&&te.previewUrl?(m(),b("a",{key:0,class:"image-download",href:Re(tt)(te.originalUrl||te.previewUrl),download:va(te,Ke)},"下载",8,xb)):C("",!0),Ke===0&&Rt(T)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:bo=>zi(T)},"详情",8,Sb)):C("",!0)])],2))),128))])):Rt(T)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:te=>zi(T)},"详情",8,Eb)):C("",!0)],64))),128))])):Bn(T)?(m(),b("div",{key:2,class:Q(["tool-result-summary",`status-${Ct(T).key}`])},[a("div",Tb,[(m(),b("svg",{class:Q(["tool-result-diamond",{spinning:T.live}]),viewBox:"0 0 20 20","aria-hidden":"true"},[...t[73]||(t[73]=[a("path",{d:"M10 2.75 17.25 10 10 17.25 2.75 10Z"},null,-1)])],2)),a("strong",Ib,x(jt(T)),1),Ct(T).key==="failed"?(m(),b("span",Ab,"×")):C("",!0)]),a("div",Cb,[(Pe=T.toolDisplay)!=null&&Pe.purpose||(gt=T.toolDisplay)!=null&&gt.subject?(m(),b("p",Mb,x(((La=T.toolDisplay)==null?void 0:La.purpose)||(($a=T.toolDisplay)==null?void 0:$a.subject)),1)):C("",!0),T.toolError?(m(),b("p",Nb,x(T.toolError),1)):C("",!0),Nt(T)&&Mt(T).length?(m(),b("div",Rb,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":Ps(T),onClick:D=>Vi(T)},[a("span",$b,[(m(!0),b(Y,null,ce(Ds(T),(D,te)=>(m(),b(Y,{key:D.name},[a("span",Ob,x(D.label),1),D.count>1?(m(),b("span",Db,"×"+x(D.count),1)):C("",!0),te<Ds(T).length-1?(m(),b("span",Pb,"、")):C("",!0)],64))),128))]),t[74]||(t[74]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,Lb),Ps(T)?(m(),b("div",Ub,[(m(!0),b(Y,null,ce(Ki(T),(D,te)=>(m(),b("div",{key:D.key,class:"tool-group-purpose",style:ft({"--purpose-index":te})},[a("span",null,x(D.purpose),1)],4))),128))])):C("",!0)])):!Os(T)&&Fn(T)?(m(),b("p",Bb,[Qn(x(Fn(T)),1),Us(T)?(m(),b("span",zb,x(Us(T)),1)):C("",!0)])):C("",!0),!Os(T)&&!Nt(T)&&Mt(T).length?(m(),b("div",Fb,[a("section",Hb,[a("pre",jb,x(Wi(T)),1)])])):C("",!0),!Nt(T)&&zn(T)&&(!zr(T)||T.live===!0)?(m(),b("div",Gb,[a("section",qb,[a("pre",Wb,x(zn(T)),1)])])):C("",!0),!Nt(T)&&qi(T)?(m(),b("div",Kb,[(m(!0),b(Y,null,ce(Gi(T),(D,te)=>(m(),b("section",{key:`${D.kind}-${te}`,class:Q(["tool-result-preview",`kind-${D.kind}`])},[a("pre",Vb,x(D.content),1)],2))),128))])):C("",!0)])],2)):(m(),b(Y,{key:3},[to(T).length?(m(),b(Y,{key:0},[a("div",Zb,[(m(!0),b(Y,null,ce(to(T),D=>(m(),b("iframe",{key:D.url,class:"plugin-resource-frame",src:hd(D),title:D.label||"插件资源",style:ft({height:`${ia(D)}px`}),loading:"lazy",allow:"fullscreen",allowfullscreen:""},null,12,Qb))),128))]),oa(T).length?(m(),b("div",{key:0,class:"message-text markdown",innerHTML:aa(T)},null,8,Yb)):C("",!0)],64)):T.kind==="assistant"&&T.live?(m(),b("div",Jb,[gn(vh,{text:T.text||"","exposed-resources":la(T)},null,8,["text","exposed-resources"])])):Hd(T)?C("",!0):(m(),b("div",{key:2,class:"message-text markdown",innerHTML:Gs(T)},null,8,Xb)),(m(!0),b(Y,null,ce([Kt(T)],D=>(m(),b(Y,{key:`${T.id}-images`},[D.length?(m(),b("div",ek,[(m(!0),b(Y,null,ce(D,(te,Ke)=>(m(),b("figure",{key:un(te)||te.previewUrl||Ke,class:Q(["message-image-attachment",{"image-unavailable":!te.available}])},[te.available&&te.previewUrl?(m(),b("button",{key:0,type:"button",class:"image-preview-trigger","data-preview-src":Re(tt)(te.originalUrl||te.previewUrl),"aria-label":`预览 ${Vt(te,Ke)}`},[a("img",{src:Re(tt)(te.previewUrl),alt:Vt(te,Ke),loading:"lazy",decoding:"async"},null,8,nk)],8,tk)):(m(),b("div",sk,"图片不可用")),a("figcaption",null,x(Vt(te,Ke)),1),te.available&&te.previewUrl?(m(),b("a",{key:2,class:"image-download",href:Re(tt)(te.originalUrl||te.previewUrl),download:va(te,Ke)},"下载",8,rk)):C("",!0)],2))),128))])):C("",!0)],64))),128))],64))]))],2))],64)}),128))],12,fm))),128))],4),uc.value?(m(),b("div",ok,[a("div",ik,[a("span",ak,x(dc.value),1)]),t[75]||(t[75]=a("span",{class:"message-loading-emblem","aria-hidden":"true"},[a("i"),a("i"),a("i")],-1))])):C("",!0)],512),o.queuedInput&&!i.value?(m(),b("div",lk,[a("span",null,"已排队:"+x(o.queuedInput),1),a("div",null,[a("button",{type:"button",disabled:r.value,onClick:Ti},"立即发送",8,ck),a("button",{type:"button",disabled:r.value,onClick:au},"取消",8,uk)])])):C("",!0),i.value?C("",!0):(m(),b("form",{key:1,class:Q(["composer",{"drop-active":o.composerDropActive}]),onSubmit:he(Si,["prevent"]),onDragover:Yc,onDragleave:Jc,onDrop:Xc},[(u=o.appPrompt)!=null&&u.hasActivePrompt?(m(),b("div",dk,[t[76]||(t[76]=a("span",{class:"composer-app-prompt-label"},"当前提示词",-1)),a("strong",null,x(Ec.value),1),a("button",{type:"button",class:"mini-button danger",onClick:_i},"清空")])):C("",!0),_a().length?(m(),b("div",gk,[(m(!0),b(Y,null,ce(_a(),(k,T)=>(m(),b("figure",{key:k.label,class:"file-attachment"},[a("figcaption",null,[a("strong",null,x(jd(k,T)),1),a("span",null,x(Gd(k)),1)]),a("button",{type:"button","aria-label":"移除附件",onClick:Pe=>wa(k.label)},"×",8,fk)]))),128))])):C("",!0),xa().length?(m(),b("div",pk,[(m(!0),b(Y,null,ce(xa(),(k,T)=>(m(),b("figure",{key:k.label,class:"image-attachment"},[a("img",{src:Re(tt)(k.previewUrl),alt:k.name||`图片 ${T+1}`},null,8,hk),a("figcaption",null,"图片 "+x(T+1),1),a("button",{type:"button","aria-label":"移除图片",onClick:Pe=>wa(k.label)},"×",8,mk)]))),128))])):C("",!0),a("input",{ref_key:"fileInput",ref:ye,type:"file",multiple:"",hidden:"",onChange:Rd},null,544),$e(a("textarea",{ref_key:"composer",ref:ne,"onUpdate:modelValue":t[12]||(t[12]=k=>ae.value=k),placeholder:"在这里输入你的问题、需求或下一步安排…",onKeydown:Id,onPaste:Md,onInput:Yd},null,544),[[nt,ae.value]]),a("div",bk,[a("button",{type:"button",class:"composer-cwd",title:"切换工作目录","aria-label":"切换工作目录",onClick:Zu},[t[77]||(t[77]=a("svg",{class:"composer-cwd-icon",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linejoin":"round","aria-hidden":"true"},[a("path",{d:"M2.5 5h5l2 2h8v9h-15Z"})],-1)),a("span",{title:di.value},x(di.value),9,kk)])]),a("div",{class:Q(["composer-footer",{"session-options-open":s.value}])},[a("div",yk,[a("button",{type:"button",class:"metric-chip model-chip context-window-trigger model-trigger","aria-label":"选择模型",onClick:cu},[t[78]||(t[78]=a("em",null,"模型",-1)),a("strong",null,x(gc.value),1)]),(m(),b("button",{type:"button",class:Q(["metric-chip","numeric","context-window-trigger",Gr("context")]),key:`context-${o.composerMetrics.context.bump}`,onClick:du},[t[79]||(t[79]=a("em",null,"上下文",-1)),a("strong",null,x(pc.value),1)],2)),(m(),b("span",{class:Q(["metric-chip numeric",Gr("inputTokens")]),key:`input-${o.composerMetrics.inputTokens.bump}`},[t[80]||(t[80]=a("em",null,"输入",-1)),a("strong",null,x(mc.value),1)],2)),(m(),b("span",{class:Q(["metric-chip numeric",Gr("outputTokens")]),key:`output-${o.composerMetrics.outputTokens.bump}`},[t[81]||(t[81]=a("em",null,"输出",-1)),a("strong",null,x(bc.value),1)],2)),a("button",{type:"button",class:Q(["fast-mode-button",{active:us.value,syncing:o.fastModeMutating}]),"aria-pressed":us.value,title:us.value?"关闭当前会话的快速模式":"为当前会话启动快速模式",onClick:pu},[...t[82]||(t[82]=[a("span",null,"快速模式",-1)])],10,vk),a("span",wk,[a("button",{type:"button",class:"compact-button",disabled:o.compactSaving||o.pendingSessionSettings.compact===!0,onClick:lu},"压缩会话",8,_k)])]),a("div",xk,[a("button",{type:"button",class:"session-options-toggle","aria-label":"会话选项","aria-expanded":s.value,"aria-controls":"composer-session-metrics",onClick:t[13]||(t[13]=k=>s.value=!s.value)},[...t[83]||(t[83]=[a("svg",{viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M3 6h14M3 14h14M7 3v6M13 11v6"})],-1)])],8,Sk),a("button",{type:"button",class:"ghost upload-button",style:ft({"--upload-progress":o.uploadProgress+"%"}),disabled:o.uploadingFiles,"aria-busy":o.uploadingFiles,"aria-label":o.uploadingFiles?`上传中 ${o.uploadProgress}%`:"上传附件",title:o.uploadingFiles?`上传中 ${o.uploadProgress}%`:"上传附件",onClick:Nd},[...t[84]||(t[84]=[a("svg",{class:"composer-button-icon",viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"m7 10 5-5a3 3 0 0 1 4 4l-7 7a4.25 4.25 0 0 1-6-6l7-7M6 11l6-6"})],-1)])],12,Ek),a("button",{type:At.value?"button":"submit",class:Q(["primary","composer-action",{stop:At.value}]),disabled:r.value||!At.value&&(o.uploadingFiles||!ae.value.trim()&&!o.attachments.length),"aria-busy":r.value,"aria-label":fi.value,title:fi.value,onClick:t[14]||(t[14]=k=>At.value?iu():void 0)},[r.value?(m(),b("svg",Ik,[...t[85]||(t[85]=[a("circle",{cx:"10",cy:"10",r:"6.5",opacity:".25"},null,-1),a("path",{d:"M10 3.5a6.5 6.5 0 0 1 6.5 6.5"},null,-1)])])):At.value?Ir.value?(m(),b("svg",Ck,[...t[87]||(t[87]=[a("path",{d:"M4 5v10M11 16V4m-4 4 4-4 4 4"},null,-1)])])):o.queuedInput?(m(),b("svg",Mk,[...t[88]||(t[88]=[a("path",{d:"m4 5 7 5-7 5Zm10 0v10"},null,-1)])])):(m(),b("svg",Nk,[...t[89]||(t[89]=[a("path",{d:"M5 5h10v10H5Z",fill:"currentColor",stroke:"none"},null,-1)])])):(m(),b("svg",Ak,[...t[86]||(t[86]=[a("path",{d:"M10 16V4m-5 5 5-5 5 5"},null,-1)])]))],10,Tk)])],2)],34))]),a("aside",{class:Q(["right-panel",{"mobile-card-open":ue.value}]),"data-mobile-card":ue.value,onKeydown:at(he(Be,["stop"]),["esc"])},[ue.value?(m(),b("button",{key:0,type:"button",class:"mobile-card-close","aria-label":"关闭卡片",onClick:Be},"×")):C("",!0),a("section",Lk,[a("div",$k,[a("div",Ok,x(Me("tasks")),1),gs.value?(m(),b("strong",Dk,x(gs.value),1)):C("",!0)]),En.value?(m(),b("button",{key:0,type:"button",class:"background-task-summary",title:Bs(En.value),onClick:t[15]||(t[15]=k=>qr(En.value))},[a("span",{class:Q(["background-task-dot",`status-${En.value.status}`])},null,2),a("strong",null,x(zs(En.value)),1),gs.value>1?(m(),b("span",Uk,"+"+x(gs.value-1),1)):C("",!0),t[90]||(t[90]=a("b",{"aria-hidden":"true"},"›",-1))],8,Pk)):C("",!0),fs.value.length?(m(),b("details",Bk,[a("summary",null,[t[91]||(t[91]=a("span",null,"最近结束",-1)),a("strong",null,x(fs.value.length),1)]),a("div",zk,[(m(!0),b(Y,null,ce(fs.value,k=>(m(),b("button",{key:qt(k),type:"button",class:"background-task-summary background-task-history-item",title:Bs(k),onClick:T=>qr(k)},[a("span",{class:Q(["background-task-dot",`status-${k.status}`])},null,2),a("strong",null,x(zs(k)),1),a("span",{class:Q(["background-task-summary-status",`status-${k.status}`])},x(Wr(k.status)),3)],8,Fk))),128))])])):C("",!0)]),yt.value?(m(),b("section",Hk,[a("div",jk,[a("div",null,[a("span",null,x(Me("quota"))+" · "+x(vu(yt.value.account)),1),a("strong",null,x(Li(yt.value.remainingPercent)),1)]),a("div",Gk,[o.cpaQuotas.length>1?(m(),b("button",{key:0,type:"button","aria-label":"上一个凭据",onClick:t[16]||(t[16]=k=>Di(-1))},"‹")):C("",!0),a("small",null,x(o.cpaQuotas.length>1?`${o.cpaQuotaIndex+1}/${o.cpaQuotas.length}`:"剩余"),1),o.cpaQuotas.length>1?(m(),b("button",{key:1,type:"button","aria-label":"下一个凭据",onClick:t[17]||(t[17]=k=>Di(1))},"›")):C("",!0)])]),a("div",{class:"quota-progress",role:"progressbar","aria-label":"周额度剩余","aria-valuenow":Or(yt.value.remainingPercent),"aria-valuemin":"0","aria-valuemax":"100"},[a("span",{class:"quota-progress-fill",style:ft({width:`${Or(yt.value.remainingPercent)}%`})},null,4)],8,qk),a("div",Wk,[a("span",null,"已使用 "+x(Li(yt.value.usedPercent)),1),a("span",null,"续期时间 "+x($i(yt.value.resetAt)),1)]),a("div",Kk,"更新于 "+x($i(yt.value.updatedAt)),1)])):C("",!0),a("section",Vk,[a("div",Zk,[a("div",null,[a("span",null,x(Me("memory")),1),a("strong",null,x(Ls((p=ys.value)==null?void 0:p.rss)),1)]),t[92]||(t[92]=a("small",null,"RSS",-1))]),pi.value?(m(),b("div",{key:0,class:"memory-chart",onMousemove:xu,onMouseleave:Pi},[(m(),b("svg",Qk,[a("path",{d:pi.value},null,8,Yk),(m(!0),b(Y,null,ce(vs.value,(k,T)=>(m(),b("circle",{key:k.entry.at,class:Q(["memory-trend-point",{active:T===St.value}]),cx:k.x,cy:k.y,r:T===St.value?3.2:1.5,tabindex:"0",onFocus:Pe=>St.value=T,onBlur:Pi},null,42,Jk))),128))])),An.value?(m(),b("div",{key:0,class:"memory-tooltip",style:ft({left:`clamp(58px, ${An.value.x/260*100}%, calc(100% - 58px))`,top:`${An.value.y/44*100}%`})},[a("strong",null,x(Ls(An.value.entry.rss)),1),a("span",null,x(_u(An.value.entry.at)),1)],4)):C("",!0)],32)):(m(),b("div",Xk,"—")),a("div",ey,[a("div",null,[t[93]||(t[93]=a("span",null,"V8 堆",-1)),a("strong",null,x(Ls((y=ys.value)==null?void 0:y.heapUsed)),1)]),a("div",null,[t[94]||(t[94]=a("span",null,"外部内存",-1)),a("strong",null,x(Ls((E=ys.value)==null?void 0:E.external)),1)])]),a("div",ty,[a("span",null,"更新于 "+x(wu((L=ys.value)==null?void 0:L.at)),1)])])],42,Rk)])):o.activePanel==="sessions"?(m(),b("section",ny,[a("div",sy,[a("div",ry,[a("div",null,[t[95]||(t[95]=a("h2",null,"会话管理",-1)),a("p",null,x(i.value?"查看全部用户的历史会话":"查找、继续或整理历史会话"),1)]),i.value?C("",!0):(m(),b("button",{key:0,class:"primary",onClick:Rs},"+ 新建会话"))]),a("div",oy,[a("label",iy,[$e(a("input",{"onUpdate:modelValue":t[18]||(t[18]=k=>de.value=k),type:"search",placeholder:"搜索标题或 ID",autocomplete:"off"},null,512),[[nt,de.value]])]),a("span",ay,x(de.value.trim()?`${Tn.value.length} / ${o.sessions.length}`:`${o.sessions.length} 个会话`),1)]),o.sessionsLoading?(m(),b("div",ly,"正在加载会话…")):o.sessions.length?Tn.value.length?(m(),b("div",dy,[(m(!0),b(Y,null,ce(kc.value,k=>(m(),b("article",{key:`${k.ownerUsername||""}:${k.sessionId}`,class:Q(["session-card",{current:Lr(k.sessionId),running:$r(k.sessionId)}])},[a("div",gy,[a("div",fy,[a("strong",null,x(ci(k)),1),i.value?(m(),b("span",py,x(k.ownerUsername)+x(k.ownerDeleted?" · 已删除":""),1)):C("",!0),Lr(k.sessionId)&&(!i.value||Re(je).adminOwnerUsername===k.ownerUsername)?(m(),b("span",hy,"当前")):$r(k.sessionId)?(m(),b("span",my,"运行中")):C("",!0)]),a("div",by,[a("code",{title:k.sessionId},"ID · "+x(k.sessionId),9,ky),a("time",{datetime:k.updatedAt||k.createdAt},"更新于 "+x(Oi(k.updatedAt||k.createdAt)),9,yy)])]),a("div",vy,[a("button",{disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:T=>bu(k)},x(o.pendingResumeSessionId===k.sessionId&&o.sessionResumeLoading?"打开中…":"打开"),9,wy),i.value?C("",!0):(m(),b("button",{key:0,class:"danger",disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:T=>ku(k.sessionId)},"删除",8,_y))])],2))),128))])):(m(),b("div",uy,"没有匹配的会话")):(m(),b("div",cy,"暂无会话")),!o.sessionsLoading&&Tn.value.length&&ps.value>1?(m(),b("nav",xy,[a("button",{type:"button",disabled:G.value===1,onClick:t[19]||(t[19]=k=>G.value-=1)},"上一页",8,Sy),(m(!0),b(Y,null,ce(yc.value,k=>(m(),b("button",{key:k,type:"button",class:Q({active:k===G.value}),"aria-current":k===G.value?"page":void 0,onClick:T=>G.value=k},x(k),11,Ey))),128)),a("button",{type:"button",disabled:G.value===ps.value,onClick:t[20]||(t[20]=k=>G.value+=1)},"下一页",8,Ty)])):C("",!0)])])):i.value&&o.activePanel==="users"?(m(),b("section",Iy,[a("div",Ay,[t[97]||(t[97]=a("div",{class:"page-head sessions-page-head"},[a("div",null,[a("h2",null,"用户管理"),a("p",null,"创建和删除普通用户账号")])],-1)),a("form",{class:"admin-user-form",onSubmit:he(hu,["prevent"])},[a("label",null,[t[96]||(t[96]=Qn("用户名",-1)),$e(a("input",{"onUpdate:modelValue":t[21]||(t[21]=k=>Z.value=k),maxlength:"100",autocomplete:"off",required:""},null,512),[[nt,Z.value]])]),a("button",{class:"primary",disabled:o.adminUserBusy},"创建普通用户",8,Cy)],32),o.adminUserError?(m(),b("p",My,x(o.adminUserError),1)):C("",!0),o.adminUsersLoading?(m(),b("div",Ny,"正在加载用户…")):(m(),b("div",Ry,[(m(!0),b(Y,null,ce(o.adminUsers,k=>(m(),b("article",{key:k.username,class:"session-card"},[a("div",Ly,[a("div",$y,[a("strong",null,x(k.username),1),a("span",Oy,x(k.role==="admin"?"超管":"普通用户"),1)])]),a("div",Dy,[k.role!=="admin"?(m(),b("button",{key:0,class:"danger",disabled:o.adminUserBusy,onClick:T=>mu(k)},"删除账号",8,Py)):C("",!0)])]))),128))]))])])):!Re(je).isolation&&o.activePanel==="prompts"?(m(),b("section",Uy,[a("div",By,[a("div",zy,[t[98]||(t[98]=a("h2",null,"提示词",-1)),a("div",Fy,[a("button",{class:"ghost",onClick:t[22]||(t[22]=k=>o.activePanel="chat")},"回到对话"),a("button",{class:"primary",onClick:Wc},"+ 新建提示词")])]),a("div",Hy,[a("aside",jy,[a("div",Gy,[a("strong",null,x(o.promptLibrary.length)+" 个提示词",1)]),a("div",qy,[o.promptLibraryLoading?(m(),b("div",Wy,"正在加载…")):o.promptLibrary.length?(m(!0),b(Y,{key:2},ce(o.promptLibrary,k=>{var T,Pe;return m(),b("button",{key:k.id,class:Q(["prompt-library-item",{active:((T=ms.value)==null?void 0:T.id)===k.id,applied:((Pe=Ft.value)==null?void 0:Pe.id)===k.id,dragging:Dt.value===k.id,"drop-before":Pt.value===k.id&&Ut.value==="before","drop-after":Pt.value===k.id&&Ut.value==="after"}]),type:"button",draggable:"true",onClick:gt=>Kc(k),onDblclick:gt=>Ln(k),onDragstart:gt=>su(gt,k),onDragover:gt=>ru(gt,k),onDrop:gt=>ou(gt,k),onDragend:xi},[a("strong",null,x(k.title),1),k.usage?(m(),b("span",Zy,"用法:"+x(k.usage),1)):C("",!0)],42,Vy)}),128)):(m(),b("div",Ky,"暂无提示词"))])]),a("section",Qy,[a("div",Yy,[a("strong",Jy,x(Ne.title||"新提示词"),1),a("div",Xy,[a("button",{class:"mini-button",type:"button",disabled:!ms.value,onClick:t[23]||(t[23]=k=>ms.value&&Ln(ms.value))},"应用",8,ev),a("button",{class:"mini-button",type:"button",onClick:Vc},"保存"),a("button",{class:"mini-button danger",type:"button",disabled:!Ne.id,onClick:Zc},"删除",8,tv)])]),a("div",nv,[a("label",sv,[t[99]||(t[99]=a("span",null,"名称",-1)),$e(a("input",{"onUpdate:modelValue":t[24]||(t[24]=k=>Ne.title=k),type:"text",placeholder:"例如:代码评审"},null,512),[[nt,Ne.title]])]),a("label",rv,[t[100]||(t[100]=a("span",null,"提示词内容",-1)),$e(a("textarea",{"onUpdate:modelValue":t[25]||(t[25]=k=>Ne.content=k),rows:"14",placeholder:"输入提示词内容"},null,512),[[nt,Ne.content]])]),a("label",ov,[t[101]||(t[101]=a("span",null,"用法(选填)",-1)),$e(a("textarea",{"onUpdate:modelValue":t[26]||(t[26]=k=>Ne.usage=k),rows:"4",placeholder:"输入适用场景"},null,512),[[nt,Ne.usage]])])])])])])])):c.value&&o.activePanel==="settings"?(m(),b("section",iv,[a("div",av,[c.value&&o.settingsPage==="prompt"?(m(),b(Y,{key:0},[a("div",lv,[a("div",cv,[a("button",{type:"button",class:"mini-button","aria-label":"返回模型配置",onClick:t[27]||(t[27]=k=>o.settingsPage="")},"←"),t[102]||(t[102]=a("h2",null,"提示词配置",-1))])]),gn(cl,{endpoint:Re(tt)("/api/prompt-config"),onSaved:Ni},null,8,["endpoint"])],64)):(m(),b(Y,{key:1},[a("div",uv,[t[103]||(t[103]=a("h2",null,"模型配置",-1)),a("button",{class:"primary",onClick:Ri,disabled:!o.login},"保存",8,dv)]),o.login?(m(),b("form",{key:1,class:"settings-form",onSubmit:he(Ri,["prevent"])},[c.value?(m(),b("button",{key:0,type:"button",class:"settings-prompt-entry",onClick:t[28]||(t[28]=k=>o.settingsPage="prompt")},[...t[104]||(t[104]=[a("strong",null,"提示词配置",-1),a("span",{"aria-hidden":"true"},"›",-1)])])):C("",!0),a("section",fv,[t[106]||(t[106]=a("header",{class:"settings-card-head"},[a("strong",null,"模型")],-1)),a("div",pv,[a("label",hv,[t[105]||(t[105]=a("span",null,"供应商",-1)),gn(nr,{modelValue:ze.value,"onUpdate:modelValue":t[29]||(t[29]=k=>ze.value=k),options:ju(o.login.providers),"aria-label":"供应商",onChange:yu},null,8,["modelValue","options"])]),(m(!0),b(Y,null,ce(o.login.fields,k=>(m(),b("label",{key:k.key,class:"settings-field"},[a("span",null,[Qn(x(Kr(k.label)),1),k.required?(m(),b("i",mv)):C("",!0)]),k.options?(m(),Ue(nr,{key:0,modelValue:st[k.key],"onUpdate:modelValue":T=>st[k.key]=T,options:Gu(k),"aria-label":Kr(k.label)},null,8,["modelValue","onUpdate:modelValue","options","aria-label"])):$e((m(),b("input",{key:1,"onUpdate:modelValue":T=>st[k.key]=T,type:k.secret?"password":"text",placeholder:k.placeholder||`请输入${Kr(k.label)}`},null,8,bv)),[[pg,st[k.key]]])]))),128))])]),c.value?(m(),b("section",kv,[t[109]||(t[109]=a("header",{class:"settings-card-head"},[a("strong",null,"CPA")],-1)),a("div",yv,[a("label",vv,[t[107]||(t[107]=a("span",null,"URL",-1)),$e(a("input",{"onUpdate:modelValue":t[30]||(t[30]=k=>o.cpaConfig.url=k),type:"text",placeholder:"http://127.0.0.1:8317",autocomplete:"off"},null,512),[[nt,o.cpaConfig.url]])]),a("label",wv,[t[108]||(t[108]=a("span",null,"管理密码",-1)),$e(a("input",{"onUpdate:modelValue":t[31]||(t[31]=k=>o.cpaConfig.password=k),type:"password",placeholder:"请输入管理密码",autocomplete:"new-password"},null,512),[[nt,o.cpaConfig.password]])])])])):C("",!0),c.value?(m(),b("section",_v,[a("header",xv,[t[110]||(t[110]=a("div",null,[a("strong",null,"工具"),a("small",null,"内置与插件工具默认开启,关闭后立即对当前会话生效。")],-1)),a("button",{type:"button",class:"mini-button",disabled:o.busy||o.globalTools.loading,onClick:Cc},"保存",8,Sv)]),a("div",Ev,[(m(!0),b(Y,null,ce(o.globalTools.items,k=>(m(),b("label",{key:k.name,class:"plugin-settings-row"},[a("span",null,[a("strong",null,[a("code",null,x(k.name),1)]),a("small",null,x(k.source==="plugin"?`插件 · ${k.pluginName||k.pluginId}`:k.source==="external"?"外部工具":"内置工具"),1)]),a("span",Tv,[$e(a("input",{"onUpdate:modelValue":T=>k.configuredEnabled=T,type:"checkbox","aria-label":k.name},null,8,Iv),[[za,k.configuredEnabled]]),t[111]||(t[111]=a("span",{"aria-hidden":"true"},null,-1))])]))),128))])])):C("",!0),c.value?(m(),b("section",Av,[a("header",Cv,[t[112]||(t[112]=a("strong",null,"插件",-1)),a("button",{type:"button",class:"mini-button",disabled:o.globalPlugins.locked||o.globalPlugins.loading,onClick:Rc},"保存",8,Mv)]),a("div",Nv,[(m(!0),b(Y,null,ce(o.globalPlugins.items,k=>(m(),b("label",{key:k.id,class:"plugin-settings-row"},[a("span",null,[a("strong",null,x(k.name),1),a("small",null,x(k.tools.length)+" 个工具",1)]),a("span",Rv,[$e(a("input",{"onUpdate:modelValue":T=>k.configuredEnabled=T,type:"checkbox",disabled:o.globalPlugins.locked,"aria-label":k.name},null,8,Lv),[[za,k.configuredEnabled]]),t[113]||(t[113]=a("span",{"aria-hidden":"true"},null,-1))])]))),128))])])):C("",!0)],32)):(m(),b("div",gv,"正在加载配置…"))],64))])])):(m(),b("section",$v,[a("div",Ov,[t[114]||(t[114]=a("h2",null,"运行时能力",-1)),a("div",Dv,[(m(),b(Y,null,ce(["流式模型循环","工具执行","上下文指标","会话恢复","后台代理","登录配置","图片附件","Markdown 输出"],k=>a("div",{key:k,class:"capability-card"},x(k),1)),64))])])]))]),o.toast?(m(),b("div",Pv,x(o.toast),1)):C("",!0)]),(m(),Ue(it,{to:"body"},[o.coreVersion?(m(),b("div",{key:0,class:Q(["core-version",{celebrating:o.coreEasterEgg}]),role:"button",tabindex:"0",title:`内核版本 ${o.coreVersion} · 点击试试`,onClick:nn,onKeydown:[at(he(nn,["prevent"]),["enter"]),at(he(nn,["prevent"]),["space"])]},[t[115]||(t[115]=a("span",{class:"core-version-spark spark-a","aria-hidden":"true"},null,-1)),t[116]||(t[116]=a("span",{class:"core-version-spark spark-b","aria-hidden":"true"},null,-1)),t[117]||(t[117]=a("span",{class:"core-version-spark spark-c","aria-hidden":"true"},null,-1)),a("span",null,"内核版本 "+x(o.coreVersion),1)],42,Uv)):C("",!0)])),(m(),Ue(it,{to:"body"},[o.cwdPicker.open?(m(),b("div",{key:0,class:"cwd-picker-backdrop",onClick:he(Hs,["self"])},[a("section",Bv,[a("header",{class:"cwd-picker-head"},[t[118]||(t[118]=a("strong",null,"CWD",-1)),a("button",{type:"button","aria-label":"关闭",onClick:Hs},"×")]),a("form",{class:"cwd-picker-path",onSubmit:t[33]||(t[33]=he(k=>js(),["prevent"]))},[$e(a("input",{"onUpdate:modelValue":t[32]||(t[32]=k=>o.cwdPicker.input=k),autocomplete:"off",spellcheck:"false","aria-label":"工作目录路径"},null,512),[[nt,o.cwdPicker.input]]),a("button",{type:"submit",disabled:o.cwdPicker.loading},"前往",8,zv),a("button",{type:"button",disabled:o.cwdPicker.mutating,onClick:ed},"新建",8,Fv)],32),a("div",Hv,[o.cwdPicker.parent?(m(),b("button",{key:0,type:"button",onClick:t[34]||(t[34]=k=>js(o.cwdPicker.parent))},"← 上级")):C("",!0),a("span",null,x(o.cwdPicker.selectedPath||o.cwdPicker.cwd),1)]),a("div",jv,[a("nav",Gv,[(m(!0),b(Y,null,ce(o.cwdPicker.locations,k=>(m(),b("button",{key:`${k.id}-${k.path}`,type:"button",class:Q({active:o.cwdPicker.cwd===k.path}),title:k.path,onClick:T=>js(k.path)},[a("span",Wv,x(k.kind==="drive"||k.kind==="volume"?"▣":k.kind==="home"?"◆":"◇"),1),a("strong",null,x(k.label),1)],10,qv))),128))]),a("div",Kv,[o.cwdPicker.loading?(m(),b("div",Vv,"读取中")):o.cwdPicker.error?(m(),b("div",Zv,x(o.cwdPicker.error),1)):(m(),Ue(Eh,{key:2,nodes:o.cwdPicker.treeRoots,children:o.cwdPicker.treeChildren,expanded:o.cwdPicker.treeExpanded,"selected-path":o.cwdPicker.selectedPath,"allow-delete":!1,onToggle:Ju,onSelect:Xu,onDelete:td},null,8,["nodes","children","expanded","selected-path"]))])]),a("footer",Qv,[a("button",{type:"button",onClick:Hs},"取消"),a("button",{type:"button",class:"primary",disabled:o.cwdPicker.mutating||o.cwdPicker.loading,onClick:nd},"选择",8,Yv)])])])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.projectContextOpen?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:he(Yr,["self"])},[a("section",Jv,[a("header",Xv,[a("div",null,[o.projectContextDocument?(m(),b("span",ew,x(o.projectContextDocument.path),1)):C("",!0),a("strong",null,x(((z=o.projectContextDocument)==null?void 0:z.name)||"项目上下文"),1)]),a("button",{type:"button","aria-label":o.projectContextDocument?"返回":"关闭",onClick:Yr},"×",8,tw)]),a("div",nw,[o.projectContextDocument?(m(),b("pre",ow,x(o.projectContextDocument.content),1)):(m(),b("div",sw,[(m(!0),b(Y,null,ce(In.value,k=>(m(),b("button",{key:k.path,type:"button",class:"runtime-context-index-item",onClick:T=>Vu(k)},[a("span",null,[a("strong",null,x(k.name),1),a("small",null,x(dn(k.chars||0))+" 字符",1)]),t[119]||(t[119]=a("b",null,"›",-1))],8,rw))),128))]))])])])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.confirmDialog.open?(m(),b("div",{key:0,class:"confirm-dialog-backdrop",onClick:t[37]||(t[37]=he(k=>sn(!1),["self"]))},[a("section",{class:"confirm-dialog",role:"alertdialog","aria-modal":"true","aria-label":o.confirmDialog.title},[a("div",{class:Q(["confirm-dialog-icon",`tone-${o.confirmDialog.tone}`]),"aria-hidden":"true"},"!",2),a("div",aw,[a("h3",null,x(o.confirmDialog.title),1),a("p",null,x(o.confirmDialog.message),1)]),a("div",lw,[a("button",{type:"button",class:"ghost",onClick:t[35]||(t[35]=k=>sn(!1))},x(o.confirmDialog.cancelLabel),1),a("button",{type:"button",class:Q(["primary",{danger:o.confirmDialog.tone==="danger"}]),onClick:t[36]||(t[36]=k=>sn(!0))},x(o.confirmDialog.confirmLabel),3)])],8,iw)])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.modelModalOpen?(m(),b("div",{key:0,class:"context-window-backdrop",onClick:he(On,["self"])},[a("section",{class:"context-window-modal session-model-modal",role:"dialog","aria-modal":"true","aria-label":"选择模型",onKeydown:Ci},[a("form",{onSubmit:he(uu,["prevent"])},[a("header",{class:"session-model-header"},[t[120]||(t[120]=a("h2",null,"模型",-1)),a("button",{type:"button",class:"ghost","aria-label":"关闭模型选择",onClick:On},"×")]),$e(a("input",{id:"session-model-search","onUpdate:modelValue":t[38]||(t[38]=k=>o.modelSearch=k),type:"search",placeholder:"搜索模型","aria-label":"搜索模型",autocomplete:"off"},null,512),[[nt,o.modelSearch]]),a("div",cw,[(m(!0),b(Y,null,ce(fc.value,k=>(m(),b("label",{key:k,class:Q(["session-model-option",{selected:o.modelDraft===k}])},[$e(a("input",{"onUpdate:modelValue":t[39]||(t[39]=T=>o.modelDraft=T),type:"radio",name:"session-model",value:k,disabled:o.modelSaving},null,8,uw),[[Fa,o.modelDraft]]),a("span",null,x(k),1)],2))),128))]),a("fieldset",{class:"session-reasoning-options",disabled:o.modelSaving},[t[121]||(t[121]=a("legend",null,"推理强度",-1)),(m(!0),b(Y,null,ce(ds.value,k=>(m(),b("label",{key:k,class:Q({selected:o.reasoningDraft===k})},[$e(a("input",{"onUpdate:modelValue":t[40]||(t[40]=T=>o.reasoningDraft=T),type:"radio",name:"session-reasoning",value:k},null,8,gw),[[Fa,o.reasoningDraft]]),a("span",null,x(k==="default"?"默认":k==="off"?"关闭":k),1)],2))),128))],8,dw),o.modelError?(m(),b("p",fw,x(o.modelError),1)):C("",!0),a("div",pw,[a("button",{type:"button",class:"ghost",onClick:On},"取消"),a("button",{type:"submit",class:"primary",disabled:o.modelSaving||!o.modelDraft},x(o.modelSaving?"保存中…":"确认"),9,hw)])],32)],32)])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.contextWindowModalOpen?(m(),b("div",{key:0,class:"context-window-backdrop",onClick:he(Cs,["self"])},[a("section",{class:"context-window-modal",role:"dialog","aria-modal":"true","aria-label":"上下文窗口",onKeydown:Ci},[a("form",{onSubmit:he(fu,["prevent"])},[t[123]||(t[123]=a("label",{for:"context-window-input"},"上下文窗口",-1)),a("div",mw,[$e(a("input",{id:"context-window-input","onUpdate:modelValue":t[41]||(t[41]=k=>o.contextWindowDraft=k),type:"text",inputmode:"numeric",autocomplete:"off",autofocus:"","aria-describedby":"context-window-unit",onInput:gu},null,544),[[nt,o.contextWindowDraft]]),t[122]||(t[122]=a("span",{id:"context-window-unit"},"k",-1))]),o.contextWindowError?(m(),b("p",bw,x(o.contextWindowError),1)):C("",!0),a("div",kw,[a("button",{type:"button",class:"ghost",onClick:Cs},"取消"),a("button",{type:"submit",class:"primary",disabled:o.contextWindowSaving},x(o.contextWindowSaving?"保存中…":"确认"),9,yw)])],32)],32)])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.imagePreview?(m(),b("div",{key:0,class:"image-preview-backdrop",onClick:he(Br,["self"])},[a("section",{class:"image-preview-modal",role:"dialog","aria-modal":"true","aria-label":o.imagePreview.caption||"图片预览"},[a("button",{type:"button",class:"image-preview-close","aria-label":"关闭图片预览",onClick:Br},"×"),a("div",ww,[a("img",{src:o.imagePreview.src,alt:o.imagePreview.caption||"图片预览"},null,8,_w)]),o.imagePreview.caption?(m(),b("footer",xw,x(o.imagePreview.caption),1)):C("",!0)],8,vw)])):C("",!0)])),(m(),Ue(it,{to:"body"},[kt.value?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:he($s,["self"])},[a("section",Sw,[a("header",{class:"runtime-context-modal-head"},[t[124]||(t[124]=a("div",null,[a("strong",null,"压缩上下文详情")],-1)),a("button",{type:"button","aria-label":"关闭",onClick:$s},"×")]),a("div",Ew,[a("dl",Tw,[a("div",null,[t[125]||(t[125]=a("dt",null,"压缩方式",-1)),a("dd",null,x(Iu(kt.value)),1)]),a("div",null,[t[126]||(t[126]=a("dt",null,"发生时间",-1)),a("dd",null,x(Oi(kt.value.compaction.createdAt)),1)]),a("div",null,[t[127]||(t[127]=a("dt",null,"新窗口消息",-1)),a("dd",null,x(kt.value.compaction.newWindowMessages),1)]),a("div",null,[t[128]||(t[128]=a("dt",null,"保留用户消息",-1)),a("dd",null,x(kt.value.compaction.preservedUserMessages),1)]),a("div",null,[t[129]||(t[129]=a("dt",null,"释放字符",-1)),a("dd",null,x(dn(kt.value.compaction.charsFreed)),1)]),a("div",null,[t[130]||(t[130]=a("dt",null,"图片引用",-1)),a("dd",null,x(kt.value.compaction.imageCount||0),1)])]),t[131]||(t[131]=a("h3",null,"实际续接上下文",-1)),a("pre",null,x(kt.value.compaction.continuationState||kt.value.compaction.summary||"未提供续接上下文"),1)])])])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.runtimeContextModal?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:he(Zr,["self"])},[a("section",Iw,[a("header",Aw,[a("div",null,[a("strong",null,x(o.runtimeContextModal==="prompt"?"系统提示词":o.runtimeContextModal==="tools"?"可用工具":"会话插件"),1)]),a("button",{type:"button","aria-label":"关闭",onClick:Zr},"×")]),a("div",Cw,[!Re(je).isolation&&o.runtimeContextModal==="prompt"?(m(),Ue(cl,{key:0,endpoint:F("/api/session-prompt"),session:"","runtime-prompt":(H=o.runtimeContext)==null?void 0:H.prompt,onSaved:Ni},null,8,["endpoint","runtime-prompt"])):o.runtimeContextModal==="tools"?(m(),b("div",Mw,[o.sessionTools.loading?(m(),b("div",Nw,"同步中")):(m(),b(Y,{key:1},[a("div",Rw,[a("span",null,"可用 "+x(Sc.value)+" / "+x(o.sessionTools.items.length),1)]),(m(!0),b(Y,null,ce(o.sessionTools.items,k=>(m(),b("div",{key:k.name,class:"runtime-plugin-row"},[a("button",{type:"button",class:"runtime-tool-detail-button",disabled:!Ar.value.some(T=>T.name===k.name),onClick:T=>sd(Ar.value.find(Pe=>Pe.name===k.name))},[a("code",null,x(k.name),1),a("small",null,x(k.available===!1?`插件未启用 · ${k.pluginName||k.pluginId}`:k.source==="plugin"?`插件 · ${k.pluginName||k.pluginId}`:k.source==="external"?"外部工具":"内置工具"),1)],8,Lw),gn(nr,{class:"runtime-plugin-control","model-value":k.mode,options:d,disabled:o.busy||o.sessionTools.busy||k.available===!1,"aria-label":`${k.name}状态`,"data-mode":k.mode,"onUpdate:modelValue":T=>Mc(k,T)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))],64))])):(m(),b("div",$w,[o.sessionPlugins.loading?(m(),b("div",Ow,"同步中")):(m(!0),b(Y,{key:1},ce(o.sessionPlugins.items,k=>(m(),b("div",{key:k.id,class:"runtime-plugin-row"},[a("span",null,[a("strong",null,x(k.name),1),a("small",null,x(k.tools.length)+" 个工具",1)]),gn(nr,{class:"runtime-plugin-control","model-value":k.mode,options:d,disabled:o.busy||o.sessionPlugins.busy||!k.globallyEnabled,"aria-label":`${k.name}状态`,"data-mode":k.mode,"onUpdate:modelValue":T=>Lc(k,T)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))]))])])])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.runtimeContextDetail?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:he(Qr,["self"])},[a("section",{class:"runtime-context-detail-modal",role:"dialog","aria-modal":"true","aria-label":o.runtimeContextDetail.title},[a("header",Pw,[a("div",null,[o.runtimeContextDetail.meta?(m(),b("span",Uw,x(o.runtimeContextDetail.meta),1)):C("",!0),a("strong",null,x(o.runtimeContextDetail.title),1)]),a("button",{type:"button","aria-label":"返回",onClick:Qr},"×")]),a("div",Bw,[o.runtimeContextDetail.kind==="tool"?(m(),b(Y,{key:0},[o.runtimeContextDetail.description?(m(),b("p",zw,x(o.runtimeContextDetail.description),1)):C("",!0),a("pre",null,x(o.runtimeContextDetail.schema),1)],64)):(m(),b("pre",Fw,x(o.runtimeContextDetail.content),1))])],8,Dw)])):C("",!0)])),(m(),Ue(it,{to:"body"},[o.backgroundTaskDetail?(m(),b("div",{key:0,class:"tool-result-modal-backdrop",onClick:he(Fs,["self"])},[a("section",Hw,[a("header",jw,[a("div",Gw,[t[132]||(t[132]=a("strong",null,"后台任务",-1)),a("span",qw,x(Sn.value.length),1)]),a("button",{type:"button",class:"tool-result-modal-close","aria-label":"关闭",onClick:Fs},"×")]),a("div",{class:Q(["tool-result-modal-content","background-task-page",{single:Sn.value.length<=1}])},[Sn.value.length>1?(m(),b("nav",Ww,[(m(!0),b(Y,null,ce(Sn.value,k=>(m(),b("button",{key:qt(k),type:"button",class:Q(["background-task-index-item",{active:qt(k)===qt(o.backgroundTaskDetail)}]),title:Bs(k),onClick:T=>qr(k)},[a("span",{class:Q(["background-task-dot",`status-${k.status}`])},null,2),a("span",Vw,[a("strong",null,x(zs(k)),1),a("small",null,x(Wr(k.status)),1)])],10,Kw))),128))])):C("",!0),a("article",Zw,[a("header",Qw,[a("div",Yw,[a("span",{class:Q(["background-task-dot",`status-${o.backgroundTaskDetail.status}`])},null,2),a("strong",null,x(zs(o.backgroundTaskDetail)),1)]),a("span",{class:Q(["tool-result-modal-status",`status-${o.backgroundTaskDetail.status}`])},x(Wr(o.backgroundTaskDetail.status)),3)]),a("dl",Jw,[Qi(o.backgroundTaskDetail)?(m(),b("div",Xw,[t[133]||(t[133]=a("dt",null,"耗时",-1)),a("dd",null,x(Qi(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.cwd?(m(),b("div",e0,[t[134]||(t[134]=a("dt",null,"目录",-1)),a("dd",null,x(o.backgroundTaskDetail.cwd),1)])):C("",!0)]),a("div",t0,[o.backgroundTaskDetail.kind!=="agent"&&Yi(o.backgroundTaskDetail)?(m(),b("section",n0,[t[135]||(t[135]=a("header",null,"命令",-1)),a("pre",s0,x(Yi(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.kind==="terminal"?(m(),Ue(of,{key:1,"owner-session-id":o.backgroundTaskDetail.ownerSessionId||((re=o.session)==null?void 0:re.sessionId),"run-id":o.backgroundTaskDetail.sessionId},null,8,["owner-session-id","run-id"])):C("",!0),o.backgroundTaskDetail.kind==="agent"?(m(),b("div",r0,[gn(pf,{"owner-session-id":(we=o.session)==null?void 0:we.sessionId,task:o.backgroundTaskDetail,"render-markdown":Ru},null,8,["owner-session-id","task"])])):C("",!0)])])],2)])])):C("",!0),rt.value?(m(),b("div",{key:1,class:"tool-result-modal-backdrop",onClick:he(an,["self"])},[a("section",{class:"tool-result-modal",onKeydown:Lu,role:"dialog","aria-modal":"true","aria-label":`${jt(rt.value)}详情`},[a("header",i0,[a("div",null,[a("div",a0,[a("strong",null,x(jt(rt.value)),1),a("span",{class:Q(["tool-result-modal-status",`status-${Ct(rt.value).key}`])},x(Ct(rt.value).label),3)]),ji(rt.value)?(m(),b("p",l0,x(ji(rt.value)),1)):C("",!0)]),a("button",{type:"button",class:"tool-result-modal-close","aria-label":"关闭工具结果",onClick:an},"×")]),a("div",c0,[Rt(rt.value)?(m(),b("div",{key:0,class:"message-text markdown tool-detail-markdown",innerHTML:rd(rt.value)},null,8,u0)):C("",!0)]),a("footer",{class:"tool-result-modal-footer"},[a("button",{type:"button",class:"primary",onClick:an},"关闭")])],40,o0)])):C("",!0)]))],64)}}};export{w0 as default};