neoctl-web 0.1.15 → 0.1.16
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 ug=Object.defineProperty;var dg=(t,r,s)=>r in t?ug(t,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[r]=s;var we=(t,r,s)=>dg(t,typeof r!="symbol"?r+"":r,s);import{w as Pe,o as Jt,a as m,c as b,t as x,b as C,r as lr,d as ke,F as Y,e as ce,f as a,g as re,u as Ne,h as Ua,i as gg,s as fg,j as V,_ as vl,k as Fo,n as Q,l as Ye,m as Yn,p as Oe,v as pg,q as nt,x as at,y as he,z as hg,A as ft,B as Be,C as Ba,D as Ge,E as za,G as Fa,H as gn,I as tt,T as it,J as mg,K as bg,L as kg,M as Ha,N as ja}from"./index-BkoW_zgA.js";function Ho(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var en=Ho();function wl(t){en=t}var Zt={exec:()=>null};function pe(t,r=""){let s=typeof t=="string"?t:t.source,i={replace:(l,d)=>{let g=typeof d=="string"?d:d.source;return g=g.replace(qe.caret,"$1"),s=s.replace(l,g),i},getRegex:()=>new RegExp(s,r)};return i}var yg=((t="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+t)}catch{return!1}})(),qe={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:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},vg=/^(?:[ \t]*(?:\n|$))+/,wg=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,_g=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,as=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,xg=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,jo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,_l=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,xl=pe(_l).replace(/bull/g,jo).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(),Sg=pe(_l).replace(/bull/g,jo).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(),Go=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Eg=/^[^\n]+/,qo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Tg=pe(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",qo).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ig=pe(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,jo).getRegex(),_r="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",Wo=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ag=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",Wo).replace("tag",_r).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Sl=pe(Go).replace("hr",as).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",_r).getRegex(),Cg=pe(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Sl).getRegex(),Ko={blockquote:Cg,code:wg,def:Tg,fences:_g,heading:xg,hr:as,html:Ag,lheading:xl,list:Ig,newline:vg,paragraph:Sl,table:Zt,text:Eg},Ga=pe("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",as).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",_r).getRegex(),Mg={...Ko,lheading:Sg,table:Ga,paragraph:pe(Go).replace("hr",as).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ga).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",_r).getRegex()},Rg={...Ko,html:pe(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Wo).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(Go).replace("hr",as).replace("heading",` *#{1,6} *[^
|
|
2
|
+
]`).replace("lheading",xl).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ng=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Lg=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,El=/^( {2,}|\\)\n(?!\s*$)/,$g=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,kn=/[\p{P}\p{S}]/u,xr=/[\s\p{P}\p{S}]/u,Vo=/[^\s\p{P}\p{S}]/u,Og=pe(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,xr).getRegex(),Tl=/(?!~)[\p{P}\p{S}]/u,Dg=/(?!~)[\s\p{P}\p{S}]/u,Pg=/(?:[^\s\p{P}\p{S}]|~)/u,Ug=pe(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",yg?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Il=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Bg=pe(Il,"u").replace(/punct/g,kn).getRegex(),zg=pe(Il,"u").replace(/punct/g,Tl).getRegex(),Al="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Fg=pe(Al,"gu").replace(/notPunctSpace/g,Vo).replace(/punctSpace/g,xr).replace(/punct/g,kn).getRegex(),Hg=pe(Al,"gu").replace(/notPunctSpace/g,Pg).replace(/punctSpace/g,Dg).replace(/punct/g,Tl).getRegex(),jg=pe("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Vo).replace(/punctSpace/g,xr).replace(/punct/g,kn).getRegex(),Gg=pe(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,kn).getRegex(),qg="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Wg=pe(qg,"gu").replace(/notPunctSpace/g,Vo).replace(/punctSpace/g,xr).replace(/punct/g,kn).getRegex(),Kg=pe(/\\(punct)/,"gu").replace(/punct/g,kn).getRegex(),Vg=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(),Zg=pe(Wo).replace("(?:-->|$)","-->").getRegex(),Qg=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",Zg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),gr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Yg=pe(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",gr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Cl=pe(/^!?\[(label)\]\[(ref)\]/).replace("label",gr).replace("ref",qo).getRegex(),Ml=pe(/^!?\[(ref)\](?:\[\])?/).replace("ref",qo).getRegex(),Jg=pe("reflink|nolink(?!\\()","g").replace("reflink",Cl).replace("nolink",Ml).getRegex(),qa=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Zo={_backpedal:Zt,anyPunctuation:Kg,autolink:Vg,blockSkip:Ug,br:El,code:Lg,del:Zt,delLDelim:Zt,delRDelim:Zt,emStrongLDelim:Bg,emStrongRDelimAst:Fg,emStrongRDelimUnd:jg,escape:Ng,link:Yg,nolink:Ml,punctuation:Og,reflink:Cl,reflinkSearch:Jg,tag:Qg,text:$g,url:Zt},Xg={...Zo,link:pe(/^!?\[(label)\]\((.*?)\)/).replace("label",gr).getRegex(),reflink:pe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",gr).getRegex()},Lo={...Zo,emStrongRDelimAst:Hg,emStrongLDelim:zg,delLDelim:Gg,delRDelim:Wg,url:pe(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",qa).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",qa).getRegex()},ef={...Lo,br:pe(El).replace("{2,}","*").getRegex(),text:pe(Lo.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},tr={normal:Ko,gfm:Mg,pedantic:Rg},Vn={normal:Zo,gfm:Lo,breaks:ef,pedantic:Xg},tf={"&":"&","<":"<",">":">",'"':""","'":"'"},Wa=t=>tf[t];function pt(t,r){if(r){if(qe.escapeTest.test(t))return t.replace(qe.escapeReplace,Wa)}else if(qe.escapeTestNoEncode.test(t))return t.replace(qe.escapeReplaceNoEncode,Wa);return t}function Ka(t){try{t=encodeURI(t).replace(qe.percentDecode,"%")}catch{return null}return t}function Va(t,r){var d;let s=t.replace(qe.findPipe,(g,f,h)=>{let w=!1,v=f;for(;--v>=0&&h[v]==="\\";)w=!w;return w?"|":" |"}),i=s.split(qe.splitPipe),l=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(;l<i.length;l++)i[l]=i[l].trim().replace(qe.slashPipe,"|");return i}function Lt(t,r,s){let i=t.length;if(i===0)return"";let l=0;for(;l<i&&t.charAt(i-l-1)===r;)l++;return t.slice(0,i-l)}function Za(t){let r=t.split(`
|
|
3
|
+
`),s=r.length-1;for(;s>=0&&qe.blankLine.test(r[s]);)s--;return r.length-s<=2?t:r.slice(0,s+1).join(`
|
|
4
|
+
`)}function nf(t,r){if(t.indexOf(r[1])===-1)return-1;let s=0;for(let i=0;i<t.length;i++)if(t[i]==="\\")i++;else if(t[i]===r[0])s++;else if(t[i]===r[1]&&(s--,s<0))return i;return s>0?-2:-1}function sf(t,r=0){let s=r,i="";for(let l of t)if(l===" "){let d=4-s%4;i+=" ".repeat(d),s+=d}else i+=l,s++;return i}function Qa(t,r,s,i,l){let d=r.href,g=r.title||null,f=t[1].replace(l.other.outputLinkReplace,"$1");i.state.inLink=!0;let h={type:t[0].charAt(0)==="!"?"image":"link",raw:s,href:d,title:g,text:f,tokens:i.inlineTokens(f)};return i.state.inLink=!1,h}function rf(t,r,s){let i=t.match(s.other.indentCodeCompensation);if(i===null)return r;let l=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>=l.length?d.slice(l.length):d}).join(`
|
|
6
|
+
`)}var fr=class{constructor(t){we(this,"options");we(this,"rules");we(this,"lexer");this.options=t||en}space(t){let r=this.rules.block.newline.exec(t);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(t){let r=this.rules.block.code.exec(t);if(r){let s=this.options.pedantic?r[0]:Za(r[0]),i=s.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:s,codeBlockStyle:"indented",text:i}}}fences(t){let r=this.rules.block.fences.exec(t);if(r){let s=r[0],i=rf(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(t){let r=this.rules.block.heading.exec(t);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(t){let r=this.rules.block.hr.exec(t);if(r)return{type:"hr",raw:Lt(r[0],`
|
|
8
|
+
`)}}blockquote(t){let r=this.rules.block.blockquote.exec(t);if(r){let s=Lt(r[0],`
|
|
9
|
+
`).split(`
|
|
10
|
+
`),i="",l="",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,l=l?`${l}
|
|
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,l=l.substring(0,l.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,l=l.substring(0,l.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:l}}}list(t){let r=this.rules.block.list.exec(t);if(r){let s=r[1].trim(),i=s.length>1,l={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(;t;){let h=!1,w="",v="";if(!(r=d.exec(t))||this.rules.block.hr.test(t))break;w=r[0],t=t.substring(w.length);let I=sf(r[2].split(`
|
|
20
|
+
`,1)[0],r[1].length),_=t.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
|
+
`,t=t.substring(_.length+1),h=!0),!h){let O=this.rules.other.nextBulletRegex(S),R=this.rules.other.hrRegex(S),L=this.rules.other.fencesBeginRegex(S),B=this.rules.other.headingBeginRegex(S),M=this.rules.other.htmlBeginRegex(S),P=this.rules.other.blockquoteBeginRegex(S);for(;t;){let j=t.split(`
|
|
23
|
+
`,1)[0],F;if(_=j,this.options.pedantic?(_=_.replace(this.rules.other.listReplaceNesting," "),F=_):F=_.replace(this.rules.other.tabCharGlobal," "),L.test(_)||B.test(_)||M.test(_)||P.test(_)||O.test(_)||R.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||L.test(I)||B.test(I)||R.test(I))break;v+=`
|
|
25
|
+
`+_}A=!_.trim(),w+=j+`
|
|
26
|
+
`,t=t.substring(j.length+1),I=F.slice(S)}}l.loose||(g?l.loose=!0:this.rules.other.doubleBlankLine.test(w)&&(g=!0)),l.items.push({type:"list_item",raw:w,task:!!this.options.gfm&&this.rules.other.listIsTask.test(v),loose:!1,text:v,tokens:[]}),l.raw+=w}let f=l.items.at(-1);if(f)f.raw=f.raw.trimEnd(),f.text=f.text.trimEnd();else return;l.raw=l.raw.trimEnd();for(let h of l.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,l.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(!l.loose){let v=h.tokens.filter(_=>_.type==="space"),I=v.length>0&&v.some(_=>this.rules.other.anyLine.test(_.raw));l.loose=I}}if(l.loose)for(let h of l.items){h.loose=!0;for(let w of h.tokens)w.type==="text"&&(w.type="paragraph")}return l}}html(t){let r=this.rules.block.html.exec(t);if(r){let s=Za(r[0]);return{type:"html",block:!0,raw:s,pre:r[1]==="pre"||r[1]==="script"||r[1]==="style",text:s}}}def(t){let r=this.rules.block.def.exec(t);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"):"",l=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:l}}}table(t){var g;let r=this.rules.block.table.exec(t);if(!r||!this.rules.other.tableDelimiter.test(r[2]))return;let s=Va(r[1]),i=r[2].replace(this.rules.other.tableAlignChars,"").split("|"),l=(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 l)d.rows.push(Va(f,d.header.length).map((h,w)=>({text:h,tokens:this.lexer.inline(h),header:!1,align:d.align[w]})));return d}}lheading(t){let r=this.rules.block.lheading.exec(t);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(t){let r=this.rules.block.paragraph.exec(t);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(t){let r=this.rules.block.text.exec(t);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(t){let r=this.rules.inline.escape.exec(t);if(r)return{type:"escape",raw:r[0],text:r[1]}}tag(t){let r=this.rules.inline.tag.exec(t);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(t){let r=this.rules.inline.link.exec(t);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=nf(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],l="";if(this.options.pedantic){let d=this.rules.other.pedanticHrefTitle.exec(i);d&&(i=d[1],l=d[3])}else l=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)),Qa(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:l&&l.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer,this.rules)}}reflink(t,r){let s;if((s=this.rules.inline.reflink.exec(t))||(s=this.rules.inline.nolink.exec(t))){let i=(s[2]||s[1]).replace(this.rules.other.multipleSpaceGlobal," "),l=r[i.toLowerCase()];if(!l){let d=s[0].charAt(0);return{type:"text",raw:d,text:d}}return Qa(s,l,s[0],this.lexer,this.rules)}}emStrong(t,r,s=""){let i=this.rules.inline.emStrongLDelim.exec(t);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 l=[...i[0]].length-1,d,g,f=l,h=0,w=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(w.lastIndex=0,r=r.slice(-1*t.length+l);(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])&&l%3&&!((l+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=t.slice(0,l+i.index+v+g);if(Math.min(l,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(t){let r=this.rules.inline.code.exec(t);if(r){let s=r[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(s),l=this.rules.other.startingSpaceChar.test(s)&&this.rules.other.endingSpaceChar.test(s);return i&&l&&(s=s.substring(1,s.length-1)),{type:"codespan",raw:r[0],text:s}}}br(t){let r=this.rules.inline.br.exec(t);if(r)return{type:"br",raw:r[0]}}del(t,r,s=""){let i=this.rules.inline.delLDelim.exec(t);if(i&&(!i[1]||!s||this.rules.inline.punctuation.exec(s))){let l=[...i[0]].length-1,d,g,f=l,h=this.rules.inline.delRDelim;for(h.lastIndex=0,r=r.slice(-1*t.length+l);(i=h.exec(r))!==null;){if(d=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!d||(g=[...d].length,g!==l))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=t.slice(0,l+i.index+w+g),I=v.slice(l,-l);return{type:"del",raw:v,text:I,tokens:this.lexer.inlineTokens(I)}}}}autolink(t){let r=this.rules.inline.autolink.exec(t);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(t){var s;let r;if(r=this.rules.inline.url.exec(t)){let i,l;if(r[2]==="@")i=r[0],l="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."?l="http://"+r[0]:l=r[0]}return{type:"link",raw:r[0],text:i,href:l,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(t){let r=this.rules.inline.text.exec(t);if(r){let s=this.lexer.state.inRawBlock;return{type:"text",raw:r[0],text:r[0],escaped:s}}}},lt=class $o{constructor(r){we(this,"tokens");we(this,"options");we(this,"state");we(this,"inlineQueue");we(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=r||en,this.options.tokenizer=this.options.tokenizer||new fr,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:qe,block:tr.normal,inline:Vn.normal};this.options.pedantic?(s.block=tr.pedantic,s.inline=Vn.pedantic):this.options.gfm&&(s.block=tr.gfm,this.options.breaks?s.inline=Vn.breaks:s.inline=Vn.gfm),this.tokenizer.rules=s}static get rules(){return{block:tr,inline:Vn}}static lex(r,s){return new $o(s).lex(r)}static lexInline(r,s){return new $o(s).inlineTokens(r)}lex(r){r=r.replace(qe.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(qe.tabCharGlobal," ").replace(qe.spaceLine,""));let l=1/0;for(;r;){if(r.length<l)l=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,l=null;if(this.tokens.links){let S=Object.keys(this.tokens.links);if(S.length>0)for(;(l=this.tokenizer.rules.inline.reflinkSearch.exec(i))!==null;)S.includes(l[0].slice(l[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(l=this.tokenizer.rules.inline.anyPunctuation.exec(i))!==null;)i=i.slice(0,l.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let d;for(;(l=this.tokenizer.rules.inline.blockSkip.exec(i))!==null;)d=l[2]?l[2].length:0,i=i.slice(0,l.index+d)+"["+"a".repeat(l[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(R=>(S=R.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 R=s.at(-1);S.type==="text"&&(R==null?void 0:R.type)==="text"?(R.raw+=S.raw,R.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 R=1/0,L=r.slice(1),B;this.options.extensions.startInline.forEach(M=>{B=M.call({lexer:this},L),typeof B=="number"&&B>=0&&(R=Math.min(R,B))}),R<1/0&&R>=0&&(O=r.substring(0,R+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 R=s.at(-1);(R==null?void 0:R.type)==="text"?(R.raw+=S.raw,R.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)}},pr=class{constructor(t){we(this,"options");we(this,"parser");this.options=t||en}space(t){return""}code({text:t,lang:r,escaped:s}){var d;let i=(d=(r||"").match(qe.notSpaceStart))==null?void 0:d[0],l=t.replace(qe.endingNewline,"")+`
|
|
46
|
+
`;return i?'<pre><code class="language-'+pt(i)+'">'+(s?l:pt(l,!0))+`</code></pre>
|
|
47
|
+
`:"<pre><code>"+(s?l:pt(l,!0))+`</code></pre>
|
|
48
|
+
`}blockquote({tokens:t}){return`<blockquote>
|
|
49
|
+
${this.parser.parse(t)}</blockquote>
|
|
50
|
+
`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:r}){return`<h${r}>${this.parser.parseInline(t)}</h${r}>
|
|
51
|
+
`}hr(t){return`<hr>
|
|
52
|
+
`}list(t){let r=t.ordered,s=t.start,i="";for(let g=0;g<t.items.length;g++){let f=t.items[g];i+=this.listitem(f)}let l=r?"ol":"ul",d=r&&s!==1?' start="'+s+'"':"";return"<"+l+d+`>
|
|
53
|
+
`+i+"</"+l+`>
|
|
54
|
+
`}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
|
|
55
|
+
`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
|
|
56
|
+
`}table(t){let r="",s="";for(let l=0;l<t.header.length;l++)s+=this.tablecell(t.header[l]);r+=this.tablerow({text:s});let i="";for(let l=0;l<t.rows.length;l++){let d=t.rows[l];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:t}){return`<tr>
|
|
61
|
+
${t}</tr>
|
|
62
|
+
`}tablecell(t){let r=this.parser.parseInline(t.tokens),s=t.header?"th":"td";return(t.align?`<${s} align="${t.align}">`:`<${s}>`)+r+`</${s}>
|
|
63
|
+
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${pt(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:r,tokens:s}){let i=this.parser.parseInline(s),l=Ka(t);if(l===null)return i;t=l;let d='<a href="'+t+'"';return r&&(d+=' title="'+pt(r)+'"'),d+=">"+i+"</a>",d}image({href:t,title:r,text:s,tokens:i}){i&&(s=this.parser.parseInline(i,this.parser.textRenderer));let l=Ka(t);if(l===null)return pt(s);t=l;let d=`<img src="${t}" alt="${pt(s)}"`;return r&&(d+=` title="${pt(r)}"`),d+=">",d}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:pt(t.text)}},Qo=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},ct=class Oo{constructor(r){we(this,"options");we(this,"renderer");we(this,"textRenderer");this.options=r||en,this.options.renderer=this.options.renderer||new pr,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Qo}static parse(r,s){return new Oo(s).parse(r)}static parseInline(r,s){return new Oo(s).parseInline(r)}parse(r){var i,l;this.renderer.parser=this;let s="";for(let d=0;d<r.length;d++){let g=r[d];if((l=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&l[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 l,d;this.renderer.parser=this;let i="";for(let g=0;g<r.length;g++){let f=r[g];if((d=(l=this.options.extensions)==null?void 0:l.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}},ar,Jn=(ar=class{constructor(t){we(this,"options");we(this,"block");this.options=t||en}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?lt.lex:lt.lexInline}provideParser(t=this.block){return t?ct.parse:ct.parseInline}},we(ar,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),we(ar,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),ar),of=class{constructor(...t){we(this,"defaults",Ho());we(this,"options",this.setOptions);we(this,"parse",this.parseMarkdown(!0));we(this,"parseInline",this.parseMarkdown(!1));we(this,"Parser",ct);we(this,"Renderer",pr);we(this,"TextRenderer",Qo);we(this,"Lexer",lt);we(this,"Tokenizer",fr);we(this,"Hooks",Jn);this.use(...t)}walkTokens(t,r){var i,l;let s=[];for(let d of t)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;(l=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&l[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(...t){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(s=>{let i={...s};if(i.async=this.defaults.async||i.async||!1,s.extensions&&(s.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if("renderer"in l){let d=r.renderers[l.name];d?r.renderers[l.name]=function(...g){let f=l.renderer.apply(this,g);return f===!1&&(f=d.apply(this,g)),f}:r.renderers[l.name]=l.renderer}if("tokenizer"in l){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let d=r[l.level];d?d.unshift(l.tokenizer):r[l.level]=[l.tokenizer],l.start&&(l.level==="block"?r.startBlock?r.startBlock.push(l.start):r.startBlock=[l.start]:l.level==="inline"&&(r.startInline?r.startInline.push(l.start):r.startInline=[l.start]))}"childTokens"in l&&l.childTokens&&(r.childTokens[l.name]=l.childTokens)}),i.extensions=r),s.renderer){let l=this.defaults.renderer||new pr(this.defaults);for(let d in s.renderer){if(!(d in l))throw new Error(`renderer '${d}' does not exist`);if(["options","parser"].includes(d))continue;let g=d,f=s.renderer[g],h=l[g];l[g]=(...w)=>{let v=f.apply(l,w);return v===!1&&(v=h.apply(l,w)),v||""}}i.renderer=l}if(s.tokenizer){let l=this.defaults.tokenizer||new fr(this.defaults);for(let d in s.tokenizer){if(!(d in l))throw new Error(`tokenizer '${d}' does not exist`);if(["options","rules","lexer"].includes(d))continue;let g=d,f=s.tokenizer[g],h=l[g];l[g]=(...w)=>{let v=f.apply(l,w);return v===!1&&(v=h.apply(l,w)),v}}i.tokenizer=l}if(s.hooks){let l=this.defaults.hooks||new Jn;for(let d in s.hooks){if(!(d in l))throw new Error(`hook '${d}' does not exist`);if(["options","block"].includes(d))continue;let g=d,f=s.hooks[g],h=l[g];Jn.passThroughHooks.has(d)?l[g]=w=>{if(this.defaults.async&&Jn.passThroughHooksRespectAsync.has(d))return(async()=>{let I=await f.call(l,w);return h.call(l,I)})();let v=f.call(l,w);return h.call(l,v)}:l[g]=(...w)=>{if(this.defaults.async)return(async()=>{let I=await f.apply(l,w);return I===!1&&(I=await h.apply(l,w)),I})();let v=f.apply(l,w);return v===!1&&(v=h.apply(l,w)),v}}i.hooks=l}if(s.walkTokens){let l=this.defaults.walkTokens,d=s.walkTokens;i.walkTokens=function(g){let f=[];return f.push(d.call(this,g)),l&&(f=f.concat(l.call(this,g))),f}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,r){return lt.lex(t,r??this.defaults)}parser(t,r){return ct.parse(t,r??this.defaults)}parseMarkdown(t){return(r,s)=>{let i={...s},l={...this.defaults,...i},d=this.onError(!!l.silent,!!l.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(l.hooks&&(l.hooks.options=l,l.hooks.block=t),l.async)return(async()=>{let g=l.hooks?await l.hooks.preprocess(r):r,f=await(l.hooks?await l.hooks.provideLexer(t):t?lt.lex:lt.lexInline)(g,l),h=l.hooks?await l.hooks.processAllTokens(f):f;l.walkTokens&&await Promise.all(this.walkTokens(h,l.walkTokens));let w=await(l.hooks?await l.hooks.provideParser(t):t?ct.parse:ct.parseInline)(h,l);return l.hooks?await l.hooks.postprocess(w):w})().catch(d);try{l.hooks&&(r=l.hooks.preprocess(r));let g=(l.hooks?l.hooks.provideLexer(t):t?lt.lex:lt.lexInline)(r,l);l.hooks&&(g=l.hooks.processAllTokens(g)),l.walkTokens&&this.walkTokens(g,l.walkTokens);let f=(l.hooks?l.hooks.provideParser(t):t?ct.parse:ct.parseInline)(g,l);return l.hooks&&(f=l.hooks.postprocess(f)),f}catch(g){return d(g)}}}onError(t,r){return s=>{if(s.message+=`
|
|
64
|
+
Please report this to https://github.com/markedjs/marked.`,t){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 of;function fe(t,r){return Xt.parse(t,r)}fe.options=fe.setOptions=function(t){return Xt.setOptions(t),fe.defaults=Xt.defaults,wl(fe.defaults),fe};fe.getDefaults=Ho;fe.defaults=en;fe.use=function(...t){return Xt.use(...t),fe.defaults=Xt.defaults,wl(fe.defaults),fe};fe.walkTokens=function(t,r){return Xt.walkTokens(t,r)};fe.parseInline=Xt.parseInline;fe.Parser=ct;fe.parser=ct.parse;fe.Renderer=pr;fe.TextRenderer=Qo;fe.Lexer=lt;fe.lexer=lt.lex;fe.Tokenizer=fr;fe.Hooks=Jn;fe.parse=fe;fe.options;fe.setOptions;fe.use;fe.walkTokens;fe.parseInline;ct.parse;lt.lex;const af={key:0,class:"terminal-output-reader","aria-label":"终端运行输出"},lf={key:0,class:"background-task-live-output",tabindex:"0"},cf={key:1,class:"background-task-live-output terminal-stderr",tabindex:"0"},uf={__name:"TerminalOutputReader",props:{ownerSessionId:String,runId:String},setup(t){const r=t,s=lr({record:null,stdout:"",stderr:"",offsets:{stdout:0,stderr:0}});let i=0,l,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")&&(l=setTimeout(g,1e3))}}return Pe(()=>[r.ownerSessionId,r.runId],()=>{i++,d==null||d.abort(),d=new AbortController,clearTimeout(l),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(l)}),(f,h)=>s.stdout||s.stderr?(m(),b("section",af,[s.stdout?(m(),b("pre",lf,x(s.stdout),1)):C("",!0),s.stderr?(m(),b("pre",cf,x(s.stderr),1)):C("",!0)])):C("",!0)}},df=["report","timeline","messages","delegation"],Rl=(t,r)=>t.ownerSessionId===r.ownerSessionId&&t.taskId===r.taskId&&t.runGeneration===r.runGeneration,Nl=t=>typeof t.ownerSessionId=="string"&&!!t.ownerSessionId&&typeof t.taskId=="string"&&!!t.taskId&&Number.isSafeInteger(t.runGeneration)&&t.runGeneration>0;function gf(t,r,s,i=!1){if(!Nl(t)||!df.includes(r)||i&&(!s||r!=="timeline"))throw new Error("所属会话、任务、轮次或读取方式无效");const l=new URLSearchParams({sessionId:t.ownerSessionId,taskId:t.taskId,runGeneration:String(t.runGeneration),view:r,pageChars:"16000"});return s&&l.set("cursor",s),i&&l.set("refresh","true"),`/api/agent-content?${l}`}const ff=["complete","truncated","missing","unavailable"];function Ya(t,r){if(!r||!ff.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(t&&(t.totalChars!==r.totalChars||t.state!==r.state))throw new Error("分片源内容已改变,请重新读取");const i=(t==null?void 0:t.text)??"";if(r.offset>i.length)throw new Error("内容分片缺页,请重新读取");const l=Math.min(i.length-r.offset,r.text.length);if(i.slice(r.offset,r.offset+l)!==r.text.slice(0,l))throw new Error("内容分片冲突,请重新读取");const d=i+r.text.slice(l);return{...r,offset:0,text:d,hasMore:d.length<r.totalChars}}function Ll(){return{page:null,items:[],fragment:null}}function pf(t,r,s,i,l="next"){var f,h,w,v,I;if(!r||!Rl(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=l==="start"?Ll():t;if(l==="next"&&((f=d.page)!=null&&f.snapshotId)&&r.snapshotId&&d.page.snapshotId!==r.snapshotId)throw new Error("分页快照已改变,请重新读取");if(l==="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),R=O===void 0?void 0:_[O];if(R&&(R.kind!==S.kind||R.messageId!==S.messageId||R.toolUseId!==S.toolUseId||R.toolName!==S.toolName))throw new Error("过程条目身份冲突");const L={...S,content:Ya(R==null?void 0:R.content,S.content)};O===void 0?(A.set(S.id,_.length),_.push(L)):_[O]=L}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?Ya(d.fragment,g):null}}const hf={class:"agent-content-reader agent-parent-messages","aria-label":"代理消息"},mf=["innerHTML"],bf={key:0,class:"reader-error",role:"alert"},kf={__name:"AgentExchangeReader",props:{ownerSessionId:String,task:Object,renderMarkdown:Function},setup(t){const r=t,s=re([]),i=re("");let l=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=++l;d==null||d.abort(),d=new AbortController;const I=d.signal;clearTimeout(g);const _=r.task,A=h(),{ownerSessionId:S}=A;if(!Nl(A))return;const O=()=>v===l&&!I.aborted&&Rl(A,h()),R=[];let L=!1;async function B(oe,o){var Z;const ie={ownerSessionId:S,taskId:_.taskId,runGeneration:o};let de=Ll(),G;do{const ae=await ke(gf(ie,oe,G),{signal:I,cache:"no-store"});if(!ae.ok)throw new Error("加载失败");const ne=await ae.json();if(!O())return"";if(ne.state==="unavailable")throw new Error("加载失败");if(de=pf(de,ne,ie,oe,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(oe,o){try{return await B(oe,o)}catch(ie){return O()&&ie.name!=="AbortError"&&(L=!0),""}}function P(oe,o,ie){typeof ie=="string"&&ie.trim()&&R.push({id:oe,direction:o,text:ie})}P("delegation","主代理 → 子代理",await M("delegation",_.runGeneration));const j=[..._.runHistory||[],_].filter(oe=>Number.isSafeInteger(oe.runGeneration)).sort((oe,o)=>oe.runGeneration-o.runGeneration);for(const oe of j){if(!O())return;const o=await M("messages",oe.runGeneration);try{const ie=JSON.parse(o||"[]");if(!Array.isArray(ie))throw new Error;for(const de of ie)P(`message:${oe.runGeneration}:${de.id}`,"主代理 → 子代理",de.text)}catch{L=!0}P(`report:${oe.runGeneration}`,"子代理 → 主代理",await M("report",oe.runGeneration))}O()&&((!L||!s.value.length)&&(s.value=R),i.value=L?"加载失败":"",["pending","running"].includes((F=r.task)==null?void 0:F.status)&&(g=setTimeout(w,3e3)))}return Pe([()=>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(()=>{l++,d==null||d.abort(),clearTimeout(g)}),(v,I)=>(m(),b("section",hf,[(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)]),t.renderMarkdown?(m(),b("div",{key:0,class:"markdown",innerHTML:t.renderMarkdown(_.text)},null,8,mf)):(m(),b("pre",{key:1,style:f},x(_.text),1))]))),128)),i.value?(m(),b("p",bf,x(i.value),1)):C("",!0)]))}};function yf(t,r,s){const i=new Array(t);return new Proxy(i,{get(l,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<t){let w=l[h];if(!w){const v=r[h*2];w=l[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 t}return Reflect.get(l,d,g)}})}function fn(t,r,s){let i=s.initialDeps??[],l,d=!0;function g(){const f=t();return(f.length!==i.length||f.some((w,v)=>i[v]!==w))&&(i=f,l=r(...f),s!=null&&s.onChange&&!(d&&s.skipInitialOnChange)&&s.onChange(l),d=!1),l}return g.updateDeps=f=>{i=f},g}function Ja(t,r){if(t===void 0)throw new Error("Unexpected undefined");return t}const vf=(t,r)=>Math.abs(t-r)<1.01,wf=(t,r,s)=>{let i;return Object.assign(function(...l){t.clearTimeout(i),i=t.setTimeout(()=>r.apply(this,l),s)},{cancel:()=>{t.clearTimeout(i)}})};let Zn;const ko=()=>{if(Zn!==void 0)return Zn;if(typeof navigator>"u")return Zn=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Zn=!0;const t=navigator.maxTouchPoints;return Zn=navigator.platform==="MacIntel"&&t!==void 0&&t>0},Xa=t=>{const{offsetWidth:r,offsetHeight:s}=t;return{width:r,height:s}},_f=t=>t,$l=t=>{const r=Math.max(t.startIndex-t.overscan,0),i=Math.min(t.endIndex+t.overscan,t.count-1)-r+1,l=new Array(i);for(let d=0;d<i;d++)l[d]=r+d;return l},xf=(t,r)=>{const s=t.scrollElement;if(!s)return;const i=t.targetWindow;if(!i)return;const l=g=>{const{width:f,height:h}=g;r({width:Math.round(f),height:Math.round(h)})};if(l(Xa(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){l({width:w.inlineSize,height:w.blockSize});return}}l(Xa(s))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(f):f()});return d.observe(s,{box:"border-box"}),()=>{d.unobserve(s)}},hr={passive:!0},Sf=typeof window>"u"?!0:"onscrollend"in window,Ef=(t,r,s)=>{const i=t.scrollElement;if(!i)return;const l=t.targetWindow;if(!l)return;const d=t.options.useScrollendEvent&&Sf;let g=0;const f=d?null:wf(l,()=>r(g,!1),t.options.isScrollingResetDelay),h=I=>()=>{g=s(i),f==null||f(),r(g,I)},w=h(!0),v=h(!1);return i.addEventListener("scroll",w,hr),d&&i.addEventListener("scrollend",v,hr),()=>{i.removeEventListener("scroll",w),d&&i.removeEventListener("scrollend",v),f==null||f.cancel()}},Tf=(t,r)=>Ef(t,r,s=>{const{horizontal:i,isRtl:l}=t.options;return i?s.scrollLeft*(l&&-1||1):s.scrollTop}),If=(t,r,s)=>{if(s.options.useCachedMeasurements){const i=s.indexFromElement(t),l=s.options.getItemKey(i);return s.itemSizeCache.get(l)??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(t),l=s.options.getItemKey(i),d=s.itemSizeCache.get(l);if(d!==void 0)return d}return t[s.options.horizontal?"offsetWidth":"offsetHeight"]},Af=(t,{adjustments:r=0,behavior:s},i)=>{var l,d;(d=(l=i.scrollElement)==null?void 0:l.scrollTo)==null||d.call(l,{[i.options.horizontal?"left":"top"]:t+r,behavior:s})},Cf=Af;class Mf{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,l;return((l=(i=(s=this.targetWindow)==null?void 0:s.performance)==null?void 0:i.now)==null?void 0:l.call(i))??Date.now()},this.observer=(()=>{let s=null;const i=()=>s||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:s=new this.targetWindow.ResizeObserver(l=>{l.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 l;(l=i())==null||l.disconnect(),s=null},observe:l=>{var d;return(d=i())==null?void 0:d.observe(l,{box:"border-box"})},unobserve:l=>{var d;return(d=i())==null?void 0:d.unobserve(l)}}})(),this.range=null,this.setOptions=s=>{var i,l;const d={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:_f,rangeExtractor:$l,onChange:()=>{},measureElement:If,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,R=_>0?((l=S[_-1])==null?void 0:l.key)??g.getItemKey(_-1):null;if(A!==_||_>0&&A>0&&(d.getItemKey(0)!==O||d.getItemKey(A-1)!==R)){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)!==R)&&(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:R}=this.options;let L=0;for(;L<O&&R(L)!==_;)L++;if(L<O){const B=S[L];if(B){const M=Math.max(0,B.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,l;(l=(i=this.options).onChange)==null||l.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,hr),d.addEventListener("touchend",f,hr),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 l=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,l&&this.scrollElement&&this.options.enabled){const[d,g,f,h]=l;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 l=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(s,{adjustments:this.scrollAdjustments+=l,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,l,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:l,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:l,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 L of this.laneAssignments.keys())L>=s&&this.laneAssignments.delete(L);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(L=>{this.itemSizeCache.set(L.key,L.size)}));const _=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===s&&(this.lanesSettling=!1),f===1){const L=s*2;let B=this._flatMeasurements;if(!B||B.length<L){const j=new Float64Array(L);B&&_>0&&j.set(B.subarray(0,_*2)),B=j,this._flatMeasurements=B}let M;if(_===0)M=i+l;else{const j=_-1;M=B[j*2]+B[j*2+1]+w}for(let j=_;j<s;j++){const F=d(j),oe=I.get(F),o=typeof oe=="number"?oe:this.options.estimateSize(j);B[j*2]=M,B[j*2+1]=o,M+=o+w}const P=yf(s,B,d);return this.measurementsCache=P,P}const A=this.measurementsCache.slice(0,_),S=new Array(f).fill(void 0),O=new Float64Array(f);let R=0;for(let L=0;L<_;L++){const B=A[L];B&&(S[B.lane]===void 0&&R++,S[B.lane]=L,O[B.lane]=B.end)}for(let L=_;L<s;L++){const B=d(L),M=this.laneAssignments.get(L);let P,j;const F=h==="estimate"||I.has(B);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+l}else if(R===f){let de=0,G=O[0],Z=S[0];for(let ae=1;ae<f;ae++){const ne=O[ae];(ne<G||ne===G&&S[ae]<Z)&&(de=ae,G=ne,Z=S[ae])}P=de,j=G+w,F&&this.laneAssignments.set(L,P)}else P=L%this.options.lanes,j=i+l,F&&this.laneAssignments.set(L,P);const oe=I.get(B),o=typeof oe=="number"?oe:this.options.estimateSize(L),ie=j+o;A[L]={index:L,start:j,size:o,end:ie,key:B,lane:P},S[P]===void 0&&R++,S[P]=L,O[P]=ie}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,l,d)=>s.length===0||i===0?(this.range=null,null):(this.range=Nf(s,i,l,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 l=this.calculateRange();return l&&(s=l.startIndex,i=l.endIndex),this.maybeNotify.updateDeps([this.isScrolling,s,i]),[this.options.rangeExtractor,this.options.overscan,this.options.count,s,i]},(s,i,l,d,g)=>d===null||g===null?[]:s({startIndex:d,endIndex:g,overscan:i,count:l}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=s=>{const i=this.options.indexAttribute,l=s.getAttribute(i);return l?parseInt(l,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 l=this.scrollState.index??((i=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:i.index);if(l!==void 0&&this.range){const d=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),g=Math.max(0,l-d),f=Math.min(this.options.count-1,l+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 l=this.options.getItemKey(i),d=this.elementsCache.get(l);d!==s&&(d&&this.observer.unobserve(d),this.observer.observe(s),this.elementsCache.set(l,s)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(i)&&this.resizeItem(i,this.options.measureElement(s,void 0,this))},this.resizeItem=(s,i)=>{var l,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"&&((l=this.scrollState)==null?void 0:l.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,A=_?this.getTotalSize():0,S=this.getScrollOffset()+this.scrollAdjustments,R=!this.itemSizeCache.has(h)?f<S:f+v<=S&&this.scrollDirection!=="backward",L=((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):R);(this.pendingMin===null||s<this.pendingMin)&&(this.pendingMin=s),this.itemSizeCache.set(h,i),this.itemSizeCacheVersion++;let B=!1;_?B=this.applyScrollAdjustment(this.getTotalSize()-A):L&&(B=this.applyScrollAdjustment(I)),this.notify(B)}},this.getVirtualItems=fn(()=>[this.getVirtualIndexes(),this.getMeasurements()],(s,i)=>{const l=[];for(let d=0,g=s.length;d<g;d++){const f=s[d],h=i[f];l.push(h)}return l},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=s=>{const i=this.getMeasurements();if(i.length===0)return;const l=this._flatMeasurements,d=this.options.lanes===1&&l!=null,g=Ol(0,i.length-1,d?f=>l[f*2]:f=>Ja(i[f]).start,s);return Ja(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,l=0)=>{if(!this.scrollElement)return 0;const d=this.getSize(),g=this.getScrollOffset();i==="auto"&&(i=s>=g+d?"end":"start"),i==="center"?s+=(l-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 l=this.getSize(),d=this.getScrollOffset(),g=this.measurementsCache[s];if(!g)return;if(i==="auto")if(g.end>=d+l-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:l="auto"}={})=>{this._iosDeferredAdjustment=0;const d=this.getOffsetForAlignment(s,i),g=this.now();this.scrollState={index:null,align:i,behavior:l,startedAt:g,lastTargetOffset:d,stableFrames:0},this._scrollToOffset(d,{adjustments:void 0,behavior:l}),this.scheduleScrollReconcile()},this.scrollToIndex=(s,{align:i="auto",behavior:l="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:l,startedAt:h,lastTargetOffset:g,stableFrames:0},this._scrollToOffset(g,{adjustments:void 0,behavior:l}),this.scheduleScrollReconcile()},this.scrollBy=(s,{behavior:i="auto"}={})=>{const l=this.getScrollOffset()+s,d=this.now();this.scrollState={index:null,align:"start",behavior:i,startedAt:d,lastTargetOffset:l,stableFrames:0},this._scrollToOffset(l,{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 l;if(i.length===0)l=this.options.paddingStart;else if(this.options.lanes===1){const d=i.length-1,g=this._flatMeasurements;g!=null?l=g[d*2]+g[d*2+1]:l=((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--}l=Math.max(...d.filter(f=>f!==null))}return Math.max(l-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const s=[];if(this.itemSizeCache.size===0)return s;const i=this.getMeasurements();for(const l of i)l&&this.itemSizeCache.has(l.key)&&s.push({index:l.index,key:l.key,start:l.start,size:l.size,end:l.end,lane:l.lane});return s},this._scrollToOffset=(s,{adjustments:i,behavior:l})=>{this._intendedScrollOffset=s+(i??0),this.options.scrollToFn(s,{behavior:l,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,l=i?i[0]:this.scrollState.lastTargetOffset,d=1,g=l!==this.scrollState.lastTargetOffset;if(!g&&vf(l,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=d){this.getScrollOffset()!==l&&this._scrollToOffset(l,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,g){const f=this.getSize()||600,h=Math.abs(l-this.getScrollOffset()),w=this.scrollState.behavior==="smooth"&&h>f;this.scrollState.lastTargetOffset=l,w||(this.scrollState.behavior="auto"),this._scrollToOffset(l,{adjustments:void 0,behavior:w?"smooth":"auto"})}this.scheduleScrollReconcile()}}const Ol=(t,r,s,i)=>{for(;t<=r;){const l=(t+r)/2|0,d=s(l);if(d<i)t=l+1;else if(d>i)r=l-1;else return l}return t>0?t-1:0};function Rf(t,r,s){let i=0;for(;i<=r;){const l=(i+r)/2|0,d=t[l*2];if(d<s)i=l+1;else if(d>s)r=l-1;else return l}return i>0?i-1:0}function Nf(t,r,s,i,l){const d=t.length-1;if(t.length<=i)return{startIndex:0,endIndex:d};if(i===1&&l!==null){const w=Rf(l,d,s);let v=w;const I=s+r;for(;v<d&&l[v*2]+l[v*2+1]<I;)v++;return{startIndex:w,endIndex:v}}let f=Ol(0,d,w=>t[w].start,s),h=f;if(i===1)for(;h<d&&t[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=t[h];w[I.lane]=I.end,h++}const v=Array(i).fill(s+r);for(;f>=0&&v.some(I=>I>=s);){const I=t[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 Lf(t){const r=new Mf(Ne(t)),s=fg(r),i=r._didMount();return Pe(()=>Ne(t).getScrollElement(),l=>{l&&r._willUpdate()},{immediate:!0}),Pe(()=>Ne(t),l=>{r.setOptions({...l,onChange:(d,g)=>{var f;Ua(s),(f=l.onChange)==null||f.call(l,d,g)}}),r._willUpdate(),Ua(s)},{immediate:!0}),gg(i),s}function $f(t){return Lf(V(()=>({observeElementRect:xf,observeElementOffset:Tf,scrollToFn:Cf,...Ne(t)})))}function Of(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Dl(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(r=>{const s=t[r],i=typeof s;(i==="object"||i==="function")&&!Object.isFrozen(s)&&Dl(s)}),t}class el{constructor(r){r.data===void 0&&(r.data={}),this.data=r.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Pl(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ot(t,...r){const s=Object.create(null);for(const i in t)s[i]=t[i];return r.forEach(function(i){for(const l in i)s[l]=i[l]}),s}const Df="</span>",tl=t=>!!t.scope,Pf=(t,{prefix:r})=>{if(t.startsWith("language:"))return t.replace("language:","language-");if(t.includes(".")){const s=t.split(".");return[`${r}${s.shift()}`,...s.map((i,l)=>`${i}${"_".repeat(l+1)}`)].join(" ")}return`${r}${t}`};class Uf{constructor(r,s){this.buffer="",this.classPrefix=s.classPrefix,r.walk(this)}addText(r){this.buffer+=Pl(r)}openNode(r){if(!tl(r))return;const s=Pf(r.scope,{prefix:this.classPrefix});this.span(s)}closeNode(r){tl(r)&&(this.buffer+=Df)}value(){return this.buffer}span(r){this.buffer+=`<span class="${r}">`}}const nl=(t={})=>{const r={children:[]};return Object.assign(r,t),r};class Yo{constructor(){this.rootNode=nl(),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=nl({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=>{Yo._collapse(s)}))}}class Bf extends Yo{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 Uf(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function os(t){return t?typeof t=="string"?t:t.source:null}function Ul(t){return tn("(?=",t,")")}function zf(t){return tn("(?:",t,")*")}function Ff(t){return tn("(?:",t,")?")}function tn(...t){return t.map(s=>os(s)).join("")}function Hf(t){const r=t[t.length-1];return typeof r=="object"&&r.constructor===Object?(t.splice(t.length-1,1),r):{}}function Jo(...t){return"("+(Hf(t).capture?"":"?:")+t.map(i=>os(i)).join("|")+")"}function Bl(t){return new RegExp(t.toString()+"|").exec("").length-1}function jf(t,r){const s=t&&t.exec(r);return s&&s.index===0}const Gf=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Xo(t,{joinWith:r}){let s=0;return t.map(i=>{s+=1;const l=s;let d=os(i),g="";for(;d.length>0;){const f=Gf.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])+l):(g+=f[0],f[0]==="("&&s++)}return g}).map(i=>`(${i})`).join(r)}const qf=/\b\B/,zl="[a-zA-Z]\\w*",ei="[a-zA-Z_]\\w*",Fl="\\b\\d+(\\.\\d+)?",Hl="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",jl="\\b(0b[01]+)",Wf="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Kf=(t={})=>{const r=/^#![ ]*\//;return t.binary&&(t.begin=tn(r,/.*\b/,t.binary,/\b.*/)),Ot({scope:"meta",begin:r,end:/$/,relevance:0,"on:begin":(s,i)=>{s.index!==0&&i.ignoreMatch()}},t)},is={begin:"\\\\[\\s\\S]",relevance:0},Vf={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[is]},Zf={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[is]},Qf={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/},Sr=function(t,r,s={}){const i=Ot({scope:"comment",begin:t,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 l=Jo("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(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Yf=Sr("//","$"),Jf=Sr("/\\*","\\*/"),Xf=Sr("#","$"),ep={scope:"number",begin:Fl,relevance:0},tp={scope:"number",begin:Hl,relevance:0},np={scope:"number",begin:jl,relevance:0},sp={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[is,{begin:/\[/,end:/\]/,relevance:0,contains:[is]}]},rp={scope:"title",begin:zl,relevance:0},op={scope:"title",begin:ei,relevance:0},ip={begin:"\\.\\s*"+ei,relevance:0},ap=function(t){return Object.assign(t,{"on:begin":(r,s)=>{s.data._beginMatch=r[1]},"on:end":(r,s)=>{s.data._beginMatch!==r[1]&&s.ignoreMatch()}})};var nr=Object.freeze({__proto__:null,APOS_STRING_MODE:Vf,BACKSLASH_ESCAPE:is,BINARY_NUMBER_MODE:np,BINARY_NUMBER_RE:jl,COMMENT:Sr,C_BLOCK_COMMENT_MODE:Jf,C_LINE_COMMENT_MODE:Yf,C_NUMBER_MODE:tp,C_NUMBER_RE:Hl,END_SAME_AS_BEGIN:ap,HASH_COMMENT_MODE:Xf,IDENT_RE:zl,MATCH_NOTHING_RE:qf,METHOD_GUARD:ip,NUMBER_MODE:ep,NUMBER_RE:Fl,PHRASAL_WORDS_MODE:Qf,QUOTE_STRING_MODE:Zf,REGEXP_MODE:sp,RE_STARTERS_RE:Wf,SHEBANG:Kf,TITLE_MODE:rp,UNDERSCORE_IDENT_RE:ei,UNDERSCORE_TITLE_MODE:op});function lp(t,r){t.input[t.index-1]==="."&&r.ignoreMatch()}function cp(t,r){t.className!==void 0&&(t.scope=t.className,delete t.className)}function up(t,r){r&&t.beginKeywords&&(t.begin="\\b("+t.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",t.__beforeBegin=lp,t.keywords=t.keywords||t.beginKeywords,delete t.beginKeywords,t.relevance===void 0&&(t.relevance=0))}function dp(t,r){Array.isArray(t.illegal)&&(t.illegal=Jo(...t.illegal))}function gp(t,r){if(t.match){if(t.begin||t.end)throw new Error("begin & end are not supported with match");t.begin=t.match,delete t.match}}function fp(t,r){t.relevance===void 0&&(t.relevance=1)}const pp=(t,r)=>{if(!t.beforeMatch)return;if(t.starts)throw new Error("beforeMatch cannot be used with starts");const s=Object.assign({},t);Object.keys(t).forEach(i=>{delete t[i]}),t.keywords=s.keywords,t.begin=tn(s.beforeMatch,Ul(s.begin)),t.starts={relevance:0,contains:[Object.assign(s,{endsParent:!0})]},t.relevance=0,delete s.beforeMatch},hp=["of","and","for","in","not","or","if","then","parent","list","value"],mp="keyword";function Gl(t,r,s=mp){const i=Object.create(null);return typeof t=="string"?l(s,t.split(" ")):Array.isArray(t)?l(s,t):Object.keys(t).forEach(function(d){Object.assign(i,Gl(t[d],r,d))}),i;function l(d,g){r&&(g=g.map(f=>f.toLowerCase())),g.forEach(function(f){const h=f.split("|");i[h[0]]=[d,bp(h[0],h[1])]})}}function bp(t,r){return r?Number(r):kp(t)?0:1}function kp(t){return hp.includes(t.toLowerCase())}const sl={},Yt=t=>{console.error(t)},rl=(t,...r)=>{console.log(`WARN: ${t}`,...r)},pn=(t,r)=>{sl[`${t}/${r}`]||(console.log(`Deprecated as of ${t}. ${r}`),sl[`${t}/${r}`]=!0)},mr=new Error;function ql(t,r,{key:s}){let i=0;const l=t[s],d={},g={};for(let f=1;f<=r.length;f++)g[f+i]=l[f],d[f+i]=!0,i+=Bl(r[f-1]);t[s]=g,t[s]._emit=d,t[s]._multi=!0}function yp(t){if(Array.isArray(t.begin)){if(t.skip||t.excludeBegin||t.returnBegin)throw Yt("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),mr;if(typeof t.beginScope!="object"||t.beginScope===null)throw Yt("beginScope must be object"),mr;ql(t,t.begin,{key:"beginScope"}),t.begin=Xo(t.begin,{joinWith:""})}}function vp(t){if(Array.isArray(t.end)){if(t.skip||t.excludeEnd||t.returnEnd)throw Yt("skip, excludeEnd, returnEnd not compatible with endScope: {}"),mr;if(typeof t.endScope!="object"||t.endScope===null)throw Yt("endScope must be object"),mr;ql(t,t.end,{key:"endScope"}),t.end=Xo(t.end,{joinWith:""})}}function wp(t){t.scope&&typeof t.scope=="object"&&t.scope!==null&&(t.beginScope=t.scope,delete t.scope)}function _p(t){wp(t),typeof t.beginScope=="string"&&(t.beginScope={_wrap:t.beginScope}),typeof t.endScope=="string"&&(t.endScope={_wrap:t.endScope}),yp(t),vp(t)}function xp(t){function r(g,f){return new RegExp(os(g),"m"+(t.case_insensitive?"i":"")+(t.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+=Bl(f)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const f=this.regexes.map(h=>h[1]);this.matcherRe=r(Xo(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 l(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;[cp,gp,_p,pp].forEach(v=>v(g,f)),t.compilerExtensions.forEach(v=>v(g,f)),g.__beforeBegin=null,[up,dp,fp].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=Gl(g.keywords,t.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=os(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 Sp(v==="self"?g:v)})),g.contains.forEach(function(v){d(v,h)}),g.starts&&d(g.starts,f),h.matcher=l(h),h}if(t.compilerExtensions||(t.compilerExtensions=[]),t.contains&&t.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return t.classNameAliases=Ot(t.classNameAliases||{}),d(t)}function Wl(t){return t?t.endsWithParent||Wl(t.starts):!1}function Sp(t){return t.variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(r){return Ot(t,{variants:null},r)})),t.cachedVariants?t.cachedVariants:Wl(t)?Ot(t,{starts:t.starts?Ot(t.starts):null}):Object.isFrozen(t)?Ot(t):t}var Ep="11.11.1";class Tp extends Error{constructor(r,s){super(r),this.name="HTMLInjectionError",this.html=s}}const yo=Pl,ol=Ot,il=Symbol("nomatch"),Ip=7,Kl=function(t){const r=Object.create(null),s=Object.create(null),i=[];let l=!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:Bf};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||(rl(d.replace("{}",W[1])),rl("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(z,K){return z.keywords[K]}function Me(){if(!J.keywords){Ce.addText(me);return}let z=0;J.keywordPatternRe.lastIndex=0;let K=J.keywordPatternRe.exec(me),ee="";for(;K;){ee+=me.substring(z,K.index);const ge=Le.case_insensitive?K[0].toLowerCase():K[0],$e=xe(J,ge);if($e){const[We,mt]=$e;if(Ce.addText(ee),ee="",ue[ge]=(ue[ge]||0)+1,ue[ge]<=Ip&&(Tt+=mt),We.startsWith("_"))ee+=K[0];else{const bt=Le.classNameAliases[We]||We;Fe(K[0],bt)}}else ee+=K[0];z=J.keywordPatternRe.lastIndex,K=J.keywordPatternRe.exec(me)}ee+=me.substring(z),Ce.addText(ee)}function et(){if(me==="")return;let z=null;if(typeof J.subLanguage=="string"){if(!r[J.subLanguage]){Ce.addText(me);return}z=I(J.subLanguage,me,!0,Et[J.subLanguage]),Et[J.subLanguage]=z._top}else z=A(me,J.subLanguage.length?J.subLanguage:null);J.relevance>0&&(Tt+=z.relevance),Ce.__addSublanguage(z._emitter,z.language)}function ze(){J.subLanguage!=null?et():Me(),me=""}function Fe(z,K){z!==""&&(Ce.startScope(K),Ce.addText(z),Ce.endScope())}function st(z,K){let ee=1;const ge=K.length-1;for(;ee<=ge;){if(!z._emit[ee]){ee++;continue}const $e=Le.classNameAliases[z[ee]]||z[ee],We=K[ee];$e?Fe(We,$e):(me=We,Me(),me=""),ee++}}function Re(z,K){return z.scope&&typeof z.scope=="string"&&Ce.openNode(Le.classNameAliases[z.scope]||z.scope),z.beginScope&&(z.beginScope._wrap?(Fe(me,Le.classNameAliases[z.beginScope._wrap]||z.beginScope._wrap),me=""):z.beginScope._multi&&(st(z.beginScope,K),me="")),J=Object.create(z,{parent:{value:J}}),J}function xt(z,K,ee){let ge=jf(z.endRe,ee);if(ge){if(z["on:end"]){const $e=new el(z);z["on:end"](K,$e),$e.isMatchIgnored&&(ge=!1)}if(ge){for(;z.endsParent&&z.parent;)z=z.parent;return z}}if(z.endsWithParent)return xt(z.parent,K,ee)}function Dt(z){return J.matcher.regexIndex===0?(me+=z[0],1):(dt=!0,0)}function Pt(z){const K=z[0],ee=z.rule,ge=new el(ee),$e=[ee.__beforeBegin,ee["on:begin"]];for(const We of $e)if(We&&(We(z,ge),ge.isMatchIgnored))return Dt(K);return ee.skip?me+=K:(ee.excludeBegin&&(me+=K),ze(),!ee.returnBegin&&!ee.excludeBegin&&(me=K)),Re(ee,z),ee.returnBegin?0:K.length}function Ut(z){const K=z[0],ee=q.substring(z.index),ge=xt(J,z,ee);if(!ge)return il;const $e=J;J.endScope&&J.endScope._wrap?(ze(),Fe(K,J.endScope._wrap)):J.endScope&&J.endScope._multi?(ze(),st(J.endScope,z)):$e.skip?me+=K:($e.returnEnd||$e.excludeEnd||(me+=K),ze(),$e.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&&Re(ge.starts,z),$e.returnEnd?0:K.length}function St(){const z=[];for(let K=J;K!==Le;K=K.parent)K.scope&&z.unshift(K.scope);z.forEach(K=>Ce.openNode(K))}let Ie={};function vn(z,K){const ee=K&&K[0];if(me+=z,ee==null)return ze(),0;if(Ie.type==="begin"&&K.type==="end"&&Ie.index===K.index&&ee===""){if(me+=q.slice(K.index,K.index+1),!l){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!==il)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 Le=o($);if(!Le)throw Yt(d.replace("{}",$)),new Error('Unknown language: "'+$+'"');const He=xp(Le);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(Le.__emitTokens)Le.__emitTokens(q,Ce);else{for(J.matcher.considerAll();;){Bt++,dt?dt=!1:J.matcher.considerAll(),J.matcher.lastIndex=Ze;const z=J.matcher.exec(q);if(!z)break;const K=q.substring(Ze,z.index),ee=vn(K,z);Ze=z.index+ee}vn(q.substring(Ze))}return Ce.finalize(),ut=Ce.toHTML(),{language:$,value:ut,relevance:Tt,illegal:!1,_emitter:Ce,_top:J}}catch(z){if(z.message&&z.message.includes("Illegal"))return{language:$,value:yo(q),illegal:!0,relevance:0,_illegalBy:{message:z.message,index:Ze,context:q.slice(Ze-100,Ze+100),mode:z.mode,resultSoFar:ut},_emitter:Ce};if(l)return{language:$,value:yo(q),illegal:!1,relevance:0,errorRaised:z,_emitter:Ce,_top:J};throw z}}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(ze=>I(ze,$,!1));se.unshift(W);const ue=se.sort((ze,Fe)=>{if(ze.relevance!==Fe.relevance)return Fe.relevance-ze.relevance;if(ze.language&&Fe.language){if(o(ze.language).supersetOf===Fe.language)return 1;if(o(Fe.language).supersetOf===ze.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 Tp("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 R($){f=ol(f,$)}const L=()=>{P(),pn("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function B(){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(t)}catch(se){if(Yt("Language definition for '{}' could not be registered.".replace("{}",$)),l)Yt(se);else throw se;W=g}W.name||(W.name=$),r[$]=W,W.rawDefinition=q.bind(null,t),W.aliases&&ie(W.aliases,{languageName:$})}function F($){delete r[$];for(const q of Object.keys(s))s[q]===$&&delete s[q]}function oe(){return Object.keys(r)}function o($){return $=($||"").toLowerCase(),r[$]||r[s[$]]}function ie($,{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 ae($){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(t,{highlight:v,highlightAuto:A,highlightAll:P,highlightElement:O,highlightBlock:ye,configure:R,initHighlighting:L,initHighlightingOnLoad:B,registerLanguage:j,unregisterLanguage:F,listLanguages:oe,getLanguage:o,registerAliases:ie,autoDetection:de,inherit:ol,addPlugin:Z,removePlugin:ae}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString=Ep,t.regex={concat:tn,lookahead:Ul,either:Jo,optional:Ff,anyNumberOfTimes:zf};for(const $ in nr)typeof nr[$]=="object"&&Dl(nr[$]);return Object.assign(t,nr),t},bn=Kl({});bn.newInstance=()=>Kl({});var Ap=bn;bn.HighlightJS=bn;bn.default=bn;const Ee=Of(Ap),al="[A-Za-z$_][0-9A-Za-z$_]*",Cp=["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"],Mp=["true","false","null","undefined","NaN","Infinity"],Vl=["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"],Zl=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ql=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Rp=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Np=[].concat(Ql,Vl,Zl);function vo(t){const r=t.regex,s=(W,{after:se})=>{const ue="</"+W[0].slice(1);return W.input.indexOf(ue,se)!==-1},i=al,l={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:al,keyword:Cp,literal:Mp,built_in:Np,"variable.language":Rp},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:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},O={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},R={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},B={className:"comment",variants:[t.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}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},M=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,A,S,O,R,{match:/\$\d+/},I];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const P=[].concat(B,_.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},oe={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:{_:[...Vl,...Zl]}},ie={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 ae={match:r.concat(/\b/,Z([...Ql,"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]},$="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.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:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),ie,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,A,S,O,R,B,{match:/\$\d+/},I,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},q,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[B,t.REGEXP_MODE,{className:"function",begin:$,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.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:l.begin,end:l.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)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[F,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[F]},ae,G,oe,ye,{match:/\$[(.]/}]}}const br="[A-Za-z$_][0-9A-Za-z$_]*",Yl=["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"],Jl=["true","false","null","undefined","NaN","Infinity"],Xl=["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"],ec=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],tc=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],nc=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],sc=[].concat(tc,Xl,ec);function Lp(t){const r=t.regex,s=(W,{after:se})=>{const ue="</"+W[0].slice(1);return W.input.indexOf(ue,se)!==-1},i=br,l={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:br,keyword:Yl,literal:Jl,built_in:sc,"variable.language":nc},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:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},S={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},O={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},R={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},B={className:"comment",variants:[t.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}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},M=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,A,S,O,R,{match:/\$\d+/},I];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const P=[].concat(B,_.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},oe={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:{_:[...Xl,...ec]}},ie={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 ae={match:r.concat(/\b/,Z([...tc,"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]},$="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.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:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),ie,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,A,S,O,R,B,{match:/\$\d+/},I,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},q,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[B,t.REGEXP_MODE,{className:"function",begin:$,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.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:l.begin,end:l.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)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[F,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[F]},ae,G,oe,ye,{match:/\$[(.]/}]}}function wo(t){const r=t.regex,s=Lp(t),i=br,l=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],d={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},g={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:l},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:br,keyword:Yl.concat(h),literal:Jl,built_in:sc.concat(l),"variable.language":nc},v={className:"meta",begin:"@"+i},I=(O,R,L)=>{const B=O.contains.findIndex(M=>M.label===R);if(B===-1)throw new Error("can not find mode to replace");O.contains.splice(B,1,L)};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",t.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 ll(t){const r=t.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:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h,v,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.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:[t.BACKSLASH_ESCAPE,v,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,v,w]},t.APOS_STRING_MODE,t.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})`}]},R={className:"comment",begin:r.lookahead(/# type:/),end:/$/,keywords:f,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},L={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:["self",h,O,I,t.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,R,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,s],scope:{1:"keyword",3:"title.function"},contains:[L]},{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,L,I]}]}}function _o(t){const r=t.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 l={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},d=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),g={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},f={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,s,l]};l.contains.push(f);const h={match:/\\"/},w={className:"string",begin:/'/,end:/'/},v={match:/\\'/},I={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,s]},_=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],A=t.SHEBANG({binary:`(${_.join("|")})`,relevance:10}),S={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.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"],R=["true","false"],L={match:/(\/[a-z._-]+)+/},B=["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:R,built_in:[...B,...M,"set","shopt",...P,...j]},contains:[A,t.SHEBANG(),S,I,d,g,L,f,h,w,v,s]}}function $p(t){const r={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},s={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],l={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:i},contains:[r,s,t.QUOTE_STRING_MODE,l,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}const Op=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.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:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.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_-]*/}}),Dp=["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"],Pp=["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"],Up=[...Dp,...Pp],Bp=["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(),zp=["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(),Fp=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Hp=["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 jp(t){const r=t.regex,s=Op(t),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l="and or not only",d=/@-?\w[\w]*(-\w+)*/,g="[a-zA-Z-][a-zA-Z0-9_-]*",f=[t.APOS_STRING_MODE,t.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:":("+zp.join("|")+")"},{begin:":(:)?("+Fp.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Hp.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:l,attribute:Bp.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...f,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+Up.join("|")+")\\b"}]}}function xo(t){const r=t.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,l={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=t.inherit(d,{begin:/\(/,end:/\)/}),f=t.inherit(t.APOS_STRING_MODE,{className:"string"}),h=t.inherit(t.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:[l]},{begin:/'/,end:/'/,contains:[l]},{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]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},l,{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 cl(t){const r=t.regex,s={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},l={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=t.inherit(w,{contains:[]}),_=t.inherit(v,{contains:[]});w.contains.push(_),v.contains.push(I);let A=[s,h];return[w,v,I,_].forEach(L=>{L.contains=L.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:"$"},l,i,h,g,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function ul(t){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]|$)/}]},l={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:[t.BACKSLASH_ESCAPE,l]},f=t.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},R=[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:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:r,keywords:{literal:r}},_,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},S,O,d,g],L=[...R];return L.pop(),L.push(f),A.contains=L,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:R}}function Gp(t){const r=t.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 qp=["disabled","aria-label","aria-expanded"],Wp=["aria-label"],Kp=["disabled","aria-selected","onClick"],Vp={__name:"NeoSelect",props:{modelValue:{default:""},options:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:"请选择"}},emits:["update:modelValue","change"],setup(t,{emit:r}){const s=t,i=r,l=re(null),d=re(null),g=re(!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 oe,o;if(s.disabled||g.value)return;g.value=!0,await Ye();const P=[...((oe=d.value)==null?void 0:oe.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=l.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 R(M,P){var o,ie;const j=[...((o=d.value)==null?void 0:o.querySelectorAll("button:not(:disabled)"))||[]];if(!j.length)return;const F=j.indexOf(document.activeElement),oe=P==="start"?0:P==="end"?j.length-1:(F+P+j.length)%j.length;M.preventDefault(),(ie=j[oe])==null||ie.focus()}function L(M){M.key==="ArrowDown"?R(M,1):M.key==="ArrowUp"?R(M,-1):M.key==="Home"?R(M,"start"):M.key==="End"?R(M,"end"):M.key==="Escape"?(M.preventDefault(),M.stopPropagation(),I(),Ye(()=>{var P,j;return(j=(P=l.value)==null?void 0:P.querySelector(".neo-select-trigger"))==null?void 0:j.focus()})):M.key==="Tab"&&I()}function B(M){var P;g.value&&!((P=l.value)!=null&&P.contains(M.target))&&I()}return Fo(()=>document.addEventListener("pointerdown",B)),Jt(()=>document.removeEventListener("pointerdown",B)),(M,P)=>(m(),b("span",{ref_key:"root",ref:l,class:Q(["neo-select",{open:g.value,disabled:t.disabled}])},[a("button",{type:"button",class:"neo-select-trigger",disabled:t.disabled,"aria-label":t.ariaLabel,"aria-haspopup":"listbox","aria-expanded":g.value,"aria-controls":f,onClick:A,onKeydown:O},[a("span",null,x(v.value),1)],40,qp),g.value?(m(),b("span",{key:0,id:f,ref_key:"menu",ref:d,class:"neo-select-menu",role:"listbox","aria-label":t.ariaLabel,onKeydown:L},[(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,t.modelValue)}),"aria-selected":Object.is(j.value,t.modelValue),onClick:F=>S(j)},x(j.label),11,Kp))),128))],40,Wp)):C("",!0)],2))}},sr=vl(Vp,[["__scopeId","data-v-edb5aaac"]]),Zp=["aria-busy"],Qp={class:"prompt-config-toolbar"},Yp={class:"prompt-config-scope"},Jp={class:"prompt-config-actions"},Xp=["disabled"],eh=["disabled"],th=["disabled"],nh={class:"prompt-config-mode"},sh=["disabled"],rh={key:0,value:"legacy_full_override"},oh={class:"prompt-config-note"},ih={key:0,class:"prompt-config-note",role:"status"},ah={key:1,class:"runtime-context-empty",role:"status"},lh=["disabled"],ch={key:3,class:"prompt-config-preview"},uh={key:4,class:"prompt-config-preview"},dh={key:5,class:"prompt-config-error",role:"alert"},gh={__name:"PromptConfigEditor",props:{endpoint:{type:String,required:!0},session:{type:Boolean,default:!1},runtimePrompt:{type:Object,default:void 0}},emits:["saved"],setup(t,{emit:r}){const s=t,i=r,l=re(""),d=re(""),g=re(""),f=re(!1),h=re("append"),w=re("append"),v=re(!1),I=re(""),_=re(!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=re(!1),R=re(!1),L=re(!1),B=re("");let M=0,P;const j=V(()=>l.value!==d.value||s.session&&h.value!==w.value),F=V(()=>L.value&&j.value&&!!l.value.trim()&&!O.value&&!R.value);function oe(G,Z){const ae=String((G==null?void 0:G.errorCode)||"");return ae.includes("CONFLICT")?"配置已更新,请重新加载":ae.includes("INVALID")?"提示词内容无效":ae.includes("TOO_LARGE")?"提示词内容过长":ae.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");l.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,L.value=!0}async function ie(){if(R.value)return;P==null||P.abort(),P=new AbortController;const G=++M,Z=s.endpoint;O.value=!0,B.value="";try{const ae=await ke(Z,{cache:"no-store",signal:P.signal}),ne=await ae.json();if(G!==M||Z!==s.endpoint)return;if(!ae.ok||(ne==null?void 0:ne.ok)===!1||ne!=null&&ne.error){B.value=oe(ne,"加载失败");return}o(ne)}catch(ae){G===M&&(ae==null?void 0:ae.name)!=="AbortError"&&(B.value="加载失败")}finally{G===M&&(O.value=!1)}}async function de(G=!1){if(R.value||O.value||!L.value||!G&&!F.value||!G&&v.value&&h.value!=="legacy_full_override"&&!window.confirm("转换后将重新合成全局和工具上下文。请确认编辑框只保留你需要的自定义指令,避免重复注入旧内容。"))return;const Z=M,ae=s.endpoint;R.value=!0,B.value="";try{const ne=await ke(ae,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(G?{reset:!0,revision:g.value}:{content:l.value,revision:g.value,...s.session?{mode:h.value}:{}}),signal:P==null?void 0:P.signal}),ye=await ne.json();if(Z!==M||ae!==s.endpoint)return;if(!ne.ok||(ye==null?void 0:ye.ok)===!1||ye!=null&&ye.error){B.value=oe(ye,"保存失败");return}o(ye),i("saved",ye)}catch(ne){Z===M&&(ne==null?void 0:ne.name)!=="AbortError"&&(B.value="保存失败")}finally{Z===M&&(R.value=!1)}}return Pe(()=>s.endpoint,()=>{M+=1,P==null||P.abort(),l.value="",d.value="",g.value="",L.value=!1,R.value=!1,f.value=!1,h.value=w.value="append",v.value=!1,I.value="",_.value=!1,ie()},{immediate:!0}),Jt(()=>{M+=1,P==null||P.abort()}),(G,Z)=>{var ae,ne;return m(),b("form",{class:"prompt-config-editor","aria-busy":O.value||R.value,onSubmit:Z[5]||(Z[5]=he(ye=>de(),["prevent"]))},[a("div",Qp,[a("span",Yp,x(t.session?"当前会话":"系统提示词"),1),a("div",Jp,[a("button",{type:"button",class:"mini-button",disabled:O.value||R.value,onClick:ie},"重新加载",8,Xp),t.session?(m(),b("button",{key:0,type:"button",class:"mini-button",disabled:!L.value||!f.value||O.value||R.value,onClick:Z[0]||(Z[0]=ye=>de(!0))},"恢复默认",8,eh)):C("",!0),a("button",{type:"submit",class:"primary",disabled:!F.value},x(R.value?"保存中":"保存"),9,th)])]),t.session&&L.value?(m(),b(Y,{key:0},[a("label",nh,[Z[8]||(Z[8]=Yn("会话指令模式 ",-1)),Oe(a("select",{"onUpdate:modelValue":Z[1]||(Z[1]=ye=>h.value=ye),"aria-label":"会话指令模式",disabled:O.value||R.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",rh,"旧版完整覆盖(不继承)")):C("",!0)],8,sh),[[pg,h.value]])]),a("p",oh,x(f.value?"已配置会话指令":"当前继承全局;下方仅编辑会话追加指令")+"。工具开关只更新运行时能力说明,不改写自定义文本。",1),v.value?(m(),b("p",ih,"旧版完整覆盖保留了原文,可能包含过期的工具说明。请手动保留自定义指令并切换模式,或恢复默认;不会自动删改旧内容。")):C("",!0)],64)):C("",!0),O.value&&!L.value?(m(),b("div",ah,"加载中")):Oe((m(),b("textarea",{key:2,"onUpdate:modelValue":Z[2]||(Z[2]=ye=>l.value=ye),class:"prompt-config-textarea","aria-label":"系统提示词",disabled:!L.value||O.value||R.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,lh)),[[nt,l.value]]),t.session&&L.value?(m(),b("details",ch,[a("summary",null,"当前有效上下文(只读)"+x((ne=(ae=t.runtimePrompt)==null?void 0:ae.sessionPrompt)!=null&&ne.deferred?" · 有待生效修改":""),1),a("pre",null,x(S.value),1)])):C("",!0),t.session&&A.value?(m(),b("details",uh,[Z[9]||(Z[9]=a("summary",null,"已保存配置的合成预览(下一轮生效)",-1)),a("pre",null,x(I.value),1)])):C("",!0),B.value?(m(),b("div",dh,x(B.value),1)):C("",!0)],40,Zp)}}},dl=vl(gh,[["__scopeId","data-v-41954d08"]]),kr=1,Do=2,ti=3,ni=4,si=5,ri=6,oi=7,ii=8,yr=9,vr=10,Po=11,cr=12,Xn=13,es=14,ts=15,ns=16,hn=17,Uo=18,Xe=19,ss=20,$t=21,rc=22,rs=23,wr=24,yn=25,oc=26,Bo=27,ur=28,dr=29,wt=30,ht=31,rr=101,gl=102,ic=103,fl=104,So=105,mn=1,ai=2,ac=4,lc=8,cc=16;function fh(t){switch(t){case mn:return"href";case ai:return"src";case ac:return"class";case lc:return"checked";case cc:return"start"}}const ph=t=>{switch(t){case 1:return ti;case 2:return ni;case 3:return si;case 4:return ri;case 5:return oi;default:return ii}},hh=ph,pl=24;function mh(t){const r=new Uint32Array(pl);return r[0]=kr,{renderer:t,text:"",pending:"",tokens:r,len:0,token:kr,fence_end:0,blockquote_idx:0,hr_char:"",hr_chars:0,fence_start:0,spaces:new Uint8Array(pl),indent:"",indent_len:0,table_state:0}}function hl(t){t.pending.length>0&&De(t,`
|
|
67
|
+
`)}function be(t){t.text.length!==0&&(console.assert(t.len>0,"Never adding text to root"),t.renderer.add_text(t.renderer.data,t.text),t.text="")}function Ae(t){console.assert(t.len>0,"No nodes to end"),t.len-=1,t.token=t.tokens[t.len],t.renderer.end_token(t.renderer.data)}function ve(t,r){(t.tokens[t.len]===wr||t.tokens[t.len]===rs)&&r!==yn&&Ae(t),t.len+=1,t.tokens[t.len]=r,t.token=r,t.renderer.add_token(t.renderer.data,r)}function bh(t,r,s){for(;s<=t.len;){if(t.tokens[s]===r)return s;s+=1}return-1}function Qt(t,r){for(t.fence_start=0;t.len>r;)Ae(t)}function or(t,r){let s=0;for(let i=0;i<=t.len&&(r-=t.spaces[i],!(r<0));i+=1)switch(t.tokens[i]){case yr:case vr:case ss:case yn:s=i;break}for(;t.len>s;)Ae(t);return r}function Eo(t,r){let s=-1,i=-1;for(let l=t.blockquote_idx+1;l<=t.len;l+=1)if(t.tokens[l]===yn){if(t.indent_len<t.spaces[l]){i=-1;break}i=l}else t.tokens[l]===r&&(s=l);return i===-1?s===-1?(Qt(t,t.blockquote_idx),ve(t,r),!0):(Qt(t,s),!1):(Qt(t,i),ve(t,r),!0)}function To(t,r){ve(t,yn),t.spaces[t.len]=t.indent_len+r,_t(t),t.token=ic}function _t(t){t.indent="",t.indent_len=0,t.pending=""}function zo(t){switch(t){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 kh(t){switch(t){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 yh(t){return zo(t)||kh(t)}function De(t,r){for(const s of r){if(t.token===rr){switch(s){case" ":t.indent_len+=1;continue;case" ":t.indent_len+=4;continue}let l=or(t,t.indent_len);t.indent_len=0,t.token=t.tokens[t.len],l>0&&De(t," ".repeat(l))}const i=t.pending+s;switch(t.token){case $t:case kr:case ss:case wr:case rs:switch(console.assert(t.text.length===0,"Root should not have any text"),t.pending[0]){case void 0:t.pending=s;continue;case" ":console.assert(t.pending.length===1),t.pending=s,t.indent+=" ",t.indent_len+=1;continue;case" ":console.assert(t.pending.length===1),t.pending=s,t.indent+=" ",t.indent_len+=4;continue;case`
|
|
68
|
+
`:if(console.assert(t.pending.length===1),t.tokens[t.len]===yn&&t.token===$t){Ae(t),_t(t),t.pending=s;continue}Qt(t,t.blockquote_idx),_t(t),t.blockquote_idx=0,t.fence_start=0,t.pending=s;continue;case"#":switch(s){case"#":if(t.pending.length<6){t.pending=i;continue}break;case" ":or(t,t.indent_len),ve(t,hh(t.pending.length)),_t(t);continue}break;case">":{const d=bh(t,ss,t.blockquote_idx+1);d===-1?(Qt(t,t.blockquote_idx),t.blockquote_idx+=1,t.fence_start=0,ve(t,ss)):t.blockquote_idx=d,_t(t),t.pending=s;continue}case"-":case"*":case"_":if(t.hr_chars===0&&(console.assert(t.pending.length===1,"Pending should be one character"),t.hr_chars=1,t.hr_char=t.pending),t.hr_chars>0){switch(s){case t.hr_char:t.hr_chars+=1,t.pending=i;continue;case" ":t.pending=i;continue;case`
|
|
69
|
+
`:if(t.hr_chars<3)break;or(t,t.indent_len),t.renderer.add_token(t.renderer.data,rc),t.renderer.end_token(t.renderer.data),_t(t),t.hr_chars=0;continue}t.hr_chars=0}if(t.pending[0]!=="_"&&t.pending[1]===" "){Eo(t,rs),To(t,2),De(t,i.slice(2));continue}break;case"`":if(t.pending.length<3){if(s==="`"){t.pending=i,t.fence_start=i.length;continue}t.fence_start=0;break}switch(s){case"`":t.pending.length===t.fence_start?(t.pending=i,t.fence_start=i.length):(ve(t,Do),_t(t),t.fence_start=0,De(t,i));continue;case`
|
|
70
|
+
`:{or(t,t.indent_len),ve(t,vr),t.pending.length>t.fence_start&&t.renderer.set_attr(t.renderer.data,ac,t.pending.slice(t.fence_start)),_t(t),t.token=rr;continue}default:t.pending=i;continue}case"+":if(s!==" ")break;Eo(t,rs),To(t,2);continue;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":if(t.pending[t.pending.length-1]==="."){if(s!==" ")break;Eo(t,wr)&&t.pending!=="1."&&t.renderer.set_attr(t.renderer.data,cc,t.pending.slice(0,-1)),To(t,t.pending.length+1);continue}else{const d=s.charCodeAt(0);if(d===46||zo(d)){t.pending=i;continue}}break;case"|":Qt(t,t.blockquote_idx),ve(t,Bo),ve(t,ur),t.pending="",De(t,s);continue}let l=i;if(t.token===$t)t.token=t.tokens[t.len],t.renderer.add_token(t.renderer.data,$t),t.renderer.end_token(t.renderer.data);else if(t.indent_len>=4){let d=0;for(;d<4;d+=1)if(t.indent[d]===" "){d=d+1;break}l=t.indent.slice(d)+i,ve(t,yr)}else ve(t,Do);_t(t),De(t,l);continue;case Bo:if(t.table_state===1)switch(s){case"-":case" ":case"|":case":":t.pending=i;continue;case`
|
|
71
|
+
`:t.table_state=2,t.pending="";continue;default:Ae(t),t.table_state=0;break}else switch(t.pending){case"|":ve(t,ur),t.pending="",De(t,s);continue;case`
|
|
72
|
+
`:Ae(t),t.pending="",t.table_state=0,De(t,s);continue}break;case ur:switch(t.pending){case"":break;case"|":ve(t,dr),Ae(t),t.pending="",De(t,s);continue;case`
|
|
73
|
+
`:Ae(t),t.table_state=Math.min(t.table_state+1,2),t.pending="",De(t,s);continue;default:ve(t,dr),De(t,s);continue}break;case dr:if(t.pending==="|"){be(t),Ae(t),t.pending="",De(t,s);continue}break;case yr:switch(i){case`
|
|
74
|
+
`:case`
|
|
75
|
+
`:case`
|
|
76
|
+
`:case`
|
|
77
|
+
`:case`
|
|
78
|
+
`:t.text+=`
|
|
79
|
+
`,t.pending="";continue;case`
|
|
80
|
+
`:case`
|
|
81
|
+
`:case`
|
|
82
|
+
`:case`
|
|
83
|
+
`:t.pending=i;continue;default:t.pending.length!==0?(be(t),Ae(t),t.pending=s):t.text+=s;continue}case vr:switch(s){case"`":t.pending=i;continue;case`
|
|
84
|
+
`:if(i.length===t.fence_start+t.fence_end+1){be(t),Ae(t),t.pending="",t.fence_start=0,t.fence_end=0,t.token=rr;continue}t.token=rr;break;case" ":if(t.pending[0]===`
|
|
85
|
+
`){t.pending=i,t.fence_end+=1;continue}break}t.text+=t.pending,t.pending=s,t.fence_end=1;continue;case Po:switch(s){case"`":i.length===t.fence_start+ +(t.pending[0]===" ")?(be(t),Ae(t),t.pending="",t.fence_start=0):t.pending=i;continue;case`
|
|
86
|
+
`:t.text+=t.pending,t.pending="",t.token=$t,t.blockquote_idx=0,be(t);continue;case" ":t.text+=t.pending,t.pending=s;continue;default:t.text+=i,t.pending="";continue}case ic:switch(t.pending.length){case 0:if(s!=="[")break;t.pending=i;continue;case 1:if(s!==" "&&s!=="x")break;t.pending=i;continue;case 2:if(s!=="]")break;t.pending=i;continue;case 3:if(s!==" ")break;t.renderer.add_token(t.renderer.data,oc),t.pending[1]==="x"&&t.renderer.set_attr(t.renderer.data,lc,""),t.renderer.end_token(t.renderer.data),t.pending=" ";continue}t.token=t.tokens[t.len],t.pending="",De(t,i);continue;case es:case ts:{let d="*",g=cr;if(t.token===ts&&(d="_",g=Xn),d===t.pending){if(be(t),d===s){Ae(t),t.pending="";continue}ve(t,g),t.pending=s;continue}break}case cr:case Xn:{let d="*",g=es;switch(t.token===Xn&&(d="_",g=ts),t.pending){case d:d===s?t.tokens[t.len-1]===g?t.pending=i:(be(t),ve(t,g),t.pending=""):(be(t),Ae(t),t.pending=s);continue;case d+d:const f=t.token;be(t),Ae(t),Ae(t),d!==s?(ve(t,f),t.pending=s):t.pending="";continue}break}case ns:if(i==="~~"){be(t),Ae(t),t.pending="";continue}break;case So:s===`
|
|
87
|
+
`?(be(t),ve(t,wt),t.pending=""):(t.token=t.tokens[t.len],t.pending[0]==="\\"?t.text+="[":t.text+="$$",t.pending="",De(t,s));continue;case wt:if(i==="\\]"||i==="$$"){be(t),Ae(t),t.pending="";continue}break;case ht:if(i==="\\)"||t.pending[0]==="$"){be(t),Ae(t),s===")"?t.pending="":t.pending=s;continue}break;case gl:i==="http://"||i==="https://"?(be(t),ve(t,Uo),t.pending=i,t.text=i):"http:/"[t.pending.length]===s||"https:/"[t.pending.length]===s?t.pending=i:(t.token=t.tokens[t.len],De(t,s));continue;case hn:case Xe:if(t.pending==="]"){be(t),s==="("?t.pending=i:(Ae(t),t.pending=s);continue}if(t.pending[0]==="]"&&t.pending[1]==="("){if(s===")"){const d=t.token===hn?mn:ai,g=t.pending.slice(2);t.renderer.set_attr(t.renderer.data,d,g),Ae(t),t.pending=""}else t.pending+=s;continue}break;case Uo:s===" "||s===`
|
|
88
|
+
`||s==="\\"?(t.renderer.set_attr(t.renderer.data,mn,t.pending),be(t),Ae(t),t.pending=s):(t.text+=s,t.pending=i);continue;case fl:if(i.startsWith("<br")){if(i.length===3||s===" "||s==="/"&&(i.length===4||t.pending[t.pending.length-1]===" ")){t.pending=i;continue}if(s===">"){be(t),t.token=t.tokens[t.len],t.renderer.add_token(t.renderer.data,$t),t.renderer.end_token(t.renderer.data),t.pending="";continue}}t.token=t.tokens[t.len],t.text+="<",t.pending=t.pending.slice(1),De(t,s);continue}switch(t.pending[0]){case"\\":if(t.token===Xe||t.token===wt||t.token===ht)break;switch(s){case"(":be(t),ve(t,ht),t.pending="";continue;case"[":t.token=So,t.pending=i;continue;case`
|
|
89
|
+
`:t.pending=s;continue;default:let l=s.charCodeAt(0);t.pending="",t.text+=zo(l)||l>=65&&l<=90||l>=97&&l<=122?i:s;continue}case`
|
|
90
|
+
`:switch(t.token){case Xe:case wt:case ht:break;case ti:case ni:case si:case ri:case oi:case ii:be(t),Qt(t,t.blockquote_idx),t.blockquote_idx=0,t.pending=s;continue;default:be(t),t.pending=s,t.token=$t,t.blockquote_idx=0;continue}break;case"<":if(t.token!==Xe&&t.token!==wt&&t.token!==ht){be(t),t.pending=i,t.token=fl;continue}break;case"`":if(t.token===Xe)break;s==="`"?(t.fence_start+=1,t.pending=i):(t.fence_start+=1,be(t),ve(t,Po),t.text=s===" "||s===`
|
|
91
|
+
`?"":s,t.pending="");continue;case"_":case"*":{if(t.token===Xe||t.token===wt||t.token===ht||t.token===es)break;let l=cr,d=es;const g=t.pending[0];if(g==="_"&&(l=Xn,d=ts),t.pending.length===1){if(g===s){t.pending=i;continue}if(s!==" "&&s!==`
|
|
92
|
+
`){be(t),ve(t,l),t.pending=s;continue}}else{if(g===s){be(t),ve(t,d),ve(t,l),t.pending="";continue}if(s!==" "&&s!==`
|
|
93
|
+
`){be(t),ve(t,d),t.pending=s;continue}}break}case"~":if(t.token!==Xe&&t.token!==ns){if(t.pending==="~"){if(s==="~"){t.pending=i;continue}}else if(s!==" "&&s!==`
|
|
94
|
+
`){be(t),ve(t,ns),t.pending=s;continue}}break;case"$":if(t.token!==Xe&&t.token!==ns&&t.pending==="$")if(s==="$"){t.token=So,t.pending=i;continue}else{if(yh(s.charCodeAt(0)))break;be(t),ve(t,ht),t.pending=s;continue}break;case"[":if(t.token!==Xe&&t.token!==hn&&t.token!==wt&&t.token!==ht&&s!=="]"){be(t),ve(t,hn),t.pending=s;continue}break;case"!":if(t.token!==Xe&&s==="["){be(t),ve(t,Xe),t.pending="";continue}break;case" ":if(t.pending.length===1&&s===" ")continue;break}if(t.token!==Xe&&t.token!==hn&&t.token!==wt&&t.token!==ht&&s==="h"&&(t.pending===" "||t.pending==="")){t.text+=t.pending,t.pending=s,t.token=gl;continue}t.text+=t.pending,t.pending=s}be(t)}function vh(t){return{add_token:wh,end_token:_h,add_text:xh,set_attr:uc,data:{nodes:[t,,,,,],index:0}}}function wh(t,r){var l;let s=t.nodes[t.index],i;switch(r){case kr:return;case ss:i=document.createElement("blockquote");break;case Do:i=document.createElement("p");break;case $t:i=document.createElement("br");break;case rc:i=document.createElement("hr");break;case ti:i=document.createElement("h1");break;case ni:i=document.createElement("h2");break;case si:i=document.createElement("h3");break;case ri:i=document.createElement("h4");break;case oi:i=document.createElement("h5");break;case ii:i=document.createElement("h6");break;case cr:case Xn:i=document.createElement("em");break;case es:case ts:i=document.createElement("strong");break;case ns:i=document.createElement("s");break;case Po:i=document.createElement("code");break;case Uo:case hn:i=document.createElement("a");break;case Xe:i=document.createElement("img");break;case rs:i=document.createElement("ul");break;case wr:i=document.createElement("ol");break;case yn:i=document.createElement("li");break;case oc:let d=i=document.createElement("input");d.type="checkbox",d.disabled=!0;break;case yr:case vr:s=s.appendChild(document.createElement("pre")),i=document.createElement("code");break;case Bo:i=document.createElement("table");break;case ur: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 dr:i=document.createElement(((l=s.parentElement)==null?void 0:l.tagName)==="THEAD"?"th":"td");break;case wt:i=document.createElement("equation-block");break;case ht:i=document.createElement("equation-inline");break}t.nodes[++t.index]=s.appendChild(i)}function _h(t){t.index-=1}function xh(t,r){t.nodes[t.index].appendChild(document.createTextNode(r))}function uc(t,r,s){t.nodes[t.index].setAttribute(fh(r),s)}const Sh={__name:"StreamingMarkdown",props:{text:{type:String,default:""},exposedResources:{type:Array,default:()=>[]}},setup(t){const r=t,s=re(null);let i,l="",d="",g;function f(){g&&clearTimeout(g),g=void 0}function h(){f(),g=setTimeout(()=>{g=void 0,i!=null&&i.pending&&l&&S(`${l}
|
|
95
|
+
`,l)},80)}function w(O){const R=String(O||"").trim();return R?/^(?:https?:|mailto:|\/|#)/i.test(R)?!0:!/^[a-z][a-z\d+.-]*:/i.test(R):!1}function v(O){const R=String(O||"").trim();return r.exposedResources.find(L=>String((L==null?void 0:L.reference)||"").trim()===R)}function I(O){const R=Number(O);if(!Number.isFinite(R)||R<=0)return"";const L=["B","KB","MB","GB"];let B=R,M=0;for(;B>=1024&&M<L.length-1;)B/=1024,M+=1;return`${B>=10||M===0?Math.round(B):B.toFixed(1)}${L[M]}`}function _(O){return{...vh(O),set_attr(L,B,M){const P=B===mn?v(M):void 0,j=(P==null?void 0:P.url)||M;if(!((B===mn||B===ai)&&!w(j))&&(uc(L,B,j),B===mn)){const F=L.nodes[L.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 oe=I(P.sizeBytes);oe&&(F.dataset.resourceSize=`(${oe})`)}}else F.setAttribute("target","_blank"),F.setAttribute("rel","noreferrer noopener")}}}}function A(O){if(!i)return;const R=String(O||"");if(f(),!R.startsWith(l)||d!==l){S(R),h();return}const L=R.slice(l.length);l=R,d=R,L&&De(i,L),h()}function S(O=r.text,R=O){const L=s.value;L&&(i&&hl(i),L.replaceChildren(),i=mh(_(L)),d=String(O||""),l=String(R||""),d&&De(i,d))}return Fo(()=>{S(),h()}),Pe(()=>r.text,A,{flush:"post"}),Pe(()=>r.exposedResources,()=>S(),{deep:!0,flush:"post"}),Jt(()=>{f(),i&&hl(i),i=void 0}),(O,R)=>(m(),b("div",{ref_key:"root",ref:s,class:"streaming-markdown-content"},null,512))}},Eh=["onDblclick"],Th=["aria-label","onClick"],Ih=["title","onClick"],Ah=["aria-label","onClick"],Ch=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(t,{emit:r}){const s=r;return(i,l)=>{const d=hg("CwdTreeNode",!0);return m(!0),b(Y,null,ce(t.nodes,g=>(m(),b("div",{key:g.path,class:"cwd-tree-branch"},[a("div",{class:Q(["cwd-tree-row",{selected:t.selectedPath===g.path}]),style:ft({"--cwd-tree-level":t.level}),onDblclick:f=>s("toggle",g)},[a("button",{type:"button",class:"cwd-tree-toggle","aria-label":t.expanded[g.path]?"收起":"展开",onClick:he(f=>s("toggle",g),["stop"])},x(t.expanded[g.path]?"▾":"▸"),9,Th),a("button",{type:"button",class:"cwd-tree-name",title:g.path,onClick:f=>s("select",g)},[l[3]||(l[3]=a("span",{"aria-hidden":"true"},"◇",-1)),a("strong",null,x(g.name),1)],8,Ih),t.allowDelete?(m(),b("button",{key:0,type:"button",class:"cwd-tree-delete","aria-label":`删除 ${g.name}`,onClick:he(f=>s("delete",g),["stop"])},"×",8,Ah)):C("",!0)],46,Eh),t.expanded[g.path]&&t.children[g.path]?(m(),Be(d,{key:0,nodes:t.children[g.path],children:t.children,expanded:t.expanded,"selected-path":t.selectedPath,level:t.level+1,onToggle:l[0]||(l[0]=f=>s("toggle",f)),onSelect:l[1]||(l[1]=f=>s("select",f)),onDelete:l[2]||(l[2]=f=>s("delete",f))},null,8,["nodes","children","expanded","selected-path","level"])):C("",!0)]))),128)}}});function Mh(t,r=Date.now()){const s=typeof(t==null?void 0:t.startedAt)=="string"?Date.parse(t.startedAt):NaN;if(!Number.isSafeInteger(s)||s<0)return;if(t.status==="running"){const l=r-s;return Number.isSafeInteger(l)&&l>=0?l:void 0}if(!["completed","failed","killed"].includes(t.status))return;const i=typeof t.completedAt=="string"?Date.parse(t.completedAt):NaN;return Number.isSafeInteger(i)&&i>=s&&Number.isSafeInteger(t.durationMs)&&t.durationMs>=0&&t.durationMs===i-s?t.durationMs:void 0}function Rh(t){return t!=null&&t.live?{key:"running",label:"执行中"}:(t==null?void 0:t.titleStatus)==="failure"||(t==null?void 0:t.titleStatus)==="failed"||(t==null?void 0:t.kind)==="error"||t!=null&&t.toolError?{key:"failed",label:"失败"}:(t==null?void 0:t.titleStatus)==="success"?{key:"completed",label:"完成"}:{key:"unknown",label:"未提供"}}function Nh(t,r){const s=String(t||"").trim();if(!s)return"模型未配置";const i=String(r||"").trim();return i?`${s}(${i})`:s}function Lh(t,r){const s=t.map(g=>Math.max(1,Number(g.size)||0)),i=s.reduce((g,f)=>g+f,0);let l=0,d=0;return r(0),{update(g,f){const h=Math.floor(100*(l+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),l+=s[g]},succeed(){r(100)},fail(){r(0)}}}async function $h(t,r,s){var f,h;const i=new URL(t,((f=globalThis.location)==null?void 0:f.href)||"http://localhost");i.pathname+="/chunks";const l=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 l(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 Oh(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(R=>setTimeout(R,400*(A+1)));const O=await l(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 l(w,"POST");if(!((h=v.file)!=null&&h.absolutePath))throw new Error("上传完成响应无效");return v}catch(w){throw await l(i,"DELETE").catch(()=>{}),w}}function Oh(t,r,s,i){return new Promise((l,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})`);l(f)}catch(f){d(f)}},g.onerror=()=>d(new Error("上传失败:网络连接异常")),g.onabort=()=>d(new Error("上传已取消")),g.ontimeout=()=>d(new Error("分片上传超时")),g.open("PATCH",t),g.setRequestHeader("Content-Type","application/octet-stream"),g.setRequestHeader("X-Upload-Offset",String(s)),g.send(r)})}function Dh({maxEntries:t=64,timeoutMs:r=15e3,createImage:s,fetchOriginal:i=s?null:(l,d)=>ke(l,{cache:"no-store",signal:d})}={}){if(s||(s=()=>new Image),!Number.isInteger(t)||t<1||t>512)throw new RangeError("maxEntries must be 1..512");if(!Number.isFinite(r)||r<1)throw new RangeError("timeoutMs must be positive");const l=new Map;let d="";const g=(_,A)=>JSON.stringify([_,A]);function f(_){const A=l.get(_);l.delete(_),A==null||A.cancel()}function h(){for(const _ of l.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},R=Z=>Object.freeze({...O,state:Z});if(!_||_!==d)return Promise.resolve(R("stale"));const L=g(_,A);if(S===!1)return f(L),Promise.resolve(R("unavailable"));if(typeof A!="string"||!A.trim())return Promise.resolve(R("unknown"));const B=l.get(L);if(B)return l.delete(L),l.set(L,B),B.promise;for(;l.size>=t;)f(l.keys().next().value);let M,P,j,F=!1,oe;const o=new AbortController,ie=new Promise(Z=>{oe=Z}),de=Z=>{F||(F=!0,clearTimeout(P),o.abort(),j&&URL.revokeObjectURL(j),oe(Object.freeze(Z)))},G={promise:ie,cancel:()=>{de(R("stale")),M&&(M.src="")}};return l.set(L,G),P=setTimeout(()=>{de(R("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 ae=M.naturalWidth,ne=M.naturalHeight;Number.isInteger(ae)&&ae>0&&Number.isInteger(ne)&&ne>0?de({...O,state:"actual",width:ae,height:ne,source:"original-decode"}):de(R("unknown"))}catch{de(R("unknown"))}})(),ie}return{setSession:w,load:I,invalidate:v,clear:h,get size(){return l.size}}}function Io(t,r){const s=typeof t=="string"&&/^(\d+)x(\d+)$/.exec(t),i=(r==null?void 0:r.state)==="actual"&&Number.isInteger(r.width)&&r.width>0&&Number.isInteger(r.height)&&r.height>0;return{requested:t==="auto"?"auto(自动策略)":typeof t=="string"&&t?t:"未提供",actual:i?`${r.width} × ${r.height}`:(r==null?void 0:r.state)==="unavailable"?"不可获取":"未知",mismatch:!!(i&&s&&(+s[1]!==r.width||+s[2]!==r.height))}}function Ao(t,r=""){var l;const s=(t==null?void 0:t.originalSrc)||((l=t==null?void 0:t.original)==null?void 0:l.src)||(t==null?void 0:t.originalUrl)||r;if(s)return s;const i=t==null?void 0:t.src;if(typeof i!="string")return"";if(/^data:image\//i.test(i))return i;try{const d=new URL(i,"http://localhost");if(/\/api\/images\/(?:by-id\/[^/]+|[^/]+\/\d+)$/.test(d.pathname)&&!d.searchParams.has("thumbnail"))return i}catch{}return""}function Ph(t,r){var l;const s=(l=t==null?void 0:t.imageResult)==null?void 0:l.images;if(!Array.isArray(s)||!(r!=null&&r.label))return;const i=s.filter(d=>(d==null?void 0:d.label)===r.label);return i.length===1?i[0]:void 0}function ml(t){return t===!0?"有":t===!1?"无":"未知"}const Uh={class:"shell"},Bh={class:"sidebar"},zh={class:"brand-row logo-only"},Fh=["aria-label","aria-pressed","title"],Hh={class:"nav"},jh=["title"],Gh={class:"session-entry-main"},qh={key:0,"aria-hidden":"true"},Wh={key:0,class:"sidebar-card prompt-stack"},Kh={class:"prompt-stack-head"},Vh={class:"prompt-list"},Zh={key:0,class:"prompt-list-empty"},Qh={key:1,class:"prompt-list-empty"},Yh=["onDragstart","onDblclick"],Jh={class:"prompt-card-body"},Xh={class:"prompt-card-actions"},em=["onClick"],tm=["onClick"],nm={key:1,class:"sidebar-footer"},sm=["title"],rm={class:"workspace"},om={class:"topbar"},im={class:"top-actions"},am=["onClick"],lm=["onKeydown"],cm=["title"],um=["aria-label","aria-pressed","title"],dm={key:0,class:"content-grid chat-grid"},gm={class:"chat-panel"},fm={key:0,class:"runtime-context-bar"},pm={key:0,class:"runtime-context-bar-actions"},hm={key:2,class:"runtime-context-syncing"},mm={key:1,class:"runtime-context-bar project-context-bar"},bm={class:"runtime-context-bar-actions"},km=["data-index"],ym={class:"tool-group-shell"},vm=["aria-expanded","onClick"],wm={class:"tool-group-label"},_m={class:"tool-group-label-name"},xm={key:0,class:"tool-group-label-count"},Sm={key:1,class:"tool-group-label-separator"},Em={key:1,class:"tool-group-lines"},Tm=["open"],Im={class:"reasoning-reveal"},Am={class:"reasoning-paper"},Cm=["innerHTML"],Mm=["onClick","onKeydown"],Rm={class:"compaction-context-actions"},Nm={key:0},Lm={class:"tool-result-title-row"},$m={class:"tool-result-name"},Om={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},Dm={class:"tool-result-detail-row"},Pm={key:0,class:"tool-result-primary"},Um={key:1},Bm={key:2,class:"tool-group-shell"},zm=["aria-expanded","onClick"],Fm={class:"tool-group-label"},Hm={class:"tool-group-label-name"},jm={key:0,class:"tool-group-label-count"},Gm={key:1,class:"tool-group-label-separator"},qm={key:0,class:"tool-group-purposes"},Wm={key:3,class:"tool-result-primary"},Km={key:0},Vm={key:4,class:"tool-result-previews"},Zm={class:"tool-result-preview kind-list"},Qm={tabindex:"0"},Ym={key:5,class:"tool-result-previews"},Jm={class:"tool-result-preview kind-code"},Xm={tabindex:"0"},eb={key:6,class:"tool-result-previews"},tb={tabindex:"0"},nb={key:3},sb={key:0,class:"message-head"},rb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},ob=["innerHTML"],ib={key:0,class:"message-body compaction-message-body"},ab=["onClick","onKeydown"],lb={class:"compaction-context-actions"},cb={key:0},ub={key:1,class:"message-body reasoning-body"},db=["open"],gb={key:0,class:"reasoning-elapsed"},fb={class:"reasoning-reveal"},pb={class:"reasoning-paper"},hb=["innerHTML"],mb={key:2,class:"message-body"},bb={key:0,class:"message-head"},kb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},yb={key:1},vb={key:2,class:"elapsed-pill"},wb={key:1,class:"image2-result-shell"},_b=["innerHTML"],xb={key:0,class:"message-image-attachments image2-output-images"},Sb=["data-preview-src","aria-label"],Eb=["src","alt"],Tb={key:1,class:"image-unavailable-placeholder",role:"status"},Ib={class:"image-card-actions"},Ab=["href","download"],Cb=["onClick"],Mb=["onClick"],Rb={class:"tool-result-title-row"},Nb={class:"tool-result-name"},Lb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},$b={class:"tool-result-detail-row"},Ob={key:0,class:"tool-result-primary"},Db={key:1},Pb={key:2,class:"tool-group-shell"},Ub=["aria-expanded","onClick"],Bb={class:"tool-group-label"},zb={class:"tool-group-label-name"},Fb={key:0,class:"tool-group-label-count"},Hb={key:1,class:"tool-group-label-separator"},jb={key:0,class:"tool-group-purposes"},Gb={key:3,class:"tool-result-primary"},qb={key:0},Wb={key:4,class:"tool-result-previews"},Kb={class:"tool-result-preview kind-list"},Vb={tabindex:"0"},Zb={key:5,class:"tool-result-previews"},Qb={class:"tool-result-preview kind-code"},Yb={tabindex:"0"},Jb={key:6,class:"tool-result-previews"},Xb={tabindex:"0"},ek={class:"plugin-resource-stack"},tk=["src","title"],nk=["innerHTML"],sk={key:1,class:"message-text markdown streaming-markdown"},rk=["innerHTML"],ok={key:0,class:"message-image-attachments"},ik=["data-preview-src","aria-label"],ak=["src","alt"],lk={key:1,class:"image-unavailable-placeholder",role:"status"},ck=["href","download"],uk={key:2,class:"message-loading",role:"status","aria-live":"polite"},dk={class:"message-loading-body"},gk={class:"message-loading-label"},fk={key:0,class:"queued"},pk=["disabled"],hk=["disabled"],mk={key:0,class:"composer-app-prompt"},bk={key:1,class:"attachments file-attachments"},kk=["onClick"],yk={key:2,class:"attachments image-attachments"},vk=["src","alt"],wk=["onClick"],_k={class:"composer-path-row"},xk=["title"],Sk={id:"composer-session-metrics",class:"composer-metrics","aria-label":"运行状态指标"},Ek=["aria-pressed","title"],Tk={class:"compress-wrap"},Ik=["disabled"],Ak={class:"composer-actions"},Ck=["aria-expanded"],Mk=["disabled","aria-busy","aria-label","title"],Rk=["type","disabled","aria-busy","aria-label","title"],Nk={key:0,class:"composer-button-icon composer-wait-icon","data-action":"waiting",viewBox:"0 0 20 20","aria-hidden":"true"},Lk={key:1,class:"composer-button-icon","data-action":"send",viewBox:"0 0 20 20","aria-hidden":"true"},$k={key:2,class:"composer-button-icon","data-action":"interrupt-send",viewBox:"0 0 20 20","aria-hidden":"true"},Ok={key:3,class:"composer-button-icon","data-action":"send-now",viewBox:"0 0 20 20","aria-hidden":"true"},Dk={key:4,class:"composer-button-icon","data-action":"stop",viewBox:"0 0 20 20","aria-hidden":"true"},Pk=["data-mobile-card","onKeydown"],Uk={class:"background-task-section","data-card":"tasks"},Bk={class:"background-task-head"},zk={class:"panel-title"},Fk={key:0,class:"background-task-count"},Hk=["title"],jk={key:0,class:"background-task-more"},Gk={key:1,class:"background-task-history"},qk={class:"background-task-history-list"},Wk=["title","onClick"],Kk={key:1,class:"quota-card","data-card":"quota"},Vk={class:"quota-card-head"},Zk={class:"quota-card-controls"},Qk=["aria-valuenow"],Yk={class:"quota-card-foot"},Jk={class:"quota-card-update"},Xk={class:"quota-card memory-card","data-card":"memory"},ey={class:"memory-card-head"},ty={class:"memory-trend",viewBox:"0 0 260 44",preserveAspectRatio:"none",role:"img","aria-label":"最近一小时 RSS 趋势"},ny=["d"],sy=["cx","cy","r","onFocus"],ry={key:1,class:"memory-trend-empty"},oy={class:"memory-stats"},iy={class:"memory-card-foot"},ay={key:1,class:"content-grid single"},ly={class:"panel-page sessions-page"},cy={class:"page-head sessions-page-head"},uy={class:"session-toolbar"},dy={class:"session-search","aria-label":"搜索会话"},gy={class:"session-count"},fy={key:0,class:"empty-state"},py={key:1,class:"empty-state"},hy={key:2,class:"empty-state"},my={key:3,class:"session-list"},by={class:"session-card-main"},ky={class:"session-card-title"},yy={key:0,class:"current-pill"},vy={key:1,class:"current-pill"},wy={key:2,class:"live-pill"},_y={class:"session-card-meta"},xy=["title"],Sy=["datetime"],Ey={class:"session-actions"},Ty=["disabled","onClick"],Iy=["disabled","onClick"],Ay={key:4,class:"session-pagination","aria-label":"会话分页"},Cy=["disabled"],My=["aria-current","onClick"],Ry=["disabled"],Ny={key:2,class:"content-grid single"},Ly={class:"panel-page sessions-page admin-users-page"},$y=["disabled"],Oy={key:0,class:"admin-user-error",role:"alert"},Dy={key:1,class:"empty-state"},Py={key:2,class:"session-list admin-user-list"},Uy={class:"session-card-main"},By={class:"session-card-title"},zy={class:"current-pill"},Fy={class:"session-actions"},Hy=["disabled","onClick"],jy={key:3,class:"content-grid single"},Gy={class:"panel-page prompt-page"},qy={class:"page-head"},Wy={class:"page-head-actions"},Ky={class:"prompt-workbench"},Vy={class:"prompt-library-panel"},Zy={class:"prompt-library-head"},Qy={class:"prompt-library-list"},Yy={key:0,class:"prompt-list-empty"},Jy={key:1,class:"prompt-list-empty"},Xy=["onClick","onDblclick","onDragstart","onDragover","onDrop"],ev={key:0},tv={class:"prompt-editor-panel"},nv={class:"prompt-editor-toolbar"},sv={class:"prompt-editor-current"},rv={class:"prompt-editor-toolbar-actions"},ov=["disabled"],iv=["disabled"],av={class:"prompt-editor-grid"},lv={class:"prompt-editor-field"},cv={class:"prompt-editor-field prompt-editor-field-full"},uv={class:"prompt-editor-field prompt-editor-field-full"},dv={key:4,class:"content-grid single"},gv={class:"panel-page settings-page"},fv={class:"page-head settings-page-head"},pv={class:"settings-subpage-title"},hv={class:"page-head settings-page-head"},mv=["disabled"],bv={key:0,class:"empty-state"},kv={class:"settings-card"},yv={class:"settings-field-grid"},vv={class:"settings-field"},wv={key:0,class:"settings-required","aria-label":"必填"},_v=["onUpdate:modelValue","type","placeholder"],xv={key:1,class:"settings-card"},Sv={class:"settings-field-grid"},Ev={class:"settings-field"},Tv={class:"settings-field"},Iv={key:2,class:"settings-card settings-plugin-card"},Av={class:"settings-card-head"},Cv=["disabled"],Mv={class:"plugin-settings-list"},Rv={class:"plugin-toggle"},Nv=["onUpdate:modelValue","aria-label"],Lv={key:3,class:"settings-card settings-plugin-card"},$v={class:"settings-card-head"},Ov=["disabled"],Dv={class:"plugin-settings-list"},Pv={class:"plugin-toggle"},Uv=["onUpdate:modelValue","disabled","aria-label"],Bv={key:5,class:"content-grid single"},zv={class:"panel-page"},Fv={class:"capability-grid"},Hv={key:0,class:"toast"},jv=["title","onKeydown"],Gv={class:"cwd-picker-modal",role:"dialog","aria-modal":"true","aria-label":"选择工作目录"},qv=["disabled"],Wv=["disabled"],Kv={class:"cwd-picker-shortcuts"},Vv={class:"cwd-picker-browser"},Zv={class:"cwd-picker-locations","aria-label":"常用位置"},Qv=["title","onClick"],Yv={"aria-hidden":"true"},Jv={class:"cwd-picker-tree"},Xv={key:0,class:"cwd-picker-empty"},ew={key:1,class:"cwd-picker-error"},tw={class:"cwd-picker-actions"},nw=["disabled"],sw={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"项目上下文"},rw={class:"runtime-context-modal-head"},ow={key:0,class:"runtime-context-kicker"},iw=["aria-label"],aw={class:"runtime-context-modal-content"},lw={key:0,class:"runtime-context-index"},cw=["onClick"],uw={key:1,class:"project-context-document"},dw=["aria-label"],gw={class:"confirm-dialog-content"},fw={class:"confirm-dialog-actions"},pw={class:"session-model-list",role:"radiogroup","aria-label":"模型"},hw=["value","disabled"],mw=["disabled"],bw=["value"],kw={key:0,class:"context-window-error",role:"alert"},yw={class:"context-window-actions"},vw=["disabled"],ww={class:"context-window-input-wrap"},_w={key:0,class:"context-window-error",role:"alert"},xw={class:"context-window-actions"},Sw=["disabled"],Ew=["aria-label"],Tw={class:"image-preview-canvas"},Iw=["src","alt"],Aw={key:0,class:"image-preview-caption"},Cw={class:"runtime-context-detail-modal compaction-detail-modal",role:"dialog","aria-modal":"true","aria-label":"压缩上下文详情"},Mw={class:"runtime-context-detail-content compaction-detail-content"},Rw={class:"compaction-detail-stats"},Nw={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"运行上下文"},Lw={class:"runtime-context-modal-head"},$w={class:"runtime-context-modal-content"},Ow={key:1,class:"runtime-plugin-list"},Dw={key:0,class:"runtime-context-empty"},Pw={class:"runtime-tool-status"},Uw=["disabled","onClick"],Bw={key:2,class:"runtime-plugin-list"},zw={key:0,class:"runtime-context-empty"},Fw=["aria-label"],Hw={class:"runtime-context-modal-head"},jw={key:0,class:"runtime-context-kicker"},Gw={class:"runtime-context-detail-content"},qw={key:0},Ww={key:1},Kw={class:"tool-result-modal background-task-modal",role:"dialog","aria-modal":"true","aria-label":"后台任务"},Vw={class:"tool-result-modal-head"},Zw={class:"tool-result-modal-title"},Qw={class:"background-task-modal-count"},Yw={key:0,class:"background-task-index","aria-label":"后台任务列表"},Jw=["title","onClick"],Xw={class:"background-task-index-copy"},e0={class:"background-task-detail"},t0={class:"background-task-detail-head"},n0={class:"background-task-detail-title"},s0={class:"background-task-meta"},r0={key:0},o0={key:1,class:"wide"},i0={class:"background-task-detail-body"},a0={key:0,class:"background-task-command-section"},l0={class:"background-task-command"},c0={key:2,style:{"min-width":"0",width:"100%"}},u0=["aria-label"],d0={class:"tool-result-modal-head"},g0={class:"tool-result-modal-title"},f0={key:0},p0={class:"tool-result-modal-content"},h0=["innerHTML"],m0=2048,b0=18e5,Co=.62,Mo=10,k0="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.",y0="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.",v0="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.",w0="<<ATTACHMENT_MANIFEST>>",_0="<</ATTACHMENT_MANIFEST>>",ir="••••••••••••••••••",Qn="neoctl-web.adminOwnerUsername",bl="neoctl-web.theme",Ro="neoctl-web.clientRevision",kl="neoctl-web.clientReloadRequest",No="__neo_reload",x0=112,yl=4e4,T0={__name:"App",setup(t){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",ll),Ee.registerLanguage("py",ll),Ee.registerLanguage("bash",_o),Ee.registerLanguage("sh",_o),Ee.registerLanguage("shell",_o),Ee.registerLanguage("json",$p),Ee.registerLanguage("css",jp),Ee.registerLanguage("html",xo),Ee.registerLanguage("xml",xo),Ee.registerLanguage("vue",xo),Ee.registerLanguage("markdown",cl),Ee.registerLanguage("md",cl),Ee.registerLanguage("yaml",ul),Ee.registerLanguage("yml",ul),Ee.registerLanguage("diff",Gp);const r=re(!1),s=re(!1),i=V(Ba),l=V(()=>!Ge.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:"请求处理失败"};Ba()&&(Ge.adminOwnerUsername=sessionStorage.getItem(Qn)||"");const v="neoctl-web.tabId"+za(),I="neoctl-web.sessionId"+za();let _=P(),A=sessionStorage.getItem(I)||"",S=!A,O=!1;const R=[];function L(){return{id:"",title:"",content:"",usage:""}}function B(e){if(!e||typeof e!="object")return null;const n=String(e.title||"").trim(),c=String(e.content||"").trim();return!n||!c?null:{id:String(e.id||M()).trim(),title:n,content:c,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 c,u;if((c=globalThis.crypto)!=null&&c.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 n=[...e].map(p=>p.toString(16).padStart(2,"0"));return`${n.slice(0,4).join("")}-${n.slice(4,6).join("")}-${n.slice(6,8).join("")}-${n.slice(8,10).join("")}-${n.slice(10).join("")}`}function F(e){const n=new URL(e,window.location.origin);return n.searchParams.set("tabId",_),A&&n.searchParams.set("sessionId",A),tt(`${n.pathname}${n.search}${n.hash}`)}function oe(e,n=!1){const c=(e==null?void 0:e.sessionId)||"";!c||c===A||!n&&!S&&A||(A=c,S=!1,sessionStorage.setItem(I,c))}const o=lr({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:""}),ie=re(""),de=re(""),G=re(1),Z=re(""),ae=re(Rd()),ne=re(null),ye=re(null),$=re(null),q=re(null),W=re(null),se=re(null),ue=re(""),xe=V(()=>[{id:"tasks",title:"后台任务"},...yt.value?[{id:"quota",title:"周额度"}]:[],{id:"memory",title:"服务端内存"}]),Me=e=>{var n;return((n=xe.value.find(c=>c.id===e))==null?void 0:n.title)||""};function et(e){er(),o.activePanel="chat",ue.value=e,Ye(()=>{var n;return(n=document.querySelector(".mobile-card-close"))==null?void 0:n.focus()})}function ze(){ue.value="",Ye(()=>{var e,n;return(n=(e=se.value)==null?void 0:e.querySelector("summary"))==null?void 0:n.focus()})}const Fe=re(""),st=lr({}),Re=lr(L()),xt=re(""),Dt=re(""),Pt=re(""),Ut=re("before"),St=re(-1);let Ie,vn,Le=0,He=0,ut=0,J,Et=!1,Ce,me,Tt,Ze=0,Bt=Promise.resolve(),dt=0,z=0,K=0,ee,ge,$e=!1,We,mt;Bc();const bt=new Map,It=new Map,Er=re(0),wn=V(()=>[...o.lines||[]].reverse().find(e=>jr(e))||null),dc=V(()=>{var e;return qu((e=o.status)==null?void 0:e.phase)}),gc=V(()=>{var e,n;if(wn.value)return Qi(wn.value)?"整理图片结果":"图片生成中";if(((e=o.status)==null?void 0:e.phase)==="running_tools"){const c=(n=o.status)==null?void 0:n.currentTool;if(String((c==null?void 0:c.name)||"").toLowerCase()==="image_create")return"图片生成中";if(c!=null&&c.name)return`调用 ${c.name}${c.kind?` · ${c.kind}`:""}`}return dc.value}),li=V(()=>{var e;return lg((e=o.status)==null?void 0:e.phase)}),fc=V(()=>li.value||o.busy||o.sessionResumeLoading),pc=V(()=>{if(o.sessionResumeLoading)return"正在加载会话";if(wn.value){const e=jn(wn.value),n=Qi(wn.value)?"正在载入图片结果":"图片模型正在生成";return e?`${n} · 已用时 ${e}`:n}return`正在${gc.value}`}),ci=e=>String(e||"").replace(/设计/g,"").trim(),ui=e=>ci(e==null?void 0:e.title)||"未命名会话",_n=V(()=>{var n;const e=ci((n=o.session)==null?void 0:n.title);return e&&e!=="neo"?e:""}),ls=V(()=>_n.value||"未命名会话"),cs=re(null),di=re(null),Tr=re(!1);let us;const Ir=async()=>{await Ye();const e=cs.value,n=di.value;Tr.value=!!(e&&n&&n.scrollWidth>e.clientWidth+2)},gi=V(()=>o.cwd||"—"),xn=V(()=>{var c,u;const e=o.pendingSessionSettings,n=o.modelSettings||{model:(u=(c=o.status)==null?void 0:c.metrics)==null?void 0:u.model};return{model:e.model??n.model,reasoning:Object.hasOwn(e,"reasoning")||Object.hasOwn(e,"model")?e.reasoning:n.reasoning}}),hc=V(()=>{var e;return Nh(xn.value.model,(e=xn.value.reasoning)==null?void 0:e.effort)}),ds=V(()=>o.fastModeMutating?o.fastModeDraft:o.pendingSessionSettings.fastMode??o.fastMode),fi=V(()=>{var e;return[...new Set([xn.value.model,(e=o.modelSettings)==null?void 0:e.model,...o.catalog.modelIds||[]].filter(Boolean))]}),mc=V(()=>fi.value.filter(e=>e.toLowerCase().includes(o.modelSearch.trim().toLowerCase()))),gs=V(()=>{var c;const e=((c=o.catalog.modelReasoning)==null?void 0:c[o.modelDraft])||[],n=o.catalog.reasoning||[];return["default","off",...e.filter(u=>n.includes(u)&&u!=="default"&&u!=="off")]});Pe(()=>o.modelDraft,()=>{gs.value.includes(o.reasoningDraft)||(o.reasoningDraft="default")});const bc=V(()=>`${o.composerMetrics.context.display.toFixed(1)}%`),kc=V(()=>{var n,c;const e=Number(o.pendingSessionSettings.contextWindowTokens??((c=(n=o.status)==null?void 0:n.metrics)==null?void 0:c.contextWindowTokens));return Number.isFinite(e)&&e>0?String(Math.max(1,Math.round(e/1e3))):""}),yc=V(()=>dn(o.composerMetrics.inputTokens.display)),vc=V(()=>dn(o.composerMetrics.outputTokens.display)),At=V(()=>li.value||o.busy),fs=V(()=>o.backgroundTasks.length),ps=V(()=>[...o.agentTaskHistory,...o.terminalTaskHistory].sort((e,n)=>{const c=u=>typeof u.completedAt=="number"?u.completedAt:Date.parse(u.completedAt||u.updatedAt||"")||(typeof u.createdAt=="number"?u.createdAt:0);return c(n)-c(e)})),Sn=V(()=>{const e=new Set;return[...o.backgroundTasks,...ps.value].filter(n=>{const c=qt(n);return e.has(c)?!1:(e.add(c),!0)})}),En=V(()=>o.backgroundTasks[0]),Ar=V(()=>!!(ie.value.trim()||o.attachments.length)),pi=V(()=>r.value?"正在处理":At.value?Ar.value?"打断并发送":o.queuedInput?"立即发送":"停止":"发送 ↵"),Tn=V(()=>{const e=de.value.trim().toLocaleLowerCase(),n=o.sessions||[];return e?n.filter(c=>[ui(c),c.ownerUsername,c.title,c.sessionId,c.updatedAt,c.createdAt].some(u=>String(u||"").toLocaleLowerCase().includes(e))):n}),hs=V(()=>Math.max(1,Math.ceil(Tn.value.length/Mo))),wc=V(()=>{const e=(G.value-1)*Mo;return Tn.value.slice(e,e+Mo)}),_c=V(()=>{const e=hs.value,n=Math.max(1,Math.min(G.value-2,e-4)),c=Math.min(e,n+4);return Array.from({length:c-n+1},(u,p)=>n+p)}),zt=V(()=>o.sessionResumeLoading?[]:Lu((o.lines||[]).filter(e=>!Fu(e)))),Cr=re(0),In=$f(V(()=>({count:zt.value.length,getScrollElement:()=>$.value,estimateSize:ng,getItemKey:e=>tg(zt.value[e]),rangeExtractor:e=>{const n=new Set($l(e));return zt.value.forEach((c,u)=>{(c==null?void 0:c.live)===!0&&n.add(u)}),[...n].sort((c,u)=>c-u)},overscan:8,scrollMargin:Er.value,anchorTo:Cr.value?"start":"end",followOnAppend:!0,scrollEndThreshold:96,useAnimationFrameWithResizeObserver:!0}))),xc=V(()=>In.value.getVirtualItems().filter(e=>zt.value[e.index])),Sc=V(()=>In.value.getTotalSize()),Ec=V(()=>{var e,n;return Array.isArray((n=(e=o.runtimeContext)==null?void 0:e.prompt)==null?void 0:n.sections)?o.runtimeContext.prompt.sections:[]}),Mr=V(()=>{var e;return Array.isArray((e=o.runtimeContext)==null?void 0:e.tools)?o.runtimeContext.tools:[]}),An=V(()=>{var e,n;return Array.isArray((n=(e=o.runtimeContext)==null?void 0:e.project)==null?void 0:n.documents)?o.runtimeContext.project.documents:[]}),Tc=V(()=>o.sessionPlugins.items.filter(e=>e.effectiveEnabled).length),Ic=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}),Ac=V(()=>{var e,n;return((e=Ft.value)==null?void 0:e.title)||((n=Ft.value)==null?void 0:n.id)||""}),ms=V(()=>o.promptLibrary.find(e=>e.id===o.selectedPromptId)||o.promptLibrary[0]||null),bs=V(()=>ae.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))),n=e.map(E=>Number(E.rss));if(!n.length)return[];const c=Math.min(...n),u=Math.max(...n),p=Math.max(1,u-c);return n.map((E,N)=>({entry:e[N],x:n.length===1?130:N/(n.length-1)*260,y:n.length===1?22:40-(E-c)/p*36}))}),hi=V(()=>vs.value.map((e,n)=>`${n?"L":"M"} ${e.x.toFixed(1)} ${e.y.toFixed(1)}`).join(" ")),Cn=V(()=>vs.value[St.value]||null);Pe(ae,Nd,{immediate:!0}),Pe([At,bs],([e,n])=>{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?n?"#bef264":"#a3e635":n?"#38bdf8":"#7dd3fc"}"/></svg>`,p=document.querySelector('link[rel="icon"]');p&&(p.href=`data:image/svg+xml,${encodeURIComponent(u)}`)},{immediate:!0}),Pe(_n,e=>{document.title=e||"对话工作台"},{immediate:!0}),Pe(ls,Ir,{immediate:!0}),Pe(de,()=>{G.value=1}),Pe(hs,e=>{G.value>e&&(G.value=e)}),Pe(()=>{var e;return(e=o.backgroundTaskDetail)==null?void 0:e.output},async()=>{await Ye();const e=W.value;e&&(e.scrollTop=e.scrollHeight)}),Pe(()=>zt.value.length,async()=>{await Ye(),po(),Js()}),Pe(()=>o.activePanel,async e=>{e==="chat"&&(await Ye(),po(),Js())});async function Cc(){sessionStorage.removeItem(Qn),(await ke("/api/auth/logout",{method:"POST"})).ok&&location.reload()}Fo(async()=>{typeof ResizeObserver<"u"&&(mt=new ResizeObserver(Js),po()),Js(),await Promise.all([Mn(),Mc(),Rn(),Rr(),ws(),mi(),$r(),Ri()]),_s(),Ce=setInterval(()=>{o.clockTick=Date.now()},1e3),me=setInterval($r,6e4),Tt=setInterval(Ri,6e4),window.addEventListener("keydown",fa),document.addEventListener("click",Hi),document.addEventListener("click",ji),document.addEventListener("pointerdown",La,!0),typeof ResizeObserver<"u"&&cs.value&&(us=new ResizeObserver(Ir),us.observe(cs.value)),Ir()}),Jt(()=>{Ie&&Ie.close(),Le&&cancelAnimationFrame(Le),He&&cancelAnimationFrame(He),xs(),J=void 0,Ze&&cancelAnimationFrame(Ze),Ce&&clearInterval(Ce),me&&clearInterval(me),Tt&&clearInterval(Tt),We&&clearTimeout(We),us&&us.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",fa),document.removeEventListener("click",Hi),document.removeEventListener("click",ji),document.removeEventListener("pointerdown",La,!0)});async function Mn(e={}){try{const n=await ke(F("/api/state"));if(!n.ok)throw new Error(`state ${n.status}`);return Ss(await n.json()),!0}catch(n){return e.silent||X(`运行时不可用:${n.message||n}`),!1}}async function Mc(){try{const e=await ke(F("/api/client-info"),{cache:"no-store"});if(!e.ok)return;bi(await e.json())}catch{}}async function Rn(){o.runtimeContextLoading=!0;try{const e=await ke(F("/api/runtime-context")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`runtime-context ${e.status}`);return yi(n),!0}catch(e){return o.runtimeContextError=e.message||String(e),!1}finally{o.runtimeContextLoading=!1}}async function Rc(){o.globalTools.loading=!0;try{const e=await ke(F("/api/tools")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`tools ${e.status}`);o.globalTools={items:Array.isArray(n.items)?n.items.map(c=>({...c})):[],loading:!1}}catch(e){o.globalTools.loading=!1,X(e.message||String(e))}}async function Nc(){const e=Object.fromEntries(o.globalTools.items.map(n=>[n.name,n.configuredEnabled!==!1]));o.globalTools.loading=!0;try{const n=await Te("/api/tools/global",{overrides:e});o.globalTools={...n.state,loading:!1},await Promise.all([ws(),Rn()]),X("全局工具配置已保存,各会话在下一轮或刷新时生效")}catch(n){o.globalTools.loading=!1,Qe(n,"工具配置保存失败")}}async function ws(){o.sessionTools.loading=!0;try{const e=await ke(F("/api/session-tools")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`session-tools ${e.status}`);o.sessionTools={...n,items:Array.isArray(n.items)?n.items:[],loading:!1}}catch(e){o.sessionTools.loading=!1,X(e.message||String(e))}}async function Lc(e,n){const c=Object.fromEntries(o.sessionTools.items.map(u=>[u.name,u.name===e.name?n:u.mode]));o.sessionTools.busy=!0;try{const u=await Te("/api/session-tools",{overrides:c});o.sessionTools={...u.state,loading:!1,busy:!1}}catch(u){o.sessionTools.busy=!1,Qe(u,"会话工具更新失败")}}async function $c(){o.globalPlugins.loading=!0;try{const e=await ke(F("/api/plugins")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`plugins ${e.status}`);o.globalPlugins={items:Array.isArray(n.items)?n.items.map(c=>({...c})):[],locked:n.locked===!0,restartRequired:n.restartRequired!==!1,loading:!1}}catch(e){o.globalPlugins.loading=!1,X(e.message||String(e))}}async function Oc(){const e=o.globalPlugins.items.filter(n=>n.configuredEnabled!==!1).map(n=>n.id);o.globalPlugins.loading=!0;try{const n=await Te("/api/plugins/global",{enabledIds:e}),c=new Set(n.enabledIds||e);o.globalPlugins.items=o.globalPlugins.items.map(u=>({...u,configuredEnabled:c.has(u.id)})),X("插件配置已保存,重启后生效")}catch(n){Qe(n,"插件配置保存失败")}finally{o.globalPlugins.loading=!1}}async function Rr(){o.sessionPlugins.loading=!0;try{const e=await ke(F("/api/session-plugins")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`session-plugins ${e.status}`);o.sessionPlugins={...n,items:Array.isArray(n.items)?n.items:[],loading:!1}}catch(e){o.sessionPlugins.loading=!1,X(e.message||String(e))}}async function Dc(e,n){const c=Object.fromEntries(o.sessionPlugins.items.map(u=>[u.id,u.id===e.id?n:u.mode]));o.sessionPlugins.busy=!0;try{const u=await Te("/api/session-plugins",{overrides:c});o.sessionPlugins={...u.state,loading:!1,busy:!1}}catch(u){o.sessionPlugins.busy=!1,Qe(u,"会话插件更新失败")}}async function mi(){if(Ge.isolation){o.promptLibraryLoading=!1;return}o.promptLibraryLoading=!0;try{const e=await ke(F("/api/prompt-library")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`prompt-library ${e.status}`);Nn(Array.isArray(n.items)?n.items:R)}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",()=>{Nr(),o.connected=!1,o.connecting=!1}),Ie.addEventListener("sync",e=>{if(!Et){Et=!0,wi(e.data);return}zc(e.data)}),Ie.addEventListener("delta",e=>{Nr(),Fc(e.data)}),Ie.addEventListener("terminal.output",e=>{try{Nr(),Wc(JSON.parse(e.data))}catch{}}),Ie.addEventListener("client.version",e=>{try{bi(JSON.parse(e.data))}catch{}}),Ie.addEventListener("client.reload",e=>{try{Pc(JSON.parse(e.data))}catch{}}),Ie.addEventListener("runtime.context",e=>{try{yi(JSON.parse(e.data))}catch(n){o.runtimeContextError=n.message||String(n)}}),Ie.addEventListener("runtime.context.error",e=>{try{const n=JSON.parse(e.data);o.runtimeContextError=n.message||"运行上下文同步失败"}catch{o.runtimeContextError="运行上下文同步失败"}})}function bi(e){if(Number(e==null?void 0:e.protocolVersion)!==1)return;o.coreVersion=String(e.coreVersion||"");const n=String(e.revision||"").trim();if(!n)return;const c=localStorage.getItem(Ro);localStorage.setItem(Ro,n),c&&c!==n&&ki({...e,requestId:`revision:${n}`,clearCache:!0})}async function Pc(e){if(Number(e==null?void 0:e.protocolVersion)!==1)return;const n=String(e.requestId||"").trim();if(!n||sessionStorage.getItem(kl)===n)return;sessionStorage.setItem(kl,n);const c=String(e.revision||"").trim();c&&localStorage.setItem(Ro,c),o.coreVersion=String(e.coreVersion||o.coreVersion||""),await ki(e)}async function ki(e){if($e)return;$e=!0,e.clearCache!==!1&&await Uc();const n=new URL(window.location.href);n.searchParams.set(No,String(e.requestId||e.revision||Date.now())),window.location.replace(n.href)}async function Uc(){const e=[];"caches"in window&&e.push(caches.keys().then(n=>Promise.all(n.map(c=>caches.delete(c))))),"serviceWorker"in navigator&&e.push(navigator.serviceWorker.getRegistrations().then(n=>Promise.all(n.map(c=>c.unregister())))),await Promise.allSettled(e)}function Bc(){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(){We&&clearTimeout(We),o.coreEasterEgg=!1,requestAnimationFrame(()=>{o.coreEasterEgg=!0,We=setTimeout(()=>{o.coreEasterEgg=!1},1300)})}function yi(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 n=Number(e.revision||0),c=Number(((p=o.runtimeContext)==null?void 0:p.revision)||0);(!e.sessionId||!((y=o.runtimeContext)!=null&&y.sessionId)||e.sessionId===o.runtimeContext.sessionId)&&n<c||(o.runtimeContext=e,o.projectContextDocument&&!An.value.some(E=>E.path===o.projectContextDocument.path)&&(o.projectContextDocument=void 0),o.projectContextOpen&&An.value.length===0&&(o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")),o.runtimeContextLoading=!1,o.runtimeContextError="")}function zc(e){J=e,!He&&(He=requestAnimationFrame(()=>{He=0,vi()}))}function Nr(){He&&cancelAnimationFrame(He),He=0,vi()}function vi(){const e=J;J=void 0,e&&wi(e)}function wi(e){try{Ss(JSON.parse(e))}catch(n){X(`运行状态同步失败:${n.message||n}`)}}function Fc(e){try{qc(JSON.parse(e))}catch(n){X(`流式增量同步失败:${n.message||n}`),Mn()}}function Hc(e,n){const c=String(n||"");if(!c)return;const u=String(e);It.set(u,`${It.get(u)||""}${c}`),_i()}function _i(){ut||(ut=requestAnimationFrame(jc))}function jc(){ut=0;const e=go(),n=[...It];It.clear();for(const[c,u]of n){const p=o.lines.findIndex(E=>String(E.id)===c);if(p<0)continue;const y=o.lines[p];o.lines[p]={...y,text:`${y.text||""}${u}`}}e&&ho(),It.size&&_i()}function Gc(e){const n=String(e),c=It.get(n);if(!c)return;It.delete(n);const u=o.lines.findIndex(y=>String(y.id)===n);if(u<0)return;const p=o.lines[u];o.lines[u]={...p,text:`${p.text||""}${c}`}}function xs(){ut&&cancelAnimationFrame(ut),ut=0,It.clear()}function qc(e){const n=String(e.sessionId||"");if(A&&n&&n!==A&&!S){sa();return}const c=go();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")Hc(u.id,u.text);else if(u.type==="line.patch"){Gc(u.id);const y=o.lines[p];o.lines[p]={...y,...u.patch||{}}}}e.status&&(o.status=e.status),Gr(),o.connected=!0,o.connecting=!1,c&&ho()}function Wc(e){var n,c;for(const u of(e==null?void 0:e.updates)||[]){const p=String((u==null?void 0:u.sessionId)||"");if(!p||u.ownerSessionId!==((n=o.session)==null?void 0:n.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 N=o.backgroundTasks[y],H=String(N.output||""),U=Number(N.outputEnd??H.length),le=Number(u.outputStart??U),_e=Number(u.outputEnd??le+E.length),k=le===U?Kc(H,E,yl):E.slice(-yl);o.backgroundTasks[y]={...N,output:k,outputEnd:_e},String(((c=o.backgroundTaskDetail)==null?void 0:c.sessionId)||"")===p&&(o.backgroundTaskDetail={...o.backgroundTaskDetail,output:k,outputEnd:_e})}}function Kc(e,n,c){const u=`${e}${n}`;return u.length<=c?u:u.slice(-c)}function Ss(e){var p,y,E,N;xs();const n=String(((p=e.session)==null?void 0:p.sessionId)||""),c=String(((y=o.session)==null?void 0:y.sessionId)||"");if(n&&n!==c&&an(),A&&n&&n!==A&&!S){sa();return}K+=1;const u=go();if(n!==c&&(Is(),og(),o.messageImagePreviews=o.messageImagePreviews.filter(H=>H.sessionId===n),o.attachmentCounter=0),o.lines=e.lines||[],o.toolDetailLineId!==void 0&&!o.lines.some(H=>String(H.id)===String(o.toolDetailLineId))&&an(),o.compactionDetailLineId!==void 0&&!o.lines.some(H=>String(H.id)===String(o.compactionDetailLineId))&&$s(),Bd(o.lines),Hu(o.lines),o.status=e.status||o.status,Gr(),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 H=Sn.value.find(U=>qt(U)===qt(o.backgroundTaskDetail));H?o.backgroundTaskDetail={...H}: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},oe(e.session,S),n&&n!==c&&Promise.all([Rr(),ws()]),o.sessionResumeLoading){const H=((N=e.session)==null?void 0:N.sessionId)||"";o.pendingResumeSessionId&&H===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,Gu(o.backgroundTasks),ag(),u&&ho()}function Nn(e,n=o.selectedPromptId){const c=(e||[]).map(B).filter(Boolean);o.promptLibrary=c;const u=c.find(p=>p.id===n)||c[0]||null;o.selectedPromptId=(u==null?void 0:u.id)||"",Ln(u||L())}function Ln(e){Re.id=(e==null?void 0:e.id)||"",Re.title=(e==null?void 0:e.title)||"",Re.content=(e==null?void 0:e.content)||"",Re.usage=(e==null?void 0:e.usage)||""}function Lr(e){if(Ge.isolation)return;o.activePanel="prompts",o.promptManagerOpen=!0,e&&(o.selectedPromptId=e);const n=o.promptLibrary.find(c=>c.id===o.selectedPromptId)||o.promptLibrary[0]||L();o.selectedPromptId=n.id||"",Ln(n)}function Vc(e){o.selectedPromptId=e.id,Lr(e.id)}function Zc(){o.selectedPromptId="",Ln(L()),o.activePanel="prompts",o.promptManagerOpen=!0}function Qc(e){o.selectedPromptId=e.id,Ln(e)}async function Yc(){const e=B({id:Re.id||M(),title:Re.title,content:Re.content,usage:Re.usage});if(!e){X("标题和内容不能为空");return}try{const n=await Te("/api/prompt-library",{item:e});Nn(n.items,e.id)}catch(n){X(n.message||String(n));return}X("已保存提示词")}async function Jc(){var u;const e=String(Re.id||"").trim();if(!e){Ln(L());return}const n=o.promptLibrary.find(p=>p.id===e);if(!(!n||!await On({title:"删除提示词?",message:`“${n.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)===n.id&&xi({confirm:!1}),X("已删除提示词")}}async function $n(e){const n=B(e);if(!n){X("提示词无效");return}const c=Ft.value;if(c&&(c.id!==n.id||String(c.content||"").trim()!==n.content)){const p=c.id===n.id;if(!await On({title:p?"更新当前提示词?":"切换当前提示词?",message:p?`“${n.title}”的内容已经变化。重新应用会影响模型对后续问题的理解和回答方式。`:`将从“${c.title||c.id||"当前提示词"}”切换为“${n.title}”。提示词变化会影响模型对后续问题的理解和回答方式。`,confirmLabel:p?"确认更新":"确认切换"}))return}try{const p=await Te("/api/app-prompt",{id:n.id,title:n.title,usage:n.usage,source:"sidebar-library",content:n.content});(p==null?void 0:p.ok)!==!1&&(o.appPrompt=p.appPrompt||{hasActivePrompt:!0,activePrompt:n},X(`已应用:${n.title}`))}catch(p){Qe(p,"应用提示词失败")}}async function xi(e={}){if(Ft.value&&!(e.confirm!==!1&&!await On({title:"清除当前提示词?",message:"清除后,模型将不再遵循当前应用提示词,这会改变它对后续问题的理解和回答方式。",confirmLabel:"确认清除",tone:"danger"})))try{const n=await Te("/api/app-prompt",{clear:!0});(n==null?void 0:n.ok)!==!1&&(o.appPrompt=n.appPrompt||{hasActivePrompt:!1,activePrompt:void 0},X("已清空应用提示词"))}catch(n){Qe(n,"清空提示词失败")}}function On(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(n=>{ge=n})}function sn(e){const n=ge;ge=void 0,o.confirmDialog.open=!1,n==null||n(e===!0)}function Xc(e,n){xt.value=n.id,e!=null&&e.dataTransfer&&(e.dataTransfer.effectAllowed="copy",e.dataTransfer.setData("application/x-neoctl-prompt-id",n.id),e.dataTransfer.setData("text/plain",n.title))}function eu(e){var u;const n=Array.from(((u=e==null?void 0:e.dataTransfer)==null?void 0:u.types)||[]),c=su(e);!n.includes("application/x-neoctl-prompt-id")&&!c||(e.preventDefault(),o.composerDropActive=!0,o.composerDropMode=c?"files":"prompt",e.dataTransfer&&(e.dataTransfer.dropEffect="copy"))}function tu(e){e!=null&&e.currentTarget&&(e!=null&&e.relatedTarget)&&e.currentTarget.contains(e.relatedTarget)||(o.composerDropActive=!1,o.composerDropMode="prompt")}async function nu(e){var p,y;const n=ru(e==null?void 0:e.dataTransfer);if(n.length){e.preventDefault(),o.composerDropActive=!1,o.composerDropMode="prompt",xt.value="",await ha(n),(p=ne.value)==null||p.focus();return}const c=((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",!c)return;e.preventDefault();const u=o.promptLibrary.find(E=>E.id===c);if(xt.value="",!u){X("未找到提示词");return}await $n(u)}function su(e){var c,u;return Array.from(((c=e==null?void 0:e.dataTransfer)==null?void 0:c.types)||[]).includes("Files")?!0:Array.from(((u=e==null?void 0:e.dataTransfer)==null?void 0:u.items)||[]).some(p=>p.kind==="file")}function ru(e){const n=Array.from((e==null?void 0:e.files)||[]);return n.length?n:Array.from((e==null?void 0:e.items)||[]).filter(c=>c.kind==="file").map(c=>c.getAsFile()).filter(Boolean)}function ou(){xt.value="",o.composerDropActive=!1,o.composerDropMode="prompt"}function iu(e,n){Dt.value=n.id,Pt.value="",e!=null&&e.dataTransfer&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("application/x-neoctl-prompt-sort-id",n.id),e.dataTransfer.setData("text/plain",n.title))}function au(e,n){var p,y,E;const c=Dt.value||((p=e==null?void 0:e.dataTransfer)==null?void 0:p.getData("application/x-neoctl-prompt-sort-id"));if(!c||c===n.id)return;e.preventDefault();const u=(E=(y=e.currentTarget)==null?void 0:y.getBoundingClientRect)==null?void 0:E.call(y);Pt.value=n.id,Ut.value=u&&e.clientY>u.top+u.height/2?"after":"before",e.dataTransfer&&(e.dataTransfer.dropEffect="move")}async function lu(e,n){var H;e.preventDefault();const c=((H=e==null?void 0:e.dataTransfer)==null?void 0:H.getData("application/x-neoctl-prompt-sort-id"))||Dt.value,u=Ut.value;if(Si(),!c||c===n.id)return;const p=[...o.promptLibrary],y=p.findIndex(U=>U.id===c);if(y<0)return;const[E]=p.splice(y,1),N=p.findIndex(U=>U.id===n.id);if(!(N<0)){p.splice(N+(u==="after"?1:0),0,E),o.promptLibrary=p;try{const U=await Te("/api/prompt-library/reorder",{ids:p.map(le=>le.id)});Nn(U.items,o.selectedPromptId),X("提示词顺序已更新")}catch(U){await mi(),X(U.message||String(U))}}}function Si(){Dt.value="",Pt.value="",Ut.value="before"}async function Ei(){if(r.value||i.value)return;const e=ie.value;if(!e.trim()&&o.attachments.length===0)return;if(e.trim()==="/sessions"){ie.value="",qn(),await Ms();return}if(e.trim()==="/login"){ie.value="",qn(),await Pn();return}if(e.trim()==="/new"){ie.value="",qn(),await Ns();return}const n=[...o.attachments],c=n.filter(y=>y.kind==="image"),u=n.filter(y=>y.kind==="file"&&y.absolutePath),p=ba(e,c);ka(c),ie.value="",o.attachments=[],qn(),r.value=!0;try{const y=await ke(F("/api/submit"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:p,attachments:[...c,...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 cu(){if(r.value)return;if(!Ar.value){o.queuedInput?await Ii():await Ti();return}const e=ie.value,n=[...o.attachments],c=n.filter(y=>y.kind==="image"),u=n.filter(y=>y.kind==="file"&&y.absolutePath),p=ba(e,c);ka(c),ie.value="",o.attachments=[],qn(),r.value=!0;try{await Te("/api/submit-now",{text:p,attachments:[...c,...u]})}catch(y){X(y.message||String(y))}finally{r.value=!1}}async function Ti(){if(!r.value){r.value=!0;try{await Te("/api/interrupt",{})}catch(e){Qe(e,"停止回答失败")}finally{r.value=!1}}}async function uu(){try{const e=await Te("/api/queue/cancel",{});X(e.cancelled?"已撤回排队消息":"没有待撤回的消息")}catch(e){Qe(e,"撤回排队消息失败")}}async function Ii(){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 n=F(e),c=z;return{url:n,revision:K,isCurrent:()=>c===z&&n===F(e)}}async function Ts(e,n=()=>!0){if(!e.isCurrent()||!n()||e.revision===K)return;const c=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()&&n()&&c===K&&Ss(y)}catch{}}function Is(){z+=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,n){X(`${e}${n.deferred===!0?"将在下一轮生效":"已生效"}`)}function Ai(e){ee=document.activeElement,document.body.classList.add("context-window-open"),Ye(()=>{var n;return(n=document.querySelector(e))==null?void 0:n.focus()})}function Ci(){document.body.classList.remove("context-window-open"),ee!=null&&ee.isConnected&&ee.focus(),ee=void 0}function Mi(e){if(e.key!=="Tab")return;const n=[...e.currentTarget.querySelectorAll('button:not(:disabled), input:not(:disabled), select:not(:disabled), [tabindex="0"]')].filter(p=>p.getClientRects().length),c=n[0],u=n.at(-1);e.shiftKey&&document.activeElement===c?(e.preventDefault(),u==null||u.focus()):!e.shiftKey&&document.activeElement===u&&(e.preventDefault(),c==null||c.focus())}async function du(){if(o.compactSaving||o.pendingSessionSettings.compact)return;const e=Es("/api/compact");o.compactSaving=!0;try{const n=await Te(e.url,{},!0);if(!e.isCurrent())return;n.deferred&&(o.pendingSessionSettings.compact=!0),As("压缩会话",n),await Ts(e)}catch(n){e.isCurrent()&&Qe(n,"压缩上下文失败")}finally{e.isCurrent()&&(o.compactSaving=!1)}}function gu(){o.modelDraft=xn.value.model||fi.value[0]||"";const e=xn.value.reasoning;o.reasoningDraft=e===null?"off":(e==null?void 0:e.effort)||"default",gs.value.includes(o.reasoningDraft)||(o.reasoningDraft="default"),o.modelSearch="",o.modelError="",o.modelModalOpen=!0,Ai("#session-model-search")}function Dn(){o.modelModalOpen=!1,o.modelError="",Ci()}async function fu(){if(o.modelSaving||!o.modelDraft)return;const e=Es("/api/session-model"),n=o.modelDraft,c=gs.value.includes(o.reasoningDraft)?o.reasoningDraft:"default";o.modelSaving=!0,o.modelError="";try{const u=await Te(e.url,{model:n,reasoning:c},!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,Dn(),As("模型",u),await Ts(e)}catch(u){e.isCurrent()&&(o.modelError=Je(u,"模型切换失败"))}finally{e.isCurrent()&&(o.modelSaving=!1)}}function pu(){o.contextWindowDraft=kc.value,o.contextWindowError="",o.contextWindowModalOpen=!0,Ai("#context-window-input")}function Cs(){o.contextWindowModalOpen=!1,o.contextWindowError="",Ci()}function hu(){o.contextWindowError=""}async function mu(){var c;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 n=Es("/api/context-window");o.contextWindowSaving=!0,o.contextWindowError="";try{const u=await Te(n.url,{value:e},!0);if(!n.isCurrent())return;const p=Number(u.contextWindowTokens);if(u.deferred)o.pendingSessionSettings.contextWindowTokens=p;else{delete o.pendingSessionSettings.contextWindowTokens;const y=((c=o.status)==null?void 0:c.metrics)||{};o.status={...o.status,metrics:{...y,contextWindowTokens:p,contextWindowSource:"session",contextUsageRatio:p>0?Number(y.estimatedInputTokens||0)/p:void 0}},Gr()}Cs(),As("上下文窗口",u),await Ts(n)}catch(u){n.isCurrent()&&(o.contextWindowError=Je(u,"调整失败"))}finally{n.isCurrent()&&(o.contextWindowSaving=!1)}}function bu(){const e=!ds.value,n=++dt,c=Es("/api/fast-mode");o.fastModeDraft=e,o.fastModeMutating=!0,Bt=Bt.catch(()=>{}).then(()=>Te(c.url,{enabled:e},!0)).then(async u=>{!c.isCurrent()||n!==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(c,()=>n===dt))}).catch(async u=>{if(!(!c.isCurrent()||n!==dt)){o.fastModeMutating=!1,Qe(u,"快速模式切换失败");try{const p=await ke(c.url.replace("/api/fast-mode?","/api/state?")),y=await p.json();p.ok&&c.isCurrent()&&n===dt&&Ss(y)}catch{}}})}async function Ms(){o.activePanel="sessions",o.sessionsLoading=!0;try{if(i.value){const e=await ke("/api/admin/sessions"),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw vt(n,e.status);o.sessions=(n.groups||[]).flatMap(c=>(c.sessions||[]).map(u=>({...u,ownerUsername:c.user.username,ownerDeleted:c.user.deleted===!0}))),o.runningSessionIds=[]}else{const e=await ke(F("/api/sessions")),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error||(n==null?void 0:n.ok)===!1)throw vt(n,e.status);o.sessions=n.sessions||[],o.runningSessionIds=n.runningSessionIds||[]}}catch(e){Qe(e,"加载会话失败")}finally{o.sessionsLoading=!1}}async function Rs(){if(i.value){o.activePanel="users",o.adminUsersLoading=!0,o.adminUserError="";try{const e=await ke("/api/admin/users"),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw vt(n,e.status);o.adminUsers=n.users||[]}catch(e){o.adminUserError=Je(e,"加载用户失败")}finally{o.adminUsersLoading=!1}}}async function ku(){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})}),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw vt(n,e.status);Z.value="",X("普通用户已创建"),await Rs()}catch(e){o.adminUserError=Je(e,"创建用户失败")}finally{o.adminUserBusy=!1}}async function yu(e){if(window.confirm(`删除账号 ${e.username}?历史会话将保留。`)){o.adminUserBusy=!0,o.adminUserError="";try{const n=await ke("/api/admin/users/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.username})}),c=await n.json().catch(()=>({}));if(!n.ok||c!=null&&c.error)throw vt(c,n.status);X("普通用户已删除"),await Rs()}catch(n){o.adminUserError=Je(n,"删除用户失败")}finally{o.adminUserBusy=!1}}}async function vu(e){const n=typeof e=="object"?e:{sessionId:e},c=n.sessionId,u=_,p=A,y=Ge.adminOwnerUsername;if(i.value&&n.ownerUsername&&(Ge.adminOwnerUsername=n.ownerUsername,sessionStorage.setItem(Qn,n.ownerUsername)),o.pendingResumeSessionId=c,o.sessionResumeLoading=!0,await ra(c))o.activePanel="chat",X(i.value?`已打开 ${n.ownerUsername} 的会话`:"已打开会话");else{Ge.adminOwnerUsername=y,y?sessionStorage.setItem(Qn,y):sessionStorage.removeItem(Qn);const N=await oa(u,p);X(N?"打开会话失败,已恢复原会话":"打开会话失败,运行时连接已断开")}o.sessionResumeLoading=!1,o.pendingResumeSessionId=""}async function $r(){try{const e=await ke(F("/api/cpa-quota"));if(!e.ok)throw new Error(`cpa-quota ${e.status}`);const n=await e.json();o.cpaQuotas=Array.isArray(n==null?void 0:n.quotas)?n.quotas:[],o.cpaQuotaIndex>=o.cpaQuotas.length&&(o.cpaQuotaIndex=0),n!=null&&n.config&&(o.cpaConfig.loaded||(o.cpaConfig.url=String(n.config.url||""),o.cpaConfig.password=n.config.hasPassword?ir:"",o.cpaConfig.loaded=!0),o.cpaConfig.hasPassword=!!n.config.hasPassword)}catch{o.cpaQuotas=[],o.cpaQuotaIndex=0}}async function Ri(){try{const e=await ke(F("/api/memory"));if(!e.ok)throw new Error(`memory ${e.status}`);const n=await e.json();o.memory={current:(n==null?void 0:n.current)||null,history:Array.isArray(n==null?void 0:n.history)?n.history:[],sampleMs:Number(n==null?void 0:n.sampleMs)||6e4,retentionMs:Number(n==null?void 0:n.retentionMs)||864e5}}catch{}}async function Ns(){if(i.value)return;Is();const e=_,n=A;if(no(),_=j(),A="",S=!0,sessionStorage.setItem(v,_),sessionStorage.removeItem(I),o.sessionResumeLoading=!0,o.pendingResumeSessionId="",await Mn({silent:!0}))o.activePanel="chat",X("已创建新会话"),_s();else{const u=await oa(e,n);X(u?"新建会话失败,已恢复原会话":"新建会话失败,运行时连接已断开")}o.sessionResumeLoading=!1}function Or(e){var n;return!!e&&String(((n=o.session)==null?void 0:n.sessionId)||"")===String(e)}function Dr(e){return o.runningSessionIds.includes(e)}async function wu(e){const n=o.sessions.find(u=>u.sessionId===e);if(Or(e)){X(w.SESSION_ACTIVE);return}if(Dr(e)){X(w.SESSION_RUNNING);return}if(await On({title:"删除会话?",message:`“${(n==null?void 0:n.title)||e||"这个会话"}”删除后无法恢复。`,confirmLabel:"确认删除",tone:"danger"}))try{await Te("/api/sessions/delete",{sessionId:e}),await Ms(),X("会话已删除")}catch(u){Qe(u,"删除会话失败")}}async function Pn(e){if(!l.value)return;o.activePanel="settings",o.settingsPage="";const n=e?`?provider=${encodeURIComponent(e)}`:"";try{const c=await ke(F(`/api/login${n}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,c.status);o.login=u,Fe.value=u.provider,Object.keys(st).forEach(p=>delete st[p]),Object.assign(st,u.values||{}),await Promise.all([$r(),$c(),Rc()])}catch(c){Qe(c,"加载模型配置失败")}}async function Ni(e){X(e!=null&&e.deferred?"已保存,下一轮生效":"提示词已保存"),await Rn()}async function _u(){await Pn(Fe.value)}async function Li(){var u;if(!l.value)return;const[e,n]=await Promise.allSettled([Te("/api/login",{provider:Fe.value,values:{...st}}),Te("/api/cpa-config",{url:o.cpaConfig.url,password:o.cpaConfig.password===ir?"":o.cpaConfig.password,preservePassword:o.cpaConfig.hasPassword&&(!o.cpaConfig.password||o.cpaConfig.password===ir)})]);if(n.status==="fulfilled"){const p=n.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?ir:""}if(e.status==="fulfilled"&&n.status==="fulfilled"){X("模型配置已保存");return}const c=[];e.status==="rejected"&&c.push(Je(e.reason,"模型配置保存失败")),n.status==="rejected"&&c.push(Je(n.reason,"CPA 配置保存失败")),X(c.join(";"))}function Pr(e){const n=Number.parseFloat(String(e??"").replace("%",""));return Number.isFinite(n)?Math.max(0,Math.min(100,n)):0}function $i(e){const n=Number.parseFloat(String(e??"").replace("%",""));if(!Number.isFinite(n))return"—";const c=Pr(n);return`${c.toFixed(c%1?1:0)}%`}function Oi(e){const n=new Date(e);return Number.isNaN(n.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n)}function Di(e){const n=new Date(e);return Number.isNaN(n.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n)}function Pi(e){const n=o.cpaQuotas.length;n<2||(o.cpaQuotaIndex=(o.cpaQuotaIndex+e+n)%n)}function xu(e){const n=String(e||"").trim();if(!n)return"Codex 凭据";const[c,u]=n.split("@");return!u||c.length<=3?n:`${c.slice(0,3)}***@${u}`}function Ls(e){const n=Number(e);if(!Number.isFinite(n)||n<0)return"—";const c=n/1024/1024;return`${c.toFixed(c>=100?0:1)} MB`}function Su(e){const n=new Date(e);return Number.isNaN(n.getTime())?"等待采样":new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(n)}function Eu(e){const n=new Date(e);return Number.isNaN(n.getTime())?"—":new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(n)}function Tu(e){const n=vs.value.length;if(!n)return;const c=e.currentTarget.getBoundingClientRect(),u=Math.min(1,Math.max(0,(e.clientX-c.left)/Math.max(1,c.width)));St.value=n===1?0:Math.round(u*(n-1))}function Ui(){St.value=-1}async function Te(e,n,c=!1){const u=await ke(c?e:F(e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)}),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 Iu extends Error{constructor(n,c=""){super(n),this.name="ActionRequestError",this.code=c}}function vt(e,n){const c=String((e==null?void 0:e.errorCode)||(n===404?"API_NOT_FOUND":""));return new Iu((e==null?void 0:e.error)||`请求失败(${n})`,c)}function Je(e,n="操作失败"){const c=String((e==null?void 0:e.code)||"");if(c&&w[c])return w[c];const u=String((e==null?void 0:e.message)||e||"").trim();return u?`${n}:${u}`:n}function Qe(e,n){X(Je(e,n))}function Ht(e){const n=Ud(Pd(Dd(e.text||"")));return e.kind==="system"||e.kind==="meta"?Au(n):n}function Au(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 n;if(e.kind==="tool"||e.toolName){const c=Gt(e);return(n=e==null?void 0:e.toolPresentation)!=null&&n.label?String(e.toolPresentation.label):Un(e)?"任务计划":e.title?g[e.title]||g[String(e.title).toLowerCase()]||e.title:g[c]||c}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 Un(e){return(e==null?void 0:e.kind)==="tool"&&Gt(e)==="plan_update"}function Cu(e){return Un(e)||ot(e)||ln(e).length>0}function Ur(e){return(e==null?void 0:e.kind)==="meta"&&String((e==null?void 0:e.title)||"")==="提示词用法"}function Bn(e){return!!(e!=null&&e.compaction&&typeof e.compaction=="object")}function Mu(e){var n;return(n=e==null?void 0:e.compaction)!=null&&n.modelDriven?"模型生成摘要":"确定性摘要"}function rn(e){Bn(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 zn(e){return((e==null?void 0:e.kind)==="tool"||(e==null?void 0:e.kind)==="error"&&(e==null?void 0:e.toolName))&&!Cu(e)}function Br(e){return(e==null?void 0:e.kind)==="tool-group"&&Array.isArray(e.lines)}function Ru(e){return!e||e.presentationLevel==="primary"||Ur(e)||e.kind==="user"||e.kind==="assistant"?!0:ot(e)}function Nu(e){return!e||Ru(e)?!1:["thinking","tool","error","meta","system","agent"].includes(String(e.kind||"system"))}function Lu(e){const n=[];let c=[];const u=()=>{if(!c.length)return;const p=c.some(y=>(y==null?void 0:y.kind)!=="thinking");c.length===1||!p?n.push(...c):n.push({id:`tool-group:${c[0].id}`,kind:"tool-group",lines:c,live:c.some(y=>(y==null?void 0:y.live)===!0)}),c=[]};for(const p of e||[])Nu(p)?c.push(p):(u(),n.push(p));return u(),n}function on(e){return o.expandedToolGroups[e==null?void 0:e.id]===!0}function $u(e,n){if(Br(e))return Ma(n,()=>{o.expandedToolGroups[e.id]=!on(e)})}function Bi(e){const n=new Map;for(const u of(e==null?void 0:e.lines)||[]){const p=(u==null?void 0:u.kind)==="thinking"?"思考":jt(u);p&&n.set(p,(n.get(p)||0)+1)}const c=[...n.entries()].map(([u,p])=>({name:u,count:p}));return c.length?c:[{name:"过程",count:1}]}function zr(e){return((e==null?void 0:e.lines)||[]).flatMap((n,c)=>{var p;const u=String(((p=n==null?void 0:n.toolDisplay)==null?void 0:p.purpose)||"").trim();return u?[{id:`${n.id}:purpose:${c}`,text:u,live:(n==null?void 0:n.live)===!0}]:[]})}let zi;function Fi(e,n){Nt(e)&&(zi=document.activeElement,o.toolDetailLineId=e.id,document.body.classList.add("tool-detail-open"),Ye(()=>{var c;return(c=document.querySelector(".tool-result-modal-close"))==null?void 0:c.focus()}))}function Ou(e){return cn(fe.parse(String(e??"")))}function an(){o.toolDetailLineId=void 0,document.body.classList.remove("tool-detail-open");const e=zi;Ye(()=>{e!=null&&e.isConnected&&e.focus()})}function Du(e){if(e.key!=="Tab")return;const n=Array.from(e.currentTarget.querySelectorAll('button:not(:disabled), [tabindex="0"]')),c=n[0],u=n.at(-1);e.shiftKey&&document.activeElement===c?(e.preventDefault(),u==null||u.focus()):!e.shiftKey&&document.activeElement===u&&(e.preventDefault(),c==null||c.focus())}function Hi(e){var u;const n=e.target instanceof HTMLImageElement?e.target:null;if(!n||n.closest(".image-preview-modal"))return;const c=((u=n.closest("[data-preview-src]"))==null?void 0:u.dataset.previewSrc)||n.currentSrc||n.src;c&&(e.preventDefault(),e.stopPropagation(),Pu(c,n.alt))}async function ji(e){const n=e.target instanceof Element?e.target.closest('a[data-resource-download="true"]'):null;if(!(n instanceof HTMLAnchorElement))return;e.preventDefault(),e.stopPropagation();const c=Number(n.dataset.resourceExpiresAt);if(Number.isFinite(c)&&c>0&&Date.now()>=c){X("下载链接已过期,请重新生成");return}try{const u=await ke(n.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=n.download||"download",document.body.appendChild(y),y.click(),y.remove(),setTimeout(()=>URL.revokeObjectURL(p),3e4)}catch{X("下载失败,请稍后重试")}}function Pu(e,n=""){o.imagePreview={src:String(e||""),caption:String(n||"").trim()},document.body.classList.add("image-preview-open")}function Fr(){o.imagePreview=void 0,document.body.classList.remove("image-preview-open")}function Ct(e){return Rh(e)}function Gi(e){return Bu(e).summary}function qi(e){var n;return(((n=e==null?void 0:e.toolDisplay)==null?void 0:n.previews)||[]).filter(c=>c.content!==void 0&&c.content!==null&&String(c.content).trim()!=="")}function Mt(e){var n;return Array.isArray((n=e==null?void 0:e.toolStream)==null?void 0:n.steps)?e.toolStream.steps:[]}function Rt(e){return Gt(e)==="subagent_run"}function Os(e){return["file_write","file_edit","write_file","edit_file"].includes(Gt(e).toLowerCase())}function Hr(e){const n=Gt(e).toLowerCase();return n==="terminal_run"||n==="terminal_control"}function Wi(e){var n;return Array.isArray((n=e==null?void 0:e.toolDisplay)==null?void 0:n.previews)&&e.toolDisplay.previews.length>0&&(!Gt(e).startsWith("subagent_")||Gt(e)==="subagent_message")&&!(Hr(e)&&(e==null?void 0:e.live)===!0&&Uu(e))}function Fn(e){var y,E,N,H;const n=Array.isArray((y=e==null?void 0:e.toolStream)==null?void 0:y.chunks)?e.toolStream.chunks:[];if(n.length)return n.map(U=>String((U==null?void 0:U.text)||"")).join("").trimEnd();const c=String(((E=e==null?void 0:e.toolStream)==null?void 0:E.stdout)||""),u=String(((N=e==null?void 0:e.toolStream)==null?void 0:N.stderr)||""),p=String(((H=e==null?void 0:e.toolStream)==null?void 0:H.output)||"");return[c,u,p].filter(Boolean).join(`
|
|
96
|
+
`).trimEnd()}function Hn(e){var u,p,y;const n=String(((u=e==null?void 0:e.toolStream)==null?void 0:u.message)||"").trim(),c=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 n&&n!==c?n:""}function Ki(e){return Mt(e).map(n=>`${(n==null?void 0:n.status)==="completed"?"✓":(n==null?void 0:n.status)==="failed"?"×":"•"} ${String((n==null?void 0:n.message)||"").trim()}${(n==null?void 0:n.status)==="unknown"||!(e!=null&&e.live)&&(n==null?void 0:n.status)==="running"?"(阶段结果未提供)":""}`.trimEnd()).join(`
|
|
97
|
+
`)}function Ds(e){const n=new Map;for(const c of Mt(e)){const u=String((c==null?void 0:c.toolName)||"").trim();if(!u)continue;const p=n.get(u);n.set(u,{label:(p==null?void 0:p.label)||String((c==null?void 0:c.toolLabel)||u),count:((p==null?void 0:p.count)||0)+1})}return[...n.entries()].map(([c,u])=>({name:c,label:u.label,count:u.count}))}function Vi(e){return Mt(e).flatMap((n,c)=>{const u=String((n==null?void 0:n.message)||"").trim();return u?[{key:`${n.key}:${c}`,purpose:u}]:[]})}function Ps(e){return o.expandedToolGroups[`agent:${e==null?void 0:e.id}`]===!0}function Zi(e,n){return Ma(n,()=>{const c=`agent:${e==null?void 0:e.id}`;o.expandedToolGroups[c]=!o.expandedToolGroups[c]})}function Uu(e){return!!(Hn(e)||Mt(e).length||Fn(e))}function Us(e){var p,y,E;const n=Number((p=e==null?void 0:e.toolStream)==null?void 0:p.current),c=Number((y=e==null?void 0:e.toolStream)==null?void 0:y.total);if(!Number.isFinite(n))return"";const u=String(((E=e==null?void 0:e.toolStream)==null?void 0:E.unit)||"").trim();return Number.isFinite(c)&&c>0?`${n}/${c}${u?` ${u}`:""}`:`${n}${u?` ${u}`:""}`}function Bu(e){const n=(e==null?void 0:e.live)===!0,c=(e==null?void 0:e.titleStatus)==="failure"||(e==null?void 0:e.kind)==="error",u=n?{key:"running",label:"运行中"}:c?{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 zu(e,n){const c=String(e||"").replace(/\s+/g," ").trim();return c.length>n?`${c.slice(0,n)}…`:c}function ot(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.toolName)||"").toLowerCase()==="image_create"}function jr(e){return(e==null?void 0:e.live)&&ot(e)}function Qi(e){return ot(e)&&(e==null?void 0:e.pendingReplacement)===!0}function Fu(e){var c,u;if(Ys(e)&&!ot(e)||((c=e==null?void 0:e.toolPresentation)==null?void 0:c.visibility)==="hidden"&&(e==null?void 0:e.kind)!=="error")return!0;if((e==null?void 0:e.kind)!=="user")return!1;const n=va(e);return Fd(n)?String((u=Hd(n))==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 Hu(e){const n=new Set,c=Date.now();for(const u of e||[]){if(!jr(u))continue;const p=String(u.id);n.add(p),o.liveToolStartedAt[p]||(o.liveToolStartedAt[p]=c)}for(const u of Object.keys(o.liveToolStartedAt))n.has(u)||delete o.liveToolStartedAt[u]}function jn(e){if(!jr(e))return"";const n=o.liveToolStartedAt[String(e.id)];return n?Wt(o.clockTick-n):""}function Gr(){var n,c,u,p,y,E,N,H,U;const e=(c=(n=o.status)==null?void 0:n.metrics)==null?void 0:c.contextUsageRatio;qr("context",e===void 0?0:e*100),qr("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)),qr("outputTokens",Number(((H=(N=o.status)==null?void 0:N.usage)==null?void 0:H.outputTokens)??((U=o.status)==null?void 0:U.streamedOutputTokens)??0))}function qr(e,n){const c=o.composerMetrics[e],u=Number.isFinite(n)?Math.max(0,n):0;if(!c.initialized){c.display=u,c.target=u,c.initialized=!0;return}Math.abs(c.target-u)<.001||(c.target=u,c.bump+=1,ju())}function ju(){if(Ze)return;const e=()=>{let n=!1;for(const c of Object.values(o.composerMetrics)){const u=c.target-c.display;if(Math.abs(u)<.01){c.display=c.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,c.target*.006+1);c.display+=u*p+y,c.display<0&&(c.display=0),n=!0}n?Ze=requestAnimationFrame(e):Ze=0};Ze=requestAnimationFrame(e)}function Wr(e){return`bump-${o.composerMetrics[e].bump%2}`}function Gu(e=[]){return new Map(e.map(n=>[String(n.taskId||n.agentId||n.description||n.type),n.status]))}function qt(e){var c;const n=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||((c=o.session)==null?void 0:c.sessionId)||""}:${n}`:n}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 n=Bs(e);return n.length>72?`${n.slice(0,72)}…`:n}function Yi(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=Mh(e,o.clockTick);return p===void 0?"":Wt(p)}const n=e==null?void 0:e.createdAt,c=Number(n),u=Number.isFinite(c)&&c>0?c:Date.parse(String(n||""));return!Number.isFinite(u)||u<=0?"":Wt((e!=null&&e.completedAt?Date.parse(e.completedAt):o.clockTick)-u)}function Ji(e){return String((e==null?void 0:e.prompt)||(e==null?void 0:e.command)||"").trim()}function Kr(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 qu(e="ready"){return{ready:"就绪",running:"运行中",preparing:"准备中",calling_model:"调用模型",thinking:"推理中",running_tools:"调用工具",injecting_context:"注入上下文",compacting:"压缩上下文",stopped:"已停止",error:"出错"}[e]||e}function Vr(e){return{pending:"排队中",running:"运行中",completed:"已完成",failed:"失败",killed:"已停止",stopped:"已停止",exited:"已退出",lost:"已失联",unknown:"未提供"}[e]||(e?"未知状态":"未提供")}function Zr(e){return f[e]||e}function Wu(e){return(e||[]).map(n=>({value:n,label:h[n]||n}))}function Ku(e){return((e==null?void 0:e.options)||[]).map(n=>({value:n,label:n||"默认"}))}function Vu(e){return!["ansi","plain","diff"].includes(e.format)&&(Ur(e)||["assistant","thinking","system","tool"].includes(e.kind))}function Zu(e){return JSON.stringify((e==null?void 0:e.inputSchema)||{},null,2)}function Qr(e){Ge.isolation&&e==="prompt"||(o.runtimeContextModal=e,o.runtimeContextDetail=void 0,document.body.classList.add("runtime-context-open"),e==="plugins"&&Rr(),e==="tools"&&ws())}function Yr(){o.runtimeContextDetail=void 0,o.runtimeContextModal="",document.body.classList.remove("runtime-context-open")}function Jr(){o.runtimeContextDetail=void 0}function Qu(){o.projectContextOpen=!0,o.projectContextDocument=void 0,document.body.classList.add("runtime-context-open")}function Yu(e){o.projectContextDocument=e}function Xr(){if(o.projectContextDocument){o.projectContextDocument=void 0;return}o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")}async function Ju(){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 n=new URL("/api/cwd",window.location.origin);String(e||"").trim()&&n.searchParams.set("path",String(e).trim());const c=await ke(F(`${n.pathname}${n.search}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,c.status);eo(u)}catch(n){o.cwdPicker.error=Je(n,"无法打开路径")}finally{o.cwdPicker.loading=!1}}function Xu(e){return String(e||"").replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||String(e||"")}function eo(e){const n=String(e.cwd||""),c={name:Xu(n),path:n};o.cwdPicker.cwd=n,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=n,o.cwdPicker.selectedPath=e.fallback?"":n,o.cwdPicker.selectionExplicit=!1,o.cwdPicker.treeRoots=[c],o.cwdPicker.treeChildren={[n]:o.cwdPicker.entries},o.cwdPicker.treeExpanded={[n]:!0}}async function ed(e){const n=new URL("/api/cwd",window.location.origin);n.searchParams.set("path",e);const c=await ke(F(`${n.pathname}${n.search}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw vt(u,c.status);return Array.isArray(u.locations)&&(o.cwdPicker.locations=u.locations),u}async function td(e){const n=e.path;if(o.cwdPicker.treeExpanded[n]){o.cwdPicker.treeExpanded={...o.cwdPicker.treeExpanded,[n]:!1};return}o.cwdPicker.error="";try{if(!o.cwdPicker.treeChildren[n]){const c=await ed(n);o.cwdPicker.treeChildren={...o.cwdPicker.treeChildren,[n]:c.entries||[]}}o.cwdPicker.treeExpanded={...o.cwdPicker.treeExpanded,[n]:!0}}catch(c){o.cwdPicker.error=Je(c,"无法展开路径")}}function nd(e){o.cwdPicker.selectedPath=e.path,o.cwdPicker.selectionExplicit=!0,o.cwdPicker.input=e.path}async function sd(){const e=String(o.cwdPicker.input||"").trim();if(e){o.cwdPicker.mutating=!0,o.cwdPicker.error="";try{const n=await Te("/api/cwd/create",{path:e});eo(n)}catch(n){o.cwdPicker.error=Je(n,"新建失败")}finally{o.cwdPicker.mutating=!1}}}async function rd(e){if(await On({title:"删除文件夹?",message:e.path,confirmLabel:"删除",tone:"danger"})){o.cwdPicker.mutating=!0;try{const c=await Te("/api/cwd/delete",{path:e.path});eo(c)}catch(c){o.cwdPicker.error=Je(c,"删除失败")}finally{o.cwdPicker.mutating=!1}}}async function od(){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 n=await Te("/api/cwd/change",{path:e});o.cwd=n.cwd||e,o.cwdPicker.open=!1,document.body.classList.remove("cwd-picker-lock"),await Rn(),X(n.unchanged?"工作目录未变":"工作目录已切换")}catch(n){o.cwdPicker.error=Je(n,"切换失败")}finally{o.cwdPicker.mutating=!1}}}function id(e){e&&(o.runtimeContextDetail={kind:"tool",title:e.name,meta:e.strict?"严格模式":"兼容模式",description:e.description||"",schema:Zu(e)})}function Gs(e){if(Un(e))return ld(e);if(Nt(e))return oo(e);if(ln(e).length)return la(e);if(dd(e))return hd(e);if(gd(e))return fd(e);const n=Ht(e),c=ca(e),u=c.map(N=>`${N.kind}:${N.reference||""}:${N.url}:${N.label||N.downloadName||""}:${N.expiresAt||""}`).join("|"),p=[e.id,e.kind,e.format,e.title,e.titleStatus,e.live?"1":"0",u,n].join(""),y=bt.get(p);if(y!==void 0)return y;let E;return e.format==="diff"?E=na(n):e.format==="ansi"||!Vu(e)?E=Na(Se(Xs(n))):E=yd(cn(fe.parse(n||""),c.map(ua)),c),bt.set(p,E),E}function ad(e){if(!e)return"";if(ot(e))return Td(e);const n=Ht(e);if(e.format==="diff"||/(?:^|\n)---\s+.+\n\+\+\+\s+/.test(n))return na(n);if(e.format==="ansi")return`<pre class="tool-detail-pre">${Se(Xs(n))}</pre>`;const c=ro(n);if(c){const u=JSON.stringify(c,null,2);return cn(fe.parse(`\`\`\`json
|
|
98
|
+
${u}
|
|
99
|
+
\`\`\``))}return`<pre class="tool-detail-pre">${Se(Xs(n))}</pre>`}function ld(e){const n=cd(e),c=Array.isArray(n==null?void 0:n.items)?n.items:[];if(!n||!c.length)return cn(fe.parse(Ht(e)||""));const u=ea(c),p=Number.isFinite(Number(n.completed))?Number(n.completed):u.completed,y=Number.isFinite(Number(n.total))?Number(n.total):u.total,E=Se(n.title||"任务计划"),N=Xi(c);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">${N}</ol></section>`}function Xi(e,n=0){return e.map((c,u)=>{const p=ta(c==null?void 0:c.status),y=p==="completed"?"✓":p==="in_progress"?"●":p==="failed"?"!":String(u+1),E=Array.isArray(c==null?void 0:c.subitems)?c.subitems:[],N=E.length?`<ol class="plan-subitems" aria-label="${Se((c==null?void 0:c.description)||`步骤 ${u+1}`)}的子步骤">${Xi(E,n+1)}</ol>`:"";return`<li class="plan-item status-${p}" data-plan-depth="${n}"><div class="plan-item-row"><span class="plan-item-marker" role="img" aria-label="${ud(p)}">${y}</span><span class="plan-item-text">${Se((c==null?void 0:c.description)||`步骤 ${u+1}`)}</span></div>${N}</li>`}).join("")}function ea(e){return e.reduce((n,c)=>{if(n.total+=1,ta(c==null?void 0:c.status)==="completed"&&(n.completed+=1),Array.isArray(c==null?void 0:c.subitems)&&c.subitems.length){const u=ea(c.subitems);n.total+=u.total,n.completed+=u.completed}return n},{total:0,completed:0})}function cd(e){const n=String((e==null?void 0:e.text)||""),c=ro(n),u=c!=null&&c.output&&typeof c.output=="object"?c.output:c;if(Array.isArray(u==null?void 0:u.items))return u;const p=n.split(/\r?\n/).map(U=>U.trim()).filter(Boolean),y=/^(\d+)\s*\/\s*(\d+)\s+completed/i.exec(p[0]||""),N=p.filter(U=>/^[-*]\s+/.test(U)).map(U=>{let le=U.replace(/^[-*]\s+/,"").trim(),_e="pending";return/^~~[\s\S]+~~$/.test(le)?(_e="completed",le=le.slice(2,-2).trim()):/^[▶►●]\s*/.test(le)?(_e="in_progress",le=le.replace(/^[▶►●]\s*/,"").trim()):/^[!✗×]\s*/.test(le)&&(_e="failed",le=le.replace(/^[!✗×]\s*/,"").trim()),{description:le,status:_e}});return{title:"当前执行计划",note:p.slice(y?1:0).filter(U=>!/^[-*]\s+/.test(U)).join(" "),items:N,completed:y?Number(y[1]):N.filter(U=>U.status==="completed").length,total:y?Number(y[2]):N.length}}function ta(e){const n=String(e||"pending").toLowerCase().replace(/[\s-]+/g,"_");return n==="complete"||n==="done"?"completed":n==="running"||n==="inprogress"?"in_progress":n==="error"?"failed":["completed","in_progress","failed","pending"].includes(n)?n:"pending"}function ud(e){return{completed:"已完成",in_progress:"进行中",failed:"失败",pending:"待处理"}[e]||"待处理"}function na(e){return`<pre class="diff-block">${Se(e)}</pre>`}function Nt(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 dd(e){const n=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&n==="image_note"}function gd(e){const n=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&n==="skill_read"}function fd(e){return cn(fe.parse(`技能${pd((e==null?void 0:e.text)||"")}`))}function pd(e){var p,y,E;const n=String(e||""),c=((p=/\bname:\s*([^\s]+)/i.exec(n))==null?void 0:p[1])||((y=/(?:^|\s)skill:\s*([^\s]+)/i.exec(n))==null?void 0:y[1])||((E=/(?:^|\s)id:\s*([^\s]+)/i.exec(n))==null?void 0:E[1]),u=String(c||"").trim();return u||""}function hd(e){return cn(fe.parse(`图片记录${md((e==null?void 0:e.text)||"")}`))}function md(e){const n=bd(e);return n?` ${n}`:""}function bd(e){var N,H,U,le,_e;const n=String(e||""),c=(N=/(?:^|\s)(?:storagePath|path|file|filename):\s*([^\s]+\.(?:png|jpe?g|webp|gif|bmp|avif|txt))/i.exec(n))==null?void 0:N[1],u=c?to(c.split(/[\\/]/).pop()||""):"";if(u)return u;const p=(H=/(?:^|\s)imageRef:\s*([^\s]+)/i.exec(n))==null?void 0:H[1],y=to(p||"");if(y)return y;const E=((U=/(?:^|\s)tags:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(n))==null?void 0:U[1])||((le=/(?:^|\s)detectedText:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(n))==null?void 0:le[1])||((_e=/(?:^|\s)caption:\s*([^.,,。;\n\r]{2,24})/i.exec(n))==null?void 0:_e[1]);return to(E||"")}function to(e){let n=String(e||"").trim();return n=n.replace(/\.base64\.txt$/i,"").replace(/\.(?:png|jpe?g|webp|gif|bmp|avif|txt)$/i,""),n=n.replace(/^[-*]\s*/,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim(),!n||/^ok$/i.test(n)?"":n.length>18?`${n.slice(0,18)}...`:n}async function sa(){if(!(O||!A)){O=!0;try{if(!await ra(A))throw new Error("无法重新绑定目标会话")}catch(e){X(`会话恢复失败:${e.message||e}`)}finally{O=!1}}}async function ra(e){var u;const n=String(e||"").trim();return!n||(n!==A&&Is(),no(),A=n,S=!1,sessionStorage.setItem(I,n),!await Mn({silent:!0})||String(((u=o.session)==null?void 0:u.sessionId)||"")!==n)?!1:(_s(),!0)}async function oa(e,n){Is(),no(),_=e,A=n,S=!n,sessionStorage.setItem(v,e),n?sessionStorage.setItem(I,n):sessionStorage.removeItem(I);const c=await Mn({silent:!0});return c&&_s(),c}function no(){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(n=>n&&typeof n=="object"&&typeof n.url=="string"&&n.url):[]}function so(e){return ln(e).filter(n=>n.kind==="embed")}function ia(e){return ln(e).filter(n=>n.kind!=="embed")}function kd(e){const n=new URL(e.url,window.location.origin);return n.searchParams.set("theme",ae.value),n.origin===window.location.origin?tt(`${n.pathname}${n.search}${n.hash}`):n.href}function aa(e){const n=Number(e==null?void 0:e.height);return Number.isFinite(n)?Math.max(240,Math.min(1600,Math.round(n))):640}function la(e){const n=ia(e);return n.length?`<div class="resource-result"><div class="resource-grid">${n.map((u,p)=>{const y=Se(u.label||u.downloadName||`资源 ${p+1}`),E=Se(tt(u.url)),N=u.sizeBytes?co(u.sizeBytes):"",H=u.expiresAt?wd(u.expiresAt):"",U=[N,H].filter(Boolean).join(" · "),le=u.kind==="download"||u.downloadName,_e=le?"下载":"打开",k=le?` download="${Se(u.downloadName||u.label||"")}"`:' target="_blank" rel="noreferrer noopener"';if(le){const T=Se(N.replace(/\s+/g,"")),Ue=Number(u.expiresAt)||0;return`<a class="resource-file-link" href="${E}"${k} data-resource-download="true" data-resource-expires-at="${Ue}"><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(U||(le?"文件已就绪":"资源已就绪"))}</span></span><span class="resource-action"><span>${_e}</span><i aria-hidden="true">${le?"↓":"↗"}</i></span></a>`}).join("")}</div></div>`:Na(Se(Xs(Ht(e))))}function ca(e){if((e==null?void 0:e.kind)!=="assistant")return[];const n=o.lines||[],c=n.findIndex(E=>String(E==null?void 0:E.id)===String(e==null?void 0:e.id)),u=c>=0?c:n.length,p=[],y=new Set;for(let E=0;E<u;E+=1){const N=n[E];if(!(N!=null&&N.live))for(const H of ln(N))y.has(H.url)||(y.add(H.url),p.push(H))}return p}function yd(e,n){if(!n.length)return e;const c=new Map(n.map(p=>[ua(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=c.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=`(${co(E.sizeBytes).replace(/\s+/g,"")})`)))}return u.innerHTML}function ua(e){return String((e==null?void 0:e.reference)||"").trim()}function ro(e){const n=String(e||"");if(!n.includes("{"))return null;const c=vd(n);c.sort((u,p)=>u.start-p.start||p.end-u.end);for(const{start:u,end:p}of c)try{return JSON.parse(n.slice(u,p+1))}catch{}return null}function vd(e){const n=[],c=[];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(c.length&&E==='"'){u=!0;continue}if(E==="{"){c.push(y);continue}E==="}"&&c.length&&n.push({start:c.pop(),end:y})}return n}function wd(e){const n=Number(e);if(!Number.isFinite(n))return"";const c=n-Date.now();return c<=0?"已过期":`${Wt(c)} 后过期`}function _d(e){return Kt(e).length||Nt(e)?oo(e):xd(e)}function xd(e){const n=Sd(e),c=n.prompt?`<div class="image2-stage-prompt"><p>${Se(zu(n.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>${c}</div>`}function Sd(e){const n=ro((e==null?void 0:e.text)||"")||{},c=n.input||n.arguments||n.args||n;return{mode:String(c.mode||"").toLowerCase(),model:String(c.model||""),size:String(c.size||""),prompt:String(c.prompt||"")}}function oo(e){const n=ga(e.text||"",e.imageResult),c=String(e.text||""),p=(e.titleStatus?e.titleStatus==="failure":/^(?:image_create\s+)?(?:failed|failure|error)\b/i.test(c.trim()))?"生成失败":n.mode==="edit"||/^edited\b/i.test(c.trim())?"修改完成":"生成完成",y=[n.count?`${n.count} 张`:"",n.model,`请求尺寸 ${Io(n.size).requested}`,n.quality,n.outputFormat,n.sourceImages?`源图 ${n.sourceImages} 张`:"",n.duration].filter(Boolean);return`<div class="image2-result"><div class="image2-summary"><strong>${Se(p)}</strong>${y.map(E=>`<span>${Se(E)}</span>`).join("")}</div></div>`}const qs=Dh(),Ws=re([]);let io=0;const da=V(()=>{var n;const e=rt.value;return JSON.stringify([((n=o.session)==null?void 0:n.sessionId)||"",e==null?void 0:e.id,e==null?void 0:e.toolUseId,e==null?void 0:e.messageId,e&&Nt(e)?Kt(e).map(c=>[c.originalDecodeUrl,c.available,un(c)]):[]])});Pe(da,async e=>{var y;const n=++io;Ws.value=[],qs.clear();const c=((y=o.session)==null?void 0:y.sessionId)||"";qs.setSession(c);const u=rt.value;if(!u||!Nt(u))return;const p=Kt(u);Ws.value=p.map(E=>({state:E.available?"loading":"unavailable"})),await Promise.all(p.map(async(E,N)=>{const H=await qs.load({sessionId:c,originalUrl:E.originalDecodeUrl,available:E.available});n!==io||e!==da.value||H.state==="stale"||(Ws.value[N]=H)}))},{immediate:!0,flush:"sync"}),Jt(()=>{++io,qs.clear()});function Ed(e,n){const c=Kt(e);return c.length?c.map((u,p)=>{const y=Ws.value[p],E=Io(n,u.available?y:{state:"unavailable"}),N=(y==null?void 0:y.state)==="loading"&&u.available?"加载中…":E.actual,H=Ph(e,u),U=`<div><dt>Alpha 通道</dt><dd>${ml(H==null?void 0:H.hasAlphaChannel)}</dd></div><div><dt>透明像素</dt><dd>${ml(H==null?void 0:H.hasTransparentPixels)}</dd></div>`;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(N)}</dd></div>${U}</dl>${E.mismatch?"<p>实际尺寸与请求尺寸不同(保留原图)</p>":""}</section>`}).join(""):"<p>实际尺寸:未知(未提供原图资源)</p>"}function Td(e){const n=ga((e==null?void 0:e.text)||"",e==null?void 0:e.imageResult),c=[["模型",n.model],["模式",n.mode],["请求尺寸",Io(n.size).requested],["质量",n.quality],["格式",n.outputFormat],["背景",n.background],["图片数量",n.count?`${n.count} 张`:""],["源图数量",n.sourceImages?`${n.sourceImages} 张`:""],["耗时",n.duration],["语义名称",n.semanticName],["开始时间",n.startedAt],["完成时间",n.finishedAt]].filter(([,E])=>E),u=c.length?`<dl class="image2-detail-grid">${c.map(([E,N])=>`<div><dt>${Se(E)}</dt><dd>${Se(N)}</dd></div>`).join("")}</dl>`:"",p=n.prompt?`<section class="image2-detail-prompt"><span>调用提示词</span><p>${Se(n.prompt)}</p></section>`:'<section class="image2-detail-prompt empty"><span>调用提示词</span><p>当前历史记录未保存提示词;新执行的 image_create 调用会在这里显示。</p></section>',y=n.revisedPrompt&&n.revisedPrompt!==n.prompt?`<section class="image2-detail-prompt"><span>修订提示词</span><p>${Se(n.revisedPrompt)}</p></section>`:"";return`<div class="image2-detail-view">${u}${Ed(e,n.size)}${p}${y}</div>`}function ga(e,n){const c=String(e||""),u=c.replace(/\s+/g," ").trim(),p=c.split(/\r?\n/).map(U=>U.trim()).filter(Boolean),y=/^(generated|edited)\s+(\d+)\s+images?/i.exec(p[0]||u),N=(p.find(U=>U.includes(" · "))||"").replace(/^requested:\s*/i,"").split(" · ").map(U=>U.trim()).filter(Boolean),H=Id(u,["duration","durationMs","elapsed","elapsedMs"]);return{provider:Ke(u,"provider",["model","prompt"])||N[0]||"",model:Ke(u,"model",["prompt"])||N[1]||"",prompt:Ke(u,"prompt",["revisedPrompt","mode","semanticName","size","quality","outputFormat","background","returnedImages","startedAt","finishedAt","duration"]),mode:Ke(u,"mode",["semanticName","prompt","size","quality"]),semanticName:Ke(u,"semanticName",["prompt","size","quality","outputFormat"]),size:Ke(u,"size",["quality","outputFormat","background","returnedImages","duration"])||N.find(U=>U==="auto"||/^\d+x\d+$/i.test(U))||"",quality:Ke(u,"quality",["outputFormat","background","returnedImages","duration"])||N.find(U=>["auto","low","medium","high","xhigh","max"].includes(U.toLowerCase()))||"",outputFormat:Ke(u,"outputFormat",["background","returnedImages","images","duration"])||N.find(U=>["png","jpeg","jpg","webp"].includes(U.toLowerCase()))||"",background:Ke(u,"background",["returnedImages","images","startedAt","finishedAt","duration"]),sourceImages:Ke(u,"source images",["prompt","mode","semanticName","duration"]),count:Ke(u,"returnedImages",["images","index","duration"])||(y==null?void 0:y[2])||"",revisedPrompt:Ke(u,"revisedPrompt",["mode","semanticName","raw","created","data","b64_json","background","output_format","quality","size","usage","startedAt","finishedAt","duration"]),usage:Ke(u,"usage",["duration"]),startedAt:Ke(u,"startedAt",["finishedAt","duration"]),finishedAt:Ke(u,"finishedAt",["duration"]),duration:H===void 0?"":Wt(H),...Object.fromEntries(Object.entries(n||{}).filter(([U,le])=>["model","size","quality","outputFormat","background","prompt","mode","semanticName"].includes(U)&&typeof le=="string"))}}function Ke(e,n,c){var E;const u=c.length?`(?=\\s(?:${c.map(Gn).join("|")}):)`:"$",y=new RegExp(`(?:^|\\s)${Gn(n)}:\\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 Id(e,n){for(const c of n){const u=new RegExp(`(?:^|\\s)${Gn(c)}:\\s*(\\d+(?:\\.\\d+)?)\\s*ms?\\b`,"i").exec(e);if(u)return Number(u[1])}}function Wt(e){const n=Math.max(0,Number(e)||0);if(n<1e3)return`${Math.round(n)}ms`;if(n<6e4)return`${(n/1e3).toFixed(n<1e4?1:0).replace(/\.0$/,"")}s`;const c=Math.floor(n/6e4),u=Math.round(n%6e4/1e3);return`${c}m ${u}s`}function Gn(e){return String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function cn(e,n=[]){const c=new Set(n.map(N=>String(N||"").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 N of E){if(!p.has(N.tagName)){N.replaceWith(document.createTextNode(N.textContent||""));continue}for(const H of Array.from(N.attributes)){const U=H.name.toLowerCase(),le=H.value;N.tagName==="A"&&U==="href"&&(cg(le)||c.has(le))||N.tagName==="A"&&U==="title"||N.tagName==="CODE"&&U==="class"&&/^language-[\w-]+$/.test(le)||N.tagName==="PRE"&&U==="data-lang"&&/^[\w-]+$/.test(le)||N.tagName==="INPUT"&&["type","checked","disabled"].includes(U)||N.removeAttribute(H.name)}N.tagName==="A"&&!c.has(N.getAttribute("href")||"")&&(N.setAttribute("target","_blank"),N.setAttribute("rel","noreferrer noopener"))}return Ad(u.content),u.innerHTML}function Ad(e){for(const n of e.querySelectorAll("pre > code")){const c=Cd(n.className),u=n.textContent||"",p=n.parentElement;p&&c&&p.setAttribute("data-lang",c);try{const y=c&&Ee.getLanguage(c)?Ee.highlight(u,{language:c,ignoreIllegals:!0}):u.length<=2e4?Ee.highlightAuto(u):void 0;if(!y)continue;n.innerHTML=y.value,n.className=["hljs",y.language?`language-${y.language}`:c?`language-${c}`:""].filter(Boolean).join(" "),p&&y.language&&!p.hasAttribute("data-lang")&&p.setAttribute("data-lang",y.language)}catch{n.textContent=u}}}function Cd(e){const n=/(?:^|\s)language-([\w-]+)/.exec(e||"")||/(?:^|\s)lang-([\w-]+)/.exec(e||"");if(!n)return"";const c=n[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"}[c]||c}function Md(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Ei())}function fa(e){var n;if(e.key==="Escape"&&o.confirmDialog.open){e.preventDefault(),sn(!1);return}if(e.key==="Escape"&&o.modelModalOpen){e.preventDefault(),Dn();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(),Xr();return}if(e.key==="Escape"&&o.cwdPicker.open){e.preventDefault(),Hs();return}if(e.key==="Escape"&&o.runtimeContextDetail){e.preventDefault(),Jr();return}if(e.key==="Escape"&&o.runtimeContextModal){e.preventDefault(),Yr();return}if(e.key==="Escape"&&o.imagePreview){e.preventDefault(),Fr();return}if(e.key==="Escape"&&o.toolDetailLineId!==void 0){e.preventDefault(),an();return}(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),(n=ne.value)==null||n.focus()),(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="c"&&!ie.value&&Ti()}function Rd(){var e;try{const n=localStorage.getItem(bl);if(n==="light"||n==="dark")return n}catch{}return(e=window.matchMedia)!=null&&e.call(window,"(prefers-color-scheme: dark)").matches?"dark":"light"}function Nd(e){var n,c,u,p;document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e,(n=document.querySelector('meta[name="theme-color"]'))==null||n.setAttribute("content",e==="dark"?"#0c0c0f":"#ffffff"),(p=(u=(c=window.__TAURI__)==null?void 0:c.core)==null?void 0:u.invoke)==null||p.call(u,"sync_window_theme",{theme:e}).catch(()=>{});try{localStorage.setItem(bl,e)}catch{}}function pa(){ae.value=ae.value==="dark"?"light":"dark"}async function Ld(e){var u;const n=Array.from(((u=e.clipboardData)==null?void 0:u.files)||[]).filter(p=>p.type.startsWith("image/"));if(!n.length)return;e.preventDefault();const c=[];for(const p of n){const y=++o.attachmentCounter,E=`[img#${y}]`,N=await Ea(p);N.compressionRate>0&&c.push(N.compressionRate),o.attachments.push({kind:"image",imageId:ma(),label:E,mimeType:N.mimeType,data:N.data,previewUrl:N.previewUrl,name:p.name||`图片 ${y}`})}X(`已添加 ${n.length} 张图片附件`),c.length&&setTimeout(()=>X(Aa(c)),0)}function $d(){var e;(e=ye.value)==null||e.click()}async function Od(e){var c;const n=Array.from(((c=e==null?void 0:e.target)==null?void 0:c.files)||[]);n.length&&(await ha(n),e!=null&&e.target&&(e.target.value=""))}async function ha(e){var u;if(!e.length||o.uploadingFiles)return;o.uploadingFiles=!0;const n=Lh(e,p=>{o.uploadProgress=p}),c=F("/api/uploads");try{const p=[],y=[];for(const[E,N]of e.entries()){if(N.type.startsWith("image/")){const U=await Ea(N,_e=>n.update(E,_e*.9)),le=`[img#${++o.attachmentCounter}]`;U.compressionRate>0&&y.push(U.compressionRate),p.push({kind:"image",imageId:ma(),label:le,name:N.name||le,mimeType:U.mimeType,data:U.data,previewUrl:U.previewUrl}),n.complete(E);continue}const H=await $h(c,N,U=>n.update(E,U));if(!((u=H==null?void 0:H.file)!=null&&u.absolutePath))throw new Error("upload response missing path");p.push({kind:"file",label:`[file#${++o.attachmentCounter}]`,name:H.file.name||N.name||`附件 ${o.attachmentCounter}`,mimeType:H.file.mimeType||N.type||"application/octet-stream",size:Number(H.file.size||N.size||0),absolutePath:H.file.absolutePath,relativePath:H.file.relativePath||""}),n.complete(E)}o.attachments.push(...p),n.succeed(),y.length&&setTimeout(()=>X(Aa(y)),0),X(`已上传 ${p.length} 个附件`)}catch(p){n.fail(),X(p.message||String(p))}finally{o.uploadingFiles=!1,o.uploadProgress=0}}function ma(){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 ba(e,n){if(!n.length)return e;const c=n.map(u=>u.label).join(" ");return e.trim()?`${e.trim()}
|
|
101
|
+
|
|
102
|
+
${c}`:c}function Dd(e){return String(e).replace(/\s*\[img#\d+\]\s*/g," ").replace(/[ \t]{2,}/g," ").trim()}function Pd(e){return String(e).replace(k0,"").replace(y0,"").replace(v0,"").replace(/[ \t]{2,}/g," ").trim()}function Ud(e){return String(e||"").replace(new RegExp(`${Gn(w0)}[\\s\\S]*?${Gn(_0)}`,"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 ka(e){var u;const n=String(((u=o.session)==null?void 0:u.sessionId)||A||""),c=e.filter(p=>(p==null?void 0:p.kind)==="image"&&p.imageId&&p.previewUrl).map(p=>({sessionId:n,imageId:p.imageId,label:p.label,mimeType:p.mimeType,previewUrl:p.previewUrl,originalUrl:p.previewUrl,name:p.name,available:!0,pending:!0}));ya(c)}function Bd(e){const n=[];for(const c of e||[])Zs(c,n);ya(n.map(ao).filter(Boolean))}function un(e){var c;const n=String((e==null?void 0:e.sessionId)||((c=o.session)==null?void 0:c.sessionId)||A||"");return e!=null&&e.imageId?`${n}:image:${e.imageId}`:e!=null&&e.messageId&&Number.isInteger(Number(e==null?void 0:e.blockIndex))?`${n}:block:${e.messageId}:${Number(e.blockIndex)}`:""}function ya(e){if(!e.length)return;const n=e.map(u=>{var p;return{...u,sessionId:String(u.sessionId||((p=o.session)==null?void 0:p.sessionId)||A||"")}}),c=new Set(n.map(un).filter(Boolean));o.messageImagePreviews=[...o.messageImagePreviews.filter(u=>{const p=un(u);return!p||!c.has(p)}),...n].slice(-200)}function Kt(e){var u;if(ot(e))return zd(e);const n=(e==null?void 0:e.kind)==="user"?va(e):[e],c=[];for(const p of n){c.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||""),N=o.messageImagePreviews.filter(U=>U.sessionId===E&&U.label===y),H=String((p==null?void 0:p.messageId)||"").startsWith("web-user-")?[...N].reverse().find(U=>U.pending):N.length===1?N[0]:void 0;H&&c.push(H)}}return lo(c)}function zd(e){const n=[];Zs(e,n);for(const c of jd(e))Zs(c,n);return lo(n.map(ao).filter(Boolean))}function Vs(e){const n=[];return Zs(e,n),lo(n.map(c=>ao(c)).filter(Boolean))}function va(e){if((e==null?void 0:e.kind)!=="user")return[e];const n=String((e==null?void 0:e.messageId)||"");return n?(o.lines||[]).filter(u=>(u==null?void 0:u.kind)==="user"&&String((u==null?void 0:u.messageId)||"")===n):[e]}function Fd(e){return e.some(n=>Vs(n).length>0||Ks(n==null?void 0:n.text).length>0)}function Hd(e){return e.find(n=>Ht(n))||e.find(n=>Vs(n).length>0||Ks(n==null?void 0:n.text).length>0)||e[0]}function jd(e){const n=o.lines||[],c=String((e==null?void 0:e.toolUseId)||"");if(c)return n.filter(y=>Ys(y)&&String((y==null?void 0:y.parentToolUseId)||"")===c);const u=n.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<n.length;y+=1){const E=n[y];if(Ys(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,n){if(!e||typeof e!="object")return;const c=p=>{var y;return n.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"||c(y);if(Array.isArray(e.blocks))for(const p of e.blocks)(p==null?void 0:p.type)==="image"&&c(p);e.image&&c(e.image)}function ao(e){var y,E,N,H,U;if(!e||typeof e!="object")return;const n=e.mimeType||((y=e.thumbnail)==null?void 0:y.mimeType)||((E=e.original)==null?void 0:E.mimeType)||"image/png",c=e.thumbnailSrc||((N=e.thumbnail)==null?void 0:N.src)||e.previewUrl||e.src||e.originalSrc||((H=e.original)==null?void 0:H.src)||e.originalUrl||Qs(e.data,n);if(!c&&e.available!==!1)return;const u=c?mo(c):"",p=Ao(e,Qs(e.data,n))||e.src||e.previewUrl||c;return{sessionId:String(e.sessionId||((U=o.session)==null?void 0:U.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:n,available:e.available!==!1&&!!u,error:e.error,previewUrl:u,originalUrl:p?mo(p):"",originalDecodeUrl:Ao(e,Qs(e.data,n))?mo(Ao(e,Qs(e.data,n))):"",name:e.name||e.filename||e.label,sizeBytes:e.sizeBytes,pending:e.pending===!0}}function Qs(e,n){return!e||typeof e!="string"?"":e.startsWith("data:")?e:`data:${n};base64,${e}`}function lo(e){const n=new Set,c=[];for(const[u,p]of e.entries()){const y=un(p)||(p.previewUrl?`url:${p.previewUrl}`:`position:${p.messageId||"unknown"}:${p.blockIndex??u}`);n.has(y)||(n.add(y),c.push(p))}return c}function Vt(e,n){return(e==null?void 0:e.label)||(e!=null&&e.name&&!/^\[img#\d+\]$/.test(e.name)?e.name:`图片 ${n+1}`)}function wa(e,n){const c=Gd(e==null?void 0:e.mimeType),u=((e==null?void 0:e.name)||(e==null?void 0:e.label)||`image-${n+1}`).replace(/[^\p{L}\p{N}._-]+/gu,"-").replace(/^-+|-+$/g,"")||`image-${n+1}`;return/\.[a-z0-9]{2,5}$/i.test(u)?u:`${u}.${c}`}function Gd(e){const n=String(e||"").toLowerCase();return n.includes("jpeg")?"jpg":n.includes("webp")?"webp":n.includes("gif")?"gif":"png"}function Ys(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.parentToolName)||"").toLowerCase()==="image_create"}function qd(e){return Ys(e)&&Kt(e).length>0}function _a(e){o.attachments=o.attachments.filter(n=>n.label!==e)}function xa(){return o.attachments.filter(e=>e.kind==="file")}function Sa(){return o.attachments.filter(e=>e.kind==="image")}function Wd(e,n){return(e==null?void 0:e.name)||`附件 ${n+1}`}function Kd(e){return`${Vd(e)} · ${co(e==null?void 0:e.size)}`}function Vd(e){const n=String((e==null?void 0:e.mimeType)||"").toLowerCase();return n?n.includes("pdf")?"PDF":n.includes("spreadsheet")||n.includes("excel")||n.includes("csv")?"表格":n.includes("word")||n.includes("document")?"文档":n.startsWith("text/")?"文本":n.startsWith("image/")?"图片":"文件":"文件"}function co(e){const n=Number(e||0);return!Number.isFinite(n)||n<=0?"0 B":n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(n<10*1024?1:0).replace(/\.0$/,"")} KB`:n<1024*1024*1024?`${(n/(1024*1024)).toFixed(n<10*1024*1024?1:0).replace(/\.0$/,"")} MB`:`${(n/(1024*1024*1024)).toFixed(1).replace(/\.0$/,"")} GB`}async function Ea(e,n){const c=await Ta(e,n);return Zd(c,e.type||"image/png")}async function Ta(e,n){return new Promise((c,u)=>{const p=new FileReader;p.onprogress=y=>{y.lengthComputable&&y.total>0&&(n==null||n(y.loaded/y.total))},p.onload=()=>{n==null||n(1),c(String(p.result||""))},p.onabort=()=>u(new Error("文件读取已取消")),p.onerror=()=>u(p.error||new Error("read failed")),p.readAsDataURL(e)})}async function Zd(e,n="image/png"){const c=Ia(e,n),u=Qd(c.base64),p=await Jd(c.dataUrl).catch(()=>{});if(!p){const _e=uo(c.base64);if(!_e)throw new Error("图片格式异常,无法读取为有效图片");return{mimeType:c.mimeType,data:_e,previewUrl:`data:${c.mimeType};base64,${_e}`,compressionRate:0}}const y=Math.min(1,m0/Math.max(p.naturalWidth||p.width,p.naturalHeight||p.height));let E=Math.max(1,Math.round((p.naturalWidth||p.width)*y)),N=Math.max(1,Math.round((p.naturalHeight||p.height)*y)),H=.88,U;for(let _e=0;_e<8&&(U=await Xd(p,E,N,"image/jpeg",H),!(U.bytes<=b0||H<=Co&&Math.max(E,N)<=1280));_e+=1)H>Co?H=Math.max(Co,H-.1):(E=Math.max(1,Math.round(E*.82)),N=Math.max(1,Math.round(N*.82)));const le=uo(U==null?void 0:U.base64);if(!le)throw new Error("图片格式异常,无法转换为有效图片");return{mimeType:U.mimeType,data:le,previewUrl:`data:${U.mimeType};base64,${le}`,compressionRate:Yd(u,U.bytes)}}function Ia(e,n){var E;const c=String(e||"").trim(),u=/^data:([^;,]+);base64,([\s\S]*)$/i.exec(c),p=(E=u==null?void 0:u[1])!=null&&E.startsWith("image/")?u[1]:n,y=u?u[2]:c;return{mimeType:p,base64:y,dataUrl:u?c:`data:${p};base64,${y}`}}function Qd(e){const n=uo(e);if(!n)return 0;const c=n.endsWith("==")?2:n.endsWith("=")?1:0;return Math.max(0,Math.floor(n.length*.75)-c)}function Yd(e,n){return!e||!n||n>=e?0:Math.round((1-n/e)*100)}function Aa(e){const n=Math.max(...e);return e.length>1?`图片已压缩,最高压缩率为 ${n}%`:`图片已压缩,压缩率为 ${n}%`}function uo(e){let n=String(e||"").trim().replace(/^data:[^;,]+;base64,/i,"").replace(/\s+/g,"");if(!n)return"";n=n.replace(/-/g,"+").replace(/_/g,"/");const c=n.length%4;if(c&&(n+="=".repeat(4-c)),!/^[A-Za-z0-9+/]*={0,2}$/.test(n))return"";try{return atob(n),n}catch{return""}}function Jd(e){return new Promise((n,c)=>{const u=new Image;u.onload=()=>n(u),u.onerror=()=>c(new Error("image decode failed")),u.src=e})}async function Xd(e,n,c,u,p){const y=document.createElement("canvas");y.width=n,y.height=c;const E=y.getContext("2d");if(!E)throw new Error("canvas unavailable");E.fillStyle="#fff",E.fillRect(0,0,n,c),E.drawImage(e,0,0,n,c);const N=await new Promise(le=>y.toBlob(le,u,p));if(!N)throw new Error("image encode failed");const H=await Ta(N),U=Ia(H,u);return{mimeType:U.mimeType,base64:U.base64,bytes:N.size}}function Ca(){return window.matchMedia("(max-width: 820px)").matches?50:64}function qn(){const e=ne.value;e&&(e.style.height=`${Ca()}px`,e.scrollTop=0)}function eg(){const e=ne.value;if(!e)return;e.style.height="auto";const n=window.innerHeight*(window.matchMedia("(max-width: 820px)").matches?.28:.34);e.style.height=`${Math.max(Ca(),Math.min(e.scrollHeight,n))}px`}function go(e=96){const n=$.value;return n?n.scrollHeight-n.scrollTop-n.clientHeight<=e:!0}function tg(e){return String((e==null?void 0:e.id)??"")}function ng(e){const n=zt.value[e];if(!n)return x0;if(Br(n))return on(n)?Math.min(1200,72+n.lines.reduce((u,p)=>u+fo(p),0)):Math.max(72,52+zr(n).length*28);if(Bn(n))return 74;if(zn(n))return 88;const c=so(n);return c.length?64+c.reduce((u,p)=>u+aa(p),0):ot(n)||sg(n)?Math.max(560,fo(n)):fo(n)}function fo(e){const n=Ht(e),c=Math.max(1,n.split(`
|
|
105
|
+
`).length),u=Math.ceil(n.length/72);return Math.max(72,Math.min(1200,52+Math.max(c,u)*24))}function sg(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(n=>Array.isArray(n)&&n.length)||Array.isArray(e==null?void 0:e.attachments)&&e.attachments.some(n=>(n==null?void 0:n.kind)==="image"||(n==null?void 0:n.type)==="image"||String((n==null?void 0:n.mimeType)||"").startsWith("image/"))?!0:Array.isArray(e==null?void 0:e.blocks)&&e.blocks.some(n=>(n==null?void 0:n.type)==="image")}function Js(){const e=$.value,n=q.value;!e||!n||(Er.value=Math.max(0,n.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop))}function po(){mt&&(mt.disconnect(),$.value&&mt.observe($.value),q.value&&mt.observe(q.value))}function rg(e){e instanceof Element&&In.value.measureElement(e)}async function Ma(e,n){var u;const c=(u=e==null?void 0:e.currentTarget)==null?void 0:u.closest(".virtual-message-row");Cr.value++,Le&&cancelAnimationFrame(Le),Le=0;try{n(),await Ye(),c!=null&&c.isConnected&&In.value.resizeItem(Number(c.dataset.index),c.getBoundingClientRect().height),await Ye()}finally{Cr.value--}}function og(){In.value.measure()}function ho(){Le||(Le=requestAnimationFrame(()=>{Le=0,ig()}))}function ig(){const e=$.value;e&&(e.scrollTop=e.scrollHeight)}function ag(){if(bt.size<300)return;const e=new Set(o.lines.map(n=>n.id));for(const n of bt.keys()){const c=Number(String(n).split("",1)[0]);e.has(c)||bt.delete(n)}bt.size>500&&bt.clear()}function X(e){o.toast=e,clearTimeout(vn),vn=setTimeout(()=>{o.toast=""},3600)}function lg(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 n=Math.max(0,Math.round(Number(e)));return n>=1e6?`${Ra(n/1e6)}m`:n>=1e4?`${Math.round(n/1e3)}k`:n>=1e3?`${Ra(n/1e3)}k`:String(n)}function Ra(e){return e>=10?e.toFixed(0):e.toFixed(1).replace(/\.0$/,"")}function Xs(e){return String(e).replace(/\x1b\[[0-9;]*m/g,"")}function cg(e){try{const n=new URL(e,window.location.href);return["http:","https:","mailto:"].includes(n.protocol)}catch{return!1}}function Se(e){return String(e).replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n])}function Na(e){return e.replace(/(https?:\/\/[^\s<]+)/g,'<a target="_blank" rel="noreferrer noopener" href="$1">$1</a>')}function mo(e){const n=String(e||"");return n.startsWith("/api/images/")?F(n):n}function er(){var e;(e=se.value)==null||e.removeAttribute("open")}function La(e){const n=se.value;n!=null&&n.open&&!e.composedPath().includes(n)&&er()}function Wn(e){if(ue.value="",er(),e==="sessions")return Ms();if(e==="users")return Rs();if(e==="prompts")return Lr();if(e==="settings")return Pn();o.activePanel="chat"}function $a(){return ue.value="",er(),Ns()}return(e,n)=>{var c,u,p,y,E,N,H,U,le,_e;return m(),b(Y,null,[a("div",Uh,[a("aside",Bh,[a("div",zh,[a("button",{class:"theme-toggle celestial-theme-toggle",type:"button","aria-label":ks.value,"aria-pressed":bs.value,title:ks.value,onClick:pa},[...n[42]||(n[42]=[Fa('<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,Fh)]),a("nav",Hh,[i.value?C("",!0):(m(),b("button",{key:0,class:Q({active:o.activePanel==="chat"}),onClick:Ns},[...n[43]||(n[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},[...n[44]||(n[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:Rs},[...n[45]||(n[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),l.value?(m(),b("button",{key:2,class:Q({active:o.activePanel==="settings"}),onClick:n[0]||(n[0]=k=>Pn())},[...n[46]||(n[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:n[1]||(n[1]=k=>o.activePanel="chat"),title:ls.value},[n[47]||(n[47]=a("span",{class:"session-entry-icon","aria-hidden":"true"},[a("i",{class:"session-diamond"})],-1)),a("span",Gh,[a("span",{ref_key:"sessionTitleViewport",ref:cs,class:Q(["session-title-line",{marquee:Tr.value}])},[a("strong",{ref_key:"sessionTitleText",ref:di},x(ls.value),513),Tr.value?(m(),b("strong",qh,x(ls.value),1)):C("",!0)],2)])],10,jh),Ne(Ge).isolation?C("",!0):(m(),b("section",Wh,[a("div",Kh,[a("button",{type:"button",class:"mini-button",onClick:n[2]||(n[2]=k=>Lr())},"提示词管理")]),a("div",Vh,[o.promptLibraryLoading?(m(),b("div",Zh,"正在加载…")):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:Ue=>Xc(Ue,k),onDragend:ou,onDblclick:Ue=>$n(k)},[a("div",Jh,[a("strong",null,x(k.title),1)]),a("div",Xh,[a("button",{type:"button",class:"mini-button",onClick:Ue=>$n(k)},"应用",8,em),a("button",{type:"button",class:"mini-button",onClick:Ue=>Vc(k)},"编辑",8,tm)])],42,Yh)}),128)):(m(),b("div",Qh,"暂无提示词"))])])),Ne(Ge).isolation?(m(),b("div",nm,[a("button",{class:"logout-icon-button",type:"button","aria-label":"退出登录",title:`${(c=Ne(Ge).user)==null?void 0:c.username} · 退出登录`,onClick:Cc},[...n[48]||(n[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,sm)])):C("",!0)]),a("main",rm,[a("header",om,[a("div",im,[a("details",{ref_key:"mobileMenu",ref:se,class:"mobile-nav-menu"},[n[52]||(n[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:n[3]||(n[3]=k=>Wn("chat"))},"对话",2),i.value?C("",!0):(m(),b("button",{key:0,type:"button",onClick:$a},"新建会话")),a("button",{type:"button",class:Q({active:o.activePanel==="sessions"}),onClick:n[4]||(n[4]=k=>Wn("sessions"))},"会话",2),i.value?(m(),b("button",{key:1,type:"button",class:Q({active:o.activePanel==="users"}),onClick:n[5]||(n[5]=k=>Wn("users"))},"用户",2)):C("",!0),Ne(Ge).isolation?C("",!0):(m(),b("button",{key:2,type:"button",class:Q({active:o.activePanel==="prompts"}),onClick:n[6]||(n[6]=k=>Wn("prompts"))},"提示词",2)),l.value?(m(),b("button",{key:3,type:"button",class:Q({active:o.activePanel==="settings"}),onClick:n[7]||(n[7]=k=>Wn("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,am))),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"])]},[n[49]||(n[49]=a("span",{class:"core-version-spark spark-a","aria-hidden":"true"},null,-1)),n[50]||(n[50]=a("span",{class:"core-version-spark spark-b","aria-hidden":"true"},null,-1)),n[51]||(n[51]=a("span",{class:"core-version-spark spark-c","aria-hidden":"true"},null,-1)),a("span",null,"内核版本 "+x(o.coreVersion),1)],42,lm)):C("",!0)])],512),_n.value?(m(),b("strong",{key:0,class:"mobile-session-title",title:_n.value},x(_n.value),9,cm)):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:pa},[...n[53]||(n[53]=[Fa('<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,um),l.value?(m(),b("button",{key:1,class:"ghost desktop-config-button",onClick:n[8]||(n[8]=k=>Pn())},"配置模型")):C("",!0),a("button",{class:"primary new-session-button",onClick:$a},"+ 新建")])]),o.activePanel==="chat"?(m(),b("section",dm,[a("div",gm,[a("div",{ref_key:"transcript",ref:$,class:"transcript"},[o.runtimeContext||o.runtimeContextLoading||o.runtimeContextError?(m(),b("section",fm,[n[57]||(n[57]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"运行上下文")],-1)),o.runtimeContext?(m(),b("div",pm,[Ne(Ge).isolation?C("",!0):(m(),b("button",{key:0,type:"button",onClick:n[9]||(n[9]=k=>Qr("prompt"))},[n[54]||(n[54]=a("span",null,"系统提示词",-1)),a("strong",null,x(Ec.value.length),1)])),a("button",{type:"button",onClick:n[10]||(n[10]=k=>Qr("tools"))},[n[55]||(n[55]=a("span",null,"工具",-1)),a("strong",null,x(Mr.value.length),1)]),a("button",{type:"button",onClick:n[11]||(n[11]=k=>Qr("plugins"))},[n[56]||(n[56]=a("span",null,"插件",-1)),a("strong",null,x(Tc.value),1)])])):o.runtimeContextError?(m(),b("button",{key:1,type:"button",class:"runtime-context-retry",onClick:Rn},"重试")):(m(),b("span",hm,"同步中"))])):C("",!0),An.value.length?(m(),b("section",mm,[n[59]||(n[59]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"项目上下文")],-1)),a("div",bm,[a("button",{type:"button",onClick:Qu},[n[58]||(n[58]=a("span",null,"文档",-1)),a("strong",null,x(An.value.length),1)])])])):C("",!0),a("div",{ref_key:"messageList",ref:q,class:"virtual-message-list",style:ft({height:`${Sc.value}px`})},[(m(!0),b(Y,null,ce(xc.value,k=>(m(),b("div",{key:k.key,ref_for:!0,ref:rg,class:"virtual-message-row","data-index":k.index,style:ft({transform:`translateY(${k.start-Er.value}px)`})},[(m(!0),b(Y,null,ce([zt.value[k.index]],T=>{var Ue,gt,Oa,Da;return m(),b(Y,{key:T.id},[Br(T)?(m(),b("article",{key:0,class:Q(["message","tool-group-message",{live:T.live,expanded:on(T)}])},[a("div",ym,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":on(T),onClick:D=>$u(T,D)},[a("span",wm,[(m(!0),b(Y,null,ce(Bi(T),(D,te)=>(m(),b(Y,{key:D.name},[a("span",_m,x(D.name),1),D.count>1?(m(),b("span",xm,"×"+x(D.count),1)):C("",!0),te<Bi(T).length-1?(m(),b("span",Sm,"、")):C("",!0)],64))),128))]),n[60]||(n[60]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,vm),!on(T)&&zr(T).length?(m(),Be(bg,{key:0,name:"tool-purpose",tag:"div",class:"tool-group-purposes"},{default:mg(()=>[(m(!0),b(Y,null,ce(zr(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",Em,[(m(!0),b(Y,null,ce(T.lines,D=>{var te,Ve,bo,Pa;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},[n[61]||(n[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",Im,[a("div",Am,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Gs(D)},null,8,Cm)])])],8,Tm)):Bn(D)?(m(),b("section",{key:1,class:Q(["compaction-context-bar",{current:D.compaction.current}]),role:"button",tabindex:"0","aria-label":"查看压缩上下文",onClick:je=>rn(D),onKeydown:[at(he(je=>rn(D),["prevent"]),["enter"]),at(he(je=>rn(D),["prevent"]),["space"])]},[n[64]||(n[64]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",Rm,[a("span",null,[n[62]||(n[62]=a("span",null,"摘要",-1)),a("strong",null,x(dn(String(D.compaction.summary||"").length)),1)]),D.compaction.imageCount?(m(),b("span",Nm,[n[63]||(n[63]=a("span",null,"图片",-1)),a("strong",null,x(D.compaction.imageCount),1)])):C("",!0)])],42,Mm)):zn(D)?(m(),b("div",{key:2,class:Q(["tool-result-summary",`status-${Ct(D).key}`])},[a("div",Lm,[(m(),b("svg",{class:Q(["tool-result-diamond",{spinning:D.live}]),viewBox:"0 0 20 20","aria-hidden":"true"},[...n[65]||(n[65]=[a("path",{d:"M10 2.75 17.25 10 10 17.25 2.75 10Z"},null,-1)])],2)),a("strong",$m,x(jt(D)),1),Ct(D).key==="failed"?(m(),b("span",Om,"×")):C("",!0)]),a("div",Dm,[(te=D.toolDisplay)!=null&&te.purpose||(Ve=D.toolDisplay)!=null&&Ve.subject?(m(),b("p",Pm,x(((bo=D.toolDisplay)==null?void 0:bo.purpose)||((Pa=D.toolDisplay)==null?void 0:Pa.subject)),1)):C("",!0),D.toolError?(m(),b("p",Um,x(D.toolError),1)):C("",!0),Rt(D)&&Mt(D).length?(m(),b("div",Bm,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":Ps(D),onClick:je=>Zi(D,je)},[a("span",Fm,[(m(!0),b(Y,null,ce(Ds(D),(je,Kn)=>(m(),b(Y,{key:je.name},[a("span",Hm,x(je.label),1),je.count>1?(m(),b("span",jm,"×"+x(je.count),1)):C("",!0),Kn<Ds(D).length-1?(m(),b("span",Gm,"、")):C("",!0)],64))),128))]),n[66]||(n[66]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,zm),Ps(D)?(m(),b("div",qm,[(m(!0),b(Y,null,ce(Vi(D),(je,Kn)=>(m(),b("div",{key:je.key,class:"tool-group-purpose",style:ft({"--purpose-index":Kn})},[a("span",null,x(je.purpose),1)],4))),128))])):C("",!0)])):!Os(D)&&Hn(D)?(m(),b("p",Wm,[Yn(x(Hn(D)),1),Us(D)?(m(),b("span",Km,x(Us(D)),1)):C("",!0)])):C("",!0),!Os(D)&&!Rt(D)&&Mt(D).length?(m(),b("div",Vm,[a("section",Zm,[a("pre",Qm,x(Ki(D)),1)])])):C("",!0),!Rt(D)&&Fn(D)&&(!Hr(D)||D.live===!0)?(m(),b("div",Ym,[a("section",Jm,[a("pre",Xm,x(Fn(D)),1)])])):C("",!0),!Rt(D)&&Wi(D)?(m(),b("div",eb,[(m(!0),b(Y,null,ce(qi(D),(je,Kn)=>(m(),b("section",{key:`${je.kind}-${Kn}`,class:Q(["tool-result-preview",`kind-${je.kind}`])},[a("pre",tb,x(je.content),1)],2))),128))])):C("",!0)])],2)):(m(),b("div",nb,[Un(D)?C("",!0):(m(),b("div",sb,[a("strong",null,x(jt(D)),1),D.toolName&&Ct(D).key==="failed"?(m(),b("span",rb,"×")):C("",!0)])),a("div",{class:"message-text markdown",innerHTML:Gs(D)},null,8,ob)]))],2)}),128))])):C("",!0)])],2)):(m(),b("article",{key:1,class:Q(["message",T.kind||"system",{live:T.live,"prompt-usage":Ur(T),"context-compaction":Bn(T),"compact-tool":zn(T)}])},[a("div",{class:Q(["message-marker",{spinning:T.live}])},[...n[67]||(n[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),Bn(T)?(m(),b("div",ib,[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"])]},[n[70]||(n[70]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",lb,[a("span",null,[n[68]||(n[68]=a("span",null,"摘要",-1)),a("strong",null,x(dn(String(T.compaction.summary||"").length)),1)]),T.compaction.imageCount?(m(),b("span",cb,[n[69]||(n[69]=a("span",null,"图片",-1)),a("strong",null,x(T.compaction.imageCount),1)])):C("",!0)])],42,ab)])):T.kind==="thinking"?(m(),b("div",ub,[a("details",{class:"reasoning-sheet",open:T.live||void 0},[a("summary",null,[n[71]||(n[71]=a("span",{class:"reasoning-title-mark","aria-hidden":"true"},[a("i"),a("i"),a("i")],-1)),n[72]||(n[72]=a("span",{class:"reasoning-heading"},"思考",-1)),jn(T)?(m(),b("span",gb,x(jn(T)),1)):C("",!0)]),a("div",fb,[a("div",pb,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Gs(T)},null,8,hb)])])],8,db)])):(m(),b("div",mb,[!Un(T)&&(T.kind!=="tool"||ln(T).length)&&!zn(T)?(m(),b("div",bb,[a("strong",null,x(jt(T)),1),T.toolName&&Ct(T).key==="failed"?(m(),b("span",kb,"×")):C("",!0),!T.toolName&&T.titleStatus?(m(),b("span",yb,x(T.titleStatus),1)):C("",!0),jn(T)?(m(),b("span",vb,x(jn(T)),1)):C("",!0)])):C("",!0),ot(T)?(m(),b("div",wb,[a("div",{class:"message-text markdown image2-stage-wrap",innerHTML:_d(T)},null,8,_b),(m(!0),b(Y,null,ce([Kt(T)],D=>(m(),b(Y,{key:`${T.id}-image2-images`},[D.length?(m(),b("div",xb,[(m(!0),b(Y,null,ce(D,(te,Ve)=>(m(),b("figure",{key:un(te)||te.previewUrl||Ve,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":Ne(tt)(te.originalUrl||te.previewUrl),"aria-label":`预览 ${Vt(te,Ve)}`},[a("img",{src:Ne(tt)(te.previewUrl),alt:Vt(te,Ve),loading:"lazy",decoding:"async"},null,8,Eb)],8,Sb)):(m(),b("div",Tb,"图片不可用")),a("figcaption",null,x(Vt(te,Ve)),1),a("div",Ib,[te.available&&te.previewUrl?(m(),b("a",{key:0,class:"image-download",href:Ne(tt)(te.originalUrl||te.previewUrl),download:wa(te,Ve)},"下载",8,Ab)):C("",!0),Ve===0&&Nt(T)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:bo=>Fi(T)},"详情",8,Cb)):C("",!0)])],2))),128))])):Nt(T)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:te=>Fi(T)},"详情",8,Mb)):C("",!0)],64))),128))])):zn(T)?(m(),b("div",{key:2,class:Q(["tool-result-summary",`status-${Ct(T).key}`])},[a("div",Rb,[(m(),b("svg",{class:Q(["tool-result-diamond",{spinning:T.live}]),viewBox:"0 0 20 20","aria-hidden":"true"},[...n[73]||(n[73]=[a("path",{d:"M10 2.75 17.25 10 10 17.25 2.75 10Z"},null,-1)])],2)),a("strong",Nb,x(jt(T)),1),Ct(T).key==="failed"?(m(),b("span",Lb,"×")):C("",!0)]),a("div",$b,[(Ue=T.toolDisplay)!=null&&Ue.purpose||(gt=T.toolDisplay)!=null&>.subject?(m(),b("p",Ob,x(((Oa=T.toolDisplay)==null?void 0:Oa.purpose)||((Da=T.toolDisplay)==null?void 0:Da.subject)),1)):C("",!0),T.toolError?(m(),b("p",Db,x(T.toolError),1)):C("",!0),Rt(T)&&Mt(T).length?(m(),b("div",Pb,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":Ps(T),onClick:D=>Zi(T,D)},[a("span",Bb,[(m(!0),b(Y,null,ce(Ds(T),(D,te)=>(m(),b(Y,{key:D.name},[a("span",zb,x(D.label),1),D.count>1?(m(),b("span",Fb,"×"+x(D.count),1)):C("",!0),te<Ds(T).length-1?(m(),b("span",Hb,"、")):C("",!0)],64))),128))]),n[74]||(n[74]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,Ub),Ps(T)?(m(),b("div",jb,[(m(!0),b(Y,null,ce(Vi(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)&&Hn(T)?(m(),b("p",Gb,[Yn(x(Hn(T)),1),Us(T)?(m(),b("span",qb,x(Us(T)),1)):C("",!0)])):C("",!0),!Os(T)&&!Rt(T)&&Mt(T).length?(m(),b("div",Wb,[a("section",Kb,[a("pre",Vb,x(Ki(T)),1)])])):C("",!0),!Rt(T)&&Fn(T)&&(!Hr(T)||T.live===!0)?(m(),b("div",Zb,[a("section",Qb,[a("pre",Yb,x(Fn(T)),1)])])):C("",!0),!Rt(T)&&Wi(T)?(m(),b("div",Jb,[(m(!0),b(Y,null,ce(qi(T),(D,te)=>(m(),b("section",{key:`${D.kind}-${te}`,class:Q(["tool-result-preview",`kind-${D.kind}`])},[a("pre",Xb,x(D.content),1)],2))),128))])):C("",!0)])],2)):(m(),b(Y,{key:3},[so(T).length?(m(),b(Y,{key:0},[a("div",ek,[(m(!0),b(Y,null,ce(so(T),D=>(m(),b("iframe",{key:D.url,class:"plugin-resource-frame",src:kd(D),title:D.label||"插件资源",style:ft({height:`${aa(D)}px`}),loading:"lazy",allow:"fullscreen",allowfullscreen:""},null,12,tk))),128))]),ia(T).length?(m(),b("div",{key:0,class:"message-text markdown",innerHTML:la(T)},null,8,nk)):C("",!0)],64)):T.kind==="assistant"&&T.live?(m(),b("div",sk,[gn(Sh,{text:T.text||"","exposed-resources":ca(T)},null,8,["text","exposed-resources"])])):qd(T)?C("",!0):(m(),b("div",{key:2,class:"message-text markdown",innerHTML:Gs(T)},null,8,rk)),(m(!0),b(Y,null,ce([Kt(T)],D=>(m(),b(Y,{key:`${T.id}-images`},[D.length?(m(),b("div",ok,[(m(!0),b(Y,null,ce(D,(te,Ve)=>(m(),b("figure",{key:un(te)||te.previewUrl||Ve,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":Ne(tt)(te.originalUrl||te.previewUrl),"aria-label":`预览 ${Vt(te,Ve)}`},[a("img",{src:Ne(tt)(te.previewUrl),alt:Vt(te,Ve),loading:"lazy",decoding:"async"},null,8,ak)],8,ik)):(m(),b("div",lk,"图片不可用")),a("figcaption",null,x(Vt(te,Ve)),1),te.available&&te.previewUrl?(m(),b("a",{key:2,class:"image-download",href:Ne(tt)(te.originalUrl||te.previewUrl),download:wa(te,Ve)},"下载",8,ck)):C("",!0)],2))),128))])):C("",!0)],64))),128))],64))]))],2))],64)}),128))],12,km))),128))],4),fc.value?(m(),b("div",uk,[a("div",dk,[a("span",gk,x(pc.value),1)]),n[75]||(n[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",fk,[a("span",null,"已排队:"+x(o.queuedInput),1),a("div",null,[a("button",{type:"button",disabled:r.value,onClick:Ii},"立即发送",8,pk),a("button",{type:"button",disabled:r.value,onClick:uu},"取消",8,hk)])])):C("",!0),i.value?C("",!0):(m(),b("form",{key:1,class:Q(["composer",{"drop-active":o.composerDropActive}]),onSubmit:he(Ei,["prevent"]),onDragover:eu,onDragleave:tu,onDrop:nu},[(u=o.appPrompt)!=null&&u.hasActivePrompt?(m(),b("div",mk,[n[76]||(n[76]=a("span",{class:"composer-app-prompt-label"},"当前提示词",-1)),a("strong",null,x(Ac.value),1),a("button",{type:"button",class:"mini-button danger",onClick:xi},"清空")])):C("",!0),xa().length?(m(),b("div",bk,[(m(!0),b(Y,null,ce(xa(),(k,T)=>(m(),b("figure",{key:k.label,class:"file-attachment"},[a("figcaption",null,[a("strong",null,x(Wd(k,T)),1),a("span",null,x(Kd(k)),1)]),a("button",{type:"button","aria-label":"移除附件",onClick:Ue=>_a(k.label)},"×",8,kk)]))),128))])):C("",!0),Sa().length?(m(),b("div",yk,[(m(!0),b(Y,null,ce(Sa(),(k,T)=>(m(),b("figure",{key:k.label,class:"image-attachment"},[a("img",{src:Ne(tt)(k.previewUrl),alt:k.name||`图片 ${T+1}`},null,8,vk),a("figcaption",null,"图片 "+x(T+1),1),a("button",{type:"button","aria-label":"移除图片",onClick:Ue=>_a(k.label)},"×",8,wk)]))),128))])):C("",!0),a("input",{ref_key:"fileInput",ref:ye,type:"file",multiple:"",hidden:"",onChange:Od},null,544),Oe(a("textarea",{ref_key:"composer",ref:ne,"onUpdate:modelValue":n[12]||(n[12]=k=>ie.value=k),placeholder:"在这里输入你的问题、需求或下一步安排…",onKeydown:Md,onPaste:Ld,onInput:eg},null,544),[[nt,ie.value]]),a("div",_k,[a("button",{type:"button",class:"composer-cwd",title:"切换工作目录","aria-label":"切换工作目录",onClick:Ju},[n[77]||(n[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:gi.value},x(gi.value),9,xk)])]),a("div",{class:Q(["composer-footer",{"session-options-open":s.value}])},[a("div",Sk,[a("button",{type:"button",class:"metric-chip model-chip context-window-trigger model-trigger","aria-label":"选择模型",onClick:gu},[n[78]||(n[78]=a("em",null,"模型",-1)),a("strong",null,x(hc.value),1)]),(m(),b("button",{type:"button",class:Q(["metric-chip","numeric","context-window-trigger",Wr("context")]),key:`context-${o.composerMetrics.context.bump}`,onClick:pu},[n[79]||(n[79]=a("em",null,"上下文",-1)),a("strong",null,x(bc.value),1)],2)),(m(),b("span",{class:Q(["metric-chip numeric",Wr("inputTokens")]),key:`input-${o.composerMetrics.inputTokens.bump}`},[n[80]||(n[80]=a("em",null,"输入",-1)),a("strong",null,x(yc.value),1)],2)),(m(),b("span",{class:Q(["metric-chip numeric",Wr("outputTokens")]),key:`output-${o.composerMetrics.outputTokens.bump}`},[n[81]||(n[81]=a("em",null,"输出",-1)),a("strong",null,x(vc.value),1)],2)),a("button",{type:"button",class:Q(["fast-mode-button",{active:ds.value,syncing:o.fastModeMutating}]),"aria-pressed":ds.value,title:ds.value?"关闭当前会话的快速模式":"为当前会话启动快速模式",onClick:bu},[...n[82]||(n[82]=[a("span",null,"快速模式",-1)])],10,Ek),a("span",Tk,[a("button",{type:"button",class:"compact-button",disabled:o.compactSaving||o.pendingSessionSettings.compact===!0,onClick:du},"压缩会话",8,Ik)])]),a("div",Ak,[a("button",{type:"button",class:"session-options-toggle","aria-label":"会话选项","aria-expanded":s.value,"aria-controls":"composer-session-metrics",onClick:n[13]||(n[13]=k=>s.value=!s.value)},[...n[83]||(n[83]=[a("svg",{viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M3 6h14M3 14h14M7 3v6M13 11v6"})],-1)])],8,Ck),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:$d},[...n[84]||(n[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,Mk),a("button",{type:At.value?"button":"submit",class:Q(["primary","composer-action",{stop:At.value}]),disabled:r.value||!At.value&&(o.uploadingFiles||!ie.value.trim()&&!o.attachments.length),"aria-busy":r.value,"aria-label":pi.value,title:pi.value,onClick:n[14]||(n[14]=k=>At.value?cu():void 0)},[r.value?(m(),b("svg",Nk,[...n[85]||(n[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?Ar.value?(m(),b("svg",$k,[...n[87]||(n[87]=[a("path",{d:"M4 5v10M11 16V4m-4 4 4-4 4 4"},null,-1)])])):o.queuedInput?(m(),b("svg",Ok,[...n[88]||(n[88]=[a("path",{d:"m4 5 7 5-7 5Zm10 0v10"},null,-1)])])):(m(),b("svg",Dk,[...n[89]||(n[89]=[a("path",{d:"M5 5h10v10H5Z",fill:"currentColor",stroke:"none"},null,-1)])])):(m(),b("svg",Lk,[...n[86]||(n[86]=[a("path",{d:"M10 16V4m-5 5 5-5 5 5"},null,-1)])]))],10,Rk)])],2)],34))]),a("aside",{class:Q(["right-panel",{"mobile-card-open":ue.value}]),"data-mobile-card":ue.value,onKeydown:at(he(ze,["stop"]),["esc"])},[ue.value?(m(),b("button",{key:0,type:"button",class:"mobile-card-close","aria-label":"关闭卡片",onClick:ze},"×")):C("",!0),a("section",Uk,[a("div",Bk,[a("div",zk,x(Me("tasks")),1),fs.value?(m(),b("strong",Fk,x(fs.value),1)):C("",!0)]),En.value?(m(),b("button",{key:0,type:"button",class:"background-task-summary",title:Bs(En.value),onClick:n[15]||(n[15]=k=>Kr(En.value))},[a("span",{class:Q(["background-task-dot",`status-${En.value.status}`])},null,2),a("strong",null,x(zs(En.value)),1),fs.value>1?(m(),b("span",jk,"+"+x(fs.value-1),1)):C("",!0),n[90]||(n[90]=a("b",{"aria-hidden":"true"},"›",-1))],8,Hk)):C("",!0),ps.value.length?(m(),b("details",Gk,[a("summary",null,[n[91]||(n[91]=a("span",null,"最近结束",-1)),a("strong",null,x(ps.value.length),1)]),a("div",qk,[(m(!0),b(Y,null,ce(ps.value,k=>(m(),b("button",{key:qt(k),type:"button",class:"background-task-summary background-task-history-item",title:Bs(k),onClick:T=>Kr(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(Vr(k.status)),3)],8,Wk))),128))])])):C("",!0)]),yt.value?(m(),b("section",Kk,[a("div",Vk,[a("div",null,[a("span",null,x(Me("quota"))+" · "+x(xu(yt.value.account)),1),a("strong",null,x($i(yt.value.remainingPercent)),1)]),a("div",Zk,[o.cpaQuotas.length>1?(m(),b("button",{key:0,type:"button","aria-label":"上一个凭据",onClick:n[16]||(n[16]=k=>Pi(-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:n[17]||(n[17]=k=>Pi(1))},"›")):C("",!0)])]),a("div",{class:"quota-progress",role:"progressbar","aria-label":"周额度剩余","aria-valuenow":Pr(yt.value.remainingPercent),"aria-valuemin":"0","aria-valuemax":"100"},[a("span",{class:"quota-progress-fill",style:ft({width:`${Pr(yt.value.remainingPercent)}%`})},null,4)],8,Qk),a("div",Yk,[a("span",null,"已使用 "+x($i(yt.value.usedPercent)),1),a("span",null,"续期时间 "+x(Oi(yt.value.resetAt)),1)]),a("div",Jk,"更新于 "+x(Oi(yt.value.updatedAt)),1)])):C("",!0),a("section",Xk,[a("div",ey,[a("div",null,[a("span",null,x(Me("memory")),1),a("strong",null,x(Ls((p=ys.value)==null?void 0:p.rss)),1)]),n[92]||(n[92]=a("small",null,"RSS",-1))]),hi.value?(m(),b("div",{key:0,class:"memory-chart",onMousemove:Tu,onMouseleave:Ui},[(m(),b("svg",ty,[a("path",{d:hi.value},null,8,ny),(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:Ue=>St.value=T,onBlur:Ui},null,42,sy))),128))])),Cn.value?(m(),b("div",{key:0,class:"memory-tooltip",style:ft({left:`clamp(58px, ${Cn.value.x/260*100}%, calc(100% - 58px))`,top:`${Cn.value.y/44*100}%`})},[a("strong",null,x(Ls(Cn.value.entry.rss)),1),a("span",null,x(Eu(Cn.value.entry.at)),1)],4)):C("",!0)],32)):(m(),b("div",ry,"—")),a("div",oy,[a("div",null,[n[93]||(n[93]=a("span",null,"V8 堆",-1)),a("strong",null,x(Ls((y=ys.value)==null?void 0:y.heapUsed)),1)]),a("div",null,[n[94]||(n[94]=a("span",null,"外部内存",-1)),a("strong",null,x(Ls((E=ys.value)==null?void 0:E.external)),1)])]),a("div",iy,[a("span",null,"更新于 "+x(Su((N=ys.value)==null?void 0:N.at)),1)])])],42,Pk)])):o.activePanel==="sessions"?(m(),b("section",ay,[a("div",ly,[a("div",cy,[a("div",null,[n[95]||(n[95]=a("h2",null,"会话管理",-1)),a("p",null,x(i.value?"查看全部用户的历史会话":"查找、继续或整理历史会话"),1)]),i.value?C("",!0):(m(),b("button",{key:0,class:"primary",onClick:Ns},"+ 新建会话"))]),a("div",uy,[a("label",dy,[Oe(a("input",{"onUpdate:modelValue":n[18]||(n[18]=k=>de.value=k),type:"search",placeholder:"搜索标题或 ID",autocomplete:"off"},null,512),[[nt,de.value]])]),a("span",gy,x(de.value.trim()?`${Tn.value.length} / ${o.sessions.length}`:`${o.sessions.length} 个会话`),1)]),o.sessionsLoading?(m(),b("div",fy,"正在加载会话…")):o.sessions.length?Tn.value.length?(m(),b("div",my,[(m(!0),b(Y,null,ce(wc.value,k=>(m(),b("article",{key:`${k.ownerUsername||""}:${k.sessionId}`,class:Q(["session-card",{current:Or(k.sessionId),running:Dr(k.sessionId)}])},[a("div",by,[a("div",ky,[a("strong",null,x(ui(k)),1),i.value?(m(),b("span",yy,x(k.ownerUsername)+x(k.ownerDeleted?" · 已删除":""),1)):C("",!0),Or(k.sessionId)&&(!i.value||Ne(Ge).adminOwnerUsername===k.ownerUsername)?(m(),b("span",vy,"当前")):Dr(k.sessionId)?(m(),b("span",wy,"运行中")):C("",!0)]),a("div",_y,[a("code",{title:k.sessionId},"ID · "+x(k.sessionId),9,xy),a("time",{datetime:k.updatedAt||k.createdAt},"更新于 "+x(Di(k.updatedAt||k.createdAt)),9,Sy)])]),a("div",Ey,[a("button",{disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:T=>vu(k)},x(o.pendingResumeSessionId===k.sessionId&&o.sessionResumeLoading?"打开中…":"打开"),9,Ty),i.value?C("",!0):(m(),b("button",{key:0,class:"danger",disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:T=>wu(k.sessionId)},"删除",8,Iy))])],2))),128))])):(m(),b("div",hy,"没有匹配的会话")):(m(),b("div",py,"暂无会话")),!o.sessionsLoading&&Tn.value.length&&hs.value>1?(m(),b("nav",Ay,[a("button",{type:"button",disabled:G.value===1,onClick:n[19]||(n[19]=k=>G.value-=1)},"上一页",8,Cy),(m(!0),b(Y,null,ce(_c.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,My))),128)),a("button",{type:"button",disabled:G.value===hs.value,onClick:n[20]||(n[20]=k=>G.value+=1)},"下一页",8,Ry)])):C("",!0)])])):i.value&&o.activePanel==="users"?(m(),b("section",Ny,[a("div",Ly,[n[97]||(n[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(ku,["prevent"])},[a("label",null,[n[96]||(n[96]=Yn("用户名",-1)),Oe(a("input",{"onUpdate:modelValue":n[21]||(n[21]=k=>Z.value=k),maxlength:"100",autocomplete:"off",required:""},null,512),[[nt,Z.value]])]),a("button",{class:"primary",disabled:o.adminUserBusy},"创建普通用户",8,$y)],32),o.adminUserError?(m(),b("p",Oy,x(o.adminUserError),1)):C("",!0),o.adminUsersLoading?(m(),b("div",Dy,"正在加载用户…")):(m(),b("div",Py,[(m(!0),b(Y,null,ce(o.adminUsers,k=>(m(),b("article",{key:k.username,class:"session-card"},[a("div",Uy,[a("div",By,[a("strong",null,x(k.username),1),a("span",zy,x(k.role==="admin"?"超管":"普通用户"),1)])]),a("div",Fy,[k.role!=="admin"?(m(),b("button",{key:0,class:"danger",disabled:o.adminUserBusy,onClick:T=>yu(k)},"删除账号",8,Hy)):C("",!0)])]))),128))]))])])):!Ne(Ge).isolation&&o.activePanel==="prompts"?(m(),b("section",jy,[a("div",Gy,[a("div",qy,[n[98]||(n[98]=a("h2",null,"提示词",-1)),a("div",Wy,[a("button",{class:"ghost",onClick:n[22]||(n[22]=k=>o.activePanel="chat")},"回到对话"),a("button",{class:"primary",onClick:Zc},"+ 新建提示词")])]),a("div",Ky,[a("aside",Vy,[a("div",Zy,[a("strong",null,x(o.promptLibrary.length)+" 个提示词",1)]),a("div",Qy,[o.promptLibraryLoading?(m(),b("div",Yy,"正在加载…")):o.promptLibrary.length?(m(!0),b(Y,{key:2},ce(o.promptLibrary,k=>{var T,Ue;return m(),b("button",{key:k.id,class:Q(["prompt-library-item",{active:((T=ms.value)==null?void 0:T.id)===k.id,applied:((Ue=Ft.value)==null?void 0:Ue.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=>Qc(k),onDblclick:gt=>$n(k),onDragstart:gt=>iu(gt,k),onDragover:gt=>au(gt,k),onDrop:gt=>lu(gt,k),onDragend:Si},[a("strong",null,x(k.title),1),k.usage?(m(),b("span",ev,"用法:"+x(k.usage),1)):C("",!0)],42,Xy)}),128)):(m(),b("div",Jy,"暂无提示词"))])]),a("section",tv,[a("div",nv,[a("strong",sv,x(Re.title||"新提示词"),1),a("div",rv,[a("button",{class:"mini-button",type:"button",disabled:!ms.value,onClick:n[23]||(n[23]=k=>ms.value&&$n(ms.value))},"应用",8,ov),a("button",{class:"mini-button",type:"button",onClick:Yc},"保存"),a("button",{class:"mini-button danger",type:"button",disabled:!Re.id,onClick:Jc},"删除",8,iv)])]),a("div",av,[a("label",lv,[n[99]||(n[99]=a("span",null,"名称",-1)),Oe(a("input",{"onUpdate:modelValue":n[24]||(n[24]=k=>Re.title=k),type:"text",placeholder:"例如:代码评审"},null,512),[[nt,Re.title]])]),a("label",cv,[n[100]||(n[100]=a("span",null,"提示词内容",-1)),Oe(a("textarea",{"onUpdate:modelValue":n[25]||(n[25]=k=>Re.content=k),rows:"14",placeholder:"输入提示词内容"},null,512),[[nt,Re.content]])]),a("label",uv,[n[101]||(n[101]=a("span",null,"用法(选填)",-1)),Oe(a("textarea",{"onUpdate:modelValue":n[26]||(n[26]=k=>Re.usage=k),rows:"4",placeholder:"输入适用场景"},null,512),[[nt,Re.usage]])])])])])])])):l.value&&o.activePanel==="settings"?(m(),b("section",dv,[a("div",gv,[l.value&&o.settingsPage==="prompt"?(m(),b(Y,{key:0},[a("div",fv,[a("div",pv,[a("button",{type:"button",class:"mini-button","aria-label":"返回模型配置",onClick:n[27]||(n[27]=k=>o.settingsPage="")},"←"),n[102]||(n[102]=a("h2",null,"提示词配置",-1))])]),gn(dl,{endpoint:Ne(tt)("/api/prompt-config"),onSaved:Ni},null,8,["endpoint"])],64)):(m(),b(Y,{key:1},[a("div",hv,[n[103]||(n[103]=a("h2",null,"模型配置",-1)),a("button",{class:"primary",onClick:Li,disabled:!o.login},"保存",8,mv)]),o.login?(m(),b("form",{key:1,class:"settings-form",onSubmit:he(Li,["prevent"])},[l.value?(m(),b("button",{key:0,type:"button",class:"settings-prompt-entry",onClick:n[28]||(n[28]=k=>o.settingsPage="prompt")},[...n[104]||(n[104]=[a("strong",null,"提示词配置",-1),a("span",{"aria-hidden":"true"},"›",-1)])])):C("",!0),a("section",kv,[n[106]||(n[106]=a("header",{class:"settings-card-head"},[a("strong",null,"模型")],-1)),a("div",yv,[a("label",vv,[n[105]||(n[105]=a("span",null,"供应商",-1)),gn(sr,{modelValue:Fe.value,"onUpdate:modelValue":n[29]||(n[29]=k=>Fe.value=k),options:Wu(o.login.providers),"aria-label":"供应商",onChange:_u},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,[Yn(x(Zr(k.label)),1),k.required?(m(),b("i",wv)):C("",!0)]),k.options?(m(),Be(sr,{key:0,modelValue:st[k.key],"onUpdate:modelValue":T=>st[k.key]=T,options:Ku(k),"aria-label":Zr(k.label)},null,8,["modelValue","onUpdate:modelValue","options","aria-label"])):Oe((m(),b("input",{key:1,"onUpdate:modelValue":T=>st[k.key]=T,type:k.secret?"password":"text",placeholder:k.placeholder||`请输入${Zr(k.label)}`},null,8,_v)),[[kg,st[k.key]]])]))),128))])]),l.value?(m(),b("section",xv,[n[109]||(n[109]=a("header",{class:"settings-card-head"},[a("strong",null,"CPA")],-1)),a("div",Sv,[a("label",Ev,[n[107]||(n[107]=a("span",null,"URL",-1)),Oe(a("input",{"onUpdate:modelValue":n[30]||(n[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",Tv,[n[108]||(n[108]=a("span",null,"管理密码",-1)),Oe(a("input",{"onUpdate:modelValue":n[31]||(n[31]=k=>o.cpaConfig.password=k),type:"password",placeholder:"请输入管理密码",autocomplete:"new-password"},null,512),[[nt,o.cpaConfig.password]])])])])):C("",!0),l.value?(m(),b("section",Iv,[a("header",Av,[n[110]||(n[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:Nc},"保存",8,Cv)]),a("div",Mv,[(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",Rv,[Oe(a("input",{"onUpdate:modelValue":T=>k.configuredEnabled=T,type:"checkbox","aria-label":k.name},null,8,Nv),[[Ha,k.configuredEnabled]]),n[111]||(n[111]=a("span",{"aria-hidden":"true"},null,-1))])]))),128))])])):C("",!0),l.value?(m(),b("section",Lv,[a("header",$v,[n[112]||(n[112]=a("strong",null,"插件",-1)),a("button",{type:"button",class:"mini-button",disabled:o.globalPlugins.locked||o.globalPlugins.loading,onClick:Oc},"保存",8,Ov)]),a("div",Dv,[(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",Pv,[Oe(a("input",{"onUpdate:modelValue":T=>k.configuredEnabled=T,type:"checkbox",disabled:o.globalPlugins.locked,"aria-label":k.name},null,8,Uv),[[Ha,k.configuredEnabled]]),n[113]||(n[113]=a("span",{"aria-hidden":"true"},null,-1))])]))),128))])])):C("",!0)],32)):(m(),b("div",bv,"正在加载配置…"))],64))])])):(m(),b("section",Bv,[a("div",zv,[n[114]||(n[114]=a("h2",null,"运行时能力",-1)),a("div",Fv,[(m(),b(Y,null,ce(["流式模型循环","工具执行","上下文指标","会话恢复","后台代理","登录配置","图片附件","Markdown 输出"],k=>a("div",{key:k,class:"capability-card"},x(k),1)),64))])])]))]),o.toast?(m(),b("div",Hv,x(o.toast),1)):C("",!0)]),(m(),Be(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"])]},[n[115]||(n[115]=a("span",{class:"core-version-spark spark-a","aria-hidden":"true"},null,-1)),n[116]||(n[116]=a("span",{class:"core-version-spark spark-b","aria-hidden":"true"},null,-1)),n[117]||(n[117]=a("span",{class:"core-version-spark spark-c","aria-hidden":"true"},null,-1)),a("span",null,"内核版本 "+x(o.coreVersion),1)],42,jv)):C("",!0)])),(m(),Be(it,{to:"body"},[o.cwdPicker.open?(m(),b("div",{key:0,class:"cwd-picker-backdrop",onClick:he(Hs,["self"])},[a("section",Gv,[a("header",{class:"cwd-picker-head"},[n[118]||(n[118]=a("strong",null,"CWD",-1)),a("button",{type:"button","aria-label":"关闭",onClick:Hs},"×")]),a("form",{class:"cwd-picker-path",onSubmit:n[33]||(n[33]=he(k=>js(),["prevent"]))},[Oe(a("input",{"onUpdate:modelValue":n[32]||(n[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,qv),a("button",{type:"button",disabled:o.cwdPicker.mutating,onClick:sd},"新建",8,Wv)],32),a("div",Kv,[o.cwdPicker.parent?(m(),b("button",{key:0,type:"button",onClick:n[34]||(n[34]=k=>js(o.cwdPicker.parent))},"← 上级")):C("",!0),a("span",null,x(o.cwdPicker.selectedPath||o.cwdPicker.cwd),1)]),a("div",Vv,[a("nav",Zv,[(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",Yv,x(k.kind==="drive"||k.kind==="volume"?"▣":k.kind==="home"?"◆":"◇"),1),a("strong",null,x(k.label),1)],10,Qv))),128))]),a("div",Jv,[o.cwdPicker.loading?(m(),b("div",Xv,"读取中")):o.cwdPicker.error?(m(),b("div",ew,x(o.cwdPicker.error),1)):(m(),Be(Ch,{key:2,nodes:o.cwdPicker.treeRoots,children:o.cwdPicker.treeChildren,expanded:o.cwdPicker.treeExpanded,"selected-path":o.cwdPicker.selectedPath,"allow-delete":!1,onToggle:td,onSelect:nd,onDelete:rd},null,8,["nodes","children","expanded","selected-path"]))])]),a("footer",tw,[a("button",{type:"button",onClick:Hs},"取消"),a("button",{type:"button",class:"primary",disabled:o.cwdPicker.mutating||o.cwdPicker.loading,onClick:od},"选择",8,nw)])])])):C("",!0)])),(m(),Be(it,{to:"body"},[o.projectContextOpen?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:he(Xr,["self"])},[a("section",sw,[a("header",rw,[a("div",null,[o.projectContextDocument?(m(),b("span",ow,x(o.projectContextDocument.path),1)):C("",!0),a("strong",null,x(((H=o.projectContextDocument)==null?void 0:H.name)||"项目上下文"),1)]),a("button",{type:"button","aria-label":o.projectContextDocument?"返回":"关闭",onClick:Xr},"×",8,iw)]),a("div",aw,[o.projectContextDocument?(m(),b("pre",uw,x(o.projectContextDocument.content),1)):(m(),b("div",lw,[(m(!0),b(Y,null,ce(An.value,k=>(m(),b("button",{key:k.path,type:"button",class:"runtime-context-index-item",onClick:T=>Yu(k)},[a("span",null,[a("strong",null,x(k.name),1),a("small",null,x(dn(k.chars||0))+" 字符",1)]),n[119]||(n[119]=a("b",null,"›",-1))],8,cw))),128))]))])])])):C("",!0)])),(m(),Be(it,{to:"body"},[o.confirmDialog.open?(m(),b("div",{key:0,class:"confirm-dialog-backdrop",onClick:n[37]||(n[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",gw,[a("h3",null,x(o.confirmDialog.title),1),a("p",null,x(o.confirmDialog.message),1)]),a("div",fw,[a("button",{type:"button",class:"ghost",onClick:n[35]||(n[35]=k=>sn(!1))},x(o.confirmDialog.cancelLabel),1),a("button",{type:"button",class:Q(["primary",{danger:o.confirmDialog.tone==="danger"}]),onClick:n[36]||(n[36]=k=>sn(!0))},x(o.confirmDialog.confirmLabel),3)])],8,dw)])):C("",!0)])),(m(),Be(it,{to:"body"},[o.modelModalOpen?(m(),b("div",{key:0,class:"context-window-backdrop",onClick:he(Dn,["self"])},[a("section",{class:"context-window-modal session-model-modal",role:"dialog","aria-modal":"true","aria-label":"选择模型",onKeydown:Mi},[a("form",{onSubmit:he(fu,["prevent"])},[a("header",{class:"session-model-header"},[n[120]||(n[120]=a("h2",null,"模型",-1)),a("button",{type:"button",class:"ghost","aria-label":"关闭模型选择",onClick:Dn},"×")]),Oe(a("input",{id:"session-model-search","onUpdate:modelValue":n[38]||(n[38]=k=>o.modelSearch=k),type:"search",placeholder:"搜索模型","aria-label":"搜索模型",autocomplete:"off"},null,512),[[nt,o.modelSearch]]),a("div",pw,[(m(!0),b(Y,null,ce(mc.value,k=>(m(),b("label",{key:k,class:Q(["session-model-option",{selected:o.modelDraft===k}])},[Oe(a("input",{"onUpdate:modelValue":n[39]||(n[39]=T=>o.modelDraft=T),type:"radio",name:"session-model",value:k,disabled:o.modelSaving},null,8,hw),[[ja,o.modelDraft]]),a("span",null,x(k),1)],2))),128))]),a("fieldset",{class:"session-reasoning-options",disabled:o.modelSaving},[n[121]||(n[121]=a("legend",null,"推理强度",-1)),(m(!0),b(Y,null,ce(gs.value,k=>(m(),b("label",{key:k,class:Q({selected:o.reasoningDraft===k})},[Oe(a("input",{"onUpdate:modelValue":n[40]||(n[40]=T=>o.reasoningDraft=T),type:"radio",name:"session-reasoning",value:k},null,8,bw),[[ja,o.reasoningDraft]]),a("span",null,x(k==="default"?"默认":k==="off"?"关闭":k),1)],2))),128))],8,mw),o.modelError?(m(),b("p",kw,x(o.modelError),1)):C("",!0),a("div",yw,[a("button",{type:"button",class:"ghost",onClick:Dn},"取消"),a("button",{type:"submit",class:"primary",disabled:o.modelSaving||!o.modelDraft},x(o.modelSaving?"保存中…":"确认"),9,vw)])],32)],32)])):C("",!0)])),(m(),Be(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:Mi},[a("form",{onSubmit:he(mu,["prevent"])},[n[123]||(n[123]=a("label",{for:"context-window-input"},"上下文窗口",-1)),a("div",ww,[Oe(a("input",{id:"context-window-input","onUpdate:modelValue":n[41]||(n[41]=k=>o.contextWindowDraft=k),type:"text",inputmode:"numeric",autocomplete:"off",autofocus:"","aria-describedby":"context-window-unit",onInput:hu},null,544),[[nt,o.contextWindowDraft]]),n[122]||(n[122]=a("span",{id:"context-window-unit"},"k",-1))]),o.contextWindowError?(m(),b("p",_w,x(o.contextWindowError),1)):C("",!0),a("div",xw,[a("button",{type:"button",class:"ghost",onClick:Cs},"取消"),a("button",{type:"submit",class:"primary",disabled:o.contextWindowSaving},x(o.contextWindowSaving?"保存中…":"确认"),9,Sw)])],32)],32)])):C("",!0)])),(m(),Be(it,{to:"body"},[o.imagePreview?(m(),b("div",{key:0,class:"image-preview-backdrop",onClick:he(Fr,["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:Fr},"×"),a("div",Tw,[a("img",{src:o.imagePreview.src,alt:o.imagePreview.caption||"图片预览"},null,8,Iw)]),o.imagePreview.caption?(m(),b("footer",Aw,x(o.imagePreview.caption),1)):C("",!0)],8,Ew)])):C("",!0)])),(m(),Be(it,{to:"body"},[kt.value?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:he($s,["self"])},[a("section",Cw,[a("header",{class:"runtime-context-modal-head"},[n[124]||(n[124]=a("div",null,[a("strong",null,"压缩上下文详情")],-1)),a("button",{type:"button","aria-label":"关闭",onClick:$s},"×")]),a("div",Mw,[a("dl",Rw,[a("div",null,[n[125]||(n[125]=a("dt",null,"压缩方式",-1)),a("dd",null,x(Mu(kt.value)),1)]),a("div",null,[n[126]||(n[126]=a("dt",null,"发生时间",-1)),a("dd",null,x(Di(kt.value.compaction.createdAt)),1)]),a("div",null,[n[127]||(n[127]=a("dt",null,"新窗口消息",-1)),a("dd",null,x(kt.value.compaction.newWindowMessages),1)]),a("div",null,[n[128]||(n[128]=a("dt",null,"保留用户消息",-1)),a("dd",null,x(kt.value.compaction.preservedUserMessages),1)]),a("div",null,[n[129]||(n[129]=a("dt",null,"释放字符",-1)),a("dd",null,x(dn(kt.value.compaction.charsFreed)),1)]),a("div",null,[n[130]||(n[130]=a("dt",null,"图片引用",-1)),a("dd",null,x(kt.value.compaction.imageCount||0),1)])]),n[131]||(n[131]=a("h3",null,"实际续接上下文",-1)),a("pre",null,x(kt.value.compaction.continuationState||kt.value.compaction.summary||"未提供续接上下文"),1)])])])):C("",!0)])),(m(),Be(it,{to:"body"},[o.runtimeContextModal?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:he(Yr,["self"])},[a("section",Nw,[a("header",Lw,[a("div",null,[a("strong",null,x(o.runtimeContextModal==="prompt"?"系统提示词":o.runtimeContextModal==="tools"?"可用工具":"会话插件"),1)]),a("button",{type:"button","aria-label":"关闭",onClick:Yr},"×")]),a("div",$w,[!Ne(Ge).isolation&&o.runtimeContextModal==="prompt"?(m(),Be(dl,{key:0,endpoint:F("/api/session-prompt"),session:"","runtime-prompt":(U=o.runtimeContext)==null?void 0:U.prompt,onSaved:Ni},null,8,["endpoint","runtime-prompt"])):o.runtimeContextModal==="tools"?(m(),b("div",Ow,[o.sessionTools.loading?(m(),b("div",Dw,"同步中")):(m(),b(Y,{key:1},[a("div",Pw,[a("span",null,"可用 "+x(Ic.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:!Mr.value.some(T=>T.name===k.name),onClick:T=>id(Mr.value.find(Ue=>Ue.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,Uw),gn(sr,{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=>Lc(k,T)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))],64))])):(m(),b("div",Bw,[o.sessionPlugins.loading?(m(),b("div",zw,"同步中")):(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(sr,{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=>Dc(k,T)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))]))])])])):C("",!0)])),(m(),Be(it,{to:"body"},[o.runtimeContextDetail?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:he(Jr,["self"])},[a("section",{class:"runtime-context-detail-modal",role:"dialog","aria-modal":"true","aria-label":o.runtimeContextDetail.title},[a("header",Hw,[a("div",null,[o.runtimeContextDetail.meta?(m(),b("span",jw,x(o.runtimeContextDetail.meta),1)):C("",!0),a("strong",null,x(o.runtimeContextDetail.title),1)]),a("button",{type:"button","aria-label":"返回",onClick:Jr},"×")]),a("div",Gw,[o.runtimeContextDetail.kind==="tool"?(m(),b(Y,{key:0},[o.runtimeContextDetail.description?(m(),b("p",qw,x(o.runtimeContextDetail.description),1)):C("",!0),a("pre",null,x(o.runtimeContextDetail.schema),1)],64)):(m(),b("pre",Ww,x(o.runtimeContextDetail.content),1))])],8,Fw)])):C("",!0)])),(m(),Be(it,{to:"body"},[o.backgroundTaskDetail?(m(),b("div",{key:0,class:"tool-result-modal-backdrop",onClick:he(Fs,["self"])},[a("section",Kw,[a("header",Vw,[a("div",Zw,[n[132]||(n[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",Yw,[(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=>Kr(k)},[a("span",{class:Q(["background-task-dot",`status-${k.status}`])},null,2),a("span",Xw,[a("strong",null,x(zs(k)),1),a("small",null,x(Vr(k.status)),1)])],10,Jw))),128))])):C("",!0),a("article",e0,[a("header",t0,[a("div",n0,[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(Vr(o.backgroundTaskDetail.status)),3)]),a("dl",s0,[Yi(o.backgroundTaskDetail)?(m(),b("div",r0,[n[133]||(n[133]=a("dt",null,"耗时",-1)),a("dd",null,x(Yi(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.cwd?(m(),b("div",o0,[n[134]||(n[134]=a("dt",null,"目录",-1)),a("dd",null,x(o.backgroundTaskDetail.cwd),1)])):C("",!0)]),a("div",i0,[o.backgroundTaskDetail.kind!=="agent"&&Ji(o.backgroundTaskDetail)?(m(),b("section",a0,[n[135]||(n[135]=a("header",null,"命令",-1)),a("pre",l0,x(Ji(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.kind==="terminal"?(m(),Be(uf,{key:1,"owner-session-id":o.backgroundTaskDetail.ownerSessionId||((le=o.session)==null?void 0:le.sessionId),"run-id":o.backgroundTaskDetail.sessionId},null,8,["owner-session-id","run-id"])):C("",!0),o.backgroundTaskDetail.kind==="agent"?(m(),b("div",c0,[gn(kf,{"owner-session-id":(_e=o.session)==null?void 0:_e.sessionId,task:o.backgroundTaskDetail,"render-markdown":Ou},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:Du,role:"dialog","aria-modal":"true","aria-label":`${jt(rt.value)}详情`},[a("header",d0,[a("div",null,[a("div",g0,[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)]),Gi(rt.value)?(m(),b("p",f0,x(Gi(rt.value)),1)):C("",!0)]),a("button",{type:"button",class:"tool-result-modal-close","aria-label":"关闭工具结果",onClick:an},"×")]),a("div",p0,[Nt(rt.value)?(m(),b("div",{key:0,class:"message-text markdown tool-detail-markdown",innerHTML:ad(rt.value)},null,8,h0)):C("",!0)]),a("footer",{class:"tool-result-modal-footer"},[a("button",{type:"button",class:"primary",onClick:an},"关闭")])],40,u0)])):C("",!0)]))],64)}}};export{T0 as default};
|