coding-tool-x 3.9.3-260928 → 3.9.4
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/dist/web/assets/{AgentsDrawer-x29vGIIi.js → AgentsDrawer-K97azdxi.js} +1 -1
- package/dist/web/assets/{Analytics-BJbR6XJO.js → Analytics-CNPDGLNe.js} +1 -1
- package/dist/web/assets/{AssetPathField-2W-16zgR.js → AssetPathField-BzwSZryS.js} +1 -1
- package/dist/web/assets/{ChatHistoryDrawer-C1URzQ_4.js → ChatHistoryDrawer-BVbfqK-u.js} +1 -1
- package/dist/web/assets/{CollapseItem-DjkOkbwE.js → CollapseItem-DgBQWlsJ.js} +1 -1
- package/dist/web/assets/{CommandsDrawer-DcnfrHC4.js → CommandsDrawer-885BtWjs.js} +1 -1
- package/dist/web/assets/{ConfigExportDrawer-CKwG_RGJ.js → ConfigExportDrawer-jn00iZWm.js} +1 -1
- package/dist/web/assets/{ConfigTemplates-C1tNpfzi.js → ConfigTemplates-DoUG3mOo.js} +1 -1
- package/dist/web/assets/{ConfigTemplatesDrawer-gZNPbcUR.js → ConfigTemplatesDrawer-BQ8h43E6.js} +1 -1
- package/dist/web/assets/{ConfigTemplatesPanel-C-Fy53Qo.js → ConfigTemplatesPanel-VCghYqMx.js} +1 -1
- package/dist/web/assets/{FavoritesDrawer-Bp8FYHPk.js → FavoritesDrawer-CKjlAe4O.js} +1 -1
- package/dist/web/assets/{GatewayConvertDrawer-j5IJzb2Y.js → GatewayConvertDrawer-Cin2yotJ.js} +1 -1
- package/dist/web/assets/{Home-2MAvBnml.js → Home-ui0qANow.js} +1 -1
- package/dist/web/assets/{MarkdownEditor-BA_PcLed.js → MarkdownEditor-LiZaVnJu.js} +1 -1
- package/dist/web/assets/{McpDrawer-DAep5PP_.js → McpDrawer-ClaSJOLK.js} +1 -1
- package/dist/web/assets/{McpFormDrawer-BRm-hzv1.js → McpFormDrawer-w1EJUIsa.js} +1 -1
- package/dist/web/assets/{PluginManager-C2yY8-FP.js → PluginManager-C_Yr9wyj.js} +1 -1
- package/dist/web/assets/{PluginsDrawer-CxKnWzTO.js → PluginsDrawer-CUnoai6T.js} +1 -1
- package/dist/web/assets/{PluginsPanel-DtbXSoXu.js → PluginsPanel-CNShDbDF.js} +1 -1
- package/dist/web/assets/{ProjectList-Cb25pa2s.js → ProjectList-CZ2ZwKRn.js} +1 -1
- package/dist/web/assets/{PromptsDrawer-D39OJVRP.js → PromptsDrawer-BhB_q-KZ.js} +1 -1
- package/dist/web/assets/{RecentSessionsDrawer-DkCjc4kS.js → RecentSessionsDrawer-BZ8YKqwq.js} +1 -1
- package/dist/web/assets/{SessionCard-5Mwig8zy.js → SessionCard-CEFt-CNZ.js} +1 -1
- package/dist/web/assets/{SessionList-DVkIlraF.js → SessionList-CTO4NiMY.js} +1 -1
- package/dist/web/assets/{SettingsDrawer-Cr9qZDgO.js → SettingsDrawer-BiOXu9lZ.js} +1 -1
- package/dist/web/assets/{SkillManager-D935sPSV.js → SkillManager-Bf87paMe.js} +1 -1
- package/dist/web/assets/{SkillsDrawer-D1_3j74b.js → SkillsDrawer-BwkyaeRk.js} +1 -1
- package/dist/web/assets/{SkillsPanel-6SehnNG8.js → SkillsPanel-obdDEThm.js} +1 -1
- package/dist/web/assets/{Upload-38eKB6wv.js → Upload-DdjJgjTW.js} +1 -1
- package/dist/web/assets/{WorkspaceDrawer-Bkfmlr5M.js → WorkspaceDrawer-UWKpEUXI.js} +1 -1
- package/dist/web/assets/{WorkspaceManager-DFVQ5YoE.js → WorkspaceManager-rKzSKzKC.js} +1 -1
- package/dist/web/assets/{WorkspacePanel-CEnogXEv.js → WorkspacePanel-BCMcITVD.js} +1 -1
- package/dist/web/assets/{index-p-yggtLj.css → index-DvoMGWQv.css} +1 -1
- package/dist/web/assets/{index-CCATqHAD.js → index-aW6itxZg.js} +2 -2
- package/dist/web/assets/{useResponsiveDrawer-BWRBXImg.js → useResponsiveDrawer-Cn6gH3VG.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Cn as e,N as a,Sn as t,Xt as s,bn as o,gn as r,gt as l,hn as n,ht as i,i as c,in as d,s as p,t as u,vn as v,xn as h,yn as b}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as m,C as f,D as g,K as w,M as y,O as k,S as x,V as _,W as j,Z as C,_t as z,b as $,et as R,g as S,ht as P,m as I,mt as B,p as G,st as M,w as W,x as U}from"./vue-vendor-BqZbbXHA.js";import{At as A,J as D,K as O,Nt as E,R as T,S as N,dt as L,g as F,r as q}from"./icons-B-AzZoeE.js";import{C as K,t as V}from"./use-message-DBsCm7FJ.js";import{S as Z,l as H}from"./light-C2X7hegj.js";import{t as X}from"./Divider-BLLhMTSt.js";import{$ as J,A as Q,G as Y,H as ee,I as ae,L as te,M as se,X as oe,Z as re,bt as le,ft as ne,rt as ie,st as ce,ut as de}from"./index-CCATqHAD.js";import{t as pe}from"./clipboard-B46yyoz_.js";import{a as ue,c as ve,i as he,l as be,n as me,o as fe,p as ge,r as we,s as ye,t as ke}from"./workspaces-D2yLnT-B.js";function xe(e,a="default",t=[]){const{children:s}=e;if(null!==s&&"object"==typeof s&&!Array.isArray(s)){const e=s[a];if("function"==typeof e)return e()}return t}var _e=n([r("descriptions",{fontSize:"var(--n-font-size)"},[r("descriptions-separator","\n display: inline-block;\n margin: 0 8px 0 2px;\n "),r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[r("descriptions-table-header",{padding:"var(--n-th-padding)"}),r("descriptions-table-content",{padding:"var(--n-td-padding)"})])])]),o("bordered",[r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[n("&:last-child",[r("descriptions-table-content",{paddingBottom:0})])])])])]),b("left-label-placement",[r("descriptions-table-content",[n("> *",{verticalAlign:"top"})])]),b("left-label-align",[n("th",{textAlign:"left"})]),b("center-label-align",[n("th",{textAlign:"center"})]),b("right-label-align",[n("th",{textAlign:"right"})]),b("bordered",[r("descriptions-table-wrapper","\n border-radius: var(--n-border-radius);\n overflow: hidden;\n background: var(--n-merged-td-color);\n border: 1px solid var(--n-merged-border-color);\n ",[r("descriptions-table",[r("descriptions-table-row",[n("&:not(:last-child)",[r("descriptions-table-content",{borderBottom:"1px solid var(--n-merged-border-color)"}),r("descriptions-table-header",{borderBottom:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-header","\n font-weight: 400;\n background-clip: padding-box;\n background-color: var(--n-merged-th-color);\n ",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-content",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})])])])])]),r("descriptions-header","\n font-weight: var(--n-th-font-weight);\n font-size: 18px;\n transition: color .3s var(--n-bezier);\n line-height: var(--n-line-height);\n margin-bottom: 16px;\n color: var(--n-title-text-color);\n "),r("descriptions-table-wrapper","\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[r("descriptions-table","\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n box-sizing: border-box;\n ",[r("descriptions-table-row","\n box-sizing: border-box;\n transition: border-color .3s var(--n-bezier);\n ",[r("descriptions-table-header","\n font-weight: var(--n-th-font-weight);\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-th-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n "),r("descriptions-table-content","\n vertical-align: top;\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-td-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[v("content","\n transition: color .3s var(--n-bezier);\n display: inline-block;\n color: var(--n-td-text-color);\n ")]),v("label","\n font-weight: var(--n-th-font-weight);\n transition: color .3s var(--n-bezier);\n display: inline-block;\n margin-right: 14px;\n color: var(--n-th-text-color);\n ")])])])]),r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color);\n --n-merged-td-color: var(--n-td-color);\n --n-merged-border-color: var(--n-border-color);\n "),t(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-modal);\n --n-merged-td-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n ")),e(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-popover);\n --n-merged-td-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n "))]),je="DESCRIPTION_ITEM_FLAG";var Ce=m({name:"Descriptions",props:Object.assign(Object.assign({},a.props),{title:String,column:{type:Number,default:3},columns:Number,labelPlacement:{type:String,default:"top"},labelAlign:{type:String,default:"left"},separator:{type:String,default:":"},size:{type:String,default:"medium"},bordered:Boolean,labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]}),slots:Object,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:o}=l(e),r=a("Descriptions","-descriptions",_e,Y,e,t),n=$(()=>{const{size:a,bordered:t}=e,{common:{cubicBezierEaseInOut:s},self:{titleTextColor:o,thColor:l,thColorModal:n,thColorPopover:i,thTextColor:c,thFontWeight:d,tdTextColor:p,tdColor:u,tdColorModal:v,tdColorPopover:b,borderColor:m,borderColorModal:f,borderColorPopover:g,borderRadius:w,lineHeight:y,[h("fontSize",a)]:k,[h(t?"thPaddingBordered":"thPadding",a)]:x,[h(t?"tdPaddingBordered":"tdPadding",a)]:_}}=r.value;return{"--n-title-text-color":o,"--n-th-padding":x,"--n-td-padding":_,"--n-font-size":k,"--n-bezier":s,"--n-th-font-weight":d,"--n-line-height":y,"--n-th-text-color":c,"--n-td-text-color":p,"--n-th-color":l,"--n-th-color-modal":n,"--n-th-color-popover":i,"--n-td-color":u,"--n-td-color-modal":v,"--n-td-color-popover":b,"--n-border-radius":w,"--n-border-color":m,"--n-border-color-modal":f,"--n-border-color-popover":g}}),c=o?i("descriptions",$(()=>{let a="";const{size:t,bordered:s}=e;return s&&(a+="a"),a+=t[0],a}),n,e):void 0;return{mergedClsPrefix:t,cssVars:o?void 0:n,themeClass:null==c?void 0:c.themeClass,onRender:null==c?void 0:c.onRender,compitableColumn:s(e,["columns","column"]),inlineThemeDisabled:o}},render(){const e=this.$slots.default,a=e?K(e()):[];a.length;const{contentClass:t,labelClass:s,compitableColumn:o,labelPlacement:r,labelAlign:l,size:n,bordered:i,title:c,cssVars:p,mergedClsPrefix:u,separator:v,onRender:h}=this;null==h||h();const b=a.filter(e=>{return!("object"!=typeof(a=e)||!a||Array.isArray(a))&&a.type&&a.type.DESCRIPTION_ITEM_FLAG;var a}),m=b.reduce((e,a,l)=>{const n=a.props||{},c=b.length-1===l,d=["label"in n?n.label:xe(a,"label")],p=[xe(a)],h=n.span||1,m=e.span;e.span+=h;const f=n.labelStyle||n["label-style"]||this.labelStyle,g=n.contentStyle||n["content-style"]||this.contentStyle;if("left"===r)i?e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:1,style:f},d),y("td",{class:[`${u}-descriptions-table-content`,t],colspan:c?2*(o-m)+1:2*h-1,style:g},p)):e.row.push(y("td",{class:`${u}-descriptions-table-content`,colspan:c?2*(o-m):2*h},y("span",{class:[`${u}-descriptions-table-content__label`,s],style:f},[...d,v&&y("span",{class:`${u}-descriptions-separator`},v)]),y("span",{class:[`${u}-descriptions-table-content__content`,t],style:g},p)));else{const a=c?2*(o-m):2*h;e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:a,style:f},d)),e.secondRow.push(y("td",{class:[`${u}-descriptions-table-content`,t],colspan:a,style:g},p))}return(e.span>=o||c)&&(e.span=0,e.row.length&&(e.rows.push(e.row),e.row=[]),"left"!==r&&e.secondRow.length&&(e.rows.push(e.secondRow),e.secondRow=[])),e},{span:0,row:[],secondRow:[],rows:[]}).rows.map(e=>y("tr",{class:`${u}-descriptions-table-row`},e));return y("div",{style:p,class:[`${u}-descriptions`,this.themeClass,`${u}-descriptions--${r}-label-placement`,`${u}-descriptions--${l}-label-align`,`${u}-descriptions--${n}-size`,i&&`${u}-descriptions--bordered`]},c||this.$slots.header?y("div",{class:`${u}-descriptions-header`},c||le(this,"header")):null,y("div",{class:`${u}-descriptions-table-wrapper`},y("table",{class:`${u}-descriptions-table`},y("tbody",null,"top"===r&&y("tr",{class:`${u}-descriptions-table-row`,style:{visibility:"collapse"}},d(2*o,y("td",null))),m))))}}),ze={label:String,span:{type:Number,default:1},labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]},$e=m({name:"DescriptionsItem",[je]:!0,props:ze,slots:Object,render:()=>null}),Re={class:"card-header"},Se={class:"card-title"},Pe={class:"name"},Ie={class:"card-body"},Be={key:0,class:"info-row"},Ge={class:"value"},Me={class:"info-row"},We={class:"value"},Ue={class:"info-row"},Ae={class:"value path"},De={key:1,class:"info-row"},Oe={class:"value"},Ee=u({__name:"WorkspaceCard",props:{workspace:{type:Object,required:!0}},emits:["click","view","delete"],setup:e=>(a,t)=>{return j(),W("div",{class:"workspace-card",onClick:t[3]||(t[3]=t=>a.$emit("click",e.workspace))},[U("div",Re,[U("div",Se,[U("span",Pe,z(e.workspace.name),1),k(B(de),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),U("div",{class:"card-actions",onClick:t[2]||(t[2]=I(()=>{},["stop"]))},[k(B(p),{text:"",size:"small",onClick:t[0]||(t[0]=t=>a.$emit("view",e.workspace))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(D))]),_:1})]),_:1}),k(B(p),{text:"",size:"small",type:"error",onClick:t[1]||(t[1]=t=>a.$emit("delete",e.workspace))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(q))]),_:1})]),_:1})])]),U("div",Ie,[e.workspace.description?(j(),W("div",Be,[t[4]||(t[4]=U("span",{class:"label"},"描述",-1)),U("span",Ge,z(e.workspace.description),1)])):f("",!0),U("div",Me,[t[5]||(t[5]=U("span",{class:"label"},"项目数",-1)),U("span",We,z(e.workspace.projectCount||0),1)]),U("div",Ue,[t[6]||(t[6]=U("span",{class:"label"},"路径",-1)),U("span",Ae,z(e.workspace.path),1)]),e.workspace.lastUsed?(j(),W("div",De,[t[7]||(t[7]=U("span",{class:"label"},"最后使用",-1)),U("span",Oe,z((s=e.workspace.lastUsed,s?new Date(s).toLocaleString("zh-CN"):"-")),1)])):f("",!0)])]);var s}},[["__scopeId","data-v-74e07bc9"]]),Te={class:"project-item"},Ne={class:"item-header"},Le={class:"item-title"},Fe={class:"item-body"},qe={key:2,class:"git-options"},Ke={key:0,class:"branch-inputs"},Ve={key:1,class:"branch-inputs"},Ze={key:2,class:"branch-inputs"},He=u({__name:"ProjectItem",props:{project:{type:Object,required:!0},index:{type:Number,required:!0},existingOptions:{type:Array,default:()=>[]},showRemoveButton:{type:Boolean,default:!0}},emits:["remove","select-existing"],setup(e){const a=e;async function t(){if(a.project.sourcePath)try{const e=await me(a.project.sourcePath);e.success&&(a.project.isGitRepo=e.data.isGitRepo,e.data.isGitRepo&&!a.project.createWorktree&&(a.project.createWorktree=!0),e.data.isGitRepo&&!a.project.branchMode&&(a.project.branchMode="existing"))}catch(e){}}return(a,s)=>(j(),W("div",Te,[U("div",Ne,[U("span",Le,"项目 "+z(e.index+1),1),e.showRemoveButton?(j(),x(B(p),{key:0,text:"",size:"tiny",type:"error",onClick:s[0]||(s[0]=e=>a.$emit("remove"))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(L))]),_:1})]),_:1})):f("",!0)]),U("div",Fe,[e.project.fromExisting?(j(),W(S,{key:0},[k(B(J),{value:e.project.selectedKey,"onUpdate:value":[s[1]||(s[1]=a=>e.project.selectedKey=a),s[2]||(s[2]=t=>a.$emit("select-existing",e.index,t))],options:e.existingOptions,placeholder:"选择已有项目",filterable:"",size:"small"},null,8,["value","options"]),k(B(ce),{value:e.project.sourcePath,placeholder:"项目路径",disabled:"",size:"small"},null,8,["value"])],64)):(j(),W(S,{key:1},[k(B(ce),{value:e.project.sourcePath,"onUpdate:value":s[3]||(s[3]=a=>e.project.sourcePath=a),placeholder:"项目源路径",size:"small",onBlur:t},null,8,["value"]),k(B(ce),{value:e.project.name,"onUpdate:value":s[4]||(s[4]=a=>e.project.name=a),placeholder:"软链接名称(可选)",size:"small"},null,8,["value"])],64)),e.project.isGitRepo?(j(),W("div",qe,[k(B(ie),{checked:e.project.createWorktree,"onUpdate:checked":s[5]||(s[5]=a=>e.project.createWorktree=a),size:"small"},{default:R(()=>[...s[10]||(s[10]=[g(" 创建 Git Worktree ",-1)])]),_:1},8,["checked"]),e.project.createWorktree?(j(),W("div",Ke,[k(B(oe),{value:e.project.branchMode,"onUpdate:value":s[6]||(s[6]=a=>e.project.branchMode=a),size:"small",class:"branch-mode-group"},{default:R(()=>[k(B(re),{value:"existing"},{default:R(()=>[...s[11]||(s[11]=[g("使用已有分支",-1)])]),_:1}),k(B(re),{value:"new"},{default:R(()=>[...s[12]||(s[12]=[g("新建分支",-1)])]),_:1})]),_:1},8,["value"])])):f("",!0),e.project.createWorktree&&"existing"===(e.project.branchMode||"existing")?(j(),W("div",Ve,[k(B(ce),{value:e.project.branch,"onUpdate:value":s[7]||(s[7]=a=>e.project.branch=a),placeholder:"已有分支名(留空使用当前分支)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree&&"new"===(e.project.branchMode||"existing")?(j(),W("div",Ze,[k(B(ce),{value:e.project.branch,"onUpdate:value":s[8]||(s[8]=a=>e.project.branch=a),placeholder:"新分支名",size:"small",style:{flex:"1"}},null,8,["value"]),k(B(ce),{value:e.project.baseBranch,"onUpdate:value":s[9]||(s[9]=a=>e.project.baseBranch=a),placeholder:"基于分支(可选,如 main)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree?(j(),x(B(Q),{key:3,depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:R(()=>["existing"===(e.project.branchMode||"existing")?(j(),W(S,{key:0},[g(" [INFO] 填已有分支名时优先直接检出;留空则使用当前分支 ")],64)):e.project.branch&&e.project.baseBranch?(j(),W(S,{key:1},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于 "'+z(e.project.baseBranch)+'" 创建 ',1)],64)):e.project.branch?(j(),W(S,{key:2},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于源仓库当前分支创建 ',1)],64)):(j(),W(S,{key:3},[g(" [INFO] 请输入新分支名 ")],64))]),_:1})):f("",!0)])):f("",!0),e.project.isGitRepo?(j(),x(B(Q),{key:3,depth:"3",style:{"font-size":"11px"}},{default:R(()=>[...s[13]||(s[13]=[g("[v] Git 仓库",-1)])]),_:1})):f("",!0)])]))}},[["__scopeId","data-v-1cf82955"]]);function Xe(e=""){const a=String(e||"").trim();if(!a)return"";const t=a.replace(/[\\/]+$/,"");if(!t)return"";const s=t.split(/[\\/]+/);return s[s.length-1]||""}function Je({fromExisting:e=!1}={}){return{sourcePath:"",name:"",createWorktree:!1,branchMode:"existing",branch:"",baseBranch:"",isGitRepo:!1,fromExisting:e,selectedKey:""}}function Qe(e){return"string"==typeof e?e.trim():""}function Ye(e={}){const a={sourcePath:Qe(e.sourcePath),name:Qe(e.name),createWorktree:!1!==e.createWorktree&&!!e.isGitRepo};if(a.name||delete a.name,!a.createWorktree)return a;a.branchMode="new"===e.branchMode?"new":"existing";const t=Qe(e.branch);if(t&&(a.branch=t),"new"===a.branchMode){const t=Qe(e.baseBranch);t&&(a.baseBranch=t)}return a}var ea={class:"projects-section"},aa={class:"projects-actions"},ta={key:0,class:"projects-list"},sa=u({__name:"WorkspaceFormModal",props:{show:{type:Boolean,default:!1}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=M(null),l=M(!1),n=M([]),i=M([]),c=$({get:()=>t.show,set:e=>s("update:show",e)}),d=M({name:"",description:"",baseDir:"",configTemplateId:null,projects:[]}),u={name:[{required:!0,message:"请输入工作区名称",trigger:"blur"},{pattern:/^[a-zA-Z0-9_\-\u4e00-\u9fa5]+$/,message:"名称只能包含字母、数字、下划线、中划线和中文",trigger:"blur"}],projects:[{type:"array",required:!0,min:1,message:"至少需要添加一个项目",trigger:"blur"}]},v=$(()=>n.value.map(e=>({label:e.name,value:e.id}))),h=$(()=>i.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function b(e){d.value.projects.push(Je({fromExisting:e}))}function m(e,a){const t=h.value.find(e=>e.value===a);if(!t)return;const s=d.value.projects[e];s.sourcePath=t.path,s.name=Xe(t.path),s.isGitRepo=t.isGitRepo,s.createWorktree=t.isGitRepo,s.branchMode="existing",s.branch="",s.baseBranch=""}async function f(){try{await(r.value?.validate());for(const t of d.value.projects)if(!t.sourcePath)return void o.error("请填写项目路径");l.value=!0;const e={...d.value,projects:d.value.projects.map(Ye)},a=await we(e);a.success?(o.success("工作区创建成功"),d.value={name:"",description:"",baseDir:"",configTemplateId:null,projects:[]},s("success")):o.error(a.message||"创建失败")}catch(e){const a=e.message||"创建失败";a.includes("\n")?o.warning(a,{duration:8e3}):o.error(a),e.errors}finally{l.value=!1}}return C(c,e=>{e&&async function(){try{const[e,a]=await Promise.all([ge(),ue()]);e.success&&(n.value=e.data||[]),a.success&&(i.value=Array.isArray(a.data)?a.data:[])}catch(e){}}()}),(e,a)=>(j(),x(B(H),{show:c.value,"onUpdate:show":a[8]||(a[8]=e=>c.value=e),preset:"card",title:"创建工作区",style:{width:"650px"},"mask-closable":!1},{footer:R(()=>[k(B(ee),{justify:"end"},{default:R(()=>[k(B(p),{onClick:a[7]||(a[7]=e=>c.value=!1)},{default:R(()=>[...a[12]||(a[12]=[g("取消",-1)])]),_:1}),k(B(p),{type:"primary",onClick:f,loading:l.value},{default:R(()=>[...a[13]||(a[13]=[g("创建",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[k(B(te),{ref_key:"formRef",ref:r,model:d.value,rules:u,"label-placement":"left","label-width":"100"},{default:R(()=>[k(B(ae),{label:"工作区名称",path:"name"},{default:R(()=>[k(B(ce),{value:d.value.name,"onUpdate:value":a[0]||(a[0]=e=>d.value.name=e),placeholder:"输入工作区名称",onKeydown:a[1]||(a[1]=G(I(()=>{},["prevent"]),["enter"]))},null,8,["value"])]),_:1}),k(B(ae),{label:"描述",path:"description"},{default:R(()=>[k(B(ce),{value:d.value.description,"onUpdate:value":a[2]||(a[2]=e=>d.value.description=e),placeholder:"可选描述",type:"textarea",rows:2},null,8,["value"])]),_:1}),k(B(ae),{label:"基础目录",path:"baseDir"},{default:R(()=>[k(B(ce),{value:d.value.baseDir,"onUpdate:value":a[3]||(a[3]=e=>d.value.baseDir=e),placeholder:"留空则使用第一个项目的父目录"},null,8,["value"])]),_:1}),k(B(ae),{label:"配置模板",path:"configTemplateId"},{default:R(()=>[k(B(J),{value:d.value.configTemplateId,"onUpdate:value":a[4]||(a[4]=e=>d.value.configTemplateId=e),options:v.value,placeholder:"选择配置模板",clearable:""},null,8,["value","options"])]),_:1}),k(B(ae),{label:"项目列表",path:"projects"},{default:R(()=>[U("div",ea,[U("div",aa,[k(B(p),{size:"small",dashed:"",onClick:a[5]||(a[5]=e=>b(!1))},{default:R(()=>[...a[9]||(a[9]=[g("添加项目",-1)])]),_:1}),k(B(p),{size:"small",dashed:"",onClick:a[6]||(a[6]=e=>b(!0))},{default:R(()=>[...a[10]||(a[10]=[g("添加已有项目",-1)])]),_:1})]),d.value.projects.length>0?(j(),W("div",ta,[(j(!0),W(S,null,w(d.value.projects,(e,a)=>(j(),x(He,{key:a,project:e,index:a,"existing-options":h.value,onRemove:e=>function(e){d.value.projects.splice(e,1)}(a),onSelectExisting:m},null,8,["project","index","existing-options","onRemove"]))),128))])):(j(),x(B(Q),{key:1,depth:"3",style:{"font-size":"12px"}},{default:R(()=>[...a[11]||(a[11]=[g("请添加至少一个项目",-1)])]),_:1}))])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]))}},[["__scopeId","data-v-4b48727c"]]),oa={class:"form-section"},ra={class:"actions-row"},la=u({__name:"WorkspaceProjectFormModal",props:{show:{type:Boolean,default:!1},workspaceId:{type:String,required:!0}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=M(!1),l=M([]),n=M(Je()),i=$({get:()=>t.show,set:e=>s("update:show",e)}),c=$(()=>l.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function d(){n.value=Je()}function u(){n.value=Je({fromExisting:!1})}function v(){n.value=Je({fromExisting:!0})}function h(e,a){const t=c.value.find(e=>e.value===a);t&&(n.value.selectedKey=a,n.value.sourcePath=t.path,n.value.name=Xe(t.path),n.value.isGitRepo=t.isGitRepo,n.value.createWorktree=t.isGitRepo,n.value.branchMode="existing",n.value.branch="",n.value.baseBranch="",n.value.fromExisting=!0)}async function b(){const e=Ye(n.value);if(e.sourcePath)if(!n.value.createWorktree||"new"!==n.value.branchMode||e.branch){r.value=!0;try{const a=await ke(t.workspaceId,e);if(a.success)return o.success("仓库已添加到工作区"),i.value=!1,d(),void s("success");o.error(a.message||"添加失败")}catch(a){o.error(`添加失败: ${a.message}`)}finally{r.value=!1}}else o.error("请输入新分支名");else o.error("请填写项目路径")}return C(i,e=>{e&&(d(),async function(){try{const e=await ue();e.success&&(l.value=Array.isArray(e.data)?e.data:[])}catch(e){}}())}),(e,a)=>(j(),x(B(H),{show:i.value,"onUpdate:show":a[1]||(a[1]=e=>i.value=e),preset:"card",title:"添加仓库到工作区",style:{width:"620px"},"mask-closable":!1},{footer:R(()=>[k(B(ee),{justify:"end"},{default:R(()=>[k(B(p),{onClick:a[0]||(a[0]=e=>i.value=!1)},{default:R(()=>[...a[4]||(a[4]=[g("取消",-1)])]),_:1}),k(B(p),{type:"primary",loading:r.value,onClick:b},{default:R(()=>[...a[5]||(a[5]=[g("添加",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[U("div",oa,[U("div",ra,[k(B(p),{size:"small",dashed:"",type:n.value.fromExisting?"default":"primary",onClick:u},{default:R(()=>[...a[2]||(a[2]=[g(" 手动填写路径 ",-1)])]),_:1},8,["type"]),k(B(p),{size:"small",dashed:"",type:n.value.fromExisting?"primary":"default",onClick:v},{default:R(()=>[...a[3]||(a[3]=[g(" 选择已有项目 ",-1)])]),_:1},8,["type"])]),k(He,{project:n.value,index:0,"existing-options":c.value,"show-remove-button":!1,onSelectExisting:h},null,8,["project","existing-options"])])]),_:1},8,["show"]))}},[["__scopeId","data-v-16febc8c"]]),na={class:"section-header"},ia={class:"section-title"},ca={key:0,class:"projects-list"},da={class:"proj-name"},pa={class:"proj-path"},ua=u({__name:"WorkspaceDetailModal",props:{show:{type:Boolean,default:!1},workspace:{type:Object,default:null}},emits:["update:show","updated"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=Z(),l=$({get:()=>t.show,set:e=>s("update:show",e)}),n=M(null),i=M(!1);function c(e){return e?new Date(e).toLocaleString("zh-CN"):"-"}async function d(){if(t.workspace?.id)try{const e=await ye(t.workspace.id);e.success&&(n.value=e.data)}catch(e){}}function u(){d(),s("updated")}async function v(e){if(t.workspace?.id)try{const a=await fe(t.workspace.id,e);if(a.success){const e=`cd "${a.data.cwd}" && ${a.data.command}`;if("manual"===(await pe(e))?.method)return void o.warning("自动复制失败,已弹出手动复制框");o.success("启动命令已复制到剪贴板")}else o.error(a.message||"获取命令失败")}catch(a){o.error("获取命令失败: "+a.message)}}return C(l,e=>{e&&t.workspace&&d()}),(a,s)=>(j(),x(B(H),{show:l.value,"onUpdate:show":s[6]||(s[6]=e=>l.value=e),preset:"card",title:"工作区详情",style:{width:"700px"}},{default:R(()=>[e.workspace?(j(),W(S,{key:0},[k(B(Ce),{column:1,bordered:"",size:"small"},{default:R(()=>[k(B($e),{label:"名称"},{default:R(()=>[g(z(e.workspace.name),1)]),_:1}),k(B($e),{label:"描述"},{default:R(()=>[g(z(e.workspace.description||"-"),1)]),_:1}),k(B($e),{label:"路径"},{default:R(()=>[g(z(e.workspace.path),1)]),_:1}),k(B($e),{label:"状态"},{default:R(()=>[k(B(de),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),_:1}),k(B($e),{label:"创建时间"},{default:R(()=>[g(z(c(e.workspace.createdAt)),1)]),_:1}),k(B($e),{label:"最后使用"},{default:R(()=>[g(z(c(e.workspace.lastUsed)),1)]),_:1})]),_:1}),k(B(X)),s[15]||(s[15]=U("div",{class:"section-title"},"启动 CLI 工具",-1)),k(B(ee),null,{default:R(()=>[k(B(p),{type:"primary",size:"small",onClick:s[0]||(s[0]=e=>v("claude")),disabled:!e.workspace.exists},{default:R(()=>[...s[7]||(s[7]=[g(" Claude Code ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"info",size:"small",onClick:s[1]||(s[1]=e=>v("codex")),disabled:!e.workspace.exists},{default:R(()=>[...s[8]||(s[8]=[g(" Codex ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"success",size:"small",onClick:s[2]||(s[2]=e=>v("gemini")),disabled:!e.workspace.exists},{default:R(()=>[...s[9]||(s[9]=[g(" Gemini CLI ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"warning",size:"small",onClick:s[3]||(s[3]=e=>v("omp")),disabled:!e.workspace.exists},{default:R(()=>[...s[10]||(s[10]=[g(" OMP ",-1)])]),_:1},8,["disabled"])]),_:1}),k(B(Q),{depth:"3",style:{display:"block","margin-top":"6px","font-size":"11px"}},{default:R(()=>[...s[11]||(s[11]=[g(" 点击按钮将复制启动命令到剪贴板 ",-1)])]),_:1}),k(B(X)),U("div",na,[U("div",ia,"包含项目 ("+z(n.value?.projects?.length||0)+")",1),k(B(p),{size:"small",type:"primary",ghost:"",disabled:!n.value?.exists,onClick:s[4]||(s[4]=e=>i.value=!0)},{default:R(()=>[...s[12]||(s[12]=[g(" 添加仓库 ",-1)])]),_:1},8,["disabled"])]),n.value?.projects?.length?(j(),W("div",ca,[(j(!0),W(S,null,w(n.value.projects,(e,a)=>(j(),W("div",{class:"project-row",key:a},[k(B(de),{type:e.sourceExists?"success":"error",size:"small"},{default:R(()=>[g(z(e.sourceExists?"[v]":"[x]"),1)]),_:2},1032,["type"]),U("span",da,z(e.name),1),U("span",pa,z(e.sourcePath),1),e.useWorktree?(j(),x(B(de),{key:0,type:"info",size:"small"},{default:R(()=>[...s[13]||(s[13]=[g("worktree",-1)])]),_:1})):f("",!0),k(B(p),{text:"",size:"small",type:"error",onClick:a=>{return s=e,void(t.workspace?.id&&r.warning({title:"确认移除仓库",content:`确定要从工作区移除 "${s.name}" 吗?`,positiveText:"移除",negativeText:"取消",onPositiveClick:async()=>{try{const e=await be(t.workspace.id,s.name);if(e.success)return o.success("仓库已移除"),void u();o.error(e.message||"移除失败")}catch(e){o.error(`移除失败: ${e.message}`)}}}));var s}},{default:R(()=>[...s[14]||(s[14]=[g(" 移除 ",-1)])]),_:1},8,["onClick"])]))),128))])):(j(),x(B(ne),{key:1,description:"暂无项目",size:"small"}))],64)):f("",!0),k(la,{show:i.value,"onUpdate:show":s[5]||(s[5]=e=>i.value=e),"workspace-id":t.workspace?.id||"",onSuccess:u},null,8,["show","workspace-id"])]),_:1},8,["show"]))}},[["__scopeId","data-v-1ee80e2a"]]),va={key:0,class:"panel-header"},ha={class:"header-left"},ba={class:"header-right"},ma={key:1,class:"drawer-header-bar"},fa={class:"header-right"},ga={class:"stats-bar"},wa={class:"stats-text"},ya={class:"filter-bar"},ka={class:"panel-content"},xa={key:0,class:"empty-state"},_a={key:1,class:"card-list"},ja={class:"panel-footer"},Ca=u({__name:"WorkspacePanel",props:{inDrawer:{type:Boolean,default:!1},hideBack:{type:Boolean,default:!1},drawerVisible:{type:Boolean,default:!1}},emits:["back","updated"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=Z(),l=M(!1),n=M([]),i=M(""),d=M(!1),u=M(!1),v=M(null),h=$(()=>{if(!i.value.trim())return n.value;const e=i.value.toLowerCase();return n.value.filter(a=>a.name?.toLowerCase().includes(e)||a.description?.toLowerCase().includes(e)||a.path?.toLowerCase().includes(e))});async function b(){l.value=!0;try{const e=await ve();e.success&&(n.value=e.data||[])}catch(e){o.error("加载工作区失败: "+e.message)}finally{l.value=!1}}function m(e){v.value=e,u.value=!0}function y(e){r.warning({title:"确认删除",content:`确定要删除工作区"${e.name}"吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{const a=await he(e.id,!1);a.success?(o.success("删除成功"),b(),s("updated")):o.error(a.message||"删除失败")}catch(a){o.error("删除失败: "+a.message)}}})}function I(){d.value=!1,b(),s("updated")}return _(()=>b()),C(()=>t.drawerVisible,e=>{e&&b()}),(a,t)=>(j(),W("div",{class:P(["workspace-panel",{"in-drawer":e.inDrawer}])},[e.inDrawer?f("",!0):(j(),W("div",va,[U("div",ha,[e.hideBack?f("",!0):(j(),x(B(p),{key:0,text:"",onClick:t[0]||(t[0]=e=>a.$emit("back")),class:"back-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(A))]),_:1})]),_:1})),t[7]||(t[7]=U("span",{class:"panel-title"},"工作区管理",-1))]),U("div",ba,[k(B(p),{text:"",onClick:t[1]||(t[1]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(E))]),_:1})]),default:R(()=>[t[8]||(t[8]=g(" 创建 ",-1))]),_:1}),k(B(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(N))]),_:1})]),default:R(()=>[t[9]||(t[9]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])),e.inDrawer?(j(),W("div",ma,[U("div",fa,[k(B(p),{text:"",onClick:t[2]||(t[2]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(E))]),_:1})]),default:R(()=>[t[10]||(t[10]=g(" 创建 ",-1))]),_:1}),k(B(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(N))]),_:1})]),default:R(()=>[t[11]||(t[11]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])):f("",!0),U("div",ga,[U("span",wa," 共 "+z(n.value.length)+" 个工作区 ",1)]),U("div",ya,[k(B(ce),{value:i.value,"onUpdate:value":t[3]||(t[3]=e=>i.value=e),placeholder:"搜索工作区...",clearable:"",size:"small",class:"search-input"},{prefix:R(()=>[k(B(c),null,{default:R(()=>[k(B(F))]),_:1})]),_:1},8,["value"])]),U("div",ka,[k(B(se),{show:l.value},{default:R(()=>[0!==h.value.length||l.value?(j(),W("div",_a,[(j(!0),W(S,null,w(h.value,e=>(j(),x(Ee,{key:e.id,workspace:e,onClick:m,onView:m,onDelete:y},null,8,["workspace"]))),128))])):(j(),W("div",xa,[k(B(ne),{description:"暂无工作区"},{icon:R(()=>[k(B(c),{size:"48",color:"var(--text-quaternary)"},{default:R(()=>[k(B(O))]),_:1})]),extra:R(()=>[k(B(p),{size:"small",onClick:t[4]||(t[4]=e=>d.value=!0)},{default:R(()=>[...t[12]||(t[12]=[g("创建第一个工作区",-1)])]),_:1})]),_:1})]))]),_:1},8,["show"])]),U("div",ja,[k(B(c),{size:"14",class:"info-icon"},{default:R(()=>[k(B(T))]),_:1}),t[13]||(t[13]=U("span",null,"工作区用于管理多个项目的统一开发环境",-1))]),k(sa,{show:d.value,"onUpdate:show":t[5]||(t[5]=e=>d.value=e),onSuccess:I},null,8,["show"]),k(ua,{show:u.value,"onUpdate:show":t[6]||(t[6]=e=>u.value=e),workspace:v.value,onUpdated:b},null,8,["show","workspace"])],2))}},[["__scopeId","data-v-da5160b9"]]);export{Ca as t};
|
|
1
|
+
import{Cn as e,N as a,Sn as t,Xt as s,bn as o,gn as r,gt as l,hn as n,ht as i,i as c,in as d,s as p,t as u,vn as v,xn as h,yn as b}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as m,C as f,D as g,K as w,M as y,O as k,S as x,V as _,W as j,Z as C,_t as z,b as $,et as R,g as S,ht as P,m as I,mt as B,p as G,st as M,w as W,x as U}from"./vue-vendor-BqZbbXHA.js";import{At as A,J as D,K as O,Nt as E,R as T,S as N,dt as L,g as F,r as q}from"./icons-B-AzZoeE.js";import{C as K,t as V}from"./use-message-DBsCm7FJ.js";import{S as Z,l as H}from"./light-C2X7hegj.js";import{t as X}from"./Divider-BLLhMTSt.js";import{$ as J,A as Q,G as Y,H as ee,I as ae,L as te,M as se,X as oe,Z as re,bt as le,ft as ne,rt as ie,st as ce,ut as de}from"./index-aW6itxZg.js";import{t as pe}from"./clipboard-B46yyoz_.js";import{a as ue,c as ve,i as he,l as be,n as me,o as fe,p as ge,r as we,s as ye,t as ke}from"./workspaces-D2yLnT-B.js";function xe(e,a="default",t=[]){const{children:s}=e;if(null!==s&&"object"==typeof s&&!Array.isArray(s)){const e=s[a];if("function"==typeof e)return e()}return t}var _e=n([r("descriptions",{fontSize:"var(--n-font-size)"},[r("descriptions-separator","\n display: inline-block;\n margin: 0 8px 0 2px;\n "),r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[r("descriptions-table-header",{padding:"var(--n-th-padding)"}),r("descriptions-table-content",{padding:"var(--n-td-padding)"})])])]),o("bordered",[r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[n("&:last-child",[r("descriptions-table-content",{paddingBottom:0})])])])])]),b("left-label-placement",[r("descriptions-table-content",[n("> *",{verticalAlign:"top"})])]),b("left-label-align",[n("th",{textAlign:"left"})]),b("center-label-align",[n("th",{textAlign:"center"})]),b("right-label-align",[n("th",{textAlign:"right"})]),b("bordered",[r("descriptions-table-wrapper","\n border-radius: var(--n-border-radius);\n overflow: hidden;\n background: var(--n-merged-td-color);\n border: 1px solid var(--n-merged-border-color);\n ",[r("descriptions-table",[r("descriptions-table-row",[n("&:not(:last-child)",[r("descriptions-table-content",{borderBottom:"1px solid var(--n-merged-border-color)"}),r("descriptions-table-header",{borderBottom:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-header","\n font-weight: 400;\n background-clip: padding-box;\n background-color: var(--n-merged-th-color);\n ",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-content",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})])])])])]),r("descriptions-header","\n font-weight: var(--n-th-font-weight);\n font-size: 18px;\n transition: color .3s var(--n-bezier);\n line-height: var(--n-line-height);\n margin-bottom: 16px;\n color: var(--n-title-text-color);\n "),r("descriptions-table-wrapper","\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[r("descriptions-table","\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n box-sizing: border-box;\n ",[r("descriptions-table-row","\n box-sizing: border-box;\n transition: border-color .3s var(--n-bezier);\n ",[r("descriptions-table-header","\n font-weight: var(--n-th-font-weight);\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-th-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n "),r("descriptions-table-content","\n vertical-align: top;\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-td-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[v("content","\n transition: color .3s var(--n-bezier);\n display: inline-block;\n color: var(--n-td-text-color);\n ")]),v("label","\n font-weight: var(--n-th-font-weight);\n transition: color .3s var(--n-bezier);\n display: inline-block;\n margin-right: 14px;\n color: var(--n-th-text-color);\n ")])])])]),r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color);\n --n-merged-td-color: var(--n-td-color);\n --n-merged-border-color: var(--n-border-color);\n "),t(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-modal);\n --n-merged-td-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n ")),e(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-popover);\n --n-merged-td-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n "))]),je="DESCRIPTION_ITEM_FLAG";var Ce=m({name:"Descriptions",props:Object.assign(Object.assign({},a.props),{title:String,column:{type:Number,default:3},columns:Number,labelPlacement:{type:String,default:"top"},labelAlign:{type:String,default:"left"},separator:{type:String,default:":"},size:{type:String,default:"medium"},bordered:Boolean,labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]}),slots:Object,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:o}=l(e),r=a("Descriptions","-descriptions",_e,Y,e,t),n=$(()=>{const{size:a,bordered:t}=e,{common:{cubicBezierEaseInOut:s},self:{titleTextColor:o,thColor:l,thColorModal:n,thColorPopover:i,thTextColor:c,thFontWeight:d,tdTextColor:p,tdColor:u,tdColorModal:v,tdColorPopover:b,borderColor:m,borderColorModal:f,borderColorPopover:g,borderRadius:w,lineHeight:y,[h("fontSize",a)]:k,[h(t?"thPaddingBordered":"thPadding",a)]:x,[h(t?"tdPaddingBordered":"tdPadding",a)]:_}}=r.value;return{"--n-title-text-color":o,"--n-th-padding":x,"--n-td-padding":_,"--n-font-size":k,"--n-bezier":s,"--n-th-font-weight":d,"--n-line-height":y,"--n-th-text-color":c,"--n-td-text-color":p,"--n-th-color":l,"--n-th-color-modal":n,"--n-th-color-popover":i,"--n-td-color":u,"--n-td-color-modal":v,"--n-td-color-popover":b,"--n-border-radius":w,"--n-border-color":m,"--n-border-color-modal":f,"--n-border-color-popover":g}}),c=o?i("descriptions",$(()=>{let a="";const{size:t,bordered:s}=e;return s&&(a+="a"),a+=t[0],a}),n,e):void 0;return{mergedClsPrefix:t,cssVars:o?void 0:n,themeClass:null==c?void 0:c.themeClass,onRender:null==c?void 0:c.onRender,compitableColumn:s(e,["columns","column"]),inlineThemeDisabled:o}},render(){const e=this.$slots.default,a=e?K(e()):[];a.length;const{contentClass:t,labelClass:s,compitableColumn:o,labelPlacement:r,labelAlign:l,size:n,bordered:i,title:c,cssVars:p,mergedClsPrefix:u,separator:v,onRender:h}=this;null==h||h();const b=a.filter(e=>{return!("object"!=typeof(a=e)||!a||Array.isArray(a))&&a.type&&a.type.DESCRIPTION_ITEM_FLAG;var a}),m=b.reduce((e,a,l)=>{const n=a.props||{},c=b.length-1===l,d=["label"in n?n.label:xe(a,"label")],p=[xe(a)],h=n.span||1,m=e.span;e.span+=h;const f=n.labelStyle||n["label-style"]||this.labelStyle,g=n.contentStyle||n["content-style"]||this.contentStyle;if("left"===r)i?e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:1,style:f},d),y("td",{class:[`${u}-descriptions-table-content`,t],colspan:c?2*(o-m)+1:2*h-1,style:g},p)):e.row.push(y("td",{class:`${u}-descriptions-table-content`,colspan:c?2*(o-m):2*h},y("span",{class:[`${u}-descriptions-table-content__label`,s],style:f},[...d,v&&y("span",{class:`${u}-descriptions-separator`},v)]),y("span",{class:[`${u}-descriptions-table-content__content`,t],style:g},p)));else{const a=c?2*(o-m):2*h;e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:a,style:f},d)),e.secondRow.push(y("td",{class:[`${u}-descriptions-table-content`,t],colspan:a,style:g},p))}return(e.span>=o||c)&&(e.span=0,e.row.length&&(e.rows.push(e.row),e.row=[]),"left"!==r&&e.secondRow.length&&(e.rows.push(e.secondRow),e.secondRow=[])),e},{span:0,row:[],secondRow:[],rows:[]}).rows.map(e=>y("tr",{class:`${u}-descriptions-table-row`},e));return y("div",{style:p,class:[`${u}-descriptions`,this.themeClass,`${u}-descriptions--${r}-label-placement`,`${u}-descriptions--${l}-label-align`,`${u}-descriptions--${n}-size`,i&&`${u}-descriptions--bordered`]},c||this.$slots.header?y("div",{class:`${u}-descriptions-header`},c||le(this,"header")):null,y("div",{class:`${u}-descriptions-table-wrapper`},y("table",{class:`${u}-descriptions-table`},y("tbody",null,"top"===r&&y("tr",{class:`${u}-descriptions-table-row`,style:{visibility:"collapse"}},d(2*o,y("td",null))),m))))}}),ze={label:String,span:{type:Number,default:1},labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]},$e=m({name:"DescriptionsItem",[je]:!0,props:ze,slots:Object,render:()=>null}),Re={class:"card-header"},Se={class:"card-title"},Pe={class:"name"},Ie={class:"card-body"},Be={key:0,class:"info-row"},Ge={class:"value"},Me={class:"info-row"},We={class:"value"},Ue={class:"info-row"},Ae={class:"value path"},De={key:1,class:"info-row"},Oe={class:"value"},Ee=u({__name:"WorkspaceCard",props:{workspace:{type:Object,required:!0}},emits:["click","view","delete"],setup:e=>(a,t)=>{return j(),W("div",{class:"workspace-card",onClick:t[3]||(t[3]=t=>a.$emit("click",e.workspace))},[U("div",Re,[U("div",Se,[U("span",Pe,z(e.workspace.name),1),k(B(de),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),U("div",{class:"card-actions",onClick:t[2]||(t[2]=I(()=>{},["stop"]))},[k(B(p),{text:"",size:"small",onClick:t[0]||(t[0]=t=>a.$emit("view",e.workspace))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(D))]),_:1})]),_:1}),k(B(p),{text:"",size:"small",type:"error",onClick:t[1]||(t[1]=t=>a.$emit("delete",e.workspace))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(q))]),_:1})]),_:1})])]),U("div",Ie,[e.workspace.description?(j(),W("div",Be,[t[4]||(t[4]=U("span",{class:"label"},"描述",-1)),U("span",Ge,z(e.workspace.description),1)])):f("",!0),U("div",Me,[t[5]||(t[5]=U("span",{class:"label"},"项目数",-1)),U("span",We,z(e.workspace.projectCount||0),1)]),U("div",Ue,[t[6]||(t[6]=U("span",{class:"label"},"路径",-1)),U("span",Ae,z(e.workspace.path),1)]),e.workspace.lastUsed?(j(),W("div",De,[t[7]||(t[7]=U("span",{class:"label"},"最后使用",-1)),U("span",Oe,z((s=e.workspace.lastUsed,s?new Date(s).toLocaleString("zh-CN"):"-")),1)])):f("",!0)])]);var s}},[["__scopeId","data-v-74e07bc9"]]),Te={class:"project-item"},Ne={class:"item-header"},Le={class:"item-title"},Fe={class:"item-body"},qe={key:2,class:"git-options"},Ke={key:0,class:"branch-inputs"},Ve={key:1,class:"branch-inputs"},Ze={key:2,class:"branch-inputs"},He=u({__name:"ProjectItem",props:{project:{type:Object,required:!0},index:{type:Number,required:!0},existingOptions:{type:Array,default:()=>[]},showRemoveButton:{type:Boolean,default:!0}},emits:["remove","select-existing"],setup(e){const a=e;async function t(){if(a.project.sourcePath)try{const e=await me(a.project.sourcePath);e.success&&(a.project.isGitRepo=e.data.isGitRepo,e.data.isGitRepo&&!a.project.createWorktree&&(a.project.createWorktree=!0),e.data.isGitRepo&&!a.project.branchMode&&(a.project.branchMode="existing"))}catch(e){}}return(a,s)=>(j(),W("div",Te,[U("div",Ne,[U("span",Le,"项目 "+z(e.index+1),1),e.showRemoveButton?(j(),x(B(p),{key:0,text:"",size:"tiny",type:"error",onClick:s[0]||(s[0]=e=>a.$emit("remove"))},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(L))]),_:1})]),_:1})):f("",!0)]),U("div",Fe,[e.project.fromExisting?(j(),W(S,{key:0},[k(B(J),{value:e.project.selectedKey,"onUpdate:value":[s[1]||(s[1]=a=>e.project.selectedKey=a),s[2]||(s[2]=t=>a.$emit("select-existing",e.index,t))],options:e.existingOptions,placeholder:"选择已有项目",filterable:"",size:"small"},null,8,["value","options"]),k(B(ce),{value:e.project.sourcePath,placeholder:"项目路径",disabled:"",size:"small"},null,8,["value"])],64)):(j(),W(S,{key:1},[k(B(ce),{value:e.project.sourcePath,"onUpdate:value":s[3]||(s[3]=a=>e.project.sourcePath=a),placeholder:"项目源路径",size:"small",onBlur:t},null,8,["value"]),k(B(ce),{value:e.project.name,"onUpdate:value":s[4]||(s[4]=a=>e.project.name=a),placeholder:"软链接名称(可选)",size:"small"},null,8,["value"])],64)),e.project.isGitRepo?(j(),W("div",qe,[k(B(ie),{checked:e.project.createWorktree,"onUpdate:checked":s[5]||(s[5]=a=>e.project.createWorktree=a),size:"small"},{default:R(()=>[...s[10]||(s[10]=[g(" 创建 Git Worktree ",-1)])]),_:1},8,["checked"]),e.project.createWorktree?(j(),W("div",Ke,[k(B(oe),{value:e.project.branchMode,"onUpdate:value":s[6]||(s[6]=a=>e.project.branchMode=a),size:"small",class:"branch-mode-group"},{default:R(()=>[k(B(re),{value:"existing"},{default:R(()=>[...s[11]||(s[11]=[g("使用已有分支",-1)])]),_:1}),k(B(re),{value:"new"},{default:R(()=>[...s[12]||(s[12]=[g("新建分支",-1)])]),_:1})]),_:1},8,["value"])])):f("",!0),e.project.createWorktree&&"existing"===(e.project.branchMode||"existing")?(j(),W("div",Ve,[k(B(ce),{value:e.project.branch,"onUpdate:value":s[7]||(s[7]=a=>e.project.branch=a),placeholder:"已有分支名(留空使用当前分支)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree&&"new"===(e.project.branchMode||"existing")?(j(),W("div",Ze,[k(B(ce),{value:e.project.branch,"onUpdate:value":s[8]||(s[8]=a=>e.project.branch=a),placeholder:"新分支名",size:"small",style:{flex:"1"}},null,8,["value"]),k(B(ce),{value:e.project.baseBranch,"onUpdate:value":s[9]||(s[9]=a=>e.project.baseBranch=a),placeholder:"基于分支(可选,如 main)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree?(j(),x(B(Q),{key:3,depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:R(()=>["existing"===(e.project.branchMode||"existing")?(j(),W(S,{key:0},[g(" [INFO] 填已有分支名时优先直接检出;留空则使用当前分支 ")],64)):e.project.branch&&e.project.baseBranch?(j(),W(S,{key:1},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于 "'+z(e.project.baseBranch)+'" 创建 ',1)],64)):e.project.branch?(j(),W(S,{key:2},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于源仓库当前分支创建 ',1)],64)):(j(),W(S,{key:3},[g(" [INFO] 请输入新分支名 ")],64))]),_:1})):f("",!0)])):f("",!0),e.project.isGitRepo?(j(),x(B(Q),{key:3,depth:"3",style:{"font-size":"11px"}},{default:R(()=>[...s[13]||(s[13]=[g("[v] Git 仓库",-1)])]),_:1})):f("",!0)])]))}},[["__scopeId","data-v-1cf82955"]]);function Xe(e=""){const a=String(e||"").trim();if(!a)return"";const t=a.replace(/[\\/]+$/,"");if(!t)return"";const s=t.split(/[\\/]+/);return s[s.length-1]||""}function Je({fromExisting:e=!1}={}){return{sourcePath:"",name:"",createWorktree:!1,branchMode:"existing",branch:"",baseBranch:"",isGitRepo:!1,fromExisting:e,selectedKey:""}}function Qe(e){return"string"==typeof e?e.trim():""}function Ye(e={}){const a={sourcePath:Qe(e.sourcePath),name:Qe(e.name),createWorktree:!1!==e.createWorktree&&!!e.isGitRepo};if(a.name||delete a.name,!a.createWorktree)return a;a.branchMode="new"===e.branchMode?"new":"existing";const t=Qe(e.branch);if(t&&(a.branch=t),"new"===a.branchMode){const t=Qe(e.baseBranch);t&&(a.baseBranch=t)}return a}var ea={class:"projects-section"},aa={class:"projects-actions"},ta={key:0,class:"projects-list"},sa=u({__name:"WorkspaceFormModal",props:{show:{type:Boolean,default:!1}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=M(null),l=M(!1),n=M([]),i=M([]),c=$({get:()=>t.show,set:e=>s("update:show",e)}),d=M({name:"",description:"",baseDir:"",configTemplateId:null,projects:[]}),u={name:[{required:!0,message:"请输入工作区名称",trigger:"blur"},{pattern:/^[a-zA-Z0-9_\-\u4e00-\u9fa5]+$/,message:"名称只能包含字母、数字、下划线、中划线和中文",trigger:"blur"}],projects:[{type:"array",required:!0,min:1,message:"至少需要添加一个项目",trigger:"blur"}]},v=$(()=>n.value.map(e=>({label:e.name,value:e.id}))),h=$(()=>i.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function b(e){d.value.projects.push(Je({fromExisting:e}))}function m(e,a){const t=h.value.find(e=>e.value===a);if(!t)return;const s=d.value.projects[e];s.sourcePath=t.path,s.name=Xe(t.path),s.isGitRepo=t.isGitRepo,s.createWorktree=t.isGitRepo,s.branchMode="existing",s.branch="",s.baseBranch=""}async function f(){try{await(r.value?.validate());for(const t of d.value.projects)if(!t.sourcePath)return void o.error("请填写项目路径");l.value=!0;const e={...d.value,projects:d.value.projects.map(Ye)},a=await we(e);a.success?(o.success("工作区创建成功"),d.value={name:"",description:"",baseDir:"",configTemplateId:null,projects:[]},s("success")):o.error(a.message||"创建失败")}catch(e){const a=e.message||"创建失败";a.includes("\n")?o.warning(a,{duration:8e3}):o.error(a),e.errors}finally{l.value=!1}}return C(c,e=>{e&&async function(){try{const[e,a]=await Promise.all([ge(),ue()]);e.success&&(n.value=e.data||[]),a.success&&(i.value=Array.isArray(a.data)?a.data:[])}catch(e){}}()}),(e,a)=>(j(),x(B(H),{show:c.value,"onUpdate:show":a[8]||(a[8]=e=>c.value=e),preset:"card",title:"创建工作区",style:{width:"650px"},"mask-closable":!1},{footer:R(()=>[k(B(ee),{justify:"end"},{default:R(()=>[k(B(p),{onClick:a[7]||(a[7]=e=>c.value=!1)},{default:R(()=>[...a[12]||(a[12]=[g("取消",-1)])]),_:1}),k(B(p),{type:"primary",onClick:f,loading:l.value},{default:R(()=>[...a[13]||(a[13]=[g("创建",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[k(B(te),{ref_key:"formRef",ref:r,model:d.value,rules:u,"label-placement":"left","label-width":"100"},{default:R(()=>[k(B(ae),{label:"工作区名称",path:"name"},{default:R(()=>[k(B(ce),{value:d.value.name,"onUpdate:value":a[0]||(a[0]=e=>d.value.name=e),placeholder:"输入工作区名称",onKeydown:a[1]||(a[1]=G(I(()=>{},["prevent"]),["enter"]))},null,8,["value"])]),_:1}),k(B(ae),{label:"描述",path:"description"},{default:R(()=>[k(B(ce),{value:d.value.description,"onUpdate:value":a[2]||(a[2]=e=>d.value.description=e),placeholder:"可选描述",type:"textarea",rows:2},null,8,["value"])]),_:1}),k(B(ae),{label:"基础目录",path:"baseDir"},{default:R(()=>[k(B(ce),{value:d.value.baseDir,"onUpdate:value":a[3]||(a[3]=e=>d.value.baseDir=e),placeholder:"留空则使用第一个项目的父目录"},null,8,["value"])]),_:1}),k(B(ae),{label:"配置模板",path:"configTemplateId"},{default:R(()=>[k(B(J),{value:d.value.configTemplateId,"onUpdate:value":a[4]||(a[4]=e=>d.value.configTemplateId=e),options:v.value,placeholder:"选择配置模板",clearable:""},null,8,["value","options"])]),_:1}),k(B(ae),{label:"项目列表",path:"projects"},{default:R(()=>[U("div",ea,[U("div",aa,[k(B(p),{size:"small",dashed:"",onClick:a[5]||(a[5]=e=>b(!1))},{default:R(()=>[...a[9]||(a[9]=[g("添加项目",-1)])]),_:1}),k(B(p),{size:"small",dashed:"",onClick:a[6]||(a[6]=e=>b(!0))},{default:R(()=>[...a[10]||(a[10]=[g("添加已有项目",-1)])]),_:1})]),d.value.projects.length>0?(j(),W("div",ta,[(j(!0),W(S,null,w(d.value.projects,(e,a)=>(j(),x(He,{key:a,project:e,index:a,"existing-options":h.value,onRemove:e=>function(e){d.value.projects.splice(e,1)}(a),onSelectExisting:m},null,8,["project","index","existing-options","onRemove"]))),128))])):(j(),x(B(Q),{key:1,depth:"3",style:{"font-size":"12px"}},{default:R(()=>[...a[11]||(a[11]=[g("请添加至少一个项目",-1)])]),_:1}))])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]))}},[["__scopeId","data-v-4b48727c"]]),oa={class:"form-section"},ra={class:"actions-row"},la=u({__name:"WorkspaceProjectFormModal",props:{show:{type:Boolean,default:!1},workspaceId:{type:String,required:!0}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=M(!1),l=M([]),n=M(Je()),i=$({get:()=>t.show,set:e=>s("update:show",e)}),c=$(()=>l.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function d(){n.value=Je()}function u(){n.value=Je({fromExisting:!1})}function v(){n.value=Je({fromExisting:!0})}function h(e,a){const t=c.value.find(e=>e.value===a);t&&(n.value.selectedKey=a,n.value.sourcePath=t.path,n.value.name=Xe(t.path),n.value.isGitRepo=t.isGitRepo,n.value.createWorktree=t.isGitRepo,n.value.branchMode="existing",n.value.branch="",n.value.baseBranch="",n.value.fromExisting=!0)}async function b(){const e=Ye(n.value);if(e.sourcePath)if(!n.value.createWorktree||"new"!==n.value.branchMode||e.branch){r.value=!0;try{const a=await ke(t.workspaceId,e);if(a.success)return o.success("仓库已添加到工作区"),i.value=!1,d(),void s("success");o.error(a.message||"添加失败")}catch(a){o.error(`添加失败: ${a.message}`)}finally{r.value=!1}}else o.error("请输入新分支名");else o.error("请填写项目路径")}return C(i,e=>{e&&(d(),async function(){try{const e=await ue();e.success&&(l.value=Array.isArray(e.data)?e.data:[])}catch(e){}}())}),(e,a)=>(j(),x(B(H),{show:i.value,"onUpdate:show":a[1]||(a[1]=e=>i.value=e),preset:"card",title:"添加仓库到工作区",style:{width:"620px"},"mask-closable":!1},{footer:R(()=>[k(B(ee),{justify:"end"},{default:R(()=>[k(B(p),{onClick:a[0]||(a[0]=e=>i.value=!1)},{default:R(()=>[...a[4]||(a[4]=[g("取消",-1)])]),_:1}),k(B(p),{type:"primary",loading:r.value,onClick:b},{default:R(()=>[...a[5]||(a[5]=[g("添加",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[U("div",oa,[U("div",ra,[k(B(p),{size:"small",dashed:"",type:n.value.fromExisting?"default":"primary",onClick:u},{default:R(()=>[...a[2]||(a[2]=[g(" 手动填写路径 ",-1)])]),_:1},8,["type"]),k(B(p),{size:"small",dashed:"",type:n.value.fromExisting?"primary":"default",onClick:v},{default:R(()=>[...a[3]||(a[3]=[g(" 选择已有项目 ",-1)])]),_:1},8,["type"])]),k(He,{project:n.value,index:0,"existing-options":c.value,"show-remove-button":!1,onSelectExisting:h},null,8,["project","existing-options"])])]),_:1},8,["show"]))}},[["__scopeId","data-v-16febc8c"]]),na={class:"section-header"},ia={class:"section-title"},ca={key:0,class:"projects-list"},da={class:"proj-name"},pa={class:"proj-path"},ua=u({__name:"WorkspaceDetailModal",props:{show:{type:Boolean,default:!1},workspace:{type:Object,default:null}},emits:["update:show","updated"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=Z(),l=$({get:()=>t.show,set:e=>s("update:show",e)}),n=M(null),i=M(!1);function c(e){return e?new Date(e).toLocaleString("zh-CN"):"-"}async function d(){if(t.workspace?.id)try{const e=await ye(t.workspace.id);e.success&&(n.value=e.data)}catch(e){}}function u(){d(),s("updated")}async function v(e){if(t.workspace?.id)try{const a=await fe(t.workspace.id,e);if(a.success){const e=`cd "${a.data.cwd}" && ${a.data.command}`;if("manual"===(await pe(e))?.method)return void o.warning("自动复制失败,已弹出手动复制框");o.success("启动命令已复制到剪贴板")}else o.error(a.message||"获取命令失败")}catch(a){o.error("获取命令失败: "+a.message)}}return C(l,e=>{e&&t.workspace&&d()}),(a,s)=>(j(),x(B(H),{show:l.value,"onUpdate:show":s[6]||(s[6]=e=>l.value=e),preset:"card",title:"工作区详情",style:{width:"700px"}},{default:R(()=>[e.workspace?(j(),W(S,{key:0},[k(B(Ce),{column:1,bordered:"",size:"small"},{default:R(()=>[k(B($e),{label:"名称"},{default:R(()=>[g(z(e.workspace.name),1)]),_:1}),k(B($e),{label:"描述"},{default:R(()=>[g(z(e.workspace.description||"-"),1)]),_:1}),k(B($e),{label:"路径"},{default:R(()=>[g(z(e.workspace.path),1)]),_:1}),k(B($e),{label:"状态"},{default:R(()=>[k(B(de),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),_:1}),k(B($e),{label:"创建时间"},{default:R(()=>[g(z(c(e.workspace.createdAt)),1)]),_:1}),k(B($e),{label:"最后使用"},{default:R(()=>[g(z(c(e.workspace.lastUsed)),1)]),_:1})]),_:1}),k(B(X)),s[15]||(s[15]=U("div",{class:"section-title"},"启动 CLI 工具",-1)),k(B(ee),null,{default:R(()=>[k(B(p),{type:"primary",size:"small",onClick:s[0]||(s[0]=e=>v("claude")),disabled:!e.workspace.exists},{default:R(()=>[...s[7]||(s[7]=[g(" Claude Code ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"info",size:"small",onClick:s[1]||(s[1]=e=>v("codex")),disabled:!e.workspace.exists},{default:R(()=>[...s[8]||(s[8]=[g(" Codex ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"success",size:"small",onClick:s[2]||(s[2]=e=>v("gemini")),disabled:!e.workspace.exists},{default:R(()=>[...s[9]||(s[9]=[g(" Gemini CLI ",-1)])]),_:1},8,["disabled"]),k(B(p),{type:"warning",size:"small",onClick:s[3]||(s[3]=e=>v("omp")),disabled:!e.workspace.exists},{default:R(()=>[...s[10]||(s[10]=[g(" OMP ",-1)])]),_:1},8,["disabled"])]),_:1}),k(B(Q),{depth:"3",style:{display:"block","margin-top":"6px","font-size":"11px"}},{default:R(()=>[...s[11]||(s[11]=[g(" 点击按钮将复制启动命令到剪贴板 ",-1)])]),_:1}),k(B(X)),U("div",na,[U("div",ia,"包含项目 ("+z(n.value?.projects?.length||0)+")",1),k(B(p),{size:"small",type:"primary",ghost:"",disabled:!n.value?.exists,onClick:s[4]||(s[4]=e=>i.value=!0)},{default:R(()=>[...s[12]||(s[12]=[g(" 添加仓库 ",-1)])]),_:1},8,["disabled"])]),n.value?.projects?.length?(j(),W("div",ca,[(j(!0),W(S,null,w(n.value.projects,(e,a)=>(j(),W("div",{class:"project-row",key:a},[k(B(de),{type:e.sourceExists?"success":"error",size:"small"},{default:R(()=>[g(z(e.sourceExists?"[v]":"[x]"),1)]),_:2},1032,["type"]),U("span",da,z(e.name),1),U("span",pa,z(e.sourcePath),1),e.useWorktree?(j(),x(B(de),{key:0,type:"info",size:"small"},{default:R(()=>[...s[13]||(s[13]=[g("worktree",-1)])]),_:1})):f("",!0),k(B(p),{text:"",size:"small",type:"error",onClick:a=>{return s=e,void(t.workspace?.id&&r.warning({title:"确认移除仓库",content:`确定要从工作区移除 "${s.name}" 吗?`,positiveText:"移除",negativeText:"取消",onPositiveClick:async()=>{try{const e=await be(t.workspace.id,s.name);if(e.success)return o.success("仓库已移除"),void u();o.error(e.message||"移除失败")}catch(e){o.error(`移除失败: ${e.message}`)}}}));var s}},{default:R(()=>[...s[14]||(s[14]=[g(" 移除 ",-1)])]),_:1},8,["onClick"])]))),128))])):(j(),x(B(ne),{key:1,description:"暂无项目",size:"small"}))],64)):f("",!0),k(la,{show:i.value,"onUpdate:show":s[5]||(s[5]=e=>i.value=e),"workspace-id":t.workspace?.id||"",onSuccess:u},null,8,["show","workspace-id"])]),_:1},8,["show"]))}},[["__scopeId","data-v-1ee80e2a"]]),va={key:0,class:"panel-header"},ha={class:"header-left"},ba={class:"header-right"},ma={key:1,class:"drawer-header-bar"},fa={class:"header-right"},ga={class:"stats-bar"},wa={class:"stats-text"},ya={class:"filter-bar"},ka={class:"panel-content"},xa={key:0,class:"empty-state"},_a={key:1,class:"card-list"},ja={class:"panel-footer"},Ca=u({__name:"WorkspacePanel",props:{inDrawer:{type:Boolean,default:!1},hideBack:{type:Boolean,default:!1},drawerVisible:{type:Boolean,default:!1}},emits:["back","updated"],setup(e,{emit:a}){const t=e,s=a,o=V(),r=Z(),l=M(!1),n=M([]),i=M(""),d=M(!1),u=M(!1),v=M(null),h=$(()=>{if(!i.value.trim())return n.value;const e=i.value.toLowerCase();return n.value.filter(a=>a.name?.toLowerCase().includes(e)||a.description?.toLowerCase().includes(e)||a.path?.toLowerCase().includes(e))});async function b(){l.value=!0;try{const e=await ve();e.success&&(n.value=e.data||[])}catch(e){o.error("加载工作区失败: "+e.message)}finally{l.value=!1}}function m(e){v.value=e,u.value=!0}function y(e){r.warning({title:"确认删除",content:`确定要删除工作区"${e.name}"吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{const a=await he(e.id,!1);a.success?(o.success("删除成功"),b(),s("updated")):o.error(a.message||"删除失败")}catch(a){o.error("删除失败: "+a.message)}}})}function I(){d.value=!1,b(),s("updated")}return _(()=>b()),C(()=>t.drawerVisible,e=>{e&&b()}),(a,t)=>(j(),W("div",{class:P(["workspace-panel",{"in-drawer":e.inDrawer}])},[e.inDrawer?f("",!0):(j(),W("div",va,[U("div",ha,[e.hideBack?f("",!0):(j(),x(B(p),{key:0,text:"",onClick:t[0]||(t[0]=e=>a.$emit("back")),class:"back-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(A))]),_:1})]),_:1})),t[7]||(t[7]=U("span",{class:"panel-title"},"工作区管理",-1))]),U("div",ba,[k(B(p),{text:"",onClick:t[1]||(t[1]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(E))]),_:1})]),default:R(()=>[t[8]||(t[8]=g(" 创建 ",-1))]),_:1}),k(B(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(N))]),_:1})]),default:R(()=>[t[9]||(t[9]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])),e.inDrawer?(j(),W("div",ma,[U("div",fa,[k(B(p),{text:"",onClick:t[2]||(t[2]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(E))]),_:1})]),default:R(()=>[t[10]||(t[10]=g(" 创建 ",-1))]),_:1}),k(B(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(B(c),null,{default:R(()=>[k(B(N))]),_:1})]),default:R(()=>[t[11]||(t[11]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])):f("",!0),U("div",ga,[U("span",wa," 共 "+z(n.value.length)+" 个工作区 ",1)]),U("div",ya,[k(B(ce),{value:i.value,"onUpdate:value":t[3]||(t[3]=e=>i.value=e),placeholder:"搜索工作区...",clearable:"",size:"small",class:"search-input"},{prefix:R(()=>[k(B(c),null,{default:R(()=>[k(B(F))]),_:1})]),_:1},8,["value"])]),U("div",ka,[k(B(se),{show:l.value},{default:R(()=>[0!==h.value.length||l.value?(j(),W("div",_a,[(j(!0),W(S,null,w(h.value,e=>(j(),x(Ee,{key:e.id,workspace:e,onClick:m,onView:m,onDelete:y},null,8,["workspace"]))),128))])):(j(),W("div",xa,[k(B(ne),{description:"暂无工作区"},{icon:R(()=>[k(B(c),{size:"48",color:"var(--text-quaternary)"},{default:R(()=>[k(B(O))]),_:1})]),extra:R(()=>[k(B(p),{size:"small",onClick:t[4]||(t[4]=e=>d.value=!0)},{default:R(()=>[...t[12]||(t[12]=[g("创建第一个工作区",-1)])]),_:1})]),_:1})]))]),_:1},8,["show"])]),U("div",ja,[k(B(c),{size:"14",class:"info-icon"},{default:R(()=>[k(B(T))]),_:1}),t[13]||(t[13]=U("span",null,"工作区用于管理多个项目的统一开发环境",-1))]),k(sa,{show:d.value,"onUpdate:show":t[5]||(t[5]=e=>d.value=e),onSuccess:I},null,8,["show"]),k(ua,{show:u.value,"onUpdate:show":t[6]||(t[6]=e=>u.value=e),workspace:v.value,onUpdated:b},null,8,["show","workspace"])],2))}},[["__scopeId","data-v-da5160b9"]]);export{Ca as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.header-button[data-v-b515354d]{border:1px solid var(--border-primary);background:var(--bg-elevated);cursor:pointer;border-radius:999px;outline:none;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:all .2s;display:inline-flex;box-shadow:0 10px 24px #0f171d14}.header-button[data-v-b515354d] .n-icon{color:var(--text-tertiary);transition:all .2s}.header-button[data-v-b515354d]:hover:not(.disabled){background:color-mix(in srgb, var(--bg-elevated) 90%, var(--primary-color) 10%);border-color:#18a0583d;box-shadow:0 14px 30px #0f171d1f}.header-button[data-v-b515354d]:hover:not(.disabled) .n-icon{color:var(--primary-color,#18a058)}.header-button[data-v-b515354d]:active:not(.disabled){transform:scale(.95)}.header-button.active[data-v-b515354d]{background:linear-gradient(135deg,#18a05824,#18a0580f);border-color:#18a05852}.header-button.active[data-v-b515354d] .n-icon{color:#18a058!important}.header-button.disabled[data-v-b515354d]{cursor:not-allowed;opacity:.5}[data-theme=dark] .header-button[data-v-b515354d]{box-shadow:none;background:#0d171eeb;border-color:#364c56e6}[data-theme=dark] .header-button[data-v-b515354d]:hover:not(.disabled){background:#14222afa;border-color:#18a05847;box-shadow:0 0 0 1px #18a05814}.modal-header[data-v-7ea71ef7]{align-items:center;gap:10px;display:flex}.warning-icon[data-v-7ea71ef7]{color:#f59e0b}.header-title[data-v-7ea71ef7]{color:var(--text-primary);font-size:16px;font-weight:600}.modal-content[data-v-7ea71ef7]{padding:4px 0}.desc-text[data-v-7ea71ef7]{color:var(--text-secondary);margin:0 0 16px;font-size:13px;line-height:1.6}.conflict-list[data-v-7ea71ef7]{background:var(--bg-tertiary);border-radius:6px;padding:12px}.list-header[data-v-7ea71ef7]{border-bottom:1px solid var(--border-primary);align-items:center;gap:12px;margin-bottom:10px;padding-bottom:10px;display:flex}.selected-hint[data-v-7ea71ef7]{color:var(--text-tertiary);font-size:12px}.conflict-items[data-v-7ea71ef7]{flex-direction:column;gap:8px;display:flex}.conflict-item[data-v-7ea71ef7]{background:var(--bg-secondary);cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:flex-start;gap:10px;padding:10px 12px;transition:all .15s;display:flex}.conflict-item[data-v-7ea71ef7]:hover{background:#18a05805;border-color:#18a05866}.conflict-item.selected[data-v-7ea71ef7]{background:#18a0580f;border-color:#18a058}.item-content[data-v-7ea71ef7]{flex:1;min-width:0}.item-header[data-v-7ea71ef7]{align-items:center;gap:8px;margin-bottom:4px;display:flex}.var-name[data-v-7ea71ef7]{color:var(--text-primary);background:var(--bg-tertiary);border-radius:4px;padding:2px 6px;font-size:13px;font-weight:600}.var-value[data-v-7ea71ef7]{color:var(--text-secondary);word-break:break-all;margin-bottom:4px;font-family:SF Mono,Monaco,monospace;font-size:12px}.var-source[data-v-7ea71ef7]{color:var(--text-tertiary);font-size:11px}.source-label[data-v-7ea71ef7]{color:var(--text-quaternary)}.modal-footer[data-v-7ea71ef7]{justify-content:flex-end;gap:8px;display:flex}.process-env-alert[data-v-7ea71ef7]{margin-bottom:16px}.alert-content[data-v-7ea71ef7]{font-size:12px;line-height:1.6}.alert-title[data-v-7ea71ef7]{margin:0 0 8px;font-weight:500}.alert-list[data-v-7ea71ef7]{margin:0;padding-left:20px}.alert-list li[data-v-7ea71ef7]{margin:4px 0}.alert-list code[data-v-7ea71ef7]{background:var(--bg-tertiary);color:#18a058;border-radius:4px;padding:2px 6px;font-family:SF Mono,Monaco,monospace;font-size:11px}.alert-hint[data-v-7ea71ef7]{color:var(--text-tertiary);margin:8px 0 0;font-size:11px}.channel-card[data-v-beb1848e]{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:8px;transition:all .2s}.channel-card[data-v-beb1848e]:hover{border-color:var(--border-secondary)}.channel-header[data-v-beb1848e]{border-bottom:1px solid var(--border-primary);justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.channel-title[data-v-beb1848e]{flex:auto;align-items:center;gap:6px;min-width:0;margin-right:0;display:flex}.channel-name[data-v-beb1848e]{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.channel-title[data-v-beb1848e] .n-tag{flex-shrink:0;padding:0 5px;font-size:11px}.collapse-btn[data-v-beb1848e]{flex-shrink:0}.collapse-btn .n-icon.collapsed[data-v-beb1848e]{transform:rotate(-90deg)}.channel-actions[data-v-beb1848e]{flex-wrap:nowrap;flex:none;justify-content:flex-end;align-items:center;gap:4px;max-width:100%;margin-left:auto;display:flex}.channel-actions[data-v-beb1848e] .n-button{min-width:0;height:22px;padding:0 5px;font-size:11px}.channel-actions[data-v-beb1848e] .n-button__content{gap:2px}.channel-actions[data-v-beb1848e] .n-button__icon{margin:0}.apply-btn[data-v-beb1848e]{display:none}.channel-card:hover .apply-btn[data-v-beb1848e]{display:inline-flex}.test-result[data-v-beb1848e]{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);padding:10px 16px}.test-result.success[data-v-beb1848e]{background:#18a0580f;border-left:3px solid #18a058}.test-result.failed[data-v-beb1848e]{background:#f56c6c0f;border-left:3px solid #f56c6c}.test-result.warning[data-v-beb1848e]{background:#d990000f;border-left:3px solid #d99000}.test-result-header[data-v-beb1848e]{align-items:center;gap:12px;display:flex}.test-result-status[data-v-beb1848e]{align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.test-result.success .test-result-status[data-v-beb1848e]{color:#18a058}.test-result.failed .test-result-status[data-v-beb1848e]{color:#f56c6c}.test-result.warning .test-result-status[data-v-beb1848e]{color:#b87900}.test-result-info[data-v-beb1848e]{flex:1;align-items:center;gap:10px;display:flex}.test-result-info .latency[data-v-beb1848e]{color:var(--text-primary);background:var(--bg-tertiary);border-radius:4px;padding:2px 8px;font-family:SF Mono,Monaco,monospace;font-size:13px;font-weight:600}.test-result-info .status-code[data-v-beb1848e]{color:var(--text-tertiary);font-family:SF Mono,Monaco,monospace;font-size:11px}.test-result-error[data-v-beb1848e]{color:#f56c6c;word-break:break-word;background:#f56c6c14;border-radius:4px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.test-result-warning[data-v-beb1848e]{color:#9b6800;word-break:break-word;background:#d9900014;border-radius:4px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.channel-info[data-v-beb1848e]{padding:12px 16px}.info-main[data-v-beb1848e]{flex-direction:column;gap:8px;display:flex}.info-row[data-v-beb1848e]{align-items:center;gap:12px;display:flex}.info-row .label[data-v-beb1848e]{min-width:80px;font-size:13px}.info-row .value[data-v-beb1848e]{flex:1;font-size:13px}.info-row .value.mono[data-v-beb1848e]{font-family:SF Mono,Monaco,monospace}.info-footer[data-v-beb1848e]{border-top:1px solid var(--border-primary);justify-content:space-between;align-items:center;margin-top:12px;padding-top:8px;display:flex}.footer-spacer[data-v-beb1848e]{flex:1}.channel-meta[data-v-beb1848e]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;font-size:12px;display:flex}.balance-meta-tag[data-v-beb1848e]{cursor:pointer;flex-shrink:0;max-width:110px}.balance-meta-tag[data-v-beb1848e] .n-tag__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meta-item[data-v-beb1848e]{color:var(--text-tertiary);white-space:nowrap}.meta-value[data-v-beb1848e]{color:var(--text-secondary);font-weight:500}.meta-active[data-v-beb1848e]{color:#18a058}@media (width<=1024px){.channel-header[data-v-beb1848e],.channel-info[data-v-beb1848e]{padding:10px 12px}.channel-actions[data-v-beb1848e]{gap:6px}.info-row[data-v-beb1848e]{gap:8px}.info-row .label[data-v-beb1848e]{min-width:70px;font-size:12px}.info-row .value[data-v-beb1848e]{font-size:12px}.channel-meta[data-v-beb1848e]{gap:12px}}@media (width<=768px){.channel-header[data-v-beb1848e]{flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px}.channel-title[data-v-beb1848e]{margin-right:0}.channel-actions[data-v-beb1848e]{justify-content:space-between}.channel-actions[data-v-beb1848e] .n-button{padding:0 8px;font-size:12px}.channel-info[data-v-beb1848e]{padding:8px 10px}.info-row[data-v-beb1848e]{flex-direction:column;align-items:flex-start;gap:4px}.info-row .label[data-v-beb1848e]{min-width:auto}.info-footer[data-v-beb1848e]{flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px}.channel-meta[data-v-beb1848e]{justify-content:flex-start;align-self:stretch;gap:8px 12px}}@media (width<=640px){.channel-card[data-v-beb1848e]{border-radius:6px}.channel-header[data-v-beb1848e]{padding:6px 8px}.channel-name[data-v-beb1848e]{min-width:0;font-size:12px}.channel-title[data-v-beb1848e]{min-width:0}.channel-title[data-v-beb1848e] .n-tag{font-size:10px}.channel-info[data-v-beb1848e]{padding:6px 8px}.info-row .label[data-v-beb1848e],.info-row .value[data-v-beb1848e]{font-size:11px}.channel-actions[data-v-beb1848e] .n-button{height:24px;padding:0 6px;font-size:11px}.channel-meta[data-v-beb1848e]{font-size:11px}}@media (width<=480px){.channel-header[data-v-beb1848e],.channel-info[data-v-beb1848e]{padding:4px 6px}.channel-actions[data-v-beb1848e]{gap:4px}.channel-actions[data-v-beb1848e] .n-button{min-width:0;height:22px;padding:0 4px;font-size:10px}}.model-redirect-editor[data-v-8ebdcad0]{width:100%}.redirect-row[data-v-8ebdcad0]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.redirect-input[data-v-8ebdcad0]{flex:1;min-width:0}.redirect-arrow[data-v-8ebdcad0]{flex-shrink:0;justify-content:center;align-items:center;width:24px;display:flex}.add-btn[data-v-8ebdcad0]{width:100%;margin-top:4px}.channel-auth-section[data-v-8fcf77d4]{gap:10px;width:100%;display:grid}.oauth-content[data-v-8fcf77d4],.oauth-quota[data-v-8fcf77d4]{gap:8px;display:grid}.oauth-meta[data-v-8fcf77d4]{color:var(--text-color-3)}.oauth-quota[data-v-8fcf77d4]{grid-template-columns:repeat(3,auto);align-items:center}.loading-container{justify-content:center;align-items:center;padding:80px 0;display:flex}.empty-state{justify-content:center;align-items:center;min-height:200px;display:flex}.model-catalog-control{flex-wrap:wrap;align-items:center;gap:6px 8px;margin:-3px 0 10px;font-size:12px;line-height:1.45;display:flex}.model-catalog-status{color:var(--n-text-color-3)}.model-catalog-status.is-loading{color:var(--n-info-color,var(--n-text-color-3))}.model-catalog-status.is-error{color:var(--n-error-color,#d03050)}.channels-list{flex-direction:column;gap:10px;display:flex;position:relative;overflow:hidden}.channel-card{border:1px solid var(--n-divider-color);background:var(--bg-secondary);border-left:3px solid #18a058;border-radius:6px;padding:10px 12px;transition:all .2s;box-shadow:0 1px 2px #0000000a}.channel-card.active{border-color:var(--n-primary-color);background:var(--n-primary-color-suppl,#18a05814);box-shadow:0 2px 8px #18a0581a}.channel-card:hover{border-color:var(--n-border-color);box-shadow:0 2px 8px #00000014}.channel-card.disabled{opacity:.6;border-left-color:#909399}.channel-card.status-frozen{background:linear-gradient(90deg,#d0305014 0%,#0000 100%);border-left-color:#d03050}.channel-card.status-checking{background:linear-gradient(90deg,#f0a02014 0%,#0000 100%);border-left-color:#f0a020}.channel-card.collapsed .channel-info{display:none}.channel-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.channel-title{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.channel-name{color:var(--n-text-color);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.channel-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.channel-actions .apply-btn{opacity:0;transition:opacity .2s}.channel-card:hover .channel-actions .apply-btn{opacity:1}.channel-actions .n-switch{margin-left:2px}.channel-info{border-top:1px dashed var(--n-border-color);margin-top:8px;padding-top:8px}.info-main{flex-direction:column;gap:4px;display:flex}.info-row{align-items:center;gap:8px;display:flex}.label{color:var(--n-text-color-3);flex-shrink:0;width:56px;font-size:11px}.value{color:var(--n-text-color-2);word-break:break-word;flex:1;font-size:12px}.value.mono{font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace}.info-footer{border-top:1px dashed var(--n-border-color);align-items:center;gap:8px;margin-top:6px;padding-top:6px;display:flex}.footer-spacer{flex:1}.channel-meta{flex-shrink:0;gap:12px;display:flex}.meta-item{color:var(--n-text-color-3);white-space:nowrap;font-size:11px}.meta-value{color:#18a058;font-weight:600}.meta-value.meta-active{color:#f0a020;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.collapse-btn{align-items:center;padding:0;display:flex}.collapse-btn .n-icon{transition:transform .2s}.collapse-btn .n-icon.collapsed{transform:rotate(-90deg)}.dialog-footer{justify-content:flex-end;gap:8px;display:flex}.channel-form{padding:0}.form-section{background:var(--n-color);border:1px solid var(--n-border-color);border-radius:6px;margin-bottom:10px;padding:12px}.form-section:last-child{margin-bottom:0}.section-title{color:var(--n-text-color);border-bottom:1px solid var(--n-border-color);align-items:center;gap:6px;margin-bottom:10px;padding-bottom:6px;font-size:12px;font-weight:600;display:flex}.section-desc{color:var(--n-text-color-3);font-size:11px;font-weight:400}.form-section.collapsible{background:var(--n-color-hover)}.channel-form .n-radio-group{width:100%}.channel-form .n-radio-group .n-space{gap:16px;width:100%;display:flex}.channel-form .n-radio{border:1px solid var(--n-border-color);border-radius:6px;flex:1;justify-content:center;padding:8px 16px;transition:all .2s;display:flex}.channel-form .n-radio:hover,.channel-form .n-radio.n-radio--checked{border-color:var(--n-primary-color);background:var(--n-primary-color-suppl,#18a05814)}.channel-form .n-form-item{margin-bottom:10px}.channel-form .n-form-item:last-child{margin-bottom:0}.channel-form .n-form-item-label{padding-bottom:0;font-size:12px}.auth-provider-status{flex-direction:column;justify-content:center;gap:6px;width:100%;min-height:28px;display:flex}.auth-provider-tags{min-height:24px}.auth-provider-message{color:var(--n-text-color-3);font-size:12px;line-height:1.45}.auth-provider-message.warning{color:#c97a00}.model-definitions-editor[data-v-20fbf737]{width:100%}.model-definitions-toolbar[data-v-20fbf737]{align-items:center;gap:10px;margin-bottom:8px;display:flex}.proxy-logs[data-v-1d31e3d2]{background:#fff;border-top:1px solid #e5e7eb;flex-direction:column;height:100%;display:flex}[data-theme=dark] .proxy-logs[data-v-1d31e3d2]{background:var(--bg-secondary);border-top:1px solid var(--border-primary)}.logs-header[data-v-1d31e3d2]{border-bottom:1px solid #e5e7eb;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}[data-theme=dark] .logs-header[data-v-1d31e3d2]{border-bottom:1px solid var(--border-primary)}.header-left[data-v-1d31e3d2]{align-items:center;gap:12px;display:flex}.title[data-v-1d31e3d2]{color:#18181b;margin:0;font-size:14px;font-weight:600}[data-theme=dark] .title[data-v-1d31e3d2]{color:var(--text-primary)}.today-stats[data-v-1d31e3d2]{align-items:center;gap:6px;display:flex}.today-stats[data-v-1d31e3d2] .n-tag{padding:2px 8px;font-size:11px;font-weight:600}.logs-table[data-v-1d31e3d2]{flex-direction:column;flex:1;display:flex;overflow:hidden}.table-header[data-v-1d31e3d2]{color:#6b7280;white-space:nowrap;background:#f9fafb;border-bottom:1px solid #e5e7eb;flex-shrink:0;padding:8px 12px;font-size:11px;font-weight:600;display:flex}[data-theme=dark] .table-header[data-v-1d31e3d2]{border-bottom:1px solid var(--border-primary);color:var(--text-tertiary);background:#ffffff05}.table-body[data-v-1d31e3d2]{flex:1;min-height:0;padding-bottom:40px;scroll-padding-bottom:40px;overflow:hidden auto}.table-row[data-v-1d31e3d2]{cursor:pointer;border-bottom:1px solid #f3f4f6;padding:8px 12px;font-size:12px;transition:background-color .2s;display:flex;position:relative}[data-theme=dark] .table-row[data-v-1d31e3d2]{border-bottom:1px solid #ffffff0a}.table-row[data-v-1d31e3d2]:hover{background:#f9fafb}[data-theme=dark] .table-row[data-v-1d31e3d2]:hover{background:#ffffff0a}.table-row.new-log[data-v-1d31e3d2],.action-row.new-log[data-v-1d31e3d2]{border-left:3px solid #18a058;padding-left:9px;animation:4.5s cubic-bezier(.25,.46,.45,.94) forwards newLogPulse-1d31e3d2}@keyframes newLogPulse-1d31e3d2{0%{background:linear-gradient(90deg,#18a05826 0%,#18a0580f 100%);box-shadow:0 0 8px #18a05833}5%{background:linear-gradient(90deg,#18a0582e 0%,#18a05814 100%);box-shadow:0 0 12px 1px #18a05840}15%{background:linear-gradient(90deg,#18a05829 0%,#18a05812 100%);box-shadow:0 0 10px 1px #18a05833}30%{background:linear-gradient(90deg,#18a0581f 0%,#18a0580d 100%);box-shadow:0 0 6px #18a05826}50%{background:linear-gradient(90deg,#18a05814 0%,#18a05808 100%);box-shadow:0 0 4px #18a0581a}70%{background:linear-gradient(90deg,#18a0580a 0%,#18a05804 100%);box-shadow:0 0 2px #18a0580f}85%{background:linear-gradient(90deg,#18a05805 0%,#18a05802 100%);box-shadow:0 0 1px #18a05808}to{background:0 0;border-left-color:#0000;box-shadow:0 0 #18a05800}}[data-theme=dark] .table-row.new-log[data-v-1d31e3d2],[data-theme=dark] .action-row.new-log[data-v-1d31e3d2]{animation:4.5s cubic-bezier(.25,.46,.45,.94) forwards newLogPulseDark-1d31e3d2}@keyframes newLogPulseDark-1d31e3d2{0%{background:linear-gradient(90deg,#18a05833 0%,#18a05814 100%);box-shadow:0 0 10px #18a05840}5%{background:linear-gradient(90deg,#18a0583d 0%,#18a0581a 100%);box-shadow:0 0 14px 2px #18a0584d}15%{background:linear-gradient(90deg,#18a05836 0%,#18a05817 100%);box-shadow:0 0 12px 1px #18a05840}30%{background:linear-gradient(90deg,#18a05829 0%,#18a05812 100%);box-shadow:0 0 8px 1px #18a0582e}50%{background:linear-gradient(90deg,#18a0581c 0%,#18a0580b 100%);box-shadow:0 0 5px #18a0581f}70%{background:linear-gradient(90deg,#18a0580f 0%,#18a05806 100%);box-shadow:0 0 3px #18a05814}85%{background:linear-gradient(90deg,#18a05808 0%,#18a05803 100%);box-shadow:0 0 1px #18a0580a}to{background:0 0;border-left-color:#0000;box-shadow:0 0 #18a05800}}.table-row-content[data-v-1d31e3d2]{width:100%;display:flex}.action-row[data-v-1d31e3d2]{color:#166534;background:#f0fdf4;border-bottom:1px solid #f3f4f6;border-left:3px solid #18a058;align-items:center;padding:10px 12px;font-size:13px;display:flex}[data-theme=dark] .action-row[data-v-1d31e3d2]{color:#4ade80;background:#18a0581f;border-bottom:1px solid #ffffff0a}.error-row[data-v-1d31e3d2]{color:#b42318;background:#fef2f2;border-bottom:1px solid #f3f4f6;border-left:3px solid #d03050;align-items:center;padding:10px 12px;font-size:13px;display:flex}[data-theme=dark] .error-row[data-v-1d31e3d2]{color:#fda4af;background:#d030501f;border-bottom:1px solid #ffffff0a}.action-message[data-v-1d31e3d2]{flex:1;font-weight:500}.action-time[data-v-1d31e3d2]{color:#6b7280;margin-left:12px;margin-right:22px;font-family:monospace;font-size:11px}[data-theme=dark] .action-time[data-v-1d31e3d2]{color:var(--text-tertiary)}.col[data-v-1d31e3d2]{white-space:nowrap;text-overflow:ellipsis;align-items:center;display:flex;overflow:hidden}.col-channel-claude[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-claude[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-claude[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-codex[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-codex[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-codex[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-gemini[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-gemini[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-gemini[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-opencode[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-opencode[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-opencode[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-omp[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-omp[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-omp[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-basic[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-basic[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-basic[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel[data-v-1d31e3d2]{min-width:0;overflow:hidden}.col-channel .n-tag[data-v-1d31e3d2]{text-overflow:ellipsis;max-width:100%;overflow:hidden}.col-token[data-v-1d31e3d2]{justify-content:center;min-width:0}.col-time[data-v-1d31e3d2]{justify-content:flex-end;font-family:monospace;font-size:11px}.empty-state[data-v-1d31e3d2]{text-align:center;color:#9ca3af;padding:40px 16px;font-size:13px}[data-theme=dark] .empty-state[data-v-1d31e3d2]{color:var(--text-tertiary)}.logs-footer[data-v-1d31e3d2]{color:#6b7280;border-top:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:8px 16px;font-size:12px;display:flex}[data-theme=dark] .logs-footer[data-v-1d31e3d2]{border-top:1px solid var(--border-primary);color:var(--text-tertiary)}.status[data-v-1d31e3d2]{color:#ef4444;align-items:center;gap:4px;display:flex}.status.connected[data-v-1d31e3d2]{color:#10b981}[data-theme=dark] .status.connected[data-v-1d31e3d2]{color:#4ade80}.count[data-v-1d31e3d2]{color:#6b7280}[data-theme=dark] .count[data-v-1d31e3d2]{color:var(--text-tertiary)}@media (width<=1024px){.logs-header[data-v-1d31e3d2]{padding:10px 12px}.header-left[data-v-1d31e3d2]{gap:8px}.title[data-v-1d31e3d2]{font-size:13px}.today-stats[data-v-1d31e3d2] .n-tag{padding:1px 6px;font-size:10px}.table-header[data-v-1d31e3d2]{padding:6px 10px;font-size:10px}.table-row[data-v-1d31e3d2]{padding:6px 10px}.logs-footer[data-v-1d31e3d2]{padding:6px 12px;font-size:11px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 75px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 55px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 80px;min-width:80px}.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2]{flex:0 0 65px}.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2]{flex:0 0 48px}.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2]{flex:0 0 75px;min-width:75px}}@media (width<=768px){.logs-header[data-v-1d31e3d2]{flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px}.header-left[data-v-1d31e3d2]{justify-content:space-between}.title[data-v-1d31e3d2]{font-size:12px}.today-stats[data-v-1d31e3d2] .n-tag{padding:1px 4px;font-size:9px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:4px 8px;font-size:10px}.table-row-content[data-v-1d31e3d2]{font-size:10px}.action-row[data-v-1d31e3d2]{padding:8px 10px;font-size:11px}.action-message[data-v-1d31e3d2]{font-size:11px}.action-time[data-v-1d31e3d2]{margin-right:12px;font-size:9px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 60px}.col-channel[data-v-1d31e3d2] .n-tag{height:18px;padding:0 4px;font-size:9px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 40px;font-size:9px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 65px;min-width:65px;font-size:9px}.logs-footer[data-v-1d31e3d2]{padding:4px 10px;font-size:10px}}@media (width<=640px){.logs-header[data-v-1d31e3d2]{gap:6px;padding:6px 8px}.header-left[data-v-1d31e3d2]{flex-wrap:wrap;gap:4px}.title[data-v-1d31e3d2]{font-size:11px}.today-stats[data-v-1d31e3d2]{gap:4px}.today-stats[data-v-1d31e3d2] .n-tag{height:16px;padding:0 3px;font-size:8px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:3px 6px;font-size:9px}.table-row-content[data-v-1d31e3d2]{font-size:9px}.action-row[data-v-1d31e3d2]{padding:6px 8px;font-size:10px}.action-message[data-v-1d31e3d2]{font-size:10px}.action-time[data-v-1d31e3d2]{margin-left:8px;margin-right:8px;font-size:8px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 50px}.col-channel[data-v-1d31e3d2] .n-tag{height:16px;padding:0 3px;font-size:8px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 32px;font-size:8px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 55px;min-width:55px;font-size:8px}.logs-footer[data-v-1d31e3d2]{padding:3px 8px;font-size:9px}.status[data-v-1d31e3d2],.count[data-v-1d31e3d2]{font-size:9px}}@media (width<=480px){.logs-header[data-v-1d31e3d2]{padding:4px 6px}.title[data-v-1d31e3d2]{font-size:10px}.today-stats[data-v-1d31e3d2] .n-tag{height:14px;font-size:7px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:2px 4px;font-size:8px}.action-row[data-v-1d31e3d2]{padding:4px 6px;font-size:9px}.action-row[data-v-1d31e3d2] .n-icon{margin-right:4px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 45px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 28px;font-size:7px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 48px;min-width:48px;font-size:7px}.logs-footer[data-v-1d31e3d2]{padding:2px 6px;font-size:8px}}.right-panel[data-v-71b20d97]{background:var(--bg-primary);border-left:1px solid var(--border-primary);flex-direction:column;width:480px;min-width:480px;height:100%;display:flex}.toolbar-section[data-v-71b20d97]{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.toolbar-left[data-v-71b20d97]{align-items:center;gap:8px;display:flex}.toolbar-label[data-v-71b20d97]{margin-right:2px;font-size:12px}.toolbar-right[data-v-71b20d97]{align-items:center;gap:2px;display:flex}.toolbar-btn[data-v-71b20d97]{--toolbar-button-text:var(--text-secondary);border-radius:4px;transition:transform .18s cubic-bezier(.4,0,.2,1);--n-text-color:var(--toolbar-button-text)!important;--n-text-color-hover:var(--toolbar-button-text)!important;--n-text-color-pressed:var(--toolbar-button-text)!important;--n-text-color-focus:var(--toolbar-button-text)!important;--n-color-hover:transparent!important;--n-color-pressed:transparent!important;--n-color-focus:transparent!important;color:var(--toolbar-button-text)!important;padding:5px!important}.toolbar-btn[data-v-71b20d97] .n-button__content,.toolbar-btn[data-v-71b20d97] .n-button__icon{color:var(--toolbar-button-text)!important}.toolbar-btn[data-v-71b20d97]:hover,.toolbar-btn[data-v-71b20d97]:focus,.toolbar-btn[data-v-71b20d97]:focus-visible,.toolbar-btn[data-v-71b20d97]:active{background:0 0;transform:translateY(-1px);color:var(--toolbar-button-text)!important}.toolbar-btn[data-v-71b20d97]:active{transform:translateY(0)}.toolbar-divider[data-v-71b20d97]{background:var(--border-primary);width:1px;height:16px;margin:0 4px}.oauth-banner[data-v-71b20d97]{color:#2080f0;background:#2080f014;border-bottom:1px solid #2080f033;flex-shrink:0;align-items:center;gap:6px;padding:6px 14px;font-size:12px;display:flex}.oauth-banner span[data-v-71b20d97]{flex:1}.channels-section[data-v-71b20d97]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.channels-section.full-height[data-v-71b20d97]{flex:1}.panel-header[data-v-71b20d97]{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.header-title[data-v-71b20d97]{align-items:baseline;gap:8px;min-width:0;display:flex}.header-title h3[data-v-71b20d97]{color:var(--text-primary);margin:0;font-size:13px;font-weight:600}.header-hint[data-v-71b20d97]{font-size:11px}.header-actions[data-v-71b20d97]{flex-shrink:0;align-items:center;gap:8px;display:flex}.channels-scroll-area[data-v-71b20d97]{flex:1;min-height:0;padding:12px;overflow-y:auto}.logs-section[data-v-71b20d97]{flex:0 0 340px;min-height:340px;max-height:340px;overflow:hidden}.logs-section.full-height[data-v-71b20d97]{flex:1;min-height:0;max-height:none}@media (width<=1024px){.right-panel[data-v-71b20d97]{width:420px;min-width:420px}.logs-section[data-v-71b20d97]{flex:0 0 300px;min-height:300px;max-height:300px}}@media (width<=768px){.right-panel[data-v-71b20d97]{width:100%;min-width:100%}.toolbar-section[data-v-71b20d97]{padding:8px 12px}.toolbar-label[data-v-71b20d97]{font-size:11px}.logs-section[data-v-71b20d97]{flex:0 0 260px;min-height:260px;max-height:260px}}@media (height<=600px){.right-panel[data-v-71b20d97]{overflow-y:auto}.channels-section[data-v-71b20d97]{flex:0 0 360px;min-height:360px}.logs-section[data-v-71b20d97]{flex:0 0 260px}}.layout[data-v-182ef64e]{background:var(--bg-primary);flex-direction:column;height:100vh;display:flex}.header[data-v-182ef64e]{background:var(--gradient-header);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;height:74px;padding:10px 22px;display:flex;box-shadow:inset 0 1px #ffffff57}.header-actions[data-v-182ef64e]{background:color-mix(in srgb, var(--bg-primary) 82%, transparent);border:1px solid var(--border-primary);border-radius:999px;align-items:center;gap:8px;padding:6px 10px;display:flex;box-shadow:0 14px 34px #0f171d14}.more-menu-trigger[data-v-182ef64e]{display:flex}.header-divider[data-v-182ef64e]{background:#95a7af59;width:1px;height:24px;margin:0 2px}.env-warning-btn[data-v-182ef64e]{cursor:pointer;background:#f59e0b1a;border-radius:4px;align-items:center;gap:4px;padding:4px 8px;transition:background .2s;display:flex}.env-warning-btn[data-v-182ef64e]:hover{background:#f59e0b2e}.env-warning-icon[data-v-182ef64e]{color:#f59e0b}.env-warning-count[data-v-182ef64e]{color:#f59e0b;font-size:11px;font-weight:600}.logo-section[data-v-182ef64e]{cursor:pointer;color:inherit;border-radius:18px;align-items:center;gap:14px;margin-left:-8px;padding:8px 14px;text-decoration:none;transition:background .2s;display:flex}.logo-section[data-v-182ef64e]:hover{background:var(--hover-bg)}.logo-wrapper[data-v-182ef64e]{background:linear-gradient(135deg,#18a0582e,#18a0580d);border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;display:flex;box-shadow:0 10px 24px #0f171d14}.logo-image[data-v-182ef64e]{object-fit:contain;width:22px;height:22px}.title-group[data-v-182ef64e]{flex-direction:column;gap:1px;display:flex}.title-main[data-v-182ef64e]{color:var(--brand-title-color);margin:0;font-size:18px;font-weight:700;line-height:1.2}.title-sub[data-v-182ef64e]{color:var(--text-tertiary);font-size:11px}.nav-tabs[data-v-182ef64e]{background:color-mix(in srgb, var(--bg-primary) 86%, transparent);border:1px solid var(--border-primary);border-radius:999px;align-items:center;gap:6px;margin-left:28px;padding:6px 8px;display:flex;box-shadow:0 14px 36px #0f171d14}.nav-tab[data-v-182ef64e]{cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:8px 14px;transition:background .2s;display:flex;position:relative}.nav-tab[data-v-182ef64e]:hover{background:var(--hover-bg)}.nav-tab.active[data-v-182ef64e]{background:var(--primary-color-soft)}.nav-tab.active[data-v-182ef64e]:after{content:"";border-radius:inherit;background:0 0;border:1px solid #18a05838;position:absolute;inset:0}.nav-icon[data-v-182ef64e]{color:var(--text-tertiary)}.nav-tab:hover .nav-icon[data-v-182ef64e],.nav-tab.active .nav-icon[data-v-182ef64e]{color:var(--primary-color,#18a058)}.nav-label[data-v-182ef64e]{color:var(--text-secondary);font-size:13px;font-weight:500}.nav-tab:hover .nav-label[data-v-182ef64e],.nav-tab.active .nav-label[data-v-182ef64e]{color:var(--primary-color,#18a058)}.nav-tab.active .nav-label[data-v-182ef64e]{font-weight:600}.main-container[data-v-182ef64e]{flex:1;height:calc(100vh - 74px);min-height:0;display:flex;overflow:hidden}.global-loading-overlay[data-v-182ef64e]{background:var(--bg-overlay);z-index:1000;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.left-content[data-v-182ef64e]{flex:1;min-width:0;height:100%;overflow:hidden}.favorites-button-wrapper[data-v-182ef64e]{position:relative}.favorites-badge[data-v-182ef64e]{color:#fff;pointer-events:none;background:#ff4d4f;border-radius:7px;justify-content:center;align-items:center;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:600;display:flex;position:absolute;top:-3px;right:-3px}.help-content[data-v-182ef64e]{max-height:70vh;overflow-y:auto}.help-section[data-v-182ef64e]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;margin-bottom:20px;padding:16px}.help-section[data-v-182ef64e]:last-child{margin-bottom:0}.help-section h4[data-v-182ef64e]{color:var(--text-primary);border-bottom:1px solid var(--border-primary);margin:0 0 12px;padding-bottom:10px;font-size:15px;font-weight:600}.help-section p[data-v-182ef64e]{color:var(--text-secondary);margin:0 0 10px;font-size:13px;line-height:1.7}.help-section ul[data-v-182ef64e]{margin:8px 0 0;padding-left:20px}.help-section li[data-v-182ef64e]{color:var(--text-secondary);margin-bottom:4px;font-size:13px;line-height:1.8}.help-section li strong[data-v-182ef64e]{color:var(--primary-color,#18a058)}.command-list[data-v-182ef64e]{flex-direction:column;gap:8px;display:flex}.command-item[data-v-182ef64e]{background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:6px;align-items:center;gap:12px;padding:10px 12px;display:flex}.command-item code[data-v-182ef64e]{min-width:140px;color:var(--primary-color,#18a058);background:#18a0581a;border-radius:4px;padding:4px 10px;font-family:monospace;font-size:12px;font-weight:600}.command-item span[data-v-182ef64e]{color:var(--text-secondary);font-size:13px}.help-section kbd[data-v-182ef64e]{color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:3px;margin:0 2px;padding:2px 6px;font-family:monospace;font-size:11px;font-weight:600;display:inline-block}.link-list[data-v-182ef64e]{flex-wrap:wrap;gap:12px;display:flex}.link-list a[data-v-182ef64e]{color:var(--primary-color,#18a058);background:#18a05814;border-radius:4px;padding:6px 10px;font-size:13px;text-decoration:none}.link-list a[data-v-182ef64e]:hover{background:#18a05826}.panel-security-auth[data-v-182ef64e]{flex-direction:column;gap:12px;display:flex}.panel-security-error[data-v-182ef64e]{color:#d03050;font-size:12px}.panel-security-hint[data-v-182ef64e]{font-size:12px;line-height:1.6}.header-actions[data-v-182ef64e],.nav-tabs[data-v-182ef64e]{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}[data-theme=dark] .header[data-v-182ef64e]{border-bottom-color:#2b424aeb;box-shadow:inset 0 -1px #ffffff08}[data-theme=dark] .header-actions[data-v-182ef64e],[data-theme=dark] .nav-tabs[data-v-182ef64e]{background:#0c151bdb;border-color:#364c56e6;box-shadow:0 14px 32px #00000042}[data-theme=dark] .logo-section[data-v-182ef64e]:hover{background:#ffffff0d}@media (width<=1024px){.header[data-v-182ef64e]{height:68px;padding:10px 16px}.main-container[data-v-182ef64e]{height:calc(100vh - 68px)}.nav-tabs[data-v-182ef64e]{margin-left:16px;padding:5px 6px}.title-sub[data-v-182ef64e]{display:none}}@media (width<=768px){.header[data-v-182ef64e]{height:60px;padding:8px 12px}.main-container[data-v-182ef64e]{height:calc(100vh - 60px)}.logo-wrapper[data-v-182ef64e]{width:28px;height:28px}.logo-image[data-v-182ef64e]{width:18px;height:18px}.title-main[data-v-182ef64e]{font-size:14px}.title-sub[data-v-182ef64e]{display:none}.nav-tabs[data-v-182ef64e]{gap:2px;margin-left:10px;padding:4px 5px}.nav-tab[data-v-182ef64e]{gap:4px;padding:6px 10px}.nav-label[data-v-182ef64e]{font-size:12px}.header-actions[data-v-182ef64e]{gap:2px}}@media (width<=640px){.header[data-v-182ef64e]{height:54px;padding:6px 8px}.main-container[data-v-182ef64e]{height:calc(100vh - 54px)}.title-group[data-v-182ef64e]{display:none}.nav-tabs[data-v-182ef64e]{flex:1;justify-content:center;margin-left:8px}.nav-tab[data-v-182ef64e]{flex-direction:column;gap:2px;padding:4px 6px}.nav-label[data-v-182ef64e]{font-size:10px}}.asset-panel{background:var(--bg-primary);flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.asset-panel-header,.asset-drawer-toolbar{border-bottom:1px solid var(--border-primary);background:var(--bg-primary);justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.asset-drawer-toolbar{background:var(--bg-secondary);justify-content:flex-end;padding:10px 12px}.asset-title-group,.asset-title-row,.asset-action-row,.asset-filter-bar,.asset-summary,.asset-meta,.asset-tags,.asset-card-actions{align-items:center;display:flex}.asset-title-group{gap:10px;min-width:0}.asset-heading{min-width:0}.asset-title-row{gap:8px;min-width:0}.asset-title{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:650;line-height:1.25;overflow:hidden}.asset-subtitle{color:var(--text-tertiary);margin-top:3px;font-size:12px;line-height:1.35}.asset-platform-pill{border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-tertiary);border-radius:999px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:500;line-height:1.4}.asset-action-row{flex-shrink:0;gap:6px}.asset-action-row .n-button{font-size:12px}.asset-summary{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);gap:8px;padding:10px 18px}.asset-panel.in-drawer .asset-summary{padding:10px 12px}.asset-summary-item{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:999px;align-items:baseline;gap:6px;min-width:0;padding:4px 8px;display:inline-flex}.asset-summary-label{color:var(--text-tertiary);font-size:11px}.asset-summary-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:650}.asset-filter-bar{border-bottom:1px solid var(--border-primary);background:var(--bg-primary);gap:10px;padding:12px 18px}.asset-panel.in-drawer .asset-filter-bar{padding:10px 12px}.asset-search{flex:1;min-width:160px}.asset-filter{flex-shrink:0;width:116px}.asset-panel-content{flex:1;min-height:0;padding:16px 18px;overflow-y:auto}.asset-panel.in-drawer .asset-panel-content{padding:12px}.asset-panel-content .n-spin-container{min-height:220px}.asset-empty{justify-content:center;align-items:center;min-height:220px;display:flex}.asset-list{flex-direction:column;gap:10px;display:flex}.asset-footer{border-top:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-tertiary);align-items:center;gap:6px;padding:9px 18px;font-size:11px;display:flex}.asset-panel.in-drawer .asset-footer{padding:8px 12px}.asset-info-icon{color:var(--text-quaternary)}.asset-card{border:1px solid var(--border-primary);background:var(--bg-primary);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:14px;min-height:96px;padding:14px;transition:border-color .16s ease-out,background-color .16s ease-out,box-shadow .16s ease-out;display:flex}.asset-card:hover{border-color:var(--border-secondary);background:var(--bg-secondary);box-shadow:var(--shadow-sm)}.asset-card.is-installed,.asset-card.is-managed,.asset-card.is-project{background:linear-gradient(0deg, oklch(62% .15 151/.045), oklch(62% .15 151/.045)), var(--bg-primary)}.asset-card.is-disabled,.asset-card.is-protected{background:var(--bg-secondary)}.asset-card-main{flex:1;min-width:0}.asset-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.asset-card-title-stack{min-width:0}.asset-card-title-row{align-items:center;gap:7px;min-width:0;display:flex}.asset-status-dot{background:var(--text-quaternary);border-radius:999px;flex:none;width:7px;height:7px}.asset-status-dot.active{background:var(--primary-color);box-shadow:0 0 0 3px oklch(62% .15 151/.1)}.asset-status-dot.warning{background:oklch(68% .14 78);box-shadow:0 0 0 3px oklch(68% .14 78/.1)}.asset-name{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;line-height:1.35;overflow:hidden}.asset-name.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-tags{flex-wrap:wrap;gap:5px;margin-top:6px}.asset-description{color:var(--text-secondary);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:9px;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.asset-meta{color:var(--text-tertiary);flex-wrap:wrap;gap:8px;margin-top:9px;font-size:11px}.asset-meta-item{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;min-width:0;max-width:100%;display:inline-flex;overflow:hidden}.asset-meta-item.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-link{color:var(--primary-color);flex-shrink:0;text-decoration:none}.asset-link:hover{text-decoration:underline}.asset-card-actions{flex-shrink:0;gap:5px}.asset-platform-strip{align-items:center;gap:5px;margin-left:6px;display:flex}.asset-platform-icon{border:1px solid var(--border-primary);background:var(--bg-secondary);width:24px;height:24px;color:var(--text-tertiary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:border-color .16s ease-out,color .16s ease-out,background-color .16s ease-out;display:inline-flex}.asset-platform-icon:hover{border-color:var(--border-secondary);color:var(--text-secondary)}.asset-platform-icon.active{color:var(--primary-color);background:oklch(62% .15 151/.1);border-color:oklch(62% .15 151/.34)}.asset-detail-drawer-header{width:100%}.asset-detail-identity{align-items:center;gap:12px;min-width:0;display:flex}.asset-detail-icon{color:var(--primary-color);flex-shrink:0}.asset-detail-heading{flex-direction:column;gap:4px;min-width:0;display:flex}.asset-detail-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:650;line-height:1.25;overflow:hidden}.asset-detail-name.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-detail-meta{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.asset-detail-subtle{min-width:0;color:var(--text-tertiary);align-items:center;gap:4px;font-size:12px;display:inline-flex}.asset-detail-body{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.asset-detail-container{flex-direction:column;gap:22px;min-height:0;display:flex}.asset-detail-info-section{flex-direction:column;gap:10px;display:flex}.asset-detail-section-title{color:var(--text-primary);margin:0;font-size:14px;font-weight:650}.asset-detail-description{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.65}.asset-detail-list{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;overflow:hidden}.asset-detail-row{border-bottom:1px solid var(--border-primary);grid-template-columns:104px minmax(0,1fr);gap:12px;padding:10px 12px;font-size:13px;display:grid}.asset-detail-row:last-child{border-bottom:0}.asset-detail-label{color:var(--text-tertiary)}.asset-detail-value{overflow-wrap:anywhere;min-width:0;color:var(--text-secondary)}.asset-detail-value.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace);font-size:12px}.asset-detail-box{border:1px solid var(--border-primary);background:var(--bg-secondary);min-width:0;color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:12px;font-size:13px;display:flex}.asset-detail-box code,.asset-detail-code{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-detail-box code{overflow-wrap:anywhere;color:var(--text-secondary);font-size:12px}.asset-detail-path-box{align-items:flex-start}.asset-detail-path-icon{flex:none;margin-top:1px}.asset-detail-path-text{flex:1;min-width:0;line-height:1.5}.asset-detail-path-copy{color:var(--text-tertiary);flex:none;margin:-4px -4px -4px 4px}.asset-detail-path-copy:hover{color:var(--text-primary)}.asset-detail-link{overflow-wrap:anywhere;min-width:0;color:var(--primary-color);text-decoration:none}.asset-detail-link:hover{text-decoration:underline}.asset-detail-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.asset-detail-content{border:1px solid var(--border-primary);background:var(--bg-secondary);min-height:0;color:var(--text-secondary);overflow-wrap:anywhere;border-radius:8px;flex:1;padding:18px;font-size:13px;line-height:1.7;overflow:auto}.asset-detail-content h1,.asset-detail-content h2,.asset-detail-content h3,.asset-detail-content h4,.asset-detail-content h5,.asset-detail-content h6{color:var(--text-primary);margin:22px 0 10px;font-weight:650;line-height:1.35}.asset-detail-content h1:first-child,.asset-detail-content h2:first-child,.asset-detail-content h3:first-child{margin-top:0}.asset-detail-content h1{border-bottom:1px solid var(--border-primary);padding-bottom:10px;font-size:20px}.asset-detail-content h2{border-bottom:1px solid var(--border-primary);padding-bottom:7px;font-size:17px}.asset-detail-content h3{font-size:15px}.asset-detail-content h4{font-size:14px}.asset-detail-content h5,.asset-detail-content h6{color:var(--text-secondary);font-size:13px}.asset-detail-content p{margin:10px 0}.asset-detail-content strong{color:var(--text-primary);font-weight:650}.asset-detail-content code{border:1px solid var(--border-primary);background:var(--bg-tertiary);font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace);border-radius:5px;padding:2px 6px;font-size:12px}.asset-detail-content pre{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:8px;margin:14px 0;padding:14px;line-height:1.65;overflow-x:auto}.asset-detail-content pre code{color:var(--text-secondary);background:0 0;border:0;padding:0;font-size:12px}.asset-detail-content ul,.asset-detail-content ol{margin:10px 0;padding-left:24px}.asset-detail-content li{margin:5px 0}.asset-detail-content li>p{margin:6px 0}.asset-detail-content a{color:var(--primary-color);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.asset-detail-content a:hover{color:var(--primary-color-hover,var(--primary-color))}.asset-detail-content blockquote{border-left:1px solid var(--border-secondary);background:var(--bg-primary);color:var(--text-tertiary);border-radius:0 8px 8px 0;margin:14px 0;padding:10px 12px}.asset-detail-content blockquote>:first-child{margin-top:0}.asset-detail-content blockquote>:last-child{margin-bottom:0}.asset-detail-content table{border-collapse:collapse;width:max-content;max-width:100%;margin:14px 0;font-size:12px;display:block;overflow-x:auto}.asset-detail-content th,.asset-detail-content td{border:1px solid var(--border-primary);text-align:left;vertical-align:top;padding:8px 10px}.asset-detail-content th{background:var(--bg-tertiary);color:var(--text-primary);font-weight:650}.asset-detail-content img{border-radius:8px;max-width:100%;height:auto;margin:14px auto;display:block}.asset-detail-content hr{background:var(--border-primary);border:0;height:1px;margin:20px 0}.asset-detail-code{border:1px solid var(--border-primary);background:var(--bg-secondary);min-height:0;color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;border-radius:8px;flex:1;margin:0;padding:16px;font-size:12px;line-height:1.65;overflow:auto}.asset-detail-loading,.asset-detail-empty,.asset-detail-error{color:var(--text-tertiary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:64px 24px;display:flex}.asset-detail-empty-icon,.asset-detail-error-icon{color:var(--text-quaternary)}.asset-detail-error-icon{color:oklch(56% .18 26)}.asset-detail-tabs{flex:1;height:100%;min-height:0}.asset-detail-tabs .n-tabs-pane-wrapper{flex:1;min-height:0;padding-top:16px;overflow:hidden}.asset-detail-tabs .n-tab-pane{flex-direction:column;height:100%;min-height:0;display:flex;overflow:auto}@media (width<=720px){.asset-panel-header{flex-direction:column;align-items:flex-start}.asset-action-row,.asset-filter-bar,.asset-card-top{width:100%}.asset-action-row,.asset-summary{flex-wrap:wrap}.asset-filter-bar{flex-direction:column;align-items:stretch}.asset-filter{width:100%}.asset-card{flex-direction:column}.asset-card-actions{flex-wrap:wrap;align-self:flex-start}}:root{--bg-primary:#fff;--bg-secondary:#f4f7f8;--bg-tertiary:#edf3f1;--bg-elevated:#fff;--bg-overlay:#ffffffeb;--text-primary:#122025;--text-secondary:#58717d;--text-tertiary:#738995;--text-quaternary:#95a7af;--border-primary:#d8e1de;--border-secondary:#c3d0cb;--hover-bg:#18a05814;--active-bg:#18a0581f;--shadow-sm:0 8px 20px #0f171d0f;--shadow-md:0 18px 42px #0f171d1a;--shadow-lg:0 30px 70px #0f171d24;--font-mono:"SF Mono", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace;--gradient-header:linear-gradient(135deg, #f8fbfc 0%, #eef6f3 52%, #e9f7f1 100%);--gradient-bg:linear-gradient(180deg, #f4f7f8 0%, #eef4f2 100%);--gradient-card:linear-gradient(145deg, #fffffffa 0%, #f7faf8fa 100%);--primary-color:#18a058;--primary-color-soft:#18a0581f;--brand-title-color:#0d8f55}[data-theme=dark]{--bg-primary:#0a1116;--bg-secondary:#101920;--bg-tertiary:#16222a;--bg-elevated:#1a2831;--bg-overlay:#0a1116f0;--text-primary:#e7eef0;--text-secondary:#a8bbc0;--text-tertiary:#82969d;--text-quaternary:#667b83;--border-primary:#263740;--border-secondary:#334852;--hover-bg:#ffffff14;--active-bg:#ffffff1f;--shadow-sm:0 10px 24px #0000003d;--shadow-md:0 22px 52px #0000004d;--shadow-lg:0 36px 76px #0000005c;--font-mono:"SF Mono", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace;--gradient-header:linear-gradient(135deg, #0b1419 0%, #101b22 58%, #0d171d 100%);--gradient-bg:linear-gradient(180deg, #0a1116 0%, #0d151b 56%, #091016 100%);--gradient-card:linear-gradient(145deg, #121b22fa 0%, #0c151bfa 100%);--primary-color:#18a058;--primary-color-soft:#18a05829;--brand-title-color:#37d08c}body{background:var(--bg-primary);color:var(--text-primary);margin:0;padding:0;font-family:SF Pro Display,SF Pro Text,Segoe UI Variable Display,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;transition:background-color .3s,color .3s}#app{background:var(--bg-primary);min-height:100vh}*{scrollbar-width:thin;scrollbar-color:#18a05847 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#18a05847;border-radius:3px;transition:background-color .2s}::-webkit-scrollbar-thumb:hover{background-color:#18a05880}[data-theme=dark] ::-webkit-scrollbar-thumb{background-color:#18a05866}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background-color:#18a05899}
|
|
1
|
+
.header-button[data-v-b515354d]{border:1px solid var(--border-primary);background:var(--bg-elevated);cursor:pointer;border-radius:999px;outline:none;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:all .2s;display:inline-flex;box-shadow:0 10px 24px #0f171d14}.header-button[data-v-b515354d] .n-icon{color:var(--text-tertiary);transition:all .2s}.header-button[data-v-b515354d]:hover:not(.disabled){background:color-mix(in srgb, var(--bg-elevated) 90%, var(--primary-color) 10%);border-color:#18a0583d;box-shadow:0 14px 30px #0f171d1f}.header-button[data-v-b515354d]:hover:not(.disabled) .n-icon{color:var(--primary-color,#18a058)}.header-button[data-v-b515354d]:active:not(.disabled){transform:scale(.95)}.header-button.active[data-v-b515354d]{background:linear-gradient(135deg,#18a05824,#18a0580f);border-color:#18a05852}.header-button.active[data-v-b515354d] .n-icon{color:#18a058!important}.header-button.disabled[data-v-b515354d]{cursor:not-allowed;opacity:.5}[data-theme=dark] .header-button[data-v-b515354d]{box-shadow:none;background:#0d171eeb;border-color:#364c56e6}[data-theme=dark] .header-button[data-v-b515354d]:hover:not(.disabled){background:#14222afa;border-color:#18a05847;box-shadow:0 0 0 1px #18a05814}.modal-header[data-v-7ea71ef7]{align-items:center;gap:10px;display:flex}.warning-icon[data-v-7ea71ef7]{color:#f59e0b}.header-title[data-v-7ea71ef7]{color:var(--text-primary);font-size:16px;font-weight:600}.modal-content[data-v-7ea71ef7]{padding:4px 0}.desc-text[data-v-7ea71ef7]{color:var(--text-secondary);margin:0 0 16px;font-size:13px;line-height:1.6}.conflict-list[data-v-7ea71ef7]{background:var(--bg-tertiary);border-radius:6px;padding:12px}.list-header[data-v-7ea71ef7]{border-bottom:1px solid var(--border-primary);align-items:center;gap:12px;margin-bottom:10px;padding-bottom:10px;display:flex}.selected-hint[data-v-7ea71ef7]{color:var(--text-tertiary);font-size:12px}.conflict-items[data-v-7ea71ef7]{flex-direction:column;gap:8px;display:flex}.conflict-item[data-v-7ea71ef7]{background:var(--bg-secondary);cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:flex-start;gap:10px;padding:10px 12px;transition:all .15s;display:flex}.conflict-item[data-v-7ea71ef7]:hover{background:#18a05805;border-color:#18a05866}.conflict-item.selected[data-v-7ea71ef7]{background:#18a0580f;border-color:#18a058}.item-content[data-v-7ea71ef7]{flex:1;min-width:0}.item-header[data-v-7ea71ef7]{align-items:center;gap:8px;margin-bottom:4px;display:flex}.var-name[data-v-7ea71ef7]{color:var(--text-primary);background:var(--bg-tertiary);border-radius:4px;padding:2px 6px;font-size:13px;font-weight:600}.var-value[data-v-7ea71ef7]{color:var(--text-secondary);word-break:break-all;margin-bottom:4px;font-family:SF Mono,Monaco,monospace;font-size:12px}.var-source[data-v-7ea71ef7]{color:var(--text-tertiary);font-size:11px}.source-label[data-v-7ea71ef7]{color:var(--text-quaternary)}.modal-footer[data-v-7ea71ef7]{justify-content:flex-end;gap:8px;display:flex}.process-env-alert[data-v-7ea71ef7]{margin-bottom:16px}.alert-content[data-v-7ea71ef7]{font-size:12px;line-height:1.6}.alert-title[data-v-7ea71ef7]{margin:0 0 8px;font-weight:500}.alert-list[data-v-7ea71ef7]{margin:0;padding-left:20px}.alert-list li[data-v-7ea71ef7]{margin:4px 0}.alert-list code[data-v-7ea71ef7]{background:var(--bg-tertiary);color:#18a058;border-radius:4px;padding:2px 6px;font-family:SF Mono,Monaco,monospace;font-size:11px}.alert-hint[data-v-7ea71ef7]{color:var(--text-tertiary);margin:8px 0 0;font-size:11px}.channel-card[data-v-beb1848e]{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:8px;transition:all .2s}.channel-card[data-v-beb1848e]:hover{border-color:var(--border-secondary)}.channel-header[data-v-beb1848e]{border-bottom:1px solid var(--border-primary);justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.channel-title[data-v-beb1848e]{flex:auto;align-items:center;gap:6px;min-width:0;margin-right:0;display:flex}.channel-name[data-v-beb1848e]{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.channel-title[data-v-beb1848e] .n-tag{flex-shrink:0;padding:0 5px;font-size:11px}.collapse-btn[data-v-beb1848e]{flex-shrink:0}.collapse-btn .n-icon.collapsed[data-v-beb1848e]{transform:rotate(-90deg)}.channel-actions[data-v-beb1848e]{flex-wrap:nowrap;flex:none;justify-content:flex-end;align-items:center;gap:4px;max-width:100%;margin-left:auto;display:flex}.channel-actions[data-v-beb1848e] .n-button{min-width:0;height:22px;padding:0 5px;font-size:11px}.channel-actions[data-v-beb1848e] .n-button__content{gap:2px}.channel-actions[data-v-beb1848e] .n-button__icon{margin:0}.apply-btn[data-v-beb1848e]{display:none}.channel-card:hover .apply-btn[data-v-beb1848e]{display:inline-flex}.test-result[data-v-beb1848e]{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);padding:10px 16px}.test-result.success[data-v-beb1848e]{background:#18a0580f;border-left:3px solid #18a058}.test-result.failed[data-v-beb1848e]{background:#f56c6c0f;border-left:3px solid #f56c6c}.test-result.warning[data-v-beb1848e]{background:#d990000f;border-left:3px solid #d99000}.test-result-header[data-v-beb1848e]{align-items:center;gap:12px;display:flex}.test-result-status[data-v-beb1848e]{align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.test-result.success .test-result-status[data-v-beb1848e]{color:#18a058}.test-result.failed .test-result-status[data-v-beb1848e]{color:#f56c6c}.test-result.warning .test-result-status[data-v-beb1848e]{color:#b87900}.test-result-info[data-v-beb1848e]{flex:1;align-items:center;gap:10px;display:flex}.test-result-info .latency[data-v-beb1848e]{color:var(--text-primary);background:var(--bg-tertiary);border-radius:4px;padding:2px 8px;font-family:SF Mono,Monaco,monospace;font-size:13px;font-weight:600}.test-result-info .status-code[data-v-beb1848e]{color:var(--text-tertiary);font-family:SF Mono,Monaco,monospace;font-size:11px}.test-result-error[data-v-beb1848e]{color:#f56c6c;word-break:break-word;background:#f56c6c14;border-radius:4px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.test-result-warning[data-v-beb1848e]{color:#9b6800;word-break:break-word;background:#d9900014;border-radius:4px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.channel-info[data-v-beb1848e]{padding:12px 16px}.info-main[data-v-beb1848e]{flex-direction:column;gap:8px;display:flex}.info-row[data-v-beb1848e]{align-items:center;gap:12px;display:flex}.info-row .label[data-v-beb1848e]{min-width:80px;font-size:13px}.info-row .value[data-v-beb1848e]{flex:1;font-size:13px}.info-row .value.mono[data-v-beb1848e]{font-family:SF Mono,Monaco,monospace}.info-footer[data-v-beb1848e]{border-top:1px solid var(--border-primary);justify-content:space-between;align-items:center;margin-top:12px;padding-top:8px;display:flex}.footer-spacer[data-v-beb1848e]{flex:1}.channel-meta[data-v-beb1848e]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;font-size:12px;display:flex}.balance-meta-tag[data-v-beb1848e]{cursor:pointer;flex-shrink:0;max-width:110px}.balance-meta-tag[data-v-beb1848e] .n-tag__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meta-item[data-v-beb1848e]{color:var(--text-tertiary);white-space:nowrap}.meta-value[data-v-beb1848e]{color:var(--text-secondary);font-weight:500}.meta-active[data-v-beb1848e]{color:#18a058}@media (width<=1024px){.channel-header[data-v-beb1848e],.channel-info[data-v-beb1848e]{padding:10px 12px}.channel-actions[data-v-beb1848e]{gap:6px}.info-row[data-v-beb1848e]{gap:8px}.info-row .label[data-v-beb1848e]{min-width:70px;font-size:12px}.info-row .value[data-v-beb1848e]{font-size:12px}.channel-meta[data-v-beb1848e]{gap:12px}}@media (width<=768px){.channel-header[data-v-beb1848e]{flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px}.channel-title[data-v-beb1848e]{margin-right:0}.channel-actions[data-v-beb1848e]{justify-content:space-between}.channel-actions[data-v-beb1848e] .n-button{padding:0 8px;font-size:12px}.channel-info[data-v-beb1848e]{padding:8px 10px}.info-row[data-v-beb1848e]{flex-direction:column;align-items:flex-start;gap:4px}.info-row .label[data-v-beb1848e]{min-width:auto}.info-footer[data-v-beb1848e]{flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px}.channel-meta[data-v-beb1848e]{justify-content:flex-start;align-self:stretch;gap:8px 12px}}@media (width<=640px){.channel-card[data-v-beb1848e]{border-radius:6px}.channel-header[data-v-beb1848e]{padding:6px 8px}.channel-name[data-v-beb1848e]{min-width:0;font-size:12px}.channel-title[data-v-beb1848e]{min-width:0}.channel-title[data-v-beb1848e] .n-tag{font-size:10px}.channel-info[data-v-beb1848e]{padding:6px 8px}.info-row .label[data-v-beb1848e],.info-row .value[data-v-beb1848e]{font-size:11px}.channel-actions[data-v-beb1848e] .n-button{height:24px;padding:0 6px;font-size:11px}.channel-meta[data-v-beb1848e]{font-size:11px}}@media (width<=480px){.channel-header[data-v-beb1848e],.channel-info[data-v-beb1848e]{padding:4px 6px}.channel-actions[data-v-beb1848e]{gap:4px}.channel-actions[data-v-beb1848e] .n-button{min-width:0;height:22px;padding:0 4px;font-size:10px}}.model-redirect-editor[data-v-8ebdcad0]{width:100%}.redirect-row[data-v-8ebdcad0]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.redirect-input[data-v-8ebdcad0]{flex:1;min-width:0}.redirect-arrow[data-v-8ebdcad0]{flex-shrink:0;justify-content:center;align-items:center;width:24px;display:flex}.add-btn[data-v-8ebdcad0]{width:100%;margin-top:4px}.channel-auth-section[data-v-8fcf77d4]{gap:10px;width:100%;display:grid}.oauth-content[data-v-8fcf77d4],.oauth-quota[data-v-8fcf77d4]{gap:8px;display:grid}.oauth-meta[data-v-8fcf77d4]{color:var(--text-color-3)}.oauth-quota[data-v-8fcf77d4]{grid-template-columns:repeat(3,auto);align-items:center}.loading-container{justify-content:center;align-items:center;padding:80px 0;display:flex}.empty-state{justify-content:center;align-items:center;min-height:200px;display:flex}.model-catalog-control{flex-wrap:wrap;align-items:center;gap:6px 8px;margin:-3px 0 10px;font-size:12px;line-height:1.45;display:flex}.model-catalog-status{color:var(--n-text-color-3)}.model-catalog-status.is-loading{color:var(--n-info-color,var(--n-text-color-3))}.model-catalog-status.is-error{color:var(--n-error-color,#d03050)}.channels-list{flex-direction:column;gap:10px;display:flex;position:relative;overflow:hidden}.channel-card{border:1px solid var(--n-divider-color);background:var(--bg-secondary);border-left:3px solid #18a058;border-radius:6px;padding:10px 12px;transition:all .2s;box-shadow:0 1px 2px #0000000a}.channel-card.active{border-color:var(--n-primary-color);background:var(--n-primary-color-suppl,#18a05814);box-shadow:0 2px 8px #18a0581a}.channel-card:hover{border-color:var(--n-border-color);box-shadow:0 2px 8px #00000014}.channel-card.disabled{opacity:.6;border-left-color:#909399}.channel-card.status-frozen{background:linear-gradient(90deg,#d0305014 0%,#0000 100%);border-left-color:#d03050}.channel-card.status-checking{background:linear-gradient(90deg,#f0a02014 0%,#0000 100%);border-left-color:#f0a020}.channel-card.collapsed .channel-info{display:none}.channel-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.channel-title{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.channel-name{color:var(--n-text-color);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.channel-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.channel-actions .apply-btn{opacity:0;transition:opacity .2s}.channel-card:hover .channel-actions .apply-btn{opacity:1}.channel-actions .n-switch{margin-left:2px}.channel-info{border-top:1px dashed var(--n-border-color);margin-top:8px;padding-top:8px}.info-main{flex-direction:column;gap:4px;display:flex}.info-row{align-items:center;gap:8px;display:flex}.label{color:var(--n-text-color-3);flex-shrink:0;width:56px;font-size:11px}.value{color:var(--n-text-color-2);word-break:break-word;flex:1;font-size:12px}.value.mono{font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace}.info-footer{border-top:1px dashed var(--n-border-color);align-items:center;gap:8px;margin-top:6px;padding-top:6px;display:flex}.footer-spacer{flex:1}.channel-meta{flex-shrink:0;gap:12px;display:flex}.meta-item{color:var(--n-text-color-3);white-space:nowrap;font-size:11px}.meta-value{color:#18a058;font-weight:600}.meta-value.meta-active{color:#f0a020;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.collapse-btn{align-items:center;padding:0;display:flex}.collapse-btn .n-icon{transition:transform .2s}.collapse-btn .n-icon.collapsed{transform:rotate(-90deg)}.dialog-footer{justify-content:flex-end;gap:8px;display:flex}.channel-form{padding:0}.form-section{background:var(--n-color);border:1px solid var(--n-border-color);border-radius:6px;margin-bottom:10px;padding:12px}.form-section:last-child{margin-bottom:0}.section-title{color:var(--n-text-color);border-bottom:1px solid var(--n-border-color);align-items:center;gap:6px;margin-bottom:10px;padding-bottom:6px;font-size:12px;font-weight:600;display:flex}.section-desc{color:var(--n-text-color-3);font-size:11px;font-weight:400}.form-section.collapsible{background:var(--n-color-hover)}.channel-form .n-radio-group{width:100%}.channel-form .n-radio-group .n-space{gap:16px;width:100%;display:flex}.channel-form .n-radio{border:1px solid var(--n-border-color);border-radius:6px;flex:1;justify-content:center;padding:8px 16px;transition:all .2s;display:flex}.channel-form .n-radio:hover,.channel-form .n-radio.n-radio--checked{border-color:var(--n-primary-color);background:var(--n-primary-color-suppl,#18a05814)}.channel-form .n-form-item{margin-bottom:10px}.channel-form .n-form-item:last-child{margin-bottom:0}.channel-form .n-form-item-label{padding-bottom:0;font-size:12px}.auth-provider-status{flex-direction:column;justify-content:center;gap:6px;width:100%;min-height:28px;display:flex}.auth-provider-tags{min-height:24px}.auth-provider-message{color:var(--n-text-color-3);font-size:12px;line-height:1.45}.auth-provider-message.warning{color:#c97a00}.model-definitions-editor[data-v-60c67edc]{width:100%}.model-definitions-toolbar[data-v-60c67edc]{align-items:center;gap:10px;margin-bottom:8px;display:flex}.proxy-logs[data-v-1d31e3d2]{background:#fff;border-top:1px solid #e5e7eb;flex-direction:column;height:100%;display:flex}[data-theme=dark] .proxy-logs[data-v-1d31e3d2]{background:var(--bg-secondary);border-top:1px solid var(--border-primary)}.logs-header[data-v-1d31e3d2]{border-bottom:1px solid #e5e7eb;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}[data-theme=dark] .logs-header[data-v-1d31e3d2]{border-bottom:1px solid var(--border-primary)}.header-left[data-v-1d31e3d2]{align-items:center;gap:12px;display:flex}.title[data-v-1d31e3d2]{color:#18181b;margin:0;font-size:14px;font-weight:600}[data-theme=dark] .title[data-v-1d31e3d2]{color:var(--text-primary)}.today-stats[data-v-1d31e3d2]{align-items:center;gap:6px;display:flex}.today-stats[data-v-1d31e3d2] .n-tag{padding:2px 8px;font-size:11px;font-weight:600}.logs-table[data-v-1d31e3d2]{flex-direction:column;flex:1;display:flex;overflow:hidden}.table-header[data-v-1d31e3d2]{color:#6b7280;white-space:nowrap;background:#f9fafb;border-bottom:1px solid #e5e7eb;flex-shrink:0;padding:8px 12px;font-size:11px;font-weight:600;display:flex}[data-theme=dark] .table-header[data-v-1d31e3d2]{border-bottom:1px solid var(--border-primary);color:var(--text-tertiary);background:#ffffff05}.table-body[data-v-1d31e3d2]{flex:1;min-height:0;padding-bottom:40px;scroll-padding-bottom:40px;overflow:hidden auto}.table-row[data-v-1d31e3d2]{cursor:pointer;border-bottom:1px solid #f3f4f6;padding:8px 12px;font-size:12px;transition:background-color .2s;display:flex;position:relative}[data-theme=dark] .table-row[data-v-1d31e3d2]{border-bottom:1px solid #ffffff0a}.table-row[data-v-1d31e3d2]:hover{background:#f9fafb}[data-theme=dark] .table-row[data-v-1d31e3d2]:hover{background:#ffffff0a}.table-row.new-log[data-v-1d31e3d2],.action-row.new-log[data-v-1d31e3d2]{border-left:3px solid #18a058;padding-left:9px;animation:4.5s cubic-bezier(.25,.46,.45,.94) forwards newLogPulse-1d31e3d2}@keyframes newLogPulse-1d31e3d2{0%{background:linear-gradient(90deg,#18a05826 0%,#18a0580f 100%);box-shadow:0 0 8px #18a05833}5%{background:linear-gradient(90deg,#18a0582e 0%,#18a05814 100%);box-shadow:0 0 12px 1px #18a05840}15%{background:linear-gradient(90deg,#18a05829 0%,#18a05812 100%);box-shadow:0 0 10px 1px #18a05833}30%{background:linear-gradient(90deg,#18a0581f 0%,#18a0580d 100%);box-shadow:0 0 6px #18a05826}50%{background:linear-gradient(90deg,#18a05814 0%,#18a05808 100%);box-shadow:0 0 4px #18a0581a}70%{background:linear-gradient(90deg,#18a0580a 0%,#18a05804 100%);box-shadow:0 0 2px #18a0580f}85%{background:linear-gradient(90deg,#18a05805 0%,#18a05802 100%);box-shadow:0 0 1px #18a05808}to{background:0 0;border-left-color:#0000;box-shadow:0 0 #18a05800}}[data-theme=dark] .table-row.new-log[data-v-1d31e3d2],[data-theme=dark] .action-row.new-log[data-v-1d31e3d2]{animation:4.5s cubic-bezier(.25,.46,.45,.94) forwards newLogPulseDark-1d31e3d2}@keyframes newLogPulseDark-1d31e3d2{0%{background:linear-gradient(90deg,#18a05833 0%,#18a05814 100%);box-shadow:0 0 10px #18a05840}5%{background:linear-gradient(90deg,#18a0583d 0%,#18a0581a 100%);box-shadow:0 0 14px 2px #18a0584d}15%{background:linear-gradient(90deg,#18a05836 0%,#18a05817 100%);box-shadow:0 0 12px 1px #18a05840}30%{background:linear-gradient(90deg,#18a05829 0%,#18a05812 100%);box-shadow:0 0 8px 1px #18a0582e}50%{background:linear-gradient(90deg,#18a0581c 0%,#18a0580b 100%);box-shadow:0 0 5px #18a0581f}70%{background:linear-gradient(90deg,#18a0580f 0%,#18a05806 100%);box-shadow:0 0 3px #18a05814}85%{background:linear-gradient(90deg,#18a05808 0%,#18a05803 100%);box-shadow:0 0 1px #18a0580a}to{background:0 0;border-left-color:#0000;box-shadow:0 0 #18a05800}}.table-row-content[data-v-1d31e3d2]{width:100%;display:flex}.action-row[data-v-1d31e3d2]{color:#166534;background:#f0fdf4;border-bottom:1px solid #f3f4f6;border-left:3px solid #18a058;align-items:center;padding:10px 12px;font-size:13px;display:flex}[data-theme=dark] .action-row[data-v-1d31e3d2]{color:#4ade80;background:#18a0581f;border-bottom:1px solid #ffffff0a}.error-row[data-v-1d31e3d2]{color:#b42318;background:#fef2f2;border-bottom:1px solid #f3f4f6;border-left:3px solid #d03050;align-items:center;padding:10px 12px;font-size:13px;display:flex}[data-theme=dark] .error-row[data-v-1d31e3d2]{color:#fda4af;background:#d030501f;border-bottom:1px solid #ffffff0a}.action-message[data-v-1d31e3d2]{flex:1;font-weight:500}.action-time[data-v-1d31e3d2]{color:#6b7280;margin-left:12px;margin-right:22px;font-family:monospace;font-size:11px}[data-theme=dark] .action-time[data-v-1d31e3d2]{color:var(--text-tertiary)}.col[data-v-1d31e3d2]{white-space:nowrap;text-overflow:ellipsis;align-items:center;display:flex;overflow:hidden}.col-channel-claude[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-claude[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-claude[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-codex[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-codex[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-codex[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-gemini[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-gemini[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-gemini[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-opencode[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-opencode[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-opencode[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-omp[data-v-1d31e3d2]{flex:65px;min-width:0;overflow:hidden}.col-token-omp[data-v-1d31e3d2]{flex:0 0 58px;justify-content:center;min-width:0}.col-time-omp[data-v-1d31e3d2]{flex:0 0 80px;justify-content:flex-end;min-width:80px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel-basic[data-v-1d31e3d2]{flex:80px;min-width:0;overflow:hidden}.col-token-basic[data-v-1d31e3d2]{flex:0 0 68px;justify-content:center;min-width:0}.col-time-basic[data-v-1d31e3d2]{flex:0 0 85px;justify-content:flex-end;min-width:85px;padding-left:10px;padding-right:6px;font-family:monospace;font-size:11px}.col-channel[data-v-1d31e3d2]{min-width:0;overflow:hidden}.col-channel .n-tag[data-v-1d31e3d2]{text-overflow:ellipsis;max-width:100%;overflow:hidden}.col-token[data-v-1d31e3d2]{justify-content:center;min-width:0}.col-time[data-v-1d31e3d2]{justify-content:flex-end;font-family:monospace;font-size:11px}.empty-state[data-v-1d31e3d2]{text-align:center;color:#9ca3af;padding:40px 16px;font-size:13px}[data-theme=dark] .empty-state[data-v-1d31e3d2]{color:var(--text-tertiary)}.logs-footer[data-v-1d31e3d2]{color:#6b7280;border-top:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:8px 16px;font-size:12px;display:flex}[data-theme=dark] .logs-footer[data-v-1d31e3d2]{border-top:1px solid var(--border-primary);color:var(--text-tertiary)}.status[data-v-1d31e3d2]{color:#ef4444;align-items:center;gap:4px;display:flex}.status.connected[data-v-1d31e3d2]{color:#10b981}[data-theme=dark] .status.connected[data-v-1d31e3d2]{color:#4ade80}.count[data-v-1d31e3d2]{color:#6b7280}[data-theme=dark] .count[data-v-1d31e3d2]{color:var(--text-tertiary)}@media (width<=1024px){.logs-header[data-v-1d31e3d2]{padding:10px 12px}.header-left[data-v-1d31e3d2]{gap:8px}.title[data-v-1d31e3d2]{font-size:13px}.today-stats[data-v-1d31e3d2] .n-tag{padding:1px 6px;font-size:10px}.table-header[data-v-1d31e3d2]{padding:6px 10px;font-size:10px}.table-row[data-v-1d31e3d2]{padding:6px 10px}.logs-footer[data-v-1d31e3d2]{padding:6px 12px;font-size:11px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 75px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 55px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 80px;min-width:80px}.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2]{flex:0 0 65px}.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2]{flex:0 0 48px}.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2]{flex:0 0 75px;min-width:75px}}@media (width<=768px){.logs-header[data-v-1d31e3d2]{flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px}.header-left[data-v-1d31e3d2]{justify-content:space-between}.title[data-v-1d31e3d2]{font-size:12px}.today-stats[data-v-1d31e3d2] .n-tag{padding:1px 4px;font-size:9px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:4px 8px;font-size:10px}.table-row-content[data-v-1d31e3d2]{font-size:10px}.action-row[data-v-1d31e3d2]{padding:8px 10px;font-size:11px}.action-message[data-v-1d31e3d2]{font-size:11px}.action-time[data-v-1d31e3d2]{margin-right:12px;font-size:9px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 60px}.col-channel[data-v-1d31e3d2] .n-tag{height:18px;padding:0 4px;font-size:9px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 40px;font-size:9px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 65px;min-width:65px;font-size:9px}.logs-footer[data-v-1d31e3d2]{padding:4px 10px;font-size:10px}}@media (width<=640px){.logs-header[data-v-1d31e3d2]{gap:6px;padding:6px 8px}.header-left[data-v-1d31e3d2]{flex-wrap:wrap;gap:4px}.title[data-v-1d31e3d2]{font-size:11px}.today-stats[data-v-1d31e3d2]{gap:4px}.today-stats[data-v-1d31e3d2] .n-tag{height:16px;padding:0 3px;font-size:8px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:3px 6px;font-size:9px}.table-row-content[data-v-1d31e3d2]{font-size:9px}.action-row[data-v-1d31e3d2]{padding:6px 8px;font-size:10px}.action-message[data-v-1d31e3d2]{font-size:10px}.action-time[data-v-1d31e3d2]{margin-left:8px;margin-right:8px;font-size:8px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 50px}.col-channel[data-v-1d31e3d2] .n-tag{height:16px;padding:0 3px;font-size:8px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 32px;font-size:8px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 55px;min-width:55px;font-size:8px}.logs-footer[data-v-1d31e3d2]{padding:3px 8px;font-size:9px}.status[data-v-1d31e3d2],.count[data-v-1d31e3d2]{font-size:9px}}@media (width<=480px){.logs-header[data-v-1d31e3d2]{padding:4px 6px}.title[data-v-1d31e3d2]{font-size:10px}.today-stats[data-v-1d31e3d2] .n-tag{height:14px;font-size:7px}.table-header[data-v-1d31e3d2],.table-row[data-v-1d31e3d2]{padding:2px 4px;font-size:8px}.action-row[data-v-1d31e3d2]{padding:4px 6px;font-size:9px}.action-row[data-v-1d31e3d2] .n-icon{margin-right:4px}.col-channel-claude[data-v-1d31e3d2],.col-channel-gemini[data-v-1d31e3d2],.col-channel-codex[data-v-1d31e3d2],.col-channel-opencode[data-v-1d31e3d2],.col-channel-omp[data-v-1d31e3d2],.col-channel-basic[data-v-1d31e3d2]{flex:0 0 45px}.col-token-claude[data-v-1d31e3d2],.col-token-gemini[data-v-1d31e3d2],.col-token-codex[data-v-1d31e3d2],.col-token-opencode[data-v-1d31e3d2],.col-token-omp[data-v-1d31e3d2],.col-token-basic[data-v-1d31e3d2]{flex:0 0 28px;font-size:7px}.col-time-claude[data-v-1d31e3d2],.col-time-gemini[data-v-1d31e3d2],.col-time-codex[data-v-1d31e3d2],.col-time-opencode[data-v-1d31e3d2],.col-time-omp[data-v-1d31e3d2],.col-time-basic[data-v-1d31e3d2]{flex:0 0 48px;min-width:48px;font-size:7px}.logs-footer[data-v-1d31e3d2]{padding:2px 6px;font-size:8px}}.right-panel[data-v-71b20d97]{background:var(--bg-primary);border-left:1px solid var(--border-primary);flex-direction:column;width:480px;min-width:480px;height:100%;display:flex}.toolbar-section[data-v-71b20d97]{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.toolbar-left[data-v-71b20d97]{align-items:center;gap:8px;display:flex}.toolbar-label[data-v-71b20d97]{margin-right:2px;font-size:12px}.toolbar-right[data-v-71b20d97]{align-items:center;gap:2px;display:flex}.toolbar-btn[data-v-71b20d97]{--toolbar-button-text:var(--text-secondary);border-radius:4px;transition:transform .18s cubic-bezier(.4,0,.2,1);--n-text-color:var(--toolbar-button-text)!important;--n-text-color-hover:var(--toolbar-button-text)!important;--n-text-color-pressed:var(--toolbar-button-text)!important;--n-text-color-focus:var(--toolbar-button-text)!important;--n-color-hover:transparent!important;--n-color-pressed:transparent!important;--n-color-focus:transparent!important;color:var(--toolbar-button-text)!important;padding:5px!important}.toolbar-btn[data-v-71b20d97] .n-button__content,.toolbar-btn[data-v-71b20d97] .n-button__icon{color:var(--toolbar-button-text)!important}.toolbar-btn[data-v-71b20d97]:hover,.toolbar-btn[data-v-71b20d97]:focus,.toolbar-btn[data-v-71b20d97]:focus-visible,.toolbar-btn[data-v-71b20d97]:active{background:0 0;transform:translateY(-1px);color:var(--toolbar-button-text)!important}.toolbar-btn[data-v-71b20d97]:active{transform:translateY(0)}.toolbar-divider[data-v-71b20d97]{background:var(--border-primary);width:1px;height:16px;margin:0 4px}.oauth-banner[data-v-71b20d97]{color:#2080f0;background:#2080f014;border-bottom:1px solid #2080f033;flex-shrink:0;align-items:center;gap:6px;padding:6px 14px;font-size:12px;display:flex}.oauth-banner span[data-v-71b20d97]{flex:1}.channels-section[data-v-71b20d97]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.channels-section.full-height[data-v-71b20d97]{flex:1}.panel-header[data-v-71b20d97]{background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.header-title[data-v-71b20d97]{align-items:baseline;gap:8px;min-width:0;display:flex}.header-title h3[data-v-71b20d97]{color:var(--text-primary);margin:0;font-size:13px;font-weight:600}.header-hint[data-v-71b20d97]{font-size:11px}.header-actions[data-v-71b20d97]{flex-shrink:0;align-items:center;gap:8px;display:flex}.channels-scroll-area[data-v-71b20d97]{flex:1;min-height:0;padding:12px;overflow-y:auto}.logs-section[data-v-71b20d97]{flex:0 0 340px;min-height:340px;max-height:340px;overflow:hidden}.logs-section.full-height[data-v-71b20d97]{flex:1;min-height:0;max-height:none}@media (width<=1024px){.right-panel[data-v-71b20d97]{width:420px;min-width:420px}.logs-section[data-v-71b20d97]{flex:0 0 300px;min-height:300px;max-height:300px}}@media (width<=768px){.right-panel[data-v-71b20d97]{width:100%;min-width:100%}.toolbar-section[data-v-71b20d97]{padding:8px 12px}.toolbar-label[data-v-71b20d97]{font-size:11px}.logs-section[data-v-71b20d97]{flex:0 0 260px;min-height:260px;max-height:260px}}@media (height<=600px){.right-panel[data-v-71b20d97]{overflow-y:auto}.channels-section[data-v-71b20d97]{flex:0 0 360px;min-height:360px}.logs-section[data-v-71b20d97]{flex:0 0 260px}}.layout[data-v-182ef64e]{background:var(--bg-primary);flex-direction:column;height:100vh;display:flex}.header[data-v-182ef64e]{background:var(--gradient-header);border-bottom:1px solid var(--border-primary);flex-shrink:0;justify-content:space-between;align-items:center;height:74px;padding:10px 22px;display:flex;box-shadow:inset 0 1px #ffffff57}.header-actions[data-v-182ef64e]{background:color-mix(in srgb, var(--bg-primary) 82%, transparent);border:1px solid var(--border-primary);border-radius:999px;align-items:center;gap:8px;padding:6px 10px;display:flex;box-shadow:0 14px 34px #0f171d14}.more-menu-trigger[data-v-182ef64e]{display:flex}.header-divider[data-v-182ef64e]{background:#95a7af59;width:1px;height:24px;margin:0 2px}.env-warning-btn[data-v-182ef64e]{cursor:pointer;background:#f59e0b1a;border-radius:4px;align-items:center;gap:4px;padding:4px 8px;transition:background .2s;display:flex}.env-warning-btn[data-v-182ef64e]:hover{background:#f59e0b2e}.env-warning-icon[data-v-182ef64e]{color:#f59e0b}.env-warning-count[data-v-182ef64e]{color:#f59e0b;font-size:11px;font-weight:600}.logo-section[data-v-182ef64e]{cursor:pointer;color:inherit;border-radius:18px;align-items:center;gap:14px;margin-left:-8px;padding:8px 14px;text-decoration:none;transition:background .2s;display:flex}.logo-section[data-v-182ef64e]:hover{background:var(--hover-bg)}.logo-wrapper[data-v-182ef64e]{background:linear-gradient(135deg,#18a0582e,#18a0580d);border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;display:flex;box-shadow:0 10px 24px #0f171d14}.logo-image[data-v-182ef64e]{object-fit:contain;width:22px;height:22px}.title-group[data-v-182ef64e]{flex-direction:column;gap:1px;display:flex}.title-main[data-v-182ef64e]{color:var(--brand-title-color);margin:0;font-size:18px;font-weight:700;line-height:1.2}.title-sub[data-v-182ef64e]{color:var(--text-tertiary);font-size:11px}.nav-tabs[data-v-182ef64e]{background:color-mix(in srgb, var(--bg-primary) 86%, transparent);border:1px solid var(--border-primary);border-radius:999px;align-items:center;gap:6px;margin-left:28px;padding:6px 8px;display:flex;box-shadow:0 14px 36px #0f171d14}.nav-tab[data-v-182ef64e]{cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:8px 14px;transition:background .2s;display:flex;position:relative}.nav-tab[data-v-182ef64e]:hover{background:var(--hover-bg)}.nav-tab.active[data-v-182ef64e]{background:var(--primary-color-soft)}.nav-tab.active[data-v-182ef64e]:after{content:"";border-radius:inherit;background:0 0;border:1px solid #18a05838;position:absolute;inset:0}.nav-icon[data-v-182ef64e]{color:var(--text-tertiary)}.nav-tab:hover .nav-icon[data-v-182ef64e],.nav-tab.active .nav-icon[data-v-182ef64e]{color:var(--primary-color,#18a058)}.nav-label[data-v-182ef64e]{color:var(--text-secondary);font-size:13px;font-weight:500}.nav-tab:hover .nav-label[data-v-182ef64e],.nav-tab.active .nav-label[data-v-182ef64e]{color:var(--primary-color,#18a058)}.nav-tab.active .nav-label[data-v-182ef64e]{font-weight:600}.main-container[data-v-182ef64e]{flex:1;height:calc(100vh - 74px);min-height:0;display:flex;overflow:hidden}.global-loading-overlay[data-v-182ef64e]{background:var(--bg-overlay);z-index:1000;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.left-content[data-v-182ef64e]{flex:1;min-width:0;height:100%;overflow:hidden}.favorites-button-wrapper[data-v-182ef64e]{position:relative}.favorites-badge[data-v-182ef64e]{color:#fff;pointer-events:none;background:#ff4d4f;border-radius:7px;justify-content:center;align-items:center;min-width:14px;height:14px;padding:0 3px;font-size:9px;font-weight:600;display:flex;position:absolute;top:-3px;right:-3px}.help-content[data-v-182ef64e]{max-height:70vh;overflow-y:auto}.help-section[data-v-182ef64e]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;margin-bottom:20px;padding:16px}.help-section[data-v-182ef64e]:last-child{margin-bottom:0}.help-section h4[data-v-182ef64e]{color:var(--text-primary);border-bottom:1px solid var(--border-primary);margin:0 0 12px;padding-bottom:10px;font-size:15px;font-weight:600}.help-section p[data-v-182ef64e]{color:var(--text-secondary);margin:0 0 10px;font-size:13px;line-height:1.7}.help-section ul[data-v-182ef64e]{margin:8px 0 0;padding-left:20px}.help-section li[data-v-182ef64e]{color:var(--text-secondary);margin-bottom:4px;font-size:13px;line-height:1.8}.help-section li strong[data-v-182ef64e]{color:var(--primary-color,#18a058)}.command-list[data-v-182ef64e]{flex-direction:column;gap:8px;display:flex}.command-item[data-v-182ef64e]{background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:6px;align-items:center;gap:12px;padding:10px 12px;display:flex}.command-item code[data-v-182ef64e]{min-width:140px;color:var(--primary-color,#18a058);background:#18a0581a;border-radius:4px;padding:4px 10px;font-family:monospace;font-size:12px;font-weight:600}.command-item span[data-v-182ef64e]{color:var(--text-secondary);font-size:13px}.help-section kbd[data-v-182ef64e]{color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:3px;margin:0 2px;padding:2px 6px;font-family:monospace;font-size:11px;font-weight:600;display:inline-block}.link-list[data-v-182ef64e]{flex-wrap:wrap;gap:12px;display:flex}.link-list a[data-v-182ef64e]{color:var(--primary-color,#18a058);background:#18a05814;border-radius:4px;padding:6px 10px;font-size:13px;text-decoration:none}.link-list a[data-v-182ef64e]:hover{background:#18a05826}.panel-security-auth[data-v-182ef64e]{flex-direction:column;gap:12px;display:flex}.panel-security-error[data-v-182ef64e]{color:#d03050;font-size:12px}.panel-security-hint[data-v-182ef64e]{font-size:12px;line-height:1.6}.header-actions[data-v-182ef64e],.nav-tabs[data-v-182ef64e]{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}[data-theme=dark] .header[data-v-182ef64e]{border-bottom-color:#2b424aeb;box-shadow:inset 0 -1px #ffffff08}[data-theme=dark] .header-actions[data-v-182ef64e],[data-theme=dark] .nav-tabs[data-v-182ef64e]{background:#0c151bdb;border-color:#364c56e6;box-shadow:0 14px 32px #00000042}[data-theme=dark] .logo-section[data-v-182ef64e]:hover{background:#ffffff0d}@media (width<=1024px){.header[data-v-182ef64e]{height:68px;padding:10px 16px}.main-container[data-v-182ef64e]{height:calc(100vh - 68px)}.nav-tabs[data-v-182ef64e]{margin-left:16px;padding:5px 6px}.title-sub[data-v-182ef64e]{display:none}}@media (width<=768px){.header[data-v-182ef64e]{height:60px;padding:8px 12px}.main-container[data-v-182ef64e]{height:calc(100vh - 60px)}.logo-wrapper[data-v-182ef64e]{width:28px;height:28px}.logo-image[data-v-182ef64e]{width:18px;height:18px}.title-main[data-v-182ef64e]{font-size:14px}.title-sub[data-v-182ef64e]{display:none}.nav-tabs[data-v-182ef64e]{gap:2px;margin-left:10px;padding:4px 5px}.nav-tab[data-v-182ef64e]{gap:4px;padding:6px 10px}.nav-label[data-v-182ef64e]{font-size:12px}.header-actions[data-v-182ef64e]{gap:2px}}@media (width<=640px){.header[data-v-182ef64e]{height:54px;padding:6px 8px}.main-container[data-v-182ef64e]{height:calc(100vh - 54px)}.title-group[data-v-182ef64e]{display:none}.nav-tabs[data-v-182ef64e]{flex:1;justify-content:center;margin-left:8px}.nav-tab[data-v-182ef64e]{flex-direction:column;gap:2px;padding:4px 6px}.nav-label[data-v-182ef64e]{font-size:10px}}.asset-panel{background:var(--bg-primary);flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.asset-panel-header,.asset-drawer-toolbar{border-bottom:1px solid var(--border-primary);background:var(--bg-primary);justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.asset-drawer-toolbar{background:var(--bg-secondary);justify-content:flex-end;padding:10px 12px}.asset-title-group,.asset-title-row,.asset-action-row,.asset-filter-bar,.asset-summary,.asset-meta,.asset-tags,.asset-card-actions{align-items:center;display:flex}.asset-title-group{gap:10px;min-width:0}.asset-heading{min-width:0}.asset-title-row{gap:8px;min-width:0}.asset-title{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:650;line-height:1.25;overflow:hidden}.asset-subtitle{color:var(--text-tertiary);margin-top:3px;font-size:12px;line-height:1.35}.asset-platform-pill{border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-tertiary);border-radius:999px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:500;line-height:1.4}.asset-action-row{flex-shrink:0;gap:6px}.asset-action-row .n-button{font-size:12px}.asset-summary{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);gap:8px;padding:10px 18px}.asset-panel.in-drawer .asset-summary{padding:10px 12px}.asset-summary-item{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:999px;align-items:baseline;gap:6px;min-width:0;padding:4px 8px;display:inline-flex}.asset-summary-label{color:var(--text-tertiary);font-size:11px}.asset-summary-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:650}.asset-filter-bar{border-bottom:1px solid var(--border-primary);background:var(--bg-primary);gap:10px;padding:12px 18px}.asset-panel.in-drawer .asset-filter-bar{padding:10px 12px}.asset-search{flex:1;min-width:160px}.asset-filter{flex-shrink:0;width:116px}.asset-panel-content{flex:1;min-height:0;padding:16px 18px;overflow-y:auto}.asset-panel.in-drawer .asset-panel-content{padding:12px}.asset-panel-content .n-spin-container{min-height:220px}.asset-empty{justify-content:center;align-items:center;min-height:220px;display:flex}.asset-list{flex-direction:column;gap:10px;display:flex}.asset-footer{border-top:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-tertiary);align-items:center;gap:6px;padding:9px 18px;font-size:11px;display:flex}.asset-panel.in-drawer .asset-footer{padding:8px 12px}.asset-info-icon{color:var(--text-quaternary)}.asset-card{border:1px solid var(--border-primary);background:var(--bg-primary);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:14px;min-height:96px;padding:14px;transition:border-color .16s ease-out,background-color .16s ease-out,box-shadow .16s ease-out;display:flex}.asset-card:hover{border-color:var(--border-secondary);background:var(--bg-secondary);box-shadow:var(--shadow-sm)}.asset-card.is-installed,.asset-card.is-managed,.asset-card.is-project{background:linear-gradient(0deg, oklch(62% .15 151/.045), oklch(62% .15 151/.045)), var(--bg-primary)}.asset-card.is-disabled,.asset-card.is-protected{background:var(--bg-secondary)}.asset-card-main{flex:1;min-width:0}.asset-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.asset-card-title-stack{min-width:0}.asset-card-title-row{align-items:center;gap:7px;min-width:0;display:flex}.asset-status-dot{background:var(--text-quaternary);border-radius:999px;flex:none;width:7px;height:7px}.asset-status-dot.active{background:var(--primary-color);box-shadow:0 0 0 3px oklch(62% .15 151/.1)}.asset-status-dot.warning{background:oklch(68% .14 78);box-shadow:0 0 0 3px oklch(68% .14 78/.1)}.asset-name{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;line-height:1.35;overflow:hidden}.asset-name.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-tags{flex-wrap:wrap;gap:5px;margin-top:6px}.asset-description{color:var(--text-secondary);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:9px;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.asset-meta{color:var(--text-tertiary);flex-wrap:wrap;gap:8px;margin-top:9px;font-size:11px}.asset-meta-item{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;min-width:0;max-width:100%;display:inline-flex;overflow:hidden}.asset-meta-item.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-link{color:var(--primary-color);flex-shrink:0;text-decoration:none}.asset-link:hover{text-decoration:underline}.asset-card-actions{flex-shrink:0;gap:5px}.asset-platform-strip{align-items:center;gap:5px;margin-left:6px;display:flex}.asset-platform-icon{border:1px solid var(--border-primary);background:var(--bg-secondary);width:24px;height:24px;color:var(--text-tertiary);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:border-color .16s ease-out,color .16s ease-out,background-color .16s ease-out;display:inline-flex}.asset-platform-icon:hover{border-color:var(--border-secondary);color:var(--text-secondary)}.asset-platform-icon.active{color:var(--primary-color);background:oklch(62% .15 151/.1);border-color:oklch(62% .15 151/.34)}.asset-detail-drawer-header{width:100%}.asset-detail-identity{align-items:center;gap:12px;min-width:0;display:flex}.asset-detail-icon{color:var(--primary-color);flex-shrink:0}.asset-detail-heading{flex-direction:column;gap:4px;min-width:0;display:flex}.asset-detail-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:650;line-height:1.25;overflow:hidden}.asset-detail-name.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-detail-meta{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.asset-detail-subtle{min-width:0;color:var(--text-tertiary);align-items:center;gap:4px;font-size:12px;display:inline-flex}.asset-detail-body{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.asset-detail-container{flex-direction:column;gap:22px;min-height:0;display:flex}.asset-detail-info-section{flex-direction:column;gap:10px;display:flex}.asset-detail-section-title{color:var(--text-primary);margin:0;font-size:14px;font-weight:650}.asset-detail-description{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.65}.asset-detail-list{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;overflow:hidden}.asset-detail-row{border-bottom:1px solid var(--border-primary);grid-template-columns:104px minmax(0,1fr);gap:12px;padding:10px 12px;font-size:13px;display:grid}.asset-detail-row:last-child{border-bottom:0}.asset-detail-label{color:var(--text-tertiary)}.asset-detail-value{overflow-wrap:anywhere;min-width:0;color:var(--text-secondary)}.asset-detail-value.mono{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace);font-size:12px}.asset-detail-box{border:1px solid var(--border-primary);background:var(--bg-secondary);min-width:0;color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:12px;font-size:13px;display:flex}.asset-detail-box code,.asset-detail-code{font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace)}.asset-detail-box code{overflow-wrap:anywhere;color:var(--text-secondary);font-size:12px}.asset-detail-path-box{align-items:flex-start}.asset-detail-path-icon{flex:none;margin-top:1px}.asset-detail-path-text{flex:1;min-width:0;line-height:1.5}.asset-detail-path-copy{color:var(--text-tertiary);flex:none;margin:-4px -4px -4px 4px}.asset-detail-path-copy:hover{color:var(--text-primary)}.asset-detail-link{overflow-wrap:anywhere;min-width:0;color:var(--primary-color);text-decoration:none}.asset-detail-link:hover{text-decoration:underline}.asset-detail-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.asset-detail-content{border:1px solid var(--border-primary);background:var(--bg-secondary);min-height:0;color:var(--text-secondary);overflow-wrap:anywhere;border-radius:8px;flex:1;padding:18px;font-size:13px;line-height:1.7;overflow:auto}.asset-detail-content h1,.asset-detail-content h2,.asset-detail-content h3,.asset-detail-content h4,.asset-detail-content h5,.asset-detail-content h6{color:var(--text-primary);margin:22px 0 10px;font-weight:650;line-height:1.35}.asset-detail-content h1:first-child,.asset-detail-content h2:first-child,.asset-detail-content h3:first-child{margin-top:0}.asset-detail-content h1{border-bottom:1px solid var(--border-primary);padding-bottom:10px;font-size:20px}.asset-detail-content h2{border-bottom:1px solid var(--border-primary);padding-bottom:7px;font-size:17px}.asset-detail-content h3{font-size:15px}.asset-detail-content h4{font-size:14px}.asset-detail-content h5,.asset-detail-content h6{color:var(--text-secondary);font-size:13px}.asset-detail-content p{margin:10px 0}.asset-detail-content strong{color:var(--text-primary);font-weight:650}.asset-detail-content code{border:1px solid var(--border-primary);background:var(--bg-tertiary);font-family:var(--font-mono,"SF Mono", "JetBrains Mono", "Cascadia Code", monospace);border-radius:5px;padding:2px 6px;font-size:12px}.asset-detail-content pre{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:8px;margin:14px 0;padding:14px;line-height:1.65;overflow-x:auto}.asset-detail-content pre code{color:var(--text-secondary);background:0 0;border:0;padding:0;font-size:12px}.asset-detail-content ul,.asset-detail-content ol{margin:10px 0;padding-left:24px}.asset-detail-content li{margin:5px 0}.asset-detail-content li>p{margin:6px 0}.asset-detail-content a{color:var(--primary-color);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.asset-detail-content a:hover{color:var(--primary-color-hover,var(--primary-color))}.asset-detail-content blockquote{border-left:1px solid var(--border-secondary);background:var(--bg-primary);color:var(--text-tertiary);border-radius:0 8px 8px 0;margin:14px 0;padding:10px 12px}.asset-detail-content blockquote>:first-child{margin-top:0}.asset-detail-content blockquote>:last-child{margin-bottom:0}.asset-detail-content table{border-collapse:collapse;width:max-content;max-width:100%;margin:14px 0;font-size:12px;display:block;overflow-x:auto}.asset-detail-content th,.asset-detail-content td{border:1px solid var(--border-primary);text-align:left;vertical-align:top;padding:8px 10px}.asset-detail-content th{background:var(--bg-tertiary);color:var(--text-primary);font-weight:650}.asset-detail-content img{border-radius:8px;max-width:100%;height:auto;margin:14px auto;display:block}.asset-detail-content hr{background:var(--border-primary);border:0;height:1px;margin:20px 0}.asset-detail-code{border:1px solid var(--border-primary);background:var(--bg-secondary);min-height:0;color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;border-radius:8px;flex:1;margin:0;padding:16px;font-size:12px;line-height:1.65;overflow:auto}.asset-detail-loading,.asset-detail-empty,.asset-detail-error{color:var(--text-tertiary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:64px 24px;display:flex}.asset-detail-empty-icon,.asset-detail-error-icon{color:var(--text-quaternary)}.asset-detail-error-icon{color:oklch(56% .18 26)}.asset-detail-tabs{flex:1;height:100%;min-height:0}.asset-detail-tabs .n-tabs-pane-wrapper{flex:1;min-height:0;padding-top:16px;overflow:hidden}.asset-detail-tabs .n-tab-pane{flex-direction:column;height:100%;min-height:0;display:flex;overflow:auto}@media (width<=720px){.asset-panel-header{flex-direction:column;align-items:flex-start}.asset-action-row,.asset-filter-bar,.asset-card-top{width:100%}.asset-action-row,.asset-summary{flex-wrap:wrap}.asset-filter-bar{flex-direction:column;align-items:stretch}.asset-filter{width:100%}.asset-card{flex-direction:column}.asset-card-actions{flex-wrap:wrap;align-self:flex-start}}:root{--bg-primary:#fff;--bg-secondary:#f4f7f8;--bg-tertiary:#edf3f1;--bg-elevated:#fff;--bg-overlay:#ffffffeb;--text-primary:#122025;--text-secondary:#58717d;--text-tertiary:#738995;--text-quaternary:#95a7af;--border-primary:#d8e1de;--border-secondary:#c3d0cb;--hover-bg:#18a05814;--active-bg:#18a0581f;--shadow-sm:0 8px 20px #0f171d0f;--shadow-md:0 18px 42px #0f171d1a;--shadow-lg:0 30px 70px #0f171d24;--font-mono:"SF Mono", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace;--gradient-header:linear-gradient(135deg, #f8fbfc 0%, #eef6f3 52%, #e9f7f1 100%);--gradient-bg:linear-gradient(180deg, #f4f7f8 0%, #eef4f2 100%);--gradient-card:linear-gradient(145deg, #fffffffa 0%, #f7faf8fa 100%);--primary-color:#18a058;--primary-color-soft:#18a0581f;--brand-title-color:#0d8f55}[data-theme=dark]{--bg-primary:#0a1116;--bg-secondary:#101920;--bg-tertiary:#16222a;--bg-elevated:#1a2831;--bg-overlay:#0a1116f0;--text-primary:#e7eef0;--text-secondary:#a8bbc0;--text-tertiary:#82969d;--text-quaternary:#667b83;--border-primary:#263740;--border-secondary:#334852;--hover-bg:#ffffff14;--active-bg:#ffffff1f;--shadow-sm:0 10px 24px #0000003d;--shadow-md:0 22px 52px #0000004d;--shadow-lg:0 36px 76px #0000005c;--font-mono:"SF Mono", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace;--gradient-header:linear-gradient(135deg, #0b1419 0%, #101b22 58%, #0d171d 100%);--gradient-bg:linear-gradient(180deg, #0a1116 0%, #0d151b 56%, #091016 100%);--gradient-card:linear-gradient(145deg, #121b22fa 0%, #0c151bfa 100%);--primary-color:#18a058;--primary-color-soft:#18a05829;--brand-title-color:#37d08c}body{background:var(--bg-primary);color:var(--text-primary);margin:0;padding:0;font-family:SF Pro Display,SF Pro Text,Segoe UI Variable Display,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;transition:background-color .3s,color .3s}#app{background:var(--bg-primary);min-height:100vh}*{scrollbar-width:thin;scrollbar-color:#18a05847 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:#18a05847;border-radius:3px;transition:background-color .2s}::-webkit-scrollbar-thumb:hover{background-color:#18a05880}[data-theme=dark] ::-webkit-scrollbar-thumb{background-color:#18a05866}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background-color:#18a05899}
|