@deepseekcode/cli 1.0.17 → 1.0.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.
Files changed (35) hide show
  1. package/dist/cli.js +1014 -1004
  2. package/package.json +1 -1
  3. package/web/dist/assets/{AgentFlowView-D-nPVDb9.js → AgentFlowView-qR01S0jV.js} +1 -1
  4. package/web/dist/assets/{AgentsView-DHNgV13S.js → AgentsView-CLvG8aae.js} +1 -1
  5. package/web/dist/assets/{AuditView-ZCIV7Q0I.js → AuditView-CMYlGV9S.js} +1 -1
  6. package/web/dist/assets/{AutomationView-By6rBhla.js → AutomationView-wrcdqhJY.js} +1 -1
  7. package/web/dist/assets/{ChannelConfigView-_cIgiA-O.js → ChannelConfigView-DM70m5RE.js} +1 -1
  8. package/web/dist/assets/{ConnectorsView-BQQ_k_7I.js → ConnectorsView-B5ndd8pU.js} +1 -1
  9. package/web/dist/assets/{FileTreeView-DKUEkVqn.js → FileTreeView-DL66cxki.js} +1 -1
  10. package/web/dist/assets/{HookConfigView-DbkxVuAs.js → HookConfigView-BugHBHlO.js} +2 -2
  11. package/web/dist/assets/{InboxView-B3ddpq78.js → InboxView-DLPWNrqG.js} +1 -1
  12. package/web/dist/assets/ModelsView-CwhL9YPX.js +2 -0
  13. package/web/dist/assets/SessionGrid-CC1NAZ45.js +26 -0
  14. package/web/dist/assets/SettingsPanel-n1UbEjzX.js +4 -0
  15. package/web/dist/assets/{SkillsView-BwJowYXS.js → SkillsView-DznSS50I.js} +1 -1
  16. package/web/dist/assets/{TemplatesTab-BB-6z4z4.js → TemplatesTab-BPD0hvrG.js} +1 -1
  17. package/web/dist/assets/{TerminalView-D9e8fyOS.js → TerminalView-B4WUBGzA.js} +1 -1
  18. package/web/dist/assets/{ToolsView-CQ3hybgP.js → ToolsView-CQgPyD6U.js} +1 -1
  19. package/web/dist/assets/{icons-B5yCkBjC.js → icons-CrV0VGFQ.js} +107 -82
  20. package/web/dist/assets/index-DMxlsuNM.js +20 -0
  21. package/web/dist/assets/index-DjWfcgLQ.css +1 -0
  22. package/web/dist/assets/{markdown-D0iUI0Yw.js → markdown-CaPdHFK5.js} +1 -1
  23. package/web/dist/assets/panels-B3UcQJtY.js +1 -0
  24. package/web/dist/assets/{react-vendor-Bxu3r3ox.js → react-vendor-DnYXnA42.js} +1 -1
  25. package/web/dist/assets/{state-C80Yzgl0.js → state-BHmvnECu.js} +1 -1
  26. package/web/dist/index.html +6 -6
  27. package/web/dist/assets/AskQuestionModal-BKkh6JlF.js +0 -1
  28. package/web/dist/assets/HookApprovalModal-DC_q-If8.js +0 -1
  29. package/web/dist/assets/HookApprovalPreview-C8fU_Umi.js +0 -3
  30. package/web/dist/assets/ModelsView-B2N4jMxM.js +0 -1
  31. package/web/dist/assets/SessionGrid-CnK6naC_.js +0 -23
  32. package/web/dist/assets/SettingsPanel-czOfv9mx.js +0 -3
  33. package/web/dist/assets/index-DVZ3Ws5S.css +0 -1
  34. package/web/dist/assets/index-YAnKQ1Q6.js +0 -20
  35. package/web/dist/assets/panels-DOT_5rsR.js +0 -1
