@next-open-ai/openclawx 0.9.6 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/desktop/renderer/dist/assets/{index-BihHYEuk.js → index-BPWV-_M2.js} +1 -1
- package/apps/desktop/renderer/dist/index.html +1 -1
- package/dist/core/env/resolve-shell-env.d.ts +49 -0
- package/dist/core/env/resolve-shell-env.js +305 -0
- package/dist/core/installer/skill-installer.js +6 -1
- package/dist/core/mcp/transport/stdio.js +14 -6
- package/dist/gateway/server.js +4 -0
- package/package.json +3 -2
|
@@ -90,4 +90,4 @@ https://github.com/highlightjs/highlight.js/issues/2277`),Ee=R,he=P),oe===void 0
|
|
|
90
90
|
(multipart)?`,end:`\\]
|
|
91
91
|
`},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}}return rd=n,rd}var sd,$f;function Jk(){if($f)return sd;$f=1;function n(x){return x?typeof x=="string"?x:x.source:null}function e(x){return o("(?=",x,")")}function o(...x){return x.map(re=>n(re)).join("")}function t(x){const U=x[x.length-1];return typeof U=="object"&&U.constructor===Object?(x.splice(x.length-1,1),U):{}}function a(...x){return"("+(t(x).capture?"":"?:")+x.map(se=>n(se)).join("|")+")"}const l=x=>o(/\b/,x,/\w$/.test(x)?/\b/:/\B/),i=["Protocol","Type"].map(l),r=["init","self"].map(l),c=["Any","Self"],u=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],_=["false","nil","true"],m=["assignment","associativity","higherThan","left","lowerThan","none","right"],p=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],E=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],S=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),T=a(S,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),h=o(S,T,"*"),A=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),b=a(A,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),y=o(A,b,"*"),w=o(/[A-Z]/,b,"*"),k=["attached","autoclosure",o(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",o(/objc\(/,y,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],B=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function X(x){const U={match:/\s+/,relevance:0},re=x.COMMENT("/\\*","\\*/",{contains:["self"]}),se=[x.C_LINE_COMMENT_MODE,re],ne={match:[/\./,a(...i,...r)],className:{2:"keyword"}},Te={match:o(/\./,a(...u)),relevance:0},G=u.filter(ge=>typeof ge=="string").concat(["_|0"]),H=u.filter(ge=>typeof ge!="string").concat(c).map(l),R={variants:[{className:"keyword",match:a(...H,...r)}]},P={$pattern:a(/\b\w+/,/#\w+/),keyword:G.concat(p),literal:_},oe=[ne,Te,R],he={match:o(/\./,a(...E)),relevance:0},Ee={className:"built_in",match:o(/\b/,a(...E),/(?=\()/)},ve=[he,Ee],we={match:/->/,relevance:0},Re={className:"operator",relevance:0,variants:[{match:h},{match:`\\.(\\.|${T})+`}]},Ie=[we,Re],xe="([0-9]_*)+",Ge="([0-9a-fA-F]_*)+",W={className:"number",relevance:0,variants:[{match:`\\b(${xe})(\\.(${xe}))?([eE][+-]?(${xe}))?\\b`},{match:`\\b0x(${Ge})(\\.(${Ge}))?([pP][+-]?(${xe}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},me=(ge="")=>({className:"subst",variants:[{match:o(/\\/,ge,/[0\\tnr"']/)},{match:o(/\\/,ge,/u\{[0-9a-fA-F]{1,8}\}/)}]}),F=(ge="")=>({className:"subst",match:o(/\\/,ge,/[\t ]*(?:[\r\n]|\r\n)/)}),Z=(ge="")=>({className:"subst",label:"interpol",begin:o(/\\/,ge,/\(/),end:/\)/}),Se=(ge="")=>({begin:o(ge,/"""/),end:o(/"""/,ge),contains:[me(ge),F(ge),Z(ge)]}),C=(ge="")=>({begin:o(ge,/"/),end:o(/"/,ge),contains:[me(ge),Z(ge)]}),N={className:"string",variants:[Se(),Se("#"),Se("##"),Se("###"),C(),C("#"),C("##"),C("###")]},O=[x.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[x.BACKSLASH_ESCAPE]}],M={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:O},Y=ge=>{const Je=o(ge,/\//),Rt=o(/\//,ge);return{begin:Je,end:Rt,contains:[...O,{scope:"comment",begin:`#(?!.*${Rt})`,end:/$/}]}},q={scope:"regexp",variants:[Y("###"),Y("##"),Y("#"),M]},$={match:o(/`/,y,/`/)},ce={className:"variable",match:/\$\d+/},de={className:"variable",match:`\\$${b}+`},z=[$,ce,de],ke={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:B,contains:[...Ie,W,N]}]}},fe={scope:"keyword",match:o(/@/,a(...k),e(a(/\(/,/\s+/)))},Ce={scope:"meta",match:o(/@/,y)},Ne=[ke,fe,Ce],ie={match:e(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:o(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,b,"+")},{className:"type",match:w,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:o(/\s+&\s+/,e(w)),relevance:0}]},ee={begin:/</,end:/>/,keywords:P,contains:[...se,...oe,...Ne,we,ie]};ie.contains.push(ee);const be={match:o(y,/\s*:/),keywords:"_|0",relevance:0},Ue={begin:/\(/,end:/\)/,relevance:0,keywords:P,contains:["self",be,...se,q,...oe,...ve,...Ie,W,N,...z,...Ne,ie]},Qe={begin:/</,end:/>/,keywords:"repeat each",contains:[...se,ie]},ct={begin:a(e(o(y,/\s*:/)),e(o(y,/\s+/,y,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:y}]},St={begin:/\(/,end:/\)/,keywords:P,contains:[ct,...se,...oe,...Ie,W,N,...Ne,ie,Ue],endsParent:!0,illegal:/["']/},At={match:[/(func|macro)/,/\s+/,a($.match,y,h)],className:{1:"keyword",3:"title.function"},contains:[Qe,St,U],illegal:[/\[/,/%/]},dn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[Qe,St,U],illegal:/\[|%/},bt={match:[/operator/,/\s+/,h],className:{1:"keyword",3:"title"}},It={begin:[/precedencegroup/,/\s+/,w],className:{1:"keyword",3:"title"},contains:[ie],keywords:[...m,..._],end:/}/},jt={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},fn={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ue={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,y,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:P,contains:[Qe,...oe,{begin:/:/,end:/\{/,keywords:P,contains:[{scope:"title.class.inherited",match:w},...oe],relevance:0}]};for(const ge of N.variants){const Je=ge.contains.find(kt=>kt.label==="interpol");Je.keywords=P;const Rt=[...oe,...ve,...Ie,W,N,...z];Je.contains=[...Rt,{begin:/\(/,end:/\)/,contains:["self",...Rt]}]}return{name:"Swift",keywords:P,contains:[...se,At,dn,jt,fn,ue,bt,It,{beginKeywords:"import",end:/$/,contains:[...se],relevance:0},q,...oe,...ve,...Ie,W,N,...z,...Ne,ie,Ue]}}return sd=X,sd}var id,Xf;function jk(){if(Xf)return id;Xf=1;function n(e){return{name:"Tagger Script",contains:[{className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\\[()]/},{begin:/\(/,end:/\)/,contains:[{begin:/\\[()]/},"self"]}],relevance:10},{className:"keyword",begin:/\$[_a-zA-Z0-9]+(?=\()/},{className:"variable",begin:/%[_a-zA-Z0-9:]+%/},{className:"symbol",begin:/\\[\\nt$%,()]/},{className:"symbol",begin:/\\u[a-fA-F0-9]{4}/}]}}return id=n,id}var ld,Zf;function eM(){if(Zf)return ld;Zf=1;function n(e){const o="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},l={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},r={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,l]},c=e.inherit(r,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),E={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},S={end:",",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},T={begin:/\{/,end:/\}/,contains:[S],illegal:"\\n",relevance:0},h={begin:"\\[",end:"\\]",contains:[S],illegal:"\\n",relevance:0},A=[a,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},E,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},T,h,i,r],b=[...A];return b.pop(),b.push(c),S.contains=b,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:A}}return ld=n,ld}var cd,Jf;function tM(){if(Jf)return cd;Jf=1;function n(e){return{name:"Test Anything Protocol",case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:/---$/,end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}return cd=n,cd}var dd,jf;function nM(){if(jf)return dd;jf=1;function n(e){const o=e.regex,t=/[a-zA-Z_][a-zA-Z0-9_]*/,a={className:"number",variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{name:"Tcl",aliases:["tk"],keywords:["after","append","apply","array","auto_execok","auto_import","auto_load","auto_mkindex","auto_mkindex_old","auto_qualify","auto_reset","bgerror","binary","break","catch","cd","chan","clock","close","concat","continue","dde","dict","encoding","eof","error","eval","exec","exit","expr","fblocked","fconfigure","fcopy","file","fileevent","filename","flush","for","foreach","format","gets","glob","global","history","http","if","incr","info","interp","join","lappend|10","lassign|10","lindex|10","linsert|10","list","llength|10","load","lrange|10","lrepeat|10","lreplace|10","lreverse|10","lsearch|10","lset|10","lsort|10","mathfunc","mathop","memory","msgcat","namespace","open","package","parray","pid","pkg::create","pkg_mkIndex","platform","platform::shell","proc","puts","pwd","read","refchan","regexp","registry","regsub|10","rename","return","safe","scan","seek","set","socket","source","split","string","subst","switch","tcl_endOfWord","tcl_findLibrary","tcl_startOfNextWord","tcl_startOfPreviousWord","tcl_wordBreakAfter","tcl_wordBreakBefore","tcltest","tclvars","tell","time","tm","trace","unknown","unload","unset","update","uplevel","upvar","variable","vwait","while"],contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",endsWithParent:!0,excludeEnd:!0}]},{className:"variable",variants:[{begin:o.concat(/\$/,o.optional(/::/),t,"(::",t,")*")},{begin:"\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"\\}",contains:[a]}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},a]}}return dd=n,dd}var _d,eE;function oM(){if(eE)return _d;eE=1;function n(e){const o=["bool","byte","i16","i32","i64","double","string","binary"];return{name:"Thrift",keywords:{keyword:["namespace","const","typedef","struct","enum","service","exception","void","oneway","set","list","map","required","optional"],type:o,literal:"true false"},contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"struct enum service exception",end:/\{/,illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",keywords:{type:[...o,"set","list","map"]},end:">",contains:["self"]}]}}return _d=n,_d}var ud,tE;function aM(){if(tE)return ud;tE=1;function n(e){const o={className:"number",begin:"[1-9][0-9]*",relevance:0},t={className:"symbol",begin:":[^\\]]+"},a={className:"built_in",begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",end:"\\]",contains:["self",o,t]},l={className:"built_in",begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",contains:["self",o,e.QUOTE_STRING_MODE,t]};return{name:"TP",keywords:{keyword:["ABORT","ACC","ADJUST","AND","AP_LD","BREAK","CALL","CNT","COL","CONDITION","CONFIG","DA","DB","DIV","DETECT","ELSE","END","ENDFOR","ERR_NUM","ERROR_PROG","FINE","FOR","GP","GUARD","INC","IF","JMP","LINEAR_MAX_SPEED","LOCK","MOD","MONITOR","OFFSET","Offset","OR","OVERRIDE","PAUSE","PREG","PTH","RT_LD","RUN","SELECT","SKIP","Skip","TA","TB","TO","TOOL_OFFSET","Tool_Offset","UF","UT","UFRAME_NUM","UTOOL_NUM","UNLOCK","WAIT","X","Y","Z","W","P","R","STRLEN","SUBSTR","FINDSTR","VOFFSET","PROG","ATTR","MN","POS"],literal:["ON","OFF","max_speed","LPOS","JPOS","ENABLE","DISABLE","START","STOP","RESET"]},contains:[a,l,{className:"keyword",begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{className:"number",begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0},e.COMMENT("//","[;$]"),e.COMMENT("!","[;$]"),e.COMMENT("--eg:","$"),e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"'"},e.C_NUMBER_MODE,{className:"variable",begin:"\\$[A-Za-z0-9_]+"}]}}return ud=n,ud}var md,nE;function rM(){if(nE)return md;nE=1;function n(e){const o=e.regex,t=["absolute_url","asset|0","asset_version","attribute","block","constant","controller|0","country_timezones","csrf_token","cycle","date","dump","expression","form|0","form_end","form_errors","form_help","form_label","form_rest","form_row","form_start","form_widget","html_classes","include","is_granted","logout_path","logout_url","max","min","parent","path|0","random","range","relative_path","render","render_esi","source","template_from_string","url|0"],a=["abs","abbr_class","abbr_method","batch","capitalize","column","convert_encoding","country_name","currency_name","currency_symbol","data_uri","date","date_modify","default","escape","file_excerpt","file_link","file_relative","filter","first","format","format_args","format_args_as_text","format_currency","format_date","format_datetime","format_file","format_file_from_text","format_number","format_time","html_to_markdown","humanize","inky_to_html","inline_css","join","json_encode","keys","language_name","last","length","locale_name","lower","map","markdown","markdown_to_html","merge","nl2br","number_format","raw","reduce","replace","reverse","round","slice","slug","sort","spaceless","split","striptags","timezone_name","title","trans","transchoice","trim","u|0","upper","url_encode","yaml_dump","yaml_encode"];let l=["apply","autoescape","block","cache","deprecated","do","embed","extends","filter","flush","for","form_theme","from","if","import","include","macro","sandbox","set","stopwatch","trans","trans_default_domain","transchoice","use","verbatim","with"];l=l.concat(l.map(T=>`end${T}`));const i={scope:"string",variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},r={scope:"number",match:/\d+/},c={begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[i,r]},u={beginKeywords:t.join(" "),keywords:{name:t},relevance:0,contains:[c]},_={match:/\|(?=[A-Za-z_]+:?)/,beginScope:"punctuation",relevance:0,contains:[{match:/[A-Za-z_]+:?/,keywords:a}]},m=(T,{relevance:h})=>({beginScope:{1:"template-tag",3:"name"},relevance:h||2,endScope:"template-tag",begin:[/\{%/,/\s*/,o.either(...T)],end:/%\}/,keywords:"in",contains:[_,u,i,r]}),p=/[a-z_]+/,E=m(l,{relevance:2}),S=m([p],{relevance:1});return{name:"Twig",aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#\}/),E,S,{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:["self",_,u,i,r]}]}}return md=n,md}var pd,oE;function sM(){if(oE)return pd;oE=1;const n="[A-Za-z$_][0-9A-Za-z$_]*",e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],o=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],l=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],i=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],r=[].concat(l,t,a);function c(_){const m=_.regex,p=(me,{after:F})=>{const Z="</"+me[0].slice(1);return me.input.indexOf(Z,F)!==-1},E=n,S={begin:"<>",end:"</>"},T=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(me,F)=>{const Z=me[0].length+me.index,Se=me.input[Z];if(Se==="<"||Se===","){F.ignoreMatch();return}Se===">"&&(p(me,{after:Z})||F.ignoreMatch());let C;const N=me.input.substring(Z);if(C=N.match(/^\s*=/)){F.ignoreMatch();return}if((C=N.match(/^\s+extends\s+/))&&C.index===0){F.ignoreMatch();return}}},A={$pattern:n,keyword:e,literal:o,built_in:r,"variable.language":i},b="[0-9](_?[0-9])*",y=`\\.(${b})`,w="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",k={className:"number",variants:[{begin:`(\\b(${w})((${y})|\\.)?|(${y}))[eE][+-]?(${b})\\b`},{begin:`\\b(${w})\\b((${y})\\b|\\.)?|(${y})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},B={className:"subst",begin:"\\$\\{",end:"\\}",keywords:A,contains:[]},X={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[_.BACKSLASH_ESCAPE,B],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[_.BACKSLASH_ESCAPE,B],subLanguage:"css"}},U={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[_.BACKSLASH_ESCAPE,B],subLanguage:"graphql"}},re={className:"string",begin:"`",end:"`",contains:[_.BACKSLASH_ESCAPE,B]},ne={className:"comment",variants:[_.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:E+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),_.C_BLOCK_COMMENT_MODE,_.C_LINE_COMMENT_MODE]},Te=[_.APOS_STRING_MODE,_.QUOTE_STRING_MODE,X,x,U,re,{match:/\$\d+/},k];B.contains=Te.concat({begin:/\{/,end:/\}/,keywords:A,contains:["self"].concat(Te)});const G=[].concat(ne,B.contains),H=G.concat([{begin:/(\s*)\(/,end:/\)/,keywords:A,contains:["self"].concat(G)}]),R={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:A,contains:H},P={variants:[{match:[/class/,/\s+/,E,/\s+/,/extends/,/\s+/,m.concat(E,"(",m.concat(/\./,E),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,E],scope:{1:"keyword",3:"title.class"}}]},oe={relevance:0,match:m.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...t,...a]}},he={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ee={variants:[{match:[/function/,/\s+/,E,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],illegal:/%/},ve={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function we(me){return m.concat("(?!",me.join("|"),")")}const Re={match:m.concat(/\b/,we([...l,"super","import"].map(me=>`${me}\\s*\\(`)),E,m.lookahead(/\s*\(/)),className:"title.function",relevance:0},Ie={begin:m.concat(/\./,m.lookahead(m.concat(E,/(?![0-9A-Za-z$_(])/))),end:E,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},xe={match:[/get|set/,/\s+/,E,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},R]},Ge="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+_.UNDERSCORE_IDENT_RE+")\\s*=>",W={match:[/const|var|let/,/\s+/,E,/\s*/,/=\s*/,/(async\s*)?/,m.lookahead(Ge)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:A,exports:{PARAMS_CONTAINS:H,CLASS_REFERENCE:oe},illegal:/#(?![$_A-z])/,contains:[_.SHEBANG({label:"shebang",binary:"node",relevance:5}),he,_.APOS_STRING_MODE,_.QUOTE_STRING_MODE,X,x,U,re,ne,{match:/\$\d+/},k,oe,{scope:"attr",match:E+m.lookahead(":"),relevance:0},W,{begin:"("+_.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[ne,_.REGEXP_MODE,{className:"function",begin:Ge,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:_.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:A,contains:H}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:S.begin,end:S.end},{match:T},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},Ee,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+_.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[R,_.inherit(_.TITLE_MODE,{begin:E,className:"title.function"})]},{match:/\.\.\./,relevance:0},Ie,{match:"\\$"+E,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[R]},Re,ve,P,xe,{match:/\$[(.]/}]}}function u(_){const m=_.regex,p=c(_),E=n,S=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],T={begin:[/namespace/,/\s+/,_.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},h={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:S},contains:[p.exports.CLASS_REFERENCE]},A={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},b=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],y={$pattern:n,keyword:e.concat(b),literal:o,built_in:r.concat(S),"variable.language":i},w={className:"meta",begin:"@"+E},k=(U,re,se)=>{const ne=U.contains.findIndex(Te=>Te.label===re);if(ne===-1)throw new Error("can not find mode to replace");U.contains.splice(ne,1,se)};Object.assign(p.keywords,y),p.exports.PARAMS_CONTAINS.push(w);const B=p.contains.find(U=>U.scope==="attr"),X=Object.assign({},B,{match:m.concat(E,m.lookahead(/\s*\?:/))});p.exports.PARAMS_CONTAINS.push([p.exports.CLASS_REFERENCE,B,X]),p.contains=p.contains.concat([w,T,h,X]),k(p,"shebang",_.SHEBANG()),k(p,"use_strict",A);const x=p.contains.find(U=>U.label==="func.def");return x.relevance=0,Object.assign(p,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),p}return pd=u,pd}var gd,aE;function iM(){if(aE)return gd;aE=1;function n(e){return{name:"Vala",keywords:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/,excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{className:"meta",begin:"^#",end:"$"}]}}return gd=n,gd}var fd,rE;function lM(){if(rE)return fd;rE=1;function n(e){const o=e.regex,t={className:"string",begin:/"(""|[^/n])"C\b/},a={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},l=/\d{1,2}\/\d{1,2}\/\d{4}/,i=/\d{4}-\d{1,2}-\d{1,2}/,r=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,c=/\d{1,2}(:\d{1,2}){1,2}/,u={className:"literal",variants:[{begin:o.concat(/# */,o.either(i,l),/ *#/)},{begin:o.concat(/# */,c,/ *#/)},{begin:o.concat(/# */,r,/ *#/)},{begin:o.concat(/# */,o.either(i,l),/ +/,o.either(r,c),/ *#/)}]},_={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},m={className:"label",begin:/^\w+:/},p=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),E=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[t,a,u,_,m,p,E,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[E]}]}}return fd=n,fd}var Ed,sE;function cM(){if(sE)return Ed;sE=1;function n(e){const o=e.regex,t=["lcase","month","vartype","instrrev","ubound","setlocale","getobject","rgb","getref","string","weekdayname","rnd","dateadd","monthname","now","day","minute","isarray","cbool","round","formatcurrency","conversions","csng","timevalue","second","year","space","abs","clng","timeserial","fixs","len","asc","isempty","maths","dateserial","atn","timer","isobject","filter","weekday","datevalue","ccur","isdate","instr","datediff","formatdatetime","replace","isnull","right","sgn","array","snumeric","log","cdbl","hex","chr","lbound","msgbox","ucase","getlocale","cos","cdate","cbyte","rtrim","join","hour","oct","typename","trim","strcomp","int","createobject","loadpicture","tan","formatnumber","mid","split","cint","sin","datepart","ltrim","sqr","time","derived","eval","date","formatpercent","exp","inputbox","left","ascw","chrw","regexp","cstr","err"],a=["server","response","request","scriptengine","scriptenginebuildversion","scriptengineminorversion","scriptenginemajorversion"],l={begin:o.concat(o.either(...t),"\\s*\\("),relevance:0,keywords:{built_in:t}};return{name:"VBScript",aliases:["vbs"],case_insensitive:!0,keywords:{keyword:["call","class","const","dim","do","loop","erase","execute","executeglobal","exit","for","each","next","function","if","then","else","on","error","option","explicit","new","private","property","let","get","public","randomize","redim","rem","select","case","set","stop","sub","while","wend","with","end","to","elseif","is","or","xor","and","not","class_initialize","class_terminate","default","preserve","in","me","byval","byref","step","resume","goto"],built_in:a,literal:["true","false","null","nothing","empty"]},illegal:"//",contains:[l,e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{relevance:0}),e.C_NUMBER_MODE]}}return Ed=n,Ed}var Sd,iE;function dM(){if(iE)return Sd;iE=1;function n(e){return{name:"VBScript in HTML",subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]}}return Sd=n,Sd}var bd,lE;function _M(){if(lE)return bd;lE=1;function n(e){const o=e.regex,t={$pattern:/\$?[\w]+(\$[\w]+)*/,keyword:["accept_on","alias","always","always_comb","always_ff","always_latch","and","assert","assign","assume","automatic","before","begin","bind","bins","binsof","bit","break","buf|0","bufif0","bufif1","byte","case","casex","casez","cell","chandle","checker","class","clocking","cmos","config","const","constraint","context","continue","cover","covergroup","coverpoint","cross","deassign","default","defparam","design","disable","dist","do","edge","else","end","endcase","endchecker","endclass","endclocking","endconfig","endfunction","endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram","endproperty","endspecify","endsequence","endtable","endtask","enum","event","eventually","expect","export","extends","extern","final","first_match","for","force","foreach","forever","fork","forkjoin","function","generate|5","genvar","global","highz0","highz1","if","iff","ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir","include","initial","inout","input","inside","instance","int","integer","interconnect","interface","intersect","join","join_any","join_none","large","let","liblist","library","local","localparam","logic","longint","macromodule","matches","medium","modport","module","nand","negedge","nettype","new","nexttime","nmos","nor","noshowcancelled","not","notif0","notif1","or","output","package","packed","parameter","pmos","posedge","primitive","priority","program","property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect","pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos","real","realtime","ref","reg","reject_on","release","repeat","restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1","s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence","shortint","shortreal","showcancelled","signed","small","soft","solve","specify","specparam","static","string","strong","strong0","strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on","table","tagged","task","this","throughout","time","timeprecision","timeunit","tran","tranif0","tranif1","tri","tri0","tri1","triand","trior","trireg","type","typedef","union","unique","unique0","unsigned","until","until_with","untyped","use","uwire","var","vectored","virtual","void","wait","wait_order","wand","weak","weak0","weak1","while","wildcard","wire","with","within","wor","xnor","xor"],literal:["null"],built_in:["$finish","$stop","$exit","$fatal","$error","$warning","$info","$realtime","$time","$printtimescale","$bitstoreal","$bitstoshortreal","$itor","$signed","$cast","$bits","$stime","$timeformat","$realtobits","$shortrealtobits","$rtoi","$unsigned","$asserton","$assertkill","$assertpasson","$assertfailon","$assertnonvacuouson","$assertoff","$assertcontrol","$assertpassoff","$assertfailoff","$assertvacuousoff","$isunbounded","$sampled","$fell","$changed","$past_gclk","$fell_gclk","$changed_gclk","$rising_gclk","$steady_gclk","$coverage_control","$coverage_get","$coverage_save","$set_coverage_db_name","$rose","$stable","$past","$rose_gclk","$stable_gclk","$future_gclk","$falling_gclk","$changing_gclk","$display","$coverage_get_max","$coverage_merge","$get_coverage","$load_coverage_db","$typename","$unpacked_dimensions","$left","$low","$increment","$clog2","$ln","$log10","$exp","$sqrt","$pow","$floor","$ceil","$sin","$cos","$tan","$countbits","$onehot","$isunknown","$fatal","$warning","$dimensions","$right","$high","$size","$asin","$acos","$atan","$atan2","$hypot","$sinh","$cosh","$tanh","$asinh","$acosh","$atanh","$countones","$onehot0","$error","$info","$random","$dist_chi_square","$dist_erlang","$dist_exponential","$dist_normal","$dist_poisson","$dist_t","$dist_uniform","$q_initialize","$q_remove","$q_exam","$async$and$array","$async$nand$array","$async$or$array","$async$nor$array","$sync$and$array","$sync$nand$array","$sync$or$array","$sync$nor$array","$q_add","$q_full","$psprintf","$async$and$plane","$async$nand$plane","$async$or$plane","$async$nor$plane","$sync$and$plane","$sync$nand$plane","$sync$or$plane","$sync$nor$plane","$system","$display","$displayb","$displayh","$displayo","$strobe","$strobeb","$strobeh","$strobeo","$write","$readmemb","$readmemh","$writememh","$value$plusargs","$dumpvars","$dumpon","$dumplimit","$dumpports","$dumpportson","$dumpportslimit","$writeb","$writeh","$writeo","$monitor","$monitorb","$monitorh","$monitoro","$writememb","$dumpfile","$dumpoff","$dumpall","$dumpflush","$dumpportsoff","$dumpportsall","$dumpportsflush","$fclose","$fdisplay","$fdisplayb","$fdisplayh","$fdisplayo","$fstrobe","$fstrobeb","$fstrobeh","$fstrobeo","$swrite","$swriteb","$swriteh","$swriteo","$fscanf","$fread","$fseek","$fflush","$feof","$fopen","$fwrite","$fwriteb","$fwriteh","$fwriteo","$fmonitor","$fmonitorb","$fmonitorh","$fmonitoro","$sformat","$sformatf","$fgetc","$ungetc","$fgets","$sscanf","$rewind","$ftell","$ferror"]},a=["__FILE__","__LINE__"],l=["begin_keywords","celldefine","default_nettype","default_decay_time","default_trireg_strength","define","delay_mode_distributed","delay_mode_path","delay_mode_unit","delay_mode_zero","else","elsif","end_keywords","endcelldefine","endif","ifdef","ifndef","include","line","nounconnected_drive","pragma","resetall","timescale","unconnected_drive","undef","undefineall"];return{name:"Verilog",aliases:["v","sv","svh"],case_insensitive:!1,keywords:t,contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{scope:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/\b((\d+'([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{begin:/\B(('([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{begin:/\b[0-9][0-9_]*/,relevance:0}]},{scope:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{begin:"\\.\\w+",relevance:0}]},{scope:"variable.constant",match:o.concat(/`/,o.either(...a))},{scope:"meta",begin:o.concat(/`/,o.either(...l)),end:/$|\/\/|\/\*/,returnEnd:!0,keywords:l}]}}return bd=n,bd}var hd,cE;function uM(){if(cE)return hd;cE=1;function n(e){const o="\\d(_|\\d)*",t="[eE][-+]?"+o,a=o+"(\\."+o+")?("+t+")?",l="\\w+",r="\\b("+(o+"#"+l+"(\\."+l+")?#("+t+")?")+"|"+a+")";return{name:"VHDL",case_insensitive:!0,keywords:{keyword:["abs","access","after","alias","all","and","architecture","array","assert","assume","assume_guarantee","attribute","begin","block","body","buffer","bus","case","component","configuration","constant","context","cover","disconnect","downto","default","else","elsif","end","entity","exit","fairness","file","for","force","function","generate","generic","group","guarded","if","impure","in","inertial","inout","is","label","library","linkage","literal","loop","map","mod","nand","new","next","nor","not","null","of","on","open","or","others","out","package","parameter","port","postponed","procedure","process","property","protected","pure","range","record","register","reject","release","rem","report","restrict","restrict_guarantee","return","rol","ror","select","sequence","severity","shared","signal","sla","sll","sra","srl","strong","subtype","then","to","transport","type","unaffected","units","until","use","variable","view","vmode","vprop","vunit","wait","when","while","with","xnor","xor"],built_in:["boolean","bit","character","integer","time","delay_length","natural","positive","string","bit_vector","file_open_kind","file_open_status","std_logic","std_logic_vector","unsigned","signed","boolean_vector","integer_vector","std_ulogic","std_ulogic_vector","unresolved_unsigned","u_unsigned","unresolved_signed","u_signed","real_vector","time_vector"],literal:["false","true","note","warning","error","failure","line","text","side","width"]},illegal:/\{/,contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{className:"number",begin:r,relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]}}return hd=n,hd}var Td,dE;function mM(){if(dE)return Td;dE=1;function n(e){return{name:"Vim Script",keywords:{$pattern:/[!#@\w]+/,keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]+/},{begin:[/\b(?:function|function!)/,/\s+/,e.IDENT_RE],className:{1:"keyword",3:"title"},end:"$",relevance:0,contains:[{className:"params",begin:"\\(",end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]}}return Td=n,Td}var vd,_E;function pM(){if(_E)return vd;_E=1;function n(e){e.regex;const o=e.COMMENT(/\(;/,/;\)/);o.contains.push("self");const t=e.COMMENT(/;;/,/$/),a=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],l={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},i={className:"variable",begin:/\$[\w_]+/},r={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},c={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},u={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},_={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:a},contains:[t,o,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},i,r,l,e.QUOTE_STRING_MODE,u,_,c]}}return vd=n,vd}var Cd,uE;function gM(){if(uE)return Cd;uE=1;function n(e){const o=e.regex,t=/[a-zA-Z]\w*/,a=["as","break","class","construct","continue","else","for","foreign","if","import","in","is","return","static","var","while"],l=["true","false","null"],i=["this","super"],r=["Bool","Class","Fiber","Fn","List","Map","Null","Num","Object","Range","Sequence","String","System"],c=["-","~",/\*/,"%",/\.\.\./,/\.\./,/\+/,"<<",">>",">=","<=","<",">",/\^/,/!=/,/!/,/\bis\b/,"==","&&","&",/\|\|/,/\|/,/\?:/,"="],u={relevance:0,match:o.concat(/\b(?!(if|while|for|else|super)\b)/,t,/(?=\s*[({])/),className:"title.function"},_={match:o.concat(o.either(o.concat(/\b(?!(if|while|for|else|super)\b)/,t),o.either(...c)),/(?=\s*\([^)]+\)\s*\{)/),className:"title.function",starts:{contains:[{begin:/\(/,end:/\)/,contains:[{relevance:0,scope:"params",match:t}]}]}},m={variants:[{match:[/class\s+/,t,/\s+is\s+/,t]},{match:[/class\s+/,t]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},p={relevance:0,match:o.either(...c),className:"operator"},E={className:"string",begin:/"""/,end:/"""/},S={className:"property",begin:o.concat(/\./,o.lookahead(t)),end:t,excludeBegin:!0,relevance:0},T={relevance:0,match:o.concat(/\b_/,t),scope:"variable"},h={relevance:0,match:/\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/,scope:"title.class",keywords:{_:r}},A=e.C_NUMBER_MODE,b={match:[t,/\s*/,/=/,/\s*/,/\(/,t,/\)\s*\{/],scope:{1:"title.function",3:"operator",6:"params"}},y=e.COMMENT(/\/\*\*/,/\*\//,{contains:[{match:/@[a-z]+/,scope:"doctag"},"self"]}),w={scope:"subst",begin:/%\(/,end:/\)/,contains:[A,h,u,T,p]},k={scope:"string",begin:/"/,end:/"/,contains:[w,{scope:"char.escape",variants:[{match:/\\\\|\\["0%abefnrtv]/},{match:/\\x[0-9A-F]{2}/},{match:/\\u[0-9A-F]{4}/},{match:/\\U[0-9A-F]{8}/}]}]};w.contains.push(k);const B=[...a,...i,...l],X={relevance:0,match:o.concat("\\b(?!",B.join("|"),"\\b)",/[a-zA-Z_]\w*(?:[?!]|\b)/),className:"variable"};return{name:"Wren",keywords:{keyword:a,"variable.language":i,literal:l},contains:[{scope:"comment",variants:[{begin:[/#!?/,/[A-Za-z_]+(?=\()/],beginScope:{},keywords:{literal:l},contains:[],end:/\)/},{begin:[/#!?/,/[A-Za-z_]+/],beginScope:{},end:/$/}]},A,k,E,y,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,h,m,b,_,u,p,T,S,X]}}return Cd=n,Cd}var yd,mE;function fM(){if(mE)return yd;mE=1;function n(e){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+e.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[e.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}return yd=n,yd}var Rd,pE;function EM(){if(pE)return Rd;pE=1;function n(e){const o=["if","then","else","do","while","until","for","loop","import","with","is","as","where","when","by","data","constant","integer","real","text","name","boolean","symbol","infix","prefix","postfix","block","tree"],t=["in","mod","rem","and","or","xor","not","abs","sign","floor","ceil","sqrt","sin","cos","tan","asin","acos","atan","exp","expm1","log","log2","log10","log1p","pi","at","text_length","text_range","text_find","text_replace","contains","page","slide","basic_slide","title_slide","title","subtitle","fade_in","fade_out","fade_at","clear_color","color","line_color","line_width","texture_wrap","texture_transform","texture","scale_?x","scale_?y","scale_?z?","translate_?x","translate_?y","translate_?z?","rotate_?x","rotate_?y","rotate_?z?","rectangle","circle","ellipse","sphere","path","line_to","move_to","quad_to","curve_to","theme","background","contents","locally","time","mouse_?x","mouse_?y","mouse_buttons"],a=["ObjectLoader","Animate","MovieCredits","Slides","Filters","Shading","Materials","LensFlare","Mapping","VLCAudioVideo","StereoDecoder","PointCloud","NetworkAccess","RemoteControl","RegExp","ChromaKey","Snowfall","NodeJS","Speech","Charts"],i={$pattern:/[a-zA-Z][a-zA-Z0-9_?]*/,keyword:o,literal:["true","false","nil"],built_in:t.concat(a)},r={className:"string",begin:'"',end:'"',illegal:"\\n"},c={className:"string",begin:"'",end:"'",illegal:"\\n"},u={className:"string",begin:"<<",end:">>"},_={className:"number",begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},m={beginKeywords:"import",end:"$",keywords:i,contains:[r]},p={className:"function",begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,keywords:i}})]};return{name:"XL",aliases:["tao"],keywords:i,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,c,u,p,m,_,e.NUMBER_MODE]}}return Rd=n,Rd}var Nd,gE;function SM(){if(gE)return Nd;gE=1;function n(e){return{name:"XQuery",aliases:["xpath","xq","xqm"],case_insensitive:!1,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/,keyword:["module","schema","namespace","boundary-space","preserve","no-preserve","strip","default","collation","base-uri","ordering","context","decimal-format","decimal-separator","copy-namespaces","empty-sequence","except","exponent-separator","external","grouping-separator","inherit","no-inherit","lax","minus-sign","per-mille","percent","schema-attribute","schema-element","strict","unordered","zero-digit","declare","import","option","function","validate","variable","for","at","in","let","where","order","group","by","return","if","then","else","tumbling","sliding","window","start","when","only","end","previous","next","stable","ascending","descending","allowing","empty","greatest","least","some","every","satisfies","switch","case","typeswitch","try","catch","and","or","to","union","intersect","instance","of","treat","as","castable","cast","map","array","delete","insert","into","replace","value","rename","copy","modify","update"],type:["item","document-node","node","attribute","document","element","comment","namespace","namespace-node","processing-instruction","text","construction","xs:anyAtomicType","xs:untypedAtomic","xs:duration","xs:time","xs:decimal","xs:float","xs:double","xs:gYearMonth","xs:gYear","xs:gMonthDay","xs:gMonth","xs:gDay","xs:boolean","xs:base64Binary","xs:hexBinary","xs:anyURI","xs:QName","xs:NOTATION","xs:dateTime","xs:dateTimeStamp","xs:date","xs:string","xs:normalizedString","xs:token","xs:language","xs:NMTOKEN","xs:Name","xs:NCName","xs:ID","xs:IDREF","xs:ENTITY","xs:integer","xs:nonPositiveInteger","xs:negativeInteger","xs:long","xs:int","xs:short","xs:byte","xs:nonNegativeInteger","xs:unisignedLong","xs:unsignedInt","xs:unsignedShort","xs:unsignedByte","xs:positiveInteger","xs:yearMonthDuration","xs:dayTimeDuration"],literal:["eq","ne","lt","le","gt","ge","is","self::","child::","descendant::","descendant-or-self::","attribute::","following::","following-sibling::","parent::","ancestor::","ancestor-or-self::","preceding::","preceding-sibling::","NaN"]},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in",variants:[{begin:/\barray:/,end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap:/,end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0},{begin:/[^</$:'"-]\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\b/},{begin:/\blocal:/,end:/\(/,excludeEnd:!0},{begin:/\bzip:/,end:/(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b/},{begin:/\b(?:util|db|functx|app|xdmp|xmldb):/,end:/\(/,excludeEnd:!0}]},{className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{className:"number",begin:/(\b0[0-7_]+)|(\b0x[0-9a-fA-F_]+)|(\b[1-9][0-9_]*(\.[0-9_]+)?)|[0_]\b/,relevance:0},{className:"comment",begin:/\(:/,end:/:\)/,relevance:10,contains:[{className:"doctag",begin:/@\w+/}]},{className:"meta",begin:/%[\w\-:]+/},{className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,end:/;/},{beginKeywords:"element attribute comment document processing-instruction",end:/\{/,excludeEnd:!0},{begin:/<([\w._:-]+)(\s+\S*=('|").*('|"))?>/,end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/,subLanguage:"xquery"},"self"]}]}}return Nd=n,Nd}var Od,fE;function bM(){if(fE)return Od;fE=1;function n(e){const o={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},t=e.UNDERSCORE_TITLE_MODE,a={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},l="namespace class interface use extends function return abstract final public protected private static deprecated throw try catch Exception echo empty isset instanceof unset let var new const self require if else elseif switch case default do while loop for continue break likely unlikely __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ array boolean float double integer object resource string char long unsigned bool int uint ulong uchar true false null undefined";return{name:"Zephir",aliases:["zep"],keywords:l,contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(/\/\*/,/\*\//,{contains:[{className:"doctag",begin:/@[A-Za-z]+/}]}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;/,contains:[e.BACKSLASH_ESCAPE]},{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function fn",end:/[;{]/,excludeEnd:!0,illegal:/\$|\[|%/,contains:[t,{className:"params",begin:/\(/,end:/\)/,keywords:l,contains:["self",e.C_BLOCK_COMMENT_MODE,o,a]}]},{className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0,illegal:/[:($"]/,contains:[{beginKeywords:"extends implements"},t]},{beginKeywords:"namespace",end:/;/,illegal:/[.']/,contains:[t]},{beginKeywords:"use",end:/;/,contains:[t]},{begin:/=>/},o,a]}}return Od=n,Od}var L=qI;L.registerLanguage("1c",VI());L.registerLanguage("abnf",zI());L.registerLanguage("accesslog",WI());L.registerLanguage("actionscript",KI());L.registerLanguage("ada",QI());L.registerLanguage("angelscript",$I());L.registerLanguage("apache",XI());L.registerLanguage("applescript",ZI());L.registerLanguage("arcade",JI());L.registerLanguage("arduino",jI());L.registerLanguage("armasm",eD());L.registerLanguage("xml",tD());L.registerLanguage("asciidoc",nD());L.registerLanguage("aspectj",oD());L.registerLanguage("autohotkey",aD());L.registerLanguage("autoit",rD());L.registerLanguage("avrasm",sD());L.registerLanguage("awk",iD());L.registerLanguage("axapta",lD());L.registerLanguage("bash",cD());L.registerLanguage("basic",dD());L.registerLanguage("bnf",_D());L.registerLanguage("brainfuck",uD());L.registerLanguage("c",mD());L.registerLanguage("cal",pD());L.registerLanguage("capnproto",gD());L.registerLanguage("ceylon",fD());L.registerLanguage("clean",ED());L.registerLanguage("clojure",SD());L.registerLanguage("clojure-repl",bD());L.registerLanguage("cmake",hD());L.registerLanguage("coffeescript",TD());L.registerLanguage("coq",vD());L.registerLanguage("cos",CD());L.registerLanguage("cpp",yD());L.registerLanguage("crmsh",RD());L.registerLanguage("crystal",ND());L.registerLanguage("csharp",OD());L.registerLanguage("csp",AD());L.registerLanguage("css",ID());L.registerLanguage("d",DD());L.registerLanguage("markdown",wD());L.registerLanguage("dart",kD());L.registerLanguage("delphi",MD());L.registerLanguage("diff",xD());L.registerLanguage("django",LD());L.registerLanguage("dns",PD());L.registerLanguage("dockerfile",UD());L.registerLanguage("dos",FD());L.registerLanguage("dsconfig",BD());L.registerLanguage("dts",GD());L.registerLanguage("dust",YD());L.registerLanguage("ebnf",HD());L.registerLanguage("elixir",qD());L.registerLanguage("elm",VD());L.registerLanguage("ruby",zD());L.registerLanguage("erb",WD());L.registerLanguage("erlang-repl",KD());L.registerLanguage("erlang",QD());L.registerLanguage("excel",$D());L.registerLanguage("fix",XD());L.registerLanguage("flix",ZD());L.registerLanguage("fortran",JD());L.registerLanguage("fsharp",jD());L.registerLanguage("gams",ew());L.registerLanguage("gauss",tw());L.registerLanguage("gcode",nw());L.registerLanguage("gherkin",ow());L.registerLanguage("glsl",aw());L.registerLanguage("gml",rw());L.registerLanguage("go",sw());L.registerLanguage("golo",iw());L.registerLanguage("gradle",lw());L.registerLanguage("graphql",cw());L.registerLanguage("groovy",dw());L.registerLanguage("haml",_w());L.registerLanguage("handlebars",uw());L.registerLanguage("haskell",mw());L.registerLanguage("haxe",pw());L.registerLanguage("hsp",gw());L.registerLanguage("http",fw());L.registerLanguage("hy",Ew());L.registerLanguage("inform7",Sw());L.registerLanguage("ini",bw());L.registerLanguage("irpf90",hw());L.registerLanguage("isbl",Tw());L.registerLanguage("java",vw());L.registerLanguage("javascript",Cw());L.registerLanguage("jboss-cli",yw());L.registerLanguage("json",Rw());L.registerLanguage("julia",Nw());L.registerLanguage("julia-repl",Ow());L.registerLanguage("kotlin",Aw());L.registerLanguage("lasso",Iw());L.registerLanguage("latex",Dw());L.registerLanguage("ldif",ww());L.registerLanguage("leaf",kw());L.registerLanguage("less",Mw());L.registerLanguage("lisp",xw());L.registerLanguage("livecodeserver",Lw());L.registerLanguage("livescript",Pw());L.registerLanguage("llvm",Uw());L.registerLanguage("lsl",Fw());L.registerLanguage("lua",Bw());L.registerLanguage("makefile",Gw());L.registerLanguage("mathematica",Yw());L.registerLanguage("matlab",Hw());L.registerLanguage("maxima",qw());L.registerLanguage("mel",Vw());L.registerLanguage("mercury",zw());L.registerLanguage("mipsasm",Ww());L.registerLanguage("mizar",Kw());L.registerLanguage("perl",Qw());L.registerLanguage("mojolicious",$w());L.registerLanguage("monkey",Xw());L.registerLanguage("moonscript",Zw());L.registerLanguage("n1ql",Jw());L.registerLanguage("nestedtext",jw());L.registerLanguage("nginx",ek());L.registerLanguage("nim",tk());L.registerLanguage("nix",nk());L.registerLanguage("node-repl",ok());L.registerLanguage("nsis",ak());L.registerLanguage("objectivec",rk());L.registerLanguage("ocaml",sk());L.registerLanguage("openscad",ik());L.registerLanguage("oxygene",lk());L.registerLanguage("parser3",ck());L.registerLanguage("pf",dk());L.registerLanguage("pgsql",_k());L.registerLanguage("php",uk());L.registerLanguage("php-template",mk());L.registerLanguage("plaintext",pk());L.registerLanguage("pony",gk());L.registerLanguage("powershell",fk());L.registerLanguage("processing",Ek());L.registerLanguage("profile",Sk());L.registerLanguage("prolog",bk());L.registerLanguage("properties",hk());L.registerLanguage("protobuf",Tk());L.registerLanguage("puppet",vk());L.registerLanguage("purebasic",Ck());L.registerLanguage("python",yk());L.registerLanguage("python-repl",Rk());L.registerLanguage("q",Nk());L.registerLanguage("qml",Ok());L.registerLanguage("r",Ak());L.registerLanguage("reasonml",Ik());L.registerLanguage("rib",Dk());L.registerLanguage("roboconf",wk());L.registerLanguage("routeros",kk());L.registerLanguage("rsl",Mk());L.registerLanguage("ruleslanguage",xk());L.registerLanguage("rust",Lk());L.registerLanguage("sas",Pk());L.registerLanguage("scala",Uk());L.registerLanguage("scheme",Fk());L.registerLanguage("scilab",Bk());L.registerLanguage("scss",Gk());L.registerLanguage("shell",Yk());L.registerLanguage("smali",Hk());L.registerLanguage("smalltalk",qk());L.registerLanguage("sml",Vk());L.registerLanguage("sqf",zk());L.registerLanguage("sql",Wk());L.registerLanguage("stan",Kk());L.registerLanguage("stata",Qk());L.registerLanguage("step21",$k());L.registerLanguage("stylus",Xk());L.registerLanguage("subunit",Zk());L.registerLanguage("swift",Jk());L.registerLanguage("taggerscript",jk());L.registerLanguage("yaml",eM());L.registerLanguage("tap",tM());L.registerLanguage("tcl",nM());L.registerLanguage("thrift",oM());L.registerLanguage("tp",aM());L.registerLanguage("twig",rM());L.registerLanguage("typescript",sM());L.registerLanguage("vala",iM());L.registerLanguage("vbnet",lM());L.registerLanguage("vbscript",cM());L.registerLanguage("vbscript-html",dM());L.registerLanguage("verilog",_M());L.registerLanguage("vhdl",uM());L.registerLanguage("vim",mM());L.registerLanguage("wasm",pM());L.registerLanguage("wren",gM());L.registerLanguage("x86asm",fM());L.registerLanguage("xl",EM());L.registerLanguage("xquery",SM());L.registerLanguage("zephir",bM());L.HighlightJS=L;L.default=L;var hM=L;const Ad=XA(hM),TM={name:"ToolExecutionCard",props:{tool:{type:Object,required:!0}},setup(n){const e=D(!1),o=ae(()=>n.tool.endTime&&n.tool.startTime?n.tool.endTime-n.tool.startTime:0),t=ae(()=>n.tool.status==="completed"||n.tool.status==="error"?100:(n.tool.status==="running",0)),a=ae(()=>n.tool.status==="running"?{}:n.tool.status==="completed"||n.tool.status==="error"?{width:"0%"}:{width:"0%"});return{isExpanded:e,duration:o,progressPercent:t,progressStyle:a,toggleExpanded:()=>{e.value=!e.value},formatJSON:c=>JSON.stringify(c,null,2),formatResult:c=>typeof c=="string"?c:JSON.stringify(c,null,2)}}},vM={class:"tool-info"},CM={class:"tool-name"},yM={class:"tool-actions"},RM={key:0,class:"tool-duration"},NM={class:"expand-icon"},OM=["aria-valuenow"],AM={key:0,class:"tool-body"},IM={key:0,class:"tool-section"},DM={class:"code-block"},wM={key:1,class:"tool-section"},kM={class:"code-block"};function MM(n,e,o,t,a,l){return g(),f("div",{class:Oe(["tool-execution-card",`status-${o.tool.status}`])},[s("div",{class:"tool-header",onClick:e[0]||(e[0]=(...i)=>t.toggleExpanded&&t.toggleExpanded(...i))},[s("div",vM,[e[1]||(e[1]=s("span",{class:"tool-icon"},"🔧",-1)),s("span",CM,d(o.tool.name),1),s("span",{class:Oe(["badge",`badge-${o.tool.status}`])},d(o.tool.status),3)]),s("div",yM,[o.tool.endTime?(g(),f("span",RM,d(t.duration)+"ms ",1)):V("",!0),s("span",NM,d(t.isExpanded?"▼":"▶"),1)])]),s("div",{class:"progress-track",role:"progressbar","aria-valuenow":t.progressPercent,"aria-valuemin":"0","aria-valuemax":"100"},[s("div",{class:Oe(["progress-fill",{"progress-indeterminate":o.tool.status==="running","progress-complete":o.tool.status==="completed"||o.tool.status==="error"}]),style:os(t.progressStyle)},null,6)],8,OM),t.isExpanded?(g(),f("div",AM,[o.tool.args?(g(),f("div",IM,[e[2]||(e[2]=s("div",{class:"section-label"},"Arguments:",-1)),s("pre",DM,d(t.formatJSON(o.tool.args)),1)])):V("",!0),o.tool.result?(g(),f("div",wM,[e[3]||(e[3]=s("div",{class:"section-label"},"Result:",-1)),s("pre",kM,d(t.formatResult(o.tool.result)),1)])):V("",!0)])):V("",!0)],2)}const oh=st(TM,[["render",MM],["__scopeId","data-v-3b2be5b7"]]),xM={name:"IconAssistantAvatar"},LM={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",class:"assistant-avatar-svg","aria-hidden":"true"};function PM(n,e,o,t,a,l){return g(),f("svg",LM,[...e[0]||(e[0]=[Va('<circle cx="12" cy="11" r="6" data-v-26c5a1c0></circle><path d="M10 5v-2M14 5v-2" data-v-26c5a1c0></path><circle cx="9.5" cy="10" r="1" fill="currentColor" data-v-26c5a1c0></circle><circle cx="14.5" cy="10" r="1" fill="currentColor" data-v-26c5a1c0></circle><path d="M9.5 13c0 0 1.2 1 2.5 1s2.5-1 2.5-1" data-v-26c5a1c0></path>',5)])])}const ah=st(xM,[["render",PM],["__scopeId","data-v-26c5a1c0"]]);ot.setOptions({highlight:function(n,e){return e&&Ad.getLanguage(e)?Ad.highlight(n,{language:e}).value:Ad.highlightAuto(n).value},breaks:!0});const UM={name:"ChatMessage",components:{ToolExecutionCard:oh,IconAssistantAvatar:ah},props:{role:{type:String,required:!0},content:{type:String,required:!0},timestamp:{type:Number,required:!0},toolCalls:{type:Array,default:()=>[]},contentParts:{type:Array,default:()=>null},isError:{type:Boolean,default:!1}},setup(n){const{t:e}=Ot(),o=ae(()=>n.role==="user"?e("chat.you"):e("chat.assistant")),t=ae(()=>e("chat.replyFailed")),a=ae(()=>{try{return ot.parse(n.content||"")}catch(u){return console.error("Render markdown error",u),n.content||""}}),l=u=>{try{return ot.parse(u||"")}catch(_){return console.error("Render markdown error",_),u||""}},i=u=>n.toolCalls?n.toolCalls.find(_=>_.id===u):null,r=u=>new Date(u).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"}),c=ae(()=>{if(!n.contentParts)return[];const u=[];let _={text:"",tools:[]},m=!1;n.contentParts.forEach(E=>{E.type==="text"?(_.tools.length>0&&(u.push(_),_={text:"",tools:[]}),_.text+=E.content,m=!0):E.type==="tool"&&(_.tools.push(E.toolId),m=!0)}),m&&u.push(_);const p=[];for(const E of u){if(E.tools.length<=1){p.push(E);continue}p.push({text:E.text,tools:[E.tools[0]]});for(let S=1;S<E.tools.length;S++)p.push({text:"",tools:[E.tools[S]]})}return p});return{roleLabel:o,errorLabel:t,renderedContent:a,renderMarkdown:l,getTool:i,formatTime:r,groupedParts:c}}},FM={class:"message-avatar"},BM={class:"avatar-icon"},GM={key:1},YM={class:"message-content"},HM={class:"message-header"},qM={class:"message-role"},VM={key:0,class:"message-error-badge"},zM={class:"message-time"},WM={key:0,class:"message-body has-steps"},KM=["innerHTML"],QM={key:1,class:"step-tools"},$M={key:1,class:"message-body message-body-error"},XM={class:"message-error-text"},ZM={key:2,class:"message-body"},JM=["innerHTML"],jM={key:0,class:"tool-calls"};function ex(n,e,o,t,a,l){const i=gt("IconAssistantAvatar"),r=gt("ToolExecutionCard");return g(),f("div",{class:Oe(["chat-message",[`message-${o.role}`,{"message-error":o.isError}]])},[s("div",FM,[s("span",BM,[o.role!=="user"?(g(),Gt(i,{key:0})):(g(),f("span",GM,"👤"))])]),s("div",YM,[s("div",HM,[s("span",qM,d(t.roleLabel),1),o.isError?(g(),f("span",VM,d(t.errorLabel),1)):V("",!0),s("span",zM,d(t.formatTime(o.timestamp)),1)]),o.contentParts&&o.contentParts.length>0?(g(),f("div",WM,[(g(!0),f(te,null,Le(t.groupedParts,(c,u)=>(g(),f("div",{key:u,class:"message-step"},[c.text&&c.text.trim().length>0?(g(),f("div",{key:0,class:"step-thought",innerHTML:t.renderMarkdown(c.text)},null,8,KM)):V("",!0),c.tools.length>0?(g(),f("div",QM,[(g(!0),f(te,null,Le(c.tools,_=>(g(),Gt(r,{key:_,tool:t.getTool(_)},null,8,["tool"]))),128))])):V("",!0)]))),128))])):o.isError&&o.content?(g(),f("div",$M,[s("p",XM,d(o.content),1)])):t.renderedContent&&t.renderedContent.trim()!==""?(g(),f("div",ZM,[s("div",{innerHTML:t.renderedContent},null,8,JM),o.toolCalls&&o.toolCalls.length>0?(g(),f("div",jM,[(g(!0),f(te,null,Le(o.toolCalls,c=>(g(),Gt(r,{key:c.id,tool:c},null,8,["tool"]))),128))])):V("",!0)])):V("",!0)])],2)}const U_=st(UM,[["render",ex],["__scopeId","data-v-98a426ee"]]),tx={name:"ChatSessionsPanel",props:{visible:{type:Boolean,required:!0},sessions:{type:Array,default:()=>[]},currentSessionId:{type:String,default:null}},emits:["create","select","delete"],setup(){Zn();const{t:n}=Ot();return{t:n,sessionTitle:o=>{if(o.title)return o.title;const t=o.id||"";return t.length>16?t.substring(0,16)+"…":t||"Session"}}}},nx={class:"panel-content"},ox={class:"panel-header-actions"},ax=["title"],rx={class:"sessions-list"},sx=["onClick"],ix={class:"session-title"},lx=["title","onClick"];function cx(n,e,o,t,a,l){return g(),f("div",{class:Oe(["chat-sessions-panel",{collapsed:!o.visible}])},[Q(s("div",nx,[s("div",ox,[s("button",{class:"btn-new-session",onClick:e[0]||(e[0]=i=>n.$emit("create")),title:t.t("chat.newSession")}," + "+d(t.t("chat.newSession")),9,ax)]),s("div",rx,[(g(!0),f(te,null,Le(o.sessions,i=>(g(),f("div",{key:i.id,class:Oe(["session-item-wrap",{active:o.currentSessionId===i.id}])},[s("button",{type:"button",class:"session-item",onClick:r=>n.$emit("select",i.id)},[s("span",ix,d(t.sessionTitle(i)),1),s("span",{class:Oe(["session-badge",`badge-${i.status}`])},d(i.status),3)],8,sx),s("button",{type:"button",class:"session-item-delete",title:t.t("common.delete")||"删除",onClick:Be(r=>n.$emit("delete",i.id),["stop"])},[...e[1]||(e[1]=[s("svg",{class:"icon-delete",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"}),s("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),s("line",{x1:"14",y1:"11",x2:"14",y2:"17"})],-1)])],8,lx)],2))),128))])],512),[[ht,o.visible]])],2)}const dx=st(tx,[["render",cx],["__scopeId","data-v-976c01a1"]]),EE="openbot.lastSelectedAgentId",_x={name:"AgentChat",components:{ChatMessage:U_,ChatSessionsPanel:dx,ToolExecutionCard:oh,IconAssistantAvatar:ah},setup(){const n=da(),e=Zn(),o=Jn(),t=cb(),{t:a}=Ot(),l=ae(()=>t.sessionsPanelVisible),i=()=>t.toggleSessionsPanel(),r=ae(()=>t.agentBarVisible),c=()=>t.toggleAgentBar(),u=D([]),_=D("default"),m={stay:"1"},p=ae(()=>{const O=se.value,M=n.path==="/";if(!O||M){const q=_.value;return q!=null&&q!==""?String(q):"default"}const Y=O.agentId;return Y!=null?String(Y):"default"}),E=ae(()=>{const O=p.value,M=(u.value||[]).find(Y=>String(Y.id)===O);return(M==null?void 0:M.runnerType)==="opencode"?a("chat.placeholderOpenCode"):a("chat.placeholder")});function S(){Xt.listAgents().then(O=>{var Y;const M=((Y=O.data)==null?void 0:Y.data)??O.data??[];u.value=Array.isArray(M)?M:[]}).catch(()=>{u.value=[]})}function T(O){const M=O!=null?String(O):"default";_.value=M;try{localStorage.setItem(EE,M)}catch{}}async function h(O){const M=O!=null?String(O):"default";if(se.value){if((se.value.agentId!=null?String(se.value.agentId):"default")===M)return;o.isStreaming&&await o.cancelCurrentTurn(),T(M);try{await o.updateSessionAgentId(se.value.id,M)}catch(ce){console.error("Update session agent failed",ce)}return}T(M);const q=(o.sessions||[]).filter($=>$.type!=="system"&&String($.agentId??"default")===M)[0];q&&(o.skipRedirectToRecentOnce=!1,e.push(`/chat/${q.id}`))}const A=D(""),b=D(null),y=D(null),w=D(null),k=D(!1),B=D(!1);function X(){const O=w.value;if(!O){k.value=!1,B.value=!1;return}const{scrollLeft:M,scrollWidth:Y,clientWidth:q}=O;k.value=M>2,B.value=M<Y-q-2}function x(){X()}function U(O){const M=w.value;if(!M)return;M.scrollBy({left:O*220,behavior:"smooth"})}const re=ae(()=>n.params.sessionId||null),se=ae(()=>o.currentSession),ne=O=>O!=null&&!String(O).startsWith("channel:"),Te=ae(()=>{const O=(o.sessions||[]).filter(Y=>Y.type!=="system"&&ne(Y.id)),M=o.currentSession;return M&&M.type!=="system"&&ne(M.id)&&!O.some(Y=>Y.id===M.id)?[M,...O]:O}),G=ae(()=>{const O=(o.sessions||[]).filter(Y=>Y.type!=="system"&&ne(Y.id));return O.length===0?null:[...O].sort((Y,q)=>(q.lastActiveAt||q.createdAt||0)-(Y.lastActiveAt||Y.createdAt||0))[0]}),H=ae(()=>{var O;return((O=se.value)==null?void 0:O.type)==="system"}),R=ae(()=>o.messages),P=ae(()=>o.isStreaming),oe=ae(()=>o.streamingMessageId),he=ae(()=>o.currentMessage),Ee=ae(()=>o.currentSystemMessage),ve=ae(()=>o.toolExecutions),we=D(0),Re=D(null),Ie=D(null);let xe=null;const Ge=ae(()=>{const O=o.currentStreamParts;if(O&&O.length>0)return O;const M=o.currentMessage,Y=o.toolExecutions;if(!M&&(!Y||Y.length===0))return[];const q=[];return M&&q.push({type:"text",content:M}),Y&&Y.length&&Y.forEach($=>q.push({type:"tool",toolId:$.id})),q}),W=async()=>{o.isStreaming&&await o.cancelCurrentTurn(),o.skipRedirectToRecentOnce=!0,o.clearCurrentSession(),e.push({path:"/",query:m})},me=O=>{o.skipRedirectToRecentOnce=!1,e.push(`/chat/${O}`)},F=async O=>{var Y;const M=((Y=se.value)==null?void 0:Y.id)===O;try{await o.deleteSession(O),(M||re.value===O)&&(o.skipRedirectToRecentOnce=!0,e.push({path:"/",query:m}))}catch(q){console.error("Delete session failed",q)}},Z=async()=>{if(!A.value.trim()||P.value)return;const O=A.value;A.value="";try{const Y={agentId:(se.value?p.value:_.value)||"default"},q=await o.sendMessage(O,Y);q&&!re.value&&(o.skipRedirectToRecentOnce=!1,e.replace(`/chat/${q.id}`)),await C()}catch(M){console.error("Send message failed",M)}};let Se=null;const C=()=>{Se&&clearTimeout(Se),Se=setTimeout(()=>{Se=null,Sn().then(()=>new Promise(O=>{requestAnimationFrame(()=>requestAnimationFrame(O))})).then(()=>{const O=b.value;if(!O)return;O.scrollTop=O.scrollHeight;const M=O.scrollHeight;setTimeout(()=>{O.scrollHeight>M&&(O.scrollTop=O.scrollHeight)},150)})},50)};nt(()=>R.value.length,C),nt(()=>he.value,C),nt(P,O=>{O&&C()});function N(){xe!=null&&(clearInterval(xe),xe=null),Ie.value=null}return nt(()=>({streaming:P.value,msg:he.value,toolsLen:ve.value.length}),({streaming:O,msg:M,toolsLen:Y})=>{const q=O&&!M&&Y===0,$=!!(M&&M.trim())||Y>0;if(q)Ie.value==null&&(Re.value=null,Ie.value=Date.now(),we.value=0,xe=setInterval(()=>{Ie.value!=null&&(we.value=Math.floor((Date.now()-Ie.value)/1e3))},1e3));else{const ce=Ie.value;N(),we.value=0,$&&ce!=null&&Re.value==null&&(Re.value=Math.floor((Date.now()-ce)/1e3)),O||(Re.value=null)}}),nt(()=>{var O;return(O=se.value)==null?void 0:O.id},()=>{R.value.length&&C()}),nt(()=>se.value,O=>{if((O==null?void 0:O.type)==="system")try{const M=sessionStorage.getItem("openbot.smartInstallPrompt");M&&(sessionStorage.removeItem("openbot.smartInstallPrompt"),A.value=M)}catch{}},{immediate:!0}),nt(()=>n.params.sessionId,async O=>{var M,Y;if(O){if(!ne(O)){((M=o.currentSession)==null?void 0:M.id)===O&&o.clearCurrentSession(),e.replace({path:"/",query:m});return}if(((Y=o.currentSession)==null?void 0:Y.id)!==O)try{await o.selectSession(O)}catch(q){console.error("Select session failed",q),e.replace("/")}}else o.clearCurrentSession()}),nt(()=>{var O;return{path:n.path,stay:(O=n.query)==null?void 0:O.stay}},({path:O,stay:M})=>{if(O!=="/")return;if(M){o.skipRedirectToRecentOnce=!0,e.replace({path:"/",query:{}});return}if(o.skipRedirectToRecentOnce)return;const Y=G.value;Y&&e.replace(`/chat/${Y.id}`)},{immediate:!0}),nt(u,()=>{Sn(X)},{deep:!0}),nt(()=>o.agentListRefreshTrigger,()=>{S()},{immediate:!1}),Yt(async()=>{var O,M,Y;t.setSessionsPanelVisible(!1);try{S();try{const ce=localStorage.getItem(EE);ce&&ce.trim()&&(_.value=ce.trim())}catch{}o.sessions.length===0&&await o.fetchSessions();const q=n.params.sessionId;if(q)ne(q)?((M=o.currentSession)==null?void 0:M.id)!==q&&await o.selectSession(q):(((O=o.currentSession)==null?void 0:O.id)===q&&o.clearCurrentSession(),e.replace({path:"/",query:m}));else if(n.path==="/"&&!((Y=n.query)!=null&&Y.stay)&&!o.skipRedirectToRecentOnce){const ce=G.value;ce&&e.replace(`/chat/${ce.id}`)}await Sn(),X(),typeof ResizeObserver<"u"&&w.value&&new ResizeObserver(()=>X()).observe(w.value);const $=()=>{const ce=y.value;ce&&typeof ce.focus=="function"&&ce.focus()};$(),setTimeout($,150)}catch(q){console.error("AgentChat mount error",q)}}),ja(()=>{xe!=null&&(clearInterval(xe),xe=null)}),{t:a,routeSessionId:re,sessionsPanelVisible:l,toggleSessionsPanel:i,currentSession:se,sessions:Te,isSystemSession:H,messages:R,isStreaming:P,streamingMessageId:oe,currentMessage:he,currentSystemMessage:Ee,toolExecutions:ve,streamContentParts:Ge,waitingElapsedSec:we,firstReplyElapsedSec:Re,inputMessage:A,messagePlaceholder:E,messagesContainer:b,agentListBarRef:w,canScrollAgentLeft:k,canScrollAgentRight:B,onAgentListScroll:x,scrollAgentList:U,agents:u,selectedAgentId:_,effectiveSelectedAgentId:p,onAgentChipClick:h,agentBarVisible:r,toggleAgentBar:c,createNewSession:W,selectSession:me,onDeleteSession:F,sendMessage:Z,cancelCurrentTurn:()=>o.cancelCurrentTurn(),Date}}},ux={class:"agent-chat"},mx={class:"chat-container"},px={class:"messages-area",ref:"messagesContainer"},gx={key:0,class:"empty-chat"},fx={class:"text-secondary"},Ex={key:0,class:"empty-chat"},Sx={class:"text-secondary"},bx={key:1,class:"system-message-banner"},hx={class:"system-message-label"},Tx={class:"system-message-text"},vx={key:2,class:"streaming-placeholder"},Cx={class:"message-avatar"},yx={class:"avatar-icon"},Rx={class:"message-content"},Nx={class:"message-header"},Ox={class:"message-role"},Ax={class:"typing-label"},Ix={key:3,class:"streaming-message"},Dx={key:0,class:"first-reply-duration"},wx={class:"input-area"},kx={class:"agent-bar-wrap"},Mx={class:"agent-bar-inner"},xx=["title"],Lx={class:"agent-bar-label-text"},Px={class:"agent-list-scroll-wrap"},Ux=["onClick"],Fx={key:0,class:"agent-icon-svg",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},Bx=["id"],Gx=["fill"],Yx={key:1,class:"agent-icon-svg",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},Hx=["id"],qx=["fill"],Vx={class:"agent-chip-name"},zx={key:0,class:"agent-chip-badge"},Wx={key:1,class:"agent-chip-check","aria-hidden":"true"},Kx={key:0,class:"agent-list-empty"},Qx={class:"input-container"},$x=["placeholder","disabled"],Xx=["disabled","title"],Zx=["title"],Jx=["title"],jx={key:0,class:"float-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},eL={key:1,class:"float-btn-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"};function tL(n,e,o,t,a,l){var u;const i=gt("ChatSessionsPanel"),r=gt("ChatMessage"),c=gt("IconAssistantAvatar");return g(),f("div",ux,[Ae(i,{visible:t.sessionsPanelVisible,sessions:t.sessions,"current-session-id":((u=t.currentSession)==null?void 0:u.id)??t.routeSessionId,onCreate:t.createNewSession,onSelect:t.selectSession,onDelete:t.onDeleteSession},null,8,["visible","sessions","current-session-id","onCreate","onSelect","onDelete"]),s("div",mx,[s("div",px,[!t.currentSession||t.isSystemSession?(g(),f("div",gx,[e[9]||(e[9]=s("div",{class:"empty-icon"},"💬",-1)),s("h3",null,d(t.t("chat.startConversation")),1),s("p",fx,d(t.t("chat.startConversationHint")),1)])):(g(),f(te,{key:1},[t.messages.length===0?(g(),f("div",Ex,[e[10]||(e[10]=s("div",{class:"empty-icon"},"💬",-1)),s("h3",null,d(t.t("chat.startConversation")),1),s("p",Sx,d(t.t("chat.startConversationHint")),1)])):V("",!0),(g(!0),f(te,null,Le(t.messages,_=>(g(),Gt(r,{key:_.id,role:_.role,content:_.content,timestamp:_.timestamp,"tool-calls":_.toolCalls,"content-parts":_.contentParts,"is-error":!!_.isError},null,8,["role","content","timestamp","tool-calls","content-parts","is-error"]))),128)),t.currentSystemMessage?(g(),f("div",bx,[s("span",hx,d(t.t("chat.systemMessage")),1),s("span",Tx,d(t.currentSystemMessage),1)])):V("",!0),t.isStreaming&&!t.currentMessage&&t.toolExecutions.length===0?(g(),f("div",vx,[s("div",Cx,[s("span",yx,[Ae(c)])]),s("div",Rx,[s("div",Nx,[s("span",Ox,d(t.t("chat.assistant")),1),s("span",Ax,d(t.t("chat.thinking"))+" "+d(t.waitingElapsedSec)+"s",1)]),e[11]||(e[11]=s("div",{class:"typing-indicator"},[s("span",{class:"dot","aria-hidden":"true"}),s("span",{class:"dot","aria-hidden":"true"}),s("span",{class:"dot","aria-hidden":"true"})],-1))])])):(t.isStreaming||t.toolExecutions.length>0)&&(t.currentMessage||t.toolExecutions.length>0)&&!t.streamingMessageId?(g(),f("div",Ix,[t.firstReplyElapsedSec!=null?(g(),f("p",Dx,d(t.t("chat.firstReplyDuration",{sec:t.firstReplyElapsedSec})),1)):V("",!0),Ae(r,{role:"assistant",content:t.currentMessage||(t.toolExecutions.length>0?t.t("chat.thinking"):""),timestamp:Date.now(),"tool-calls":t.toolExecutions,"content-parts":t.streamContentParts},null,8,["content","timestamp","tool-calls","content-parts"])])):V("",!0)],64))],512),s("div",wx,[Ae(je,{name:"agent-bar-slide"},{default:Ve(()=>[Q(s("div",kx,[s("div",Mx,[s("div",{class:"agent-bar-label",title:t.t("chat.selectAgent")},[e[12]||(e[12]=s("span",{class:"agent-bar-label-icon","aria-hidden":"true"},[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("circle",{cx:"9",cy:"7",r:"4"}),s("path",{d:"M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2"}),s("path",{d:"M16 11h6m-3-3v6"})])],-1)),s("span",Lx,d(t.t("chat.selectAgent")),1)],8,xx),s("div",Px,[s("button",{type:"button",class:Oe(["agent-scroll-trigger agent-scroll-left",{visible:t.canScrollAgentLeft}]),"aria-label":"向左滑动",onClick:e[0]||(e[0]=_=>t.scrollAgentList(-1))},[...e[13]||(e[13]=[s("svg",{class:"agent-scroll-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M15 18l-6-6 6-6"})],-1)])],2),s("div",{ref:"agentListBarRef",class:"agent-list-bar",onScroll:e[1]||(e[1]=(..._)=>t.onAgentListScroll&&t.onAgentListScroll(..._))},[(g(!0),f(te,null,Le(t.agents,_=>(g(),f("div",{key:_.id,class:Oe(["agent-chip",{active:t.effectiveSelectedAgentId===String(_.id),"is-default":_.id==="default"}]),onClick:m=>t.onAgentChipClick(_.id)},[s("span",{class:Oe(["agent-chip-icon",{default:_.id==="default"}])},[_.id==="default"?(g(),f("svg",Fx,[s("defs",null,[s("linearGradient",{id:`agent-star-grad-${_.id}`,x1:"0%",y1:"0%",x2:"100%",y2:"100%"},[...e[14]||(e[14]=[s("stop",{offset:"0%","stop-color":"currentColor","stop-opacity":"1"},null,-1),s("stop",{offset:"100%","stop-color":"currentColor","stop-opacity":"0.6"},null,-1)])],8,Bx)]),s("path",{fill:`url(#agent-star-grad-${_.id})`,d:"M12 2l1.8 5.5H20l-4.5 3.3 1.7 5.5L12 13.2l-5.2 3.8 1.7-5.5L4 7.5h6.2L12 2z"},null,8,Gx),e[15]||(e[15]=s("circle",{cx:"12",cy:"12",r:"9",fill:"none",stroke:"currentColor","stroke-width":"1.2",opacity:"0.35"},null,-1))])):(g(),f("svg",Yx,[s("defs",null,[s("linearGradient",{id:`agent-node-grad-${_.id}`,x1:"0%",y1:"0%",x2:"100%",y2:"100%"},[...e[16]||(e[16]=[s("stop",{offset:"0%","stop-color":"currentColor"},null,-1),s("stop",{offset:"100%","stop-color":"currentColor","stop-opacity":"0.7"},null,-1)])],8,Hx)]),s("circle",{cx:"12",cy:"8",r:"3",fill:`url(#agent-node-grad-${_.id})`,opacity:"0.95"},null,8,qx),e[17]||(e[17]=s("path",{fill:"currentColor",opacity:"0.85",d:"M6 18.5c0-3.3 2.7-6 6-6s6 2.7 6 6v1H6v-1z"},null,-1)),e[18]||(e[18]=s("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"1",opacity:"0.25"},null,-1))]))],2),s("span",Vx,d(_.name||_.workspace||_.id),1),_.id==="default"?(g(),f("span",zx,d(t.t("agents.defaultBadge")),1)):V("",!0),t.effectiveSelectedAgentId===String(_.id)?(g(),f("span",Wx,[...e[19]||(e[19]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M20 6L9 17l-5-5"})],-1)])])):V("",!0)],10,Ux))),128)),t.agents.length===0?(g(),f("p",Kx,d(t.t("chat.selectAgent")),1)):V("",!0)],544),s("button",{type:"button",class:Oe(["agent-scroll-trigger agent-scroll-right",{visible:t.canScrollAgentRight}]),"aria-label":"向右滑动",onClick:e[2]||(e[2]=_=>t.scrollAgentList(1))},[...e[20]||(e[20]=[s("svg",{class:"agent-scroll-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M9 18l6-6-6-6"})],-1)])],2)])])],512),[[ht,t.agentBarVisible]])]),_:1}),s("div",Qx,[Q(s("textarea",{ref:"messageInputRef","onUpdate:modelValue":e[3]||(e[3]=_=>t.inputMessage=_),onKeydown:[e[4]||(e[4]=xo(Be((..._)=>t.sendMessage&&t.sendMessage(..._),["exact","prevent"]),["enter"])),e[5]||(e[5]=xo(Be(_=>t.inputMessage+=`
|
|
92
92
|
`,["shift","exact"]),["enter"]))],placeholder:t.messagePlaceholder,class:"message-input",rows:"5",disabled:t.isStreaming},null,40,$x),[[ye,t.inputMessage]]),t.isStreaming?(g(),f("button",{key:1,onClick:e[7]||(e[7]=(..._)=>t.cancelCurrentTurn&&t.cancelCurrentTurn(..._)),type:"button",class:"send-button abort-button",title:t.t("common.abort")},[...e[22]||(e[22]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-6 h-6"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1"})],-1)])],8,Zx)):(g(),f("button",{key:0,onClick:e[6]||(e[6]=(..._)=>t.sendMessage&&t.sendMessage(..._)),disabled:!t.inputMessage.trim(),class:"send-button",title:t.t("common.send")},[...e[21]||(e[21]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",class:"w-6 h-6"},[s("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})],-1)])],8,Xx))])]),t.isSystemSession?V("",!0):(g(),f("button",{key:0,type:"button",class:Oe(["agent-bar-float-btn",{collapsed:!t.agentBarVisible}]),title:t.agentBarVisible?t.t("chat.hideAgentBar"):t.t("chat.showAgentBar"),"aria-label":"展开/收起智能体选择",onClick:e[8]||(e[8]=(..._)=>t.toggleAgentBar&&t.toggleAgentBar(..._))},[t.agentBarVisible?(g(),f("svg",jx,[...e[23]||(e[23]=[s("path",{d:"M19 9l-7 7-7-7"},null,-1)])])):(g(),f("svg",eL,[...e[24]||(e[24]=[s("circle",{cx:"9",cy:"7",r:"4"},null,-1),s("path",{d:"M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2"},null,-1),s("path",{d:"M16 11h6m-3-3v6"},null,-1)])]))],10,Jx))])])}const SE=st(_x,[["render",tL],["__scopeId","data-v-77313ebf"]]),nL={name:"Sessions",setup(){const n=Zn(),e=Jn(),{t:o}=Ot(),t=D(null),a=D(null),l=D(null),i=D(!1),r=D(!1);async function c(){r.value=!0;try{await e.fetchSessions()}finally{r.value=!1}}Yt(()=>{c()}),uS(()=>{c()});const u=ae(()=>e.sessions),_=ae(()=>[...u.value].sort((x,U)=>(U.lastActiveAt||U.createdAt)-(x.lastActiveAt||x.createdAt)));function m(x){const U=(x==null?void 0:x.id)||"";if(U.startsWith("channel:feishu:"))return o("sessions.sourceFeishu");if(U.startsWith("channel:dingtalk:"))return o("sessions.sourceDingtalk");if(U.startsWith("channel:telegram:"))return o("sessions.sourceTelegram");if(U.startsWith("channel:")){const re=U.split(":");return o("sessions.sourceChannel",{name:re[1]||"unknown"})}return o("sessions.sourceWebDesktop")}function p(x){const U=(x==null?void 0:x.id)||"";return U.startsWith("channel:feishu:")?"source-feishu":U.startsWith("channel:dingtalk:")?"source-dingtalk":U.startsWith("channel:telegram:")?"source-telegram":U.startsWith("channel:")?"source-channel":"source-web"}function E(x){return!((x==null?void 0:x.id)||"").startsWith("channel:")}function S(x){const U=(x==null?void 0:x.type)||"chat";return o("sessions.type"+U.charAt(0).toUpperCase()+U.slice(1))||U}return{t:o,sessions:u,sortedSessions:_,sessionsLoading:r,refreshSessions:c,formatDate:(x,U)=>{const re=new Date(x);return U==="date"?re.toLocaleDateString(void 0,{month:"short",day:"numeric"}):re.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})},formatDateTime:x=>x==null?"—":new Date(x).toLocaleString(void 0,{dateStyle:"short",timeStyle:"short"}),getSessionTitle:x=>x.title?x.title:x.id.substring(0,12)+"...",getSessionPreview:x=>x.preview?x.preview:x.workspace?`Workspace: ${x.workspace}`:"No preview available",getSessionSourceLabel:m,getSessionTypeLabel:S,sourceTagClass:p,isWebDesktopSession:E,goToChat:x=>{const U=typeof x=="string"?x:x==null?void 0:x.id;U&&((x==null?void 0:x.type)==="system"?n.push({path:"/agents/default",query:{smartInstallSession:U}}):n.push(`/chat/${U}`))},openDetail:x=>{t.value=x},openHistory:async x=>{var U;a.value=x,l.value=null,i.value=!0;try{const re=await $t.getHistory(x.id);l.value=((U=re==null?void 0:re.data)==null?void 0:U.data)??(re==null?void 0:re.data)??[]}catch{l.value=[]}finally{i.value=!1}},deleteSession:async x=>{var U,re;confirm(o("sessions.deleteConfirm")||"Are you sure you want to delete this session?")&&(await e.deleteSession(x),((U=t.value)==null?void 0:U.id)===x&&(t.value=null),((re=a.value)==null?void 0:re.id)===x&&(a.value=null))},clearHistoryConfirm:async()=>{var x;if(a.value&&confirm(o("sessions.clearHistoryConfirm")))try{await $t.clearSessionMessages(a.value.id);const U=await $t.getHistory(a.value.id);if(l.value=((x=U==null?void 0:U.data)==null?void 0:x.data)??(U==null?void 0:U.data)??[],await e.fetchSessions(),a.value){const re=e.sessions.find(se=>se.id===a.value.id);re&&(a.value=re)}}catch(U){console.error(U)}},detailSession:t,historySession:a,historyMessages:l,historyLoading:i}}},oL={class:"sessions-view"},aL={class:"sessions-header"},rL={class:"header-info"},sL={class:"view-title"},iL={class:"view-subtitle"},lL=["disabled","title"],cL={key:0,class:"empty-state card-glass"},dL={class:"text-secondary"},_L={key:1,class:"sessions-list"},uL=["onClick"],mL={class:"row-prefix"},pL={class:"time-info"},gL={class:"date"},fL={class:"time"},EL={class:"row-content"},SL={class:"session-title"},bL={class:"session-preview"},hL={class:"session-source-row"},TL={key:0,class:"type-tag"},vL={class:"row-meta"},CL={class:"message-count"},yL={key:0,class:"workspace-tag"},RL=["onClick","title"],NL=["onClick","title"],OL=["onClick","title"],AL=["onClick","title"],IL={class:"modal-content card-glass detail-modal"},DL={class:"modal-header"},wL={class:"modal-body detail-body"},kL={class:"detail-list"},ML={class:"detail-item"},xL={class:"detail-item"},LL={class:"detail-item"},PL={class:"detail-item"},UL={class:"detail-item"},FL={class:"detail-item"},BL={class:"detail-item"},GL={class:"detail-item"},YL={class:"detail-item"},HL={key:0,class:"detail-item"},qL={key:1,class:"detail-item"},VL={key:2,class:"detail-item"},zL={key:3,class:"detail-item"},WL={class:"preview-text"},KL={class:"modal-content card-glass history-modal"},QL={class:"modal-header"},$L={class:"modal-header-actions"},XL=["disabled"],ZL={class:"modal-body history-body"},JL={key:0,class:"loading-state"},jL={key:1,class:"empty-state small"},eP={key:2,class:"history-list"},tP={class:"history-role"},nP={class:"history-content"},oP={class:"history-time"};function aP(n,e,o,t,a,l){return g(),f("div",oL,[s("div",aL,[s("div",rL,[s("h2",sL,d(t.t("nav.sessions")),1),s("p",iL,d(t.sessions.length)+" "+d(t.t("sessions.totalSessions")),1)]),s("button",{type:"button",class:"btn-refresh",disabled:t.sessionsLoading,title:t.t("common.refresh")||"Refresh",onClick:e[0]||(e[0]=(...i)=>t.refreshSessions&&t.refreshSessions(...i))},d(t.sessionsLoading?"…":"↻"),9,lL)]),t.sessions.length===0?(g(),f("div",cL,[e[7]||(e[7]=s("div",{class:"empty-icon"},"📝",-1)),s("h3",null,d(t.t("sessions.noSessions")||"No Sessions Yet"),1),s("p",dL,d(t.t("sessions.noSessionsHint")||"Create your first session to get started"),1)])):(g(),f("div",_L,[(g(!0),f(te,null,Le(t.sortedSessions,i=>(g(),f("div",{key:i.id,class:"session-row card-glass",onClick:r=>t.openDetail(i)},[s("div",mL,[s("div",{class:Oe(["status-indicator",`status-${i.status}`])},null,2),s("div",pL,[s("span",gL,d(t.formatDate(i.lastActiveAt||i.createdAt,"date")),1),s("span",fL,d(t.formatDate(i.lastActiveAt||i.createdAt,"time")),1)])]),s("div",EL,[s("h3",SL,d(t.getSessionTitle(i)),1),s("p",bL,d(t.getSessionPreview(i)),1),s("div",hL,[s("span",{class:Oe(["source-tag",t.sourceTagClass(i)])},d(t.getSessionSourceLabel(i)),3),i.type?(g(),f("span",TL,d(t.getSessionTypeLabel(i)),1)):V("",!0)])]),s("div",vL,[s("span",CL,[e[8]||(e[8]=s("span",{class:"meta-icon"},"💬",-1)),ze(" "+d(i.messageCount),1)]),i.workspace?(g(),f("span",yL,d(i.workspace.split("/").pop()),1)):V("",!0)]),s("div",{class:"row-actions",onClick:e[1]||(e[1]=Be(()=>{},["stop"]))},[t.isWebDesktopSession(i)?(g(),f("button",{key:0,onClick:r=>t.goToChat(i),class:"btn-action continue-btn",title:t.t("common.continue")},[s("span",null,d(t.t("common.continue")),1)],8,RL)):V("",!0),s("button",{onClick:r=>t.openDetail(i),class:"btn-action details-btn",title:t.t("common.details")},[s("span",null,d(t.t("common.details")),1)],8,NL),s("button",{onClick:r=>t.openHistory(i),class:"btn-action history-btn",title:t.t("sessions.chatHistory")},[s("span",null,d(t.t("sessions.chatHistory")),1)],8,OL),s("button",{onClick:r=>t.deleteSession(i.id),class:"btn-action delete-btn",title:t.t("common.delete")},[...e[9]||(e[9]=[s("span",{class:"icon-trash"},"🗑️",-1)])],8,AL)])],8,uL))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>[t.detailSession?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[3]||(e[3]=Be(i=>t.detailSession=null,["self"]))},[s("div",IL,[s("div",DL,[s("h2",null,d(t.t("common.details"))+" — "+d(t.getSessionTitle(t.detailSession)),1),s("button",{type:"button",class:"close-btn",onClick:e[2]||(e[2]=i=>t.detailSession=null)},"✕")]),s("div",wL,[s("dl",kL,[s("div",ML,[e[10]||(e[10]=s("dt",null,"ID",-1)),s("dd",null,d(t.detailSession.id),1)]),s("div",xL,[s("dt",null,d(t.t("sessions.source")),1),s("dd",null,[s("span",{class:Oe(["source-tag",t.sourceTagClass(t.detailSession)])},d(t.getSessionSourceLabel(t.detailSession)),3)])]),s("div",LL,[s("dt",null,d(t.t("sessions.type")),1),s("dd",null,d(t.getSessionTypeLabel(t.detailSession)),1)]),s("div",PL,[s("dt",null,d(t.t("sessions.status")),1),s("dd",null,d(t.detailSession.status),1)]),s("div",UL,[s("dt",null,d(t.t("sessions.agentId")),1),s("dd",null,d(t.detailSession.agentId??"default"),1)]),s("div",FL,[s("dt",null,d(t.t("sessions.workspace")),1),s("dd",null,d(t.detailSession.workspace??"—"),1)]),s("div",BL,[s("dt",null,d(t.t("sessions.messageCount")),1),s("dd",null,d(t.detailSession.messageCount),1)]),s("div",GL,[s("dt",null,d(t.t("sessions.createdAt")),1),s("dd",null,d(t.formatDateTime(t.detailSession.createdAt)),1)]),s("div",YL,[s("dt",null,d(t.t("sessions.lastActiveAt")),1),s("dd",null,d(t.formatDateTime(t.detailSession.lastActiveAt)),1)]),t.detailSession.provider?(g(),f("div",HL,[e[11]||(e[11]=s("dt",null,"Provider",-1)),s("dd",null,d(t.detailSession.provider),1)])):V("",!0),t.detailSession.model?(g(),f("div",qL,[e[12]||(e[12]=s("dt",null,"Model",-1)),s("dd",null,d(t.detailSession.model),1)])):V("",!0),t.detailSession.title?(g(),f("div",VL,[e[13]||(e[13]=s("dt",null,"Title",-1)),s("dd",null,d(t.detailSession.title),1)])):V("",!0),t.detailSession.preview?(g(),f("div",zL,[e[14]||(e[14]=s("dt",null,"Preview",-1)),s("dd",WL,d(t.detailSession.preview),1)])):V("",!0)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.historySession?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[6]||(e[6]=Be(i=>t.historySession=null,["self"]))},[s("div",KL,[s("div",QL,[s("h2",null,d(t.t("sessions.chatHistory"))+" — "+d(t.getSessionTitle(t.historySession)),1),s("div",$L,[s("button",{type:"button",class:"btn-danger btn-sm",onClick:e[4]||(e[4]=(...i)=>t.clearHistoryConfirm&&t.clearHistoryConfirm(...i)),disabled:t.historyLoading||t.historyMessages&&t.historyMessages.length===0},d(t.t("sessions.clearHistory")),9,XL),s("button",{type:"button",class:"close-btn",onClick:e[5]||(e[5]=i=>t.historySession=null)},"✕")])]),s("div",ZL,[t.historyLoading?(g(),f("div",JL,[e[15]||(e[15]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):!t.historyMessages||t.historyMessages.length===0?(g(),f("div",jL,[s("p",null,d(t.t("sessions.noMessages")),1)])):(g(),f("div",eP,[(g(!0),f(te,null,Le(t.historyMessages,i=>(g(),f("div",{key:i.id,class:Oe(["history-item",`role-${i.role}`])},[s("span",tP,d(i.role==="user"?t.t("sessions.roleUser"):t.t("sessions.roleAssistant")),1),s("div",nP,d(i.content||"—"),1),s("span",oP,d(t.formatDateTime(i.timestamp)),1)],2))),128))]))])])])):V("",!0)]),_:1})])}const rP=st(nL,[["render",aP],["__scopeId","data-v-3711bb29"]]),sP={name:"SkillCard",props:{skill:{type:Object,required:!0}},emits:["click"],setup(){const{t:n}=Ot();return{t:n,truncate:(o,t)=>o?o.length>t?o.substring(0,t)+"...":o:""}}},iP={class:"card-content"},lP={class:"skill-icon"},cP={key:0},dP={key:1},_P={class:"skill-info"},uP={class:"skill-name"},mP={class:"skill-summary"},pP={class:"card-footer"},gP={class:"view-details"};function fP(n,e,o,t,a,l){return g(),f("div",{class:"skill-card card-glass",onClick:e[0]||(e[0]=i=>n.$emit("click"))},[s("div",iP,[s("div",lP,[o.skill.icon?(g(),f("span",cP,d(o.skill.icon),1)):(g(),f("span",dP,"🎯"))]),s("div",_P,[s("h3",uP,d(o.skill.name),1),s("p",mP,d(t.truncate(o.skill.description,60)),1)])]),s("div",pP,[s("span",gP,d(t.t("common.details"))+" →",1)])])}const rh=st(sP,[["render",fP],["__scopeId","data-v-96316178"]]),EP=new Set(["jpg","jpeg","png","gif","webp","svg","pdf","txt","html","htm","md","json"]),SP={name:"Workspace",components:{SkillCard:rh},setup(){const{t:n}=Ot(),e=ma(),o=Mb(),t=D("documents"),a=D("default"),l=D([]),i=D(!1),r=D(""),c=D([]),u=D(!1),_=D(null),m=D(null),p=D(null),E=D(null),S=ae(()=>o.selectedSkill),T=ae(()=>o.skillContent),h=ae(()=>r.value?r.value.split("/").filter(Boolean):[]),A=ae(()=>!!_.value),b=ae(()=>_.value?U(_.value.name):""),y=ae(()=>_.value&&!_.value.isDirectory?X(_.value.path,!1):""),w=ae(()=>o.skills.filter(Ee=>(Ee.source||"")==="workspace")),k=ae(()=>o.loading),B=ae(()=>T.value?ot(T.value):"");function X(Ee,ve){const we=De.defaults.baseURL||"/server-api",Re=new URLSearchParams({workspace:a.value,path:Ee});return ve&&Re.set("download","1"),`${we}/workspace/files/serve?${Re.toString()}`}function x(Ee){var we;const ve=((we=Ee.split(".").pop())==null?void 0:we.toLowerCase())||"";return EP.has(ve)}function U(Ee){var we;const ve=((we=Ee.split(".").pop())==null?void 0:we.toLowerCase())||"";return["jpg","jpeg","png","gif","webp","svg"].includes(ve)?"image":ve==="pdf"?"pdf":["html","htm"].includes(ve)?"html":["txt","md","json"].includes(ve)?"text":""}async function re(Ee){if(Ee.isDirectory)return;_.value=Ee;const ve=U(Ee.name);if(m.value=null,p.value=null,ve==="text")try{const we=X(Ee.path,!1),Re=await fetch(we);m.value=await Re.text()}catch{m.value=""}else if(ve==="html")try{const we=X(Ee.path,!1),Re=await fetch(we);p.value=await Re.text()}catch{p.value=""}}function se(){_.value=null,m.value=null,p.value=null}function ne(Ee){E.value=Ee}async function Te(){if(!E.value)return;const Ee=E.value;E.value=null;try{await uo.deleteDocument(a.value,Ee.path),R()}catch(ve){console.error("Delete failed",ve)}}async function G(){var Ee;try{const ve=await uo.listWorkspaces();l.value=((Ee=ve.data)==null?void 0:Ee.data)??[]}catch(ve){console.error("List workspaces failed",ve)}}async function H(){var Ee,ve;try{const we=await uo.getCurrentWorkspace();a.value=((Ee=we.data)==null?void 0:Ee.data)??"default"}catch{a.value=((ve=e.config)==null?void 0:ve.defaultAgentId)??"default"}}async function R(){var Ee;u.value=!0;try{const ve=await uo.listDocuments(a.value,r.value);c.value=((Ee=ve.data)==null?void 0:Ee.data)??[]}catch(ve){console.error("List documents failed",ve),c.value=[]}finally{u.value=!1}}async function P(Ee){a.value=Ee,i.value=!1,t.value==="documents"&&R()}async function oe(Ee){try{await o.selectSkill(Ee)}catch(ve){console.error("Load skill failed",ve)}}function he(){o.clearSelection()}return nt([a,r],R),Yt(async()=>{await H(),await G(),await o.fetchSkills(),R()}),{t:n,activeTab:t,currentWorkspace:a,workspaces:l,showSwitchModal:i,docPath:r,docPathParts:h,documents:c,docLoading:u,previewItem:_,previewType:b,previewUrl:y,previewTextContent:m,previewHtmlContent:p,showPreviewModal:A,deleteTarget:E,workspaceSkills:w,skillsLoading:k,selectedSkill:S,skillContent:T,renderedSkillContent:B,fileServeUrl:X,isPreviewable:x,openPreview:re,closePreview:se,confirmDelete:ne,doDelete:Te,switchWorkspace:P,selectSkill:oe,closeSkill:he}}},bP={class:"workspace-view"},hP={class:"workspace-header card-glass"},TP={class:"header-left"},vP={class:"view-title"},CP={class:"text-secondary"},yP={class:"workspace-tabs"},RP={class:"tab-panel documents-panel"},NP={class:"doc-toolbar"},OP={class:"breadcrumb"},AP=["onClick"],IP={key:0,class:"loading-state"},DP={key:1,class:"empty-state"},wP={key:2,class:"doc-list"},kP=["onClick"],MP={class:"doc-actions"},xP=["onClick"],LP={class:"doc-name"},PP={class:"doc-actions"},UP=["onClick"],FP=["href"],BP=["onClick"],GP={class:"modal-content preview-modal card-glass"},YP={class:"modal-header"},HP={class:"preview-title"},qP={class:"preview-actions"},VP=["href"],zP={class:"preview-body"},WP=["src","alt"],KP=["src"],QP=["srcdoc"],$P={key:1,class:"loading-state"},XP={key:0,class:"preview-text"},ZP={key:1,class:"loading-state"},JP={class:"modal-content card-glass delete-confirm-modal"},jP={class:"modal-header"},e1={class:"modal-body"},t1={class:"delete-target-name"},n1={class:"modal-footer-actions"},o1={class:"tab-panel skills-panel"},a1={key:0,class:"loading-state"},r1={key:1,class:"empty-state"},s1={class:"text-secondary"},i1={key:2,class:"skills-grid"},l1={class:"modal-content card-glass"},c1={class:"modal-header"},d1={class:"modal-body"},_1={key:0,class:"empty-state"},u1={class:"workspace-list"},m1=["onClick"],p1={class:"ws-name"},g1={class:"modal-content card-glass skill-detail-modal"},f1={class:"modal-header"},E1={class:"modal-body"},S1=["innerHTML"],b1={key:1,class:"no-content"};function h1(n,e,o,t,a,l){const i=gt("SkillCard");return g(),f("div",bP,[s("div",hP,[s("div",TP,[s("h1",vP,d(t.t("workspace.title")),1),s("p",CP,[ze(d(t.t("workspace.currentWorkspace"))+": ",1),s("strong",null,d(t.currentWorkspace),1)])]),s("button",{class:"btn-primary",onClick:e[0]||(e[0]=r=>t.showSwitchModal=!0)},d(t.t("workspace.switchWorkspace")),1)]),s("div",yP,[s("button",{class:Oe(["tab-btn",{active:t.activeTab==="documents"}]),onClick:e[1]||(e[1]=r=>t.activeTab="documents")},d(t.t("workspace.documents")),3),s("button",{class:Oe(["tab-btn",{active:t.activeTab==="skills"}]),onClick:e[2]||(e[2]=r=>t.activeTab="skills")},d(t.t("workspace.skillsTab")),3)]),Q(s("div",RP,[s("div",NP,[s("nav",OP,[s("button",{class:"breadcrumb-item",onClick:e[3]||(e[3]=r=>t.docPath="")},d(t.currentWorkspace),1),(g(!0),f(te,null,Le(t.docPathParts,(r,c)=>(g(),f(te,{key:c},[e[14]||(e[14]=s("span",{class:"breadcrumb-sep"},"/",-1)),s("button",{class:"breadcrumb-item",onClick:u=>t.docPath=t.docPathParts.slice(0,c+1).join("/")},d(r),9,AP)],64))),128))])]),t.docLoading?(g(),f("div",IP,[e[15]||(e[15]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.documents.length===0?(g(),f("div",DP,[e[16]||(e[16]=s("div",{class:"empty-icon"},"📂",-1)),s("p",null,d(t.t("workspace.emptyDocs")),1)])):(g(),f("div",wP,[(g(!0),f(te,null,Le(t.documents,r=>(g(),f("div",{key:r.path,class:Oe(["doc-item",{folder:r.isDirectory}])},[r.isDirectory?(g(),f(te,{key:0},[e[17]||(e[17]=s("span",{class:"doc-icon"},"📁",-1)),s("button",{class:"doc-name",onClick:c=>t.docPath=r.path},d(r.name),9,kP),s("span",MP,[s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDelete(r)},d(t.t("common.delete")),9,xP)])],64)):(g(),f(te,{key:1},[e[20]||(e[20]=s("span",{class:"doc-icon"},"📄",-1)),s("span",LP,d(r.name),1),s("span",PP,[t.isPreviewable(r.name)?(g(),f(te,{key:0},[s("button",{type:"button",class:"link-btn",onClick:c=>t.openPreview(r)},d(t.t("workspace.preview")),9,UP),e[18]||(e[18]=s("span",{class:"sep"},"|",-1))],64)):V("",!0),s("a",{href:t.fileServeUrl(r.path,!0),download:"",class:"link-btn"},d(t.t("workspace.download")),9,FP),e[19]||(e[19]=s("span",{class:"sep"},"|",-1)),s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDelete(r)},d(t.t("common.delete")),9,BP)])],64))],2))),128))]))],512),[[ht,t.activeTab==="documents"]]),Ae(je,{name:"fade"},{default:Ve(()=>{var r,c;return[t.showPreviewModal?(g(),f("div",{key:0,class:"modal-backdrop preview-backdrop",onClick:e[5]||(e[5]=Be((...u)=>t.closePreview&&t.closePreview(...u),["self"]))},[s("div",GP,[s("div",YP,[s("h2",HP,d((r=t.previewItem)==null?void 0:r.name),1),s("div",qP,[t.previewItem&&!t.previewItem.isDirectory?(g(),f("a",{key:0,href:t.fileServeUrl(t.previewItem.path,!0),download:"",class:"link-btn"},d(t.t("workspace.download")),9,VP)):V("",!0),s("button",{type:"button",class:"close-btn",onClick:e[4]||(e[4]=(...u)=>t.closePreview&&t.closePreview(...u))},"✕")])]),s("div",zP,[t.previewType==="image"?(g(),f("img",{key:0,src:t.previewUrl,alt:(c=t.previewItem)==null?void 0:c.name,class:"preview-image"},null,8,WP)):t.previewType==="pdf"?(g(),f("iframe",{key:1,src:t.previewUrl,class:"preview-iframe",title:"PDF"},null,8,KP)):t.previewType==="html"?(g(),f(te,{key:2},[t.previewHtmlContent?(g(),f("iframe",{key:0,srcdoc:t.previewHtmlContent,class:"preview-iframe",title:"HTML"},null,8,QP)):(g(),f("div",$P,[...e[21]||(e[21]=[s("div",{class:"spinner"},null,-1)])]))],64)):t.previewType==="text"?(g(),f(te,{key:3},[t.previewTextContent!==null?(g(),f("pre",XP,d(t.previewTextContent),1)):(g(),f("div",ZP,[...e[22]||(e[22]=[s("div",{class:"spinner"},null,-1)])]))],64)):V("",!0)])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r,c;return[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[9]||(e[9]=Be(u=>t.deleteTarget=null,["self"]))},[s("div",JP,[s("div",jP,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[6]||(e[6]=u=>t.deleteTarget=null)},"✕")]),s("div",e1,[s("p",null,d((r=t.deleteTarget)!=null&&r.isDirectory?t.t("workspace.deleteFolderConfirm"):t.t("workspace.deleteConfirm")),1),s("p",t1,d((c=t.deleteTarget)==null?void 0:c.name),1),s("div",n1,[s("button",{type:"button",class:"btn-secondary",onClick:e[7]||(e[7]=u=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[8]||(e[8]=(...u)=>t.doDelete&&t.doDelete(...u))},d(t.t("common.delete")),1)])])])])):V("",!0)]}),_:1}),Q(s("div",o1,[t.skillsLoading?(g(),f("div",a1,[e[23]||(e[23]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.workspaceSkills.length===0?(g(),f("div",r1,[e[24]||(e[24]=s("div",{class:"empty-icon"},"🎯",-1)),s("p",null,d(t.t("skills.noSkills")),1),s("p",s1,d(t.t("skills.noSkillsHint")),1)])):(g(),f("div",i1,[(g(!0),f(te,null,Le(t.workspaceSkills,r=>(g(),Gt(i,{key:r.name,skill:r,onClick:c=>t.selectSkill(r.name)},null,8,["skill","onClick"]))),128))]))],512),[[ht,t.activeTab==="skills"]]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showSwitchModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[11]||(e[11]=Be(r=>t.showSwitchModal=!1,["self"]))},[s("div",l1,[s("div",c1,[s("h2",null,d(t.t("workspace.selectWorkspace")),1),s("button",{class:"close-btn",onClick:e[10]||(e[10]=r=>t.showSwitchModal=!1)},"✕")]),s("div",d1,[t.workspaces.length===0?(g(),f("div",_1,[s("p",null,d(t.t("workspace.emptyDocs")),1)])):V("",!0),s("ul",u1,[(g(!0),f(te,null,Le(t.workspaces,r=>(g(),f("li",{key:r,class:Oe(["workspace-option",{active:r===t.currentWorkspace}]),onClick:c=>t.switchWorkspace(r)},[e[25]||(e[25]=s("span",{class:"ws-icon"},"📁",-1)),s("span",p1,d(r),1)],10,m1))),128))])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.selectedSkill?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[13]||(e[13]=Be((...r)=>t.closeSkill&&t.closeSkill(...r),["self"]))},[s("div",g1,[s("div",f1,[s("h2",null,d(t.selectedSkill.name),1),s("button",{class:"close-btn",onClick:e[12]||(e[12]=(...r)=>t.closeSkill&&t.closeSkill(...r))},"✕")]),s("div",E1,[t.skillContent?(g(),f("div",{key:0,class:"skill-documentation markdown-body",innerHTML:t.renderedSkillContent},null,8,S1)):(g(),f("div",b1,d(t.t("skills.noDocumentation")),1))])])])):V("",!0)]),_:1})])}const T1=st(SP,[["render",h1],["__scopeId","data-v-f5b622ae"]]),v1={name:"SettingsTags",setup(){const{t:n}=Ot(),e=D([]),o=D(!1),t=D(!1),a=D(""),l=D(""),i=D(null),r=D(""),c=D(null),u=D(!1);async function _(){var h,A,b;o.value=!0,l.value="";try{const y=await Oa.list();e.value=((h=y.data)==null?void 0:h.data)??[]}catch(y){e.value=[],l.value=((b=(A=y.response)==null?void 0:A.data)==null?void 0:b.message)||y.message||"加载失败"}finally{o.value=!1}}async function m(){var A,b,y;const h=(A=a.value)==null?void 0:A.trim();if(!(!h||t.value)){t.value=!0,l.value="";try{await Oa.create({name:h}),a.value="",await _()}catch(w){l.value=((y=(b=w.response)==null?void 0:b.data)==null?void 0:y.message)||w.message||"添加失败"}finally{t.value=!1}}}function p(h){i.value=h.id,r.value=h.name}async function E(){var b,y,w;const h=i.value,A=(b=r.value)==null?void 0:b.trim();if(!h||!A){i.value=null;return}t.value=!0,l.value="";try{await Oa.update(h,{name:A}),i.value=null,await _()}catch(k){l.value=((w=(y=k.response)==null?void 0:y.data)==null?void 0:w.message)||k.message||"保存失败"}finally{t.value=!1}}function S(h){c.value=h}async function T(){var A,b;const h=c.value;if(!(!h||u.value)){u.value=!0;try{await Oa.delete(h.id),c.value=null,await _()}catch(y){l.value=((b=(A=y.response)==null?void 0:A.data)==null?void 0:b.message)||y.message||"删除失败"}finally{u.value=!1}}}return Yt(_),{t:n,tags:e,loading:o,saving:t,newTagName:a,tagError:l,editingId:i,editName:r,deleteTarget:c,deleteSaving:u,addTag:m,startEdit:p,saveEdit:E,confirmDelete:S,doDelete:T}}},C1={class:"settings-tags"},y1={class:"tab-title"},R1={class:"panel-desc"},N1={class:"tag-form-row card-glass"},O1=["placeholder"],A1=["disabled"],I1={key:0,class:"form-error"},D1={key:1,class:"loading-state"},w1={key:2,class:"empty-state"},k1={key:3,class:"tag-list"},M1={class:"tag-name"},x1={class:"tag-item-actions"},L1=["onClick"],P1=["onClick"],U1={class:"modal-content card-glass delete-confirm-modal"},F1={class:"modal-header"},B1={class:"modal-body"},G1={class:"delete-target-name"},Y1={class:"modal-footer-actions"},H1=["disabled"];function q1(n,e,o,t,a,l){return g(),f("div",C1,[s("h2",y1,d(t.t("settings.tagsManagement")),1),s("p",R1,d(t.t("settings.tagsManagementDesc")),1),s("div",N1,[Q(s("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>t.newTagName=i),type:"text",class:"input tag-input",placeholder:t.t("settings.tagNamePlaceholder"),onKeydown:e[1]||(e[1]=xo((...i)=>t.addTag&&t.addTag(...i),["enter"]))},null,40,O1),[[ye,t.newTagName]]),s("button",{type:"button",class:"btn-add-tag",disabled:!t.newTagName.trim()||t.saving,onClick:e[2]||(e[2]=(...i)=>t.addTag&&t.addTag(...i))},d(t.saving?t.t("common.loading"):t.t("settings.addTag")),9,A1)]),t.tagError?(g(),f("p",I1,d(t.tagError),1)):V("",!0),t.loading?(g(),f("div",D1,[e[12]||(e[12]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.tags.length===0?(g(),f("div",w1,[s("p",null,d(t.t("settings.noTags")),1)])):(g(),f("ul",k1,[(g(!0),f(te,null,Le(t.tags,i=>(g(),f("li",{key:i.id,class:"tag-item card-glass"},[t.editingId===i.id?(g(),f(te,{key:0},[Q(s("input",{"onUpdate:modelValue":e[3]||(e[3]=r=>t.editName=r),type:"text",class:"input tag-edit-input",onKeydown:[e[4]||(e[4]=xo((...r)=>t.saveEdit&&t.saveEdit(...r),["enter"])),e[5]||(e[5]=xo(r=>t.editingId=null,["esc"]))]},null,544),[[ye,t.editName]]),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:e[6]||(e[6]=(...r)=>t.saveEdit&&t.saveEdit(...r))},d(t.t("common.save")),1),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:e[7]||(e[7]=r=>t.editingId=null)},d(t.t("common.cancel")),1)],64)):(g(),f(te,{key:1},[s("span",M1,d(i.name),1),s("div",x1,[s("button",{type:"button",class:"tag-action-btn",onClick:r=>t.startEdit(i)},d(t.t("settings.editTag")),9,L1),s("button",{type:"button",class:"tag-action-btn tag-action-btn-danger",onClick:r=>t.confirmDelete(i)},d(t.t("common.delete")),9,P1)])],64))]))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>{var i;return[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[11]||(e[11]=Be(r=>t.deleteTarget=null,["self"]))},[s("div",U1,[s("div",F1,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[8]||(e[8]=r=>t.deleteTarget=null)},"✕")]),s("div",B1,[s("p",null,d(t.t("settings.deleteTagConfirm")),1),s("p",G1,d((i=t.deleteTarget)==null?void 0:i.name),1),s("div",Y1,[s("button",{type:"button",class:"btn-secondary",onClick:e[9]||(e[9]=r=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",disabled:t.deleteSaving,onClick:e[10]||(e[10]=(...r)=>t.doDelete&&t.doDelete(...r))},d(t.t("common.delete")),9,H1)])])])])):V("",!0)]}),_:1})])}const V1=st(v1,[["render",q1],["__scopeId","data-v-2bbef6b3"]]),z1=new Set(["jpg","jpeg","png","gif","webp","svg","pdf","txt","html","htm","md","json","py","js","ts","jsx","tsx","java","kt","go","rs","c","cpp","h","hpp","sh","bash","zsh","css","scss","sass","less","vue","svelte","mjs","cjs"]),W1={name:"WorkResults",components:{SettingsTags:V1},setup(){const{t:n}=Ot(),e=ma(),o=D("documents"),t=D("default"),a=D([]),l=D(!1),i=D(""),r=D([]),c=D(!1),u=D("list"),_=D(null),m=D(null),p=D(null),E=D(null),S=D([]),T=D(!1),h=D(""),A=D([]),b=D(null),y=D(null),w=D(null),k=D(null),B=D(""),X=D(!1),x=ae(()=>i.value?i.value.split("/").filter(Boolean):[]),U=new Set(["skills",".skills"]),re=ae(()=>r.value.filter(ue=>!ue.isDirectory||!U.has(ue.name))),se=ae(()=>re.value.filter(ue=>!ue.isDirectory&&Ie(ue.name)==="image")),ne=ae(()=>re.value.filter(ue=>ue.isDirectory||Ie(ue.name)!=="image")),Te=ae(()=>!!_.value),G=ae(()=>_.value?Ie(_.value.name):""),H=ae(()=>re.value.filter(ue=>!ue.isDirectory&&we(ue.name))),R=ae(()=>{const ue=_.value;return!ue||!H.value.length?-1:H.value.findIndex(Je=>Je.path===ue.path)}),P=ae(()=>R.value>0),oe=ae(()=>{const ue=R.value;return ue>=0&&ue<H.value.length-1}),he=ae(()=>_.value&&!_.value.isDirectory?Ee(_.value.path,!1):"");function Ee(ue,ge,Je){const Rt=De.defaults.baseURL||"/server-api",kt=new URLSearchParams({workspace:Je||t.value,path:ue});return ge&&kt.set("download","1"),`${Rt}/workspace/files/serve?${kt.toString()}`}function ve(ue){if(!ue)return null;const ge=ue.match(/^file:\/\/.+[\/\\]workspace[\/\\]([^\/\\]+)[\/\\](.*)/i);return ge?{workspace:decodeURIComponent(ge[1]),path:decodeURIComponent(ge[2])}:null}function we(ue){var Je;const ge=((Je=ue.split(".").pop())==null?void 0:Je.toLowerCase())||"";return z1.has(ge)}const Re=new Set(["py","js","ts","jsx","tsx","java","kt","go","rs","c","cpp","h","hpp","sh","bash","zsh","css","scss","sass","less","vue","svelte","mjs","cjs"]);function Ie(ue){var Je;const ge=((Je=ue.split(".").pop())==null?void 0:Je.toLowerCase())||"";return["jpg","jpeg","png","gif","webp","svg"].includes(ge)?"image":ge==="pdf"?"pdf":["html","htm"].includes(ge)?"html":["txt","md","json"].includes(ge)?"text":Re.has(ge)?"code":""}async function xe(ue){if(ue.isDirectory)return;_.value=ue;const ge=Ie(ue.name);if(m.value=null,p.value=null,ge==="text"||ge==="code")try{const Je=await De.get("/workspace/files/serve",{params:{workspace:t.value,path:ue.path},responseType:"text"});m.value=Je.data}catch{m.value=""}else if(ge==="html")try{const Je=await De.get("/workspace/files/serve",{params:{workspace:t.value,path:ue.path},responseType:"text"});p.value=Je.data}catch{p.value=""}}function Ge(){_.value=null,m.value=null,p.value=null}function W(){const ue=R.value;if(ue<=0)return;const ge=H.value[ue-1];ge&&xe(ge)}function me(){const ue=R.value;if(ue<0||ue>=H.value.length-1)return;const ge=H.value[ue+1];ge&&xe(ge)}function F(ue){E.value=ue}async function Z(){if(!E.value)return;const ue=E.value;E.value=null;try{await uo.deleteDocument(t.value,ue.path),N()}catch(ge){console.error("Delete failed",ge)}}async function Se(){var ue;try{const ge=await uo.listWorkspaces();a.value=((ue=ge.data)==null?void 0:ue.data)??[]}catch(ge){console.error("List workspaces failed",ge)}}async function C(){var ue,ge;try{const Je=await uo.getCurrentWorkspace();t.value=((ue=Je.data)==null?void 0:ue.data)??"default"}catch{t.value=((ge=e.config)==null?void 0:ge.defaultAgentId)??"default"}}async function N(){var ue;c.value=!0;try{const ge=await uo.listDocuments(t.value,i.value);r.value=((ue=ge.data)==null?void 0:ue.data)??[]}catch(ge){console.error("List documents failed",ge),r.value=[]}finally{c.value=!1}}async function O(){var ue;try{const ge=await Oa.list();A.value=((ue=ge.data)==null?void 0:ue.data)??[]}catch(ge){console.error("List tags failed",ge),A.value=[]}}const M=D(new Set);async function Y(){var ue;T.value=!0;try{await O();const ge={};h.value&&(ge.tagId=h.value);const Rt=((ue=(await Xs.list(ge)).data)==null?void 0:ue.data)??[];S.value=Rt;const kt=new Set(M.value);Rt.forEach(xn=>(xn.tagNames||[]).forEach(Ht=>kt.add(Ht))),M.value=kt}catch(ge){console.error("List bookmarks failed",ge),S.value=[]}finally{T.value=!1}}function q(ue){h.value=ue!=null&&ue!==""?String(ue):"",Y()}const $=ae(()=>!h.value);function ce(ue){return!ue||h.value===""?!1:String(h.value)===String(ue.id)}function de(ue){if(!ue||typeof ue!="string")return!1;const ge=ue.split("?")[0].toLowerCase();return/\.(jpg|jpeg|png|gif|webp|svg|bmp)$/i.test(ge)||ge.includes("/image/")}function z(ue){return`${De.defaults.baseURL||"/server-api"}/saved-items/image-proxy?url=${encodeURIComponent(ue)}`}function ke(ue){return de(ue)?z(ue):""}const fe=ae(()=>y.value&&de(y.value.url)?z(y.value.url):""),Ce=ae(()=>{const ue=y.value;return!ue||!S.value.length?-1:S.value.findIndex(Je=>Je.id===ue.id)}),Ne=ae(()=>Ce.value>0),ie=ae(()=>{const ue=Ce.value;return ue>=0&&ue<S.value.length-1}),ee=ae(()=>A.value.filter(ue=>M.value.has(ue.name)));function be(ue){var ge;typeof ue!="string"||!ue||(typeof window<"u"&&((ge=window.electronAPI)!=null&&ge.openExternal)?window.electronAPI.openExternal(ue):window.open(ue,"_blank","noopener,noreferrer"))}async function Ue(ue){var Je;y.value=ue,w.value=null;const ge=ve(ue.url);if(ge){const Rt=((Je=ge.path.split(".").pop())==null?void 0:Je.toLowerCase())||"";if(["html","htm"].includes(Rt))try{const kt=await De.get("/workspace/files/serve",{params:{workspace:ge.workspace,path:ge.path},responseType:"text"});w.value=kt.data}catch{w.value=""}}}function Qe(){y.value=null}function ct(){const ue=Ce.value;if(ue<=0)return;const ge=S.value[ue-1];ge&&(y.value=ge)}function St(){const ue=Ce.value;if(ue<0||ue>=S.value.length-1)return;const ge=S.value[ue+1];ge&&(y.value=ge)}function At(){B.value="",X.value=!1}async function dn(ue){var Je,Rt,kt,xn;if(k.value)return;k.value=ue.id,At();let ge=null;if(typeof window<"u"&&((Je=window.electronAPI)!=null&&Je.showOpenDirectoryDialog))try{ge=await window.electronAPI.showOpenDirectoryDialog()}catch(Ht){console.error("Open directory dialog failed",Ht)}try{const Ht={workspace:t.value};ge&&(Ht.targetDir=ge);const Kt=(Rt=(await Xs.downloadToWorkspace(ue.id,Ht)).data)==null?void 0:Rt.data;Kt!=null&&Kt.absolutePath?B.value=n("workResults.downloadSuccess")+": "+Kt.absolutePath:Kt!=null&&Kt.relativePath?B.value=n("workResults.downloadSuccess")+" .favorite/"+(Kt.relativePath||"").replace(/^\.favorite\/?/,""):B.value=n("workResults.downloadSuccess"),X.value=!1,o.value==="documents"&&N(),setTimeout(At,3e3)}catch(Ht){console.error("Download to workspace failed",Ht),B.value=((xn=(kt=Ht.response)==null?void 0:kt.data)==null?void 0:xn.message)||Ht.message||n("workResults.downloadFailed"),X.value=!0,setTimeout(At,4e3)}finally{k.value=null}}async function bt(){y.value&&await dn(y.value)}function It(ue){b.value=ue}async function jt(){if(!b.value)return;const ue=b.value.id;b.value=null;try{await Xs.delete(ue),Y()}catch(ge){console.error("Delete bookmark failed",ge)}}async function fn(ue){t.value=ue,l.value=!1,o.value==="documents"&&N()}return nt([t,i],N),Yt(async()=>{await C(),await Se(),N()}),{t:n,activeTab:o,currentWorkspace:t,workspaces:a,showSwitchModal:l,docPath:i,docPathParts:x,docViewMode:u,documents:r,filteredDocuments:re,imageFiles:se,nonImageItems:ne,docLoading:c,bookmarks:S,bookmarksLoading:T,bookmarkTagFilter:h,bookmarkTags:A,visibleBookmarkTags:ee,setBookmarkTagFilter:q,isAllTagSelected:$,isTagSelected:ce,deleteBookmarkTarget:b,previewBookmarkItem:y,downloadingId:k,downloadMessage:B,downloadMessageError:X,isImageBookmarkUrl:de,imageProxyUrl:z,bookmarkImageSrc:ke,bookmarkPreviewImageSrc:fe,hasPrevBookmark:Ne,hasNextBookmark:ie,goToPrevBookmark:ct,goToNextBookmark:St,openBookmarkInSystemBrowser:be,openBookmarkPreview:Ue,closeBookmarkPreview:Qe,downloadBookmarkToWorkspace:dn,downloadBookmarkFromPreview:bt,previewItem:_,previewType:G,previewUrl:he,previewTextContent:m,previewHtmlContent:p,showPreviewModal:Te,hasPrevDoc:P,hasNextDoc:oe,goToPrevDoc:W,goToNextDoc:me,deleteTarget:E,fileServeUrl:Ee,isPreviewable:we,openPreview:xe,closePreview:Ge,confirmDelete:F,doDelete:Z,loadBookmarks:Y,confirmDeleteBookmark:It,doDeleteBookmark:jt,switchWorkspace:fn}}},K1={class:"work-results-view"},Q1={class:"results-header card-glass"},$1={class:"header-left"},X1={class:"view-title"},Z1={class:"text-secondary"},J1={class:"results-layout"},j1={class:"results-sidebar card-glass"},eU={class:"results-nav"},tU={class:"results-main"},nU={class:"tab-panel documents-panel"},oU={class:"doc-toolbar"},aU={class:"breadcrumb"},rU=["onClick"],sU={class:"doc-view-toggle"},iU={key:0,class:"loading-state"},lU={key:1,class:"empty-state"},cU={key:0,class:"doc-cards-view"},dU={key:0,class:"image-cards-grid"},_U=["onClick"],uU=["src","alt"],mU={class:"image-card-name"},pU={key:1,class:"empty-state small"},gU={key:2,class:"other-files-section"},fU={class:"other-files-label"},EU={class:"doc-list"},SU=["onClick"],bU={class:"doc-name"},hU={class:"doc-actions"},TU=["href"],vU={key:1,class:"doc-list"},CU=["onClick"],yU={class:"doc-actions"},RU=["onClick"],NU={class:"doc-name"},OU={class:"doc-actions"},AU=["onClick"],IU=["href"],DU=["onClick"],wU={class:"tab-panel bookmarks-panel"},kU={key:0,class:"loading-state"},MU={key:1,class:"bookmarks-content"},xU={class:"bookmark-tag-filter"},LU={class:"filter-label"},PU=["onClick"],UU={class:"bookmarks-list-wrap"},FU={key:0,class:"bookmarks-list"},BU={class:"bookmark-main"},GU={class:"bookmark-thumb-row"},YU=["src","alt","onClick"],HU=["title","onClick"],qU={class:"bookmark-text"},VU=["href"],zU={key:0,class:"bookmark-url"},WU={key:1,class:"bookmark-tags"},KU={class:"bookmark-actions"},QU=["disabled","onClick"],$U=["onClick"],XU=["onClick"],ZU=["onClick"],JU={key:1,class:"bookmarks-empty-inline"},jU={class:"text-secondary"},e0={class:"modal-header"},t0={class:"preview-title"},n0={class:"preview-actions"},o0=["disabled"],a0=["href"],r0={class:"preview-body"},s0=["src"],i0=["srcdoc"],l0={key:1,class:"loading-state"},c0=["src"],d0=["src"],_0={class:"preview-nav-bar"},u0=["disabled"],m0=["disabled"],p0={class:"modal-content card-glass delete-confirm-modal"},g0={class:"modal-header"},f0={class:"modal-body"},E0={class:"delete-target-name"},S0={class:"modal-footer-actions"},b0={class:"tab-panel news-panel"},h0={class:"empty-state"},T0={class:"text-secondary"},v0={class:"tab-panel tags-panel"},C0={class:"modal-content preview-modal card-glass"},y0={class:"modal-header"},R0={class:"preview-title"},N0={class:"preview-actions"},O0=["href"],A0={class:"preview-body"},I0=["src","alt"],D0=["src"],w0=["srcdoc"],k0={key:1,class:"loading-state"},M0={key:0,class:"preview-text"},x0={key:1,class:"loading-state"},L0={key:0,class:"preview-code"},P0={key:1,class:"loading-state"},U0={class:"preview-nav-bar"},F0=["disabled"],B0=["disabled"],G0={class:"modal-content card-glass delete-confirm-modal"},Y0={class:"modal-header"},H0={class:"modal-body"},q0={class:"delete-target-name"},V0={class:"modal-footer-actions"},z0={class:"modal-content card-glass"},W0={class:"modal-header"},K0={class:"modal-body"},Q0={key:0,class:"empty-state"},$0={class:"workspace-list"},X0=["onClick"],Z0={class:"ws-name"};function J0(n,e,o,t,a,l){const i=gt("SettingsTags");return g(),f("div",K1,[s("div",Q1,[s("div",$1,[s("h1",X1,d(t.t("workResults.title")),1),s("p",Z1,[ze(d(t.t("workResults.currentWorkspace"))+": ",1),s("strong",null,d(t.currentWorkspace),1)])]),s("button",{type:"button",class:"btn-switch-workspace",onClick:e[0]||(e[0]=r=>t.showSwitchModal=!0)},[e[30]||(e[30]=s("span",{class:"btn-switch-icon","aria-hidden":"true"},"↻",-1)),ze(" "+d(t.t("workResults.switchWorkspace")),1)])]),s("div",J1,[s("aside",j1,[s("nav",eU,[s("button",{type:"button",class:Oe(["nav-item",{active:t.activeTab==="documents"}]),onClick:e[1]||(e[1]=r=>t.activeTab="documents")},[e[31]||(e[31]=s("span",{class:"nav-icon"},"📂",-1)),ze(" "+d(t.t("workResults.documentsTab")),1)],2),s("button",{type:"button",class:Oe(["nav-item",{active:t.activeTab==="bookmarks"}]),onClick:e[2]||(e[2]=r=>{t.activeTab="bookmarks",t.loadBookmarks()})},[e[32]||(e[32]=s("span",{class:"nav-icon"},"🔖",-1)),ze(" "+d(t.t("workResults.bookmarks")),1)],2),s("button",{type:"button",class:Oe(["nav-item",{active:t.activeTab==="news"}]),onClick:e[3]||(e[3]=r=>t.activeTab="news")},[e[33]||(e[33]=s("span",{class:"nav-icon"},"📰",-1)),ze(" "+d(t.t("workResults.news")),1)],2),s("button",{type:"button",class:Oe(["nav-item",{active:t.activeTab==="tags"}]),onClick:e[4]||(e[4]=r=>t.activeTab="tags")},[e[34]||(e[34]=s("span",{class:"nav-icon"},"🏷️",-1)),ze(" "+d(t.t("settings.tagsTab")),1)],2)])]),s("main",tU,[Q(s("div",nU,[s("div",oU,[s("nav",aU,[s("button",{class:"breadcrumb-item",onClick:e[5]||(e[5]=r=>t.docPath="")},d(t.currentWorkspace),1),(g(!0),f(te,null,Le(t.docPathParts,(r,c)=>(g(),f("span",{key:c,class:"breadcrumb-chunk"},[e[35]||(e[35]=s("span",{class:"breadcrumb-sep"},"/",-1)),s("button",{class:"breadcrumb-item",onClick:u=>t.docPath=t.docPathParts.slice(0,c+1).join("/")},d(r),9,rU)]))),128))]),s("div",sU,[s("button",{type:"button",class:Oe(["toggle-btn",{active:t.docViewMode==="list"}]),onClick:e[6]||(e[6]=r=>t.docViewMode="list")},d(t.t("workResults.viewList")),3),s("button",{type:"button",class:Oe(["toggle-btn",{active:t.docViewMode==="cards"}]),onClick:e[7]||(e[7]=r=>t.docViewMode="cards")},d(t.t("workResults.viewCards")),3)])]),t.docLoading?(g(),f("div",iU,[e[36]||(e[36]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.filteredDocuments.length===0?(g(),f("div",lU,[e[37]||(e[37]=s("div",{class:"empty-icon"},"📂",-1)),s("p",null,d(t.t("workspace.emptyDocs")),1)])):(g(),f(te,{key:2},[t.docViewMode==="cards"?(g(),f("div",cU,[t.imageFiles.length>0?(g(),f("div",dU,[(g(!0),f(te,null,Le(t.imageFiles,r=>(g(),f("div",{key:r.path,class:"image-card",onClick:c=>t.openPreview(r)},[s("img",{src:t.fileServeUrl(r.path,!1),alt:r.name,class:"image-card-thumb",loading:"lazy"},null,8,uU),s("span",mU,d(r.name),1)],8,_U))),128))])):(g(),f("div",pU,[s("p",null,d(t.t("workResults.noImagesHere")),1)])),t.nonImageItems.length>0?(g(),f("div",gU,[s("p",fU,d(t.t("workResults.otherFiles")),1),s("div",EU,[(g(!0),f(te,null,Le(t.nonImageItems,r=>(g(),f("div",{key:r.path,class:Oe(["doc-item",{folder:r.isDirectory}])},[r.isDirectory?(g(),f(te,{key:0},[e[38]||(e[38]=s("span",{class:"doc-icon"},"📁",-1)),s("button",{class:"doc-name",onClick:c=>t.docPath=r.path},d(r.name),9,SU)],64)):(g(),f(te,{key:1},[e[39]||(e[39]=s("span",{class:"doc-icon"},"📄",-1)),s("span",bU,d(r.name),1),s("span",hU,[s("a",{href:t.fileServeUrl(r.path,!0),download:"",class:"doc-action-btn"},d(t.t("workspace.download")),9,TU)])],64))],2))),128))])])):V("",!0)])):(g(),f("div",vU,[(g(!0),f(te,null,Le(t.filteredDocuments,r=>(g(),f("div",{key:r.path,class:Oe(["doc-item",{folder:r.isDirectory}])},[r.isDirectory?(g(),f(te,{key:0},[e[40]||(e[40]=s("span",{class:"doc-icon"},"📁",-1)),s("button",{class:"doc-name",onClick:c=>t.docPath=r.path},d(r.name),9,CU),s("span",yU,[s("button",{type:"button",class:"doc-action-btn doc-action-btn-danger",onClick:c=>t.confirmDelete(r)},d(t.t("common.delete")),9,RU)])],64)):(g(),f(te,{key:1},[e[41]||(e[41]=s("span",{class:"doc-icon"},"📄",-1)),s("span",NU,d(r.name),1),s("span",OU,[t.isPreviewable(r.name)?(g(),f("button",{key:0,type:"button",class:"doc-action-btn",onClick:c=>t.openPreview(r)},d(t.t("workspace.preview")),9,AU)):V("",!0),s("a",{href:t.fileServeUrl(r.path,!0),download:"",class:"doc-action-btn"},d(t.t("workspace.download")),9,IU),s("button",{type:"button",class:"doc-action-btn doc-action-btn-danger",onClick:c=>t.confirmDelete(r)},d(t.t("common.delete")),9,DU)])],64))],2))),128))]))],64))],512),[[ht,t.activeTab==="documents"]]),Q(s("div",wU,[t.bookmarksLoading?(g(),f("div",kU,[e[42]||(e[42]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):(g(),f("div",MU,[t.downloadMessage?(g(),f("div",{key:0,class:Oe(["bookmark-download-message",t.downloadMessageError?"error":""])},d(t.downloadMessage),3)):V("",!0),s("div",xU,[s("span",LU,d(t.t("workResults.filterByTag"))+":",1),s("button",{type:"button",class:Oe(["tag-pill filter-all",{active:t.isAllTagSelected}]),onClick:e[8]||(e[8]=r=>t.setBookmarkTagFilter(""))},d(t.t("workResults.filterAll")),3),(g(!0),f(te,null,Le(t.visibleBookmarkTags,r=>(g(),f("button",{key:r.id,type:"button",class:Oe(["tag-pill",{active:t.isTagSelected(r)}]),onClick:c=>t.setBookmarkTagFilter(r.id)},d(r.name),11,PU))),128))]),s("div",UU,[t.bookmarks.length>0?(g(),f("ul",FU,[(g(!0),f(te,null,Le(t.bookmarks,r=>{var c;return g(),f("li",{key:r.id,class:"bookmark-item card-glass"},[s("div",BU,[s("div",GU,[t.isImageBookmarkUrl(r.url)?(g(),f("img",{key:0,src:t.bookmarkImageSrc(r.url),alt:r.title||r.url,class:"bookmark-thumb bookmark-thumb-clickable",loading:"lazy",onError:e[9]||(e[9]=u=>u.target.style.display="none"),onClick:Be(u=>t.openBookmarkPreview(r),["stop"])},null,40,YU)):(g(),f("div",{key:1,class:"bookmark-thumb bookmark-thumb-placeholder bookmark-thumb-clickable",title:r.url,onClick:Be(u=>t.openBookmarkPreview(r),["stop"])},[...e[43]||(e[43]=[s("span",{class:"bookmark-thumb-icon"},"🔗",-1)])],8,HU)),s("div",qU,[s("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",class:"bookmark-title"},d(r.title||r.url),9,VU),r.title&&r.url!==r.title?(g(),f("p",zU,d(r.url),1)):V("",!0),(c=r.tagNames)!=null&&c.length?(g(),f("div",WU,[(g(!0),f(te,null,Le(r.tagNames,u=>(g(),f("span",{key:u,class:"tag-pill"},d(u),1))),128))])):V("",!0)])])]),s("div",KU,[s("button",{type:"button",class:"bookmark-action-btn",disabled:t.downloadingId===r.id,onClick:u=>t.downloadBookmarkToWorkspace(r)},d(t.downloadingId===r.id?t.t("common.loading"):t.t("workResults.downloadToWorkspace")),9,QU),s("button",{type:"button",class:"bookmark-action-btn",onClick:u=>t.openBookmarkPreview(r)},d(t.isImageBookmarkUrl(r.url)?t.t("workResults.viewFullImage"):t.t("workResults.preview")),9,$U),s("button",{type:"button",class:"bookmark-action-btn",onClick:u=>t.openBookmarkInSystemBrowser(r.url)},d(t.t("workResults.openLink")),9,XU),s("button",{type:"button",class:"bookmark-action-btn bookmark-action-btn-danger",onClick:u=>t.confirmDeleteBookmark(r)},d(t.t("common.delete")),9,ZU)])])}),128))])):(g(),f("div",JU,[e[44]||(e[44]=s("div",{class:"empty-icon"},"🔖",-1)),s("p",null,d(t.bookmarkTagFilter?t.t("workResults.noBookmarksInTag"):t.t("workResults.noBookmarks")),1),s("p",jU,d(t.t("workResults.noBookmarksHint")),1)]))])])),Ae(je,{name:"fade"},{default:Ve(()=>[t.previewBookmarkItem?(g(),f("div",{key:0,class:"modal-backdrop preview-backdrop",onClick:e[15]||(e[15]=Be((...r)=>t.closeBookmarkPreview&&t.closeBookmarkPreview(...r),["self"]))},[s("div",{class:"modal-content preview-modal card-glass bookmark-preview-modal",onClick:e[14]||(e[14]=Be((...r)=>t.closeBookmarkPreview&&t.closeBookmarkPreview(...r),["self"]))},[s("div",e0,[s("h2",t0,d(t.previewBookmarkItem.title||t.previewBookmarkItem.url),1),s("div",n0,[s("button",{type:"button",class:"link-btn",disabled:t.downloadingId===t.previewBookmarkItem.id,onClick:e[10]||(e[10]=(...r)=>t.downloadBookmarkFromPreview&&t.downloadBookmarkFromPreview(...r))},d(t.downloadingId===t.previewBookmarkItem.id?t.t("common.loading"):t.t("workResults.downloadToWorkspace")),9,o0),t.isImageBookmarkUrl(t.previewBookmarkItem.url)?V("",!0):(g(),f("a",{key:0,href:t.previewBookmarkItem.url,target:"_blank",rel:"noopener noreferrer",class:"link-btn"},d(t.t("workResults.openInNewWindow")),9,a0)),s("button",{type:"button",class:"close-btn",onClick:e[11]||(e[11]=(...r)=>t.closeBookmarkPreview&&t.closeBookmarkPreview(...r))},"✕")])]),s("div",r0,[n.bookmarkPreviewType==="image"?(g(),f("img",{key:0,src:t.bookmarkPreviewImageSrc,alt:"",class:"preview-image"},null,8,s0)):n.bookmarkPreviewType==="html"?(g(),f(te,{key:1},[n.bookmarkPreviewHtmlContent!==null?(g(),f("iframe",{key:0,srcdoc:n.bookmarkPreviewHtmlContent,class:"preview-iframe bookmark-web-iframe",title:"Preview"},null,8,i0)):(g(),f("div",l0,[...e[45]||(e[45]=[s("div",{class:"spinner"},null,-1)])]))],64)):n.bookmarkPreviewType==="pdf"?(g(),f("iframe",{key:2,src:n.bookmarkPreviewProxyUrl,class:"preview-iframe bookmark-web-iframe",title:"PDF"},null,8,c0)):(g(),f("iframe",{key:3,src:t.previewBookmarkItem.url,class:"preview-iframe bookmark-web-iframe",title:"Preview"},null,8,d0)),s("div",_0,[s("button",{type:"button",class:"preview-nav-btn",disabled:!t.hasPrevBookmark,onClick:e[12]||(e[12]=Be((...r)=>t.goToPrevBookmark&&t.goToPrevBookmark(...r),["stop"]))},d(t.t("workResults.prevItem")),9,u0),s("button",{type:"button",class:"preview-nav-btn",disabled:!t.hasNextBookmark,onClick:e[13]||(e[13]=Be((...r)=>t.goToNextBookmark&&t.goToNextBookmark(...r),["stop"]))},d(t.t("workResults.nextItem")),9,m0)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r,c;return[t.deleteBookmarkTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[19]||(e[19]=Be(u=>t.deleteBookmarkTarget=null,["self"]))},[s("div",p0,[s("div",g0,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[16]||(e[16]=u=>t.deleteBookmarkTarget=null)},"✕")]),s("div",f0,[s("p",null,d(t.t("workResults.deleteBookmarkConfirm")),1),s("p",E0,d(((r=t.deleteBookmarkTarget)==null?void 0:r.title)||((c=t.deleteBookmarkTarget)==null?void 0:c.url)),1),s("div",S0,[s("button",{type:"button",class:"btn-secondary",onClick:e[17]||(e[17]=u=>t.deleteBookmarkTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[18]||(e[18]=(...u)=>t.doDeleteBookmark&&t.doDeleteBookmark(...u))},d(t.t("common.delete")),1)])])])])):V("",!0)]}),_:1})],512),[[ht,t.activeTab==="bookmarks"]]),Q(s("div",b0,[s("div",h0,[e[46]||(e[46]=s("div",{class:"empty-icon"},"📰",-1)),s("p",null,d(t.t("workResults.noNews")),1),s("p",T0,d(t.t("workResults.noNewsHint")),1)])],512),[[ht,t.activeTab==="news"]]),Q(s("div",v0,[Ae(i)],512),[[ht,t.activeTab==="tags"]])])]),Ae(je,{name:"fade"},{default:Ve(()=>{var r,c;return[t.showPreviewModal?(g(),f("div",{key:0,class:"modal-backdrop preview-backdrop",onClick:e[23]||(e[23]=Be((...u)=>t.closePreview&&t.closePreview(...u),["self"]))},[s("div",C0,[s("div",y0,[s("h2",R0,d((r=t.previewItem)==null?void 0:r.name),1),s("div",N0,[t.previewItem&&!t.previewItem.isDirectory?(g(),f("a",{key:0,href:t.fileServeUrl(t.previewItem.path,!0),download:"",class:"link-btn"},d(t.t("workspace.download")),9,O0)):V("",!0),s("button",{type:"button",class:"close-btn",onClick:e[20]||(e[20]=(...u)=>t.closePreview&&t.closePreview(...u))},"✕")])]),s("div",A0,[t.previewType==="image"?(g(),f("img",{key:0,src:t.previewUrl,alt:(c=t.previewItem)==null?void 0:c.name,class:"preview-image"},null,8,I0)):t.previewType==="pdf"?(g(),f("iframe",{key:1,src:t.previewUrl,class:"preview-iframe",title:"PDF"},null,8,D0)):t.previewType==="html"?(g(),f(te,{key:2},[t.previewHtmlContent?(g(),f("iframe",{key:0,srcdoc:t.previewHtmlContent,class:"preview-iframe",title:"HTML"},null,8,w0)):(g(),f("div",k0,[...e[47]||(e[47]=[s("div",{class:"spinner"},null,-1)])]))],64)):t.previewType==="text"?(g(),f(te,{key:3},[t.previewTextContent!==null?(g(),f("pre",M0,d(t.previewTextContent),1)):(g(),f("div",x0,[...e[48]||(e[48]=[s("div",{class:"spinner"},null,-1)])]))],64)):t.previewType==="code"?(g(),f(te,{key:4},[t.previewTextContent!==null?(g(),f("pre",L0,[s("code",null,d(t.previewTextContent),1)])):(g(),f("div",P0,[...e[49]||(e[49]=[s("div",{class:"spinner"},null,-1)])]))],64)):V("",!0),s("div",U0,[s("button",{type:"button",class:"preview-nav-btn",disabled:!t.hasPrevDoc,onClick:e[21]||(e[21]=Be((...u)=>t.goToPrevDoc&&t.goToPrevDoc(...u),["stop"]))},d(t.t("workResults.prevItem")),9,F0),s("button",{type:"button",class:"preview-nav-btn",disabled:!t.hasNextDoc,onClick:e[22]||(e[22]=Be((...u)=>t.goToNextDoc&&t.goToNextDoc(...u),["stop"]))},d(t.t("workResults.nextItem")),9,B0)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r,c;return[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[27]||(e[27]=Be(u=>t.deleteTarget=null,["self"]))},[s("div",G0,[s("div",Y0,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[24]||(e[24]=u=>t.deleteTarget=null)},"✕")]),s("div",H0,[s("p",null,d((r=t.deleteTarget)!=null&&r.isDirectory?t.t("workspace.deleteFolderConfirm"):t.t("workspace.deleteConfirm")),1),s("p",q0,d((c=t.deleteTarget)==null?void 0:c.name),1),s("div",V0,[s("button",{type:"button",class:"btn-secondary",onClick:e[25]||(e[25]=u=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[26]||(e[26]=(...u)=>t.doDelete&&t.doDelete(...u))},d(t.t("common.delete")),1)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showSwitchModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[29]||(e[29]=Be(r=>t.showSwitchModal=!1,["self"]))},[s("div",z0,[s("div",W0,[s("h2",null,d(t.t("workResults.selectWorkspace")),1),s("button",{class:"close-btn",onClick:e[28]||(e[28]=r=>t.showSwitchModal=!1)},"✕")]),s("div",K0,[t.workspaces.length===0?(g(),f("div",Q0,[s("p",null,d(t.t("workspace.emptyDocs")),1)])):V("",!0),s("ul",$0,[(g(!0),f(te,null,Le(t.workspaces,r=>(g(),f("li",{key:r,class:Oe(["workspace-option",{active:r===t.currentWorkspace}]),onClick:c=>t.switchWorkspace(r)},[e[50]||(e[50]=s("span",{class:"ws-icon"},"📁",-1)),s("span",Z0,d(r),1)],10,X0))),128))])])])])):V("",!0)]),_:1})])}const j0=st(W1,[["render",J0],["__scopeId","data-v-993e0a05"]]),Do="default",F_=[{id:"default",emoji:"✨",label:"默认"},{id:"robot",emoji:"🤖",label:"机器人"},{id:"star",emoji:"⭐",label:"星星"},{id:"code",emoji:"💻",label:"代码"},{id:"chat",emoji:"💬",label:"对话"},{id:"light",emoji:"💡",label:"灯泡"},{id:"book",emoji:"📚",label:"书籍"},{id:"gear",emoji:"⚙️",label:"齿轮"},{id:"rocket",emoji:"🚀",label:"火箭"},{id:"heart",emoji:"❤️",label:"爱心"},{id:"fire",emoji:"🔥",label:"火焰"},{id:"leaf",emoji:"🌿",label:"叶子"}],Id=new Map(F_.map(n=>[n.id,n.emoji]));function eF(n){return!n||!Id.has(n)?Id.get(Do)||"✨":Id.get(n)}const Dd={id:"default",name:"主智能体",workspace:"default",isDefault:!0},tF=[{id:"coze",labelKey:"agents.runnerTypeCoze",briefKey:"agents.proxyTypeBriefCoze",icon:"🤖"},{id:"openclawx",labelKey:"agents.runnerTypeOpenclawx",briefKey:"agents.proxyTypeBriefOpenclawx",icon:"🔗"},{id:"opencode",labelKey:"agents.runnerTypeOpencode",briefKey:"agents.proxyTypeBriefOpencode",icon:"⚡"},{id:"claude_code",labelKey:"agents.runnerTypeClaudeCode",briefKey:"agents.proxyTypeBriefClaudeCode",icon:"⌘"}];function bE(n,e){return(n||"")+"::"+(e||"")}const nF={name:"Agents",setup(){const{t:n}=Ot(),e=Zn(),o=D([]),t=D(!0),a=D("local"),l=D(!1),i=D(!1),r=D("type"),c=D(null),u=tF,_=D(!1),m=D(null),p=D(!1),E=D(!1),S=D(null),T=F_,h=D({name:"",workspace:"",defaultModelKey:"",systemPrompt:"",icon:Do}),A=D(""),b=D(!1),y=D({name:"",workspace:"",runnerType:"coze",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}}),w=D([]),k=D(""),B=D(!1),X=ae(()=>(Array.isArray(o.value)?o.value:[]).filter(Z=>{const Se=Z==null?void 0:Z.runnerType;return Se!=="coze"&&Se!=="openclawx"&&Se!=="opencode"&&Se!=="claude_code"})),x=ae(()=>(Array.isArray(o.value)?o.value:[]).filter(Z=>{const Se=Z==null?void 0:Z.runnerType;return Se==="coze"||Se==="openclawx"||Se==="opencode"||Se==="claude_code"}));function U(F){const Z=F==null?void 0:F.runnerType;return re(Z)}function re(F){return F==="coze"?n("agents.runnerTypeCoze"):F==="openclawx"?n("agents.runnerTypeOpenclawx"):F==="opencode"?n("agents.runnerTypeOpencode"):F==="claude_code"?n("agents.runnerTypeClaudeCode"):F||"—"}function se(){r.value="type",c.value=null,i.value=!0}function ne(F){c.value=F,r.value="config",y.value.runnerType=F,i.value=!0}function Te(F){y.value.runnerType=F,r.value="config"}function G(){i.value=!1,r.value="type",c.value=null}const H=ae(()=>{var Z;const F=((Z=S.value)==null?void 0:Z.configuredModels)??[];return Array.isArray(F)?F:[]});function R(F){return F?F.modelItemCode?F.modelItemCode:bE(F.provider,F.modelId):""}function P(F){if(!F)return"";const Z=F.provider||F.providerName||"",Se=F.modelId||F.model||"";return Z&&Se?`${Z} / ${Se}`:Se||Z||"—"}function oe(F){const Z=(Array.isArray(F)?F:[]).filter(N=>N&&N.id!=="default"),Se=(Array.isArray(F)?F:[]).find(N=>N&&N.id==="default");return[Se?{...Se,isDefault:!0}:{...Dd},...Z]}async function he(){var F;t.value=!0;try{const Se=((F=(await Xt.listAgents()).data)==null?void 0:F.data)??[];o.value=oe(Se.length>0?Se:[Dd])}catch(Z){console.error("List agents failed",Z),o.value=[Dd]}finally{t.value=!1}}async function Ee(){var Se,C,N,O,M,Y;const F=(h.value.name||"").trim(),Z=(h.value.workspace||"").trim();if(!Z){A.value=n("agents.workspaceNameRequired");return}if(Z.toLowerCase()==="default"){A.value=n("agents.workspaceReservedForDefault");return}if(!/^[a-zA-Z0-9_-]+$/.test(Z)){A.value=n("agents.workspaceNameFormat");return}A.value="",b.value=!0;try{const q={name:F||Z,workspace:Z,systemPrompt:(h.value.systemPrompt||"").trim()||void 0,icon:h.value.icon||void 0},$=(h.value.defaultModelKey||"").trim(),ce=((Se=S.value)==null?void 0:Se.configuredModels)??[];if($&&Array.isArray(ce)&&ce.length>0){const ke=ce.find(Ne=>Ne.modelItemCode===$),fe=ce.find(Ne=>bE(Ne.provider,Ne.modelId)===$),Ce=ke||fe;Ce&&(q.provider=Ce.provider,q.model=Ce.modelId,q.modelItemCode=Ce.modelItemCode)}!q.provider&&((C=S.value)!=null&&C.defaultProvider||(N=S.value)!=null&&N.defaultModel)&&(q.provider=S.value.defaultProvider,q.model=S.value.defaultModel,q.modelItemCode=S.value.defaultModelItemCode);const z=(O=(await Xt.createAgent(q)).data)==null?void 0:O.data;l.value=!1,h.value={name:"",workspace:"",defaultModelKey:"",systemPrompt:"",icon:Do},await he(),z&&e.push(`/agents/${z.id}`)}catch(q){const $=((Y=(M=q.response)==null?void 0:M.data)==null?void 0:Y.message)||q.message||"Create failed";A.value=typeof $=="string"?$:JSON.stringify($)}finally{b.value=!1}}async function ve(){var F;try{const Z=await Wn.getConfig();S.value=((F=Z.data)==null?void 0:F.data)??Z.data??null}catch{S.value=null}}nt(l,F=>{F&&ve()}),nt(i,F=>{if(F){k.value="";const Z={name:"",workspace:"",runnerType:"coze",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}};y.value={...Z},c.value?(r.value="config",y.value.runnerType=c.value):r.value="type"}});async function we(){var Se,C,N,O,M,Y,q,$,ce,de;const F=(y.value.name||"").trim(),Z=(y.value.workspace||"").trim();if(!Z){k.value=n("agents.workspaceNameRequired");return}if(Z.toLowerCase()==="default"){k.value=n("agents.workspaceReservedForDefault");return}if(!/^[a-zA-Z0-9_-]+$/.test(Z)){k.value=n("agents.workspaceNameFormat");return}k.value="",B.value=!0;try{const z={name:F||Z,workspace:Z},fe=(Se=(await Xt.createAgent(z)).data)==null?void 0:Se.data,Ce=fe==null?void 0:fe.id;if(!Ce){k.value=n("common.error")||"Create failed";return}const Ne=y.value.runnerType,ie={runnerType:Ne};if(Ne==="coze"){const ee=y.value.coze;ie.coze={region:(ee==null?void 0:ee.region)==="cn"?"cn":"com",cn:{botId:(((C=ee==null?void 0:ee.cn)==null?void 0:C.botId)??"").trim(),apiKey:(((N=ee==null?void 0:ee.cn)==null?void 0:N.apiKey)??"").trim()},com:{botId:(((O=ee==null?void 0:ee.com)==null?void 0:O.botId)??"").trim(),apiKey:(((M=ee==null?void 0:ee.com)==null?void 0:M.apiKey)??"").trim()},endpoint:void 0}}else if(Ne==="openclawx")ie.openclawx={baseUrl:(((Y=y.value.openclawx)==null?void 0:Y.baseUrl)||"").trim()||void 0,apiKey:(((q=y.value.openclawx)==null?void 0:q.apiKey)||"").trim()||void 0};else if(Ne==="opencode"){const ee=y.value.opencode,be=typeof(ee==null?void 0:ee.port)=="number"?ee.port:parseInt(String((ee==null?void 0:ee.port)||""),10),Ue=(ee==null?void 0:ee.mode)==="local"?"local":"remote";ie.opencode={mode:Ue,address:Ue==="remote"?((ee==null?void 0:ee.address)||"").trim():void 0,port:Number.isFinite(be)&&be>0?be:4096,password:((ee==null?void 0:ee.password)||"").trim()||void 0,model:((ee==null?void 0:ee.model)||"").trim()||void 0,workingDirectory:((ee==null?void 0:ee.workingDirectory)||"").trim()||void 0}}else if(Ne==="claude_code"){const ee=((($=y.value.claudeCode)==null?void 0:$.workingDirectory)??"").trim();ie.claudeCode=ee?{workingDirectory:ee}:void 0}await Xt.updateAgent(Ce,ie),G(),await he(),e.push(`/agents/${Ce}?tab=proxy`)}catch(z){const ke=((de=(ce=z.response)==null?void 0:ce.data)==null?void 0:de.message)||z.message||"Create failed";k.value=typeof ke=="string"?ke:JSON.stringify(ke)}finally{B.value=!1}}async function Re(){var F;if(!(w.value.length>0))try{const Z=await Wn.getOpencodeFreeModels();(F=Z==null?void 0:Z.data)!=null&&F.success&&Array.isArray(Z.data.data)&&(w.value=Z.data.data)}catch{}}const Ie=ae(()=>{var F;return typeof window<"u"&&!!((F=window.electronAPI)!=null&&F.showOpenDirectoryDialog)});async function xe(){var Z;if(!((Z=window.electronAPI)!=null&&Z.showOpenDirectoryDialog))return;const F=await window.electronAPI.showOpenDirectoryDialog({title:"选择 OpenCode 工作目录"});F&&(y.value.opencode.workingDirectory=F)}async function Ge(){var Z;if(!((Z=window.electronAPI)!=null&&Z.showOpenDirectoryDialog))return;const F=await window.electronAPI.showOpenDirectoryDialog({title:n("agents.claudeCodeSelectFolderTitle")});F&&(y.value.claudeCode.workingDirectory=F)}nt(()=>y.value.runnerType==="opencode",F=>{F&&Re()},{immediate:!0});function W(F){F!=null&&F.isDefault||(m.value=F,E.value=!1,_.value=!0)}async function me(){const F=m.value;if(!(F!=null&&F.id)||F.isDefault){_.value=!1,m.value=null;return}p.value=!0;try{const Z=E.value?{deleteWorkspaceDir:"true"}:{};await Xt.deleteAgent(F.id,Z),_.value=!1,m.value=null,await he()}catch(Z){console.error("Delete agent failed",Z)}finally{p.value=!1}}return Yt(he),{t:n,opencodeFreeModels:w,hasElectronFolderPicker:Ie,pickOpencodeWorkingDirectory:xe,pickClaudeCodeWorkingDirectory:Ge,showDeleteConfirm:_,deleteTargetAgent:m,deleteAgentSaving:p,deleteWorkspaceDir:E,openDeleteConfirm:W,doDeleteAgent:me,agents:o,loading:t,agentTab:a,localAgents:X,proxyAgents:x,proxyTypeLabel:U,showCreateModal:l,showCreateProxyModal:i,proxyCreateStep:r,proxyCreateSelectedType:c,proxyTypeOptions:u,openCreateProxyModal:se,openCreateProxyWithType:ne,selectProxyTypeAndGoConfig:Te,closeCreateProxyModal:G,proxyTypeLabelByKey:re,proxyCreateForm:y,proxyCreateError:k,proxyCreateSaving:B,doCreateProxy:we,createForm:h,createError:A,createSaving:b,createModelOptions:H,agentIconOptions:T,getAgentIconEmoji:eF,optionValueFor:R,getModelOptionLabel:P,doCreate:Ee}}},oF={class:"agents-view"},aF={class:"agents-header card-glass"},rF={class:"header-left"},sF={class:"view-title"},iF={class:"text-secondary"},lF={class:"agents-layout"},cF={class:"agents-sidebar card-glass"},dF={class:"tab-label"},_F={class:"tab-label"},uF={class:"agents-main"},mF={class:"tab-hint text-secondary"},pF={class:"agents-content"},gF={key:0,class:"loading-state"},fF={key:0,class:"empty-state"},EF={class:"text-secondary"},SF={key:1,class:"agents-grid"},bF={class:"card-icon-wrap"},hF=["aria-label"],TF={class:"card-name"},vF={key:0,class:"card-badge card-badge-default"},CF={class:"card-workspace"},yF={class:"ws-label"},RF={class:"card-llm text-secondary"},NF=["title","onClick"],OF={class:"proxy-types-section card-glass"},AF={class:"proxy-types-cards"},IF=["onClick"],DF={class:"proxy-type-card-icon"},wF={class:"proxy-type-card-name"},kF={class:"proxy-type-card-brief"},MF={key:0,class:"empty-state proxy-empty"},xF={class:"text-secondary"},LF={key:1,class:"agents-grid"},PF={class:"card-name"},UF={class:"card-badge proxy-badge"},FF={class:"card-workspace"},BF={class:"ws-label"},GF={class:"card-llm text-secondary"},YF=["title","onClick"],HF={class:"modal-content card-glass"},qF={class:"modal-header"},VF={class:"modal-body"},zF={class:"form-group"},WF={class:"icon-picker"},KF=["title","onClick"],QF={class:"form-group"},$F=["placeholder"],XF={class:"form-group"},ZF=["placeholder"],JF={class:"form-hint"},jF={class:"form-group"},eB={value:""},tB=["value"],nB={class:"form-hint"},oB={class:"form-group"},aB=["placeholder"],rB={class:"form-hint"},sB={key:0,class:"form-error"},iB={class:"modal-footer-actions"},lB=["disabled"],cB={class:"modal-content card-glass modal-content-wide"},dB={class:"modal-header"},_B={class:"modal-body"},uB={class:"modal-step-hint"},mB={class:"proxy-type-select-grid"},pB=["onClick"],gB={class:"proxy-type-select-icon"},fB={class:"proxy-type-select-name"},EB={class:"proxy-type-select-brief"},SB={class:"modal-step-bar"},bB={class:"modal-step-label"},hB={class:"modal-step-value"},TB={class:"form-group"},vB=["placeholder"],CB={class:"form-group"},yB=["placeholder"],RB={class:"form-hint"},NB={key:0,class:"form-group"},OB={class:"form-input-with-btn"},AB=["placeholder"],IB={class:"form-group"},DB={value:"com"},wB={value:"cn"},kB={class:"form-hint"},MB={class:"form-hint"},xB={class:"form-group"},LB=["placeholder"],PB={class:"form-hint"},UB={class:"form-group"},FB=["placeholder"],BB={class:"form-hint"},GB={class:"form-group"},YB=["placeholder"],HB={class:"form-hint"},qB={class:"form-group"},VB=["placeholder"],zB={class:"form-hint"},WB={class:"form-group"},KB=["placeholder"],QB={class:"form-group"},$B=["placeholder"],XB={class:"form-hint"},ZB={class:"form-group"},JB={class:"form-radio-group"},jB={class:"form-radio"},eG={class:"form-radio"},tG={class:"form-hint"},nG={class:"form-group"},oG=["placeholder"],aG={class:"form-group"},rG={value:""},sG=["value"],iG={class:"form-group"},lG={class:"form-input-with-btn"},cG=["placeholder"],dG={class:"form-hint"},_G={class:"form-group"},uG=["placeholder"],mG={class:"form-group"},pG=["placeholder"],gG={class:"form-group"},fG=["placeholder"],EG={class:"form-group"},SG={value:""},bG=["value"],hG={key:4,class:"form-error"},TG={key:5,class:"modal-footer-actions"},vG=["disabled"],CG={class:"modal-content card-glass modal-confirm"},yG={class:"modal-confirm-text"},RG={key:0,class:"modal-confirm-name"},NG={class:"modal-confirm-checkbox"},OG={class:"modal-footer-actions"},AG=["disabled"];function IG(n,e,o,t,a,l){const i=gt("router-link");return g(),f("div",oF,[s("div",aF,[s("div",rF,[s("h1",sF,d(t.t("agents.title")),1),s("p",iF,d(t.t("agents.subtitle")),1)]),t.agentTab==="local"?(g(),f("button",{key:0,type:"button",class:"btn-add-agent",onClick:e[0]||(e[0]=r=>t.showCreateModal=!0)},[e[44]||(e[44]=s("span",{class:"btn-icon"},"+",-1)),ze(" "+d(t.t("agents.addAgent")),1)])):(g(),f("button",{key:1,type:"button",class:"btn-add-agent",onClick:e[1]||(e[1]=(...r)=>t.openCreateProxyModal&&t.openCreateProxyModal(...r))},[e[45]||(e[45]=s("span",{class:"btn-icon"},"+",-1)),ze(" "+d(t.t("agents.addProxyAgent")),1)]))]),s("div",lF,[s("nav",cF,[s("button",{type:"button",class:Oe(["agents-tab-btn",{active:t.agentTab==="local"}]),onClick:e[2]||(e[2]=r=>t.agentTab="local")},[e[46]||(e[46]=s("span",{class:"tab-icon"},"✨",-1)),s("span",dF,d(t.t("agents.localAgents")),1)],2),s("button",{type:"button",class:Oe(["agents-tab-btn",{active:t.agentTab==="proxy"}]),onClick:e[3]||(e[3]=r=>t.agentTab="proxy")},[e[47]||(e[47]=s("span",{class:"tab-icon"},"🔗",-1)),s("span",_F,d(t.t("agents.proxyAgents")),1)],2)]),s("div",uF,[s("p",mF,d(t.agentTab==="local"?t.t("agents.localAgentsHint"):t.t("agents.proxyAgentsHint")),1),s("div",pF,[t.loading?(g(),f("div",gF,[e[48]||(e[48]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.agentTab==="local"?(g(),f(te,{key:1},[t.localAgents.length===0?(g(),f("div",fF,[e[49]||(e[49]=s("div",{class:"empty-icon"},"✨",-1)),s("p",null,d(t.t("agents.noAgents")),1),s("p",EF,d(t.t("agents.noAgentsHint")),1),s("button",{class:"btn-primary mt-4",onClick:e[4]||(e[4]=r=>t.showCreateModal=!0)},d(t.t("agents.addAgent")),1)])):(g(),f("div",SF,[(g(!0),f(te,null,Le(t.localAgents,r=>(g(),f("div",{key:r.id,class:"agent-card-wrap"},[Ae(i,{to:`/agents/${r.id}`,class:"agent-card card-glass"},{default:Ve(()=>[s("div",bF,[s("span",{class:"card-icon","aria-label":t.getAgentIconEmoji(r.icon)},d(t.getAgentIconEmoji(r.icon)),9,hF)]),s("h3",TF,[ze(d(r.name)+" ",1),r.isDefault?(g(),f("span",vF,d(t.t("agents.defaultBadge")),1)):V("",!0)]),s("p",CF,[s("span",yF,d(t.t("agents.workspace"))+":",1),s("code",null,d(r.workspace),1)]),s("p",RF,d(r.provider&&r.model?`${r.provider} / ${r.model}`:t.t("agents.runnerTypeLocalShort")),1),e[50]||(e[50]=s("span",{class:"card-arrow","aria-hidden":"true"},"→",-1))]),_:2},1032,["to"]),r.isDefault?V("",!0):(g(),f("button",{key:0,type:"button",class:"agent-card-delete",title:t.t("agents.deleteAgent"),onClick:Be(c=>t.openDeleteConfirm(r),["stop"])}," ✕ ",8,NF))]))),128))]))],64)):(g(),f(te,{key:2},[s("div",OF,[s("div",AF,[(g(!0),f(te,null,Le(t.proxyTypeOptions,r=>(g(),f("button",{key:r.id,type:"button",class:"proxy-type-card",onClick:c=>t.openCreateProxyWithType(r.id)},[s("span",DF,d(r.icon),1),s("span",wF,d(t.t(r.labelKey)),1),s("span",kF,d(t.t(r.briefKey)),1)],8,IF))),128))]),s("button",{type:"button",class:"btn-add-proxy",onClick:e[5]||(e[5]=(...r)=>t.openCreateProxyModal&&t.openCreateProxyModal(...r))},[e[51]||(e[51]=s("span",{class:"btn-icon"},"+",-1)),ze(" "+d(t.t("agents.addProxyAgent")),1)])]),t.proxyAgents.length===0?(g(),f("div",MF,[e[52]||(e[52]=s("div",{class:"empty-icon"},"🔗",-1)),s("p",null,d(t.t("agents.noProxyAgents")),1),s("p",xF,d(t.t("agents.noProxyAgentsHint")),1)])):(g(),f("div",LF,[(g(!0),f(te,null,Le(t.proxyAgents,r=>(g(),f("div",{key:r.id,class:"agent-card-wrap"},[Ae(i,{to:`/agents/${r.id}?tab=proxy`,class:"agent-card card-glass agent-card-proxy"},{default:Ve(()=>[e[53]||(e[53]=s("div",{class:"card-icon-wrap card-icon-wrap-proxy"},[s("span",{class:"card-icon"},"🔗")],-1)),s("h3",PF,[ze(d(r.name)+" ",1),s("span",UF,d(t.proxyTypeLabel(r)),1)]),s("p",FF,[s("span",BF,d(t.t("agents.workspace"))+":",1),s("code",null,d(r.workspace),1)]),s("p",GF,d(t.proxyTypeLabel(r)),1),e[54]||(e[54]=s("span",{class:"card-arrow","aria-hidden":"true"},"→",-1))]),_:2},1032,["to"]),r.isDefault?V("",!0):(g(),f("button",{key:0,type:"button",class:"agent-card-delete",title:t.t("agents.deleteAgent"),onClick:Be(c=>t.openDeleteConfirm(r),["stop"])}," ✕ ",8,YF))]))),128))]))],64))])])]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showCreateModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[13]||(e[13]=Be(r=>t.showCreateModal=!1,["self"]))},[s("div",HF,[s("div",qF,[s("h2",null,d(t.t("agents.createAgent")),1),s("button",{type:"button",class:"close-btn",onClick:e[6]||(e[6]=r=>t.showCreateModal=!1)},"✕")]),s("div",VF,[s("div",zF,[s("label",null,d(t.t("agents.agentIcon")),1),s("div",WF,[(g(!0),f(te,null,Le(t.agentIconOptions,r=>(g(),f("button",{key:r.id,type:"button",class:Oe(["icon-picker-btn",{active:t.createForm.icon===r.id}]),title:r.label,onClick:c=>t.createForm.icon=r.id},d(r.emoji),11,KF))),128))])]),s("div",QF,[s("label",null,d(t.t("agents.displayName")),1),Q(s("input",{"onUpdate:modelValue":e[7]||(e[7]=r=>t.createForm.name=r),type:"text",class:"form-input",placeholder:t.t("agents.displayNamePlaceholder")},null,8,$F),[[ye,t.createForm.name]])]),s("div",XF,[s("label",null,d(t.t("agents.workspaceName")),1),Q(s("input",{"onUpdate:modelValue":e[8]||(e[8]=r=>t.createForm.workspace=r),type:"text",class:"form-input",placeholder:t.t("agents.workspaceNamePlaceholder")},null,8,ZF),[[ye,t.createForm.workspace]]),s("p",JF,d(t.t("agents.workspaceNameHint")),1)]),s("div",jF,[s("label",null,d(t.t("agents.defaultModel")),1),Q(s("select",{"onUpdate:modelValue":e[9]||(e[9]=r=>t.createForm.defaultModelKey=r),class:"form-input"},[s("option",eB,"— "+d(t.t("agents.defaultModelCreateHint"))+" —",1),(g(!0),f(te,null,Le(t.createModelOptions,r=>(g(),f("option",{key:t.optionValueFor(r),value:t.optionValueFor(r)},d(t.getModelOptionLabel(r)),9,tB))),128))],512),[[dt,t.createForm.defaultModelKey]]),s("p",nB,d(t.t("agents.modelConfigHint")),1)]),s("div",oB,[s("label",null,d(t.t("agents.agentDescription")),1),Q(s("textarea",{"onUpdate:modelValue":e[10]||(e[10]=r=>t.createForm.systemPrompt=r),class:"form-input form-textarea",placeholder:t.t("agents.agentDescriptionPlaceholder"),rows:"4"},null,8,aB),[[ye,t.createForm.systemPrompt]]),s("p",rB,d(t.t("agents.agentDescriptionHint")),1)]),t.createError?(g(),f("p",sB,d(t.createError),1)):V("",!0),s("div",iB,[s("button",{type:"button",class:"btn-secondary",onClick:e[11]||(e[11]=r=>t.showCreateModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.createSaving,onClick:e[12]||(e[12]=(...r)=>t.doCreate&&t.doCreate(...r))},d(t.createSaving?t.t("common.loading"):t.t("agents.create")),9,lB)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showCreateProxyModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[39]||(e[39]=Be((...r)=>t.closeCreateProxyModal&&t.closeCreateProxyModal(...r),["self"]))},[s("div",cB,[s("div",dB,[s("h2",null,d(t.proxyCreateStep==="type"?t.t("agents.chooseProxyType"):t.t("agents.createProxyAgent")),1),s("button",{type:"button",class:"close-btn",onClick:e[14]||(e[14]=(...r)=>t.closeCreateProxyModal&&t.closeCreateProxyModal(...r))},"✕")]),s("div",_B,[t.proxyCreateStep==="type"?(g(),f(te,{key:0},[s("p",uB,d(t.t("agents.chooseProxyTypeHint")),1),s("div",mB,[(g(!0),f(te,null,Le(t.proxyTypeOptions,r=>(g(),f("button",{key:r.id,type:"button",class:"proxy-type-select-card",onClick:c=>t.selectProxyTypeAndGoConfig(r.id)},[s("span",gB,d(r.icon),1),s("span",fB,d(t.t(r.labelKey)),1),s("span",EB,d(t.t(r.briefKey)),1)],8,pB))),128))])],64)):(g(),f(te,{key:1},[s("div",SB,[s("span",bB,d(t.t("agents.runnerType"))+":",1),s("span",hB,d(t.proxyTypeLabelByKey(t.proxyCreateForm.runnerType)),1),s("button",{type:"button",class:"link-btn modal-step-back",onClick:e[15]||(e[15]=r=>t.proxyCreateStep="type")},d(t.t("agents.changeProxyType")),1)]),s("div",TB,[s("label",null,d(t.t("agents.displayName")),1),Q(s("input",{"onUpdate:modelValue":e[16]||(e[16]=r=>t.proxyCreateForm.name=r),type:"text",class:"form-input",placeholder:t.t("agents.displayNamePlaceholder")},null,8,vB),[[ye,t.proxyCreateForm.name]])]),s("div",CB,[s("label",null,d(t.t("agents.workspaceName")),1),Q(s("input",{"onUpdate:modelValue":e[17]||(e[17]=r=>t.proxyCreateForm.workspace=r),type:"text",class:"form-input",placeholder:t.t("agents.workspaceNamePlaceholder")},null,8,yB),[[ye,t.proxyCreateForm.workspace]]),s("p",RB,d(t.t("agents.workspaceNameHint")),1)]),t.proxyCreateForm.runnerType==="claude_code"?(g(),f("div",NB,[s("label",null,d(t.t("agents.claudeCodeWorkingDirectory")),1),s("div",OB,[Q(s("input",{"onUpdate:modelValue":e[18]||(e[18]=r=>t.proxyCreateForm.claudeCode.workingDirectory=r),type:"text",class:"form-input",placeholder:t.t("agents.claudeCodeWorkingDirectoryPlaceholder")},null,8,AB),[[ye,t.proxyCreateForm.claudeCode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[19]||(e[19]=(...r)=>t.pickClaudeCodeWorkingDirectory&&t.pickClaudeCodeWorkingDirectory(...r))},d(t.t("agents.claudeCodeSelectFolder")),1)):V("",!0)])])):V("",!0),t.proxyCreateForm.runnerType==="coze"?(g(),f(te,{key:1},[s("div",IB,[s("label",null,d(t.t("agents.cozeRegion")),1),Q(s("select",{"onUpdate:modelValue":e[20]||(e[20]=r=>t.proxyCreateForm.coze.region=r),class:"form-input"},[s("option",DB,d(t.t("agents.cozeRegionCom")),1),s("option",wB,d(t.t("agents.cozeRegionCn")),1)],512),[[dt,t.proxyCreateForm.coze.region]]),s("p",kB,d(t.t("agents.cozeRegionHint")),1),s("p",MB,d(t.t("agents.cozeTokenTypesHint")),1)]),t.proxyCreateForm.coze.region==="cn"?(g(),f(te,{key:0},[s("div",xB,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[21]||(e[21]=r=>t.proxyCreateForm.coze.cn.botId=r),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,LB),[[ye,t.proxyCreateForm.coze.cn.botId]]),s("p",PB,d(t.t("agents.cozeBotIdHint")),1)]),s("div",UB,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[22]||(e[22]=r=>t.proxyCreateForm.coze.cn.apiKey=r),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,FB),[[ye,t.proxyCreateForm.coze.cn.apiKey]]),s("p",BB,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0),t.proxyCreateForm.coze.region==="com"?(g(),f(te,{key:1},[s("div",GB,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[23]||(e[23]=r=>t.proxyCreateForm.coze.com.botId=r),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,YB),[[ye,t.proxyCreateForm.coze.com.botId]]),s("p",HB,d(t.t("agents.cozeBotIdHint")),1)]),s("div",qB,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[24]||(e[24]=r=>t.proxyCreateForm.coze.com.apiKey=r),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,VB),[[ye,t.proxyCreateForm.coze.com.apiKey]]),s("p",zB,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0)],64)):V("",!0),t.proxyCreateForm.runnerType==="openclawx"?(g(),f(te,{key:2},[s("div",WB,[s("label",null,d(t.t("agents.openclawxBaseUrl")),1),Q(s("input",{"onUpdate:modelValue":e[25]||(e[25]=r=>t.proxyCreateForm.openclawx.baseUrl=r),type:"text",class:"form-input",placeholder:t.t("agents.openclawxBaseUrlPlaceholder")},null,8,KB),[[ye,t.proxyCreateForm.openclawx.baseUrl]])]),s("div",QB,[s("label",null,d(t.t("agents.openclawxApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[26]||(e[26]=r=>t.proxyCreateForm.openclawx.apiKey=r),type:"password",class:"form-input",placeholder:t.t("agents.openclawxApiKeyPlaceholder"),autocomplete:"off"},null,8,$B),[[ye,t.proxyCreateForm.openclawx.apiKey]])])],64)):V("",!0),t.proxyCreateForm.runnerType==="opencode"?(g(),f(te,{key:3},[s("p",XB,d(t.t("agents.opencodeHint")),1),s("div",ZB,[s("label",null,d(t.t("agents.opencodeMode")),1),s("div",JB,[s("label",jB,[Q(s("input",{"onUpdate:modelValue":e[27]||(e[27]=r=>t.proxyCreateForm.opencode.mode=r),type:"radio",value:"local"},null,512),[[_o,t.proxyCreateForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeLocal")),1)]),s("label",eG,[Q(s("input",{"onUpdate:modelValue":e[28]||(e[28]=r=>t.proxyCreateForm.opencode.mode=r),type:"radio",value:"remote"},null,512),[[_o,t.proxyCreateForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeRemote")),1)])])]),t.proxyCreateForm.opencode.mode==="local"?(g(),f(te,{key:0},[s("p",tG,d(t.t("agents.opencodeLocalHint")),1),s("div",nG,[s("label",null,d(t.t("agents.opencodePortLocalLabel")),1),Q(s("input",{"onUpdate:modelValue":e[29]||(e[29]=r=>t.proxyCreateForm.opencode.port=r),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,oG),[[ye,t.proxyCreateForm.opencode.port,void 0,{number:!0}]])]),s("div",aG,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[30]||(e[30]=r=>t.proxyCreateForm.opencode.model=r),class:"form-input"},[s("option",rG,d(t.t("agents.opencodeUseLocalDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,r=>(g(),f("option",{key:r.id,value:r.id},d(r.label)+d(r.free?" (Free)":""),9,sG))),128))],512),[[dt,t.proxyCreateForm.opencode.model]])]),s("div",iG,[s("label",null,d(t.t("agents.opencodeWorkingDirectory")),1),s("div",lG,[Q(s("input",{"onUpdate:modelValue":e[31]||(e[31]=r=>t.proxyCreateForm.opencode.workingDirectory=r),type:"text",class:"form-input",placeholder:t.t("agents.opencodeWorkingDirectoryPlaceholder")},null,8,cG),[[ye,t.proxyCreateForm.opencode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[32]||(e[32]=(...r)=>t.pickOpencodeWorkingDirectory&&t.pickOpencodeWorkingDirectory(...r))},d(t.t("agents.opencodeSelectFolder")),1)):V("",!0)])])],64)):(g(),f(te,{key:1},[s("p",dG,d(t.t("agents.opencodeRemoteHint")),1),s("div",_G,[s("label",null,d(t.t("agents.opencodeAddress")),1),Q(s("input",{"onUpdate:modelValue":e[33]||(e[33]=r=>t.proxyCreateForm.opencode.address=r),type:"text",class:"form-input",placeholder:t.t("agents.opencodeAddressPlaceholder")},null,8,uG),[[ye,t.proxyCreateForm.opencode.address]])]),s("div",mG,[s("label",null,d(t.t("agents.opencodePort")),1),Q(s("input",{"onUpdate:modelValue":e[34]||(e[34]=r=>t.proxyCreateForm.opencode.port=r),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,pG),[[ye,t.proxyCreateForm.opencode.port,void 0,{number:!0}]])]),s("div",gG,[s("label",null,d(t.t("agents.opencodePassword")),1),Q(s("input",{"onUpdate:modelValue":e[35]||(e[35]=r=>t.proxyCreateForm.opencode.password=r),type:"password",class:"form-input",placeholder:t.t("agents.opencodePasswordPlaceholder"),autocomplete:"off"},null,8,fG),[[ye,t.proxyCreateForm.opencode.password]])]),s("div",EG,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[36]||(e[36]=r=>t.proxyCreateForm.opencode.model=r),class:"form-input"},[s("option",SG,d(t.t("agents.opencodeUseServerDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,r=>(g(),f("option",{key:r.id,value:r.id},d(r.label)+d(r.free?" (Free)":""),9,bG))),128))],512),[[dt,t.proxyCreateForm.opencode.model]])])],64))],64)):V("",!0),t.proxyCreateError?(g(),f("p",hG,d(t.proxyCreateError),1)):V("",!0),t.proxyCreateStep==="config"?(g(),f("div",TG,[s("button",{type:"button",class:"btn-secondary",onClick:e[37]||(e[37]=(...r)=>t.closeCreateProxyModal&&t.closeCreateProxyModal(...r))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.proxyCreateSaving,onClick:e[38]||(e[38]=(...r)=>t.doCreateProxy&&t.doCreateProxy(...r))},d(t.proxyCreateSaving?t.t("common.loading"):t.t("agents.create")),9,vG)])):V("",!0)],64))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showDeleteConfirm?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[43]||(e[43]=Be(r=>t.showDeleteConfirm=!1,["self"]))},[s("div",CG,[s("p",yG,d(t.t("agents.deleteAgentConfirm")),1),t.deleteTargetAgent?(g(),f("p",RG,d(t.deleteTargetAgent.name),1)):V("",!0),s("label",NG,[Q(s("input",{type:"checkbox","onUpdate:modelValue":e[40]||(e[40]=r=>t.deleteWorkspaceDir=r)},null,512),[[zn,t.deleteWorkspaceDir]]),s("span",null,d(t.t("agents.deleteAgentAlsoDeleteDir")),1)]),s("div",OG,[s("button",{type:"button",class:"btn-secondary",onClick:e[41]||(e[41]=r=>t.showDeleteConfirm=!1)},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary danger",disabled:t.deleteAgentSaving,onClick:e[42]||(e[42]=(...r)=>t.doDeleteAgent&&t.doDeleteAgent(...r))},d(t.deleteAgentSaving?t.t("common.loading"):t.t("agents.deleteAgent")),9,AG)])])])):V("",!0)]),_:1})])}const DG=st(nF,[["render",IG],["__scopeId","data-v-5b8eb917"]]),wG={name:"SmartInstallDialog",components:{ChatMessage:U_},props:{targetAgentId:{type:String,required:!0},sessionId:{type:String,default:"skill-install"},dialogTitle:{type:String,default:""}},emits:["close","installed"],setup(n,{emit:e}){const{t:o}=Ot(),t=Jn(),a=D(!1),l=D(!1),i=D(""),r=D(null),c=D(""),u=ae(()=>t.messages),_=ae(()=>t.currentMessage),m=ae(()=>t.isStreaming),p=ae(()=>t.toolExecutions),E=ae(()=>{const w=t.currentStreamParts;if(w&&w.length>0)return w;const k=t.currentMessage,B=t.toolExecutions;if(!k&&(!B||B.length===0))return[];const X=[];return k&&X.push({type:"text",content:k}),B!=null&&B.length&&B.forEach(x=>X.push({type:"tool",toolId:x.id})),X}),S=ae(()=>n.dialogTitle||o("agents.installSmart"));function T(){t.clearCurrentSession(),e("close"),a.value=!1,c.value="",i.value=""}async function h(){var w,k;if(((w=t.currentSession)==null?void 0:w.id)!==n.sessionId){l.value=!0;try{await t.selectSession(n.sessionId)}catch(B){if(((k=B.response)==null?void 0:k.status)===404||B.message&&B.message.includes("not found")){const X=n.targetAgentId==="global"?"default":n.targetAgentId;await t.createSession({id:n.sessionId,agentId:X,type:"system",title:"Skill 搜索安装"}),await t.selectSession(n.sessionId)}else throw B}finally{l.value=!1}}}async function A(){try{await t.deleteSession(n.sessionId)}catch{}const w=n.targetAgentId==="global"?"default":n.targetAgentId;await t.createSession({id:n.sessionId,agentId:w,type:"system",title:"Skill 搜索安装"}),await t.selectSession(n.sessionId),c.value="",i.value=""}function b(){t.cancelCurrentTurn()}async function y(){var k,B;const w=(i.value||"").trim();if(!(!w||m.value)){i.value="",c.value="";try{await h(),await t.sendMessage(w,{targetAgentId:n.targetAgentId}),await Sn(),r.value&&(r.value.scrollTop=r.value.scrollHeight)}catch(X){console.error("Smart install send failed",X),c.value=((B=(k=X.response)==null?void 0:k.data)==null?void 0:B.message)||X.message||"Failed"}}}return nt([u,_],async()=>{r.value&&(await Sn(),r.value.scrollTop=r.value.scrollHeight)}),Yt(()=>{document.body.style.overflow="hidden"}),ja(()=>{document.body.style.overflow=""}),{t:o,dialogTitle:S,expanded:a,opening:l,input:i,messagesRef:r,error:c,messages:u,currentMessage:_,streaming:m,toolExecutions:p,streamParts:E,close:T,clearSession:A,cancelTurn:b,send:y}}},kG={class:"smart-install-header"},MG={id:"smart-install-title",class:"smart-install-title"},xG={class:"smart-install-header-actions"},LG=["title"],PG={class:"btn-icon-text"},UG=["title"],FG={class:"btn-icon-text"},BG=["title"],GG={key:0,class:"smart-install-body loading-inline"},YG={key:1,class:"smart-install-body"},HG={class:"smart-install-messages",ref:"messagesRef"},qG={key:0,class:"empty-chat-inline"},VG={class:"text-secondary"},zG={key:1,class:"streaming-message"},WG={class:"smart-install-input-row"},KG={class:"smart-install-input-wrap"},QG=["placeholder","disabled"],$G=["disabled","title"],XG=["title"],ZG={key:2,class:"form-error smart-install-error"};function JG(n,e,o,t,a,l){const i=gt("ChatMessage");return g(),Gt(je,{name:"fade"},{default:Ve(()=>[s("div",{class:Oe(["smart-install-dialog-backdrop",{"smart-install-expanded":t.expanded}]),role:"dialog","aria-modal":"true","aria-labelledby":"smart-install-title"},[s("div",{class:Oe(["smart-install-dialog card-glass",{expanded:t.expanded}]),onClick:e[8]||(e[8]=Be(()=>{},["stop"]))},[s("div",kG,[s("h2",MG,d(t.dialogTitle),1),s("div",xG,[t.messages.length>0&&!t.streaming?(g(),f("button",{key:0,type:"button",class:"btn-icon-header",title:t.t("chat.clearConversation"),onClick:e[0]||(e[0]=(...r)=>t.clearSession&&t.clearSession(...r))},[s("span",PG,d(t.t("chat.clearConversation")),1)],8,LG)):V("",!0),s("button",{type:"button",class:"btn-icon-header",title:t.expanded?t.t("agents.restoreSize"):t.t("agents.expandWindow"),onClick:e[1]||(e[1]=r=>t.expanded=!t.expanded)},[s("span",FG,d(t.expanded?t.t("agents.restoreSize"):t.t("agents.expandWindow")),1)],8,UG),s("button",{type:"button",class:"smart-install-close-btn",title:t.t("common.close"),onClick:e[2]||(e[2]=(...r)=>t.close&&t.close(...r))},"✕",8,BG)])]),t.opening?(g(),f("div",GG,[e[9]||(e[9]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):(g(),f("div",YG,[s("div",HG,[t.messages.length===0&&!t.streaming?(g(),f("div",qG,[s("p",VG,d(t.t("agents.installSmartHint")),1)])):V("",!0),(g(!0),f(te,null,Le(t.messages,r=>(g(),Gt(i,{key:r.id,role:r.role,content:r.content,timestamp:r.timestamp,"tool-calls":r.toolCalls,"content-parts":r.contentParts},null,8,["role","content","timestamp","tool-calls","content-parts"]))),128)),t.streaming&&(t.currentMessage||t.toolExecutions.length>0)?(g(),f("div",zG,[Ae(i,{role:"assistant",content:t.currentMessage||t.t("chat.thinking"),timestamp:Date.now(),"tool-calls":t.toolExecutions,"content-parts":t.streamParts},null,8,["content","timestamp","tool-calls","content-parts"])])):V("",!0)],512),s("div",WG,[s("div",KG,[Q(s("textarea",{"onUpdate:modelValue":e[3]||(e[3]=r=>t.input=r),placeholder:t.t("chat.placeholder"),class:"smart-install-input",rows:"2",disabled:t.streaming,onKeydown:[e[4]||(e[4]=xo(Be((...r)=>t.send&&t.send(...r),["exact","prevent"]),["enter"])),e[5]||(e[5]=xo(Be(r=>t.input+=`
|
|
93
|
-
`,["shift","exact","prevent"]),["enter"]))]},null,40,QG),[[ye,t.input]]),t.streaming?(g(),f("button",{key:1,type:"button",class:"smart-install-btn smart-install-btn-abort",title:t.t("common.abort"),onClick:e[7]||(e[7]=(...r)=>t.cancelTurn&&t.cancelTurn(...r))},[...e[11]||(e[11]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"btn-icon-svg"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1"})],-1)])],8,XG)):(g(),f("button",{key:0,type:"button",class:"smart-install-btn smart-install-btn-send",disabled:!t.input.trim(),title:t.t("common.send"),onClick:e[6]||(e[6]=(...r)=>t.send&&t.send(...r))},[...e[10]||(e[10]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"btn-icon-svg"},[s("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})],-1)])],8,$G))])])])),t.error?(g(),f("p",ZG,d(t.error),1)):V("",!0)],2)],2)]),_:1})}const sh=st(wG,[["render",JG],["__scopeId","data-v-fe5c736d"]]),jG={name:"LocalInstallSkillDialog",props:{scope:{type:String,required:!0},workspace:{type:String,default:"default"},show:{type:Boolean,default:!1}},emits:["close","installed"],setup(n,{emit:e}){const{t:o}=Ot(),t=ae(()=>n.show),a=ae(()=>{var h;return typeof window<"u"&&!!((h=window.electronAPI)!=null&&h.showOpenDirectoryDialog)}),l=D(""),i=D(null),r=D(null),c=D(""),u=D(!1);function _(){l.value="",i.value=null,c.value="",e("close")}async function m(){if(a.value){c.value="";try{const h=await window.electronAPI.showOpenDirectoryDialog();h&&(l.value=h)}catch(h){c.value=h.message||"Failed to open dialog"}}}function p(){var h;(h=r.value)==null||h.click()}function E(h){var b,y;const A=(y=(b=h.target)==null?void 0:b.files)==null?void 0:y[0];A&&A.name.toLowerCase().endsWith(".zip")?i.value=A:i.value=null,r.value&&(r.value.value="")}async function S(){var A,b,y,w;const h=(A=l.value)==null?void 0:A.trim();if(!(!h||u.value)){c.value="",u.value=!0;try{const B=((b=(await rn.installSkillFromPath(h,{scope:n.scope,workspace:n.scope==="workspace"?n.workspace:void 0})).data)==null?void 0:b.data)??{};_(),e("installed",{installDir:B.installDir,name:B.name})}catch(k){c.value=((w=(y=k.response)==null?void 0:y.data)==null?void 0:w.message)||k.message||o("agents.installFailed")}finally{u.value=!1}}}async function T(){var A,b,y;const h=i.value;if(!(!h||u.value)){c.value="",u.value=!0;try{const k=((A=(await rn.installSkillFromUpload(h,{scope:n.scope,workspace:n.scope==="workspace"?n.workspace:void 0})).data)==null?void 0:A.data)??{};_(),e("installed",{installDir:k.installDir,name:k.name})}catch(w){c.value=((y=(b=w.response)==null?void 0:b.data)==null?void 0:y.message)||w.message||o("agents.installFailed")}finally{u.value=!1}}}return nt(t,h=>{h||(l.value="",i.value=null,c.value="")}),{t:o,visible:t,hasElectron:a,selectedPath:l,selectedFile:i,zipInputRef:r,error:c,saving:u,close:_,pickDirectory:m,triggerZipInput:p,onZipSelected:E,doInstallFromPath:S,doInstallFromUpload:T}}},e2={class:"modal-header"},t2={class:"modal-title"},n2=["title"],o2={class:"modal-body"},a2={class:"form-hint"},r2={class:"path-row"},s2=["title"],i2={key:1,class:"path-placeholder"},l2=["disabled"],c2={key:0,class:"form-error"},d2={class:"modal-footer-actions"},_2=["disabled"],u2={class:"form-hint form-hint-upload"},m2={class:"path-row upload-row"},p2=["title"],g2={key:1,class:"path-placeholder"},f2=["disabled"],E2={key:0,class:"form-error"},S2={class:"modal-footer-actions"},b2=["disabled"];function h2(n,e,o,t,a,l){return g(),Gt(je,{name:"fade"},{default:Ve(()=>[t.visible?(g(),f("div",{key:0,class:"modal-backdrop local-install-backdrop",role:"dialog","aria-modal":"true",onClick:e[9]||(e[9]=Be((...i)=>t.close&&t.close(...i),["self"]))},[s("div",{class:"modal-content card-glass local-install-modal",onClick:e[8]||(e[8]=Be(()=>{},["stop"]))},[s("div",e2,[s("h2",t2,d(t.t("agents.installLocal")),1),s("button",{type:"button",class:"close-btn",title:t.t("common.close"),onClick:e[0]||(e[0]=(...i)=>t.close&&t.close(...i))},"✕",8,n2)]),s("div",o2,[s("p",a2,d(t.t("agents.installLocalHint")),1),t.hasElectron?(g(),f(te,{key:0},[s("div",r2,[t.selectedPath?(g(),f("span",{key:0,class:"path-text",title:t.selectedPath},d(t.selectedPath),9,s2)):(g(),f("span",i2,d(t.t("skills.selectFolder")),1)),s("button",{type:"button",class:"btn-secondary btn-pick",disabled:t.saving,onClick:e[1]||(e[1]=(...i)=>t.pickDirectory&&t.pickDirectory(...i))},d(t.t("skills.chooseFolder")),9,l2)]),t.error?(g(),f("p",c2,d(t.error),1)):V("",!0),s("div",d2,[s("button",{type:"button",class:"btn-secondary",onClick:e[2]||(e[2]=(...i)=>t.close&&t.close(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.selectedPath||t.saving,onClick:e[3]||(e[3]=(...i)=>t.doInstallFromPath&&t.doInstallFromPath(...i))},d(t.saving?t.t("common.loading"):t.t("agents.installConfirm")),9,_2)])],64)):(g(),f(te,{key:1},[s("p",u2,d(t.t("agents.installLocalZipHint")),1),s("div",m2,[s("input",{ref:"zipInputRef",type:"file",accept:".zip",class:"file-input",onChange:e[4]||(e[4]=(...i)=>t.onZipSelected&&t.onZipSelected(...i))},null,544),t.selectedFile?(g(),f("span",{key:0,class:"path-text",title:t.selectedFile.name},d(t.selectedFile.name),9,p2)):(g(),f("span",g2,d(t.t("agents.installLocalSelectZip")),1)),s("button",{type:"button",class:"btn-secondary btn-pick",disabled:t.saving,onClick:e[5]||(e[5]=(...i)=>t.triggerZipInput&&t.triggerZipInput(...i))},d(t.t("agents.installLocalChooseZip")),9,f2)]),t.error?(g(),f("p",E2,d(t.error),1)):V("",!0),s("div",S2,[s("button",{type:"button",class:"btn-secondary",onClick:e[6]||(e[6]=(...i)=>t.close&&t.close(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.selectedFile||t.saving,onClick:e[7]||(e[7]=(...i)=>t.doInstallFromUpload&&t.doInstallFromUpload(...i))},d(t.saving?t.t("common.loading"):t.t("agents.installConfirm")),9,b2)])],64))])])])):V("",!0)]),_:1})}const ih=st(jG,[["render",h2],["__scopeId","data-v-151ad1d2"]]),hE={id:"default",name:"主智能体",workspace:"default",isDefault:!0},T2={name:"AgentDetail",components:{ChatMessage:U_,SmartInstallDialog:sh,LocalInstallSkillDialog:ih},setup(){const n=da(),e=Zn(),{t:o}=Ot(),t=Jn(),a=ae(()=>n.params.id),l=D(null),i=D(!0),r=D("config"),c=ae(()=>{const K=l.value;return K&&(K.runnerType==="coze"||K.runnerType==="openclawx"||K.runnerType==="opencode"||K.runnerType==="claude_code")}),u=ae(()=>{const K=[{id:"config",label:o("agents.basicConfig"),icon:"⚙️"}];return c.value?K.push({id:"proxy",label:o("agents.proxyConfig"),icon:"🔗"}):(K.push({id:"skills",label:o("agents.skillsConfig"),icon:"🎯"}),K.push({id:"mcp",label:o("agents.mcpConfig"),icon:"🔌"})),K}),_=F_,m=D({name:"",systemPrompt:"",icon:Do}),p=D({enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3}),E=D(!1),S=D({provider:"",model:""}),T=D(32768),h=D({runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}}),A=D([]),b=D(!1),y=D(!1),w=D(!1),k=D({}),B=D([]),X=D(""),x=D(!1),U=D([]),re=D(!1),se=D(!1),ne=D(!1),Te=D(null),G=D(!1),H=D(""),R=D(""),P=D(!1),oe=D(null),he=D(""),Ee=D(null),ve=ae(()=>l.value&&!l.value.isDefault&&l.value.workspace!=="default"),we=ae(()=>he.value?ot(he.value):""),Re=D({}),Ie=D({name:"",transport:"stdio",command:"",argsStr:"",envStr:"",url:"",headersStr:""}),xe=D(null),Ge=D(""),W=D(!1),me=D(""),F=D(""),Z=D({}),Se=D(!1),C=D(null);function N(K){if(!Array.isArray(K)||K.length===0)return{};const pe={};return K.forEach((Me,He)=>{const Ye=`MCP Server ${He+1}`;Me.transport==="sse"?pe[Ye]={url:Me.url,headers:Me.headers}:pe[Ye]={command:Me.command,args:Me.args,env:Me.env}}),pe}function O(K){if(!K||typeof K!="object")return"";if(typeof K.url=="string"&&K.url.trim())return K.url.trim();const pe=(K.command||"").trim(),Me=Array.isArray(K.args)?K.args.join(" "):"";return Me?`${pe} ${Me}`.trim():pe}function M(){return{name:"",transport:"stdio",command:"",argsStr:"",envStr:"",url:"",headersStr:""}}function Y(){xe.value=null,Ie.value=M(),Ge.value="",W.value=!0}function q(K){const pe=Re.value[K];pe&&(xe.value=K,typeof pe.url=="string"&&pe.url.trim()?Ie.value={name:K,transport:"sse",command:"",argsStr:"",envStr:"",url:pe.url||"",headersStr:pe.headers&&typeof pe.headers=="object"?JSON.stringify(pe.headers,null,2):""}:Ie.value={name:K,transport:"stdio",command:(pe.command||"").trim(),argsStr:Array.isArray(pe.args)?pe.args.join(" "):"",envStr:pe.env&&typeof pe.env=="object"?JSON.stringify(pe.env,null,2):"",url:"",headersStr:""},Ge.value="")}function $(){xe.value=null,Ie.value=M(),Ge.value="",W.value=!1,C.value=null}function ce(){const K=Ie.value;if(K.transport==="stdio"){const Ye=(K.command||"").trim();if(!Ye)return null;const $e=(K.argsStr||"").trim(),Pe=$e?$e.split(/[\s,]+/).filter(Boolean):void 0;let vt;const en=(K.envStr||"").trim();if(en)try{vt=JSON.parse(en),(typeof vt!="object"||vt===null)&&(vt=void 0)}catch{return null}return{command:Ye,args:Pe,env:vt}}const pe=(K.url||"").trim();if(!pe)return null;let Me;const He=(K.headersStr||"").trim();if(He)try{Me=JSON.parse(He),(typeof Me!="object"||Me===null)&&(Me=void 0)}catch{return null}return{url:pe,headers:Me}}async function de(K,pe){var Me,He;Z.value={...Z.value,[K]:"loading"};try{const Ye=await Xt.testMcp(pe),$e=(Ye==null?void 0:Ye.data)??Ye,Pe=($e==null?void 0:$e.success)===!0;Z.value={...Z.value,[K]:Pe?{success:!0,toolsCount:($e==null?void 0:$e.toolsCount)??0}:{success:!1,error:($e==null?void 0:$e.error)||o("agents.mcpTestFailed")}}}catch(Ye){const $e=((He=(Me=Ye==null?void 0:Ye.response)==null?void 0:Me.data)==null?void 0:He.error)||(Ye==null?void 0:Ye.message)||String(Ye);Z.value={...Z.value,[K]:{success:!1,error:$e}}}}async function z(){var pe,Me;const K=ce();if(!K){Ge.value=o("agents.mcpTestInvalidConfig");return}Ge.value="",C.value=null,Se.value=!0;try{const He=await Xt.testMcp(K),Ye=(He==null?void 0:He.data)??He,$e=(Ye==null?void 0:Ye.success)===!0;C.value=$e?{success:!0,toolsCount:(Ye==null?void 0:Ye.toolsCount)??0}:{success:!1,error:(Ye==null?void 0:Ye.error)||o("agents.mcpTestFailed")}}catch(He){const Ye=((Me=(pe=He==null?void 0:He.response)==null?void 0:pe.data)==null?void 0:Me.error)||(He==null?void 0:He.message)||String(He);C.value={success:!1,error:Ye}}finally{Se.value=!1}}function ke(){Ge.value="";const K=(Ie.value.name||"").trim();if(!K){Ge.value=o("agents.mcpServerNameRequired");return}if(Ie.value.transport==="sse"){const pe=(Ie.value.url||"").trim();if(!pe){Ge.value=o("agents.mcpUrlRequired");return}let Me;const He=(Ie.value.headersStr||"").trim();if(He)try{Me=JSON.parse(He),(typeof Me!="object"||Me===null)&&(Me=void 0)}catch{Ge.value=o("agents.mcpHeadersInvalidJson");return}const Ye={url:pe,headers:Me};if(xe.value!==null&&xe.value!==K){const $e={...Re.value};delete $e[xe.value],$e[K]=Ye,Re.value=$e}else Re.value={...Re.value,[K]:Ye}}else{const pe=(Ie.value.command||"").trim();if(!pe){Ge.value=o("agents.mcpCommandRequired");return}const Me=(Ie.value.argsStr||"").trim(),He=Me?Me.split(/[\s,]+/).filter(Boolean):[];let Ye;const $e=(Ie.value.envStr||"").trim();if($e)try{Ye=JSON.parse($e),(typeof Ye!="object"||Ye===null)&&(Ye=void 0)}catch{Ge.value=o("agents.mcpEnvInvalidJson");return}const Pe={command:pe,args:He.length?He:void 0,env:Ye};if(xe.value!==null&&xe.value!==K){const vt={...Re.value};delete vt[xe.value],vt[K]=Pe,Re.value=vt}else Re.value={...Re.value,[K]:Pe}}$()}function fe(K){const pe={...Re.value};delete pe[K],Re.value=pe,xe.value===K&&$(),Ne()}const Ce=D("");function Ne(){try{Ce.value=JSON.stringify({mcpServers:Re.value},null,2)}catch{Ce.value="{}"}}function ie(K){let pe=(K||"{}").trim();for(;pe.replace(/,(\s*[}\]])/g,"$1")!==pe;)pe=pe.replace(/,(\s*[}\]])/g,"$1");return JSON.parse(pe)}function ee(){me.value="";try{const K=ie(Ce.value);if(!K||typeof K!="object"||K.mcpServers==null||typeof K.mcpServers!="object"||Array.isArray(K.mcpServers)){me.value=o("agents.mcpJsonApplyError");return}Re.value=K.mcpServers,Ne()}catch{me.value=o("agents.mcpJsonApplyError")}}function be(K){var Me,He,Ye,$e;return(($e=(Ye=(He=(Me=k.value)==null?void 0:Me.providers)==null?void 0:He[K])==null?void 0:Ye.alias)==null?void 0:$e.trim())||K||"—"}function Ue(K){var pe;return be(K.provider)+" / "+(((pe=K.alias)==null?void 0:pe.trim())||K.modelId||"—")}function Qe(K){return K.modelItemCode&&K.modelItemCode.trim()?K.modelItemCode:`${K.provider}|${K.modelId}`}function ct(K){const pe=K.alias||K.modelId||"",Me=K.provider||"";return pe?`${pe} (${Me})`:`${Me} - ${K.modelId}`}const St=ae(()=>{const K=X.value;if(!K)return null;if(K.includes("|")){const[pe,Me]=K.split("|");return B.value.find(He=>He.provider===pe&&He.modelId===Me)||null}return B.value.find(pe=>pe.modelItemCode&&pe.modelItemCode===K)||null});async function At(){var K,pe,Me,He,Ye,$e,Pe,vt,en,et,tn,_n,Qt,bo,Cn,xt;if(a.value){i.value=!0;try{const Mt=await Xt.getAgent(a.value);if(l.value=((K=Mt.data)==null?void 0:K.data)??null,l.value){m.value={name:l.value.name,systemPrompt:l.value.systemPrompt??"",icon:l.value.icon||Do},p.value={enabled:!!((pe=l.value.webSearch)!=null&&pe.enabled),provider:((Me=l.value.webSearch)==null?void 0:Me.provider)==="brave"?"brave":"duck-duck-scrape",maxResultTokens:((He=l.value.webSearch)==null?void 0:He.maxResultTokens)??64e3},F.value=l.value.mcpMaxResultTokens!=null&&l.value.mcpMaxResultTokens>0?String(l.value.mcpMaxResultTokens):"",T.value=l.value.contextSize!=null&&l.value.contextSize>0?l.value.contextSize:32768,S.value={provider:l.value.provider??"",model:l.value.model??""};const Xe=l.value.coze,qo=(Xe==null?void 0:Xe.region)==="cn"?"cn":"com",pa=(Xe==null?void 0:Xe.botId)!=null&&typeof Xe.botId=="string"?Xe.botId.trim():"",ho=(Xe==null?void 0:Xe.apiKey)!=null&&typeof Xe.apiKey=="string"?Xe.apiKey.trim():"",Vo=pa||ho?{botId:pa,apiKey:ho}:null,jn=()=>({botId:"",apiKey:""}),ga=nn=>nn&&(nn.botId||nn.apiKey)?{botId:String(nn.botId||"").trim(),apiKey:String(nn.apiKey||"").trim()}:jn(),fa=Xe!=null&&Xe.cn?ga(Xe.cn):Vo||jn(),_r=Xe!=null&&Xe.com?ga(Xe.com):Vo||jn(),ur="https://api.coze.cn",Ea="https://api.coze.com",zo=((Xe==null?void 0:Xe.endpoint)??"").trim(),mr=zo===ur||zo===Ea?"":zo;h.value={runnerType:l.value.runnerType==="coze"||l.value.runnerType==="openclawx"||l.value.runnerType==="opencode"||l.value.runnerType==="claude_code"?l.value.runnerType:"local",coze:{region:qo,cn:fa,com:_r,endpoint:mr},openclawx:{baseUrl:((Ye=l.value.openclawx)==null?void 0:Ye.baseUrl)??"",apiKey:(($e=l.value.openclawx)==null?void 0:$e.apiKey)??""},opencode:{mode:((Pe=l.value.opencode)==null?void 0:Pe.mode)==="local"||((vt=l.value.opencode)==null?void 0:vt.mode)==="remote"?l.value.opencode.mode:(en=l.value.opencode)!=null&&en.address&&String(l.value.opencode.address).trim()?"remote":"local",address:((et=l.value.opencode)==null?void 0:et.address)??"",port:((tn=l.value.opencode)==null?void 0:tn.port)??4096,username:((_n=l.value.opencode)==null?void 0:_n.username)??"",password:((Qt=l.value.opencode)==null?void 0:Qt.password)??"",model:((bo=l.value.opencode)==null?void 0:bo.model)??"",workingDirectory:((Cn=l.value.opencode)==null?void 0:Cn.workingDirectory)??""},claudeCode:{workingDirectory:((xt=l.value.claudeCode)==null?void 0:xt.workingDirectory)??""}};const Ln=l.value.mcpServers;Ln!=null&&typeof Ln=="object"&&!Array.isArray(Ln)?Re.value={...Ln}:Array.isArray(Ln)?Re.value=N(Ln.filter(nn=>nn&&(nn.transport==="sse"?(nn.url||"").trim():(nn.command||"").trim()))):Re.value={},Ne()}else a.value==="default"&&(l.value={...hE},m.value={name:l.value.name,systemPrompt:"",icon:Do},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",T.value=32768,S.value={provider:"",model:""},h.value={runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}},Re.value={},Ne())}catch{a.value==="default"?(l.value={...hE},m.value={name:l.value.name,systemPrompt:"",icon:Do},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",T.value=32768,S.value={provider:"",model:""},h.value={runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}},Re.value={},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",Ne()):l.value=null}finally{i.value=!1}}}async function dn(){var K,pe,Me,He,Ye,$e;if(l.value){E.value=!0;try{const Pe={};if(l.value.isDefault||(Pe.name=m.value.name||l.value.workspace),Pe.mcpServers=Re.value,Pe.mcpMaxResultTokens=F.value!==""&&F.value!=null&&parseInt(F.value,10)||void 0,Pe.systemPrompt=((K=m.value.systemPrompt)==null?void 0:K.trim())||void 0,Pe.icon=m.value.icon||void 0,X.value){const et=St.value;et&&(Pe.provider=et.provider,Pe.model=et.modelId,Pe.modelItemCode=et.modelItemCode||void 0)}else Pe.provider=void 0,Pe.model=void 0,Pe.modelItemCode=void 0;const vt=p.value.maxResultTokens,en=vt==null||vt===""||vt===0?void 0:Number(vt)||64e3;if(Pe.webSearch=p.value.enabled?{enabled:!0,provider:p.value.provider,maxResultTokens:en}:void 0,Pe.runnerType=h.value.runnerType,h.value.runnerType==="local"){const et=T.value;Pe.contextSize=typeof et=="number"&&Number.isInteger(et)&&et>=2048?et:void 0}else Pe.contextSize=null;if(h.value.runnerType==="coze"){const et=h.value.coze;Pe.coze={region:et.region==="cn"?"cn":"com",cn:{botId:(((pe=et.cn)==null?void 0:pe.botId)??"").trim(),apiKey:(((Me=et.cn)==null?void 0:Me.apiKey)??"").trim()},com:{botId:(((He=et.com)==null?void 0:He.botId)??"").trim(),apiKey:(((Ye=et.com)==null?void 0:Ye.apiKey)??"").trim()},endpoint:void 0}}else if(h.value.runnerType==="openclawx")Pe.openclawx={baseUrl:(h.value.openclawx.baseUrl||"").trim(),apiKey:(h.value.openclawx.apiKey||"").trim()||void 0};else if(h.value.runnerType==="opencode"){const et=h.value.opencode,tn=typeof et.port=="number"?et.port:parseInt(String(et.port||""),10),_n=et.mode==="local"?"local":"remote";Pe.opencode={mode:_n,address:_n==="remote"?(et.address||"").trim():void 0,port:Number.isFinite(tn)&&tn>0?tn:4096,password:(et.password||"").trim()||void 0,model:(et.model||"").trim()||void 0,workingDirectory:(et.workingDirectory||"").trim()||void 0}}else if(h.value.runnerType==="claude_code"){const et=((($e=h.value.claudeCode)==null?void 0:$e.workingDirectory)??"").trim();Pe.claudeCode=et?{workingDirectory:et}:void 0}else Pe.coze=void 0,Pe.openclawx=void 0,Pe.opencode=void 0,Pe.claudeCode=void 0;await Xt.updateAgent(l.value.id,Pe),l.value.isDefault||(l.value.name=m.value.name||l.value.workspace),l.value={...l.value,systemPrompt:Pe.systemPrompt,icon:Pe.icon,provider:Pe.provider,model:Pe.model,modelItemCode:Pe.modelItemCode,mcpMaxResultTokens:Pe.mcpMaxResultTokens,webSearch:Pe.webSearch,runnerType:Pe.runnerType,contextSize:Pe.contextSize,coze:Pe.coze,openclawx:Pe.openclawx,opencode:Pe.opencode,claudeCode:Pe.claudeCode},alert(o("agents.configSavedSessionRefresh"))}catch(Pe){console.error("Save config failed",Pe)}finally{E.value=!1}}}async function bt(){var K,pe,Me,He;x.value=!0;try{const $e=((K=(await Wn.getConfig()).data)==null?void 0:K.data)??{};k.value=$e;const Pe=Array.isArray($e.configuredModels)?$e.configuredModels:[];B.value=Pe;const vt=$e.defaultProvider||"",en=$e.defaultModel||"",et=(pe=l.value)==null?void 0:pe.modelItemCode,tn=S.value.provider||((Me=l.value)==null?void 0:Me.provider)||"",_n=S.value.model||((He=l.value)==null?void 0:He.model)||"",Qt=(Mt,Xe)=>Mt&&Xe?`${Mt}|${Xe}`:"",bo=Mt=>Pe.some(Xe=>Xe.modelItemCode===Mt),Cn=Mt=>Pe.some(Xe=>Qt(Xe.provider,Xe.modelId)===Mt);let xt="";if(et&&bo(et)?xt=et:tn&&_n&&Cn(Qt(tn,_n))&&(xt=Qt(tn,_n)),!xt&&Cn(Qt(vt,en))&&(xt=Qt(vt,en)),!xt&&Pe.length){const Mt=Pe[0];xt=Qe(Mt)}if(X.value=xt||"",xt){const Mt=xt.includes("|")?Pe.find(Xe=>Qt(Xe.provider,Xe.modelId)===xt):Pe.find(Xe=>Xe.modelItemCode===xt);Mt&&(S.value.provider=Mt.provider||"",S.value.model=Mt.modelId||"")}}catch{B.value=[],X.value=""}finally{x.value=!1}}function It(){const K=X.value;if(!K){S.value.provider="",S.value.model="";return}const pe=St.value;if(pe)S.value.provider=pe.provider||"",S.value.model=pe.modelId||"";else if(K.includes("|")){const[Me,He]=K.split("|");S.value.provider=Me||"",S.value.model=He||""}}async function jt(){var pe;if(!l.value)return;const K=(l.value.workspace||"").trim()||"default";re.value=!0;try{const Me=await rn.getSkills(K);U.value=((pe=Me.data)==null?void 0:pe.data)??[]}catch{U.value=[]}finally{re.value=!1}}function fn(K){var pe;oe.value=K,he.value="",rn.getSkillContent(K.name,(pe=l.value)==null?void 0:pe.workspace).then(Me=>{var He,Ye;he.value=((Ye=(He=Me.data)==null?void 0:He.data)==null?void 0:Ye.content)??""}).catch(()=>{})}function ue(K){Ee.value=K}async function ge(){const K=Ee.value;if(!(!l.value||!K))try{await rn.deleteSkill(l.value.workspace,K.name),Ee.value=null,await jt()}catch(pe){console.error("Delete skill failed",pe)}}function Je(){l.value&&(t.clearCurrentSession(),se.value=!0)}function Rt(){se.value=!1,R.value=""}function kt(K){jt(),Te.value=K&&(K.installDir||K.name)?K:null}function xn(){H.value="",R.value="",G.value=!0}nt(()=>{var K;return h.value.runnerType==="coze"&&((K=h.value.coze)==null?void 0:K.region)},K=>{var He;if(K!=="cn"&&K!=="com")return;const pe=(((He=h.value.coze)==null?void 0:He.endpoint)??"").trim();(pe===(K==="cn"?"https://api.coze.com":"https://api.coze.cn")||pe.includes(K==="cn"?"api.coze.com":"api.coze.cn"))&&(h.value.coze.endpoint="")}),nt(a,At),nt([l,r],()=>{l.value&&r.value==="skills"&&jt(),l.value&&r.value==="config"&&bt()}),nt(u,K=>{const pe=K.map(Me=>Me.id);pe.length&&!pe.includes(r.value)&&(r.value=pe[0])},{immediate:!0}),nt(()=>n.query.smartInstallSession,async K=>{var pe,Me;if(K){se.value=!0;try{await t.selectSession(K),e.replace({path:n.path,query:{}})}catch(He){R.value=((Me=(pe=He.response)==null?void 0:pe.data)==null?void 0:Me.message)||He.message||"Failed"}}},{immediate:!0}),nt(se,K=>{K?document.body.style.overflow="hidden":document.body.style.overflow=""}),ja(()=>{se.value&&(document.body.style.overflow="")}),nt(()=>n.query.tab,K=>{K==="proxy"&&(r.value="proxy")},{immediate:!0});async function Ht(){var K;if(!(A.value.length>0))try{const pe=await Wn.getOpencodeFreeModels();(K=pe==null?void 0:pe.data)!=null&&K.success&&Array.isArray(pe.data.data)&&(A.value=pe.data.data)}catch{}}const So=ae(()=>{var K;return typeof window<"u"&&!!((K=window.electronAPI)!=null&&K.showOpenDirectoryDialog)});async function Kt(){var pe;if(!((pe=window.electronAPI)!=null&&pe.showOpenDirectoryDialog))return;const K=await window.electronAPI.showOpenDirectoryDialog({title:"选择 OpenCode 工作目录"});K&&(h.value.opencode.workingDirectory=K)}async function lr(){var pe;if(!((pe=window.electronAPI)!=null&&pe.showOpenDirectoryDialog))return;const K=await window.electronAPI.showOpenDirectoryDialog({title:o("agents.claudeCodeSelectFolderTitle")});K&&(h.value.claudeCode.workingDirectory=K)}function cr(){var K;w.value=!1,!((K=l.value)!=null&&K.isDefault)&&(b.value=!0)}async function dr(){var K;if(!((K=l.value)!=null&&K.id)||l.value.isDefault){b.value=!1;return}y.value=!0;try{const pe=w.value?{deleteWorkspaceDir:"true"}:{};await Xt.deleteAgent(l.value.id,pe),b.value=!1,e.push("/agents")}catch(pe){console.error("Delete agent failed",pe)}finally{y.value=!1}}return nt(()=>h.value.runnerType==="opencode",K=>{K&&Ht()},{immediate:!0}),Yt(()=>{At()}),{t:o,agent:l,loading:i,activeTab:r,tabs:u,configForm:m,webSearchForm:p,agentIconOptions:_,configSaving:E,saveConfig:dn,modelForm:S,proxyForm:h,opencodeFreeModels:A,hasElectronFolderPicker:So,pickOpencodeWorkingDirectory:Kt,pickClaudeCodeWorkingDirectory:lr,showDeleteConfirm:b,deleteAgentSaving:y,deleteWorkspaceDir:w,openDeleteConfirm:cr,doDeleteAgent:dr,configuredModelsList:B,selectedConfiguredModelKey:X,selectedModelItem:St,getConfiguredModelOptionLabel:Ue,optionValueFor:Qe,optionLabelFor:ct,getProviderDisplayName:be,onConfiguredModelSelect:It,modelConfigLoading:x,loadModelConfig:bt,agentSkills:U,skillsLoading:re,canDeleteWorkspaceSkill:ve,showSmartInstallModal:se,showLocalInstallModal:ne,installSuccessPayload:Te,onLocalInstalled:kt,showManualInstallModal:G,manualInstallUrl:H,installError:R,installManualSaving:P,openSmartInstallModal:Je,openManualInstallModal:xn,closeSmartInstallModal:Rt,selectedSkill:oe,skillDetailContent:he,renderedSkillContent:we,openSkillDetail:fn,confirmDeleteSkill:ue,deleteSkillTarget:Ee,doDeleteSkill:ge,mcpServers:Re,mcpForm:Ie,mcpFormVisible:W,mcpEditingKey:xe,mcpFormError:Ge,mcpServerDisplayText:O,openAddMcp:Y,startEditMcp:q,cancelMcpForm:$,saveMcpServer:ke,removeMcpServer:fe,mcpStandardJsonString:Ce,applyMcpJson:ee,mcpJsonError:me,mcpMaxResultTokensForm:F,mcpTestState:Z,mcpFormTestLoading:Se,mcpFormTestResult:C,testMcpServer:de,testMcpForm:z}}},v2={class:"agent-detail-view"},C2={key:0,class:"loading-state full"},y2={key:1,class:"empty-state full"},R2={class:"detail-header card-glass"},N2={class:"detail-header-top"},O2={class:"view-title"},A2={class:"text-secondary"},I2={class:"detail-layout"},D2={class:"detail-tabs card-glass"},w2=["onClick"],k2={class:"tab-icon"},M2={class:"tab-label"},x2={class:"detail-content"},L2={class:"tab-panel config-panel"},P2={class:"panel-title"},U2={class:"form-group"},F2={class:"icon-picker"},B2=["title","onClick"],G2={class:"form-group"},Y2=["placeholder","readonly","disabled"],H2={key:0,class:"form-hint"},q2={class:"form-group"},V2=["value"],z2={class:"form-hint"},W2={class:"form-group"},K2=["placeholder"],Q2={class:"form-hint"},$2={class:"form-group"},X2={class:"form-subtitle"},Z2={class:"form-hint"},J2={key:0,class:"form-hint warning"},j2={class:"form-group"},eY={value:""},tY=["value"],nY={key:0,class:"form-group"},oY=["value"],aY={key:1,class:"form-group"},rY=["value"],sY={key:2,class:"form-group"},iY={class:"form-hint"},lY={class:"form-group"},cY={class:"form-subtitle"},dY={class:"form-row checkbox-row"},_Y={for:"web-search-enabled"},uY={class:"form-hint"},mY={class:"form-group"},pY={value:"duck-duck-scrape"},gY={value:"brave"},fY={class:"form-hint"},EY={class:"form-group"},SY={class:"form-hint"},bY=["disabled"],hY={class:"tab-panel proxy-panel"},TY={class:"panel-title"},vY={class:"form-hint"},CY={class:"form-group"},yY={key:0,class:"form-runner-type-fixed"},RY={value:"local"},NY={value:"coze"},OY={value:"openclawx"},AY={value:"opencode"},IY={value:"claude_code"},DY={class:"form-group"},wY={value:"com"},kY={value:"cn"},MY={class:"form-hint"},xY={class:"form-hint"},LY={class:"form-group"},PY=["placeholder"],UY={class:"form-hint"},FY={class:"form-group"},BY=["placeholder"],GY={class:"form-hint"},YY={class:"form-group"},HY=["placeholder"],qY={class:"form-hint"},VY={class:"form-group"},zY=["placeholder"],WY={class:"form-hint"},KY={class:"form-hint"},QY={class:"form-group"},$Y={class:"form-input-with-btn"},XY=["placeholder"],ZY={class:"form-group"},JY=["placeholder"],jY={class:"form-group"},eH=["placeholder"],tH={class:"form-hint"},nH={class:"form-group"},oH={class:"form-radio-group"},aH={class:"form-radio"},rH={class:"form-radio"},sH={class:"form-hint"},iH={class:"form-group"},lH=["placeholder"],cH={class:"form-group"},dH={value:""},_H=["value"],uH={class:"form-group"},mH={class:"form-input-with-btn"},pH=["placeholder"],gH={class:"form-hint"},fH={class:"form-group"},EH=["placeholder"],SH={class:"form-group"},bH=["placeholder"],hH={class:"form-group"},TH=["placeholder"],vH={class:"form-group"},CH={value:""},yH=["value"],RH=["disabled"],NH={class:"tab-panel skills-panel"},OH={class:"panel-header"},AH={class:"panel-title"},IH={class:"panel-header-buttons"},DH={key:0,class:"loading-state"},wH={key:1,class:"empty-state"},kH={class:"empty-actions"},MH={key:2,class:"skills-grid"},xH=["onClick"],LH={class:"skill-card-name"},PH={class:"skill-card-desc"},UH=["onClick"],FH={class:"tab-panel mcp-panel"},BH={class:"panel-title"},GH={class:"form-hint"},YH={class:"form-hint mcp-test-hint"},HH={class:"mcp-list"},qH={class:"mcp-item-name"},VH={class:"mcp-item-text"},zH={class:"mcp-item-actions"},WH=["disabled","onClick"],KH={class:"mcp-test-success-badge"},QH=["onClick"],$H=["onClick"],XH={class:"form-group mcp-max-result-tokens-row"},ZH={class:"form-label"},JH={value:""},jH={class:"form-hint"},eq={key:0,class:"mcp-form card-glass"},tq={class:"config-section-title"},nq={class:"form-group"},oq={class:"form-label"},aq=["placeholder","readonly"],rq={class:"form-group"},sq={class:"form-label"},iq={class:"mcp-transport-tabs"},lq={class:"transport-tab-label"},cq={class:"transport-tab-hint"},dq={class:"transport-tab-label"},_q={class:"transport-tab-hint"},uq={class:"form-group"},mq={class:"form-label"},pq=["placeholder"],gq={class:"form-group"},fq={class:"form-label"},Eq=["placeholder"],Sq={class:"form-group"},bq={class:"form-label"},hq=["placeholder"],Tq={class:"form-group"},vq={class:"form-label"},Cq=["placeholder"],yq={class:"form-group"},Rq={class:"form-label"},Nq=["placeholder"],Oq={key:2,class:"form-hint form-hint-warn"},Aq={class:"mcp-test-success-badge"},Iq={class:"mcp-form-actions"},Dq=["disabled"],wq={class:"mcp-json-section card-glass"},kq={class:"config-section-title"},Mq={class:"form-hint"},xq={key:0,class:"form-hint form-hint-warn"},Lq={class:"mcp-form-actions"},Pq={class:"form-hint mcp-save-hint"},Uq={class:"mcp-save-row"},Fq=["disabled"],Bq={class:"modal-content card-glass add-skill-modal"},Gq={class:"modal-header"},Yq={class:"modal-body"},Hq={class:"form-hint"},qq={class:"form-group"},Vq=["placeholder"],zq={key:0,class:"form-error"},Wq={class:"modal-footer-actions"},Kq=["disabled"],Qq={class:"modal-content card-glass skill-detail-modal"},$q={class:"modal-header"},Xq={class:"modal-body"},Zq=["innerHTML"],Jq={key:1,class:"no-content"},jq={class:"modal-content card-glass delete-confirm-modal"},eV={class:"modal-header"},tV={class:"modal-body"},nV={class:"delete-target-name"},oV={class:"modal-footer-actions"},aV={class:"modal-content card-glass install-success-modal"},rV={class:"modal-header"},sV={class:"modal-body"},iV={key:0,class:"install-success-row"},lV={class:"label"},cV={class:"value"},dV={class:"install-success-row install-success-dir"},_V={class:"label"},uV=["title"],mV={class:"modal-footer-actions"},pV={class:"modal-content card-glass modal-confirm"},gV={class:"modal-confirm-text"},fV={key:0,class:"modal-confirm-name"},EV={class:"modal-confirm-checkbox"},SV={class:"modal-footer-actions"},bV=["disabled"];function hV(n,e,o,t,a,l){var u,_,m,p,E,S,T,h,A;const i=gt("router-link"),r=gt("SmartInstallDialog"),c=gt("LocalInstallSkillDialog");return g(),f("div",v2,[t.loading&&!t.agent?(g(),f("div",C2,[e[72]||(e[72]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.agent?(g(),f(te,{key:2},[s("div",R2,[s("div",N2,[Ae(i,{to:"/agents",class:"back-link"},{default:Ve(()=>[ze("← "+d(t.t("agents.backToList")),1)]),_:1}),t.agent.isDefault?V("",!0):(g(),f("button",{key:0,type:"button",class:"btn-delete-agent",onClick:e[0]||(e[0]=(...b)=>t.openDeleteConfirm&&t.openDeleteConfirm(...b))},d(t.t("agents.deleteAgent")),1))]),s("h1",O2,d(t.agent.name),1),s("p",A2,[ze(d(t.t("agents.workspace"))+": ",1),s("code",null,d(t.agent.workspace),1)])]),s("div",I2,[s("div",D2,[(g(!0),f(te,null,Le(t.tabs,b=>(g(),f("button",{key:b.id,class:Oe(["tab-btn",{active:t.activeTab===b.id}]),onClick:y=>t.activeTab=b.id},[s("span",k2,d(b.icon),1),s("span",M2,d(b.label),1)],10,w2))),128))]),s("div",x2,[Q(s("div",L2,[s("h2",P2,d(t.t("agents.basicConfig")),1),s("div",U2,[s("label",null,d(t.t("agents.agentIcon")),1),s("div",F2,[(g(!0),f(te,null,Le(t.agentIconOptions,b=>(g(),f("button",{key:b.id,type:"button",class:Oe(["icon-picker-btn",{active:t.configForm.icon===b.id}]),title:b.label,onClick:y=>t.configForm.icon=b.id},d(b.emoji),11,B2))),128))])]),s("div",G2,[s("label",null,d(t.t("agents.displayName")),1),Q(s("input",{"onUpdate:modelValue":e[1]||(e[1]=b=>t.configForm.name=b),type:"text",class:Oe(["form-input",{readonly:t.agent.isDefault}]),placeholder:t.agent.workspace,readonly:t.agent.isDefault,disabled:t.agent.isDefault},null,10,Y2),[[ye,t.configForm.name]]),t.agent.isDefault?(g(),f("p",H2,d(t.t("agents.nameReadonly")),1)):V("",!0)]),s("div",q2,[s("label",null,d(t.t("agents.workspaceName")),1),s("input",{value:t.agent.workspace,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,V2),s("p",z2,d(t.t("agents.workspaceReadonly")),1)]),s("div",W2,[s("label",null,d(t.t("agents.agentDescription")),1),Q(s("textarea",{"onUpdate:modelValue":e[2]||(e[2]=b=>t.configForm.systemPrompt=b),class:"form-input form-textarea",placeholder:t.t("agents.agentDescriptionPlaceholder"),rows:"4"},null,8,K2),[[ye,t.configForm.systemPrompt]]),s("p",Q2,d(t.t("agents.agentDescriptionHint")),1)]),s("div",$2,[s("h3",X2,d(t.t("agents.modelConfig")),1),s("p",Z2,d(t.t("agents.modelConfigHint")),1),t.configuredModelsList.length===0?(g(),f("p",J2,d(t.t("agents.noConfiguredModels")),1)):(g(),f(te,{key:1},[s("div",j2,[s("label",null,d(t.t("agents.selectConfiguredModel")),1),Q(s("select",{"onUpdate:modelValue":e[3]||(e[3]=b=>t.selectedConfiguredModelKey=b),class:"form-input",onChange:e[4]||(e[4]=(...b)=>t.onConfiguredModelSelect&&t.onConfiguredModelSelect(...b))},[s("option",eY,d(t.t("agents.useDefaultModel")),1),(g(!0),f(te,null,Le(t.configuredModelsList,b=>(g(),f("option",{key:t.optionValueFor(b),value:t.optionValueFor(b)},d(t.optionLabelFor(b)),9,tY))),128))],544),[[dt,t.selectedConfiguredModelKey]])]),t.selectedConfiguredModelKey?(g(),f("div",nY,[s("label",null,d(t.t("agents.currentProvider")),1),s("input",{value:t.modelForm.provider,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,oY)])):V("",!0),t.selectedConfiguredModelKey?(g(),f("div",aY,[s("label",null,d(t.t("agents.currentModelId")),1),s("input",{value:t.modelForm.model,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,rY)])):V("",!0)],64)),t.proxyForm.runnerType==="local"?(g(),f("div",sY,[s("label",null,d(t.t("agents.contextSize")),1),Q(s("input",{"onUpdate:modelValue":e[5]||(e[5]=b=>n.contextSizeForm=b),type:"number",min:"2048",max:"131072",step:"1024",class:"form-input",placeholder:"32768"},null,512),[[ye,n.contextSizeForm,void 0,{number:!0}]]),s("p",iY,d(t.t("agents.contextSizeHint")),1)])):V("",!0)]),s("div",lY,[s("h3",cY,d(t.t("agents.webSearchTitle")),1),s("div",dY,[Q(s("input",{id:"web-search-enabled","onUpdate:modelValue":e[6]||(e[6]=b=>t.webSearchForm.enabled=b),type:"checkbox",class:"form-checkbox"},null,512),[[zn,t.webSearchForm.enabled]]),s("label",_Y,d(t.t("agents.webSearchEnabled")),1)]),s("p",uY,d(t.t("agents.webSearchEnabledHint")),1),t.webSearchForm.enabled?(g(),f(te,{key:0},[s("div",mY,[s("label",null,d(t.t("agents.webSearchProvider")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=b=>t.webSearchForm.provider=b),class:"form-input"},[s("option",pY,d(t.t("agents.webSearchProviderDuckDuckScrape")),1),s("option",gY,d(t.t("agents.webSearchProviderBrave")),1)],512),[[dt,t.webSearchForm.provider]]),s("p",fY,d(t.t("agents.webSearchProviderHint")),1)]),s("div",EY,[s("label",null,d(t.t("agents.webSearchMaxResultTokens")),1),Q(s("input",{"onUpdate:modelValue":e[8]||(e[8]=b=>t.webSearchForm.maxResultTokens=b),type:"number",min:"0",step:"1000",class:"form-input",placeholder:"64000"},null,512),[[ye,t.webSearchForm.maxResultTokens,void 0,{number:!0}]]),s("p",SY,d(t.t("agents.webSearchMaxResultTokensHint")),1)])],64)):V("",!0)]),s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[9]||(e[9]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,bY)],512),[[ht,t.activeTab==="config"]]),Q(s("div",hY,[s("h2",TY,d(t.t("agents.proxyConfig")),1),s("p",vY,d(t.t("agents.proxyConfigHint")),1),s("div",CY,[s("label",null,d(t.t("agents.runnerType")),1),((u=t.agent)==null?void 0:u.runnerType)==="coze"||((_=t.agent)==null?void 0:_.runnerType)==="openclawx"||((m=t.agent)==null?void 0:m.runnerType)==="opencode"||((p=t.agent)==null?void 0:p.runnerType)==="claude_code"?(g(),f("p",yY,d(((E=t.agent)==null?void 0:E.runnerType)==="coze"?t.t("agents.runnerTypeCoze"):((S=t.agent)==null?void 0:S.runnerType)==="openclawx"?t.t("agents.runnerTypeOpenclawx"):((T=t.agent)==null?void 0:T.runnerType)==="opencode"?t.t("agents.runnerTypeOpencode"):t.t("agents.runnerTypeClaudeCode")),1)):Q((g(),f("select",{key:1,"onUpdate:modelValue":e[10]||(e[10]=b=>t.proxyForm.runnerType=b),class:"form-input"},[s("option",RY,d(t.t("agents.runnerTypeLocal")),1),s("option",NY,d(t.t("agents.runnerTypeCoze")),1),s("option",OY,d(t.t("agents.runnerTypeOpenclawx")),1),s("option",AY,d(t.t("agents.runnerTypeOpencode")),1),s("option",IY,d(t.t("agents.runnerTypeClaudeCode")),1)],512)),[[dt,t.proxyForm.runnerType]])]),t.proxyForm.runnerType==="coze"?(g(),f(te,{key:0},[s("div",DY,[s("label",null,d(t.t("agents.cozeRegion")),1),Q(s("select",{"onUpdate:modelValue":e[11]||(e[11]=b=>t.proxyForm.coze.region=b),class:"form-input"},[s("option",wY,d(t.t("agents.cozeRegionCom")),1),s("option",kY,d(t.t("agents.cozeRegionCn")),1)],512),[[dt,t.proxyForm.coze.region]]),s("p",MY,d(t.t("agents.cozeRegionHint")),1),s("p",xY,d(t.t("agents.cozeTokenTypesHint")),1)]),t.proxyForm.coze.region==="cn"?(g(),f(te,{key:0},[s("div",LY,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[12]||(e[12]=b=>t.proxyForm.coze.cn.botId=b),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,PY),[[ye,t.proxyForm.coze.cn.botId]]),s("p",UY,d(t.t("agents.cozeBotIdHint")),1)]),s("div",FY,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[13]||(e[13]=b=>t.proxyForm.coze.cn.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,BY),[[ye,t.proxyForm.coze.cn.apiKey]]),s("p",GY,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0),t.proxyForm.coze.region==="com"?(g(),f(te,{key:1},[s("div",YY,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[14]||(e[14]=b=>t.proxyForm.coze.com.botId=b),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,HY),[[ye,t.proxyForm.coze.com.botId]]),s("p",qY,d(t.t("agents.cozeBotIdHint")),1)]),s("div",VY,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[15]||(e[15]=b=>t.proxyForm.coze.com.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,zY),[[ye,t.proxyForm.coze.com.apiKey]]),s("p",WY,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0)],64)):V("",!0),t.proxyForm.runnerType==="claude_code"?(g(),f(te,{key:1},[s("p",KY,d(t.t("agents.runnerTypeClaudeCodeHint")),1),s("div",QY,[s("label",null,d(t.t("agents.claudeCodeWorkingDirectory")),1),s("div",$Y,[Q(s("input",{"onUpdate:modelValue":e[16]||(e[16]=b=>t.proxyForm.claudeCode.workingDirectory=b),type:"text",class:"form-input",placeholder:t.t("agents.claudeCodeWorkingDirectoryPlaceholder")},null,8,XY),[[ye,t.proxyForm.claudeCode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[17]||(e[17]=(...b)=>t.pickClaudeCodeWorkingDirectory&&t.pickClaudeCodeWorkingDirectory(...b))},d(t.t("agents.claudeCodeSelectFolder")),1)):V("",!0)])])],64)):V("",!0),t.proxyForm.runnerType==="openclawx"?(g(),f(te,{key:2},[s("div",ZY,[s("label",null,d(t.t("agents.openclawxBaseUrl")),1),Q(s("input",{"onUpdate:modelValue":e[18]||(e[18]=b=>t.proxyForm.openclawx.baseUrl=b),type:"text",class:"form-input",placeholder:t.t("agents.openclawxBaseUrlPlaceholder")},null,8,JY),[[ye,t.proxyForm.openclawx.baseUrl]])]),s("div",jY,[s("label",null,d(t.t("agents.openclawxApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[19]||(e[19]=b=>t.proxyForm.openclawx.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.openclawxApiKeyPlaceholder"),autocomplete:"off"},null,8,eH),[[ye,t.proxyForm.openclawx.apiKey]])])],64)):V("",!0),t.proxyForm.runnerType==="opencode"?(g(),f(te,{key:3},[s("p",tH,d(t.t("agents.opencodeHint")),1),s("div",nH,[s("label",null,d(t.t("agents.opencodeMode")),1),s("div",oH,[s("label",aH,[Q(s("input",{"onUpdate:modelValue":e[20]||(e[20]=b=>t.proxyForm.opencode.mode=b),type:"radio",value:"local"},null,512),[[_o,t.proxyForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeLocal")),1)]),s("label",rH,[Q(s("input",{"onUpdate:modelValue":e[21]||(e[21]=b=>t.proxyForm.opencode.mode=b),type:"radio",value:"remote"},null,512),[[_o,t.proxyForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeRemote")),1)])])]),t.proxyForm.opencode.mode==="local"?(g(),f(te,{key:0},[s("p",sH,d(t.t("agents.opencodeLocalHint")),1),s("div",iH,[s("label",null,d(t.t("agents.opencodePortLocalLabel")),1),Q(s("input",{"onUpdate:modelValue":e[22]||(e[22]=b=>t.proxyForm.opencode.port=b),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,lH),[[ye,t.proxyForm.opencode.port,void 0,{number:!0}]])]),s("div",cH,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[23]||(e[23]=b=>t.proxyForm.opencode.model=b),class:"form-input"},[s("option",dH,d(t.t("agents.opencodeUseLocalDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,b=>(g(),f("option",{key:b.id,value:b.id},d(b.label)+d(b.free?" (Free)":""),9,_H))),128))],512),[[dt,t.proxyForm.opencode.model]])]),s("div",uH,[s("label",null,d(t.t("agents.opencodeWorkingDirectory")),1),s("div",mH,[Q(s("input",{"onUpdate:modelValue":e[24]||(e[24]=b=>t.proxyForm.opencode.workingDirectory=b),type:"text",class:"form-input",placeholder:t.t("agents.opencodeWorkingDirectoryPlaceholder")},null,8,pH),[[ye,t.proxyForm.opencode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[25]||(e[25]=(...b)=>t.pickOpencodeWorkingDirectory&&t.pickOpencodeWorkingDirectory(...b))},d(t.t("agents.opencodeSelectFolder")),1)):V("",!0)])])],64)):(g(),f(te,{key:1},[s("p",gH,d(t.t("agents.opencodeRemoteHint")),1),s("div",fH,[s("label",null,d(t.t("agents.opencodeAddress")),1),Q(s("input",{"onUpdate:modelValue":e[26]||(e[26]=b=>t.proxyForm.opencode.address=b),type:"text",class:"form-input",placeholder:t.t("agents.opencodeAddressPlaceholder")},null,8,EH),[[ye,t.proxyForm.opencode.address]])]),s("div",SH,[s("label",null,d(t.t("agents.opencodePort")),1),Q(s("input",{"onUpdate:modelValue":e[27]||(e[27]=b=>t.proxyForm.opencode.port=b),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,bH),[[ye,t.proxyForm.opencode.port,void 0,{number:!0}]])]),s("div",hH,[s("label",null,d(t.t("agents.opencodePassword")),1),Q(s("input",{"onUpdate:modelValue":e[28]||(e[28]=b=>t.proxyForm.opencode.password=b),type:"password",class:"form-input",placeholder:t.t("agents.opencodePasswordPlaceholder"),autocomplete:"off"},null,8,TH),[[ye,t.proxyForm.opencode.password]])]),s("div",vH,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[29]||(e[29]=b=>t.proxyForm.opencode.model=b),class:"form-input"},[s("option",CH,d(t.t("agents.opencodeUseServerDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,b=>(g(),f("option",{key:b.id,value:b.id},d(b.label)+d(b.free?" (Free)":""),9,yH))),128))],512),[[dt,t.proxyForm.opencode.model]])])],64))],64)):V("",!0),s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[30]||(e[30]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,RH)],512),[[ht,t.activeTab==="proxy"]]),Q(s("div",NH,[s("div",OH,[s("h2",AH,d(t.t("agents.skillsConfig")),1),s("div",IH,[s("button",{class:"btn-secondary",onClick:e[31]||(e[31]=(...b)=>t.openSmartInstallModal&&t.openSmartInstallModal(...b))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[32]||(e[32]=b=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])]),t.skillsLoading?(g(),f("div",DH,[e[73]||(e[73]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.agentSkills.length===0?(g(),f("div",wH,[e[74]||(e[74]=s("div",{class:"empty-icon"},"🎯",-1)),s("p",null,d(t.t("skills.noSkills")),1),s("div",kH,[s("button",{class:"btn-secondary",onClick:e[34]||(e[34]=(...b)=>t.openSmartInstallModal&&t.openSmartInstallModal(...b))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[35]||(e[35]=b=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])])):(g(),f("div",MH,[(g(!0),f(te,null,Le(t.agentSkills,b=>(g(),f("div",{key:b.name,class:"skill-card card-glass",onClick:y=>t.openSkillDetail(b)},[e[75]||(e[75]=s("span",{class:"skill-card-icon"},"🎯",-1)),s("span",LH,d(b.name),1),s("p",PH,d(b.description),1),t.canDeleteWorkspaceSkill?(g(),f("button",{key:0,type:"button",class:"link-btn danger skill-delete",onClick:Be(y=>t.confirmDeleteSkill(b),["stop"])},d(t.t("common.delete")),9,UH)):V("",!0)],8,xH))),128))]))],512),[[ht,t.activeTab==="skills"]]),Q(s("div",FH,[s("h2",BH,d(t.t("agents.mcpConfig")),1),s("p",GH,d(t.t("agents.mcpConfigHint")),1),s("p",YH,d(t.t("agents.mcpTestHint")),1),s("div",HH,[(g(!0),f(te,null,Le(t.mcpServers,(b,y)=>(g(),f("div",{key:y,class:"mcp-item card-glass"},[s("span",{class:Oe(["mcp-item-badge",b.url?"badge-remote":"badge-local"])},d(b.url?t.t("agents.mcpTransportSse"):t.t("agents.mcpTransportStdio")),3),s("span",qH,d(y),1),s("span",VH,d(t.mcpServerDisplayText(b)),1),s("div",zH,[s("button",{type:"button",class:"link-btn",disabled:t.mcpTestState[y]==="loading",onClick:w=>t.testMcpServer(y,b)},d(t.mcpTestState[y]==="loading"?t.t("agents.mcpTestTesting"):t.t("agents.mcpTest")),9,WH),t.mcpTestState[y]&&t.mcpTestState[y]!=="loading"?(g(),f("span",{key:0,class:Oe(["mcp-test-result",t.mcpTestState[y].success?"success":"error"])},[t.mcpTestState[y].success?(g(),f(te,{key:0},[s("span",KH,d(t.t("agents.mcpTestSuccessStatus")),1),ze(" "+d(t.t("agents.mcpTestSuccess",{count:t.mcpTestState[y].toolsCount})),1)],64)):(g(),f(te,{key:1},[ze(d(t.mcpTestState[y].error),1)],64))],2)):V("",!0),s("button",{type:"button",class:"link-btn",onClick:w=>t.startEditMcp(y)},d(t.t("common.edit")),9,QH),s("button",{type:"button",class:"link-btn danger",onClick:w=>t.removeMcpServer(y)},d(t.t("common.delete")),9,$H)])]))),128))]),s("div",XH,[s("label",ZH,d(t.t("agents.mcpMaxResultTokens")),1),Q(s("select",{"onUpdate:modelValue":e[37]||(e[37]=b=>t.mcpMaxResultTokensForm=b),class:"form-input"},[s("option",JH,d(t.t("agents.mcpMaxResultTokensNoLimit")),1),e[76]||(e[76]=Va('<option value="8000" data-v-3c412668>8K</option><option value="16000" data-v-3c412668>16K</option><option value="32000" data-v-3c412668>32K</option><option value="48000" data-v-3c412668>48K</option><option value="64000" data-v-3c412668>64K</option>',5))],512),[[dt,t.mcpMaxResultTokensForm]]),s("p",jH,d(t.t("agents.mcpMaxResultTokensHint")),1)]),t.mcpFormVisible||t.mcpEditingKey!==null?(g(),f("div",eq,[s("h3",tq,d(t.mcpEditingKey!==null?t.t("agents.editMcpServer"):t.t("agents.addMcpServer")),1),s("div",nq,[s("label",oq,d(t.t("agents.mcpServerName")),1),Q(s("input",{"onUpdate:modelValue":e[38]||(e[38]=b=>t.mcpForm.name=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpServerNamePlaceholder"),readonly:t.mcpEditingKey!==null},null,8,aq),[[ye,t.mcpForm.name]])]),s("div",rq,[s("label",sq,d(t.t("agents.mcpTransportType")),1),s("div",iq,[s("button",{type:"button",class:Oe(["transport-tab",{active:t.mcpForm.transport==="stdio"}]),onClick:e[39]||(e[39]=b=>t.mcpForm.transport="stdio")},[e[77]||(e[77]=s("span",{class:"transport-tab-icon"},"🖥️",-1)),s("span",lq,d(t.t("agents.mcpTransportStdio")),1),s("span",cq,d(t.t("agents.mcpTransportStdioHint")),1)],2),s("button",{type:"button",class:Oe(["transport-tab",{active:t.mcpForm.transport==="sse"}]),onClick:e[40]||(e[40]=b=>t.mcpForm.transport="sse")},[e[78]||(e[78]=s("span",{class:"transport-tab-icon"},"🌐",-1)),s("span",dq,d(t.t("agents.mcpTransportSse")),1),s("span",_q,d(t.t("agents.mcpTransportSseHint")),1)],2)])]),t.mcpForm.transport==="stdio"?(g(),f(te,{key:0},[s("div",uq,[s("label",mq,d(t.t("agents.mcpCommand")),1),Q(s("input",{"onUpdate:modelValue":e[41]||(e[41]=b=>t.mcpForm.command=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpCommandPlaceholder")},null,8,pq),[[ye,t.mcpForm.command]])]),s("div",gq,[s("label",fq,d(t.t("agents.mcpArgs")),1),Q(s("input",{"onUpdate:modelValue":e[42]||(e[42]=b=>t.mcpForm.argsStr=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpArgsPlaceholder")},null,8,Eq),[[ye,t.mcpForm.argsStr]])]),s("div",Sq,[s("label",bq,d(t.t("agents.mcpEnv")),1),Q(s("textarea",{"onUpdate:modelValue":e[43]||(e[43]=b=>t.mcpForm.envStr=b),class:"form-input form-textarea",rows:"3",placeholder:t.t("agents.mcpEnvPlaceholder")},null,8,hq),[[ye,t.mcpForm.envStr]])])],64)):(g(),f(te,{key:1},[s("div",Tq,[s("label",vq,d(t.t("agents.mcpUrl")),1),Q(s("input",{"onUpdate:modelValue":e[44]||(e[44]=b=>t.mcpForm.url=b),type:"url",class:"form-input",placeholder:t.t("agents.mcpUrlPlaceholder")},null,8,Cq),[[ye,t.mcpForm.url]])]),s("div",yq,[s("label",Rq,d(t.t("agents.mcpHeaders")),1),Q(s("textarea",{"onUpdate:modelValue":e[45]||(e[45]=b=>t.mcpForm.headersStr=b),class:"form-input form-textarea",rows:"2",placeholder:t.t("agents.mcpHeadersPlaceholder")},null,8,Nq),[[ye,t.mcpForm.headersStr]])])],64)),t.mcpFormError?(g(),f("p",Oq,d(t.mcpFormError),1)):V("",!0),t.mcpFormTestResult?(g(),f("div",{key:3,class:Oe(["form-hint mcp-form-test-result",t.mcpFormTestResult.success?"success":"error"])},[t.mcpFormTestResult.success?(g(),f(te,{key:0},[s("span",Aq,d(t.t("agents.mcpTestSuccessStatus")),1),ze(" "+d(t.t("agents.mcpTestSuccess",{count:t.mcpFormTestResult.toolsCount})),1)],64)):(g(),f(te,{key:1},[ze(d(t.mcpFormTestResult.error),1)],64))],2)):V("",!0),s("div",Iq,[s("button",{type:"button",class:"btn-secondary",disabled:t.mcpFormTestLoading,onClick:e[46]||(e[46]=(...b)=>t.testMcpForm&&t.testMcpForm(...b))},d(t.mcpFormTestLoading?t.t("agents.mcpTestTesting"):t.t("agents.mcpTest")),9,Dq),s("button",{type:"button",class:"btn-secondary",onClick:e[47]||(e[47]=(...b)=>t.cancelMcpForm&&t.cancelMcpForm(...b))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",onClick:e[48]||(e[48]=(...b)=>t.saveMcpServer&&t.saveMcpServer(...b))},d(t.mcpEditingKey!==null?t.t("agents.saveMcpServer"):t.t("agents.addMcpServer")),1)])])):(g(),f("button",{key:1,type:"button",class:"btn-secondary btn-add-mcp",onClick:e[49]||(e[49]=(...b)=>t.openAddMcp&&t.openAddMcp(...b))},d(t.t("agents.addMcpServer")),1)),s("div",wq,[s("h3",kq,d(t.t("agents.mcpStandardJson")),1),s("p",Mq,d(t.t("agents.mcpStandardJsonHint")),1),Q(s("textarea",{"onUpdate:modelValue":e[50]||(e[50]=b=>t.mcpStandardJsonString=b),class:"form-input form-textarea mcp-json-textarea",rows:"12",spellcheck:"false"},null,512),[[ye,t.mcpStandardJsonString]]),t.mcpJsonError?(g(),f("p",xq,d(t.mcpJsonError),1)):V("",!0),s("div",Lq,[s("button",{type:"button",class:"btn-primary",onClick:e[51]||(e[51]=(...b)=>t.applyMcpJson&&t.applyMcpJson(...b))},d(t.t("agents.mcpApplyJson")),1)])]),s("p",Pq,d(t.t("agents.mcpSaveHint")),1),s("div",Uq,[s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[52]||(e[52]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,Fq)])],512),[[ht,t.activeTab==="mcp"]])])]),t.showSmartInstallModal?(g(),Gt(r,{key:0,"target-agent-id":((h=t.agent)==null?void 0:h.id)??"default","session-id":"skill-install",onClose:t.closeSmartInstallModal,onInstalled:n.loadSkills},null,8,["target-agent-id","onClose","onInstalled"])):V("",!0),Ae(c,{show:t.showLocalInstallModal,scope:"workspace",workspace:((A=t.agent)==null?void 0:A.workspace)??"default",onClose:e[53]||(e[53]=b=>t.showLocalInstallModal=!1),onInstalled:t.onLocalInstalled},null,8,["show","workspace","onInstalled"]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showManualInstallModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[58]||(e[58]=Be(b=>t.showManualInstallModal=!1,["self"]))},[s("div",Bq,[s("div",Gq,[s("h2",null,d(t.t("agents.installManual")),1),s("button",{type:"button",class:"close-btn",onClick:e[54]||(e[54]=b=>t.showManualInstallModal=!1)},"✕")]),s("div",Yq,[s("p",Hq,d(t.t("agents.installManualHint")),1),s("div",qq,[s("label",null,d(t.t("agents.skillGitUrl")),1),Q(s("input",{"onUpdate:modelValue":e[55]||(e[55]=b=>t.manualInstallUrl=b),type:"text",class:"form-input",placeholder:t.t("agents.skillGitUrlPlaceholder")},null,8,Vq),[[ye,t.manualInstallUrl]])]),t.installError?(g(),f("p",zq,d(t.installError),1)):V("",!0),s("div",Wq,[s("button",{type:"button",class:"btn-secondary",onClick:e[56]||(e[56]=b=>t.showManualInstallModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.installManualSaving,onClick:e[57]||(e[57]=(...b)=>n.doManualInstall&&n.doManualInstall(...b))},d(t.installManualSaving?t.t("common.loading"):t.t("agents.installConfirm")),9,Kq)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.selectedSkill?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[60]||(e[60]=Be(b=>t.selectedSkill=null,["self"]))},[s("div",Qq,[s("div",$q,[s("h2",null,d(t.selectedSkill.name),1),s("button",{type:"button",class:"close-btn",onClick:e[59]||(e[59]=b=>t.selectedSkill=null)},"✕")]),s("div",Xq,[t.skillDetailContent?(g(),f("div",{key:0,class:"skill-documentation markdown-body",innerHTML:t.renderedSkillContent},null,8,Zq)):(g(),f("div",Jq,d(t.t("skills.noDocumentation")),1))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var b;return[t.deleteSkillTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[64]||(e[64]=Be(y=>t.deleteSkillTarget=null,["self"]))},[s("div",jq,[s("div",eV,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[61]||(e[61]=y=>t.deleteSkillTarget=null)},"✕")]),s("div",tV,[s("p",null,d(t.t("agents.deleteSkillConfirm")),1),s("p",nV,d((b=t.deleteSkillTarget)==null?void 0:b.name),1),s("div",oV,[s("button",{type:"button",class:"btn-secondary",onClick:e[62]||(e[62]=y=>t.deleteSkillTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[63]||(e[63]=(...y)=>t.doDeleteSkill&&t.doDeleteSkill(...y))},d(t.t("common.delete")),1)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var b,y,w;return[t.installSuccessPayload?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[67]||(e[67]=Be(k=>t.installSuccessPayload=null,["self"]))},[s("div",aV,[s("div",rV,[s("h2",null,d(t.t("agents.installSuccess")),1),s("button",{type:"button",class:"close-btn",onClick:e[65]||(e[65]=k=>t.installSuccessPayload=null)},"✕")]),s("div",sV,[(b=t.installSuccessPayload)!=null&&b.name?(g(),f("p",iV,[s("span",lV,d(t.t("agents.installSuccessName"))+":",1),s("span",cV,d(t.installSuccessPayload.name),1)])):V("",!0),s("p",dV,[s("span",_V,d(t.t("agents.installSuccessDir"))+":",1),s("span",{class:"value dir",title:(y=t.installSuccessPayload)==null?void 0:y.installDir},d((w=t.installSuccessPayload)==null?void 0:w.installDir),9,uV)]),s("div",mV,[s("button",{type:"button",class:"btn-primary",onClick:e[66]||(e[66]=k=>t.installSuccessPayload=null)},d(t.t("common.confirm")),1)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showDeleteConfirm?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[71]||(e[71]=Be(b=>t.showDeleteConfirm=!1,["self"]))},[s("div",pV,[s("p",gV,d(t.t("agents.deleteAgentConfirm")),1),t.agent?(g(),f("p",fV,d(t.agent.name),1)):V("",!0),s("label",EV,[Q(s("input",{type:"checkbox","onUpdate:modelValue":e[68]||(e[68]=b=>t.deleteWorkspaceDir=b)},null,512),[[zn,t.deleteWorkspaceDir]]),s("span",null,d(t.t("agents.deleteAgentAlsoDeleteDir")),1)]),s("div",SV,[s("button",{type:"button",class:"btn-secondary",onClick:e[69]||(e[69]=b=>t.showDeleteConfirm=!1)},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary danger",disabled:t.deleteAgentSaving,onClick:e[70]||(e[70]=(...b)=>t.doDeleteAgent&&t.doDeleteAgent(...b))},d(t.deleteAgentSaving?t.t("common.loading"):t.t("agents.deleteAgent")),9,bV)])])])):V("",!0)]),_:1})],64)):(g(),f("div",y2,[s("p",null,d(t.t("agents.notFound")),1),Ae(i,{to:"/agents",class:"btn-primary"},{default:Ve(()=>[ze(d(t.t("agents.backToList")),1)]),_:1})]))])}const TV=st(T2,[["render",hV],["__scopeId","data-v-3c412668"]]),vV=[{value:0,label:"日"},{value:1,label:"一"},{value:2,label:"二"},{value:3,label:"三"},{value:4,label:"四"},{value:5,label:"五"},{value:6,label:"六"}];function CV(n){var l;const[e,o]=(n.time||"09:00").split(":").map(Number),t=o??0,a=e??9;switch(n.type){case"daily":return`${t} ${a} * * *`;case"weekdays":return`${t} ${a} * * 1-5`;case"weekends":return`${t} ${a} * * 0,6`;case"weekly":return(l=n.days)!=null&&l.length?`${t} ${a} * * ${[...n.days].sort((i,r)=>i-r).join(",")}`:`${t} ${a} * * *`;case"monthly":{const i=Math.min(n.dayOfMonth??1,31);return`${t} ${a} ${i} * *`}default:return`${t} ${a} * * *`}}function yV(n){const e=new Date(n),o=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0");return`${o}-${t}-${a}T${l}:${i}`}const RV={name:"Tasks",setup(){const{t:n}=Ot(),e=D([]),o=D([]),t=D(!0),a=D(!1),l=D(null),i=D(null),r=D(null),c=D([]),u=D(!1),_=D(null),m=D(!1),p=D(""),E=D({workspace:"default",message:"",scheduleType:"once",runAtLocal:"",repeatType:"daily",time:"09:00",weeklyDays:[1,2,3,4,5],dayOfMonth:1});function S(G){return G.scheduleType==="once"&&G.runAt?`${n("tasks.once")}: ${T(G.runAt)}`:G.cronExpr?`${n("tasks.repeating")} (${G.cronExpr})`:G.repeatRuleJson||n("tasks.repeating")}function T(G){return new Date(G).toLocaleString()}async function h(){var G;try{const H=await ao.list();e.value=((G=H.data)==null?void 0:G.data)??[]}catch(H){console.error("Load tasks failed",H),e.value=[]}}async function A(){var G;try{const R=((G=(await Xt.listAgents()).data)==null?void 0:G.data)??[];o.value=R.length?R:[{id:"default",name:"主智能体",workspace:"default"}],o.value.length&&!E.value.workspace&&(E.value.workspace=o.value[0].workspace)}catch{o.value=[{id:"default",name:"主智能体",workspace:"default"}]}}function b(){var G;l.value=null,E.value={workspace:((G=o.value[0])==null?void 0:G.workspace)??"default",message:"",scheduleType:"once",runAtLocal:"",repeatType:"daily",time:"09:00",weeklyDays:[1,2,3,4,5],dayOfMonth:1},p.value="",a.value=!0}function y(G){l.value=G.id;const H=G.repeatRuleJson?(()=>{try{return JSON.parse(G.repeatRuleJson)}catch{return{type:"daily",time:"09:00"}}})():{type:"daily",time:"09:00"};E.value={workspace:G.workspace,message:G.message,scheduleType:G.scheduleType,runAtLocal:G.runAt?yV(G.runAt):"",repeatType:H.type||"daily",time:H.time||"09:00",weeklyDays:Array.isArray(H.days)?[...H.days]:[1,2,3,4,5],dayOfMonth:Math.min(31,Math.max(1,H.dayOfMonth??1))},p.value="",a.value=!0}function w(){a.value=!1}function k(){const G=E.value,H={type:G.repeatType,time:G.time};return G.repeatType==="weekly"&&(H.days=[...G.weeklyDays||[]]),G.repeatType==="monthly"&&(H.dayOfMonth=Math.min(31,Math.max(1,G.dayOfMonth||1))),H}async function B(){var H,R;p.value="";const G=(E.value.message||"").trim();if(!G){p.value="请填写消息内容";return}if(E.value.scheduleType==="once"&&!E.value.runAtLocal){p.value="请选择执行时间";return}m.value=!0;try{if(l.value){const P={message:G,scheduleType:E.value.scheduleType};if(E.value.scheduleType==="once")P.runAt=new Date(E.value.runAtLocal).getTime();else{const oe=k();P.repeatRuleJson=JSON.stringify(oe),P.cronExpr=CV(oe)}await ao.update(l.value,P)}else{const P={workspace:E.value.workspace,message:G,scheduleType:E.value.scheduleType};E.value.scheduleType==="once"?P.runAt=new Date(E.value.runAtLocal).getTime():P.repeatRule=k(),await ao.create(P)}w(),await h()}catch(P){p.value=((R=(H=P.response)==null?void 0:H.data)==null?void 0:R.message)||P.message||(l.value?"保存失败":"创建失败")}finally{m.value=!1}}async function X(G){try{await ao.update(G.id,{enabled:!G.enabled}),await h()}catch(H){console.error("Toggle task failed",H)}}async function x(G){var H;if(G!=null&&G.id){r.value=G,_.value=null,c.value=[],u.value=!0;try{const R=await ao.listExecutions(G.id),P=((H=R==null?void 0:R.data)==null?void 0:H.data)??(R==null?void 0:R.data);c.value=Array.isArray(P)?P:[]}catch(R){console.error("Load executions failed",R),c.value=[]}finally{u.value=!1}}}function U(){r.value=null,c.value=[],_.value=null}function re(G){_.value=G}async function se(){var G,H;if((G=r.value)!=null&&G.id&&confirm(n("tasks.clearExecutionsConfirm")))try{await ao.clearExecutions(r.value.id),_.value=null;const R=await ao.listExecutions(r.value.id),P=((H=R==null?void 0:R.data)==null?void 0:H.data)??(R==null?void 0:R.data);c.value=Array.isArray(P)?P:[]}catch(R){console.error("Clear executions failed",R)}}function ne(G){i.value=G}async function Te(){if(i.value)try{await ao.delete(i.value.id),i.value=null,await h()}catch(G){console.error("Delete task failed",G)}}return Yt(async()=>{t.value=!0,await A(),await h(),t.value=!1}),{t:n,tasks:e,agents:o,loading:t,showModal:a,editingId:l,form:E,formError:p,saving:m,deleteTarget:i,weekDays:vV,scheduleLabel:S,formatTime:T,openCreateModal:b,closeModal:w,submitTask:B,toggleEnabled:X,openExecutions:x,closeExecutions:U,openExecutionDetail:re,clearExecutionsForTask:se,executionsTask:r,executions:c,executionsLoading:u,executionDetail:_,openEditModal:y,confirmDelete:ne,doDelete:Te}}},NV={class:"tasks-view"},OV={class:"tasks-header card-glass"},AV={class:"header-left"},IV={class:"view-title"},DV={class:"text-secondary"},wV={key:0,class:"loading-state"},kV={key:1,class:"empty-state"},MV={class:"text-secondary"},xV={key:2,class:"tasks-list"},LV={class:"task-main"},PV={class:"task-workspace"},UV={class:"task-message"},FV={class:"task-schedule text-secondary"},BV={key:0,class:"task-meta text-secondary"},GV={class:"task-actions"},YV=["title","onClick"],HV=["onClick"],qV=["onClick"],VV=["onClick"],zV={class:"modal-content card-glass modal-wide"},WV={class:"modal-header"},KV={class:"modal-body"},QV={class:"form-group"},$V=["disabled"],XV=["value"],ZV={class:"form-group"},JV=["placeholder"],jV={class:"form-group"},ez={value:"once"},tz={value:"cron"},nz={key:0,class:"form-group"},oz={class:"form-group"},az={value:"daily"},rz={value:"weekdays"},sz={value:"weekends"},iz={value:"weekly"},lz={value:"monthly"},cz={class:"form-group"},dz={key:0,class:"form-group"},_z={class:"weekdays-row"},uz=["value"],mz={key:1,class:"form-group"},pz={key:2,class:"form-error"},gz={class:"modal-footer-actions"},fz=["disabled"],Ez={class:"modal-content card-glass modal-wide executions-modal"},Sz={class:"modal-header"},bz={class:"modal-body"},hz={key:0,class:"executions-list"},Tz={key:0,class:"executions-actions"},vz={key:1,class:"loading-state small"},Cz={key:2,class:"text-secondary"},yz=["onClick"],Rz={class:"execution-time"},Nz={key:1,class:"execution-detail"},Oz={class:"detail-meta"},Az={key:0,class:"error-msg"},Iz={class:"conversation-log"},Dz={class:"log-block user"},wz={class:"log-role"},kz={class:"log-content"},Mz={key:0,class:"log-block assistant"},xz={class:"log-role"},Lz={class:"log-content"},Pz={key:1,class:"log-block assistant"},Uz={class:"log-role"},Fz={class:"text-secondary"},Bz={class:"modal-content card-glass delete-confirm-modal"},Gz={class:"modal-header"},Yz={class:"modal-body"},Hz={class:"modal-footer-actions"};function qz(n,e,o,t,a,l){return g(),f("div",NV,[s("div",OV,[s("div",AV,[s("h1",IV,d(t.t("tasks.title")),1),s("p",DV,d(t.t("tasks.subtitle")),1)]),s("button",{class:"btn-primary",onClick:e[0]||(e[0]=(...i)=>t.openCreateModal&&t.openCreateModal(...i))},[e[23]||(e[23]=s("span",{class:"btn-icon"},"+",-1)),ze(" "+d(t.t("tasks.addTask")),1)])]),t.loading?(g(),f("div",wV,[e[24]||(e[24]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.tasks.length===0?(g(),f("div",kV,[e[25]||(e[25]=s("div",{class:"empty-icon"},"⏰",-1)),s("p",null,d(t.t("tasks.noTasks")),1),s("p",MV,d(t.t("tasks.noTasksHint")),1),s("button",{class:"btn-primary mt-4",onClick:e[1]||(e[1]=(...i)=>t.openCreateModal&&t.openCreateModal(...i))},d(t.t("tasks.addTask")),1)])):(g(),f("div",xV,[(g(!0),f(te,null,Le(t.tasks,i=>(g(),f("div",{key:i.id,class:Oe(["task-card card-glass",{disabled:!i.enabled}])},[s("div",LV,[s("span",PV,d(i.workspace),1),s("p",UV,d(i.message.slice(0,80))+d(i.message.length>80?"…":""),1),s("p",FV,d(t.scheduleLabel(i)),1),i.lastRunAt?(g(),f("p",BV,d(t.t("tasks.lastRun"))+": "+d(t.formatTime(i.lastRunAt)),1)):V("",!0)]),s("div",GV,[s("button",{type:"button",class:"link-btn",title:i.enabled?t.t("tasks.enabled"):t.t("tasks.disabled"),onClick:r=>t.toggleEnabled(i)},d(i.enabled?"✓":"○"),9,YV),s("button",{type:"button",class:"link-btn",onClick:r=>t.openExecutions(i)},d(t.t("tasks.executions")),9,HV),s("button",{type:"button",class:"link-btn",onClick:r=>t.openEditModal(i)},d(t.t("tasks.edit")),9,qV),s("button",{type:"button",class:"link-btn danger",onClick:r=>t.confirmDelete(i)},d(t.t("common.delete")),9,VV)])],2))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>[t.showModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[13]||(e[13]=Be((...i)=>t.closeModal&&t.closeModal(...i),["self"]))},[s("div",zV,[s("div",WV,[s("h2",null,d(t.editingId?t.t("tasks.editTask"):t.t("tasks.addTask")),1),s("button",{type:"button",class:"close-btn",onClick:e[2]||(e[2]=(...i)=>t.closeModal&&t.closeModal(...i))},"✕")]),s("div",KV,[s("div",QV,[s("label",null,d(t.t("tasks.workspace")),1),Q(s("select",{"onUpdate:modelValue":e[3]||(e[3]=i=>t.form.workspace=i),class:"form-input",disabled:!!t.editingId},[(g(!0),f(te,null,Le(t.agents,i=>(g(),f("option",{key:i.id,value:i.workspace},d(i.name)+" ("+d(i.workspace)+") ",9,XV))),128))],8,$V),[[dt,t.form.workspace]])]),s("div",ZV,[s("label",null,d(t.t("tasks.message")),1),Q(s("textarea",{"onUpdate:modelValue":e[4]||(e[4]=i=>t.form.message=i),class:"form-input",rows:"3",placeholder:t.t("tasks.messagePlaceholder")},null,8,JV),[[ye,t.form.message]])]),s("div",jV,[s("label",null,d(t.t("tasks.scheduleType")),1),Q(s("select",{"onUpdate:modelValue":e[5]||(e[5]=i=>t.form.scheduleType=i),class:"form-input"},[s("option",ez,d(t.t("tasks.once")),1),s("option",tz,d(t.t("tasks.repeating")),1)],512),[[dt,t.form.scheduleType]])]),t.form.scheduleType==="once"?(g(),f("div",nz,[s("label",null,d(t.t("tasks.runAt")),1),Q(s("input",{"onUpdate:modelValue":e[6]||(e[6]=i=>t.form.runAtLocal=i),type:"datetime-local",class:"form-input"},null,512),[[ye,t.form.runAtLocal]])])):(g(),f(te,{key:1},[s("div",oz,[s("label",null,d(t.t("tasks.repeatType")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=i=>t.form.repeatType=i),class:"form-input"},[s("option",az,d(t.t("tasks.daily")),1),s("option",rz,d(t.t("tasks.weekdays")),1),s("option",sz,d(t.t("tasks.weekends")),1),s("option",iz,d(t.t("tasks.weekly")),1),s("option",lz,d(t.t("tasks.monthly")),1)],512),[[dt,t.form.repeatType]])]),s("div",cz,[s("label",null,d(t.t("tasks.time")),1),Q(s("input",{"onUpdate:modelValue":e[8]||(e[8]=i=>t.form.time=i),type:"time",class:"form-input"},null,512),[[ye,t.form.time]])]),t.form.repeatType==="weekly"?(g(),f("div",dz,[s("label",null,d(t.t("tasks.weekdaySelect")),1),s("div",_z,[(g(!0),f(te,null,Le(t.weekDays,i=>(g(),f("label",{key:i.value,class:"weekday-check"},[Q(s("input",{"onUpdate:modelValue":e[9]||(e[9]=r=>t.form.weeklyDays=r),type:"checkbox",value:i.value},null,8,uz),[[zn,t.form.weeklyDays]]),ze(" "+d(i.label),1)]))),128))])])):V("",!0),t.form.repeatType==="monthly"?(g(),f("div",mz,[s("label",null,d(t.t("tasks.dayOfMonth")),1),Q(s("input",{"onUpdate:modelValue":e[10]||(e[10]=i=>t.form.dayOfMonth=i),type:"number",min:"1",max:"31",class:"form-input"},null,512),[[ye,t.form.dayOfMonth,void 0,{number:!0}]])])):V("",!0)],64)),t.formError?(g(),f("p",pz,d(t.formError),1)):V("",!0),s("div",gz,[s("button",{type:"button",class:"btn-secondary",onClick:e[11]||(e[11]=(...i)=>t.closeModal&&t.closeModal(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.saving,onClick:e[12]||(e[12]=(...i)=>t.submitTask&&t.submitTask(...i))},d(t.saving?t.t("common.loading"):t.editingId?t.t("tasks.save"):t.t("agents.create")),9,fz)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.executionsTask?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[18]||(e[18]=Be((...i)=>t.closeExecutions&&t.closeExecutions(...i),["self"]))},[s("div",Ez,[s("div",Sz,[s("h2",null,d(t.t("tasks.executions"))+": "+d(t.executionsTask.message.slice(0,30))+d(t.executionsTask.message.length>30?"…":""),1),s("button",{type:"button",class:"close-btn",onClick:e[14]||(e[14]=(...i)=>t.closeExecutions&&t.closeExecutions(...i))},"✕")]),s("div",bz,[t.executionDetail?(g(),f("div",Nz,[s("button",{type:"button",class:"link-btn back-link",onClick:e[16]||(e[16]=i=>t.executionDetail=null)},"← "+d(t.t("tasks.backToList")),1),s("button",{type:"button",class:"link-btn danger clear-executions-detail-btn",onClick:e[17]||(e[17]=(...i)=>t.clearExecutionsForTask&&t.clearExecutionsForTask(...i))},d(t.t("tasks.clearExecutions")),1),s("p",Oz,[s("span",null,d(t.formatTime(t.executionDetail.ranAt)),1),s("span",{class:Oe(["execution-status",t.executionDetail.status])},d(t.executionDetail.status==="success"?t.t("tasks.statusSuccess"):t.t("tasks.statusFailed")),3),t.executionDetail.errorMessage?(g(),f("span",Az,d(t.executionDetail.errorMessage),1)):V("",!0)]),s("div",Iz,[s("h4",null,d(t.t("tasks.conversationLog")),1),s("div",Dz,[s("span",wz,d(t.t("tasks.userMessage")),1),s("pre",kz,d(t.executionDetail.userMessage),1)]),t.executionDetail.assistantContent?(g(),f("div",Mz,[s("span",xz,d(t.t("tasks.assistantReply")),1),s("pre",Lz,d(t.executionDetail.assistantContent),1)])):t.executionDetail.errorMessage?(g(),f("div",Pz,[s("span",Uz,d(t.t("tasks.assistantReply")),1),s("p",Fz,d(t.t("tasks.noReplyDueToError")),1)])):V("",!0)])])):(g(),f("div",hz,[t.executions.length>0?(g(),f("div",Tz,[s("button",{type:"button",class:"link-btn danger",onClick:e[15]||(e[15]=(...i)=>t.clearExecutionsForTask&&t.clearExecutionsForTask(...i))},d(t.t("tasks.clearExecutions")),1)])):V("",!0),t.executionsLoading?(g(),f("div",vz,d(t.t("common.loading")),1)):t.executions.length===0?(g(),f("p",Cz,d(t.t("tasks.noExecutions")),1)):(g(!0),f(te,{key:3},Le(t.executions,i=>(g(),f("div",{key:i.id,class:"execution-row",onClick:r=>t.openExecutionDetail(i)},[s("span",Rz,d(t.formatTime(i.ranAt)),1),s("span",{class:Oe(["execution-status",i.status])},d(i.status==="success"?t.t("tasks.statusSuccess"):t.t("tasks.statusFailed")),3)],8,yz))),128))]))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[22]||(e[22]=Be(i=>t.deleteTarget=null,["self"]))},[s("div",Bz,[s("div",Gz,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[19]||(e[19]=i=>t.deleteTarget=null)},"✕")]),s("div",Yz,[s("p",null,d(t.t("tasks.deleteConfirm")),1),s("div",Hz,[s("button",{type:"button",class:"btn-secondary",onClick:e[20]||(e[20]=i=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[21]||(e[21]=(...i)=>t.doDelete&&t.doDelete(...i))},d(t.t("common.delete")),1)])])])])):V("",!0)]),_:1})])}const Vz=st(RV,[["render",qz],["__scopeId","data-v-354fec67"]]),zz={name:"SettingsSkills",components:{SkillCard:rh,SmartInstallDialog:sh,LocalInstallSkillDialog:ih},setup(){const{t:n}=Ot(),e=Jn(),o=D("system"),t=D([]),a=D(!1),l=D(!1),i=D(null),r=D(""),c=D(!1),u=D(""),_=D(""),m=D(!1),p=D(null),E=D(!1),S=D(!1),T=D(!1),h=D(null),A=ae(()=>t.value.filter(H=>(H.source||"system")==="system")),b=ae(()=>t.value.filter(H=>(H.source||"global")==="global")),y=ae(()=>r.value?ot(r.value):""),w=ae(()=>`${n("agents.installSmart")} (${n("skills.sources.global")})`);async function k(){var H;a.value=!0,l.value=!0;try{const R=await rn.getSkills();t.value=((H=R.data)==null?void 0:H.data)??[]}catch{t.value=[]}finally{a.value=!1,l.value=!1}}async function B(){var H;l.value=!0;try{const P=((H=(await rn.getSkills(void 0,"global")).data)==null?void 0:H.data)??[];t.value=[...t.value.filter(oe=>(oe.source||"")!=="global"),...P]}catch{}finally{l.value=!1}}function X(H){i.value=H,r.value="",rn.getSkillContent(H.name).then(R=>{var P,oe;r.value=((oe=(P=R.data)==null?void 0:P.data)==null?void 0:oe.content)??""}).catch(()=>{})}function x(H){k(),h.value=H&&(H.installDir||H.name)?H:null}function U(){u.value="",_.value="",c.value=!0}async function re(){var R,P;const H=(u.value||"").trim();if(!H){_.value=n("agents.skillGitUrl");return}_.value="",m.value=!0;try{await rn.installSkill(H,{scope:"global"}),c.value=!1,u.value="",await k()}catch(oe){_.value=((P=(R=oe.response)==null?void 0:R.data)==null?void 0:P.message)||oe.message||n("agents.installFailed")}finally{m.value=!1}}function se(H){p.value=H}async function ne(){if(p.value){E.value=!0;try{await rn.deleteSkill(void 0,p.value.name,"global"),p.value=null,await k()}catch(H){console.error(H)}finally{E.value=!1}}}function Te(){e.clearCurrentSession(),S.value=!0}function G(){S.value=!1}return nt(o,H=>{H==="global"&&B()}),Yt(()=>{k()}),{t:n,skillsSubTab:o,systemSkills:A,globalSkills:b,systemLoading:a,globalLoading:l,detailSkill:i,detailContent:r,detailContentRendered:y,openDetail:X,showManualModal:c,manualUrl:u,installError:_,manualSaving:m,openManualInstall:U,doManualInstall:re,deleteTarget:p,deleteSaving:E,confirmDelete:se,doDelete:ne,showSmartModal:S,showLocalInstallModal:T,installSuccessPayload:h,onLocalInstalled:x,openSmartInstall:Te,closeSmartInstall:G,smartInstallDialogTitle:w}}},Wz={class:"settings-skills"},Kz={class:"tab-title"},Qz={class:"skills-sub-tabs"},$z={class:"skills-panel"},Xz={class:"panel-desc"},Zz={key:0,class:"loading-state"},Jz={key:1,class:"empty-state"},jz={key:2,class:"skills-grid"},eW={class:"skills-panel"},tW={class:"panel-toolbar"},nW={class:"panel-desc"},oW={class:"panel-actions"},aW={key:0,class:"loading-state"},rW={key:1,class:"empty-state"},sW={class:"empty-actions"},iW={key:2,class:"skills-grid"},lW=["onClick"],cW={class:"modal-content card-glass skill-detail-modal"},dW={class:"modal-header"},_W={class:"modal-body"},uW=["innerHTML"],mW={key:1,class:"no-content"},pW={class:"modal-content card-glass"},gW={class:"modal-header"},fW={class:"modal-body"},EW={class:"form-hint"},SW={class:"form-group"},bW=["placeholder"],hW={key:0,class:"form-error"},TW={class:"modal-footer-actions"},vW=["disabled"],CW={class:"modal-content card-glass"},yW={class:"modal-header"},RW={class:"modal-body"},NW={class:"delete-target-name"},OW={class:"modal-footer-actions"},AW=["disabled"],IW={class:"modal-content card-glass install-success-modal"},DW={class:"modal-header"},wW={class:"modal-body"},kW={key:0,class:"install-success-row"},MW={class:"label"},xW={class:"value"},LW={class:"install-success-row install-success-dir"},PW={class:"label"},UW=["title"],FW={class:"modal-footer-actions"};function BW(n,e,o,t,a,l){const i=gt("SkillCard"),r=gt("SmartInstallDialog"),c=gt("LocalInstallSkillDialog");return g(),f("div",Wz,[s("h2",Kz,d(t.t("settings.skillsTab")),1),s("div",Qz,[s("button",{class:Oe(["sub-tab-btn",{active:t.skillsSubTab==="system"}]),onClick:e[0]||(e[0]=u=>t.skillsSubTab="system")},d(t.t("skills.sources.system")),3),s("button",{class:Oe(["sub-tab-btn",{active:t.skillsSubTab==="global"}]),onClick:e[1]||(e[1]=u=>t.skillsSubTab="global")},d(t.t("skills.sources.global")),3)]),Q(s("div",$z,[s("p",Xz,d(t.t("skills.sources.systemDesc")),1),t.systemLoading?(g(),f("div",Zz,[e[23]||(e[23]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.systemSkills.length===0?(g(),f("div",Jz,[s("p",null,d(t.t("skills.noSkills")),1)])):(g(),f("div",jz,[(g(!0),f(te,null,Le(t.systemSkills,u=>(g(),Gt(i,{key:u.name,skill:u,onClick:_=>t.openDetail(u)},null,8,["skill","onClick"]))),128))]))],512),[[ht,t.skillsSubTab==="system"]]),Q(s("div",eW,[s("div",tW,[s("p",nW,d(t.t("skills.sources.globalDesc")),1),s("div",oW,[s("button",{type:"button",class:"btn-secondary",onClick:e[2]||(e[2]=(...u)=>t.openSmartInstall&&t.openSmartInstall(...u))},d(t.t("agents.installSmart")),1),s("button",{type:"button",class:"btn-secondary",onClick:e[3]||(e[3]=u=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])]),t.globalLoading?(g(),f("div",aW,[e[24]||(e[24]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.globalSkills.length===0?(g(),f("div",rW,[s("p",null,d(t.t("skills.noSkills")),1),s("div",sW,[s("button",{class:"btn-secondary",onClick:e[5]||(e[5]=(...u)=>t.openSmartInstall&&t.openSmartInstall(...u))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[6]||(e[6]=u=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])])):(g(),f("div",iW,[(g(!0),f(te,null,Le(t.globalSkills,u=>(g(),f("div",{key:u.name,class:"skill-card-wrap"},[Ae(i,{skill:u,onClick:_=>t.openDetail(u)},null,8,["skill","onClick"]),s("button",{type:"button",class:"link-btn danger skill-delete",onClick:Be(_=>t.confirmDelete(u),["stop"])},d(t.t("common.delete")),9,lW)]))),128))]))],512),[[ht,t.skillsSubTab==="global"]]),Ae(je,{name:"fade"},{default:Ve(()=>[t.detailSkill?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[9]||(e[9]=Be(u=>t.detailSkill=null,["self"]))},[s("div",cW,[s("div",dW,[s("h2",null,d(t.detailSkill.name),1),s("button",{type:"button",class:"close-btn",onClick:e[8]||(e[8]=u=>t.detailSkill=null)},"✕")]),s("div",_W,[t.detailContent?(g(),f("div",{key:0,class:"skill-documentation markdown-body",innerHTML:t.detailContentRendered},null,8,uW)):(g(),f("div",mW,d(t.t("skills.noDocumentation")),1))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showManualModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[14]||(e[14]=Be(u=>t.showManualModal=!1,["self"]))},[s("div",pW,[s("div",gW,[s("h2",null,d(t.t("agents.installManual")),1),s("button",{type:"button",class:"close-btn",onClick:e[10]||(e[10]=u=>t.showManualModal=!1)},"✕")]),s("div",fW,[s("p",EW,d(t.t("agents.installManualHint")),1),s("div",SW,[s("label",null,d(t.t("agents.skillGitUrl")),1),Q(s("input",{"onUpdate:modelValue":e[11]||(e[11]=u=>t.manualUrl=u),type:"text",class:"input",placeholder:t.t("agents.skillGitUrlPlaceholder")},null,8,bW),[[ye,t.manualUrl]])]),t.installError?(g(),f("p",hW,d(t.installError),1)):V("",!0),s("div",TW,[s("button",{type:"button",class:"btn-secondary",onClick:e[12]||(e[12]=u=>t.showManualModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.manualSaving,onClick:e[13]||(e[13]=(...u)=>t.doManualInstall&&t.doManualInstall(...u))},d(t.manualSaving?t.t("common.loading"):t.t("agents.installConfirm")),9,vW)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var u;return[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[18]||(e[18]=Be(_=>t.deleteTarget=null,["self"]))},[s("div",CW,[s("div",yW,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[15]||(e[15]=_=>t.deleteTarget=null)},"✕")]),s("div",RW,[s("p",null,d(t.t("agents.deleteSkillConfirm")),1),s("p",NW,d((u=t.deleteTarget)==null?void 0:u.name),1),s("div",OW,[s("button",{type:"button",class:"btn-secondary",onClick:e[16]||(e[16]=_=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",disabled:t.deleteSaving,onClick:e[17]||(e[17]=(..._)=>t.doDelete&&t.doDelete(..._))},d(t.deleteSaving?t.t("common.loading"):t.t("common.delete")),9,AW)])])])])):V("",!0)]}),_:1}),t.showSmartModal?(g(),Gt(r,{key:0,"target-agent-id":"global","session-id":"skill-install-global","dialog-title":t.smartInstallDialogTitle,onClose:t.closeSmartInstall,onInstalled:n.loadAllSkills},null,8,["dialog-title","onClose","onInstalled"])):V("",!0),Ae(c,{show:t.showLocalInstallModal,scope:"global",onClose:e[19]||(e[19]=u=>t.showLocalInstallModal=!1),onInstalled:t.onLocalInstalled},null,8,["show","onInstalled"]),Ae(je,{name:"fade"},{default:Ve(()=>{var u,_,m;return[t.installSuccessPayload?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[22]||(e[22]=Be(p=>t.installSuccessPayload=null,["self"]))},[s("div",IW,[s("div",DW,[s("h2",null,d(t.t("agents.installSuccess")),1),s("button",{type:"button",class:"close-btn",onClick:e[20]||(e[20]=p=>t.installSuccessPayload=null)},"✕")]),s("div",wW,[(u=t.installSuccessPayload)!=null&&u.name?(g(),f("p",kW,[s("span",MW,d(t.t("agents.installSuccessName"))+":",1),s("span",xW,d(t.installSuccessPayload.name),1)])):V("",!0),s("p",LW,[s("span",PW,d(t.t("agents.installSuccessDir"))+":",1),s("span",{class:"value dir",title:(_=t.installSuccessPayload)==null?void 0:_.installDir},d((m=t.installSuccessPayload)==null?void 0:m.installDir),9,UW)]),s("div",FW,[s("button",{type:"button",class:"btn-primary",onClick:e[21]||(e[21]=p=>t.installSuccessPayload=null)},d(t.t("common.confirm")),1)])])])])):V("",!0)]}),_:1})])}const GW=st(zz,[["render",BW],["__scopeId","data-v-d68401f4"]]),TE=["general","agent","models","knowledge","users","skills","about"],YW=!0,HW={name:"Settings",components:{SettingsSkills:GW},setup(){var ba;const n=da(),e=Zn(),o=ma(),t=ib(),a=R_(),{t:l}=Ot(),i=()=>{var I;const v=(I=n.query)==null?void 0:I.tab;return TE.includes(v)?v:"general"},r=D(i());nt(()=>{var v;return(v=n.query)==null?void 0:v.tab},v=>{TE.includes(v)&&(r.value=v)}),nt(r,async v=>{var I;((I=n.query)==null?void 0:I.tab)!==v&&e.replace({path:"/settings",query:{...n.query,tab:v}}),v==="users"&&Wo(),v==="general"&&await o.loadConfig(),v==="agent"&&(await o.loadConfig(),So(),await Kt()),v==="models"&&(await o.loadConfig(),Xe(),Me().catch(()=>{})),v==="knowledge"&&(await o.loadConfig(),Cn())});const c=D({memory:{}}),u=D(""),_=D([]),m=D("provider"),p=D({}),E=D(""),S=D(""),T=D({provider:"",alias:"",apiKey:"",baseUrl:""}),h=D(null),A=D(!1),b=D(!1),y=D(-1),w=()=>({input:0,output:0,cacheRead:0,cacheWrite:0}),k=D({provider:"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192}),B=D([]),X=D(!1),x=D(!1),U=D(!1),re=D(!1),se=D({username:"",password:""}),ne=D({id:"",username:"",password:""}),Te=D(null),G=D({password:""}),H=D(null),R=D(""),P=D(!1),oe=D(!1),he=D({password:"",confirm:""}),Ee=D([]),ve=D(!1),we=D([]),Re=D({});let Ie=null;const xe=D({available:!1}),Ge=D(!1),W=D(!1),me=D(""),F=D(""),Z=D({embeddingSource:"online",embeddingProvider:"",embeddingModel:"",embeddingModelItemCode:"",localModelPath:"",vectorStore:"local",qdrant:{url:"",apiKey:"",collection:""}}),Se=D({feishu:{enabled:!1,appId:"",appSecret:"",defaultAgentId:"default"},dingtalk:{enabled:!1,clientId:"",clientSecret:"",defaultAgentId:"default"},telegram:{enabled:!1,botToken:"",defaultAgentId:"default"},wechat:{enabled:!1,puppet:"",defaultAgentId:"default"}}),C=D(null),N=D("logged_out"),O=D(null),M=D(!1);let Y=null;const q=ae(()=>({"status-scanning":N.value==="scanning","status-logged-in":N.value==="logged_in","status-logged-out":N.value==="logged_out"})),$=ae(()=>N.value==="scanning"?l("settings.channelWechatScanning"):N.value==="logged_in"?l("settings.channelWechatLoggedIn"):l("settings.channelWechatLoggedOut"));async function ce(){var v;M.value=!0;try{const J=(((v=o.config)==null?void 0:v.gatewayUrl)||"http://127.0.0.1:38080").replace(/^ws(s?):\/\//,"http$1://");let le=await fetch(`${J}/server-api/wechat/qrcode`),_e=await le.json();!_e.qrcode&&_e.status!=="logged_in"&&(console.log("[Settings] QR code not available, requesting refresh..."),le=await fetch(`${J}/server-api/wechat/qrcode/refresh`,{method:"POST"}),_e=await le.json()),C.value=_e.qrcode||null,N.value=_e.status||"logged_out",O.value=_e.userName||null,_e.status==="scanning"&&!Y&&(Y=setInterval(de,3e3))}catch(I){console.error("[Settings] fetch wechat qrcode failed:",I)}finally{M.value=!1}}async function de(){var v;try{const J=(((v=o.config)==null?void 0:v.gatewayUrl)||"http://127.0.0.1:38080").replace(/^ws(s?):\/\//,"http$1://"),_e=await(await fetch(`${J}/server-api/wechat/qrcode`)).json();C.value=_e.qrcode||null,N.value=_e.status||"logged_out",O.value=_e.userName||null,(_e.status==="logged_in"||_e.status==="logged_out")&&(clearInterval(Y),Y=null)}catch{}}const z=ae(()=>o.config||{}),ke=ae(()=>o.providers||[]),fe=ae(()=>o.providerSupport||{}),Ce=ae(()=>o.models||{}),Ne=ae(()=>Array.isArray(ke.value)?ke.value:[]),ie=ae(()=>{const v=Ce.value[E.value];return Array.isArray(v)?v.map(I=>typeof I=="string"?{id:I,name:I}:{id:I.id,name:I.name||I.id}):[]}),ee=ae(()=>{const v=p.value;if(!v||typeof v!="object")return[];const I=["local","ollama"];return Object.keys(v).filter(J=>{var _e;const le=v[J];return le?I.includes(J)?!!((_e=le.baseUrl)!=null&&_e.trim()):typeof le.apiKey=="string"&&le.apiKey.trim()!=="":!1})}),be=ae(()=>{var I;const v=(I=z.value)==null?void 0:I.configuredModels;return Array.isArray(v)?v:[]}),Ue=ae(()=>{var _e,Fe,Ze;const v=be.value,I=(_e=z.value)==null?void 0:_e.defaultModelItemCode;if(I){const at=v.findIndex(rt=>rt.modelItemCode===I);if(at>=0)return at}const J=(Fe=z.value)==null?void 0:Fe.defaultProvider,le=(Ze=z.value)==null?void 0:Ze.defaultModel;return!J||!le?-1:v.findIndex(at=>at.provider===J&&at.modelId===le)}),Qe=ae(()=>{const v=fe.value;return ee.value.filter(I=>{var le;const J=(le=v[I])==null?void 0:le.models;return Array.isArray(J)&&J.some(_e=>{var Fe;return(Fe=_e.types)==null?void 0:Fe.includes("embedding")})})}),ct=ae(()=>{const v=Z.value.embeddingProvider;if(!v)return[];const I=fe.value[v];return I!=null&&I.models?I.models.filter(J=>{var le;return(le=J.types)==null?void 0:le.includes("embedding")}):[]}),St=ae(()=>be.value.filter(I=>I.type==="embedding")),At=ae(()=>k.value.provider==="openai-custom"),dn=ae(()=>{const v=k.value.provider,I=k.value.type;if(!v||!I||v==="openai-custom")return[];const J=`${v}:${I}`,le=o.models[J]||Ce.value[J];return Array.isArray(le)?le.map(_e=>typeof _e=="string"?{id:_e,name:_e}:{id:_e.id,name:_e.name||_e.id}):[]}),bt=ae(()=>{const v=(k.value.customModelId||"").trim();return v||(At.value,(k.value.modelId||"").trim())}),It=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.feishu)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),jt=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.dingtalk)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),fn=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.telegram)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),ue=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.wechat)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),ge=((ba=window.electronAPI)==null?void 0:ba.platform)||"web",Je=D(""),Rt=D("Unknown"),kt=ae(()=>ge!=="web"?Je.value||"v0.0.0":"v0.9.6"),xn=ae({get:()=>t.locale,set:v=>t.setLocale(v)}),Ht=v=>{o.setTheme(v)},So=()=>{var v,I,J,le;try{const _e=o.config||{},Fe=_e.defaultAgentId??"default",Ze=_e.memory||{};c.value={..._e,defaultAgentId:Fe,loginPassword:"",memory:{...Ze}},u.value=((le=(J=(I=(v=_e==null?void 0:_e.tools)==null?void 0:v.webSearch)==null?void 0:I.providers)==null?void 0:J.brave)==null?void 0:le.apiKey)??""}catch(_e){console.warn("[Settings] loadAgentConfig error",_e),c.value={loginPassword:"",memory:{}}}},Kt=async()=>{var v;try{const I=await Xt.listAgents(),J=((v=I==null?void 0:I.data)==null?void 0:v.data)??(I==null?void 0:I.data);_.value=Array.isArray(J)?J:[]}catch(I){console.warn("[Settings] loadAgentList error",I),_.value=[]}},lr=ae(()=>{var le;const v=((le=c.value)==null?void 0:le.defaultAgentId)??"default",I=[{id:"default",name:"default"},..._.value];return!I.some(_e=>_e.id===v)&&v&&v!=="default"?[...I,{id:v,name:v}]:I}),cr=async()=>{var rt,ft,To,yn,Pn;const v={...c.value};v.loginPassword===""&&delete v.loginPassword;const I=v.defaultAgentId??"default",le=(o.config||{}).tools||{},_e=(u.value||"").trim(),Fe={...le,webSearch:{...le.webSearch||{},providers:{...((rt=le.webSearch)==null?void 0:rt.providers)||{},brave:_e?{apiKey:_e}:void 0}}};await o.updateConfig({...v,defaultAgentId:I,tools:Fe});const Ze=o.config||{},at=Ze.memory||{};c.value={...Ze,defaultAgentId:Ze.defaultAgentId??"default",loginPassword:"",memory:{...at}},u.value=((Pn=(yn=(To=(ft=Ze==null?void 0:Ze.tools)==null?void 0:ft.webSearch)==null?void 0:To.providers)==null?void 0:yn.brave)==null?void 0:Pn.apiKey)??"",alert(l("common.saved"))},dr=()=>{a.logout()},K=()=>{So()};function pe(v){return v?v<1024*1024?(v/1024).toFixed(1)+" KB":v<1024*1024*1024?(v/(1024*1024)).toFixed(1)+" MB":(v/(1024*1024*1024)).toFixed(2)+" GB":"0 B"}async function Me(){var v,I;ve.value=!0;try{const[J,le]=await Promise.all([oo.list(),oo.getRecommendedWithStatus()]);Ee.value=((v=J.data)==null?void 0:v.data)??[],we.value=((I=le.data)==null?void 0:I.data)??[]}catch(J){console.warn("[Settings] refreshLocalModels error",J),Ee.value=[],we.value=[]}finally{ve.value=!1}}async function He(){await Me(),await Qt()}function Ye(v){if(!(v!=null&&v.status))return!1;const I=v.status;return I==="准备下载..."||I==="解析模型地址..."||I==="下载中"}async function $e(v,I=!1){try{await oo.startDownload(v,I),Re.value={...Re.value,[v]:{status:"准备下载..."}},vt()}catch(J){console.warn("[Settings] startDownload error",J)}}async function Pe(v){try{await oo.cancelDownload(v),Re.value={...Re.value,[v]:{status:"已取消"}},setTimeout(()=>{const I={...Re.value};delete I[v],Re.value=I},2e3)}catch(I){console.warn("[Settings] cancelDownload error",I)}}function vt(){Ie||(Ie=setInterval(async()=>{var J,le,_e;const v=Object.keys(Re.value);if(!v.length){clearInterval(Ie),Ie=null;return}let I=!1;for(const Fe of v)try{const at=(J=(await oo.getProgress(Fe)).data)==null?void 0:J.data;if(at){Re.value={...Re.value,[Fe]:at};const rt=((le=at.status)==null?void 0:le.startsWith("完成"))||((_e=at.status)==null?void 0:_e.startsWith("失败"))||at.status==="已取消";rt||(I=!0),rt&&(await Me(),setTimeout(()=>{const ft={...Re.value};delete ft[Fe],Re.value=ft},3e3))}else{const rt={...Re.value};delete rt[Fe],Re.value=rt,await Me()}}catch{}I||(clearInterval(Ie),Ie=null)},1500))}async function en(v){var I,J;if(window.confirm(l("settings.localModelsDeleteConfirm")))try{await oo.delete(v),await Me()}catch(le){alert(((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("settings.localModelsDeleteFailed"))}}const et=ae(()=>{const v=Ee.value;return v.length?v.map(I=>({id:I.filename,name:I.displayName||I.filename})):[{id:"local-llm",name:l("settings.localModelLlmPlaceholder")},{id:"local-embedding",name:l("settings.localModelEmbeddingPlaceholder")}]}),tn=ae(()=>(Ee.value||[]).filter(v=>(v.inferredType||v.type)==="llm")),_n=ae(()=>(Ee.value||[]).filter(v=>(v.inferredType||v.type)==="embedding"));async function Qt(){var v;Ge.value=!0;try{const I=await oo.getStatus();xe.value=((v=I.data)==null?void 0:v.data)??{available:!1}}catch(I){xe.value={available:!1,error:(I==null?void 0:I.message)||String(I)}}finally{Ge.value=!1}}async function bo(){var v,I,J,le,_e,Fe;W.value=!0;try{const Ze=await oo.start({llmModelUri:me.value||void 0,embeddingModelUri:F.value||void 0}),at=Ze==null?void 0:Ze.data;at&&at.success===!1&&((v=at.data)!=null&&v.error)&&alert(at.data.error),await Qt()}catch(Ze){const at=((J=(I=Ze.response)==null?void 0:I.data)==null?void 0:J.message)??((Fe=(_e=(le=Ze.response)==null?void 0:le.data)==null?void 0:_e.data)==null?void 0:Fe.error)??Ze.message??l("settings.localLlmStartFailed");alert(at)}finally{W.value=!1}}function Cn(){const v=z.value||{},I=v.rag,J=I==null?void 0:I.qdrant;let le=(I!=null&&I.embeddingModelItemCode&&typeof I.embeddingModelItemCode=="string"?I.embeddingModelItemCode:"").trim();const _e=((I==null?void 0:I.embeddingProvider)||"").trim(),Fe=((I==null?void 0:I.embeddingModel)||"").trim();if(!le&&_e&&Fe&&Array.isArray(v.configuredModels)){const Ze=v.configuredModels.find(at=>at.type==="embedding"&&at.provider===_e&&at.modelId===Fe);Ze&&(le=Ze.modelItemCode||`${Ze.provider}:${Ze.modelId}`)}Z.value={embeddingSource:(I==null?void 0:I.embeddingSource)==="local"?"local":"online",embeddingProvider:_e,embeddingModel:Fe,embeddingModelItemCode:le,localModelPath:(I!=null&&I.localModelPath&&typeof I.localModelPath=="string"?I.localModelPath:"").trim(),vectorStore:(I==null?void 0:I.vectorStore)==="qdrant"?"qdrant":"local",qdrant:{url:(J!=null&&J.url&&typeof J.url=="string"?J.url:"").trim(),apiKey:(J!=null&&J.apiKey&&typeof J.apiKey=="string"?J.apiKey:"").trim(),collection:(J!=null&&J.collection&&typeof J.collection=="string"?J.collection:"").trim()}}}function xt(){Z.value.embeddingModel=""}async function Mt(){var ft,To,yn;const v=Z.value,I=v.embeddingSource==="local"?"local":"online",J=v.vectorStore==="qdrant"?"qdrant":"local";let le=(v.embeddingModelItemCode||"").trim(),_e=(v.embeddingProvider||"").trim(),Fe=(v.embeddingModel||"").trim();const Ze=(v.localModelPath||"").trim(),at=(((ft=v.qdrant)==null?void 0:ft.url)||"").trim();if(I==="online"&&le){const eo=be.value.find(Ko=>(Ko.modelItemCode||Ko.provider+":"+Ko.modelId)===le);eo&&(_e=eo.provider,Fe=eo.modelId,eo.modelItemCode&&(le=eo.modelItemCode))}const rt={embeddingSource:I,vectorStore:J,...I==="local"?{localModelPath:Ze||void 0}:{embeddingModelItemCode:le||void 0,embeddingProvider:_e||void 0,embeddingModel:Fe||void 0},...J==="qdrant"&&at?{qdrant:{url:at,apiKey:(((To=v.qdrant)==null?void 0:To.apiKey)||"").trim()||void 0,collection:(((yn=v.qdrant)==null?void 0:yn.collection)||"").trim()||void 0}}:{qdrant:void 0}};await o.updateConfig({rag:rt}),alert(l("common.saved"))}function Xe(){try{const v=z.value||{},I=v.providers&&typeof v.providers=="object"?v.providers:{},J={};for(const[rt,ft]of Object.entries(I))rt&&typeof rt=="string"&&(J[rt]={apiKey:ft&&typeof ft.apiKey=="string"?ft.apiKey:"",baseUrl:ft&&typeof ft.baseUrl=="string"?ft.baseUrl:"",alias:ft&&typeof ft.alias=="string"?ft.alias:""});p.value=J;const le=v.defaultProvider&&typeof v.defaultProvider=="string"?v.defaultProvider:"deepseek",_e=v.defaultModel&&typeof v.defaultModel=="string"?v.defaultModel:"deepseek-chat",Fe=Object.keys(J).filter(rt=>(J[rt].apiKey||"").trim()!=="");E.value=Fe.includes(le)?le:Fe[0]||"deepseek",S.value=_e;const at=(Array.isArray(v.configuredModels)?v.configuredModels:[]).find(rt=>rt.provider===le&&rt.modelId===_e);qo(E.value).catch(rt=>console.warn("[Settings] ensureModelsLoaded",rt))}catch(v){console.error("[Settings] initModelConfigTab error",v),p.value={},E.value="deepseek",S.value="deepseek-chat"}}async function qo(v){if(!(!v||typeof v!="string")&&!(o.models&&o.models[v]))try{await o.loadModels(v)}catch(I){console.warn("[Settings] loadModels failed",v,I)}}function pa(v){qo(v).catch(()=>{})}function ho(v,I){const J=fe.value[v];if(!(J!=null&&J.models))return I||"—";const le=J.models.find(_e=>_e.id===I);return le?le.name||le.id:I}function Vo(v){var J;const I=(J=v.alias)==null?void 0:J.trim();return I||ho(v.provider,v.modelId)}function jn(v){var _e,Fe,Ze,at,rt,ft;const I=(at=(Ze=(Fe=(_e=z.value)==null?void 0:_e.providers)==null?void 0:Fe[v])==null?void 0:Ze.alias)==null?void 0:at.trim();if(I)return I;const J=(ft=(rt=p.value[v])==null?void 0:rt.alias)==null?void 0:ft.trim();if(J)return J;const le=fe.value[v];return(le==null?void 0:le.name)||v}function ga(v,I){const J=I.map(_e=>Vo(_e));if(!J.includes(v))return v;let le=2;for(;J.includes(`${v} (${le})`);)le++;return`${v} (${le})`}function fa(v,I){const le=ee.value.filter(Fe=>Fe!==I).map(Fe=>jn(Fe));if(!le.includes(v))return v;let _e=2;for(;le.includes(`${v} (${_e})`);)_e++;return`${v} (${_e})`}function _r(){y.value=-1,k.value={provider:ee.value[0]||"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192},k.value.provider==="local"?Me().catch(()=>{}):k.value.provider&&o.loadModels(k.value.provider,k.value.type).catch(()=>{}),b.value=!0}function ur(v){const J=be.value[v];if(!J)return;y.value=v;const le=J.cost&&typeof J.cost=="object"?J.cost:w();k.value={provider:J.provider,type:J.type||"llm",modelId:J.modelId,customModelId:"",alias:(J.alias||"").trim()||"",reasoning:!!J.reasoning,cost:{input:Number(le.input)||0,output:Number(le.output)||0,cacheRead:Number(le.cacheRead)||0,cacheWrite:Number(le.cacheWrite)||0},contextWindow:Math.max(0,Math.floor(Number(J.contextWindow)))||64e3,maxTokens:Math.max(0,Math.floor(Number(J.maxTokens)))||8192},o.loadModels(J.provider,J.type||"llm").catch(()=>{}),b.value=!0}function Ea(){b.value=!1,y.value=-1,k.value={provider:"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192}}function zo(){const{provider:v,type:I}=k.value;k.value.modelId="",k.value.customModelId="",v==="local"?Me().catch(()=>{}):v&&I&&o.loadModels(v,I).catch(()=>{})}function mr(v,I){return`${v}_${I}`.replace(/[^a-zA-Z0-9_-]/g,"_")}async function Ln(){var eo,Ko,X_,Z_;const{provider:v,type:I}=k.value,J=bt.value;if(!v||!J)return;const le=(k.value.alias||"").trim()||ho(v,J),_e=be.value,Fe=y.value>=0,Ze=Fe?_e.filter((lh,Ds)=>Ds!==y.value):_e,at=ga(le,Ze),rt=k.value.cost||{},ft=Fe?_e[y.value]:null,To=ft&&ft.modelItemCode?ft.modelItemCode:mr(v,J),yn={provider:v,modelId:J,type:I,alias:at,modelItemCode:To,reasoning:!!k.value.reasoning,cost:{input:Number(rt.input)||0,output:Number(rt.output)||0,cacheRead:Number(rt.cacheRead)||0,cacheWrite:Number(rt.cacheWrite)||0},contextWindow:Math.max(0,Math.floor(Number(k.value.contextWindow))||64e3),maxTokens:Math.max(0,Math.floor(Number(k.value.maxTokens))||8192)};let Pn;Fe?(Pn=_e.map((Ds,ch)=>ch===y.value?yn:Ds),((eo=_e[y.value])==null?void 0:eo.provider)===((Ko=z.value)==null?void 0:Ko.defaultProvider)&&((X_=_e[y.value])==null?void 0:X_.modelId)===((Z_=z.value)==null?void 0:Z_.defaultModel)?await o.updateConfig({configuredModels:Pn,defaultProvider:v,defaultModel:J,defaultModelItemCode:yn.modelItemCode}):await o.updateConfig({configuredModels:Pn})):(Pn=[..._e,yn],await o.updateConfig({configuredModels:Pn}),_e.length===0&&await o.updateConfig({defaultProvider:v,defaultModel:J,defaultModelItemCode:yn.modelItemCode})),Ea()}function nn(v){window.confirm(l("settings.confirmRemoveModel"))&&G_(v)}function G_(v){const I=be.value.filter((_e,Fe)=>Fe!==v);if(!I.length){o.updateConfig({configuredModels:[],defaultProvider:"deepseek",defaultModel:"deepseek-chat",defaultModelItemCode:void 0});return}const J=be.value[v],le=J.provider===z.value.defaultProvider&&J.modelId===z.value.defaultModel;if(o.updateConfig({configuredModels:I}),le&&I.length){const _e=I[0];o.updateConfig({defaultProvider:_e.provider,defaultModel:_e.modelId,defaultModelItemCode:_e.modelItemCode||void 0})}}function Y_(v){var _e,Fe,Ze;const I=(_e=z.value)==null?void 0:_e.defaultModelItemCode;if(I)return v.modelItemCode===I;const J=(Fe=z.value)==null?void 0:Fe.defaultProvider,le=(Ze=z.value)==null?void 0:Ze.defaultModel;return J===v.provider&&le===v.modelId}function H_(v){o.updateConfig({defaultProvider:v.provider,defaultModel:v.modelId,defaultModelItemCode:v.modelItemCode||void 0})}async function Sa(){const v=p.value,I={};for(const[J,le]of Object.entries(v))J&&(I[J]={apiKey:le.apiKey,baseUrl:le.baseUrl,alias:le.alias??""});await o.updateConfig({providers:I}),alert(l("common.saved"))}function q_(){T.value={provider:"",alias:"",apiKey:"",baseUrl:""},A.value=!0}function V_(){const v=T.value.provider,I=fe.value[v];T.value.alias=v?(I==null?void 0:I.name)||v:"",(I==null?void 0:I.baseUrl)!=null&&String(I.baseUrl).trim()!==""?T.value.baseUrl=String(I.baseUrl).trim():T.value.baseUrl=""}function z_(){var Ze;const{provider:v,alias:I,apiKey:J,baseUrl:le}=T.value;if(!v||!(J&&J.trim()))return;const _e=(I||"").trim()||((Ze=fe.value[v])==null?void 0:Ze.name)||v,Fe=fa(_e,v);p.value={...p.value,[v]:{apiKey:J.trim(),baseUrl:(le||"").trim(),alias:Fe}},Sa().then(()=>{A.value=!1,T.value={provider:"",alias:"",apiKey:"",baseUrl:""}}).catch(()=>{})}function W_(v){if(!v)return;h.value===v&&(h.value=null);const I={...p.value};delete I[v],p.value=I,Sa().catch(()=>{})}function K_(v){var le;h.value=v;const I=p.value[v],J=((le=fe.value[v])==null?void 0:le.baseUrl)!=null&&String(fe.value[v].baseUrl).trim()!==""?String(fe.value[v].baseUrl).trim():"";I&&(!I.baseUrl||!String(I.baseUrl).trim())&&J&&(p.value={...p.value,[v]:{...I,baseUrl:J}})}function Q_(){var J,le;const v=h.value;if(!v)return;const I=(le=(J=z.value)==null?void 0:J.providers)==null?void 0:le[v];I&&(p.value={...p.value,[v]:{apiKey:I.apiKey??"",baseUrl:I.baseUrl??"",alias:I.alias??""}}),h.value=null}async function $_(){var I,J;const v=h.value;if(v){const le=((J=(I=p.value[v])==null?void 0:I.alias)==null?void 0:J.trim())||jn(v),_e=fa(le,v);p.value={...p.value,[v]:{...p.value[v],alias:_e}}}await Sa(),h.value=null}async function vs(){const v=E.value,I=S.value;if(!ee.value.includes(v)){alert(l("settings.noConfiguredProvider"));return}const le=be.value.find(_e=>_e.provider===v&&_e.modelId===I);await o.updateConfig({defaultProvider:v,defaultModel:I,defaultModelItemCode:(le==null?void 0:le.modelItemCode)||void 0}),alert(l("common.saved"))}async function Wo(){var v;X.value=!0,R.value="";try{const I=await Xo.list();B.value=((v=I.data)==null?void 0:v.data)??[]}catch{B.value=[]}finally{X.value=!1}}function Cs(){se.value={username:"",password:""},R.value="",x.value=!0}function ys(v){ne.value={id:v.id,username:v.username,password:""},R.value="",U.value=!0}function Rs(v){Te.value=v,G.value={password:""},R.value="",re.value=!0}function Ns(v){H.value=v,R.value=""}function Os(){he.value={password:"",confirm:""},R.value="",oe.value=!0}async function pr(){var le,_e;const v=(he.value.password||"").trim(),I=(he.value.confirm||"").trim();if(!v){R.value=l("settings.passwordRequired");return}if(v!==I){R.value=l("settings.passwordMismatch");return}const J=a.currentUser;if(J){P.value=!0,R.value="";try{await Xo.update(J.id,{password:v}),oe.value=!1,he.value={password:"",confirm:""}}catch(Fe){R.value=((_e=(le=Fe.response)==null?void 0:le.data)==null?void 0:_e.message)??Fe.message??l("login.invalidCredentials")}finally{P.value=!1}}}async function gr(){var J,le;const v=(se.value.username||"").trim(),I=(se.value.password||"").trim();if(!v){R.value=l("settings.usernameRequired");return}if(!I){R.value=l("settings.passwordRequired");return}P.value=!0,R.value="";try{await Xo.create(v,I),x.value=!1,await Wo()}catch(_e){R.value=((le=(J=_e.response)==null?void 0:J.data)==null?void 0:le.message)??_e.message??l("login.invalidCredentials")}finally{P.value=!1}}async function fr(){var I,J;const v=(ne.value.username||"").trim();if(!v){R.value=l("settings.usernameRequired");return}P.value=!0,R.value="";try{const le={username:v};ne.value.password.trim()&&(le.password=ne.value.password.trim()),await Xo.update(ne.value.id,le),U.value=!1,await Wo()}catch(le){R.value=((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("login.invalidCredentials")}finally{P.value=!1}}async function As(){var I,J;const v=(G.value.password||"").trim();if(!v){R.value=l("settings.passwordRequired");return}P.value=!0,R.value="";try{await Xo.update(Te.value.id,{password:v}),re.value=!1,Te.value=null}catch(le){R.value=((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("login.invalidCredentials")}finally{P.value=!1}}async function Is(){var v,I;if(H.value){P.value=!0,R.value="";try{await Xo.delete(H.value.id),H.value=null,await Wo()}catch(J){R.value=((I=(v=J.response)==null?void 0:v.data)==null?void 0:I.message)??J.message??l("login.invalidCredentials")}finally{P.value=!1}}}return Yt(async()=>{typeof window<"u"&&window.electronAPI&&(window.electronAPI.getAppVersion&&window.electronAPI.getAppVersion().then(v=>{Je.value=v?`v${v}`:""}),window.electronAPI.getElectronVersion&&window.electronAPI.getElectronVersion().then(v=>{Rt.value=v||"Unknown"}));try{r.value=i(),await o.loadProviderSupport(),await o.loadConfig(),So(),Xe(),Me().catch(()=>{}),r.value==="agent"&&await Kt(),r.value==="knowledge"&&Cn()}catch(v){console.error("[Settings] onMounted error",v)}}),{t:l,showRagTab:YW,activeTab:r,config:z,localConfig:c,providers:ke,providerSupport:fe,models:Ce,defaultModelOptions:ie,configuredModelsList:be,defaultModelIndex:Ue,isOpenAiCustomProvider:At,addModelOptions:dn,effectiveAddModelId:bt,localModelsList:Ee,localModelsLoading:ve,recommendedModels:we,downloadProgressMap:Re,localModelsForSelect:et,installedLlmsForStart:tn,installedEmbeddingsForStart:_n,localLlmStatus:xe,localLlmStatusLoading:Ge,localLlmStartLoading:W,localLlmStartSelectedLlm:me,localLlmStartSelectedEmb:F,fetchLocalLlmStatus:Qt,startLocalLlmService:bo,formatFileSize:pe,refreshLocalModels:Me,initLocalModelsTab:He,isDownloading:Ye,startDownloadModel:$e,cancelDownloadModel:Pe,confirmDeleteLocalModel:en,channelFeishuDefaultAgentOptions:It,channelDingtalkDefaultAgentOptions:jt,channelTelegramDefaultAgentOptions:fn,channelWechatDefaultAgentOptions:ue,wechatQrCode:C,wechatStatus:N,wechatUserName:O,wechatQrLoading:M,wechatStatusClass:q,wechatStatusText:$,fetchWechatQrCode:ce,getModelDisplayName:ho,getModelAlias:Vo,getProviderDisplayName:jn,isDefaultModel:Y_,openAddModelModal:_r,openEditModel:ur,closeAddModelModal:Ea,editingModelIndex:y,onAddModelProviderOrTypeChange:zo,submitAddModel:Ln,confirmRemoveConfiguredModel:nn,setDefaultFromConfigured:H_,openAddProviderModal:q_,onAddProviderSelect:V_,submitAddProvider:z_,showAddProviderModal:A,showAddModelModal:b,addModelForm:k,modelConfigSubTab:m,localProviderConfig:p,localDefaultProvider:E,localDefaultModel:S,addProviderForm:T,supportedProviders:Ne,configuredProviders:ee,localRag:Z,providersWithEmbedding:Qe,knowledgeEmbeddingModels:ct,configuredEmbeddingModels:St,initKnowledgeTab:Cn,onKnowledgeProviderChange:xt,saveKnowledgeConfig:Mt,removeProvider:W_,editingProvider:h,startEditProvider:K_,cancelEditProvider:Q_,saveEditProvider:$_,ensureModelsLoaded:qo,onDefaultProviderChange:pa,saveProviderConfig:Sa,setDefaultModel:vs,currentLocale:xn,platform:ge,appVersion:Je,displayVersion:kt,electronVersion:Rt,setTheme:Ht,defaultAgentOptions:lr,saveAgentConfig:cr,resetAgentConfig:K,logout:dr,authStore:a,usersList:B,usersLoading:X,showAddUserModal:x,showEditUserModal:U,showChangePasswordModal:re,showChangeCurrentPasswordModal:oe,addUserForm:se,editUserForm:ne,changePasswordUser:Te,changePasswordForm:G,currentUserPasswordForm:he,deleteUserTarget:H,userFormError:R,userFormSaving:P,openAddUser:Cs,openEditUser:ys,openChangePassword:Rs,openChangeCurrentUserPassword:Os,confirmDeleteUser:Ns,submitAddUser:gr,submitEditUser:fr,submitChangePassword:As,submitChangeCurrentUserPassword:pr,submitDeleteUser:Is,localChannels:Se}}},qW={class:"settings-view"},VW={class:"settings-layout card-glass"},zW={class:"settings-sidebar"},WW={class:"settings-content"},KW={class:"tab-content"},QW={class:"tab-title"},$W={class:"settings-group"},XW={class:"form-group"},ZW={class:"settings-group"},JW={class:"form-group"},jW={class:"theme-options"},e3={class:"tab-content"},t3={class:"tab-title"},n3={class:"settings-group"},o3={class:"form-group"},a3=["value"],r3={class:"form-hint"},s3={class:"settings-group"},i3={class:"form-group"},l3={class:"form-hint"},c3={class:"settings-group"},d3={class:"form-hint"},_3={class:"form-group"},u3={value:""},m3=["value"],p3={key:0,class:"form-hint form-hint-warn"},g3={class:"settings-group"},f3={class:"form-hint settings-group-desc"},E3={class:"form-group"},S3=["placeholder"],b3={class:"form-hint"},h3={class:"actions"},T3={class:"tab-content"},v3={class:"tab-title"},C3={class:"model-config-tabs"},y3={class:"settings-group provider-config-group"},R3={class:"settings-hint-block"},N3={class:"settings-hint-text"},O3={class:"provider-configured-list"},A3={class:"subsection-header"},I3={class:"subsection-title"},D3={key:0,class:"form-hint empty-hint"},w3={key:1,class:"provider-cards"},k3={class:"provider-card-header"},M3={class:"provider-name"},x3={class:"provider-badge"},L3=["onClick"],P3=["onClick"],U3={key:0,class:"provider-card-body"},F3={class:"form-group"},B3=["onUpdate:modelValue","placeholder"],G3={class:"form-group"},Y3=["onUpdate:modelValue","placeholder"],H3={class:"form-group"},q3=["onUpdate:modelValue","placeholder"],V3={class:"provider-card-actions"},z3={key:1,class:"provider-readonly"},W3={class:"provider-readonly-line"},K3={class:"label"},Q3={key:0,class:"provider-readonly-line"},$3={class:"label"},X3={key:2,class:"form-hint action-hint"},Z3={class:"modal-content card-glass modal-add-provider"},J3={class:"modal-header"},j3={class:"modal-body"},eK={class:"form-group"},tK=["value"],nK={class:"form-group"},oK=["placeholder"],aK={class:"form-group"},rK=["placeholder"],sK={class:"form-group"},iK=["placeholder"],lK={class:"modal-footer-actions"},cK=["disabled"],dK={class:"settings-group model-config-group"},_K={class:"settings-hint-block"},uK={class:"settings-hint-text"},mK={key:0,class:"form-hint form-hint-warn model-config-warn"},pK={class:"subsection-header"},gK={class:"subsection-title"},fK={key:0,class:"form-hint empty-hint"},EK={key:1,class:"configured-models-list"},SK={class:"model-row-provider"},bK={class:"model-row-name"},hK={class:"model-row-type"},TK={key:0,class:"model-row-default-badge"},vK={class:"model-row-actions"},CK=["onClick"],yK=["onClick"],RK=["onClick"],NK={class:"settings-group local-models-group"},OK={class:"settings-hint-block"},AK={class:"settings-hint-text"},IK={class:"subsection-header"},DK={class:"subsection-title"},wK={class:"settings-hint-block local-llm-context-limit-hint"},kK={class:"settings-hint-text"},MK={class:"local-llm-service-block"},xK={key:0,class:"form-hint"},LK={key:0},PK={key:1},UK={key:2},FK={class:"local-llm-start-form"},BK={class:"form-group"},GK={value:""},YK=["value"],HK={class:"form-group"},qK={value:""},VK=["value"],zK=["disabled"],WK={class:"subsection-header"},KK={class:"subsection-title"},QK={class:"local-models-download-list"},$K={class:"local-model-rec-info"},XK={class:"local-model-rec-name"},ZK={class:"local-model-rec-type model-row-type"},JK={class:"local-model-rec-size"},jK={class:"local-model-rec-actions"},eQ={key:0,class:"local-model-rec-badge downloaded"},tQ={class:"download-progress-text"},nQ=["onClick"],oQ=["onClick"],aQ=["onClick"],rQ={class:"subsection-header",style:{"margin-top":"20px"}},sQ={class:"subsection-title"},iQ={key:1,class:"loading-state"},lQ={key:2,class:"form-hint empty-hint"},cQ={key:3,class:"local-models-installed-list"},dQ={class:"local-model-info"},_Q=["title"],uQ={class:"local-model-type model-row-type"},mQ={class:"local-model-size"},pQ={class:"local-model-actions"},gQ=["onClick"],fQ={class:"modal-content card-glass"},EQ={class:"modal-header"},SQ={class:"modal-body"},bQ={class:"form-group"},hQ=["disabled"],TQ=["value"],vQ={class:"form-group"},CQ=["disabled"],yQ={value:"llm"},RQ={value:"embedding"},NQ={value:"image"},OQ={class:"form-group"},AQ=["placeholder"],IQ=["disabled"],DQ=["value"],wQ={class:"form-hint form-hint-inline"},kQ=["disabled"],MQ=["value"],xQ={class:"form-hint form-hint-inline"},LQ=["placeholder","disabled"],PQ={class:"form-group"},UQ=["placeholder"],FQ={class:"form-group"},BQ={class:"checkbox-label"},GQ={key:0,class:"form-group cost-fields"},YQ={class:"cost-row"},HQ={class:"cost-item"},qQ={class:"cost-item"},VQ={class:"cost-item"},zQ={class:"cost-item"},WQ={class:"modal-footer-actions"},KQ=["disabled"],QQ={class:"tab-content"},$Q={class:"tab-title"},XQ={class:"settings-hint-block"},ZQ={class:"settings-hint-text"},JQ={class:"settings-group"},jQ={class:"form-hint"},e4={class:"form-group knowledge-radio-group"},t4={class:"radio-label"},n4={class:"radio-label"},o4={key:0,class:"form-group"},a4=["placeholder"],r4={key:1,class:"form-group"},s4={value:""},i4=["value"],l4={key:0,class:"form-hint form-hint-warn"},c4={class:"settings-group"},d4={class:"form-hint"},_4={class:"form-group knowledge-radio-group"},u4={class:"radio-label"},m4={class:"radio-label"},p4={class:"form-group"},g4=["placeholder"],f4={class:"form-group"},E4=["placeholder"],S4={class:"form-group"},b4=["placeholder"],h4={class:"actions"},T4={class:"tab-content"},v4={class:"tab-title"},C4={key:0,class:"settings-group"},y4={class:"form-hint"},R4={class:"settings-group"},N4={class:"users-toolbar"},O4={class:"form-hint"},A4={key:0,class:"loading-state"},I4={key:1,class:"empty-state"},D4={key:2,class:"users-table-wrap"},w4={class:"users-table"},k4={class:"th-actions"},M4={class:"username-cell"},x4={class:"td-actions"},L4=["onClick"],P4=["onClick"],U4=["onClick"],F4={class:"tab-content"},B4={class:"tab-content"},G4={class:"tab-title"},Y4={class:"about-card"},H4={class:"version"},q4={class:"about-details"},V4={class:"detail-row"},z4={key:0,class:"detail-row"},W4={class:"modal-content card-glass"},K4={class:"modal-header"},Q4={class:"modal-body"},$4={class:"form-group"},X4=["placeholder"],Z4={class:"form-group"},J4=["placeholder"],j4={key:0,class:"form-error"},e9={class:"modal-footer-actions"},t9=["disabled"],n9={class:"modal-content card-glass"},o9={class:"modal-header"},a9={class:"modal-body"},r9={class:"form-group"},s9={class:"form-group"},i9=["placeholder"],l9={key:0,class:"form-error"},c9={class:"modal-footer-actions"},d9=["disabled"],_9={class:"modal-content card-glass"},u9={class:"modal-header"},m9={class:"modal-body"},p9={class:"form-group"},g9={key:0,class:"form-error"},f9={class:"modal-footer-actions"},E9=["disabled"],S9={class:"modal-content card-glass"},b9={class:"modal-header"},h9={class:"modal-body"},T9={class:"form-group"},v9=["placeholder"],C9={class:"form-group"},y9=["placeholder"],R9={key:0,class:"form-error"},N9={class:"modal-footer-actions"},O9=["disabled"],A9={class:"modal-content card-glass delete-confirm-modal"},I9={class:"modal-header"},D9={class:"modal-body"},w9={class:"delete-target-name"},k9={class:"modal-footer-actions"},M9=["disabled"];function x9(n,e,o,t,a,l){const i=gt("SettingsSkills");return g(),f("div",qW,[s("div",VW,[s("div",zW,[s("div",{class:Oe(["nav-item",{active:t.activeTab==="general"}]),onClick:e[0]||(e[0]=r=>t.activeTab="general")},[e[96]||(e[96]=s("span",{class:"nav-icon"},"⚙️",-1)),ze(" "+d(t.t("settings.general")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="agent"}]),onClick:e[1]||(e[1]=r=>t.activeTab="agent")},[e[97]||(e[97]=s("span",{class:"nav-icon"},"🤖",-1)),ze(" "+d(t.t("settings.agentGlobal")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="models"}]),onClick:e[2]||(e[2]=r=>t.activeTab="models")},[e[98]||(e[98]=s("span",{class:"nav-icon"},"🧠",-1)),ze(" "+d(t.t("settings.modelsNav")),1)],2),V("",!0),s("div",{class:Oe(["nav-item",{active:t.activeTab==="users"}]),onClick:e[4]||(e[4]=r=>t.activeTab="users")},[e[100]||(e[100]=s("span",{class:"nav-icon"},"👤",-1)),ze(" "+d(t.t("settings.users")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="skills"}]),onClick:e[5]||(e[5]=r=>t.activeTab="skills")},[e[101]||(e[101]=s("span",{class:"nav-icon"},"🎯",-1)),ze(" "+d(t.t("nav.skills")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="about"}]),onClick:e[6]||(e[6]=r=>t.activeTab="about")},[e[102]||(e[102]=s("span",{class:"nav-icon"},"ℹ️",-1)),ze(" "+d(t.t("settings.about")),1)],2)]),s("div",WW,[Q(s("div",KW,[s("h2",QW,d(t.t("settings.general")),1),s("div",$W,[s("h3",null,d(t.t("settings.language")),1),s("div",XW,[s("label",null,d(t.t("settings.languageDescription")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=r=>t.currentLocale=r),class:"input select-input"},[...e[103]||(e[103]=[s("option",{value:"zh"},"简体中文",-1),s("option",{value:"en"},"English (US)",-1)])],512),[[dt,t.currentLocale]])])]),s("div",ZW,[s("h3",null,d(t.t("settings.theme")),1),s("div",JW,[s("label",null,d(t.t("settings.themeDescription")),1),s("div",jW,[s("button",{class:Oe(["theme-card",{active:t.config.theme==="light"}]),onClick:e[8]||(e[8]=r=>t.setTheme("light"))},[e[104]||(e[104]=s("div",{class:"theme-preview light"},null,-1)),s("span",null,d(t.t("settings.light")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="dark"}]),onClick:e[9]||(e[9]=r=>t.setTheme("dark"))},[e[105]||(e[105]=s("div",{class:"theme-preview dark"},null,-1)),s("span",null,d(t.t("settings.dark")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="cosmic"}]),onClick:e[10]||(e[10]=r=>t.setTheme("cosmic"))},[e[106]||(e[106]=s("div",{class:"theme-preview cosmic"},null,-1)),s("span",null,d(t.t("settings.cosmic")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="neon"}]),onClick:e[11]||(e[11]=r=>t.setTheme("neon"))},[e[107]||(e[107]=s("div",{class:"theme-preview neon"},null,-1)),s("span",null,d(t.t("settings.neon")),1)],2)])])])],512),[[ht,t.activeTab==="general"]]),Q(s("div",e3,[s("h2",t3,d(t.t("settings.agentGlobal")),1),s("div",n3,[s("h3",null,d(t.t("settings.workspace")),1),s("div",o3,[s("label",null,d(t.t("settings.defaultAgent")),1),Q(s("select",{"onUpdate:modelValue":e[12]||(e[12]=r=>t.localConfig.defaultAgentId=r),class:"input select-input"},[(g(!0),f(te,null,Le(t.defaultAgentOptions,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name||r.id),9,a3))),128))],512),[[dt,t.localConfig.defaultAgentId]]),s("p",r3,d(t.t("settings.defaultAgentHint")),1)])]),s("div",s3,[s("h3",null,d(t.t("settings.sessionsLimit")),1),s("div",i3,[s("label",null,d(t.t("settings.maxAgentSessions")),1),Q(s("input",{"onUpdate:modelValue":e[13]||(e[13]=r=>t.localConfig.maxAgentSessions=r),type:"number",min:"1",max:"50",class:"input"},null,512),[[ye,t.localConfig.maxAgentSessions,void 0,{number:!0}]]),s("p",l3,d(t.t("settings.maxAgentSessionsHint")),1)])]),s("div",c3,[s("h3",null,d(t.t("settings.memoryConfig")),1),s("p",d3,d(t.t("settings.memoryConfigHint")),1),s("div",_3,[s("label",null,d(t.t("settings.embeddingModel")),1),Q(s("select",{"onUpdate:modelValue":e[14]||(e[14]=r=>t.localConfig.memory.embeddingModelItemCode=r),class:"input select-input"},[s("option",u3,d(t.t("settings.memoryEmbeddingNone")),1),(g(!0),f(te,null,Le(t.configuredEmbeddingModels,r=>(g(),f("option",{key:r.modelItemCode,value:r.modelItemCode},d(r.alias||r.modelId)+" ("+d(r.provider)+") ",9,m3))),128))],512),[[dt,t.localConfig.memory.embeddingModelItemCode]]),t.configuredEmbeddingModels.length===0?(g(),f("p",p3,d(t.t("settings.memoryNoEmbeddingModels")),1)):V("",!0)])]),s("div",g3,[s("h3",null,d(t.t("settings.webSearchTitle")),1),s("p",f3,d(t.t("settings.webSearchDesc")),1),s("div",E3,[s("label",null,d(t.t("settings.webSearchBraveApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[15]||(e[15]=r=>n.webSearchBraveApiKey=r),type:"password",class:"input",placeholder:t.t("settings.webSearchBraveApiKeyPlaceholder"),autocomplete:"off"},null,8,S3),[[ye,n.webSearchBraveApiKey]]),s("p",b3,d(t.t("settings.webSearchBraveApiKeyHint")),1)])]),s("div",h3,[s("button",{onClick:e[16]||(e[16]=(...r)=>t.saveAgentConfig&&t.saveAgentConfig(...r)),class:"btn-primary"},d(t.t("common.save")),1),s("button",{onClick:e[17]||(e[17]=(...r)=>t.resetAgentConfig&&t.resetAgentConfig(...r)),class:"btn-secondary"},d(t.t("common.reset")),1)])],512),[[ht,t.activeTab==="agent"]]),Q(s("div",T3,[s("h2",v3,d(t.t("settings.modelsNav")),1),s("div",C3,[s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="provider"}]),onClick:e[18]||(e[18]=r=>t.modelConfigSubTab="provider")},d(t.t("settings.providerConfig")),3),s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="default"}]),onClick:e[19]||(e[19]=r=>{t.modelConfigSubTab="default",t.onDefaultProviderChange(t.config.defaultProvider||t.localDefaultProvider)})},d(t.t("settings.defaultModelConfig")),3),s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="local"}]),onClick:e[20]||(e[20]=r=>{t.modelConfigSubTab="local",t.initLocalModelsTab()})},d(t.t("settings.localModelsNav")),3)]),Q(s("div",y3,[s("div",R3,[e[108]||(e[108]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",N3,d(t.t("settings.providerConfigHint")),1)]),s("div",O3,[s("div",A3,[s("h4",I3,d(t.t("settings.configuredProvidersList")),1),s("button",{type:"button",class:"btn-primary btn-add-provider",onClick:e[21]||(e[21]=(...r)=>t.openAddProviderModal&&t.openAddProviderModal(...r))},d(t.t("settings.addProvider")),1)]),t.configuredProviders.length===0?(g(),f("p",D3,d(t.t("settings.noConfiguredProviderList")),1)):(g(),f("div",w3,[(g(!0),f(te,null,Le(t.configuredProviders,r=>(g(),f("div",{key:r,class:Oe(["provider-card",{"is-editing":t.editingProvider===r}])},[s("div",k3,[s("span",M3,d(t.getProviderDisplayName(r)),1),s("span",x3,d(t.t("settings.apiKeyConfigured")),1),t.editingProvider!==r?(g(),f(te,{key:0},[s("button",{type:"button",class:"link-btn",onClick:c=>t.startEditProvider(r)},d(t.t("common.edit")),9,L3),s("button",{type:"button",class:"link-btn danger provider-delete",onClick:c=>t.removeProvider(r)},d(t.t("common.delete")),9,P3)],64)):V("",!0)]),t.editingProvider===r?(g(),f("div",U3,[s("div",F3,[s("label",null,d(t.t("settings.providerAlias")),1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].alias=c,type:"text",class:"input",placeholder:t.t("settings.providerAliasPlaceholder")},null,8,B3),[[ye,t.localProviderConfig[r].alias]])]),s("div",G3,[s("label",null,d(t.t("settings.apiKey")),1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].apiKey=c,type:"password",class:"input",placeholder:t.t("settings.apiKeyPlaceholder"),autocomplete:"off"},null,8,Y3),[[ye,t.localProviderConfig[r].apiKey]])]),s("div",H3,[s("label",null,d(t.t("settings.baseUrl"))+" ("+d(t.t("settings.optional"))+")",1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].baseUrl=c,type:"text",class:"input",placeholder:t.t("settings.baseUrlPlaceholder")},null,8,q3),[[ye,t.localProviderConfig[r].baseUrl]])]),s("div",V3,[s("button",{type:"button",class:"btn-secondary",onClick:e[22]||(e[22]=(...c)=>t.cancelEditProvider&&t.cancelEditProvider(...c))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",onClick:e[23]||(e[23]=(...c)=>t.saveEditProvider&&t.saveEditProvider(...c))},d(t.t("common.save")),1)])])):(g(),f("div",z3,[s("p",W3,[s("span",K3,d(t.t("settings.apiKey"))+":",1),e[109]||(e[109]=ze(" ••••••••",-1))]),t.localProviderConfig[r].baseUrl?(g(),f("p",Q3,[s("span",$3,d(t.t("settings.baseUrl"))+":",1),ze(" "+d(t.localProviderConfig[r].baseUrl),1)])):V("",!0)]))],2))),128))])),t.configuredProviders.length>0&&!t.editingProvider?(g(),f("p",X3,d(t.t("settings.editProviderHint")),1)):V("",!0)])],512),[[ht,t.modelConfigSubTab==="provider"]]),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.showAddProviderModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[32]||(e[32]=Be(c=>t.showAddProviderModal=!1,["self"]))},[s("div",Z3,[s("div",J3,[s("h2",null,d(t.t("settings.addProviderTitle")),1),s("button",{type:"button",class:"close-btn",onClick:e[24]||(e[24]=c=>t.showAddProviderModal=!1)},"✕")]),s("div",j3,[s("div",eK,[s("label",null,d(t.t("settings.selectProvider")),1),Q(s("select",{"onUpdate:modelValue":e[25]||(e[25]=c=>t.addProviderForm.provider=c),class:"input select-input",onChange:e[26]||(e[26]=(...c)=>t.onAddProviderSelect&&t.onAddProviderSelect(...c))},[e[110]||(e[110]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.supportedProviders,c=>{var u;return g(),f("option",{key:c,value:c},d(((u=t.providerSupport[c])==null?void 0:u.name)||c),9,tK)}),128))],544),[[dt,t.addProviderForm.provider]])]),s("div",nK,[s("label",null,d(t.t("settings.providerAlias")),1),Q(s("input",{"onUpdate:modelValue":e[27]||(e[27]=c=>t.addProviderForm.alias=c),type:"text",class:"input",placeholder:t.t("settings.providerAliasPlaceholder")},null,8,oK),[[ye,t.addProviderForm.alias]])]),s("div",aK,[s("label",null,d(t.t("settings.apiKey")),1),Q(s("input",{"onUpdate:modelValue":e[28]||(e[28]=c=>t.addProviderForm.apiKey=c),type:"password",class:"input",placeholder:t.t("settings.apiKeyPlaceholder"),autocomplete:"off"},null,8,rK),[[ye,t.addProviderForm.apiKey]])]),s("div",sK,[s("label",null,d(t.t("settings.baseUrl"))+" ("+d(t.t("settings.optional"))+")",1),Q(s("input",{"onUpdate:modelValue":e[29]||(e[29]=c=>t.addProviderForm.baseUrl=c),type:"text",class:"input",placeholder:t.t("settings.baseUrlPlaceholder")},null,8,iK),[[ye,t.addProviderForm.baseUrl]])]),s("div",lK,[s("button",{type:"button",class:"btn-secondary",onClick:e[30]||(e[30]=c=>t.showAddProviderModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.addProviderForm.provider||!((r=t.addProviderForm.apiKey)!=null&&r.trim()),onClick:e[31]||(e[31]=(...c)=>t.submitAddProvider&&t.submitAddProvider(...c))},d(t.t("common.save")),9,cK)])])])])):V("",!0)]}),_:1}),Q(s("div",dK,[s("div",_K,[e[111]||(e[111]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",uK,d(t.t("settings.defaultModelHint")),1)]),t.configuredProviders.length===0?(g(),f("p",mK,d(t.t("settings.noConfiguredProvider")),1)):(g(),f(te,{key:1},[s("div",pK,[s("h4",gK,d(t.t("settings.configuredModelsList")),1),s("button",{type:"button",class:"btn-primary btn-add-provider",onClick:e[33]||(e[33]=(...r)=>t.openAddModelModal&&t.openAddModelModal(...r))},d(t.t("settings.addModel")),1)]),t.configuredModelsList.length===0?(g(),f("p",fK,d(t.t("settings.noConfiguredModels")),1)):(g(),f("div",EK,[(g(!0),f(te,null,Le(t.configuredModelsList,(r,c)=>(g(),f("div",{key:c,class:"configured-model-row"},[s("span",SK,d(t.getProviderDisplayName(r.provider)),1),e[112]||(e[112]=s("span",{class:"model-row-sep"},"/",-1)),s("span",bK,d(t.getModelAlias(r)),1),s("span",hK,d(r.type),1),t.defaultModelIndex===c?(g(),f("span",TK,d(t.t("settings.defaultModelLabel")),1)):V("",!0),s("span",vK,[s("button",{type:"button",class:"link-btn",onClick:u=>t.openEditModel(c)},d(t.t("common.edit")),9,CK),t.defaultModelIndex!==c?(g(),f("button",{key:0,type:"button",class:"link-btn",onClick:u=>t.setDefaultFromConfigured(r)},d(t.t("settings.setAsDefaultModel")),9,yK)):V("",!0),s("button",{type:"button",class:"link-btn danger",onClick:u=>t.confirmRemoveConfiguredModel(c)},d(t.t("common.delete")),9,RK)])]))),128))]))],64))],512),[[ht,t.modelConfigSubTab==="default"]]),Q(s("div",NK,[s("div",OK,[e[113]||(e[113]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",AK,d(t.t("settings.localModelsHint")),1)]),s("div",IK,[s("h4",DK,d(t.t("settings.localLlmServiceTitle")),1)]),s("div",wK,[e[114]||(e[114]=s("span",{class:"settings-hint-icon","aria-hidden":"true"},"⚠️",-1)),s("p",kK,d(t.t("settings.localLlmContextLimitHint")),1)]),s("div",MK,[t.localLlmStatusLoading?(g(),f("p",xK,d(t.t("common.loading")),1)):(g(),f(te,{key:1},[s("p",{class:Oe(["local-llm-status",{"status-ok":t.localLlmStatus.available,"status-fail":!t.localLlmStatus.available&&t.localLlmStatus.error}])},[t.localLlmStatus.available?(g(),f("span",LK,d(t.t("settings.localLlmStatusReady")),1)):t.localLlmStatus.error?(g(),f("span",PK,d(t.t("settings.localLlmStatusUnavailable"))+":"+d(t.localLlmStatus.error),1)):(g(),f("span",UK,d(t.t("settings.localLlmStatusUnavailable")),1))],2),s("div",FK,[s("div",BK,[s("label",null,d(t.t("settings.localLlmSelectLlm")),1),Q(s("select",{"onUpdate:modelValue":e[34]||(e[34]=r=>t.localLlmStartSelectedLlm=r),class:"input select-input"},[s("option",GK,"— "+d(t.t("settings.localLlmUseDefault")),1),(g(!0),f(te,null,Le(t.installedLlmsForStart,r=>(g(),f("option",{key:r.filename,value:r.filename},d(r.displayName||r.filename),9,YK))),128))],512),[[dt,t.localLlmStartSelectedLlm]])]),s("div",HK,[s("label",null,d(t.t("settings.localLlmSelectEmbedding")),1),Q(s("select",{"onUpdate:modelValue":e[35]||(e[35]=r=>t.localLlmStartSelectedEmb=r),class:"input select-input"},[s("option",qK,"— "+d(t.t("settings.localLlmUseDefault")),1),(g(!0),f(te,null,Le(t.installedEmbeddingsForStart,r=>(g(),f("option",{key:r.filename,value:r.filename},d(r.displayName||r.filename),9,VK))),128))],512),[[dt,t.localLlmStartSelectedEmb]])]),s("button",{type:"button",class:"btn-primary",disabled:t.localLlmStartLoading,onClick:e[36]||(e[36]=(...r)=>t.startLocalLlmService&&t.startLocalLlmService(...r))},d(t.localLlmStartLoading?t.t("common.loading"):t.localLlmStatus.available?t.t("settings.localLlmRestartBtn"):t.t("settings.localLlmStartBtn")),9,zK)])],64))]),t.recommendedModels.length>0?(g(),f(te,{key:0},[s("div",WK,[s("h4",KK,d(t.t("settings.localModelsDownload")),1)]),s("div",QK,[(g(!0),f(te,null,Le(t.recommendedModels,r=>(g(),f("div",{key:r.id,class:"local-model-rec-row"},[s("div",$K,[s("span",XK,d(r.name),1),s("span",ZK,d(r.type),1),s("span",JK,d(r.sizeHint),1)]),s("div",jK,[r.isInstalled?(g(),f("span",eQ,d(t.t("settings.localModelsAlreadyDownloaded")),1)):t.downloadProgressMap[r.id]?(g(),f(te,{key:1},[s("span",tQ,[ze(d(t.downloadProgressMap[r.id].status)+" ",1),t.downloadProgressMap[r.id].percent!=null?(g(),f(te,{key:0},[ze(" ("+d(t.downloadProgressMap[r.id].percent)+"%) ",1)],64)):V("",!0)]),t.isDownloading(t.downloadProgressMap[r.id])?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-sm",onClick:c=>t.cancelDownloadModel(r.id)},d(t.t("settings.localModelsCancelDownload")),9,nQ)):V("",!0)],64)):(g(),f(te,{key:2},[s("button",{type:"button",class:"btn-primary btn-sm",onClick:c=>t.startDownloadModel(r.id,!0)},d(t.t("settings.localModelsDownloadChina")),9,oQ),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:c=>t.startDownloadModel(r.id,!1)},d(t.t("settings.localModelsDownloadGlobal")),9,aQ)],64))])]))),128))])],64)):V("",!0),s("div",rQ,[s("h4",sQ,d(t.t("settings.localModelsInstalled")),1),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:e[37]||(e[37]=(...r)=>t.refreshLocalModels&&t.refreshLocalModels(...r))},d(t.t("common.refresh")),1)]),t.localModelsLoading?(g(),f("div",iQ,d(t.t("common.loading")),1)):t.localModelsList.length===0?(g(),f("p",lQ,d(t.t("settings.localModelsEmpty")),1)):(g(),f("div",cQ,[(g(!0),f(te,null,Le(t.localModelsList,r=>(g(),f("div",{key:r.filename,class:"local-model-row"},[s("div",dQ,[s("span",{class:"local-model-filename",title:r.filename},d(r.displayName||r.filename),9,_Q),s("span",uQ,d(r.inferredType),1),s("span",mQ,d(t.formatFileSize(r.size)),1)]),s("div",pQ,[s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDeleteLocalModel(r.filename)},d(t.t("common.delete")),9,gQ)])]))),128))]))],512),[[ht,t.modelConfigSubTab==="local"]])],512),[[ht,t.activeTab==="models"]]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showAddModelModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[55]||(e[55]=Be((...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r),["self"]))},[s("div",fQ,[s("div",EQ,[s("h2",null,d(t.editingModelIndex>=0?t.t("settings.editModelTitle"):t.t("settings.addModelTitle")),1),s("button",{type:"button",class:"close-btn",onClick:e[38]||(e[38]=(...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r))},"✕")]),s("div",SQ,[s("div",bQ,[s("label",null,d(t.t("settings.selectProvider")),1),Q(s("select",{"onUpdate:modelValue":e[39]||(e[39]=r=>t.addModelForm.provider=r),class:"input select-input",disabled:t.editingModelIndex>=0,onChange:e[40]||(e[40]=(...r)=>t.onAddModelProviderOrTypeChange&&t.onAddModelProviderOrTypeChange(...r))},[e[115]||(e[115]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.configuredProviders,r=>(g(),f("option",{key:r,value:r},d(t.getProviderDisplayName(r)),9,TQ))),128))],40,hQ),[[dt,t.addModelForm.provider]])]),s("div",vQ,[s("label",null,d(t.t("settings.modelType")),1),Q(s("select",{"onUpdate:modelValue":e[41]||(e[41]=r=>t.addModelForm.type=r),class:"input select-input",disabled:t.editingModelIndex>=0,onChange:e[42]||(e[42]=(...r)=>t.onAddModelProviderOrTypeChange&&t.onAddModelProviderOrTypeChange(...r))},[s("option",yQ,d(t.t("settings.modelTypeLlm")),1),s("option",RQ,d(t.t("settings.modelTypeEmbedding")),1),s("option",NQ,d(t.t("settings.modelTypeImage")),1)],40,CQ),[[dt,t.addModelForm.type]])]),s("div",OQ,[s("label",null,d(t.t("settings.model")),1),t.isOpenAiCustomProvider?Q((g(),f("input",{key:0,"onUpdate:modelValue":e[43]||(e[43]=r=>t.addModelForm.modelId=r),type:"text",class:"input",placeholder:t.t("settings.modelIdCustomPlaceholder")},null,8,AQ)),[[ye,t.addModelForm.modelId]]):t.addModelForm.provider==="local"?(g(),f(te,{key:1},[Q(s("select",{"onUpdate:modelValue":e[44]||(e[44]=r=>t.addModelForm.modelId=r),class:"input select-input",disabled:t.editingModelIndex>=0},[e[116]||(e[116]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.localModelsForSelect,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name),9,DQ))),128))],8,IQ),[[dt,t.addModelForm.modelId]]),s("p",wQ,d(t.t("settings.localModelSelectHint")),1)],64)):(g(),f(te,{key:2},[Q(s("select",{"onUpdate:modelValue":e[45]||(e[45]=r=>t.addModelForm.modelId=r),class:"input select-input",disabled:!t.addModelForm.provider||t.editingModelIndex>=0},[e[117]||(e[117]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.addModelOptions,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name),9,MQ))),128))],8,kQ),[[dt,t.addModelForm.modelId]]),s("p",xQ,d(t.t("settings.modelCustomHint")),1),Q(s("input",{"onUpdate:modelValue":e[46]||(e[46]=r=>t.addModelForm.customModelId=r),type:"text",class:"input model-custom-input",placeholder:t.t("settings.modelCustomPlaceholder"),disabled:!t.addModelForm.provider||t.editingModelIndex>=0},null,8,LQ),[[ye,t.addModelForm.customModelId]])],64))]),s("div",PQ,[s("label",null,d(t.t("settings.modelAlias")),1),Q(s("input",{"onUpdate:modelValue":e[47]||(e[47]=r=>t.addModelForm.alias=r),type:"text",class:"input",placeholder:t.t("settings.modelAliasPlaceholder")},null,8,UQ),[[ye,t.addModelForm.alias]])]),s("div",FQ,[s("label",BQ,[Q(s("input",{"onUpdate:modelValue":e[48]||(e[48]=r=>t.addModelForm.reasoning=r),type:"checkbox"},null,512),[[zn,t.addModelForm.reasoning]]),ze(" "+d(t.t("settings.modelReasoning")),1)])]),t.addModelForm.cost?(g(),f("div",GQ,[s("label",null,d(t.t("settings.modelCost")),1),s("div",YQ,[s("span",HQ,[Q(s("input",{"onUpdate:modelValue":e[49]||(e[49]=r=>t.addModelForm.cost.input=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.input,void 0,{number:!0}]]),e[118]||(e[118]=ze(" input",-1))]),s("span",qQ,[Q(s("input",{"onUpdate:modelValue":e[50]||(e[50]=r=>t.addModelForm.cost.output=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.output,void 0,{number:!0}]]),e[119]||(e[119]=ze(" output",-1))]),s("span",VQ,[Q(s("input",{"onUpdate:modelValue":e[51]||(e[51]=r=>t.addModelForm.cost.cacheRead=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.cacheRead,void 0,{number:!0}]]),e[120]||(e[120]=ze(" cacheRead",-1))]),s("span",zQ,[Q(s("input",{"onUpdate:modelValue":e[52]||(e[52]=r=>t.addModelForm.cost.cacheWrite=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.cacheWrite,void 0,{number:!0}]]),e[121]||(e[121]=ze(" cacheWrite",-1))])])])):V("",!0),s("div",WQ,[s("button",{type:"button",class:"btn-secondary",onClick:e[53]||(e[53]=(...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.addModelForm.provider||!t.effectiveAddModelId,onClick:e[54]||(e[54]=(...r)=>t.submitAddModel&&t.submitAddModel(...r))},d(t.t("common.save")),9,KQ)])])])])):V("",!0)]),_:1}),Q(s("div",QQ,[s("h2",$Q,d(t.t("settings.knowledgeTitle")),1),s("div",XQ,[e[122]||(e[122]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",ZQ,d(t.t("settings.knowledgeHint")),1)]),s("div",JQ,[s("h3",null,d(t.t("settings.vectorModelSection")),1),s("p",jQ,d(t.t("settings.vectorModelSectionHint")),1),s("div",e4,[s("label",t4,[Q(s("input",{"onUpdate:modelValue":e[56]||(e[56]=r=>t.localRag.embeddingSource=r),type:"radio",value:"local"},null,512),[[_o,t.localRag.embeddingSource]]),ze(" "+d(t.t("settings.vectorModelLocal")),1)]),s("label",n4,[Q(s("input",{"onUpdate:modelValue":e[57]||(e[57]=r=>t.localRag.embeddingSource=r),type:"radio",value:"online"},null,512),[[_o,t.localRag.embeddingSource]]),ze(" "+d(t.t("settings.vectorModelOnline")),1)])]),t.localRag.embeddingSource==="local"?(g(),f("div",o4,[s("label",null,d(t.t("settings.localModelPath")),1),Q(s("input",{"onUpdate:modelValue":e[58]||(e[58]=r=>t.localRag.localModelPath=r),type:"text",class:"input",placeholder:t.t("settings.localModelPathPlaceholder")},null,8,a4),[[ye,t.localRag.localModelPath]])])):V("",!0),t.localRag.embeddingSource==="online"?(g(),f("div",r4,[s("label",null,d(t.t("settings.embeddingModelItemCode")),1),Q(s("select",{"onUpdate:modelValue":e[59]||(e[59]=r=>t.localRag.embeddingModelItemCode=r),class:"input select-input"},[s("option",s4,"— "+d(t.t("settings.optional"))+" —",1),(g(!0),f(te,null,Le(t.configuredEmbeddingModels,r=>(g(),f("option",{key:r.modelItemCode||r.provider+":"+r.modelId,value:r.modelItemCode||r.provider+":"+r.modelId},d(t.getProviderDisplayName(r.provider))+" / "+d(t.getModelAlias(r)),9,i4))),128))],512),[[dt,t.localRag.embeddingModelItemCode]]),t.configuredEmbeddingModels.length===0?(g(),f("p",l4,d(t.t("settings.noConfiguredEmbeddingModels")),1)):V("",!0)])):V("",!0)]),s("div",c4,[s("h3",null,d(t.t("settings.vectorStoreSection")),1),s("p",d4,d(t.t("settings.vectorStoreSectionHint")),1),s("div",_4,[s("label",u4,[Q(s("input",{"onUpdate:modelValue":e[60]||(e[60]=r=>t.localRag.vectorStore=r),type:"radio",value:"local"},null,512),[[_o,t.localRag.vectorStore]]),ze(" "+d(t.t("settings.vectorStoreLocal")),1)]),s("label",m4,[Q(s("input",{"onUpdate:modelValue":e[61]||(e[61]=r=>t.localRag.vectorStore=r),type:"radio",value:"qdrant"},null,512),[[_o,t.localRag.vectorStore]]),ze(" "+d(t.t("settings.vectorStoreQdrant")),1)])]),t.localRag.vectorStore==="qdrant"?(g(),f(te,{key:0},[s("div",p4,[s("label",null,d(t.t("settings.qdrantUrl")),1),Q(s("input",{"onUpdate:modelValue":e[62]||(e[62]=r=>t.localRag.qdrant.url=r),type:"text",class:"input",placeholder:t.t("settings.qdrantUrlPlaceholder")},null,8,g4),[[ye,t.localRag.qdrant.url]])]),s("div",f4,[s("label",null,d(t.t("settings.qdrantApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[63]||(e[63]=r=>t.localRag.qdrant.apiKey=r),type:"password",class:"input",placeholder:t.t("settings.qdrantApiKeyPlaceholder"),autocomplete:"off"},null,8,E4),[[ye,t.localRag.qdrant.apiKey]])]),s("div",S4,[s("label",null,d(t.t("settings.qdrantCollection")),1),Q(s("input",{"onUpdate:modelValue":e[64]||(e[64]=r=>t.localRag.qdrant.collection=r),type:"text",class:"input",placeholder:t.t("settings.qdrantCollectionPlaceholder")},null,8,b4),[[ye,t.localRag.qdrant.collection]])])],64)):V("",!0)]),s("div",h4,[s("button",{onClick:e[65]||(e[65]=(...r)=>t.saveKnowledgeConfig&&t.saveKnowledgeConfig(...r)),class:"btn-primary"},d(t.t("common.save")),1)])],512),[[ht,t.showRagTab&&t.activeTab==="knowledge"]]),Q(s("div",T4,[s("h2",v4,d(t.t("settings.users")),1),t.authStore.currentUser?(g(),f("div",C4,[s("h3",null,d(t.t("settings.changeCurrentPassword")),1),s("p",y4,[ze(d(t.t("settings.changeCurrentPasswordHint"))+" ",1),s("strong",null,d(t.authStore.currentUser.username),1),ze("。"+d(t.t("settings.changeCurrentPasswordHintAfter")),1)]),s("button",{type:"button",class:"btn-secondary",onClick:e[66]||(e[66]=(...r)=>t.openChangeCurrentUserPassword&&t.openChangeCurrentUserPassword(...r))},d(t.t("settings.changeCurrentPassword")),1)])):V("",!0),s("div",R4,[s("h3",null,d(t.t("settings.userList")),1),s("div",N4,[s("p",O4,d(t.t("settings.usersHint")),1),s("button",{type:"button",class:"btn-primary",onClick:e[67]||(e[67]=(...r)=>t.openAddUser&&t.openAddUser(...r))},d(t.t("settings.addUser")),1)]),t.usersLoading?(g(),f("div",A4,d(t.t("common.loading")),1)):t.usersList.length===0?(g(),f("div",I4,[s("p",null,d(t.t("settings.noUsers")),1),s("button",{type:"button",class:"btn-primary",onClick:e[68]||(e[68]=(...r)=>t.openAddUser&&t.openAddUser(...r))},d(t.t("settings.addUser")),1)])):(g(),f("div",D4,[s("table",w4,[s("thead",null,[s("tr",null,[s("th",null,d(t.t("settings.loginUsername")),1),s("th",k4,d(t.t("common.details")),1)])]),s("tbody",null,[(g(!0),f(te,null,Le(t.usersList,r=>(g(),f("tr",{key:r.id},[s("td",null,[s("span",M4,d(r.username),1)]),s("td",x4,[s("button",{type:"button",class:"link-btn",onClick:c=>t.openChangePassword(r)},d(t.t("settings.changePassword")),9,L4),e[123]||(e[123]=s("span",{class:"sep"},"|",-1)),s("button",{type:"button",class:"link-btn",onClick:c=>t.openEditUser(r)},d(t.t("settings.editUser")),9,P4),e[124]||(e[124]=s("span",{class:"sep"},"|",-1)),s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDeleteUser(r)},d(t.t("common.delete")),9,U4)])]))),128))])])]))])],512),[[ht,t.activeTab==="users"]]),Q(s("div",F4,[Ae(i)],512),[[ht,t.activeTab==="skills"]]),Q(s("div",B4,[s("h2",G4,d(t.t("settings.about")),1),s("div",Y4,[e[126]||(e[126]=s("div",{class:"logo-large"},[s("img",{src:h_,alt:"OpenClawX"})],-1)),e[127]||(e[127]=s("h3",null,"OpenClawX Desktop",-1)),s("p",H4,d(t.displayVersion),1),s("div",q4,[s("div",V4,[s("span",null,d(t.t("settings.platform"))+":",1),s("span",null,d(t.platform),1)]),t.platform!=="web"?(g(),f("div",z4,[e[125]||(e[125]=s("span",null,"Electron:",-1)),s("span",null,d(t.electronVersion),1)])):V("",!0)])])],512),[[ht,t.activeTab==="about"]])])]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showAddUserModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[74]||(e[74]=Be(r=>t.showAddUserModal=!1,["self"]))},[s("div",W4,[s("div",K4,[s("h2",null,d(t.t("settings.addUser")),1),s("button",{type:"button",class:"close-btn",onClick:e[69]||(e[69]=r=>t.showAddUserModal=!1)},"✕")]),s("div",Q4,[s("div",$4,[s("label",null,d(t.t("settings.loginUsername")),1),Q(s("input",{"onUpdate:modelValue":e[70]||(e[70]=r=>t.addUserForm.username=r),type:"text",class:"input",placeholder:t.t("settings.loginUsernamePlaceholder")},null,8,X4),[[ye,t.addUserForm.username]])]),s("div",Z4,[s("label",null,d(t.t("settings.loginPassword")),1),Q(s("input",{"onUpdate:modelValue":e[71]||(e[71]=r=>t.addUserForm.password=r),type:"password",class:"input",placeholder:t.t("settings.loginPasswordPlaceholder"),autocomplete:"new-password"},null,8,J4),[[ye,t.addUserForm.password]])]),t.userFormError?(g(),f("p",j4,d(t.userFormError),1)):V("",!0),s("div",e9,[s("button",{type:"button",class:"btn-secondary",onClick:e[72]||(e[72]=r=>t.showAddUserModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[73]||(e[73]=(...r)=>t.submitAddUser&&t.submitAddUser(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,t9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showEditUserModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[80]||(e[80]=Be(r=>t.showEditUserModal=!1,["self"]))},[s("div",n9,[s("div",o9,[s("h2",null,d(t.t("settings.editUser")),1),s("button",{type:"button",class:"close-btn",onClick:e[75]||(e[75]=r=>t.showEditUserModal=!1)},"✕")]),s("div",a9,[s("div",r9,[s("label",null,d(t.t("settings.loginUsername")),1),Q(s("input",{"onUpdate:modelValue":e[76]||(e[76]=r=>t.editUserForm.username=r),type:"text",class:"input"},null,512),[[ye,t.editUserForm.username]])]),s("div",s9,[s("label",null,d(t.t("settings.newPasswordOptional")),1),Q(s("input",{"onUpdate:modelValue":e[77]||(e[77]=r=>t.editUserForm.password=r),type:"password",class:"input",placeholder:t.t("settings.newPasswordPlaceholder"),autocomplete:"new-password"},null,8,i9),[[ye,t.editUserForm.password]])]),t.userFormError?(g(),f("p",l9,d(t.userFormError),1)):V("",!0),s("div",c9,[s("button",{type:"button",class:"btn-secondary",onClick:e[78]||(e[78]=r=>t.showEditUserModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[79]||(e[79]=(...r)=>t.submitEditUser&&t.submitEditUser(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,d9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.showChangePasswordModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[85]||(e[85]=Be(c=>t.showChangePasswordModal=!1,["self"]))},[s("div",_9,[s("div",u9,[s("h2",null,d(t.t("settings.changePassword"))+": "+d((r=t.changePasswordUser)==null?void 0:r.username),1),s("button",{type:"button",class:"close-btn",onClick:e[81]||(e[81]=c=>t.showChangePasswordModal=!1)},"✕")]),s("div",m9,[s("div",p9,[s("label",null,d(t.t("settings.newPassword")),1),Q(s("input",{"onUpdate:modelValue":e[82]||(e[82]=c=>t.changePasswordForm.password=c),type:"password",class:"input",autocomplete:"new-password"},null,512),[[ye,t.changePasswordForm.password]])]),t.userFormError?(g(),f("p",g9,d(t.userFormError),1)):V("",!0),s("div",f9,[s("button",{type:"button",class:"btn-secondary",onClick:e[83]||(e[83]=c=>t.showChangePasswordModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[84]||(e[84]=(...c)=>t.submitChangePassword&&t.submitChangePassword(...c))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,E9)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showChangeCurrentPasswordModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[91]||(e[91]=Be(r=>t.showChangeCurrentPasswordModal=!1,["self"]))},[s("div",S9,[s("div",b9,[s("h2",null,d(t.t("settings.changeCurrentPassword")),1),s("button",{type:"button",class:"close-btn",onClick:e[86]||(e[86]=r=>t.showChangeCurrentPasswordModal=!1)},"✕")]),s("div",h9,[s("div",T9,[s("label",null,d(t.t("settings.newPassword")),1),Q(s("input",{"onUpdate:modelValue":e[87]||(e[87]=r=>t.currentUserPasswordForm.password=r),type:"password",class:"input",placeholder:t.t("settings.newPassword"),autocomplete:"new-password"},null,8,v9),[[ye,t.currentUserPasswordForm.password]])]),s("div",C9,[s("label",null,d(t.t("settings.confirmNewPassword")),1),Q(s("input",{"onUpdate:modelValue":e[88]||(e[88]=r=>t.currentUserPasswordForm.confirm=r),type:"password",class:"input",placeholder:t.t("settings.confirmNewPassword"),autocomplete:"new-password"},null,8,y9),[[ye,t.currentUserPasswordForm.confirm]])]),t.userFormError?(g(),f("p",R9,d(t.userFormError),1)):V("",!0),s("div",N9,[s("button",{type:"button",class:"btn-secondary",onClick:e[89]||(e[89]=r=>t.showChangeCurrentPasswordModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[90]||(e[90]=(...r)=>t.submitChangeCurrentUserPassword&&t.submitChangeCurrentUserPassword(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,O9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.deleteUserTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[95]||(e[95]=Be(c=>t.deleteUserTarget=null,["self"]))},[s("div",A9,[s("div",I9,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[92]||(e[92]=c=>t.deleteUserTarget=null)},"✕")]),s("div",D9,[s("p",null,d(t.t("settings.deleteUserConfirm")),1),s("p",w9,d((r=t.deleteUserTarget)==null?void 0:r.username),1),s("div",k9,[s("button",{type:"button",class:"btn-secondary",onClick:e[93]||(e[93]=c=>t.deleteUserTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",disabled:t.userFormSaving,onClick:e[94]||(e[94]=(...c)=>t.submitDeleteUser&&t.submitDeleteUser(...c))},d(t.userFormSaving?t.t("common.loading"):t.t("common.delete")),9,M9)])])])])):V("",!0)]}),_:1})])}const L9=st(HW,[["render",x9],["__scopeId","data-v-0da43d33"]]),P9=["feishu","dingtalk","telegram","wechat"],U9=()=>({feishu:{enabled:!1,appId:"",appSecret:"",defaultAgentId:"default"},dingtalk:{enabled:!1,clientId:"",clientSecret:"",defaultAgentId:"default"},telegram:{enabled:!1,botToken:"",defaultAgentId:"default"},wechat:{enabled:!1,puppet:"",defaultAgentId:"default"}}),F9={name:"Channels",setup(){const{t:n}=Ot(),e=ma(),o=D(null),t=D(!0),a=D(null),l=D(null),i=D(U9()),r=D([]),c=D(!1),u=D(null),_=D("logged_out"),m=D(null),p=D(!1);let E=null;const S=ae(()=>{var H;const G=((H=o.value)==null?void 0:H.channels)||{};return P9.map(R=>{const oe=!!(G[R]||{}).enabled;let he=R,Ee="";return R==="feishu"?(he=n("settings.feishu"),Ee=n("settings.channelBriefFeishu")):R==="dingtalk"?(he=n("settings.dingtalk"),Ee=n("settings.channelBriefDingtalk")):R==="telegram"?(he=n("settings.telegram"),Ee=n("settings.channelBriefTelegram")):R==="wechat"&&(he=n("settings.wechat"),Ee=n("settings.channelBriefWechat")),{id:R,name:he,brief:Ee,enabled:oe,icon:{feishu:"📋",dingtalk:"🔔",telegram:"✈️",wechat:"💬"}[R]}})}),T=ae(()=>{if(!l.value)return"";const G=S.value.find(H=>H.id===l.value);return G?n("settings.channelConfigure")+" - "+G.name:n("settings.channelConfigure")}),h=ae(()=>{const G=r.value||[];return[...G.some(P=>(P.id||P.workspace)==="default")?[]:[{id:"default",name:"default"}],...G.map(P=>({id:P.id||P.workspace,name:P.name||P.workspace||P.id}))]}),A=ae(()=>{if(!a.value)return"";const G=a.value.status||"";return n(G==="logged_in"?"settings.channelWechatLoggedIn":G==="scanning"?"settings.channelWechatScanning":"settings.channelWechatLoggedOut")}),b=ae(()=>({"status-scanning":_.value==="scanning","status-logged-in":_.value==="logged_in","status-logged-out":_.value==="logged_out"})),y=ae(()=>_.value==="scanning"?n("settings.channelWechatScanning"):_.value==="logged_in"?n("settings.channelWechatLoggedIn"):n("settings.channelWechatLoggedOut"));async function w(){var G;t.value=!0;try{const H=await Wn.getConfig();o.value=((G=H==null?void 0:H.data)==null?void 0:G.data)??(H==null?void 0:H.data)??null}catch(H){console.error("[Channels] loadConfig failed",H),o.value=null}finally{t.value=!1}}async function k(){var G;try{const H=await Xt.listAgents(),R=((G=H==null?void 0:H.data)==null?void 0:G.data)??[];r.value=Array.isArray(R)?R:[]}catch{r.value=[]}}async function B(){try{const H=await(await fetch("/server-api/wechat/qrcode")).json().catch(()=>({}));a.value=H}catch{a.value=null}}function X(){var H;const G=((H=o.value)==null?void 0:H.gatewayUrl)||"";return G?G.replace(/^ws(s?):\/\//,"http$1://"):""}function x(G){const H=X();return H?`${H}/server-api${G}`:`/server-api${G}`}async function U(){p.value=!0;try{let G=await fetch(x("/wechat/qrcode")),H=await G.json().catch(()=>({}));!H.qrcode&&H.status!=="logged_in"&&(G=await fetch(x("/wechat/qrcode/refresh"),{method:"POST"}),H=await G.json().catch(()=>({}))),u.value=H.qrcode||null,_.value=H.status||"logged_out",m.value=H.userName||null,H.status==="scanning"&&!E&&(E=setInterval(re,3e3))}catch(G){console.error("[Channels] wechat qrcode failed",G)}finally{p.value=!1}}async function re(){try{const H=await(await fetch(x("/wechat/qrcode"))).json().catch(()=>({}));u.value=H.qrcode||null,_.value=H.status||"logged_out",m.value=H.userName||null,(H.status==="logged_in"||H.status==="logged_out")&&(clearInterval(E),E=null)}catch{}}function se(G){var P;l.value=G;const R=(((P=o.value)==null?void 0:P.channels)||{})[G]||{};G==="feishu"?i.value.feishu={enabled:!!R.enabled,appId:typeof R.appId=="string"?R.appId:"",appSecret:typeof R.appSecret=="string"?R.appSecret:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="dingtalk"?i.value.dingtalk={enabled:!!R.enabled,clientId:typeof R.clientId=="string"?R.clientId:"",clientSecret:typeof R.clientSecret=="string"?R.clientSecret:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="telegram"?i.value.telegram={enabled:!!R.enabled,botToken:typeof R.botToken=="string"?R.botToken:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="wechat"&&(i.value.wechat={enabled:!!R.enabled,puppet:typeof R.puppet=="string"?R.puppet:"",defaultAgentId:(R.defaultAgentId||"default").trim()},u.value=null,_.value="logged_out",m.value=null,i.value.wechat.enabled&&U()),k()}function ne(){l.value=null,E&&(clearInterval(E),E=null)}async function Te(){var H,R,P;const G=l.value;if(G){c.value=!0;try{const oe=((H=o.value)==null?void 0:H.channels)||{},he={feishu:oe.feishu||{},dingtalk:oe.dingtalk||{},telegram:oe.telegram||{},wechat:oe.wechat||{}};G==="feishu"?he.feishu={enabled:!!i.value.feishu.enabled,appId:(i.value.feishu.appId||"").trim(),appSecret:(i.value.feishu.appSecret||"").trim(),defaultAgentId:(i.value.feishu.defaultAgentId||"default").trim()}:G==="dingtalk"?he.dingtalk={enabled:!!i.value.dingtalk.enabled,clientId:(i.value.dingtalk.clientId||"").trim(),clientSecret:(i.value.dingtalk.clientSecret||"").trim(),defaultAgentId:(i.value.dingtalk.defaultAgentId||"default").trim()}:G==="telegram"?he.telegram={enabled:!!i.value.telegram.enabled,botToken:(i.value.telegram.botToken||"").trim(),defaultAgentId:(i.value.telegram.defaultAgentId||"default").trim()}:G==="wechat"&&(he.wechat={enabled:!!i.value.wechat.enabled,puppet:(i.value.wechat.puppet||"").trim()||void 0,defaultAgentId:(i.value.wechat.defaultAgentId||"default").trim()}),await e.updateConfig({channels:he}),await w(),G==="wechat"&&B(),ne(),alert(n("common.saved"))}catch(oe){console.error("[Channels] saveChannelConfig failed",oe),alert(((P=(R=oe==null?void 0:oe.response)==null?void 0:R.data)==null?void 0:P.message)||(oe==null?void 0:oe.message)||n("common.error")||"Save failed")}finally{c.value=!1}}}return Yt(async()=>{var G,H,R;await w(),(R=(H=(G=o.value)==null?void 0:G.channels)==null?void 0:H.wechat)!=null&&R.enabled&&B()}),{t:n,loading:t,channelList:S,wechatStatus:a,wechatStatusText:A,channelConfigId:l,channelForm:i,modalTitle:T,agentOptions:h,channelSaveLoading:c,wechatQrCodeModal:u,wechatModalStatus:_,wechatModalUserName:m,wechatQrLoading:p,wechatModalStatusClass:b,wechatModalStatusText:y,openChannelConfig:se,closeChannelConfig:ne,saveChannelConfig:Te,fetchWechatQrCodeModal:U}}},B9={class:"channels-view"},G9={class:"channels-header card-glass"},Y9={class:"view-title"},H9={class:"view-desc text-secondary"},q9={key:0,class:"channels-loading"},V9={key:1,class:"channels-grid"},z9={class:"channel-card-header"},W9={class:"channel-icon","aria-hidden":!0},K9={class:"channel-name"},Q9={key:0,class:"channel-status-extra"},$9={class:"channel-card-desc"},X9={class:"channel-card-actions"},Z9=["onClick"],J9={class:"modal-content card-glass channel-config-modal"},j9={class:"modal-header"},e6={class:"modal-body"},t6={class:"form-group"},n6={class:"checkbox-label"},o6={class:"form-group"},a6=["placeholder"],r6={class:"form-group"},s6=["placeholder"],i6={class:"form-group"},l6=["value"],c6={class:"form-hint"},d6={class:"form-group"},_6={class:"checkbox-label"},u6={class:"form-group"},m6=["placeholder"],p6={class:"form-group"},g6=["placeholder"],f6={class:"form-group"},E6=["value"],S6={class:"form-hint"},b6={class:"form-group"},h6={class:"checkbox-label"},T6={class:"form-group"},v6=["placeholder"],C6={class:"form-group"},y6=["value"],R6={class:"form-hint"},N6={class:"form-group"},O6={class:"checkbox-label"},A6={class:"form-group"},I6=["value"],D6={key:0,class:"form-group wechat-qrcode-section"},w6={class:"wechat-status-row"},k6={key:0,class:"wechat-username"},M6=["disabled"],x6={key:1,class:"wechat-qrcode-wrap"},L6={class:"form-hint"},P6=["src"],U6={class:"form-hint"},F6={class:"modal-footer-actions"},B6=["disabled"];function G6(n,e,o,t,a,l){return g(),f("div",B9,[s("div",G9,[s("h1",Y9,d(t.t("settings.channelsPageTitle")),1),s("p",H9,d(t.t("settings.channelsPageDesc")),1)]),t.loading?(g(),f("div",q9,[e[18]||(e[18]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):(g(),f("div",V9,[(g(!0),f(te,null,Le(t.channelList,i=>(g(),f("div",{key:i.id,class:"channel-card card-glass"},[s("div",z9,[s("span",W9,d(i.icon),1),s("span",K9,d(i.name),1),s("span",{class:Oe(["channel-status-badge",i.enabled?"status-enabled":"status-disabled"])},d(i.enabled?t.t("settings.channelStatusEnabled"):t.t("settings.channelStatusDisabled")),3),i.id==="wechat"&&i.enabled&&t.wechatStatus?(g(),f("span",Q9,d(t.wechatStatusText),1)):V("",!0)]),s("p",$9,d(i.brief),1),s("div",X9,[s("button",{type:"button",class:"btn-configure",onClick:r=>t.openChannelConfig(i.id)},d(t.t("settings.channelConfigure")),9,Z9)])]))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>[t.channelConfigId?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[17]||(e[17]=Be((...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i),["self"]))},[s("div",J9,[s("div",j9,[s("h2",null,d(t.modalTitle),1),s("button",{type:"button",class:"close-btn",onClick:e[0]||(e[0]=(...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i))},"✕")]),s("div",e6,[t.channelConfigId==="feishu"?(g(),f(te,{key:0},[s("div",t6,[s("label",n6,[Q(s("input",{"onUpdate:modelValue":e[1]||(e[1]=i=>t.channelForm.feishu.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.feishu.enabled]]),ze(" "+d(t.t("settings.channelFeishuEnabled")),1)])]),s("div",o6,[s("label",null,d(t.t("settings.channelFeishuAppId")),1),Q(s("input",{"onUpdate:modelValue":e[2]||(e[2]=i=>t.channelForm.feishu.appId=i),type:"text",class:"form-input",placeholder:t.t("settings.channelFeishuAppIdPlaceholder"),autocomplete:"off"},null,8,a6),[[ye,t.channelForm.feishu.appId]])]),s("div",r6,[s("label",null,d(t.t("settings.channelFeishuAppSecret")),1),Q(s("input",{"onUpdate:modelValue":e[3]||(e[3]=i=>t.channelForm.feishu.appSecret=i),type:"password",class:"form-input",placeholder:t.t("settings.channelFeishuAppSecretPlaceholder"),autocomplete:"off"},null,8,s6),[[ye,t.channelForm.feishu.appSecret]])]),s("div",i6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[4]||(e[4]=i=>t.channelForm.feishu.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,l6))),128))],512),[[dt,t.channelForm.feishu.defaultAgentId]])]),s("p",c6,d(t.t("settings.channelFeishuHint")),1)],64)):t.channelConfigId==="dingtalk"?(g(),f(te,{key:1},[s("div",d6,[s("label",_6,[Q(s("input",{"onUpdate:modelValue":e[5]||(e[5]=i=>t.channelForm.dingtalk.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.dingtalk.enabled]]),ze(" "+d(t.t("settings.channelDingtalkEnabled")),1)])]),s("div",u6,[s("label",null,d(t.t("settings.channelDingtalkClientId")),1),Q(s("input",{"onUpdate:modelValue":e[6]||(e[6]=i=>t.channelForm.dingtalk.clientId=i),type:"text",class:"form-input",placeholder:t.t("settings.channelDingtalkClientIdPlaceholder"),autocomplete:"off"},null,8,m6),[[ye,t.channelForm.dingtalk.clientId]])]),s("div",p6,[s("label",null,d(t.t("settings.channelDingtalkClientSecret")),1),Q(s("input",{"onUpdate:modelValue":e[7]||(e[7]=i=>t.channelForm.dingtalk.clientSecret=i),type:"password",class:"form-input",placeholder:t.t("settings.channelDingtalkClientSecretPlaceholder"),autocomplete:"off"},null,8,g6),[[ye,t.channelForm.dingtalk.clientSecret]])]),s("div",f6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[8]||(e[8]=i=>t.channelForm.dingtalk.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,E6))),128))],512),[[dt,t.channelForm.dingtalk.defaultAgentId]])]),s("p",S6,d(t.t("settings.channelDingtalkHint")),1)],64)):t.channelConfigId==="telegram"?(g(),f(te,{key:2},[s("div",b6,[s("label",h6,[Q(s("input",{"onUpdate:modelValue":e[9]||(e[9]=i=>t.channelForm.telegram.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.telegram.enabled]]),ze(" "+d(t.t("settings.channelTelegramEnabled")),1)])]),s("div",T6,[s("label",null,d(t.t("settings.channelTelegramBotToken")),1),Q(s("input",{"onUpdate:modelValue":e[10]||(e[10]=i=>t.channelForm.telegram.botToken=i),type:"password",class:"form-input",placeholder:t.t("settings.channelTelegramBotTokenPlaceholder"),autocomplete:"off"},null,8,v6),[[ye,t.channelForm.telegram.botToken]])]),s("div",C6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[11]||(e[11]=i=>t.channelForm.telegram.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,y6))),128))],512),[[dt,t.channelForm.telegram.defaultAgentId]])]),s("p",R6,d(t.t("settings.channelTelegramHint")),1)],64)):t.channelConfigId==="wechat"?(g(),f(te,{key:3},[s("div",N6,[s("label",O6,[Q(s("input",{"onUpdate:modelValue":e[12]||(e[12]=i=>t.channelForm.wechat.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.wechat.enabled]]),ze(" "+d(t.t("settings.channelWechatEnabled")),1)])]),s("div",A6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[13]||(e[13]=i=>t.channelForm.wechat.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,I6))),128))],512),[[dt,t.channelForm.wechat.defaultAgentId]])]),t.channelForm.wechat.enabled?(g(),f("div",D6,[s("div",w6,[s("span",{class:Oe(["wechat-status-dot",t.wechatModalStatusClass])},null,2),s("span",null,d(t.wechatModalStatusText),1),t.wechatModalUserName?(g(),f("span",k6,"("+d(t.wechatModalUserName)+")",1)):V("",!0)]),t.wechatModalStatus!=="logged_in"?(g(),f("button",{key:0,type:"button",class:"btn-secondary",disabled:t.wechatQrLoading,onClick:e[14]||(e[14]=(...i)=>t.fetchWechatQrCodeModal&&t.fetchWechatQrCodeModal(...i))},d(t.wechatQrCodeModal?t.t("settings.channelWechatRefreshQrCode"):t.t("settings.channelWechatGetQrCode")),9,M6)):V("",!0),t.wechatQrCodeModal&&t.wechatModalStatus!=="logged_in"?(g(),f("div",x6,[s("p",L6,d(t.t("settings.channelWechatQrCodeHint")),1),s("img",{src:t.wechatQrCodeModal,alt:"WeChat QR Code",class:"wechat-qrcode-img"},null,8,P6)])):V("",!0)])):V("",!0),s("p",U6,d(t.t("settings.channelWechatHint")),1)],64)):V("",!0)]),s("div",F6,[s("button",{type:"button",class:"btn-secondary",onClick:e[15]||(e[15]=(...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",disabled:t.channelSaveLoading,onClick:e[16]||(e[16]=(...i)=>t.saveChannelConfig&&t.saveChannelConfig(...i))},d(t.channelSaveLoading?t.t("common.loading"):t.t("common.save")),9,B6)])])])):V("",!0)]),_:1})])}const Y6=st(F9,[["render",G6],["__scopeId","data-v-de979e70"]]),H6=[{path:"/",name:"Root",component:SE},{path:"/dashboard",name:"Dashboard",component:pA},{path:"/chat/:sessionId?",name:"AgentChat",component:SE},{path:"/sessions",name:"Sessions",component:rP},{path:"/skills",redirect:()=>({path:"/settings",query:{tab:"skills"}})},{path:"/agents",name:"Agents",component:DG},{path:"/agents/:id",name:"AgentDetail",component:TV},{path:"/tasks",name:"Tasks",component:Vz},{path:"/workspace",name:"Workspace",component:T1},{path:"/work-results",name:"WorkResults",component:j0},{path:"/settings",name:"Settings",component:L9},{path:"/channels",name:"Channels",component:Y6}],q6=zC({history:CC(),routes:H6}),V6=WC(),B_=Uv(pO);B_.use(q6);B_.use(V6);async function z6(){var n;if(typeof((n=window.electronAPI)==null?void 0:n.getGatewayPort)=="function")try{const e=await window.electronAPI.getGatewayPort(),o=typeof e=="number"?e:parseInt(e,10);Number.isInteger(o)&&o>0&&(window.__GATEWAY_PORT__=o,De.defaults.baseURL=`http://127.0.0.1:${o}/server-api`)}catch{}}(async()=>{await z6(),Lt.connect();const n=Jn();Lt.on("agent_chunk",e=>{n.handleAgentChunk(e)}),Lt.on("agent_tool",e=>{n.handleToolExecution(e)}),Lt.on("message_complete",e=>{n.handleMessageComplete(e)}),Lt.on("agent_end",e=>{n.handleConversationEnd(e)}),Lt.on("conversation_end",e=>{n.handleConversationEnd(e)}),Lt.on("system_message",e=>{n.handleSystemMessage(e)}),B_.mount("#app")})();
|
|
93
|
+
`,["shift","exact","prevent"]),["enter"]))]},null,40,QG),[[ye,t.input]]),t.streaming?(g(),f("button",{key:1,type:"button",class:"smart-install-btn smart-install-btn-abort",title:t.t("common.abort"),onClick:e[7]||(e[7]=(...r)=>t.cancelTurn&&t.cancelTurn(...r))},[...e[11]||(e[11]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"btn-icon-svg"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1"})],-1)])],8,XG)):(g(),f("button",{key:0,type:"button",class:"smart-install-btn smart-install-btn-send",disabled:!t.input.trim(),title:t.t("common.send"),onClick:e[6]||(e[6]=(...r)=>t.send&&t.send(...r))},[...e[10]||(e[10]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:"btn-icon-svg"},[s("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})],-1)])],8,$G))])])])),t.error?(g(),f("p",ZG,d(t.error),1)):V("",!0)],2)],2)]),_:1})}const sh=st(wG,[["render",JG],["__scopeId","data-v-fe5c736d"]]),jG={name:"LocalInstallSkillDialog",props:{scope:{type:String,required:!0},workspace:{type:String,default:"default"},show:{type:Boolean,default:!1}},emits:["close","installed"],setup(n,{emit:e}){const{t:o}=Ot(),t=ae(()=>n.show),a=ae(()=>{var h;return typeof window<"u"&&!!((h=window.electronAPI)!=null&&h.showOpenDirectoryDialog)}),l=D(""),i=D(null),r=D(null),c=D(""),u=D(!1);function _(){l.value="",i.value=null,c.value="",e("close")}async function m(){if(a.value){c.value="";try{const h=await window.electronAPI.showOpenDirectoryDialog();h&&(l.value=h)}catch(h){c.value=h.message||"Failed to open dialog"}}}function p(){var h;(h=r.value)==null||h.click()}function E(h){var b,y;const A=(y=(b=h.target)==null?void 0:b.files)==null?void 0:y[0];A&&A.name.toLowerCase().endsWith(".zip")?i.value=A:i.value=null,r.value&&(r.value.value="")}async function S(){var A,b,y,w;const h=(A=l.value)==null?void 0:A.trim();if(!(!h||u.value)){c.value="",u.value=!0;try{const B=((b=(await rn.installSkillFromPath(h,{scope:n.scope,workspace:n.scope==="workspace"?n.workspace:void 0})).data)==null?void 0:b.data)??{};_(),e("installed",{installDir:B.installDir,name:B.name})}catch(k){c.value=((w=(y=k.response)==null?void 0:y.data)==null?void 0:w.message)||k.message||o("agents.installFailed")}finally{u.value=!1}}}async function T(){var A,b,y;const h=i.value;if(!(!h||u.value)){c.value="",u.value=!0;try{const k=((A=(await rn.installSkillFromUpload(h,{scope:n.scope,workspace:n.scope==="workspace"?n.workspace:void 0})).data)==null?void 0:A.data)??{};_(),e("installed",{installDir:k.installDir,name:k.name})}catch(w){c.value=((y=(b=w.response)==null?void 0:b.data)==null?void 0:y.message)||w.message||o("agents.installFailed")}finally{u.value=!1}}}return nt(t,h=>{h||(l.value="",i.value=null,c.value="")}),{t:o,visible:t,hasElectron:a,selectedPath:l,selectedFile:i,zipInputRef:r,error:c,saving:u,close:_,pickDirectory:m,triggerZipInput:p,onZipSelected:E,doInstallFromPath:S,doInstallFromUpload:T}}},e2={class:"modal-header"},t2={class:"modal-title"},n2=["title"],o2={class:"modal-body"},a2={class:"form-hint"},r2={class:"path-row"},s2=["title"],i2={key:1,class:"path-placeholder"},l2=["disabled"],c2={key:0,class:"form-error"},d2={class:"modal-footer-actions"},_2=["disabled"],u2={class:"form-hint form-hint-upload"},m2={class:"path-row upload-row"},p2=["title"],g2={key:1,class:"path-placeholder"},f2=["disabled"],E2={key:0,class:"form-error"},S2={class:"modal-footer-actions"},b2=["disabled"];function h2(n,e,o,t,a,l){return g(),Gt(je,{name:"fade"},{default:Ve(()=>[t.visible?(g(),f("div",{key:0,class:"modal-backdrop local-install-backdrop",role:"dialog","aria-modal":"true",onClick:e[9]||(e[9]=Be((...i)=>t.close&&t.close(...i),["self"]))},[s("div",{class:"modal-content card-glass local-install-modal",onClick:e[8]||(e[8]=Be(()=>{},["stop"]))},[s("div",e2,[s("h2",t2,d(t.t("agents.installLocal")),1),s("button",{type:"button",class:"close-btn",title:t.t("common.close"),onClick:e[0]||(e[0]=(...i)=>t.close&&t.close(...i))},"✕",8,n2)]),s("div",o2,[s("p",a2,d(t.t("agents.installLocalHint")),1),t.hasElectron?(g(),f(te,{key:0},[s("div",r2,[t.selectedPath?(g(),f("span",{key:0,class:"path-text",title:t.selectedPath},d(t.selectedPath),9,s2)):(g(),f("span",i2,d(t.t("skills.selectFolder")),1)),s("button",{type:"button",class:"btn-secondary btn-pick",disabled:t.saving,onClick:e[1]||(e[1]=(...i)=>t.pickDirectory&&t.pickDirectory(...i))},d(t.t("skills.chooseFolder")),9,l2)]),t.error?(g(),f("p",c2,d(t.error),1)):V("",!0),s("div",d2,[s("button",{type:"button",class:"btn-secondary",onClick:e[2]||(e[2]=(...i)=>t.close&&t.close(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.selectedPath||t.saving,onClick:e[3]||(e[3]=(...i)=>t.doInstallFromPath&&t.doInstallFromPath(...i))},d(t.saving?t.t("common.loading"):t.t("agents.installConfirm")),9,_2)])],64)):(g(),f(te,{key:1},[s("p",u2,d(t.t("agents.installLocalZipHint")),1),s("div",m2,[s("input",{ref:"zipInputRef",type:"file",accept:".zip",class:"file-input",onChange:e[4]||(e[4]=(...i)=>t.onZipSelected&&t.onZipSelected(...i))},null,544),t.selectedFile?(g(),f("span",{key:0,class:"path-text",title:t.selectedFile.name},d(t.selectedFile.name),9,p2)):(g(),f("span",g2,d(t.t("agents.installLocalSelectZip")),1)),s("button",{type:"button",class:"btn-secondary btn-pick",disabled:t.saving,onClick:e[5]||(e[5]=(...i)=>t.triggerZipInput&&t.triggerZipInput(...i))},d(t.t("agents.installLocalChooseZip")),9,f2)]),t.error?(g(),f("p",E2,d(t.error),1)):V("",!0),s("div",S2,[s("button",{type:"button",class:"btn-secondary",onClick:e[6]||(e[6]=(...i)=>t.close&&t.close(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.selectedFile||t.saving,onClick:e[7]||(e[7]=(...i)=>t.doInstallFromUpload&&t.doInstallFromUpload(...i))},d(t.saving?t.t("common.loading"):t.t("agents.installConfirm")),9,b2)])],64))])])])):V("",!0)]),_:1})}const ih=st(jG,[["render",h2],["__scopeId","data-v-151ad1d2"]]),hE={id:"default",name:"主智能体",workspace:"default",isDefault:!0},T2={name:"AgentDetail",components:{ChatMessage:U_,SmartInstallDialog:sh,LocalInstallSkillDialog:ih},setup(){const n=da(),e=Zn(),{t:o}=Ot(),t=Jn(),a=ae(()=>n.params.id),l=D(null),i=D(!0),r=D("config"),c=ae(()=>{const K=l.value;return K&&(K.runnerType==="coze"||K.runnerType==="openclawx"||K.runnerType==="opencode"||K.runnerType==="claude_code")}),u=ae(()=>{const K=[{id:"config",label:o("agents.basicConfig"),icon:"⚙️"}];return c.value?K.push({id:"proxy",label:o("agents.proxyConfig"),icon:"🔗"}):(K.push({id:"skills",label:o("agents.skillsConfig"),icon:"🎯"}),K.push({id:"mcp",label:o("agents.mcpConfig"),icon:"🔌"})),K}),_=F_,m=D({name:"",systemPrompt:"",icon:Do}),p=D({enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3}),E=D(!1),S=D({provider:"",model:""}),T=D(32768),h=D({runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}}),A=D([]),b=D(!1),y=D(!1),w=D(!1),k=D({}),B=D([]),X=D(""),x=D(!1),U=D([]),re=D(!1),se=D(!1),ne=D(!1),Te=D(null),G=D(!1),H=D(""),R=D(""),P=D(!1),oe=D(null),he=D(""),Ee=D(null),ve=ae(()=>l.value&&!l.value.isDefault&&l.value.workspace!=="default"),we=ae(()=>he.value?ot(he.value):""),Re=D({}),Ie=D({name:"",transport:"stdio",command:"",argsStr:"",envStr:"",url:"",headersStr:""}),xe=D(null),Ge=D(""),W=D(!1),me=D(""),F=D(""),Z=D({}),Se=D(!1),C=D(null);function N(K){if(!Array.isArray(K)||K.length===0)return{};const pe={};return K.forEach((Me,He)=>{const Ye=`MCP Server ${He+1}`;Me.transport==="sse"?pe[Ye]={url:Me.url,headers:Me.headers}:pe[Ye]={command:Me.command,args:Me.args,env:Me.env}}),pe}function O(K){if(!K||typeof K!="object")return"";if(typeof K.url=="string"&&K.url.trim())return K.url.trim();const pe=(K.command||"").trim(),Me=Array.isArray(K.args)?K.args.join(" "):"";return Me?`${pe} ${Me}`.trim():pe}function M(){return{name:"",transport:"stdio",command:"",argsStr:"",envStr:"",url:"",headersStr:""}}function Y(){xe.value=null,Ie.value=M(),Ge.value="",W.value=!0}function q(K){const pe=Re.value[K];pe&&(xe.value=K,typeof pe.url=="string"&&pe.url.trim()?Ie.value={name:K,transport:"sse",command:"",argsStr:"",envStr:"",url:pe.url||"",headersStr:pe.headers&&typeof pe.headers=="object"?JSON.stringify(pe.headers,null,2):""}:Ie.value={name:K,transport:"stdio",command:(pe.command||"").trim(),argsStr:Array.isArray(pe.args)?pe.args.join(" "):"",envStr:pe.env&&typeof pe.env=="object"?JSON.stringify(pe.env,null,2):"",url:"",headersStr:""},Ge.value="")}function $(){xe.value=null,Ie.value=M(),Ge.value="",W.value=!1,C.value=null}function ce(){const K=Ie.value;if(K.transport==="stdio"){const Ye=(K.command||"").trim();if(!Ye)return null;const $e=(K.argsStr||"").trim(),Pe=$e?$e.split(/[\s,]+/).filter(Boolean):void 0;let vt;const en=(K.envStr||"").trim();if(en)try{vt=JSON.parse(en),(typeof vt!="object"||vt===null)&&(vt=void 0)}catch{return null}return{command:Ye,args:Pe,env:vt}}const pe=(K.url||"").trim();if(!pe)return null;let Me;const He=(K.headersStr||"").trim();if(He)try{Me=JSON.parse(He),(typeof Me!="object"||Me===null)&&(Me=void 0)}catch{return null}return{url:pe,headers:Me}}async function de(K,pe){var Me,He;Z.value={...Z.value,[K]:"loading"};try{const Ye=await Xt.testMcp(pe),$e=(Ye==null?void 0:Ye.data)??Ye,Pe=($e==null?void 0:$e.success)===!0;Z.value={...Z.value,[K]:Pe?{success:!0,toolsCount:($e==null?void 0:$e.toolsCount)??0}:{success:!1,error:($e==null?void 0:$e.error)||o("agents.mcpTestFailed")}}}catch(Ye){const $e=((He=(Me=Ye==null?void 0:Ye.response)==null?void 0:Me.data)==null?void 0:He.error)||(Ye==null?void 0:Ye.message)||String(Ye);Z.value={...Z.value,[K]:{success:!1,error:$e}}}}async function z(){var pe,Me;const K=ce();if(!K){Ge.value=o("agents.mcpTestInvalidConfig");return}Ge.value="",C.value=null,Se.value=!0;try{const He=await Xt.testMcp(K),Ye=(He==null?void 0:He.data)??He,$e=(Ye==null?void 0:Ye.success)===!0;C.value=$e?{success:!0,toolsCount:(Ye==null?void 0:Ye.toolsCount)??0}:{success:!1,error:(Ye==null?void 0:Ye.error)||o("agents.mcpTestFailed")}}catch(He){const Ye=((Me=(pe=He==null?void 0:He.response)==null?void 0:pe.data)==null?void 0:Me.error)||(He==null?void 0:He.message)||String(He);C.value={success:!1,error:Ye}}finally{Se.value=!1}}function ke(){Ge.value="";const K=(Ie.value.name||"").trim();if(!K){Ge.value=o("agents.mcpServerNameRequired");return}if(Ie.value.transport==="sse"){const pe=(Ie.value.url||"").trim();if(!pe){Ge.value=o("agents.mcpUrlRequired");return}let Me;const He=(Ie.value.headersStr||"").trim();if(He)try{Me=JSON.parse(He),(typeof Me!="object"||Me===null)&&(Me=void 0)}catch{Ge.value=o("agents.mcpHeadersInvalidJson");return}const Ye={url:pe,headers:Me};if(xe.value!==null&&xe.value!==K){const $e={...Re.value};delete $e[xe.value],$e[K]=Ye,Re.value=$e}else Re.value={...Re.value,[K]:Ye}}else{const pe=(Ie.value.command||"").trim();if(!pe){Ge.value=o("agents.mcpCommandRequired");return}const Me=(Ie.value.argsStr||"").trim(),He=Me?Me.split(/[\s,]+/).filter(Boolean):[];let Ye;const $e=(Ie.value.envStr||"").trim();if($e)try{Ye=JSON.parse($e),(typeof Ye!="object"||Ye===null)&&(Ye=void 0)}catch{Ge.value=o("agents.mcpEnvInvalidJson");return}const Pe={command:pe,args:He.length?He:void 0,env:Ye};if(xe.value!==null&&xe.value!==K){const vt={...Re.value};delete vt[xe.value],vt[K]=Pe,Re.value=vt}else Re.value={...Re.value,[K]:Pe}}$()}function fe(K){const pe={...Re.value};delete pe[K],Re.value=pe,xe.value===K&&$(),Ne()}const Ce=D("");function Ne(){try{Ce.value=JSON.stringify({mcpServers:Re.value},null,2)}catch{Ce.value="{}"}}function ie(K){let pe=(K||"{}").trim();for(;pe.replace(/,(\s*[}\]])/g,"$1")!==pe;)pe=pe.replace(/,(\s*[}\]])/g,"$1");return JSON.parse(pe)}function ee(){me.value="";try{const K=ie(Ce.value);if(!K||typeof K!="object"||K.mcpServers==null||typeof K.mcpServers!="object"||Array.isArray(K.mcpServers)){me.value=o("agents.mcpJsonApplyError");return}Re.value=K.mcpServers,Ne()}catch{me.value=o("agents.mcpJsonApplyError")}}function be(K){var Me,He,Ye,$e;return(($e=(Ye=(He=(Me=k.value)==null?void 0:Me.providers)==null?void 0:He[K])==null?void 0:Ye.alias)==null?void 0:$e.trim())||K||"—"}function Ue(K){var pe;return be(K.provider)+" / "+(((pe=K.alias)==null?void 0:pe.trim())||K.modelId||"—")}function Qe(K){return K.modelItemCode&&K.modelItemCode.trim()?K.modelItemCode:`${K.provider}|${K.modelId}`}function ct(K){const pe=K.alias||K.modelId||"",Me=K.provider||"";return pe?`${pe} (${Me})`:`${Me} - ${K.modelId}`}const St=ae(()=>{const K=X.value;if(!K)return null;if(K.includes("|")){const[pe,Me]=K.split("|");return B.value.find(He=>He.provider===pe&&He.modelId===Me)||null}return B.value.find(pe=>pe.modelItemCode&&pe.modelItemCode===K)||null});async function At(){var K,pe,Me,He,Ye,$e,Pe,vt,en,et,tn,_n,Qt,bo,Cn,xt;if(a.value){i.value=!0;try{const Mt=await Xt.getAgent(a.value);if(l.value=((K=Mt.data)==null?void 0:K.data)??null,l.value){m.value={name:l.value.name,systemPrompt:l.value.systemPrompt??"",icon:l.value.icon||Do},p.value={enabled:!!((pe=l.value.webSearch)!=null&&pe.enabled),provider:((Me=l.value.webSearch)==null?void 0:Me.provider)==="brave"?"brave":"duck-duck-scrape",maxResultTokens:((He=l.value.webSearch)==null?void 0:He.maxResultTokens)??64e3},F.value=l.value.mcpMaxResultTokens!=null&&l.value.mcpMaxResultTokens>0?String(l.value.mcpMaxResultTokens):"",T.value=l.value.contextSize!=null&&l.value.contextSize>0?l.value.contextSize:32768,S.value={provider:l.value.provider??"",model:l.value.model??""};const Xe=l.value.coze,qo=(Xe==null?void 0:Xe.region)==="cn"?"cn":"com",pa=(Xe==null?void 0:Xe.botId)!=null&&typeof Xe.botId=="string"?Xe.botId.trim():"",ho=(Xe==null?void 0:Xe.apiKey)!=null&&typeof Xe.apiKey=="string"?Xe.apiKey.trim():"",Vo=pa||ho?{botId:pa,apiKey:ho}:null,jn=()=>({botId:"",apiKey:""}),ga=nn=>nn&&(nn.botId||nn.apiKey)?{botId:String(nn.botId||"").trim(),apiKey:String(nn.apiKey||"").trim()}:jn(),fa=Xe!=null&&Xe.cn?ga(Xe.cn):Vo||jn(),_r=Xe!=null&&Xe.com?ga(Xe.com):Vo||jn(),ur="https://api.coze.cn",Ea="https://api.coze.com",zo=((Xe==null?void 0:Xe.endpoint)??"").trim(),mr=zo===ur||zo===Ea?"":zo;h.value={runnerType:l.value.runnerType==="coze"||l.value.runnerType==="openclawx"||l.value.runnerType==="opencode"||l.value.runnerType==="claude_code"?l.value.runnerType:"local",coze:{region:qo,cn:fa,com:_r,endpoint:mr},openclawx:{baseUrl:((Ye=l.value.openclawx)==null?void 0:Ye.baseUrl)??"",apiKey:(($e=l.value.openclawx)==null?void 0:$e.apiKey)??""},opencode:{mode:((Pe=l.value.opencode)==null?void 0:Pe.mode)==="local"||((vt=l.value.opencode)==null?void 0:vt.mode)==="remote"?l.value.opencode.mode:(en=l.value.opencode)!=null&&en.address&&String(l.value.opencode.address).trim()?"remote":"local",address:((et=l.value.opencode)==null?void 0:et.address)??"",port:((tn=l.value.opencode)==null?void 0:tn.port)??4096,username:((_n=l.value.opencode)==null?void 0:_n.username)??"",password:((Qt=l.value.opencode)==null?void 0:Qt.password)??"",model:((bo=l.value.opencode)==null?void 0:bo.model)??"",workingDirectory:((Cn=l.value.opencode)==null?void 0:Cn.workingDirectory)??""},claudeCode:{workingDirectory:((xt=l.value.claudeCode)==null?void 0:xt.workingDirectory)??""}};const Ln=l.value.mcpServers;Ln!=null&&typeof Ln=="object"&&!Array.isArray(Ln)?Re.value={...Ln}:Array.isArray(Ln)?Re.value=N(Ln.filter(nn=>nn&&(nn.transport==="sse"?(nn.url||"").trim():(nn.command||"").trim()))):Re.value={},Ne()}else a.value==="default"&&(l.value={...hE},m.value={name:l.value.name,systemPrompt:"",icon:Do},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",T.value=32768,S.value={provider:"",model:""},h.value={runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}},Re.value={},Ne())}catch{a.value==="default"?(l.value={...hE},m.value={name:l.value.name,systemPrompt:"",icon:Do},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",T.value=32768,S.value={provider:"",model:""},h.value={runnerType:"local",coze:{region:"com",cn:{botId:"",apiKey:""},com:{botId:"",apiKey:""},endpoint:""},openclawx:{baseUrl:"",apiKey:""},opencode:{mode:"local",address:"",port:4096,username:"",password:"",model:"",workingDirectory:""},claudeCode:{workingDirectory:""}},Re.value={},p.value={enabled:!1,provider:"duck-duck-scrape",maxResultTokens:64e3},F.value="",Ne()):l.value=null}finally{i.value=!1}}}async function dn(){var K,pe,Me,He,Ye,$e;if(l.value){E.value=!0;try{const Pe={};if(l.value.isDefault||(Pe.name=m.value.name||l.value.workspace),Pe.mcpServers=Re.value,Pe.mcpMaxResultTokens=F.value!==""&&F.value!=null&&parseInt(F.value,10)||void 0,Pe.systemPrompt=((K=m.value.systemPrompt)==null?void 0:K.trim())||void 0,Pe.icon=m.value.icon||void 0,X.value){const et=St.value;et&&(Pe.provider=et.provider,Pe.model=et.modelId,Pe.modelItemCode=et.modelItemCode||void 0)}else Pe.provider=void 0,Pe.model=void 0,Pe.modelItemCode=void 0;const vt=p.value.maxResultTokens,en=vt==null||vt===""||vt===0?void 0:Number(vt)||64e3;if(Pe.webSearch=p.value.enabled?{enabled:!0,provider:p.value.provider,maxResultTokens:en}:void 0,Pe.runnerType=h.value.runnerType,h.value.runnerType==="local"){const et=T.value;Pe.contextSize=typeof et=="number"&&Number.isInteger(et)&&et>=2048?et:void 0}else Pe.contextSize=null;if(h.value.runnerType==="coze"){const et=h.value.coze;Pe.coze={region:et.region==="cn"?"cn":"com",cn:{botId:(((pe=et.cn)==null?void 0:pe.botId)??"").trim(),apiKey:(((Me=et.cn)==null?void 0:Me.apiKey)??"").trim()},com:{botId:(((He=et.com)==null?void 0:He.botId)??"").trim(),apiKey:(((Ye=et.com)==null?void 0:Ye.apiKey)??"").trim()},endpoint:void 0}}else if(h.value.runnerType==="openclawx")Pe.openclawx={baseUrl:(h.value.openclawx.baseUrl||"").trim(),apiKey:(h.value.openclawx.apiKey||"").trim()||void 0};else if(h.value.runnerType==="opencode"){const et=h.value.opencode,tn=typeof et.port=="number"?et.port:parseInt(String(et.port||""),10),_n=et.mode==="local"?"local":"remote";Pe.opencode={mode:_n,address:_n==="remote"?(et.address||"").trim():void 0,port:Number.isFinite(tn)&&tn>0?tn:4096,password:(et.password||"").trim()||void 0,model:(et.model||"").trim()||void 0,workingDirectory:(et.workingDirectory||"").trim()||void 0}}else if(h.value.runnerType==="claude_code"){const et=((($e=h.value.claudeCode)==null?void 0:$e.workingDirectory)??"").trim();Pe.claudeCode=et?{workingDirectory:et}:void 0}else Pe.coze=void 0,Pe.openclawx=void 0,Pe.opencode=void 0,Pe.claudeCode=void 0;await Xt.updateAgent(l.value.id,Pe),l.value.isDefault||(l.value.name=m.value.name||l.value.workspace),l.value={...l.value,systemPrompt:Pe.systemPrompt,icon:Pe.icon,provider:Pe.provider,model:Pe.model,modelItemCode:Pe.modelItemCode,mcpMaxResultTokens:Pe.mcpMaxResultTokens,webSearch:Pe.webSearch,runnerType:Pe.runnerType,contextSize:Pe.contextSize,coze:Pe.coze,openclawx:Pe.openclawx,opencode:Pe.opencode,claudeCode:Pe.claudeCode},alert(o("agents.configSavedSessionRefresh"))}catch(Pe){console.error("Save config failed",Pe)}finally{E.value=!1}}}async function bt(){var K,pe,Me,He;x.value=!0;try{const $e=((K=(await Wn.getConfig()).data)==null?void 0:K.data)??{};k.value=$e;const Pe=Array.isArray($e.configuredModels)?$e.configuredModels:[];B.value=Pe;const vt=$e.defaultProvider||"",en=$e.defaultModel||"",et=(pe=l.value)==null?void 0:pe.modelItemCode,tn=S.value.provider||((Me=l.value)==null?void 0:Me.provider)||"",_n=S.value.model||((He=l.value)==null?void 0:He.model)||"",Qt=(Mt,Xe)=>Mt&&Xe?`${Mt}|${Xe}`:"",bo=Mt=>Pe.some(Xe=>Xe.modelItemCode===Mt),Cn=Mt=>Pe.some(Xe=>Qt(Xe.provider,Xe.modelId)===Mt);let xt="";if(et&&bo(et)?xt=et:tn&&_n&&Cn(Qt(tn,_n))&&(xt=Qt(tn,_n)),!xt&&Cn(Qt(vt,en))&&(xt=Qt(vt,en)),!xt&&Pe.length){const Mt=Pe[0];xt=Qe(Mt)}if(X.value=xt||"",xt){const Mt=xt.includes("|")?Pe.find(Xe=>Qt(Xe.provider,Xe.modelId)===xt):Pe.find(Xe=>Xe.modelItemCode===xt);Mt&&(S.value.provider=Mt.provider||"",S.value.model=Mt.modelId||"")}}catch{B.value=[],X.value=""}finally{x.value=!1}}function It(){const K=X.value;if(!K){S.value.provider="",S.value.model="";return}const pe=St.value;if(pe)S.value.provider=pe.provider||"",S.value.model=pe.modelId||"";else if(K.includes("|")){const[Me,He]=K.split("|");S.value.provider=Me||"",S.value.model=He||""}}async function jt(){var pe;if(!l.value)return;const K=(l.value.workspace||"").trim()||"default";re.value=!0;try{const Me=await rn.getSkills(K);U.value=((pe=Me.data)==null?void 0:pe.data)??[]}catch{U.value=[]}finally{re.value=!1}}function fn(K){var pe;oe.value=K,he.value="",rn.getSkillContent(K.name,(pe=l.value)==null?void 0:pe.workspace).then(Me=>{var He,Ye;he.value=((Ye=(He=Me.data)==null?void 0:He.data)==null?void 0:Ye.content)??""}).catch(()=>{})}function ue(K){Ee.value=K}async function ge(){const K=Ee.value;if(!(!l.value||!K))try{await rn.deleteSkill(l.value.workspace,K.name),Ee.value=null,await jt()}catch(pe){console.error("Delete skill failed",pe)}}function Je(){l.value&&(t.clearCurrentSession(),se.value=!0)}function Rt(){se.value=!1,R.value=""}function kt(K){jt(),Te.value=K&&(K.installDir||K.name)?K:null}function xn(){H.value="",R.value="",G.value=!0}nt(()=>{var K;return h.value.runnerType==="coze"&&((K=h.value.coze)==null?void 0:K.region)},K=>{var He;if(K!=="cn"&&K!=="com")return;const pe=(((He=h.value.coze)==null?void 0:He.endpoint)??"").trim();(pe===(K==="cn"?"https://api.coze.com":"https://api.coze.cn")||pe.includes(K==="cn"?"api.coze.com":"api.coze.cn"))&&(h.value.coze.endpoint="")}),nt(a,At),nt([l,r],()=>{l.value&&r.value==="skills"&&jt(),l.value&&r.value==="config"&&bt()}),nt(u,K=>{const pe=K.map(Me=>Me.id);pe.length&&!pe.includes(r.value)&&(r.value=pe[0])},{immediate:!0}),nt(()=>n.query.smartInstallSession,async K=>{var pe,Me;if(K){se.value=!0;try{await t.selectSession(K),e.replace({path:n.path,query:{}})}catch(He){R.value=((Me=(pe=He.response)==null?void 0:pe.data)==null?void 0:Me.message)||He.message||"Failed"}}},{immediate:!0}),nt(se,K=>{K?document.body.style.overflow="hidden":document.body.style.overflow=""}),ja(()=>{se.value&&(document.body.style.overflow="")}),nt(()=>n.query.tab,K=>{K==="proxy"&&(r.value="proxy")},{immediate:!0});async function Ht(){var K;if(!(A.value.length>0))try{const pe=await Wn.getOpencodeFreeModels();(K=pe==null?void 0:pe.data)!=null&&K.success&&Array.isArray(pe.data.data)&&(A.value=pe.data.data)}catch{}}const So=ae(()=>{var K;return typeof window<"u"&&!!((K=window.electronAPI)!=null&&K.showOpenDirectoryDialog)});async function Kt(){var pe;if(!((pe=window.electronAPI)!=null&&pe.showOpenDirectoryDialog))return;const K=await window.electronAPI.showOpenDirectoryDialog({title:"选择 OpenCode 工作目录"});K&&(h.value.opencode.workingDirectory=K)}async function lr(){var pe;if(!((pe=window.electronAPI)!=null&&pe.showOpenDirectoryDialog))return;const K=await window.electronAPI.showOpenDirectoryDialog({title:o("agents.claudeCodeSelectFolderTitle")});K&&(h.value.claudeCode.workingDirectory=K)}function cr(){var K;w.value=!1,!((K=l.value)!=null&&K.isDefault)&&(b.value=!0)}async function dr(){var K;if(!((K=l.value)!=null&&K.id)||l.value.isDefault){b.value=!1;return}y.value=!0;try{const pe=w.value?{deleteWorkspaceDir:"true"}:{};await Xt.deleteAgent(l.value.id,pe),b.value=!1,e.push("/agents")}catch(pe){console.error("Delete agent failed",pe)}finally{y.value=!1}}return nt(()=>h.value.runnerType==="opencode",K=>{K&&Ht()},{immediate:!0}),Yt(()=>{At()}),{t:o,agent:l,loading:i,activeTab:r,tabs:u,configForm:m,webSearchForm:p,agentIconOptions:_,configSaving:E,saveConfig:dn,modelForm:S,proxyForm:h,opencodeFreeModels:A,hasElectronFolderPicker:So,pickOpencodeWorkingDirectory:Kt,pickClaudeCodeWorkingDirectory:lr,showDeleteConfirm:b,deleteAgentSaving:y,deleteWorkspaceDir:w,openDeleteConfirm:cr,doDeleteAgent:dr,configuredModelsList:B,selectedConfiguredModelKey:X,selectedModelItem:St,getConfiguredModelOptionLabel:Ue,optionValueFor:Qe,optionLabelFor:ct,getProviderDisplayName:be,onConfiguredModelSelect:It,modelConfigLoading:x,loadModelConfig:bt,agentSkills:U,skillsLoading:re,canDeleteWorkspaceSkill:ve,showSmartInstallModal:se,showLocalInstallModal:ne,installSuccessPayload:Te,onLocalInstalled:kt,showManualInstallModal:G,manualInstallUrl:H,installError:R,installManualSaving:P,openSmartInstallModal:Je,openManualInstallModal:xn,closeSmartInstallModal:Rt,selectedSkill:oe,skillDetailContent:he,renderedSkillContent:we,openSkillDetail:fn,confirmDeleteSkill:ue,deleteSkillTarget:Ee,doDeleteSkill:ge,mcpServers:Re,mcpForm:Ie,mcpFormVisible:W,mcpEditingKey:xe,mcpFormError:Ge,mcpServerDisplayText:O,openAddMcp:Y,startEditMcp:q,cancelMcpForm:$,saveMcpServer:ke,removeMcpServer:fe,mcpStandardJsonString:Ce,applyMcpJson:ee,mcpJsonError:me,mcpMaxResultTokensForm:F,mcpTestState:Z,mcpFormTestLoading:Se,mcpFormTestResult:C,testMcpServer:de,testMcpForm:z}}},v2={class:"agent-detail-view"},C2={key:0,class:"loading-state full"},y2={key:1,class:"empty-state full"},R2={class:"detail-header card-glass"},N2={class:"detail-header-top"},O2={class:"view-title"},A2={class:"text-secondary"},I2={class:"detail-layout"},D2={class:"detail-tabs card-glass"},w2=["onClick"],k2={class:"tab-icon"},M2={class:"tab-label"},x2={class:"detail-content"},L2={class:"tab-panel config-panel"},P2={class:"panel-title"},U2={class:"form-group"},F2={class:"icon-picker"},B2=["title","onClick"],G2={class:"form-group"},Y2=["placeholder","readonly","disabled"],H2={key:0,class:"form-hint"},q2={class:"form-group"},V2=["value"],z2={class:"form-hint"},W2={class:"form-group"},K2=["placeholder"],Q2={class:"form-hint"},$2={class:"form-group"},X2={class:"form-subtitle"},Z2={class:"form-hint"},J2={key:0,class:"form-hint warning"},j2={class:"form-group"},eY={value:""},tY=["value"],nY={key:0,class:"form-group"},oY=["value"],aY={key:1,class:"form-group"},rY=["value"],sY={key:2,class:"form-group"},iY={class:"form-hint"},lY={class:"form-group"},cY={class:"form-subtitle"},dY={class:"form-row checkbox-row"},_Y={for:"web-search-enabled"},uY={class:"form-hint"},mY={class:"form-group"},pY={value:"duck-duck-scrape"},gY={value:"brave"},fY={class:"form-hint"},EY={class:"form-group"},SY={class:"form-hint"},bY=["disabled"],hY={class:"tab-panel proxy-panel"},TY={class:"panel-title"},vY={class:"form-hint"},CY={class:"form-group"},yY={key:0,class:"form-runner-type-fixed"},RY={value:"local"},NY={value:"coze"},OY={value:"openclawx"},AY={value:"opencode"},IY={value:"claude_code"},DY={class:"form-group"},wY={value:"com"},kY={value:"cn"},MY={class:"form-hint"},xY={class:"form-hint"},LY={class:"form-group"},PY=["placeholder"],UY={class:"form-hint"},FY={class:"form-group"},BY=["placeholder"],GY={class:"form-hint"},YY={class:"form-group"},HY=["placeholder"],qY={class:"form-hint"},VY={class:"form-group"},zY=["placeholder"],WY={class:"form-hint"},KY={class:"form-hint"},QY={class:"form-group"},$Y={class:"form-input-with-btn"},XY=["placeholder"],ZY={class:"form-group"},JY=["placeholder"],jY={class:"form-group"},eH=["placeholder"],tH={class:"form-hint"},nH={class:"form-group"},oH={class:"form-radio-group"},aH={class:"form-radio"},rH={class:"form-radio"},sH={class:"form-hint"},iH={class:"form-group"},lH=["placeholder"],cH={class:"form-group"},dH={value:""},_H=["value"],uH={class:"form-group"},mH={class:"form-input-with-btn"},pH=["placeholder"],gH={class:"form-hint"},fH={class:"form-group"},EH=["placeholder"],SH={class:"form-group"},bH=["placeholder"],hH={class:"form-group"},TH=["placeholder"],vH={class:"form-group"},CH={value:""},yH=["value"],RH=["disabled"],NH={class:"tab-panel skills-panel"},OH={class:"panel-header"},AH={class:"panel-title"},IH={class:"panel-header-buttons"},DH={key:0,class:"loading-state"},wH={key:1,class:"empty-state"},kH={class:"empty-actions"},MH={key:2,class:"skills-grid"},xH=["onClick"],LH={class:"skill-card-name"},PH={class:"skill-card-desc"},UH=["onClick"],FH={class:"tab-panel mcp-panel"},BH={class:"panel-title"},GH={class:"form-hint"},YH={class:"form-hint mcp-test-hint"},HH={class:"mcp-list"},qH={class:"mcp-item-name"},VH={class:"mcp-item-text"},zH={class:"mcp-item-actions"},WH=["disabled","onClick"],KH={class:"mcp-test-success-badge"},QH=["onClick"],$H=["onClick"],XH={class:"form-group mcp-max-result-tokens-row"},ZH={class:"form-label"},JH={value:""},jH={class:"form-hint"},eq={key:0,class:"mcp-form card-glass"},tq={class:"config-section-title"},nq={class:"form-group"},oq={class:"form-label"},aq=["placeholder","readonly"],rq={class:"form-group"},sq={class:"form-label"},iq={class:"mcp-transport-tabs"},lq={class:"transport-tab-label"},cq={class:"transport-tab-hint"},dq={class:"transport-tab-label"},_q={class:"transport-tab-hint"},uq={class:"form-group"},mq={class:"form-label"},pq=["placeholder"],gq={class:"form-group"},fq={class:"form-label"},Eq=["placeholder"],Sq={class:"form-group"},bq={class:"form-label"},hq=["placeholder"],Tq={class:"form-group"},vq={class:"form-label"},Cq=["placeholder"],yq={class:"form-group"},Rq={class:"form-label"},Nq=["placeholder"],Oq={key:2,class:"form-hint form-hint-warn"},Aq={class:"mcp-test-success-badge"},Iq={class:"mcp-form-actions"},Dq=["disabled"],wq={class:"mcp-json-section card-glass"},kq={class:"config-section-title"},Mq={class:"form-hint"},xq={key:0,class:"form-hint form-hint-warn"},Lq={class:"mcp-form-actions"},Pq={class:"form-hint mcp-save-hint"},Uq={class:"mcp-save-row"},Fq=["disabled"],Bq={class:"modal-content card-glass add-skill-modal"},Gq={class:"modal-header"},Yq={class:"modal-body"},Hq={class:"form-hint"},qq={class:"form-group"},Vq=["placeholder"],zq={key:0,class:"form-error"},Wq={class:"modal-footer-actions"},Kq=["disabled"],Qq={class:"modal-content card-glass skill-detail-modal"},$q={class:"modal-header"},Xq={class:"modal-body"},Zq=["innerHTML"],Jq={key:1,class:"no-content"},jq={class:"modal-content card-glass delete-confirm-modal"},eV={class:"modal-header"},tV={class:"modal-body"},nV={class:"delete-target-name"},oV={class:"modal-footer-actions"},aV={class:"modal-content card-glass install-success-modal"},rV={class:"modal-header"},sV={class:"modal-body"},iV={key:0,class:"install-success-row"},lV={class:"label"},cV={class:"value"},dV={class:"install-success-row install-success-dir"},_V={class:"label"},uV=["title"],mV={class:"modal-footer-actions"},pV={class:"modal-content card-glass modal-confirm"},gV={class:"modal-confirm-text"},fV={key:0,class:"modal-confirm-name"},EV={class:"modal-confirm-checkbox"},SV={class:"modal-footer-actions"},bV=["disabled"];function hV(n,e,o,t,a,l){var u,_,m,p,E,S,T,h,A;const i=gt("router-link"),r=gt("SmartInstallDialog"),c=gt("LocalInstallSkillDialog");return g(),f("div",v2,[t.loading&&!t.agent?(g(),f("div",C2,[e[72]||(e[72]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.agent?(g(),f(te,{key:2},[s("div",R2,[s("div",N2,[Ae(i,{to:"/agents",class:"back-link"},{default:Ve(()=>[ze("← "+d(t.t("agents.backToList")),1)]),_:1}),t.agent.isDefault?V("",!0):(g(),f("button",{key:0,type:"button",class:"btn-delete-agent",onClick:e[0]||(e[0]=(...b)=>t.openDeleteConfirm&&t.openDeleteConfirm(...b))},d(t.t("agents.deleteAgent")),1))]),s("h1",O2,d(t.agent.name),1),s("p",A2,[ze(d(t.t("agents.workspace"))+": ",1),s("code",null,d(t.agent.workspace),1)])]),s("div",I2,[s("div",D2,[(g(!0),f(te,null,Le(t.tabs,b=>(g(),f("button",{key:b.id,class:Oe(["tab-btn",{active:t.activeTab===b.id}]),onClick:y=>t.activeTab=b.id},[s("span",k2,d(b.icon),1),s("span",M2,d(b.label),1)],10,w2))),128))]),s("div",x2,[Q(s("div",L2,[s("h2",P2,d(t.t("agents.basicConfig")),1),s("div",U2,[s("label",null,d(t.t("agents.agentIcon")),1),s("div",F2,[(g(!0),f(te,null,Le(t.agentIconOptions,b=>(g(),f("button",{key:b.id,type:"button",class:Oe(["icon-picker-btn",{active:t.configForm.icon===b.id}]),title:b.label,onClick:y=>t.configForm.icon=b.id},d(b.emoji),11,B2))),128))])]),s("div",G2,[s("label",null,d(t.t("agents.displayName")),1),Q(s("input",{"onUpdate:modelValue":e[1]||(e[1]=b=>t.configForm.name=b),type:"text",class:Oe(["form-input",{readonly:t.agent.isDefault}]),placeholder:t.agent.workspace,readonly:t.agent.isDefault,disabled:t.agent.isDefault},null,10,Y2),[[ye,t.configForm.name]]),t.agent.isDefault?(g(),f("p",H2,d(t.t("agents.nameReadonly")),1)):V("",!0)]),s("div",q2,[s("label",null,d(t.t("agents.workspaceName")),1),s("input",{value:t.agent.workspace,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,V2),s("p",z2,d(t.t("agents.workspaceReadonly")),1)]),s("div",W2,[s("label",null,d(t.t("agents.agentDescription")),1),Q(s("textarea",{"onUpdate:modelValue":e[2]||(e[2]=b=>t.configForm.systemPrompt=b),class:"form-input form-textarea",placeholder:t.t("agents.agentDescriptionPlaceholder"),rows:"4"},null,8,K2),[[ye,t.configForm.systemPrompt]]),s("p",Q2,d(t.t("agents.agentDescriptionHint")),1)]),s("div",$2,[s("h3",X2,d(t.t("agents.modelConfig")),1),s("p",Z2,d(t.t("agents.modelConfigHint")),1),t.configuredModelsList.length===0?(g(),f("p",J2,d(t.t("agents.noConfiguredModels")),1)):(g(),f(te,{key:1},[s("div",j2,[s("label",null,d(t.t("agents.selectConfiguredModel")),1),Q(s("select",{"onUpdate:modelValue":e[3]||(e[3]=b=>t.selectedConfiguredModelKey=b),class:"form-input",onChange:e[4]||(e[4]=(...b)=>t.onConfiguredModelSelect&&t.onConfiguredModelSelect(...b))},[s("option",eY,d(t.t("agents.useDefaultModel")),1),(g(!0),f(te,null,Le(t.configuredModelsList,b=>(g(),f("option",{key:t.optionValueFor(b),value:t.optionValueFor(b)},d(t.optionLabelFor(b)),9,tY))),128))],544),[[dt,t.selectedConfiguredModelKey]])]),t.selectedConfiguredModelKey?(g(),f("div",nY,[s("label",null,d(t.t("agents.currentProvider")),1),s("input",{value:t.modelForm.provider,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,oY)])):V("",!0),t.selectedConfiguredModelKey?(g(),f("div",aY,[s("label",null,d(t.t("agents.currentModelId")),1),s("input",{value:t.modelForm.model,type:"text",class:"form-input readonly",readonly:"",disabled:""},null,8,rY)])):V("",!0)],64)),t.proxyForm.runnerType==="local"?(g(),f("div",sY,[s("label",null,d(t.t("agents.contextSize")),1),Q(s("input",{"onUpdate:modelValue":e[5]||(e[5]=b=>n.contextSizeForm=b),type:"number",min:"2048",max:"131072",step:"1024",class:"form-input",placeholder:"32768"},null,512),[[ye,n.contextSizeForm,void 0,{number:!0}]]),s("p",iY,d(t.t("agents.contextSizeHint")),1)])):V("",!0)]),s("div",lY,[s("h3",cY,d(t.t("agents.webSearchTitle")),1),s("div",dY,[Q(s("input",{id:"web-search-enabled","onUpdate:modelValue":e[6]||(e[6]=b=>t.webSearchForm.enabled=b),type:"checkbox",class:"form-checkbox"},null,512),[[zn,t.webSearchForm.enabled]]),s("label",_Y,d(t.t("agents.webSearchEnabled")),1)]),s("p",uY,d(t.t("agents.webSearchEnabledHint")),1),t.webSearchForm.enabled?(g(),f(te,{key:0},[s("div",mY,[s("label",null,d(t.t("agents.webSearchProvider")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=b=>t.webSearchForm.provider=b),class:"form-input"},[s("option",pY,d(t.t("agents.webSearchProviderDuckDuckScrape")),1),s("option",gY,d(t.t("agents.webSearchProviderBrave")),1)],512),[[dt,t.webSearchForm.provider]]),s("p",fY,d(t.t("agents.webSearchProviderHint")),1)]),s("div",EY,[s("label",null,d(t.t("agents.webSearchMaxResultTokens")),1),Q(s("input",{"onUpdate:modelValue":e[8]||(e[8]=b=>t.webSearchForm.maxResultTokens=b),type:"number",min:"0",step:"1000",class:"form-input",placeholder:"64000"},null,512),[[ye,t.webSearchForm.maxResultTokens,void 0,{number:!0}]]),s("p",SY,d(t.t("agents.webSearchMaxResultTokensHint")),1)])],64)):V("",!0)]),s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[9]||(e[9]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,bY)],512),[[ht,t.activeTab==="config"]]),Q(s("div",hY,[s("h2",TY,d(t.t("agents.proxyConfig")),1),s("p",vY,d(t.t("agents.proxyConfigHint")),1),s("div",CY,[s("label",null,d(t.t("agents.runnerType")),1),((u=t.agent)==null?void 0:u.runnerType)==="coze"||((_=t.agent)==null?void 0:_.runnerType)==="openclawx"||((m=t.agent)==null?void 0:m.runnerType)==="opencode"||((p=t.agent)==null?void 0:p.runnerType)==="claude_code"?(g(),f("p",yY,d(((E=t.agent)==null?void 0:E.runnerType)==="coze"?t.t("agents.runnerTypeCoze"):((S=t.agent)==null?void 0:S.runnerType)==="openclawx"?t.t("agents.runnerTypeOpenclawx"):((T=t.agent)==null?void 0:T.runnerType)==="opencode"?t.t("agents.runnerTypeOpencode"):t.t("agents.runnerTypeClaudeCode")),1)):Q((g(),f("select",{key:1,"onUpdate:modelValue":e[10]||(e[10]=b=>t.proxyForm.runnerType=b),class:"form-input"},[s("option",RY,d(t.t("agents.runnerTypeLocal")),1),s("option",NY,d(t.t("agents.runnerTypeCoze")),1),s("option",OY,d(t.t("agents.runnerTypeOpenclawx")),1),s("option",AY,d(t.t("agents.runnerTypeOpencode")),1),s("option",IY,d(t.t("agents.runnerTypeClaudeCode")),1)],512)),[[dt,t.proxyForm.runnerType]])]),t.proxyForm.runnerType==="coze"?(g(),f(te,{key:0},[s("div",DY,[s("label",null,d(t.t("agents.cozeRegion")),1),Q(s("select",{"onUpdate:modelValue":e[11]||(e[11]=b=>t.proxyForm.coze.region=b),class:"form-input"},[s("option",wY,d(t.t("agents.cozeRegionCom")),1),s("option",kY,d(t.t("agents.cozeRegionCn")),1)],512),[[dt,t.proxyForm.coze.region]]),s("p",MY,d(t.t("agents.cozeRegionHint")),1),s("p",xY,d(t.t("agents.cozeTokenTypesHint")),1)]),t.proxyForm.coze.region==="cn"?(g(),f(te,{key:0},[s("div",LY,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[12]||(e[12]=b=>t.proxyForm.coze.cn.botId=b),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,PY),[[ye,t.proxyForm.coze.cn.botId]]),s("p",UY,d(t.t("agents.cozeBotIdHint")),1)]),s("div",FY,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCn"))+")",1),Q(s("input",{"onUpdate:modelValue":e[13]||(e[13]=b=>t.proxyForm.coze.cn.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,BY),[[ye,t.proxyForm.coze.cn.apiKey]]),s("p",GY,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0),t.proxyForm.coze.region==="com"?(g(),f(te,{key:1},[s("div",YY,[s("label",null,d(t.t("agents.cozeBotId"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[14]||(e[14]=b=>t.proxyForm.coze.com.botId=b),type:"text",class:"form-input",placeholder:t.t("agents.cozeBotIdPlaceholder")},null,8,HY),[[ye,t.proxyForm.coze.com.botId]]),s("p",qY,d(t.t("agents.cozeBotIdHint")),1)]),s("div",VY,[s("label",null,d(t.t("agents.cozeApiKey"))+"("+d(t.t("agents.cozeRegionCom"))+")",1),Q(s("input",{"onUpdate:modelValue":e[15]||(e[15]=b=>t.proxyForm.coze.com.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.cozeApiKeyPlaceholder"),autocomplete:"off"},null,8,zY),[[ye,t.proxyForm.coze.com.apiKey]]),s("p",WY,d(t.t("agents.cozeAccessTokenHint")),1)])],64)):V("",!0)],64)):V("",!0),t.proxyForm.runnerType==="claude_code"?(g(),f(te,{key:1},[s("p",KY,d(t.t("agents.runnerTypeClaudeCodeHint")),1),s("div",QY,[s("label",null,d(t.t("agents.claudeCodeWorkingDirectory")),1),s("div",$Y,[Q(s("input",{"onUpdate:modelValue":e[16]||(e[16]=b=>t.proxyForm.claudeCode.workingDirectory=b),type:"text",class:"form-input",placeholder:t.t("agents.claudeCodeWorkingDirectoryPlaceholder")},null,8,XY),[[ye,t.proxyForm.claudeCode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[17]||(e[17]=(...b)=>t.pickClaudeCodeWorkingDirectory&&t.pickClaudeCodeWorkingDirectory(...b))},d(t.t("agents.claudeCodeSelectFolder")),1)):V("",!0)])])],64)):V("",!0),t.proxyForm.runnerType==="openclawx"?(g(),f(te,{key:2},[s("div",ZY,[s("label",null,d(t.t("agents.openclawxBaseUrl")),1),Q(s("input",{"onUpdate:modelValue":e[18]||(e[18]=b=>t.proxyForm.openclawx.baseUrl=b),type:"text",class:"form-input",placeholder:t.t("agents.openclawxBaseUrlPlaceholder")},null,8,JY),[[ye,t.proxyForm.openclawx.baseUrl]])]),s("div",jY,[s("label",null,d(t.t("agents.openclawxApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[19]||(e[19]=b=>t.proxyForm.openclawx.apiKey=b),type:"password",class:"form-input",placeholder:t.t("agents.openclawxApiKeyPlaceholder"),autocomplete:"off"},null,8,eH),[[ye,t.proxyForm.openclawx.apiKey]])])],64)):V("",!0),t.proxyForm.runnerType==="opencode"?(g(),f(te,{key:3},[s("p",tH,d(t.t("agents.opencodeHint")),1),s("div",nH,[s("label",null,d(t.t("agents.opencodeMode")),1),s("div",oH,[s("label",aH,[Q(s("input",{"onUpdate:modelValue":e[20]||(e[20]=b=>t.proxyForm.opencode.mode=b),type:"radio",value:"local"},null,512),[[_o,t.proxyForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeLocal")),1)]),s("label",rH,[Q(s("input",{"onUpdate:modelValue":e[21]||(e[21]=b=>t.proxyForm.opencode.mode=b),type:"radio",value:"remote"},null,512),[[_o,t.proxyForm.opencode.mode]]),s("span",null,d(t.t("agents.opencodeModeRemote")),1)])])]),t.proxyForm.opencode.mode==="local"?(g(),f(te,{key:0},[s("p",sH,d(t.t("agents.opencodeLocalHint")),1),s("div",iH,[s("label",null,d(t.t("agents.opencodePortLocalLabel")),1),Q(s("input",{"onUpdate:modelValue":e[22]||(e[22]=b=>t.proxyForm.opencode.port=b),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,lH),[[ye,t.proxyForm.opencode.port,void 0,{number:!0}]])]),s("div",cH,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[23]||(e[23]=b=>t.proxyForm.opencode.model=b),class:"form-input"},[s("option",dH,d(t.t("agents.opencodeUseLocalDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,b=>(g(),f("option",{key:b.id,value:b.id},d(b.label)+d(b.free?" (Free)":""),9,_H))),128))],512),[[dt,t.proxyForm.opencode.model]])]),s("div",uH,[s("label",null,d(t.t("agents.opencodeWorkingDirectory")),1),s("div",mH,[Q(s("input",{"onUpdate:modelValue":e[24]||(e[24]=b=>t.proxyForm.opencode.workingDirectory=b),type:"text",class:"form-input",placeholder:t.t("agents.opencodeWorkingDirectoryPlaceholder")},null,8,pH),[[ye,t.proxyForm.opencode.workingDirectory]]),t.hasElectronFolderPicker?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-pick-folder",onClick:e[25]||(e[25]=(...b)=>t.pickOpencodeWorkingDirectory&&t.pickOpencodeWorkingDirectory(...b))},d(t.t("agents.opencodeSelectFolder")),1)):V("",!0)])])],64)):(g(),f(te,{key:1},[s("p",gH,d(t.t("agents.opencodeRemoteHint")),1),s("div",fH,[s("label",null,d(t.t("agents.opencodeAddress")),1),Q(s("input",{"onUpdate:modelValue":e[26]||(e[26]=b=>t.proxyForm.opencode.address=b),type:"text",class:"form-input",placeholder:t.t("agents.opencodeAddressPlaceholder")},null,8,EH),[[ye,t.proxyForm.opencode.address]])]),s("div",SH,[s("label",null,d(t.t("agents.opencodePort")),1),Q(s("input",{"onUpdate:modelValue":e[27]||(e[27]=b=>t.proxyForm.opencode.port=b),type:"number",min:"1",max:"65535",class:"form-input",placeholder:t.t("agents.opencodePortPlaceholder")},null,8,bH),[[ye,t.proxyForm.opencode.port,void 0,{number:!0}]])]),s("div",hH,[s("label",null,d(t.t("agents.opencodePassword")),1),Q(s("input",{"onUpdate:modelValue":e[28]||(e[28]=b=>t.proxyForm.opencode.password=b),type:"password",class:"form-input",placeholder:t.t("agents.opencodePasswordPlaceholder"),autocomplete:"off"},null,8,TH),[[ye,t.proxyForm.opencode.password]])]),s("div",vH,[s("label",null,d(t.t("agents.opencodeModel")),1),Q(s("select",{"onUpdate:modelValue":e[29]||(e[29]=b=>t.proxyForm.opencode.model=b),class:"form-input"},[s("option",CH,d(t.t("agents.opencodeUseServerDefault")),1),(g(!0),f(te,null,Le(t.opencodeFreeModels,b=>(g(),f("option",{key:b.id,value:b.id},d(b.label)+d(b.free?" (Free)":""),9,yH))),128))],512),[[dt,t.proxyForm.opencode.model]])])],64))],64)):V("",!0),s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[30]||(e[30]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,RH)],512),[[ht,t.activeTab==="proxy"]]),Q(s("div",NH,[s("div",OH,[s("h2",AH,d(t.t("agents.skillsConfig")),1),s("div",IH,[s("button",{class:"btn-secondary",onClick:e[31]||(e[31]=(...b)=>t.openSmartInstallModal&&t.openSmartInstallModal(...b))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[32]||(e[32]=b=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])]),t.skillsLoading?(g(),f("div",DH,[e[73]||(e[73]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.agentSkills.length===0?(g(),f("div",wH,[e[74]||(e[74]=s("div",{class:"empty-icon"},"🎯",-1)),s("p",null,d(t.t("skills.noSkills")),1),s("div",kH,[s("button",{class:"btn-secondary",onClick:e[34]||(e[34]=(...b)=>t.openSmartInstallModal&&t.openSmartInstallModal(...b))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[35]||(e[35]=b=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])])):(g(),f("div",MH,[(g(!0),f(te,null,Le(t.agentSkills,b=>(g(),f("div",{key:b.name,class:"skill-card card-glass",onClick:y=>t.openSkillDetail(b)},[e[75]||(e[75]=s("span",{class:"skill-card-icon"},"🎯",-1)),s("span",LH,d(b.name),1),s("p",PH,d(b.description),1),t.canDeleteWorkspaceSkill?(g(),f("button",{key:0,type:"button",class:"link-btn danger skill-delete",onClick:Be(y=>t.confirmDeleteSkill(b),["stop"])},d(t.t("common.delete")),9,UH)):V("",!0)],8,xH))),128))]))],512),[[ht,t.activeTab==="skills"]]),Q(s("div",FH,[s("h2",BH,d(t.t("agents.mcpConfig")),1),s("p",GH,d(t.t("agents.mcpConfigHint")),1),s("p",YH,d(t.t("agents.mcpTestHint")),1),s("div",HH,[(g(!0),f(te,null,Le(t.mcpServers,(b,y)=>(g(),f("div",{key:y,class:"mcp-item card-glass"},[s("span",{class:Oe(["mcp-item-badge",b.url?"badge-remote":"badge-local"])},d(b.url?t.t("agents.mcpTransportSse"):t.t("agents.mcpTransportStdio")),3),s("span",qH,d(y),1),s("span",VH,d(t.mcpServerDisplayText(b)),1),s("div",zH,[s("button",{type:"button",class:"link-btn",disabled:t.mcpTestState[y]==="loading",onClick:w=>t.testMcpServer(y,b)},d(t.mcpTestState[y]==="loading"?t.t("agents.mcpTestTesting"):t.t("agents.mcpTest")),9,WH),t.mcpTestState[y]&&t.mcpTestState[y]!=="loading"?(g(),f("span",{key:0,class:Oe(["mcp-test-result",t.mcpTestState[y].success?"success":"error"])},[t.mcpTestState[y].success?(g(),f(te,{key:0},[s("span",KH,d(t.t("agents.mcpTestSuccessStatus")),1),ze(" "+d(t.t("agents.mcpTestSuccess",{count:t.mcpTestState[y].toolsCount})),1)],64)):(g(),f(te,{key:1},[ze(d(t.mcpTestState[y].error),1)],64))],2)):V("",!0),s("button",{type:"button",class:"link-btn",onClick:w=>t.startEditMcp(y)},d(t.t("common.edit")),9,QH),s("button",{type:"button",class:"link-btn danger",onClick:w=>t.removeMcpServer(y)},d(t.t("common.delete")),9,$H)])]))),128))]),s("div",XH,[s("label",ZH,d(t.t("agents.mcpMaxResultTokens")),1),Q(s("select",{"onUpdate:modelValue":e[37]||(e[37]=b=>t.mcpMaxResultTokensForm=b),class:"form-input"},[s("option",JH,d(t.t("agents.mcpMaxResultTokensNoLimit")),1),e[76]||(e[76]=Va('<option value="8000" data-v-3c412668>8K</option><option value="16000" data-v-3c412668>16K</option><option value="32000" data-v-3c412668>32K</option><option value="48000" data-v-3c412668>48K</option><option value="64000" data-v-3c412668>64K</option>',5))],512),[[dt,t.mcpMaxResultTokensForm]]),s("p",jH,d(t.t("agents.mcpMaxResultTokensHint")),1)]),t.mcpFormVisible||t.mcpEditingKey!==null?(g(),f("div",eq,[s("h3",tq,d(t.mcpEditingKey!==null?t.t("agents.editMcpServer"):t.t("agents.addMcpServer")),1),s("div",nq,[s("label",oq,d(t.t("agents.mcpServerName")),1),Q(s("input",{"onUpdate:modelValue":e[38]||(e[38]=b=>t.mcpForm.name=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpServerNamePlaceholder"),readonly:t.mcpEditingKey!==null},null,8,aq),[[ye,t.mcpForm.name]])]),s("div",rq,[s("label",sq,d(t.t("agents.mcpTransportType")),1),s("div",iq,[s("button",{type:"button",class:Oe(["transport-tab",{active:t.mcpForm.transport==="stdio"}]),onClick:e[39]||(e[39]=b=>t.mcpForm.transport="stdio")},[e[77]||(e[77]=s("span",{class:"transport-tab-icon"},"🖥️",-1)),s("span",lq,d(t.t("agents.mcpTransportStdio")),1),s("span",cq,d(t.t("agents.mcpTransportStdioHint")),1)],2),s("button",{type:"button",class:Oe(["transport-tab",{active:t.mcpForm.transport==="sse"}]),onClick:e[40]||(e[40]=b=>t.mcpForm.transport="sse")},[e[78]||(e[78]=s("span",{class:"transport-tab-icon"},"🌐",-1)),s("span",dq,d(t.t("agents.mcpTransportSse")),1),s("span",_q,d(t.t("agents.mcpTransportSseHint")),1)],2)])]),t.mcpForm.transport==="stdio"?(g(),f(te,{key:0},[s("div",uq,[s("label",mq,d(t.t("agents.mcpCommand")),1),Q(s("input",{"onUpdate:modelValue":e[41]||(e[41]=b=>t.mcpForm.command=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpCommandPlaceholder")},null,8,pq),[[ye,t.mcpForm.command]])]),s("div",gq,[s("label",fq,d(t.t("agents.mcpArgs")),1),Q(s("input",{"onUpdate:modelValue":e[42]||(e[42]=b=>t.mcpForm.argsStr=b),type:"text",class:"form-input",placeholder:t.t("agents.mcpArgsPlaceholder")},null,8,Eq),[[ye,t.mcpForm.argsStr]])]),s("div",Sq,[s("label",bq,d(t.t("agents.mcpEnv")),1),Q(s("textarea",{"onUpdate:modelValue":e[43]||(e[43]=b=>t.mcpForm.envStr=b),class:"form-input form-textarea",rows:"3",placeholder:t.t("agents.mcpEnvPlaceholder")},null,8,hq),[[ye,t.mcpForm.envStr]])])],64)):(g(),f(te,{key:1},[s("div",Tq,[s("label",vq,d(t.t("agents.mcpUrl")),1),Q(s("input",{"onUpdate:modelValue":e[44]||(e[44]=b=>t.mcpForm.url=b),type:"url",class:"form-input",placeholder:t.t("agents.mcpUrlPlaceholder")},null,8,Cq),[[ye,t.mcpForm.url]])]),s("div",yq,[s("label",Rq,d(t.t("agents.mcpHeaders")),1),Q(s("textarea",{"onUpdate:modelValue":e[45]||(e[45]=b=>t.mcpForm.headersStr=b),class:"form-input form-textarea",rows:"2",placeholder:t.t("agents.mcpHeadersPlaceholder")},null,8,Nq),[[ye,t.mcpForm.headersStr]])])],64)),t.mcpFormError?(g(),f("p",Oq,d(t.mcpFormError),1)):V("",!0),t.mcpFormTestResult?(g(),f("div",{key:3,class:Oe(["form-hint mcp-form-test-result",t.mcpFormTestResult.success?"success":"error"])},[t.mcpFormTestResult.success?(g(),f(te,{key:0},[s("span",Aq,d(t.t("agents.mcpTestSuccessStatus")),1),ze(" "+d(t.t("agents.mcpTestSuccess",{count:t.mcpFormTestResult.toolsCount})),1)],64)):(g(),f(te,{key:1},[ze(d(t.mcpFormTestResult.error),1)],64))],2)):V("",!0),s("div",Iq,[s("button",{type:"button",class:"btn-secondary",disabled:t.mcpFormTestLoading,onClick:e[46]||(e[46]=(...b)=>t.testMcpForm&&t.testMcpForm(...b))},d(t.mcpFormTestLoading?t.t("agents.mcpTestTesting"):t.t("agents.mcpTest")),9,Dq),s("button",{type:"button",class:"btn-secondary",onClick:e[47]||(e[47]=(...b)=>t.cancelMcpForm&&t.cancelMcpForm(...b))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",onClick:e[48]||(e[48]=(...b)=>t.saveMcpServer&&t.saveMcpServer(...b))},d(t.mcpEditingKey!==null?t.t("agents.saveMcpServer"):t.t("agents.addMcpServer")),1)])])):(g(),f("button",{key:1,type:"button",class:"btn-secondary btn-add-mcp",onClick:e[49]||(e[49]=(...b)=>t.openAddMcp&&t.openAddMcp(...b))},d(t.t("agents.addMcpServer")),1)),s("div",wq,[s("h3",kq,d(t.t("agents.mcpStandardJson")),1),s("p",Mq,d(t.t("agents.mcpStandardJsonHint")),1),Q(s("textarea",{"onUpdate:modelValue":e[50]||(e[50]=b=>t.mcpStandardJsonString=b),class:"form-input form-textarea mcp-json-textarea",rows:"12",spellcheck:"false"},null,512),[[ye,t.mcpStandardJsonString]]),t.mcpJsonError?(g(),f("p",xq,d(t.mcpJsonError),1)):V("",!0),s("div",Lq,[s("button",{type:"button",class:"btn-primary",onClick:e[51]||(e[51]=(...b)=>t.applyMcpJson&&t.applyMcpJson(...b))},d(t.t("agents.mcpApplyJson")),1)])]),s("p",Pq,d(t.t("agents.mcpSaveHint")),1),s("div",Uq,[s("button",{class:"btn-primary",disabled:t.configSaving,onClick:e[52]||(e[52]=(...b)=>t.saveConfig&&t.saveConfig(...b))},d(t.configSaving?t.t("common.loading"):t.t("agents.saveConfig")),9,Fq)])],512),[[ht,t.activeTab==="mcp"]])])]),t.showSmartInstallModal?(g(),Gt(r,{key:0,"target-agent-id":((h=t.agent)==null?void 0:h.id)??"default","session-id":"skill-install",onClose:t.closeSmartInstallModal,onInstalled:n.loadSkills},null,8,["target-agent-id","onClose","onInstalled"])):V("",!0),Ae(c,{show:t.showLocalInstallModal,scope:"workspace",workspace:((A=t.agent)==null?void 0:A.workspace)??"default",onClose:e[53]||(e[53]=b=>t.showLocalInstallModal=!1),onInstalled:t.onLocalInstalled},null,8,["show","workspace","onInstalled"]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showManualInstallModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[58]||(e[58]=Be(b=>t.showManualInstallModal=!1,["self"]))},[s("div",Bq,[s("div",Gq,[s("h2",null,d(t.t("agents.installManual")),1),s("button",{type:"button",class:"close-btn",onClick:e[54]||(e[54]=b=>t.showManualInstallModal=!1)},"✕")]),s("div",Yq,[s("p",Hq,d(t.t("agents.installManualHint")),1),s("div",qq,[s("label",null,d(t.t("agents.skillGitUrl")),1),Q(s("input",{"onUpdate:modelValue":e[55]||(e[55]=b=>t.manualInstallUrl=b),type:"text",class:"form-input",placeholder:t.t("agents.skillGitUrlPlaceholder")},null,8,Vq),[[ye,t.manualInstallUrl]])]),t.installError?(g(),f("p",zq,d(t.installError),1)):V("",!0),s("div",Wq,[s("button",{type:"button",class:"btn-secondary",onClick:e[56]||(e[56]=b=>t.showManualInstallModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.installManualSaving,onClick:e[57]||(e[57]=(...b)=>n.doManualInstall&&n.doManualInstall(...b))},d(t.installManualSaving?t.t("common.loading"):t.t("agents.installConfirm")),9,Kq)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.selectedSkill?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[60]||(e[60]=Be(b=>t.selectedSkill=null,["self"]))},[s("div",Qq,[s("div",$q,[s("h2",null,d(t.selectedSkill.name),1),s("button",{type:"button",class:"close-btn",onClick:e[59]||(e[59]=b=>t.selectedSkill=null)},"✕")]),s("div",Xq,[t.skillDetailContent?(g(),f("div",{key:0,class:"skill-documentation markdown-body",innerHTML:t.renderedSkillContent},null,8,Zq)):(g(),f("div",Jq,d(t.t("skills.noDocumentation")),1))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var b;return[t.deleteSkillTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[64]||(e[64]=Be(y=>t.deleteSkillTarget=null,["self"]))},[s("div",jq,[s("div",eV,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[61]||(e[61]=y=>t.deleteSkillTarget=null)},"✕")]),s("div",tV,[s("p",null,d(t.t("agents.deleteSkillConfirm")),1),s("p",nV,d((b=t.deleteSkillTarget)==null?void 0:b.name),1),s("div",oV,[s("button",{type:"button",class:"btn-secondary",onClick:e[62]||(e[62]=y=>t.deleteSkillTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[63]||(e[63]=(...y)=>t.doDeleteSkill&&t.doDeleteSkill(...y))},d(t.t("common.delete")),1)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var b,y,w;return[t.installSuccessPayload?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[67]||(e[67]=Be(k=>t.installSuccessPayload=null,["self"]))},[s("div",aV,[s("div",rV,[s("h2",null,d(t.t("agents.installSuccess")),1),s("button",{type:"button",class:"close-btn",onClick:e[65]||(e[65]=k=>t.installSuccessPayload=null)},"✕")]),s("div",sV,[(b=t.installSuccessPayload)!=null&&b.name?(g(),f("p",iV,[s("span",lV,d(t.t("agents.installSuccessName"))+":",1),s("span",cV,d(t.installSuccessPayload.name),1)])):V("",!0),s("p",dV,[s("span",_V,d(t.t("agents.installSuccessDir"))+":",1),s("span",{class:"value dir",title:(y=t.installSuccessPayload)==null?void 0:y.installDir},d((w=t.installSuccessPayload)==null?void 0:w.installDir),9,uV)]),s("div",mV,[s("button",{type:"button",class:"btn-primary",onClick:e[66]||(e[66]=k=>t.installSuccessPayload=null)},d(t.t("common.confirm")),1)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showDeleteConfirm?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[71]||(e[71]=Be(b=>t.showDeleteConfirm=!1,["self"]))},[s("div",pV,[s("p",gV,d(t.t("agents.deleteAgentConfirm")),1),t.agent?(g(),f("p",fV,d(t.agent.name),1)):V("",!0),s("label",EV,[Q(s("input",{type:"checkbox","onUpdate:modelValue":e[68]||(e[68]=b=>t.deleteWorkspaceDir=b)},null,512),[[zn,t.deleteWorkspaceDir]]),s("span",null,d(t.t("agents.deleteAgentAlsoDeleteDir")),1)]),s("div",SV,[s("button",{type:"button",class:"btn-secondary",onClick:e[69]||(e[69]=b=>t.showDeleteConfirm=!1)},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary danger",disabled:t.deleteAgentSaving,onClick:e[70]||(e[70]=(...b)=>t.doDeleteAgent&&t.doDeleteAgent(...b))},d(t.deleteAgentSaving?t.t("common.loading"):t.t("agents.deleteAgent")),9,bV)])])])):V("",!0)]),_:1})],64)):(g(),f("div",y2,[s("p",null,d(t.t("agents.notFound")),1),Ae(i,{to:"/agents",class:"btn-primary"},{default:Ve(()=>[ze(d(t.t("agents.backToList")),1)]),_:1})]))])}const TV=st(T2,[["render",hV],["__scopeId","data-v-3c412668"]]),vV=[{value:0,label:"日"},{value:1,label:"一"},{value:2,label:"二"},{value:3,label:"三"},{value:4,label:"四"},{value:5,label:"五"},{value:6,label:"六"}];function CV(n){var l;const[e,o]=(n.time||"09:00").split(":").map(Number),t=o??0,a=e??9;switch(n.type){case"daily":return`${t} ${a} * * *`;case"weekdays":return`${t} ${a} * * 1-5`;case"weekends":return`${t} ${a} * * 0,6`;case"weekly":return(l=n.days)!=null&&l.length?`${t} ${a} * * ${[...n.days].sort((i,r)=>i-r).join(",")}`:`${t} ${a} * * *`;case"monthly":{const i=Math.min(n.dayOfMonth??1,31);return`${t} ${a} ${i} * *`}default:return`${t} ${a} * * *`}}function yV(n){const e=new Date(n),o=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),i=String(e.getMinutes()).padStart(2,"0");return`${o}-${t}-${a}T${l}:${i}`}const RV={name:"Tasks",setup(){const{t:n}=Ot(),e=D([]),o=D([]),t=D(!0),a=D(!1),l=D(null),i=D(null),r=D(null),c=D([]),u=D(!1),_=D(null),m=D(!1),p=D(""),E=D({workspace:"default",message:"",scheduleType:"once",runAtLocal:"",repeatType:"daily",time:"09:00",weeklyDays:[1,2,3,4,5],dayOfMonth:1});function S(G){return G.scheduleType==="once"&&G.runAt?`${n("tasks.once")}: ${T(G.runAt)}`:G.cronExpr?`${n("tasks.repeating")} (${G.cronExpr})`:G.repeatRuleJson||n("tasks.repeating")}function T(G){return new Date(G).toLocaleString()}async function h(){var G;try{const H=await ao.list();e.value=((G=H.data)==null?void 0:G.data)??[]}catch(H){console.error("Load tasks failed",H),e.value=[]}}async function A(){var G;try{const R=((G=(await Xt.listAgents()).data)==null?void 0:G.data)??[];o.value=R.length?R:[{id:"default",name:"主智能体",workspace:"default"}],o.value.length&&!E.value.workspace&&(E.value.workspace=o.value[0].workspace)}catch{o.value=[{id:"default",name:"主智能体",workspace:"default"}]}}function b(){var G;l.value=null,E.value={workspace:((G=o.value[0])==null?void 0:G.workspace)??"default",message:"",scheduleType:"once",runAtLocal:"",repeatType:"daily",time:"09:00",weeklyDays:[1,2,3,4,5],dayOfMonth:1},p.value="",a.value=!0}function y(G){l.value=G.id;const H=G.repeatRuleJson?(()=>{try{return JSON.parse(G.repeatRuleJson)}catch{return{type:"daily",time:"09:00"}}})():{type:"daily",time:"09:00"};E.value={workspace:G.workspace,message:G.message,scheduleType:G.scheduleType,runAtLocal:G.runAt?yV(G.runAt):"",repeatType:H.type||"daily",time:H.time||"09:00",weeklyDays:Array.isArray(H.days)?[...H.days]:[1,2,3,4,5],dayOfMonth:Math.min(31,Math.max(1,H.dayOfMonth??1))},p.value="",a.value=!0}function w(){a.value=!1}function k(){const G=E.value,H={type:G.repeatType,time:G.time};return G.repeatType==="weekly"&&(H.days=[...G.weeklyDays||[]]),G.repeatType==="monthly"&&(H.dayOfMonth=Math.min(31,Math.max(1,G.dayOfMonth||1))),H}async function B(){var H,R;p.value="";const G=(E.value.message||"").trim();if(!G){p.value="请填写消息内容";return}if(E.value.scheduleType==="once"&&!E.value.runAtLocal){p.value="请选择执行时间";return}m.value=!0;try{if(l.value){const P={message:G,scheduleType:E.value.scheduleType};if(E.value.scheduleType==="once")P.runAt=new Date(E.value.runAtLocal).getTime();else{const oe=k();P.repeatRuleJson=JSON.stringify(oe),P.cronExpr=CV(oe)}await ao.update(l.value,P)}else{const P={workspace:E.value.workspace,message:G,scheduleType:E.value.scheduleType};E.value.scheduleType==="once"?P.runAt=new Date(E.value.runAtLocal).getTime():P.repeatRule=k(),await ao.create(P)}w(),await h()}catch(P){p.value=((R=(H=P.response)==null?void 0:H.data)==null?void 0:R.message)||P.message||(l.value?"保存失败":"创建失败")}finally{m.value=!1}}async function X(G){try{await ao.update(G.id,{enabled:!G.enabled}),await h()}catch(H){console.error("Toggle task failed",H)}}async function x(G){var H;if(G!=null&&G.id){r.value=G,_.value=null,c.value=[],u.value=!0;try{const R=await ao.listExecutions(G.id),P=((H=R==null?void 0:R.data)==null?void 0:H.data)??(R==null?void 0:R.data);c.value=Array.isArray(P)?P:[]}catch(R){console.error("Load executions failed",R),c.value=[]}finally{u.value=!1}}}function U(){r.value=null,c.value=[],_.value=null}function re(G){_.value=G}async function se(){var G,H;if((G=r.value)!=null&&G.id&&confirm(n("tasks.clearExecutionsConfirm")))try{await ao.clearExecutions(r.value.id),_.value=null;const R=await ao.listExecutions(r.value.id),P=((H=R==null?void 0:R.data)==null?void 0:H.data)??(R==null?void 0:R.data);c.value=Array.isArray(P)?P:[]}catch(R){console.error("Clear executions failed",R)}}function ne(G){i.value=G}async function Te(){if(i.value)try{await ao.delete(i.value.id),i.value=null,await h()}catch(G){console.error("Delete task failed",G)}}return Yt(async()=>{t.value=!0,await A(),await h(),t.value=!1}),{t:n,tasks:e,agents:o,loading:t,showModal:a,editingId:l,form:E,formError:p,saving:m,deleteTarget:i,weekDays:vV,scheduleLabel:S,formatTime:T,openCreateModal:b,closeModal:w,submitTask:B,toggleEnabled:X,openExecutions:x,closeExecutions:U,openExecutionDetail:re,clearExecutionsForTask:se,executionsTask:r,executions:c,executionsLoading:u,executionDetail:_,openEditModal:y,confirmDelete:ne,doDelete:Te}}},NV={class:"tasks-view"},OV={class:"tasks-header card-glass"},AV={class:"header-left"},IV={class:"view-title"},DV={class:"text-secondary"},wV={key:0,class:"loading-state"},kV={key:1,class:"empty-state"},MV={class:"text-secondary"},xV={key:2,class:"tasks-list"},LV={class:"task-main"},PV={class:"task-workspace"},UV={class:"task-message"},FV={class:"task-schedule text-secondary"},BV={key:0,class:"task-meta text-secondary"},GV={class:"task-actions"},YV=["title","onClick"],HV=["onClick"],qV=["onClick"],VV=["onClick"],zV={class:"modal-content card-glass modal-wide"},WV={class:"modal-header"},KV={class:"modal-body"},QV={class:"form-group"},$V=["disabled"],XV=["value"],ZV={class:"form-group"},JV=["placeholder"],jV={class:"form-group"},ez={value:"once"},tz={value:"cron"},nz={key:0,class:"form-group"},oz={class:"form-group"},az={value:"daily"},rz={value:"weekdays"},sz={value:"weekends"},iz={value:"weekly"},lz={value:"monthly"},cz={class:"form-group"},dz={key:0,class:"form-group"},_z={class:"weekdays-row"},uz=["value"],mz={key:1,class:"form-group"},pz={key:2,class:"form-error"},gz={class:"modal-footer-actions"},fz=["disabled"],Ez={class:"modal-content card-glass modal-wide executions-modal"},Sz={class:"modal-header"},bz={class:"modal-body"},hz={key:0,class:"executions-list"},Tz={key:0,class:"executions-actions"},vz={key:1,class:"loading-state small"},Cz={key:2,class:"text-secondary"},yz=["onClick"],Rz={class:"execution-time"},Nz={key:1,class:"execution-detail"},Oz={class:"detail-meta"},Az={key:0,class:"error-msg"},Iz={class:"conversation-log"},Dz={class:"log-block user"},wz={class:"log-role"},kz={class:"log-content"},Mz={key:0,class:"log-block assistant"},xz={class:"log-role"},Lz={class:"log-content"},Pz={key:1,class:"log-block assistant"},Uz={class:"log-role"},Fz={class:"text-secondary"},Bz={class:"modal-content card-glass delete-confirm-modal"},Gz={class:"modal-header"},Yz={class:"modal-body"},Hz={class:"modal-footer-actions"};function qz(n,e,o,t,a,l){return g(),f("div",NV,[s("div",OV,[s("div",AV,[s("h1",IV,d(t.t("tasks.title")),1),s("p",DV,d(t.t("tasks.subtitle")),1)]),s("button",{class:"btn-primary",onClick:e[0]||(e[0]=(...i)=>t.openCreateModal&&t.openCreateModal(...i))},[e[23]||(e[23]=s("span",{class:"btn-icon"},"+",-1)),ze(" "+d(t.t("tasks.addTask")),1)])]),t.loading?(g(),f("div",wV,[e[24]||(e[24]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.tasks.length===0?(g(),f("div",kV,[e[25]||(e[25]=s("div",{class:"empty-icon"},"⏰",-1)),s("p",null,d(t.t("tasks.noTasks")),1),s("p",MV,d(t.t("tasks.noTasksHint")),1),s("button",{class:"btn-primary mt-4",onClick:e[1]||(e[1]=(...i)=>t.openCreateModal&&t.openCreateModal(...i))},d(t.t("tasks.addTask")),1)])):(g(),f("div",xV,[(g(!0),f(te,null,Le(t.tasks,i=>(g(),f("div",{key:i.id,class:Oe(["task-card card-glass",{disabled:!i.enabled}])},[s("div",LV,[s("span",PV,d(i.workspace),1),s("p",UV,d(i.message.slice(0,80))+d(i.message.length>80?"…":""),1),s("p",FV,d(t.scheduleLabel(i)),1),i.lastRunAt?(g(),f("p",BV,d(t.t("tasks.lastRun"))+": "+d(t.formatTime(i.lastRunAt)),1)):V("",!0)]),s("div",GV,[s("button",{type:"button",class:"link-btn",title:i.enabled?t.t("tasks.enabled"):t.t("tasks.disabled"),onClick:r=>t.toggleEnabled(i)},d(i.enabled?"✓":"○"),9,YV),s("button",{type:"button",class:"link-btn",onClick:r=>t.openExecutions(i)},d(t.t("tasks.executions")),9,HV),s("button",{type:"button",class:"link-btn",onClick:r=>t.openEditModal(i)},d(t.t("tasks.edit")),9,qV),s("button",{type:"button",class:"link-btn danger",onClick:r=>t.confirmDelete(i)},d(t.t("common.delete")),9,VV)])],2))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>[t.showModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[13]||(e[13]=Be((...i)=>t.closeModal&&t.closeModal(...i),["self"]))},[s("div",zV,[s("div",WV,[s("h2",null,d(t.editingId?t.t("tasks.editTask"):t.t("tasks.addTask")),1),s("button",{type:"button",class:"close-btn",onClick:e[2]||(e[2]=(...i)=>t.closeModal&&t.closeModal(...i))},"✕")]),s("div",KV,[s("div",QV,[s("label",null,d(t.t("tasks.workspace")),1),Q(s("select",{"onUpdate:modelValue":e[3]||(e[3]=i=>t.form.workspace=i),class:"form-input",disabled:!!t.editingId},[(g(!0),f(te,null,Le(t.agents,i=>(g(),f("option",{key:i.id,value:i.workspace},d(i.name)+" ("+d(i.workspace)+") ",9,XV))),128))],8,$V),[[dt,t.form.workspace]])]),s("div",ZV,[s("label",null,d(t.t("tasks.message")),1),Q(s("textarea",{"onUpdate:modelValue":e[4]||(e[4]=i=>t.form.message=i),class:"form-input",rows:"3",placeholder:t.t("tasks.messagePlaceholder")},null,8,JV),[[ye,t.form.message]])]),s("div",jV,[s("label",null,d(t.t("tasks.scheduleType")),1),Q(s("select",{"onUpdate:modelValue":e[5]||(e[5]=i=>t.form.scheduleType=i),class:"form-input"},[s("option",ez,d(t.t("tasks.once")),1),s("option",tz,d(t.t("tasks.repeating")),1)],512),[[dt,t.form.scheduleType]])]),t.form.scheduleType==="once"?(g(),f("div",nz,[s("label",null,d(t.t("tasks.runAt")),1),Q(s("input",{"onUpdate:modelValue":e[6]||(e[6]=i=>t.form.runAtLocal=i),type:"datetime-local",class:"form-input"},null,512),[[ye,t.form.runAtLocal]])])):(g(),f(te,{key:1},[s("div",oz,[s("label",null,d(t.t("tasks.repeatType")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=i=>t.form.repeatType=i),class:"form-input"},[s("option",az,d(t.t("tasks.daily")),1),s("option",rz,d(t.t("tasks.weekdays")),1),s("option",sz,d(t.t("tasks.weekends")),1),s("option",iz,d(t.t("tasks.weekly")),1),s("option",lz,d(t.t("tasks.monthly")),1)],512),[[dt,t.form.repeatType]])]),s("div",cz,[s("label",null,d(t.t("tasks.time")),1),Q(s("input",{"onUpdate:modelValue":e[8]||(e[8]=i=>t.form.time=i),type:"time",class:"form-input"},null,512),[[ye,t.form.time]])]),t.form.repeatType==="weekly"?(g(),f("div",dz,[s("label",null,d(t.t("tasks.weekdaySelect")),1),s("div",_z,[(g(!0),f(te,null,Le(t.weekDays,i=>(g(),f("label",{key:i.value,class:"weekday-check"},[Q(s("input",{"onUpdate:modelValue":e[9]||(e[9]=r=>t.form.weeklyDays=r),type:"checkbox",value:i.value},null,8,uz),[[zn,t.form.weeklyDays]]),ze(" "+d(i.label),1)]))),128))])])):V("",!0),t.form.repeatType==="monthly"?(g(),f("div",mz,[s("label",null,d(t.t("tasks.dayOfMonth")),1),Q(s("input",{"onUpdate:modelValue":e[10]||(e[10]=i=>t.form.dayOfMonth=i),type:"number",min:"1",max:"31",class:"form-input"},null,512),[[ye,t.form.dayOfMonth,void 0,{number:!0}]])])):V("",!0)],64)),t.formError?(g(),f("p",pz,d(t.formError),1)):V("",!0),s("div",gz,[s("button",{type:"button",class:"btn-secondary",onClick:e[11]||(e[11]=(...i)=>t.closeModal&&t.closeModal(...i))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.saving,onClick:e[12]||(e[12]=(...i)=>t.submitTask&&t.submitTask(...i))},d(t.saving?t.t("common.loading"):t.editingId?t.t("tasks.save"):t.t("agents.create")),9,fz)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.executionsTask?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[18]||(e[18]=Be((...i)=>t.closeExecutions&&t.closeExecutions(...i),["self"]))},[s("div",Ez,[s("div",Sz,[s("h2",null,d(t.t("tasks.executions"))+": "+d(t.executionsTask.message.slice(0,30))+d(t.executionsTask.message.length>30?"…":""),1),s("button",{type:"button",class:"close-btn",onClick:e[14]||(e[14]=(...i)=>t.closeExecutions&&t.closeExecutions(...i))},"✕")]),s("div",bz,[t.executionDetail?(g(),f("div",Nz,[s("button",{type:"button",class:"link-btn back-link",onClick:e[16]||(e[16]=i=>t.executionDetail=null)},"← "+d(t.t("tasks.backToList")),1),s("button",{type:"button",class:"link-btn danger clear-executions-detail-btn",onClick:e[17]||(e[17]=(...i)=>t.clearExecutionsForTask&&t.clearExecutionsForTask(...i))},d(t.t("tasks.clearExecutions")),1),s("p",Oz,[s("span",null,d(t.formatTime(t.executionDetail.ranAt)),1),s("span",{class:Oe(["execution-status",t.executionDetail.status])},d(t.executionDetail.status==="success"?t.t("tasks.statusSuccess"):t.t("tasks.statusFailed")),3),t.executionDetail.errorMessage?(g(),f("span",Az,d(t.executionDetail.errorMessage),1)):V("",!0)]),s("div",Iz,[s("h4",null,d(t.t("tasks.conversationLog")),1),s("div",Dz,[s("span",wz,d(t.t("tasks.userMessage")),1),s("pre",kz,d(t.executionDetail.userMessage),1)]),t.executionDetail.assistantContent?(g(),f("div",Mz,[s("span",xz,d(t.t("tasks.assistantReply")),1),s("pre",Lz,d(t.executionDetail.assistantContent),1)])):t.executionDetail.errorMessage?(g(),f("div",Pz,[s("span",Uz,d(t.t("tasks.assistantReply")),1),s("p",Fz,d(t.t("tasks.noReplyDueToError")),1)])):V("",!0)])])):(g(),f("div",hz,[t.executions.length>0?(g(),f("div",Tz,[s("button",{type:"button",class:"link-btn danger",onClick:e[15]||(e[15]=(...i)=>t.clearExecutionsForTask&&t.clearExecutionsForTask(...i))},d(t.t("tasks.clearExecutions")),1)])):V("",!0),t.executionsLoading?(g(),f("div",vz,d(t.t("common.loading")),1)):t.executions.length===0?(g(),f("p",Cz,d(t.t("tasks.noExecutions")),1)):(g(!0),f(te,{key:3},Le(t.executions,i=>(g(),f("div",{key:i.id,class:"execution-row",onClick:r=>t.openExecutionDetail(i)},[s("span",Rz,d(t.formatTime(i.ranAt)),1),s("span",{class:Oe(["execution-status",i.status])},d(i.status==="success"?t.t("tasks.statusSuccess"):t.t("tasks.statusFailed")),3)],8,yz))),128))]))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[22]||(e[22]=Be(i=>t.deleteTarget=null,["self"]))},[s("div",Bz,[s("div",Gz,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[19]||(e[19]=i=>t.deleteTarget=null)},"✕")]),s("div",Yz,[s("p",null,d(t.t("tasks.deleteConfirm")),1),s("div",Hz,[s("button",{type:"button",class:"btn-secondary",onClick:e[20]||(e[20]=i=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",onClick:e[21]||(e[21]=(...i)=>t.doDelete&&t.doDelete(...i))},d(t.t("common.delete")),1)])])])])):V("",!0)]),_:1})])}const Vz=st(RV,[["render",qz],["__scopeId","data-v-354fec67"]]),zz={name:"SettingsSkills",components:{SkillCard:rh,SmartInstallDialog:sh,LocalInstallSkillDialog:ih},setup(){const{t:n}=Ot(),e=Jn(),o=D("system"),t=D([]),a=D(!1),l=D(!1),i=D(null),r=D(""),c=D(!1),u=D(""),_=D(""),m=D(!1),p=D(null),E=D(!1),S=D(!1),T=D(!1),h=D(null),A=ae(()=>t.value.filter(H=>(H.source||"system")==="system")),b=ae(()=>t.value.filter(H=>(H.source||"global")==="global")),y=ae(()=>r.value?ot(r.value):""),w=ae(()=>`${n("agents.installSmart")} (${n("skills.sources.global")})`);async function k(){var H;a.value=!0,l.value=!0;try{const R=await rn.getSkills();t.value=((H=R.data)==null?void 0:H.data)??[]}catch{t.value=[]}finally{a.value=!1,l.value=!1}}async function B(){var H;l.value=!0;try{const P=((H=(await rn.getSkills(void 0,"global")).data)==null?void 0:H.data)??[];t.value=[...t.value.filter(oe=>(oe.source||"")!=="global"),...P]}catch{}finally{l.value=!1}}function X(H){i.value=H,r.value="",rn.getSkillContent(H.name).then(R=>{var P,oe;r.value=((oe=(P=R.data)==null?void 0:P.data)==null?void 0:oe.content)??""}).catch(()=>{})}function x(H){k(),h.value=H&&(H.installDir||H.name)?H:null}function U(){u.value="",_.value="",c.value=!0}async function re(){var R,P;const H=(u.value||"").trim();if(!H){_.value=n("agents.skillGitUrl");return}_.value="",m.value=!0;try{await rn.installSkill(H,{scope:"global"}),c.value=!1,u.value="",await k()}catch(oe){_.value=((P=(R=oe.response)==null?void 0:R.data)==null?void 0:P.message)||oe.message||n("agents.installFailed")}finally{m.value=!1}}function se(H){p.value=H}async function ne(){if(p.value){E.value=!0;try{await rn.deleteSkill(void 0,p.value.name,"global"),p.value=null,await k()}catch(H){console.error(H)}finally{E.value=!1}}}function Te(){e.clearCurrentSession(),S.value=!0}function G(){S.value=!1}return nt(o,H=>{H==="global"&&B()}),Yt(()=>{k()}),{t:n,skillsSubTab:o,systemSkills:A,globalSkills:b,systemLoading:a,globalLoading:l,detailSkill:i,detailContent:r,detailContentRendered:y,openDetail:X,showManualModal:c,manualUrl:u,installError:_,manualSaving:m,openManualInstall:U,doManualInstall:re,deleteTarget:p,deleteSaving:E,confirmDelete:se,doDelete:ne,showSmartModal:S,showLocalInstallModal:T,installSuccessPayload:h,onLocalInstalled:x,openSmartInstall:Te,closeSmartInstall:G,smartInstallDialogTitle:w}}},Wz={class:"settings-skills"},Kz={class:"tab-title"},Qz={class:"skills-sub-tabs"},$z={class:"skills-panel"},Xz={class:"panel-desc"},Zz={key:0,class:"loading-state"},Jz={key:1,class:"empty-state"},jz={key:2,class:"skills-grid"},eW={class:"skills-panel"},tW={class:"panel-toolbar"},nW={class:"panel-desc"},oW={class:"panel-actions"},aW={key:0,class:"loading-state"},rW={key:1,class:"empty-state"},sW={class:"empty-actions"},iW={key:2,class:"skills-grid"},lW=["onClick"],cW={class:"modal-content card-glass skill-detail-modal"},dW={class:"modal-header"},_W={class:"modal-body"},uW=["innerHTML"],mW={key:1,class:"no-content"},pW={class:"modal-content card-glass"},gW={class:"modal-header"},fW={class:"modal-body"},EW={class:"form-hint"},SW={class:"form-group"},bW=["placeholder"],hW={key:0,class:"form-error"},TW={class:"modal-footer-actions"},vW=["disabled"],CW={class:"modal-content card-glass"},yW={class:"modal-header"},RW={class:"modal-body"},NW={class:"delete-target-name"},OW={class:"modal-footer-actions"},AW=["disabled"],IW={class:"modal-content card-glass install-success-modal"},DW={class:"modal-header"},wW={class:"modal-body"},kW={key:0,class:"install-success-row"},MW={class:"label"},xW={class:"value"},LW={class:"install-success-row install-success-dir"},PW={class:"label"},UW=["title"],FW={class:"modal-footer-actions"};function BW(n,e,o,t,a,l){const i=gt("SkillCard"),r=gt("SmartInstallDialog"),c=gt("LocalInstallSkillDialog");return g(),f("div",Wz,[s("h2",Kz,d(t.t("settings.skillsTab")),1),s("div",Qz,[s("button",{class:Oe(["sub-tab-btn",{active:t.skillsSubTab==="system"}]),onClick:e[0]||(e[0]=u=>t.skillsSubTab="system")},d(t.t("skills.sources.system")),3),s("button",{class:Oe(["sub-tab-btn",{active:t.skillsSubTab==="global"}]),onClick:e[1]||(e[1]=u=>t.skillsSubTab="global")},d(t.t("skills.sources.global")),3)]),Q(s("div",$z,[s("p",Xz,d(t.t("skills.sources.systemDesc")),1),t.systemLoading?(g(),f("div",Zz,[e[23]||(e[23]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.systemSkills.length===0?(g(),f("div",Jz,[s("p",null,d(t.t("skills.noSkills")),1)])):(g(),f("div",jz,[(g(!0),f(te,null,Le(t.systemSkills,u=>(g(),Gt(i,{key:u.name,skill:u,onClick:_=>t.openDetail(u)},null,8,["skill","onClick"]))),128))]))],512),[[ht,t.skillsSubTab==="system"]]),Q(s("div",eW,[s("div",tW,[s("p",nW,d(t.t("skills.sources.globalDesc")),1),s("div",oW,[s("button",{type:"button",class:"btn-secondary",onClick:e[2]||(e[2]=(...u)=>t.openSmartInstall&&t.openSmartInstall(...u))},d(t.t("agents.installSmart")),1),s("button",{type:"button",class:"btn-secondary",onClick:e[3]||(e[3]=u=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])]),t.globalLoading?(g(),f("div",aW,[e[24]||(e[24]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):t.globalSkills.length===0?(g(),f("div",rW,[s("p",null,d(t.t("skills.noSkills")),1),s("div",sW,[s("button",{class:"btn-secondary",onClick:e[5]||(e[5]=(...u)=>t.openSmartInstall&&t.openSmartInstall(...u))},d(t.t("agents.installSmart")),1),s("button",{class:"btn-secondary",onClick:e[6]||(e[6]=u=>t.showLocalInstallModal=!0)},d(t.t("agents.installLocal")),1),V("",!0)])])):(g(),f("div",iW,[(g(!0),f(te,null,Le(t.globalSkills,u=>(g(),f("div",{key:u.name,class:"skill-card-wrap"},[Ae(i,{skill:u,onClick:_=>t.openDetail(u)},null,8,["skill","onClick"]),s("button",{type:"button",class:"link-btn danger skill-delete",onClick:Be(_=>t.confirmDelete(u),["stop"])},d(t.t("common.delete")),9,lW)]))),128))]))],512),[[ht,t.skillsSubTab==="global"]]),Ae(je,{name:"fade"},{default:Ve(()=>[t.detailSkill?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[9]||(e[9]=Be(u=>t.detailSkill=null,["self"]))},[s("div",cW,[s("div",dW,[s("h2",null,d(t.detailSkill.name),1),s("button",{type:"button",class:"close-btn",onClick:e[8]||(e[8]=u=>t.detailSkill=null)},"✕")]),s("div",_W,[t.detailContent?(g(),f("div",{key:0,class:"skill-documentation markdown-body",innerHTML:t.detailContentRendered},null,8,uW)):(g(),f("div",mW,d(t.t("skills.noDocumentation")),1))])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showManualModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[14]||(e[14]=Be(u=>t.showManualModal=!1,["self"]))},[s("div",pW,[s("div",gW,[s("h2",null,d(t.t("agents.installManual")),1),s("button",{type:"button",class:"close-btn",onClick:e[10]||(e[10]=u=>t.showManualModal=!1)},"✕")]),s("div",fW,[s("p",EW,d(t.t("agents.installManualHint")),1),s("div",SW,[s("label",null,d(t.t("agents.skillGitUrl")),1),Q(s("input",{"onUpdate:modelValue":e[11]||(e[11]=u=>t.manualUrl=u),type:"text",class:"input",placeholder:t.t("agents.skillGitUrlPlaceholder")},null,8,bW),[[ye,t.manualUrl]])]),t.installError?(g(),f("p",hW,d(t.installError),1)):V("",!0),s("div",TW,[s("button",{type:"button",class:"btn-secondary",onClick:e[12]||(e[12]=u=>t.showManualModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.manualSaving,onClick:e[13]||(e[13]=(...u)=>t.doManualInstall&&t.doManualInstall(...u))},d(t.manualSaving?t.t("common.loading"):t.t("agents.installConfirm")),9,vW)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var u;return[t.deleteTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[18]||(e[18]=Be(_=>t.deleteTarget=null,["self"]))},[s("div",CW,[s("div",yW,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[15]||(e[15]=_=>t.deleteTarget=null)},"✕")]),s("div",RW,[s("p",null,d(t.t("agents.deleteSkillConfirm")),1),s("p",NW,d((u=t.deleteTarget)==null?void 0:u.name),1),s("div",OW,[s("button",{type:"button",class:"btn-secondary",onClick:e[16]||(e[16]=_=>t.deleteTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",disabled:t.deleteSaving,onClick:e[17]||(e[17]=(..._)=>t.doDelete&&t.doDelete(..._))},d(t.deleteSaving?t.t("common.loading"):t.t("common.delete")),9,AW)])])])])):V("",!0)]}),_:1}),t.showSmartModal?(g(),Gt(r,{key:0,"target-agent-id":"global","session-id":"skill-install-global","dialog-title":t.smartInstallDialogTitle,onClose:t.closeSmartInstall,onInstalled:n.loadAllSkills},null,8,["dialog-title","onClose","onInstalled"])):V("",!0),Ae(c,{show:t.showLocalInstallModal,scope:"global",onClose:e[19]||(e[19]=u=>t.showLocalInstallModal=!1),onInstalled:t.onLocalInstalled},null,8,["show","onInstalled"]),Ae(je,{name:"fade"},{default:Ve(()=>{var u,_,m;return[t.installSuccessPayload?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[22]||(e[22]=Be(p=>t.installSuccessPayload=null,["self"]))},[s("div",IW,[s("div",DW,[s("h2",null,d(t.t("agents.installSuccess")),1),s("button",{type:"button",class:"close-btn",onClick:e[20]||(e[20]=p=>t.installSuccessPayload=null)},"✕")]),s("div",wW,[(u=t.installSuccessPayload)!=null&&u.name?(g(),f("p",kW,[s("span",MW,d(t.t("agents.installSuccessName"))+":",1),s("span",xW,d(t.installSuccessPayload.name),1)])):V("",!0),s("p",LW,[s("span",PW,d(t.t("agents.installSuccessDir"))+":",1),s("span",{class:"value dir",title:(_=t.installSuccessPayload)==null?void 0:_.installDir},d((m=t.installSuccessPayload)==null?void 0:m.installDir),9,UW)]),s("div",FW,[s("button",{type:"button",class:"btn-primary",onClick:e[21]||(e[21]=p=>t.installSuccessPayload=null)},d(t.t("common.confirm")),1)])])])])):V("",!0)]}),_:1})])}const GW=st(zz,[["render",BW],["__scopeId","data-v-d68401f4"]]),TE=["general","agent","models","knowledge","users","skills","about"],YW=!0,HW={name:"Settings",components:{SettingsSkills:GW},setup(){var ba;const n=da(),e=Zn(),o=ma(),t=ib(),a=R_(),{t:l}=Ot(),i=()=>{var I;const v=(I=n.query)==null?void 0:I.tab;return TE.includes(v)?v:"general"},r=D(i());nt(()=>{var v;return(v=n.query)==null?void 0:v.tab},v=>{TE.includes(v)&&(r.value=v)}),nt(r,async v=>{var I;((I=n.query)==null?void 0:I.tab)!==v&&e.replace({path:"/settings",query:{...n.query,tab:v}}),v==="users"&&Wo(),v==="general"&&await o.loadConfig(),v==="agent"&&(await o.loadConfig(),So(),await Kt()),v==="models"&&(await o.loadConfig(),Xe(),Me().catch(()=>{})),v==="knowledge"&&(await o.loadConfig(),Cn())});const c=D({memory:{}}),u=D(""),_=D([]),m=D("provider"),p=D({}),E=D(""),S=D(""),T=D({provider:"",alias:"",apiKey:"",baseUrl:""}),h=D(null),A=D(!1),b=D(!1),y=D(-1),w=()=>({input:0,output:0,cacheRead:0,cacheWrite:0}),k=D({provider:"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192}),B=D([]),X=D(!1),x=D(!1),U=D(!1),re=D(!1),se=D({username:"",password:""}),ne=D({id:"",username:"",password:""}),Te=D(null),G=D({password:""}),H=D(null),R=D(""),P=D(!1),oe=D(!1),he=D({password:"",confirm:""}),Ee=D([]),ve=D(!1),we=D([]),Re=D({});let Ie=null;const xe=D({available:!1}),Ge=D(!1),W=D(!1),me=D(""),F=D(""),Z=D({embeddingSource:"online",embeddingProvider:"",embeddingModel:"",embeddingModelItemCode:"",localModelPath:"",vectorStore:"local",qdrant:{url:"",apiKey:"",collection:""}}),Se=D({feishu:{enabled:!1,appId:"",appSecret:"",defaultAgentId:"default"},dingtalk:{enabled:!1,clientId:"",clientSecret:"",defaultAgentId:"default"},telegram:{enabled:!1,botToken:"",defaultAgentId:"default"},wechat:{enabled:!1,puppet:"",defaultAgentId:"default"}}),C=D(null),N=D("logged_out"),O=D(null),M=D(!1);let Y=null;const q=ae(()=>({"status-scanning":N.value==="scanning","status-logged-in":N.value==="logged_in","status-logged-out":N.value==="logged_out"})),$=ae(()=>N.value==="scanning"?l("settings.channelWechatScanning"):N.value==="logged_in"?l("settings.channelWechatLoggedIn"):l("settings.channelWechatLoggedOut"));async function ce(){var v;M.value=!0;try{const J=(((v=o.config)==null?void 0:v.gatewayUrl)||"http://127.0.0.1:38080").replace(/^ws(s?):\/\//,"http$1://");let le=await fetch(`${J}/server-api/wechat/qrcode`),_e=await le.json();!_e.qrcode&&_e.status!=="logged_in"&&(console.log("[Settings] QR code not available, requesting refresh..."),le=await fetch(`${J}/server-api/wechat/qrcode/refresh`,{method:"POST"}),_e=await le.json()),C.value=_e.qrcode||null,N.value=_e.status||"logged_out",O.value=_e.userName||null,_e.status==="scanning"&&!Y&&(Y=setInterval(de,3e3))}catch(I){console.error("[Settings] fetch wechat qrcode failed:",I)}finally{M.value=!1}}async function de(){var v;try{const J=(((v=o.config)==null?void 0:v.gatewayUrl)||"http://127.0.0.1:38080").replace(/^ws(s?):\/\//,"http$1://"),_e=await(await fetch(`${J}/server-api/wechat/qrcode`)).json();C.value=_e.qrcode||null,N.value=_e.status||"logged_out",O.value=_e.userName||null,(_e.status==="logged_in"||_e.status==="logged_out")&&(clearInterval(Y),Y=null)}catch{}}const z=ae(()=>o.config||{}),ke=ae(()=>o.providers||[]),fe=ae(()=>o.providerSupport||{}),Ce=ae(()=>o.models||{}),Ne=ae(()=>Array.isArray(ke.value)?ke.value:[]),ie=ae(()=>{const v=Ce.value[E.value];return Array.isArray(v)?v.map(I=>typeof I=="string"?{id:I,name:I}:{id:I.id,name:I.name||I.id}):[]}),ee=ae(()=>{const v=p.value;if(!v||typeof v!="object")return[];const I=["local","ollama"];return Object.keys(v).filter(J=>{var _e;const le=v[J];return le?I.includes(J)?!!((_e=le.baseUrl)!=null&&_e.trim()):typeof le.apiKey=="string"&&le.apiKey.trim()!=="":!1})}),be=ae(()=>{var I;const v=(I=z.value)==null?void 0:I.configuredModels;return Array.isArray(v)?v:[]}),Ue=ae(()=>{var _e,Fe,Ze;const v=be.value,I=(_e=z.value)==null?void 0:_e.defaultModelItemCode;if(I){const at=v.findIndex(rt=>rt.modelItemCode===I);if(at>=0)return at}const J=(Fe=z.value)==null?void 0:Fe.defaultProvider,le=(Ze=z.value)==null?void 0:Ze.defaultModel;return!J||!le?-1:v.findIndex(at=>at.provider===J&&at.modelId===le)}),Qe=ae(()=>{const v=fe.value;return ee.value.filter(I=>{var le;const J=(le=v[I])==null?void 0:le.models;return Array.isArray(J)&&J.some(_e=>{var Fe;return(Fe=_e.types)==null?void 0:Fe.includes("embedding")})})}),ct=ae(()=>{const v=Z.value.embeddingProvider;if(!v)return[];const I=fe.value[v];return I!=null&&I.models?I.models.filter(J=>{var le;return(le=J.types)==null?void 0:le.includes("embedding")}):[]}),St=ae(()=>be.value.filter(I=>I.type==="embedding")),At=ae(()=>k.value.provider==="openai-custom"),dn=ae(()=>{const v=k.value.provider,I=k.value.type;if(!v||!I||v==="openai-custom")return[];const J=`${v}:${I}`,le=o.models[J]||Ce.value[J];return Array.isArray(le)?le.map(_e=>typeof _e=="string"?{id:_e,name:_e}:{id:_e.id,name:_e.name||_e.id}):[]}),bt=ae(()=>{const v=(k.value.customModelId||"").trim();return v||(At.value,(k.value.modelId||"").trim())}),It=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.feishu)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),jt=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.dingtalk)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),fn=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.telegram)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),ue=ae(()=>{var le,_e;const v=(((_e=(le=Se.value)==null?void 0:le.wechat)==null?void 0:_e.defaultAgentId)||"").trim()||"default",I=[{id:"default",name:"default"},..._.value];return!I.some(Fe=>Fe.id===v)&&v?[...I,{id:v,name:v}]:I}),ge=((ba=window.electronAPI)==null?void 0:ba.platform)||"web",Je=D(""),Rt=D("Unknown"),kt=ae(()=>ge!=="web"?Je.value||"v0.0.0":"v1.0.1"),xn=ae({get:()=>t.locale,set:v=>t.setLocale(v)}),Ht=v=>{o.setTheme(v)},So=()=>{var v,I,J,le;try{const _e=o.config||{},Fe=_e.defaultAgentId??"default",Ze=_e.memory||{};c.value={..._e,defaultAgentId:Fe,loginPassword:"",memory:{...Ze}},u.value=((le=(J=(I=(v=_e==null?void 0:_e.tools)==null?void 0:v.webSearch)==null?void 0:I.providers)==null?void 0:J.brave)==null?void 0:le.apiKey)??""}catch(_e){console.warn("[Settings] loadAgentConfig error",_e),c.value={loginPassword:"",memory:{}}}},Kt=async()=>{var v;try{const I=await Xt.listAgents(),J=((v=I==null?void 0:I.data)==null?void 0:v.data)??(I==null?void 0:I.data);_.value=Array.isArray(J)?J:[]}catch(I){console.warn("[Settings] loadAgentList error",I),_.value=[]}},lr=ae(()=>{var le;const v=((le=c.value)==null?void 0:le.defaultAgentId)??"default",I=[{id:"default",name:"default"},..._.value];return!I.some(_e=>_e.id===v)&&v&&v!=="default"?[...I,{id:v,name:v}]:I}),cr=async()=>{var rt,ft,To,yn,Pn;const v={...c.value};v.loginPassword===""&&delete v.loginPassword;const I=v.defaultAgentId??"default",le=(o.config||{}).tools||{},_e=(u.value||"").trim(),Fe={...le,webSearch:{...le.webSearch||{},providers:{...((rt=le.webSearch)==null?void 0:rt.providers)||{},brave:_e?{apiKey:_e}:void 0}}};await o.updateConfig({...v,defaultAgentId:I,tools:Fe});const Ze=o.config||{},at=Ze.memory||{};c.value={...Ze,defaultAgentId:Ze.defaultAgentId??"default",loginPassword:"",memory:{...at}},u.value=((Pn=(yn=(To=(ft=Ze==null?void 0:Ze.tools)==null?void 0:ft.webSearch)==null?void 0:To.providers)==null?void 0:yn.brave)==null?void 0:Pn.apiKey)??"",alert(l("common.saved"))},dr=()=>{a.logout()},K=()=>{So()};function pe(v){return v?v<1024*1024?(v/1024).toFixed(1)+" KB":v<1024*1024*1024?(v/(1024*1024)).toFixed(1)+" MB":(v/(1024*1024*1024)).toFixed(2)+" GB":"0 B"}async function Me(){var v,I;ve.value=!0;try{const[J,le]=await Promise.all([oo.list(),oo.getRecommendedWithStatus()]);Ee.value=((v=J.data)==null?void 0:v.data)??[],we.value=((I=le.data)==null?void 0:I.data)??[]}catch(J){console.warn("[Settings] refreshLocalModels error",J),Ee.value=[],we.value=[]}finally{ve.value=!1}}async function He(){await Me(),await Qt()}function Ye(v){if(!(v!=null&&v.status))return!1;const I=v.status;return I==="准备下载..."||I==="解析模型地址..."||I==="下载中"}async function $e(v,I=!1){try{await oo.startDownload(v,I),Re.value={...Re.value,[v]:{status:"准备下载..."}},vt()}catch(J){console.warn("[Settings] startDownload error",J)}}async function Pe(v){try{await oo.cancelDownload(v),Re.value={...Re.value,[v]:{status:"已取消"}},setTimeout(()=>{const I={...Re.value};delete I[v],Re.value=I},2e3)}catch(I){console.warn("[Settings] cancelDownload error",I)}}function vt(){Ie||(Ie=setInterval(async()=>{var J,le,_e;const v=Object.keys(Re.value);if(!v.length){clearInterval(Ie),Ie=null;return}let I=!1;for(const Fe of v)try{const at=(J=(await oo.getProgress(Fe)).data)==null?void 0:J.data;if(at){Re.value={...Re.value,[Fe]:at};const rt=((le=at.status)==null?void 0:le.startsWith("完成"))||((_e=at.status)==null?void 0:_e.startsWith("失败"))||at.status==="已取消";rt||(I=!0),rt&&(await Me(),setTimeout(()=>{const ft={...Re.value};delete ft[Fe],Re.value=ft},3e3))}else{const rt={...Re.value};delete rt[Fe],Re.value=rt,await Me()}}catch{}I||(clearInterval(Ie),Ie=null)},1500))}async function en(v){var I,J;if(window.confirm(l("settings.localModelsDeleteConfirm")))try{await oo.delete(v),await Me()}catch(le){alert(((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("settings.localModelsDeleteFailed"))}}const et=ae(()=>{const v=Ee.value;return v.length?v.map(I=>({id:I.filename,name:I.displayName||I.filename})):[{id:"local-llm",name:l("settings.localModelLlmPlaceholder")},{id:"local-embedding",name:l("settings.localModelEmbeddingPlaceholder")}]}),tn=ae(()=>(Ee.value||[]).filter(v=>(v.inferredType||v.type)==="llm")),_n=ae(()=>(Ee.value||[]).filter(v=>(v.inferredType||v.type)==="embedding"));async function Qt(){var v;Ge.value=!0;try{const I=await oo.getStatus();xe.value=((v=I.data)==null?void 0:v.data)??{available:!1}}catch(I){xe.value={available:!1,error:(I==null?void 0:I.message)||String(I)}}finally{Ge.value=!1}}async function bo(){var v,I,J,le,_e,Fe;W.value=!0;try{const Ze=await oo.start({llmModelUri:me.value||void 0,embeddingModelUri:F.value||void 0}),at=Ze==null?void 0:Ze.data;at&&at.success===!1&&((v=at.data)!=null&&v.error)&&alert(at.data.error),await Qt()}catch(Ze){const at=((J=(I=Ze.response)==null?void 0:I.data)==null?void 0:J.message)??((Fe=(_e=(le=Ze.response)==null?void 0:le.data)==null?void 0:_e.data)==null?void 0:Fe.error)??Ze.message??l("settings.localLlmStartFailed");alert(at)}finally{W.value=!1}}function Cn(){const v=z.value||{},I=v.rag,J=I==null?void 0:I.qdrant;let le=(I!=null&&I.embeddingModelItemCode&&typeof I.embeddingModelItemCode=="string"?I.embeddingModelItemCode:"").trim();const _e=((I==null?void 0:I.embeddingProvider)||"").trim(),Fe=((I==null?void 0:I.embeddingModel)||"").trim();if(!le&&_e&&Fe&&Array.isArray(v.configuredModels)){const Ze=v.configuredModels.find(at=>at.type==="embedding"&&at.provider===_e&&at.modelId===Fe);Ze&&(le=Ze.modelItemCode||`${Ze.provider}:${Ze.modelId}`)}Z.value={embeddingSource:(I==null?void 0:I.embeddingSource)==="local"?"local":"online",embeddingProvider:_e,embeddingModel:Fe,embeddingModelItemCode:le,localModelPath:(I!=null&&I.localModelPath&&typeof I.localModelPath=="string"?I.localModelPath:"").trim(),vectorStore:(I==null?void 0:I.vectorStore)==="qdrant"?"qdrant":"local",qdrant:{url:(J!=null&&J.url&&typeof J.url=="string"?J.url:"").trim(),apiKey:(J!=null&&J.apiKey&&typeof J.apiKey=="string"?J.apiKey:"").trim(),collection:(J!=null&&J.collection&&typeof J.collection=="string"?J.collection:"").trim()}}}function xt(){Z.value.embeddingModel=""}async function Mt(){var ft,To,yn;const v=Z.value,I=v.embeddingSource==="local"?"local":"online",J=v.vectorStore==="qdrant"?"qdrant":"local";let le=(v.embeddingModelItemCode||"").trim(),_e=(v.embeddingProvider||"").trim(),Fe=(v.embeddingModel||"").trim();const Ze=(v.localModelPath||"").trim(),at=(((ft=v.qdrant)==null?void 0:ft.url)||"").trim();if(I==="online"&&le){const eo=be.value.find(Ko=>(Ko.modelItemCode||Ko.provider+":"+Ko.modelId)===le);eo&&(_e=eo.provider,Fe=eo.modelId,eo.modelItemCode&&(le=eo.modelItemCode))}const rt={embeddingSource:I,vectorStore:J,...I==="local"?{localModelPath:Ze||void 0}:{embeddingModelItemCode:le||void 0,embeddingProvider:_e||void 0,embeddingModel:Fe||void 0},...J==="qdrant"&&at?{qdrant:{url:at,apiKey:(((To=v.qdrant)==null?void 0:To.apiKey)||"").trim()||void 0,collection:(((yn=v.qdrant)==null?void 0:yn.collection)||"").trim()||void 0}}:{qdrant:void 0}};await o.updateConfig({rag:rt}),alert(l("common.saved"))}function Xe(){try{const v=z.value||{},I=v.providers&&typeof v.providers=="object"?v.providers:{},J={};for(const[rt,ft]of Object.entries(I))rt&&typeof rt=="string"&&(J[rt]={apiKey:ft&&typeof ft.apiKey=="string"?ft.apiKey:"",baseUrl:ft&&typeof ft.baseUrl=="string"?ft.baseUrl:"",alias:ft&&typeof ft.alias=="string"?ft.alias:""});p.value=J;const le=v.defaultProvider&&typeof v.defaultProvider=="string"?v.defaultProvider:"deepseek",_e=v.defaultModel&&typeof v.defaultModel=="string"?v.defaultModel:"deepseek-chat",Fe=Object.keys(J).filter(rt=>(J[rt].apiKey||"").trim()!=="");E.value=Fe.includes(le)?le:Fe[0]||"deepseek",S.value=_e;const at=(Array.isArray(v.configuredModels)?v.configuredModels:[]).find(rt=>rt.provider===le&&rt.modelId===_e);qo(E.value).catch(rt=>console.warn("[Settings] ensureModelsLoaded",rt))}catch(v){console.error("[Settings] initModelConfigTab error",v),p.value={},E.value="deepseek",S.value="deepseek-chat"}}async function qo(v){if(!(!v||typeof v!="string")&&!(o.models&&o.models[v]))try{await o.loadModels(v)}catch(I){console.warn("[Settings] loadModels failed",v,I)}}function pa(v){qo(v).catch(()=>{})}function ho(v,I){const J=fe.value[v];if(!(J!=null&&J.models))return I||"—";const le=J.models.find(_e=>_e.id===I);return le?le.name||le.id:I}function Vo(v){var J;const I=(J=v.alias)==null?void 0:J.trim();return I||ho(v.provider,v.modelId)}function jn(v){var _e,Fe,Ze,at,rt,ft;const I=(at=(Ze=(Fe=(_e=z.value)==null?void 0:_e.providers)==null?void 0:Fe[v])==null?void 0:Ze.alias)==null?void 0:at.trim();if(I)return I;const J=(ft=(rt=p.value[v])==null?void 0:rt.alias)==null?void 0:ft.trim();if(J)return J;const le=fe.value[v];return(le==null?void 0:le.name)||v}function ga(v,I){const J=I.map(_e=>Vo(_e));if(!J.includes(v))return v;let le=2;for(;J.includes(`${v} (${le})`);)le++;return`${v} (${le})`}function fa(v,I){const le=ee.value.filter(Fe=>Fe!==I).map(Fe=>jn(Fe));if(!le.includes(v))return v;let _e=2;for(;le.includes(`${v} (${_e})`);)_e++;return`${v} (${_e})`}function _r(){y.value=-1,k.value={provider:ee.value[0]||"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192},k.value.provider==="local"?Me().catch(()=>{}):k.value.provider&&o.loadModels(k.value.provider,k.value.type).catch(()=>{}),b.value=!0}function ur(v){const J=be.value[v];if(!J)return;y.value=v;const le=J.cost&&typeof J.cost=="object"?J.cost:w();k.value={provider:J.provider,type:J.type||"llm",modelId:J.modelId,customModelId:"",alias:(J.alias||"").trim()||"",reasoning:!!J.reasoning,cost:{input:Number(le.input)||0,output:Number(le.output)||0,cacheRead:Number(le.cacheRead)||0,cacheWrite:Number(le.cacheWrite)||0},contextWindow:Math.max(0,Math.floor(Number(J.contextWindow)))||64e3,maxTokens:Math.max(0,Math.floor(Number(J.maxTokens)))||8192},o.loadModels(J.provider,J.type||"llm").catch(()=>{}),b.value=!0}function Ea(){b.value=!1,y.value=-1,k.value={provider:"",type:"llm",modelId:"",customModelId:"",alias:"",reasoning:!1,cost:w(),contextWindow:64e3,maxTokens:8192}}function zo(){const{provider:v,type:I}=k.value;k.value.modelId="",k.value.customModelId="",v==="local"?Me().catch(()=>{}):v&&I&&o.loadModels(v,I).catch(()=>{})}function mr(v,I){return`${v}_${I}`.replace(/[^a-zA-Z0-9_-]/g,"_")}async function Ln(){var eo,Ko,X_,Z_;const{provider:v,type:I}=k.value,J=bt.value;if(!v||!J)return;const le=(k.value.alias||"").trim()||ho(v,J),_e=be.value,Fe=y.value>=0,Ze=Fe?_e.filter((lh,Ds)=>Ds!==y.value):_e,at=ga(le,Ze),rt=k.value.cost||{},ft=Fe?_e[y.value]:null,To=ft&&ft.modelItemCode?ft.modelItemCode:mr(v,J),yn={provider:v,modelId:J,type:I,alias:at,modelItemCode:To,reasoning:!!k.value.reasoning,cost:{input:Number(rt.input)||0,output:Number(rt.output)||0,cacheRead:Number(rt.cacheRead)||0,cacheWrite:Number(rt.cacheWrite)||0},contextWindow:Math.max(0,Math.floor(Number(k.value.contextWindow))||64e3),maxTokens:Math.max(0,Math.floor(Number(k.value.maxTokens))||8192)};let Pn;Fe?(Pn=_e.map((Ds,ch)=>ch===y.value?yn:Ds),((eo=_e[y.value])==null?void 0:eo.provider)===((Ko=z.value)==null?void 0:Ko.defaultProvider)&&((X_=_e[y.value])==null?void 0:X_.modelId)===((Z_=z.value)==null?void 0:Z_.defaultModel)?await o.updateConfig({configuredModels:Pn,defaultProvider:v,defaultModel:J,defaultModelItemCode:yn.modelItemCode}):await o.updateConfig({configuredModels:Pn})):(Pn=[..._e,yn],await o.updateConfig({configuredModels:Pn}),_e.length===0&&await o.updateConfig({defaultProvider:v,defaultModel:J,defaultModelItemCode:yn.modelItemCode})),Ea()}function nn(v){window.confirm(l("settings.confirmRemoveModel"))&&G_(v)}function G_(v){const I=be.value.filter((_e,Fe)=>Fe!==v);if(!I.length){o.updateConfig({configuredModels:[],defaultProvider:"deepseek",defaultModel:"deepseek-chat",defaultModelItemCode:void 0});return}const J=be.value[v],le=J.provider===z.value.defaultProvider&&J.modelId===z.value.defaultModel;if(o.updateConfig({configuredModels:I}),le&&I.length){const _e=I[0];o.updateConfig({defaultProvider:_e.provider,defaultModel:_e.modelId,defaultModelItemCode:_e.modelItemCode||void 0})}}function Y_(v){var _e,Fe,Ze;const I=(_e=z.value)==null?void 0:_e.defaultModelItemCode;if(I)return v.modelItemCode===I;const J=(Fe=z.value)==null?void 0:Fe.defaultProvider,le=(Ze=z.value)==null?void 0:Ze.defaultModel;return J===v.provider&&le===v.modelId}function H_(v){o.updateConfig({defaultProvider:v.provider,defaultModel:v.modelId,defaultModelItemCode:v.modelItemCode||void 0})}async function Sa(){const v=p.value,I={};for(const[J,le]of Object.entries(v))J&&(I[J]={apiKey:le.apiKey,baseUrl:le.baseUrl,alias:le.alias??""});await o.updateConfig({providers:I}),alert(l("common.saved"))}function q_(){T.value={provider:"",alias:"",apiKey:"",baseUrl:""},A.value=!0}function V_(){const v=T.value.provider,I=fe.value[v];T.value.alias=v?(I==null?void 0:I.name)||v:"",(I==null?void 0:I.baseUrl)!=null&&String(I.baseUrl).trim()!==""?T.value.baseUrl=String(I.baseUrl).trim():T.value.baseUrl=""}function z_(){var Ze;const{provider:v,alias:I,apiKey:J,baseUrl:le}=T.value;if(!v||!(J&&J.trim()))return;const _e=(I||"").trim()||((Ze=fe.value[v])==null?void 0:Ze.name)||v,Fe=fa(_e,v);p.value={...p.value,[v]:{apiKey:J.trim(),baseUrl:(le||"").trim(),alias:Fe}},Sa().then(()=>{A.value=!1,T.value={provider:"",alias:"",apiKey:"",baseUrl:""}}).catch(()=>{})}function W_(v){if(!v)return;h.value===v&&(h.value=null);const I={...p.value};delete I[v],p.value=I,Sa().catch(()=>{})}function K_(v){var le;h.value=v;const I=p.value[v],J=((le=fe.value[v])==null?void 0:le.baseUrl)!=null&&String(fe.value[v].baseUrl).trim()!==""?String(fe.value[v].baseUrl).trim():"";I&&(!I.baseUrl||!String(I.baseUrl).trim())&&J&&(p.value={...p.value,[v]:{...I,baseUrl:J}})}function Q_(){var J,le;const v=h.value;if(!v)return;const I=(le=(J=z.value)==null?void 0:J.providers)==null?void 0:le[v];I&&(p.value={...p.value,[v]:{apiKey:I.apiKey??"",baseUrl:I.baseUrl??"",alias:I.alias??""}}),h.value=null}async function $_(){var I,J;const v=h.value;if(v){const le=((J=(I=p.value[v])==null?void 0:I.alias)==null?void 0:J.trim())||jn(v),_e=fa(le,v);p.value={...p.value,[v]:{...p.value[v],alias:_e}}}await Sa(),h.value=null}async function vs(){const v=E.value,I=S.value;if(!ee.value.includes(v)){alert(l("settings.noConfiguredProvider"));return}const le=be.value.find(_e=>_e.provider===v&&_e.modelId===I);await o.updateConfig({defaultProvider:v,defaultModel:I,defaultModelItemCode:(le==null?void 0:le.modelItemCode)||void 0}),alert(l("common.saved"))}async function Wo(){var v;X.value=!0,R.value="";try{const I=await Xo.list();B.value=((v=I.data)==null?void 0:v.data)??[]}catch{B.value=[]}finally{X.value=!1}}function Cs(){se.value={username:"",password:""},R.value="",x.value=!0}function ys(v){ne.value={id:v.id,username:v.username,password:""},R.value="",U.value=!0}function Rs(v){Te.value=v,G.value={password:""},R.value="",re.value=!0}function Ns(v){H.value=v,R.value=""}function Os(){he.value={password:"",confirm:""},R.value="",oe.value=!0}async function pr(){var le,_e;const v=(he.value.password||"").trim(),I=(he.value.confirm||"").trim();if(!v){R.value=l("settings.passwordRequired");return}if(v!==I){R.value=l("settings.passwordMismatch");return}const J=a.currentUser;if(J){P.value=!0,R.value="";try{await Xo.update(J.id,{password:v}),oe.value=!1,he.value={password:"",confirm:""}}catch(Fe){R.value=((_e=(le=Fe.response)==null?void 0:le.data)==null?void 0:_e.message)??Fe.message??l("login.invalidCredentials")}finally{P.value=!1}}}async function gr(){var J,le;const v=(se.value.username||"").trim(),I=(se.value.password||"").trim();if(!v){R.value=l("settings.usernameRequired");return}if(!I){R.value=l("settings.passwordRequired");return}P.value=!0,R.value="";try{await Xo.create(v,I),x.value=!1,await Wo()}catch(_e){R.value=((le=(J=_e.response)==null?void 0:J.data)==null?void 0:le.message)??_e.message??l("login.invalidCredentials")}finally{P.value=!1}}async function fr(){var I,J;const v=(ne.value.username||"").trim();if(!v){R.value=l("settings.usernameRequired");return}P.value=!0,R.value="";try{const le={username:v};ne.value.password.trim()&&(le.password=ne.value.password.trim()),await Xo.update(ne.value.id,le),U.value=!1,await Wo()}catch(le){R.value=((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("login.invalidCredentials")}finally{P.value=!1}}async function As(){var I,J;const v=(G.value.password||"").trim();if(!v){R.value=l("settings.passwordRequired");return}P.value=!0,R.value="";try{await Xo.update(Te.value.id,{password:v}),re.value=!1,Te.value=null}catch(le){R.value=((J=(I=le.response)==null?void 0:I.data)==null?void 0:J.message)??le.message??l("login.invalidCredentials")}finally{P.value=!1}}async function Is(){var v,I;if(H.value){P.value=!0,R.value="";try{await Xo.delete(H.value.id),H.value=null,await Wo()}catch(J){R.value=((I=(v=J.response)==null?void 0:v.data)==null?void 0:I.message)??J.message??l("login.invalidCredentials")}finally{P.value=!1}}}return Yt(async()=>{typeof window<"u"&&window.electronAPI&&(window.electronAPI.getAppVersion&&window.electronAPI.getAppVersion().then(v=>{Je.value=v?`v${v}`:""}),window.electronAPI.getElectronVersion&&window.electronAPI.getElectronVersion().then(v=>{Rt.value=v||"Unknown"}));try{r.value=i(),await o.loadProviderSupport(),await o.loadConfig(),So(),Xe(),Me().catch(()=>{}),r.value==="agent"&&await Kt(),r.value==="knowledge"&&Cn()}catch(v){console.error("[Settings] onMounted error",v)}}),{t:l,showRagTab:YW,activeTab:r,config:z,localConfig:c,providers:ke,providerSupport:fe,models:Ce,defaultModelOptions:ie,configuredModelsList:be,defaultModelIndex:Ue,isOpenAiCustomProvider:At,addModelOptions:dn,effectiveAddModelId:bt,localModelsList:Ee,localModelsLoading:ve,recommendedModels:we,downloadProgressMap:Re,localModelsForSelect:et,installedLlmsForStart:tn,installedEmbeddingsForStart:_n,localLlmStatus:xe,localLlmStatusLoading:Ge,localLlmStartLoading:W,localLlmStartSelectedLlm:me,localLlmStartSelectedEmb:F,fetchLocalLlmStatus:Qt,startLocalLlmService:bo,formatFileSize:pe,refreshLocalModels:Me,initLocalModelsTab:He,isDownloading:Ye,startDownloadModel:$e,cancelDownloadModel:Pe,confirmDeleteLocalModel:en,channelFeishuDefaultAgentOptions:It,channelDingtalkDefaultAgentOptions:jt,channelTelegramDefaultAgentOptions:fn,channelWechatDefaultAgentOptions:ue,wechatQrCode:C,wechatStatus:N,wechatUserName:O,wechatQrLoading:M,wechatStatusClass:q,wechatStatusText:$,fetchWechatQrCode:ce,getModelDisplayName:ho,getModelAlias:Vo,getProviderDisplayName:jn,isDefaultModel:Y_,openAddModelModal:_r,openEditModel:ur,closeAddModelModal:Ea,editingModelIndex:y,onAddModelProviderOrTypeChange:zo,submitAddModel:Ln,confirmRemoveConfiguredModel:nn,setDefaultFromConfigured:H_,openAddProviderModal:q_,onAddProviderSelect:V_,submitAddProvider:z_,showAddProviderModal:A,showAddModelModal:b,addModelForm:k,modelConfigSubTab:m,localProviderConfig:p,localDefaultProvider:E,localDefaultModel:S,addProviderForm:T,supportedProviders:Ne,configuredProviders:ee,localRag:Z,providersWithEmbedding:Qe,knowledgeEmbeddingModels:ct,configuredEmbeddingModels:St,initKnowledgeTab:Cn,onKnowledgeProviderChange:xt,saveKnowledgeConfig:Mt,removeProvider:W_,editingProvider:h,startEditProvider:K_,cancelEditProvider:Q_,saveEditProvider:$_,ensureModelsLoaded:qo,onDefaultProviderChange:pa,saveProviderConfig:Sa,setDefaultModel:vs,currentLocale:xn,platform:ge,appVersion:Je,displayVersion:kt,electronVersion:Rt,setTheme:Ht,defaultAgentOptions:lr,saveAgentConfig:cr,resetAgentConfig:K,logout:dr,authStore:a,usersList:B,usersLoading:X,showAddUserModal:x,showEditUserModal:U,showChangePasswordModal:re,showChangeCurrentPasswordModal:oe,addUserForm:se,editUserForm:ne,changePasswordUser:Te,changePasswordForm:G,currentUserPasswordForm:he,deleteUserTarget:H,userFormError:R,userFormSaving:P,openAddUser:Cs,openEditUser:ys,openChangePassword:Rs,openChangeCurrentUserPassword:Os,confirmDeleteUser:Ns,submitAddUser:gr,submitEditUser:fr,submitChangePassword:As,submitChangeCurrentUserPassword:pr,submitDeleteUser:Is,localChannels:Se}}},qW={class:"settings-view"},VW={class:"settings-layout card-glass"},zW={class:"settings-sidebar"},WW={class:"settings-content"},KW={class:"tab-content"},QW={class:"tab-title"},$W={class:"settings-group"},XW={class:"form-group"},ZW={class:"settings-group"},JW={class:"form-group"},jW={class:"theme-options"},e3={class:"tab-content"},t3={class:"tab-title"},n3={class:"settings-group"},o3={class:"form-group"},a3=["value"],r3={class:"form-hint"},s3={class:"settings-group"},i3={class:"form-group"},l3={class:"form-hint"},c3={class:"settings-group"},d3={class:"form-hint"},_3={class:"form-group"},u3={value:""},m3=["value"],p3={key:0,class:"form-hint form-hint-warn"},g3={class:"settings-group"},f3={class:"form-hint settings-group-desc"},E3={class:"form-group"},S3=["placeholder"],b3={class:"form-hint"},h3={class:"actions"},T3={class:"tab-content"},v3={class:"tab-title"},C3={class:"model-config-tabs"},y3={class:"settings-group provider-config-group"},R3={class:"settings-hint-block"},N3={class:"settings-hint-text"},O3={class:"provider-configured-list"},A3={class:"subsection-header"},I3={class:"subsection-title"},D3={key:0,class:"form-hint empty-hint"},w3={key:1,class:"provider-cards"},k3={class:"provider-card-header"},M3={class:"provider-name"},x3={class:"provider-badge"},L3=["onClick"],P3=["onClick"],U3={key:0,class:"provider-card-body"},F3={class:"form-group"},B3=["onUpdate:modelValue","placeholder"],G3={class:"form-group"},Y3=["onUpdate:modelValue","placeholder"],H3={class:"form-group"},q3=["onUpdate:modelValue","placeholder"],V3={class:"provider-card-actions"},z3={key:1,class:"provider-readonly"},W3={class:"provider-readonly-line"},K3={class:"label"},Q3={key:0,class:"provider-readonly-line"},$3={class:"label"},X3={key:2,class:"form-hint action-hint"},Z3={class:"modal-content card-glass modal-add-provider"},J3={class:"modal-header"},j3={class:"modal-body"},eK={class:"form-group"},tK=["value"],nK={class:"form-group"},oK=["placeholder"],aK={class:"form-group"},rK=["placeholder"],sK={class:"form-group"},iK=["placeholder"],lK={class:"modal-footer-actions"},cK=["disabled"],dK={class:"settings-group model-config-group"},_K={class:"settings-hint-block"},uK={class:"settings-hint-text"},mK={key:0,class:"form-hint form-hint-warn model-config-warn"},pK={class:"subsection-header"},gK={class:"subsection-title"},fK={key:0,class:"form-hint empty-hint"},EK={key:1,class:"configured-models-list"},SK={class:"model-row-provider"},bK={class:"model-row-name"},hK={class:"model-row-type"},TK={key:0,class:"model-row-default-badge"},vK={class:"model-row-actions"},CK=["onClick"],yK=["onClick"],RK=["onClick"],NK={class:"settings-group local-models-group"},OK={class:"settings-hint-block"},AK={class:"settings-hint-text"},IK={class:"subsection-header"},DK={class:"subsection-title"},wK={class:"settings-hint-block local-llm-context-limit-hint"},kK={class:"settings-hint-text"},MK={class:"local-llm-service-block"},xK={key:0,class:"form-hint"},LK={key:0},PK={key:1},UK={key:2},FK={class:"local-llm-start-form"},BK={class:"form-group"},GK={value:""},YK=["value"],HK={class:"form-group"},qK={value:""},VK=["value"],zK=["disabled"],WK={class:"subsection-header"},KK={class:"subsection-title"},QK={class:"local-models-download-list"},$K={class:"local-model-rec-info"},XK={class:"local-model-rec-name"},ZK={class:"local-model-rec-type model-row-type"},JK={class:"local-model-rec-size"},jK={class:"local-model-rec-actions"},eQ={key:0,class:"local-model-rec-badge downloaded"},tQ={class:"download-progress-text"},nQ=["onClick"],oQ=["onClick"],aQ=["onClick"],rQ={class:"subsection-header",style:{"margin-top":"20px"}},sQ={class:"subsection-title"},iQ={key:1,class:"loading-state"},lQ={key:2,class:"form-hint empty-hint"},cQ={key:3,class:"local-models-installed-list"},dQ={class:"local-model-info"},_Q=["title"],uQ={class:"local-model-type model-row-type"},mQ={class:"local-model-size"},pQ={class:"local-model-actions"},gQ=["onClick"],fQ={class:"modal-content card-glass"},EQ={class:"modal-header"},SQ={class:"modal-body"},bQ={class:"form-group"},hQ=["disabled"],TQ=["value"],vQ={class:"form-group"},CQ=["disabled"],yQ={value:"llm"},RQ={value:"embedding"},NQ={value:"image"},OQ={class:"form-group"},AQ=["placeholder"],IQ=["disabled"],DQ=["value"],wQ={class:"form-hint form-hint-inline"},kQ=["disabled"],MQ=["value"],xQ={class:"form-hint form-hint-inline"},LQ=["placeholder","disabled"],PQ={class:"form-group"},UQ=["placeholder"],FQ={class:"form-group"},BQ={class:"checkbox-label"},GQ={key:0,class:"form-group cost-fields"},YQ={class:"cost-row"},HQ={class:"cost-item"},qQ={class:"cost-item"},VQ={class:"cost-item"},zQ={class:"cost-item"},WQ={class:"modal-footer-actions"},KQ=["disabled"],QQ={class:"tab-content"},$Q={class:"tab-title"},XQ={class:"settings-hint-block"},ZQ={class:"settings-hint-text"},JQ={class:"settings-group"},jQ={class:"form-hint"},e4={class:"form-group knowledge-radio-group"},t4={class:"radio-label"},n4={class:"radio-label"},o4={key:0,class:"form-group"},a4=["placeholder"],r4={key:1,class:"form-group"},s4={value:""},i4=["value"],l4={key:0,class:"form-hint form-hint-warn"},c4={class:"settings-group"},d4={class:"form-hint"},_4={class:"form-group knowledge-radio-group"},u4={class:"radio-label"},m4={class:"radio-label"},p4={class:"form-group"},g4=["placeholder"],f4={class:"form-group"},E4=["placeholder"],S4={class:"form-group"},b4=["placeholder"],h4={class:"actions"},T4={class:"tab-content"},v4={class:"tab-title"},C4={key:0,class:"settings-group"},y4={class:"form-hint"},R4={class:"settings-group"},N4={class:"users-toolbar"},O4={class:"form-hint"},A4={key:0,class:"loading-state"},I4={key:1,class:"empty-state"},D4={key:2,class:"users-table-wrap"},w4={class:"users-table"},k4={class:"th-actions"},M4={class:"username-cell"},x4={class:"td-actions"},L4=["onClick"],P4=["onClick"],U4=["onClick"],F4={class:"tab-content"},B4={class:"tab-content"},G4={class:"tab-title"},Y4={class:"about-card"},H4={class:"version"},q4={class:"about-details"},V4={class:"detail-row"},z4={key:0,class:"detail-row"},W4={class:"modal-content card-glass"},K4={class:"modal-header"},Q4={class:"modal-body"},$4={class:"form-group"},X4=["placeholder"],Z4={class:"form-group"},J4=["placeholder"],j4={key:0,class:"form-error"},e9={class:"modal-footer-actions"},t9=["disabled"],n9={class:"modal-content card-glass"},o9={class:"modal-header"},a9={class:"modal-body"},r9={class:"form-group"},s9={class:"form-group"},i9=["placeholder"],l9={key:0,class:"form-error"},c9={class:"modal-footer-actions"},d9=["disabled"],_9={class:"modal-content card-glass"},u9={class:"modal-header"},m9={class:"modal-body"},p9={class:"form-group"},g9={key:0,class:"form-error"},f9={class:"modal-footer-actions"},E9=["disabled"],S9={class:"modal-content card-glass"},b9={class:"modal-header"},h9={class:"modal-body"},T9={class:"form-group"},v9=["placeholder"],C9={class:"form-group"},y9=["placeholder"],R9={key:0,class:"form-error"},N9={class:"modal-footer-actions"},O9=["disabled"],A9={class:"modal-content card-glass delete-confirm-modal"},I9={class:"modal-header"},D9={class:"modal-body"},w9={class:"delete-target-name"},k9={class:"modal-footer-actions"},M9=["disabled"];function x9(n,e,o,t,a,l){const i=gt("SettingsSkills");return g(),f("div",qW,[s("div",VW,[s("div",zW,[s("div",{class:Oe(["nav-item",{active:t.activeTab==="general"}]),onClick:e[0]||(e[0]=r=>t.activeTab="general")},[e[96]||(e[96]=s("span",{class:"nav-icon"},"⚙️",-1)),ze(" "+d(t.t("settings.general")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="agent"}]),onClick:e[1]||(e[1]=r=>t.activeTab="agent")},[e[97]||(e[97]=s("span",{class:"nav-icon"},"🤖",-1)),ze(" "+d(t.t("settings.agentGlobal")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="models"}]),onClick:e[2]||(e[2]=r=>t.activeTab="models")},[e[98]||(e[98]=s("span",{class:"nav-icon"},"🧠",-1)),ze(" "+d(t.t("settings.modelsNav")),1)],2),V("",!0),s("div",{class:Oe(["nav-item",{active:t.activeTab==="users"}]),onClick:e[4]||(e[4]=r=>t.activeTab="users")},[e[100]||(e[100]=s("span",{class:"nav-icon"},"👤",-1)),ze(" "+d(t.t("settings.users")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="skills"}]),onClick:e[5]||(e[5]=r=>t.activeTab="skills")},[e[101]||(e[101]=s("span",{class:"nav-icon"},"🎯",-1)),ze(" "+d(t.t("nav.skills")),1)],2),s("div",{class:Oe(["nav-item",{active:t.activeTab==="about"}]),onClick:e[6]||(e[6]=r=>t.activeTab="about")},[e[102]||(e[102]=s("span",{class:"nav-icon"},"ℹ️",-1)),ze(" "+d(t.t("settings.about")),1)],2)]),s("div",WW,[Q(s("div",KW,[s("h2",QW,d(t.t("settings.general")),1),s("div",$W,[s("h3",null,d(t.t("settings.language")),1),s("div",XW,[s("label",null,d(t.t("settings.languageDescription")),1),Q(s("select",{"onUpdate:modelValue":e[7]||(e[7]=r=>t.currentLocale=r),class:"input select-input"},[...e[103]||(e[103]=[s("option",{value:"zh"},"简体中文",-1),s("option",{value:"en"},"English (US)",-1)])],512),[[dt,t.currentLocale]])])]),s("div",ZW,[s("h3",null,d(t.t("settings.theme")),1),s("div",JW,[s("label",null,d(t.t("settings.themeDescription")),1),s("div",jW,[s("button",{class:Oe(["theme-card",{active:t.config.theme==="light"}]),onClick:e[8]||(e[8]=r=>t.setTheme("light"))},[e[104]||(e[104]=s("div",{class:"theme-preview light"},null,-1)),s("span",null,d(t.t("settings.light")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="dark"}]),onClick:e[9]||(e[9]=r=>t.setTheme("dark"))},[e[105]||(e[105]=s("div",{class:"theme-preview dark"},null,-1)),s("span",null,d(t.t("settings.dark")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="cosmic"}]),onClick:e[10]||(e[10]=r=>t.setTheme("cosmic"))},[e[106]||(e[106]=s("div",{class:"theme-preview cosmic"},null,-1)),s("span",null,d(t.t("settings.cosmic")),1)],2),s("button",{class:Oe(["theme-card",{active:t.config.theme==="neon"}]),onClick:e[11]||(e[11]=r=>t.setTheme("neon"))},[e[107]||(e[107]=s("div",{class:"theme-preview neon"},null,-1)),s("span",null,d(t.t("settings.neon")),1)],2)])])])],512),[[ht,t.activeTab==="general"]]),Q(s("div",e3,[s("h2",t3,d(t.t("settings.agentGlobal")),1),s("div",n3,[s("h3",null,d(t.t("settings.workspace")),1),s("div",o3,[s("label",null,d(t.t("settings.defaultAgent")),1),Q(s("select",{"onUpdate:modelValue":e[12]||(e[12]=r=>t.localConfig.defaultAgentId=r),class:"input select-input"},[(g(!0),f(te,null,Le(t.defaultAgentOptions,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name||r.id),9,a3))),128))],512),[[dt,t.localConfig.defaultAgentId]]),s("p",r3,d(t.t("settings.defaultAgentHint")),1)])]),s("div",s3,[s("h3",null,d(t.t("settings.sessionsLimit")),1),s("div",i3,[s("label",null,d(t.t("settings.maxAgentSessions")),1),Q(s("input",{"onUpdate:modelValue":e[13]||(e[13]=r=>t.localConfig.maxAgentSessions=r),type:"number",min:"1",max:"50",class:"input"},null,512),[[ye,t.localConfig.maxAgentSessions,void 0,{number:!0}]]),s("p",l3,d(t.t("settings.maxAgentSessionsHint")),1)])]),s("div",c3,[s("h3",null,d(t.t("settings.memoryConfig")),1),s("p",d3,d(t.t("settings.memoryConfigHint")),1),s("div",_3,[s("label",null,d(t.t("settings.embeddingModel")),1),Q(s("select",{"onUpdate:modelValue":e[14]||(e[14]=r=>t.localConfig.memory.embeddingModelItemCode=r),class:"input select-input"},[s("option",u3,d(t.t("settings.memoryEmbeddingNone")),1),(g(!0),f(te,null,Le(t.configuredEmbeddingModels,r=>(g(),f("option",{key:r.modelItemCode,value:r.modelItemCode},d(r.alias||r.modelId)+" ("+d(r.provider)+") ",9,m3))),128))],512),[[dt,t.localConfig.memory.embeddingModelItemCode]]),t.configuredEmbeddingModels.length===0?(g(),f("p",p3,d(t.t("settings.memoryNoEmbeddingModels")),1)):V("",!0)])]),s("div",g3,[s("h3",null,d(t.t("settings.webSearchTitle")),1),s("p",f3,d(t.t("settings.webSearchDesc")),1),s("div",E3,[s("label",null,d(t.t("settings.webSearchBraveApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[15]||(e[15]=r=>n.webSearchBraveApiKey=r),type:"password",class:"input",placeholder:t.t("settings.webSearchBraveApiKeyPlaceholder"),autocomplete:"off"},null,8,S3),[[ye,n.webSearchBraveApiKey]]),s("p",b3,d(t.t("settings.webSearchBraveApiKeyHint")),1)])]),s("div",h3,[s("button",{onClick:e[16]||(e[16]=(...r)=>t.saveAgentConfig&&t.saveAgentConfig(...r)),class:"btn-primary"},d(t.t("common.save")),1),s("button",{onClick:e[17]||(e[17]=(...r)=>t.resetAgentConfig&&t.resetAgentConfig(...r)),class:"btn-secondary"},d(t.t("common.reset")),1)])],512),[[ht,t.activeTab==="agent"]]),Q(s("div",T3,[s("h2",v3,d(t.t("settings.modelsNav")),1),s("div",C3,[s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="provider"}]),onClick:e[18]||(e[18]=r=>t.modelConfigSubTab="provider")},d(t.t("settings.providerConfig")),3),s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="default"}]),onClick:e[19]||(e[19]=r=>{t.modelConfigSubTab="default",t.onDefaultProviderChange(t.config.defaultProvider||t.localDefaultProvider)})},d(t.t("settings.defaultModelConfig")),3),s("button",{class:Oe(["model-config-tab",{active:t.modelConfigSubTab==="local"}]),onClick:e[20]||(e[20]=r=>{t.modelConfigSubTab="local",t.initLocalModelsTab()})},d(t.t("settings.localModelsNav")),3)]),Q(s("div",y3,[s("div",R3,[e[108]||(e[108]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",N3,d(t.t("settings.providerConfigHint")),1)]),s("div",O3,[s("div",A3,[s("h4",I3,d(t.t("settings.configuredProvidersList")),1),s("button",{type:"button",class:"btn-primary btn-add-provider",onClick:e[21]||(e[21]=(...r)=>t.openAddProviderModal&&t.openAddProviderModal(...r))},d(t.t("settings.addProvider")),1)]),t.configuredProviders.length===0?(g(),f("p",D3,d(t.t("settings.noConfiguredProviderList")),1)):(g(),f("div",w3,[(g(!0),f(te,null,Le(t.configuredProviders,r=>(g(),f("div",{key:r,class:Oe(["provider-card",{"is-editing":t.editingProvider===r}])},[s("div",k3,[s("span",M3,d(t.getProviderDisplayName(r)),1),s("span",x3,d(t.t("settings.apiKeyConfigured")),1),t.editingProvider!==r?(g(),f(te,{key:0},[s("button",{type:"button",class:"link-btn",onClick:c=>t.startEditProvider(r)},d(t.t("common.edit")),9,L3),s("button",{type:"button",class:"link-btn danger provider-delete",onClick:c=>t.removeProvider(r)},d(t.t("common.delete")),9,P3)],64)):V("",!0)]),t.editingProvider===r?(g(),f("div",U3,[s("div",F3,[s("label",null,d(t.t("settings.providerAlias")),1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].alias=c,type:"text",class:"input",placeholder:t.t("settings.providerAliasPlaceholder")},null,8,B3),[[ye,t.localProviderConfig[r].alias]])]),s("div",G3,[s("label",null,d(t.t("settings.apiKey")),1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].apiKey=c,type:"password",class:"input",placeholder:t.t("settings.apiKeyPlaceholder"),autocomplete:"off"},null,8,Y3),[[ye,t.localProviderConfig[r].apiKey]])]),s("div",H3,[s("label",null,d(t.t("settings.baseUrl"))+" ("+d(t.t("settings.optional"))+")",1),Q(s("input",{"onUpdate:modelValue":c=>t.localProviderConfig[r].baseUrl=c,type:"text",class:"input",placeholder:t.t("settings.baseUrlPlaceholder")},null,8,q3),[[ye,t.localProviderConfig[r].baseUrl]])]),s("div",V3,[s("button",{type:"button",class:"btn-secondary",onClick:e[22]||(e[22]=(...c)=>t.cancelEditProvider&&t.cancelEditProvider(...c))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",onClick:e[23]||(e[23]=(...c)=>t.saveEditProvider&&t.saveEditProvider(...c))},d(t.t("common.save")),1)])])):(g(),f("div",z3,[s("p",W3,[s("span",K3,d(t.t("settings.apiKey"))+":",1),e[109]||(e[109]=ze(" ••••••••",-1))]),t.localProviderConfig[r].baseUrl?(g(),f("p",Q3,[s("span",$3,d(t.t("settings.baseUrl"))+":",1),ze(" "+d(t.localProviderConfig[r].baseUrl),1)])):V("",!0)]))],2))),128))])),t.configuredProviders.length>0&&!t.editingProvider?(g(),f("p",X3,d(t.t("settings.editProviderHint")),1)):V("",!0)])],512),[[ht,t.modelConfigSubTab==="provider"]]),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.showAddProviderModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[32]||(e[32]=Be(c=>t.showAddProviderModal=!1,["self"]))},[s("div",Z3,[s("div",J3,[s("h2",null,d(t.t("settings.addProviderTitle")),1),s("button",{type:"button",class:"close-btn",onClick:e[24]||(e[24]=c=>t.showAddProviderModal=!1)},"✕")]),s("div",j3,[s("div",eK,[s("label",null,d(t.t("settings.selectProvider")),1),Q(s("select",{"onUpdate:modelValue":e[25]||(e[25]=c=>t.addProviderForm.provider=c),class:"input select-input",onChange:e[26]||(e[26]=(...c)=>t.onAddProviderSelect&&t.onAddProviderSelect(...c))},[e[110]||(e[110]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.supportedProviders,c=>{var u;return g(),f("option",{key:c,value:c},d(((u=t.providerSupport[c])==null?void 0:u.name)||c),9,tK)}),128))],544),[[dt,t.addProviderForm.provider]])]),s("div",nK,[s("label",null,d(t.t("settings.providerAlias")),1),Q(s("input",{"onUpdate:modelValue":e[27]||(e[27]=c=>t.addProviderForm.alias=c),type:"text",class:"input",placeholder:t.t("settings.providerAliasPlaceholder")},null,8,oK),[[ye,t.addProviderForm.alias]])]),s("div",aK,[s("label",null,d(t.t("settings.apiKey")),1),Q(s("input",{"onUpdate:modelValue":e[28]||(e[28]=c=>t.addProviderForm.apiKey=c),type:"password",class:"input",placeholder:t.t("settings.apiKeyPlaceholder"),autocomplete:"off"},null,8,rK),[[ye,t.addProviderForm.apiKey]])]),s("div",sK,[s("label",null,d(t.t("settings.baseUrl"))+" ("+d(t.t("settings.optional"))+")",1),Q(s("input",{"onUpdate:modelValue":e[29]||(e[29]=c=>t.addProviderForm.baseUrl=c),type:"text",class:"input",placeholder:t.t("settings.baseUrlPlaceholder")},null,8,iK),[[ye,t.addProviderForm.baseUrl]])]),s("div",lK,[s("button",{type:"button",class:"btn-secondary",onClick:e[30]||(e[30]=c=>t.showAddProviderModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.addProviderForm.provider||!((r=t.addProviderForm.apiKey)!=null&&r.trim()),onClick:e[31]||(e[31]=(...c)=>t.submitAddProvider&&t.submitAddProvider(...c))},d(t.t("common.save")),9,cK)])])])])):V("",!0)]}),_:1}),Q(s("div",dK,[s("div",_K,[e[111]||(e[111]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",uK,d(t.t("settings.defaultModelHint")),1)]),t.configuredProviders.length===0?(g(),f("p",mK,d(t.t("settings.noConfiguredProvider")),1)):(g(),f(te,{key:1},[s("div",pK,[s("h4",gK,d(t.t("settings.configuredModelsList")),1),s("button",{type:"button",class:"btn-primary btn-add-provider",onClick:e[33]||(e[33]=(...r)=>t.openAddModelModal&&t.openAddModelModal(...r))},d(t.t("settings.addModel")),1)]),t.configuredModelsList.length===0?(g(),f("p",fK,d(t.t("settings.noConfiguredModels")),1)):(g(),f("div",EK,[(g(!0),f(te,null,Le(t.configuredModelsList,(r,c)=>(g(),f("div",{key:c,class:"configured-model-row"},[s("span",SK,d(t.getProviderDisplayName(r.provider)),1),e[112]||(e[112]=s("span",{class:"model-row-sep"},"/",-1)),s("span",bK,d(t.getModelAlias(r)),1),s("span",hK,d(r.type),1),t.defaultModelIndex===c?(g(),f("span",TK,d(t.t("settings.defaultModelLabel")),1)):V("",!0),s("span",vK,[s("button",{type:"button",class:"link-btn",onClick:u=>t.openEditModel(c)},d(t.t("common.edit")),9,CK),t.defaultModelIndex!==c?(g(),f("button",{key:0,type:"button",class:"link-btn",onClick:u=>t.setDefaultFromConfigured(r)},d(t.t("settings.setAsDefaultModel")),9,yK)):V("",!0),s("button",{type:"button",class:"link-btn danger",onClick:u=>t.confirmRemoveConfiguredModel(c)},d(t.t("common.delete")),9,RK)])]))),128))]))],64))],512),[[ht,t.modelConfigSubTab==="default"]]),Q(s("div",NK,[s("div",OK,[e[113]||(e[113]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",AK,d(t.t("settings.localModelsHint")),1)]),s("div",IK,[s("h4",DK,d(t.t("settings.localLlmServiceTitle")),1)]),s("div",wK,[e[114]||(e[114]=s("span",{class:"settings-hint-icon","aria-hidden":"true"},"⚠️",-1)),s("p",kK,d(t.t("settings.localLlmContextLimitHint")),1)]),s("div",MK,[t.localLlmStatusLoading?(g(),f("p",xK,d(t.t("common.loading")),1)):(g(),f(te,{key:1},[s("p",{class:Oe(["local-llm-status",{"status-ok":t.localLlmStatus.available,"status-fail":!t.localLlmStatus.available&&t.localLlmStatus.error}])},[t.localLlmStatus.available?(g(),f("span",LK,d(t.t("settings.localLlmStatusReady")),1)):t.localLlmStatus.error?(g(),f("span",PK,d(t.t("settings.localLlmStatusUnavailable"))+":"+d(t.localLlmStatus.error),1)):(g(),f("span",UK,d(t.t("settings.localLlmStatusUnavailable")),1))],2),s("div",FK,[s("div",BK,[s("label",null,d(t.t("settings.localLlmSelectLlm")),1),Q(s("select",{"onUpdate:modelValue":e[34]||(e[34]=r=>t.localLlmStartSelectedLlm=r),class:"input select-input"},[s("option",GK,"— "+d(t.t("settings.localLlmUseDefault")),1),(g(!0),f(te,null,Le(t.installedLlmsForStart,r=>(g(),f("option",{key:r.filename,value:r.filename},d(r.displayName||r.filename),9,YK))),128))],512),[[dt,t.localLlmStartSelectedLlm]])]),s("div",HK,[s("label",null,d(t.t("settings.localLlmSelectEmbedding")),1),Q(s("select",{"onUpdate:modelValue":e[35]||(e[35]=r=>t.localLlmStartSelectedEmb=r),class:"input select-input"},[s("option",qK,"— "+d(t.t("settings.localLlmUseDefault")),1),(g(!0),f(te,null,Le(t.installedEmbeddingsForStart,r=>(g(),f("option",{key:r.filename,value:r.filename},d(r.displayName||r.filename),9,VK))),128))],512),[[dt,t.localLlmStartSelectedEmb]])]),s("button",{type:"button",class:"btn-primary",disabled:t.localLlmStartLoading,onClick:e[36]||(e[36]=(...r)=>t.startLocalLlmService&&t.startLocalLlmService(...r))},d(t.localLlmStartLoading?t.t("common.loading"):t.localLlmStatus.available?t.t("settings.localLlmRestartBtn"):t.t("settings.localLlmStartBtn")),9,zK)])],64))]),t.recommendedModels.length>0?(g(),f(te,{key:0},[s("div",WK,[s("h4",KK,d(t.t("settings.localModelsDownload")),1)]),s("div",QK,[(g(!0),f(te,null,Le(t.recommendedModels,r=>(g(),f("div",{key:r.id,class:"local-model-rec-row"},[s("div",$K,[s("span",XK,d(r.name),1),s("span",ZK,d(r.type),1),s("span",JK,d(r.sizeHint),1)]),s("div",jK,[r.isInstalled?(g(),f("span",eQ,d(t.t("settings.localModelsAlreadyDownloaded")),1)):t.downloadProgressMap[r.id]?(g(),f(te,{key:1},[s("span",tQ,[ze(d(t.downloadProgressMap[r.id].status)+" ",1),t.downloadProgressMap[r.id].percent!=null?(g(),f(te,{key:0},[ze(" ("+d(t.downloadProgressMap[r.id].percent)+"%) ",1)],64)):V("",!0)]),t.isDownloading(t.downloadProgressMap[r.id])?(g(),f("button",{key:0,type:"button",class:"btn-secondary btn-sm",onClick:c=>t.cancelDownloadModel(r.id)},d(t.t("settings.localModelsCancelDownload")),9,nQ)):V("",!0)],64)):(g(),f(te,{key:2},[s("button",{type:"button",class:"btn-primary btn-sm",onClick:c=>t.startDownloadModel(r.id,!0)},d(t.t("settings.localModelsDownloadChina")),9,oQ),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:c=>t.startDownloadModel(r.id,!1)},d(t.t("settings.localModelsDownloadGlobal")),9,aQ)],64))])]))),128))])],64)):V("",!0),s("div",rQ,[s("h4",sQ,d(t.t("settings.localModelsInstalled")),1),s("button",{type:"button",class:"btn-secondary btn-sm",onClick:e[37]||(e[37]=(...r)=>t.refreshLocalModels&&t.refreshLocalModels(...r))},d(t.t("common.refresh")),1)]),t.localModelsLoading?(g(),f("div",iQ,d(t.t("common.loading")),1)):t.localModelsList.length===0?(g(),f("p",lQ,d(t.t("settings.localModelsEmpty")),1)):(g(),f("div",cQ,[(g(!0),f(te,null,Le(t.localModelsList,r=>(g(),f("div",{key:r.filename,class:"local-model-row"},[s("div",dQ,[s("span",{class:"local-model-filename",title:r.filename},d(r.displayName||r.filename),9,_Q),s("span",uQ,d(r.inferredType),1),s("span",mQ,d(t.formatFileSize(r.size)),1)]),s("div",pQ,[s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDeleteLocalModel(r.filename)},d(t.t("common.delete")),9,gQ)])]))),128))]))],512),[[ht,t.modelConfigSubTab==="local"]])],512),[[ht,t.activeTab==="models"]]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showAddModelModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[55]||(e[55]=Be((...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r),["self"]))},[s("div",fQ,[s("div",EQ,[s("h2",null,d(t.editingModelIndex>=0?t.t("settings.editModelTitle"):t.t("settings.addModelTitle")),1),s("button",{type:"button",class:"close-btn",onClick:e[38]||(e[38]=(...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r))},"✕")]),s("div",SQ,[s("div",bQ,[s("label",null,d(t.t("settings.selectProvider")),1),Q(s("select",{"onUpdate:modelValue":e[39]||(e[39]=r=>t.addModelForm.provider=r),class:"input select-input",disabled:t.editingModelIndex>=0,onChange:e[40]||(e[40]=(...r)=>t.onAddModelProviderOrTypeChange&&t.onAddModelProviderOrTypeChange(...r))},[e[115]||(e[115]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.configuredProviders,r=>(g(),f("option",{key:r,value:r},d(t.getProviderDisplayName(r)),9,TQ))),128))],40,hQ),[[dt,t.addModelForm.provider]])]),s("div",vQ,[s("label",null,d(t.t("settings.modelType")),1),Q(s("select",{"onUpdate:modelValue":e[41]||(e[41]=r=>t.addModelForm.type=r),class:"input select-input",disabled:t.editingModelIndex>=0,onChange:e[42]||(e[42]=(...r)=>t.onAddModelProviderOrTypeChange&&t.onAddModelProviderOrTypeChange(...r))},[s("option",yQ,d(t.t("settings.modelTypeLlm")),1),s("option",RQ,d(t.t("settings.modelTypeEmbedding")),1),s("option",NQ,d(t.t("settings.modelTypeImage")),1)],40,CQ),[[dt,t.addModelForm.type]])]),s("div",OQ,[s("label",null,d(t.t("settings.model")),1),t.isOpenAiCustomProvider?Q((g(),f("input",{key:0,"onUpdate:modelValue":e[43]||(e[43]=r=>t.addModelForm.modelId=r),type:"text",class:"input",placeholder:t.t("settings.modelIdCustomPlaceholder")},null,8,AQ)),[[ye,t.addModelForm.modelId]]):t.addModelForm.provider==="local"?(g(),f(te,{key:1},[Q(s("select",{"onUpdate:modelValue":e[44]||(e[44]=r=>t.addModelForm.modelId=r),class:"input select-input",disabled:t.editingModelIndex>=0},[e[116]||(e[116]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.localModelsForSelect,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name),9,DQ))),128))],8,IQ),[[dt,t.addModelForm.modelId]]),s("p",wQ,d(t.t("settings.localModelSelectHint")),1)],64)):(g(),f(te,{key:2},[Q(s("select",{"onUpdate:modelValue":e[45]||(e[45]=r=>t.addModelForm.modelId=r),class:"input select-input",disabled:!t.addModelForm.provider||t.editingModelIndex>=0},[e[117]||(e[117]=s("option",{value:""},"—",-1)),(g(!0),f(te,null,Le(t.addModelOptions,r=>(g(),f("option",{key:r.id,value:r.id},d(r.name),9,MQ))),128))],8,kQ),[[dt,t.addModelForm.modelId]]),s("p",xQ,d(t.t("settings.modelCustomHint")),1),Q(s("input",{"onUpdate:modelValue":e[46]||(e[46]=r=>t.addModelForm.customModelId=r),type:"text",class:"input model-custom-input",placeholder:t.t("settings.modelCustomPlaceholder"),disabled:!t.addModelForm.provider||t.editingModelIndex>=0},null,8,LQ),[[ye,t.addModelForm.customModelId]])],64))]),s("div",PQ,[s("label",null,d(t.t("settings.modelAlias")),1),Q(s("input",{"onUpdate:modelValue":e[47]||(e[47]=r=>t.addModelForm.alias=r),type:"text",class:"input",placeholder:t.t("settings.modelAliasPlaceholder")},null,8,UQ),[[ye,t.addModelForm.alias]])]),s("div",FQ,[s("label",BQ,[Q(s("input",{"onUpdate:modelValue":e[48]||(e[48]=r=>t.addModelForm.reasoning=r),type:"checkbox"},null,512),[[zn,t.addModelForm.reasoning]]),ze(" "+d(t.t("settings.modelReasoning")),1)])]),t.addModelForm.cost?(g(),f("div",GQ,[s("label",null,d(t.t("settings.modelCost")),1),s("div",YQ,[s("span",HQ,[Q(s("input",{"onUpdate:modelValue":e[49]||(e[49]=r=>t.addModelForm.cost.input=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.input,void 0,{number:!0}]]),e[118]||(e[118]=ze(" input",-1))]),s("span",qQ,[Q(s("input",{"onUpdate:modelValue":e[50]||(e[50]=r=>t.addModelForm.cost.output=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.output,void 0,{number:!0}]]),e[119]||(e[119]=ze(" output",-1))]),s("span",VQ,[Q(s("input",{"onUpdate:modelValue":e[51]||(e[51]=r=>t.addModelForm.cost.cacheRead=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.cacheRead,void 0,{number:!0}]]),e[120]||(e[120]=ze(" cacheRead",-1))]),s("span",zQ,[Q(s("input",{"onUpdate:modelValue":e[52]||(e[52]=r=>t.addModelForm.cost.cacheWrite=r),type:"number",min:"0",step:"0.0001",class:"input cost-input"},null,512),[[ye,t.addModelForm.cost.cacheWrite,void 0,{number:!0}]]),e[121]||(e[121]=ze(" cacheWrite",-1))])])])):V("",!0),s("div",WQ,[s("button",{type:"button",class:"btn-secondary",onClick:e[53]||(e[53]=(...r)=>t.closeAddModelModal&&t.closeAddModelModal(...r))},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:!t.addModelForm.provider||!t.effectiveAddModelId,onClick:e[54]||(e[54]=(...r)=>t.submitAddModel&&t.submitAddModel(...r))},d(t.t("common.save")),9,KQ)])])])])):V("",!0)]),_:1}),Q(s("div",QQ,[s("h2",$Q,d(t.t("settings.knowledgeTitle")),1),s("div",XQ,[e[122]||(e[122]=s("span",{class:"settings-hint-icon"},"ℹ️",-1)),s("p",ZQ,d(t.t("settings.knowledgeHint")),1)]),s("div",JQ,[s("h3",null,d(t.t("settings.vectorModelSection")),1),s("p",jQ,d(t.t("settings.vectorModelSectionHint")),1),s("div",e4,[s("label",t4,[Q(s("input",{"onUpdate:modelValue":e[56]||(e[56]=r=>t.localRag.embeddingSource=r),type:"radio",value:"local"},null,512),[[_o,t.localRag.embeddingSource]]),ze(" "+d(t.t("settings.vectorModelLocal")),1)]),s("label",n4,[Q(s("input",{"onUpdate:modelValue":e[57]||(e[57]=r=>t.localRag.embeddingSource=r),type:"radio",value:"online"},null,512),[[_o,t.localRag.embeddingSource]]),ze(" "+d(t.t("settings.vectorModelOnline")),1)])]),t.localRag.embeddingSource==="local"?(g(),f("div",o4,[s("label",null,d(t.t("settings.localModelPath")),1),Q(s("input",{"onUpdate:modelValue":e[58]||(e[58]=r=>t.localRag.localModelPath=r),type:"text",class:"input",placeholder:t.t("settings.localModelPathPlaceholder")},null,8,a4),[[ye,t.localRag.localModelPath]])])):V("",!0),t.localRag.embeddingSource==="online"?(g(),f("div",r4,[s("label",null,d(t.t("settings.embeddingModelItemCode")),1),Q(s("select",{"onUpdate:modelValue":e[59]||(e[59]=r=>t.localRag.embeddingModelItemCode=r),class:"input select-input"},[s("option",s4,"— "+d(t.t("settings.optional"))+" —",1),(g(!0),f(te,null,Le(t.configuredEmbeddingModels,r=>(g(),f("option",{key:r.modelItemCode||r.provider+":"+r.modelId,value:r.modelItemCode||r.provider+":"+r.modelId},d(t.getProviderDisplayName(r.provider))+" / "+d(t.getModelAlias(r)),9,i4))),128))],512),[[dt,t.localRag.embeddingModelItemCode]]),t.configuredEmbeddingModels.length===0?(g(),f("p",l4,d(t.t("settings.noConfiguredEmbeddingModels")),1)):V("",!0)])):V("",!0)]),s("div",c4,[s("h3",null,d(t.t("settings.vectorStoreSection")),1),s("p",d4,d(t.t("settings.vectorStoreSectionHint")),1),s("div",_4,[s("label",u4,[Q(s("input",{"onUpdate:modelValue":e[60]||(e[60]=r=>t.localRag.vectorStore=r),type:"radio",value:"local"},null,512),[[_o,t.localRag.vectorStore]]),ze(" "+d(t.t("settings.vectorStoreLocal")),1)]),s("label",m4,[Q(s("input",{"onUpdate:modelValue":e[61]||(e[61]=r=>t.localRag.vectorStore=r),type:"radio",value:"qdrant"},null,512),[[_o,t.localRag.vectorStore]]),ze(" "+d(t.t("settings.vectorStoreQdrant")),1)])]),t.localRag.vectorStore==="qdrant"?(g(),f(te,{key:0},[s("div",p4,[s("label",null,d(t.t("settings.qdrantUrl")),1),Q(s("input",{"onUpdate:modelValue":e[62]||(e[62]=r=>t.localRag.qdrant.url=r),type:"text",class:"input",placeholder:t.t("settings.qdrantUrlPlaceholder")},null,8,g4),[[ye,t.localRag.qdrant.url]])]),s("div",f4,[s("label",null,d(t.t("settings.qdrantApiKey")),1),Q(s("input",{"onUpdate:modelValue":e[63]||(e[63]=r=>t.localRag.qdrant.apiKey=r),type:"password",class:"input",placeholder:t.t("settings.qdrantApiKeyPlaceholder"),autocomplete:"off"},null,8,E4),[[ye,t.localRag.qdrant.apiKey]])]),s("div",S4,[s("label",null,d(t.t("settings.qdrantCollection")),1),Q(s("input",{"onUpdate:modelValue":e[64]||(e[64]=r=>t.localRag.qdrant.collection=r),type:"text",class:"input",placeholder:t.t("settings.qdrantCollectionPlaceholder")},null,8,b4),[[ye,t.localRag.qdrant.collection]])])],64)):V("",!0)]),s("div",h4,[s("button",{onClick:e[65]||(e[65]=(...r)=>t.saveKnowledgeConfig&&t.saveKnowledgeConfig(...r)),class:"btn-primary"},d(t.t("common.save")),1)])],512),[[ht,t.showRagTab&&t.activeTab==="knowledge"]]),Q(s("div",T4,[s("h2",v4,d(t.t("settings.users")),1),t.authStore.currentUser?(g(),f("div",C4,[s("h3",null,d(t.t("settings.changeCurrentPassword")),1),s("p",y4,[ze(d(t.t("settings.changeCurrentPasswordHint"))+" ",1),s("strong",null,d(t.authStore.currentUser.username),1),ze("。"+d(t.t("settings.changeCurrentPasswordHintAfter")),1)]),s("button",{type:"button",class:"btn-secondary",onClick:e[66]||(e[66]=(...r)=>t.openChangeCurrentUserPassword&&t.openChangeCurrentUserPassword(...r))},d(t.t("settings.changeCurrentPassword")),1)])):V("",!0),s("div",R4,[s("h3",null,d(t.t("settings.userList")),1),s("div",N4,[s("p",O4,d(t.t("settings.usersHint")),1),s("button",{type:"button",class:"btn-primary",onClick:e[67]||(e[67]=(...r)=>t.openAddUser&&t.openAddUser(...r))},d(t.t("settings.addUser")),1)]),t.usersLoading?(g(),f("div",A4,d(t.t("common.loading")),1)):t.usersList.length===0?(g(),f("div",I4,[s("p",null,d(t.t("settings.noUsers")),1),s("button",{type:"button",class:"btn-primary",onClick:e[68]||(e[68]=(...r)=>t.openAddUser&&t.openAddUser(...r))},d(t.t("settings.addUser")),1)])):(g(),f("div",D4,[s("table",w4,[s("thead",null,[s("tr",null,[s("th",null,d(t.t("settings.loginUsername")),1),s("th",k4,d(t.t("common.details")),1)])]),s("tbody",null,[(g(!0),f(te,null,Le(t.usersList,r=>(g(),f("tr",{key:r.id},[s("td",null,[s("span",M4,d(r.username),1)]),s("td",x4,[s("button",{type:"button",class:"link-btn",onClick:c=>t.openChangePassword(r)},d(t.t("settings.changePassword")),9,L4),e[123]||(e[123]=s("span",{class:"sep"},"|",-1)),s("button",{type:"button",class:"link-btn",onClick:c=>t.openEditUser(r)},d(t.t("settings.editUser")),9,P4),e[124]||(e[124]=s("span",{class:"sep"},"|",-1)),s("button",{type:"button",class:"link-btn danger",onClick:c=>t.confirmDeleteUser(r)},d(t.t("common.delete")),9,U4)])]))),128))])])]))])],512),[[ht,t.activeTab==="users"]]),Q(s("div",F4,[Ae(i)],512),[[ht,t.activeTab==="skills"]]),Q(s("div",B4,[s("h2",G4,d(t.t("settings.about")),1),s("div",Y4,[e[126]||(e[126]=s("div",{class:"logo-large"},[s("img",{src:h_,alt:"OpenClawX"})],-1)),e[127]||(e[127]=s("h3",null,"OpenClawX Desktop",-1)),s("p",H4,d(t.displayVersion),1),s("div",q4,[s("div",V4,[s("span",null,d(t.t("settings.platform"))+":",1),s("span",null,d(t.platform),1)]),t.platform!=="web"?(g(),f("div",z4,[e[125]||(e[125]=s("span",null,"Electron:",-1)),s("span",null,d(t.electronVersion),1)])):V("",!0)])])],512),[[ht,t.activeTab==="about"]])])]),Ae(je,{name:"fade"},{default:Ve(()=>[t.showAddUserModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[74]||(e[74]=Be(r=>t.showAddUserModal=!1,["self"]))},[s("div",W4,[s("div",K4,[s("h2",null,d(t.t("settings.addUser")),1),s("button",{type:"button",class:"close-btn",onClick:e[69]||(e[69]=r=>t.showAddUserModal=!1)},"✕")]),s("div",Q4,[s("div",$4,[s("label",null,d(t.t("settings.loginUsername")),1),Q(s("input",{"onUpdate:modelValue":e[70]||(e[70]=r=>t.addUserForm.username=r),type:"text",class:"input",placeholder:t.t("settings.loginUsernamePlaceholder")},null,8,X4),[[ye,t.addUserForm.username]])]),s("div",Z4,[s("label",null,d(t.t("settings.loginPassword")),1),Q(s("input",{"onUpdate:modelValue":e[71]||(e[71]=r=>t.addUserForm.password=r),type:"password",class:"input",placeholder:t.t("settings.loginPasswordPlaceholder"),autocomplete:"new-password"},null,8,J4),[[ye,t.addUserForm.password]])]),t.userFormError?(g(),f("p",j4,d(t.userFormError),1)):V("",!0),s("div",e9,[s("button",{type:"button",class:"btn-secondary",onClick:e[72]||(e[72]=r=>t.showAddUserModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[73]||(e[73]=(...r)=>t.submitAddUser&&t.submitAddUser(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,t9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showEditUserModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[80]||(e[80]=Be(r=>t.showEditUserModal=!1,["self"]))},[s("div",n9,[s("div",o9,[s("h2",null,d(t.t("settings.editUser")),1),s("button",{type:"button",class:"close-btn",onClick:e[75]||(e[75]=r=>t.showEditUserModal=!1)},"✕")]),s("div",a9,[s("div",r9,[s("label",null,d(t.t("settings.loginUsername")),1),Q(s("input",{"onUpdate:modelValue":e[76]||(e[76]=r=>t.editUserForm.username=r),type:"text",class:"input"},null,512),[[ye,t.editUserForm.username]])]),s("div",s9,[s("label",null,d(t.t("settings.newPasswordOptional")),1),Q(s("input",{"onUpdate:modelValue":e[77]||(e[77]=r=>t.editUserForm.password=r),type:"password",class:"input",placeholder:t.t("settings.newPasswordPlaceholder"),autocomplete:"new-password"},null,8,i9),[[ye,t.editUserForm.password]])]),t.userFormError?(g(),f("p",l9,d(t.userFormError),1)):V("",!0),s("div",c9,[s("button",{type:"button",class:"btn-secondary",onClick:e[78]||(e[78]=r=>t.showEditUserModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[79]||(e[79]=(...r)=>t.submitEditUser&&t.submitEditUser(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,d9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.showChangePasswordModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[85]||(e[85]=Be(c=>t.showChangePasswordModal=!1,["self"]))},[s("div",_9,[s("div",u9,[s("h2",null,d(t.t("settings.changePassword"))+": "+d((r=t.changePasswordUser)==null?void 0:r.username),1),s("button",{type:"button",class:"close-btn",onClick:e[81]||(e[81]=c=>t.showChangePasswordModal=!1)},"✕")]),s("div",m9,[s("div",p9,[s("label",null,d(t.t("settings.newPassword")),1),Q(s("input",{"onUpdate:modelValue":e[82]||(e[82]=c=>t.changePasswordForm.password=c),type:"password",class:"input",autocomplete:"new-password"},null,512),[[ye,t.changePasswordForm.password]])]),t.userFormError?(g(),f("p",g9,d(t.userFormError),1)):V("",!0),s("div",f9,[s("button",{type:"button",class:"btn-secondary",onClick:e[83]||(e[83]=c=>t.showChangePasswordModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[84]||(e[84]=(...c)=>t.submitChangePassword&&t.submitChangePassword(...c))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,E9)])])])])):V("",!0)]}),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>[t.showChangeCurrentPasswordModal?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[91]||(e[91]=Be(r=>t.showChangeCurrentPasswordModal=!1,["self"]))},[s("div",S9,[s("div",b9,[s("h2",null,d(t.t("settings.changeCurrentPassword")),1),s("button",{type:"button",class:"close-btn",onClick:e[86]||(e[86]=r=>t.showChangeCurrentPasswordModal=!1)},"✕")]),s("div",h9,[s("div",T9,[s("label",null,d(t.t("settings.newPassword")),1),Q(s("input",{"onUpdate:modelValue":e[87]||(e[87]=r=>t.currentUserPasswordForm.password=r),type:"password",class:"input",placeholder:t.t("settings.newPassword"),autocomplete:"new-password"},null,8,v9),[[ye,t.currentUserPasswordForm.password]])]),s("div",C9,[s("label",null,d(t.t("settings.confirmNewPassword")),1),Q(s("input",{"onUpdate:modelValue":e[88]||(e[88]=r=>t.currentUserPasswordForm.confirm=r),type:"password",class:"input",placeholder:t.t("settings.confirmNewPassword"),autocomplete:"new-password"},null,8,y9),[[ye,t.currentUserPasswordForm.confirm]])]),t.userFormError?(g(),f("p",R9,d(t.userFormError),1)):V("",!0),s("div",N9,[s("button",{type:"button",class:"btn-secondary",onClick:e[89]||(e[89]=r=>t.showChangeCurrentPasswordModal=!1)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-primary",disabled:t.userFormSaving,onClick:e[90]||(e[90]=(...r)=>t.submitChangeCurrentUserPassword&&t.submitChangeCurrentUserPassword(...r))},d(t.userFormSaving?t.t("common.loading"):t.t("common.save")),9,O9)])])])])):V("",!0)]),_:1}),Ae(je,{name:"fade"},{default:Ve(()=>{var r;return[t.deleteUserTarget?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[95]||(e[95]=Be(c=>t.deleteUserTarget=null,["self"]))},[s("div",A9,[s("div",I9,[s("h2",null,d(t.t("common.delete")),1),s("button",{type:"button",class:"close-btn",onClick:e[92]||(e[92]=c=>t.deleteUserTarget=null)},"✕")]),s("div",D9,[s("p",null,d(t.t("settings.deleteUserConfirm")),1),s("p",w9,d((r=t.deleteUserTarget)==null?void 0:r.username),1),s("div",k9,[s("button",{type:"button",class:"btn-secondary",onClick:e[93]||(e[93]=c=>t.deleteUserTarget=null)},d(t.t("common.close")),1),s("button",{type:"button",class:"btn-danger",disabled:t.userFormSaving,onClick:e[94]||(e[94]=(...c)=>t.submitDeleteUser&&t.submitDeleteUser(...c))},d(t.userFormSaving?t.t("common.loading"):t.t("common.delete")),9,M9)])])])])):V("",!0)]}),_:1})])}const L9=st(HW,[["render",x9],["__scopeId","data-v-0da43d33"]]),P9=["feishu","dingtalk","telegram","wechat"],U9=()=>({feishu:{enabled:!1,appId:"",appSecret:"",defaultAgentId:"default"},dingtalk:{enabled:!1,clientId:"",clientSecret:"",defaultAgentId:"default"},telegram:{enabled:!1,botToken:"",defaultAgentId:"default"},wechat:{enabled:!1,puppet:"",defaultAgentId:"default"}}),F9={name:"Channels",setup(){const{t:n}=Ot(),e=ma(),o=D(null),t=D(!0),a=D(null),l=D(null),i=D(U9()),r=D([]),c=D(!1),u=D(null),_=D("logged_out"),m=D(null),p=D(!1);let E=null;const S=ae(()=>{var H;const G=((H=o.value)==null?void 0:H.channels)||{};return P9.map(R=>{const oe=!!(G[R]||{}).enabled;let he=R,Ee="";return R==="feishu"?(he=n("settings.feishu"),Ee=n("settings.channelBriefFeishu")):R==="dingtalk"?(he=n("settings.dingtalk"),Ee=n("settings.channelBriefDingtalk")):R==="telegram"?(he=n("settings.telegram"),Ee=n("settings.channelBriefTelegram")):R==="wechat"&&(he=n("settings.wechat"),Ee=n("settings.channelBriefWechat")),{id:R,name:he,brief:Ee,enabled:oe,icon:{feishu:"📋",dingtalk:"🔔",telegram:"✈️",wechat:"💬"}[R]}})}),T=ae(()=>{if(!l.value)return"";const G=S.value.find(H=>H.id===l.value);return G?n("settings.channelConfigure")+" - "+G.name:n("settings.channelConfigure")}),h=ae(()=>{const G=r.value||[];return[...G.some(P=>(P.id||P.workspace)==="default")?[]:[{id:"default",name:"default"}],...G.map(P=>({id:P.id||P.workspace,name:P.name||P.workspace||P.id}))]}),A=ae(()=>{if(!a.value)return"";const G=a.value.status||"";return n(G==="logged_in"?"settings.channelWechatLoggedIn":G==="scanning"?"settings.channelWechatScanning":"settings.channelWechatLoggedOut")}),b=ae(()=>({"status-scanning":_.value==="scanning","status-logged-in":_.value==="logged_in","status-logged-out":_.value==="logged_out"})),y=ae(()=>_.value==="scanning"?n("settings.channelWechatScanning"):_.value==="logged_in"?n("settings.channelWechatLoggedIn"):n("settings.channelWechatLoggedOut"));async function w(){var G;t.value=!0;try{const H=await Wn.getConfig();o.value=((G=H==null?void 0:H.data)==null?void 0:G.data)??(H==null?void 0:H.data)??null}catch(H){console.error("[Channels] loadConfig failed",H),o.value=null}finally{t.value=!1}}async function k(){var G;try{const H=await Xt.listAgents(),R=((G=H==null?void 0:H.data)==null?void 0:G.data)??[];r.value=Array.isArray(R)?R:[]}catch{r.value=[]}}async function B(){try{const H=await(await fetch("/server-api/wechat/qrcode")).json().catch(()=>({}));a.value=H}catch{a.value=null}}function X(){var H;const G=((H=o.value)==null?void 0:H.gatewayUrl)||"";return G?G.replace(/^ws(s?):\/\//,"http$1://"):""}function x(G){const H=X();return H?`${H}/server-api${G}`:`/server-api${G}`}async function U(){p.value=!0;try{let G=await fetch(x("/wechat/qrcode")),H=await G.json().catch(()=>({}));!H.qrcode&&H.status!=="logged_in"&&(G=await fetch(x("/wechat/qrcode/refresh"),{method:"POST"}),H=await G.json().catch(()=>({}))),u.value=H.qrcode||null,_.value=H.status||"logged_out",m.value=H.userName||null,H.status==="scanning"&&!E&&(E=setInterval(re,3e3))}catch(G){console.error("[Channels] wechat qrcode failed",G)}finally{p.value=!1}}async function re(){try{const H=await(await fetch(x("/wechat/qrcode"))).json().catch(()=>({}));u.value=H.qrcode||null,_.value=H.status||"logged_out",m.value=H.userName||null,(H.status==="logged_in"||H.status==="logged_out")&&(clearInterval(E),E=null)}catch{}}function se(G){var P;l.value=G;const R=(((P=o.value)==null?void 0:P.channels)||{})[G]||{};G==="feishu"?i.value.feishu={enabled:!!R.enabled,appId:typeof R.appId=="string"?R.appId:"",appSecret:typeof R.appSecret=="string"?R.appSecret:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="dingtalk"?i.value.dingtalk={enabled:!!R.enabled,clientId:typeof R.clientId=="string"?R.clientId:"",clientSecret:typeof R.clientSecret=="string"?R.clientSecret:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="telegram"?i.value.telegram={enabled:!!R.enabled,botToken:typeof R.botToken=="string"?R.botToken:"",defaultAgentId:(R.defaultAgentId||"default").trim()}:G==="wechat"&&(i.value.wechat={enabled:!!R.enabled,puppet:typeof R.puppet=="string"?R.puppet:"",defaultAgentId:(R.defaultAgentId||"default").trim()},u.value=null,_.value="logged_out",m.value=null,i.value.wechat.enabled&&U()),k()}function ne(){l.value=null,E&&(clearInterval(E),E=null)}async function Te(){var H,R,P;const G=l.value;if(G){c.value=!0;try{const oe=((H=o.value)==null?void 0:H.channels)||{},he={feishu:oe.feishu||{},dingtalk:oe.dingtalk||{},telegram:oe.telegram||{},wechat:oe.wechat||{}};G==="feishu"?he.feishu={enabled:!!i.value.feishu.enabled,appId:(i.value.feishu.appId||"").trim(),appSecret:(i.value.feishu.appSecret||"").trim(),defaultAgentId:(i.value.feishu.defaultAgentId||"default").trim()}:G==="dingtalk"?he.dingtalk={enabled:!!i.value.dingtalk.enabled,clientId:(i.value.dingtalk.clientId||"").trim(),clientSecret:(i.value.dingtalk.clientSecret||"").trim(),defaultAgentId:(i.value.dingtalk.defaultAgentId||"default").trim()}:G==="telegram"?he.telegram={enabled:!!i.value.telegram.enabled,botToken:(i.value.telegram.botToken||"").trim(),defaultAgentId:(i.value.telegram.defaultAgentId||"default").trim()}:G==="wechat"&&(he.wechat={enabled:!!i.value.wechat.enabled,puppet:(i.value.wechat.puppet||"").trim()||void 0,defaultAgentId:(i.value.wechat.defaultAgentId||"default").trim()}),await e.updateConfig({channels:he}),await w(),G==="wechat"&&B(),ne(),alert(n("common.saved"))}catch(oe){console.error("[Channels] saveChannelConfig failed",oe),alert(((P=(R=oe==null?void 0:oe.response)==null?void 0:R.data)==null?void 0:P.message)||(oe==null?void 0:oe.message)||n("common.error")||"Save failed")}finally{c.value=!1}}}return Yt(async()=>{var G,H,R;await w(),(R=(H=(G=o.value)==null?void 0:G.channels)==null?void 0:H.wechat)!=null&&R.enabled&&B()}),{t:n,loading:t,channelList:S,wechatStatus:a,wechatStatusText:A,channelConfigId:l,channelForm:i,modalTitle:T,agentOptions:h,channelSaveLoading:c,wechatQrCodeModal:u,wechatModalStatus:_,wechatModalUserName:m,wechatQrLoading:p,wechatModalStatusClass:b,wechatModalStatusText:y,openChannelConfig:se,closeChannelConfig:ne,saveChannelConfig:Te,fetchWechatQrCodeModal:U}}},B9={class:"channels-view"},G9={class:"channels-header card-glass"},Y9={class:"view-title"},H9={class:"view-desc text-secondary"},q9={key:0,class:"channels-loading"},V9={key:1,class:"channels-grid"},z9={class:"channel-card-header"},W9={class:"channel-icon","aria-hidden":!0},K9={class:"channel-name"},Q9={key:0,class:"channel-status-extra"},$9={class:"channel-card-desc"},X9={class:"channel-card-actions"},Z9=["onClick"],J9={class:"modal-content card-glass channel-config-modal"},j9={class:"modal-header"},e6={class:"modal-body"},t6={class:"form-group"},n6={class:"checkbox-label"},o6={class:"form-group"},a6=["placeholder"],r6={class:"form-group"},s6=["placeholder"],i6={class:"form-group"},l6=["value"],c6={class:"form-hint"},d6={class:"form-group"},_6={class:"checkbox-label"},u6={class:"form-group"},m6=["placeholder"],p6={class:"form-group"},g6=["placeholder"],f6={class:"form-group"},E6=["value"],S6={class:"form-hint"},b6={class:"form-group"},h6={class:"checkbox-label"},T6={class:"form-group"},v6=["placeholder"],C6={class:"form-group"},y6=["value"],R6={class:"form-hint"},N6={class:"form-group"},O6={class:"checkbox-label"},A6={class:"form-group"},I6=["value"],D6={key:0,class:"form-group wechat-qrcode-section"},w6={class:"wechat-status-row"},k6={key:0,class:"wechat-username"},M6=["disabled"],x6={key:1,class:"wechat-qrcode-wrap"},L6={class:"form-hint"},P6=["src"],U6={class:"form-hint"},F6={class:"modal-footer-actions"},B6=["disabled"];function G6(n,e,o,t,a,l){return g(),f("div",B9,[s("div",G9,[s("h1",Y9,d(t.t("settings.channelsPageTitle")),1),s("p",H9,d(t.t("settings.channelsPageDesc")),1)]),t.loading?(g(),f("div",q9,[e[18]||(e[18]=s("div",{class:"spinner"},null,-1)),s("p",null,d(t.t("common.loading")),1)])):(g(),f("div",V9,[(g(!0),f(te,null,Le(t.channelList,i=>(g(),f("div",{key:i.id,class:"channel-card card-glass"},[s("div",z9,[s("span",W9,d(i.icon),1),s("span",K9,d(i.name),1),s("span",{class:Oe(["channel-status-badge",i.enabled?"status-enabled":"status-disabled"])},d(i.enabled?t.t("settings.channelStatusEnabled"):t.t("settings.channelStatusDisabled")),3),i.id==="wechat"&&i.enabled&&t.wechatStatus?(g(),f("span",Q9,d(t.wechatStatusText),1)):V("",!0)]),s("p",$9,d(i.brief),1),s("div",X9,[s("button",{type:"button",class:"btn-configure",onClick:r=>t.openChannelConfig(i.id)},d(t.t("settings.channelConfigure")),9,Z9)])]))),128))])),Ae(je,{name:"fade"},{default:Ve(()=>[t.channelConfigId?(g(),f("div",{key:0,class:"modal-backdrop",onClick:e[17]||(e[17]=Be((...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i),["self"]))},[s("div",J9,[s("div",j9,[s("h2",null,d(t.modalTitle),1),s("button",{type:"button",class:"close-btn",onClick:e[0]||(e[0]=(...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i))},"✕")]),s("div",e6,[t.channelConfigId==="feishu"?(g(),f(te,{key:0},[s("div",t6,[s("label",n6,[Q(s("input",{"onUpdate:modelValue":e[1]||(e[1]=i=>t.channelForm.feishu.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.feishu.enabled]]),ze(" "+d(t.t("settings.channelFeishuEnabled")),1)])]),s("div",o6,[s("label",null,d(t.t("settings.channelFeishuAppId")),1),Q(s("input",{"onUpdate:modelValue":e[2]||(e[2]=i=>t.channelForm.feishu.appId=i),type:"text",class:"form-input",placeholder:t.t("settings.channelFeishuAppIdPlaceholder"),autocomplete:"off"},null,8,a6),[[ye,t.channelForm.feishu.appId]])]),s("div",r6,[s("label",null,d(t.t("settings.channelFeishuAppSecret")),1),Q(s("input",{"onUpdate:modelValue":e[3]||(e[3]=i=>t.channelForm.feishu.appSecret=i),type:"password",class:"form-input",placeholder:t.t("settings.channelFeishuAppSecretPlaceholder"),autocomplete:"off"},null,8,s6),[[ye,t.channelForm.feishu.appSecret]])]),s("div",i6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[4]||(e[4]=i=>t.channelForm.feishu.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,l6))),128))],512),[[dt,t.channelForm.feishu.defaultAgentId]])]),s("p",c6,d(t.t("settings.channelFeishuHint")),1)],64)):t.channelConfigId==="dingtalk"?(g(),f(te,{key:1},[s("div",d6,[s("label",_6,[Q(s("input",{"onUpdate:modelValue":e[5]||(e[5]=i=>t.channelForm.dingtalk.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.dingtalk.enabled]]),ze(" "+d(t.t("settings.channelDingtalkEnabled")),1)])]),s("div",u6,[s("label",null,d(t.t("settings.channelDingtalkClientId")),1),Q(s("input",{"onUpdate:modelValue":e[6]||(e[6]=i=>t.channelForm.dingtalk.clientId=i),type:"text",class:"form-input",placeholder:t.t("settings.channelDingtalkClientIdPlaceholder"),autocomplete:"off"},null,8,m6),[[ye,t.channelForm.dingtalk.clientId]])]),s("div",p6,[s("label",null,d(t.t("settings.channelDingtalkClientSecret")),1),Q(s("input",{"onUpdate:modelValue":e[7]||(e[7]=i=>t.channelForm.dingtalk.clientSecret=i),type:"password",class:"form-input",placeholder:t.t("settings.channelDingtalkClientSecretPlaceholder"),autocomplete:"off"},null,8,g6),[[ye,t.channelForm.dingtalk.clientSecret]])]),s("div",f6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[8]||(e[8]=i=>t.channelForm.dingtalk.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,E6))),128))],512),[[dt,t.channelForm.dingtalk.defaultAgentId]])]),s("p",S6,d(t.t("settings.channelDingtalkHint")),1)],64)):t.channelConfigId==="telegram"?(g(),f(te,{key:2},[s("div",b6,[s("label",h6,[Q(s("input",{"onUpdate:modelValue":e[9]||(e[9]=i=>t.channelForm.telegram.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.telegram.enabled]]),ze(" "+d(t.t("settings.channelTelegramEnabled")),1)])]),s("div",T6,[s("label",null,d(t.t("settings.channelTelegramBotToken")),1),Q(s("input",{"onUpdate:modelValue":e[10]||(e[10]=i=>t.channelForm.telegram.botToken=i),type:"password",class:"form-input",placeholder:t.t("settings.channelTelegramBotTokenPlaceholder"),autocomplete:"off"},null,8,v6),[[ye,t.channelForm.telegram.botToken]])]),s("div",C6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[11]||(e[11]=i=>t.channelForm.telegram.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,y6))),128))],512),[[dt,t.channelForm.telegram.defaultAgentId]])]),s("p",R6,d(t.t("settings.channelTelegramHint")),1)],64)):t.channelConfigId==="wechat"?(g(),f(te,{key:3},[s("div",N6,[s("label",O6,[Q(s("input",{"onUpdate:modelValue":e[12]||(e[12]=i=>t.channelForm.wechat.enabled=i),type:"checkbox"},null,512),[[zn,t.channelForm.wechat.enabled]]),ze(" "+d(t.t("settings.channelWechatEnabled")),1)])]),s("div",A6,[s("label",null,d(t.t("settings.channelDefaultAgentId")),1),Q(s("select",{"onUpdate:modelValue":e[13]||(e[13]=i=>t.channelForm.wechat.defaultAgentId=i),class:"form-input"},[(g(!0),f(te,null,Le(t.agentOptions,i=>(g(),f("option",{key:i.id,value:i.id},d(i.name||i.id),9,I6))),128))],512),[[dt,t.channelForm.wechat.defaultAgentId]])]),t.channelForm.wechat.enabled?(g(),f("div",D6,[s("div",w6,[s("span",{class:Oe(["wechat-status-dot",t.wechatModalStatusClass])},null,2),s("span",null,d(t.wechatModalStatusText),1),t.wechatModalUserName?(g(),f("span",k6,"("+d(t.wechatModalUserName)+")",1)):V("",!0)]),t.wechatModalStatus!=="logged_in"?(g(),f("button",{key:0,type:"button",class:"btn-secondary",disabled:t.wechatQrLoading,onClick:e[14]||(e[14]=(...i)=>t.fetchWechatQrCodeModal&&t.fetchWechatQrCodeModal(...i))},d(t.wechatQrCodeModal?t.t("settings.channelWechatRefreshQrCode"):t.t("settings.channelWechatGetQrCode")),9,M6)):V("",!0),t.wechatQrCodeModal&&t.wechatModalStatus!=="logged_in"?(g(),f("div",x6,[s("p",L6,d(t.t("settings.channelWechatQrCodeHint")),1),s("img",{src:t.wechatQrCodeModal,alt:"WeChat QR Code",class:"wechat-qrcode-img"},null,8,P6)])):V("",!0)])):V("",!0),s("p",U6,d(t.t("settings.channelWechatHint")),1)],64)):V("",!0)]),s("div",F6,[s("button",{type:"button",class:"btn-secondary",onClick:e[15]||(e[15]=(...i)=>t.closeChannelConfig&&t.closeChannelConfig(...i))},d(t.t("common.cancel")),1),s("button",{type:"button",class:"btn-primary",disabled:t.channelSaveLoading,onClick:e[16]||(e[16]=(...i)=>t.saveChannelConfig&&t.saveChannelConfig(...i))},d(t.channelSaveLoading?t.t("common.loading"):t.t("common.save")),9,B6)])])])):V("",!0)]),_:1})])}const Y6=st(F9,[["render",G6],["__scopeId","data-v-de979e70"]]),H6=[{path:"/",name:"Root",component:SE},{path:"/dashboard",name:"Dashboard",component:pA},{path:"/chat/:sessionId?",name:"AgentChat",component:SE},{path:"/sessions",name:"Sessions",component:rP},{path:"/skills",redirect:()=>({path:"/settings",query:{tab:"skills"}})},{path:"/agents",name:"Agents",component:DG},{path:"/agents/:id",name:"AgentDetail",component:TV},{path:"/tasks",name:"Tasks",component:Vz},{path:"/workspace",name:"Workspace",component:T1},{path:"/work-results",name:"WorkResults",component:j0},{path:"/settings",name:"Settings",component:L9},{path:"/channels",name:"Channels",component:Y6}],q6=zC({history:CC(),routes:H6}),V6=WC(),B_=Uv(pO);B_.use(q6);B_.use(V6);async function z6(){var n;if(typeof((n=window.electronAPI)==null?void 0:n.getGatewayPort)=="function")try{const e=await window.electronAPI.getGatewayPort(),o=typeof e=="number"?e:parseInt(e,10);Number.isInteger(o)&&o>0&&(window.__GATEWAY_PORT__=o,De.defaults.baseURL=`http://127.0.0.1:${o}/server-api`)}catch{}}(async()=>{await z6(),Lt.connect();const n=Jn();Lt.on("agent_chunk",e=>{n.handleAgentChunk(e)}),Lt.on("agent_tool",e=>{n.handleToolExecution(e)}),Lt.on("message_complete",e=>{n.handleMessageComplete(e)}),Lt.on("agent_end",e=>{n.handleConversationEnd(e)}),Lt.on("conversation_end",e=>{n.handleConversationEnd(e)}),Lt.on("system_message",e=>{n.handleSystemMessage(e)}),B_.mount("#app")})();
|