neoctl-web 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/assets/App-BBTgdI-j.js +105 -0
- package/dist/assets/{App-DmtsTXw2.css → App-ha0ZLeCJ.css} +1 -1
- package/dist/assets/{index-BkoW_zgA.js → index-B0Wkp2VZ.js} +2 -2
- package/dist/assets/index-BXAwT7V2.css +1 -0
- package/dist/index.html +2 -2
- package/isolation.mjs +7 -8
- package/local-resources.mjs +15 -0
- package/package.json +4 -2
- package/plugin-manager.mjs +120 -0
- package/plugin-settings.mjs +13 -7
- package/plugins/downloads/downloads.mjs +2 -1
- package/plugins/downloads/index.mjs +2 -2
- package/plugins.mjs +162 -69
- package/server.mjs +12 -9
- package/dist/assets/App-Bn6HVDCw.js +0 -105
- package/dist/assets/index-Dgfhk2Ym.css +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var yg=Object.defineProperty;var vg=(t,r,s)=>r in t?yg(t,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[r]=s;var we=(t,r,s)=>vg(t,typeof r!="symbol"?r+"":r,s);import{w as De,o as jt,a as m,c as b,t as S,b as C,r as dr,d as be,F as X,e as fe,f as a,g as re,u as $e,h as Ga,i as wg,s as _g,j as V,_ as Er,k as qo,n as Y,l as nt,m as Jn,p as Be,v as xg,q as at,x as ft,y as me,z as lt,A as Sg,B as Ge,C as qa,D as Ve,E as Wa,G as Ka,H as It,I as it,T as gt,J as Eg,K as Tg,L as Ig,M as Va,N as Za}from"./index-B0Wkp2VZ.js";function Wo(t=globalThis.window){var r,s;return typeof((s=(r=t==null?void 0:t.__TAURI__)==null?void 0:r.core)==null?void 0:s.invoke)=="function"}function Do(t,r=globalThis.window){return`${Wo(r)?"在所在文件夹中显示":"下载"} ${t||"资源"}`}async function Ag(t,{scope:r=globalThis.window,fetch:s=globalThis.fetch}={}){if(!Wo(r))return!1;const i=new URL(t,r.location.origin);if(i.origin!==r.location.origin||i.username||i.password)throw new Error("不能定位其他站点的本地文件");const l=await s(i.href,{method:"HEAD",headers:{"X-Neo-Resource-Action":"reveal"},credentials:"same-origin",redirect:"error",cache:"no-store"});if(!l.ok)throw new Error(l.status===404||l.status===410?"资源不可用:原文件已移动、删除,或对应插件未启用":`无法定位文件(${l.status})`);const d=l.headers.get("X-Neo-Resource-Path");if(!d)throw new Error("此资源未提供本地文件定位能力;请确认桌面端和运行时均已更新");let g;try{g=decodeURIComponent(d)}catch{throw new Error("资源返回的本地路径无效")}if(!g||g.includes("\0"))throw new Error("资源返回的本地路径无效");return await r.__TAURI__.core.invoke("plugin:local-resources|reveal_file",{path:g}),!0}function Ko(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var rn=Ko();function Al(t){rn=t}var en={exec:()=>null};function he(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(Ze.caret,"$1"),s=s.replace(l,g),i},getRegex:()=>new RegExp(s,r)};return i}var Cg=((t="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+t)}catch{return!1}})(),Ze={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)}}>`)},Mg=/^(?:[ \t]*(?:\n|$))+/,Rg=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ng=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,cs=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Lg=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Vo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Cl=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ml=he(Cl).replace(/bull/g,Vo).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(),$g=he(Cl).replace(/bull/g,Vo).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(),Zo=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Og=/^[^\n]+/,Qo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Dg=he(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Qo).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Pg=he(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Vo).getRegex(),Tr="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",Yo=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ug=he("^ {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",Yo).replace("tag",Tr).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Rl=he(Zo).replace("hr",cs).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",Tr).getRegex(),Bg=he(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Rl).getRegex(),Xo={blockquote:Bg,code:Rg,def:Dg,fences:Ng,heading:Lg,hr:cs,html:Ug,lheading:Ml,list:Pg,newline:Mg,paragraph:Rl,table:en,text:Og},Qa=he("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",cs).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",Tr).getRegex(),zg={...Xo,lheading:$g,table:Qa,paragraph:he(Zo).replace("hr",cs).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Qa).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",Tr).getRegex()},Fg={...Xo,html:he(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Yo).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:en,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:he(Zo).replace("hr",cs).replace("heading",` *#{1,6} *[^
|
|
2
|
+
]`).replace("lheading",Ml).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Hg=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,jg=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Nl=/^( {2,}|\\)\n(?!\s*$)/,Gg=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,xn=/[\p{P}\p{S}]/u,Ir=/[\s\p{P}\p{S}]/u,Jo=/[^\s\p{P}\p{S}]/u,qg=he(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ir).getRegex(),Ll=/(?!~)[\p{P}\p{S}]/u,Wg=/(?!~)[\s\p{P}\p{S}]/u,Kg=/(?:[^\s\p{P}\p{S}]|~)/u,Vg=he(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Cg?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),$l=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Zg=he($l,"u").replace(/punct/g,xn).getRegex(),Qg=he($l,"u").replace(/punct/g,Ll).getRegex(),Ol="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Yg=he(Ol,"gu").replace(/notPunctSpace/g,Jo).replace(/punctSpace/g,Ir).replace(/punct/g,xn).getRegex(),Xg=he(Ol,"gu").replace(/notPunctSpace/g,Kg).replace(/punctSpace/g,Wg).replace(/punct/g,Ll).getRegex(),Jg=he("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Jo).replace(/punctSpace/g,Ir).replace(/punct/g,xn).getRegex(),ef=he(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,xn).getRegex(),tf="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",nf=he(tf,"gu").replace(/notPunctSpace/g,Jo).replace(/punctSpace/g,Ir).replace(/punct/g,xn).getRegex(),sf=he(/\\(punct)/,"gu").replace(/punct/g,xn).getRegex(),rf=he(/^<(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(),of=he(Yo).replace("(?:-->|$)","-->").getRegex(),af=he("^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",of).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),hr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,lf=he(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",hr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Dl=he(/^!?\[(label)\]\[(ref)\]/).replace("label",hr).replace("ref",Qo).getRegex(),Pl=he(/^!?\[(ref)\](?:\[\])?/).replace("ref",Qo).getRegex(),cf=he("reflink|nolink(?!\\()","g").replace("reflink",Dl).replace("nolink",Pl).getRegex(),Ya=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ei={_backpedal:en,anyPunctuation:sf,autolink:rf,blockSkip:Vg,br:Nl,code:jg,del:en,delLDelim:en,delRDelim:en,emStrongLDelim:Zg,emStrongRDelimAst:Yg,emStrongRDelimUnd:Jg,escape:Hg,link:lf,nolink:Pl,punctuation:qg,reflink:Dl,reflinkSearch:cf,tag:af,text:Gg,url:en},uf={...ei,link:he(/^!?\[(label)\]\((.*?)\)/).replace("label",hr).getRegex(),reflink:he(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",hr).getRegex()},Po={...ei,emStrongRDelimAst:Xg,emStrongLDelim:Qg,delLDelim:ef,delRDelim:nf,url:he(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Ya).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:he(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Ya).getRegex()},df={...Po,br:he(Nl).replace("{2,}","*").getRegex(),text:he(Po.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},rr={normal:Xo,gfm:zg,pedantic:Fg},Qn={normal:ei,gfm:Po,breaks:df,pedantic:uf},gf={"&":"&","<":"<",">":">",'"':""","'":"'"},Xa=t=>gf[t];function vt(t,r){if(r){if(Ze.escapeTest.test(t))return t.replace(Ze.escapeReplace,Xa)}else if(Ze.escapeTestNoEncode.test(t))return t.replace(Ze.escapeReplaceNoEncode,Xa);return t}function Ja(t){try{t=encodeURI(t).replace(Ze.percentDecode,"%")}catch{return null}return t}function el(t,r){var d;let s=t.replace(Ze.findPipe,(g,f,h)=>{let w=!1,y=f;for(;--y>=0&&h[y]==="\\";)w=!w;return w?"|":" |"}),i=s.split(Ze.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(Ze.slashPipe,"|");return i}function zt(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 tl(t){let r=t.split(`
|
|
3
|
+
`),s=r.length-1;for(;s>=0&&Ze.blankLine.test(r[s]);)s--;return r.length-s<=2?t:r.slice(0,s+1).join(`
|
|
4
|
+
`)}function ff(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 pf(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 nl(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 hf(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 mr=class{constructor(t){we(this,"options");we(this,"rules");we(this,"lexer");this.options=t||rn}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]:tl(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=hf(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=zt(s,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(s=i.trim())}return{type:"heading",raw:zt(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:zt(r[0],`
|
|
8
|
+
`)}}blockquote(t){let r=this.rules.block.blockquote.exec(t);if(r){let s=zt(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
|
+
`),y=w.replace(this.rules.other.blockquoteSetextReplace,`
|
|
12
|
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
|
|
13
|
+
${w}`:w,l=l?`${l}
|
|
14
|
+
${y}`:y;let E=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(y,d,!0),this.lexer.state.top=E,s.length===0)break;let _=d.at(-1);if((_==null?void 0:_.type)==="code")break;if((_==null?void 0:_.type)==="blockquote"){let I=_,x=I.raw+`
|
|
15
|
+
`+s.join(`
|
|
16
|
+
`),$=this.blockquote(x);d[d.length-1]=$,i=i.substring(0,i.length-I.raw.length)+$.raw,l=l.substring(0,l.length-I.text.length)+$.text;break}else if((_==null?void 0:_.type)==="list"){let I=_,x=I.raw+`
|
|
17
|
+
`+s.join(`
|
|
18
|
+
`),$=this.list(x);d[d.length-1]=$,i=i.substring(0,i.length-_.raw.length)+$.raw,l=l.substring(0,l.length-I.raw.length)+$.raw,s=x.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="",y="";if(!(r=d.exec(t))||this.rules.block.hr.test(t))break;w=r[0],t=t.substring(w.length);let E=pf(r[2].split(`
|
|
20
|
+
`,1)[0],r[1].length),_=t.split(`
|
|
21
|
+
`,1)[0],I=!E.trim(),x=0;if(this.options.pedantic?(x=2,y=E.trimStart()):I?x=r[1].length+1:(x=E.search(this.rules.other.nonSpaceChar),x=x>4?1:x,y=E.slice(x),x+=r[1].length),I&&this.rules.other.blankLine.test(_)&&(w+=_+`
|
|
22
|
+
`,t=t.substring(_.length+1),h=!0),!h){let $=this.rules.other.nextBulletRegex(x),R=this.rules.other.hrRegex(x),N=this.rules.other.fencesBeginRegex(x),P=this.rules.other.headingBeginRegex(x),M=this.rules.other.htmlBeginRegex(x),U=this.rules.other.blockquoteBeginRegex(x);for(;t;){let q=t.split(`
|
|
23
|
+
`,1)[0],z;if(_=q,this.options.pedantic?(_=_.replace(this.rules.other.listReplaceNesting," "),z=_):z=_.replace(this.rules.other.tabCharGlobal," "),N.test(_)||P.test(_)||M.test(_)||U.test(_)||$.test(_)||R.test(_))break;if(z.search(this.rules.other.nonSpaceChar)>=x||!_.trim())y+=`
|
|
24
|
+
`+z.slice(x);else{if(I||E.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||N.test(E)||P.test(E)||R.test(E))break;y+=`
|
|
25
|
+
`+_}I=!_.trim(),w+=q+`
|
|
26
|
+
`,t=t.substring(q.length+1),E=z.slice(x)}}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(y),loose:!1,text:y,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 E=this.lexer.inlineQueue.length-1;E>=0;E--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[E].src)){this.lexer.inlineQueue[E].src=this.lexer.inlineQueue[E].src.replace(this.rules.other.listReplaceTask,"");break}let y=this.rules.other.listTaskCheckbox.exec(h.raw);if(y){let E={type:"checkbox",raw:y[0]+" ",checked:y[0]!=="[ ]"};h.checked=E.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=E.raw+h.tokens[0].raw,h.tokens[0].text=E.raw+h.tokens[0].text,h.tokens[0].tokens.unshift(E)):h.tokens.unshift({type:"paragraph",raw:E.raw,text:E.raw,tokens:[E]}):h.tokens.unshift(E)}}else h.task&&(h.task=!1);if(!l.loose){let y=h.tokens.filter(_=>_.type==="space"),E=y.length>0&&y.some(_=>this.rules.other.anyLine.test(_.raw));l.loose=E}}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=tl(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:zt(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=el(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:zt(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(el(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:zt(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=zt(s.slice(0,-1),"\\");if((s.length-d.length)%2===0)return}else{let d=ff(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)),nl(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 nl(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 y=[...i[0]][0].length,E=t.slice(0,l+i.index+y+g);if(Math.min(l,g)%2){let I=E.slice(1,-1);return{type:"em",raw:E,text:I,tokens:this.lexer.inlineTokens(I)}}let _=E.slice(2,-2);return{type:"strong",raw:E,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,y=t.slice(0,l+i.index+w+g),E=y.slice(l,-l);return{type:"del",raw:y,text:E,tokens:this.lexer.inlineTokens(E)}}}}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}}}},pt=class Uo{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||rn,this.options.tokenizer=this.options.tokenizer||new mr,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:Ze,block:rr.normal,inline:Qn.normal};this.options.pedantic?(s.block=rr.pedantic,s.inline=Qn.pedantic):this.options.gfm&&(s.block=rr.gfm,this.options.breaks?s.inline=Qn.breaks:s.inline=Qn.gfm),this.tokenizer.rules=s}static get rules(){return{block:rr,inline:Qn}}static lex(r,s){return new Uo(s).lex(r)}static lexInline(r,s){return new Uo(s).inlineTokens(r)}lex(r){r=r.replace(Ze.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(Ze.tabCharGlobal," ").replace(Ze.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(y=>(h=y.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 y=s.at(-1);h.raw.length===1&&y!==void 0?y.raw+=`
|
|
33
|
+
`:s.push(h);continue}if(h=this.tokenizer.code(r)){r=r.substring(h.raw.length);let y=s.at(-1);(y==null?void 0:y.type)==="paragraph"||(y==null?void 0:y.type)==="text"?(y.raw+=(y.raw.endsWith(`
|
|
34
|
+
`)?"":`
|
|
35
|
+
`)+h.raw,y.text+=`
|
|
36
|
+
`+h.text,this.inlineQueue.at(-1).src=y.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 y=s.at(-1);(y==null?void 0:y.type)==="paragraph"||(y==null?void 0:y.type)==="text"?(y.raw+=(y.raw.endsWith(`
|
|
37
|
+
`)?"":`
|
|
38
|
+
`)+h.raw,y.text+=`
|
|
39
|
+
`+h.raw,this.inlineQueue.at(-1).src=y.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 y=1/0,E=r.slice(1),_;this.options.extensions.startBlock.forEach(I=>{_=I.call({lexer:this},E),typeof _=="number"&&_>=0&&(y=Math.min(y,_))}),y<1/0&&y>=0&&(w=r.substring(0,y+1))}if(this.state.top&&(h=this.tokenizer.paragraph(w))){let y=s.at(-1);i&&(y==null?void 0:y.type)==="paragraph"?(y.raw+=(y.raw.endsWith(`
|
|
40
|
+
`)?"":`
|
|
41
|
+
`)+h.raw,y.text+=`
|
|
42
|
+
`+h.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=y.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 y=s.at(-1);(y==null?void 0:y.type)==="text"?(y.raw+=(y.raw.endsWith(`
|
|
43
|
+
`)?"":`
|
|
44
|
+
`)+h.raw,y.text+=`
|
|
45
|
+
`+h.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=y.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,y,E,_,I;this.tokenizer.lexer=this;let i=r,l=null;if(this.tokens.links){let x=Object.keys(this.tokens.links);if(x.length>0)for(;(l=this.tokenizer.rules.inline.reflinkSearch.exec(i))!==null;)x.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=((y=(w=this.options.hooks)==null?void 0:w.emStrongMask)==null?void 0:y.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 x;if((_=(E=this.options.extensions)==null?void 0:E.inline)!=null&&_.some(R=>(x=R.call({lexer:this},r,s))?(r=r.substring(x.raw.length),s.push(x),!0):!1))continue;if(x=this.tokenizer.escape(r)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.tag(r)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.link(r)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.reflink(r,this.tokens.links)){r=r.substring(x.raw.length);let R=s.at(-1);x.type==="text"&&(R==null?void 0:R.type)==="text"?(R.raw+=x.raw,R.text+=x.text):s.push(x);continue}if(x=this.tokenizer.emStrong(r,i,f)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.codespan(r)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.br(r)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.del(r,i,f)){r=r.substring(x.raw.length),s.push(x);continue}if(x=this.tokenizer.autolink(r)){r=r.substring(x.raw.length),s.push(x);continue}if(!this.state.inLink&&(x=this.tokenizer.url(r))){r=r.substring(x.raw.length),s.push(x);continue}let $=r;if((I=this.options.extensions)!=null&&I.startInline){let R=1/0,N=r.slice(1),P;this.options.extensions.startInline.forEach(M=>{P=M.call({lexer:this},N),typeof P=="number"&&P>=0&&(R=Math.min(R,P))}),R<1/0&&R>=0&&($=r.substring(0,R+1))}if(x=this.tokenizer.inlineText($)){r=r.substring(x.raw.length),x.raw.slice(-1)!=="_"&&(f=x.raw.slice(-1)),g=!0;let R=s.at(-1);(R==null?void 0:R.type)==="text"?(R.raw+=x.raw,R.text+=x.text):s.push(x);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)}},br=class{constructor(t){we(this,"options");we(this,"parser");this.options=t||rn}space(t){return""}code({text:t,lang:r,escaped:s}){var d;let i=(d=(r||"").match(Ze.notSpaceStart))==null?void 0:d[0],l=t.replace(Ze.endingNewline,"")+`
|
|
46
|
+
`;return i?'<pre><code class="language-'+vt(i)+'">'+(s?l:vt(l,!0))+`</code></pre>
|
|
47
|
+
`:"<pre><code>"+(s?l:vt(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>${vt(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=Ja(t);if(l===null)return i;t=l;let d='<a href="'+t+'"';return r&&(d+=' title="'+vt(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=Ja(t);if(l===null)return vt(s);t=l;let d=`<img src="${t}" alt="${vt(s)}"`;return r&&(d+=` title="${vt(r)}"`),d+=">",d}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:vt(t.text)}},ti=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}},ht=class Bo{constructor(r){we(this,"options");we(this,"renderer");we(this,"textRenderer");this.options=r||rn,this.options.renderer=this.options.renderer||new br,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ti}static parse(r,s){return new Bo(s).parse(r)}static parseInline(r,s){return new Bo(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}},ur,es=(ur=class{constructor(t){we(this,"options");we(this,"block");this.options=t||rn}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?pt.lex:pt.lexInline}provideParser(t=this.block){return t?ht.parse:ht.parseInline}},we(ur,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),we(ur,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),ur),Ul=class{constructor(...t){we(this,"defaults",Ko());we(this,"options",this.setOptions);we(this,"parse",this.parseMarkdown(!0));we(this,"parseInline",this.parseMarkdown(!1));we(this,"Parser",ht);we(this,"Renderer",br);we(this,"TextRenderer",ti);we(this,"Lexer",pt);we(this,"Tokenizer",mr);we(this,"Hooks",es);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 br(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 y=f.apply(l,w);return y===!1&&(y=h.apply(l,w)),y||""}}i.renderer=l}if(s.tokenizer){let l=this.defaults.tokenizer||new mr(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 y=f.apply(l,w);return y===!1&&(y=h.apply(l,w)),y}}i.tokenizer=l}if(s.hooks){let l=this.defaults.hooks||new es;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];es.passThroughHooks.has(d)?l[g]=w=>{if(this.defaults.async&&es.passThroughHooksRespectAsync.has(d))return(async()=>{let E=await f.call(l,w);return h.call(l,E)})();let y=f.call(l,w);return h.call(l,y)}:l[g]=(...w)=>{if(this.defaults.async)return(async()=>{let E=await f.apply(l,w);return E===!1&&(E=await h.apply(l,w)),E})();let y=f.apply(l,w);return y===!1&&(y=h.apply(l,w)),y}}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 pt.lex(t,r??this.defaults)}parser(t,r){return ht.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?pt.lex:pt.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?ht.parse:ht.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?pt.lex:pt.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?ht.parse:ht.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>"+vt(s.message+"",!0)+"</pre>";return r?Promise.resolve(i):i}if(r)return Promise.reject(s);throw s}}},sn=new Ul;function _e(t,r){return sn.parse(t,r)}_e.options=_e.setOptions=function(t){return sn.setOptions(t),_e.defaults=sn.defaults,Al(_e.defaults),_e};_e.getDefaults=Ko;_e.defaults=rn;_e.use=function(...t){return sn.use(...t),_e.defaults=sn.defaults,Al(_e.defaults),_e};_e.walkTokens=function(t,r){return sn.walkTokens(t,r)};_e.parseInline=sn.parseInline;_e.Parser=ht;_e.parser=ht.parse;_e.Renderer=br;_e.TextRenderer=ti;_e.Lexer=pt;_e.lexer=pt.lex;_e.Tokenizer=mr;_e.Hooks=es;_e.parse=_e;_e.options;_e.setOptions;_e.use;_e.walkTokens;_e.parseInline;ht.parse;pt.lex;const bn=new Ul({extensions:[{name:"cjkStrong",level:"inline",start(t){return t.indexOf("**")},tokenizer(t){const r=/^\*\*([^*\r\n]+(?![\\*])[\p{P}\p{S}])\*\*(?=[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}])/u.exec(t);if(!(!r||/^\s/u.test(r[1])||!/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u.test(r[1])))return{type:"strong",raw:r[0],text:r[1],tokens:this.lexer.inlineTokens(r[1])}}}]}),mf={key:0,class:"terminal-output-reader","aria-label":"终端运行输出"},bf={key:0,class:"background-task-live-output",tabindex:"0"},kf={key:1,class:"background-task-live-output terminal-stderr",tabindex:"0"},yf={__name:"TerminalOutputReader",props:{ownerSessionId:String,runId:String},setup(t){const r=t,s=dr({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 y;do{const E=s.offsets[w],_=new URLSearchParams({sessionId:r.ownerSessionId,runId:r.runId,stream:w,offset:String(E),limitBytes:"65536"}),I=await be(`/api/terminal-output?${_}`,{signal:d.signal,cache:"no-store"});if(f!==i||!I.ok)return;const x=await I.json();if(f!==i||x.sessionId!==r.ownerSessionId||x.runId!==r.runId||x.stream!==w||x.offset!==E||!Number.isSafeInteger(x.nextOffset)||x.nextOffset<E||(s.record=x.record,((h=x.record)==null?void 0:h.availability)!=="available"||typeof x.text!="string")||x.text&&x.nextOffset===E)return;if(y??(y=x.record.streams[w].storedBytes),s[w]+=x.text,s.offsets[w]=x.nextOffset,x.endOfStoredOutput||x.nextOffset>=y)break}while(f===i)}}catch{}finally{f===i&&(!s.record||s.record.lifecycle==="running")&&(l=setTimeout(g,1e3))}}return De(()=>[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",mf,[s.stdout?(m(),b("pre",bf,S(s.stdout),1)):C("",!0),s.stderr?(m(),b("pre",kf,S(s.stderr),1)):C("",!0)])):C("",!0)}},vf=["report","timeline","messages","delegation"],Bl=(t,r)=>t.ownerSessionId===r.ownerSessionId&&t.taskId===r.taskId&&t.runGeneration===r.runGeneration,zl=t=>typeof t.ownerSessionId=="string"&&!!t.ownerSessionId&&typeof t.taskId=="string"&&!!t.taskId&&Number.isSafeInteger(t.runGeneration)&&t.runGeneration>0;function wf(t,r,s,i=!1){if(!zl(t)||!vf.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 _f=["complete","truncated","missing","unavailable"];function sl(t,r){if(!r||!_f.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 Fl(){return{page:null,items:[],fragment:null}}function xf(t,r,s,i,l="next"){var f,h,w,y,E;if(!r||!Bl(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"?Fl():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(),I=new Map(_.map((x,$)=>[x.id,$]));for(const x of r.items??[]){if(!x||typeof x.id!="string"||!x.id||!["assistant","tool_use","tool_result"].includes(x.kind))throw new Error("过程条目身份或类型无效");const $=I.get(x.id),R=$===void 0?void 0:_[$];if(R&&(R.kind!==x.kind||R.messageId!==x.messageId||R.toolUseId!==x.toolUseId||R.toolName!==x.toolName))throw new Error("过程条目身份冲突");const N={...x,content:sl(R==null?void 0:R.content,x.content)};$===void 0?(I.set(x.id,_.length),_.push(N)):_[$]=N}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"?(y=r.messages)==null?void 0:y.content:(E=r.report)==null?void 0:E.content;if(!g&&r.state!=="missing")throw new Error("读取页未提供正文");return{page:r,items:[],fragment:g?sl(d.fragment,g):null}}const Sf={class:"agent-content-reader agent-parent-messages","aria-label":"代理消息"},Ef=["innerHTML"],Tf={key:0,class:"reader-error",role:"alert"},If={__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 y,E;return{ownerSessionId:r.ownerSessionId,taskId:(y=r.task)==null?void 0:y.taskId,runGeneration:(E=r.task)==null?void 0:E.runGeneration}};async function w(){var z;const y=++l;d==null||d.abort(),d=new AbortController;const E=d.signal;clearTimeout(g);const _=r.task,I=h(),{ownerSessionId:x}=I;if(!zl(I))return;const $=()=>y===l&&!E.aborted&&Bl(I,h()),R=[];let N=!1;async function P(ee,o){var Q;const oe={ownerSessionId:x,taskId:_.taskId,runGeneration:o};let ce=Fl(),W;do{const le=await be(wf(oe,ee,W),{signal:E,cache:"no-store"});if(!le.ok)throw new Error("加载失败");const H=await le.json();if(!$())return"";if(H.state==="unavailable")throw new Error("加载失败");if(ce=xf(ce,H,oe,ee,W?"next":"start"),W&&H.nextCursor===W)throw new Error("加载失败");W=H.nextCursor}while(W&&$());return((Q=ce.fragment)==null?void 0:Q.text)||""}async function M(ee,o){try{return await P(ee,o)}catch(oe){return $()&&oe.name!=="AbortError"&&(N=!0),""}}function U(ee,o,oe){typeof oe=="string"&&oe.trim()&&R.push({id:ee,direction:o,text:oe})}U("delegation","主代理 → 子代理",await M("delegation",_.runGeneration));const q=[..._.runHistory||[],_].filter(ee=>Number.isSafeInteger(ee.runGeneration)).sort((ee,o)=>ee.runGeneration-o.runGeneration);for(const ee of q){if(!$())return;const o=await M("messages",ee.runGeneration);try{const oe=JSON.parse(o||"[]");if(!Array.isArray(oe))throw new Error;for(const ce of oe)U(`message:${ee.runGeneration}:${ce.id}`,"主代理 → 子代理",ce.text)}catch{N=!0}U(`report:${ee.runGeneration}`,"子代理 → 主代理",await M("report",ee.runGeneration))}$()&&((!N||!s.value.length)&&(s.value=R),i.value=N?"加载失败":"",["pending","running"].includes((z=r.task)==null?void 0:z.status)&&(g=setTimeout(w,3e3)))}return De([()=>r.ownerSessionId,()=>{var y;return(y=r.task)==null?void 0:y.taskId},()=>{var y;return(y=r.task)==null?void 0:y.runGeneration},()=>{var y;return(y=r.task)==null?void 0:y.status}],(y,E)=>{y.slice(0,3).some((_,I)=>_!==E[I])&&(s.value=[],i.value=""),w()},{immediate:!0}),jt(()=>{l++,d==null||d.abort(),clearTimeout(g)}),(y,E)=>(m(),b("section",Sf,[(m(!0),b(X,null,fe(s.value,_=>(m(),b("article",{key:_.id,class:"agent-parent-message"},[a("header",null,[a("strong",null,S(_.direction),1)]),t.renderMarkdown?(m(),b("div",{key:0,class:"markdown",innerHTML:t.renderMarkdown(_.text)},null,8,Ef)):(m(),b("pre",{key:1,style:f},S(_.text),1))]))),128)),i.value?(m(),b("p",Tf,S(i.value),1)):C("",!0)]))}};function Af(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 y=r[h*2];w=l[h]={index:h,key:s(h),start:y,size:r[h*2+1],end:y+r[h*2+1],lane:0}}return w}}if(d==="length")return t}return Reflect.get(l,d,g)}})}function kn(t,r,s){let i=s.initialDeps??[],l,d=!0;function g(){const f=t();return(f.length!==i.length||f.some((w,y)=>i[y]!==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 rl(t,r){if(t===void 0)throw new Error("Unexpected undefined");return t}const Cf=(t,r)=>Math.abs(t-r)<1.01,Mf=(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 Yn;const vo=()=>{if(Yn!==void 0)return Yn;if(typeof navigator>"u")return Yn=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Yn=!0;const t=navigator.maxTouchPoints;return Yn=navigator.platform==="MacIntel"&&t!==void 0&&t>0},ol=t=>{const{offsetWidth:r,offsetHeight:s}=t;return{width:r,height:s}},Rf=t=>t,Hl=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},Nf=(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(ol(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(ol(s))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(f):f()});return d.observe(s,{box:"border-box"}),()=>{d.unobserve(s)}},kr={passive:!0},Lf=typeof window>"u"?!0:"onscrollend"in window,$f=(t,r,s)=>{const i=t.scrollElement;if(!i)return;const l=t.targetWindow;if(!l)return;const d=t.options.useScrollendEvent&&Lf;let g=0;const f=d?null:Mf(l,()=>r(g,!1),t.options.isScrollingResetDelay),h=E=>()=>{g=s(i),f==null||f(),r(g,E)},w=h(!0),y=h(!1);return i.addEventListener("scroll",w,kr),d&&i.addEventListener("scrollend",y,kr),()=>{i.removeEventListener("scroll",w),d&&i.removeEventListener("scrollend",y),f==null||f.cancel()}},Of=(t,r)=>$f(t,r,s=>{const{horizontal:i,isRtl:l}=t.options;return i?s.scrollLeft*(l&&-1||1):s.scrollTop}),Df=(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"]},Pf=(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})},Uf=Pf;class Bf{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,y]of this.elementsCache)if(y===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:Rf,rangeExtractor:Hl,onChange:()=>{},measureElement:Df,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 I=s[_];I!==void 0&&(d[_]=I)}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,I=d.count,x=this.getMeasurements(),$=_>0?((i=x[0])==null?void 0:i.key)??g.getItemKey(0):null,R=_>0?((l=x[_-1])==null?void 0:l.key)??g.getItemKey(_-1):null;if(I!==_||_>0&&I>0&&(d.getItemKey(0)!==$||d.getItemKey(I-1)!==R)){w=!0;const M=_>0?this.getVirtualItemForOffset(this.getScrollOffset())??x[0]:null;M&&(f=[M.key,this.getScrollOffset()-M.start]);const U=d.followOnAppend===!0?"auto":d.followOnAppend||null;U&&I>_&&this.isAtEnd(g.scrollEndThreshold)&&(_===0||d.getItemKey(I-1)!==R)&&(h=U)}}this.options=d,w&&(this.pendingMin=0,this.itemSizeCacheVersion++);let y=!1,E=0;if(f&&this.scrollOffset!==null){const[_,I]=f,x=this.getMeasurements(),{count:$,getItemKey:R}=this.options;let N=0;for(;N<$&&R(N)!==_;)N++;if(N<$){const P=x[N];if(P){const M=Math.max(0,P.start+I);M!==this.scrollOffset&&(E=M-this.scrollOffset,this.scrollOffset=M,y=!0)}}}(y||h)&&(this.pendingScrollAnchor=[y?f[0]:null,y?f[1]:0,h,E])},this.notify=s=>{var i,l;(l=(i=this.options).onChange)==null||l.call(i,this,s)},this.maybeNotify=kn(()=>(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,!(!vo()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};d.addEventListener("touchstart",g,kr),d.addEventListener("touchend",f,kr),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&&(vo()&&(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=kn(()=>[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=kn(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:s,paddingStart:i,scrollMargin:l,getItemKey:d,enabled:g,lanes:f,laneAssignmentMode:h,gap:w},y)=>{const E=this.itemSizeCache;if(!g)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>s)for(const N of this.laneAssignments.keys())N>=s&&this.laneAssignments.delete(N);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(N=>{this.itemSizeCache.set(N.key,N.size)}));const _=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===s&&(this.lanesSettling=!1),f===1){const N=s*2;let P=this._flatMeasurements;if(!P||P.length<N){const q=new Float64Array(N);P&&_>0&&q.set(P.subarray(0,_*2)),P=q,this._flatMeasurements=P}let M;if(_===0)M=i+l;else{const q=_-1;M=P[q*2]+P[q*2+1]+w}for(let q=_;q<s;q++){const z=d(q),ee=E.get(z),o=typeof ee=="number"?ee:this.options.estimateSize(q);P[q*2]=M,P[q*2+1]=o,M+=o+w}const U=Af(s,P,d);return this.measurementsCache=U,U}const I=this.measurementsCache.slice(0,_),x=new Array(f).fill(void 0),$=new Float64Array(f);let R=0;for(let N=0;N<_;N++){const P=I[N];P&&(x[P.lane]===void 0&&R++,x[P.lane]=N,$[P.lane]=P.end)}for(let N=_;N<s;N++){const P=d(N),M=this.laneAssignments.get(N);let U,q;const z=h==="estimate"||E.has(P);if(M!==void 0&&this.options.lanes>1){U=M;const ce=x[U],W=ce!==void 0?I[ce]:void 0;q=W?W.end+w:i+l}else if(R===f){let ce=0,W=$[0],Q=x[0];for(let le=1;le<f;le++){const H=$[le];(H<W||H===W&&x[le]<Q)&&(ce=le,W=H,Q=x[le])}U=ce,q=W+w,z&&this.laneAssignments.set(N,U)}else U=N%this.options.lanes,q=i+l,z&&this.laneAssignments.set(N,U);const ee=E.get(P),o=typeof ee=="number"?ee:this.options.estimateSize(N),oe=q+o;I[N]={index:N,start:q,size:o,end:oe,key:P,lane:U},x[U]===void 0&&R++,x[U]=N,$[U]=oe}return this.measurementsCache=I,I},{key:!1,debug:()=>this.options.debug}),this.calculateRange=kn(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(s,i,l,d)=>s.length===0||i===0?(this.range=null,null):(this.range=Ff(s,i,l,d,d===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=kn(()=>{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 y=this.itemSizeCache.get(h)??g,E=i-y;if(E!==0){const _=this.options.anchorTo==="end"&&((l=this.scrollState)==null?void 0:l.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,I=_?this.getTotalSize():0,x=this.getScrollOffset()+this.scrollAdjustments,R=!this.itemSizeCache.has(h)?f<x:f+y<=x&&this.scrollDirection!=="backward",N=((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},E,this):R);(this.pendingMin===null||s<this.pendingMin)&&(this.pendingMin=s),this.itemSizeCache.set(h,i),this.itemSizeCacheVersion++;let P=!1;_?P=this.applyScrollAdjustment(this.getTotalSize()-I):N&&(P=this.applyScrollAdjustment(E)),this.notify(P)}},this.getVirtualItems=kn(()=>[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=jl(0,i.length-1,d?f=>l[f*2]:f=>rl(i[f]).start,s);return rl(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:vo()&&(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&&Cf(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 jl=(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 zf(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 Ff(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=zf(l,d,s);let y=w;const E=s+r;for(;y<d&&l[y*2]+l[y*2+1]<E;)y++;return{startIndex:w,endIndex:y}}let f=jl(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(E=>E<s+r);){const E=t[h];w[E.lane]=E.end,h++}const y=Array(i).fill(s+r);for(;f>=0&&y.some(E=>E>=s);){const E=t[f];y[E.lane]=E.start,f--}f=Math.max(0,f-f%i),h=Math.min(d,h+(i-1-h%i))}return{startIndex:f,endIndex:h}}function Hf(t){const r=new Bf($e(t)),s=_g(r),i=r._didMount();return De(()=>$e(t).getScrollElement(),l=>{l&&r._willUpdate()},{immediate:!0}),De(()=>$e(t),l=>{r.setOptions({...l,onChange:(d,g)=>{var f;Ga(s),(f=l.onChange)==null||f.call(l,d,g)}}),r._willUpdate(),Ga(s)},{immediate:!0}),wg(i),s}function jf(t){return Hf(V(()=>({observeElementRect:Nf,observeElementOffset:Of,scrollToFn:Uf,...$e(t)})))}function Gf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Gl(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)&&Gl(s)}),t}class il{constructor(r){r.data===void 0&&(r.data={}),this.data=r.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function ql(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ht(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 qf="</span>",al=t=>!!t.scope,Wf=(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 Kf{constructor(r,s){this.buffer="",this.classPrefix=s.classPrefix,r.walk(this)}addText(r){this.buffer+=ql(r)}openNode(r){if(!al(r))return;const s=Wf(r.scope,{prefix:this.classPrefix});this.span(s)}closeNode(r){al(r)&&(this.buffer+=qf)}value(){return this.buffer}span(r){this.buffer+=`<span class="${r}">`}}const ll=(t={})=>{const r={children:[]};return Object.assign(r,t),r};class ni{constructor(){this.rootNode=ll(),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=ll({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=>{ni._collapse(s)}))}}class Vf extends ni{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 Kf(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function as(t){return t?typeof t=="string"?t:t.source:null}function Wl(t){return on("(?=",t,")")}function Zf(t){return on("(?:",t,")*")}function Qf(t){return on("(?:",t,")?")}function on(...t){return t.map(s=>as(s)).join("")}function Yf(t){const r=t[t.length-1];return typeof r=="object"&&r.constructor===Object?(t.splice(t.length-1,1),r):{}}function si(...t){return"("+(Yf(t).capture?"":"?:")+t.map(i=>as(i)).join("|")+")"}function Kl(t){return new RegExp(t.toString()+"|").exec("").length-1}function Xf(t,r){const s=t&&t.exec(r);return s&&s.index===0}const Jf=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ri(t,{joinWith:r}){let s=0;return t.map(i=>{s+=1;const l=s;let d=as(i),g="";for(;d.length>0;){const f=Jf.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 ep=/\b\B/,Vl="[a-zA-Z]\\w*",oi="[a-zA-Z_]\\w*",Zl="\\b\\d+(\\.\\d+)?",Ql="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Yl="\\b(0b[01]+)",tp="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",np=(t={})=>{const r=/^#![ ]*\//;return t.binary&&(t.begin=on(r,/.*\b/,t.binary,/\b.*/)),Ht({scope:"meta",begin:r,end:/$/,relevance:0,"on:begin":(s,i)=>{s.index!==0&&i.ignoreMatch()}},t)},ls={begin:"\\\\[\\s\\S]",relevance:0},sp={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ls]},rp={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ls]},op={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/},Ar=function(t,r,s={}){const i=Ht({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=si("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:on(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},ip=Ar("//","$"),ap=Ar("/\\*","\\*/"),lp=Ar("#","$"),cp={scope:"number",begin:Zl,relevance:0},up={scope:"number",begin:Ql,relevance:0},dp={scope:"number",begin:Yl,relevance:0},gp={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ls,{begin:/\[/,end:/\]/,relevance:0,contains:[ls]}]},fp={scope:"title",begin:Vl,relevance:0},pp={scope:"title",begin:oi,relevance:0},hp={begin:"\\.\\s*"+oi,relevance:0},mp=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 or=Object.freeze({__proto__:null,APOS_STRING_MODE:sp,BACKSLASH_ESCAPE:ls,BINARY_NUMBER_MODE:dp,BINARY_NUMBER_RE:Yl,COMMENT:Ar,C_BLOCK_COMMENT_MODE:ap,C_LINE_COMMENT_MODE:ip,C_NUMBER_MODE:up,C_NUMBER_RE:Ql,END_SAME_AS_BEGIN:mp,HASH_COMMENT_MODE:lp,IDENT_RE:Vl,MATCH_NOTHING_RE:ep,METHOD_GUARD:hp,NUMBER_MODE:cp,NUMBER_RE:Zl,PHRASAL_WORDS_MODE:op,QUOTE_STRING_MODE:rp,REGEXP_MODE:gp,RE_STARTERS_RE:tp,SHEBANG:np,TITLE_MODE:fp,UNDERSCORE_IDENT_RE:oi,UNDERSCORE_TITLE_MODE:pp});function bp(t,r){t.input[t.index-1]==="."&&r.ignoreMatch()}function kp(t,r){t.className!==void 0&&(t.scope=t.className,delete t.className)}function yp(t,r){r&&t.beginKeywords&&(t.begin="\\b("+t.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",t.__beforeBegin=bp,t.keywords=t.keywords||t.beginKeywords,delete t.beginKeywords,t.relevance===void 0&&(t.relevance=0))}function vp(t,r){Array.isArray(t.illegal)&&(t.illegal=si(...t.illegal))}function wp(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 _p(t,r){t.relevance===void 0&&(t.relevance=1)}const xp=(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=on(s.beforeMatch,Wl(s.begin)),t.starts={relevance:0,contains:[Object.assign(s,{endsParent:!0})]},t.relevance=0,delete s.beforeMatch},Sp=["of","and","for","in","not","or","if","then","parent","list","value"],Ep="keyword";function Xl(t,r,s=Ep){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,Xl(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,Tp(h[0],h[1])]})}}function Tp(t,r){return r?Number(r):Ip(t)?0:1}function Ip(t){return Sp.includes(t.toLowerCase())}const cl={},nn=t=>{console.error(t)},ul=(t,...r)=>{console.log(`WARN: ${t}`,...r)},yn=(t,r)=>{cl[`${t}/${r}`]||(console.log(`Deprecated as of ${t}. ${r}`),cl[`${t}/${r}`]=!0)},yr=new Error;function Jl(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+=Kl(r[f-1]);t[s]=g,t[s]._emit=d,t[s]._multi=!0}function Ap(t){if(Array.isArray(t.begin)){if(t.skip||t.excludeBegin||t.returnBegin)throw nn("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),yr;if(typeof t.beginScope!="object"||t.beginScope===null)throw nn("beginScope must be object"),yr;Jl(t,t.begin,{key:"beginScope"}),t.begin=ri(t.begin,{joinWith:""})}}function Cp(t){if(Array.isArray(t.end)){if(t.skip||t.excludeEnd||t.returnEnd)throw nn("skip, excludeEnd, returnEnd not compatible with endScope: {}"),yr;if(typeof t.endScope!="object"||t.endScope===null)throw nn("endScope must be object"),yr;Jl(t,t.end,{key:"endScope"}),t.end=ri(t.end,{joinWith:""})}}function Mp(t){t.scope&&typeof t.scope=="object"&&t.scope!==null&&(t.beginScope=t.scope,delete t.scope)}function Rp(t){Mp(t),typeof t.beginScope=="string"&&(t.beginScope={_wrap:t.beginScope}),typeof t.endScope=="string"&&(t.endScope={_wrap:t.endScope}),Ap(t),Cp(t)}function Np(t){function r(g,f){return new RegExp(as(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+=Kl(f)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const f=this.regexes.map(h=>h[1]);this.matcherRe=r(ri(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((E,_)=>_>0&&E!==void 0),y=this.matchIndexes[w];return h.splice(0,w),Object.assign(h,y)}}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,y])=>h.addRule(w,y)),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 y=this.getMatcher(0);y.lastIndex=this.lastIndex+1,w=y.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;[kp,wp,Rp,xp].forEach(y=>y(g,f)),t.compilerExtensions.forEach(y=>y(g,f)),g.__beforeBegin=null,[yp,vp,_p].forEach(y=>y(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=Xl(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=as(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(y){return Lp(y==="self"?g:y)})),g.contains.forEach(function(y){d(y,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=Ht(t.classNameAliases||{}),d(t)}function ec(t){return t?t.endsWithParent||ec(t.starts):!1}function Lp(t){return t.variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(r){return Ht(t,{variants:null},r)})),t.cachedVariants?t.cachedVariants:ec(t)?Ht(t,{starts:t.starts?Ht(t.starts):null}):Object.isFrozen(t)?Ht(t):t}var $p="11.11.1";class Op extends Error{constructor(r,s){super(r),this.name="HTMLInjectionError",this.html=s}}const wo=ql,dl=Ht,gl=Symbol("nomatch"),Dp=7,tc=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:Vf};function h(L){return f.noHighlightRe.test(L)}function w(L){let G=L.className+" ";G+=L.parentNode?L.parentNode.className:"";const K=f.languageDetectRe.exec(G);if(K){const se=o(K[1]);return se||(ul(d.replace("{}",K[1])),ul("Falling back to no-highlight mode for this block.",L)),se?K[1]:"no-highlight"}return G.split(/\s+/).find(se=>h(se)||o(se))}function y(L,G,K){let se="",ue="";typeof G=="object"?(se=L,K=G.ignoreIllegals,ue=G.language):(yn("10.7.0","highlight(lang, code, ...args) has been deprecated."),yn("10.7.0",`Please use highlight(code, options) instead.
|
|
65
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),ue=L,se=G),K===void 0&&(K=!0);const xe={code:se,language:ue};H("before:highlight",xe);const Ce=xe.result?xe.result:E(xe.language,xe.code,K);return Ce.code=xe.code,H("after:highlight",Ce),Ce}function E(L,G,K,se){const ue=Object.create(null);function xe(F,Z){return F.keywords[Z]}function Ce(){if(!te.keywords){Le.addText(ke);return}let F=0;te.keywordPatternRe.lastIndex=0;let Z=te.keywordPatternRe.exec(ke),ie="";for(;Z;){ie+=ke.substring(F,Z.index);const pe=Re.case_insensitive?Z[0].toLowerCase():Z[0],Pe=xe(te,pe);if(Pe){const[Qe,kt]=Pe;if(Le.addText(ie),ie="",ue[pe]=(ue[pe]||0)+1,ue[pe]<=Dp&&(Nt+=kt),Qe.startsWith("_"))ie+=Z[0];else{const _t=Re.classNameAliases[Qe]||Qe;je(Z[0],_t)}}else ie+=Z[0];F=te.keywordPatternRe.lastIndex,Z=te.keywordPatternRe.exec(ke)}ie+=ke.substring(F),Le.addText(ie)}function Fe(){if(ke==="")return;let F=null;if(typeof te.subLanguage=="string"){if(!r[te.subLanguage]){Le.addText(ke);return}F=E(te.subLanguage,ke,!0,Rt[te.subLanguage]),Rt[te.subLanguage]=F._top}else F=I(ke,te.subLanguage.length?te.subLanguage:null);te.relevance>0&&(Nt+=F.relevance),Le.__addSublanguage(F._emitter,F.language)}function He(){te.subLanguage!=null?Fe():Ce(),ke=""}function je(F,Z){F!==""&&(Le.startScope(Z),Le.addText(F),Le.endScope())}function et(F,Z){let ie=1;const pe=Z.length-1;for(;ie<=pe;){if(!F._emit[ie]){ie++;continue}const Pe=Re.classNameAliases[F[ie]]||F[ie],Qe=Z[ie];Pe?je(Qe,Pe):(ke=Qe,Ce(),ke=""),ie++}}function Se(F,Z){return F.scope&&typeof F.scope=="string"&&Le.openNode(Re.classNameAliases[F.scope]||F.scope),F.beginScope&&(F.beginScope._wrap?(je(ke,Re.classNameAliases[F.beginScope._wrap]||F.beginScope._wrap),ke=""):F.beginScope._multi&&(et(F.beginScope,Z),ke="")),te=Object.create(F,{parent:{value:te}}),te}function de(F,Z,ie){let pe=Xf(F.endRe,ie);if(pe){if(F["on:end"]){const Pe=new il(F);F["on:end"](Z,Pe),Pe.isMatchIgnored&&(pe=!1)}if(pe){for(;F.endsParent&&F.parent;)F=F.parent;return F}}if(F.endsWithParent)return de(F.parent,Z,ie)}function Oe(F){return te.matcher.regexIndex===0?(ke+=F[0],1):(bt=!0,0)}function Ue(F){const Z=F[0],ie=F.rule,pe=new il(ie),Pe=[ie.__beforeBegin,ie["on:begin"]];for(const Qe of Pe)if(Qe&&(Qe(F,pe),pe.isMatchIgnored))return Oe(Z);return ie.skip?ke+=Z:(ie.excludeBegin&&(ke+=Z),He(),!ie.returnBegin&&!ie.excludeBegin&&(ke=Z)),Se(ie,F),ie.returnBegin?0:Z.length}function st(F){const Z=F[0],ie=G.substring(F.index),pe=de(te,F,ie);if(!pe)return gl;const Pe=te;te.endScope&&te.endScope._wrap?(He(),je(Z,te.endScope._wrap)):te.endScope&&te.endScope._multi?(He(),et(te.endScope,F)):Pe.skip?ke+=Z:(Pe.returnEnd||Pe.excludeEnd||(ke+=Z),He(),Pe.excludeEnd&&(ke=Z));do te.scope&&Le.closeNode(),!te.skip&&!te.subLanguage&&(Nt+=te.relevance),te=te.parent;while(te!==pe.parent);return pe.starts&&Se(pe.starts,F),Pe.returnEnd?0:Z.length}function ct(){const F=[];for(let Z=te;Z!==Re;Z=Z.parent)Z.scope&&F.unshift(Z.scope);F.forEach(Z=>Le.openNode(Z))}let Me={};function En(F,Z){const ie=Z&&Z[0];if(ke+=F,ie==null)return He(),0;if(Me.type==="begin"&&Z.type==="end"&&Me.index===Z.index&&ie===""){if(ke+=G.slice(Z.index,Z.index+1),!l){const pe=new Error(`0 width match regex (${L})`);throw pe.languageName=L,pe.badRule=Me.rule,pe}return 1}if(Me=Z,Z.type==="begin")return Ue(Z);if(Z.type==="illegal"&&!K){const pe=new Error('Illegal lexeme "'+ie+'" for mode "'+(te.scope||"<unnamed>")+'"');throw pe.mode=te,pe}else if(Z.type==="end"){const pe=st(Z);if(pe!==gl)return pe}if(Z.type==="illegal"&&ie==="")return ke+=`
|
|
66
|
+
`,1;if(Gt>1e5&&Gt>Z.index*3)throw new Error("potential infinite loop, way more iterations than matches");return ke+=ie,ie.length}const Re=o(L);if(!Re)throw nn(d.replace("{}",L)),new Error('Unknown language: "'+L+'"');const qe=Np(Re);let mt="",te=se||qe;const Rt={},Le=new f.__emitter(f);ct();let ke="",Nt=0,tt=0,Gt=0,bt=!1;try{if(Re.__emitTokens)Re.__emitTokens(G,Le);else{for(te.matcher.considerAll();;){Gt++,bt?bt=!1:te.matcher.considerAll(),te.matcher.lastIndex=tt;const F=te.matcher.exec(G);if(!F)break;const Z=G.substring(tt,F.index),ie=En(Z,F);tt=F.index+ie}En(G.substring(tt))}return Le.finalize(),mt=Le.toHTML(),{language:L,value:mt,relevance:Nt,illegal:!1,_emitter:Le,_top:te}}catch(F){if(F.message&&F.message.includes("Illegal"))return{language:L,value:wo(G),illegal:!0,relevance:0,_illegalBy:{message:F.message,index:tt,context:G.slice(tt-100,tt+100),mode:F.mode,resultSoFar:mt},_emitter:Le};if(l)return{language:L,value:wo(G),illegal:!1,relevance:0,errorRaised:F,_emitter:Le,_top:te};throw F}}function _(L){const G={value:wo(L),illegal:!1,relevance:0,_top:g,_emitter:new f.__emitter(f)};return G._emitter.addText(L),G}function I(L,G){G=G||f.languages||Object.keys(r);const K=_(L),se=G.filter(o).filter(ce).map(He=>E(He,L,!1));se.unshift(K);const ue=se.sort((He,je)=>{if(He.relevance!==je.relevance)return je.relevance-He.relevance;if(He.language&&je.language){if(o(He.language).supersetOf===je.language)return 1;if(o(je.language).supersetOf===He.language)return-1}return 0}),[xe,Ce]=ue,Fe=xe;return Fe.secondBest=Ce,Fe}function x(L,G,K){const se=G&&s[G]||K;L.classList.add("hljs"),L.classList.add(`language-${se}`)}function $(L){let G=null;const K=w(L);if(h(K))return;if(H("before:highlightElement",{el:L,language:K}),L.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",L);return}if(L.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(L)),f.throwUnescapedHTML))throw new Op("One of your code blocks includes unescaped HTML.",L.innerHTML);G=L;const se=G.textContent,ue=K?y(se,{language:K,ignoreIllegals:!0}):I(se);L.innerHTML=ue.value,L.dataset.highlighted="yes",x(L,K,ue.language),L.result={language:ue.language,re:ue.relevance,relevance:ue.relevance},ue.secondBest&&(L.secondBest={language:ue.secondBest.language,relevance:ue.secondBest.relevance}),H("after:highlightElement",{el:L,result:ue,text:se})}function R(L){f=dl(f,L)}const N=()=>{U(),yn("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function P(){U(),yn("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let M=!1;function U(){function L(){U()}if(document.readyState==="loading"){M||window.addEventListener("DOMContentLoaded",L,!1),M=!0;return}document.querySelectorAll(f.cssSelector).forEach($)}function q(L,G){let K=null;try{K=G(t)}catch(se){if(nn("Language definition for '{}' could not be registered.".replace("{}",L)),l)nn(se);else throw se;K=g}K.name||(K.name=L),r[L]=K,K.rawDefinition=G.bind(null,t),K.aliases&&oe(K.aliases,{languageName:L})}function z(L){delete r[L];for(const G of Object.keys(s))s[G]===L&&delete s[G]}function ee(){return Object.keys(r)}function o(L){return L=(L||"").toLowerCase(),r[L]||r[s[L]]}function oe(L,{languageName:G}){typeof L=="string"&&(L=[L]),L.forEach(K=>{s[K.toLowerCase()]=G})}function ce(L){const G=o(L);return G&&!G.disableAutodetect}function W(L){L["before:highlightBlock"]&&!L["before:highlightElement"]&&(L["before:highlightElement"]=G=>{L["before:highlightBlock"](Object.assign({block:G.el},G))}),L["after:highlightBlock"]&&!L["after:highlightElement"]&&(L["after:highlightElement"]=G=>{L["after:highlightBlock"](Object.assign({block:G.el},G))})}function Q(L){W(L),i.push(L)}function le(L){const G=i.indexOf(L);G!==-1&&i.splice(G,1)}function H(L,G){const K=L;i.forEach(function(se){se[K]&&se[K](G)})}function ne(L){return yn("10.7.0","highlightBlock will be removed entirely in v12.0"),yn("10.7.0","Please use highlightElement now."),$(L)}Object.assign(t,{highlight:y,highlightAuto:I,highlightAll:U,highlightElement:$,highlightBlock:ne,configure:R,initHighlighting:N,initHighlightingOnLoad:P,registerLanguage:q,unregisterLanguage:z,listLanguages:ee,getLanguage:o,registerAliases:oe,autoDetection:ce,inherit:dl,addPlugin:Q,removePlugin:le}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString=$p,t.regex={concat:on,lookahead:Wl,either:si,optional:Qf,anyNumberOfTimes:Zf};for(const L in or)typeof or[L]=="object"&&Gl(or[L]);return Object.assign(t,or),t},_n=tc({});_n.newInstance=()=>tc({});var Pp=_n;_n.HighlightJS=_n;_n.default=_n;const Ae=Gf(Pp),fl="[A-Za-z$_][0-9A-Za-z$_]*",Up=["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"],Bp=["true","false","null","undefined","NaN","Infinity"],nc=["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"],sc=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],rc=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],zp=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Fp=[].concat(rc,nc,sc);function _o(t){const r=t.regex,s=(K,{after:se})=>{const ue="</"+K[0].slice(1);return K.input.indexOf(ue,se)!==-1},i=fl,l={begin:"<>",end:"</>"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,g={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(K,se)=>{const ue=K[0].length+K.index,xe=K.input[ue];if(xe==="<"||xe===","){se.ignoreMatch();return}xe===">"&&(s(K,{after:ue})||se.ignoreMatch());let Ce;const Fe=K.input.substring(ue);if(Ce=Fe.match(/^\s*=/)){se.ignoreMatch();return}if((Ce=Fe.match(/^\s+extends\s+/))&&Ce.index===0){se.ignoreMatch();return}}},f={$pattern:fl,keyword:Up,literal:Bp,built_in:Fp,"variable.language":zp},h="[0-9](_?[0-9])*",w=`\\.(${h})`,y="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={className:"number",variants:[{begin:`(\\b(${y})((${w})|\\.)?|(${w}))[eE][+-]?(${h})\\b`},{begin:`\\b(${y})\\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:[]},I={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},$={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},R={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},P={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,I,x,$,R,{match:/\$\d+/},E];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const U=[].concat(P,_.contains),q=U.concat([{begin:/(\s*)\(/,end:/\)/,keywords:f,contains:["self"].concat(U)}]),z={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:q},ee={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:{_:[...nc,...sc]}},oe={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ce={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[z],illegal:/%/},W={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Q(K){return r.concat("(?!",K.join("|"),")")}const le={match:r.concat(/\b/,Q([...rc,"super","import"].map(K=>`${K}\\s*\\(`)),i,r.lookahead(/\s*\(/)),className:"title.function",relevance:0},H={begin:r.concat(/\./,r.lookahead(r.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ne={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},z]},L="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",G={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,r.lookahead(L)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[z]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:f,exports:{PARAMS_CONTAINS:q,CLASS_REFERENCE:o},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),oe,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,I,x,$,R,P,{match:/\$\d+/},E,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},G,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[P,t.REGEXP_MODE,{className:"function",begin:L,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:q}]}]},{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"]}]}]},ce,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[z,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},H,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[z]},le,W,ee,ne,{match:/\$[(.]/}]}}const vr="[A-Za-z$_][0-9A-Za-z$_]*",oc=["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"],ic=["true","false","null","undefined","NaN","Infinity"],ac=["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"],lc=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],cc=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],uc=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],dc=[].concat(cc,ac,lc);function Hp(t){const r=t.regex,s=(K,{after:se})=>{const ue="</"+K[0].slice(1);return K.input.indexOf(ue,se)!==-1},i=vr,l={begin:"<>",end:"</>"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,g={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(K,se)=>{const ue=K[0].length+K.index,xe=K.input[ue];if(xe==="<"||xe===","){se.ignoreMatch();return}xe===">"&&(s(K,{after:ue})||se.ignoreMatch());let Ce;const Fe=K.input.substring(ue);if(Ce=Fe.match(/^\s*=/)){se.ignoreMatch();return}if((Ce=Fe.match(/^\s+extends\s+/))&&Ce.index===0){se.ignoreMatch();return}}},f={$pattern:vr,keyword:oc,literal:ic,built_in:dc,"variable.language":uc},h="[0-9](_?[0-9])*",w=`\\.(${h})`,y="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={className:"number",variants:[{begin:`(\\b(${y})((${w})|\\.)?|(${w}))[eE][+-]?(${h})\\b`},{begin:`\\b(${y})\\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:[]},I={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},$={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},R={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},P={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,I,x,$,R,{match:/\$\d+/},E];_.contains=M.concat({begin:/\{/,end:/\}/,keywords:f,contains:["self"].concat(M)});const U=[].concat(P,_.contains),q=U.concat([{begin:/(\s*)\(/,end:/\)/,keywords:f,contains:["self"].concat(U)}]),z={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:q},ee={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:{_:[...ac,...lc]}},oe={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ce={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[z],illegal:/%/},W={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Q(K){return r.concat("(?!",K.join("|"),")")}const le={match:r.concat(/\b/,Q([...cc,"super","import"].map(K=>`${K}\\s*\\(`)),i,r.lookahead(/\s*\(/)),className:"title.function",relevance:0},H={begin:r.concat(/\./,r.lookahead(r.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ne={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},z]},L="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",G={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,r.lookahead(L)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[z]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:f,exports:{PARAMS_CONTAINS:q,CLASS_REFERENCE:o},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),oe,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,I,x,$,R,P,{match:/\$\d+/},E,o,{scope:"attr",match:i+r.lookahead(":"),relevance:0},G,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[P,t.REGEXP_MODE,{className:"function",begin:L,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:q}]}]},{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"]}]}]},ce,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[z,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},H,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[z]},le,W,ee,ne,{match:/\$[(.]/}]}}function xo(t){const r=t.regex,s=Hp(t),i=vr,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:vr,keyword:oc.concat(h),literal:ic,built_in:dc.concat(l),"variable.language":uc},y={className:"meta",begin:"@"+i},E=($,R,N)=>{const P=$.contains.findIndex(M=>M.label===R);if(P===-1)throw new Error("can not find mode to replace");$.contains.splice(P,1,N)};Object.assign(s.keywords,w),s.exports.PARAMS_CONTAINS.push(y);const _=s.contains.find($=>$.scope==="attr"),I=Object.assign({},_,{match:r.concat(i,r.lookahead(/\s*\?:/))});s.exports.PARAMS_CONTAINS.push([s.exports.CLASS_REFERENCE,_,I]),s.contains=s.contains.concat([y,d,g,I]),E(s,"shebang",t.SHEBANG()),E(s,"use_strict",f);const x=s.contains.find($=>$.label==="func.def");return x.relevance=0,Object.assign(s,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),s}function pl(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:/#/},y={begin:/\{\{/,relevance:0},E={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,y,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h,y,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,y,w]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,y,w]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},_="[0-9](_?[0-9])*",I=`(\\b(${_}))?\\.(${_})|\\b(${_})\\.`,x=`\\b|${i.join("|")}`,$={className:"number",relevance:0,variants:[{begin:`(\\b(${_})|(${I}))[eE][+-]?(${_})[jJ]?(?=${x})`},{begin:`(${I})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${x})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${x})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${x})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${x})`},{begin:`\\b(${_})[jJ](?=${x})`}]},R={className:"comment",begin:r.lookahead(/# type:/),end:/$/,keywords:f,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},N={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:f,contains:["self",h,$,E,t.HASH_COMMENT_MODE]}]};return w.contains=[E,$,h],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:f,illegal:/(<\/|\?)|=>/,contains:[h,$,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},E,R,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,s],scope:{1:"keyword",3:"title.function"},contains:[N]},{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:[$,N,E]}]}}function So(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:/'/},y={match:/\\'/},E={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,s]},_=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],I=t.SHEBANG({binary:`(${_.join("|")})`,relevance:10}),x={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},$=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],R=["true","false"],N={match:/(\/[a-z._-]+)+/},P=["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"],U=["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"],q=["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:$,literal:R,built_in:[...P,...M,"set","shopt",...U,...q]},contains:[I,t.SHEBANG(),x,E,d,g,N,f,h,w,y,s]}}function jp(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 Gp=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_-]*/}}),qp=["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"],Wp=["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"],Kp=[...qp,...Wp],Vp=["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(),Qp=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Yp=["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 Xp(t){const r=t.regex,s=Gp(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:":(:)?("+Qp.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Yp.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:Vp.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...f,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+Kp.join("|")+")\\b"}]}}function Eo(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 hl(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}/}]},y={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},E=t.inherit(w,{contains:[]}),_=t.inherit(y,{contains:[]});w.contains.push(_),y.contains.push(E);let I=[s,h];return[w,y,E,_].forEach(N=>{N.contains=N.contains.concat(I)}),I=I.concat(w,y),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:I},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:I}]}]},s,d,w,y,{className:"quote",begin:"^>\\s+",contains:I,end:"$"},l,i,h,g,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function ml(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"},I={end:",",endsWithParent:!0,excludeEnd:!0,keywords:r,relevance:0},x={begin:/\{/,end:/\}/,contains:[I],illegal:"\\n",relevance:0},$={begin:"\\[",end:"\\]",contains:[I],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},x,$,d,g],N=[...R];return N.pop(),N.push(f),I.contains=N,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:R}}function Jp(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 eh=["disabled","aria-label","aria-expanded"],th=["aria-label"],nh=["disabled","aria-selected","onClick"],sh={__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,U)=>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??U)}:{value:M,label:String(M??""),disabled:!1,key:`${String(M)}-${U}`})),w=V(()=>h.value.find(M=>Object.is(M.value,s.modelValue))),y=V(()=>{var M;return((M=w.value)==null?void 0:M.label)||"请选择"});function E(){g.value=!1}async function _(M=!1){var ee,o;if(s.disabled||g.value)return;g.value=!0,await nt();const U=[...((ee=d.value)==null?void 0:ee.querySelectorAll("button:not(:disabled)"))||[]],z=((o=d.value)==null?void 0:o.querySelector('button[aria-selected="true"]'))||(M?U.at(-1):U[0]);z==null||z.focus()}function I(){g.value?E():_()}function x(M){M.disabled||(E(),Object.is(M.value,s.modelValue)||(i("update:modelValue",M.value),i("change",M.value)),nt(()=>{var U,q;return(q=(U=l.value)==null?void 0:U.querySelector(".neo-select-trigger"))==null?void 0:q.focus()}))}function $(M){(M.key==="ArrowDown"||M.key==="ArrowUp")&&(M.preventDefault(),_(M.key==="ArrowUp")),M.key==="Escape"&&g.value&&(M.preventDefault(),M.stopPropagation(),E())}function R(M,U){var o,oe;const q=[...((o=d.value)==null?void 0:o.querySelectorAll("button:not(:disabled)"))||[]];if(!q.length)return;const z=q.indexOf(document.activeElement),ee=U==="start"?0:U==="end"?q.length-1:(z+U+q.length)%q.length;M.preventDefault(),(oe=q[ee])==null||oe.focus()}function N(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(),E(),nt(()=>{var U,q;return(q=(U=l.value)==null?void 0:U.querySelector(".neo-select-trigger"))==null?void 0:q.focus()})):M.key==="Tab"&&E()}function P(M){var U;g.value&&!((U=l.value)!=null&&U.contains(M.target))&&E()}return qo(()=>document.addEventListener("pointerdown",P)),jt(()=>document.removeEventListener("pointerdown",P)),(M,U)=>(m(),b("span",{ref_key:"root",ref:l,class:Y(["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:I,onKeydown:$},[a("span",null,S(y.value),1)],40,eh),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:N},[(m(!0),b(X,null,fe(h.value,q=>(m(),b("button",{key:q.key,type:"button",role:"option",disabled:q.disabled,class:Y({selected:Object.is(q.value,t.modelValue)}),"aria-selected":Object.is(q.value,t.modelValue),onClick:z=>x(q)},S(q.label),11,nh))),128))],40,th)):C("",!0)],2))}},ir=Er(sh,[["__scopeId","data-v-edb5aaac"]]),rh=["aria-busy"],oh={class:"prompt-config-toolbar"},ih={class:"prompt-config-scope"},ah={class:"prompt-config-actions"},lh=["disabled"],ch=["disabled"],uh=["disabled"],dh={class:"prompt-config-mode"},gh=["disabled"],fh={key:0,value:"legacy_full_override"},ph={class:"prompt-config-note"},hh={key:0,class:"prompt-config-note",role:"status"},mh={key:1,class:"runtime-context-empty",role:"status"},bh=["disabled"],kh={key:3,class:"prompt-config-preview"},yh={key:4,class:"prompt-config-preview"},vh={key:5,class:"prompt-config-error",role:"alert"},wh={__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"),y=re(!1),E=re(""),_=re(!1),I=V(()=>{var W;return(W=s.runtimePrompt)!=null&&W.sessionPrompt?s.runtimePrompt.sessionPrompt.deferred:_.value}),x=V(()=>{var W,Q;return((Q=(W=s.runtimePrompt)==null?void 0:W.systemPrompt)==null?void 0:Q.replace("__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__",""))||E.value}),$=re(!1),R=re(!1),N=re(!1),P=re("");let M=0,U;const q=V(()=>l.value!==d.value||s.session&&h.value!==w.value),z=V(()=>N.value&&q.value&&!!l.value.trim()&&!$.value&&!R.value);function ee(W,Q){const le=String((W==null?void 0:W.errorCode)||"");return le.includes("CONFLICT")?"配置已更新,请重新加载":le.includes("INVALID")?"提示词内容无效":le.includes("TOO_LARGE")?"提示词内容过长":le.includes("BUSY")?"配置忙碌,请稍后重试":Q}function o(W){if(typeof(W==null?void 0:W.content)!="string"||typeof(W==null?void 0:W.revision)!="string")throw new Error("invalid payload");l.value=W.content,d.value=W.content,g.value=W.revision,f.value=W.override===!0,h.value=W.mode==="inherit"?"append":W.mode||"append",w.value=h.value,y.value=h.value==="legacy_full_override",E.value=W.effectiveContent||"",_.value=W.deferred===!0,N.value=!0}async function oe(){if(R.value)return;U==null||U.abort(),U=new AbortController;const W=++M,Q=s.endpoint;$.value=!0,P.value="";try{const le=await be(Q,{cache:"no-store",signal:U.signal}),H=await le.json();if(W!==M||Q!==s.endpoint)return;if(!le.ok||(H==null?void 0:H.ok)===!1||H!=null&&H.error){P.value=ee(H,"加载失败");return}o(H)}catch(le){W===M&&(le==null?void 0:le.name)!=="AbortError"&&(P.value="加载失败")}finally{W===M&&($.value=!1)}}async function ce(W=!1){if(R.value||$.value||!N.value||!W&&!z.value||!W&&y.value&&h.value!=="legacy_full_override"&&!window.confirm("转换后将重新合成全局和工具上下文。请确认编辑框只保留你需要的自定义指令,避免重复注入旧内容。"))return;const Q=M,le=s.endpoint;R.value=!0,P.value="";try{const H=await be(le,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(W?{reset:!0,revision:g.value}:{content:l.value,revision:g.value,...s.session?{mode:h.value}:{}}),signal:U==null?void 0:U.signal}),ne=await H.json();if(Q!==M||le!==s.endpoint)return;if(!H.ok||(ne==null?void 0:ne.ok)===!1||ne!=null&&ne.error){P.value=ee(ne,"保存失败");return}o(ne),i("saved",ne)}catch(H){Q===M&&(H==null?void 0:H.name)!=="AbortError"&&(P.value="保存失败")}finally{Q===M&&(R.value=!1)}}return De(()=>s.endpoint,()=>{M+=1,U==null||U.abort(),l.value="",d.value="",g.value="",N.value=!1,R.value=!1,f.value=!1,h.value=w.value="append",y.value=!1,E.value="",_.value=!1,oe()},{immediate:!0}),jt(()=>{M+=1,U==null||U.abort()}),(W,Q)=>{var le,H;return m(),b("form",{class:"prompt-config-editor","aria-busy":$.value||R.value,onSubmit:Q[5]||(Q[5]=me(ne=>ce(),["prevent"]))},[a("div",oh,[a("span",ih,S(t.session?"当前会话":"系统提示词"),1),a("div",ah,[a("button",{type:"button",class:"mini-button",disabled:$.value||R.value,onClick:oe},"重新加载",8,lh),t.session?(m(),b("button",{key:0,type:"button",class:"mini-button",disabled:!N.value||!f.value||$.value||R.value,onClick:Q[0]||(Q[0]=ne=>ce(!0))},"恢复默认",8,ch)):C("",!0),a("button",{type:"submit",class:"primary",disabled:!z.value},S(R.value?"保存中":"保存"),9,uh)])]),t.session&&N.value?(m(),b(X,{key:0},[a("label",dh,[Q[8]||(Q[8]=Jn("会话指令模式 ",-1)),Be(a("select",{"onUpdate:modelValue":Q[1]||(Q[1]=ne=>h.value=ne),"aria-label":"会话指令模式",disabled:$.value||R.value},[Q[6]||(Q[6]=a("option",{value:"append"},"继承全局并追加",-1)),Q[7]||(Q[7]=a("option",{value:"replace_base"},"仅替换全局正文(保留工具和插件上下文)",-1)),y.value?(m(),b("option",fh,"旧版完整覆盖(不继承)")):C("",!0)],8,gh),[[xg,h.value]])]),a("p",ph,S(f.value?"已配置会话指令":"当前继承全局;下方仅编辑会话追加指令")+"。工具开关只更新运行时能力说明,不改写自定义文本。",1),y.value?(m(),b("p",hh,"旧版完整覆盖保留了原文,可能包含过期的工具说明。请手动保留自定义指令并切换模式,或恢复默认;不会自动删改旧内容。")):C("",!0)],64)):C("",!0),$.value&&!N.value?(m(),b("div",mh,"加载中")):Be((m(),b("textarea",{key:2,"onUpdate:modelValue":Q[2]||(Q[2]=ne=>l.value=ne),class:"prompt-config-textarea","aria-label":"系统提示词",disabled:!N.value||$.value||R.value,spellcheck:"false",autocomplete:"off",rows:"18",onKeydown:[Q[3]||(Q[3]=ft(me(ne=>ce(),["ctrl","prevent"]),["enter"])),Q[4]||(Q[4]=ft(me(ne=>ce(),["meta","prevent"]),["enter"]))]},null,40,bh)),[[at,l.value]]),t.session&&N.value?(m(),b("details",kh,[a("summary",null,"当前有效上下文(只读)"+S((H=(le=t.runtimePrompt)==null?void 0:le.sessionPrompt)!=null&&H.deferred?" · 有待生效修改":""),1),a("pre",null,S(x.value),1)])):C("",!0),t.session&&I.value?(m(),b("details",yh,[Q[9]||(Q[9]=a("summary",null,"已保存配置的合成预览(下一轮生效)",-1)),a("pre",null,S(E.value),1)])):C("",!0),P.value?(m(),b("div",vh,S(P.value),1)):C("",!0)],40,rh)}}},bl=Er(wh,[["__scopeId","data-v-41954d08"]]),wr=1,zo=2,ii=3,ai=4,li=5,ci=6,ui=7,di=8,_r=9,xr=10,Fo=11,gr=12,ts=13,ns=14,ss=15,rs=16,vn=17,Ho=18,ot=19,os=20,Ft=21,gc=22,is=23,Sr=24,Sn=25,fc=26,jo=27,fr=28,pr=29,At=30,wt=31,ar=101,kl=102,pc=103,yl=104,To=105,wn=1,gi=2,hc=4,mc=8,bc=16;function _h(t){switch(t){case wn:return"href";case gi:return"src";case hc:return"class";case mc:return"checked";case bc:return"start"}}const xh=t=>{switch(t){case 1:return ii;case 2:return ai;case 3:return li;case 4:return ci;case 5:return ui;default:return di}},Sh=xh,vl=24;function Eh(t){const r=new Uint32Array(vl);return r[0]=wr,{renderer:t,text:"",pending:"",tokens:r,len:0,token:wr,fence_end:0,blockquote_idx:0,hr_char:"",hr_chars:0,fence_start:0,spaces:new Uint8Array(vl),indent:"",indent_len:0,table_state:0}}function wl(t){t.pending.length>0&&ze(t,`
|
|
67
|
+
`)}function ye(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 Ne(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]===Sr||t.tokens[t.len]===is)&&r!==Sn&&Ne(t),t.len+=1,t.tokens[t.len]=r,t.token=r,t.renderer.add_token(t.renderer.data,r)}function Th(t,r,s){for(;s<=t.len;){if(t.tokens[s]===r)return s;s+=1}return-1}function tn(t,r){for(t.fence_start=0;t.len>r;)Ne(t)}function lr(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 _r:case xr:case os:case Sn:s=i;break}for(;t.len>s;)Ne(t);return r}function Io(t,r){let s=-1,i=-1;for(let l=t.blockquote_idx+1;l<=t.len;l+=1)if(t.tokens[l]===Sn){if(t.indent_len<t.spaces[l]){i=-1;break}i=l}else t.tokens[l]===r&&(s=l);return i===-1?s===-1?(tn(t,t.blockquote_idx),ve(t,r),!0):(tn(t,s),!1):(tn(t,i),ve(t,r),!0)}function Ao(t,r){ve(t,Sn),t.spaces[t.len]=t.indent_len+r,Ct(t),t.token=pc}function Ct(t){t.indent="",t.indent_len=0,t.pending=""}function Go(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 Ih(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 Ah(t){return Go(t)||Ih(t)}function ze(t,r){for(const s of r){if(t.token===ar){switch(s){case" ":t.indent_len+=1;continue;case" ":t.indent_len+=4;continue}let l=lr(t,t.indent_len);t.indent_len=0,t.token=t.tokens[t.len],l>0&&ze(t," ".repeat(l))}const i=t.pending+s;switch(t.token){case Ft:case wr:case os:case Sr:case is: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]===Sn&&t.token===Ft){Ne(t),Ct(t),t.pending=s;continue}tn(t,t.blockquote_idx),Ct(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" ":lr(t,t.indent_len),ve(t,Sh(t.pending.length)),Ct(t);continue}break;case">":{const d=Th(t,os,t.blockquote_idx+1);d===-1?(tn(t,t.blockquote_idx),t.blockquote_idx+=1,t.fence_start=0,ve(t,os)):t.blockquote_idx=d,Ct(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;lr(t,t.indent_len),t.renderer.add_token(t.renderer.data,gc),t.renderer.end_token(t.renderer.data),Ct(t),t.hr_chars=0;continue}t.hr_chars=0}if(t.pending[0]!=="_"&&t.pending[1]===" "){Io(t,is),Ao(t,2),ze(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,zo),Ct(t),t.fence_start=0,ze(t,i));continue;case`
|
|
70
|
+
`:{lr(t,t.indent_len),ve(t,xr),t.pending.length>t.fence_start&&t.renderer.set_attr(t.renderer.data,hc,t.pending.slice(t.fence_start)),Ct(t),t.token=ar;continue}default:t.pending=i;continue}case"+":if(s!==" ")break;Io(t,is),Ao(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;Io(t,Sr)&&t.pending!=="1."&&t.renderer.set_attr(t.renderer.data,bc,t.pending.slice(0,-1)),Ao(t,t.pending.length+1);continue}else{const d=s.charCodeAt(0);if(d===46||Go(d)){t.pending=i;continue}}break;case"|":tn(t,t.blockquote_idx),ve(t,jo),ve(t,fr),t.pending="",ze(t,s);continue}let l=i;if(t.token===Ft)t.token=t.tokens[t.len],t.renderer.add_token(t.renderer.data,Ft),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,_r)}else ve(t,zo);Ct(t),ze(t,l);continue;case jo: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:Ne(t),t.table_state=0;break}else switch(t.pending){case"|":ve(t,fr),t.pending="",ze(t,s);continue;case`
|
|
72
|
+
`:Ne(t),t.pending="",t.table_state=0,ze(t,s);continue}break;case fr:switch(t.pending){case"":break;case"|":ve(t,pr),Ne(t),t.pending="",ze(t,s);continue;case`
|
|
73
|
+
`:Ne(t),t.table_state=Math.min(t.table_state+1,2),t.pending="",ze(t,s);continue;default:ve(t,pr),ze(t,s);continue}break;case pr:if(t.pending==="|"){ye(t),Ne(t),t.pending="",ze(t,s);continue}break;case _r: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?(ye(t),Ne(t),t.pending=s):t.text+=s;continue}case xr:switch(s){case"`":t.pending=i;continue;case`
|
|
84
|
+
`:if(i.length===t.fence_start+t.fence_end+1){ye(t),Ne(t),t.pending="",t.fence_start=0,t.fence_end=0,t.token=ar;continue}t.token=ar;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 Fo:switch(s){case"`":i.length===t.fence_start+ +(t.pending[0]===" ")?(ye(t),Ne(t),t.pending="",t.fence_start=0):t.pending=i;continue;case`
|
|
86
|
+
`:t.text+=t.pending,t.pending="",t.token=Ft,t.blockquote_idx=0,ye(t);continue;case" ":t.text+=t.pending,t.pending=s;continue;default:t.text+=i,t.pending="";continue}case pc: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,fc),t.pending[1]==="x"&&t.renderer.set_attr(t.renderer.data,mc,""),t.renderer.end_token(t.renderer.data),t.pending=" ";continue}t.token=t.tokens[t.len],t.pending="",ze(t,i);continue;case ns:case ss:{let d="*",g=gr;if(t.token===ss&&(d="_",g=ts),d===t.pending){if(ye(t),d===s){Ne(t),t.pending="";continue}ve(t,g),t.pending=s;continue}break}case gr:case ts:{let d="*",g=ns;switch(t.token===ts&&(d="_",g=ss),t.pending){case d:d===s?t.tokens[t.len-1]===g?t.pending=i:(ye(t),ve(t,g),t.pending=""):(ye(t),Ne(t),t.pending=s);continue;case d+d:const f=t.token;ye(t),Ne(t),Ne(t),d!==s?(ve(t,f),t.pending=s):t.pending="";continue}break}case rs:if(i==="~~"){ye(t),Ne(t),t.pending="";continue}break;case To:s===`
|
|
87
|
+
`?(ye(t),ve(t,At),t.pending=""):(t.token=t.tokens[t.len],t.pending[0]==="\\"?t.text+="[":t.text+="$$",t.pending="",ze(t,s));continue;case At:if(i==="\\]"||i==="$$"){ye(t),Ne(t),t.pending="";continue}break;case wt:if(i==="\\)"||t.pending[0]==="$"){ye(t),Ne(t),s===")"?t.pending="":t.pending=s;continue}break;case kl:i==="http://"||i==="https://"?(ye(t),ve(t,Ho),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],ze(t,s));continue;case vn:case ot:if(t.pending==="]"){ye(t),s==="("?t.pending=i:(Ne(t),t.pending=s);continue}if(t.pending[0]==="]"&&t.pending[1]==="("){if(s===")"){const d=t.token===vn?wn:gi,g=t.pending.slice(2);t.renderer.set_attr(t.renderer.data,d,g),Ne(t),t.pending=""}else t.pending+=s;continue}break;case Ho:s===" "||s===`
|
|
88
|
+
`||s==="\\"?(t.renderer.set_attr(t.renderer.data,wn,t.pending),ye(t),Ne(t),t.pending=s):(t.text+=s,t.pending=i);continue;case yl: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===">"){ye(t),t.token=t.tokens[t.len],t.renderer.add_token(t.renderer.data,Ft),t.renderer.end_token(t.renderer.data),t.pending="";continue}}t.token=t.tokens[t.len],t.text+="<",t.pending=t.pending.slice(1),ze(t,s);continue}switch(t.pending[0]){case"\\":if(t.token===ot||t.token===At||t.token===wt)break;switch(s){case"(":ye(t),ve(t,wt),t.pending="";continue;case"[":t.token=To,t.pending=i;continue;case`
|
|
89
|
+
`:t.pending=s;continue;default:let l=s.charCodeAt(0);t.pending="",t.text+=Go(l)||l>=65&&l<=90||l>=97&&l<=122?i:s;continue}case`
|
|
90
|
+
`:switch(t.token){case ot:case At:case wt:break;case ii:case ai:case li:case ci:case ui:case di:ye(t),tn(t,t.blockquote_idx),t.blockquote_idx=0,t.pending=s;continue;default:ye(t),t.pending=s,t.token=Ft,t.blockquote_idx=0;continue}break;case"<":if(t.token!==ot&&t.token!==At&&t.token!==wt){ye(t),t.pending=i,t.token=yl;continue}break;case"`":if(t.token===ot)break;s==="`"?(t.fence_start+=1,t.pending=i):(t.fence_start+=1,ye(t),ve(t,Fo),t.text=s===" "||s===`
|
|
91
|
+
`?"":s,t.pending="");continue;case"_":case"*":{if(t.token===ot||t.token===At||t.token===wt||t.token===ns)break;let l=gr,d=ns;const g=t.pending[0];if(g==="_"&&(l=ts,d=ss),t.pending.length===1){if(g===s){t.pending=i;continue}if(s!==" "&&s!==`
|
|
92
|
+
`){ye(t),ve(t,l),t.pending=s;continue}}else{if(g===s){ye(t),ve(t,d),ve(t,l),t.pending="";continue}if(s!==" "&&s!==`
|
|
93
|
+
`){ye(t),ve(t,d),t.pending=s;continue}}break}case"~":if(t.token!==ot&&t.token!==rs){if(t.pending==="~"){if(s==="~"){t.pending=i;continue}}else if(s!==" "&&s!==`
|
|
94
|
+
`){ye(t),ve(t,rs),t.pending=s;continue}}break;case"$":if(t.token!==ot&&t.token!==rs&&t.pending==="$")if(s==="$"){t.token=To,t.pending=i;continue}else{if(Ah(s.charCodeAt(0)))break;ye(t),ve(t,wt),t.pending=s;continue}break;case"[":if(t.token!==ot&&t.token!==vn&&t.token!==At&&t.token!==wt&&s!=="]"){ye(t),ve(t,vn),t.pending=s;continue}break;case"!":if(t.token!==ot&&s==="["){ye(t),ve(t,ot),t.pending="";continue}break;case" ":if(t.pending.length===1&&s===" ")continue;break}if(t.token!==ot&&t.token!==vn&&t.token!==At&&t.token!==wt&&s==="h"&&(t.pending===" "||t.pending==="")){t.text+=t.pending,t.pending=s,t.token=kl;continue}t.text+=t.pending,t.pending=s}ye(t)}function Ch(t){return{add_token:Mh,end_token:Rh,add_text:Nh,set_attr:kc,data:{nodes:[t,,,,,],index:0}}}function Mh(t,r){var l;let s=t.nodes[t.index],i;switch(r){case wr:return;case os:i=document.createElement("blockquote");break;case zo:i=document.createElement("p");break;case Ft:i=document.createElement("br");break;case gc:i=document.createElement("hr");break;case ii:i=document.createElement("h1");break;case ai:i=document.createElement("h2");break;case li:i=document.createElement("h3");break;case ci:i=document.createElement("h4");break;case ui:i=document.createElement("h5");break;case di:i=document.createElement("h6");break;case gr:case ts:i=document.createElement("em");break;case ns:case ss:i=document.createElement("strong");break;case rs:i=document.createElement("s");break;case Fo:i=document.createElement("code");break;case Ho:case vn:i=document.createElement("a");break;case ot:i=document.createElement("img");break;case is:i=document.createElement("ul");break;case Sr:i=document.createElement("ol");break;case Sn:i=document.createElement("li");break;case fc:let d=i=document.createElement("input");d.type="checkbox",d.disabled=!0;break;case _r:case xr:s=s.appendChild(document.createElement("pre")),i=document.createElement("code");break;case jo:i=document.createElement("table");break;case fr: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 pr:i=document.createElement(((l=s.parentElement)==null?void 0:l.tagName)==="THEAD"?"th":"td");break;case At:i=document.createElement("equation-block");break;case wt:i=document.createElement("equation-inline");break}t.nodes[++t.index]=s.appendChild(i)}function Rh(t){t.index-=1}function Nh(t,r){t.nodes[t.index].appendChild(document.createTextNode(r))}function kc(t,r,s){t.nodes[t.index].setAttribute(_h(r),s)}const Lh={__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&&x(`${l}
|
|
95
|
+
`,l)},80)}function w($){const R=String($||"").trim();return R?/^(?:https?:|mailto:|\/|#)/i.test(R)?!0:!/^[a-z][a-z\d+.-]*:/i.test(R):!1}function y($){const R=String($||"").trim();return r.exposedResources.find(N=>String((N==null?void 0:N.reference)||"").trim()===R)}function E($){const R=Number($);if(!Number.isFinite(R)||R<=0)return"";const N=["B","KB","MB","GB"];let P=R,M=0;for(;P>=1024&&M<N.length-1;)P/=1024,M+=1;return`${P>=10||M===0?Math.round(P):P.toFixed(1)}${N[M]}`}function _($){return{...Ch($),set_attr(N,P,M){const U=P===wn?y(M):void 0,q=(U==null?void 0:U.url)||M;if(!((P===wn||P===gi)&&!w(q))&&(kc(N,P,q),P===wn)){const z=N.nodes[N.index];if(U){if(z.classList.add("inline-resource-link",`inline-resource-${U.kind||"link"}`),U.kind==="download"||U.downloadName){z.setAttribute("download",U.downloadName||U.label||""),z.setAttribute("title",Do(U.label||U.downloadName)),z.removeAttribute("target"),z.removeAttribute("rel"),z.dataset.resourceDownload="true",z.dataset.resourceExpiresAt=String(Number(U.expiresAt)||0);const ee=E(U.sizeBytes);ee&&(z.dataset.resourceSize=`(${ee})`)}}else z.setAttribute("target","_blank"),z.setAttribute("rel","noreferrer noopener")}}}}function I($){if(!i)return;const R=String($||"");if(f(),!R.startsWith(l)||d!==l){x(R),h();return}const N=R.slice(l.length);l=R,d=R,N&&ze(i,N),h()}function x($=r.text,R=$){const N=s.value;N&&(i&&wl(i),N.replaceChildren(),i=Eh(_(N)),d=String($||""),l=String(R||""),d&&ze(i,d))}return qo(()=>{x(),h()}),De(()=>r.text,I,{flush:"post"}),De(()=>JSON.stringify(r.exposedResources),()=>{x(),h()},{flush:"post"}),jt(()=>{f(),i&&wl(i),i=void 0}),($,R)=>(m(),b("div",{ref_key:"root",ref:s,class:"streaming-markdown-content"},null,512))}};function Mt(t){const r=Number(t),s=Number.isFinite(r)?Math.floor(Math.max(0,r)/1e3):0;return s===0?"":s<60?`${s}s`:`${Math.floor(s/60)}m ${s%60}s`}function _l(t,r=performance.now()){return(t||[]).filter(s=>(s==null?void 0:s.version)===1&&typeof s.id=="string").map(s=>({...s,receivedAt:r}))}function Co(t,r=performance.now(),s=!0){if(!t)return;const i=l=>Number.isSafeInteger(l)&&l>=0;if(t.status==="finished")return i(t.durationMs)?t.durationMs:void 0;if(!(t.status!=="running"||!i(t.elapsedMs)))return t.elapsedMs+(s&&Number.isFinite(t.receivedAt)?Math.max(0,r-t.receivedAt):0)}const $h=["aria-label"],Oh={class:"elapsed-clock-face",viewBox:"0 0 40 40","aria-hidden":"true"},Dh={class:"clock-ticks"},Ph=["y1","transform"],Uh={class:"elapsed-clock-value","aria-hidden":"true"},Bh={__name:"ElapsedClock",props:{elapsedMs:{type:Number,default:void 0}},setup(t){const r=t,s=V(()=>Mt(r.elapsedMs)),i=V(()=>Math.floor(Math.max(0,r.elapsedMs||0)/1e3)*6);return(l,d)=>s.value?(m(),b("span",{key:0,class:"elapsed-clock","aria-label":`用时 ${s.value}`},[(m(),b("svg",Oh,[d[1]||(d[1]=a("circle",{class:"clock-rim",cx:"20",cy:"20",r:"18"},null,-1)),d[2]||(d[2]=a("circle",{class:"clock-well",cx:"20",cy:"20",r:"15.5"},null,-1)),a("g",Dh,[(m(),b(X,null,fe(60,g=>a("line",{key:g,x1:"20",y1:(g-1)%5===0?6:7,x2:"20",y2:"8",class:Y({major:(g-1)%5===0}),transform:`rotate(${(g-1)*6} 20 20)`},null,10,Ph)),64))]),a("g",{class:"clock-hand",style:lt({transform:`rotate(${i.value}deg)`})},[...d[0]||(d[0]=[a("line",{x1:"20",y1:"23",x2:"20",y2:"10"},null,-1)])],4),d[3]||(d[3]=a("circle",{class:"clock-pin",cx:"20",cy:"20",r:"1.6"},null,-1))])),a("span",Uh,S(s.value),1)],8,$h)):C("",!0)}},xl=Er(Bh,[["__scopeId","data-v-490710ad"]]),zh=["aria-label"],Fh={key:0,class:"flip-status-front"},Hh={class:"flip-status-back"},jh={__name:"FlipStatusText",props:{text:{type:String,default:""}},setup(t){const r=t,s=new Intl.Segmenter(void 0,{granularity:"grapheme"}),i=E=>Array.from(s.segment(E),_=>_.segment),l=re(r.text),d=re(""),g=re(!1),f=re(0);let h;const w=V(()=>{const E=i(l.value),_=g.value?i(d.value):[];return Array.from({length:Math.max(E.length,_.length)},(I,x)=>({before:_[x]||"",after:E[x]||""}))}),y=V(()=>Math.min(45,600/Math.max(1,w.value.length-1)));return De(()=>r.text,(E,_)=>{clearTimeout(h),d.value=_,l.value=E,g.value=!0,f.value+=1,h=setTimeout(()=>{g.value=!1,d.value=""},360+Math.max(0,w.value.length-1)*y.value)}),jt(()=>clearTimeout(h)),(E,_)=>(m(),b("span",{class:"flip-status-text","aria-label":t.text},[(m(),b("span",{key:f.value,class:"flip-status-letters","aria-hidden":"true"},[(m(!0),b(X,null,fe(w.value,(I,x)=>(m(),b("span",{key:x,class:"flip-status-slot"},[a("span",{class:Y(["flip-status-card",{"is-flipping":g.value}]),style:lt({"--flip-delay":`${x*y.value}ms`})},[g.value?(m(),b("span",Fh,S(I.before),1)):C("",!0),a("span",Hh,S(I.after),1)],6)]))),128))]))],8,zh))}},Gh=Er(jh,[["__scopeId","data-v-4fbb8b4f"]]);function qh({getElement:t,requestFrame:r=f=>requestAnimationFrame(f),cancelFrame:s=f=>cancelAnimationFrame(f),now:i=()=>performance.now(),setTimer:l=(f,h)=>setTimeout(f,h),clearTimer:d=f=>clearTimeout(f),reducedMotion:g=()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches}={}){let f=!0,h=0,w=0,y=0,E=0,_=!0,I=!1,x=!1,$=!1,R=0,N=!1,P=0,M=()=>{};const U=H=>Math.max(0,H.scrollHeight-H.clientHeight);function q(){h&&s(h),h=0,y=0}function z(){$=!1,f=!1,_=!1,N=!1,R=0,q(),d(w),w=0}function ee(){I||!f||h||!t()||(h=r(o))}function o(H){h=0;const ne=t();if(I||!f||!ne||!ne.clientHeight)return;const L=U(ne),G=L-ne.scrollTop,K=y?Math.min(32,Math.max(1,H-y)):16;y=H;const se=Math.min(G*(1-Math.exp(-K/115)),K*1.8),ue=_||g()||G<=1?L:ne.scrollTop+Math.max(1,se);_=!1,ne.scrollTop=ue,E=ne.scrollTop,L-ne.scrollTop>1?ee():y=0}function oe(){if(d(w),w=0,I||x||!N)return;const H=P-i();if(H>0){w=l(oe,H);return}const ne=t();ne&&U(ne)-ne.scrollTop<=48&&(f=!0,N=!1,ee())}function ce(H){z(),R=Math.sign(H),N=R>0,P=i()+180,oe()}function W(){const H=t();if(!H)return;const ne=H.scrollTop-E;E=H.scrollTop,!f&&Math.abs(ne)>.5&&(ne<0?N=!1:(R>0||x&&R===0)&&(N=!0),P=i()+180,oe())}function Q(){var H;z(),f=!0,_=!0,R=0,x=!1,E=((H=t())==null?void 0:H.scrollTop)||0,ee()}function le(H){if(M(),q(),E=(H==null?void 0:H.scrollTop)||0,!H)return;let ne,L,G=!1;const K=de=>{!de.ctrlKey&&de.deltaY&&ce(de.deltaY)},se=de=>{var Ue,st;const Oe=!G&&f;G=!0,x=!0,ne=(Ue=de.touches[0])==null?void 0:Ue.clientX,L=(st=de.touches[0])==null?void 0:st.clientY,ce(0),$=Oe&&de.touches.length===1},ue=de=>{var st,ct;const Oe=(st=de.touches[0])==null?void 0:st.clientX,Ue=(ct=de.touches[0])==null?void 0:ct.clientY;Ue!==void 0&&L!==void 0&&Ue!==L&&ce(L-Ue),(de.touches.length!==1||Oe!==ne)&&($=!1),ne=Oe,L=Ue},xe=()=>{x=!1,P=i()+180,oe()},Ce=de=>{var Ue;if(de.type==="touchcancel"&&($=!1),(Ue=de.touches)!=null&&Ue.length)return;const Oe=G&&$;G=!1,$=!1,xe(),Oe&&!I&&(f=!0,N=!1,ee())},Fe=de=>{G||de.pointerType==="touch"||xe()},et=[["scroll",W],["wheel",K],["touchstart",se],["touchmove",ue],["touchend",Ce],["touchcancel",Ce],["pointerdown",de=>{const Oe=H.getBoundingClientRect();(de.button===1||de.target===H&&de.clientX>=Oe.left+H.clientLeft+H.clientWidth)&&(x=!0,ce(0))}],["keydown",de=>{de.defaultPrevented||de.ctrlKey||de.metaKey||de.altKey||de.target.closest('input, textarea, select, button, [contenteditable="true"]')||(["ArrowUp","PageUp","Home"].includes(de.key)||de.key===" "&&de.shiftKey?ce(-1):["ArrowDown","PageDown","End"," "].includes(de.key)&&ce(1))}]];for(const[de,Oe]of et)H.addEventListener(de,Oe,{passive:!0});const Se=H.ownerDocument;Se.addEventListener("pointerup",Fe,{passive:!0}),Se.addEventListener("pointercancel",Fe,{passive:!0}),M=()=>{G=!1,$=!1,x=!1;for(const[de,Oe]of et)H.removeEventListener(de,Oe);Se.removeEventListener("pointerup",Fe),Se.removeEventListener("pointercancel",Fe),M=()=>{}},ee()}return{schedule:ee,pause:z,reset:Q,attach:le,get following(){return f},get interacting(){return x||i()<P},dispose(){I=!0,z(),M()}}}const Wh=["onDblclick"],Kh=["aria-label","onClick"],Vh=["title","onClick"],Zh=["aria-label","onClick"],Qh=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=Sg("CwdTreeNode",!0);return m(!0),b(X,null,fe(t.nodes,g=>(m(),b("div",{key:g.path,class:"cwd-tree-branch"},[a("div",{class:Y(["cwd-tree-row",{selected:t.selectedPath===g.path}]),style:lt({"--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:me(f=>s("toggle",g),["stop"])},S(t.expanded[g.path]?"▾":"▸"),9,Kh),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,S(g.name),1)],8,Vh),t.allowDelete?(m(),b("button",{key:0,type:"button",class:"cwd-tree-delete","aria-label":`删除 ${g.name}`,onClick:me(f=>s("delete",g),["stop"])},"×",8,Zh)):C("",!0)],46,Wh),t.expanded[g.path]&&t.children[g.path]?(m(),Ge(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 Yh(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 Xh(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 Jh(t,r){const s=String(t||"").trim();if(!s)return"模型未配置";const i=String(r||"").trim();return i?`${s}(${i})`:s}function em(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 tm(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,y,E)=>{const _=await be(w,{method:y,headers:E?{"Content-Type":"application/json"}:{},body:E?JSON.stringify(E):void 0}),I=await _.json();if(!_.ok||(I==null?void 0:I.ok)===!1||I!=null&&I.error)throw new Error((I==null?void 0:I.error)||`上传失败 (${_.status})`);return I},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 E=Math.min(r.size,g+d.chunkBytes);let _=!1;for(let I=0;I<3;I++)try{if((await nm(i,r.slice(g,E),g,$=>s==null?void 0:s((g+$*(E-g))/r.size))).offset!==E)throw new Error("分片确认偏移无效");_=!0;break}catch(x){if(I===2)throw x;await new Promise(R=>setTimeout(R,400*(I+1)));const $=await l(i,"GET");if($.offset===E){_=!0;break}if($.offset!==g)throw new Error("上传进度不一致,请重新上传")}if(!_)throw new Error("分片上传失败");g=E,s==null||s(r.size?g/r.size:1)}const w=new URL(i);w.pathname+="/complete";const y=await l(w,"POST");if(!((h=y.file)!=null&&h.absolutePath))throw new Error("上传完成响应无效");return y}catch(w){throw await l(i,"DELETE").catch(()=>{}),w}}function nm(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 sm({maxEntries:t=64,timeoutMs:r=15e3,createImage:s,fetchOriginal:i=s?null:(l,d)=>be(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=(_,I)=>JSON.stringify([_,I]);function f(_){const I=l.get(_);l.delete(_),I==null||I.cancel()}function h(){for(const _ of l.keys())f(_)}function w(_){_!==d&&(h(),d=_)}function y(_){f(g(d,_))}function E({sessionId:_,originalUrl:I,available:x=!0}){const $={sessionId:_,originalUrl:I},R=Q=>Object.freeze({...$,state:Q});if(!_||_!==d)return Promise.resolve(R("stale"));const N=g(_,I);if(x===!1)return f(N),Promise.resolve(R("unavailable"));if(typeof I!="string"||!I.trim())return Promise.resolve(R("unknown"));const P=l.get(N);if(P)return l.delete(N),l.set(N,P),P.promise;for(;l.size>=t;)f(l.keys().next().value);let M,U,q,z=!1,ee;const o=new AbortController,oe=new Promise(Q=>{ee=Q}),ce=Q=>{z||(z=!0,clearTimeout(U),o.abort(),q&&URL.revokeObjectURL(q),ee(Object.freeze(Q)))},W={promise:oe,cancel:()=>{ce(R("stale")),M&&(M.src="")}};return l.set(N,W),U=setTimeout(()=>{ce(R("unknown")),M&&(M.src="")},r),(async()=>{try{let Q=I;if(i&&!/^(data:|blob:)/i.test(I)){const ne=await i(I,o.signal);if(!ne.ok)throw new Error("Original unavailable");const L=await ne.blob();if(z)return;Q=q=URL.createObjectURL(L)}if(z)return;M=s(),M.src=Q,await M.decode();const le=M.naturalWidth,H=M.naturalHeight;Number.isInteger(le)&&le>0&&Number.isInteger(H)&&H>0?ce({...$,state:"actual",width:le,height:H,source:"original-decode"}):ce(R("unknown"))}catch{ce(R("unknown"))}})(),oe}return{setSession:w,load:E,invalidate:y,clear:h,get size(){return l.size}}}function Mo(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 Ro(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 rm(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 Sl(t){return t===!0?"有":t===!1?"无":"未知"}const om={class:"shell"},im={class:"sidebar"},am={class:"brand-row logo-only"},lm=["aria-label","aria-pressed","title"],cm={class:"nav"},um=["title"],dm={class:"session-entry-main"},gm={key:0,"aria-hidden":"true"},fm={key:0,class:"sidebar-card prompt-stack"},pm={class:"prompt-stack-head"},hm={class:"prompt-list"},mm={key:0,class:"prompt-list-empty"},bm={key:1,class:"prompt-list-empty"},km=["onDragstart","onDblclick"],ym={class:"prompt-card-body"},vm={class:"prompt-card-actions"},wm=["onClick"],_m=["onClick"],xm={key:1,class:"sidebar-footer"},Sm=["title"],Em={class:"workspace"},Tm={class:"topbar"},Im={class:"top-actions"},Am=["onClick"],Cm=["onKeydown"],Mm=["title"],Rm=["aria-label","aria-pressed","title"],Nm={key:0,class:"content-grid chat-grid"},Lm={class:"chat-panel"},$m={key:0,class:"runtime-context-bar"},Om={key:0,class:"runtime-context-bar-actions"},Dm={key:2,class:"runtime-context-syncing"},Pm={key:1,class:"runtime-context-bar project-context-bar"},Um={class:"runtime-context-bar-actions"},Bm=["data-index"],zm={class:"tool-group-shell"},Fm=["aria-expanded","onClick"],Hm={class:"tool-group-label"},jm={class:"tool-group-label-name"},Gm={key:0,class:"tool-group-label-count"},qm={key:1,class:"tool-group-label-separator"},Wm={key:1,class:"tool-group-lines"},Km=["open"],Vm={class:"reasoning-reveal"},Zm={class:"reasoning-paper"},Qm=["innerHTML"],Ym=["onClick","onKeydown"],Xm={class:"compaction-context-actions"},Jm={key:0},eb={class:"tool-result-title-row"},tb={class:"tool-result-name"},nb={key:0,class:"elapsed-pill"},sb={key:1,class:"tool-result-failure-mark","aria-label":"执行失败"},rb={class:"tool-result-detail-row"},ob={key:0,class:"tool-result-primary"},ib={key:1},ab={key:2,class:"tool-group-shell"},lb=["aria-expanded","onClick"],cb={class:"tool-group-label"},ub={class:"tool-group-label-name"},db={key:0,class:"tool-group-label-count"},gb={key:1,class:"tool-group-label-separator"},fb={key:0,class:"tool-group-purposes"},pb={key:3,class:"tool-result-primary"},hb={key:0},mb={key:4,class:"tool-result-previews"},bb={class:"tool-result-preview kind-list"},kb={tabindex:"0"},yb={key:5,class:"tool-result-previews"},vb={class:"tool-result-preview kind-code"},wb={tabindex:"0"},_b={key:6,class:"tool-result-previews"},xb={tabindex:"0"},Sb={key:3},Eb={key:0,class:"message-head"},Tb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},Ib=["innerHTML"],Ab={key:0,class:"message-body compaction-message-body"},Cb=["onClick","onKeydown"],Mb={class:"compaction-context-actions"},Rb={key:0},Nb={key:1,class:"message-body reasoning-body"},Lb=["open"],$b={key:0,class:"reasoning-elapsed"},Ob={class:"reasoning-reveal"},Db={class:"reasoning-paper"},Pb=["innerHTML"],Ub={key:2,class:"message-body"},Bb={key:0,class:"message-head"},zb={key:0,class:"tool-result-failure-mark","aria-label":"执行失败"},Fb={key:1},Hb={key:2,class:"elapsed-pill"},jb={key:1,class:"image2-result-shell"},Gb=["innerHTML"],qb={key:0,class:"message-image-attachments image2-output-images"},Wb=["data-preview-src","aria-label"],Kb=["src","alt"],Vb={key:1,class:"image-unavailable-placeholder",role:"status"},Zb={class:"image-card-actions"},Qb=["href","download"],Yb=["onClick"],Xb=["onClick"],Jb={class:"tool-result-title-row"},ek={class:"tool-result-name"},tk={key:0,class:"elapsed-pill"},nk={key:1,class:"tool-result-failure-mark","aria-label":"执行失败"},sk={class:"tool-result-detail-row"},rk={key:0,class:"tool-result-primary"},ok={key:1},ik={key:2,class:"tool-group-shell"},ak=["aria-expanded","onClick"],lk={class:"tool-group-label"},ck={class:"tool-group-label-name"},uk={key:0,class:"tool-group-label-count"},dk={key:1,class:"tool-group-label-separator"},gk={key:0,class:"tool-group-purposes"},fk={key:3,class:"tool-result-primary"},pk={key:0},hk={key:4,class:"tool-result-previews"},mk={class:"tool-result-preview kind-list"},bk={tabindex:"0"},kk={key:5,class:"tool-result-previews"},yk={class:"tool-result-preview kind-code"},vk={tabindex:"0"},wk={key:6,class:"tool-result-previews"},_k={tabindex:"0"},xk={class:"plugin-resource-stack"},Sk=["src","title"],Ek=["innerHTML"],Tk={key:1,class:"message-text markdown streaming-markdown"},Ik=["innerHTML"],Ak={key:0,class:"message-image-attachments"},Ck=["data-preview-src","aria-label"],Mk=["src","alt"],Rk={key:1,class:"image-unavailable-placeholder",role:"status"},Nk=["href","download"],Lk={key:2,class:"message-loading",role:"status"},$k={class:"message-loading-body"},Ok={key:3,class:"message-loading",role:"status","aria-live":"polite"},Dk={class:"message-loading-body"},Pk={key:0,class:"queued"},Uk=["disabled"],Bk=["disabled"],zk={key:0,class:"composer-app-prompt"},Fk={key:1,class:"attachments file-attachments"},Hk=["onClick"],jk={key:2,class:"attachments image-attachments"},Gk=["src","alt"],qk=["onClick"],Wk={class:"composer-path-row"},Kk=["title"],Vk={id:"composer-session-metrics",class:"composer-metrics","aria-label":"运行状态指标"},Zk=["aria-pressed","title"],Qk={class:"compress-wrap"},Yk=["disabled"],Xk={class:"composer-actions"},Jk=["aria-expanded"],ey=["disabled","aria-busy","aria-label","title"],ty=["type","disabled","aria-busy","aria-label","title"],ny={key:0,class:"composer-button-icon composer-wait-icon","data-action":"waiting",viewBox:"0 0 20 20","aria-hidden":"true"},sy={key:1,class:"composer-button-icon","data-action":"send",viewBox:"0 0 20 20","aria-hidden":"true"},ry={key:2,class:"composer-button-icon","data-action":"interrupt-send",viewBox:"0 0 20 20","aria-hidden":"true"},oy={key:3,class:"composer-button-icon","data-action":"send-now",viewBox:"0 0 20 20","aria-hidden":"true"},iy={key:4,class:"composer-button-icon","data-action":"stop",viewBox:"0 0 20 20","aria-hidden":"true"},ay=["data-mobile-card","onKeydown"],ly={class:"background-task-section","data-card":"tasks"},cy={class:"background-task-head"},uy={class:"panel-title"},dy={key:0,class:"background-task-count"},gy=["title"],fy={key:0,class:"background-task-more"},py={key:1,class:"background-task-history"},hy={class:"background-task-history-list"},my=["title","onClick"],by={key:1,class:"quota-card","data-card":"quota"},ky={class:"quota-card-head"},yy={class:"quota-card-controls"},vy=["aria-valuenow"],wy={class:"quota-card-foot"},_y={class:"quota-card-update"},xy={class:"quota-card memory-card","data-card":"memory"},Sy={class:"memory-card-head"},Ey={class:"memory-trend",viewBox:"0 0 260 44",preserveAspectRatio:"none",role:"img","aria-label":"最近一小时 RSS 趋势"},Ty=["d"],Iy=["cx","cy","r","onFocus"],Ay={key:1,class:"memory-trend-empty"},Cy={class:"memory-stats"},My={class:"memory-card-foot"},Ry={key:1,class:"content-grid single"},Ny={class:"panel-page sessions-page"},Ly={class:"page-head sessions-page-head"},$y={class:"session-toolbar"},Oy={class:"session-search","aria-label":"搜索会话"},Dy={class:"session-count"},Py={key:0,class:"empty-state"},Uy={key:1,class:"empty-state"},By={key:2,class:"empty-state"},zy={key:3,class:"session-list"},Fy={class:"session-card-main"},Hy={class:"session-card-title"},jy={key:0,class:"current-pill"},Gy={key:1,class:"current-pill"},qy={key:2,class:"live-pill"},Wy={class:"session-card-meta"},Ky=["title"],Vy=["datetime"],Zy={class:"session-actions"},Qy=["disabled","onClick"],Yy=["disabled","onClick"],Xy={key:4,class:"session-pagination","aria-label":"会话分页"},Jy=["disabled"],ev=["aria-current","onClick"],tv=["disabled"],nv={key:2,class:"content-grid single"},sv={class:"panel-page sessions-page admin-users-page"},rv=["disabled"],ov={key:0,class:"admin-user-error",role:"alert"},iv={key:1,class:"empty-state"},av={key:2,class:"session-list admin-user-list"},lv={class:"session-card-main"},cv={class:"session-card-title"},uv={class:"current-pill"},dv={class:"session-actions"},gv=["disabled","onClick"],fv={key:3,class:"content-grid single"},pv={class:"panel-page prompt-page"},hv={class:"page-head"},mv={class:"page-head-actions"},bv={class:"prompt-workbench"},kv={class:"prompt-library-panel"},yv={class:"prompt-library-head"},vv={class:"prompt-library-list"},wv={key:0,class:"prompt-list-empty"},_v={key:1,class:"prompt-list-empty"},xv=["onClick","onDblclick","onDragstart","onDragover","onDrop"],Sv={key:0},Ev={class:"prompt-editor-panel"},Tv={class:"prompt-editor-toolbar"},Iv={class:"prompt-editor-current"},Av={class:"prompt-editor-toolbar-actions"},Cv=["disabled"],Mv=["disabled"],Rv={class:"prompt-editor-grid"},Nv={class:"prompt-editor-field"},Lv={class:"prompt-editor-field prompt-editor-field-full"},$v={class:"prompt-editor-field prompt-editor-field-full"},Ov={key:4,class:"content-grid single"},Dv={class:"panel-page settings-page"},Pv={class:"page-head settings-page-head"},Uv={class:"settings-subpage-title"},Bv={class:"page-head settings-page-head"},zv=["disabled"],Fv={key:0,class:"empty-state"},Hv={class:"settings-card"},jv={class:"settings-field-grid"},Gv={class:"settings-field"},qv={key:0,class:"settings-required","aria-label":"必填"},Wv=["onUpdate:modelValue","type","placeholder"],Kv={key:1,class:"settings-card"},Vv={class:"settings-field-grid"},Zv={class:"settings-field"},Qv={class:"settings-field"},Yv={key:2,class:"settings-card settings-plugin-card"},Xv={class:"settings-card-head"},Jv=["disabled"],ew={class:"plugin-settings-list"},tw={class:"plugin-toggle"},nw=["onUpdate:modelValue","aria-label"],sw={key:3,class:"settings-card settings-plugin-card"},rw={class:"settings-card-head"},ow=["disabled"],iw=["disabled"],aw={class:"plugin-settings-list"},lw={class:"plugin-toggle"},cw=["onUpdate:modelValue","disabled","aria-label"],uw=["disabled","onClick"],dw={key:5,class:"content-grid single"},gw={class:"panel-page"},fw={class:"capability-grid"},pw={key:0,class:"toast"},hw=["title","onKeydown"],mw={class:"cwd-picker-modal",role:"dialog","aria-modal":"true","aria-label":"选择工作目录"},bw=["disabled"],kw=["disabled"],yw={class:"cwd-picker-shortcuts"},vw={class:"cwd-picker-browser"},ww={class:"cwd-picker-locations","aria-label":"常用位置"},_w=["title","onClick"],xw={"aria-hidden":"true"},Sw={class:"cwd-picker-tree"},Ew={key:0,class:"cwd-picker-empty"},Tw={key:1,class:"cwd-picker-error"},Iw={class:"cwd-picker-actions"},Aw=["disabled"],Cw={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"项目上下文"},Mw={class:"runtime-context-modal-head"},Rw={key:0,class:"runtime-context-kicker"},Nw=["aria-label"],Lw={class:"runtime-context-modal-content"},$w={key:0,class:"runtime-context-index"},Ow=["onClick"],Dw={key:1,class:"project-context-document"},Pw=["aria-label"],Uw={class:"confirm-dialog-content"},Bw={class:"confirm-dialog-actions"},zw={class:"session-model-list",role:"radiogroup","aria-label":"模型"},Fw=["value","disabled"],Hw=["disabled"],jw=["value"],Gw={key:0,class:"context-window-error",role:"alert"},qw={class:"context-window-actions"},Ww=["disabled"],Kw={class:"context-window-input-wrap"},Vw={key:0,class:"context-window-error",role:"alert"},Zw={class:"context-window-actions"},Qw=["disabled"],Yw=["aria-label"],Xw={class:"image-preview-canvas"},Jw=["src","alt"],e0={key:0,class:"image-preview-caption"},t0={class:"runtime-context-detail-modal compaction-detail-modal",role:"dialog","aria-modal":"true","aria-label":"压缩上下文详情"},n0={class:"runtime-context-detail-content compaction-detail-content"},s0={class:"compaction-detail-stats"},r0={class:"runtime-context-modal",role:"dialog","aria-modal":"true","aria-label":"运行上下文"},o0={class:"runtime-context-modal-head"},i0={class:"runtime-context-modal-content"},a0={key:1,class:"runtime-plugin-list"},l0={key:0,class:"runtime-context-empty"},c0={class:"runtime-tool-status"},u0=["disabled","onClick"],d0={key:2,class:"runtime-plugin-list"},g0={key:0,class:"runtime-context-empty"},f0=["aria-label"],p0={class:"runtime-context-modal-head"},h0={key:0,class:"runtime-context-kicker"},m0={class:"runtime-context-detail-content"},b0={key:0},k0={key:1},y0={class:"tool-result-modal background-task-modal",role:"dialog","aria-modal":"true","aria-label":"后台任务"},v0={class:"tool-result-modal-head"},w0={class:"tool-result-modal-title"},_0={class:"background-task-modal-count"},x0={key:0,class:"background-task-index","aria-label":"后台任务列表"},S0=["title","onClick"],E0={class:"background-task-index-copy"},T0={class:"background-task-detail"},I0={class:"background-task-detail-head"},A0={class:"background-task-detail-title"},C0={class:"background-task-meta"},M0={key:0},R0={key:1,class:"wide"},N0={class:"background-task-detail-body"},L0={key:0,class:"background-task-command-section"},$0={class:"background-task-command"},O0={key:2,style:{"min-width":"0",width:"100%"}},D0=["aria-label"],P0={class:"tool-result-modal-head"},U0={class:"tool-result-modal-title"},B0={key:0},z0={class:"tool-result-modal-content"},F0=["innerHTML"],H0=2048,j0=18e5,No=.62,Lo=10,G0="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.",q0="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.",W0="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.",K0="<<ATTACHMENT_MANIFEST>>",V0="<</ATTACHMENT_MANIFEST>>",cr="••••••••••••••••••",Xn="neoctl-web.adminOwnerUsername",El="neoctl-web.theme",$o="neoctl-web.clientRevision",Tl="neoctl-web.clientReloadRequest",Oo="__neo_reload",Z0=112,Il=4e4,X0={__name:"App",setup(t){Ae.registerLanguage("javascript",_o),Ae.registerLanguage("js",_o),Ae.registerLanguage("jsx",_o),Ae.registerLanguage("typescript",xo),Ae.registerLanguage("ts",xo),Ae.registerLanguage("tsx",xo),Ae.registerLanguage("python",pl),Ae.registerLanguage("py",pl),Ae.registerLanguage("bash",So),Ae.registerLanguage("sh",So),Ae.registerLanguage("shell",So),Ae.registerLanguage("json",jp),Ae.registerLanguage("css",Xp),Ae.registerLanguage("html",Eo),Ae.registerLanguage("xml",Eo),Ae.registerLanguage("vue",Eo),Ae.registerLanguage("markdown",hl),Ae.registerLanguage("md",hl),Ae.registerLanguage("yaml",ml),Ae.registerLanguage("yml",ml),Ae.registerLanguage("diff",Jp);const r=re(!1),s=re(!1),i=V(qa),l=V(()=>!Ve.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:"请求处理失败"};qa()&&(Ve.adminOwnerUsername=sessionStorage.getItem(Xn)||"");const y="neoctl-web.tabId"+Wa(),E="neoctl-web.sessionId"+Wa();let _=U(),I=sessionStorage.getItem(E)||"",x=!I,$=!1;const R=[];function N(){return{id:"",title:"",content:"",usage:""}}function P(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 U(){let e=sessionStorage.getItem(y);return e||(e=q(),sessionStorage.setItem(y,e)),e}function q(){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 z(e){const n=new URL(e,window.location.origin);return n.searchParams.set("tabId",_),I&&n.searchParams.set("sessionId",I),it(`${n.pathname}${n.search}${n.hash}`)}function ee(e,n=!1){const c=(e==null?void 0:e.sessionId)||"";!c||c===I||!n&&!x&&I||(I=c,x=!1,sessionStorage.setItem(E,c))}const o=dr({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:!1,installationSupported:!1,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:[],coreToolTimings:[],coreQueryTiming:void 0,timingTick:performance.now(),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:""}),oe=re(""),ce=re(""),W=re(1),Q=re(""),le=re(Fd()),H=re(null),ne=re(null),L=re(null),G=re(null),K=re(null),se=re(null),ue=re(""),xe=V(()=>[{id:"tasks",title:"后台任务"},...St.value?[{id:"quota",title:"周额度"}]:[],{id:"memory",title:"服务端内存"}]),Ce=e=>{var n;return((n=xe.value.find(c=>c.id===e))==null?void 0:n.title)||""};function Fe(e){sr(),o.activePanel="chat",ue.value=e,nt(()=>{var n;return(n=document.querySelector(".mobile-card-close"))==null?void 0:n.focus()})}function He(){ue.value="",nt(()=>{var e,n;return(n=(e=se.value)==null?void 0:e.querySelector("summary"))==null?void 0:n.focus()})}const je=re(""),et=dr({}),Se=dr(N()),de=re(""),Oe=re(""),Ue=re(""),st=re("before"),ct=re(-1);let Me,En;const Re=qh({getElement:()=>L.value});let qe=0,mt=0,te,Rt=!1,Le,ke,Nt,tt=0,Gt=Promise.resolve(),bt=0,F=0,Z=0,ie,pe,Pe=!1,Qe,kt;Zc();const _t=new Map,Lt=new Map,Cr=re(0),qt=V(()=>[...o.lines||[]].reverse().find(e=>Yu(e))||null),yc=V(()=>{var e;return td((e=o.status)==null?void 0:e.phase)}),vc=V(()=>{var e,n;if(qt.value)return ta(qt.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 yc.value}),fi=V(()=>{var e;return bg((e=o.status)==null?void 0:e.phase)}),wc=V(()=>fi.value||o.busy||o.sessionResumeLoading),_c=V(()=>{var e;if(o.sessionResumeLoading)return"正在加载会话";if(qt.value){const n=Tt(qt.value),c=ta(qt.value)?"正在载入图片结果":"图片模型正在生成";return n==="排队中"?`${c} · 排队中`:c}if(((e=o.status)==null?void 0:e.phase)==="calling_model"){const n=o.status.modelOutput;if((n==null?void 0:n.kind)==="text")return"正在生成回复";if((n==null?void 0:n.kind)==="tool_call")return n.name?`正在准备调用 ${n.name}`:"正在准备工具调用"}return`正在${vc.value}`}),xc=V(()=>{if(!o.sessionResumeLoading){if(qt.value){const e=qt.value,n=o.coreToolTimings.find(c=>{var u;return c.id===((u=e.timing)==null?void 0:u.id)})??e.timing;return Co(n,o.timingTick,o.connected)}return Co(o.coreQueryTiming,o.timingTick,o.connected)}}),pi=e=>String(e||"").replace(/设计/g,"").trim(),hi=e=>pi(e==null?void 0:e.title)||"未命名会话",Tn=V(()=>{var n;const e=pi((n=o.session)==null?void 0:n.title);return e&&e!=="neo"?e:""}),us=V(()=>Tn.value||"未命名会话"),ds=re(null),mi=re(null),Mr=re(!1);let gs;const Rr=async()=>{await nt();const e=ds.value,n=mi.value;Mr.value=!!(e&&n&&n.scrollWidth>e.clientWidth+2)},bi=V(()=>o.cwd||"—"),In=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}}),Sc=V(()=>{var e;return Jh(In.value.model,(e=In.value.reasoning)==null?void 0:e.effort)}),fs=V(()=>o.fastModeMutating?o.fastModeDraft:o.pendingSessionSettings.fastMode??o.fastMode),ki=V(()=>{var e;return[...new Set([In.value.model,(e=o.modelSettings)==null?void 0:e.model,...o.catalog.modelIds||[]].filter(Boolean))]}),Ec=V(()=>ki.value.filter(e=>e.toLowerCase().includes(o.modelSearch.trim().toLowerCase()))),ps=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")]});De(()=>o.modelDraft,()=>{ps.value.includes(o.reasoningDraft)||(o.reasoningDraft="default")});const Tc=V(()=>`${o.composerMetrics.context.display.toFixed(1)}%`),Ic=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))):""}),Ac=V(()=>mn(o.composerMetrics.inputTokens.display)),Cc=V(()=>mn(o.composerMetrics.outputTokens.display)),$t=V(()=>fi.value||o.busy),hs=V(()=>o.backgroundTasks.length),ms=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)})),An=V(()=>{const e=new Set;return[...o.backgroundTasks,...ms.value].filter(n=>{const c=Yt(n);return e.has(c)?!1:(e.add(c),!0)})}),Cn=V(()=>o.backgroundTasks[0]),Nr=V(()=>!!(oe.value.trim()||o.attachments.length)),yi=V(()=>r.value?"正在处理":$t.value?Nr.value?"打断并发送":o.queuedInput?"立即发送":"停止":"发送 ↵"),Mn=V(()=>{const e=ce.value.trim().toLocaleLowerCase(),n=o.sessions||[];return e?n.filter(c=>[hi(c),c.ownerUsername,c.title,c.sessionId,c.updatedAt,c.createdAt].some(u=>String(u||"").toLocaleLowerCase().includes(e))):n}),bs=V(()=>Math.max(1,Math.ceil(Mn.value.length/Lo))),Mc=V(()=>{const e=(W.value-1)*Lo;return Mn.value.slice(e,e+Lo)}),Rc=V(()=>{const e=bs.value,n=Math.max(1,Math.min(W.value-2,e-4)),c=Math.min(e,n+4);return Array.from({length:c-n+1},(u,p)=>n+p)}),Wt=V(()=>o.sessionResumeLoading?[]:ju((o.lines||[]).filter(e=>!Xu(e)))),Lr=re(0),an=jf(V(()=>({count:Wt.value.length,getScrollElement:()=>L.value,estimateSize:gg,getItemKey:e=>dg(Wt.value[e]),rangeExtractor:e=>{const n=new Set(Hl(e));return Wt.value.forEach((c,u)=>{(c==null?void 0:c.live)===!0&&n.add(u)}),[...n].sort((c,u)=>c-u)},overscan:8,scrollMargin:Cr.value,anchorTo:"start",followOnAppend:!1,useAnimationFrameWithResizeObserver:!0})));an.value.shouldAdjustScrollPositionOnItemSizeChange=(e,n,c)=>{if(Re.following||Re.interacting||Lr.value)return!1;const u=(c.scrollOffset||0)+c.scrollAdjustments;return c.itemSizeCache.has(e.key)?e.end<=u&&c.scrollDirection!=="backward":e.start<u};const Nc=V(()=>an.value.getVirtualItems().filter(e=>Wt.value[e.index])),Lc=V(()=>an.value.getTotalSize()),$c=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:[]}),$r=V(()=>{var e;return Array.isArray((e=o.runtimeContext)==null?void 0:e.tools)?o.runtimeContext.tools:[]}),Rn=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:[]}),Oc=V(()=>o.sessionPlugins.items.filter(e=>e.effectiveEnabled).length),Dc=V(()=>o.sessionTools.items.filter(e=>e.effectiveEnabled).length),ut=V(()=>o.lines.find(e=>String(e.id)===String(o.toolDetailLineId))||null),xt=V(()=>o.lines.find(e=>String(e.id)===String(o.compactionDetailLineId))||null),Kt=V(()=>{var e;return((e=o.appPrompt)==null?void 0:e.activePrompt)||void 0}),Pc=V(()=>{var e,n;return((e=Kt.value)==null?void 0:e.title)||((n=Kt.value)==null?void 0:n.id)||""}),ks=V(()=>o.promptLibrary.find(e=>e.id===o.selectedPromptId)||o.promptLibrary[0]||null),ys=V(()=>le.value==="dark"),vs=V(()=>ys.value?"切换到日间模式":"切换到夜间模式"),St=V(()=>o.cpaQuotas.length?o.cpaQuotas[o.cpaQuotaIndex%o.cpaQuotas.length]||o.cpaQuotas[0]:null),ws=V(()=>{var e;return((e=o.memory)==null?void 0:e.current)||null}),_s=V(()=>{var v;const e=(((v=o.memory)==null?void 0:v.history)||[]).filter(T=>Number.isFinite(Number(T==null?void 0:T.rss))),n=e.map(T=>Number(T.rss));if(!n.length)return[];const c=Math.min(...n),u=Math.max(...n),p=Math.max(1,u-c);return n.map((T,O)=>({entry:e[O],x:n.length===1?130:O/(n.length-1)*260,y:n.length===1?22:40-(T-c)/p*36}))}),vi=V(()=>_s.value.map((e,n)=>`${n?"L":"M"} ${e.x.toFixed(1)} ${e.y.toFixed(1)}`).join(" ")),Nn=V(()=>_s.value[ct.value]||null);De(le,Hd,{immediate:!0}),De([$t,ys],([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}),De(Tn,e=>{document.title=e||"对话工作台"},{immediate:!0}),De(us,Rr,{immediate:!0}),De(ce,()=>{W.value=1}),De(bs,e=>{W.value>e&&(W.value=e)}),De(()=>{var e;return(e=o.backgroundTaskDetail)==null?void 0:e.output},async()=>{await nt();const e=K.value;e&&(e.scrollTop=e.scrollHeight)}),De(L,e=>Re.attach(e),{flush:"post"}),De(()=>Wt.value.length,async()=>{await nt(),mo(),tr()}),De(()=>o.activePanel,async e=>{e==="chat"&&(await nt(),mo(),tr())});async function Uc(){sessionStorage.removeItem(Xn),(await be("/api/auth/logout",{method:"POST"})).ok&&location.reload()}qo(async()=>{typeof ResizeObserver<"u"&&(kt=new ResizeObserver(()=>{tr(),Re.schedule()}),mo()),tr(),await Promise.all([Ln(),Bc(),$n(),Or(),xs(),wi(),Ur(),Di()]),Es(),Le=setInterval(()=>{o.clockTick=Date.now(),o.timingTick=performance.now()},1e3),ke=setInterval(Ur,6e4),Nt=setInterval(Di,6e4),window.addEventListener("keydown",ya),document.addEventListener("click",Ki),document.addEventListener("click",Vi),document.addEventListener("pointerdown",Ba,!0),typeof ResizeObserver<"u"&&ds.value&&(gs=new ResizeObserver(Rr),gs.observe(ds.value)),Rr()}),jt(()=>{Me&&Me.close(),Re.dispose(),qe&&cancelAnimationFrame(qe),Ts(),te=void 0,tt&&cancelAnimationFrame(tt),Le&&clearInterval(Le),ke&&clearInterval(ke),Nt&&clearInterval(Nt),Qe&&clearTimeout(Qe),gs&&gs.disconnect(),kt&&kt.disconnect(),document.body.classList.remove("tool-detail-open","image-preview-open","runtime-context-open","context-window-open","cwd-picker-lock"),pe&&cn(!1),window.removeEventListener("keydown",ya),document.removeEventListener("click",Ki),document.removeEventListener("click",Vi),document.removeEventListener("pointerdown",Ba,!0)});async function Ln(e={}){try{const n=await be(z("/api/state"));if(!n.ok)throw new Error(`state ${n.status}`);return Is(await n.json()),!0}catch(n){return e.silent||J(`运行时不可用:${n.message||n}`),!1}}async function Bc(){try{const e=await be(z("/api/client-info"),{cache:"no-store"});if(!e.ok)return;_i(await e.json())}catch{}}async function $n(){o.runtimeContextLoading=!0;try{const e=await be(z("/api/runtime-context")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`runtime-context ${e.status}`);return Si(n),!0}catch(e){return o.runtimeContextError=e.message||String(e),!1}finally{o.runtimeContextLoading=!1}}async function zc(){o.globalTools.loading=!0;try{const e=await be(z("/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,J(e.message||String(e))}}async function Fc(){const e=Object.fromEntries(o.globalTools.items.map(n=>[n.name,n.configuredEnabled!==!1]));o.globalTools.loading=!0;try{const n=await Ee("/api/tools/global",{overrides:e});o.globalTools={...n.state,loading:!1},await Promise.all([xs(),$n()]),J("全局工具配置已保存,各会话在下一轮或刷新时生效")}catch(n){o.globalTools.loading=!1,We(n,"工具配置保存失败")}}async function xs(){o.sessionTools.loading=!0;try{const e=await be(z("/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,J(e.message||String(e))}}async function Hc(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 Ee("/api/session-tools",{overrides:c});o.sessionTools={...u.state,loading:!1,busy:!1}}catch(u){o.sessionTools.busy=!1,We(u,"会话工具更新失败")}}async function Ss(){o.globalPlugins.loading=!0;try{const e=await be(z("/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,installationSupported:n.installationSupported===!0,loading:!1}}catch(e){o.globalPlugins.loading=!1,J(e.message||String(e))}}async function jc(){const e=o.globalPlugins.items.filter(n=>n.configuredEnabled!==!1).map(n=>n.id);o.globalPlugins.loading=!0;try{const n=await Ee("/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)})),await Ss(),J("插件配置已生效;运行中的会话在下一次模型调用前更新")}catch(n){We(n,"插件配置保存失败")}finally{o.globalPlugins.loading=!1}}async function Gc(){const e=window.prompt("仅安装可信插件:插件以本机权限运行。输入服务器上的插件目录绝对路径(需含 neo-plugin.json)");if(e!=null&&e.trim()){o.globalPlugins.loading=!0;try{await Ee("/api/plugins/install",{directory:e.trim()}),await Ss(),J("插件已安装;运行中的会话在下一次模型调用前更新")}catch(n){We(n,"插件安装失败")}finally{o.globalPlugins.loading=!1}}}async function qc(e){if(window.confirm(`卸载“${e.name}”?历史资源将不可访问,用户数据保留。`)){o.globalPlugins.loading=!0;try{await Ee("/api/plugins/uninstall",{id:e.id}),await Ss(),J("插件已卸载,用户数据已保留")}catch(n){We(n,"插件卸载失败")}finally{o.globalPlugins.loading=!1}}}async function Or(){o.sessionPlugins.loading=!0;try{const e=await be(z("/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,J(e.message||String(e))}}async function Wc(e,n){var u;const c=Object.fromEntries(o.sessionPlugins.items.map(p=>[p.id,p.id===e.id?n:p.mode]));o.sessionPlugins.busy=!0;try{const p=await Ee("/api/session-plugins",{overrides:c});o.sessionPlugins={...p.state,loading:!1,busy:!1},(u=p.state)!=null&&u.pending&&J("已保存,将在下一次模型调用前生效")}catch(p){o.sessionPlugins.busy=!1,We(p,"会话插件更新失败")}}async function wi(){if(Ve.isolation){o.promptLibraryLoading=!1;return}o.promptLibraryLoading=!0;try{const e=await be(z("/api/prompt-library")),n=await e.json().catch(()=>({}));if(!e.ok)throw new Error(n.error||`prompt-library ${e.status}`);On(Array.isArray(n.items)?n.items:R)}catch(e){On([]),J(e.message||String(e))}finally{o.promptLibraryLoading=!1}}function Es(){Me&&Me.close(),qe&&cancelAnimationFrame(qe),qe=0,Ts(),te=void 0,Rt=!1,o.connecting=!0,Me=new EventSource(z("/events")),Me.addEventListener("open",()=>{Rt=!1,o.connected=!0,o.connecting=!1}),Me.addEventListener("error",()=>{Dr(),o.connected=!1,o.connecting=!1}),Me.addEventListener("sync",e=>{if(!Rt){Rt=!0,Ti(e.data);return}Qc(e.data)}),Me.addEventListener("delta",e=>{Dr(),Yc(e.data)}),Me.addEventListener("terminal.output",e=>{try{Dr(),nu(JSON.parse(e.data))}catch{}}),Me.addEventListener("client.version",e=>{try{_i(JSON.parse(e.data))}catch{}}),Me.addEventListener("client.reload",e=>{try{Kc(JSON.parse(e.data))}catch{}}),Me.addEventListener("runtime.context",e=>{try{Si(JSON.parse(e.data))}catch(n){o.runtimeContextError=n.message||String(n)}}),Me.addEventListener("runtime.context.error",e=>{try{const n=JSON.parse(e.data);o.runtimeContextError=n.message||"运行上下文同步失败"}catch{o.runtimeContextError="运行上下文同步失败"}})}function _i(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($o);localStorage.setItem($o,n),c&&c!==n&&xi({...e,requestId:`revision:${n}`,clearCache:!0})}async function Kc(e){if(Number(e==null?void 0:e.protocolVersion)!==1)return;const n=String(e.requestId||"").trim();if(!n||sessionStorage.getItem(Tl)===n)return;sessionStorage.setItem(Tl,n);const c=String(e.revision||"").trim();c&&localStorage.setItem($o,c),o.coreVersion=String(e.coreVersion||o.coreVersion||""),await xi(e)}async function xi(e){if(Pe)return;Pe=!0,e.clearCache!==!1&&await Vc();const n=new URL(window.location.href);n.searchParams.set(Oo,String(e.requestId||e.revision||Date.now())),window.location.replace(n.href)}async function Vc(){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 Zc(){const e=new URL(window.location.href);e.searchParams.has(Oo)&&(e.searchParams.delete(Oo),window.history.replaceState(window.history.state,"",e.href))}function ln(){Qe&&clearTimeout(Qe),o.coreEasterEgg=!1,requestAnimationFrame(()=>{o.coreEasterEgg=!0,Qe=setTimeout(()=>{o.coreEasterEgg=!1},1300)})}function Si(e){var p,v;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||!((v=o.runtimeContext)!=null&&v.sessionId)||e.sessionId===o.runtimeContext.sessionId)&&n<c||(o.runtimeContext=e,o.projectContextDocument&&!Rn.value.some(T=>T.path===o.projectContextDocument.path)&&(o.projectContextDocument=void 0),o.projectContextOpen&&Rn.value.length===0&&(o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")),o.runtimeContextLoading=!1,o.runtimeContextError="")}function Qc(e){te=e,!qe&&(qe=requestAnimationFrame(()=>{qe=0,Ei()}))}function Dr(){qe&&cancelAnimationFrame(qe),qe=0,Ei()}function Ei(){const e=te;te=void 0,e&&Ti(e)}function Ti(e){try{Is(JSON.parse(e))}catch(n){J(`运行状态同步失败:${n.message||n}`)}}function Yc(e){try{tu(JSON.parse(e))}catch(n){J(`流式增量同步失败:${n.message||n}`),Ln()}}function Xc(e,n){const c=String(n||"");if(!c)return;const u=String(e);Lt.set(u,`${Lt.get(u)||""}${c}`),Ii()}function Ii(){mt||(mt=requestAnimationFrame(Jc))}function Jc(){mt=0;const e=Re.following,n=[...Lt];Lt.clear();for(const[c,u]of n){const p=o.lines.findIndex(T=>String(T.id)===c);if(p<0)continue;const v=o.lines[p];o.lines[p]={...v,text:`${v.text||""}${u}`}}e&&bo(),Lt.size&&Ii()}function eu(e){const n=String(e),c=Lt.get(n);if(!c)return;Lt.delete(n);const u=o.lines.findIndex(v=>String(v.id)===n);if(u<0)return;const p=o.lines[u];o.lines[u]={...p,text:`${p.text||""}${c}`}}function Ts(){mt&&cancelAnimationFrame(mt),mt=0,Lt.clear()}function tu(e){const n=String(e.sessionId||"");if(I&&n&&n!==I&&!x){ca();return}const c=Re.following;for(const u of e.operations||[]){if(u.type==="line.append"){o.lines.some(v=>{var T;return String(v.id)===String((T=u.line)==null?void 0:T.id)})||o.lines.push(u.line);continue}const p=o.lines.findIndex(v=>String(v.id)===String(u.id));if(p<0)throw new Error(`找不到增量消息行 ${u.id}`);if(o.lines[p],u.type==="line.text.append")Xc(u.id,u.text);else if(u.type==="line.patch"){eu(u.id);const v=o.lines[p];o.lines[p]={...v,...u.patch||{}}}}e.status&&(o.status=e.status,na(e.status)),Kr(),o.connected=!0,o.connecting=!1,c&&bo()}function nu(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 v=o.backgroundTasks.findIndex(k=>String((k==null?void 0:k.sessionId)||"")===p);if(v<0)continue;const T=String(u.text||"");if(!T)continue;const O=o.backgroundTasks[v],j=String(O.output||""),B=Number(O.outputEnd??j.length),ge=Number(u.outputStart??B),Ie=Number(u.outputEnd??ge+T.length),Bt=ge===B?su(j,T,Il):T.slice(-Il);o.backgroundTasks[v]={...O,output:Bt,outputEnd:Ie},String(((c=o.backgroundTaskDetail)==null?void 0:c.sessionId)||"")===p&&(o.backgroundTaskDetail={...o.backgroundTaskDetail,output:Bt,outputEnd:Ie})}}function su(e,n,c){const u=`${e}${n}`;return u.length<=c?u:u.slice(-c)}function Is(e){var p,v,T,O;Ts();const n=String(((p=e.session)==null?void 0:p.sessionId)||""),c=String(((v=o.session)==null?void 0:v.sessionId)||"");if(n&&n!==c&&gn(),I&&n&&n!==I&&!x){ca();return}Z+=1;const u=Re.following;if(n!==c&&(Re.reset(),Ms(),hg(),o.messageImagePreviews=o.messageImagePreviews.filter(j=>j.sessionId===n),o.attachmentCounter=0),o.lines=e.lines||[],o.toolDetailLineId!==void 0&&!o.lines.some(j=>String(j.id)===String(o.toolDetailLineId))&&gn(),o.compactionDetailLineId!==void 0&&!o.lines.some(j=>String(j.id)===String(o.compactionDetailLineId))&&Ps(),Zd(o.lines),o.status=e.status||o.status,na(e.status),Kr(),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 j=An.value.find(B=>Yt(B)===Yt(o.backgroundTaskDetail));j?o.backgroundTaskDetail={...j}:o.backgroundTaskDetail.kind==="terminal"&&o.backgroundTaskDetail.ownerSessionId===((T=e.session)==null?void 0:T.sessionId)?o.backgroundTaskDetail={...o.backgroundTaskDetail,status:"unknown",outputAvailability:"unavailable"}:Gs()}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},ee(e.session,x),n&&n!==c&&Promise.all([Or(),xs()]),o.sessionResumeLoading){const j=((O=e.session)==null?void 0:O.sessionId)||"";o.pendingResumeSessionId&&j===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,ed(o.backgroundTasks),mg(),u&&bo()}function On(e,n=o.selectedPromptId){const c=(e||[]).map(P).filter(Boolean);o.promptLibrary=c;const u=c.find(p=>p.id===n)||c[0]||null;o.selectedPromptId=(u==null?void 0:u.id)||"",Dn(u||N())}function Dn(e){Se.id=(e==null?void 0:e.id)||"",Se.title=(e==null?void 0:e.title)||"",Se.content=(e==null?void 0:e.content)||"",Se.usage=(e==null?void 0:e.usage)||""}function Pr(e){if(Ve.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]||N();o.selectedPromptId=n.id||"",Dn(n)}function ru(e){o.selectedPromptId=e.id,Pr(e.id)}function ou(){o.selectedPromptId="",Dn(N()),o.activePanel="prompts",o.promptManagerOpen=!0}function iu(e){o.selectedPromptId=e.id,Dn(e)}async function au(){const e=P({id:Se.id||M(),title:Se.title,content:Se.content,usage:Se.usage});if(!e){J("标题和内容不能为空");return}try{const n=await Ee("/api/prompt-library",{item:e});On(n.items,e.id)}catch(n){J(n.message||String(n));return}J("已保存提示词")}async function lu(){var u;const e=String(Se.id||"").trim();if(!e){Dn(N());return}const n=o.promptLibrary.find(p=>p.id===e);if(!(!n||!await Un({title:"删除提示词?",message:`“${n.title}”删除后无法恢复。`,confirmLabel:"确认删除",tone:"danger"}))){try{const p=await Ee("/api/prompt-library/delete",{id:e});On(p.items)}catch(p){J(p.message||String(p));return}((u=Kt.value)==null?void 0:u.id)===n.id&&Ai({confirm:!1}),J("已删除提示词")}}async function Pn(e){const n=P(e);if(!n){J("提示词无效");return}const c=Kt.value;if(c&&(c.id!==n.id||String(c.content||"").trim()!==n.content)){const p=c.id===n.id;if(!await Un({title:p?"更新当前提示词?":"切换当前提示词?",message:p?`“${n.title}”的内容已经变化。重新应用会影响模型对后续问题的理解和回答方式。`:`将从“${c.title||c.id||"当前提示词"}”切换为“${n.title}”。提示词变化会影响模型对后续问题的理解和回答方式。`,confirmLabel:p?"确认更新":"确认切换"}))return}try{const p=await Ee("/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},J(`已应用:${n.title}`))}catch(p){We(p,"应用提示词失败")}}async function Ai(e={}){if(Kt.value&&!(e.confirm!==!1&&!await Un({title:"清除当前提示词?",message:"清除后,模型将不再遵循当前应用提示词,这会改变它对后续问题的理解和回答方式。",confirmLabel:"确认清除",tone:"danger"})))try{const n=await Ee("/api/app-prompt",{clear:!0});(n==null?void 0:n.ok)!==!1&&(o.appPrompt=n.appPrompt||{hasActivePrompt:!1,activePrompt:void 0},J("已清空应用提示词"))}catch(n){We(n,"清空提示词失败")}}function Un(e){return pe&&cn(!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=>{pe=n})}function cn(e){const n=pe;pe=void 0,o.confirmDialog.open=!1,n==null||n(e===!0)}function cu(e,n){de.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 uu(e){var u;const n=Array.from(((u=e==null?void 0:e.dataTransfer)==null?void 0:u.types)||[]),c=fu(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 du(e){e!=null&&e.currentTarget&&(e!=null&&e.relatedTarget)&&e.currentTarget.contains(e.relatedTarget)||(o.composerDropActive=!1,o.composerDropMode="prompt")}async function gu(e){var p,v;const n=pu(e==null?void 0:e.dataTransfer);if(n.length){e.preventDefault(),o.composerDropActive=!1,o.composerDropMode="prompt",de.value="",await wa(n),(p=H.value)==null||p.focus();return}const c=((v=e==null?void 0:e.dataTransfer)==null?void 0:v.getData("application/x-neoctl-prompt-id"))||de.value;if(o.composerDropActive=!1,o.composerDropMode="prompt",!c)return;e.preventDefault();const u=o.promptLibrary.find(T=>T.id===c);if(de.value="",!u){J("未找到提示词");return}await Pn(u)}function fu(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 pu(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 hu(){de.value="",o.composerDropActive=!1,o.composerDropMode="prompt"}function mu(e,n){Oe.value=n.id,Ue.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 bu(e,n){var p,v,T;const c=Oe.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=(T=(v=e.currentTarget)==null?void 0:v.getBoundingClientRect)==null?void 0:T.call(v);Ue.value=n.id,st.value=u&&e.clientY>u.top+u.height/2?"after":"before",e.dataTransfer&&(e.dataTransfer.dropEffect="move")}async function ku(e,n){var j;e.preventDefault();const c=((j=e==null?void 0:e.dataTransfer)==null?void 0:j.getData("application/x-neoctl-prompt-sort-id"))||Oe.value,u=st.value;if(Ci(),!c||c===n.id)return;const p=[...o.promptLibrary],v=p.findIndex(B=>B.id===c);if(v<0)return;const[T]=p.splice(v,1),O=p.findIndex(B=>B.id===n.id);if(!(O<0)){p.splice(O+(u==="after"?1:0),0,T),o.promptLibrary=p;try{const B=await Ee("/api/prompt-library/reorder",{ids:p.map(ge=>ge.id)});On(B.items,o.selectedPromptId),J("提示词顺序已更新")}catch(B){await wi(),J(B.message||String(B))}}}function Ci(){Oe.value="",Ue.value="",st.value="before"}async function Mi(){if(r.value||i.value)return;const e=oe.value;if(!e.trim()&&o.attachments.length===0)return;if(e.trim()==="/sessions"){oe.value="",Kn(),await Ls();return}if(e.trim()==="/login"){oe.value="",Kn(),await zn();return}if(e.trim()==="/new"){oe.value="",Kn(),await Os();return}const n=[...o.attachments],c=n.filter(v=>v.kind==="image"),u=n.filter(v=>v.kind==="file"&&v.absolutePath),p=xa(e,c);Sa(c),oe.value="",o.attachments=[],Kn(),r.value=!0;try{const v=await be(z("/api/submit"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:p,attachments:[...c,...u]})}),T=await v.json();if(!v.ok||T!=null&&T.error)throw new Error(T.error||`submit ${v.status}`)}catch(v){J(v.message||String(v))}finally{r.value=!1}}async function yu(){if(r.value)return;if(!Nr.value){o.queuedInput?await Ni():await Ri();return}const e=oe.value,n=[...o.attachments],c=n.filter(v=>v.kind==="image"),u=n.filter(v=>v.kind==="file"&&v.absolutePath),p=xa(e,c);Sa(c),oe.value="",o.attachments=[],Kn(),r.value=!0;try{await Ee("/api/submit-now",{text:p,attachments:[...c,...u]})}catch(v){J(v.message||String(v))}finally{r.value=!1}}async function Ri(){if(!r.value){r.value=!0;try{await Ee("/api/interrupt",{})}catch(e){We(e,"停止回答失败")}finally{r.value=!1}}}async function vu(){try{const e=await Ee("/api/queue/cancel",{});J(e.cancelled?"已撤回排队消息":"没有待撤回的消息")}catch(e){We(e,"撤回排队消息失败")}}async function Ni(){if(!r.value){r.value=!0;try{const e=await Ee("/api/queue/send-now",{});J(e.interrupted?"已打断并发送排队消息":"已发送排队消息")}catch(e){We(e,"发送排队消息失败")}finally{r.value=!1}}}function As(e){const n=z(e),c=F;return{url:n,revision:Z,isCurrent:()=>c===F&&n===z(e)}}async function Cs(e,n=()=>!0){if(!e.isCurrent()||!n()||e.revision===Z)return;const c=Z;try{const u=new URL(e.url,window.location.origin);u.pathname="/api/state";const p=await be(`${u.pathname}${u.search}`,{cache:"no-store"}),v=await p.json();p.ok&&e.isCurrent()&&n()&&c===Z&&Is(v)}catch{}}function Ms(){F+=1,bt+=1,Gt=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={},ie=void 0,document.body.classList.remove("context-window-open")}function Rs(e,n){J(`${e}${n.deferred===!0?"将在下一轮生效":"已生效"}`)}function Li(e){ie=document.activeElement,document.body.classList.add("context-window-open"),nt(()=>{var n;return(n=document.querySelector(e))==null?void 0:n.focus()})}function $i(){document.body.classList.remove("context-window-open"),ie!=null&&ie.isConnected&&ie.focus(),ie=void 0}function Oi(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 wu(){if(o.compactSaving||o.pendingSessionSettings.compact)return;const e=As("/api/compact");o.compactSaving=!0;try{const n=await Ee(e.url,{},!0);if(!e.isCurrent())return;n.deferred&&(o.pendingSessionSettings.compact=!0),Rs("压缩会话",n),await Cs(e)}catch(n){e.isCurrent()&&We(n,"压缩上下文失败")}finally{e.isCurrent()&&(o.compactSaving=!1)}}function _u(){o.modelDraft=In.value.model||ki.value[0]||"";const e=In.value.reasoning;o.reasoningDraft=e===null?"off":(e==null?void 0:e.effort)||"default",ps.value.includes(o.reasoningDraft)||(o.reasoningDraft="default"),o.modelSearch="",o.modelError="",o.modelModalOpen=!0,Li("#session-model-search")}function Bn(){o.modelModalOpen=!1,o.modelError="",$i()}async function xu(){if(o.modelSaving||!o.modelDraft)return;const e=As("/api/session-model"),n=o.modelDraft,c=ps.value.includes(o.reasoningDraft)?o.reasoningDraft:"default";o.modelSaving=!0,o.modelError="";try{const u=await Ee(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,Bn(),Rs("模型",u),await Cs(e)}catch(u){e.isCurrent()&&(o.modelError=rt(u,"模型切换失败"))}finally{e.isCurrent()&&(o.modelSaving=!1)}}function Su(){o.contextWindowDraft=Ic.value,o.contextWindowError="",o.contextWindowModalOpen=!0,Li("#context-window-input")}function Ns(){o.contextWindowModalOpen=!1,o.contextWindowError="",$i()}function Eu(){o.contextWindowError=""}async function Tu(){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=As("/api/context-window");o.contextWindowSaving=!0,o.contextWindowError="";try{const u=await Ee(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 v=((c=o.status)==null?void 0:c.metrics)||{};o.status={...o.status,metrics:{...v,contextWindowTokens:p,contextWindowSource:"session",contextUsageRatio:p>0?Number(v.estimatedInputTokens||0)/p:void 0}},Kr()}Ns(),Rs("上下文窗口",u),await Cs(n)}catch(u){n.isCurrent()&&(o.contextWindowError=rt(u,"调整失败"))}finally{n.isCurrent()&&(o.contextWindowSaving=!1)}}function Iu(){const e=!fs.value,n=++bt,c=As("/api/fast-mode");o.fastModeDraft=e,o.fastModeMutating=!0,Gt=Gt.catch(()=>{}).then(()=>Ee(c.url,{enabled:e},!0)).then(async u=>{!c.isCurrent()||n!==bt||(u.deferred?o.pendingSessionSettings.fastMode=u.fastMode===!0:(delete o.pendingSessionSettings.fastMode,o.fastMode=u.fastMode===!0),o.fastModeMutating=!1,Rs("快速模式",u),await Cs(c,()=>n===bt))}).catch(async u=>{if(!(!c.isCurrent()||n!==bt)){o.fastModeMutating=!1,We(u,"快速模式切换失败");try{const p=await be(c.url.replace("/api/fast-mode?","/api/state?")),v=await p.json();p.ok&&c.isCurrent()&&n===bt&&Is(v)}catch{}}})}async function Ls(){o.activePanel="sessions",o.sessionsLoading=!0;try{if(i.value){const e=await be("/api/admin/sessions"),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw Et(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 be(z("/api/sessions")),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error||(n==null?void 0:n.ok)===!1)throw Et(n,e.status);o.sessions=n.sessions||[],o.runningSessionIds=n.runningSessionIds||[]}}catch(e){We(e,"加载会话失败")}finally{o.sessionsLoading=!1}}async function $s(){if(i.value){o.activePanel="users",o.adminUsersLoading=!0,o.adminUserError="";try{const e=await be("/api/admin/users"),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw Et(n,e.status);o.adminUsers=n.users||[]}catch(e){o.adminUserError=rt(e,"加载用户失败")}finally{o.adminUsersLoading=!1}}}async function Au(){o.adminUserBusy=!0,o.adminUserError="";try{const e=await be("/api/admin/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:Q.value})}),n=await e.json().catch(()=>({}));if(!e.ok||n!=null&&n.error)throw Et(n,e.status);Q.value="",J("普通用户已创建"),await $s()}catch(e){o.adminUserError=rt(e,"创建用户失败")}finally{o.adminUserBusy=!1}}async function Cu(e){if(window.confirm(`删除账号 ${e.username}?历史会话将保留。`)){o.adminUserBusy=!0,o.adminUserError="";try{const n=await be("/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 Et(c,n.status);J("普通用户已删除"),await $s()}catch(n){o.adminUserError=rt(n,"删除用户失败")}finally{o.adminUserBusy=!1}}}async function Mu(e){const n=typeof e=="object"?e:{sessionId:e},c=n.sessionId,u=_,p=I,v=Ve.adminOwnerUsername;if(i.value&&n.ownerUsername&&(Ve.adminOwnerUsername=n.ownerUsername,sessionStorage.setItem(Xn,n.ownerUsername)),o.pendingResumeSessionId=c,o.sessionResumeLoading=!0,await ua(c))o.activePanel="chat",J(i.value?`已打开 ${n.ownerUsername} 的会话`:"已打开会话");else{Ve.adminOwnerUsername=v,v?sessionStorage.setItem(Xn,v):sessionStorage.removeItem(Xn);const O=await da(u,p);J(O?"打开会话失败,已恢复原会话":"打开会话失败,运行时连接已断开")}o.sessionResumeLoading=!1,o.pendingResumeSessionId=""}async function Ur(){try{const e=await be(z("/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?cr:"",o.cpaConfig.loaded=!0),o.cpaConfig.hasPassword=!!n.config.hasPassword)}catch{o.cpaQuotas=[],o.cpaQuotaIndex=0}}async function Di(){try{const e=await be(z("/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 Os(){if(i.value)return;Ms();const e=_,n=I;if(oo(),_=q(),I="",x=!0,sessionStorage.setItem(y,_),sessionStorage.removeItem(E),o.sessionResumeLoading=!0,o.pendingResumeSessionId="",await Ln({silent:!0}))o.activePanel="chat",J("已创建新会话"),Es();else{const u=await da(e,n);J(u?"新建会话失败,已恢复原会话":"新建会话失败,运行时连接已断开")}o.sessionResumeLoading=!1}function Br(e){var n;return!!e&&String(((n=o.session)==null?void 0:n.sessionId)||"")===String(e)}function zr(e){return o.runningSessionIds.includes(e)}async function Ru(e){const n=o.sessions.find(u=>u.sessionId===e);if(Br(e)){J(w.SESSION_ACTIVE);return}if(zr(e)){J(w.SESSION_RUNNING);return}if(await Un({title:"删除会话?",message:`“${(n==null?void 0:n.title)||e||"这个会话"}”删除后无法恢复。`,confirmLabel:"确认删除",tone:"danger"}))try{await Ee("/api/sessions/delete",{sessionId:e}),await Ls(),J("会话已删除")}catch(u){We(u,"删除会话失败")}}async function zn(e){if(!l.value)return;o.activePanel="settings",o.settingsPage="";const n=e?`?provider=${encodeURIComponent(e)}`:"";try{const c=await be(z(`/api/login${n}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw Et(u,c.status);o.login=u,je.value=u.provider,Object.keys(et).forEach(p=>delete et[p]),Object.assign(et,u.values||{}),await Promise.all([Ur(),Ss(),zc()])}catch(c){We(c,"加载模型配置失败")}}async function Pi(e){J(e!=null&&e.deferred?"已保存,下一轮生效":"提示词已保存"),await $n()}async function Nu(){await zn(je.value)}async function Ui(){var u;if(!l.value)return;const[e,n]=await Promise.allSettled([Ee("/api/login",{provider:je.value,values:{...et}}),Ee("/api/cpa-config",{url:o.cpaConfig.url,password:o.cpaConfig.password===cr?"":o.cpaConfig.password,preservePassword:o.cpaConfig.hasPassword&&(!o.cpaConfig.password||o.cpaConfig.password===cr)})]);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?cr:""}if(e.status==="fulfilled"&&n.status==="fulfilled"){J("模型配置已保存");return}const c=[];e.status==="rejected"&&c.push(rt(e.reason,"模型配置保存失败")),n.status==="rejected"&&c.push(rt(n.reason,"CPA 配置保存失败")),J(c.join(";"))}function Fr(e){const n=Number.parseFloat(String(e??"").replace("%",""));return Number.isFinite(n)?Math.max(0,Math.min(100,n)):0}function Bi(e){const n=Number.parseFloat(String(e??"").replace("%",""));if(!Number.isFinite(n))return"—";const c=Fr(n);return`${c.toFixed(c%1?1:0)}%`}function zi(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 Fi(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 Hi(e){const n=o.cpaQuotas.length;n<2||(o.cpaQuotaIndex=(o.cpaQuotaIndex+e+n)%n)}function Lu(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 Ds(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 $u(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 Ou(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 Du(e){const n=_s.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)));ct.value=n===1?0:Math.round(u*(n-1))}function ji(){ct.value=-1}async function Ee(e,n,c=!1){const u=await be(c?e:z(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 Et(p,u.status);return p}class Pu extends Error{constructor(n,c=""){super(n),this.name="ActionRequestError",this.code=c}}function Et(e,n){const c=String((e==null?void 0:e.errorCode)||(n===404?"API_NOT_FOUND":""));return new Pu((e==null?void 0:e.error)||`请求失败(${n})`,c)}function rt(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 We(e,n){J(rt(e,n))}function Vt(e){const n=Vd(Kd(Wd(e.text||"")));return e.kind==="system"||e.kind==="meta"?Uu(n):n}function Uu(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 Zt(e){var n;if(e.kind==="tool"||e.toolName){const c=Qt(e);return(n=e==null?void 0:e.toolPresentation)!=null&&n.label?String(e.toolPresentation.label):Fn(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 Qt(e){return String((e==null?void 0:e.toolName)||"tool").trim()||"tool"}function Fn(e){return(e==null?void 0:e.kind)==="tool"&&Qt(e)==="plan_update"}function Bu(e){return Fn(e)||dt(e)||fn(e).length>0}function Hr(e){return(e==null?void 0:e.kind)==="meta"&&String((e==null?void 0:e.title)||"")==="提示词用法"}function Hn(e){return!!(e!=null&&e.compaction&&typeof e.compaction=="object")}function zu(e){var n;return(n=e==null?void 0:e.compaction)!=null&&n.modelDriven?"模型生成摘要":"确定性摘要"}function un(e){Hn(e)&&(o.compactionDetailLineId=e.id,document.body.classList.add("runtime-context-open"))}function Ps(){o.compactionDetailLineId=void 0,!o.runtimeContextModal&&!o.runtimeContextDetail&&!o.projectContextOpen&&document.body.classList.remove("runtime-context-open")}function jn(e){return((e==null?void 0:e.kind)==="tool"||(e==null?void 0:e.kind)==="error"&&(e==null?void 0:e.toolName))&&!Bu(e)}function jr(e){return(e==null?void 0:e.kind)==="tool-group"&&Array.isArray(e.lines)}function Fu(e){return!e||e.presentationLevel==="primary"||Hr(e)||e.kind==="user"||e.kind==="assistant"?!0:dt(e)}function Hu(e){return!e||Fu(e)?!1:["thinking","tool","error","meta","system","agent"].includes(String(e.kind||"system"))}function ju(e){const n=[];let c=[];const u=()=>{if(!c.length)return;const p=c.some(v=>(v==null?void 0:v.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(v=>(v==null?void 0:v.live)===!0)}),c=[]};for(const p of e||[])Hu(p)?c.push(p):(u(),n.push(p));return u(),n}function dn(e){return o.expandedToolGroups[e==null?void 0:e.id]===!0}function Gu(e,n){if(jr(e))return Da(n,()=>{o.expandedToolGroups[e.id]=!dn(e)})}function Gi(e){const n=new Map;for(const u of(e==null?void 0:e.lines)||[]){const p=(u==null?void 0:u.kind)==="thinking"?"思考":Zt(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 Gr(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 qi;function Wi(e,n){Ut(e)&&(qi=document.activeElement,o.toolDetailLineId=e.id,document.body.classList.add("tool-detail-open"),nt(()=>{var c;return(c=document.querySelector(".tool-result-modal-close"))==null?void 0:c.focus()}))}function qu(e){return pn(bn.parse(String(e??"")))}function gn(){o.toolDetailLineId=void 0,document.body.classList.remove("tool-detail-open");const e=qi;nt(()=>{e!=null&&e.isConnected&&e.focus()})}function Wu(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 Ki(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(),Ku(c,n.alt))}async function Vi(e){const n=e.target instanceof Element?e.target.closest('a[data-resource-download="true"]'):null;if(!(n instanceof HTMLAnchorElement))return;if(e.preventDefault(),e.stopPropagation(),Wo()){try{await Ag(n.href,{fetch:be})}catch(u){J(u instanceof Error?u.message:String(u||"无法打开所在文件夹"))}return}const c=Number(n.dataset.resourceExpiresAt);if(Number.isFinite(c)&&c>0&&Date.now()>=c){J("下载链接已过期,请重新生成");return}try{const u=await be(n.href);if(!u.ok){J(u.status===404||u.status===410?"下载链接已过期,请重新生成":`下载失败(${u.status})`);return}const p=URL.createObjectURL(await u.blob()),v=document.createElement("a");v.href=p,v.download=n.download||"download",document.body.appendChild(v),v.click(),v.remove(),setTimeout(()=>URL.revokeObjectURL(p),3e4)}catch{J("下载失败,请稍后重试")}}function Ku(e,n=""){o.imagePreview={src:String(e||""),caption:String(n||"").trim()},document.body.classList.add("image-preview-open")}function qr(){o.imagePreview=void 0,document.body.classList.remove("image-preview-open")}function Ot(e){return Xh(e)}function Zi(e){return Zu(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 Dt(e){var n;return Array.isArray((n=e==null?void 0:e.toolStream)==null?void 0:n.steps)?e.toolStream.steps:[]}function Pt(e){return Qt(e)==="subagent_run"}function Us(e){return["file_write","file_edit","write_file","edit_file"].includes(Qt(e).toLowerCase())}function Wr(e){const n=Qt(e).toLowerCase();return n==="terminal_run"||n==="terminal_control"}function Yi(e){var n;return Array.isArray((n=e==null?void 0:e.toolDisplay)==null?void 0:n.previews)&&e.toolDisplay.previews.length>0&&(!Qt(e).startsWith("subagent_")||Qt(e)==="subagent_message")&&!(Wr(e)&&(e==null?void 0:e.live)===!0&&Vu(e))}function Gn(e){var v,T,O,j;const n=Array.isArray((v=e==null?void 0:e.toolStream)==null?void 0:v.chunks)?e.toolStream.chunks:[];if(n.length)return n.map(B=>String((B==null?void 0:B.text)||"")).join("").trimEnd();const c=String(((T=e==null?void 0:e.toolStream)==null?void 0:T.stdout)||""),u=String(((O=e==null?void 0:e.toolStream)==null?void 0:O.stderr)||""),p=String(((j=e==null?void 0:e.toolStream)==null?void 0:j.output)||"");return[c,u,p].filter(Boolean).join(`
|
|
96
|
+
`).trimEnd()}function qn(e){var u,p,v;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)||((v=e==null?void 0:e.toolDisplay)==null?void 0:v.subject)||"").trim();return n&&n!==c?n:""}function Xi(e){return Dt(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 Bs(e){const n=new Map;for(const c of Dt(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 Ji(e){return Dt(e).flatMap((n,c)=>{const u=String((n==null?void 0:n.message)||"").trim();return u?[{key:`${n.key}:${c}`,purpose:u}]:[]})}function zs(e){return o.expandedToolGroups[`agent:${e==null?void 0:e.id}`]===!0}function ea(e,n){return Da(n,()=>{const c=`agent:${e==null?void 0:e.id}`;o.expandedToolGroups[c]=!o.expandedToolGroups[c]})}function Vu(e){return!!(qn(e)||Dt(e).length||Gn(e))}function Fs(e){var p,v,T;const n=Number((p=e==null?void 0:e.toolStream)==null?void 0:p.current),c=Number((v=e==null?void 0:e.toolStream)==null?void 0:v.total);if(!Number.isFinite(n))return"";const u=String(((T=e==null?void 0:e.toolStream)==null?void 0:T.unit)||"").trim();return Number.isFinite(c)&&c>0?`${n}/${c}${u?` ${u}`:""}`:`${n}${u?` ${u}`:""}`}function Zu(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,v=String((p==null?void 0:p.purpose)||(p==null?void 0:p.subject)||(e==null?void 0:e.bodyTitle)||"").trim();return{status:u,summary:v}}function Qu(e,n){const c=String(e||"").replace(/\s+/g," ").trim();return c.length>n?`${c.slice(0,n)}…`:c}function dt(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.toolName)||"").toLowerCase()==="image_create"}function Yu(e){return(e==null?void 0:e.live)&&dt(e)}function ta(e){return dt(e)&&(e==null?void 0:e.pendingReplacement)===!0}function Xu(e){var c,u;if(er(e)&&!dt(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=Ta(e);return Yd(n)?String((u=Xd(n))==null?void 0:u.id)!==String(e==null?void 0:e.id):!Vt(e)&&Ys(e).length===0&&Qs(e==null?void 0:e.text).length===0}function na(e){const n=performance.now();o.coreToolTimings=_l(e==null?void 0:e.toolTimings,n),o.coreQueryTiming=_l(e!=null&&e.queryTiming?[e.queryTiming]:[],n)[0],o.timingTick=n}function Tt(e){if(!(e!=null&&e.toolUseId))return"";const n=o.coreToolTimings.find(u=>{var p;return u.id===((p=e.timing)==null?void 0:p.id)})??e.timing;if((n==null?void 0:n.status)==="queued")return"排队中";const c=Co(n,o.timingTick,o.connected);return c===void 0?"":Mt(c)}function Kr(){var n,c,u,p,v,T,O,j,B;const e=(c=(n=o.status)==null?void 0:n.metrics)==null?void 0:c.contextUsageRatio;Vr("context",e===void 0?0:e*100),Vr("inputTokens",Number(((p=(u=o.status)==null?void 0:u.usage)==null?void 0:p.inputTokens)??((T=(v=o.status)==null?void 0:v.metrics)==null?void 0:T.estimatedInputTokens)??0)),Vr("outputTokens",Number(((j=(O=o.status)==null?void 0:O.usage)==null?void 0:j.outputTokens)??((B=o.status)==null?void 0:B.streamedOutputTokens)??0))}function Vr(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(tt)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)),v=Math.sin(Date.now()/90)*Math.min(Math.abs(u)*.018,c.target*.006+1);c.display+=u*p+v,c.display<0&&(c.display=0),n=!0}n?tt=requestAnimationFrame(e):tt=0};tt=requestAnimationFrame(e)}function Zr(e){return`bump-${o.composerMetrics[e].bump%2}`}function ed(e=[]){return new Map(e.map(n=>[String(n.taskId||n.agentId||n.description||n.type),n.status]))}function Yt(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 Hs(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 js(e){const n=Hs(e);return n.length>72?`${n.slice(0,72)}…`:n}function sa(e){if((e==null?void 0:e.kind)==="terminal")return e.status!=="running"?Number.isFinite(e.durationMs)&&e.durationMs>=0?Mt(e.durationMs):"":Number.isFinite(e.createdAt)&&e.createdAt<=o.clockTick?Mt(o.clockTick-e.createdAt):"";if((e==null?void 0:e.kind)==="agent"){const p=Yh(e,o.clockTick);return p===void 0?"":Mt(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?"":Mt((e!=null&&e.completedAt?Date.parse(e.completedAt):o.clockTick)-u)}function ra(e){return String((e==null?void 0:e.prompt)||(e==null?void 0:e.command)||"").trim()}function Qr(e){o.backgroundTaskDetail={...e},document.body.classList.add("tool-detail-open")}function Gs(){o.backgroundTaskDetail=void 0,document.body.classList.remove("tool-detail-open")}function td(e="ready"){return{ready:"就绪",running:"运行中",preparing:"准备中",calling_model:"调用模型",thinking:"推理中",running_tools:"调用工具",injecting_context:"注入上下文",compacting:"压缩上下文",stopped:"已停止",error:"出错"}[e]||e}function Yr(e){return{pending:"排队中",running:"运行中",completed:"已完成",failed:"失败",killed:"已停止",stopped:"已停止",exited:"已退出",lost:"已失联",unknown:"未提供"}[e]||(e?"未知状态":"未提供")}function Xr(e){return f[e]||e}function nd(e){return(e||[]).map(n=>({value:n,label:h[n]||n}))}function sd(e){return((e==null?void 0:e.options)||[]).map(n=>({value:n,label:n||"默认"}))}function rd(e){return!["ansi","plain","diff"].includes(e.format)&&(Hr(e)||["assistant","thinking","system","tool"].includes(e.kind))}function od(e){return JSON.stringify((e==null?void 0:e.inputSchema)||{},null,2)}function Jr(e){Ve.isolation&&e==="prompt"||(o.runtimeContextModal=e,o.runtimeContextDetail=void 0,document.body.classList.add("runtime-context-open"),e==="plugins"&&Or(),e==="tools"&&xs())}function eo(){o.runtimeContextDetail=void 0,o.runtimeContextModal="",document.body.classList.remove("runtime-context-open")}function to(){o.runtimeContextDetail=void 0}function id(){o.projectContextOpen=!0,o.projectContextDocument=void 0,document.body.classList.add("runtime-context-open")}function ad(e){o.projectContextDocument=e}function no(){if(o.projectContextDocument){o.projectContextDocument=void 0;return}o.projectContextOpen=!1,document.body.classList.remove("runtime-context-open")}async function ld(){o.cwdPicker.open=!0,o.cwdPicker.input=o.cwd||"",o.cwdPicker.selectionExplicit=!1,o.cwdPicker.error="",document.body.classList.add("cwd-picker-lock"),await Ws(o.cwd)}function qs(){o.cwdPicker.mutating||(o.cwdPicker.open=!1,o.cwdPicker.error="",document.body.classList.remove("cwd-picker-lock"))}async function Ws(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 be(z(`${n.pathname}${n.search}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw Et(u,c.status);so(u)}catch(n){o.cwdPicker.error=rt(n,"无法打开路径")}finally{o.cwdPicker.loading=!1}}function cd(e){return String(e||"").replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean).at(-1)||String(e||"")}function so(e){const n=String(e.cwd||""),c={name:cd(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 ud(e){const n=new URL("/api/cwd",window.location.origin);n.searchParams.set("path",e);const c=await be(z(`${n.pathname}${n.search}`)),u=await c.json().catch(()=>({}));if(!c.ok||u!=null&&u.error||(u==null?void 0:u.ok)===!1)throw Et(u,c.status);return Array.isArray(u.locations)&&(o.cwdPicker.locations=u.locations),u}async function dd(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 ud(n);o.cwdPicker.treeChildren={...o.cwdPicker.treeChildren,[n]:c.entries||[]}}o.cwdPicker.treeExpanded={...o.cwdPicker.treeExpanded,[n]:!0}}catch(c){o.cwdPicker.error=rt(c,"无法展开路径")}}function gd(e){o.cwdPicker.selectedPath=e.path,o.cwdPicker.selectionExplicit=!0,o.cwdPicker.input=e.path}async function fd(){const e=String(o.cwdPicker.input||"").trim();if(e){o.cwdPicker.mutating=!0,o.cwdPicker.error="";try{const n=await Ee("/api/cwd/create",{path:e});so(n)}catch(n){o.cwdPicker.error=rt(n,"新建失败")}finally{o.cwdPicker.mutating=!1}}}async function pd(e){if(await Un({title:"删除文件夹?",message:e.path,confirmLabel:"删除",tone:"danger"})){o.cwdPicker.mutating=!0;try{const c=await Ee("/api/cwd/delete",{path:e.path});so(c)}catch(c){o.cwdPicker.error=rt(c,"删除失败")}finally{o.cwdPicker.mutating=!1}}}async function hd(){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 Ee("/api/cwd/change",{path:e});o.cwd=n.cwd||e,o.cwdPicker.open=!1,document.body.classList.remove("cwd-picker-lock"),await $n(),J(n.unchanged?"工作目录未变":"工作目录已切换")}catch(n){o.cwdPicker.error=rt(n,"切换失败")}finally{o.cwdPicker.mutating=!1}}}function md(e){e&&(o.runtimeContextDetail={kind:"tool",title:e.name,meta:e.strict?"严格模式":"兼容模式",description:e.description||"",schema:od(e)})}function Ks(e){if(Fn(e))return kd(e);if(Ut(e))return lo(e);if(fn(e).length)return pa(e);if(wd(e))return Ed(e);if(_d(e))return xd(e);const n=Vt(e),c=ha(e),u=c.map(O=>`${O.kind}:${O.reference||""}:${O.url}:${O.label||O.downloadName||""}:${O.expiresAt||""}`).join("|"),p=[e.id,e.kind,e.format,e.title,e.titleStatus,e.live?"1":"0",u,n].join(""),v=_t.get(p);if(v!==void 0)return v;let T;return e.format==="diff"?T=la(n):e.format==="ansi"||!rd(e)?T=Ua(Te(nr(n))):T=Cd(pn(bn.parse(n||""),c.map(ma)),c),_t.set(p,T),T}function bd(e){if(!e)return"";if(dt(e))return Dd(e);const n=Vt(e);if(e.format==="diff"||/(?:^|\n)---\s+.+\n\+\+\+\s+/.test(n))return la(n);if(e.format==="ansi")return`<pre class="tool-detail-pre">${Te(nr(n))}</pre>`;const c=ao(n);if(c){const u=JSON.stringify(c,null,2);return pn(bn.parse(`\`\`\`json
|
|
98
|
+
${u}
|
|
99
|
+
\`\`\``))}return`<pre class="tool-detail-pre">${Te(nr(n))}</pre>`}function kd(e){const n=yd(e),c=Array.isArray(n==null?void 0:n.items)?n.items:[];if(!n||!c.length)return pn(bn.parse(Vt(e)||""));const u=ia(c),p=Number.isFinite(Number(n.completed))?Number(n.completed):u.completed,v=Number.isFinite(Number(n.total))?Number(n.total):u.total,T=Te(n.title||"任务计划"),O=oa(c);return`<section class="plan-card"><div class="plan-card-head"><strong>${T}</strong><span class="plan-progress-label">${p} / ${v}</span></div><ol class="plan-items">${O}</ol></section>`}function oa(e,n=0){return e.map((c,u)=>{const p=aa(c==null?void 0:c.status),v=p==="completed"?"✓":p==="in_progress"?"●":p==="failed"?"!":String(u+1),T=Array.isArray(c==null?void 0:c.subitems)?c.subitems:[],O=T.length?`<ol class="plan-subitems" aria-label="${Te((c==null?void 0:c.description)||`步骤 ${u+1}`)}的子步骤">${oa(T,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="${vd(p)}">${v}</span><span class="plan-item-text">${Te((c==null?void 0:c.description)||`步骤 ${u+1}`)}</span></div>${O}</li>`}).join("")}function ia(e){return e.reduce((n,c)=>{if(n.total+=1,aa(c==null?void 0:c.status)==="completed"&&(n.completed+=1),Array.isArray(c==null?void 0:c.subitems)&&c.subitems.length){const u=ia(c.subitems);n.total+=u.total,n.completed+=u.completed}return n},{total:0,completed:0})}function yd(e){const n=String((e==null?void 0:e.text)||""),c=ao(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(B=>B.trim()).filter(Boolean),v=/^(\d+)\s*\/\s*(\d+)\s+completed/i.exec(p[0]||""),O=p.filter(B=>/^[-*]\s+/.test(B)).map(B=>{let ge=B.replace(/^[-*]\s+/,"").trim(),Ie="pending";return/^~~[\s\S]+~~$/.test(ge)?(Ie="completed",ge=ge.slice(2,-2).trim()):/^[▶►●]\s*/.test(ge)?(Ie="in_progress",ge=ge.replace(/^[▶►●]\s*/,"").trim()):/^[!✗×]\s*/.test(ge)&&(Ie="failed",ge=ge.replace(/^[!✗×]\s*/,"").trim()),{description:ge,status:Ie}});return{title:"当前执行计划",note:p.slice(v?1:0).filter(B=>!/^[-*]\s+/.test(B)).join(" "),items:O,completed:v?Number(v[1]):O.filter(B=>B.status==="completed").length,total:v?Number(v[2]):O.length}}function aa(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 vd(e){return{completed:"已完成",in_progress:"进行中",failed:"失败",pending:"待处理"}[e]||"待处理"}function la(e){return`<pre class="diff-block">${Te(e)}</pre>`}function Ut(e){return dt(e)&&/\b(ok|failed|generated|edited|image\s+(?:generate|edit)\s+failed)\b/i.test(String((e==null?void 0:e.text)||""))}function wd(e){const n=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&n==="image_note"}function _d(e){const n=String((e==null?void 0:e.title)||"").toLowerCase();return(e==null?void 0:e.kind)==="tool"&&n==="skill_read"}function xd(e){return pn(bn.parse(`技能${Sd((e==null?void 0:e.text)||"")}`))}function Sd(e){var p,v,T;const n=String(e||""),c=((p=/\bname:\s*([^\s]+)/i.exec(n))==null?void 0:p[1])||((v=/(?:^|\s)skill:\s*([^\s]+)/i.exec(n))==null?void 0:v[1])||((T=/(?:^|\s)id:\s*([^\s]+)/i.exec(n))==null?void 0:T[1]),u=String(c||"").trim();return u||""}function Ed(e){return pn(bn.parse(`图片记录${Td((e==null?void 0:e.text)||"")}`))}function Td(e){const n=Id(e);return n?` ${n}`:""}function Id(e){var O,j,B,ge,Ie;const n=String(e||""),c=(O=/(?:^|\s)(?:storagePath|path|file|filename):\s*([^\s]+\.(?:png|jpe?g|webp|gif|bmp|avif|txt))/i.exec(n))==null?void 0:O[1],u=c?ro(c.split(/[\\/]/).pop()||""):"";if(u)return u;const p=(j=/(?:^|\s)imageRef:\s*([^\s]+)/i.exec(n))==null?void 0:j[1],v=ro(p||"");if(v)return v;const T=((B=/(?:^|\s)tags:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(n))==null?void 0:B[1])||((ge=/(?:^|\s)detectedText:\s*(?:[-*]\s*)?([^\n\r,,]+)/i.exec(n))==null?void 0:ge[1])||((Ie=/(?:^|\s)caption:\s*([^.,,。;\n\r]{2,24})/i.exec(n))==null?void 0:Ie[1]);return ro(T||"")}function ro(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 ca(){if(!($||!I)){$=!0;try{if(!await ua(I))throw new Error("无法重新绑定目标会话")}catch(e){J(`会话恢复失败:${e.message||e}`)}finally{$=!1}}}async function ua(e){var u;const n=String(e||"").trim();return!n||(n!==I&&Ms(),oo(),I=n,x=!1,sessionStorage.setItem(E,n),!await Ln({silent:!0})||String(((u=o.session)==null?void 0:u.sessionId)||"")!==n)?!1:(Es(),!0)}async function da(e,n){Ms(),oo(),_=e,I=n,x=!n,sessionStorage.setItem(y,e),n?sessionStorage.setItem(E,n):sessionStorage.removeItem(E);const c=await Ln({silent:!0});return c&&Es(),c}function oo(){Me&&Me.close(),Me=void 0,qe&&cancelAnimationFrame(qe),qe=0,Ts(),te=void 0,Rt=!1,o.connected=!1,o.connecting=!0}function fn(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 io(e){return fn(e).filter(n=>n.kind==="embed")}function ga(e){return fn(e).filter(n=>n.kind!=="embed")}function Ad(e){const n=new URL(e.url,window.location.origin);return n.searchParams.set("theme",le.value),n.origin===window.location.origin?it(`${n.pathname}${n.search}${n.hash}`):n.href}function fa(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 pa(e){const n=ga(e);return n.length?`<div class="resource-result"><div class="resource-grid">${n.map((u,p)=>{const v=Te(u.label||u.downloadName||`资源 ${p+1}`),T=Te(it(u.url)),O=u.sizeBytes?fo(u.sizeBytes):"",j=u.expiresAt?Rd(u.expiresAt):"",B=[O,j].filter(Boolean).join(" · "),ge=u.kind==="download"||u.downloadName,Ie=ge?"下载":"打开",Bt=ge?` download="${Te(u.downloadName||u.label||"")}"`:' target="_blank" rel="noreferrer noopener"';if(ge){const k=Te(O.replace(/\s+/g,"")),A=Number(u.expiresAt)||0;return`<a class="resource-file-link" title="${Te(Do(u.label||u.downloadName))}" href="${T}"${Bt} data-resource-download="true" data-resource-expires-at="${A}"><span class="resource-file-name">${v}</span>${k?`<span class="resource-file-size">(${k})</span>`:""}</a>`}return`<a class="resource-card resource-${Te(u.kind||"link")}" href="${T}"${Bt}><span class="resource-icon" aria-hidden="true"></span><span class="resource-main"><strong>${v}</strong><span>${Te(B||(ge?"文件已就绪":"资源已就绪"))}</span></span><span class="resource-action"><span>${Ie}</span><i aria-hidden="true">${ge?"↓":"↗"}</i></span></a>`}).join("")}</div></div>`:Ua(Te(nr(Vt(e))))}function ha(e){if((e==null?void 0:e.kind)!=="assistant")return[];const n=o.lines||[],c=n.findIndex(T=>String(T==null?void 0:T.id)===String(e==null?void 0:e.id)),u=c>=0?c:n.length,p=[],v=new Set;for(let T=0;T<u;T+=1){const O=n[T];if(!(O!=null&&O.live))for(const j of fn(O))v.has(j.url)||(v.add(j.url),p.push(j))}return p}function Cd(e,n){if(!n.length)return e;const c=new Map(n.map(p=>[ma(p),p]).filter(([p])=>p)),u=document.createElement("template");u.innerHTML=String(e||"");for(const p of u.content.querySelectorAll("a[href]")){const v=p.getAttribute("href")||"",T=c.get(v);T&&(p.classList.add("inline-resource-link",`inline-resource-${T.kind||"link"}`),p.setAttribute("href",it(T.url)),(T.kind==="download"||T.downloadName)&&(p.setAttribute("download",T.downloadName||T.label||""),p.removeAttribute("target"),p.removeAttribute("rel"),p.setAttribute("title",Do(T.label||T.downloadName)),p.dataset.resourceDownload="true",p.dataset.resourceExpiresAt=String(Number(T.expiresAt)||0),T.sizeBytes&&(p.dataset.resourceSize=`(${fo(T.sizeBytes).replace(/\s+/g,"")})`)))}return u.innerHTML}function ma(e){return String((e==null?void 0:e.reference)||"").trim()}function ao(e){const n=String(e||"");if(!n.includes("{"))return null;const c=Md(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 Md(e){const n=[],c=[];let u=!1,p=!1;for(let v=0;v<e.length;v+=1){const T=e[v];if(u){p?p=!1:T==="\\"?p=!0:T==='"'?u=!1:(T===`
|
|
100
|
+
`||T==="\r")&&(u=!1,p=!1);continue}if(c.length&&T==='"'){u=!0;continue}if(T==="{"){c.push(v);continue}T==="}"&&c.length&&n.push({start:c.pop(),end:v})}return n}function Rd(e){const n=Number(e);if(!Number.isFinite(n))return"";const c=n-Date.now();if(c<=0)return"已过期";const u=Mt(c);return u?`${u} 后过期`:"即将过期"}function Nd(e){return Xt(e).length||Ut(e)?lo(e):Ld(e)}function Ld(e){const n=$d(e),c=n.prompt?`<div class="image2-stage-prompt"><p>${Te(Qu(n.prompt,240))}</p></div>`:"";return`<div class="image2-stage"><div class="image2-diamond-field" aria-hidden="true">${Array.from({length:11},(p,v)=>`<i class="diamond-${v+1}"></i>`).join("")}<b></b></div>${c}</div>`}function $d(e){const n=ao((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 lo(e){const n=ka(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())?"修改完成":"生成完成",v=[n.count?`${n.count} 张`:"",n.model,`请求尺寸 ${Mo(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>${Te(p)}</strong>${v.map(T=>`<span>${Te(T)}</span>`).join("")}</div></div>`}const Vs=sm(),Zs=re([]);let co=0;const ba=V(()=>{var n;const e=ut.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&&Ut(e)?Xt(e).map(c=>[c.originalDecodeUrl,c.available,hn(c)]):[]])});De(ba,async e=>{var v;const n=++co;Zs.value=[],Vs.clear();const c=((v=o.session)==null?void 0:v.sessionId)||"";Vs.setSession(c);const u=ut.value;if(!u||!Ut(u))return;const p=Xt(u);Zs.value=p.map(T=>({state:T.available?"loading":"unavailable"})),await Promise.all(p.map(async(T,O)=>{const j=await Vs.load({sessionId:c,originalUrl:T.originalDecodeUrl,available:T.available});n!==co||e!==ba.value||j.state==="stale"||(Zs.value[O]=j)}))},{immediate:!0,flush:"sync"}),jt(()=>{++co,Vs.clear()});function Od(e,n){const c=Xt(e);return c.length?c.map((u,p)=>{const v=Zs.value[p],T=Mo(n,u.available?v:{state:"unavailable"}),O=(v==null?void 0:v.state)==="loading"&&u.available?"加载中…":T.actual,j=rm(e,u),B=`<div><dt>Alpha 通道</dt><dd>${Sl(j==null?void 0:j.hasAlphaChannel)}</dd></div><div><dt>透明像素</dt><dd>${Sl(j==null?void 0:j.hasTransparentPixels)}</dd></div>`;return`<section class="image2-detail-prompt" data-original-dimensions="${p}"><span>${Te(Jt(u,p))}</span><dl class="image2-detail-grid"><div><dt>请求尺寸</dt><dd>${Te(T.requested)}</dd></div><div><dt>实际尺寸</dt><dd>${Te(O)}</dd></div>${B}</dl>${T.mismatch?"<p>实际尺寸与请求尺寸不同(保留原图)</p>":""}</section>`}).join(""):"<p>实际尺寸:未知(未提供原图资源)</p>"}function Dd(e){const n=ka((e==null?void 0:e.text)||"",e==null?void 0:e.imageResult),c=[["模型",n.model],["模式",n.mode],["请求尺寸",Mo(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(([,T])=>T),u=c.length?`<dl class="image2-detail-grid">${c.map(([T,O])=>`<div><dt>${Te(T)}</dt><dd>${Te(O)}</dd></div>`).join("")}</dl>`:"",p=n.prompt?`<section class="image2-detail-prompt"><span>调用提示词</span><p>${Te(n.prompt)}</p></section>`:'<section class="image2-detail-prompt empty"><span>调用提示词</span><p>当前历史记录未保存提示词;新执行的 image_create 调用会在这里显示。</p></section>',v=n.revisedPrompt&&n.revisedPrompt!==n.prompt?`<section class="image2-detail-prompt"><span>修订提示词</span><p>${Te(n.revisedPrompt)}</p></section>`:"";return`<div class="image2-detail-view">${u}${Od(e,n.size)}${p}${v}</div>`}function ka(e,n){const c=String(e||""),u=c.replace(/\s+/g," ").trim(),p=c.split(/\r?\n/).map(B=>B.trim()).filter(Boolean),v=/^(generated|edited)\s+(\d+)\s+images?/i.exec(p[0]||u),O=(p.find(B=>B.includes(" · "))||"").replace(/^requested:\s*/i,"").split(" · ").map(B=>B.trim()).filter(Boolean),j=Pd(u,["duration","durationMs","elapsed","elapsedMs"]);return{provider:Ye(u,"provider",["model","prompt"])||O[0]||"",model:Ye(u,"model",["prompt"])||O[1]||"",prompt:Ye(u,"prompt",["revisedPrompt","mode","semanticName","size","quality","outputFormat","background","returnedImages","startedAt","finishedAt","duration"]),mode:Ye(u,"mode",["semanticName","prompt","size","quality"]),semanticName:Ye(u,"semanticName",["prompt","size","quality","outputFormat"]),size:Ye(u,"size",["quality","outputFormat","background","returnedImages","duration"])||O.find(B=>B==="auto"||/^\d+x\d+$/i.test(B))||"",quality:Ye(u,"quality",["outputFormat","background","returnedImages","duration"])||O.find(B=>["auto","low","medium","high","xhigh","max"].includes(B.toLowerCase()))||"",outputFormat:Ye(u,"outputFormat",["background","returnedImages","images","duration"])||O.find(B=>["png","jpeg","jpg","webp"].includes(B.toLowerCase()))||"",background:Ye(u,"background",["returnedImages","images","startedAt","finishedAt","duration"]),sourceImages:Ye(u,"source images",["prompt","mode","semanticName","duration"]),count:Ye(u,"returnedImages",["images","index","duration"])||(v==null?void 0:v[2])||"",revisedPrompt:Ye(u,"revisedPrompt",["mode","semanticName","raw","created","data","b64_json","background","output_format","quality","size","usage","startedAt","finishedAt","duration"]),usage:Ye(u,"usage",["duration"]),startedAt:Ye(u,"startedAt",["finishedAt","duration"]),finishedAt:Ye(u,"finishedAt",["duration"]),duration:j===void 0?"":Mt(j),...Object.fromEntries(Object.entries(n||{}).filter(([B,ge])=>["model","size","quality","outputFormat","background","prompt","mode","semanticName"].includes(B)&&typeof ge=="string"))}}function Ye(e,n,c){var T;const u=c.length?`(?=\\s(?:${c.map(Wn).join("|")}):)`:"$",v=new RegExp(`(?:^|\\s)${Wn(n)}:\\s*([\\s\\S]*?)${u}`,"i").exec(e);return((T=v==null?void 0:v[1])==null?void 0:T.replace(/\[(?:base64 image|data URL) omitted[^\]]*\]/gi,"").trim().replace(/\s{2,}/g," "))||""}function Pd(e,n){for(const c of n){const u=new RegExp(`(?:^|\\s)${Wn(c)}:\\s*(\\d+(?:\\.\\d+)?)\\s*ms?\\b`,"i").exec(e);if(u)return Number(u[1])}}function Wn(e){return String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function pn(e,n=[]){const c=new Set(n.map(O=>String(O||"").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"]),v=document.createTreeWalker(u.content,NodeFilter.SHOW_ELEMENT),T=[];for(;v.nextNode();)T.push(v.currentNode);for(const O of T){if(!p.has(O.tagName)){O.replaceWith(document.createTextNode(O.textContent||""));continue}for(const j of Array.from(O.attributes)){const B=j.name.toLowerCase(),ge=j.value;O.tagName==="A"&&B==="href"&&(kg(ge)||c.has(ge))||O.tagName==="A"&&B==="title"||O.tagName==="CODE"&&B==="class"&&/^language-[\w-]+$/.test(ge)||O.tagName==="PRE"&&B==="data-lang"&&/^[\w-]+$/.test(ge)||O.tagName==="INPUT"&&["type","checked","disabled"].includes(B)||O.removeAttribute(j.name)}O.tagName==="A"&&!c.has(O.getAttribute("href")||"")&&(O.setAttribute("target","_blank"),O.setAttribute("rel","noreferrer noopener"))}return Ud(u.content),u.innerHTML}function Ud(e){for(const n of e.querySelectorAll("pre > code")){const c=Bd(n.className),u=n.textContent||"",p=n.parentElement;p&&c&&p.setAttribute("data-lang",c);try{const v=c&&Ae.getLanguage(c)?Ae.highlight(u,{language:c,ignoreIllegals:!0}):u.length<=2e4?Ae.highlightAuto(u):void 0;if(!v)continue;n.innerHTML=v.value,n.className=["hljs",v.language?`language-${v.language}`:c?`language-${c}`:""].filter(Boolean).join(" "),p&&v.language&&!p.hasAttribute("data-lang")&&p.setAttribute("data-lang",v.language)}catch{n.textContent=u}}}function Bd(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 zd(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Mi())}function ya(e){var n;if(e.key==="Escape"&&o.confirmDialog.open){e.preventDefault(),cn(!1);return}if(e.key==="Escape"&&o.modelModalOpen){e.preventDefault(),Bn();return}if(e.key==="Escape"&&o.contextWindowModalOpen){e.preventDefault(),Ns();return}if(e.key==="Escape"&&o.compactionDetailLineId!==void 0){e.preventDefault(),Ps();return}if(e.key==="Escape"&&o.backgroundTaskDetail){e.preventDefault(),Gs();return}if(e.key==="Escape"&&o.projectContextOpen){e.preventDefault(),no();return}if(e.key==="Escape"&&o.cwdPicker.open){e.preventDefault(),qs();return}if(e.key==="Escape"&&o.runtimeContextDetail){e.preventDefault(),to();return}if(e.key==="Escape"&&o.runtimeContextModal){e.preventDefault(),eo();return}if(e.key==="Escape"&&o.imagePreview){e.preventDefault(),qr();return}if(e.key==="Escape"&&o.toolDetailLineId!==void 0){e.preventDefault(),gn();return}(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),(n=H.value)==null||n.focus()),(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()==="c"&&!oe.value&&Ri()}function Fd(){var e;try{const n=localStorage.getItem(El);if(n==="light"||n==="dark")return n}catch{}return(e=window.matchMedia)!=null&&e.call(window,"(prefers-color-scheme: dark)").matches?"dark":"light"}function Hd(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(El,e)}catch{}}function va(){le.value=le.value==="dark"?"light":"dark"}async function jd(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 v=++o.attachmentCounter,T=`[img#${v}]`,O=await Ra(p);O.compressionRate>0&&c.push(O.compressionRate),o.attachments.push({kind:"image",imageId:_a(),label:T,mimeType:O.mimeType,data:O.data,previewUrl:O.previewUrl,name:p.name||`图片 ${v}`})}J(`已添加 ${n.length} 张图片附件`),c.length&&setTimeout(()=>J($a(c)),0)}function Gd(){var e;(e=ne.value)==null||e.click()}async function qd(e){var c;const n=Array.from(((c=e==null?void 0:e.target)==null?void 0:c.files)||[]);n.length&&(await wa(n),e!=null&&e.target&&(e.target.value=""))}async function wa(e){var u;if(!e.length||o.uploadingFiles)return;o.uploadingFiles=!0;const n=em(e,p=>{o.uploadProgress=p}),c=z("/api/uploads");try{const p=[],v=[];for(const[T,O]of e.entries()){if(O.type.startsWith("image/")){const B=await Ra(O,Ie=>n.update(T,Ie*.9)),ge=`[img#${++o.attachmentCounter}]`;B.compressionRate>0&&v.push(B.compressionRate),p.push({kind:"image",imageId:_a(),label:ge,name:O.name||ge,mimeType:B.mimeType,data:B.data,previewUrl:B.previewUrl}),n.complete(T);continue}const j=await tm(c,O,B=>n.update(T,B));if(!((u=j==null?void 0:j.file)!=null&&u.absolutePath))throw new Error("upload response missing path");p.push({kind:"file",label:`[file#${++o.attachmentCounter}]`,name:j.file.name||O.name||`附件 ${o.attachmentCounter}`,mimeType:j.file.mimeType||O.type||"application/octet-stream",size:Number(j.file.size||O.size||0),absolutePath:j.file.absolutePath,relativePath:j.file.relativePath||""}),n.complete(T)}o.attachments.push(...p),n.succeed(),v.length&&setTimeout(()=>J($a(v)),0),J(`已上传 ${p.length} 个附件`)}catch(p){n.fail(),J(p.message||String(p))}finally{o.uploadingFiles=!1,o.uploadProgress=0}}function _a(){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 xa(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 Wd(e){return String(e).replace(/\s*\[img#\d+\]\s*/g," ").replace(/[ \t]{2,}/g," ").trim()}function Kd(e){return String(e).replace(G0,"").replace(q0,"").replace(W0,"").replace(/[ \t]{2,}/g," ").trim()}function Vd(e){return String(e||"").replace(new RegExp(`${Wn(K0)}[\\s\\S]*?${Wn(V0)}`,"g"),"").replace(/[ \t]{2,}/g," ").replace(/\n{3,}/g,`
|
|
103
|
+
|
|
104
|
+
`).trim()}function Qs(e){return Array.from(new Set(String(e||"").match(/\[img#\d+\]/g)||[]))}function Sa(e){var u;const n=String(((u=o.session)==null?void 0:u.sessionId)||I||""),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}));Ea(c)}function Zd(e){const n=[];for(const c of e||[])Xs(c,n);Ea(n.map(uo).filter(Boolean))}function hn(e){var c;const n=String((e==null?void 0:e.sessionId)||((c=o.session)==null?void 0:c.sessionId)||I||"");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 Ea(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)||I||"")}}),c=new Set(n.map(hn).filter(Boolean));o.messageImagePreviews=[...o.messageImagePreviews.filter(u=>{const p=hn(u);return!p||!c.has(p)}),...n].slice(-200)}function Xt(e){var u;if(dt(e))return Qd(e);const n=(e==null?void 0:e.kind)==="user"?Ta(e):[e],c=[];for(const p of n){c.push(...Ys(p));for(const v of Qs(p==null?void 0:p.text)){const T=String(((u=o.session)==null?void 0:u.sessionId)||I||""),O=o.messageImagePreviews.filter(B=>B.sessionId===T&&B.label===v),j=String((p==null?void 0:p.messageId)||"").startsWith("web-user-")?[...O].reverse().find(B=>B.pending):O.length===1?O[0]:void 0;j&&c.push(j)}}return go(c)}function Qd(e){const n=[];Xs(e,n);for(const c of Jd(e))Xs(c,n);return go(n.map(uo).filter(Boolean))}function Ys(e){const n=[];return Xs(e,n),go(n.map(c=>uo(c)).filter(Boolean))}function Ta(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 Yd(e){return e.some(n=>Ys(n).length>0||Qs(n==null?void 0:n.text).length>0)}function Xd(e){return e.find(n=>Vt(n))||e.find(n=>Ys(n).length>0||Qs(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(v=>er(v)&&String((v==null?void 0:v.parentToolUseId)||"")===c);const u=n.findIndex(v=>(v==null?void 0:v.id)===(e==null?void 0:e.id));if(u<0)return[];const p=[];for(let v=u+1;v<n.length;v+=1){const T=n[v];if(er(T)&&!dt(T)){p.push(T);continue}if((T==null?void 0:T.kind)==="tool"||(T==null?void 0:T.kind)==="user"||(T==null?void 0:T.kind)==="assistant"&&String((T==null?void 0:T.text)||"").trim())break}return p}function Xs(e,n){if(!e||typeof e!="object")return;const c=p=>{var v;return n.push({...p,messageId:p.messageId||e.messageId,sessionId:p.sessionId||((v=o.session)==null?void 0:v.sessionId)||I||""})},u=[e.images,e.imageAttachments,e.attachments,e.thumbnails];for(const p of u)if(Array.isArray(p))for(const v of p)!v||v.kind&&v.kind!=="image"||v.type&&v.type!=="image"||c(v);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 uo(e){var v,T,O,j,B;if(!e||typeof e!="object")return;const n=e.mimeType||((v=e.thumbnail)==null?void 0:v.mimeType)||((T=e.original)==null?void 0:T.mimeType)||"image/png",c=e.thumbnailSrc||((O=e.thumbnail)==null?void 0:O.src)||e.previewUrl||e.src||e.originalSrc||((j=e.original)==null?void 0:j.src)||e.originalUrl||Js(e.data,n);if(!c&&e.available!==!1)return;const u=c?ko(c):"",p=Ro(e,Js(e.data,n))||e.src||e.previewUrl||c;return{sessionId:String(e.sessionId||((B=o.session)==null?void 0:B.sessionId)||I||""),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?ko(p):"",originalDecodeUrl:Ro(e,Js(e.data,n))?ko(Ro(e,Js(e.data,n))):"",name:e.name||e.filename||e.label,sizeBytes:e.sizeBytes,pending:e.pending===!0}}function Js(e,n){return!e||typeof e!="string"?"":e.startsWith("data:")?e:`data:${n};base64,${e}`}function go(e){const n=new Set,c=[];for(const[u,p]of e.entries()){const v=hn(p)||(p.previewUrl?`url:${p.previewUrl}`:`position:${p.messageId||"unknown"}:${p.blockIndex??u}`);n.has(v)||(n.add(v),c.push(p))}return c}function Jt(e,n){return(e==null?void 0:e.label)||(e!=null&&e.name&&!/^\[img#\d+\]$/.test(e.name)?e.name:`图片 ${n+1}`)}function Ia(e,n){const c=eg(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 eg(e){const n=String(e||"").toLowerCase();return n.includes("jpeg")?"jpg":n.includes("webp")?"webp":n.includes("gif")?"gif":"png"}function er(e){return(e==null?void 0:e.kind)==="tool"&&String((e==null?void 0:e.parentToolName)||"").toLowerCase()==="image_create"}function tg(e){return er(e)&&Xt(e).length>0}function Aa(e){o.attachments=o.attachments.filter(n=>n.label!==e)}function Ca(){return o.attachments.filter(e=>e.kind==="file")}function Ma(){return o.attachments.filter(e=>e.kind==="image")}function ng(e,n){return(e==null?void 0:e.name)||`附件 ${n+1}`}function sg(e){return`${rg(e)} · ${fo(e==null?void 0:e.size)}`}function rg(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 fo(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 Ra(e,n){const c=await Na(e,n);return og(c,e.type||"image/png")}async function Na(e,n){return new Promise((c,u)=>{const p=new FileReader;p.onprogress=v=>{v.lengthComputable&&v.total>0&&(n==null||n(v.loaded/v.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 og(e,n="image/png"){const c=La(e,n),u=ig(c.base64),p=await lg(c.dataUrl).catch(()=>{});if(!p){const Ie=po(c.base64);if(!Ie)throw new Error("图片格式异常,无法读取为有效图片");return{mimeType:c.mimeType,data:Ie,previewUrl:`data:${c.mimeType};base64,${Ie}`,compressionRate:0}}const v=Math.min(1,H0/Math.max(p.naturalWidth||p.width,p.naturalHeight||p.height));let T=Math.max(1,Math.round((p.naturalWidth||p.width)*v)),O=Math.max(1,Math.round((p.naturalHeight||p.height)*v)),j=.88,B;for(let Ie=0;Ie<8&&(B=await cg(p,T,O,"image/jpeg",j),!(B.bytes<=j0||j<=No&&Math.max(T,O)<=1280));Ie+=1)j>No?j=Math.max(No,j-.1):(T=Math.max(1,Math.round(T*.82)),O=Math.max(1,Math.round(O*.82)));const ge=po(B==null?void 0:B.base64);if(!ge)throw new Error("图片格式异常,无法转换为有效图片");return{mimeType:B.mimeType,data:ge,previewUrl:`data:${B.mimeType};base64,${ge}`,compressionRate:ag(u,B.bytes)}}function La(e,n){var T;const c=String(e||"").trim(),u=/^data:([^;,]+);base64,([\s\S]*)$/i.exec(c),p=(T=u==null?void 0:u[1])!=null&&T.startsWith("image/")?u[1]:n,v=u?u[2]:c;return{mimeType:p,base64:v,dataUrl:u?c:`data:${p};base64,${v}`}}function ig(e){const n=po(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 ag(e,n){return!e||!n||n>=e?0:Math.round((1-n/e)*100)}function $a(e){const n=Math.max(...e);return e.length>1?`图片已压缩,最高压缩率为 ${n}%`:`图片已压缩,压缩率为 ${n}%`}function po(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 lg(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 cg(e,n,c,u,p){const v=document.createElement("canvas");v.width=n,v.height=c;const T=v.getContext("2d");if(!T)throw new Error("canvas unavailable");T.fillStyle="#fff",T.fillRect(0,0,n,c),T.drawImage(e,0,0,n,c);const O=await new Promise(ge=>v.toBlob(ge,u,p));if(!O)throw new Error("image encode failed");const j=await Na(O),B=La(j,u);return{mimeType:B.mimeType,base64:B.base64,bytes:O.size}}function Oa(){return window.matchMedia("(max-width: 820px)").matches?50:64}function Kn(){const e=H.value;e&&(e.style.height=`${Oa()}px`,e.scrollTop=0)}function ug(){const e=H.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(Oa(),Math.min(e.scrollHeight,n))}px`}function dg(e){return String((e==null?void 0:e.id)??"")}function gg(e){const n=Wt.value[e];if(!n)return Z0;if(jr(n))return dn(n)?Math.min(1200,72+n.lines.reduce((u,p)=>u+ho(p),0)):Math.max(72,52+Gr(n).length*28);if(Hn(n))return 74;if(jn(n))return 88;const c=io(n);return c.length?64+c.reduce((u,p)=>u+fa(p),0):dt(n)||fg(n)?Math.max(560,ho(n)):ho(n)}function ho(e){const n=Vt(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 fg(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 tr(){const e=L.value,n=G.value;!e||!n||(Cr.value=Math.max(0,n.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop))}function mo(){var e;if(kt){kt.disconnect(),L.value&&kt.observe(L.value),G.value&&kt.observe(G.value);for(const n of((e=L.value)==null?void 0:e.children)||[])kt.observe(n)}}function pg(e){e instanceof Element&&an.value.measureElement(e)}async function Da(e,n){var u;const c=(u=e==null?void 0:e.currentTarget)==null?void 0:u.closest(".virtual-message-row");Lr.value++,Re.pause();try{n(),await nt(),c!=null&&c.isConnected&&an.value.resizeItem(Number(c.dataset.index),c.getBoundingClientRect().height),await nt()}finally{Lr.value--}}function hg(){an.value.measure()}function bo(){Re.schedule()}function mg(){if(_t.size<300)return;const e=new Set(o.lines.map(n=>n.id));for(const n of _t.keys()){const c=Number(String(n).split("",1)[0]);e.has(c)||_t.delete(n)}_t.size>500&&_t.clear()}function J(e){o.toast=e,clearTimeout(En),En=setTimeout(()=>{o.toast=""},3600)}function bg(e){return["running","preparing","calling_model","thinking","running_tools","compacting","injecting_context"].includes(e)}function mn(e){if(e==null||!Number.isFinite(Number(e)))return"—";const n=Math.max(0,Math.round(Number(e)));return n>=1e6?`${Pa(n/1e6)}m`:n>=1e4?`${Math.round(n/1e3)}k`:n>=1e3?`${Pa(n/1e3)}k`:String(n)}function Pa(e){return e>=10?e.toFixed(0):e.toFixed(1).replace(/\.0$/,"")}function nr(e){return String(e).replace(/\x1b\[[0-9;]*m/g,"")}function kg(e){try{const n=new URL(e,window.location.href);return["http:","https:","mailto:"].includes(n.protocol)}catch{return!1}}function Te(e){return String(e).replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n])}function Ua(e){return e.replace(/(https?:\/\/[^\s<]+)/g,'<a target="_blank" rel="noreferrer noopener" href="$1">$1</a>')}function ko(e){const n=String(e||"");return n.startsWith("/api/images/")?z(n):n}function sr(){var e;(e=se.value)==null||e.removeAttribute("open")}function Ba(e){const n=se.value;n!=null&&n.open&&!e.composedPath().includes(n)&&sr()}function Vn(e){if(ue.value="",sr(),e==="sessions")return Ls();if(e==="users")return $s();if(e==="prompts")return Pr();if(e==="settings")return zn();o.activePanel="chat"}function za(){return ue.value="",sr(),Os()}return(e,n)=>{var c,u,p,v,T,O,j,B,ge,Ie,Bt;return m(),b(X,null,[a("div",om,[a("aside",im,[a("div",am,[a("button",{class:"theme-toggle celestial-theme-toggle",type:"button","aria-label":vs.value,"aria-pressed":ys.value,title:vs.value,onClick:va},[...n[42]||(n[42]=[Ka('<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,lm)]),a("nav",cm,[i.value?C("",!0):(m(),b("button",{key:0,class:Y({active:o.activePanel==="chat"}),onClick:Os},[...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:Y({active:o.activePanel==="sessions"}),onClick:Ls},[...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:Y({active:o.activePanel==="users"}),onClick:$s},[...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:Y({active:o.activePanel==="settings"}),onClick:n[0]||(n[0]=k=>zn())},[...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:Y(["sidebar-card","session-entry",{working:$t.value}]),type:"button",onClick:n[1]||(n[1]=k=>o.activePanel="chat"),title:us.value},[n[47]||(n[47]=a("span",{class:"session-entry-icon","aria-hidden":"true"},[a("i",{class:"session-diamond"})],-1)),a("span",dm,[a("span",{ref_key:"sessionTitleViewport",ref:ds,class:Y(["session-title-line",{marquee:Mr.value}])},[a("strong",{ref_key:"sessionTitleText",ref:mi},S(us.value),513),Mr.value?(m(),b("strong",gm,S(us.value),1)):C("",!0)],2)])],10,um),$e(Ve).isolation?C("",!0):(m(),b("section",fm,[a("div",pm,[a("button",{type:"button",class:"mini-button",onClick:n[2]||(n[2]=k=>Pr())},"提示词管理")]),a("div",hm,[o.promptLibraryLoading?(m(),b("div",mm,"正在加载…")):o.promptLibrary.length?(m(!0),b(X,{key:2},fe(o.promptLibrary,k=>{var A;return m(),b("article",{key:k.id,class:Y(["prompt-card",{active:((A=Kt.value)==null?void 0:A.id)===k.id}]),draggable:"true",onDragstart:Xe=>cu(Xe,k),onDragend:hu,onDblclick:Xe=>Pn(k)},[a("div",ym,[a("strong",null,S(k.title),1)]),a("div",vm,[a("button",{type:"button",class:"mini-button",onClick:Xe=>Pn(k)},"应用",8,wm),a("button",{type:"button",class:"mini-button",onClick:Xe=>ru(k)},"编辑",8,_m)])],42,km)}),128)):(m(),b("div",bm,"暂无提示词"))])])),$e(Ve).isolation?(m(),b("div",xm,[a("button",{class:"logout-icon-button",type:"button","aria-label":"退出登录",title:`${(c=$e(Ve).user)==null?void 0:c.username} · 退出登录`,onClick:Uc},[...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",Em,[a("header",Tm,[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:Y({active:o.activePanel==="chat"}),onClick:n[3]||(n[3]=k=>Vn("chat"))},"对话",2),i.value?C("",!0):(m(),b("button",{key:0,type:"button",onClick:za},"新建会话")),a("button",{type:"button",class:Y({active:o.activePanel==="sessions"}),onClick:n[4]||(n[4]=k=>Vn("sessions"))},"会话",2),i.value?(m(),b("button",{key:1,type:"button",class:Y({active:o.activePanel==="users"}),onClick:n[5]||(n[5]=k=>Vn("users"))},"用户",2)):C("",!0),$e(Ve).isolation?C("",!0):(m(),b("button",{key:2,type:"button",class:Y({active:o.activePanel==="prompts"}),onClick:n[6]||(n[6]=k=>Vn("prompts"))},"提示词",2)),l.value?(m(),b("button",{key:3,type:"button",class:Y({active:o.activePanel==="settings"}),onClick:n[7]||(n[7]=k=>Vn("settings"))},"模型配置",2)):C("",!0),(m(!0),b(X,null,fe(xe.value,k=>(m(),b("button",{key:k.id,type:"button",onClick:A=>Fe(k.id)},S(k.title),9,Am))),128)),o.coreVersion?(m(),b("div",{key:4,class:Y(["core-version","mobile-core-version",{celebrating:o.coreEasterEgg}]),role:"button",tabindex:"0",onClick:ln,onKeydown:[ft(me(ln,["prevent"]),["enter"]),ft(me(ln,["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,"内核版本 "+S(o.coreVersion),1)],42,Cm)):C("",!0)])],512),Tn.value?(m(),b("strong",{key:0,class:"mobile-session-title",title:Tn.value},S(Tn.value),9,Mm)):C("",!0),a("button",{class:"ghost mobile-theme-toggle celestial-theme-toggle",type:"button","aria-label":vs.value,"aria-pressed":ys.value,title:vs.value,onClick:va},[...n[53]||(n[53]=[Ka('<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,Rm),l.value?(m(),b("button",{key:1,class:"ghost desktop-config-button",onClick:n[8]||(n[8]=k=>zn())},"配置模型")):C("",!0),a("button",{class:"primary new-session-button",onClick:za},"+ 新建")])]),o.activePanel==="chat"?(m(),b("section",Nm,[a("div",Lm,[a("div",{ref_key:"transcript",ref:L,class:"transcript",tabindex:"0","aria-label":"对话记录"},[o.runtimeContext||o.runtimeContextLoading||o.runtimeContextError?(m(),b("section",$m,[n[57]||(n[57]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"运行上下文")],-1)),o.runtimeContext?(m(),b("div",Om,[$e(Ve).isolation?C("",!0):(m(),b("button",{key:0,type:"button",onClick:n[9]||(n[9]=k=>Jr("prompt"))},[n[54]||(n[54]=a("span",null,"系统提示词",-1)),a("strong",null,S($c.value.length),1)])),a("button",{type:"button",onClick:n[10]||(n[10]=k=>Jr("tools"))},[n[55]||(n[55]=a("span",null,"工具",-1)),a("strong",null,S($r.value.length),1)]),a("button",{type:"button",onClick:n[11]||(n[11]=k=>Jr("plugins"))},[n[56]||(n[56]=a("span",null,"插件",-1)),a("strong",null,S(Oc.value),1)])])):o.runtimeContextError?(m(),b("button",{key:1,type:"button",class:"runtime-context-retry",onClick:$n},"重试")):(m(),b("span",Dm,"同步中"))])):C("",!0),Rn.value.length?(m(),b("section",Pm,[n[59]||(n[59]=a("div",{class:"runtime-context-bar-title"},[a("strong",null,"项目上下文")],-1)),a("div",Um,[a("button",{type:"button",onClick:id},[n[58]||(n[58]=a("span",null,"文档",-1)),a("strong",null,S(Rn.value.length),1)])])])):C("",!0),a("div",{ref_key:"messageList",ref:G,class:"virtual-message-list",style:lt({height:`${Lc.value}px`})},[(m(!0),b(X,null,fe(Nc.value,k=>(m(),b("div",{key:k.key,ref_for:!0,ref:pg,class:"virtual-message-row","data-index":k.index,style:lt({transform:`translateY(${k.start-Cr.value}px)`})},[(m(!0),b(X,null,fe([Wt.value[k.index]],A=>{var Xe,yt,Fa,Ha;return m(),b(X,{key:A.id},[jr(A)?(m(),b("article",{key:0,class:Y(["message","tool-group-message",{live:A.live,expanded:dn(A)}])},[a("div",zm,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":dn(A),onClick:D=>Gu(A,D)},[a("span",Hm,[(m(!0),b(X,null,fe(Gi(A),(D,ae)=>(m(),b(X,{key:D.name},[a("span",jm,S(D.name),1),D.count>1?(m(),b("span",Gm,"×"+S(D.count),1)):C("",!0),ae<Gi(A).length-1?(m(),b("span",qm,"、")):C("",!0)],64))),128))]),n[60]||(n[60]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,Fm),!dn(A)&&Gr(A).length?(m(),Ge(Tg,{key:0,name:"tool-purpose",tag:"div",class:"tool-group-purposes"},{default:Eg(()=>[(m(!0),b(X,null,fe(Gr(A),(D,ae)=>(m(),b("div",{key:D.id,class:Y(["tool-group-purpose",{live:D.live}]),style:lt({"--purpose-index":ae})},[a("span",null,S(D.text),1)],6))),128))]),_:2},1024)):C("",!0),dn(A)?(m(),b("div",Wm,[(m(!0),b(X,null,fe(A.lines,D=>{var ae,Je,yo,ja;return m(),b("div",{key:D.id,class:Y(["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",Vm,[a("div",Zm,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Ks(D)},null,8,Qm)])])],8,Km)):Hn(D)?(m(),b("section",{key:1,class:Y(["compaction-context-bar",{current:D.compaction.current}]),role:"button",tabindex:"0","aria-label":"查看压缩上下文",onClick:Ke=>un(D),onKeydown:[ft(me(Ke=>un(D),["prevent"]),["enter"]),ft(me(Ke=>un(D),["prevent"]),["space"])]},[n[64]||(n[64]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",Xm,[a("span",null,[n[62]||(n[62]=a("span",null,"摘要",-1)),a("strong",null,S(mn(String(D.compaction.summary||"").length)),1)]),D.compaction.imageCount?(m(),b("span",Jm,[n[63]||(n[63]=a("span",null,"图片",-1)),a("strong",null,S(D.compaction.imageCount),1)])):C("",!0)])],42,Ym)):jn(D)?(m(),b("div",{key:2,class:Y(["tool-result-summary",`status-${Ot(D).key}`])},[a("div",eb,[(m(),b("svg",{class:Y(["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",tb,S(Zt(D)),1),Tt(D)?(m(),b("span",nb,S(Tt(D)),1)):C("",!0),Ot(D).key==="failed"?(m(),b("span",sb,"×")):C("",!0)]),a("div",rb,[(ae=D.toolDisplay)!=null&&ae.purpose||(Je=D.toolDisplay)!=null&&Je.subject?(m(),b("p",ob,S(((yo=D.toolDisplay)==null?void 0:yo.purpose)||((ja=D.toolDisplay)==null?void 0:ja.subject)),1)):C("",!0),D.toolError?(m(),b("p",ib,S(D.toolError),1)):C("",!0),Pt(D)&&Dt(D).length?(m(),b("div",ab,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":zs(D),onClick:Ke=>ea(D,Ke)},[a("span",cb,[(m(!0),b(X,null,fe(Bs(D),(Ke,Zn)=>(m(),b(X,{key:Ke.name},[a("span",ub,S(Ke.label),1),Ke.count>1?(m(),b("span",db,"×"+S(Ke.count),1)):C("",!0),Zn<Bs(D).length-1?(m(),b("span",gb,"、")):C("",!0)],64))),128))]),n[66]||(n[66]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,lb),zs(D)?(m(),b("div",fb,[(m(!0),b(X,null,fe(Ji(D),(Ke,Zn)=>(m(),b("div",{key:Ke.key,class:"tool-group-purpose",style:lt({"--purpose-index":Zn})},[a("span",null,S(Ke.purpose),1)],4))),128))])):C("",!0)])):!Us(D)&&qn(D)?(m(),b("p",pb,[Jn(S(qn(D)),1),Fs(D)?(m(),b("span",hb,S(Fs(D)),1)):C("",!0)])):C("",!0),!Us(D)&&!Pt(D)&&Dt(D).length?(m(),b("div",mb,[a("section",bb,[a("pre",kb,S(Xi(D)),1)])])):C("",!0),!Pt(D)&&Gn(D)&&(!Wr(D)||D.live===!0)?(m(),b("div",yb,[a("section",vb,[a("pre",wb,S(Gn(D)),1)])])):C("",!0),!Pt(D)&&Yi(D)?(m(),b("div",_b,[(m(!0),b(X,null,fe(Qi(D),(Ke,Zn)=>(m(),b("section",{key:`${Ke.kind}-${Zn}`,class:Y(["tool-result-preview",`kind-${Ke.kind}`])},[a("pre",xb,S(Ke.content),1)],2))),128))])):C("",!0)])],2)):(m(),b("div",Sb,[Fn(D)?C("",!0):(m(),b("div",Eb,[a("strong",null,S(Zt(D)),1),D.toolName&&Ot(D).key==="failed"?(m(),b("span",Tb,"×")):C("",!0)])),a("div",{class:"message-text markdown",innerHTML:Ks(D)},null,8,Ib)]))],2)}),128))])):C("",!0)])],2)):(m(),b("article",{key:1,class:Y(["message",A.kind||"system",{live:A.live,"prompt-usage":Hr(A),"context-compaction":Hn(A),"compact-tool":jn(A)}])},[a("div",{class:Y(["message-marker",{spinning:A.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),Hn(A)?(m(),b("div",Ab,[a("section",{class:Y(["compaction-context-bar",{current:A.compaction.current}]),role:"button",tabindex:"0","aria-label":"查看压缩上下文",onClick:D=>un(A),onKeydown:[ft(me(D=>un(A),["prevent"]),["enter"]),ft(me(D=>un(A),["prevent"]),["space"])]},[n[70]||(n[70]=a("div",{class:"compaction-context-title"},[a("strong",null,"压缩上下文")],-1)),a("div",Mb,[a("span",null,[n[68]||(n[68]=a("span",null,"摘要",-1)),a("strong",null,S(mn(String(A.compaction.summary||"").length)),1)]),A.compaction.imageCount?(m(),b("span",Rb,[n[69]||(n[69]=a("span",null,"图片",-1)),a("strong",null,S(A.compaction.imageCount),1)])):C("",!0)])],42,Cb)])):A.kind==="thinking"?(m(),b("div",Nb,[a("details",{class:"reasoning-sheet",open:A.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)),Tt(A)?(m(),b("span",$b,S(Tt(A)),1)):C("",!0)]),a("div",Ob,[a("div",Db,[a("div",{class:"message-text markdown reasoning-text",innerHTML:Ks(A)},null,8,Pb)])])],8,Lb)])):(m(),b("div",Ub,[!Fn(A)&&(A.kind!=="tool"||fn(A).length)&&!jn(A)?(m(),b("div",Bb,[a("strong",null,S(Zt(A)),1),A.toolName&&Ot(A).key==="failed"?(m(),b("span",zb,"×")):C("",!0),!A.toolName&&A.titleStatus?(m(),b("span",Fb,S(A.titleStatus),1)):C("",!0),Tt(A)?(m(),b("span",Hb,S(Tt(A)),1)):C("",!0)])):C("",!0),dt(A)?(m(),b("div",jb,[a("div",{class:"message-text markdown image2-stage-wrap",innerHTML:Nd(A)},null,8,Gb),(m(!0),b(X,null,fe([Xt(A)],D=>(m(),b(X,{key:`${A.id}-image2-images`},[D.length?(m(),b("div",qb,[(m(!0),b(X,null,fe(D,(ae,Je)=>(m(),b("figure",{key:hn(ae)||ae.previewUrl||Je,class:Y(["message-image-attachment",{"image-unavailable":!ae.available}])},[ae.available&&ae.previewUrl?(m(),b("button",{key:0,type:"button",class:"image-preview-trigger","data-preview-src":$e(it)(ae.originalUrl||ae.previewUrl),"aria-label":`预览 ${Jt(ae,Je)}`},[a("img",{src:$e(it)(ae.previewUrl),alt:Jt(ae,Je),loading:"lazy",decoding:"async"},null,8,Kb)],8,Wb)):(m(),b("div",Vb,"图片不可用")),a("figcaption",null,S(Jt(ae,Je)),1),a("div",Zb,[ae.available&&ae.previewUrl?(m(),b("a",{key:0,class:"image-download",href:$e(it)(ae.originalUrl||ae.previewUrl),download:Ia(ae,Je)},"下载",8,Qb)):C("",!0),Je===0&&Ut(A)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:yo=>Wi(A)},"详情",8,Yb)):C("",!0)])],2))),128))])):Ut(A)?(m(),b("button",{key:1,type:"button",class:"image2-detail-button",onClick:ae=>Wi(A)},"详情",8,Xb)):C("",!0)],64))),128))])):jn(A)?(m(),b("div",{key:2,class:Y(["tool-result-summary",`status-${Ot(A).key}`])},[a("div",Jb,[(m(),b("svg",{class:Y(["tool-result-diamond",{spinning:A.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",ek,S(Zt(A)),1),Tt(A)?(m(),b("span",tk,S(Tt(A)),1)):C("",!0),Ot(A).key==="failed"?(m(),b("span",nk,"×")):C("",!0)]),a("div",sk,[(Xe=A.toolDisplay)!=null&&Xe.purpose||(yt=A.toolDisplay)!=null&&yt.subject?(m(),b("p",rk,S(((Fa=A.toolDisplay)==null?void 0:Fa.purpose)||((Ha=A.toolDisplay)==null?void 0:Ha.subject)),1)):C("",!0),A.toolError?(m(),b("p",ok,S(A.toolError),1)):C("",!0),Pt(A)&&Dt(A).length?(m(),b("div",ik,[a("button",{type:"button",class:"tool-group-trigger","aria-expanded":zs(A),onClick:D=>ea(A,D)},[a("span",lk,[(m(!0),b(X,null,fe(Bs(A),(D,ae)=>(m(),b(X,{key:D.name},[a("span",ck,S(D.label),1),D.count>1?(m(),b("span",uk,"×"+S(D.count),1)):C("",!0),ae<Bs(A).length-1?(m(),b("span",dk,"、")):C("",!0)],64))),128))]),n[74]||(n[74]=a("span",{class:"tool-group-chevron","aria-hidden":"true"},null,-1))],8,ak),zs(A)?(m(),b("div",gk,[(m(!0),b(X,null,fe(Ji(A),(D,ae)=>(m(),b("div",{key:D.key,class:"tool-group-purpose",style:lt({"--purpose-index":ae})},[a("span",null,S(D.purpose),1)],4))),128))])):C("",!0)])):!Us(A)&&qn(A)?(m(),b("p",fk,[Jn(S(qn(A)),1),Fs(A)?(m(),b("span",pk,S(Fs(A)),1)):C("",!0)])):C("",!0),!Us(A)&&!Pt(A)&&Dt(A).length?(m(),b("div",hk,[a("section",mk,[a("pre",bk,S(Xi(A)),1)])])):C("",!0),!Pt(A)&&Gn(A)&&(!Wr(A)||A.live===!0)?(m(),b("div",kk,[a("section",yk,[a("pre",vk,S(Gn(A)),1)])])):C("",!0),!Pt(A)&&Yi(A)?(m(),b("div",wk,[(m(!0),b(X,null,fe(Qi(A),(D,ae)=>(m(),b("section",{key:`${D.kind}-${ae}`,class:Y(["tool-result-preview",`kind-${D.kind}`])},[a("pre",_k,S(D.content),1)],2))),128))])):C("",!0)])],2)):(m(),b(X,{key:3},[io(A).length?(m(),b(X,{key:0},[a("div",xk,[(m(!0),b(X,null,fe(io(A),D=>(m(),b("iframe",{key:D.url,class:"plugin-resource-frame",src:Ad(D),title:D.label||"插件资源",style:lt({height:`${fa(D)}px`}),loading:"lazy",allow:"fullscreen",allowfullscreen:""},null,12,Sk))),128))]),ga(A).length?(m(),b("div",{key:0,class:"message-text markdown",innerHTML:pa(A)},null,8,Ek)):C("",!0)],64)):A.kind==="assistant"&&A.live?(m(),b("div",Tk,[It(Lh,{text:A.text||"","exposed-resources":ha(A)},null,8,["text","exposed-resources"])])):tg(A)?C("",!0):(m(),b("div",{key:2,class:"message-text markdown",innerHTML:Ks(A)},null,8,Ik)),(m(!0),b(X,null,fe([Xt(A)],D=>(m(),b(X,{key:`${A.id}-images`},[D.length?(m(),b("div",Ak,[(m(!0),b(X,null,fe(D,(ae,Je)=>(m(),b("figure",{key:hn(ae)||ae.previewUrl||Je,class:Y(["message-image-attachment",{"image-unavailable":!ae.available}])},[ae.available&&ae.previewUrl?(m(),b("button",{key:0,type:"button",class:"image-preview-trigger","data-preview-src":$e(it)(ae.originalUrl||ae.previewUrl),"aria-label":`预览 ${Jt(ae,Je)}`},[a("img",{src:$e(it)(ae.previewUrl),alt:Jt(ae,Je),loading:"lazy",decoding:"async"},null,8,Mk)],8,Ck)):(m(),b("div",Rk,"图片不可用")),a("figcaption",null,S(Jt(ae,Je)),1),ae.available&&ae.previewUrl?(m(),b("a",{key:2,class:"image-download",href:$e(it)(ae.originalUrl||ae.previewUrl),download:Ia(ae,Je)},"下载",8,Nk)):C("",!0)],2))),128))])):C("",!0)],64))),128))],64))]))],2))],64)}),128))],12,Bm))),128))],4),!o.busy&&((u=o.coreQueryTiming)==null?void 0:u.status)==="finished"&&$e(Mt)(o.coreQueryTiming.durationMs)?(m(),b("div",Lk,[a("div",$k,[It(xl,{"elapsed-ms":o.coreQueryTiming.durationMs},null,8,["elapsed-ms"])])])):C("",!0),wc.value?(m(),b("div",Ok,[a("div",Dk,[It(Gh,{class:"message-loading-label",text:_c.value},null,8,["text"]),It(xl,{"elapsed-ms":xc.value,style:{"margin-inline-start":"10px"}},null,8,["elapsed-ms"])])])):C("",!0)],512),o.queuedInput&&!i.value?(m(),b("div",Pk,[a("span",null,"已排队:"+S(o.queuedInput),1),a("div",null,[a("button",{type:"button",disabled:r.value,onClick:Ni},"立即发送",8,Uk),a("button",{type:"button",disabled:r.value,onClick:vu},"取消",8,Bk)])])):C("",!0),i.value?C("",!0):(m(),b("form",{key:1,class:Y(["composer",{"drop-active":o.composerDropActive}]),onSubmit:me(Mi,["prevent"]),onDragover:uu,onDragleave:du,onDrop:gu},[(p=o.appPrompt)!=null&&p.hasActivePrompt?(m(),b("div",zk,[n[75]||(n[75]=a("span",{class:"composer-app-prompt-label"},"当前提示词",-1)),a("strong",null,S(Pc.value),1),a("button",{type:"button",class:"mini-button danger",onClick:Ai},"清空")])):C("",!0),Ca().length?(m(),b("div",Fk,[(m(!0),b(X,null,fe(Ca(),(k,A)=>(m(),b("figure",{key:k.label,class:"file-attachment"},[a("figcaption",null,[a("strong",null,S(ng(k,A)),1),a("span",null,S(sg(k)),1)]),a("button",{type:"button","aria-label":"移除附件",onClick:Xe=>Aa(k.label)},"×",8,Hk)]))),128))])):C("",!0),Ma().length?(m(),b("div",jk,[(m(!0),b(X,null,fe(Ma(),(k,A)=>(m(),b("figure",{key:k.label,class:"image-attachment"},[a("img",{src:$e(it)(k.previewUrl),alt:k.name||`图片 ${A+1}`},null,8,Gk),a("figcaption",null,"图片 "+S(A+1),1),a("button",{type:"button","aria-label":"移除图片",onClick:Xe=>Aa(k.label)},"×",8,qk)]))),128))])):C("",!0),a("input",{ref_key:"fileInput",ref:ne,type:"file",multiple:"",hidden:"",onChange:qd},null,544),Be(a("textarea",{ref_key:"composer",ref:H,"onUpdate:modelValue":n[12]||(n[12]=k=>oe.value=k),placeholder:"在这里输入你的问题、需求或下一步安排…",onKeydown:zd,onPaste:jd,onInput:ug},null,544),[[at,oe.value]]),a("div",Wk,[a("button",{type:"button",class:"composer-cwd",title:"切换工作目录","aria-label":"切换工作目录",onClick:ld},[n[76]||(n[76]=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:bi.value},S(bi.value),9,Kk)])]),a("div",{class:Y(["composer-footer",{"session-options-open":s.value}])},[a("div",Vk,[a("button",{type:"button",class:"metric-chip model-chip context-window-trigger model-trigger","aria-label":"选择模型",onClick:_u},[n[77]||(n[77]=a("em",null,"模型",-1)),a("strong",null,S(Sc.value),1)]),(m(),b("button",{type:"button",class:Y(["metric-chip","numeric","context-window-trigger",Zr("context")]),key:`context-${o.composerMetrics.context.bump}`,onClick:Su},[n[78]||(n[78]=a("em",null,"上下文",-1)),a("strong",null,S(Tc.value),1)],2)),(m(),b("span",{class:Y(["metric-chip numeric",Zr("inputTokens")]),key:`input-${o.composerMetrics.inputTokens.bump}`},[n[79]||(n[79]=a("em",null,"输入",-1)),a("strong",null,S(Ac.value),1)],2)),(m(),b("span",{class:Y(["metric-chip numeric",Zr("outputTokens")]),key:`output-${o.composerMetrics.outputTokens.bump}`},[n[80]||(n[80]=a("em",null,"输出",-1)),a("strong",null,S(Cc.value),1)],2)),a("button",{type:"button",class:Y(["fast-mode-button",{active:fs.value,syncing:o.fastModeMutating}]),"aria-pressed":fs.value,title:fs.value?"关闭当前会话的快速模式":"为当前会话启动快速模式",onClick:Iu},[...n[81]||(n[81]=[a("span",null,"快速模式",-1)])],10,Zk),a("span",Qk,[a("button",{type:"button",class:"compact-button",disabled:o.compactSaving||o.pendingSessionSettings.compact===!0,onClick:wu},"压缩会话",8,Yk)])]),a("div",Xk,[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[82]||(n[82]=[a("svg",{viewBox:"0 0 20 20","aria-hidden":"true"},[a("path",{d:"M3 6h14M3 14h14M7 3v6M13 11v6"})],-1)])],8,Jk),a("button",{type:"button",class:"ghost upload-button",style:lt({"--upload-progress":o.uploadProgress+"%"}),disabled:o.uploadingFiles,"aria-busy":o.uploadingFiles,"aria-label":o.uploadingFiles?`上传中 ${o.uploadProgress}%`:"上传附件",title:o.uploadingFiles?`上传中 ${o.uploadProgress}%`:"上传附件",onClick:Gd},[...n[83]||(n[83]=[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,ey),a("button",{type:$t.value?"button":"submit",class:Y(["primary","composer-action",{stop:$t.value}]),disabled:r.value||!$t.value&&(o.uploadingFiles||!oe.value.trim()&&!o.attachments.length),"aria-busy":r.value,"aria-label":yi.value,title:yi.value,onClick:n[14]||(n[14]=k=>$t.value?yu():void 0)},[r.value?(m(),b("svg",ny,[...n[84]||(n[84]=[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)])])):$t.value?Nr.value?(m(),b("svg",ry,[...n[86]||(n[86]=[a("path",{d:"M4 5v10M11 16V4m-4 4 4-4 4 4"},null,-1)])])):o.queuedInput?(m(),b("svg",oy,[...n[87]||(n[87]=[a("path",{d:"m4 5 7 5-7 5Zm10 0v10"},null,-1)])])):(m(),b("svg",iy,[...n[88]||(n[88]=[a("path",{d:"M5 5h10v10H5Z",fill:"currentColor",stroke:"none"},null,-1)])])):(m(),b("svg",sy,[...n[85]||(n[85]=[a("path",{d:"M10 16V4m-5 5 5-5 5 5"},null,-1)])]))],10,ty)])],2)],34))]),a("aside",{class:Y(["right-panel",{"mobile-card-open":ue.value}]),"data-mobile-card":ue.value,onKeydown:ft(me(He,["stop"]),["esc"])},[ue.value?(m(),b("button",{key:0,type:"button",class:"mobile-card-close","aria-label":"关闭卡片",onClick:He},"×")):C("",!0),a("section",ly,[a("div",cy,[a("div",uy,S(Ce("tasks")),1),hs.value?(m(),b("strong",dy,S(hs.value),1)):C("",!0)]),Cn.value?(m(),b("button",{key:0,type:"button",class:"background-task-summary",title:Hs(Cn.value),onClick:n[15]||(n[15]=k=>Qr(Cn.value))},[a("span",{class:Y(["background-task-dot",`status-${Cn.value.status}`])},null,2),a("strong",null,S(js(Cn.value)),1),hs.value>1?(m(),b("span",fy,"+"+S(hs.value-1),1)):C("",!0),n[89]||(n[89]=a("b",{"aria-hidden":"true"},"›",-1))],8,gy)):C("",!0),ms.value.length?(m(),b("details",py,[a("summary",null,[n[90]||(n[90]=a("span",null,"最近结束",-1)),a("strong",null,S(ms.value.length),1)]),a("div",hy,[(m(!0),b(X,null,fe(ms.value,k=>(m(),b("button",{key:Yt(k),type:"button",class:"background-task-summary background-task-history-item",title:Hs(k),onClick:A=>Qr(k)},[a("span",{class:Y(["background-task-dot",`status-${k.status}`])},null,2),a("strong",null,S(js(k)),1),a("span",{class:Y(["background-task-summary-status",`status-${k.status}`])},S(Yr(k.status)),3)],8,my))),128))])])):C("",!0)]),St.value?(m(),b("section",by,[a("div",ky,[a("div",null,[a("span",null,S(Ce("quota"))+" · "+S(Lu(St.value.account)),1),a("strong",null,S(Bi(St.value.remainingPercent)),1)]),a("div",yy,[o.cpaQuotas.length>1?(m(),b("button",{key:0,type:"button","aria-label":"上一个凭据",onClick:n[16]||(n[16]=k=>Hi(-1))},"‹")):C("",!0),a("small",null,S(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=>Hi(1))},"›")):C("",!0)])]),a("div",{class:"quota-progress",role:"progressbar","aria-label":"周额度剩余","aria-valuenow":Fr(St.value.remainingPercent),"aria-valuemin":"0","aria-valuemax":"100"},[a("span",{class:"quota-progress-fill",style:lt({width:`${Fr(St.value.remainingPercent)}%`})},null,4)],8,vy),a("div",wy,[a("span",null,"已使用 "+S(Bi(St.value.usedPercent)),1),a("span",null,"续期时间 "+S(zi(St.value.resetAt)),1)]),a("div",_y,"更新于 "+S(zi(St.value.updatedAt)),1)])):C("",!0),a("section",xy,[a("div",Sy,[a("div",null,[a("span",null,S(Ce("memory")),1),a("strong",null,S(Ds((v=ws.value)==null?void 0:v.rss)),1)]),n[91]||(n[91]=a("small",null,"RSS",-1))]),vi.value?(m(),b("div",{key:0,class:"memory-chart",onMousemove:Du,onMouseleave:ji},[(m(),b("svg",Ey,[a("path",{d:vi.value},null,8,Ty),(m(!0),b(X,null,fe(_s.value,(k,A)=>(m(),b("circle",{key:k.entry.at,class:Y(["memory-trend-point",{active:A===ct.value}]),cx:k.x,cy:k.y,r:A===ct.value?3.2:1.5,tabindex:"0",onFocus:Xe=>ct.value=A,onBlur:ji},null,42,Iy))),128))])),Nn.value?(m(),b("div",{key:0,class:"memory-tooltip",style:lt({left:`clamp(58px, ${Nn.value.x/260*100}%, calc(100% - 58px))`,top:`${Nn.value.y/44*100}%`})},[a("strong",null,S(Ds(Nn.value.entry.rss)),1),a("span",null,S(Ou(Nn.value.entry.at)),1)],4)):C("",!0)],32)):(m(),b("div",Ay,"—")),a("div",Cy,[a("div",null,[n[92]||(n[92]=a("span",null,"V8 堆",-1)),a("strong",null,S(Ds((T=ws.value)==null?void 0:T.heapUsed)),1)]),a("div",null,[n[93]||(n[93]=a("span",null,"外部内存",-1)),a("strong",null,S(Ds((O=ws.value)==null?void 0:O.external)),1)])]),a("div",My,[a("span",null,"更新于 "+S($u((j=ws.value)==null?void 0:j.at)),1)])])],42,ay)])):o.activePanel==="sessions"?(m(),b("section",Ry,[a("div",Ny,[a("div",Ly,[a("div",null,[n[94]||(n[94]=a("h2",null,"会话管理",-1)),a("p",null,S(i.value?"查看全部用户的历史会话":"查找、继续或整理历史会话"),1)]),i.value?C("",!0):(m(),b("button",{key:0,class:"primary",onClick:Os},"+ 新建会话"))]),a("div",$y,[a("label",Oy,[Be(a("input",{"onUpdate:modelValue":n[18]||(n[18]=k=>ce.value=k),type:"search",placeholder:"搜索标题或 ID",autocomplete:"off"},null,512),[[at,ce.value]])]),a("span",Dy,S(ce.value.trim()?`${Mn.value.length} / ${o.sessions.length}`:`${o.sessions.length} 个会话`),1)]),o.sessionsLoading?(m(),b("div",Py,"正在加载会话…")):o.sessions.length?Mn.value.length?(m(),b("div",zy,[(m(!0),b(X,null,fe(Mc.value,k=>(m(),b("article",{key:`${k.ownerUsername||""}:${k.sessionId}`,class:Y(["session-card",{current:Br(k.sessionId),running:zr(k.sessionId)}])},[a("div",Fy,[a("div",Hy,[a("strong",null,S(hi(k)),1),i.value?(m(),b("span",jy,S(k.ownerUsername)+S(k.ownerDeleted?" · 已删除":""),1)):C("",!0),Br(k.sessionId)&&(!i.value||$e(Ve).adminOwnerUsername===k.ownerUsername)?(m(),b("span",Gy,"当前")):zr(k.sessionId)?(m(),b("span",qy,"运行中")):C("",!0)]),a("div",Wy,[a("code",{title:k.sessionId},"ID · "+S(k.sessionId),9,Ky),a("time",{datetime:k.updatedAt||k.createdAt},"更新于 "+S(Fi(k.updatedAt||k.createdAt)),9,Vy)])]),a("div",Zy,[a("button",{disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:A=>Mu(k)},S(o.pendingResumeSessionId===k.sessionId&&o.sessionResumeLoading?"打开中…":"打开"),9,Qy),i.value?C("",!0):(m(),b("button",{key:0,class:"danger",disabled:o.sessionResumeLoading||o.sessionsLoading,onClick:A=>Ru(k.sessionId)},"删除",8,Yy))])],2))),128))])):(m(),b("div",By,"没有匹配的会话")):(m(),b("div",Uy,"暂无会话")),!o.sessionsLoading&&Mn.value.length&&bs.value>1?(m(),b("nav",Xy,[a("button",{type:"button",disabled:W.value===1,onClick:n[19]||(n[19]=k=>W.value-=1)},"上一页",8,Jy),(m(!0),b(X,null,fe(Rc.value,k=>(m(),b("button",{key:k,type:"button",class:Y({active:k===W.value}),"aria-current":k===W.value?"page":void 0,onClick:A=>W.value=k},S(k),11,ev))),128)),a("button",{type:"button",disabled:W.value===bs.value,onClick:n[20]||(n[20]=k=>W.value+=1)},"下一页",8,tv)])):C("",!0)])])):i.value&&o.activePanel==="users"?(m(),b("section",nv,[a("div",sv,[n[96]||(n[96]=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:me(Au,["prevent"])},[a("label",null,[n[95]||(n[95]=Jn("用户名",-1)),Be(a("input",{"onUpdate:modelValue":n[21]||(n[21]=k=>Q.value=k),maxlength:"100",autocomplete:"off",required:""},null,512),[[at,Q.value]])]),a("button",{class:"primary",disabled:o.adminUserBusy},"创建普通用户",8,rv)],32),o.adminUserError?(m(),b("p",ov,S(o.adminUserError),1)):C("",!0),o.adminUsersLoading?(m(),b("div",iv,"正在加载用户…")):(m(),b("div",av,[(m(!0),b(X,null,fe(o.adminUsers,k=>(m(),b("article",{key:k.username,class:"session-card"},[a("div",lv,[a("div",cv,[a("strong",null,S(k.username),1),a("span",uv,S(k.role==="admin"?"超管":"普通用户"),1)])]),a("div",dv,[k.role!=="admin"?(m(),b("button",{key:0,class:"danger",disabled:o.adminUserBusy,onClick:A=>Cu(k)},"删除账号",8,gv)):C("",!0)])]))),128))]))])])):!$e(Ve).isolation&&o.activePanel==="prompts"?(m(),b("section",fv,[a("div",pv,[a("div",hv,[n[97]||(n[97]=a("h2",null,"提示词",-1)),a("div",mv,[a("button",{class:"ghost",onClick:n[22]||(n[22]=k=>o.activePanel="chat")},"回到对话"),a("button",{class:"primary",onClick:ou},"+ 新建提示词")])]),a("div",bv,[a("aside",kv,[a("div",yv,[a("strong",null,S(o.promptLibrary.length)+" 个提示词",1)]),a("div",vv,[o.promptLibraryLoading?(m(),b("div",wv,"正在加载…")):o.promptLibrary.length?(m(!0),b(X,{key:2},fe(o.promptLibrary,k=>{var A,Xe;return m(),b("button",{key:k.id,class:Y(["prompt-library-item",{active:((A=ks.value)==null?void 0:A.id)===k.id,applied:((Xe=Kt.value)==null?void 0:Xe.id)===k.id,dragging:Oe.value===k.id,"drop-before":Ue.value===k.id&&st.value==="before","drop-after":Ue.value===k.id&&st.value==="after"}]),type:"button",draggable:"true",onClick:yt=>iu(k),onDblclick:yt=>Pn(k),onDragstart:yt=>mu(yt,k),onDragover:yt=>bu(yt,k),onDrop:yt=>ku(yt,k),onDragend:Ci},[a("strong",null,S(k.title),1),k.usage?(m(),b("span",Sv,"用法:"+S(k.usage),1)):C("",!0)],42,xv)}),128)):(m(),b("div",_v,"暂无提示词"))])]),a("section",Ev,[a("div",Tv,[a("strong",Iv,S(Se.title||"新提示词"),1),a("div",Av,[a("button",{class:"mini-button",type:"button",disabled:!ks.value,onClick:n[23]||(n[23]=k=>ks.value&&Pn(ks.value))},"应用",8,Cv),a("button",{class:"mini-button",type:"button",onClick:au},"保存"),a("button",{class:"mini-button danger",type:"button",disabled:!Se.id,onClick:lu},"删除",8,Mv)])]),a("div",Rv,[a("label",Nv,[n[98]||(n[98]=a("span",null,"名称",-1)),Be(a("input",{"onUpdate:modelValue":n[24]||(n[24]=k=>Se.title=k),type:"text",placeholder:"例如:代码评审"},null,512),[[at,Se.title]])]),a("label",Lv,[n[99]||(n[99]=a("span",null,"提示词内容",-1)),Be(a("textarea",{"onUpdate:modelValue":n[25]||(n[25]=k=>Se.content=k),rows:"14",placeholder:"输入提示词内容"},null,512),[[at,Se.content]])]),a("label",$v,[n[100]||(n[100]=a("span",null,"用法(选填)",-1)),Be(a("textarea",{"onUpdate:modelValue":n[26]||(n[26]=k=>Se.usage=k),rows:"4",placeholder:"输入适用场景"},null,512),[[at,Se.usage]])])])])])])])):l.value&&o.activePanel==="settings"?(m(),b("section",Ov,[a("div",Dv,[l.value&&o.settingsPage==="prompt"?(m(),b(X,{key:0},[a("div",Pv,[a("div",Uv,[a("button",{type:"button",class:"mini-button","aria-label":"返回模型配置",onClick:n[27]||(n[27]=k=>o.settingsPage="")},"←"),n[101]||(n[101]=a("h2",null,"提示词配置",-1))])]),It(bl,{endpoint:$e(it)("/api/prompt-config"),onSaved:Pi},null,8,["endpoint"])],64)):(m(),b(X,{key:1},[a("div",Bv,[n[102]||(n[102]=a("h2",null,"模型配置",-1)),a("button",{class:"primary",onClick:Ui,disabled:!o.login},"保存",8,zv)]),o.login?(m(),b("form",{key:1,class:"settings-form",onSubmit:me(Ui,["prevent"])},[l.value?(m(),b("button",{key:0,type:"button",class:"settings-prompt-entry",onClick:n[28]||(n[28]=k=>o.settingsPage="prompt")},[...n[103]||(n[103]=[a("strong",null,"提示词配置",-1),a("span",{"aria-hidden":"true"},"›",-1)])])):C("",!0),a("section",Hv,[n[105]||(n[105]=a("header",{class:"settings-card-head"},[a("strong",null,"模型")],-1)),a("div",jv,[a("label",Gv,[n[104]||(n[104]=a("span",null,"供应商",-1)),It(ir,{modelValue:je.value,"onUpdate:modelValue":n[29]||(n[29]=k=>je.value=k),options:nd(o.login.providers),"aria-label":"供应商",onChange:Nu},null,8,["modelValue","options"])]),(m(!0),b(X,null,fe(o.login.fields,k=>(m(),b("label",{key:k.key,class:"settings-field"},[a("span",null,[Jn(S(Xr(k.label)),1),k.required?(m(),b("i",qv)):C("",!0)]),k.options?(m(),Ge(ir,{key:0,modelValue:et[k.key],"onUpdate:modelValue":A=>et[k.key]=A,options:sd(k),"aria-label":Xr(k.label)},null,8,["modelValue","onUpdate:modelValue","options","aria-label"])):Be((m(),b("input",{key:1,"onUpdate:modelValue":A=>et[k.key]=A,type:k.secret?"password":"text",placeholder:k.placeholder||`请输入${Xr(k.label)}`},null,8,Wv)),[[Ig,et[k.key]]])]))),128))])]),l.value?(m(),b("section",Kv,[n[108]||(n[108]=a("header",{class:"settings-card-head"},[a("strong",null,"CPA")],-1)),a("div",Vv,[a("label",Zv,[n[106]||(n[106]=a("span",null,"URL",-1)),Be(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),[[at,o.cpaConfig.url]])]),a("label",Qv,[n[107]||(n[107]=a("span",null,"管理密码",-1)),Be(a("input",{"onUpdate:modelValue":n[31]||(n[31]=k=>o.cpaConfig.password=k),type:"password",placeholder:"请输入管理密码",autocomplete:"new-password"},null,512),[[at,o.cpaConfig.password]])])])])):C("",!0),l.value?(m(),b("section",Yv,[a("header",Xv,[n[109]||(n[109]=a("div",null,[a("strong",null,"工具"),a("small",null,"内置与插件工具默认开启,关闭后立即对当前会话生效。")],-1)),a("button",{type:"button",class:"mini-button",disabled:o.busy||o.globalTools.loading,onClick:Fc},"保存",8,Jv)]),a("div",ew,[(m(!0),b(X,null,fe(o.globalTools.items,k=>(m(),b("label",{key:k.name,class:"plugin-settings-row"},[a("span",null,[a("strong",null,[a("code",null,S(k.name),1)]),a("small",null,S(k.source==="plugin"?`插件 · ${k.pluginName||k.pluginId}`:k.source==="external"?"外部工具":"内置工具"),1)]),a("span",tw,[Be(a("input",{"onUpdate:modelValue":A=>k.configuredEnabled=A,type:"checkbox","aria-label":k.name},null,8,nw),[[Va,k.configuredEnabled]]),n[110]||(n[110]=a("span",{"aria-hidden":"true"},null,-1))])]))),128))])])):C("",!0),l.value?(m(),b("section",sw,[a("header",rw,[n[111]||(n[111]=a("strong",null,"插件",-1)),o.globalPlugins.installationSupported?(m(),b("button",{key:0,type:"button",class:"mini-button",disabled:o.globalPlugins.locked||o.globalPlugins.loading,onClick:Gc},"安装可信插件",8,ow)):C("",!0),a("button",{type:"button",class:"mini-button",disabled:o.globalPlugins.locked||o.globalPlugins.loading,onClick:jc},"保存",8,iw)]),a("div",aw,[(m(!0),b(X,null,fe(o.globalPlugins.items,k=>(m(),b("div",{key:k.id,class:"plugin-settings-row"},[a("span",null,[a("strong",null,S(k.name),1),a("small",null,S(k.tools.length)+" 个工具",1)]),a("span",lw,[Be(a("input",{"onUpdate:modelValue":A=>k.configuredEnabled=A,type:"checkbox",disabled:o.globalPlugins.locked,"aria-label":k.name},null,8,cw),[[Va,k.configuredEnabled]]),n[112]||(n[112]=a("span",{"aria-hidden":"true"},null,-1))]),o.globalPlugins.installationSupported?(m(),b("button",{key:0,type:"button",class:"mini-button",disabled:o.globalPlugins.locked||o.globalPlugins.loading,onClick:A=>qc(k)},"卸载",8,uw)):C("",!0)]))),128))])])):C("",!0)],32)):(m(),b("div",Fv,"正在加载配置…"))],64))])])):(m(),b("section",dw,[a("div",gw,[n[113]||(n[113]=a("h2",null,"运行时能力",-1)),a("div",fw,[(m(),b(X,null,fe(["流式模型循环","工具执行","上下文指标","会话恢复","后台代理","登录配置","图片附件","Markdown 输出"],k=>a("div",{key:k,class:"capability-card"},S(k),1)),64))])])]))]),o.toast?(m(),b("div",pw,S(o.toast),1)):C("",!0)]),(m(),Ge(gt,{to:"body"},[o.coreVersion?(m(),b("div",{key:0,class:Y(["core-version",{celebrating:o.coreEasterEgg}]),role:"button",tabindex:"0",title:`内核版本 ${o.coreVersion} · 点击试试`,onClick:ln,onKeydown:[ft(me(ln,["prevent"]),["enter"]),ft(me(ln,["prevent"]),["space"])]},[n[114]||(n[114]=a("span",{class:"core-version-spark spark-a","aria-hidden":"true"},null,-1)),n[115]||(n[115]=a("span",{class:"core-version-spark spark-b","aria-hidden":"true"},null,-1)),n[116]||(n[116]=a("span",{class:"core-version-spark spark-c","aria-hidden":"true"},null,-1)),a("span",null,"内核版本 "+S(o.coreVersion),1)],42,hw)):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.cwdPicker.open?(m(),b("div",{key:0,class:"cwd-picker-backdrop",onClick:me(qs,["self"])},[a("section",mw,[a("header",{class:"cwd-picker-head"},[n[117]||(n[117]=a("strong",null,"CWD",-1)),a("button",{type:"button","aria-label":"关闭",onClick:qs},"×")]),a("form",{class:"cwd-picker-path",onSubmit:n[33]||(n[33]=me(k=>Ws(),["prevent"]))},[Be(a("input",{"onUpdate:modelValue":n[32]||(n[32]=k=>o.cwdPicker.input=k),autocomplete:"off",spellcheck:"false","aria-label":"工作目录路径"},null,512),[[at,o.cwdPicker.input]]),a("button",{type:"submit",disabled:o.cwdPicker.loading},"前往",8,bw),a("button",{type:"button",disabled:o.cwdPicker.mutating,onClick:fd},"新建",8,kw)],32),a("div",yw,[o.cwdPicker.parent?(m(),b("button",{key:0,type:"button",onClick:n[34]||(n[34]=k=>Ws(o.cwdPicker.parent))},"← 上级")):C("",!0),a("span",null,S(o.cwdPicker.selectedPath||o.cwdPicker.cwd),1)]),a("div",vw,[a("nav",ww,[(m(!0),b(X,null,fe(o.cwdPicker.locations,k=>(m(),b("button",{key:`${k.id}-${k.path}`,type:"button",class:Y({active:o.cwdPicker.cwd===k.path}),title:k.path,onClick:A=>Ws(k.path)},[a("span",xw,S(k.kind==="drive"||k.kind==="volume"?"▣":k.kind==="home"?"◆":"◇"),1),a("strong",null,S(k.label),1)],10,_w))),128))]),a("div",Sw,[o.cwdPicker.loading?(m(),b("div",Ew,"读取中")):o.cwdPicker.error?(m(),b("div",Tw,S(o.cwdPicker.error),1)):(m(),Ge(Qh,{key:2,nodes:o.cwdPicker.treeRoots,children:o.cwdPicker.treeChildren,expanded:o.cwdPicker.treeExpanded,"selected-path":o.cwdPicker.selectedPath,"allow-delete":!1,onToggle:dd,onSelect:gd,onDelete:pd},null,8,["nodes","children","expanded","selected-path"]))])]),a("footer",Iw,[a("button",{type:"button",onClick:qs},"取消"),a("button",{type:"button",class:"primary",disabled:o.cwdPicker.mutating||o.cwdPicker.loading,onClick:hd},"选择",8,Aw)])])])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.projectContextOpen?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:me(no,["self"])},[a("section",Cw,[a("header",Mw,[a("div",null,[o.projectContextDocument?(m(),b("span",Rw,S(o.projectContextDocument.path),1)):C("",!0),a("strong",null,S(((B=o.projectContextDocument)==null?void 0:B.name)||"项目上下文"),1)]),a("button",{type:"button","aria-label":o.projectContextDocument?"返回":"关闭",onClick:no},"×",8,Nw)]),a("div",Lw,[o.projectContextDocument?(m(),b("pre",Dw,S(o.projectContextDocument.content),1)):(m(),b("div",$w,[(m(!0),b(X,null,fe(Rn.value,k=>(m(),b("button",{key:k.path,type:"button",class:"runtime-context-index-item",onClick:A=>ad(k)},[a("span",null,[a("strong",null,S(k.name),1),a("small",null,S(mn(k.chars||0))+" 字符",1)]),n[118]||(n[118]=a("b",null,"›",-1))],8,Ow))),128))]))])])])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.confirmDialog.open?(m(),b("div",{key:0,class:"confirm-dialog-backdrop",onClick:n[37]||(n[37]=me(k=>cn(!1),["self"]))},[a("section",{class:"confirm-dialog",role:"alertdialog","aria-modal":"true","aria-label":o.confirmDialog.title},[a("div",{class:Y(["confirm-dialog-icon",`tone-${o.confirmDialog.tone}`]),"aria-hidden":"true"},"!",2),a("div",Uw,[a("h3",null,S(o.confirmDialog.title),1),a("p",null,S(o.confirmDialog.message),1)]),a("div",Bw,[a("button",{type:"button",class:"ghost",onClick:n[35]||(n[35]=k=>cn(!1))},S(o.confirmDialog.cancelLabel),1),a("button",{type:"button",class:Y(["primary",{danger:o.confirmDialog.tone==="danger"}]),onClick:n[36]||(n[36]=k=>cn(!0))},S(o.confirmDialog.confirmLabel),3)])],8,Pw)])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.modelModalOpen?(m(),b("div",{key:0,class:"context-window-backdrop",onClick:me(Bn,["self"])},[a("section",{class:"context-window-modal session-model-modal",role:"dialog","aria-modal":"true","aria-label":"选择模型",onKeydown:Oi},[a("form",{onSubmit:me(xu,["prevent"])},[a("header",{class:"session-model-header"},[n[119]||(n[119]=a("h2",null,"模型",-1)),a("button",{type:"button",class:"ghost","aria-label":"关闭模型选择",onClick:Bn},"×")]),Be(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),[[at,o.modelSearch]]),a("div",zw,[(m(!0),b(X,null,fe(Ec.value,k=>(m(),b("label",{key:k,class:Y(["session-model-option",{selected:o.modelDraft===k}])},[Be(a("input",{"onUpdate:modelValue":n[39]||(n[39]=A=>o.modelDraft=A),type:"radio",name:"session-model",value:k,disabled:o.modelSaving},null,8,Fw),[[Za,o.modelDraft]]),a("span",null,S(k),1)],2))),128))]),a("fieldset",{class:"session-reasoning-options",disabled:o.modelSaving},[n[120]||(n[120]=a("legend",null,"推理强度",-1)),(m(!0),b(X,null,fe(ps.value,k=>(m(),b("label",{key:k,class:Y({selected:o.reasoningDraft===k})},[Be(a("input",{"onUpdate:modelValue":n[40]||(n[40]=A=>o.reasoningDraft=A),type:"radio",name:"session-reasoning",value:k},null,8,jw),[[Za,o.reasoningDraft]]),a("span",null,S(k==="default"?"默认":k==="off"?"关闭":k),1)],2))),128))],8,Hw),o.modelError?(m(),b("p",Gw,S(o.modelError),1)):C("",!0),a("div",qw,[a("button",{type:"button",class:"ghost",onClick:Bn},"取消"),a("button",{type:"submit",class:"primary",disabled:o.modelSaving||!o.modelDraft},S(o.modelSaving?"保存中…":"确认"),9,Ww)])],32)],32)])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.contextWindowModalOpen?(m(),b("div",{key:0,class:"context-window-backdrop",onClick:me(Ns,["self"])},[a("section",{class:"context-window-modal",role:"dialog","aria-modal":"true","aria-label":"上下文窗口",onKeydown:Oi},[a("form",{onSubmit:me(Tu,["prevent"])},[n[122]||(n[122]=a("label",{for:"context-window-input"},"上下文窗口",-1)),a("div",Kw,[Be(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:Eu},null,544),[[at,o.contextWindowDraft]]),n[121]||(n[121]=a("span",{id:"context-window-unit"},"k",-1))]),o.contextWindowError?(m(),b("p",Vw,S(o.contextWindowError),1)):C("",!0),a("div",Zw,[a("button",{type:"button",class:"ghost",onClick:Ns},"取消"),a("button",{type:"submit",class:"primary",disabled:o.contextWindowSaving},S(o.contextWindowSaving?"保存中…":"确认"),9,Qw)])],32)],32)])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.imagePreview?(m(),b("div",{key:0,class:"image-preview-backdrop",onClick:me(qr,["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:qr},"×"),a("div",Xw,[a("img",{src:o.imagePreview.src,alt:o.imagePreview.caption||"图片预览"},null,8,Jw)]),o.imagePreview.caption?(m(),b("footer",e0,S(o.imagePreview.caption),1)):C("",!0)],8,Yw)])):C("",!0)])),(m(),Ge(gt,{to:"body"},[xt.value?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:me(Ps,["self"])},[a("section",t0,[a("header",{class:"runtime-context-modal-head"},[n[123]||(n[123]=a("div",null,[a("strong",null,"压缩上下文详情")],-1)),a("button",{type:"button","aria-label":"关闭",onClick:Ps},"×")]),a("div",n0,[a("dl",s0,[a("div",null,[n[124]||(n[124]=a("dt",null,"压缩方式",-1)),a("dd",null,S(zu(xt.value)),1)]),a("div",null,[n[125]||(n[125]=a("dt",null,"发生时间",-1)),a("dd",null,S(Fi(xt.value.compaction.createdAt)),1)]),a("div",null,[n[126]||(n[126]=a("dt",null,"新窗口消息",-1)),a("dd",null,S(xt.value.compaction.newWindowMessages),1)]),a("div",null,[n[127]||(n[127]=a("dt",null,"保留用户消息",-1)),a("dd",null,S(xt.value.compaction.preservedUserMessages),1)]),a("div",null,[n[128]||(n[128]=a("dt",null,"释放字符",-1)),a("dd",null,S(mn(xt.value.compaction.charsFreed)),1)]),a("div",null,[n[129]||(n[129]=a("dt",null,"图片引用",-1)),a("dd",null,S(xt.value.compaction.imageCount||0),1)])]),n[130]||(n[130]=a("h3",null,"实际续接上下文",-1)),a("pre",null,S(xt.value.compaction.continuationState||xt.value.compaction.summary||"未提供续接上下文"),1)])])])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.runtimeContextModal?(m(),b("div",{key:0,class:"runtime-context-modal-backdrop",onClick:me(eo,["self"])},[a("section",r0,[a("header",o0,[a("div",null,[a("strong",null,S(o.runtimeContextModal==="prompt"?"系统提示词":o.runtimeContextModal==="tools"?"可用工具":"会话插件"),1)]),a("button",{type:"button","aria-label":"关闭",onClick:eo},"×")]),a("div",i0,[!$e(Ve).isolation&&o.runtimeContextModal==="prompt"?(m(),Ge(bl,{key:0,endpoint:z("/api/session-prompt"),session:"","runtime-prompt":(ge=o.runtimeContext)==null?void 0:ge.prompt,onSaved:Pi},null,8,["endpoint","runtime-prompt"])):o.runtimeContextModal==="tools"?(m(),b("div",a0,[o.sessionTools.loading?(m(),b("div",l0,"同步中")):(m(),b(X,{key:1},[a("div",c0,[a("span",null,"可用 "+S(Dc.value)+" / "+S(o.sessionTools.items.length),1)]),(m(!0),b(X,null,fe(o.sessionTools.items,k=>(m(),b("div",{key:k.name,class:"runtime-plugin-row"},[a("button",{type:"button",class:"runtime-tool-detail-button",disabled:!$r.value.some(A=>A.name===k.name),onClick:A=>md($r.value.find(Xe=>Xe.name===k.name))},[a("code",null,S(k.name),1),a("small",null,S(k.available===!1?`插件未启用 · ${k.pluginName||k.pluginId}`:k.source==="plugin"?`插件 · ${k.pluginName||k.pluginId}`:k.source==="external"?"外部工具":"内置工具"),1)],8,u0),It(ir,{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":A=>Hc(k,A)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))],64))])):(m(),b("div",d0,[o.sessionPlugins.loading?(m(),b("div",g0,"同步中")):(m(!0),b(X,{key:1},fe(o.sessionPlugins.items,k=>(m(),b("div",{key:k.id,class:"runtime-plugin-row"},[a("span",null,[a("strong",null,S(k.name),1),a("small",null,S(k.tools.length)+" 个工具",1)]),It(ir,{class:"runtime-plugin-control","model-value":k.mode,options:d,disabled:o.sessionPlugins.busy||!k.globallyEnabled,"aria-label":`${k.name}状态`,"data-mode":k.mode,"onUpdate:modelValue":A=>Wc(k,A)},null,8,["model-value","disabled","aria-label","data-mode","onUpdate:modelValue"])]))),128))]))])])])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.runtimeContextDetail?(m(),b("div",{key:0,class:"runtime-context-detail-backdrop",onClick:me(to,["self"])},[a("section",{class:"runtime-context-detail-modal",role:"dialog","aria-modal":"true","aria-label":o.runtimeContextDetail.title},[a("header",p0,[a("div",null,[o.runtimeContextDetail.meta?(m(),b("span",h0,S(o.runtimeContextDetail.meta),1)):C("",!0),a("strong",null,S(o.runtimeContextDetail.title),1)]),a("button",{type:"button","aria-label":"返回",onClick:to},"×")]),a("div",m0,[o.runtimeContextDetail.kind==="tool"?(m(),b(X,{key:0},[o.runtimeContextDetail.description?(m(),b("p",b0,S(o.runtimeContextDetail.description),1)):C("",!0),a("pre",null,S(o.runtimeContextDetail.schema),1)],64)):(m(),b("pre",k0,S(o.runtimeContextDetail.content),1))])],8,f0)])):C("",!0)])),(m(),Ge(gt,{to:"body"},[o.backgroundTaskDetail?(m(),b("div",{key:0,class:"tool-result-modal-backdrop",onClick:me(Gs,["self"])},[a("section",y0,[a("header",v0,[a("div",w0,[n[131]||(n[131]=a("strong",null,"后台任务",-1)),a("span",_0,S(An.value.length),1)]),a("button",{type:"button",class:"tool-result-modal-close","aria-label":"关闭",onClick:Gs},"×")]),a("div",{class:Y(["tool-result-modal-content","background-task-page",{single:An.value.length<=1}])},[An.value.length>1?(m(),b("nav",x0,[(m(!0),b(X,null,fe(An.value,k=>(m(),b("button",{key:Yt(k),type:"button",class:Y(["background-task-index-item",{active:Yt(k)===Yt(o.backgroundTaskDetail)}]),title:Hs(k),onClick:A=>Qr(k)},[a("span",{class:Y(["background-task-dot",`status-${k.status}`])},null,2),a("span",E0,[a("strong",null,S(js(k)),1),a("small",null,S(Yr(k.status)),1)])],10,S0))),128))])):C("",!0),a("article",T0,[a("header",I0,[a("div",A0,[a("span",{class:Y(["background-task-dot",`status-${o.backgroundTaskDetail.status}`])},null,2),a("strong",null,S(js(o.backgroundTaskDetail)),1)]),a("span",{class:Y(["tool-result-modal-status",`status-${o.backgroundTaskDetail.status}`])},S(Yr(o.backgroundTaskDetail.status)),3)]),a("dl",C0,[sa(o.backgroundTaskDetail)?(m(),b("div",M0,[n[132]||(n[132]=a("dt",null,"耗时",-1)),a("dd",null,S(sa(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.cwd?(m(),b("div",R0,[n[133]||(n[133]=a("dt",null,"目录",-1)),a("dd",null,S(o.backgroundTaskDetail.cwd),1)])):C("",!0)]),a("div",N0,[o.backgroundTaskDetail.kind!=="agent"&&ra(o.backgroundTaskDetail)?(m(),b("section",L0,[n[134]||(n[134]=a("header",null,"命令",-1)),a("pre",$0,S(ra(o.backgroundTaskDetail)),1)])):C("",!0),o.backgroundTaskDetail.kind==="terminal"?(m(),Ge(yf,{key:1,"owner-session-id":o.backgroundTaskDetail.ownerSessionId||((Ie=o.session)==null?void 0:Ie.sessionId),"run-id":o.backgroundTaskDetail.sessionId},null,8,["owner-session-id","run-id"])):C("",!0),o.backgroundTaskDetail.kind==="agent"?(m(),b("div",O0,[It(If,{"owner-session-id":(Bt=o.session)==null?void 0:Bt.sessionId,task:o.backgroundTaskDetail,"render-markdown":qu},null,8,["owner-session-id","task"])])):C("",!0)])])],2)])])):C("",!0),ut.value?(m(),b("div",{key:1,class:"tool-result-modal-backdrop",onClick:me(gn,["self"])},[a("section",{class:"tool-result-modal",onKeydown:Wu,role:"dialog","aria-modal":"true","aria-label":`${Zt(ut.value)}详情`},[a("header",P0,[a("div",null,[a("div",U0,[a("strong",null,S(Zt(ut.value)),1),a("span",{class:Y(["tool-result-modal-status",`status-${Ot(ut.value).key}`])},S(Ot(ut.value).label),3)]),Zi(ut.value)?(m(),b("p",B0,S(Zi(ut.value)),1)):C("",!0)]),a("button",{type:"button",class:"tool-result-modal-close","aria-label":"关闭工具结果",onClick:gn},"×")]),a("div",z0,[Ut(ut.value)?(m(),b("div",{key:0,class:"message-text markdown tool-detail-markdown",innerHTML:bd(ut.value)},null,8,F0)):C("",!0)]),a("footer",{class:"tool-result-modal-footer"},[a("button",{type:"button",class:"primary",onClick:gn},"关闭")])],40,D0)])):C("",!0)]))],64)}}};export{X0 as default};
|