@@ -0,0 +1,26 @@
1
+ import{j as e,M as _n,P as at}from"./markdown-CaPdHFK5.js";import{r as c,v as In,ay as zt,h as je,a as me,b as Ie,ai as Be,X as Se,aB as it,aC as Bt,m as be,s as ot,L as Re,au as mt,F as lt,aD as ct,aE as Rn,D as Dn,t as On,N as Ln,aa as Mn,aF as jt,aG as $n,R as Ee,Y as Fn,a4 as Pn,aH as zn,x as Ut,aj as Ht,aI as Bn,av as Un,y as Hn,aJ as Gn,aK as qn,K as Wn,aL as Kn,ao as Jn,aM as Yn,aq as Xn,q as Zn,aN as Gt,C as Vn,aO as Qn,a0 as es,aP as ts,a2 as ns,u as ss,an as rs,af as as}from"./icons-CrV0VGFQ.js";import{i as Z,e as J,j as De,k as qt,w as W,l as dt,u as he,R as Wt,a as le,t as X,m as ae,n as is,W as os,o as ls,p as ut,b as Kt,q as pt,M as cs,r as ds,s as us,v as ps,x as xs,c as ms,A as $e,y as fs,d as Jt}from"./index-DMxlsuNM.js";import"./react-vendor-DnYXnA42.js";import"./state-BHmvnECu.js";function Et({value:r,max:t=100,size:n="md",variant:s="default",showLabel:a=!1,className:l}){const u=Math.min(Math.max(r/t*100,0),100),o={sm:"h-1",md:"h-2",lg:"h-3"},i={default:"bg-accent-blue",success:"bg-accent-green",warning:"bg-accent-yellow",error:"bg-accent-red"};return e.jsxs("div",{className:Z("w-full",l),children:[e.jsx("div",{className:Z("w-full bg-dark-border rounded-full overflow-hidden",o[n]),children:e.jsx("div",{className:Z("h-full rounded-full transition-all duration-300",i[s]),style:{width:`${u}%`}})}),a&&e.jsxs("span",{className:"text-xs text-dark-muted mt-1",children:[Math.round(u),"%"]})]})}Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(r){r.languages.typescript=r.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),r.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete r.languages.typescript.parameter,delete r.languages.typescript["literal-property"];var t=r.languages.extend("typescript",{});delete t["class-name"],r.languages.typescript["class-name"].inside=t,r.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),r.languages.ts=r.languages.typescript})(Prism);(function(r){var t=r.util.clone(r.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,s=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function l(i,d){return i=i.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return s}).replace(/<SPREAD>/g,function(){return a}),RegExp(i,d)}a=l(a).source,r.languages.jsx=r.languages.extend("markup",t),r.languages.jsx.tag.pattern=l(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),r.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,r.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,r.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,r.languages.jsx.tag.inside.comment=t.comment,r.languages.insertBefore("inside","attr-name",{spread:{pattern:l(/<SPREAD>/.source),inside:r.languages.jsx}},r.languages.jsx.tag),r.languages.insertBefore("inside","special-attr",{script:{pattern:l(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:r.languages.jsx}}},r.languages.jsx.tag);var u=function(i){return i?typeof i=="string"?i:typeof i.content=="string"?i.content:i.content.map(u).join(""):""},o=function(i){for(var d=[],p=0;p<i.length;p++){var x=i[p],f=!1;if(typeof x!="string"&&(x.type==="tag"&&x.content[0]&&x.content[0].type==="tag"?x.content[0].content[0].content==="</"?d.length>0&&d[d.length-1].tagName===u(x.content[0].content[1])&&d.pop():x.content[x.content.length-1].content==="/>"||d.push({tagName:u(x.content[0].content[1]),openedBraces:0}):d.length>0&&x.type==="punctuation"&&x.content==="{"?d[d.length-1].openedBraces++:d.length>0&&d[d.length-1].openedBraces>0&&x.type==="punctuation"&&x.content==="}"?d[d.length-1].openedBraces--:f=!0),(f||typeof x=="string")&&d.length>0&&d[d.length-1].openedBraces===0){var g=u(x);p<i.length-1&&(typeof i[p+1]=="string"||i[p+1].type==="plain-text")&&(g+=u(i[p+1]),i.splice(p+1,1)),p>0&&(typeof i[p-1]=="string"||i[p-1].type==="plain-text")&&(g=u(i[p-1])+g,i.splice(p-1,1),p--),i[p]=new r.Token("plain-text",g,null,g)}x.content&&typeof x.content!="string"&&o(x.content)}};r.hooks.add("after-tokenize",function(i){i.language!=="jsx"&&i.language!=="tsx"||o(i.tokens)})})(Prism);(function(r){var t=r.util.clone(r.languages.typescript);r.languages.tsx=r.languages.extend("jsx",t),delete r.languages.tsx.parameter,delete r.languages.tsx["literal-property"];var n=r.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0})(Prism);(function(r){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var n=r.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))})(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;(function(r){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},s={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};r.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:s},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:s},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:s.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:s.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=r.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],l=s.variable[1].inside,u=0;u<a.length;u++)l[a[u]]=r.languages.bash[a[u]];r.languages.sh=r.languages.bash,r.languages.shell=r.languages.bash})(Prism);Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;(function(r){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(p){return p=p.replace(/<inner>/g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+p+")")}var s=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return s}),l=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;r.languages.markdown=r.languages.extend("markup",{}),r.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:r.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+l+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+l+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(s),inside:r.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+l+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(s),alias:"important",inside:r.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(p){["url","bold","italic","strike","code-snippet"].forEach(function(x){p!==x&&(r.languages.markdown[p].inside.content.inside[x]=r.languages.markdown[x])})}),r.hooks.add("after-tokenize",function(p){if(p.language!=="markdown"&&p.language!=="md")return;function x(f){if(!(!f||typeof f=="string"))for(var g=0,b=f.length;g<b;g++){var y=f[g];if(y.type!=="code"){x(y.content);continue}var w=y.content[1],h=y.content[3];if(w&&h&&w.type==="code-language"&&h.type==="code-block"&&typeof w.content=="string"){var v=w.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp");v=(/[a-z][\w-]*/i.exec(v)||[""])[0].toLowerCase();var R="language-"+v;h.alias?typeof h.alias=="string"?h.alias=[h.alias,R]:h.alias.push(R):h.alias=[R]}}}x(p.tokens)}),r.hooks.add("wrap",function(p){if(p.type==="code-block"){for(var x="",f=0,g=p.classes.length;f<g;f++){var b=p.classes[f],y=/language-(.+)/.exec(b);if(y){x=y[1];break}}var w=r.languages[x];if(w)p.content=r.highlight(d(p.content),w,x);else if(x&&x!=="none"&&r.plugins.autoloader){var h="md-"+new Date().valueOf()+"-"+Math.floor(Math.random()*1e16);p.attributes.id=h,r.plugins.autoloader.loadLanguages(x,function(){var v=document.getElementById(h);v&&(v.innerHTML=r.highlight(v.textContent,r.languages[x],x))})}}});var u=RegExp(r.languages.markup.tag.pattern.source,"gi"),o={amp:"&",lt:"<",gt:">",quot:'"'},i=String.fromCodePoint||String.fromCharCode;function d(p){var x=p.replace(u,"");return x=x.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(f,g){if(g=g.toLowerCase(),g[0]==="#"){var b;return g[1]==="x"?b=parseInt(g.slice(2),16):b=Number(g.slice(1)),i(b)}else{var y=o[g];return y||f}}),x}r.languages.md=r.languages.markdown})(Prism);(function(r){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,s="(?:"+n.source+"(?:[ ]+"+t.source+")?|"+t.source+"(?:[ ]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),l=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function u(o,i){i=(i||"").replace(/m/g,"")+"m";var d=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return s}).replace(/<<value>>/g,function(){return o});return RegExp(d,i)}r.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return s})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return s}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+l+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:u(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:u(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:u(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:u(l),lookbehind:!0,greedy:!0},number:{pattern:u(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},r.languages.yml=r.languages.yaml})(Prism);Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};const gs={js:"JavaScript",ts:"TypeScript",jsx:"JSX",tsx:"TSX",py:"Python",python:"Python",bash:"Bash",shell:"Shell",css:"CSS",json:"JSON",yaml:"YAML",yml:"YAML",sql:"SQL",md:"Markdown",markdown:"Markdown",xml:"XML",html:"HTML"};function hs({language:r,code:t}){const[n,s]=c.useState(!1),a=c.useRef(null);c.useEffect(()=>{if(a.current)try{at.highlightElement(a.current)}catch{}},[t,r]);const l=async()=>{try{await navigator.clipboard.writeText(t),s(!0),setTimeout(()=>s(!1),2e3)}catch(o){console.error("Failed to copy:",o)}},u=gs[r]||r.toUpperCase();return e.jsxs("div",{className:"relative group rounded-lg overflow-hidden border border-dark-border my-2",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-dark-surface border-b border-dark-border",children:[e.jsx("span",{className:"text-xs text-dark-muted font-mono",children:u}),e.jsx("button",{onClick:l,className:"flex items-center gap-1 text-xs px-2 py-1 rounded hover:bg-dark-hover transition-colors",children:n?e.jsxs(e.Fragment,{children:[e.jsx(In,{size:12,className:"text-accent-green"}),e.jsx("span",{className:"text-accent-green",children:"已复制"})]}):e.jsxs(e.Fragment,{children:[e.jsx(zt,{size:12}),e.jsx("span",{children:"复制"})]})})]}),e.jsx("pre",{className:"bg-dark-bg p-3 overflow-x-auto custom-scrollbar text-sm",children:e.jsx("code",{ref:a,className:`language-${r}`,children:t})})]})}const St=80;function bs({content:r,className:t=""}){const[n,s]=c.useState(r),a=c.useRef(0),l=c.useRef(null),u=c.useRef(r);u.current=r,c.useEffect(()=>{if(r===n)return;const i=Date.now(),d=i-a.current;d>=St?(s(r),a.current=i):l.current||(l.current=setTimeout(()=>{l.current=null,s(u.current),a.current=Date.now()},St-d))},[r]),c.useEffect(()=>()=>{l.current&&clearTimeout(l.current)},[]);const o=(n||"").replace(/\\n/g,`
2
+ `).replace(/\n{3,}/g,`
3
+
4
+ `);return e.jsx("div",{className:`markdown-content ${t}`,style:{wordBreak:"break-word"},children:e.jsx(_n,{components:{code({className:i,children:d,...p}){const x=/language-(\w+)/.exec(i||""),f=String(d).replace(/\n$/,"");return x&&x[1]?e.jsx(hs,{language:x[1],code:f}):e.jsx("code",{className:"bg-dark-hover px-1.5 py-0.5 rounded text-sm font-mono text-accent-blue",...p,children:d})},a({href:i,children:d}){return e.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-accent-blue hover:underline",children:d})},table({children:i}){return e.jsx("div",{className:"overflow-x-auto custom-scrollbar my-2",children:e.jsx("table",{className:"w-full border-collapse border border-dark-border",children:i})})},th({children:i}){return e.jsx("th",{className:"border border-dark-border px-3 py-2 text-left bg-dark-hover font-medium",children:i})},td({children:i}){return e.jsx("td",{className:"border border-dark-border px-3 py-2",children:i})},p({children:i}){return e.jsx("p",{className:"mb-0.5 leading-snug last:mb-0",children:i})},blockquote({children:i}){return e.jsx("blockquote",{className:"border-l-4 border-accent-blue pl-3 my-1 text-dark-muted italic",children:i})},h1({children:i}){return e.jsx("h1",{className:"text-2xl font-bold mt-3 mb-1 text-dark-text border-b border-dark-border pb-1",children:i})},h2({children:i}){return e.jsx("h2",{className:"text-xl font-semibold mt-3 mb-1 text-dark-text border-b border-dark-border pb-1",children:i})},h3({children:i}){return e.jsx("h3",{className:"text-lg font-semibold mt-2 mb-1 text-dark-text",children:i})}},children:o})})}Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&amp;/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(t,n){var s={};s["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},s.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:s}};a["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var l={};l[t]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:a},Prism.languages.insertBefore("markup","cdata",l)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(r,t){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/});Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}});delete Prism.languages.go["class-name"];(function(r){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return/[^\s\S]/.source}),r.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},r.languages.rust["closure-params"].inside.rest=r.languages.rust,r.languages.rust.attribute.inside.string=r.languages.rust.string})(Prism);(function(r){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,s={pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};r.languages.java=r.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[s,{pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:s.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+n+/[A-Z]\w*\b/.source),lookbehind:!0,inside:s.inside}],keyword:t,function:[r.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),r.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),r.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":s,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+n+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+n+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:s.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})})(Prism);Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/});Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}});Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}});Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/});delete Prism.languages.c.boolean;(function(r){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return t.source});r.languages.cpp=r.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),r.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),r.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:r.languages.cpp}}}}),r.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),r.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:r.languages.extend("cpp",{})}}),r.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},r.languages.cpp["base-clause"])})(Prism);(function(r){function t(n,s){return"___"+n.toUpperCase()+s+"___"}Object.defineProperties(r.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,s,a,l){if(n.language===s){var u=n.tokenStack=[];n.code=n.code.replace(a,function(o){if(typeof l=="function"&&!l(o))return o;for(var i=u.length,d;n.code.indexOf(d=t(s,i))!==-1;)++i;return u[i]=o,d}),n.grammar=r.languages.markup}}},tokenizePlaceholders:{value:function(n,s){if(n.language!==s||!n.tokenStack)return;n.grammar=r.languages[s];var a=0,l=Object.keys(n.tokenStack);function u(o){for(var i=0;i<o.length&&!(a>=l.length);i++){var d=o[i];if(typeof d=="string"||d.content&&typeof d.content=="string"){var p=l[a],x=n.tokenStack[p],f=typeof d=="string"?d:d.content,g=t(s,p),b=f.indexOf(g);if(b>-1){++a;var y=f.substring(0,b),w=new r.Token(s,r.tokenize(x,n.grammar),"language-"+s,x),h=f.substring(b+g.length),v=[];y&&v.push.apply(v,u([y])),v.push(w),h&&v.push.apply(v,u([h])),typeof d=="string"?o.splice.apply(o,[i,1].concat(v)):d.content=v}}else d.content&&u(d.content)}return o}u(n.tokens)}}})})(Prism);(function(r){var t=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,n=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],s=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,a=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,l=/[{}\[\](),:;]/;r.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:t,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:s,operator:a,punctuation:l};var u={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:r.languages.php},o=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:u}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:u}}];r.languages.insertBefore("php","variable",{string:o,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:t,string:o,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,number:s,operator:a,punctuation:l}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),r.hooks.add("before-tokenize",function(i){if(/<\?/.test(i.code)){var d=/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g;r.languages["markup-templating"].buildPlaceholders(i,"php",d)}}),r.hooks.add("after-tokenize",function(i){r.languages["markup-templating"].tokenizePlaceholders(i,"php")})})(Prism);(function(r){r.languages.ruby=r.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),r.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:r.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete r.languages.ruby.function;var n="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",s=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;r.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+n+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+s),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+s+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),r.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete r.languages.ruby.string,r.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),r.languages.rb=r.languages.ruby})(Prism);class ks{diff(t,n,s={}){let a;typeof s=="function"?(a=s,s={}):"callback"in s&&(a=s.callback);const l=this.castInput(t,s),u=this.castInput(n,s),o=this.removeEmpty(this.tokenize(l,s)),i=this.removeEmpty(this.tokenize(u,s));return this.diffWithOptionsObj(o,i,s,a)}diffWithOptionsObj(t,n,s,a){var l;const u=v=>{if(v=this.postProcess(v,s),a){setTimeout(function(){a(v)},0);return}else return v},o=n.length,i=t.length;let d=1,p=o+i;s.maxEditLength!=null&&(p=Math.min(p,s.maxEditLength));const x=(l=s.timeout)!==null&&l!==void 0?l:1/0,f=Date.now()+x,g=[{oldPos:-1,lastComponent:void 0}];let b=this.extractCommon(g[0],n,t,0,s);if(g[0].oldPos+1>=i&&b+1>=o)return u(this.buildValues(g[0].lastComponent,n,t));let y=-1/0,w=1/0;const h=()=>{for(let v=Math.max(y,-d);v<=Math.min(w,d);v+=2){let R;const C=g[v-1],N=g[v+1];C&&(g[v-1]=void 0);let A=!1;if(N){const T=N.oldPos-v;A=N&&0<=T&&T<o}const L=C&&C.oldPos+1<i;if(!A&&!L){g[v]=void 0;continue}if(!L||A&&C.oldPos<N.oldPos?R=this.addToPath(N,!0,!1,0,s):R=this.addToPath(C,!1,!0,1,s),b=this.extractCommon(R,n,t,v,s),R.oldPos+1>=i&&b+1>=o)return u(this.buildValues(R.lastComponent,n,t))||!0;g[v]=R,R.oldPos+1>=i&&(w=Math.min(w,v-1)),b+1>=o&&(y=Math.max(y,v+1))}d++};if(a)(function v(){setTimeout(function(){if(d>p||Date.now()>f)return a(void 0);h()||v()},0)})();else for(;d<=p&&Date.now()<=f;){const v=h();if(v)return v}}addToPath(t,n,s,a,l){const u=t.lastComponent;return u&&!l.oneChangePerToken&&u.added===n&&u.removed===s?{oldPos:t.oldPos+a,lastComponent:{count:u.count+1,added:n,removed:s,previousComponent:u.previousComponent}}:{oldPos:t.oldPos+a,lastComponent:{count:1,added:n,removed:s,previousComponent:u}}}extractCommon(t,n,s,a,l){const u=n.length,o=s.length;let i=t.oldPos,d=i-a,p=0;for(;d+1<u&&i+1<o&&this.equals(s[i+1],n[d+1],l);)d++,i++,p++,l.oneChangePerToken&&(t.lastComponent={count:1,previousComponent:t.lastComponent,added:!1,removed:!1});return p&&!l.oneChangePerToken&&(t.lastComponent={count:p,previousComponent:t.lastComponent,added:!1,removed:!1}),t.oldPos=i,d}equals(t,n,s){return s.comparator?s.comparator(t,n):t===n||!!s.ignoreCase&&t.toLowerCase()===n.toLowerCase()}removeEmpty(t){const n=[];for(let s=0;s<t.length;s++)t[s]&&n.push(t[s]);return n}castInput(t,n){return t}tokenize(t,n){return Array.from(t)}join(t){return t.join("")}postProcess(t,n){return t}get useLongestToken(){return!1}buildValues(t,n,s){const a=[];let l;for(;t;)a.push(t),l=t.previousComponent,delete t.previousComponent,t=l;a.reverse();const u=a.length;let o=0,i=0,d=0;for(;o<u;o++){const p=a[o];if(p.removed)p.value=this.join(s.slice(d,d+p.count)),d+=p.count;else{if(!p.added&&this.useLongestToken){let x=n.slice(i,i+p.count);x=x.map(function(f,g){const b=s[d+g];return b.length>f.length?b:f}),p.value=this.join(x)}else p.value=this.join(n.slice(i,i+p.count));i+=p.count,p.added||(d+=p.count)}}return a}}class ys extends ks{tokenize(t){return t.slice()}join(t){return t}removeEmpty(t){return t}}const ws=new ys;function Ns(r,t,n){return ws.diff(r,t,n)}const vs=.4;function Ct(r){const t=[];let n=0;for(;n<r.length;){const s=r[n];if(/[\p{L}\p{N}_]/u.test(s)){let a=n+1;for(;a<r.length&&/[\p{L}\p{N}_]/u.test(r[a]);)a++;t.push(r.slice(n,a)),n=a}else if(/\s/.test(s)){let a=n+1;for(;a<r.length&&/\s/.test(r[a]);)a++;t.push(r.slice(n,a)),n=a}else{const l=r.codePointAt(n)>65535?2:1;t.push(r.slice(n,n+l)),n+=l}}return t}function js(r,t){const n=Ns(Ct(r),Ct(t)),s=r.length+t.length;let a=0;const l=[],u=[];let o=0,i=0;for(const d of n){const p=d.value.reduce((x,f)=>x+f.length,0);d.removed?(a+=p,l.push({start:o,end:o+p}),o+=p):d.added?(a+=p,u.push({start:i,end:i+p}),i+=p):(o+=p,i+=p)}return s>0&&a/s>vs?[[],[]]:[l,u]}function Yt(r){const t=[];let n=null;for(const s of r.split(`
5
+ `)){if(s.startsWith("---")||s.startsWith("+++")||s.startsWith("index ")||s.startsWith("diff --git")||s.startsWith("==="))continue;const a=s.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(a){n&&t.push(n),n={oldStart:parseInt(a[1],10),oldLines:parseInt(a[2]??"1",10),newStart:parseInt(a[3],10),newLines:parseInt(a[4]??"1",10),lines:[]};continue}if(!s.startsWith("\\")){if(n&&(s.startsWith("+")||s.startsWith("-")||s.startsWith(" ")||s==="")){n.lines.push(s);continue}n&&s&&(t.push(n),n=null)}}return n&&t.push(n),t}function Xt(r){let t=r.oldStart,n=r.newStart;const s=[];for(const a of r.lines){const l=a[0]==="+"||a[0]==="-"?a[0]:" ",u=a.slice(1);let o=null,i=null;l==="-"?o=t++:(l==="+"||(o=t++),i=n++),s.push({marker:l,code:u,oldLine:o,newLine:i})}return s}const Es=c.memo(function({filePath:t,content:n,language:s}){if(!n&&!t)return null;const[a,l]=c.useState("unified"),[u,o]=c.useState(!1),i=Ss(t,s),d=(n==null?void 0:n.includes("@@"))||(n==null?void 0:n.includes("+++"))||(n==null?void 0:n.includes("---")),p=d?Cs(n||""):null;return e.jsxs("div",{className:"mt-2 border border-dark-border rounded-lg overflow-hidden",children:[e.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 bg-dark-surface border-b border-dark-border",children:[e.jsx("span",{className:"text-accent-purple text-xs",children:"📝"}),e.jsx("span",{className:"text-xs font-mono text-dark-fg truncate",children:t||"file"}),p&&e.jsxs("span",{className:"text-xs ml-2 flex gap-2",children:[e.jsxs("span",{className:"text-green-400",children:["+",p.additions]}),e.jsxs("span",{className:"text-red-400",children:["-",p.deletions]})]}),e.jsx("span",{className:"text-xs text-dark-muted ml-auto",children:i}),d&&e.jsxs("div",{className:"flex gap-0.5 ml-2",children:[e.jsx("button",{onClick:()=>l("unified"),className:`text-xs px-1.5 py-0.5 rounded ${a==="unified"?"bg-accent-blue/20 text-accent-blue":"text-dark-muted hover:text-dark-fg"}`,title:"Unified view",children:"Unified"}),e.jsx("button",{onClick:()=>l("side-by-side"),className:`text-xs px-1.5 py-0.5 rounded ${a==="side-by-side"?"bg-accent-blue/20 text-accent-blue":"text-dark-muted hover:text-dark-fg"}`,title:"Side-by-side view",children:"Side"})]}),e.jsx("button",{onClick:()=>o(!u),className:"text-xs text-dark-muted hover:text-dark-fg ml-1",children:u?"▶":"▼"})]}),!u&&e.jsxs("div",{className:"bg-dark-bg overflow-x-auto max-h-96 overflow-y-auto custom-scrollbar",children:[d?a==="unified"?Is(n||"",i):Rs(n||"",i):e.jsx("pre",{className:"text-xs font-mono p-2 text-dark-fg whitespace-pre-wrap",children:n||"(no content)"}),p&&e.jsxs("div",{className:"sticky bottom-0 bg-dark-surface border-t border-dark-border px-3 py-1 flex gap-4 text-xs text-dark-muted",children:[e.jsxs("span",{className:"text-green-400",children:["+",p.additions," additions"]}),e.jsxs("span",{className:"text-red-400",children:["-",p.deletions," deletions"]}),e.jsxs("span",{children:[p.hunks," hunks"]})]})]})]})});function Ss(r,t){var a;if(t)return t;if(!r)return"plaintext";const n=(a=r.split(".").pop())==null?void 0:a.toLowerCase();return{ts:"typescript",tsx:"typescript",mts:"typescript",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",py:"python",go:"go",rs:"rust",cpp:"cpp",cxx:"cpp",hpp:"cpp",cc:"cpp",c:"cpp",h:"cpp",css:"css",scss:"css",html:"markup",htm:"markup",svg:"markup",xml:"xml",json:"json",yml:"yaml",yaml:"yaml",md:"markdown",sql:"sql",sh:"bash",bash:"bash",zsh:"bash",php:"php",rb:"ruby"}[n||""]||"plaintext"}function Cs(r){const t=r.split(`
6
+ `);let n=0,s=0,a=0;for(const l of t)l.startsWith("@@")?a++:l.startsWith("+")&&!l.startsWith("+++")?n++:l.startsWith("-")&&!l.startsWith("---")&&s++;return{additions:n,deletions:s,hunks:a,filesChanged:1}}function As(r){const t=[],n=(a,l)=>{if(!l)return;const u=t[t.length-1];u&&u.type===a?u.text+=l:t.push({type:a,text:l})},s=(a,l)=>{if(typeof a=="string"){n(l,a);return}const u=a.type||l;if(typeof a.content=="string"){n(u,a.content);return}for(const o of a.content)s(o,u)};for(const a of r)s(a,"");return t}function Zt(r,t){const n=at.languages[t];if(!n)return[{type:"",text:r}];try{return As(at.tokenize(r,n))}catch{return[{type:"",text:r}]}}function Ts(r,t){if(t.length===0)return r.map(a=>({...a,word:!1}));const n=[];let s=0;for(const a of r){const l=s,u=s+a.text.length;let o=0;for(const i of t){const d=Math.max(0,i.start-l),p=Math.min(a.text.length,i.end-l);p<=0||d>=a.text.length||(d>o&&n.push({type:a.type,text:a.text.slice(o,d),word:!1}),n.push({type:a.type,text:a.text.slice(d,p),word:!0}),o=p)}o<a.text.length&&n.push({type:a.type,text:a.text.slice(o),word:!1}),s=u}return n}function _s({code:r,marker:t,lang:n,ranges:s}){const a=t==="-"?[{type:"",text:r}]:Zt(r,n),l=Ts(a,s),u=t==="+"?"bg-green-900/30":t==="-"?"bg-red-900/30":"",o=t==="+"?"bg-green-700/60":"bg-red-700/60";return e.jsx("span",{className:`flex-1 whitespace-pre-wrap px-2 ${u}`,children:l.length===0?" ":l.map((i,d)=>e.jsx("span",{className:[i.type?`token ${i.type}`:"",i.word&&t!==" "?o:""].join(" "),children:i.text},d))})}function Is(r,t){const n=Yt(r);if(n.length===0)return e.jsx("pre",{className:"text-xs font-mono p-2 text-dark-fg whitespace-pre-wrap",children:r});const s=[];let a=0;for(const l of n){const u=Xt(l);s.push(e.jsxs("div",{className:"flex text-xs font-mono leading-snug bg-accent-blue/5 text-accent-blue font-bold px-2",style:{minHeight:"1.25rem"},children:[e.jsx("span",{className:"select-none shrink-0 text-right pr-1",children:"@"}),e.jsxs("span",{className:"flex-1 whitespace-pre-wrap",children:["@@ -",l.oldStart,",",l.oldLines," +",l.newStart,",",l.newLines," @@"]})]},a++));const o=new Map;for(let i=0;i<u.length;){if(u[i].marker!=="-"){i++;continue}const d=i;for(;i<u.length&&u[i].marker==="-";)i++;const p=i;for(;i<u.length&&u[i].marker==="+";)i++;const x=Math.min(p-d,i-p);for(let f=0;f<x;f++){const[g,b]=js(u[d+f].code,u[p+f].code);o.set(d+f,g),o.set(p+f,b)}}for(let i=0;i<u.length;i++){const d=u[i],p=d.marker==="+",x=d.marker==="-",f=p?"bg-green-900/30":x?"bg-red-900/30":"",g=d.marker==="-"?d.oldLine:d.newLine;s.push(e.jsxs("div",{className:"flex text-xs font-mono leading-snug",style:{minHeight:"1.25rem"},children:[e.jsxs("span",{className:`select-none shrink-0 w-9 text-right pr-1 ${f} ${p?"text-green-400":x?"text-red-400":"text-dark-muted"}`,children:[d.marker===" "?"":d.marker,g??""]}),e.jsx(_s,{code:d.code,marker:d.marker,lang:t,ranges:o.get(i)??[]})]},a++))}}return e.jsx("div",{children:s})}function At({code:r,lang:t,kind:n}){if(r==="")return e.jsx("span",{className:"flex-1 px-2 border-r border-dark-border/30 font-mono text-xs leading-snug",style:{minHeight:"1.25rem"},children:" "});const s=n==="remove"?[{type:"",text:r}]:Zt(r,t),a=n==="add"?"bg-green-900/30":n==="remove"?"bg-red-900/30":"";return e.jsx("span",{className:`flex-1 px-2 border-r border-dark-border/30 font-mono text-xs leading-snug ${a}`,children:s.map((l,u)=>e.jsx("span",{className:l.type?`token ${l.type}`:"",children:l.text},u))})}function Rs(r,t){const n=Yt(r);if(n.length===0)return e.jsx("pre",{className:"text-xs font-mono p-2 text-dark-fg whitespace-pre-wrap",children:r});const s=[];for(const a of n){const l=Xt(a);s.push({left:`@@ -${a.oldStart},${a.oldLines} +${a.newStart},${a.newLines} @@`,right:"",type:"header"});let u=[],o=[];const i=()=>{(u.length>0||o.length>0)&&(Ds(s,u,o),u=[],o=[])};for(const d of l)d.marker==="-"?u.push(d.code):d.marker==="+"?o.push(d.code):(i(),s.push({left:d.code,right:d.code,type:"context"}));i()}return e.jsxs("div",{children:[e.jsxs("div",{className:"flex border-b border-dark-border text-xs font-bold text-dark-muted",children:[e.jsx("div",{className:"flex-1 px-2 py-0.5 border-r border-dark-border",children:"Old"}),e.jsx("div",{className:"flex-1 px-2 py-0.5",children:"New"})]}),s.map((a,l)=>a.type==="header"?e.jsx("div",{className:"bg-accent-blue/5 text-accent-blue font-bold font-mono text-xs leading-snug px-2",children:a.left},l):e.jsxs("div",{className:"flex",style:{minHeight:"1.25rem"},children:[e.jsx(At,{code:a.type==="replace"||a.type==="delete"?"- "+a.left:a.left,lang:t,kind:a.type==="replace"||a.type==="delete"?"remove":"context"}),e.jsx(At,{code:a.type==="replace"||a.type==="add"?"+ "+a.right:a.right,lang:t,kind:a.type==="replace"||a.type==="add"?"add":"context"})]},l))]})}function Ds(r,t,n){const s=Math.max(t.length,n.length);for(let a=0;a<s;a++){const l=a<t.length?t[a]??"":"",u=a<n.length?n[a]??"":"";r.push({left:l,right:u,type:a<t.length&&a<n.length?"replace":a<t.length?"delete":"add"})}}function Vt(r){const t=c.useRef(null),n=c.useRef(0);return c.useEffect(()=>{if(!r){n.current=0;return}n.current=Date.now();const s=t.current;if(!s)return;const a=()=>{const u=Math.floor((Date.now()-n.current)/1e3),o=u>=60?`${Math.floor(u/60)}m ${u%60}s`:`${u}s`;s.textContent=o};a();const l=setInterval(a,1e3);return()=>clearInterval(l)},[r]),t}const Os=["FileEditTool","FileWriteTool","EditTool","NotebookEditTool","Write","Edit","WriteTool","FileCreateTool"],Ls=/\b(write|edit|save|create|update|modify|patch)\b/i,Ms=/\b(read|open|cat|view|list|ls|dir|find|grep|glob|search)\b/i;function $s(r){return Os.includes(r)?!0:Ls.test(r)&&!Ms.test(r)}function Fs(r){return typeof r=="string"?r:r&&typeof r=="object"?JSON.stringify(r,null,2):String(r??"")}function Ps(r){if(typeof r!="string"&&r)return r.filePath||r.path||r.file||r.file_path}const Qt=c.memo(function({toolCall:t,defaultCollapsed:n=!0}){const s=t.status==="running",a=Vt(s),l=t.result!==void 0&&t.result!==null,u=t.status==="error",o=$s(t.name),i=l?Fs(t.result):"",d=t.diff||(o&&i&&(i.includes("@@")||i.includes("+++")||i.includes("---"))?i:void 0),p=typeof t.args=="object"&&t.args?Ps(t.args):void 0,[x,f]=c.useState(()=>n&&!d),g=c.useRef(!!d);c.useEffect(()=>{!g.current&&d&&(g.current=!0,f(!1))},[d]);const b=t.duration??0,y=b>0?b>=60?`${Math.floor(b/60)}m ${b%60}s`:`${b}s`:"",w=s?"bg-accent-blue":u?"bg-accent-red":"bg-accent-green";return e.jsxs("div",{className:"rounded-lg transition-colors hover:bg-dark-surface/40","data-testid":"toolcall-row",children:[e.jsxs("div",{className:"flex items-center gap-2 px-2 py-1 cursor-pointer select-none",onClick:()=>f(!x),children:[s?e.jsx("span",{className:"inline-block w-3 h-3 shrink-0 rounded-full border-2 border-accent-blue border-r-transparent animate-spin"}):e.jsx("span",{className:`w-2 h-2 shrink-0 rounded-full ${w}`}),e.jsx("span",{className:"text-xs text-dark-muted shrink-0",children:"🔧"}),e.jsx("span",{className:"font-medium text-[13px] text-dark-text truncate",children:t.name}),s&&e.jsxs("span",{className:"text-[11px] text-accent-blue shrink-0 flex items-center gap-1 tabular-nums",children:[e.jsx(je,{size:10}),e.jsx("span",{ref:a,children:"0s"})]}),!s&&y&&e.jsxs("span",{className:"text-[10px] text-dark-muted shrink-0 flex items-center gap-1 tabular-nums",children:[e.jsx(je,{size:10}),e.jsx("span",{children:y})]}),e.jsx("span",{className:`ml-auto shrink-0 text-dark-muted/60 transition-transform ${x?"":"rotate-180"}`,children:e.jsx(me,{size:13})})]}),!x&&e.jsxs("div",{className:"ml-4 pb-1 pl-3 border-l-2 border-dark-border/30 space-y-1",children:[e.jsxs("div",{className:"py-0.5 px-2",children:[e.jsx("div",{className:"text-[10px] text-dark-muted mb-0.5",children:"参数"}),e.jsx("pre",{className:"text-[11px] font-mono bg-dark-bg border border-dark-border p-2 rounded overflow-x-auto max-h-24 overflow-y-auto custom-scrollbar",children:typeof t.args=="string"?t.args:JSON.stringify(t.args,null,2)})]}),l&&e.jsxs("div",{className:"py-0.5 px-2",children:[e.jsx("div",{className:`text-[10px] mb-0.5 ${u?"text-accent-red":"text-accent-green"}`,children:u?"错误":"结果"}),o&&(d||i)?e.jsx(Es,{filePath:p,content:d||i}):e.jsx("pre",{className:`text-[11px] font-mono bg-dark-bg border border-dark-border p-2 rounded overflow-x-auto max-h-48 overflow-y-auto custom-scrollbar whitespace-pre-wrap break-all ${u?"text-accent-red":"text-accent-green"}`,children:i})]})]})]})}),zs=c.memo(function({text:t,maxLength:n=300,preformatted:s=!1}){const[a,l]=c.useState(!1);return t.length>n?e.jsxs("div",{children:[s?e.jsx("pre",{className:"text-xs font-mono bg-dark-bg p-1.5 rounded overflow-x-auto custom-scrollbar mt-1 text-accent-green",children:a?t:t.slice(0,n)+"..."}):e.jsx("div",{className:"text-dark-text leading-snug",children:a?t:t.slice(0,n)+"..."}),e.jsx("button",{onClick:o=>{o.stopPropagation(),l(!a)},className:"mt-1 text-[10px] px-2 py-0.5 rounded bg-dark-hover text-accent-blue hover:bg-dark-border transition-colors",children:a?"收起":"展开"})]}):s?e.jsx("pre",{className:"text-xs font-mono bg-dark-bg p-1.5 rounded overflow-x-auto custom-scrollbar mt-1 text-accent-green",children:t}):e.jsx("div",{className:"text-dark-text leading-snug",children:t})}),Bs=c.memo(function({step:t,defaultCollapsed:n=!0}){const[s,a]=c.useState(n),[l,u]=c.useState(!0),o=t.status==="running",i=Vt(o),d=t.description||t.thought||t.result||t.action||t.toolCalls&&t.toolCalls.length>0,p=t.duration??0,x=p>0?p>=60?`${Math.floor(p/60)}m ${p%60}s`:`${p}s`:"",f={pending:"bg-dark-muted/40",running:"bg-accent-blue",success:"bg-accent-green",error:"bg-accent-red",warning:"bg-accent-yellow"}[t.status]||"bg-dark-muted/40";return e.jsxs("div",{className:"rounded-lg transition-colors hover:bg-dark-surface/40","data-testid":"step-row",children:[e.jsxs("div",{className:"flex items-center gap-2 px-2 py-1 cursor-pointer select-none",onClick:()=>d&&a(!s),children:[o?e.jsx("span",{className:"inline-block w-3 h-3 shrink-0 rounded-full border-2 border-accent-blue border-r-transparent animate-spin"}):e.jsx("span",{className:`w-2 h-2 shrink-0 rounded-full ${f} ${t.status==="pending"?"opacity-60":""}`}),e.jsx("span",{className:"text-[13px] text-dark-text truncate",children:t.title}),o&&e.jsxs("span",{className:"text-[11px] text-accent-blue shrink-0 flex items-center gap-1 tabular-nums",children:[e.jsx(je,{size:10}),e.jsx("span",{ref:i,children:"0s"})]}),!o&&x&&e.jsxs("span",{className:"text-[10px] text-dark-muted shrink-0 flex items-center gap-1 tabular-nums",children:[e.jsx(je,{size:10}),e.jsx("span",{children:x})]}),d&&e.jsx("span",{className:`ml-auto shrink-0 text-dark-muted/60 transition-transform ${s?"":"rotate-180"}`,children:e.jsx(me,{size:13})})]}),!s&&d&&e.jsxs("div",{className:"ml-4 pb-1 pl-3 border-l-2 border-dark-border/30 space-y-1",children:[t.description&&e.jsx("div",{className:"text-dark-muted py-0.5 px-2 text-xs",children:t.description}),t.thought&&e.jsxs("div",{className:"py-0.5 px-2 text-xs border-l-2 border-accent-blue/40 bg-accent-blue/5 rounded-r",children:[e.jsxs("div",{className:"flex items-center gap-1 text-accent-blue cursor-pointer hover:opacity-80 select-none",onClick:()=>u(!l),children:[l?e.jsx(Ie,{size:12}):e.jsx(me,{size:12}),e.jsx("span",{children:"🧠 思考"}),l&&e.jsxs("span",{className:"text-[10px] text-dark-muted truncate max-w-[200px]",children:[t.thought.slice(0,80).replace(/\n/g," "),"..."]})]}),!l&&e.jsx("div",{className:"text-dark-muted italic whitespace-pre-wrap leading-snug mt-1",children:t.thought.replace(/\n\s*\n+/g,`
7
+ `)})]}),t.action&&e.jsxs("div",{className:"py-0.5 px-2 text-xs border-l-2 border-accent-yellow/40 bg-accent-yellow/5 rounded-r",children:[e.jsx("div",{className:"flex items-center gap-1 text-accent-yellow mb-0.5",children:"⚡ 执行"}),e.jsx("div",{className:"text-dark-text leading-snug font-mono text-[11px]",children:t.action})]}),t.toolCalls&&t.toolCalls.length>0&&t.toolCalls.map(g=>e.jsx("div",{className:"px-1 py-0.5",children:e.jsx(Qt,{toolCall:g})},g.id)),t.result&&e.jsxs("div",{className:"py-0.5 px-2 text-xs border-l-2 border-accent-green/40 bg-accent-green/5 rounded-r",children:[e.jsx("div",{className:"flex items-center gap-1 text-accent-green mb-0.5",children:"✓ 结果"}),e.jsx(zs,{text:t.result,maxLength:500})]})]})]})}),Us=c.memo(function({steps:t,isGenerating:n}){const{t:s}=J(),[a,l]=c.useState(n),u=c.useRef(n);c.useEffect(()=>{u.current&&!n&&l(!1),u.current=n},[n]);const o=t.length,i=n||t.some(g=>g.status==="running"),d=[...t].reverse().find(g=>g.status==="running"),p=t[t.length-1],x=(d==null?void 0:d.title)||(p==null?void 0:p.title)||"",f=`${o} ${s(o===1?"chat.stepCount":"chat.stepCountPlural")}`;return e.jsxs("div",{className:"mb-1 rounded-lg border border-dark-border/50 transition-colors","data-testid":"turn-group",children:[e.jsxs("button",{className:"flex w-full items-center gap-2 px-2 py-1 text-left cursor-pointer select-none hover:bg-dark-surface/40",onClick:()=>l(!a),"data-testid":"turn-group-toggle",children:[e.jsx("span",{className:"shrink-0 text-dark-muted/60 transition-transform",children:a?e.jsx(me,{size:13}):e.jsx(Ie,{size:13})}),i?e.jsx("span",{className:"inline-block w-3 h-3 shrink-0 rounded-full border-2 border-accent-blue border-r-transparent animate-spin"}):e.jsx("span",{className:"w-2 h-2 shrink-0 rounded-full bg-accent-green"}),e.jsx("span",{className:"text-xs text-dark-muted",children:i?`${s("chat.runningSteps")} ${f}…`:f}),i&&x&&e.jsxs("span",{className:"min-w-0 flex-1 truncate pl-1 text-xs text-dark-muted/70",children:["· ",x]})]}),a&&e.jsx("div",{className:"ml-3 pb-1 pl-3 border-l-2 border-dark-border/30 space-y-0.5",children:t.map(g=>e.jsx(Bs,{step:g},g.id))})]})});function en(r){const t=r??"";let n=t,s=null,a=null;try{const l=JSON.parse(t);if(l&&typeof l=="object")if("payload"in l){a=typeof l.toolName=="string"?l.toolName:null;const u=l.payload;typeof u=="string"?n=u:u&&typeof u=="object"?(s=u,n=JSON.stringify(u,null,2)):n=""}else Array.isArray(l)||(s=l)}catch{n=t}if(!s&&n.length>0&&/^[\s]*[{[]/.test(n))try{const l=JSON.parse(n);l&&typeof l=="object"&&!Array.isArray(l)&&(s=l)}catch{}return{toolName:a,payloadText:n,args:s}}const ft=/\b(bash|shell|exec|cmd|powershell|terminal)\b/i,tn=/write_file|write|save|create|upload|deploy|publish/i,nn=/edit_file|edit|patch|apply|update|replace/i,sn=/read_file|read|view|cat|open|list|dir\b/i,Hs=/file_delete|delete|remove|unlink|\brm\b|\bdel\b/i,Gs=/\b(glob|find|locate)\b/i,qs=/\b(grep|rg|search_contents)\b/i,Ws=/web_search|search_web|browse/i,rn=/web_fetch|fetch|http|curl|wget|download|request|api/i,Ks=/git|commit|merge|rebase|push|checkout/i,Js=/install|uninstall|npm|pnpm|yarn|pip|cargo|gem|apt|brew|choco/i,gt=/send_message|send_file|message|notify|post/i;function an(r){const t=r.toLowerCase();return ft.test(t)?"verbRunCommand":Ws.test(t)?"verbSearchWeb":tn.test(t)?"verbWriteFile":nn.test(t)?"verbEditFile":Hs.test(t)?"verbDeleteFile":sn.test(t)?"verbReadFile":qs.test(t)?"verbSearchContents":Gs.test(t)?"verbFindFiles":rn.test(t)?"verbFetchUrl":Ks.test(t)?"verbGit":Js.test(t)?"verbInstall":gt.test(t)?"verbSendMessage":"verbRunTool"}function Ye(r,t){const n=(r??"").replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-1)}…`:n}function Ys(r){if(!r)return null;for(const t of["file_path","filePath","path","file","target"]){const n=r[t];if(typeof n=="string"&&n.length>0)return n}return null}function on(r,t){const{payloadText:n,args:s}=en(t),a=r.toLowerCase();if(ft.test(a))return"";const l=Ys(s);if(l)return l;const u=n.match(/(?:file_path|path|file)["\s:=]+([^\s",}]+)/i);if(u!=null&&u[1])return u[1];if(rn.test(a)&&typeof(s==null?void 0:s.url)=="string"&&s.url)return Ye(s.url,48);if(gt.test(a)){const o=typeof(s==null?void 0:s.text)=="string"?s.text:typeof(s==null?void 0:s.message)=="string"?s.message:n;return Ye(o,48)}return Ye(n,48)}function ln(r,t){const{payloadText:n,args:s}=en(t),a=r.toLowerCase();if(ft.test(a)){const l=typeof(s==null?void 0:s.command)=="string"?s.command:n;return l?{text:l,mono:!0}:null}if(tn.test(a)||nn.test(a)){const l=typeof(s==null?void 0:s.content)=="string"?s.content:typeof(s==null?void 0:s.data)=="string"?s.data:"";if(l)return{text:l,mono:!0};if(s){const u=Tt(s);if(u)return{text:u,mono:!0}}return n?{text:n,mono:!0}:null}if(gt.test(a)){const l=typeof(s==null?void 0:s.text)=="string"?s.text:typeof(s==null?void 0:s.message)=="string"?s.message:n;return l?{text:l,mono:!1}:null}if(sn.test(a))return null;if(s){const l=Tt(s);if(l)return{text:l,mono:!0}}return n?{text:n,mono:!0}:null}function Tt(r){return r?Object.entries(r).filter(([,t])=>t!=null).map(([t,n])=>{let s=typeof n=="string"?n:JSON.stringify(n);return s.length>96&&(s=`${s.slice(0,95)}…`),`${t}=${s.replace(/\n/g," ")}`}).join(" "):""}function cn(r,t){const n=De(t);return n?{path:n,external:!0}:{key:"scopeLocal",external:!1}}function dn({pre:r,obj:t}){return e.jsxs("span",{className:"min-w-0 text-sm text-dark-muted",children:[e.jsx("span",{children:r}),t&&e.jsx("b",{className:"font-semibold text-dark-text",children:t})]})}const Xe=5,Ze=420;function xt({text:r,mono:t=!0}){const{t:n}=J("hook"),[s,a]=c.useState(!1),l=r.split(`
8
+ `),u=l.length>Xe||r.length>Ze;let o=r;!s&&u&&(o=l.slice(0,Xe).join(`
9
+ `),o.length>Ze&&(o=`${o.slice(0,Ze).trimEnd()}…`));const i=s?n("showLess"):l.length>Xe?n("showAllLines",{n:l.length}):n("showAll");return e.jsxs("div",{className:`rounded-lg border border-dark-border bg-dark-surface p-2.5 text-xs leading-relaxed break-all whitespace-pre-wrap ${t?"font-mono":""} text-dark-text`,children:[o,u&&e.jsx("button",{type:"button",onClick:()=>a(d=>!d),className:"mt-1 block text-[11px] text-accent-blue hover:underline",children:i})]})}const Ve=15,Xs=c.memo(function({approval:t,onResolved:n}){const{t:s}=J("hook"),[a,l]=c.useState(!1),[u,o]=c.useState(Ve),i=c.useRef(null),d=t.status==="pending",{level:p,reasonKey:x}=qt(t.toolName,t.askPayload),f=Wt[p],g=ln(t.toolName,t.askPayload),b=cn(t.toolName,t.askPayload),y=De(t.askPayload)!==null;c.useEffect(()=>{if(d)return o(Ve),i.current=setInterval(()=>{o(T=>T<=1?(i.current&&clearInterval(i.current),0):T-1)},1e3),()=>{i.current&&clearInterval(i.current)}},[d,t.approvalId]),c.useEffect(()=>{const T=(t.timeoutMs??15e3)>0;u===0&&d&&!a&&T&&w()},[u]);const w=c.useCallback(()=>{!d||a||(l(!0),i.current&&clearInterval(i.current),W.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})}),n==null||n(t.approvalId,"approved"))},[d,a,t.approvalId,n]),h=c.useCallback(()=>{!d||a||(l(!0),i.current&&clearInterval(i.current),W.send({type:"hook_deny",data:JSON.stringify({approvalId:t.approvalId})}),n==null||n(t.approvalId,"denied"))},[d,a,t.approvalId,n]),v=c.useCallback(()=>{if(!d||a)return;l(!0),i.current&&clearInterval(i.current);const T=dt.getState(),D=De(t.askPayload);D?(T.addToSessionAllowList(t.toolName,D),W.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId,sessionAllow:!0})})):(T.addToSessionAllowList(t.toolName),W.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})})),n==null||n(t.approvalId,"approved")},[d,a,t.approvalId,t.toolName,t.askPayload,n]),R=c.useCallback(()=>{!d||a||(l(!0),i.current&&clearInterval(i.current),dt.getState().setAutoMode(!0),he.getState().setAuto(!0),W.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})}),n==null||n(t.approvalId,"approved"))},[d,a,t.approvalId,n]);if(!d){const T=t.status==="approved";return e.jsx("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg text-xs ${T?"bg-accent-green/10 border border-accent-green/30 text-accent-green":"bg-accent-red/10 border border-accent-red/30 text-accent-red"}`,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Be,{size:14}),e.jsxs("span",{children:[s("alreadyAllowed"),t.toolName]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Se,{size:14}),e.jsxs("span",{children:[s("alreadyDenied"),t.toolName]})]})})}const C=u/Ve*100,N=u<=5,A=[{id:"allow",index:1,label:s("optionAllow"),hint:s("optionAllowHint"),action:w,kind:"primary"},{id:"allow_session",index:3,label:s("optionAllowAlways"),hint:y?s("optionAllowPathHint"):s("optionAllowAlwaysHint",{tool:t.toolName}),action:v,kind:"secondary"},{id:"auto_mode",index:4,label:s("optionAutoMode"),hint:s("optionAutoModeHint"),action:R,kind:"secondary"},{id:"deny",index:2,label:s("optionDeny"),hint:s("optionDenyHint"),action:h,kind:"danger"}],L={primary:"bg-accent-blue text-white hover:opacity-90 shadow-sm",secondary:"border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover",danger:"text-dark-muted hover:bg-red-500/10 hover:text-red-400"};return e.jsxs("div",{className:`bg-dark-bg border rounded-xl overflow-hidden ${b.external?"border-amber-500/40":f.border}`,children:[e.jsxs("div",{className:`flex items-center gap-2 px-3 py-2 border-b ${f.bg} ${b.external?"border-amber-500/30":f.border}`,children:[e.jsxs("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-bold border shrink-0 ${rc.badge}",children:[f.icon," ",p]}),e.jsx("span",{className:"flex-none w-6 h-6 rounded-md bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center",children:e.jsx(it,{size:13})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsx(dn,{pre:s(an(t.toolName)),obj:on(t.toolName,t.askPayload)})}),b.external&&b.path?e.jsxs("span",{className:"flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-400 border border-amber-500/30 shrink-0",title:b.path,children:[e.jsx(Bt,{size:10}),b.path.length>32?`${b.path.slice(0,31)}…`:b.path]}):e.jsx("span",{className:"text-[10px] text-dark-muted/60 shrink-0",children:s("scopeLocal")}),e.jsxs("div",{className:"flex items-center gap-1.5 ml-1 shrink-0",children:[e.jsx(je,{size:11,className:N?"text-accent-red":"text-dark-muted"}),e.jsxs("span",{className:`text-[11px] font-mono ${N?"text-accent-red animate-pulse":"text-dark-muted"}`,children:[u,"s"]}),e.jsx("div",{className:"w-10 h-1 bg-dark-border rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all duration-1000 ${N?"bg-accent-red":u<=8?"bg-accent-yellow":"bg-accent-green"}`,style:{width:`${C}%`}})})]})]}),e.jsxs("div",{className:"px-3 py-2.5 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-dark-muted shrink-0",children:s("tool")}),e.jsx("code",{className:"text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded",children:t.toolName}),e.jsx("span",{className:"text-[10px] text-dark-muted/50",children:s(x)})]}),g&&e.jsx(xt,{text:g.text,mono:g.mono}),(p==="CRITICAL"||p==="HIGH")&&e.jsxs("div",{className:`flex items-center gap-1.5 text-[11px] px-2 py-1 rounded ${f.bg} ${f.text}`,children:[e.jsx(be,{size:12}),e.jsx("span",{children:s(p==="CRITICAL"?"highRiskWarning":"mediumRiskConfirm")})]}),e.jsx("div",{className:"flex flex-wrap items-center gap-1.5 pt-1",children:A.map(T=>e.jsxs("button",{onClick:T.action,disabled:a,className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs transition-colors disabled:opacity-50 ${L[T.kind]}`,children:[e.jsx("span",{className:`text-[9px] font-mono rounded px-0.5 ${T.kind==="primary"?"bg-white/20":"bg-dark-surface text-dark-muted"}`,children:T.index}),e.jsx("span",{children:T.label}),e.jsx("span",{className:`text-[10px] ${T.kind==="primary"?"text-white/70":"text-dark-muted/60"} hidden sm:inline`,children:T.hint})]},T.id))}),e.jsx("div",{className:"text-[10px] text-dark-muted/50 pt-0.5 border-t border-dark-border/50",children:s("clickToSelect")})]})]})}),Fe={xlsx:{icon:ct,label:"Excel"},xls:{icon:ct,label:"Excel"},csv:{icon:lt,label:"CSV"},docx:{icon:lt,label:"Word"},text:{icon:mt,label:"文本"}};function _t(r){return!r&&r!==0?"—":r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/1024/1024).toFixed(2)} MB`}const Zs=c.memo(function({job:t}){var x,f;const{t:n}=J(),{stage:s}=t,a=c.useCallback(g=>{le.files.download(g).then(b=>{b.success||X.error(b.error||n("fileJob.downloadFailed"))})},[n]),l=c.useMemo(()=>t.attachments||[],[t.attachments]),u=c.useMemo(()=>t.parsedFiles||[],[t.parsedFiles]),o=c.useMemo(()=>t.mapping||[],[t.mapping]),i=c.useMemo(()=>t.result||[],[t.result]),d=t.renderProgress??(s==="rendering"?0:100),p=t.parseProgress??(s==="parsing"?0:100);return e.jsxs("div",{className:"mt-2 rounded-xl border border-dark-border bg-dark-surface/60 overflow-hidden max-w-2xl",children:[e.jsxs("div",{className:"flex items-center gap-2 px-3.5 py-2.5 border-b border-dark-border/60 bg-dark-surface",children:[s==="complete"?e.jsx(ot,{size:15,className:"text-accent-green shrink-0"}):s==="error"?e.jsx(be,{size:15,className:"text-accent-red shrink-0"}):e.jsx(Re,{size:15,className:"text-accent-blue animate-spin shrink-0"}),e.jsx("span",{className:"text-[13px] font-medium text-dark-text",children:Vs(s,n)}),e.jsx("div",{className:"flex-1"}),e.jsx("span",{className:"text-[10px] font-mono text-dark-muted/60",children:t.jobId})]}),e.jsxs("div",{className:"px-3.5 py-3 space-y-3",children:[l.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:l.map((g,b)=>{const y=Fe[g.kind]||Fe.text,w=y.icon;return e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-dark-border bg-dark-bg px-2.5 py-1.5",children:[e.jsx(w,{size:14,className:"text-accent-blue shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-xs text-dark-text truncate max-w-[160px]",children:g.fileName}),e.jsxs("div",{className:"text-[10px] text-dark-muted",children:[_t(g.size)," · ",y.label,g.role&&g.role!=="unknown"&&e.jsxs("span",{className:Z("ml-1",g.role==="data"?"text-accent-green":"text-accent-purple"),children:["· ",g.role==="data"?n("fileJob.roleData"):n("fileJob.roleTemplate")]})]})]})]},`${g.fileName}-${b}`)})}),s==="parsing"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-xs text-dark-muted",children:n("fileJob.parsing",{file:((x=l[0])==null?void 0:x.fileName)||((f=u[0])==null?void 0:f.fileName)||""})}),e.jsx(Et,{value:p,size:"sm",showLabel:!0})]}),u.length>0&&s!=="error"&&e.jsxs("div",{className:"space-y-1.5",children:[u.map(g=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-dark-muted",children:[e.jsx(ot,{size:13,className:"text-accent-green shrink-0"}),e.jsx("span",{className:"truncate",children:g.fileName}),e.jsx("span",{className:"text-[10px] text-dark-muted/70",children:n("fileJob.parsedSummary",{rows:g.rowCount,fields:g.fields.length})})]},g.fileName)),u[0]&&e.jsxs("div",{className:"flex flex-wrap gap-1 pt-1",children:[u[0].fields.slice(0,12).map(g=>e.jsx("span",{className:"rounded bg-dark-bg border border-dark-border/60 px-1.5 py-0.5 text-[10px] font-mono text-dark-muted",children:g},g)),u[0].fields.length>12&&e.jsxs("span",{className:"text-[10px] text-dark-muted/60",children:["+",u[0].fields.length-12]})]})]}),o.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("div",{className:"text-[11px] text-dark-muted",children:n("fileJob.mappingTitle")}),e.jsx("div",{className:"overflow-hidden rounded-lg border border-dark-border",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-dark-bg text-dark-muted",children:[e.jsx("th",{className:"text-left px-2.5 py-1.5 font-medium",children:n("fileJob.templatePlaceholder")}),e.jsx("th",{className:"px-2 py-1.5"}),e.jsx("th",{className:"text-left px-2.5 py-1.5 font-medium",children:n("fileJob.dataField")})]})}),e.jsx("tbody",{children:o.slice(0,8).map(g=>e.jsxs("tr",{className:"border-t border-dark-border/50",children:[e.jsx("td",{className:"px-2.5 py-1.5 font-mono text-accent-purple",children:"{{"+g.placeholder+"}}"}),e.jsx("td",{className:"px-2 py-1.5 text-dark-muted",children:e.jsx(Rn,{size:11})}),e.jsx("td",{className:"px-2.5 py-1.5 font-mono text-accent-blue",children:g.field})]},g.placeholder))})]})}),o.length>8&&e.jsx("div",{className:"text-[10px] text-dark-muted/60",children:n("fileJob.mappingMore",{n:o.length-8})})]}),s==="rendering"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-xs text-dark-muted",children:n("fileJob.rendering",{current:t.currentRow||0,total:t.totalRows||0})}),e.jsx(Et,{value:d,size:"sm",variant:"warning",showLabel:!0})]}),i.length>0&&s==="complete"&&e.jsx("div",{className:"space-y-1.5",children:i.map(g=>{const y=(Fe[g.format]||Fe.text).icon,w=g.failedRows.length>0;return e.jsxs("div",{className:"rounded-lg border border-dark-border bg-dark-bg px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{size:15,className:"text-accent-green shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-xs text-dark-text truncate",children:g.fileName}),e.jsxs("div",{className:"text-[10px] text-dark-muted",children:[_t(g.size)," · ",g.successCount,"/",g.rowCount," 行",w&&e.jsxs("span",{className:"text-accent-red",children:[" · ",g.failedRows.length," 行失败"]})]})]}),e.jsxs("button",{onClick:()=>a(g.path),className:"flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-[11px] hover:bg-accent-blue/20 transition-colors",title:n("fileJob.download"),children:[e.jsx(Dn,{size:12}),n("fileJob.download")]})]}),w&&e.jsxs("div",{className:"mt-1.5 space-y-0.5 border-t border-dark-border/50 pt-1.5",children:[g.failedRows.slice(0,3).map(h=>e.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-red",children:[e.jsx(On,{size:10,className:"shrink-0"}),e.jsxs("span",{children:["#",h.index+1]}),e.jsx("span",{className:"truncate",children:h.error})]},h.index)),g.failedRows.length>3&&e.jsxs("div",{className:"text-[10px] text-dark-muted/70",children:["+",g.failedRows.length-3," 行"]})]})]},g.path)})}),s==="error"&&e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-accent-red/30 bg-accent-red/5 px-3 py-2.5",children:[e.jsx(be,{size:15,className:"text-accent-red shrink-0 mt-0.5"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-xs font-medium text-accent-red",children:t.error||n("fileJob.error")}),t.errorDetail&&e.jsx("div",{className:"mt-0.5 text-[11px] text-dark-muted break-words",children:t.errorDetail})]})]})]})]})});function Vs(r,t){switch(r){case"uploaded":return t("fileJob.stageUploaded");case"parsing":return t("fileJob.stageParsing");case"mapping":return t("fileJob.stageMapping");case"rendering":return t("fileJob.stageRendering");case"complete":return t("fileJob.stageComplete");case"error":return t("fileJob.stageError");default:return t("fileJob.stageUploaded")}}const It={auth:{icon:$n,color:"text-accent-red"},rate_limit:{icon:jt,color:"text-accent-yellow"},timeout:{icon:jt,color:"text-accent-yellow"},network:{icon:Mn,color:"text-accent-yellow"},model:{icon:Ln,color:"text-accent-red"},tool:{icon:be,color:"text-accent-yellow"},unknown:{icon:be,color:"text-accent-red"}},Qs=c.memo(function({error:t,onRetry:n}){const{t:s}=J(),[a,l]=c.useState(!1),u=It[t.category]||It.unknown,o=u.icon,i=()=>{window.dispatchEvent(new CustomEvent("switch-tab",{detail:"models"}))};return e.jsxs("div",{className:"mt-2 max-w-2xl overflow-hidden rounded-xl border border-accent-red/30 bg-dark-surface",children:[e.jsxs("div",{className:"flex items-start gap-3 px-3.5 py-3",children:[e.jsx(o,{size:18,className:Z("shrink-0 mt-0.5",u.color)}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[13px] font-medium text-dark-text",children:t.summary}),t.detail&&t.detail!==t.summary&&e.jsx("div",{className:"mt-0.5 text-[11px] text-dark-muted/80 break-words",children:t.detail.slice(0,160)}),e.jsxs("div",{className:"mt-1.5 flex items-center gap-2",children:[t.retryable&&n&&e.jsxs("button",{onClick:n,className:"flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-[11px] hover:bg-accent-blue/20 transition-colors",children:[e.jsx(Ee,{size:11}),s("errorCard.retry")]}),t.category==="auth"&&e.jsxs("button",{onClick:i,className:"flex items-center gap-1 rounded-md bg-dark-hover text-dark-text px-2 py-1 text-[11px] hover:bg-dark-border transition-colors",children:[e.jsx(Fn,{size:11}),s("errorCard.modelSettings")]}),t.detail&&e.jsxs("button",{onClick:()=>l(d=>!d),className:"flex items-center gap-0.5 text-[11px] text-dark-muted hover:text-dark-text transition-colors",children:[e.jsx(me,{size:11,className:Z("transition-transform",a&&"rotate-180")}),s("errorCard.details")]})]})]})]}),a&&t.detail&&e.jsx("div",{className:"border-t border-dark-border/60 bg-dark-bg px-3.5 py-2.5 text-[11px] font-mono text-dark-muted break-words max-h-40 overflow-y-auto custom-scrollbar",children:t.detail})]})});function Qe({onClick:r,title:t,children:n,danger:s=!1}){return e.jsx("button",{onClick:r,title:t,"aria-label":t,className:`inline-flex items-center justify-center rounded p-1 transition-colors ${s?"text-dark-muted hover:text-accent-red hover:bg-accent-red/10":"text-dark-muted hover:text-dark-text hover:bg-dark-hover"}`,children:n})}function Rt({message:r,sessionId:t,onRegenerate:n,onDeleteMessage:s}){const{t:a}=J(),[l,u]=c.useState(!1),o=c.useRef(null);c.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const i=c.useCallback(async()=>{try{await navigator.clipboard.writeText(r.content||r.thinking||""),u(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>u(!1),2e3)}catch(d){console.error("Failed to copy message:",d)}},[r.content,r.thinking]);return t?e.jsxs(e.Fragment,{children:[e.jsx(Qe,{onClick:i,title:a("chat.copyMessage"),children:l?e.jsx(Be,{size:12,className:"text-accent-green"}):e.jsx(zt,{size:12})}),r.type==="assistant"&&n&&e.jsx(Qe,{onClick:()=>n(r.id),title:a("chat.regenerate"),children:e.jsx(Ee,{size:12})}),s&&e.jsx(Qe,{onClick:()=>s(r.id),title:a("chat.deleteMessage"),danger:!0,children:e.jsx(Pn,{size:12})})]}):null}function Dt({ts:r,align:t,children:n}){const{i18n:s}=J(),a=s.language==="en"?"en-US":"zh-CN";return e.jsx("div",{className:"relative h-0 select-none",children:e.jsxs("div",{className:`absolute top-1 flex items-center gap-0.5 text-[10.5px] leading-none whitespace-nowrap opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity duration-150 ${t==="right"?"right-0":"left-0"}`,children:[n,e.jsx("span",{className:"pl-1 text-[10px] text-dark-muted/50",children:new Date(r).toLocaleTimeString(a,{hour:"2-digit",minute:"2-digit"})})]})})}function er(r,t){const n=[];for(const s of r)n.push({key:`thinking-${s.index}`,index:s.index,kind:"thinking",block:s});for(const s of t??[])n.push({key:`tool-${s.id}`,index:s.index??Number.MAX_SAFE_INTEGER,kind:"tool",toolCall:s});return n.sort((s,a)=>s.index-a.index),n}function tr({index:r,text:t,isGenerating:n,collapsed:s,onToggle:a}){const{t:l}=J();return e.jsxs("div",{children:[e.jsxs("button",{className:"flex items-center gap-1.5 cursor-pointer select-none py-0.5 text-xs",onClick:()=>a(r),"data-testid":"thinking-toggle",children:[e.jsx(Ie,{size:12,className:`text-dark-muted transition-transform ${s?"":"rotate-90"}`}),e.jsx("span",{className:n?"text-accent-blue/90 animate-pulse":"text-dark-muted",children:n?`${l("chat.thinking")}…`:l("chat.thoughtProcess")})]}),!s&&e.jsx("div",{className:"mt-1 text-xs text-dark-muted whitespace-pre-wrap break-words border-l-2 border-dark-border/40 pl-3 max-h-64 overflow-y-auto custom-scrollbar",children:t.replace(/\n{3,}/g,`
10
+
11
+ `)})]})}const nr=c.memo(function({message:t,sessionId:n,onRegenerate:s,onDeleteMessage:a}){var h,v,R;const{t:l}=J(),u=ae(C=>{var A;if(!n||!C.generatingSessions.includes(n))return!1;const N=C.messagesBySession[n];return N?((A=N[N.length-1])==null?void 0:A.id)===t.id:!1}),o=c.useMemo(()=>t.thinkingBlocks&&t.thinkingBlocks.length>0?t.thinkingBlocks:t.thinking?[{index:Number.MIN_SAFE_INTEGER,text:t.thinking}]:[],[t.thinkingBlocks,t.thinking]),[i,d]=c.useState({}),p=c.useRef(u);c.useEffect(()=>{p.current&&!u&&d(C=>{const N={...C};for(const A of o)N[A.index]=!0;return N}),p.current=u},[u,o]);const x=c.useMemo(()=>er(o,t.toolCalls),[o,t.toolCalls]),f=c.useCallback(C=>{d(N=>({...N,[C]:!(N[C]??!u)}))},[u]),g=t.type==="user",b=t.type==="system",y=c.useCallback((C,N)=>{if(!n)return;const L=ae.getState().getMessages(n),T=L.findIndex(M=>M.id===t.id);if(T===-1)return;const D=L[T];if(!D)return;const j={...D,hookApproval:D.hookApproval?{...D.hookApproval,status:N}:void 0},P=[...L];P[T]=j,ae.setState({messagesBySession:{...ae.getState().messagesBySession,[n]:P}})},[n,t.id]);if(t.deleted)return null;if(g)return e.jsx("div",{className:"group flex justify-end animate-fade-in-up px-1",children:e.jsxs("div",{className:"max-w-[92%] md:max-w-[78%]",children:[e.jsx("div",{className:"rounded-2xl rounded-br-md border border-dark-border/70 bg-dark-surface px-4 py-2.5 shadow-sm",children:e.jsx("div",{className:"text-dark-text whitespace-pre-wrap break-words leading-relaxed text-sm",children:(h=t.content)==null?void 0:h.replace(/\n{3,}/g,`
12
+
13
+ `)})}),e.jsx(Dt,{ts:t.timestamp,align:"right",children:e.jsx(Rt,{message:t,sessionId:n,onRegenerate:s,onDeleteMessage:a})})]})});if(b)return e.jsx("div",{className:"flex justify-center animate-fade-in-up px-1 py-1",children:e.jsx("div",{className:"text-[11px] text-dark-muted bg-dark-surface border border-dark-border/60 rounded-full px-3.5 py-1 max-w-[90%] text-center",children:t.content})});const w=!t.hookApproval&&!!(o.length>0||t.steps&&t.steps.length>0||t.toolCalls&&t.toolCalls.length>0);return e.jsx("div",{className:"group flex animate-fade-in-up px-1",children:e.jsxs("div",{className:"w-full max-w-full",children:[e.jsx(Dt,{ts:t.timestamp,align:"left",children:e.jsx(Rt,{message:t,sessionId:n,onRegenerate:s,onDeleteMessage:a})}),e.jsxs("div",{className:w?"pt-7":"",children:[t.steps&&t.steps.length>0&&!t.hookApproval?e.jsx(Us,{steps:t.steps,isGenerating:u}):e.jsx(e.Fragment,{children:x.length>0&&!t.hookApproval&&e.jsx("div",{className:"mb-1 space-y-0.5",children:x.map(C=>C.kind==="thinking"&&C.block?e.jsx(tr,{index:C.block.index,text:C.block.text,isGenerating:u,collapsed:i[C.block.index]??!u,onToggle:f},C.key):C.toolCall&&e.jsx(Qt,{toolCall:C.toolCall},C.key))})}),t.content?e.jsx("div",{className:"leading-relaxed",children:e.jsx(bs,{content:t.content.replace(/\n{3,}/g,`
14
+
15
+ `)})}):o.length===0&&!t.hookApproval&&((v=t.steps)!=null&&v.length)?null:o.length===0&&!t.hookApproval&&!((R=t.steps)!=null&&R.length)&&u?e.jsxs("div",{className:"flex items-center gap-3 py-1 text-xs text-dark-muted",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink"}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.2s"}}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.4s"}})]}),l("chat.thinking"),"..."]}):null,t.summary&&!u&&e.jsx("div",{className:"mt-1.5 text-[11px] text-dark-muted/70","data-testid":"turn-summary",children:is(t.summary)}),t.fileJob&&e.jsx("div",{className:"mt-3",children:e.jsx(Zs,{job:t.fileJob})}),t.errorCard&&e.jsx("div",{className:"mt-3",children:e.jsx(Qs,{error:t.errorCard,onRetry:n&&s?()=>s(t.id):void 0})}),t.hookApproval&&e.jsx("div",{className:"mt-3 border-l-2 border-accent-yellow/50 pl-3",children:e.jsx(Xs,{approval:t.hookApproval,onResolved:y})})]})]})})}),sr=c.memo(function({messages:t,isGenerating:n,sessionId:s,onSendSuggestion:a,onRegenerate:l,onDeleteMessage:u}){const{t:o}=J(),i=c.useRef(null),[d,p]=c.useState(!0),x=c.useRef(n);x.current=n;const f=c.useCallback(()=>{const w=i.current;if(!w)return;const h=w.scrollHeight-w.scrollTop-w.clientHeight;p(h<50)},[]),g=c.useCallback(()=>{const w=i.current;w&&(w.scrollTop=w.scrollHeight)},[]);c.useEffect(()=>{n&&(p(!0),g())},[n,g]),c.useEffect(()=>{d&&g()},[t,d,g]);const b=c.useMemo(()=>t.filter(w=>!w.deleted),[t]),y=c.useMemo(()=>[{icon:zn,label:o("chat.suggestionCode"),prompt:o("chat.suggestionCodePrompt")},{icon:Ut,label:o("chat.suggestionAnalyze"),prompt:o("chat.suggestionAnalyzePrompt")},{icon:Ht,label:o("chat.suggestionAutomate"),prompt:o("chat.suggestionAutomatePrompt")}],[o]);return e.jsxs("div",{ref:i,onScroll:f,className:"flex-1 min-h-0 overflow-y-auto custom-scrollbar",children:[b.length===0?e.jsx("div",{className:"flex min-h-[55vh] items-center justify-center p-6",children:e.jsxs("div",{className:"w-full max-w-xl px-4 text-center",children:[e.jsx("img",{src:"/logo.svg",alt:"deepseekcode",className:"w-14 h-14 mx-auto mb-5 rounded-2xl shadow-md"}),e.jsx("h2",{className:"text-xl font-semibold tracking-tight mb-2",children:o("chat.welcome")}),e.jsx("p",{className:"text-dark-muted text-sm mb-8",children:o("chat.welcomeDesc")}),a&&e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2.5 text-left",children:y.map(w=>e.jsxs("button",{onClick:()=>a(w.prompt),className:"group w-full rounded-xl border border-dark-border bg-dark-surface px-3.5 py-3 text-left transition-all duration-150 hover:border-accent-blue/40 hover:shadow-md hover:-translate-y-px",children:[e.jsx(w.icon,{size:16,"aria-hidden":"true",className:"text-accent-blue mb-2"}),e.jsx("div",{className:"text-[13px] font-medium text-dark-text",children:w.label}),e.jsx("div",{className:"mt-0.5 text-[11px] leading-snug text-dark-muted line-clamp-2",children:w.prompt})]},w.label))})]})}):e.jsx("div",{className:"flex flex-col",children:b.map(w=>e.jsx("div",{className:"px-4 py-2",children:e.jsx(nr,{message:w,sessionId:s,onRegenerate:l,onDeleteMessage:u})},w.id))}),n&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-dark-muted py-3 px-5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink"}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.2s"}}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.4s"}})]}),e.jsx("span",{children:o("chat.thinkingEllipsis")})]})]})}),rr={plan:"border-accent-blue/30 text-accent-blue bg-accent-blue/10","auto-plan":"border-accent-cyan/30 text-accent-cyan bg-accent-cyan/10",act:"border-accent-green/30 text-accent-green bg-accent-green/10","auto-act":"border-accent-yellow/30 text-accent-yellow bg-accent-yellow/10",goal:"border-accent-purple/30 text-accent-purple bg-accent-purple/10","auto-goal":"border-accent-red/30 text-accent-red bg-accent-red/10",normal:"border-accent-green/30 text-accent-green"},ar=c.memo(function(){const{t}=J(),n=he(i=>i.mode),s=he(i=>i.setBaseMode),a=he(i=>i.toggleAuto),l=n==="normal"?"act":n,u=Kt(l),o=ut(l);return e.jsxs("div",{className:"flex items-center gap-1",children:[os.map(i=>{const d=u===i,p=ls[i],x=n!=="normal"&&d?rr[n]??"border-dark-border text-dark-muted":"border-dark-border text-dark-muted hover:bg-dark-hover";return e.jsx("button",{type:"button",onClick:()=>s(i),className:Z("px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors cursor-pointer",x),title:t("chat.clickToSwitchMode"),"aria-pressed":d,children:p.label},i)}),e.jsxs("button",{type:"button",role:"switch","aria-checked":o,onClick:()=>a(),className:Z("flex items-center gap-1 px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors cursor-pointer",o?"border-accent-yellow/40 text-accent-yellow bg-accent-yellow/10":"border-dark-border text-dark-muted hover:bg-dark-hover"),title:t("plan.autoApprove"),children:[e.jsx(Ee,{size:11,className:Z(o?"text-accent-yellow":"text-dark-muted")}),e.jsx("span",{children:t("plan.autoApprove")})]})]})}),ir=c.memo(function(){const{t}=J(),n=pt(b=>b.model),s=pt(b=>b.setModel),a=he(b=>b.mode),[l,u]=c.useState([]),[o,i]=c.useState(!1),d=c.useRef(null),p=c.useCallback(async()=>{try{const b=await le.models.list();b.success&&b.data&&Array.isArray(b.data.models)&&u(b.data.models.filter(y=>y.enabled!==!1))}catch{}},[]);c.useEffect(()=>{p()},[p]),c.useEffect(()=>{const b=()=>{p()};return window.addEventListener("models-updated",b),()=>window.removeEventListener("models-updated",b)},[p]);const x=c.useCallback(()=>i(!1),[]);c.useEffect(()=>{if(!o)return;const b=w=>{d.current&&!d.current.contains(w.target)&&x()},y=w=>{w.key==="Escape"&&x()};return document.addEventListener("mousedown",b),document.addEventListener("keydown",y),()=>{document.removeEventListener("mousedown",b),document.removeEventListener("keydown",y)}},[o,x]);const f=async b=>{x();const y=Kt(a==="normal"?"act":a),w=`${b.provider}:${b.id}`,h=y==="plan"?{plan:w}:y==="goal"?{goal:w}:{global:w,act:w};try{(await le.models.setDefaults(h)).success&&(s(b.id),await p())}catch{}},g=b=>n===b.id||n===`${b.provider}:${b.id}`;return e.jsxs("div",{className:"relative",ref:d,children:[e.jsxs("button",{type:"button",onClick:()=>i(b=>!b),className:"flex items-center gap-1 px-2 py-0.5 rounded-full border border-dark-border text-dark-muted whitespace-nowrap transition-colors hover:bg-dark-hover cursor-pointer",title:t("chat.clickToSelectModel"),"aria-haspopup":"listbox","aria-expanded":o,children:[e.jsx(Bn,{size:12}),e.jsx("span",{className:"font-medium max-w-[10rem] truncate",children:n||t("chat.selectModel")}),e.jsx(me,{size:12,className:Z("transition-transform",o&&"rotate-180")})]}),o&&e.jsxs("div",{role:"listbox",className:"absolute bottom-full left-0 mb-1 z-50 min-w-[240px] bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden",children:[e.jsx("div",{className:"px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wide text-dark-muted border-b border-dark-border",children:t("chat.selectModel")}),e.jsxs("div",{className:"py-1 max-h-[60vh] overflow-y-auto custom-scrollbar",children:[l.map(b=>{const y=g(b);return e.jsx("button",{type:"button",role:"option","aria-selected":y,onClick:()=>f(b),className:Z("w-full flex items-center gap-2 px-3 py-2 text-left transition-colors",y?"bg-dark-hover":"hover:bg-dark-hover"),children:e.jsxs("span",{className:"flex-1 min-w-0",children:[e.jsxs("span",{className:"flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{className:"text-xs font-semibold text-dark-text truncate",children:b.name||b.id}),y&&e.jsx(Be,{size:12,className:"text-accent-green shrink-0"})]}),e.jsxs("span",{className:"flex items-center gap-1 mt-0.5 flex-wrap",children:[e.jsx("span",{className:"text-[10px] text-dark-muted",children:b.provider}),b.isGlobalDefault&&e.jsx("span",{className:"text-[10px] px-1 rounded bg-accent-green/20 text-accent-green",children:t("chat.globalDefault")}),b.isPlanDefault&&e.jsx("span",{className:"text-[10px] px-1 rounded bg-accent-blue/20 text-accent-blue",children:t("chat.planDefault")}),b.isActDefault&&e.jsx("span",{className:"text-[10px] px-1 rounded bg-accent-yellow/20 text-accent-yellow",children:t("chat.actDefault")}),b.isGoalDefault&&e.jsx("span",{className:"text-[10px] px-1 rounded bg-accent-purple/20 text-accent-purple",children:t("chat.goalDefault")})]})]})},`${b.provider}:${b.id}`)}),l.length===0&&e.jsx("div",{className:"px-3 py-2 text-xs text-dark-muted",children:t("chat.noEnabledModels")})]})]})]})});function or({isOpen:r,files:t,selectedIndex:n,query:s,isSearching:a,onSelect:l,onHover:u,selectedCount:o=0,onFinish:i}){return r?e.jsxs("div",{className:"absolute bottom-full left-0 right-0 mb-2 bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden z-50",children:[e.jsxs("div",{className:"max-h-60 overflow-y-auto custom-scrollbar",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-[11px] text-dark-muted border-b border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"font-medium text-dark-text",children:s?`@${s}`:"@ file"}),e.jsxs("span",{className:"opacity-70 flex items-center gap-2",children:[o>0&&e.jsxs("span",{className:"px-1.5 py-0.5 rounded-full bg-accent-blue/20 text-accent-blue font-medium",children:["已选 ",o]}),e.jsx("span",{children:"↑↓ 选择 · Enter 插入(可连续多选)· Esc 关闭"})]})]}),t.length===0?e.jsx("div",{className:"px-3 py-6 text-center text-dark-muted text-xs flex flex-col items-center gap-1",children:a?e.jsxs(e.Fragment,{children:[e.jsx(Re,{size:16,className:"animate-spin"}),e.jsx("span",{children:"搜索文件中..."})]}):e.jsx("span",{children:"未找到匹配的文件"})}):t.map((d,p)=>e.jsxs("button",{onClick:()=>l(d),onMouseEnter:()=>u(p),className:`w-full px-3 py-1.5 flex items-center gap-2 text-left text-xs transition-colors border-l-2 ${p===n?"bg-accent-blue/20 text-accent-blue border-accent-blue":"hover:bg-dark-hover text-dark-text border-transparent"}`,children:[d.type==="directory"?e.jsx(Un,{size:12,className:"text-accent-yellow shrink-0"}):e.jsx(mt,{size:12,className:"text-dark-muted shrink-0"}),e.jsx("span",{className:"truncate",children:d.name}),e.jsx("span",{className:"text-[10px] text-dark-muted truncate ml-auto",children:d.path})]},d.id||d.path))]}),i&&e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-t border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"text-[10px] text-dark-muted",children:o>0?`已选 ${o} 个文件`:"Enter 插入 · 可连续多选"}),e.jsx("button",{onClick:i,className:"px-3 py-1 text-[11px] rounded bg-accent-blue text-white hover:opacity-90 transition-opacity",children:"完成引用"})]})]}):null}function lr({open:r,onClose:t,onSelect:n}){const{t:s}=J(),[a,l]=c.useState([]),[u,o]=c.useState(!1),[i,d]=c.useState("");c.useEffect(()=>{r&&(d(""),o(!0),le.skills.list().then(x=>{const f=Array.isArray(x.data)?x.data:[];l(f.filter(g=>g.enabled!==!1))}).catch(()=>l([])).finally(()=>o(!1)))},[r]);const p=c.useMemo(()=>{const x=i.trim().toLowerCase();return x?a.filter(f=>[f.id,f.name,f.description,f.category,...f.tags||[]].join(" ").toLowerCase().includes(x)):a},[a,i]);return e.jsx(cs,{isOpen:r,onClose:t,title:s("skills.pickTitle"),size:"lg",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border focus-within:border-accent-blue",children:[e.jsx(Ut,{size:14,className:"text-dark-muted shrink-0"}),e.jsx("input",{value:i,onChange:x=>d(x.target.value),placeholder:s("skills.pickPlaceholder"),autoFocus:!0,className:"flex-1 bg-transparent outline-none text-sm placeholder-dark-muted/60"}),u&&e.jsx(Ee,{size:13,className:"animate-spin text-dark-muted"})]}),u?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(Ee,{size:20,className:"animate-spin text-accent-blue"})}):p.length===0?e.jsx("div",{className:"text-center py-12 text-sm text-dark-muted",children:s("skills.pickEmpty")}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:p.map(x=>e.jsxs("button",{onClick:()=>n(x),className:"text-left rounded-lg border border-dark-border p-3 flex flex-col gap-1 transition-colors hover:border-accent-blue/50 hover:bg-dark-hover",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 min-w-0",children:[e.jsxs("span",{className:"font-medium text-sm truncate",children:[x.icon||"⭐"," ",x.name]}),e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted shrink-0",children:x.injection||"lazy"})]}),e.jsxs("div",{className:"text-xs text-dark-muted truncate font-mono",children:["$",x.id]}),x.description&&e.jsx("div",{className:"text-xs text-dark-muted line-clamp-2",children:x.description}),e.jsxs("div",{className:"flex items-center justify-between gap-2 mt-1",children:[e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted truncate",children:x.category||"—"}),e.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-accent-blue shrink-0",children:[e.jsx(Ht,{size:11}),s("skills.pickUse")]})]})]},x.id))})]})})}const cr=800,Ot=/\[Pasted text #(\d+)(?:\s*\+\d+ lines?)?\]/g;let dr=0;const un=new Map;function ur(r){const t=++dr;return un.set(t,r),t}function pr(r){return r.length>cr||pn(r)>0}function pn(r){return(r.match(/\r\n|\r|\n/g)||[]).length}function xr(r){const t=ur(r),n=pn(r);return n===0?{id:t,label:`[Pasted text #${t}]`}:{id:t,label:`[Pasted text #${t} +${n} lines]`}}function mr(r){return Ot.lastIndex=0,r.replace(Ot,(t,n)=>{const s=parseInt(n,10),a=un.get(s);return a!==void 0?a:t})}const ze=16e3;function et(){const r=["audio/webm;codecs=opus","audio/webm","audio/mp4"];if(typeof MediaRecorder>"u")return"";for(const t of r)if(MediaRecorder.isTypeSupported(t))return t;return""}async function fr(r){if(r.sampleRate===ze&&r.numberOfChannels===1)return r.getChannelData(0);const t=Math.max(1,Math.ceil(r.length*ze/r.sampleRate)),n=new OfflineAudioContext(1,t,ze),s=n.createBufferSource();return s.buffer=r,s.connect(n.destination),s.start(0),(await n.startRendering()).getChannelData(0)}function gr(r,t){const n=new ArrayBuffer(44+r.length*2),s=new DataView(n),a=(u,o)=>{for(let i=0;i<o.length;i++)s.setUint8(u+i,o.charCodeAt(i))};a(0,"RIFF"),s.setUint32(4,36+r.length*2,!0),a(8,"WAVE"),a(12,"fmt "),s.setUint32(16,16,!0),s.setUint16(20,1,!0),s.setUint16(22,1,!0),s.setUint32(24,t,!0),s.setUint32(28,t*2,!0),s.setUint16(32,2,!0),s.setUint16(34,16,!0),a(36,"data"),s.setUint32(40,r.length*2,!0);let l=44;for(let u=0;u<r.length;u++){const o=Math.max(-1,Math.min(1,r[u]??0));s.setInt16(l,o<0?o*32768:o*32767,!0),l+=2}return n}function hr(r){return new Promise((t,n)=>{const s=new FileReader;s.onload=()=>{const a=String(s.result||""),l=a.indexOf(",");t(l>=0?a.slice(l+1):a)},s.onerror=()=>n(s.error),s.readAsDataURL(r)})}function br(r){const[t,n]=c.useState("idle"),[s,a]=c.useState(0),l=c.useRef(null),u=c.useRef(null),o=c.useRef([]),i=c.useRef(null),d=c.useRef(0),p=c.useCallback(()=>{var y;(y=u.current)==null||y.getTracks().forEach(w=>w.stop()),u.current=null},[]),x=c.useCallback(()=>{i.current&&(clearInterval(i.current),i.current=null)},[]);c.useEffect(()=>()=>{x(),l.current&&l.current.state!=="inactive"&&l.current.stop(),p()},[x,p]);const f=c.useCallback(async()=>{if(t!=="idle")return;if(typeof MediaRecorder>"u")throw new Error("当前浏览器不支持语音输入(需要 MediaRecorder)。请使用 Chrome/Edge/Firefox 或桌面版。");let y;try{y=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0}})}catch(h){throw h instanceof DOMException&&h.name==="NotAllowedError"?new Error("麦克风权限被拒绝。请在浏览器地址栏允许麦克风权限后重试。"):new Error("无法访问麦克风:"+(h instanceof Error?h.message:String(h)))}u.current=y,o.current=[];const w=new MediaRecorder(y,et()?{mimeType:et()}:void 0);w.ondataavailable=h=>{h.data&&h.data.size>0&&o.current.push(h.data)},l.current=w,w.start(),d.current=Date.now(),a(0),n("recording"),i.current=setInterval(()=>a(Date.now()-d.current),100)},[t]),g=c.useCallback(async()=>{var h;const y=l.current;if(!y||y.state==="inactive")throw new Error("当前没有进行中的录音。");const w=new Promise(v=>{y.onstop=()=>v()});y.stop(),await w,x(),p(),l.current=null,n("transcribing");try{const v=new Blob(o.current,{type:et()||"audio/webm"});o.current=[];const R=await v.arrayBuffer(),C=new AudioContext;let N;try{N=await C.decodeAudioData(R)}finally{C.close()}if(N.duration<.25)return n("idle"),"";const L=await fr(N),T=gr(L,ze),D=await hr(new Blob([T],{type:"audio/wav"})),j=await le.stt.transcribe(r,D,"wav");if(!j.success)throw new Error(j.error||"语音转写失败");return((h=j.data)==null?void 0:h.text)??""}finally{n("idle")}},[r,x,p]),b=c.useCallback(()=>{const y=l.current;y&&y.state!=="inactive"&&y.stop(),l.current=null,o.current=[],x(),p(),n("idle")},[x,p]);return{state:t,elapsedMs:s,start:f,stop:g,cancel:b}}function kr(){return typeof window<"u"&&!!window.__TAURI__}async function yr(){const r=window.__TAURI__;if(!r)return null;try{const t=await r.core.invoke("pick_files");return Array.isArray(t)?t.map(n=>String(n)).filter(Boolean):null}catch(t){return console.warn("[native] pick_files failed, falling back to browser picker:",t),null}}const wr=({isOpen:r,commands:t,selectedIndex:n,filter:s,onSelect:a,onHover:l,containerRef:u})=>{const{t:o}=J();return!r||t.length===0?null:e.jsxs("div",{ref:u,className:"absolute bottom-full left-0 right-0 mb-2 bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden z-50 max-h-72 overflow-y-auto custom-scrollbar",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-[11px] text-dark-muted border-b border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"font-medium text-dark-text",children:s?`/${s}`:o("slashCommands.quickCommands")}),e.jsx("span",{className:"opacity-70",children:o("slashCommands.help")})]}),t.map((i,d)=>e.jsxs("button",{"data-index":d,onClick:()=>a(i),onMouseEnter:()=>l(d),className:`w-full px-3 py-2 flex items-start gap-3 text-left transition-colors border-l-2 ${d===n?"bg-accent-blue/10 border-accent-blue":"border-transparent hover:bg-dark-hover"}`,children:[e.jsx("span",{className:"text-lg leading-none shrink-0","aria-hidden":"true",children:i.icon}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm font-medium text-dark-text",children:["/",i.name]}),i.args&&e.jsx("span",{className:"text-xs text-dark-muted",children:i.args}),!i.local&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-accent-blue/20 text-accent-blue shrink-0",children:o("slashCommands.backend")})]}),e.jsx("div",{className:"text-xs text-dark-muted truncate",children:i.description})]}),d===n&&e.jsx(Hn,{size:14,className:"text-dark-muted shrink-0 mt-0.5","aria-hidden":"true"})]},i.id))]})},Lt=/\.(xlsx|xls|csv|docx|txt|md)$/i,Nr=".deepseekcode/attachments",vr=50*1024*1024,Pe=10,jr=r=>/\.xlsx?$/i.test(r)?ct:/\.(csv|docx|txt|md)$/i.test(r)?lt:mt,tt=3e3,Mt=5,nt=50;function Er(r,t){const n=r.slice(0,t),s=n.lastIndexOf("@");if(s===-1)return{active:!1,query:"",start:-1};const a=n.slice(s+1);return/^[\p{L}\p{N}_\-./]*$/u.test(a)?{active:!0,query:a,start:s}:{active:!1,query:"",start:-1}}function Sr(r,t){const n=r.lastIndexOf(`
16
+ `,t-1)+1,s=r.slice(n,t);return s.startsWith("/")?/\s/.test(s)?{active:!1,query:""}:{active:!0,query:s.slice(1)}:{active:!1,query:""}}const Cr=c.memo(function({sessionId:t,onSend:n,onStop:s,onPause:a,onResume:l,slashOptions:u}){const{t:o}=J(),i=ae(m=>{var k;return((k=m.sessionInputs)==null?void 0:k[t])??""}),d=ae(m=>m.setSessionInput),p=ae(m=>{var k;return((k=m.generatingSessions)==null?void 0:k.includes(t))??!1}),x=ae(m=>{var k;return((k=m.pausedSessions)==null?void 0:k.includes(t))??!1}),f=c.useRef(null),g=c.useRef(null),b=c.useRef(!1),[y,w]=c.useState([]),[h,v]=c.useState(!1),[R,C]=c.useState(!1),N=c.useCallback(m=>{d(t,m)},[t,d]),[A,L]=c.useState(()=>{try{return localStorage.getItem("dsc.stt.lang")==="zh"?"zh":"en"}catch{return"en"}}),T=c.useCallback(()=>{L(m=>{const k=m==="en"?"zh":"en";try{localStorage.setItem("dsc.stt.lang",k)}catch{}return k})},[]),D=br(A),j=c.useRef(null),P=c.useCallback(async()=>{var m;try{if(!j.current){const _=await le.stt.status();_.success&&_.data&&(j.current=_.data)}const k=j.current;if(!k)return!0;if(k.service!=="ok")return X.warning(o("stt.backendMissing")),window.dispatchEvent(new CustomEvent("switch-tab",{detail:{tab:"settings",section:"stt"}})),!1;const S=(m=k.backends)==null?void 0:m[A];return S&&!S.installed?(X.warning(o("stt.backendMissing")),window.dispatchEvent(new CustomEvent("switch-tab",{detail:{tab:"settings",section:"stt"}})),!1):!0}catch{return!0}},[o,A]);c.useEffect(()=>{const m=()=>{j.current=null};return window.addEventListener("stt-backends-changed",m),()=>window.removeEventListener("stt-backends-changed",m)},[]),c.useEffect(()=>{const m=k=>{var _;const S=(_=k.detail)==null?void 0:_.lang;(S==="en"||S==="zh")&&L(S)};return window.addEventListener("stt-lang-changed",m),()=>window.removeEventListener("stt-lang-changed",m)},[]);const M=c.useCallback(m=>{const k=f.current,S=(k==null?void 0:k.selectionStart)??i.length,_=i.slice(0,S)+m+i.slice(S);N(_),requestAnimationFrame(()=>{k==null||k.focus();const O=S+m.length;k&&(k.selectionStart=k.selectionEnd=O)})},[i,N]),de=c.useCallback(async()=>{if(D.state==="recording"){try{const k=await D.stop();k?M(k):X.info(o("stt.noSpeech"))}catch(k){X.error(k instanceof Error?k.message:String(k))}return}if(!(D.state!=="idle"||!await P()))try{await D.start()}catch(k){X.error(k instanceof Error?k.message:String(k))}},[D,M,P,o]),ie=ds(u),{isOpen:U,filter:ue,filteredCommands:$,selectedIndex:Y,setSelectedIndex:Q,selectNext:se,selectPrev:oe,executeCommand:H,openMenu:ce,closeMenu:E,setFilter:F,allCommands:G,containerRef:fe}=ie,[V,re]=c.useState(!1),[q,K]=c.useState(""),[ee,Oe]=c.useState([]),[Ue,ke]=c.useState(0),[fn,ht]=c.useState(!1),[gn,Ce]=c.useState(0),ye=c.useRef(-1),we=c.useRef(new Set),Ae=c.useRef(null),Le=c.useRef(null),He=c.useRef([]),xe=c.useRef(!1);c.useEffect(()=>{we.current=new Set,xe.current=!1,re(!1),K(""),Oe([]),Ce(0),E()},[t,E]);const bt=c.useDeferredValue(i),kt=pt(m=>m.estimateTokens),Ge=c.useMemo(()=>kt(bt),[bt,kt]),yt=c.useCallback(()=>{const m=f.current;m&&(m.style.height="auto",m.style.height=Math.min(m.scrollHeight,200)+"px")},[]);c.useEffect(()=>{yt()},[i,y.length,yt]);const qe=c.useCallback(()=>{if(Ae.current)return Promise.resolve(Ae.current);if(Le.current)return Le.current;ht(!0);const m=(async()=>{try{const k=await le.files.list(),S=k.success&&k.data?k.data[0]:void 0;if(!S)return Ae.current=[],[];const _=[],O=new Set,I=async(z,B)=>{if(B>Mt||_.length>=tt)return;const pe=[];for(const ne of z||[]){if(_.length>=tt)return;const ve=ne.path.replace(/\\/g,"/");O.has(ve)||(O.add(ve),ne.type==="file"?_.push({...ne,path:ve}):ne.children&&ne.children.length>0?await I(ne.children,B+1):B<Mt&&pe.push(ne))}if(pe.length===0)return;const te=await Promise.all(pe.map(async ne=>{var ve;try{const Je=await le.files.list(ne.path.replace(/\\/g,"/"));return Je.success&&Je.data?((ve=Je.data[0])==null?void 0:ve.children)||[]:[]}catch{return[]}}));for(const ne of te){if(_.length>=tt)return;await I(ne,B+1)}};return await I(S.children,1),Ae.current=_,_}catch{return Ae.current=[],[]}finally{Le.current=null,ht(!1)}})();return Le.current=m,m},[]),wt=c.useCallback(async(m,k)=>{if(xe.current){const z=ye.current;if(z<0||k<z){xe.current=!1,re(!1);return}const B=m.slice(z,k);if(/\s/.test(B)){xe.current=!1,re(!1);return}ye.current=z,K(B),re(!0),ke(0);const pe=await qe();He.current=pe;const te=B.toLowerCase();Oe(pe.filter(ne=>!te||ne.path.toLowerCase().includes(te)).slice(0,nt));return}const S=Er(m,k);if(!S.active){V&&re(!1);return}ye.current=S.start,K(S.query),re(!0),ke(0);const _=await qe();He.current=_;const O=S.query.toLowerCase(),I=_.filter(z=>!O||z.path.toLowerCase().includes(O)).slice(0,nt);Oe(I)},[V,qe]),hn=c.useCallback(m=>{const k=m.target.value,S=m.target.selectionStart??k.length;N(k),wt(k,S);const _=Sr(k,S);_.active?(U||ce(),F(_.query),Q(0)):U&&E()},[N,wt,U,ce,F,Q,E]),We=c.useCallback(m=>{const k=f.current,S=i,_=ye.current>=0?ye.current:(k==null?void 0:k.selectionStart)??S.length,O=Math.min(S.length,_+1+q.length),I=`@${m.path} `,z=S.slice(0,_)+I+S.slice(O);we.current.add(m.path),N(z),re(!0),K(""),Oe(He.current.slice(0,nt)),ke(0),Ce(we.current.size),ye.current=_+I.length,xe.current=!0,requestAnimationFrame(()=>{k==null||k.focus(),k&&(k.selectionStart=k.selectionEnd=_+I.length)})},[i,q,N]),Te=c.useCallback(()=>{xe.current=!1,re(!1),K(""),Ce(0)},[]),Ke=c.useCallback(m=>{if(!m.args){const I=H(m,"");I!=null&&I.message&&(I.success?X.success(I.message):X.error(I.message)),N("");return}const k=f.current,S=(k==null?void 0:k.selectionStart)??i.length,_=i.lastIndexOf(`
17
+ `,S-1)+1,O=i.slice(0,_)+`/${m.name} `+i.slice(S);N(O),E(),requestAnimationFrame(()=>{k==null||k.focus();const I=_+m.name.length+2;k&&(k.selectionStart=k.selectionEnd=I)})},[i,N,H,E]),bn=c.useCallback(m=>{const k=f.current,S=(k==null?void 0:k.selectionStart)??i.length,_=`$${m.id} `,O=i.slice(0,S)+_+i.slice(S);N(O),C(!1),xe.current=!1,re(!1),K(""),requestAnimationFrame(()=>{k==null||k.focus();const I=S+_.length;k&&(k.selectionStart=k.selectionEnd=I)})},[i,N]),Ne=c.useCallback(m=>{const k=Array.from(m);w(S=>{const _=Pe-S.length,O=S.slice();for(const I of k.slice(0,_)){if(!Lt.test(I.name)){X.warning(o("fileJob.unsupportedType",{name:I.name}));continue}if(I.size>vr){X.error(o("fileJob.fileTooLarge",{name:I.name}));continue}if(O.some(z=>z.name===I.name)){X.warning(o("fileJob.duplicateFile",{name:I.name}));continue}O.push({id:`att-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,file:I,name:I.name,size:I.size,uploading:!1})}return O.length>=Pe&&X.warning(o("fileJob.maxAttachments",{n:Pe})),O})},[o]),kn=c.useCallback(m=>{m.target.files&&m.target.files.length>0&&(Ne(m.target.files),m.target.value="")},[Ne]),yn=c.useCallback(async()=>{var m;if(kr()){const k=await yr();if(!k||k.length===0)return;const S=await le.fileJob.importPaths(k);if(S.success&&Array.isArray(S.data)){const _=S.data.filter(O=>Lt.test(O.name)).map(O=>({id:`att-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,name:O.name,size:O.size,uploading:!1,path:O.path.replace(/\\/g,"/")}));w(O=>{const I=Pe-O.length;return[...O,..._.slice(0,I)]})}else X.error(S.error||o("fileJob.importFailed"))}else(m=g.current)==null||m.click()},[o]),wn=c.useCallback(m=>{w(k=>k.filter(S=>S.id!==m))},[]),Nn=c.useCallback(m=>{m.preventDefault(),v(!0)},[]),vn=c.useCallback(m=>{m.preventDefault(),v(!1)},[]),jn=c.useCallback(m=>{m.preventDefault(),v(!1),m.dataTransfer.files&&m.dataTransfer.files.length>0&&Ne(m.dataTransfer.files)},[Ne]),Nt=c.useCallback(async()=>{var k;if(y.length===0)return"";const m=[];for(const S of y){if(S.path){m.push(`<attachment path="${S.path}" />`);continue}if(!S.file)continue;w(I=>I.map(z=>z.id===S.id?{...z,uploading:!0,error:void 0}:z));const _=`${Nr}/${S.name}`,O=await le.files.upload(S.file,_);if(O.success&&((k=O.data)!=null&&k.path)){const I=O.data.path.replace(/\\/g,"/");w(z=>z.map(B=>B.id===S.id?{...B,uploading:!1,path:I}:B)),m.push(`<attachment path="${I}" />`)}else w(I=>I.map(z=>z.id===S.id?{...z,uploading:!1,error:O.error||o("fileJob.uploadFailed")}:z)),X.error(`${S.name}: ${O.error||o("fileJob.uploadFailed")}`)}return m.length>0?`${m.join(`
18
+ `)}
19
+
20
+ `:""},[y,o]),En=c.useCallback(m=>{const k=m.clipboardData.getData("text/plain");if(m.clipboardData.files&&m.clipboardData.files.length>0){m.preventDefault(),Ne(m.clipboardData.files);return}if(!k||!pr(k))return;m.preventDefault();const{label:S}=xr(k),_=f.current;if(!_)return;const O=_.selectionStart,I=_.selectionEnd,z=_.value,B=z.slice(0,O)+S+z.slice(I);N(B),requestAnimationFrame(()=>{_.selectionStart=_.selectionEnd=O+S.length})},[N,Ne]),Me=c.useCallback(async()=>{const m=mr(i);xe.current=!1,re(!1),E();const k=m.trim(),S=y.length>0;if(!k&&!S)return;const _=m.trim();if(_.startsWith("/")&&!S){const B=us(_);if(B){const pe=G.find(te=>te.name===B.command);if(pe){const te=H(pe,B.args);te!=null&&te.message&&(te.success?X.success(te.message):X.error(te.message)),N(""),w([]),we.current=new Set,Ce(0);return}X.error(o("slashCommands.unknownCommand",{cmd:`/${B.command}`}));return}}const O=Array.from(we.current).filter(B=>m.includes(`@${B}`));let I="";if(S){if(y.some(B=>B.uploading)){X.warning(o("fileJob.stillUploading"));return}I=await Nt()}const z=(I+m).trim();!z&&!S||(n(z||I.trim(),O.length>0?O:void 0),N(""),w([]),we.current=new Set,Ce(0))},[i,y,n,N,Nt,o,E,G,H]),Sn=c.useCallback(m=>{if(!m.nativeEvent.isComposing){if(V&&ee.length>0){if(m.key==="ArrowDown"){m.preventDefault(),ke(k=>(k+1)%ee.length);return}if(m.key==="ArrowUp"){m.preventDefault(),ke(k=>(k-1+ee.length)%ee.length);return}if(m.key==="Enter"&&!m.shiftKey&&!m.ctrlKey&&!m.metaKey){const k=ee[Ue];k&&(m.preventDefault(),We(k));return}if(m.key==="Escape"){m.preventDefault(),Te();return}}else if(V&&m.key==="Escape"){m.preventDefault(),Te();return}if(U&&$.length>0){if(m.key==="ArrowDown"){m.preventDefault(),se();return}if(m.key==="ArrowUp"){m.preventDefault(),oe();return}if(m.key==="Enter"&&!m.shiftKey&&!m.ctrlKey&&!m.metaKey){const k=$[Y];k&&(m.preventDefault(),Ke(k));return}if(m.key==="Escape"){m.preventDefault(),E();return}}else if(U&&m.key==="Escape"){m.preventDefault(),E();return}if(m.key==="Escape"&&p){m.preventDefault(),x?l():a();return}if(m.key==="Enter"&&(m.ctrlKey||m.metaKey)){m.preventDefault(),Me();return}m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),Me())}},[p,x,Me,a,l,V,ee,Ue,We,Te,U,$,Y,se,oe,Ke,E]),Cn=c.useCallback(()=>{b.current=!0},[]),An=c.useCallback(()=>{b.current=!1},[]),vt=Ge>8e3,Tn=i.trim().length>0||y.length>0;return e.jsxs("div",{className:"shrink-0 px-3 sm:px-4 pb-3 pt-2 bg-dark-bg",onDragOver:Nn,onDragLeave:vn,onDrop:jn,children:[y.length>0&&e.jsx("div",{className:"mb-2 flex flex-wrap gap-1.5",children:y.map(m=>{const k=jr(m.name);return e.jsxs("div",{className:Z("flex items-center gap-1.5 rounded-lg border px-2 py-1 text-xs transition-colors",m.error?"border-accent-red/40 bg-accent-red/5 text-accent-red":m.uploading?"border-accent-blue/40 bg-accent-blue/5 text-accent-blue":"border-dark-border bg-dark-surface text-dark-text"),children:[m.uploading?e.jsx(Re,{size:13,className:"animate-spin"}):e.jsx(k,{size:13}),e.jsx("span",{className:"max-w-[140px] truncate",children:m.name}),e.jsx("span",{className:"text-[10px] text-dark-muted",children:m.size>1024*1024?`${(m.size/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(m.size/1024))} KB`}),!m.uploading&&e.jsx("button",{onClick:()=>wn(m.id),className:"rounded p-0.5 text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors","aria-label":o("a11y.close"),children:e.jsx(Se,{size:11})})]},m.id)})}),h&&e.jsx("div",{className:"mb-2 rounded-2xl border-2 border-dashed border-accent-blue/50 bg-accent-blue/5 py-3 text-center text-xs text-accent-blue",children:o("fileJob.dropHint")}),e.jsxs("div",{className:"relative rounded-2xl border border-dark-border bg-dark-surface shadow-sm transition-all duration-150 focus-within:border-accent-blue/50 focus-within:ring-4 focus-within:ring-accent-blue/10",children:[V&&e.jsx("div",{onMouseDown:m=>m.preventDefault(),"aria-hidden":!V,children:e.jsx(or,{isOpen:V,files:ee,selectedIndex:Ue,query:q,isSearching:fn,onSelect:We,onHover:ke,selectedCount:gn,onFinish:Te})}),U&&e.jsx("div",{onMouseDown:m=>m.preventDefault(),"aria-hidden":!U,children:e.jsx(wr,{isOpen:U,commands:$,selectedIndex:Y,filter:ue,onSelect:Ke,onHover:Q,containerRef:fe})}),e.jsx("textarea",{ref:f,value:i,onChange:hn,onKeyDown:Sn,onPaste:En,onBlur:()=>{V&&Te(),E()},onCompositionStart:Cn,onCompositionEnd:An,placeholder:o(p?"chat.generatingPlaceholder":"chat.inputPlaceholder"),rows:1,disabled:p&&!x,"aria-label":"Message input",className:`w-full bg-transparent px-4 pt-3.5 pb-2 text-sm text-dark-text placeholder-dark-muted/60
21
+ resize-none focus:outline-none min-h-[44px] max-h-[40vh] leading-relaxed
22
+ disabled:opacity-50 disabled:cursor-not-allowed`}),e.jsxs("div",{className:"flex items-center gap-2 px-2.5 pb-2.5",children:[e.jsx(ar,{}),e.jsx("span",{className:"hidden sm:block",children:e.jsx(ir,{})}),e.jsx("div",{className:"flex-1"}),Ge>0&&i.length>0&&e.jsxs("span",{className:`text-[10px] tabular-nums ${vt?"text-accent-red font-medium":"text-dark-muted/60"}`,children:["~",Ge," tokens",vt?` · ${o("chat.nearLimit")}`:""]}),!p&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:T,disabled:D.state!=="idle",className:`flex h-8 items-center justify-center rounded-full px-2 text-[11px] font-semibold text-dark-muted transition-colors
23
+ hover:bg-dark-hover hover:text-dark-text disabled:opacity-40`,title:o("stt.langToggle"),"aria-label":o("stt.langToggle"),children:A==="en"?"EN":"中"}),e.jsx("button",{onClick:()=>void de(),disabled:D.state==="transcribing",className:Z("flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors",D.state==="recording"?"bg-accent-red/15 text-accent-red animate-pulse":"hover:bg-dark-hover hover:text-dark-text","disabled:opacity-40 disabled:cursor-not-allowed"),title:D.state==="recording"?o("stt.stopTitle"):o("stt.title"),"aria-label":D.state==="recording"?o("stt.stopTitle"):o("stt.title"),children:D.state==="transcribing"?e.jsx(Re,{size:15,className:"animate-spin","aria-hidden":"true"}):D.state==="recording"?e.jsx(Gn,{size:15,"aria-hidden":"true"}):e.jsx(qn,{size:15,"aria-hidden":"true"})}),D.state==="recording"&&e.jsxs("span",{className:"text-[10px] tabular-nums text-accent-red","aria-hidden":"true",children:[(D.elapsedMs/1e3).toFixed(0),"s"]})]}),!p&&e.jsx("button",{onClick:()=>C(!0),className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:o("skills.pickTitle"),"aria-label":o("skills.pickTitle"),children:e.jsx(Wn,{size:15,"aria-hidden":"true"})}),!p&&e.jsx("button",{onClick:()=>void yn(),className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:o("fileJob.attach"),"aria-label":o("fileJob.attach"),children:e.jsx(Kn,{size:15,"aria-hidden":"true"})}),e.jsx("input",{ref:g,type:"file",multiple:!0,accept:".xlsx,.xls,.csv,.docx,.txt,.md",className:"hidden",onChange:kn}),p?e.jsxs("div",{className:"flex items-center gap-1.5",children:[x?e.jsx("button",{onClick:l,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-green text-white transition-all hover:opacity-85 active:scale-95",title:o("chat.resumeGen"),"aria-label":o("chat.resumeGen"),children:e.jsx(Jn,{size:14,"aria-hidden":"true"})}):e.jsx("button",{onClick:a,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-yellow text-white transition-all hover:opacity-85 active:scale-95",title:o("chat.pauseGen"),"aria-label":o("chat.pauseGen"),children:e.jsx(Yn,{size:14,"aria-hidden":"true"})}),e.jsx("button",{onClick:s,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-red text-white transition-all hover:opacity-85 active:scale-95",title:o("chat.stopGen"),"aria-label":o("chat.stopGen"),children:e.jsx(Xn,{size:13,"aria-hidden":"true"})})]}):e.jsx("button",{onClick:()=>void Me(),disabled:!Tn,className:`flex h-8 w-8 items-center justify-center rounded-full bg-dark-text text-dark-bg transition-all
24
+ hover:opacity-80 active:scale-95 disabled:opacity-25 disabled:cursor-not-allowed`,title:o("chat.sendBtn"),"aria-label":o("chat.sendBtn"),children:e.jsx(Zn,{size:15,"aria-hidden":"true"})})]})]}),e.jsxs("div",{className:"mt-1.5 hidden sm:flex items-center justify-center gap-3 text-[10px] text-dark-muted/50 select-none",children:[e.jsx("span",{children:o("chat.shiftEnter")}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{children:o("chat.escHint")})]}),e.jsx(lr,{open:R,onClose:()=>C(!1),onSelect:bn})]})});function xn({isOpen:r,onClose:t,title:n,collapsedSummary:s,badge:a,children:l,maxHeight:u="45vh",onExpandedChange:o,className:i}){const[d,p]=c.useState(!0);c.useEffect(()=>{r&&p(!0)},[r]),c.useEffect(()=>{o==null||o(d)},[d,o]);const x=c.useCallback(()=>{p(f=>!f)},[]);return r?e.jsxs("div",{className:Z("shrink-0 bg-dark-surface/95 backdrop-blur border-t border-dark-border shadow-[0_-10px_30px_-15px_rgba(0,0,0,0.5)]",i),children:[e.jsxs("div",{role:"button","aria-expanded":d,tabIndex:0,onClick:x,onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),x())},title:d?"折叠抽屉,查看消息":"展开抽屉,做出选择",className:Z("flex items-center gap-2 px-4 py-2 cursor-pointer select-none transition-colors","hover:bg-dark-hover/60"),children:[e.jsx("span",{className:Z("shrink-0 text-dark-muted transition-transform duration-200",!d&&"rotate-180"),children:e.jsx(me,{size:16})}),e.jsxs("div",{className:"min-w-0 flex-1 flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-semibold text-dark-text truncate",children:n}),a,!d&&s&&e.jsx("span",{className:"min-w-0 flex items-center gap-1.5 text-xs text-dark-muted truncate",children:s})]}),e.jsx("button",{type:"button","aria-label":"关闭",onClick:f=>{f.stopPropagation(),t()},className:"shrink-0 p-1 rounded-md text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors",children:e.jsx(Se,{size:15})})]}),d&&e.jsx("div",{className:"animate-slide-up border-t border-dark-border/60 overflow-y-auto custom-scrollbar p-4",style:{maxHeight:u},children:l})]}):null}const st="其他(我来说明)",ge="推进",Ar="不选具体项,按你的最佳判断继续";function mn(r,t){return c.useMemo(()=>{const n=r.options||[],s=n.some(d=>d.label===st),a=n.some(d=>d.label===ge),l=[...n];a||l.push({label:ge,description:Ar}),s||l.push({label:st,description:"输入自定义答案"});const u=s?l.findIndex(d=>d.label===st):l.length-1,o=a?l.findIndex(d=>d.label===ge):l.length-(s?1:2),i=r.multiSelect?[...l,{label:`确认选择 (${t.size} 项)`,description:"提交本题"}]:l;return{allItems:l,otherIdx:u,proceedIdx:o,displayItems:i}},[r,t])}function $t({item:r,answered:t,selectedIdx:n,multiSelected:s,customInput:a,showCustomInput:l,onSelect:u,onToggleMulti:o,onConfirmMulti:i,onProceed:d,onEnterCustom:p,onCancelCustom:x,onSubmitCustom:f,onCustomChange:g,inputRef:b}){const{otherIdx:y,proceedIdx:w,displayItems:h}=mn(r,s),v=!!r.multiSelect,R=C=>{if(v&&C===h.length-1){i();return}if(C===w){d();return}if(C===y){p();return}if(v){o(C);return}u(C)};return e.jsxs("div",{className:"flex flex-col gap-2 max-h-64 overflow-y-auto",children:[h.map((C,N)=>{const A=n===N,L=s.has(N),T=N===y,D=v&&N===h.length-1;return e.jsxs("div",{children:[e.jsxs("button",{type:"button",className:`w-full text-left px-3 py-2 rounded-md text-sm transition-colors ${D?"bg-blue-50 dark:bg-blue-900/20 border border-blue-300 dark:border-blue-700 hover:bg-blue-100 dark:hover:bg-blue-900/30":A?"bg-blue-50 dark:bg-blue-900/20 border border-blue-300 dark:border-blue-700":"bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 hover:bg-gray-100 dark:hover:bg-gray-750"}`,onClick:()=>R(N),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[v&&!D&&e.jsx("span",{className:`w-4 h-4 rounded border flex items-center justify-center text-[10px] ${L?"bg-blue-600 border-blue-600 text-white":"border-gray-400 dark:border-gray-500"}`,children:L&&e.jsx(Be,{size:10})}),D?e.jsx("span",{className:"font-medium text-blue-700 dark:text-blue-300",children:C.label}):e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:`font-medium ${A?"text-blue-700 dark:text-blue-300":"text-gray-800 dark:text-gray-200"}`,children:[v?"":`${N+1}. `,C.label]}),N===w&&e.jsx("span",{className:"text-xs text-emerald-600 dark:text-emerald-400",children:"(直接继续)"}),T&&e.jsx("span",{className:"text-xs text-gray-400",children:"(自定义)"})]})]}),C.description&&e.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400 mt-0.5 ml-6",children:C.description})]}),T&&A&&l&&e.jsxs("div",{className:"mt-2 ml-4",children:[e.jsx("textarea",{ref:b,className:"w-full px-3 py-2 text-sm border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none",rows:3,value:a,onChange:j=>g(j.target.value),onKeyDown:j=>{j.key==="Enter"&&!j.shiftKey&&(j.preventDefault(),f()),j.key==="Escape"&&x()},placeholder:"输入您的回答...",autoFocus:!0}),e.jsxs("div",{className:"flex gap-2 mt-1",children:[e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 px-3 py-1 text-xs font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700",onClick:f,children:[e.jsx(Gt,{size:12}),"提交"]}),e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 px-3 py-1 text-xs font-medium text-gray-600 dark:text-gray-400 bg-gray-100 dark:bg-gray-700 rounded-md hover:bg-gray-200 dark:hover:bg-gray-600",onClick:x,children:[e.jsx(Se,{size:12}),"取消"]})]})]})]},`opt-${N}`)}),t&&e.jsx("div",{className:"text-xs text-emerald-600 dark:text-emerald-400 font-medium",children:"✓ 已回答"})]})}function Tr({isOpen:r,onClose:t}){const[n,s]=c.useState(null),[a,l]=c.useState(-1),[u,o]=c.useState(new Set),[i,d]=c.useState(""),[p,x]=c.useState(!1),[f,g]=c.useState(!1),[b,y]=c.useState(0),[w,h]=c.useState([]),[v,R]=c.useState(!1),C=c.useRef(null),N=c.useMemo(()=>n?n.questions&&n.questions.length>0?n.questions:[{question:n.question,header:n.header,options:n.options,multiSelect:n.multiSelect}]:[],[n]),A=N.length>1;c.useEffect(()=>{if(r){const E=window.__pendingQuestion;if(E){s(E),l(E.multiSelect?-1:0),o(new Set),d(""),x(!1),g(!1),y(0),R(!1);const F=E.questions&&E.questions.length>0?E.questions:[E];h(F.map(()=>null))}}},[r]),c.useEffect(()=>{const E=()=>{g(!0),setTimeout(()=>{t(),s(null),g(!1)},300)};return window.addEventListener("ask-question-dismiss",E),()=>window.removeEventListener("ask-question-dismiss",E)},[t]),c.useEffect(()=>{l(0),o(new Set),d(""),x(!1)},[b,v,n]);const L=N[b]||null,{allItems:T,otherIdx:D}=mn(L||{question:""},u),j=c.useCallback((E,F)=>{f||!n||(g(!0),W.send({type:"question_answer",data:JSON.stringify({questionId:n.questionId,answer:E,selectedOptions:F})}))},[f,n]),P=c.useCallback(()=>{f||!n||(g(!0),W.send({type:"question_answer",data:JSON.stringify({questionId:n.questionId,answers:N.map((E,F)=>w[F]||{answer:"(用户未回答)"})})}))},[f,n,N,w]),M=c.useCallback((E,F,G)=>{h(fe=>{const V=fe.slice();return V[E]={answer:F,selectedOptions:G},V}),E<N.length-1?y(E+1):R(!0)},[N.length]),de=c.useCallback(E=>{if(f||!n)return;const F=T[E];F&&j(F.label,[F.label])},[f,n,T,j]),ie=c.useCallback(E=>{if(f)return;const F=T[E];F&&M(b,F.label,[F.label])},[f,T,M,b]),U=c.useCallback(E=>{f||o(F=>{const G=new Set(F);return G.has(E)?G.delete(E):G.add(E),G})},[f]),ue=c.useCallback(()=>{if(f)return;const E=[...u].map(F=>{var G;return((G=T[F])==null?void 0:G.label)||""});A?M(b,E.join(", "),E):j(E.join(", "),E)},[f,u,T,A,M,b,j]),$=c.useCallback(()=>{f||(A?M(b,ge,[ge]):j(ge,[ge]))},[f,A,M,b,j]),Y=c.useCallback(()=>{f||(l(D),x(!0),setTimeout(()=>{var E;return(E=C.current)==null?void 0:E.focus()},100))},[f,D]),Q=c.useCallback(()=>{x(!1),d("")},[]),se=c.useCallback(()=>{if(f)return;const E=i||"(用户未输入)";A?M(b,E):j(E)},[f,i,A,M,b,j]),oe=c.useCallback(()=>{f||!n||(g(!0),W.send({type:"question_answer",data:JSON.stringify({questionId:n.questionId,answers:N.map(()=>({answer:"(cancelled)"}))})}))},[f,n,N]),H=c.useCallback(()=>{if(!f){if(A){if(p){x(!1),d("");return}if(v){R(!1),y(N.length-1);return}oe();return}if(p){x(!1),d("");return}j("(cancelled)")}},[f,A,p,v,N.length,oe,j]);if(!r||!n)return null;const ce=w.filter(E=>!E).length;return e.jsx(xn,{isOpen:r,onClose:H,title:n.header||(A?"批量确认":"请回答"),badge:e.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-accent-blue shrink-0",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-blue animate-pulse"}),"待回答",A?` · ${w.filter(Boolean).length}/${N.length}`:""]}),collapsedSummary:e.jsx("span",{className:"truncate",children:(L==null?void 0:L.question)||n.question}),maxHeight:"50vh",children:A?e.jsxs("div",{className:"flex flex-col gap-4",children:[n.autoResolutionMs&&n.autoResolutionMs>0&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-700 rounded-md px-3 py-1.5",children:["⏱ ",Math.max(1,Math.round(n.autoResolutionMs/1e3)),"s 后未回答将自动按推荐项继续"]}),e.jsxs("div",{className:"flex items-center gap-1 flex-wrap",children:[N.map((E,F)=>{const G=!!w[F],fe=!v&&b===F;return e.jsxs("button",{type:"button",onClick:()=>{y(F),R(!1)},className:`px-2 py-1 rounded-md text-xs font-medium transition-colors ${fe?"bg-blue-600 text-white":G?"bg-emerald-50 dark:bg-emerald-900/20 text-emerald-700 dark:text-emerald-300":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400"}`,children:["Q",F+1," ",G?"✓":""]},`nav-${F}`)}),e.jsx("button",{type:"button",onClick:()=>R(!0),className:`px-2 py-1 rounded-md text-xs font-medium transition-colors ${v?"bg-blue-600 text-white":"bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400"}`,children:"提交"})]}),v?e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx("div",{className:"text-sm font-medium text-gray-800 dark:text-gray-200",children:"确认答案"}),N.map((E,F)=>{const G=w[F];return e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed min-w-0",children:[e.jsxs("span",{className:"font-medium",children:[F+1,". "]}),E.question]}),e.jsx("div",{className:`text-xs shrink-0 max-w-[45%] text-right break-words ${G?"text-emerald-600 dark:text-emerald-400":"text-amber-600 dark:text-amber-400"}`,children:G?G.answer:"未回答"})]},`rev-${F}`)}),ce>0&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-700 rounded-md px-3 py-2",children:[e.jsx(be,{size:14}),"有 ",ce," 题未回答,将记为「未回答」。点击上方题号可回到对应题目修改。"]}),e.jsxs("div",{className:"flex gap-2 mt-1",children:[e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 disabled:opacity-50",onClick:P,disabled:f,children:[e.jsx(Gt,{size:14}),"提交全部答案"]}),e.jsx("button",{type:"button",className:"inline-flex items-center gap-1 px-4 py-2 text-sm font-medium text-gray-600 dark:text-gray-400 bg-gray-100 dark:bg-gray-700 rounded-md hover:bg-gray-200 dark:hover:bg-gray-600",onClick:()=>{R(!1),y(N.length-1)},disabled:f,children:"返回修改"})]})]}):L?e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("div",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed min-w-0",children:L.question}),e.jsxs("div",{className:"flex gap-1 shrink-0",children:[e.jsxs("button",{type:"button",className:"inline-flex items-center gap-0.5 px-2 py-1 text-xs text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-800 rounded-md hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-40",onClick:()=>{y(E=>Math.max(0,E-1)),R(!1)},disabled:b===0,children:[e.jsx(Vn,{size:12}),"上一题"]}),b<N.length-1?e.jsxs("button",{type:"button",className:"inline-flex items-center gap-0.5 px-2 py-1 text-xs text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-800 rounded-md hover:bg-gray-200 dark:hover:bg-gray-700",onClick:()=>{y(E=>Math.min(N.length-1,E+1)),R(!1)},children:["下一题",e.jsx(Ie,{size:12})]}):e.jsxs("button",{type:"button",className:"inline-flex items-center gap-0.5 px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-300 bg-blue-50 dark:bg-blue-900/20 rounded-md hover:bg-blue-100 dark:hover:bg-blue-900/30",onClick:()=>R(!0),children:["查看提交",e.jsx(Ie,{size:12})]})]})]}),e.jsx($t,{item:L,answered:!!w[b],selectedIdx:a,multiSelected:u,customInput:i,showCustomInput:p,onSelect:ie,onToggleMulti:U,onConfirmMulti:ue,onProceed:$,onEnterCustom:Y,onCancelCustom:Q,onSubmitCustom:se,onCustomChange:d,inputRef:C}),e.jsx("div",{className:"text-xs text-gray-400 dark:text-gray-500",children:p?e.jsx("span",{children:"Enter 提交,Shift+Enter 换行"}):L.multiSelect?e.jsx("span",{children:"点击切换选择,点击「确认选择」完成本题"}):e.jsx("span",{children:"点击选项完成本题,自动进入下一题"})})]}):null]}):e.jsxs("div",{className:"flex flex-col gap-4",children:[n.autoResolutionMs&&n.autoResolutionMs>0&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-700 rounded-md px-3 py-1.5",children:["⏱ ",Math.max(1,Math.round(n.autoResolutionMs/1e3)),"s 后未回答将自动按推荐项继续"]}),e.jsx("div",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed",children:n.question}),e.jsx($t,{item:N[0],answered:!1,selectedIdx:a,multiSelected:u,customInput:i,showCustomInput:p,onSelect:de,onToggleMulti:U,onConfirmMulti:ue,onProceed:$,onEnterCustom:Y,onCancelCustom:Q,onSubmitCustom:se,onCustomChange:d,inputRef:C}),e.jsx("div",{className:"text-xs text-gray-400 dark:text-gray-500",children:f?e.jsx("span",{children:"提交中..."}):p?e.jsx("span",{children:"Enter 提交,Shift+Enter 换行"}):n.multiSelect?e.jsx("span",{children:"点击切换选择,点击「确认选择」提交"}):e.jsx("span",{children:"点击选项确认选择"})})]})})}const _e=15;function _r({isOpen:r,onCloseModal:t}){const{t:n}=J("hook"),s=dt(),a=s.pendingApprovals,l=s.autoMode,u=s.setAutoMode,[o,i]=c.useState(0),[d,p]=c.useState(!1),[x,f]=c.useState(_e),[g,b]=c.useState(!0),y=c.useRef(null),w=c.useRef(!1);c.useEffect(()=>{if(a.length!==0){if(l){a.forEach(q=>{W.send({type:"hook_allow",data:JSON.stringify({approvalId:q.approvalId})})}),s.clearApprovals();return}i(q=>Math.min(q,a.length-1))}},[a.length,l]);const h=a[o]??null,v=a.length>0&&h!==null,R=a.length,C=v?R-o-1:0;c.useEffect(()=>{if(!(!v||d||!r||!h))return f(_e),y.current=setInterval(()=>{f(q=>q<=1?(y.current&&clearInterval(y.current),0):q-1)},1e3),()=>{y.current&&clearInterval(y.current)}},[v,d,r,h==null?void 0:h.approvalId]);const N=h?qt(h.toolName,h.askPayload):{level:"MEDIUM",reasonKey:"risk_default"},A=Wt[N.level],L=ps[N.level==="CRITICAL"?"critical":N.level==="HIGH"?"high":N.level==="LOW"?"low":"medium"],T=h?ln(h.toolName,h.askPayload):null,D=h?xs(h.toolName,h.askPayload):null,j=h?{verb:an(h.toolName),target:on(h.toolName,h.askPayload)}:null,P=h?De(h.askPayload)!==null:!1,M=h?cn(h.toolName,h.askPayload):null,de=x/_e*100,ie=x<=5,U=fs(_e-x),ue=c.useCallback((q,K)=>{const ee=ms.getState().activeSessionId;ee&&ae.getState().updateHookApprovalStatus(ee,q,K)},[]),$=c.useCallback(q=>{h&&(q&&ue(h.approvalId,q),p(!0),setTimeout(()=>{s.removeApproval(h.approvalId),i(0),p(!1),w.current=!1,f(_e)},200))},[h==null?void 0:h.approvalId,s,ue]),Y=c.useCallback(()=>{!h||d||w.current||(w.current=!0,y.current&&clearInterval(y.current),W.send({type:"hook_allow",data:JSON.stringify({approvalId:h.approvalId})}),$("approved"))},[h,$,d]),Q=c.useCallback(()=>{!h||d||w.current||(w.current=!0,y.current&&clearInterval(y.current),W.send({type:"hook_deny",data:JSON.stringify({approvalId:h.approvalId})}),$("denied"))},[h,$,d]),se=c.useCallback(()=>{if(!h||d||w.current)return;w.current=!0,y.current&&clearInterval(y.current);const q=De(h.askPayload);q?(s.addToSessionAllowList(h.toolName,q),W.send({type:"hook_allow",data:JSON.stringify({approvalId:h.approvalId,sessionAllow:!0})})):(s.addToSessionAllowList(h.toolName),W.send({type:"hook_allow",data:JSON.stringify({approvalId:h.approvalId})})),$("approved")},[h,$,s,d]),oe=c.useCallback(()=>{!h||d||w.current||(w.current=!0,y.current&&clearInterval(y.current),u(!0),he.getState().setAuto(!0),W.send({type:"hook_allow",data:JSON.stringify({approvalId:h.approvalId})}),$("approved"))},[h,$,d,u]),H=((h==null?void 0:h.timeoutMs)??15e3)>0,ce=(h==null?void 0:h.timeoutAction)==="deny"?Q:Y;if(c.useEffect(()=>{x===0&&r&&!d&&h&&H&&ce()},[x,r,d,h,ce,H]),c.useEffect(()=>{if(!r||!g)return;const q=K=>{const ee=K.target;ee&&typeof ee.closest=="function"&&ee.closest('input, textarea, select, [contenteditable="true"]')||(K.key==="Escape"?(K.preventDefault(),K.stopPropagation(),Q()):K.key==="Enter"?(K.preventDefault(),Y()):K.key==="1"?Y():K.key==="2"?Q():K.key==="3"?se():K.key==="4"&&oe())};return window.addEventListener("keydown",q),()=>window.removeEventListener("keydown",q)},[r,g,Y,Q,se,oe]),!v||!h)return null;const E=n("optionAllowHint"),F=n("optionDenyHint"),G=P?n("optionAllowPathHint"):n("optionAllowAlwaysHint",{tool:h.toolName}),fe=n("optionAutoModeHint"),V=(T==null?void 0:T.text)??D??null,re=V?e.jsxs("span",{className:"flex items-center gap-1.5 min-w-0",children:[e.jsx("code",{className:"font-mono text-[11px] bg-dark-surface text-accent-blue px-1 py-0.5 rounded shrink-0",children:h.toolName}),e.jsx("span",{className:"truncate",children:V})]}):null;return e.jsx(xn,{isOpen:r,onClose:()=>t==null?void 0:t(),title:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(it,{className:"w-4 h-4 text-yellow-400"}),e.jsx("span",{children:n("hookApproval")}),e.jsxs("span",{className:"text-xs text-dark-muted",children:["(",o+1,"/",R,")"]})]}),badge:e.jsxs("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-bold border shrink-0 ${A.badge}`,children:[A.icon," ",N.level]}),collapsedSummary:re,onExpandedChange:b,maxHeight:"50vh",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg ${A.bg} border ${A.border}`,children:[e.jsxs("span",{className:`px-1.5 py-0.5 rounded text-xs font-bold border ${A.badge}`,children:[A.icon," ",N.level]}),e.jsx("span",{className:"text-xs text-dark-muted truncate",children:n(N.reasonKey)}),e.jsxs("div",{className:"flex items-center gap-1.5 ml-auto shrink-0",children:[e.jsx(je,{size:12,className:ie?"text-accent-red":"text-dark-muted"}),e.jsx("span",{className:`text-xs font-mono ${ie?"text-accent-red animate-pulse":"text-dark-muted"}`,children:H?`${x}s`:"∞"}),e.jsx("div",{className:"w-12 h-1.5 bg-dark-border rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all duration-700 ${ie?"bg-accent-red":x<=8?"bg-accent-yellow":"bg-accent-green"}`,style:{width:`${de}%`}})})]})]}),e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[e.jsx("span",{className:"flex-none w-7 h-7 rounded-lg bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center",children:e.jsx(it,{size:15})}),j&&e.jsx(dn,{pre:n(j.verb),obj:j.target})]}),M&&(M.external&&M.path?e.jsxs("span",{className:"flex items-center gap-1 text-[11px] px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-400 border border-amber-500/30 shrink-0",title:M.path,children:[e.jsx(Bt,{size:10}),n("scopeExternal"),": ",M.path.length>48?`${M.path.slice(0,47)}…`:M.path]}):e.jsx("span",{className:"text-[11px] text-dark-muted/60 shrink-0",children:n("scopeLocal")}))]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-dark-muted shrink-0",children:n("tool")}),e.jsx("code",{className:"text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded truncate",children:h.toolName}),e.jsx("span",{className:"text-dark-muted/50",children:U}),e.jsx("span",{className:"text-dark-muted/50",children:L.label}),h.timeoutAction&&e.jsxs("span",{className:`text-xs ${h.timeoutAction==="deny"?"text-accent-red":"text-accent-green"}`,children:["timeout: ",H?`${h.timeoutAction==="allow"?"auto-allow":"auto-deny"}${h.timeoutMs?` (${(h.timeoutMs/1e3).toFixed(0)}s)`:""}`:n("timeoutWaitUser")]})]}),T?e.jsx(xt,{text:T.text,mono:T.mono}):D?e.jsx(xt,{text:D}):null,(N.level==="CRITICAL"||N.level==="HIGH")&&e.jsxs("div",{className:`flex items-center gap-1.5 text-xs px-2 py-1.5 rounded ${A.bg} ${A.text}`,children:[e.jsx(be,{size:13}),e.jsx("span",{children:N.level==="CRITICAL"?n("highRiskWarning"):n("mediumRiskConfirm")})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("button",{onClick:Y,disabled:d,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-accent-blue text-white text-sm font-medium hover:opacity-90 shadow-sm transition-all disabled:opacity-50",children:[e.jsx("span",{className:"text-[10px] font-mono bg-white/20 rounded px-1",children:"1"}),e.jsx("span",{children:$e.allow.label}),e.jsx("span",{className:"text-[11px] text-white/70 hidden sm:inline",children:E})]}),e.jsxs("button",{onClick:se,disabled:d,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50",children:[e.jsx("span",{className:"text-[10px] font-mono text-dark-muted bg-dark-surface rounded px-1",children:"3"}),e.jsx("span",{children:$e.allow_session.label}),e.jsx("span",{className:"text-[11px] text-dark-muted/60 hidden sm:inline",children:G})]}),e.jsxs("button",{onClick:oe,disabled:d,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover text-sm transition-colors disabled:opacity-50",children:[e.jsx("span",{className:"text-[10px] font-mono text-dark-muted bg-dark-surface rounded px-1",children:"4"}),e.jsx("span",{children:$e.auto.label}),e.jsx("span",{className:"text-[11px] text-dark-muted/60 hidden sm:inline",children:fe})]}),e.jsx("span",{className:"flex-1"}),e.jsxs("button",{onClick:Q,disabled:d,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-dark-muted hover:bg-red-500/10 hover:text-red-400 text-sm transition-colors disabled:opacity-50",children:[e.jsx("span",{className:"text-[10px] font-mono text-dark-muted/60 rounded px-1",children:"2"}),e.jsx("span",{children:$e.deny.label}),e.jsx("span",{className:"text-[11px] text-dark-muted/60 hidden sm:inline",children:F})]})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-dark-muted/60",children:[e.jsx("span",{children:n("shortcutHint")}),e.jsx("span",{children:C>0?n("morePending",{n:C}):n("lastItem")})]})]})})}const Ir=c.memo(function(){const{t}=J(),[n,s]=c.useState(0),[a,l]=c.useState(0),u=c.useCallback(()=>{const o=W.getReconnectState();s(o.reconnecting?o.attempts:0),l(o.maxAttempts)},[]);return c.useEffect(()=>{const o=W.onReconnectAttempt((f,g)=>{s(f),l(g)}),i=W.onReconnectSuccess(()=>{s(0),l(0)}),d=W.onReconnectGiveUp(()=>s(0)),p=W.onClose(u),x=W.onOpen(u);return u(),()=>{o(),i(),d(),p(),x()}},[u]),n<=0?null:e.jsxs("div",{className:"flex items-center justify-center gap-2 px-4 py-2 text-xs text-accent-yellow bg-accent-yellow/10 border-b border-accent-yellow/20 select-none",role:"status","aria-live":"polite",children:[e.jsx(Ee,{size:13,className:"animate-spin shrink-0"}),e.jsx("span",{children:t("reconnect.reconnecting",{attempt:n,max:a})}),e.jsx("span",{className:"hidden sm:inline text-[10px] text-accent-yellow/70",children:t("reconnect.hint")})]})}),rt="dsc-auto-access-banner-dismissed",Rr=c.memo(function(){const{t}=J(),n=he(o=>o.mode),[s,a]=c.useState(()=>localStorage.getItem(rt)==="1");c.useEffect(()=>{ut(n==="normal"?"act":n)||localStorage.getItem(rt)==="1"&&a(!1)},[n]);const l=c.useCallback(o=>{o&&localStorage.setItem(rt,"1"),a(!0)},[]);return!(n!=="normal"&&ut(n))||s?null:e.jsxs("div",{className:"flex items-start gap-2 px-4 py-2 text-[11px] leading-snug text-accent-yellow bg-accent-yellow/10 border-b border-accent-yellow/20 select-none",role:"note",children:[e.jsx(Qn,{size:14,className:"shrink-0 mt-0.5 text-accent-yellow"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"font-medium",children:t("autoAccess.title")}),e.jsxs("span",{className:"text-accent-yellow/80",children:[" ",t("autoAccess.desc")]})]}),e.jsx("button",{onClick:()=>l(!1),className:"shrink-0 rounded p-0.5 text-accent-yellow/70 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors",title:t("autoAccess.dismiss"),"aria-label":t("autoAccess.dismiss"),children:e.jsx(Se,{size:12})}),e.jsx("button",{onClick:()=>l(!0),className:"shrink-0 rounded px-1.5 py-0.5 text-[10px] text-accent-yellow/70 hover:text-accent-yellow hover:bg-accent-yellow/10 transition-colors whitespace-nowrap",children:t("autoAccess.neverShow")})]})}),Ft=24,Pt=240,Dr={pending:{color:"text-gray-400",bg:"bg-gray-500/10",label:"Pending"},running:{color:"text-blue-400",bg:"bg-blue-500/10",label:"Running"},completed:{color:"text-green-400",bg:"bg-green-500/10",label:"Done"},failed:{color:"text-red-400",bg:"bg-red-500/10",label:"Failed"},skipped:{color:"text-gray-500",bg:"bg-gray-500/5",label:"Skipped"}},Or=({status:r})=>r==="running"?e.jsx(Re,{size:12,className:"animate-spin text-accent-blue"}):r==="completed"?e.jsx(ot,{size:12,className:"text-accent-green"}):r==="failed"?e.jsx(ss,{size:12,className:"text-accent-red"}):r==="skipped"?e.jsx(rs,{size:12,className:"text-dark-muted"}):e.jsx(as,{size:12,className:"text-dark-muted"}),Lr=c.memo(function({sessionId:t,defaultExpanded:n,onClose:s}){const{t:a}=J(),[l,u]=c.useState(n??!1),[o,i]=c.useState(null),d=Jt(j=>j.getTasksForSession(t)),[p,x]=c.useState(null),f=c.useRef(null),g=c.useRef(!1),b=c.useRef(null),y=c.useCallback(j=>{var P;j.button===0&&(j.target.closest("[data-taskboard-close]")||(g.current=!1,f.current={y:j.clientY,expanded:l,bodyHeight:((P=b.current)==null?void 0:P.offsetHeight)??0},j.currentTarget.setPointerCapture(j.pointerId)))},[l]),w=c.useCallback(j=>{const P=f.current;P&&(Math.abs(j.clientY-P.y)>4&&(g.current=!0),x(j.clientY-P.y))},[]),h=c.useCallback(j=>{const P=f.current;if(!P)return;const M=j.clientY-P.y;P.expanded&&M<-Ft?u(!1):!P.expanded&&M>Ft&&u(!0),f.current=null,x(null),setTimeout(()=>{g.current=!1},0)},[]),v=c.useCallback(()=>{if(g.current){g.current=!1;return}u(j=>!j)},[]),R=c.useCallback(j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),u(P=>!P))},[]),C=p!==null,N=c.useMemo(()=>{const j=f.current;return p===null||!j?null:j.expanded?Math.min(Pt,Math.max(0,j.bodyHeight+p)):Math.min(Pt,Math.max(0,p))},[p]),A=c.useMemo(()=>{const j=d.length,P=d.filter(U=>U.status==="completed").length,M=d.filter(U=>U.status==="running").length,de=d.filter(U=>U.status==="failed").length,ie=j>0?Math.round(P/j*100):0;return{total:j,completed:P,running:M,failed:de,progress:ie}},[d]),L=c.useMemo(()=>{const j={pending:[],running:[],completed:[],failed:[]};return d.forEach(P=>{const M=P.status==="skipped"?"pending":P.status;j[M].push(P)}),j},[d]),T=[...L.running,...L.failed,...L.pending.slice(0,5),...L.completed.slice(-3)],D=l||C;return d.length===0?null:e.jsxs("div",{className:"w-full shrink-0 mb-2 border border-dark-border rounded-lg bg-dark-bg/70 overflow-hidden",children:[e.jsxs("div",{role:"button",tabIndex:0,"aria-expanded":l,onClick:v,onKeyDown:R,onPointerDown:y,onPointerMove:w,onPointerUp:h,onPointerCancel:h,onLostPointerCapture:h,className:"w-full flex items-center justify-between px-2.5 py-1.5 hover:bg-dark-hover transition-colors cursor-pointer select-none touch-none",title:a("chat.taskBoardDragHint"),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(es,{size:14,className:"text-accent-blue shrink-0"}),e.jsx("span",{className:"text-xs font-medium text-dark-text",children:"Task Board"}),e.jsxs("span",{className:"text-[10px] text-dark-muted shrink-0",children:[A.completed,"/",A.total]}),A.total>0&&e.jsx("div",{className:"w-16 h-1.5 bg-dark-surface rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all duration-500 ${A.running>0?"bg-accent-blue":A.failed>0?"bg-accent-red":"bg-accent-green"}`,style:{width:`${A.progress}%`}})}),A.running>0&&e.jsx("span",{className:"w-1.5 h-1.5 bg-accent-blue rounded-full animate-pulse shrink-0"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[s&&e.jsx("span",{role:"button",tabIndex:0,"data-taskboard-close":!0,onClick:j=>{j.stopPropagation(),s()},onKeyDown:j=>{j.key==="Enter"&&(j.stopPropagation(),s())},className:"p-0.5 rounded hover:bg-dark-hover transition-colors cursor-pointer",title:"Hide task drawer",children:e.jsx(Se,{size:12,className:"text-dark-muted"})}),e.jsx(ts,{size:12,className:"text-dark-muted/40 shrink-0","aria-hidden":"true"}),l?e.jsx(ns,{size:14,className:"text-dark-muted"}):e.jsx(me,{size:14,className:"text-dark-muted"})]})]}),D&&e.jsx("div",{ref:b,className:"border-t border-dark-border",style:N!==null?{height:N,overflow:"hidden"}:void 0,children:d.length===0?e.jsx("div",{className:"text-xs text-dark-muted py-4 text-center",children:a("chat.noTasks")}):e.jsxs("div",{className:"px-2.5 py-2 max-h-[240px] overflow-y-auto custom-scrollbar space-y-1.5",children:[T.map(j=>e.jsx($r,{task:j,isSelected:j.id===o,onClick:()=>i(o===j.id?null:j.id)},j.id)),L.pending.length>5&&e.jsxs("div",{className:"text-[10px] text-dark-muted text-center",children:[L.pending.length-5," more pending tasks"]}),L.completed.length>3&&e.jsxs("div",{className:"text-[10px] text-dark-muted text-center",children:[L.completed.length-3," more completed tasks"]})]})})]})}),Mr=(r,t)=>{if(!r)return"";const n=(t||Date.now())-r;return n<1e3?`${n}ms`:`${(n/1e3).toFixed(1)}s`},$r=c.memo(function({task:t,isSelected:n,onClick:s}){const a=Dr[t.status];return e.jsxs("div",{onClick:s,className:`rounded border p-2 cursor-pointer transition-all ${a.bg} border-dark-border
25
+ ${n?"ring-1 ring-accent-blue":"hover:border-dark-muted/40"}
26
+ ${t.status==="running"?"border-l-2 border-l-accent-blue":"border-l-2 border-l-transparent"}`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Or,{status:t.status}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-dark-text truncate",children:t.title}),e.jsx("span",{className:`text-[10px] ${a.color} shrink-0`,children:a.label})]}),e.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-dark-muted",children:[e.jsx("span",{children:t.agentType||t.source}),t.startedAt&&e.jsx("span",{children:Mr(t.startedAt,t.completedAt)})]})]})]}),t.status==="running"&&t.progress!==void 0&&e.jsx("div",{className:"mt-1.5",children:e.jsx("div",{className:"w-full h-1 bg-dark-bg rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-accent-blue rounded-full transition-all duration-500",style:{width:`${t.progress}%`}})})}),n&&e.jsxs("div",{className:"mt-2 pt-2 border-t border-dark-border space-y-1",children:[t.description&&e.jsx("p",{className:"text-[10px] text-dark-muted",children:t.description}),t.error&&e.jsx("p",{className:"text-[10px] text-red-400",children:t.error}),t.result&&e.jsx("p",{className:"text-[10px] text-green-400",children:t.result}),t.dependencies&&t.dependencies.length>0&&e.jsxs("p",{className:"text-[10px] text-dark-muted",children:[t.dependencies.length," dependencies"]})]})]})}),Hr=c.memo(function({tabs:t,activeSessionId:n,onSend:s,onStop:a,onPause:l,onResume:u,activeTab:o,setActiveTab:i,createNewSession:d,clearMessages:p,setTheme:x,setThemePreset:f,toggleTerminal:g,setLogs:b,setUnreadLogs:y,showTaskBoard:w=!0,onToggleTaskBoard:h,onRegenerate:v,onDeleteMessage:R,hookDrawerOpen:C,onCloseHookDrawer:N,questionDrawerOpen:A,onCloseQuestionDrawer:L}){const T=c.useMemo(()=>({setActiveTab:i,createNewSession:d,clearMessages:p,setTheme:x,setThemePreset:f,toggleTerminal:g,setLogs:b,setUnreadLogs:y}),[i,d,p,x,f,g,b,y]),D=ae($=>n?$.messagesBySession[n]||[]:[]),j=ae($=>n?$.generatingSessions.includes(n):!1),P=ae($=>n?$.pausedSessions.includes(n):!1),M=t.find($=>$.id===n)||null;c.useEffect(()=>{if(!n)return;let $=!1;return le.tasks.list(n).then(Y=>{if($||!Y.success||!Array.isArray(Y.data))return;const Q={PENDING:"pending",RUNNING:"running",COMPLETED:"completed",FAILED:"failed",CANCELLED:"skipped"},se=Date.now(),oe=Y.data.filter(H=>H.sessionId===n).map(H=>{const ce=new Date(H.createdAt).getTime()||se,E=new Date(H.updatedAt).getTime()||se;return{id:H.id,sessionId:n,title:H.title,status:Q[H.status]||"pending",source:"task",description:H.description,progress:H.progress,createdAt:ce,updatedAt:E,raw:H}});Jt.getState().setTasks(n,oe,"task")}).catch(()=>{}),()=>{$=!0}},[n]);const de=c.useCallback(($,Y)=>{n&&s(n,$,Y)},[s,n]),ie=c.useCallback($=>{n&&s(n,$)},[s,n]),U=c.useCallback($=>{n&&v&&v(n,$)},[v,n]),ue=c.useCallback($=>{n&&R&&R(n,$)},[R,n]);return e.jsx("div",{className:"flex-1 flex min-h-0",children:e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 min-h-0",children:[e.jsx(Ir,{}),e.jsx(Rr,{}),M&&e.jsxs(e.Fragment,{children:[e.jsx(sr,{messages:D,isGenerating:j,isPaused:P,sessionId:M.id,onSendSuggestion:ie,onRegenerate:v?U:void 0,onDeleteMessage:R?ue:void 0}),e.jsx(_r,{isOpen:!!C,onCloseModal:N}),e.jsx(Tr,{isOpen:!!A,onClose:L??(()=>{})}),w&&e.jsx(Lr,{sessionId:M.id,defaultExpanded:!1,onClose:h},M.id),e.jsx(Cr,{sessionId:M.id,onSend:de,onStop:()=>a(M.id),onPause:()=>l(M.id),onResume:()=>u(M.id),slashOptions:T})]})]})})});export{Hr as SessionGrid};