coding-tool-x 3.8.9 → 3.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +56 -388
  2. package/dist/web/assets/AgentsDrawer-Bam7kBjG.js +1 -0
  3. package/dist/web/assets/Analytics-D5dUWXEa.js +1 -0
  4. package/dist/web/assets/AssetPathField-CLqalYv-.js +1 -0
  5. package/dist/web/assets/{ChatHistoryDrawer-BTmQ1aQr.js → ChatHistoryDrawer-C1At65O3.js} +1 -1
  6. package/dist/web/assets/{CollapseItem-CwqJk3bE.js → CollapseItem-CVWojShK.js} +1 -1
  7. package/dist/web/assets/CommandsDrawer-BEoypGBf.js +1 -0
  8. package/dist/web/assets/ConfigExportDrawer-DBvFDDWK.js +1 -0
  9. package/dist/web/assets/{ConfigTemplates-gyERg9iC.js → ConfigTemplates-BpaWG-iC.js} +1 -1
  10. package/dist/web/assets/{ConfigTemplatesDrawer-B17RqFi4.js → ConfigTemplatesDrawer-C2lvyKMf.js} +1 -1
  11. package/dist/web/assets/ConfigTemplatesPanel-CorOY7kY.js +1 -0
  12. package/dist/web/assets/{Divider-DsdbkHrG.js → Divider-BLLhMTSt.js} +1 -1
  13. package/dist/web/assets/FavoritesDrawer-uW88N6te.js +1 -0
  14. package/dist/web/assets/GatewayConvertDrawer-i5Wt9Dd9.js +1 -0
  15. package/dist/web/assets/Home-BIxWvm29.js +1 -0
  16. package/dist/web/assets/{MarkdownEditor-9TTwTS-U.js → MarkdownEditor-Ul0bSGj-.js} +1 -1
  17. package/dist/web/assets/McpDrawer-Cc2xq77I.js +1 -0
  18. package/dist/web/assets/McpFormDrawer-DLHX_nrI.js +1 -0
  19. package/dist/web/assets/{PluginManager-BuRcWuBj.js → PluginManager-BGQ0xF2F.js} +1 -1
  20. package/dist/web/assets/{PluginsDrawer-_zZENaQn.js → PluginsDrawer-STwHEqiF.js} +1 -1
  21. package/dist/web/assets/PluginsPanel-1zuNP7da.js +1 -0
  22. package/dist/web/assets/ProjectList-_pe2nk9c.js +1 -0
  23. package/dist/web/assets/PromptsDrawer-CJN1xZk7.js +1 -0
  24. package/dist/web/assets/RecentSessionsDrawer-DX1HI8Nm.js +1 -0
  25. package/dist/web/assets/SessionCard-Op6PHvi0.js +1 -0
  26. package/dist/web/assets/SessionList-Da_TAEYr.js +1 -0
  27. package/dist/web/assets/SettingsDrawer-DKLd4Sjy.js +1 -0
  28. package/dist/web/assets/{SkillManager-S698Hns8.js → SkillManager-PcAa5EbF.js} +1 -1
  29. package/dist/web/assets/{SkillsDrawer-Ms4lPCow.js → SkillsDrawer-DPdU4p6C.js} +1 -1
  30. package/dist/web/assets/SkillsPanel-B9qzRqjd.js +1 -0
  31. package/dist/web/assets/Upload-e1M9Yp5z.js +1 -0
  32. package/dist/web/assets/{WorkspaceDrawer-L7HJRc6u.js → WorkspaceDrawer-oS6mB1VZ.js} +1 -1
  33. package/dist/web/assets/{WorkspaceManager-DsoNg2z8.js → WorkspaceManager-6VvRWe3r.js} +1 -1
  34. package/dist/web/assets/WorkspacePanel-CYq0Z8iY.js +1 -0
  35. package/dist/web/assets/client-BgcNg4Bt.js +1 -0
  36. package/dist/web/assets/{headers-B5JWGn3v.js → headers-DbowkmZJ.js} +1 -1
  37. package/dist/web/assets/{icons-DmFe4b5j.js → icons-B-AzZoeE.js} +1 -1
  38. package/dist/web/assets/index-BlUXw84U.js +2 -0
  39. package/dist/web/assets/index-Bn8BUnwP.css +1 -0
  40. package/dist/web/assets/{light-0eavxNvt.js → light-C2X7hegj.js} +1 -1
  41. package/dist/web/assets/platforms-DrzAtnjY.js +1 -0
  42. package/dist/web/assets/platforms-mqqe_82d.js +1 -0
  43. package/dist/web/assets/project-config-BVt5s-pH.js +1 -0
  44. package/dist/web/assets/sessions-53-Fr68H.js +1 -0
  45. package/dist/web/assets/{sessions-D4yQtfKb.js → sessions-CaWUaysM.js} +1 -1
  46. package/dist/web/assets/use-message-DBsCm7FJ.js +1 -0
  47. package/dist/web/assets/{useResponsiveDrawer-V_onl9NV.js → useResponsiveDrawer-ChHZrTfl.js} +1 -1
  48. package/dist/web/assets/{workspaces-mjyPVGS8.js → workspaces-DQuZd4qw.js} +1 -1
  49. package/dist/web/index.html +8 -8
  50. package/package.json +4 -2
  51. package/src/commands/export-config.js +17 -211
  52. package/src/config/model-metadata.json +180 -16
  53. package/src/platforms/channel-auth-service.js +1 -1
  54. package/src/platforms/commands-service.js +28 -0
  55. package/src/platforms/driver-registry.js +1 -0
  56. package/src/platforms/drivers/claude/channels-implementation.js +79 -90
  57. package/src/platforms/drivers/claude/native-config-implementation.js +3 -4
  58. package/src/platforms/drivers/codex/channels-implementation.js +34 -49
  59. package/src/platforms/drivers/codex/native-config-implementation.js +3 -51
  60. package/src/platforms/drivers/dsh/api-operations.js +1 -1
  61. package/src/platforms/drivers/dsh/channels-implementation.js +28 -8
  62. package/src/platforms/drivers/dsh/channels.js +0 -18
  63. package/src/platforms/drivers/dsh/common.js +7 -0
  64. package/src/platforms/drivers/dsh/native-config.js +7 -2
  65. package/src/platforms/drivers/gemini/channels-implementation.js +47 -55
  66. package/src/platforms/drivers/gemini/native-config-implementation.js +8 -20
  67. package/src/platforms/drivers/generic-native-config.js +20 -0
  68. package/src/platforms/drivers/native-config-snapshot.js +30 -4
  69. package/src/platforms/drivers/omp/channels-implementation.js +51 -17
  70. package/src/platforms/drivers/omp/native-config-implementation.js +10 -17
  71. package/src/platforms/drivers/opencode/channels-implementation.js +6 -0
  72. package/src/platforms/drivers/opencode/native-config-implementation.js +3 -67
  73. package/src/platforms/manifest-schema.js +35 -2
  74. package/src/platforms/manifests/claude.json +0 -8
  75. package/src/platforms/manifests/codex.json +0 -8
  76. package/src/platforms/manifests/dsh.json +6 -9
  77. package/src/platforms/manifests/gemini.json +0 -8
  78. package/src/platforms/manifests/omp.json +0 -8
  79. package/src/platforms/manifests/opencode.json +0 -8
  80. package/src/platforms/native-oauth-adapters.js +33 -33
  81. package/src/server/index.js +2 -0
  82. package/src/server/services/bounded-content.js +60 -0
  83. package/src/server/services/channel-balance.js +10 -4
  84. package/src/server/services/config-export-service.js +2 -2
  85. package/src/server/services/config-templates-service.js +5 -1
  86. package/src/server/services/plugins-service.js +162 -85
  87. package/src/server/services/session-history-maintenance-worker.js +71 -0
  88. package/src/server/services/session-history-maintenance.js +166 -0
  89. package/src/server/services/skill-service.js +23 -3
  90. package/src/server/services/speed-test.js +0 -72
  91. package/src/shared/channel-driver.js +16 -0
  92. package/src/shared/driver-factories/api.js +1 -0
  93. package/src/utils/native-config-patcher.js +474 -0
  94. package/dist/web/assets/AgentsDrawer-Cj5CJ4d9.js +0 -1
  95. package/dist/web/assets/Analytics-1doS-8uC.js +0 -1
  96. package/dist/web/assets/AssetPathField-C9TOPl7o.js +0 -1
  97. package/dist/web/assets/CommandsDrawer-CaZWDI_G.js +0 -1
  98. package/dist/web/assets/ConfigExportDrawer-C3vSZEsS.js +0 -1
  99. package/dist/web/assets/ConfigTemplatesPanel-DKIC_FqG.js +0 -1
  100. package/dist/web/assets/FavoritesDrawer-DaziQmBp.js +0 -1
  101. package/dist/web/assets/GatewayConvertDrawer-OMgWUUSc.js +0 -1
  102. package/dist/web/assets/Home-DOSUTfrE.js +0 -1
  103. package/dist/web/assets/McpDrawer-I8rl8lGH.js +0 -1
  104. package/dist/web/assets/McpFormDrawer-DEP3C7ut.js +0 -1
  105. package/dist/web/assets/PluginsPanel-Bs5qZ-TK.js +0 -1
  106. package/dist/web/assets/ProjectList-BSxuL2td.js +0 -1
  107. package/dist/web/assets/PromptsDrawer-CoZ-ZtsY.js +0 -1
  108. package/dist/web/assets/RecentSessionsDrawer-B_17aJBG.js +0 -1
  109. package/dist/web/assets/SessionCard-BL_x0d3t.js +0 -1
  110. package/dist/web/assets/SessionList-DhRYZ6vl.js +0 -1
  111. package/dist/web/assets/SettingsDrawer-fYb0DU7X.js +0 -1
  112. package/dist/web/assets/SkillsPanel-rqnqAOGL.js +0 -1
  113. package/dist/web/assets/SpeedTestDrawer-Bbn38SfV.js +0 -1
  114. package/dist/web/assets/SpeedTestDrawer-Dc0WToJ_.css +0 -1
  115. package/dist/web/assets/Upload-CdyVHxCI.js +0 -1
  116. package/dist/web/assets/WorkspacePanel-Be8PVZah.js +0 -1
  117. package/dist/web/assets/client-UDwXBP9i.js +0 -1
  118. package/dist/web/assets/index-3Lp6z8TQ.css +0 -1
  119. package/dist/web/assets/index-BKlAWTH-.js +0 -2
  120. package/dist/web/assets/platforms-BmzzwnSw.js +0 -1
  121. package/dist/web/assets/platforms-DWXgmy2w.js +0 -1
  122. package/dist/web/assets/project-config-B2baPzYL.js +0 -1
  123. package/dist/web/assets/sessions-CC0j-KH_.js +0 -1
  124. package/dist/web/assets/use-message-DqCwefG6.js +0 -1
@@ -1 +0,0 @@
1
- import{Ct as e,D as t,Dt as n,Lt as a,N as r,Pt as o,Qt as i,Tt as s,Xt as l,Yt as d,bn as b,dn as c,dt as p,gn as f,gt as u,hn as v,ht as g,i as h,it as x,j as m,ln as y,s as w,st as $,vn as C,xn as z,yn as S}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as R,C as T,D as P,F as W,G as j,I as _,M as L,N as A,O as k,Q as B,V as E,W as N,Z as O,_t as H,b as D,dt as F,et as I,f as V,g as M,m as X,mt as U,st as q,tt as G,u as Y,w as Q,x as Z,y as J}from"./vue-vendor-BqZbbXHA.js";import{n as K}from"./client-UDwXBP9i.js";import{et as ee,it as te}from"./icons-DmFe4b5j.js";import{S as ne,T as ae,j as re,w as oe,y as ie}from"./use-message-DqCwefG6.js";import{$ as se,Ct as le,N as de,O as be,St as ce,W as pe,k as fe}from"./index-BKlAWTH-.js";import{t as ue}from"./clipboard-B46yyoz_.js";var ve=oe(".v-x-scroll",{overflow:"auto",scrollbarWidth:"none"},[oe("&::-webkit-scrollbar",{width:0,height:0})]),ge=R({name:"XScroll",props:{disabled:Boolean,onScroll:Function},setup(){const e=q(null);const t=a();return ve.mount({id:"vueuc/x-scroll",head:!0,anchorMetaName:ae,ssr:t}),Object.assign({selfRef:e,handleWheel:function(e){e.currentTarget.offsetWidth<e.currentTarget.scrollWidth&&0!==e.deltaY&&(e.currentTarget.scrollLeft+=e.deltaY+e.deltaX,e.preventDefault())}},{scrollTo(...t){var n;null===(n=e.value)||void 0===n||n.scrollTo(...t)}})},render(){return L("div",{ref:"selfRef",onScroll:this.onScroll,onWheel:this.disabled?void 0:this.handleWheel,class:"v-x-scroll"},this.$slots)}}),he=/\s/;var xe=/^\s+/;function me(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&he.test(e.charAt(t)););return t}(e)+1).replace(xe,""):e}var ye=/^[-+]0x[0-9a-f]+$/i,we=/^0b[01]+$/i,$e=/^0o[0-7]+$/i,Ce=parseInt;function ze(e){if("number"==typeof e)return e;if($(e))return NaN;if(x(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=x(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=me(e);var n=we.test(e);return n||$e.test(e)?Ce(e.slice(2),n?2:8):ye.test(e)?NaN:+e}var Se=function(){return p.Date.now()},Re=Math.max,Te=Math.min;function Pe(e,t,n){var a,r,o,i,s,l,d=0,b=!1,c=!1,p=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=a,o=r;return a=r=void 0,d=t,i=e.apply(o,n)}function u(e){var n=e-l;return void 0===l||n>=t||n<0||c&&e-d>=o}function v(){var e=Se();if(u(e))return g(e);s=setTimeout(v,function(e){var n=t-(e-l);return c?Te(n,o-(e-d)):n}(e))}function g(e){return s=void 0,p&&a?f(e):(a=r=void 0,i)}function h(){var e=Se(),n=u(e);if(a=arguments,r=this,l=e,n){if(void 0===s)return function(e){return d=e,s=setTimeout(v,t),b?f(e):i}(l);if(c)return clearTimeout(s),s=setTimeout(v,t),f(l)}return void 0===s&&(s=setTimeout(v,t)),i}return t=ze(t)||0,x(n)&&(b=!!n.leading,o=(c="maxWait"in n)?Re(ze(n.maxWait)||0,t):o,p="trailing"in n?!!n.trailing:p),h.cancel=function(){void 0!==s&&clearTimeout(s),d=0,a=l=r=s=void 0},h.flush=function(){return void 0===s?i:g(Se())},h}var We=d("n-tabs"),je={tab:[String,Number,Object,Function],name:{type:[String,Number],required:!0},disabled:Boolean,displayDirective:{type:String,default:"if"},closable:{type:Boolean,default:void 0},tabProps:Object,label:[String,Number,Object,Function]},_e=R({__TAB_PANE__:!0,name:"TabPane",alias:["TabPanel"],props:je,slots:Object,setup(e){const t=A(We,null);return t||n("tab-pane","`n-tab-pane` must be placed inside `n-tabs`."),{style:t.paneStyleRef,class:t.paneClassRef,mergedClsPrefix:t.mergedClsPrefixRef}},render(){return L("div",{class:[`${this.mergedClsPrefix}-tab-pane`,this.class],style:this.style},this.$slots)}}),Le=R({__TAB__:!0,inheritAttrs:!1,name:"Tab",props:Object.assign({internalLeftPadded:Boolean,internalAddable:Boolean,internalCreatedByPane:Boolean},le(je,["displayDirective"])),setup(e){const{mergedClsPrefixRef:t,valueRef:n,typeRef:a,closableRef:r,tabStyleRef:o,addTabStyleRef:i,tabClassRef:s,addTabClassRef:l,tabChangeIdRef:d,onBeforeLeaveRef:b,triggerRef:c,handleAdd:p,activateTab:f,handleClose:u}=A(We);return{trigger:c,mergedClosable:D(()=>{if(e.internalAddable)return!1;const{closable:t}=e;return void 0===t?r.value:t}),style:o,addStyle:i,tabClass:s,addTabClass:l,clsPrefix:t,value:n,type:a,handleClose(t){t.stopPropagation(),e.disabled||u(e.name)},activateTab(){if(e.disabled)return;if(e.internalAddable)return void p();const{name:t}=e,a=++d.id;if(t!==n.value){const{value:r}=b;r?Promise.resolve(r(e.name,n.value)).then(e=>{e&&d.id===a&&f(t)}):f(t)}}}},render(){const{internalAddable:e,clsPrefix:n,name:a,disabled:r,label:o,tab:i,value:s,mergedClosable:l,trigger:d,$slots:{default:b}}=this,c=null!=o?o:i;return L("div",{class:`${n}-tabs-tab-wrapper`},this.internalLeftPadded?L("div",{class:`${n}-tabs-tab-pad`}):null,L("div",Object.assign({key:a,"data-name":a,"data-disabled":!!r||void 0},W({class:[`${n}-tabs-tab`,s===a&&`${n}-tabs-tab--active`,r&&`${n}-tabs-tab--disabled`,l&&`${n}-tabs-tab--closable`,e&&`${n}-tabs-tab--addable`,e?this.addTabClass:this.tabClass],onClick:"click"===d?this.activateTab:void 0,onMouseenter:"hover"===d?this.activateTab:void 0,style:e?this.addStyle:this.style},this.internalCreatedByPane?this.tabProps||{}:this.$attrs)),L("span",{class:`${n}-tabs-tab__label`},e?L(M,null,L("div",{class:`${n}-tabs-tab__height-placeholder`}," "),L(m,{clsPrefix:n},{default:()=>L(ce,null)})):b?b():"object"==typeof c?c:ie(null!=c?c:a)),l&&"card"===this.type?L(t,{clsPrefix:n,class:`${n}-tabs-tab__close`,onClick:this.handleClose,disabled:r}):null))}}),Ae=f("tabs","\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n",[S("segment-type",[f("tabs-rail",[v("&.transition-disabled",[f("tabs-capsule","\n transition: none;\n ")])])]),S("top",[f("tab-pane","\n padding: var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left);\n ")]),S("left",[f("tab-pane","\n padding: var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left) var(--n-pane-padding-top);\n ")]),S("left, right","\n flex-direction: row;\n ",[f("tabs-bar","\n width: 2px;\n right: 0;\n transition:\n top .2s var(--n-bezier),\n max-height .2s var(--n-bezier),\n background-color .3s var(--n-bezier);\n "),f("tabs-tab","\n padding: var(--n-tab-padding-vertical); \n ")]),S("right","\n flex-direction: row-reverse;\n ",[f("tab-pane","\n padding: var(--n-pane-padding-left) var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom);\n "),f("tabs-bar","\n left: 0;\n ")]),S("bottom","\n flex-direction: column-reverse;\n justify-content: flex-end;\n ",[f("tab-pane","\n padding: var(--n-pane-padding-bottom) var(--n-pane-padding-right) var(--n-pane-padding-top) var(--n-pane-padding-left);\n "),f("tabs-bar","\n top: 0;\n ")]),f("tabs-rail","\n position: relative;\n padding: 3px;\n border-radius: var(--n-tab-border-radius);\n width: 100%;\n background-color: var(--n-color-segment);\n transition: background-color .3s var(--n-bezier);\n display: flex;\n align-items: center;\n ",[f("tabs-capsule","\n border-radius: var(--n-tab-border-radius);\n position: absolute;\n pointer-events: none;\n background-color: var(--n-tab-color-segment);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .08);\n transition: transform 0.3s var(--n-bezier);\n "),f("tabs-tab-wrapper","\n flex-basis: 0;\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n ",[f("tabs-tab","\n overflow: hidden;\n border-radius: var(--n-tab-border-radius);\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n ",[S("active","\n font-weight: var(--n-font-weight-strong);\n color: var(--n-tab-text-color-active);\n "),v("&:hover","\n color: var(--n-tab-text-color-hover);\n ")])])]),S("flex",[f("tabs-nav","\n width: 100%;\n position: relative;\n ",[f("tabs-wrapper","\n width: 100%;\n ",[f("tabs-tab","\n margin-right: 0;\n ")])])]),f("tabs-nav","\n box-sizing: border-box;\n line-height: 1.5;\n display: flex;\n transition: border-color .3s var(--n-bezier);\n ",[C("prefix, suffix","\n display: flex;\n align-items: center;\n "),C("prefix","padding-right: 16px;"),C("suffix","padding-left: 16px;")]),S("top, bottom",[v(">",[f("tabs-nav",[f("tabs-nav-scroll-wrapper",[v("&::before","\n top: 0;\n bottom: 0;\n left: 0;\n width: 20px;\n "),v("&::after","\n top: 0;\n bottom: 0;\n right: 0;\n width: 20px;\n "),S("shadow-start",[v("&::before","\n box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, .12);\n ")]),S("shadow-end",[v("&::after","\n box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, .12);\n ")])])])])]),S("left, right",[f("tabs-nav-scroll-content","\n flex-direction: column;\n "),v(">",[f("tabs-nav",[f("tabs-nav-scroll-wrapper",[v("&::before","\n top: 0;\n left: 0;\n right: 0;\n height: 20px;\n "),v("&::after","\n bottom: 0;\n left: 0;\n right: 0;\n height: 20px;\n "),S("shadow-start",[v("&::before","\n box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, .12);\n ")]),S("shadow-end",[v("&::after","\n box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, .12);\n ")])])])])]),f("tabs-nav-scroll-wrapper","\n flex: 1;\n position: relative;\n overflow: hidden;\n ",[f("tabs-nav-y-scroll","\n height: 100%;\n width: 100%;\n overflow-y: auto; \n scrollbar-width: none;\n ",[v("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb","\n width: 0;\n height: 0;\n display: none;\n ")]),v("&::before, &::after",'\n transition: box-shadow .3s var(--n-bezier);\n pointer-events: none;\n content: "";\n position: absolute;\n z-index: 1;\n ')]),f("tabs-nav-scroll-content","\n display: flex;\n position: relative;\n min-width: 100%;\n min-height: 100%;\n width: fit-content;\n box-sizing: border-box;\n "),f("tabs-wrapper","\n display: inline-flex;\n flex-wrap: nowrap;\n position: relative;\n "),f("tabs-tab-wrapper","\n display: flex;\n flex-wrap: nowrap;\n flex-shrink: 0;\n flex-grow: 0;\n "),f("tabs-tab","\n cursor: pointer;\n white-space: nowrap;\n flex-wrap: nowrap;\n display: inline-flex;\n align-items: center;\n color: var(--n-tab-text-color);\n font-size: var(--n-tab-font-size);\n background-clip: padding-box;\n padding: var(--n-tab-padding);\n transition:\n box-shadow .3s var(--n-bezier),\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[S("disabled",{cursor:"not-allowed"}),C("close","\n margin-left: 6px;\n transition:\n background-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n "),C("label","\n display: flex;\n align-items: center;\n z-index: 1;\n ")]),f("tabs-bar","\n position: absolute;\n bottom: 0;\n height: 2px;\n border-radius: 1px;\n background-color: var(--n-bar-color);\n transition:\n left .2s var(--n-bezier),\n max-width .2s var(--n-bezier),\n opacity .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n ",[v("&.transition-disabled","\n transition: none;\n "),S("disabled","\n background-color: var(--n-tab-text-color-disabled)\n ")]),f("tabs-pane-wrapper","\n position: relative;\n overflow: hidden;\n transition: max-height .2s var(--n-bezier);\n "),f("tab-pane","\n color: var(--n-pane-text-color);\n width: 100%;\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n opacity .2s var(--n-bezier);\n left: 0;\n right: 0;\n top: 0;\n ",[v("&.next-transition-leave-active, &.prev-transition-leave-active, &.next-transition-enter-active, &.prev-transition-enter-active","\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n transform .2s var(--n-bezier),\n opacity .2s var(--n-bezier);\n "),v("&.next-transition-leave-active, &.prev-transition-leave-active","\n position: absolute;\n "),v("&.next-transition-enter-from, &.prev-transition-leave-to","\n transform: translateX(32px);\n opacity: 0;\n "),v("&.next-transition-leave-to, &.prev-transition-enter-from","\n transform: translateX(-32px);\n opacity: 0;\n "),v("&.next-transition-leave-from, &.next-transition-enter-to, &.prev-transition-leave-from, &.prev-transition-enter-to","\n transform: translateX(0);\n opacity: 1;\n ")]),f("tabs-tab-pad","\n box-sizing: border-box;\n width: var(--n-tab-gap);\n flex-grow: 0;\n flex-shrink: 0;\n "),S("line-type, bar-type",[f("tabs-tab","\n font-weight: var(--n-tab-font-weight);\n box-sizing: border-box;\n vertical-align: bottom;\n ",[v("&:hover",{color:"var(--n-tab-text-color-hover)"}),S("active","\n color: var(--n-tab-text-color-active);\n font-weight: var(--n-tab-font-weight-active);\n "),S("disabled",{color:"var(--n-tab-text-color-disabled)"})])]),f("tabs-nav",[S("line-type",[S("top",[C("prefix, suffix","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n bottom: -1px;\n ")]),S("left",[C("prefix, suffix","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n right: -1px;\n ")]),S("right",[C("prefix, suffix","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n left: -1px;\n ")]),S("bottom",[C("prefix, suffix","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n top: -1px;\n ")]),C("prefix, suffix","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-nav-scroll-content","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-bar","\n border-radius: 0;\n ")]),S("card-type",[C("prefix, suffix","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-pad","\n flex-grow: 1;\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-tab-pad","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-tab","\n font-weight: var(--n-tab-font-weight);\n border: 1px solid var(--n-tab-border-color);\n background-color: var(--n-tab-color);\n box-sizing: border-box;\n position: relative;\n vertical-align: bottom;\n display: flex;\n justify-content: space-between;\n font-size: var(--n-tab-font-size);\n color: var(--n-tab-text-color);\n ",[S("addable","\n padding-left: 8px;\n padding-right: 8px;\n font-size: 16px;\n justify-content: center;\n ",[C("height-placeholder","\n width: 0;\n font-size: var(--n-tab-font-size);\n "),b("disabled",[v("&:hover","\n color: var(--n-tab-text-color-hover);\n ")])]),S("closable","padding-right: 8px;"),S("active","\n background-color: #0000;\n font-weight: var(--n-tab-font-weight-active);\n color: var(--n-tab-text-color-active);\n "),S("disabled","color: var(--n-tab-text-color-disabled);")])]),S("left, right","\n flex-direction: column; \n ",[C("prefix, suffix","\n padding: var(--n-tab-padding-vertical);\n "),f("tabs-wrapper","\n flex-direction: column;\n "),f("tabs-tab-wrapper","\n flex-direction: column;\n ",[f("tabs-tab-pad","\n height: var(--n-tab-gap-vertical);\n width: 100%;\n ")])]),S("top",[S("card-type",[f("tabs-scroll-padding","border-bottom: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-left-radius: var(--n-tab-border-radius);\n border-top-right-radius: var(--n-tab-border-radius);\n ",[S("active","\n border-bottom: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-bottom: 1px solid var(--n-tab-border-color);\n ")])]),S("left",[S("card-type",[f("tabs-scroll-padding","border-right: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-left-radius: var(--n-tab-border-radius);\n border-bottom-left-radius: var(--n-tab-border-radius);\n ",[S("active","\n border-right: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-right: 1px solid var(--n-tab-border-color);\n ")])]),S("right",[S("card-type",[f("tabs-scroll-padding","border-left: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-right-radius: var(--n-tab-border-radius);\n border-bottom-right-radius: var(--n-tab-border-radius);\n ",[S("active","\n border-left: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-left: 1px solid var(--n-tab-border-color);\n ")])]),S("bottom",[S("card-type",[f("tabs-scroll-padding","border-top: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-bottom-left-radius: var(--n-tab-border-radius);\n border-bottom-right-radius: var(--n-tab-border-radius);\n ",[S("active","\n border-top: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-top: 1px solid var(--n-tab-border-color);\n ")])])])]),ke=function(e,t,n){var a=!0,r=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return x(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),Pe(e,t,{leading:a,maxWait:t,trailing:r})},Be=R({name:"Tabs",props:Object.assign(Object.assign({},r.props),{value:[String,Number],defaultValue:[String,Number],trigger:{type:String,default:"click"},type:{type:String,default:"bar"},closable:Boolean,justifyContent:String,size:{type:String,default:"medium"},placement:{type:String,default:"top"},tabStyle:[String,Object],tabClass:String,addTabStyle:[String,Object],addTabClass:String,barWidth:Number,paneClass:String,paneStyle:[String,Object],paneWrapperClass:String,paneWrapperStyle:[String,Object],addable:[Boolean,Object],tabsPadding:{type:Number,default:0},animated:Boolean,onBeforeLeave:Function,onAdd:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onClose:[Function,Array],labelSize:String,activeName:[String,Number],onActiveNameChange:[Function,Array]}),slots:Object,setup(e,{slots:t}){var n,a,o,d;const{mergedClsPrefixRef:b,inlineThemeDisabled:p}=u(e),f=r("Tabs","-tabs",Ae,pe,e,b),v=q(null),h=q(null),x=q(null),m=q(null),w=q(null),$=q(null),C=q(!0),S=q(!0),R=l(e,["labelSize","size"]),T=l(e,["activeName","value"]),P=q(null!==(a=null!==(n=T.value)&&void 0!==n?n:e.defaultValue)&&void 0!==a?a:t.default?null===(d=null===(o=ne(t.default())[0])||void 0===o?void 0:o.props)||void 0===d?void 0:d.name:null),W=i(T,P),L={id:0},A=D(()=>{if(e.justifyContent&&"card"!==e.type)return{display:"flex",justifyContent:e.justifyContent}});function k(){var e;const{value:t}=W;return null===t?null:null===(e=v.value)||void 0===e?void 0:e.querySelector(`[data-name="${t}"]`)}function N(e){const{value:t}=h;if(t)for(const n of e)t.style[n]=""}function H(){if("card"===e.type)return;const t=k();t?function(t){if("card"===e.type)return;const{value:n}=h;if(!n)return;const a="0"===n.style.opacity;if(t){const r=`${b.value}-tabs-bar--disabled`,{barWidth:o,placement:i}=e;if("true"===t.dataset.disabled?n.classList.add(r):n.classList.remove(r),["top","bottom"].includes(i)){if(N(["top","maxHeight","height"]),"number"==typeof o&&t.offsetWidth>=o){const e=Math.floor((t.offsetWidth-o)/2)+t.offsetLeft;n.style.left=`${e}px`,n.style.maxWidth=`${o}px`}else n.style.left=`${t.offsetLeft}px`,n.style.maxWidth=`${t.offsetWidth}px`;n.style.width="8192px",a&&(n.style.transition="none"),n.offsetWidth,a&&(n.style.transition="",n.style.opacity="1")}else{if(N(["left","maxWidth","width"]),"number"==typeof o&&t.offsetHeight>=o){const e=Math.floor((t.offsetHeight-o)/2)+t.offsetTop;n.style.top=`${e}px`,n.style.maxHeight=`${o}px`}else n.style.top=`${t.offsetTop}px`,n.style.maxHeight=`${t.offsetHeight}px`;n.style.height="8192px",a&&(n.style.transition="none"),n.offsetHeight,a&&(n.style.transition="",n.style.opacity="1")}}}(t):function(){if("card"===e.type)return;const{value:t}=h;t&&(t.style.opacity="0")}()}function I(){var e;const t=null===(e=w.value)||void 0===e?void 0:e.$el;if(!t)return;const n=k();if(!n)return;const{scrollLeft:a,offsetWidth:r}=t,{offsetLeft:o,offsetWidth:i}=n;a>o?t.scrollTo({top:0,left:o,behavior:"smooth"}):o+i>a+r&&t.scrollTo({top:0,left:o+i-r,behavior:"smooth"})}O(W,()=>{L.id=0,H(),I()});const V=q(null);let M=0,X=null;const U={value:[]},G=q("next");let Y=!0;function Q(){const{value:e}=h;if(!e)return;Y||(Y=!1);const t="transition-disabled";e.classList.add(t),H(),e.classList.remove(t)}const Z=q(null);function J({transitionDisabled:e}){const t=v.value;if(!t)return;e&&t.classList.add("transition-disabled");const n=k();n&&Z.value&&(Z.value.style.width=`${n.offsetWidth}px`,Z.value.style.height=`${n.offsetHeight}px`,Z.value.style.transform=`translateX(${n.offsetLeft-y(getComputedStyle(t).paddingLeft)}px)`,e&&Z.value.offsetWidth),e&&t.classList.remove("transition-disabled")}O([W],()=>{"segment"===e.type&&_(()=>{J({transitionDisabled:!1})})}),E(()=>{"segment"===e.type&&J({transitionDisabled:!0})});let K=0;const ee=ke(function(t){var n,a;if(0===t.contentRect.width&&0===t.contentRect.height)return;if(K===t.contentRect.width)return;K=t.contentRect.width;const{type:r}=e;if("line"!==r&&"bar"!==r||(Y||(null===(n=e.justifyContent)||void 0===n?void 0:n.startsWith("space")))&&Q(),"segment"!==r){const{placement:t}=e;oe(("top"===t||"bottom"===t?null===(a=w.value)||void 0===a?void 0:a.$el:$.value)||null)}},64);O([()=>e.justifyContent,()=>e.size],()=>{_(()=>{const{type:t}=e;"line"!==t&&"bar"!==t||Q()})});const te=q(!1);const ae=ke(function(t){var n;const{target:a,contentRect:{width:r,height:o}}=t,i=a.parentElement.parentElement.offsetWidth,s=a.parentElement.parentElement.offsetHeight,{placement:l}=e;if(te.value){const{value:e}=m;if(!e)return;"top"===l||"bottom"===l?i-r>e.$el.offsetWidth&&(te.value=!1):s-o>e.$el.offsetHeight&&(te.value=!1)}else"top"===l||"bottom"===l?i<r&&(te.value=!0):s<o&&(te.value=!0);oe((null===(n=w.value)||void 0===n?void 0:n.$el)||null)},64);function oe(t){if(!t)return;const{placement:n}=e;if("top"===n||"bottom"===n){const{scrollLeft:e,scrollWidth:n,offsetWidth:a}=t;C.value=e<=0,S.value=e+a>=n}else{const{scrollTop:e,scrollHeight:n,offsetHeight:a}=t;C.value=e<=0,S.value=e+a>=n}}const ie=ke(e=>{oe(e.target)},64);j(We,{triggerRef:F(e,"trigger"),tabStyleRef:F(e,"tabStyle"),tabClassRef:F(e,"tabClass"),addTabStyleRef:F(e,"addTabStyle"),addTabClassRef:F(e,"addTabClass"),paneClassRef:F(e,"paneClass"),paneStyleRef:F(e,"paneStyle"),mergedClsPrefixRef:b,typeRef:F(e,"type"),closableRef:F(e,"closable"),valueRef:W,tabChangeIdRef:L,onBeforeLeaveRef:F(e,"onBeforeLeave"),activateTab:function(t){const n=W.value;let a="next";for(const e of U.value){if(e===n)break;if(e===t){a="prev";break}}G.value=a,function(t){const{onActiveNameChange:n,onUpdateValue:a,"onUpdate:value":r}=e;n&&s(n,t);a&&s(a,t);r&&s(r,t);P.value=t}(t)},handleClose:function(t){const{onClose:n}=e;n&&s(n,t)},handleAdd:function(){const{onAdd:t}=e;t&&t(),_(()=>{const e=k(),{value:t}=w;e&&t&&t.scrollTo({left:e.offsetLeft,top:0,behavior:"smooth"})})}}),re(()=>{H(),I()}),B(()=>{const{value:e}=x;if(!e)return;const{value:t}=b,n=`${t}-tabs-nav-scroll-wrapper--shadow-start`,a=`${t}-tabs-nav-scroll-wrapper--shadow-end`;C.value?e.classList.remove(n):e.classList.add(n),S.value?e.classList.remove(a):e.classList.add(a)});const se={syncBarPosition:()=>{H()}},le=D(()=>{const{value:t}=R,{type:n}=e,a=`${t}${{card:"Card",bar:"Bar",line:"Line",segment:"Segment"}[n]}`,{self:{barColor:r,closeIconColor:o,closeIconColorHover:i,closeIconColorPressed:s,tabColor:l,tabBorderColor:d,paneTextColor:b,tabFontWeight:p,tabBorderRadius:u,tabFontWeightActive:v,colorSegment:g,fontWeightStrong:h,tabColorSegment:x,closeSize:m,closeIconSize:y,closeColorHover:w,closeColorPressed:$,closeBorderRadius:C,[z("panePadding",t)]:S,[z("tabPadding",a)]:T,[z("tabPaddingVertical",a)]:P,[z("tabGap",a)]:W,[z("tabGap",`${a}Vertical`)]:j,[z("tabTextColor",n)]:_,[z("tabTextColorActive",n)]:L,[z("tabTextColorHover",n)]:A,[z("tabTextColorDisabled",n)]:k,[z("tabFontSize",t)]:B},common:{cubicBezierEaseInOut:E}}=f.value;return{"--n-bezier":E,"--n-color-segment":g,"--n-bar-color":r,"--n-tab-font-size":B,"--n-tab-text-color":_,"--n-tab-text-color-active":L,"--n-tab-text-color-disabled":k,"--n-tab-text-color-hover":A,"--n-pane-text-color":b,"--n-tab-border-color":d,"--n-tab-border-radius":u,"--n-close-size":m,"--n-close-icon-size":y,"--n-close-color-hover":w,"--n-close-color-pressed":$,"--n-close-border-radius":C,"--n-close-icon-color":o,"--n-close-icon-color-hover":i,"--n-close-icon-color-pressed":s,"--n-tab-color":l,"--n-tab-font-weight":p,"--n-tab-font-weight-active":v,"--n-tab-padding":T,"--n-tab-padding-vertical":P,"--n-tab-gap":W,"--n-tab-gap-vertical":j,"--n-pane-padding-left":c(S,"left"),"--n-pane-padding-right":c(S,"right"),"--n-pane-padding-top":c(S,"top"),"--n-pane-padding-bottom":c(S,"bottom"),"--n-font-weight-strong":h,"--n-tab-color-segment":x}}),de=p?g("tabs",D(()=>`${R.value[0]}${e.type[0]}`),le,e):void 0;return Object.assign({mergedClsPrefix:b,mergedValue:W,renderedNames:new Set,segmentCapsuleElRef:Z,tabsPaneWrapperRef:V,tabsElRef:v,barElRef:h,addTabInstRef:m,xScrollInstRef:w,scrollWrapperElRef:x,addTabFixed:te,tabWrapperStyle:A,handleNavResize:ee,mergedSize:R,handleScroll:ie,handleTabsResize:ae,cssVars:p?void 0:le,themeClass:null==de?void 0:de.themeClass,animationDirection:G,renderNameListRef:U,yScrollElRef:$,handleSegmentResize:()=>{J({transitionDisabled:!0})},onAnimationBeforeLeave:function(e){const t=V.value;if(t){M=e.getBoundingClientRect().height;const n=`${M}px`,a=()=>{t.style.height=n,t.style.maxHeight=n};X?(a(),X(),X=null):X=a}},onAnimationEnter:function(e){const t=V.value;if(t){const n=e.getBoundingClientRect().height,a=()=>{document.body.offsetHeight,t.style.maxHeight=`${n}px`,t.style.height=`${Math.max(M,n)}px`};X?(X(),X=null,a()):X=a}},onAnimationAfterEnter:function(){const t=V.value;if(t){t.style.maxHeight="",t.style.height="";const{paneWrapperStyle:n}=e;if("string"==typeof n)t.style.cssText=n;else if(n){const{maxHeight:e,height:a}=n;void 0!==e&&(t.style.maxHeight=e),void 0!==a&&(t.style.height=a)}}},onRender:null==de?void 0:de.onRender},se)},render(){const{mergedClsPrefix:t,type:n,placement:a,addTabFixed:r,addable:i,mergedSize:s,renderNameListRef:l,onRender:d,paneWrapperClass:b,paneWrapperStyle:c,$slots:{default:p,prefix:f,suffix:u}}=this;null==d||d();const v=p?ne(p()).filter(e=>!0===e.type.__TAB_PANE__):[],g=p?ne(p()).filter(e=>!0===e.type.__TAB__):[],h=!g.length,x="card"===n,m="segment"===n,y=!x&&!m&&this.justifyContent;l.value=[];const w=()=>{const e=L("div",{style:this.tabWrapperStyle,class:`${t}-tabs-wrapper`},y?null:L("div",{class:`${t}-tabs-scroll-padding`,style:"top"===a||"bottom"===a?{width:`${this.tabsPadding}px`}:{height:`${this.tabsPadding}px`}}),h?v.map((e,t)=>(l.value.push(e.props.name),He(L(Le,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:0!==t&&(!y||"center"===y||"start"===y||"end"===y)}),e.children?{default:e.children.tab}:void 0)))):g.map((e,t)=>(l.value.push(e.props.name),He(0===t||y?e:Oe(e)))),!r&&i&&x?Ne(i,0!==(h?v.length:g.length)):null,y?null:L("div",{class:`${t}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return L("div",{ref:"tabsElRef",class:`${t}-tabs-nav-scroll-content`},x&&i?L(o,{onResize:this.handleTabsResize},{default:()=>e}):e,x?L("div",{class:`${t}-tabs-pad`}):null,x?null:L("div",{ref:"barElRef",class:`${t}-tabs-bar`}))},$=m?"top":a;return L("div",{class:[`${t}-tabs`,this.themeClass,`${t}-tabs--${n}-type`,`${t}-tabs--${s}-size`,y&&`${t}-tabs--flex`,`${t}-tabs--${$}`],style:this.cssVars},L("div",{class:[`${t}-tabs-nav--${n}-type`,`${t}-tabs-nav--${$}`,`${t}-tabs-nav`]},e(f,e=>e&&L("div",{class:`${t}-tabs-nav__prefix`},e)),m?L(o,{onResize:this.handleSegmentResize},{default:()=>L("div",{class:`${t}-tabs-rail`,ref:"tabsElRef"},L("div",{class:`${t}-tabs-capsule`,ref:"segmentCapsuleElRef"},L("div",{class:`${t}-tabs-wrapper`},L("div",{class:`${t}-tabs-tab`}))),h?v.map((e,t)=>(l.value.push(e.props.name),L(Le,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:0!==t}),e.children?{default:e.children.tab}:void 0))):g.map((e,t)=>(l.value.push(e.props.name),0===t?e:Oe(e))))}):L(o,{onResize:this.handleNavResize},{default:()=>L("div",{class:`${t}-tabs-nav-scroll-wrapper`,ref:"scrollWrapperElRef"},["top","bottom"].includes($)?L(ge,{ref:"xScrollInstRef",onScroll:this.handleScroll},{default:w}):L("div",{class:`${t}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:"yScrollElRef"},w()))}),r&&i&&x?Ne(i,!0):null,e(u,e=>e&&L("div",{class:`${t}-tabs-nav__suffix`},e))),h&&(!this.animated||"top"!==$&&"bottom"!==$?Ee(v,this.mergedValue,this.renderedNames):L("div",{ref:"tabsPaneWrapperRef",style:c,class:[`${t}-tabs-pane-wrapper`,b]},Ee(v,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection))))}});function Ee(e,t,n,a,r,o,i){const s=[];return e.forEach(e=>{const{name:a,displayDirective:r,"display-directive":o}=e.props,i=e=>r===e||o===e,l=t===a;if(void 0!==e.key&&(e.key=a),l||i("show")||i("show:lazy")&&n.has(a)){n.has(a)||n.add(a);const t=!i("if");s.push(t?G(e,[[V,l]]):e)}}),i?L(Y,{name:`${i}-transition`,onBeforeLeave:a,onEnter:r,onAfterEnter:o},{default:()=>s}):s}function Ne(e,t){return L(Le,{ref:"addTabInstRef",key:"__addable",name:"__addable",internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:t,disabled:"object"==typeof e&&e.disabled})}function Oe(e){const t=J(e);return t.props?t.props.internalLeftPadded=!0:t.props={internalLeftPadded:!0},t}function He(e){return Array.isArray(e.dynamicProps)?e.dynamicProps.includes("internalLeftPadded")||e.dynamicProps.push("internalLeftPadded"):e.dynamicProps=["internalLeftPadded"],e}function De(e,t={}){const n=t.platform||"",a=t.projectPath||"",r=be(`config-registry:${e}`,n,t.scope||"",a);return fe(r,t=>K.get(`/config-registry/${e}`,{signal:t}).then(e=>e.data),`config-registry:${e}`,`config-registry:${e}:${n}`)}async function Fe(e){return(await K.post(`/config-registry/${e}/import`)).data}async function Ie(e,t,n){const a=encodeURIComponent(t);return(await K.put(`/config-registry/${e}/${a}/toggle`,{enabled:n})).data}async function Ve(e,t,n,a){const r=encodeURIComponent(t);return(await K.put(`/config-registry/${e}/${r}/platform/${n}`,{enabled:a})).data}async function Me(e){return(await K.post(`/config-registry/${e}/sync`)).data}var Xe={key:0,class:"asset-detail-info-section"},Ue={class:"asset-detail-section-title"},qe={class:"asset-detail-box asset-detail-path-box"},Ge={class:"asset-detail-path-text"},Ye={__name:"AssetPathField",props:{path:{type:String,default:""},title:{type:String,default:"路径"}},setup(e){const t=e,n=D(()=>String(t.path||"").trim());async function a(){if(n.value)try{if("manual"===(await ue(n.value))?.method)return void de.warning("自动复制失败,已弹出手动复制框");de.success("已复制路径")}catch{de.error("复制路径失败")}}return(t,r)=>n.value?(N(),Q("div",Xe,[Z("h3",Ue,H(e.title),1),Z("div",qe,[k(U(h),{size:16,class:"asset-detail-path-icon"},{default:I(()=>[k(U(ee))]),_:1}),Z("code",Ge,H(n.value),1),k(U(se),{trigger:"hover"},{trigger:I(()=>[k(U(w),{circle:"",quaternary:"",size:"tiny",class:"asset-detail-path-copy","aria-label":"复制路径",onClick:X(a,["stop"])},{icon:I(()=>[k(U(h),null,{default:I(()=>[k(U(te))]),_:1})]),_:1})]),default:I(()=>[r[0]||(r[0]=P(" 复制路径 ",-1))]),_:1})])])):T("",!0)}};export{Ie as a,_e as c,Me as i,Fe as n,Ve as o,De as r,Be as s,Ye as t};
@@ -1 +0,0 @@
1
- import{i as a,s as e,t as s}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as l,D as t,K as n,O as o,S as i,V as c,W as d,Y as u,Z as m,_t as r,b as p,et as v,g as f,ht as g,m as y,mt as b,r as h,st as w,w as k,x as _}from"./vue-vendor-BqZbbXHA.js";import{n as j}from"./client-UDwXBP9i.js";import{r as C,s as x,t as z}from"./platforms-DWXgmy2w.js";import{C as $,H as P,M as I,Pt as U,_ as T,a as H,ct as B,et as S,h as D,jt as O,lt as L,v as M,z as R}from"./icons-DmFe4b5j.js";import{l as q}from"./light-0eavxNvt.js";import{a as E,c as V,i as A,o as F,r as G,s as N,t as W}from"./AssetPathField-C9TOPl7o.js";import{n as Y,t as K}from"./useResponsiveDrawer-V_onl9NV.js";import{t as Z}from"./DrawerContent-ChXgZ1Xm.js";import{$ as J,B as Q,F as X,I as aa,N as ea,O as sa,V as la,dt as ta,et as na,gt as oa,jt as ia,k as ca,mt as da,rt as ua,tt as ma}from"./index-BKlAWTH-.js";import{t as ra}from"./MarkdownEditor-9TTwTS-U.js";async function pa(a=null,e="claude",s={}){const l=sa("commands",e,s.scope||"",a||"");return ca(l,s=>j.get("/commands",{params:a?{projectPath:a,platform:e}:{platform:e},signal:s}).then(a=>a.data),"commands",`commands:${e}`)}var va={class:"asset-card-main"},fa={class:"asset-card-top"},ga={class:"asset-card-title-stack"},ya={class:"asset-card-title-row"},ba={class:"asset-name mono"},ha={class:"asset-tags"},wa={key:0,class:"asset-description"},ka={class:"asset-meta"},_a={key:0,class:"asset-meta-item"},ja={key:1,class:"asset-meta-item"},Ca={class:"asset-card-actions"},xa={class:"asset-platform-strip"},za=["onClick"],$a=s({__name:"CommandCard",props:{command:{type:Object,required:!0},deleting:{type:Boolean,default:!1},registryInfo:{type:Object,default:null},toggling:{type:Boolean,default:!1}},emits:["click","edit","delete","toggle-enabled","toggle-platform"],setup(s,{emit:c}){const m=s,h=c,{byCapability:w}=ia(),j=p(()=>w("commands"));return(c,p)=>{return d(),k("div",{class:g(["command-card asset-card",{"is-project":"project"===s.command.scope,"is-managed":s.registryInfo}]),onClick:p[4]||(p[4]=a=>h("click",s.command))},[_("div",va,[_("div",fa,[_("div",ga,[_("div",ya,[_("span",{class:g(["asset-status-dot",{active:s.registryInfo?.enabled||"project"===s.command.scope}])},null,2),_("span",ba,"/"+r(s.command.name),1)]),_("div",ha,[o(b(da),{type:"user"===s.command.scope?"info":"success",size:"tiny",bordered:!1},{default:v(()=>[t(r("user"===s.command.scope?"用户级":"项目级"),1)]),_:1},8,["type"]),s.registryInfo?(d(),i(b(da),{key:0,type:"success",size:"tiny",bordered:!1},{default:v(()=>[...p[5]||(p[5]=[t("托管",-1)])]),_:1})):l("",!0),s.command.namespace?(d(),i(b(da),{key:1,type:"warning",size:"tiny",bordered:!1},{default:v(()=>[t(r(s.command.namespace),1)]),_:1})):l("",!0)])])]),s.command.description?(d(),k("div",wa,r((w=s.command.description,w?w.length>80?w.slice(0,80)+"...":w:"")),1)):l("",!0),_("div",ka,[s.command.allowedTools?(d(),k("span",_a,[o(b(a),{size:"12"},{default:v(()=>[o(b(P))]),_:1}),t(" "+r(s.command.allowedTools),1)])):l("",!0),s.command.argumentHint?(d(),k("span",ja,[o(b(a),{size:"12"},{default:v(()=>[o(b(L))]),_:1}),t(" "+r(s.command.argumentHint),1)])):l("",!0)])]),_("div",Ca,[s.registryInfo?(d(),k(f,{key:0},[o(b(J),{trigger:"hover"},{trigger:v(()=>[o(b(X),{value:s.registryInfo.enabled,size:"small",loading:s.toggling,"onUpdate:value":p[0]||(p[0]=a=>h("toggle-enabled",s.command,a)),onClick:p[1]||(p[1]=y(()=>{},["stop"]))},null,8,["value","loading"])]),default:v(()=>[t(" "+r(s.registryInfo.enabled?"已启用":"已禁用"),1)]),_:1}),_("div",xa,[(d(!0),k(f,null,n(j.value,e=>(d(),i(b(J),{key:e.key,trigger:"hover"},{trigger:v(()=>[_("span",{class:g(["asset-platform-icon",{active:s.registryInfo.platforms?.[e.key]}]),onClick:y(a=>h("toggle-platform",s.command,e.key,!s.registryInfo.platforms?.[e.key]),["stop"])},[o(b(a),{size:"14"},{default:v(()=>[(d(),i(u(e.icon)))]),_:2},1024)],10,za)]),default:v(()=>[t(" "+r(e.label||e.title||e.key)+" "+r(s.registryInfo.platforms?.[e.key]?"已启用":"未启用"),1)]),_:2},1024))),128))])],64)):(d(),k(f,{key:1},[o(b(e),{size:"tiny",tertiary:"",onClick:p[2]||(p[2]=y(a=>h("edit",s.command),["stop"]))},{default:v(()=>[...p[6]||(p[6]=[t(" 编辑 ",-1)])]),_:1}),o(b(e),{size:"tiny",tertiary:"",type:"error",loading:m.deleting,onClick:p[3]||(p[3]=y(a=>h("delete",s.command),["stop"]))},{default:v(()=>[...p[7]||(p[7]=[t(" 删除 ",-1)])]),_:1},8,["loading"])],64))])],2);var w}}},[["__scopeId","data-v-7ffa5383"]]),Pa={class:"asset-detail-drawer-header"},Ia={class:"asset-detail-identity"},Ua={class:"asset-detail-heading"},Ta={class:"asset-detail-name mono"},Ha={class:"asset-detail-meta"},Ba={key:2,class:"asset-detail-subtle"},Sa={class:"asset-detail-body"},Da={class:"asset-detail-container"},Oa={class:"asset-detail-info-section"},La={class:"asset-detail-description"},Ma={class:"asset-detail-info-section"},Ra={class:"asset-detail-list"},qa={class:"asset-detail-row"},Ea={class:"asset-detail-value"},Va={key:0,class:"asset-detail-row"},Aa={class:"asset-detail-value"},Fa={key:1,class:"asset-detail-row"},Ga={class:"asset-detail-value"},Na={key:2,class:"asset-detail-row"},Wa={class:"asset-detail-value"},Ya={key:3,class:"asset-detail-row"},Ka={class:"asset-detail-value"},Za={key:4,class:"asset-detail-row"},Ja={class:"asset-detail-value"},Qa={key:0,class:"asset-detail-info-section"},Xa={class:"asset-detail-box"},ae={class:"asset-detail-code"},ee={key:1,class:"asset-detail-empty"},se={__name:"CommandDetailDrawer",props:{visible:{type:Boolean,default:!1},command:{type:Object,default:null},platform:{type:String,default:"claude"}},emits:["update:visible"],setup(e,{emit:s}){const n=z(),{drawerWidth:c}=K(600),u=e,m=s,f=p({get:()=>u.visible,set:a=>m("update:visible",a)}),g={height:"100%",minHeight:0,overflow:"hidden"},y=p(()=>{const a=n.get(u.platform)||x(u.platform);return a.label||a.title||""}),h=p(()=>u.command?.fullPath||u.command?.path||"");function w(a){return"project"===a?"项目级":"用户级"}return(s,n)=>(d(),i(b(Y),{show:f.value,"onUpdate:show":n[0]||(n[0]=a=>f.value=a),width:b(c),placement:"right","show-mask":!0},{default:v(()=>[o(b(Z),{closable:"","native-scrollbar":!1,"body-content-style":g},{header:v(()=>[_("div",Pa,[_("div",Ia,[o(b(a),{size:20,class:"asset-detail-icon"},{default:v(()=>[o(b(H))]),_:1}),_("div",Ua,[_("span",Ta,r(e.command?.name?`/${e.command.name}`:"命令详情"),1),_("div",Ha,[e.command?.scope?(d(),i(b(da),{key:0,type:"project"===e.command.scope?"success":"info",size:"tiny",bordered:!1},{default:v(()=>[t(r(w(e.command.scope)),1)]),_:1},8,["type"])):l("",!0),e.command?.namespace?(d(),i(b(da),{key:1,type:"warning",size:"tiny",bordered:!1},{default:v(()=>[t(r(e.command.namespace),1)]),_:1})):l("",!0),y.value?(d(),k("span",Ba,r(y.value),1)):l("",!0)])])])])]),default:v(()=>[_("div",Sa,[e.command?(d(),i(b(N),{key:0,type:"line",animated:"",class:"asset-detail-tabs"},{default:v(()=>[o(b(V),{name:"overview",tab:"概览"},{default:v(()=>[_("div",Da,[_("div",Oa,[n[1]||(n[1]=_("h3",{class:"asset-detail-section-title"},"描述",-1)),_("p",La,r(e.command.description||"暂无描述"),1)]),_("div",Ma,[n[8]||(n[8]=_("h3",{class:"asset-detail-section-title"},"基础信息",-1)),_("div",Ra,[_("div",qa,[n[2]||(n[2]=_("span",{class:"asset-detail-label"},"作用域",-1)),_("span",Ea,r(w(e.command.scope)),1)]),e.command.namespace?(d(),k("div",Va,[n[3]||(n[3]=_("span",{class:"asset-detail-label"},"命名空间",-1)),_("span",Aa,r(e.command.namespace),1)])):l("",!0),e.command.argumentHint?(d(),k("div",Fa,[n[4]||(n[4]=_("span",{class:"asset-detail-label"},"参数提示",-1)),_("span",Ga,r(e.command.argumentHint),1)])):l("",!0),e.command.model?(d(),k("div",Na,[n[5]||(n[5]=_("span",{class:"asset-detail-label"},"模型",-1)),_("span",Wa,r(e.command.model),1)])):l("",!0),e.command.agent?(d(),k("div",Ya,[n[6]||(n[6]=_("span",{class:"asset-detail-label"},"Agent",-1)),_("span",Ka,r(e.command.agent),1)])):l("",!0),""!==e.command.subtask&&void 0!==e.command.subtask&&null!==e.command.subtask?(d(),k("div",Za,[n[7]||(n[7]=_("span",{class:"asset-detail-label"},"Subtask",-1)),_("span",Ja,r(String(e.command.subtask)),1)])):l("",!0)])]),e.command.allowedTools?(d(),k("div",Qa,[n[9]||(n[9]=_("h3",{class:"asset-detail-section-title"},"允许的工具",-1)),_("div",Xa,[o(b(a),{size:16},{default:v(()=>[o(b(P))]),_:1}),_("code",null,r(e.command.allowedTools),1)])])):l("",!0),o(W,{path:h.value},null,8,["path"])])]),_:1}),o(b(V),{name:"content",tab:"内容"},{default:v(()=>[_("pre",ae,r(e.command.body||"(无内容)"),1)]),_:1})]),_:1})):(d(),k("div",ee,[o(b(a),{size:44,class:"asset-detail-empty-icon"},{default:v(()=>[o(b(S))]),_:1}),n[10]||(n[10]=_("p",null,"未选择命令",-1))]))])]),_:1})]),_:1},8,["show","width"]))}},le={class:"config-edit-header"},te={class:"config-edit-identity"},ne={class:"config-edit-icon"},oe={class:"config-edit-title-stack"},ie={class:"config-edit-kicker"},ce={class:"config-edit-title"},de={class:"config-edit-badges"},ue={class:"command-workbench"},me={class:"command-sidebar"},re={class:"config-edit-section"},pe={class:"section-heading"},ve={class:"field-grid"},fe={class:"scope-option"},ge={class:"scope-path"},ye={class:"scope-option"},be={class:"scope-path"},he={class:"config-edit-section"},we={class:"section-heading"},ke={key:1,class:"platform-note"},_e={class:"config-edit-section token-section"},je={class:"section-heading"},Ce={class:"command-token-box"},xe={key:0,class:"token-row"},ze={key:1,class:"token-row"},$e={class:"config-edit-section content-section"},Pe={class:"section-heading"},Ie={class:"modal-footer"},Ue=s({__name:"CommandFormModal",props:{visible:{type:Boolean,default:!1},command:{type:Object,default:null},projectPath:{type:String,default:null},platform:{type:String,default:"claude"}},emits:["update:visible","saved"],setup(s,{emit:n}){const c=z(),u=s,g=n,y=p({get:()=>u.visible,set:a=>g("update:visible",a)}),h=p(()=>!!u.command),C=p(()=>h.value?"编辑命令":"创建命令"),$=p(()=>{const a=c.get(u.platform)||x(u.platform);return a.label||a.title||"Claude Code"}),P=p(()=>"opencode"===u.platform?"~/.config/opencode/commands/":"gemini"===u.platform?"~/.gemini/commands/":"omp"===u.platform?"~/.omp/agent/commands/":"codex"===u.platform?"~/.codex/commands/":"~/.claude/commands/"),U=p(()=>"opencode"===u.platform?".opencode/commands/":"gemini"===u.platform?".gemini/commands/":"omp"===u.platform?".omp/commands/":"codex"===u.platform?".codex/commands/":".claude/commands/"),T=p(()=>"opencode"!==u.platform&&"gemini"!==u.platform&&"omp"!==u.platform),O=p(()=>"project"===G.value.scope?"项目级":"用户级"),L=p(()=>G.value.name?`/${G.value.name}`:"编辑命令"),E=p(()=>"gemini"===u.platform?"TOML":"Markdown"),V=w(null),A=w(!1),F={maxHeight:"calc(92vh - 134px)",overflowY:"auto",paddingBottom:"18px"},G=w({name:"",scope:"user",namespace:"",description:"",allowedTools:"",argumentHint:"",body:""}),N={name:{required:!0,message:"请输入命令名",trigger:"blur"},scope:{required:!0,message:"请选择作用域",trigger:"change"}};function W(){G.value={name:"",scope:"user",namespace:"",description:"",allowedTools:"",argumentHint:"",body:""}}function Y(){y.value=!1,W()}async function K(){try{await(V.value?.validate())}catch{return}A.value=!0;try{const a={...G.value,projectPath:u.projectPath};h.value?(await async function(a,e,s,l="claude"){return(await j.put(`/commands/${e}/${a}`,{...s,platform:l})).data}(G.value.name,G.value.scope,a,u.platform),ea.success("命令更新成功")):(await async function(a,e="claude"){return(await j.post("/commands",{...a,platform:e})).data}(a,u.platform),ea.success("命令创建成功")),g("saved"),y.value=!1,W()}catch(a){ea.error("操作失败: "+a.message)}finally{A.value=!1}}return m(()=>u.command,a=>{a?G.value={name:a.name||"",scope:a.scope||"user",namespace:a.namespace||"",description:a.description||"",allowedTools:a.allowedTools||"",argumentHint:a.argumentHint||"",body:a.body||""}:W()},{immediate:!0}),(s,n)=>(d(),i(b(q),{show:y.value,"onUpdate:show":n[7]||(n[7]=a=>y.value=a),preset:"card",title:C.value,style:{width:"min(940px, 96vw)","max-height":"92vh"},"content-style":F,"mask-closable":!1,class:"config-edit-modal"},{footer:v(()=>[_("div",Ie,[o(b(e),{onClick:Y},{default:v(()=>[...n[19]||(n[19]=[t("取消",-1)])]),_:1}),o(b(e),{type:"primary",loading:A.value,onClick:K},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(M))]),_:1})]),default:v(()=>[t(" "+r(h.value?"保存":"创建"),1)]),_:1},8,["loading"])])]),default:v(()=>[_("div",le,[_("div",te,[_("span",ne,[o(b(a),{size:22},{default:v(()=>[o(b(H))]),_:1})]),_("div",oe,[_("span",ie,r($.value),1),_("span",ce,r(h.value?L.value:"创建新命令"),1)])]),_("div",de,[o(b(da),{size:"small",bordered:!1,type:"info"},{default:v(()=>[t(r(O.value),1)]),_:1}),G.value.namespace?(d(),i(b(da),{key:0,size:"small",bordered:!1,type:"warning"},{default:v(()=>[t(r(G.value.namespace),1)]),_:1})):l("",!0),o(b(da),{size:"small",bordered:!1,type:"success"},{default:v(()=>[t(r(E.value),1)]),_:1})])]),o(b(la),{ref_key:"formRef",ref:V,model:G.value,rules:N,"label-placement":"top","require-mark-placement":"right-hanging",class:"config-edit-form"},{default:v(()=>[_("div",ue,[_("div",me,[_("section",re,[_("div",pe,[o(b(a),{size:16},{default:v(()=>[o(b(I))]),_:1}),n[8]||(n[8]=_("span",null,"命令入口",-1))]),_("div",ve,[o(b(Q),{label:"命令名",path:"name"},{default:v(()=>[o(b(ta),{value:G.value.name,"onUpdate:value":n[0]||(n[0]=a=>G.value.name=a),disabled:h.value,placeholder:"review"},{prefix:v(()=>[...n[9]||(n[9]=[t("/",-1)])]),_:1},8,["value","disabled"])]),_:1}),o(b(Q),{label:"命名空间",path:"namespace"},{default:v(()=>[o(b(ta),{value:G.value.namespace,"onUpdate:value":n[1]||(n[1]=a=>G.value.namespace=a),disabled:h.value,placeholder:"frontend"},null,8,["value","disabled"])]),_:1})]),o(b(Q),{label:"作用域",path:"scope"},{default:v(()=>[o(b(na),{value:G.value.scope,"onUpdate:value":n[2]||(n[2]=a=>G.value.scope=a),disabled:h.value,class:"scope-picker"},{default:v(()=>[o(b(ma),{value:"user"},{default:v(()=>[_("span",fe,[n[10]||(n[10]=_("span",{class:"scope-title"},"用户级",-1)),_("span",ge,r(P.value),1)])]),_:1}),o(b(ma),{value:"project"},{default:v(()=>[_("span",ye,[n[11]||(n[11]=_("span",{class:"scope-title"},"项目级",-1)),_("span",be,r(U.value),1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(b(Q),{label:"描述",path:"description"},{default:v(()=>[o(b(ta),{value:G.value.description,"onUpdate:value":n[3]||(n[3]=a=>G.value.description=a),type:"textarea",autosize:{minRows:3,maxRows:5},placeholder:"一句话说明这个 slash command 的用途"},null,8,["value"])]),_:1})]),_("section",he,[_("div",we,[o(b(a),{size:16},{default:v(()=>[o(b(D))]),_:1}),n[12]||(n[12]=_("span",null,"Frontmatter",-1))]),T.value?(d(),k(f,{key:0},[o(b(Q),{label:"允许的工具",path:"allowedTools"},{default:v(()=>[o(b(ta),{value:G.value.allowedTools,"onUpdate:value":n[4]||(n[4]=a=>G.value.allowedTools=a),placeholder:"Bash, Edit, Read"},null,8,["value"])]),_:1}),o(b(Q),{label:"参数提示",path:"argumentHint"},{default:v(()=>[o(b(ta),{value:G.value.argumentHint,"onUpdate:value":n[5]||(n[5]=a=>G.value.argumentHint=a),placeholder:"add [id] | remove [id]"},null,8,["value"])]),_:1})],64)):(d(),k("div",ke,[o(b(a),{size:16},{default:v(()=>[o(b(R))]),_:1}),_("span",null,r($.value)+" commands 会按平台原生格式保存,当前平台不写入 Claude/Codex 风格的工具和参数 frontmatter。",1)]))]),_("section",_e,[_("div",je,[o(b(a),{size:16},{default:v(()=>[o(b(B))]),_:1}),n[13]||(n[13]=_("span",null,"可用变量",-1))]),_("div",Ce,[n[16]||(n[16]=_("div",{class:"token-row"},[_("code",null,"$ARGUMENTS"),_("span",null,"完整参数")],-1)),n[17]||(n[17]=_("div",{class:"token-row"},[_("code",null,"$1"),_("span",null,"第一个参数")],-1)),T.value?(d(),k("div",xe,[...n[14]||(n[14]=[_("code",null,"!",-1),_("span",null,"执行 shell 行",-1)])])):l("",!0),T.value?(d(),k("div",ze,[...n[15]||(n[15]=[_("code",null,"@",-1),_("span",null,"引用文件",-1)])])):l("",!0)])])]),_("section",$e,[_("div",Pe,[o(b(a),{size:16},{default:v(()=>[o(b(S))]),_:1}),n[18]||(n[18]=_("span",null,"命令内容",-1))]),o(b(Q),{path:"body","show-label":!1,class:"editor-form-item"},{default:v(()=>[o(ra,{modelValue:G.value.body,"onUpdate:modelValue":n[6]||(n[6]=a=>G.value.body=a),rows:12,"min-height":280,placeholder:"写下命令提示词。可以使用 $ARGUMENTS、$1、$2 等变量。","default-editing":!h.value},null,8,["modelValue","default-editing"])]),_:1})])])]),_:1},8,["model"])]),_:1},8,["show","title"]))}},[["__scopeId","data-v-1ab931be"]]),Te={key:0,class:"asset-panel-header"},He={class:"asset-title-group"},Be={class:"asset-heading"},Se={class:"asset-title-row"},De={class:"asset-platform-pill"},Oe={key:0,class:"asset-action-row"},Le={key:1,class:"asset-drawer-toolbar"},Me={key:0,class:"asset-action-row"},Re={class:"asset-summary"},qe={class:"asset-summary-item"},Ee={class:"asset-summary-value"},Ve={class:"asset-summary-item"},Ae={class:"asset-summary-value"},Fe={class:"asset-summary-item"},Ge={class:"asset-summary-value"},Ne={class:"asset-summary-item"},We={class:"asset-summary-value"},Ye={class:"asset-filter-bar"},Ke={class:"asset-panel-content"},Ze={key:0,class:"asset-empty"},Je={key:1,class:"asset-list"},Qe={class:"asset-footer"},Xe=s({__name:"CommandsPanel",props:{hideBack:{type:Boolean,default:!1},inDrawer:{type:Boolean,default:!1},projectPath:{type:String,default:null},platform:{type:String,default:""}},emits:["back","updated"],setup(s,{emit:u}){const y=s,P=u,I=z(),B=h(),S=w([]),D=w(!1),L=w(""),M=w("all"),q=w(!1),V=w(!1),N=w(null),W=w(null),Y=w({}),K=w({}),Z=w({});let J=0;const{byCapability:Q}=ia(),X=p(()=>Q("commands").map(a=>a.key)),la=p(()=>X.value.includes(na.value)),na=p(()=>String(y.platform||C(B)||"").trim().toLowerCase()),da=p(()=>"opencode"===na.value?"使用 /命令名 在 OpenCode 中调用":"omp"===na.value?"使用 OMP slash command 调用":"gemini"===na.value?"使用 /命令名 在 Gemini CLI 中调用":"codex"===na.value?"使用 /命令名 在 Codex CLI 中调用":"使用 /命令名 在 Claude Code 中调用"),ma=p(()=>{const a=I.get(na.value)||x(na.value);return a.label||a.title||"Claude Code"}),ra=[{label:"全部",value:"all"},{label:"用户级",value:"user"},{label:"项目级",value:"project"},{label:"已托管",value:"managed"}],va=p(()=>S.value.filter(a=>"user"===a.scope).length),fa=p(()=>S.value.filter(a=>"project"===a.scope).length),ga=p(()=>Object.keys(K.value).length),ya=p(()=>{let a=S.value;if("user"===M.value?a=a.filter(a=>"user"===a.scope):"project"===M.value?a=a.filter(a=>"project"===a.scope):"managed"===M.value&&(a=a.filter(a=>K.value[a.name])),L.value.trim()){const e=L.value.toLowerCase();a=a.filter(a=>a.name?.toLowerCase().includes(e)||a.description?.toLowerCase().includes(e)||a.namespace?.toLowerCase().includes(e))}return a}),ba=p(()=>L.value?"没有匹配的命令":"user"===M.value?"暂无用户级命令":"project"===M.value?"暂无项目级命令":"managed"===M.value?"暂无托管的命令":la.value?"暂无自定义命令":`${ma.value} 暂未提供 Commands 能力`);async function ha(){if(!la.value)return S.value=[],K.value={},void(D.value=!1);D.value=!0;try{const[a,e]=await Promise.all([pa(y.projectPath,na.value),G("commands",{platform:na.value,projectPath:y.projectPath})]);if(a.success&&(S.value=a.commands||[]),e.success){K.value={};for(const[a,s]of Object.entries(e.items||{}))K.value[a]=s}}catch(a){ea.error("加载命令列表失败: "+a.message)}finally{D.value=!1}}async function wa(a,e){Z.value[a.name]=!0;try{(await E("commands",a.name,e)).success&&(ea.success(e?"已启用":"已禁用"),await ha())}catch(s){ea.error("切换失败: "+s.message)}finally{delete Z.value[a.name]}}async function ka(a,e,s){Z.value[a.name]=!0;try{(await F("commands",a.name,e,s)).success&&(ea.success(`${e} ${s?"已启用":"已禁用"}`),await ha())}catch(l){ea.error("切换失败: "+l.message)}finally{delete Z.value[a.name]}}async function _a(){D.value=!0;try{const a=await A("commands");a?.success||ea.warning(a?.message||"同步失败,已继续刷新列表")}catch(a){ea.warning("同步失败,已继续刷新列表: "+a.message)}await ha()}async function ja(a,e=!1){if(!a)return;const s=++J;e||(N.value=null,V.value=!0);try{const l=await async function(a,e,s=null,l=null,t="claude"){const n={};t&&(n.platform=t),s&&(n.projectPath=s),l&&(n.namespace=l);const o=sa(`command-detail:${a}:${l||""}`,t,e||"",s||"");return ca(o,s=>j.get(`/commands/${e}/${a}`,{params:n,signal:s}).then(a=>a.data),"command-detail",`command-detail:${t}`)}(a.name,a.scope,y.projectPath,a.namespace,na.value);if(s!==J)return;const t=l?.command||a;e?(W.value=t,q.value=!0):N.value=t}catch(l){if(s!==J)return;ea.error("加载命令详情失败: "+l.message),e?(W.value=a,q.value=!0):N.value=a}}function Ca(a){ja(a,!0)}async function xa(a){const e=a.path;Y.value[e]=!0;try{(await async function(a,e,s=null,l=null,t="claude"){const n={};return t&&(n.platform=t),s&&(n.projectPath=s),l&&(n.namespace=l),(await j.delete(`/commands/${e}/${a}`,{params:n})).data}(a.name,a.scope,y.projectPath,a.namespace,na.value)).success&&(ea.success("命令已删除"),await ha(),P("updated"))}catch(s){ea.error("删除失败: "+s.message)}finally{delete Y.value[e]}}function za(a){ja(a,!1)}function Pa(){W.value=null,ha(),P("updated")}function Ia(){P("back")}return c(()=>{ha()}),m(na,()=>{J+=1,N.value=null,ha()}),(c,u)=>(d(),k("div",{class:g(["commands-panel asset-panel",{"in-drawer":y.inDrawer}])},[y.inDrawer?l("",!0):(d(),k("div",Te,[_("div",He,[y.hideBack?l("",!0):(d(),i(b(e),{key:0,text:"",onClick:Ia,class:"back-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(O))]),_:1})]),_:1})),_("div",Be,[_("div",Se,[u[7]||(u[7]=_("span",{class:"asset-title"},"命令管理",-1)),_("span",De,r(ma.value),1)]),u[8]||(u[8]=_("div",{class:"asset-subtitle"},"维护 slash commands、作用域和跨平台启用状态",-1))])]),la.value?(d(),k("div",Oe,[o(b(e),{text:"",onClick:u[0]||(u[0]=a=>q.value=!0),class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(U))]),_:1})]),default:v(()=>[u[9]||(u[9]=t(" 创建 ",-1))]),_:1}),o(b(e),{text:"",onClick:_a,loading:D.value,class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b($))]),_:1})]),default:v(()=>[u[10]||(u[10]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):l("",!0)])),y.inDrawer?(d(),k("div",Le,[la.value?(d(),k("div",Me,[o(b(e),{text:"",onClick:u[1]||(u[1]=a=>q.value=!0),class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(U))]),_:1})]),default:v(()=>[u[11]||(u[11]=t(" 创建 ",-1))]),_:1}),o(b(e),{text:"",onClick:_a,loading:D.value,class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b($))]),_:1})]),default:v(()=>[u[12]||(u[12]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):l("",!0)])):l("",!0),_("div",Re,[_("span",qe,[u[13]||(u[13]=_("span",{class:"asset-summary-label"},"全部",-1)),_("span",Ee,r(S.value.length),1)]),_("span",Ve,[u[14]||(u[14]=_("span",{class:"asset-summary-label"},"用户级",-1)),_("span",Ae,r(va.value),1)]),_("span",Fe,[u[15]||(u[15]=_("span",{class:"asset-summary-label"},"项目级",-1)),_("span",Ge,r(fa.value),1)]),_("span",Ne,[u[16]||(u[16]=_("span",{class:"asset-summary-label"},"托管",-1)),_("span",We,r(ga.value),1)])]),_("div",Ye,[o(b(ta),{value:L.value,"onUpdate:value":u[2]||(u[2]=a=>L.value=a),placeholder:"搜索命令、描述或命名空间",clearable:"",size:"small",class:"asset-search"},{prefix:v(()=>[o(b(a),null,{default:v(()=>[o(b(T))]),_:1})]),_:1},8,["value"]),o(b(ua),{value:M.value,"onUpdate:value":u[3]||(u[3]=a=>M.value=a),options:ra,size:"small",class:"asset-filter"},null,8,["value"])]),_("div",Ke,[o(b(aa),{show:D.value},{default:v(()=>[0!==ya.value.length||D.value?(d(),k("div",Je,[(d(!0),k(f,null,n(ya.value,a=>(d(),i($a,{key:a.path,command:a,deleting:!!Y.value[a.path],"registry-info":K.value[a.name],toggling:!!Z.value[a.name],onEdit:Ca,onDelete:xa,onClick:za,onToggleEnabled:wa,onTogglePlatform:ka},null,8,["command","deleting","registry-info","toggling"]))),128))])):(d(),k("div",Ze,[o(b(oa),{description:ba.value},{icon:v(()=>[o(b(a),{size:"48",color:"var(--text-quaternary)"},{default:v(()=>[o(b(H))]),_:1})]),extra:v(()=>[la.value?(d(),i(b(e),{key:0,size:"small",onClick:u[4]||(u[4]=a=>q.value=!0)},{default:v(()=>[...u[17]||(u[17]=[t(" 创建第一个命令 ",-1)])]),_:1})):l("",!0)]),_:1},8,["description"])]))]),_:1},8,["show"])]),_("div",Qe,[o(b(a),{size:"14",class:"asset-info-icon"},{default:v(()=>[o(b(R))]),_:1}),_("span",null,r(da.value),1)]),o(Ue,{visible:q.value,"onUpdate:visible":u[5]||(u[5]=a=>q.value=a),command:W.value,"project-path":s.projectPath,platform:na.value,onSaved:Pa},null,8,["visible","command","project-path","platform"]),o(se,{visible:V.value,"onUpdate:visible":u[6]||(u[6]=a=>V.value=a),command:N.value,platform:na.value},null,8,["visible","command","platform"])],2))}},[["__scopeId","data-v-5e3c90d3"]]),as=s({__name:"CommandsDrawer",props:{visible:Boolean,platform:{type:String,default:""}},emits:["update:visible"],setup(a,{emit:e}){const s=a,l=e,{drawerWidth:t}=K(720),n=p({get:()=>s.visible,set:a=>l("update:visible",a)}),c={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(a,e)=>(d(),i(b(Y),{show:n.value,"onUpdate:show":e[1]||(e[1]=a=>n.value=a),width:b(t),placement:"right","mask-closable":!0},{default:v(()=>[o(b(Z),{closable:"","native-scrollbar":!1,"body-content-style":c},{header:v(()=>[...e[2]||(e[2]=[_("div",{class:"drawer-header"},[_("span",null,"命令管理")],-1)])]),default:v(()=>[o(Xe,{onBack:e[0]||(e[0]=a=>n.value=!1),"hide-back":!0,"in-drawer":!0,platform:s.platform},null,8,["platform"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-bfb32ef8"]]);export{as as default};
@@ -1 +0,0 @@
1
- import{i as e,s as a,t}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as l,O as i,S as n,W as o,_t as r,b as u,et as c,mt as d,st as p,w as f,x as v}from"./vue-vendor-BqZbbXHA.js";import{n as m}from"./client-UDwXBP9i.js";import{$ as w,dt as g,ut as h}from"./icons-DmFe4b5j.js";import{t as y}from"./Upload-CdyVHxCI.js";import{t as _}from"./Divider-DsdbkHrG.js";import{n as x,t as z}from"./useResponsiveDrawer-V_onl9NV.js";import{t as b}from"./DrawerContent-ChXgZ1Xm.js";import{K as j,N as k,P as C,st as U}from"./index-BKlAWTH-.js";var D={class:"drawer-header"},I={class:"export-import-container"},O={class:"section"},S={class:"section-header"},L={class:"section"},P={class:"section-header"},R={key:0,class:"import-preview"},T={class:"preview-stats"},Z={class:"stat-item"},$={class:"stat-item"},B={class:"stat-item"},N=t({__name:"ConfigExportDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(t,{emit:N}){const W=t,E=N,{drawerWidth:J}=z(520,480),q=u({get:()=>W.visible,set:e=>E("update:visible",e)}),A=p(!1),K=p(!1),F=p(null),G=p(null),H=p(null),M=p(null),Q=p(!1);async function V(){A.value=!0;try{const e=await async function(e="zip"){return(await m.get(`/config-export?format=${e}`,{responseType:"blob"})).data}("zip"),a=window.URL.createObjectURL(e),t=document.createElement("a");t.href=a,t.download=`ctx-config-${(new Date).toISOString().split("T")[0]}.zip`,document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(a),k.success("配置导出成功")}catch(e){k.error("导出失败: "+e.message)}finally{A.value=!1}}async function X({file:e}){try{if(F.value=null,G.value=null,H.value=null,M.value=null,(e.file.name||"").toLowerCase().endsWith(".zip")){const a=await async function(e){const a=await e.arrayBuffer();return(await m.post("/config-export/preview-zip",a,{headers:{"Content-Type":"application/zip"}})).data}(e.file);return void(a.success?(F.value=a.data,H.value=e.file,G.value=null,M.value="zip",k.success("ZIP 配置解析成功")):k.error("ZIP 配置格式错误: "+a.message))}const a=await e.file.text(),t=JSON.parse(a),s=await async function(e){return(await m.post("/config-export/preview",{data:e})).data}(t);s.success?(F.value=s.data,G.value=t,H.value=null,M.value="json",k.success("配置文件解析成功")):k.error("配置文件格式错误: "+s.message)}catch(a){k.error("文件解析失败: "+a.message)}}async function Y(){if(G.value||H.value){K.value=!0;try{const e="zip"===M.value?await async function(e,a=!1){const t=await e.arrayBuffer();return(await m.post(`/config-export/import-zip?overwrite=${a}`,t,{headers:{"Content-Type":"application/zip"}})).data}(H.value,Q.value):await async function(e,a=!1){return(await m.post("/config-export/import",{data:e,overwrite:a})).data}(G.value,Q.value);e.success?(k.success("配置导入成功: "+e.message),ee()):k.error("配置导入失败: "+e.message)}catch(e){k.error("导入失败: "+e.message)}finally{K.value=!1}}}function ee(){F.value=null,G.value=null,H.value=null,M.value=null,Q.value=!1}return(t,u)=>(o(),n(d(x),{show:q.value,"onUpdate:show":u[1]||(u[1]=e=>q.value=e),width:d(J),placement:"right","mask-closable":!0},{default:c(()=>[i(d(b),{closable:"","native-scrollbar":!1},{header:c(()=>[v("div",D,[i(d(e),{size:20,color:"#18a058"},{default:c(()=>[i(d(g))]),_:1}),u[2]||(u[2]=v("span",null,"配置导出/导入",-1))])]),default:c(()=>[v("div",I,[v("div",O,[v("div",S,[i(d(C),{strong:""},{default:c(()=>[...u[3]||(u[3]=[l("导出配置",-1)])]),_:1}),i(d(C),{depth:"3",style:{"font-size":"12px"}},{default:c(()=>[...u[4]||(u[4]=[l(" 导出多平台配置为 ZIP(含渠道、Agents/Skills/Commands、原生配置等) ",-1)])]),_:1})]),i(d(a),{type:"primary",loading:A.value,onClick:V},{icon:c(()=>[i(d(e),null,{default:c(()=>[i(d(w))]),_:1})]),default:c(()=>[u[5]||(u[5]=l(" 导出配置 ",-1))]),_:1},8,["loading"])]),i(d(_)),v("div",L,[v("div",P,[i(d(C),{strong:""},{default:c(()=>[...u[6]||(u[6]=[l("导入配置",-1)])]),_:1}),i(d(C),{depth:"3",style:{"font-size":"12px"}},{default:c(()=>[...u[7]||(u[7]=[l(" 从 JSON 或 ZIP 文件导入配置(支持覆盖已有配置) ",-1)])]),_:1})]),i(d(y),{"custom-request":X,"show-file-list":!1,accept:".json,.zip"},{default:c(()=>[i(d(a),null,{icon:c(()=>[i(d(e),null,{default:c(()=>[i(d(h))]),_:1})]),default:c(()=>[u[8]||(u[8]=l(" 选择配置文件 ",-1))]),_:1})]),_:1}),F.value?(o(),f("div",R,[i(d(C),{strong:"",style:{"font-size":"14px"}},{default:c(()=>[...u[9]||(u[9]=[l("导入预览",-1)])]),_:1}),v("div",T,[v("div",Z,[i(d(C),{depth:"3"},{default:c(()=>[...u[10]||(u[10]=[l("配置模板:",-1)])]),_:1}),i(d(C),null,{default:c(()=>[l(r(F.value.counts.configTemplates),1)]),_:1})]),v("div",$,[i(d(C),{depth:"3"},{default:c(()=>[...u[11]||(u[11]=[l("渠道总数:",-1)])]),_:1}),i(d(C),null,{default:c(()=>[l(r(F.value.counts.channels),1)]),_:1})]),v("div",B,[i(d(C),{depth:"3"},{default:c(()=>[...u[12]||(u[12]=[l("插件:",-1)])]),_:1}),i(d(C),null,{default:c(()=>[l(r(F.value.counts.plugins||0),1)]),_:1})])]),i(d(U),{checked:Q.value,"onUpdate:checked":u[0]||(u[0]=e=>Q.value=e),style:{"margin-top":"12px"}},{default:c(()=>[...u[13]||(u[13]=[l(" 覆盖已有配置 ",-1)])]),_:1},8,["checked"]),i(d(j),{style:{"margin-top":"16px"}},{default:c(()=>[i(d(a),{type:"primary",loading:K.value,onClick:Y},{default:c(()=>[...u[14]||(u[14]=[l(" 确认导入 ",-1)])]),_:1},8,["loading"]),i(d(a),{onClick:ee},{default:c(()=>[...u[15]||(u[15]=[l("取消",-1)])]),_:1})]),_:1})])):s("",!0)])])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-d8c9eada"]]);export{N as default};
@@ -1 +0,0 @@
1
- import{$t as e,D as l,E as a,I as t,L as n,N as s,Qt as r,Tt as i,Yt as o,Zt as d,bn as u,gn as c,gt as m,hn as p,ht as v,i as f,j as g,ln as h,mt as b,s as y,t as C,vn as k,xn as x,y as _,yn as S}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as w,C as T,D as z,F as P,G as R,J as A,K as O,M as $,N as U,O as L,S as M,V as F,W as B,Z as V,_t as N,b as j,dt as E,et as I,g as D,ht as G,m as q,mt as H,st as K,w as W,x as X}from"./vue-vendor-BqZbbXHA.js";import{C as Y,Pt as Z,X as J,_ as Q,a as ee,et as le,g as ae,j as te,jt as ne,tt as se,z as re}from"./icons-DmFe4b5j.js";import{t as ie}from"./use-message-DqCwefG6.js";import{O as oe,S as de,l as ue,n as ce}from"./light-0eavxNvt.js";import{n as me,t as pe}from"./CollapseItem-CwqJk3bE.js";import{t as ve}from"./Divider-DsdbkHrG.js";import{B as fe,Dt as ge,F as he,I as be,K as ye,L as Ce,Ot as ke,P as xe,U as _e,V as Se,at as we,ct as Te,dt as ze,ft as Pe,gt as Re,mt as Ae,pt as Oe,rt as $e,st as Ue}from"./index-BKlAWTH-.js";import{n as Le}from"./markdown-u082bbtj.js";import{a as Me,c as Fe,i as Be,n as Ve,o as Ne,r as je,s as Ee,t as Ie}from"./xml-CgY3RMlX.js";import{t as De}from"./MarkdownEditor-9TTwTS-U.js";import{a as Ge,d as qe,f as He,g as Ke,h as We,m as Xe,p as Ye,u as Ze}from"./workspaces-mjyPVGS8.js";var Je=w({name:"Search",render:()=>$("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",style:"enable-background: new 0 0 512 512"},$("path",{d:"M443.5,420.2L336.7,312.4c20.9-26.2,33.5-59.4,33.5-95.5c0-84.5-68.5-153-153.1-153S64,132.5,64,217s68.5,153,153.1,153\n c36.6,0,70.1-12.8,96.5-34.2l106.1,107.1c3.2,3.4,7.6,5.1,11.9,5.1c4.1,0,8.2-1.5,11.3-4.5C449.5,437.2,449.7,426.8,443.5,420.2z\n M217.1,337.1c-32.1,0-62.3-12.5-85-35.2c-22.7-22.7-35.2-52.9-35.2-84.9c0-32.1,12.5-62.3,35.2-84.9c22.7-22.7,52.9-35.2,85-35.2\n c32.1,0,62.3,12.5,85,35.2c22.7,22.7,35.2,52.9,35.2,84.9c0,32.1-12.5,62.3-35.2,84.9C279.4,324.6,249.2,337.1,217.1,337.1z"}))}),Qe=c("collapse-transition",{width:"100%"},[Oe()]),el=w({name:"CollapseTransition",props:Object.assign(Object.assign({},s.props),{show:{type:Boolean,default:!0},appear:Boolean,collapsed:{type:Boolean,default:void 0}}),inheritAttrs:!1,setup(e){const{mergedClsPrefixRef:l,inlineThemeDisabled:a,mergedRtlRef:n}=m(e),r=s("CollapseTransition","-collapse-transition",Qe,we,e,l),i=t("CollapseTransition",n,l),o=j(()=>void 0!==e.collapsed?e.collapsed:e.show),d=j(()=>{const{self:{bezier:e}}=r.value;return{"--n-bezier":e}}),u=a?v("collapse-transition",void 0,d,e):void 0;return{rtlEnabled:i,mergedShow:o,mergedClsPrefix:l,cssVars:a?void 0:d,themeClass:null==u?void 0:u.themeClass,onRender:null==u?void 0:u.onRender}},render(){return $(a,{appear:this.appear},{default:()=>{var e;if(this.mergedShow)return null===(e=this.onRender)||void 0===e||e.call(this),$("div",P({class:[`${this.mergedClsPrefix}-collapse-transition`,this.rtlEnabled&&`${this.mergedClsPrefix}-collapse-transition--rtl`,this.themeClass],style:this.cssVars},this.$attrs),this.$slots)}})}}),ll=o("n-transfer"),al=c("transfer","\n width: 100%;\n font-size: var(--n-font-size);\n height: 300px;\n display: flex;\n flex-wrap: nowrap;\n word-break: break-word;\n",[S("disabled",[c("transfer-list",[c("transfer-list-header",[k("title","\n color: var(--n-header-text-color-disabled);\n "),k("extra","\n color: var(--n-header-extra-text-color-disabled);\n ")])])]),c("transfer-list","\n flex: 1;\n min-width: 0;\n height: inherit;\n display: flex;\n flex-direction: column;\n background-clip: padding-box;\n position: relative;\n transition: background-color .3s var(--n-bezier);\n background-color: var(--n-list-color);\n ",[S("source","\n border-top-left-radius: var(--n-border-radius);\n border-bottom-left-radius: var(--n-border-radius);\n ",[k("border","border-right: 1px solid var(--n-divider-color);")]),S("target","\n border-top-right-radius: var(--n-border-radius);\n border-bottom-right-radius: var(--n-border-radius);\n ",[k("border","border-left: none;")]),k("border","\n padding: 0 12px;\n border: 1px solid var(--n-border-color);\n transition: border-color .3s var(--n-bezier);\n pointer-events: none;\n border-radius: inherit;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n "),c("transfer-list-header","\n min-height: var(--n-header-height);\n box-sizing: border-box;\n display: flex;\n padding: 12px 12px 10px 12px;\n align-items: center;\n background-clip: padding-box;\n border-radius: inherit;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n line-height: 1.5;\n transition:\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n ",[p("> *:not(:first-child)","\n margin-left: 8px;\n "),k("title","\n flex: 1;\n min-width: 0;\n line-height: 1.5;\n font-size: var(--n-header-font-size);\n font-weight: var(--n-header-font-weight);\n transition: color .3s var(--n-bezier);\n color: var(--n-header-text-color);\n "),k("button","\n position: relative;\n "),k("extra","\n transition: color .3s var(--n-bezier);\n font-size: var(--n-extra-font-size);\n margin-right: 0;\n white-space: nowrap;\n color: var(--n-header-extra-text-color);\n ")]),c("transfer-list-body","\n flex-basis: 0;\n flex-grow: 1;\n box-sizing: border-box;\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: inherit;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n ",[c("transfer-filter","\n padding: 4px 12px 8px 12px;\n box-sizing: border-box;\n transition:\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n "),c("transfer-list-flex-container","\n flex: 1;\n position: relative;\n ",[c("scrollbar","\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n height: unset;\n "),c("empty","\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateY(-50%) translateX(-50%);\n "),c("transfer-list-content","\n padding: 0;\n margin: 0;\n position: relative;\n ",[c("transfer-list-item","\n padding: 0 12px;\n min-height: var(--n-item-height);\n display: flex;\n align-items: center;\n color: var(--n-item-text-color);\n position: relative;\n transition: color .3s var(--n-bezier);\n ",[k("background","\n position: absolute;\n left: 4px;\n right: 4px;\n top: 0;\n bottom: 0;\n border-radius: var(--n-border-radius);\n transition: background-color .3s var(--n-bezier);\n "),k("checkbox","\n position: relative;\n margin-right: 8px;\n "),k("close","\n opacity: 0;\n pointer-events: none;\n position: relative;\n transition:\n opacity .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n "),k("label","\n position: relative;\n min-width: 0;\n flex-grow: 1;\n "),S("source","cursor: pointer;"),S("disabled","\n cursor: not-allowed;\n color: var(--n-item-text-color-disabled);\n "),u("disabled",[p("&:hover",[k("background","background-color: var(--n-item-color-pending);"),k("close","\n opacity: 1;\n pointer-events: all;\n ")])])])])])])])]),tl=w({name:"TransferFilter",props:{value:String,placeholder:String,disabled:Boolean,onUpdateValue:{type:Function,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:l}=U(ll);return{mergedClsPrefix:l,mergedTheme:e}},render(){const{mergedTheme:e,mergedClsPrefix:l}=this;return $("div",{class:`${l}-transfer-filter`},$(ze,{value:this.value,onUpdateValue:this.onUpdateValue,disabled:this.disabled,placeholder:this.placeholder,theme:e.peers.Input,themeOverrides:e.peerOverrides.Input,clearable:!0,size:"small"},{"clear-icon-placeholder":()=>$(g,{clsPrefix:l},{default:()=>$(Je,null)})}))}}),nl=w({name:"TransferHeader",props:{size:{type:String,required:!0},selectAllText:String,clearText:String,source:Boolean,onCheckedAll:Function,onClearAll:Function,title:[String,Function]},setup(e){const{targetOptionsRef:l,canNotSelectAnythingRef:a,canBeClearedRef:t,allCheckedRef:s,mergedThemeRef:r,disabledRef:i,mergedClsPrefixRef:o,srcOptionsLengthRef:d}=U(ll),{localeRef:u}=n("Transfer");return()=>{const{source:n,onClearAll:c,onCheckedAll:m,selectAllText:p,clearText:v}=e,{value:f}=r,{value:g}=o,{value:h}=u,b="large"===e.size?"small":"tiny",{title:C}=e;return $("div",{class:`${g}-transfer-list-header`},C&&$("div",{class:`${g}-transfer-list-header__title`},"function"==typeof C?C():C),n&&$(y,{class:`${g}-transfer-list-header__button`,theme:f.peers.Button,themeOverrides:f.peerOverrides.Button,size:b,tertiary:!0,onClick:s.value?c:m,disabled:a.value||i.value},{default:()=>s.value?v||h.unselectAll:p||h.selectAll}),!n&&t.value&&$(y,{class:`${g}-transfer-list-header__button`,theme:f.peers.Button,themeOverrides:f.peerOverrides.Button,size:b,tertiary:!0,onClick:c,disabled:i.value},{default:()=>h.clearAll}),$("div",{class:`${g}-transfer-list-header__extra`},n?h.total(d.value):h.selected(l.value.length)))}}}),sl=w({name:"NTransferListItem",props:{source:Boolean,label:{type:String,required:!0},value:{type:[String,Number],required:!0},disabled:Boolean,option:{type:Object,required:!0}},setup(l){const{targetValueSetRef:a,mergedClsPrefixRef:t,mergedThemeRef:n,handleItemCheck:s,renderSourceLabelRef:r,renderTargetLabelRef:i,showSelectedRef:o}=U(ll),d=e(()=>a.value.has(l.value));return{mergedClsPrefix:t,mergedTheme:n,checked:d,showSelected:o,renderSourceLabel:r,renderTargetLabel:i,handleClick:function(){l.disabled||s(!d.value,l.value)}}},render(){const{disabled:e,mergedTheme:a,mergedClsPrefix:t,label:n,checked:s,source:r,renderSourceLabel:i,renderTargetLabel:o}=this;return $("div",{class:[`${t}-transfer-list-item`,e&&`${t}-transfer-list-item--disabled`,r?`${t}-transfer-list-item--source`:`${t}-transfer-list-item--target`],onClick:r?this.handleClick:void 0},$("div",{class:`${t}-transfer-list-item__background`}),r&&this.showSelected&&$("div",{class:`${t}-transfer-list-item__checkbox`},$(Ue,{theme:a.peers.Checkbox,themeOverrides:a.peerOverrides.Checkbox,disabled:e,checked:s})),$("div",{class:`${t}-transfer-list-item__label`,title:ge(n)},r?i?i({option:this.option}):n:o?o({option:this.option}):n),!r&&!e&&$(l,{focusable:!1,class:`${t}-transfer-list-item__close`,clsPrefix:t,onClick:this.handleClick}))}}),rl=w({name:"TransferList",props:{virtualScroll:{type:Boolean,required:!0},itemSize:{type:Number,required:!0},options:{type:Array,required:!0},disabled:{type:Boolean,required:!0},source:Boolean},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:l}=U(ll),a=K(null),t=K(null);return{mergedTheme:e,mergedClsPrefix:l,scrollerInstRef:a,vlInstRef:t,syncVLScroller:function(){var e;null===(e=a.value)||void 0===e||e.sync()},scrollContainer:function(){const{value:e}=t;if(!e)return null;const{listElRef:l}=e;return l},scrollContent:function(){const{value:e}=t;if(!e)return null;const{itemsElRef:l}=e;return l}}},render(){const{mergedTheme:e,options:l}=this;if(0===l.length)return $(Re,{theme:e.peers.Empty,themeOverrides:e.peerOverrides.Empty});const{mergedClsPrefix:a,virtualScroll:t,source:n,disabled:s,syncVLScroller:r}=this;return $(_,{ref:"scrollerInstRef",theme:e.peers.Scrollbar,themeOverrides:e.peerOverrides.Scrollbar,container:t?this.scrollContainer:void 0,content:t?this.scrollContent:void 0},{default:()=>t?$(ke,{ref:"vlInstRef",style:{height:"100%"},class:`${a}-transfer-list-content`,items:this.options,itemSize:this.itemSize,showScrollbar:!1,onResize:r,onScroll:r,keyField:"value"},{default:({item:e})=>{const{source:l,disabled:a}=this;return $(sl,{source:l,key:e.value,value:e.value,disabled:e.disabled||a,label:e.label,option:e})}}):$("div",{class:`${a}-transfer-list-content`},l.map(e=>$(sl,{source:n,key:e.value,value:e.value,disabled:e.disabled||s,label:e.label,option:e})))})}});var il=w({name:"Transfer",props:Object.assign(Object.assign({},s.props),{value:Array,defaultValue:{type:Array,default:null},options:{type:Array,default:()=>[]},disabled:{type:Boolean,default:void 0},virtualScroll:Boolean,sourceTitle:[String,Function],selectAllText:String,clearText:String,targetTitle:[String,Function],filterable:{type:Boolean,default:void 0},sourceFilterable:Boolean,targetFilterable:Boolean,showSelected:{type:Boolean,default:!0},sourceFilterPlaceholder:String,targetFilterPlaceholder:String,filter:{type:Function,default:(e,l)=>!e||~`${l.label}`.toLowerCase().indexOf(`${e}`.toLowerCase())},size:String,renderSourceLabel:Function,renderTargetLabel:Function,renderSourceList:Function,renderTargetList:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:[Function,Array]}),setup(e){const{mergedClsPrefixRef:l}=m(e),a=s("Transfer","-transfer",al,_e,e,l),t=b(e),{mergedSizeRef:n,mergedDisabledRef:o}=t,u=j(()=>{const{value:e}=n,{self:{[x("itemHeight",e)]:l}}=a.value;return h(l)}),{uncontrolledValueRef:c,mergedValueRef:p,targetValueSetRef:v,valueSetForCheckAllRef:f,valueSetForUncheckAllRef:g,valueSetForClearRef:y,filteredTgtOptionsRef:C,filteredSrcOptionsRef:k,targetOptionsRef:_,canNotSelectAnythingRef:S,canBeClearedRef:w,allCheckedRef:T,srcPatternRef:z,tgtPatternRef:P,mergedSrcFilterableRef:A,handleSrcFilterUpdateValue:O,handleTgtFilterUpdateValue:$}=function(e){const l=K(e.defaultValue),a=r(E(e,"value"),l),t=j(()=>{const l=new Map;return(e.options||[]).forEach(e=>l.set(e.value,e)),l}),n=j(()=>new Set(a.value||[])),s=j(()=>{const e=t.value,l=[];return(a.value||[]).forEach(a=>{const t=e.get(a);t&&l.push(t)}),l}),i=K(""),o=K(""),d=j(()=>e.sourceFilterable||!!e.filterable),u=j(()=>{const{showSelected:l,options:a,filter:t}=e;return d.value?a.filter(e=>t(i.value,e,"source")&&(l||!n.value.has(e.value))):l?a:a.filter(e=>!n.value.has(e.value))}),c=j(()=>{if(!e.targetFilterable)return s.value;const{filter:l}=e;return s.value.filter(e=>l(o.value,e,"target"))}),m=j(()=>{const{value:e}=a;return null===e?new Set:new Set(e)}),p=j(()=>{const e=new Set(m.value);return u.value.forEach(l=>{l.disabled||e.has(l.value)||e.add(l.value)}),e}),v=j(()=>{const e=new Set(m.value);return u.value.forEach(l=>{!l.disabled&&e.has(l.value)&&e.delete(l.value)}),e}),f=j(()=>{const e=new Set(m.value);return c.value.forEach(l=>{l.disabled||e.delete(l.value)}),e}),g=j(()=>u.value.every(e=>e.disabled)),h=j(()=>{if(!u.value.length)return!1;const e=m.value;return u.value.every(l=>l.disabled||e.has(l.value))}),b=j(()=>c.value.some(e=>!e.disabled));return{uncontrolledValueRef:l,mergedValueRef:a,targetValueSetRef:n,valueSetForCheckAllRef:p,valueSetForUncheckAllRef:v,valueSetForClearRef:f,filteredTgtOptionsRef:c,filteredSrcOptionsRef:u,targetOptionsRef:s,canNotSelectAnythingRef:g,canBeClearedRef:b,allCheckedRef:h,srcPatternRef:i,tgtPatternRef:o,mergedSrcFilterableRef:d,handleSrcFilterUpdateValue:function(e){i.value=null!=e?e:""},handleTgtFilterUpdateValue:function(e){o.value=null!=e?e:""}}}(e);function U(l){const{onUpdateValue:a,"onUpdate:value":n,onChange:s}=e,{nTriggerFormInput:r,nTriggerFormChange:o}=t;a&&i(a,l),n&&i(n,l),s&&i(s,l),c.value=l,r(),o()}function L(e,l){U(e?(p.value||[]).concat(l):(p.value||[]).filter(e=>e!==l))}return R(ll,{targetValueSetRef:v,mergedClsPrefixRef:l,disabledRef:o,mergedThemeRef:a,targetOptionsRef:_,canNotSelectAnythingRef:S,canBeClearedRef:w,allCheckedRef:T,srcOptionsLengthRef:j(()=>e.options.length),handleItemCheck:L,renderSourceLabelRef:E(e,"renderSourceLabel"),renderTargetLabelRef:E(e,"renderTargetLabel"),showSelectedRef:E(e,"showSelected")}),{mergedClsPrefix:l,mergedDisabled:o,itemSize:u,isMounted:d(),mergedTheme:a,filteredSrcOpts:k,filteredTgtOpts:C,srcPattern:z,tgtPattern:P,mergedSize:n,mergedSrcFilterable:A,handleSrcFilterUpdateValue:O,handleTgtFilterUpdateValue:$,handleSourceCheckAll:function(){U([...f.value])},handleSourceUncheckAll:function(){U([...g.value])},handleTargetClearAll:function(){U([...y.value])},handleItemCheck:L,handleChecked:function(e){U(e)},cssVars:j(()=>{const{value:e}=n,{common:{cubicBezierEaseInOut:l},self:{borderRadius:t,borderColor:s,listColor:r,titleTextColor:i,titleTextColorDisabled:o,extraTextColor:d,itemTextColor:u,itemColorPending:c,itemTextColorDisabled:m,titleFontWeight:p,closeColorHover:v,closeColorPressed:f,closeIconColor:g,closeIconColorHover:h,closeIconColorPressed:b,closeIconSize:y,closeSize:C,dividerColor:k,extraTextColorDisabled:_,[x("extraFontSize",e)]:S,[x("fontSize",e)]:w,[x("titleFontSize",e)]:T,[x("itemHeight",e)]:z,[x("headerHeight",e)]:P}}=a.value;return{"--n-bezier":l,"--n-border-color":s,"--n-border-radius":t,"--n-extra-font-size":S,"--n-font-size":w,"--n-header-font-size":T,"--n-header-extra-text-color":d,"--n-header-extra-text-color-disabled":_,"--n-header-font-weight":p,"--n-header-text-color":i,"--n-header-text-color-disabled":o,"--n-item-color-pending":c,"--n-item-height":z,"--n-item-text-color":u,"--n-item-text-color-disabled":m,"--n-list-color":r,"--n-header-height":P,"--n-close-size":C,"--n-close-icon-size":y,"--n-close-color-hover":v,"--n-close-color-pressed":f,"--n-close-icon-color":g,"--n-close-icon-color-hover":h,"--n-close-icon-color-pressed":b,"--n-divider-color":k}})}},render(){const{mergedClsPrefix:e,renderSourceList:l,renderTargetList:a,mergedTheme:t,mergedSrcFilterable:n,targetFilterable:s}=this;return $("div",{class:[`${e}-transfer`,this.mergedDisabled&&`${e}-transfer--disabled`],style:this.cssVars},$("div",{class:`${e}-transfer-list ${e}-transfer-list--source`},$(nl,{source:!0,selectAllText:this.selectAllText,clearText:this.clearText,title:this.sourceTitle,onCheckedAll:this.handleSourceCheckAll,onClearAll:this.handleSourceUncheckAll,size:this.mergedSize}),$("div",{class:`${e}-transfer-list-body`},n?$(tl,{onUpdateValue:this.handleSrcFilterUpdateValue,value:this.srcPattern,disabled:this.mergedDisabled,placeholder:this.sourceFilterPlaceholder}):null,$("div",{class:`${e}-transfer-list-flex-container`},l?$(_,{theme:t.peers.Scrollbar,themeOverrides:t.peerOverrides.Scrollbar},{default:()=>l({onCheck:this.handleChecked,checkedOptions:this.filteredTgtOpts,pattern:this.srcPattern})}):$(rl,{source:!0,options:this.filteredSrcOpts,disabled:this.mergedDisabled,virtualScroll:this.virtualScroll,itemSize:this.itemSize}))),$("div",{class:`${e}-transfer-list__border`})),$("div",{class:`${e}-transfer-list ${e}-transfer-list--target`},$(nl,{onClearAll:this.handleTargetClearAll,size:this.mergedSize,title:this.targetTitle}),$("div",{class:`${e}-transfer-list-body`},s?$(tl,{onUpdateValue:this.handleTgtFilterUpdateValue,value:this.tgtPattern,disabled:this.mergedDisabled,placeholder:this.sourceFilterPlaceholder}):null,$("div",{class:`${e}-transfer-list-flex-container`},a?$(_,{theme:t.peers.Scrollbar,themeOverrides:t.peerOverrides.Scrollbar},{default:()=>a({onCheck:this.handleChecked,checkedOptions:this.filteredTgtOpts,pattern:this.tgtPattern})}):$(rl,{options:this.filteredTgtOpts,disabled:this.mergedDisabled,virtualScroll:this.virtualScroll,itemSize:this.itemSize}))),$("div",{class:`${e}-transfer-list__border`})))}}),ol=w({name:"Li",render(){return $("li",null,this.$slots)}}),dl=p("li",{transition:"color .3s var(--n-bezier)",lineHeight:"var(--n-line-height)",margin:"var(--n-li-margin)",marginBottom:0,color:"var(--n-text-color)"}),ul=[p("&:first-child","\n margin-top: 0;\n "),p("&:last-child","\n margin-bottom: 0;\n ")],cl=p([c("ol",{fontSize:"var(--n-font-size)",padding:"var(--n-ol-padding)"},[S("align-text",{paddingLeft:0}),dl,ul]),c("ul",{fontSize:"var(--n-font-size)",padding:"var(--n-ul-padding)"},[S("align-text",{paddingLeft:0}),dl,ul])]),ml=w({name:"Ul",props:Object.assign(Object.assign({},s.props),{alignText:Boolean}),setup(e){const{mergedClsPrefixRef:l,inlineThemeDisabled:a}=m(e),t=s("Typography","-xl",cl,ce,e,l),n=j(()=>{const{common:{cubicBezierEaseInOut:e},self:{olPadding:l,ulPadding:a,liMargin:n,liTextColor:s,liLineHeight:r,liFontSize:i}}=t.value;return{"--n-bezier":e,"--n-font-size":i,"--n-line-height":r,"--n-text-color":s,"--n-li-margin":n,"--n-ol-padding":l,"--n-ul-padding":a}}),r=a?v("ul",void 0,n,e):void 0;return{mergedClsPrefix:l,cssVars:a?void 0:n,themeClass:null==r?void 0:r.themeClass,onRender:null==r?void 0:r.onRender}},render(){var e;const{mergedClsPrefix:l}=this;return null===(e=this.onRender)||void 0===e||e.call(this),$("ul",{class:[`${l}-ul`,this.themeClass,this.alignText&&`${l}-ul--align-text`],style:this.cssVars},this.$slots)}}),pl={class:"card-header"},vl={class:"card-title"},fl={class:"name"},gl={class:"card-body"},hl={key:0,class:"description"},bl={class:"stats"},yl={key:0},Cl={key:1},kl={key:2},xl={key:3},_l={key:4},Sl=C({__name:"ConfigTemplateCard",props:{template:{type:Object,required:!0},deleting:{type:Boolean,default:!1}},emits:["click","apply","preview","edit","delete"],setup(e){const l=e;const a={claude:{label:"Claude",color:"#cc785c",textColor:"#fff",borderColor:"#cc785c"},codex:{label:"Codex",color:"#10a37f",textColor:"#fff",borderColor:"#10a37f"},gemini:{label:"Gemini",color:"#4285f4",textColor:"#fff",borderColor:"#4285f4"},opencode:{label:"OpenCode",color:"#ff6b35",textColor:"#fff",borderColor:"#ff6b35"},omp:{label:"OMP",color:"#0f9f9a",textColor:"#fff",borderColor:"#0f9f9a"}},t={claude:"CLAUDE.md",codex:"AGENTS.md",gemini:"GEMINI.md",opencode:".opencode/AGENTS.md",omp:".omp/commands"};function n(e){const l=a[e];return l?{color:l.color,textColor:l.textColor,borderColor:l.borderColor}:{}}const s=j(()=>{const e=l.template,a=e?.cliType;return a&&"all"!==a?"omp"===a&&e?.commands?.length?t.omp:(e?.aiConfigs?.[a])?.enabled?t[a]||null:"claude"===a&&e?.claudeMd?.enabled?"CLAUDE.md":null:null});return(l,t)=>{return B(),W("div",{class:"template-card",onClick:t[5]||(t[5]=a=>l.$emit("click",e.template))},[X("div",pl,[X("div",vl,[X("span",fl,N(e.template.name),1),e.template.cliType?(B(),M(H(Ae),{key:0,size:"small",color:n(e.template.cliType),round:""},{default:I(()=>{return[z(N((l=e.template.cliType,a[l]?.label||l)),1)];var l}),_:1},8,["color"])):T("",!0)]),X("div",{class:"card-actions",onClick:t[4]||(t[4]=q(()=>{},["stop"]))},[L(H(y),{size:"small",type:"primary",onClick:t[0]||(t[0]=a=>l.$emit("apply",e.template))},{default:I(()=>[...t[6]||(t[6]=[z("应用",-1)])]),_:1}),L(H(y),{size:"small",onClick:t[1]||(t[1]=a=>l.$emit("preview",e.template))},{default:I(()=>[...t[7]||(t[7]=[z("预览",-1)])]),_:1}),L(H(y),{size:"small",onClick:t[2]||(t[2]=a=>l.$emit("edit",e.template))},{default:I(()=>[...t[8]||(t[8]=[z("编辑",-1)])]),_:1}),L(H(y),{size:"small",type:"error",loading:e.deleting,onClick:t[3]||(t[3]=a=>l.$emit("delete",e.template))},{default:I(()=>[...t[9]||(t[9]=[z("删除",-1)])]),_:1},8,["loading"])])]),X("div",gl,[e.template.description?(B(),W("div",hl,N((r=e.template.description,i=80,r?.length>i?r.slice(0,i)+"...":r)),1)):T("",!0),X("div",bl,[s.value?(B(),W("span",yl,N(s.value),1)):T("",!0),e.template.skills?.length?(B(),W("span",Cl,N(e.template.skills.length)+" Skills",1)):T("",!0),e.template.agents?.length?(B(),W("span",kl,N(e.template.agents.length)+" Agents",1)):T("",!0),e.template.commands?.length?(B(),W("span",xl,N(e.template.commands.length)+" Commands",1)):T("",!0),e.template.mcpServers?.length?(B(),W("span",_l,N(e.template.mcpServers.length)+" MCP",1)):T("",!0)])])]);var r,i}}},[["__scopeId","data-v-0bfacefb"]]),wl=["innerHTML"],Tl=C({__name:"MarkdownViewer",props:{content:{type:String,default:""}},setup(e){const l=e;function a(e,l){Fe.getLanguage(e)||Fe.registerLanguage(e,l)}a("javascript",Ee),a("typescript",Ne),a("json",Me),a("bash",Be),a("shell",Be),a("sh",Be),a("python",je),a("css",Ve),a("xml",Ie),a("html",Ie);const t=new Le({html:!0,linkify:!0,typographer:!0,highlight:function(e,l){if(l&&Fe.getLanguage(l))try{return'<pre class="hljs"><code>'+Fe.highlight(e,{language:l,ignoreIllegals:!0}).value+"</code></pre>"}catch(a){}return'<pre class="hljs"><code>'+t.utils.escapeHtml(e)+"</code></pre>"}}),n=j(()=>t.render(l.content||""));return(e,l)=>(B(),W("div",{class:"markdown-viewer",innerHTML:n.value},null,8,wl))}},[["__scopeId","data-v-9e29f753"]]),zl={class:"ai-config-header"},Pl={key:0,class:"prompt-preview"},Rl={class:"ai-config-header"},Al={class:"ai-config-header"},Ol={class:"ai-config-header"},$l={class:"ai-config-header"},Ul={__name:"ConfigTemplateFormModal",props:{show:Boolean,template:Object,availableConfigs:{type:Object,default:()=>({})}},emits:["update:show","success"],setup(e,{emit:l}){const a=e,t=l,n=ie(),s=K(null),r=K(!1),i=j(()=>{const e=a.availableConfigs?.platforms;return Array.isArray(e)?e:[]});function o(e=[]){const l=[...i.value.map(e=>e.key),...Object.keys(a.availableConfigs?.skillsByPlatform||{}),...Object.keys(a.availableConfigs?.agentsByPlatform||{}),...Object.keys(a.availableConfigs?.commandsByPlatform||{}),...e];return[...new Set(l.filter(e=>"string"==typeof e&&e.trim()))]}const d=j(()=>i.value.map(e=>({label:e.label||e.title||e.key,value:e.key}))),u=j(()=>i.value.find(e=>e.key===g.value.cliType)),c=j(()=>u.value?.label||u.value?.title||g.value.cliType),m=j(()=>u.value?.promptFile||"");function p(e){const l=u.value?.projectResources?.[e];return l?.canonicalRoot||l?.path||""}const v=j(()=>Boolean(g.value.cliType&&u.value&&!["claude","codex","gemini","opencode","omp"].includes(g.value.cliType))),f=j(()=>!!a.template?.id),g=K(h());function h(){return{name:"",description:"",cliType:"",aiConfigs:Object.fromEntries(o().map(e=>[e,{enabled:!1,content:""}])),claudeMd:{enabled:!1,content:""},skills:[],agents:[],commands:[],mcpServers:[]}}V(i,e=>{for(const l of e)g.value.aiConfigs[l.key]||(g.value.aiConfigs[l.key]={enabled:!1,content:""})},{deep:!0,immediate:!0});const b={name:{required:!0,message:"请输入模版名称",trigger:"blur"},cliType:{required:!0,message:"请选择 CLI 工具类型",trigger:"change"}},C=j(()=>{const e=g.value.cliType,l=a.availableConfigs?.skillsByPlatform||{};return(e&&l[e]?l[e]:[]).map(e=>({value:e.directory,label:e.name?`${e.name} (${e.directory})`:e.directory,disabled:!1}))}),k=j(()=>{const e=g.value.cliType,l=a.availableConfigs?.agentsByPlatform||{};return(e&&l[e]?l[e]:a.availableConfigs?.agents||[]).map(e=>({value:e.fileName,label:e.name||e.fileName,disabled:!1}))}),x=j(()=>{const e=g.value.cliType,l=a.availableConfigs?.commandsByPlatform||{};return(e&&l[e]?l[e]:a.availableConfigs?.commands||[]).map(e=>({value:e.namespace?`${e.namespace}/${e.name}`:e.name,label:e.namespace?`${e.namespace}/${e.name}`:e.name,disabled:!1}))}),_=j(()=>{const e=a.availableConfigs?.mcpServers||[],l=a.availableConfigs?.mcpPresets||[],t=[...e.map(e=>({value:e.id,label:e.name||e.id})),...l.map(e=>({value:e.id,label:`${e.name} (预设)`}))],n=new Set;return t.filter(e=>!n.has(e.value)&&(n.add(e.value),!0))}),S=K(null),w=j(()=>(a.availableConfigs?.prompts||[]).map(e=>({value:e.id,label:e.isBuiltin?`[内置] ${e.name}`:e.name,description:e.description}))),P=j({get:()=>g.value.skills.map(e=>e.directory),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.skillsByPlatform||{},n=l&&t[l]?t[l]:[];g.value.skills=e.map(e=>{const l=n.find(l=>l.directory===e);return l?{...l}:{directory:e,name:e}})}}),R=j({get:()=>g.value.agents.map(e=>e.fileName),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.agentsByPlatform||{},n=l&&t[l]?t[l]:a.availableConfigs?.agents||[];g.value.agents=e.map(e=>{const l=n.find(l=>l.fileName===e);return l?{...l}:{fileName:e}})}}),O=j({get:()=>g.value.commands.map(e=>e.namespace?`${e.namespace}/${e.name}`:e.name),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.commandsByPlatform||{},n=l&&t[l]?t[l]:a.availableConfigs?.commands||[];g.value.commands=e.map(e=>{const l=n.find(l=>(l.namespace?`${l.namespace}/${l.name}`:l.name)===e);return l?{...l}:{name:e}})}});function $(e){if(!e)return void(g.value.aiConfigs.claude.content="");const l=(a.availableConfigs?.prompts||[]).find(l=>l.id===e);l&&(g.value.aiConfigs.claude.enabled=!0,g.value.aiConfigs.claude.content=l.content)}async function U(){try{await(s.value?.validate())}catch{return}r.value=!0;try{const e={...g.value};let l;l=f.value?await Ke(a.template.id,e):await qe(e),l.success?(n.success(f.value?"保存成功":"创建成功"),t("success")):n.error(l.message||"操作失败")}catch(e){n.error("操作失败: "+e.message)}finally{r.value=!1}}return V(()=>a.show,e=>{if(e)if(S.value=null,a.template){const e=Object.keys(a.template.aiConfigs||{}),l=Object.fromEntries(o(e).map(e=>[e,{enabled:!1,content:""}]));if(a.template.aiConfigs)for(const t of o(Object.keys(a.template.aiConfigs)))a.template.aiConfigs[t]&&(l[t]={...a.template.aiConfigs[t]});else a.template.claudeMd&&(l.claude||(l.claude={enabled:!1,content:""}),l.claude={...a.template.claudeMd});g.value={name:a.template.name||"",description:a.template.description||"",cliType:a.template.cliType||"",aiConfigs:l,claudeMd:a.template.claudeMd?{...a.template.claudeMd}:{enabled:!1,content:""},skills:a.template.skills?[...a.template.skills]:[],agents:a.template.agents?[...a.template.agents]:[],commands:a.template.commands?[...a.template.commands]:[],mcpServers:a.template.mcpServers?[...a.template.mcpServers]:[]}}else g.value=h()}),V(()=>g.value.cliType,e=>{const l=i.value.find(l=>l.key===e)?.resourceTypes;l&&(l.skills||(g.value.skills=[]),l.agents||(g.value.agents=[]),l.commands||(g.value.commands=[]))}),(l,a)=>{const n=A("n-text");return B(),M(H(ue),{show:e.show,preset:"card",title:f.value?"编辑配置模版":"创建配置模版",style:{width:"850px","max-height":"90vh"},"mask-closable":!1,"onUpdate:show":a[30]||(a[30]=e=>t("update:show",e))},{footer:I(()=>[L(H(ye),{justify:"end"},{default:I(()=>[L(H(y),{onClick:a[29]||(a[29]=e=>t("update:show",!1))},{default:I(()=>[...a[35]||(a[35]=[z("取消",-1)])]),_:1}),L(H(y),{type:"primary",loading:r.value,onClick:U},{default:I(()=>[z(N(f.value?"保存":"创建"),1)]),_:1},8,["loading"])]),_:1})]),default:I(()=>[L(H(Ce),{style:{"max-height":"calc(90vh - 140px)"}},{default:I(()=>[L(H(Se),{ref_key:"formRef",ref:s,model:g.value,rules:b,"label-placement":"left","label-width":"100"},{default:I(()=>[L(H(oe),{title:"基本信息",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[L(H(fe),{label:"模版名称",path:"name"},{default:I(()=>[L(H(ze),{value:g.value.name,"onUpdate:value":a[0]||(a[0]=e=>g.value.name=e),placeholder:"输入模版名称"},null,8,["value"])]),_:1}),L(H(fe),{label:"描述",path:"description"},{default:I(()=>[L(H(ze),{value:g.value.description,"onUpdate:value":a[1]||(a[1]=e=>g.value.description=e),type:"textarea",rows:2,placeholder:"输入模版描述"},null,8,["value"])]),_:1}),L(H(fe),{label:"CLI 工具",path:"cliType"},{default:I(()=>[L(H($e),{value:g.value.cliType,"onUpdate:value":a[2]||(a[2]=e=>g.value.cliType=e),options:d.value,placeholder:"选择 CLI 工具类型"},null,8,["value","options"])]),_:1})]),_:1}),g.value.cliType?T("",!0):(B(),M(H(oe),{key:0,size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[L(H(Re),{description:"请先选择 CLI 工具类型以显示配置项"})]),_:1})),"claude"===g.value.cliType?(B(),W(D,{key:1},[L(H(oe),{title:"CLAUDE.md",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[X("div",zl,[L(H(ye),{align:"center"},{default:I(()=>[L(H(he),{value:g.value.aiConfigs.claude.enabled,"onUpdate:value":a[3]||(a[3]=e=>g.value.aiConfigs.claude.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.claude.enabled?1:3},{default:I(()=>[...a[31]||(a[31]=[z("启用 CLAUDE.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.claude.enabled},{default:I(()=>[L(H($e),{value:S.value,"onUpdate:value":[a[4]||(a[4]=e=>S.value=e),$],options:w.value,placeholder:"选择 Prompt 预设作为 CLAUDE.md 内容",clearable:"",style:{"margin-bottom":"10px"}},null,8,["value","options"]),g.value.aiConfigs.claude.content?(B(),W("div",Pl,[L(Tl,{content:g.value.aiConfigs.claude.content},null,8,["content"])])):(B(),M(H(Re),{key:1,description:"可选择 Prompt 预设,或留空",style:{padding:"24px 0"}}))]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:P.value,"onUpdate:value":a[5]||(a[5]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:R.value,"onUpdate:value":a[6]||(a[6]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:O.value,"onUpdate:value":a[7]||(a[7]=e=>O.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[8]||(a[8]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"codex"===g.value.cliType?(B(),W(D,{key:2},[L(H(oe),{title:"AGENTS.md",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[X("div",Rl,[L(H(ye),{align:"center"},{default:I(()=>[L(H(he),{value:g.value.aiConfigs.codex.enabled,"onUpdate:value":a[9]||(a[9]=e=>g.value.aiConfigs.codex.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.codex.enabled?1:3},{default:I(()=>[...a[32]||(a[32]=[z("启用 AGENTS.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.codex.enabled},{default:I(()=>[L(De,{modelValue:g.value.aiConfigs.codex.content,"onUpdate:modelValue":a[10]||(a[10]=e=>g.value.aiConfigs.codex.content=e),rows:10,"min-height":220,placeholder:"输入 AGENTS.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:P.value,"onUpdate:value":a[11]||(a[11]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:R.value,"onUpdate:value":a[12]||(a[12]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:O.value,"onUpdate:value":a[13]||(a[13]=e=>O.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[14]||(a[14]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"gemini"===g.value.cliType?(B(),W(D,{key:3},[L(H(oe),{title:"GEMINI.md",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[X("div",Al,[L(H(ye),{align:"center"},{default:I(()=>[L(H(he),{value:g.value.aiConfigs.gemini.enabled,"onUpdate:value":a[15]||(a[15]=e=>g.value.aiConfigs.gemini.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.gemini.enabled?1:3},{default:I(()=>[...a[33]||(a[33]=[z("启用 GEMINI.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.gemini.enabled},{default:I(()=>[L(De,{modelValue:g.value.aiConfigs.gemini.content,"onUpdate:modelValue":a[16]||(a[16]=e=>g.value.aiConfigs.gemini.content=e),rows:10,"min-height":220,placeholder:"输入 GEMINI.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:P.value,"onUpdate:value":a[17]||(a[17]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[18]||(a[18]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"opencode"===g.value.cliType?(B(),W(D,{key:4},[L(H(oe),{title:".opencode/AGENTS.md",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[X("div",Ol,[L(H(ye),{align:"center"},{default:I(()=>[L(H(he),{value:g.value.aiConfigs.opencode.enabled,"onUpdate:value":a[19]||(a[19]=e=>g.value.aiConfigs.opencode.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.opencode.enabled?1:3},{default:I(()=>[...a[34]||(a[34]=[z("启用 .opencode/AGENTS.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.opencode.enabled},{default:I(()=>[L(De,{modelValue:g.value.aiConfigs.opencode.content,"onUpdate:modelValue":a[20]||(a[20]=e=>g.value.aiConfigs.opencode.content=e),rows:10,"min-height":220,placeholder:"输入 .opencode/AGENTS.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:P.value,"onUpdate:value":a[21]||(a[21]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:R.value,"onUpdate:value":a[22]||(a[22]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:O.value,"onUpdate:value":a[23]||(a[23]=e=>O.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[24]||(a[24]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"omp"===g.value.cliType?(B(),W(D,{key:5},[L(H(oe),{title:"OMP Commands",size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[L(H(Ae),{size:"small",type:"success"},{default:I(()=>[z(N(p("commands")||"Commands"),1)]),_:1})]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:P.value,"onUpdate:value":a[25]||(a[25]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":I(()=>[L(H(Ae),{size:"small"},{default:I(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:I(()=>[L(H(il),{value:O.value,"onUpdate:value":a[26]||(a[26]=e=>O.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{default:I(()=>[L(H(Ae),{size:"small",type:"default"},{default:I(()=>[z(N(p("plugins")||"packages/extensions"),1)]),_:1})]),_:1})],64)):T("",!0),v.value?(B(),M(H(oe),{key:6,title:`${c.value} 配置`,size:"small",style:{"margin-bottom":"16px"}},{default:I(()=>[X("div",$l,[L(H(ye),{align:"center"},{default:I(()=>[L(H(he),{value:g.value.aiConfigs[g.value.cliType].enabled,"onUpdate:value":a[27]||(a[27]=e=>g.value.aiConfigs[g.value.cliType].enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs[g.value.cliType].enabled?1:3},{default:I(()=>[z(" 启用 "+N(m.value||`${c.value} 配置`),1)]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs[g.value.cliType].enabled},{default:I(()=>[L(De,{modelValue:g.value.aiConfigs[g.value.cliType].content,"onUpdate:modelValue":a[28]||(a[28]=e=>g.value.aiConfigs[g.value.cliType].content=e),rows:10,"min-height":220,placeholder:`输入 ${m.value||c.value} 内容`},null,8,["modelValue","placeholder"])]),_:1},8,["show"])]),_:1},8,["title"])):T("",!0)]),_:1},8,["model"])]),_:1})]),_:1},8,["show","title"])}}},Ll=C(Ul,[["__scopeId","data-v-0d81f984"]]),Ml={key:0},Fl={key:1},Bl={key:2},Vl={key:4},Nl={__name:"ConfigApplyModal",props:{show:Boolean,template:Object},emits:["update:show","success"],setup(e,{emit:l}){const a=e,t=l,n=ie(),s=K(null),r=K(!1),i=K(!1),o=K(null),d=K(!1),u=K([]),c=K(null),m={claude:{key:"claude",name:"Claude",fileName:"CLAUDE.md",color:"#cc785c"},codex:{key:"codex",name:"Codex",fileName:"AGENTS.md",color:"#10a37f"},gemini:{key:"gemini",name:"Gemini",fileName:"GEMINI.md",color:"#4285f4"},opencode:{key:"opencode",name:"OpenCode",fileName:".opencode/AGENTS.md",color:"#ff6b35"},omp:{key:"omp",name:"OMP command templates",fileName:".omp/commands",color:"#0f9f9a"}},p=j(()=>{const e=a.template?.aiConfigs||{},l=a.template?.cliType;if("omp"===l&&m.omp)return[m.omp];const t=Object.entries(e).filter(([,e])=>e?.enabled&&e?.content).map(([e])=>m[e]).filter(Boolean);if(l&&"all"!==l){const a=e[l];if(a?.enabled&&a?.content&&m[l])return[m[l]]}return t});function v(){return p.value.map(e=>e.key)}const g=K({targetPath:"",aiConfigTypes:[]}),h={targetPath:{required:!0,message:"请输入目标路径",trigger:"blur"}},b=j(()=>{const e=new Set,l=[];for(const a of u.value){const t=a.fullPath||a.path||a.name;t&&!e.has(t)&&(e.add(t),l.push({label:`${a.displayName||a.name} (${a.channel})`,value:t}))}return l});function C(e){e&&(g.value.targetPath=e)}async function k(){if(g.value.targetPath&&a.template&&0!==g.value.aiConfigTypes.length){r.value=!0;try{const e=await We(a.template.id,g.value.targetPath,g.value.aiConfigTypes);e.success?o.value=e.data:n.error(e.message||"预览失败")}catch(e){n.error("预览失败: "+e.message)}finally{r.value=!1}}}async function x(){try{await(s.value?.validate())}catch{return}if(a.template&&0!==g.value.aiConfigTypes.length){i.value=!0;try{const e=await Ze(a.template.id,g.value.targetPath,g.value.aiConfigTypes);if(e.success){const l=e.data?.results?.skipped||[];l.length>0?n.warning(`模版已部分应用,${l.length} 项已跳过`):n.success("模版应用成功"),t("success",e.data||null)}else n.error(e.message||"应用失败")}catch(e){n.error("应用失败: "+e.message)}finally{i.value=!1}}}return V(()=>a.show,e=>{e&&(g.value.targetPath="",g.value.aiConfigTypes=v(),o.value=null,c.value=null,async function(){d.value=!0;try{const e=await Ge();e.success?u.value=Array.isArray(e.data)?e.data:[]:u.value=[]}catch(e){u.value=[]}finally{d.value=!1}}())}),V(()=>a.template,()=>{g.value.aiConfigTypes=v()}),(l,a)=>(B(),M(H(ue),{show:e.show,preset:"card",title:`应用模版: ${e.template?.name||""}`,style:{width:"650px"},"mask-closable":!1,"onUpdate:show":a[4]||(a[4]=e=>t("update:show",e))},{footer:I(()=>[L(H(ye),{justify:"end"},{default:I(()=>[L(H(y),{onClick:a[3]||(a[3]=e=>t("update:show",!1))},{default:I(()=>[...a[14]||(a[14]=[z("取消",-1)])]),_:1}),L(H(y),{type:"primary",loading:i.value,disabled:!g.value.targetPath||0===g.value.aiConfigTypes.length,onClick:x},{default:I(()=>[...a[15]||(a[15]=[z(" 确认应用 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:I(()=>[L(H(Se),{ref_key:"formRef",ref:s,model:g.value,rules:h},{default:I(()=>[L(H(fe),{label:"选择已有项目"},{default:I(()=>[L(H($e),{value:c.value,"onUpdate:value":[a[0]||(a[0]=e=>c.value=e),C],options:b.value,loading:d.value,placeholder:"选择已有项目路径",filterable:"",clearable:""},null,8,["value","options","loading"])]),_:1}),L(H(fe),{label:"目标项目路径",path:"targetPath"},{default:I(()=>[L(H(ze),{value:g.value.targetPath,"onUpdate:value":a[1]||(a[1]=e=>g.value.targetPath=e),placeholder:"输入项目目录路径,如 /path/to/project"},null,8,["value"])]),_:1}),p.value.length>0?(B(),M(H(fe),{key:0,label:"生成配置文件"},{default:I(()=>[L(H(Te),{value:g.value.aiConfigTypes,"onUpdate:value":a[2]||(a[2]=e=>g.value.aiConfigTypes=e)},{default:I(()=>[L(H(ye),null,{default:I(()=>[(B(!0),W(D,null,O(p.value,e=>(B(),M(H(Ue),{key:e.key,value:e.key},{default:I(()=>[L(H(ye),{align:"center",size:4},{default:I(()=>[L(H(f),{size:16,color:e.color},{default:I(()=>[L(H(le))]),_:1},8,["color"]),X("span",null,N(e.name),1),L(H(xe),{depth:"3",style:{"font-size":"12px"}},{default:I(()=>[z("("+N(e.fileName||e.name)+")",1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),L(H(xe),{depth:"3",style:{"font-size":"12px","margin-top":"4px",display:"block"}},{default:I(()=>[...a[5]||(a[5]=[z(" 可同时选择多个 CLI 配置文件 ",-1)])]),_:1})]),_:1})):T("",!0)]),_:1},8,["model"]),L(H(ye),{style:{"margin-bottom":"16px"}},{default:I(()=>[L(H(y),{onClick:k,loading:r.value,disabled:!g.value.targetPath||0===g.value.aiConfigTypes.length},{default:I(()=>[...a[6]||(a[6]=[z(" 预览应用效果 ",-1)])]),_:1},8,["loading","disabled"])]),_:1}),o.value?(B(),M(H(oe),{key:0,size:"small",title:"应用预览"},{default:I(()=>[L(H(ye),{vertical:""},{default:I(()=>[o.value.summary?(B(),W("div",Ml,[L(H(xe),{depth:"3"},{default:I(()=>[...a[7]||(a[7]=[z("将应用:",-1)])]),_:1}),L(H(ye),{style:{"margin-top":"8px"},wrap:""},{default:I(()=>[(B(!0),W(D,null,O(o.value.summary.aiConfigs,e=>{return B(),M(H(Ae),{key:e.type,type:(l=e.type,{claude:"warning",codex:"success",gemini:"info",opencode:"error",omp:"success"}[l]||"default"),size:"small"},{default:I(()=>[z(N(e.fileName||e.name),1)]),_:2},1032,["type"]);var l}),128)),o.value.summary.skills?(B(),M(H(Ae),{key:0,type:"info",size:"small"},{default:I(()=>[z(N(o.value.summary.skills)+" Skills",1)]),_:1})):T("",!0),o.value.summary.agents?(B(),M(H(Ae),{key:1,type:"info",size:"small"},{default:I(()=>[z(N(o.value.summary.agents)+" Agents",1)]),_:1})):T("",!0),o.value.summary.commands?(B(),M(H(Ae),{key:2,type:"info",size:"small"},{default:I(()=>[z(N(o.value.summary.commands)+" Commands",1)]),_:1})):T("",!0),o.value.summary.plugins?(B(),M(H(Ae),{key:3,type:"warning",size:"small"},{default:I(()=>[z(N(o.value.summary.plugins)+" Plugins",1)]),_:1})):T("",!0),o.value.summary.mcpServers?(B(),M(H(Ae),{key:4,type:"warning",size:"small"},{default:I(()=>[z(N(o.value.summary.mcpServers)+" MCP",1)]),_:1})):T("",!0),o.value.summary.skipped?(B(),M(H(Ae),{key:5,type:"error",size:"small"},{default:I(()=>[z(N(o.value.summary.skipped)+" Skipped",1)]),_:1})):T("",!0)]),_:1})])):T("",!0),L(H(ve),{style:{margin:"12px 0"}}),o.value.willCreate?.length?(B(),W("div",Fl,[L(H(xe),{type:"success"},{default:I(()=>[...a[8]||(a[8]=[z("将创建:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:I(()=>[(B(!0),W(D,null,O(o.value.willCreate,e=>(B(),M(H(ol),{key:e},{default:I(()=>[L(H(xe),{code:""},{default:I(()=>[z(N(e),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.willOverwrite?.length?(B(),W("div",Bl,[L(H(xe),{type:"warning"},{default:I(()=>[...a[9]||(a[9]=[z("将覆盖:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:I(()=>[(B(!0),W(D,null,O(o.value.willOverwrite,e=>(B(),M(H(ol),{key:e},{default:I(()=>[L(H(xe),{code:""},{default:I(()=>[z(N(e),1)]),_:2},1024),L(H(Ae),{type:"warning",size:"tiny",style:{"margin-left":"8px"}},{default:I(()=>[...a[10]||(a[10]=[z("已存在",-1)])]),_:1})]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.willOverwrite?.length?(B(),M(H(Pe),{key:3,type:"warning",style:{"margin-top":"8px"}},{default:I(()=>[...a[11]||(a[11]=[z(" 以上文件将被覆盖,请确认后再应用 ",-1)])]),_:1})):T("",!0),o.value.skipped?.length?(B(),W("div",Vl,[L(H(xe),{type:"error"},{default:I(()=>[...a[12]||(a[12]=[z("将跳过:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:I(()=>[(B(!0),W(D,null,O(o.value.skipped,(e,l)=>(B(),M(H(ol),{key:`${e.type}-${e.item}-${l}`},{default:I(()=>[L(H(xe),null,{default:I(()=>[z(N(e.type)+": ",1)]),_:2},1024),L(H(xe),{code:""},{default:I(()=>[z(N(e.item),1)]),_:2},1024),L(H(xe),{depth:"3"},{default:I(()=>[z(" - "+N(e.reason),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.skipped?.length?(B(),M(H(Pe),{key:5,type:"info",style:{"margin-top":"8px"}},{default:I(()=>[...a[13]||(a[13]=[z(" 本次将进行部分应用,以上项会被跳过。 ",-1)])]),_:1})):T("",!0)]),_:1})]),_:1})):T("",!0)]),_:1},8,["show","title"]))}},jl={key:0,class:"preview-content"},El={class:"info-section"},Il={class:"info-row"},Dl={class:"value"},Gl={key:0,class:"info-row"},ql={class:"value"},Hl={key:1,class:"info-row"},Kl={class:"stats-section"},Wl={class:"stats-grid"},Xl={key:1,class:"stat-item"},Yl={key:2,class:"stat-item"},Zl={key:3,class:"stat-item"},Jl={key:4,class:"stat-item"},Ql={key:5,class:"stat-item"},ea={class:"markdown-content"},la={class:"markdown-content"},aa={class:"list-items"},ta={class:"list-items"},na={class:"list-items"},sa={key:0,class:"list-note"},ra={class:"list-items"},ia=C({__name:"ConfigPreviewModal",props:{show:Boolean,template:Object},emits:["update:show","apply"],setup(e,{emit:l}){const a=e,t=l,n={claude:{key:"claude",name:"Claude",fileName:"CLAUDE.md",color:"#cc785c"},codex:{key:"codex",name:"Codex",fileName:"AGENTS.md",color:"#10a37f"},gemini:{key:"gemini",name:"Gemini",fileName:"GEMINI.md",color:"#4285f4"},opencode:{key:"opencode",name:"OpenCode",fileName:".opencode/AGENTS.md",color:"#ff6b35"},omp:{key:"omp",name:"OMP command templates",fileName:".omp/commands",color:"#0f9f9a"}},s=j(()=>{const e=a.template?.aiConfigs||{},l=Object.entries(e).filter(([,e])=>e?.enabled&&e?.content).map(([e,l])=>({...n[e],content:l.content})).filter(e=>e.key),t=a.template?.cliType;if("omp"===t&&a.template?.commands?.length)return[{...n.omp,content:a.template.commands.map(e=>`- ${e.namespace?`${e.namespace}/`:""}${e.name||e}`).join("\n")}];if(t&&"all"!==t){const l=e[t];if(l?.enabled&&l?.content&&n[t])return[{...n[t],content:l.content}]}return l}),r=j(()=>s.value.length>0),i=j(()=>{const e=a.template;return!!e&&(r.value||e.claudeMd?.content||e.skills?.length||e.agents?.length||e.commands?.length||e.mcpServers?.length)}),o={claude:{label:"Claude",color:"#cc785c",textColor:"#fff",borderColor:"#cc785c"},codex:{label:"Codex",color:"#10a37f",textColor:"#fff",borderColor:"#10a37f"},gemini:{label:"Gemini",color:"#4285f4",textColor:"#fff",borderColor:"#4285f4"},opencode:{label:"OpenCode",color:"#ff6b35",textColor:"#fff",borderColor:"#ff6b35"},omp:{label:"OMP",color:"#0f9f9a",textColor:"#fff",borderColor:"#0f9f9a"}};function d(e){const l=o[e];return l?{color:l.color,textColor:l.textColor,borderColor:l.borderColor}:{}}function u(){t("apply",a.template)}return(l,a)=>(B(),M(H(ue),{show:e.show,preset:"card",title:`模版预览: ${e.template?.name||""}`,style:{width:"750px","max-height":"80vh"},"mask-closable":!0,"onUpdate:show":a[1]||(a[1]=e=>t("update:show",e))},{footer:I(()=>[L(H(ye),{justify:"end"},{default:I(()=>[L(H(y),{onClick:a[0]||(a[0]=e=>t("update:show",!1))},{default:I(()=>[...a[7]||(a[7]=[z("关闭",-1)])]),_:1}),L(H(y),{type:"primary",onClick:u},{default:I(()=>[...a[8]||(a[8]=[z("应用此模版",-1)])]),_:1})]),_:1})]),default:I(()=>[e.template?(B(),W("div",jl,[X("div",El,[X("div",Il,[a[2]||(a[2]=X("span",{class:"label"},"名称:",-1)),X("span",Dl,N(e.template.name),1)]),e.template.description?(B(),W("div",Gl,[a[3]||(a[3]=X("span",{class:"label"},"描述:",-1)),X("span",ql,N(e.template.description),1)])):T("",!0),e.template.cliType?(B(),W("div",Hl,[a[4]||(a[4]=X("span",{class:"label"},"CLI 工具:",-1)),L(H(Ae),{size:"small",color:d(e.template.cliType),round:""},{default:I(()=>{return[z(N((l=e.template.cliType,o[l]?.label||l)),1)];var l}),_:1},8,["color"])])):T("",!0)]),X("div",Kl,[a[6]||(a[6]=X("div",{class:"section-title"},"包含配置",-1)),X("div",Wl,[r.value?(B(!0),W(D,{key:0},O(s.value,e=>(B(),W("div",{class:"stat-item",key:e.key},[L(H(f),{size:"20",color:e.color},{default:I(()=>[L(H(le))]),_:1},8,["color"]),X("span",null,N(e.fileName||e.name),1)]))),128)):e.template.claudeMd?.enabled?(B(),W("div",Xl,[L(H(f),{size:"20"},{default:I(()=>[L(H(le))]),_:1}),a[5]||(a[5]=X("span",null,"CLAUDE.md",-1))])):T("",!0),e.template.skills?.length?(B(),W("div",Yl,[L(H(f),{size:"20"},{default:I(()=>[L(H(J))]),_:1}),X("span",null,N(e.template.skills.length)+" Skills",1)])):T("",!0),e.template.agents?.length?(B(),W("div",Zl,[L(H(f),{size:"20"},{default:I(()=>[L(H(te))]),_:1}),X("span",null,N(e.template.agents.length)+" Agents",1)])):T("",!0),e.template.commands?.length?(B(),W("div",Jl,[L(H(f),{size:"20"},{default:I(()=>[L(H(ee))]),_:1}),X("span",null,N(e.template.commands.length)+" Commands",1)])):T("",!0),e.template.mcpServers?.length?(B(),W("div",Ql,[L(H(f),{size:"20"},{default:I(()=>[L(H(ae))]),_:1}),X("span",null,N(e.template.mcpServers.length)+" MCP Servers",1)])):T("",!0)])]),i.value?(B(),M(H(me),{key:0,class:"details-section"},{default:I(()=>[(B(!0),W(D,null,O(s.value,e=>(B(),M(H(pe),{key:e.key,title:`${e.name} 配置 (${e.fileName||e.name})`,name:e.key},{default:I(()=>[X("div",ea,[L(Tl,{content:e.content},null,8,["content"])])]),_:2},1032,["title","name"]))),128)),!r.value&&e.template.claudeMd?.content?(B(),M(H(pe),{key:0,title:"CLAUDE.md 内容",name:"claudeMd"},{default:I(()=>[X("div",la,[L(Tl,{content:e.template.claudeMd.content},null,8,["content"])])]),_:1})):T("",!0),e.template.skills?.length?(B(),M(H(pe),{key:1,title:"Skills 列表",name:"skills"},{default:I(()=>[X("div",aa,[(B(!0),W(D,null,O(e.template.skills,(e,l)=>(B(),W("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.agents?.length?(B(),M(H(pe),{key:2,title:"Agents 列表",name:"agents"},{default:I(()=>[X("div",ta,[(B(!0),W(D,null,O(e.template.agents,(e,l)=>(B(),W("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.commands?.length?(B(),M(H(pe),{key:3,title:"Commands 列表",name:"commands"},{default:I(()=>[X("div",na,["omp"===e.template.cliType?(B(),W("div",sa," 将写入 .omp/commands,作为 OMP commands 使用。 ")):T("",!0),(B(!0),W(D,null,O(e.template.commands,(e,l)=>(B(),W("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.mcpServers?.length?(B(),M(H(pe),{key:4,title:"MCP Servers",name:"mcpServers"},{default:I(()=>[X("div",ra,[(B(!0),W(D,null,O(e.template.mcpServers,(e,l)=>(B(),W("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0)]),_:1})):T("",!0)])):T("",!0)]),_:1},8,["show","title"]))}},[["__scopeId","data-v-27b692bd"]]),oa={key:0,class:"panel-header"},da={class:"header-left"},ua={class:"header-right"},ca={key:1,class:"drawer-header-bar"},ma={class:"header-right"},pa={class:"stats-bar"},va={class:"stats-text"},fa={class:"filter-bar"},ga={class:"panel-content"},ha={key:0,class:"empty-state"},ba={key:1,class:"card-list"},ya={class:"panel-footer"},Ca={__name:"ConfigTemplatesPanel",props:{inDrawer:{type:Boolean,default:!1},hideBack:{type:Boolean,default:!1},drawerVisible:{type:Boolean,default:!1}},emits:["back","updated"],setup(e){const l=e,a=ie(),t=de(),n=K(!1),s=K([]),r=K({}),i=K(""),o=K(""),d=j(()=>{const e=Array.isArray(r.value?.platforms)?r.value.platforms:[],l=s.value.map(e=>e.cliType).filter(Boolean).map(e=>({key:e,label:e})),a=new Set,t=[{label:"全部 CLI",value:""}];for(const n of[...e,...l]){const e=String(n?.key||"").trim().toLowerCase();e&&!a.has(e)&&(a.add(e),t.push({label:n.label||n.title||e,value:e}))}return t}),u=K(null),c=K(!1),m=K(!1),p=K(!1),v=K(null),g=K(null),h=K(null),b=j(()=>{let e=s.value;if(o.value&&(e=e.filter(e=>e.cliType===o.value)),i.value.trim()){const l=i.value.toLowerCase();e=e.filter(e=>e.name?.toLowerCase().includes(l)||e.description?.toLowerCase().includes(l))}return e});async function C(){n.value=!0;try{const[e,l]=await Promise.all([Ye(),Xe()]);e.success&&(s.value=e.data||[]),l.success&&(r.value=l.data||{})}catch(e){a.error("加载数据失败: "+e.message)}finally{n.value=!1}}function k(){v.value=null,c.value=!0}function x(e){v.value={...e},c.value=!0}function _(e){h.value=e,p.value=!0}function S(e){g.value=e,p.value=!1,m.value=!0}function w(e){t.warning({title:"确认删除",content:`确定要删除模版 "${e.name}" 吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{u.value=e.id;try{const l=await He(e.id);l.success?(a.success("删除成功"),C()):a.error(l.message||"删除失败")}catch(l){a.error("删除失败: "+l.message)}finally{u.value=null}}})}function P(){c.value=!1,C()}function R(){m.value=!1,C()}return F(()=>C()),V(()=>l.drawerVisible,e=>{e&&C()}),(l,a)=>(B(),W("div",{class:G(["templates-panel",{"in-drawer":e.inDrawer}])},[e.inDrawer?T("",!0):(B(),W("div",oa,[X("div",da,[e.hideBack?T("",!0):(B(),M(H(y),{key:0,text:"",onClick:a[0]||(a[0]=e=>l.$emit("back")),class:"back-btn"},{icon:I(()=>[L(H(f),null,{default:I(()=>[L(H(ne))]),_:1})]),_:1})),a[6]||(a[6]=X("span",{class:"panel-title"},"配置模版管理",-1))]),X("div",ua,[L(H(y),{text:"",onClick:k,class:"action-btn"},{icon:I(()=>[L(H(f),null,{default:I(()=>[L(H(Z))]),_:1})]),default:I(()=>[a[7]||(a[7]=z(" 创建 ",-1))]),_:1}),L(H(y),{text:"",onClick:C,loading:n.value,class:"action-btn"},{icon:I(()=>[L(H(f),null,{default:I(()=>[L(H(Y))]),_:1})]),default:I(()=>[a[8]||(a[8]=z(" 刷新 ",-1))]),_:1},8,["loading"])])])),e.inDrawer?(B(),W("div",ca,[X("div",ma,[L(H(y),{text:"",onClick:k,class:"action-btn"},{icon:I(()=>[L(H(f),null,{default:I(()=>[L(H(Z))]),_:1})]),default:I(()=>[a[9]||(a[9]=z(" 创建 ",-1))]),_:1}),L(H(y),{text:"",onClick:C,loading:n.value,class:"action-btn"},{icon:I(()=>[L(H(f),null,{default:I(()=>[L(H(Y))]),_:1})]),default:I(()=>[a[10]||(a[10]=z(" 刷新 ",-1))]),_:1},8,["loading"])])])):T("",!0),X("div",pa,[X("span",va," 共 "+N(s.value.length)+" 个模版 ",1)]),X("div",fa,[L(H(ze),{value:i.value,"onUpdate:value":a[1]||(a[1]=e=>i.value=e),placeholder:"搜索模版...",clearable:"",size:"small",class:"search-input"},{prefix:I(()=>[L(H(f),null,{default:I(()=>[L(H(Q))]),_:1})]),_:1},8,["value"]),L(H($e),{value:o.value,"onUpdate:value":a[2]||(a[2]=e=>o.value=e),options:d.value,size:"small",class:"filter-select"},null,8,["value","options"])]),X("div",ga,[L(H(be),{show:n.value},{default:I(()=>[0!==b.value.length||n.value?(B(),W("div",ba,[(B(!0),W(D,null,O(b.value,e=>(B(),M(Sl,{key:e.id,template:e,deleting:u.value===e.id,onClick:_,onPreview:_,onEdit:x,onDelete:w,onApply:S},null,8,["template","deleting"]))),128))])):(B(),W("div",ha,[L(H(Re),{description:"暂无配置模版"},{icon:I(()=>[L(H(f),{size:"48",color:"var(--text-quaternary)"},{default:I(()=>[L(H(se))]),_:1})]),extra:I(()=>[L(H(y),{size:"small",onClick:k},{default:I(()=>[...a[11]||(a[11]=[z("创建第一个模版",-1)])]),_:1})]),_:1})]))]),_:1},8,["show"])]),X("div",ya,[L(H(f),{size:"14",class:"info-icon"},{default:I(()=>[L(H(re))]),_:1}),a[12]||(a[12]=X("span",null,"配置模版可快速应用到工作区",-1))]),L(Ll,{show:c.value,"onUpdate:show":a[3]||(a[3]=e=>c.value=e),template:v.value,"available-configs":r.value,onSuccess:P},null,8,["show","template","available-configs"]),L(Nl,{show:m.value,"onUpdate:show":a[4]||(a[4]=e=>m.value=e),template:g.value,onSuccess:R},null,8,["show","template"]),L(ia,{show:p.value,"onUpdate:show":a[5]||(a[5]=e=>p.value=e),template:h.value,onApply:S},null,8,["show","template"])],2))}},ka=C(Ca,[["__scopeId","data-v-96aa6e1d"]]);export{ka as t};
@@ -1 +0,0 @@
1
- import{i as e,s,t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as i,D as l,K as t,O as o,S as n,W as c,_t as r,b as d,et as u,g as v,m,mt as p,p as h,st as f,w as _,x as y}from"./vue-vendor-BqZbbXHA.js";import{Et as g,ct as k,f as j,l as w,r as C}from"./icons-DmFe4b5j.js";import{l as x}from"./light-0eavxNvt.js";import{n as N,t as b}from"./useResponsiveDrawer-V_onl9NV.js";import{t as I}from"./DrawerContent-ChXgZ1Xm.js";import{K as z,N as $,P as A,_ as L,dt as S,gt as D,mt as F}from"./index-BKlAWTH-.js";import{t as K}from"./sessions-D4yQtfKb.js";import{t as U}from"./SessionCard-BL_x0d3t.js";import{t as R}from"./sessions-CC0j-KH_.js";var W={class:"favorites-container"},B={key:0,class:"favorites-section"},E={class:"section-header claude-header"},G={class:"sessions-list"},O={key:1,class:"favorites-section"},P={class:"section-header codex-header"},q={class:"sessions-list"},H={key:2,class:"favorites-section"},J={class:"section-header gemini-header"},M={class:"sessions-list"},Q=a({__name:"FavoritesDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","view-history"],setup(a,{emit:Q}){const{drawerWidth:T}=b(720),V=a,X=Q,Y=d({get:()=>V.visible,set:e=>X("update:visible",e)}),{getFavorites:Z,removeFavorite:ee,getAllFavorites:se}=L(),ae=R(),ie=d(()=>Z("claude")),le=d(()=>Z("codex")),te=d(()=>Z("gemini")),oe=f(!1),ne=f(null),ce=f(""),re=f("");function de(e){let s="claude";le.value.some(s=>s.sessionId===e.sessionId&&s.projectName===e.projectName)?s="codex":te.value.some(s=>s.sessionId===e.sessionId&&s.projectName===e.projectName)&&(s="gemini"),ne.value=e,ce.value=e.alias||"",re.value=s,oe.value=!0}async function ue(){if(ne.value)try{ae.setChannel(re.value);const e=ne.value.sessionId;if(ce.value){await ae.setAlias(e,ce.value),$.success("别名设置成功");const s=se()[re.value]?.find(s=>s.sessionId===e&&s.projectName===ne.value.projectName);s&&(s.alias=ce.value)}else{await ae.deleteAlias(e),$.success("别名已删除");const s=se()[re.value]?.find(s=>s.sessionId===e&&s.projectName===ne.value.projectName);s&&(s.alias="")}oe.value=!1,ne.value=null,ce.value=""}catch(e){$.error("操作失败: "+e.message)}}async function ve(e,s){try{const{copyResult:a}=await K(s.projectName,s.sessionId,e);if("manual"===a?.method)return void $.warning("自动复制失败,已弹出手动复制框");$.success("启动命令已复制到剪贴板")}catch(a){$.error("复制失败: "+a.message)}}async function me(e,s){try{await ee(e,s.projectName,s.sessionId),$.success("已移除收藏")}catch(a){$.error("移除失败: "+a.message)}}return(a,d)=>(c(),n(p(N),{show:Y.value,"onUpdate:show":d[3]||(d[3]=e=>Y.value=e),width:p(T),placement:"right"},{default:u(()=>[o(p(I),{title:"我的收藏",closable:""},{default:u(()=>[y("div",W,[ie.value.length>0?(c(),_("div",B,[y("div",E,[o(p(e),{size:20},{default:u(()=>[o(p(g))]),_:1}),d[4]||(d[4]=y("h3",{class:"section-title"},"Claude",-1)),o(p(F),{size:"small",bordered:!1,type:"success"},{default:u(()=>[l(r(ie.value.length),1)]),_:1})]),y("div",G,[(c(!0),_(v,null,t(ie.value,i=>(c(),n(U,{key:`claude-${i.projectName}-${i.sessionId}`,session:i,channel:"claude","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"claude"}),onSetAlias:de,onLaunch:e=>ve("claude",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("claude",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[5]||(d[5]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),le.value.length>0?(c(),_("div",O,[y("div",P,[o(p(e),{size:20},{default:u(()=>[o(p(k))]),_:1}),d[6]||(d[6]=y("h3",{class:"section-title"},"Codex",-1)),o(p(F),{size:"small",bordered:!1,type:"info"},{default:u(()=>[l(r(le.value.length),1)]),_:1})]),y("div",q,[(c(!0),_(v,null,t(le.value,i=>(c(),n(U,{key:`codex-${i.projectName}-${i.sessionId}`,session:i,channel:"codex","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"codex"}),onSetAlias:de,onLaunch:e=>ve("codex",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("codex",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[7]||(d[7]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),te.value.length>0?(c(),_("div",H,[y("div",J,[o(p(e),{size:20},{default:u(()=>[o(p(j))]),_:1}),d[8]||(d[8]=y("h3",{class:"section-title"},"Gemini",-1)),o(p(F),{size:"small",bordered:!1,type:"warning"},{default:u(()=>[l(r(te.value.length),1)]),_:1})]),y("div",M,[(c(!0),_(v,null,t(te.value,i=>(c(),n(U,{key:`gemini-${i.projectName}-${i.sessionId}`,session:i,channel:"gemini","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"gemini"}),onSetAlias:de,onLaunch:e=>ve("gemini",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("gemini",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[9]||(d[9]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),0===a.totalCount?(c(),n(p(D),{key:3,description:"暂无收藏",style:{"margin-top":"80px"}},{icon:u(()=>[o(p(e),{size:48},{default:u(()=>[o(p(w))]),_:1})]),extra:u(()=>[o(p(A),{depth:"3",style:{"font-size":"13px"}},{default:u(()=>[...d[10]||(d[10]=[l(' 在会话列表中点击"收藏"按钮添加收藏 ',-1)])]),_:1})]),_:1})):i("",!0)]),o(p(x),{show:oe.value,"onUpdate:show":d[2]||(d[2]=e=>oe.value=e),preset:"dialog",title:"设置别名"},{action:u(()=>[o(p(z),null,{default:u(()=>[o(p(s),{onClick:d[1]||(d[1]=e=>oe.value=!1)},{default:u(()=>[...d[11]||(d[11]=[l("取消",-1)])]),_:1}),o(p(s),{type:"primary",onClick:ue},{default:u(()=>[...d[12]||(d[12]=[l("确定",-1)])]),_:1})]),_:1})]),default:u(()=>[o(p(S),{value:ce.value,"onUpdate:value":d[0]||(d[0]=e=>ce.value=e),placeholder:"输入别名(留空删除)",onKeyup:h(ue,["enter"])},null,8,["value"])]),_:1},8,["show"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-56e896bc"]]);export{Q as default};
@@ -1 +0,0 @@
1
- import{i as e,s as a,t}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as l,K as o,O as n,S as r,W as u,Z as i,_t as c,b as p,et as d,g as v,mt as m,st as y,w as f,x as w}from"./vue-vendor-BqZbbXHA.js";import{n as g}from"./vendors-D0c_0KLP.js";import{U as h}from"./icons-DmFe4b5j.js";import{n as x,t as b}from"./useResponsiveDrawer-V_onl9NV.js";import{t as _}from"./DrawerContent-ChXgZ1Xm.js";import{B as C,K as A,N as k,V as O,dt as N,ft as S,mt as j,rt as J}from"./index-BKlAWTH-.js";var T="http://localhost:19999";async function z(e){return(await g.post(`${T}/api/convert/opencode/claude`,e)).data}async function R(e){return(await g.post(`${T}/api/convert/opencode/codex`,e)).data}async function B(e){return(await g.post(`${T}/api/convert/opencode/gemini`,e)).data}var U={class:"drawer-header"},q={class:"header-icon-wrapper"},I={class:"convert-container"},$={class:"action-row"},D={key:1,class:"result-section"},P={class:"result-meta"},Y={class:"meta-row"},E={class:"meta-row"},G={class:"meta-row"},K={class:"warning-list"},W={class:"action-row"},V=t({__name:"GatewayConvertDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(t,{emit:V}){const{drawerWidth:Z}=b(620,520),F=t,H=V,L=p({get:()=>F.visible,set:e=>H("update:visible",e)}),M=y([{label:"Claude Code",value:"claude"},{label:"Codex",value:"codex"},{label:"Gemini",value:"gemini"}]),Q=y([{label:"Responses API (/v1/responses)",value:"responses"},{label:"Chat Completions (/v1/chat/completions)",value:"chat.completions"}]),X=y("claude"),ee=y("responses"),ae=y(""),te=y(!1),se=y(null),le=y(""),oe=y(!1),ne={claude:{model:"claude-sonnet-4-5",system:[{type:"text",text:"You are a concise assistant."}],messages:[{role:"user",content:[{type:"text",text:"请用三点总结这个需求。"}]}],max_tokens:256,stream:!1},codex:{model:"gpt-5-codex",instructions:"You are Codex.",input:[{type:"message",role:"user",content:[{type:"input_text",text:"ping"}]}],stream:!1,store:!1},gemini:{model:"gemini-2.5-pro",system_instruction:{parts:[{text:"You are a concise assistant."}]},contents:[{role:"user",parts:[{text:"请将以下文本转换为要点列表。"}]}],generationConfig:{maxOutputTokens:256,temperature:.2}}},re=p(()=>se.value?.requestBody?JSON.stringify(se.value.requestBody,null,2):"");function ue(){const e=ne[X.value]||ne.claude;ae.value=JSON.stringify(e,null,2)}async function ie(){if(!oe.value)try{const e=await async function(){return(await g.get(`${T}/api/convert/opencode/formats`)).data}();Array.isArray(e.sourceTypes)&&e.sourceTypes.length>0&&(M.value=e.sourceTypes.map(e=>({label:e.name||e.id,value:e.id}))),Array.isArray(e.targetApis)&&e.targetApis.length>0&&(Q.value=e.targetApis.map(e=>"chat.completions"===e?{label:"Chat Completions (/v1/chat/completions)",value:e}:{label:"Responses API (/v1/responses)",value:e})),e.defaultTargetApi&&(ee.value=e.defaultTargetApi),oe.value=!0}catch(e){}}function ce(){le.value="",se.value=null}async function pe(){let e;le.value="",se.value=null;try{e=JSON.parse(ae.value||"{}")}catch(a){return void(le.value="原始请求 JSON 解析失败,请检查格式")}te.value=!0;try{const a={claude:z,codex:R,gemini:B}[X.value];if(!a)throw new Error(`Unsupported sourceType: ${X.value}`);const t=await a({payload:e,options:{targetApi:ee.value}});if(!1===t.success)throw new Error(t.error||"转换失败");se.value=t,k.success("转换完成")}catch(a){const e=a.response?.data?.error||a.message||"转换失败";le.value=e}finally{te.value=!1}}async function de(){if(!se.value)return;const e={endpoint:se.value.endpoint,requestBody:se.value.requestBody};try{await navigator.clipboard.writeText(JSON.stringify(e,null,2)),k.success("已复制转换结果")}catch(a){k.error("复制失败,请手动复制")}}return i(()=>X.value,()=>{ue()}),i(()=>F.visible,async e=>{e&&(await ie(),ae.value||ue())},{immediate:!0}),(t,i)=>(u(),r(m(x),{show:L.value,"onUpdate:show":i[3]||(i[3]=e=>L.value=e),width:m(Z),placement:"right","show-mask":!0},{default:d(()=>[n(m(_),{closable:"","native-scrollbar":!1},{header:d(()=>[w("div",U,[w("div",q,[n(m(e),{size:18},{default:d(()=>[n(m(h))]),_:1})]),i[4]||(i[4]=w("span",null,"OpenCode 请求转换",-1))])]),default:d(()=>[w("div",I,[n(m(O),{"label-placement":"top"},{default:d(()=>[n(m(C),{label:"来源渠道"},{default:d(()=>[n(m(J),{value:X.value,"onUpdate:value":i[0]||(i[0]=e=>X.value=e),options:M.value,placeholder:"选择来源渠道"},null,8,["value","options"])]),_:1}),n(m(C),{label:"目标 API"},{default:d(()=>[n(m(J),{value:ee.value,"onUpdate:value":i[1]||(i[1]=e=>ee.value=e),options:Q.value,placeholder:"选择目标 API"},null,8,["value","options"])]),_:1}),n(m(C),{label:"原始请求 JSON"},{default:d(()=>[n(m(N),{value:ae.value,"onUpdate:value":i[2]||(i[2]=e=>ae.value=e),type:"textarea",autosize:{minRows:10,maxRows:18},placeholder:"粘贴原始请求 JSON"},null,8,["value"])]),_:1})]),_:1}),w("div",$,[n(m(a),{quaternary:"",onClick:ue},{default:d(()=>[...i[5]||(i[5]=[l("填充示例",-1)])]),_:1}),n(m(A),null,{default:d(()=>[n(m(a),{onClick:ce},{default:d(()=>[...i[6]||(i[6]=[l("清空结果",-1)])]),_:1}),n(m(a),{type:"primary",loading:te.value,onClick:pe},{default:d(()=>[...i[7]||(i[7]=[l("开始转换",-1)])]),_:1},8,["loading"])]),_:1})]),le.value?(u(),r(m(S),{key:0,type:"error","show-icon":!0,style:{"margin-top":"12px"}},{default:d(()=>[l(c(le.value),1)]),_:1})):s("",!0),se.value?(u(),f("div",D,[w("div",P,[w("div",Y,[i[8]||(i[8]=w("span",{class:"meta-label"},"转换端点",-1)),n(m(j),{type:"success",size:"small",bordered:!1},{default:d(()=>[l(c(se.value.endpoint),1)]),_:1})]),w("div",E,[i[9]||(i[9]=w("span",{class:"meta-label"},"目标协议",-1)),n(m(j),{type:"info",size:"small",bordered:!1},{default:d(()=>[l(c(se.value.targetApi),1)]),_:1})]),w("div",G,[i[10]||(i[10]=w("span",{class:"meta-label"},"消息数量",-1)),n(m(j),{size:"small",bordered:!1},{default:d(()=>[l(c(se.value.meta?.messageCount??0),1)]),_:1})])]),Array.isArray(se.value.warnings)&&se.value.warnings.length>0?(u(),r(m(S),{key:0,type:"warning","show-icon":!0,style:{"margin-top":"12px"}},{default:d(()=>[i[11]||(i[11]=w("div",{class:"warning-title"},"转换警告",-1)),w("ul",K,[(u(!0),f(v,null,o(se.value.warnings,(e,a)=>(u(),f("li",{key:a},c(e),1))),128))])]),_:1})):s("",!0),n(m(C),{label:"转换后请求 JSON",style:{"margin-top":"12px"}},{default:d(()=>[n(m(N),{value:re.value,type:"textarea",readonly:"",autosize:{minRows:10,maxRows:18}},null,8,["value"])]),_:1}),w("div",W,[i[13]||(i[13]=w("div",null,null,-1)),n(m(a),{size:"small",onClick:de},{default:d(()=>[...i[12]||(i[12]=[l("复制转换结果",-1)])]),_:1})])])):s("",!0)])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-27295eec"]]);export{V as default};
@@ -1 +0,0 @@
1
- import{i as e,s as a,t as l}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as n,H as t,I as c,J as o,K as i,O as r,S as u,V as d,W as v,Y as p,Z as h,_t as y,b as g,et as m,g as f,gt as k,ht as T,i as b,m as w,mt as $,st as _,w as x,x as C}from"./vue-vendor-BqZbbXHA.js";import{t as z}from"./vendors-D0c_0KLP.js";import{a as S,c as j,t as q,u as L}from"./platforms-DWXgmy2w.js";import{E as M,K as E,L as I,R as D,St as F,X as O,a as P,b as N,bt as A,k as J,kt as U,n as V,pt as K,r as R,w as H,y as W}from"./icons-DmFe4b5j.js";import{t as X,u as Y}from"./use-message-DqCwefG6.js";import{$ as Z,D as B,F as G,P as Q,g as ee,jt as ae,mt as le,v as se}from"./index-BKlAWTH-.js";import{t as ne}from"./RecentSessionsDrawer-B_17aJBG.js";var te={class:"channel-column"},ce={class:"drag-handle",title:"拖拽排序"},oe={class:"header-icon"},ie={class:"channel-title"},re={key:0,class:"claude-extra-area"},ue={key:0,class:"channel-content"},de={key:0,class:"card"},ve={class:"card-header"},pe={class:"card-title"},he={key:0,class:"runtime-badge"},ye={class:"card-body",style:{padding:"6px 10px"}},ge={class:"proxy-info-row"},me={class:"proxy-status"},fe={key:0,class:"proxy-port"},ke={class:"channel-name"},Te={class:"channel-quick-panel"},be={class:"panel-title"},we={key:0,class:"no-channels"},$e={key:1,class:"channel-quick-list"},_e={class:"channel-quick-info"},xe={class:"channel-quick-name"},Ce={key:0,class:"channel-switching-tip"},ze={class:"channel-metrics"},Se={class:"metric-item"},je={class:"metric-value"},qe={class:"metric-item"},Le={class:"metric-value"},Me={class:"metric-item"},Ee={class:"metric-value"},Ie={class:"metric-item"},De={class:"card"},Fe={class:"card-header compact"},Oe={class:"card-body",style:{padding:"8px 10px"}},Pe={class:"quick-access-list"},Ne={class:"access-icon"},Ae={class:"access-content"},Je={class:"access-value"},Ue={class:"access-icon"},Ve={class:"access-content"},Ke={class:"access-value"},Re={class:"access-icon"},He={class:"access-content"},We={class:"access-goto"},Xe={class:"card-header compact"},Ye={class:"card-body",style:{padding:"8px 10px"}},Ze={class:"stats-inline stats-3col"},Be={class:"stat-inline-item stat-requests"},Ge={class:"stat-info"},Qe={class:"stat-inline-item stat-input"},ea={class:"stat-info"},aa={class:"stat-inline-item stat-output"},la={class:"stat-info"},sa={key:3,class:"card logs-card"},na={class:"card-header compact"},ta={class:"card-body logs-card-body"},ca={class:"logs-table-wrapper"},oa={key:0,class:"empty-logs"},ia=["title"],ra={key:0,class:"action-content"},ua={class:"action-msg"},da={class:"action-time"},va={key:1,class:"action-content"},pa={class:"action-msg error-msg"},ha={class:"action-time error-time"},ya={class:"locked-content"},ga={class:"lock-icon"},ma="channelLocks",fa=l({__name:"ChannelColumn",props:{channelType:{type:String,required:!0}},setup(l){const z=l,S=b(),ae=q(),fa=X(),{getProxyState:ka,getChannels:Ta,getSchedulerState:ba,startProxy:wa,stopProxy:$a,getLogs:_a,clearLogsForSource:xa,loadChannels:Ca,logLimit:za,statsInterval:Sa}=se(),{dashboardData:ja,isLoading:qa,loadDashboard:La,scheduleRefresh:Ma}=ee(),Ea=g(()=>ae.get(z.channelType)||{key:z.channelType,label:z.channelType,title:z.channelType,icon:P,color:"#64748b",capabilities:{},resourceTypes:{}}),Ia=g(()=>Ea.value.title||Ea.value.label||z.channelType),Da=g(()=>Ea.value.icon||P),Fa=g(()=>Ea.value.color||"#64748b"),Oa=g(()=>Ea.value.label||Ea.value.title||z.channelType),Pa=g(()=>ka(z.channelType)?.value||{}),Na=_({projects:0,sessions:0}),Aa=_({requests:0,tokens:0,cost:0}),Ja=_({requests:0,tokens:0,cost:0}),Ua={requests:0,tokens:0,cost:3},Va={requests:null,tokens:null,cost:null},Ka=_({requests:!1,tokens:!1,cost:!1}),Ra=g(()=>ja.value?.todayStats?.[z.channelType]?.byModel||{});function Ha(e,a,l,s=600){Va[e]&&cancelAnimationFrame(Va[e]),Ka.value[e]=!0;const n=Date.now(),t=()=>{const c=Date.now()-n,o=Math.min(c/s,1),i=1-Math.pow(1-o,2),r=a+(l-a)*i,u=Ua[e]??0,d=Math.pow(10,u),v=u>0?Math.round(r*d)/d:Math.round(r);Ja.value[e]=v,o<1?Va[e]=requestAnimationFrame(t):Ka.value[e]=!1};Va[e]=requestAnimationFrame(t)}const Wa=_(!1);function Xa(e){try{const a=localStorage.getItem(ma),l=a?JSON.parse(a):{};l[z.channelType]=e,localStorage.setItem(ma,JSON.stringify(l))}catch(a){}}const Ya=_(function(){try{const e=localStorage.getItem(ma);if(e)return JSON.parse(e)[z.channelType]||!1}catch(e){}return!1}());async function Za(){Ya.value=!Ya.value,Xa(Ya.value);try{if(await L("channelLocks",z.channelType,Ya.value),ja.value){const e=ja.value.uiConfig||{},a={...e.channelLocks||{}};a[z.channelType]=Ya.value,ja.value={...ja.value,uiConfig:{...e,channelLocks:a}}}}catch(e){}}const Ba=_(!0);function Ga(e){e.detail&&void 0!==e.detail.showLogs&&(Ba.value=e.detail.showLogs)}const Qa=_(Date.now()),el=g(()=>{if(!Pa.value.running)return"";const e=Pa.value.startTime;if(!e)return"";const a=Qa.value-e;if(a<=0)return"";const l=Math.floor(a/1e3),s=Math.floor(l/3600),n=Math.floor(l%3600/60),t=l%60;let c="已运行 ";return s>0&&(c+=`${s}小时`),n>0&&(c+=`${n}分`),(t>0||0===s&&0===n)&&(c+=`${t}秒`),c}),al=_(null),ll=g(()=>za.value),sl=g(()=>fl()?(_a(z.channelType)?.value||[]).slice(0,ll.value):[]);let nl=null,tl=null,cl=null,ol=!1,il=null;const rl=g(()=>{const e=Ta(z.channelType)?.value||[];return[...e.filter(e=>!1!==e.enabled),...e.filter(e=>!1===e.enabled)]});function ul(e){const a=ba(z.channelType);if(!a?.channels)return 0;const l=a.channels.find(a=>a.id===e);return l?l.inflight:0}const dl=g(()=>{const e=rl.value.filter(e=>!1!==e.enabled).length;return Pa.value.running?`${e}个渠道动态切换中`:rl.value.length>0?`${e}个渠道已启用`:"无渠道"}),vl=g(()=>ja.value?.todayStats?.[z.channelType]?.byChannel||{});function pl(e){return vl.value[e]||{requests:0,tokens:0,cost:0}}function hl(e,a){return e?.usageMissing?"--":e?.tokens?.[a]||0}function yl(e){return ae.hasCapability(z.channelType,e)}function gl(e){return yl(e)||!0===Ea.value.resourceTypes?.[e]}const ml=g(()=>["skills","commands","agents","plugins"].some(gl));function fl(){return yl("nativeLogs")}function kl(e){if(!e||"action"===e.type||"error"===e.status)return"";const a=[];return e.model&&a.push(`模型: ${e.model}`),e.originalModel&&e.originalModel!==e.model&&a.push(`重定向: ${e.originalModel} -> ${e.model}`),e.usageMissing&&a.push("上游响应未返回 usage,当前无法计算 token。"),a.join("\n")}async function Tl(e){if(!yl("proxy"))return void fa.warning(`${Ia.value} 暂未接入动态代理`);const a=ka(z.channelType);if(a){a.value.loading=!0;try{let l;l=e?await wa(z.channelType):await $a(z.channelType,{refreshChannelsDrawer:!0}),!1!==l.success?"omp"===z.channelType?fa.success(e?"OMP 动态切换已启用":"OMP 已切换为单渠道直连模式"):fa.success(e?`${Ia.value} 代理已启动`:`${Ia.value} 代理已停止`):(fa.error(l.error||"操作失败"),a.value.running=!e)}catch(l){fa.error(l.response?.data?.error||l.message||"操作失败"),a.value.running=!e}finally{a.value.loading=!1}}}function bl(){yl("projects")?S.push({name:"cli-projects",params:{platform:z.channelType}}):fa.info(`${Ia.value} 当前仅作为首页显示项`)}function wl(){yl("projects")?S.push({name:"cli-projects",params:{platform:z.channelType}}):fa.info(`${Ia.value} 当前仅作为首页显示项`)}function $l(){yl("sessions")?Wa.value=!0:fa.info(`${Ia.value} 当前没有托管会话列表`)}h(sl,e=>{const a=e[0]?.id||null;a&&a!==nl?(nl=a,il&&clearTimeout(il),il=setTimeout(()=>{Ma({fresh:!0}).then(()=>jl()).catch(()=>{})},5e3),(!al.value||al.value.scrollTop<20)&&c(()=>{al.value&&(al.value.scrollTop=0)})):nl=a}),h(()=>Aa.value.requests,e=>{Ha("requests",Ja.value.requests,e,600)}),h(()=>Aa.value.tokens,e=>{Ha("tokens",Ja.value.tokens,e,600)}),h(()=>Aa.value.cost,e=>{Ha("cost",Ja.value.cost,e,600)}),h(()=>z.channelType,()=>{nl=sl.value[0]?.id||null}),h(()=>ja.value?.counts?.[z.channelType],()=>{Sl()}),h(()=>ja.value?.todayStats?.[z.channelType],()=>{jl()},{deep:!0}),h(Sa,()=>{ol&&function(){tl&&(clearInterval(tl),tl=null);const e=Sa.value||30,a=Math.max(1e3*e,1e4);tl=setInterval(()=>{Ma({fresh:!0}).then(()=>jl()).catch(()=>{})},a)}()});const _l=_({});function xl(e){return!!_l.value[e]}function Cl(e,a){e&&(_l.value={..._l.value,[e]:!!a})}async function zl(e,a){if(!e)return;const l=`${z.channelType}ChannelCollapse`;let s={};try{const e=l?localStorage.getItem(l):null;s=e?JSON.parse(e):{}}catch(n){s={}}a?delete s[e]:s[e]=!0;try{l&&localStorage.setItem(l,JSON.stringify(s))}catch(n){}try{await L("channelCollapse",z.channelType,s)}catch(n){}}function Sl(){const e=ja.value?.counts?.[z.channelType];Na.value.projects=e?.projectCount||0,Na.value.sessions=e?.sessionCount||0}async function jl(){if(ja.value&&ja.value.todayStats){const e=ja.value.todayStats[z.channelType];e&&(Aa.value.requests=e.requests||0,Aa.value.tokens=e.tokens||0,Aa.value.cost=e.cost||0)}Sl()}function ql(){xa(z.channelType)}function Ll(e){e?.currentTarget?.blur?.()}function Ml(e){window.dispatchEvent(new CustomEvent("open-skills-drawer",{detail:{platform:z.channelType}})),Ll(e)}function El(e){window.dispatchEvent(new CustomEvent("open-commands-drawer",{detail:{platform:z.channelType}})),Ll(e)}function Il(e){if(!gl("agents"))return fa.info(`${Ia.value} 的 Agent 能力通过插件/扩展提供`),void Ll(e);window.dispatchEvent(new CustomEvent("open-agents-drawer",{detail:{platform:z.channelType}})),Ll(e)}return d(async()=>{await La().then(()=>jl()),async function(){try{if(ja.value&&ja.value.uiConfig)Ba.value=!1!==ja.value.uiConfig.panelVisibility?.showLogs;else{const e=await j();e.success&&e.config&&(Ba.value=!1!==e.config.panelVisibility?.showLogs)}}catch(e){}}(),async function(){try{let e=!1;if(ja.value&&ja.value.uiConfig)e=ja.value.uiConfig.channelLocks?.[z.channelType]||!1;else{const a=await j();a.success&&a.config&&(e=a.config.channelLocks?.[z.channelType]||!1)}Ya.value=e,Xa(e)}catch(e){}}(),window.addEventListener("panel-visibility-change",Ga),Ja.value={...Aa.value},ol=!0,cl=setInterval(()=>{Qa.value=Date.now()},1e3)}),t(()=>{ol=!1,tl&&clearInterval(tl),cl&&clearInterval(cl),il&&clearTimeout(il),window.removeEventListener("panel-visibility-change",Ga),Object.values(Va).forEach(e=>{e&&cancelAnimationFrame(e)})}),(t,c)=>{const d=o("n-collapse");return v(),x("div",te,[C("div",{class:T(["channel-header",l.channelType]),style:k({"--platform-color":Fa.value})},[C("div",ce,[r($(e),{size:16},{default:m(()=>[r($(N))]),_:1})]),C("div",oe,[r($(e),{size:20},{default:m(()=>[(v(),u(p(Da.value)))]),_:1})]),C("h2",ie,y(Ia.value),1),ml.value?(v(),x("div",re,[gl("skills")?(v(),u($(Z),{key:0,trigger:"hover"},{trigger:m(()=>[r($(a),{text:"",class:"config-shortcut-button",onClick:Ml,title:"Skills 技能管理"},{icon:m(()=>[r($(e),{size:18},{default:m(()=>[r($(O))]),_:1})]),_:1})]),default:m(()=>[c[2]||(c[2]=n(" Skills 技能管理 ",-1))]),_:1})):s("",!0),gl("commands")?(v(),u($(Z),{key:1,trigger:"hover"},{trigger:m(()=>[r($(a),{text:"",class:"config-shortcut-button",onClick:El,title:"Commands 命令管理"},{icon:m(()=>[r($(e),{size:18},{default:m(()=>[r($(P))]),_:1})]),_:1})]),default:m(()=>[c[3]||(c[3]=n(" Commands 命令管理 ",-1))]),_:1})):s("",!0),gl("agents")?(v(),u($(Z),{key:2,trigger:"hover"},{trigger:m(()=>[r($(a),{text:"",class:"config-shortcut-button",onClick:Il,title:"Agents 代理管理"},{icon:m(()=>[r($(e),{size:18},{default:m(()=>[r($(J))]),_:1})]),_:1})]),default:m(()=>[c[4]||(c[4]=n(" Agents 代理管理 ",-1))]),_:1})):s("",!0)])):s("",!0),r($(a),{text:"",class:"lock-button",onClick:Za,title:Ya.value?"解锁此列":"锁定此列"},{icon:m(()=>[r($(e),{size:18},{default:m(()=>[Ya.value?(v(),u($(D),{key:0})):(v(),u($(I),{key:1}))]),_:1})]),_:1},8,["title"])],6),Ya.value?s("",!0):(v(),x("div",ue,[yl("proxy")?(v(),x("div",de,[C("div",ve,[r($(e),{size:16},{default:m(()=>[r($(M))]),_:1}),C("h3",pe,y("omp"===l.channelType?"动态切换":"代理控制"),1),Pa.value.running&&el.value?(v(),x("span",he,y(el.value),1)):s("",!0),r($(G),{value:Pa.value.running,"onUpdate:value":[c[0]||(c[0]=e=>Pa.value.running=e),Tl],loading:Pa.value.loading,size:"small",style:{"margin-left":"auto"}},null,8,["value","loading"])]),C("div",ye,[C("div",ge,[C("div",me,[C("div",{class:T(["status-dot",{active:Pa.value.running}])},null,2),r($(Q),{type:Pa.value.running?"success":"default",style:{"font-size":"12px"}},{default:m(()=>[n(y(Pa.value.running?"运行中":"已停止"),1)]),_:1},8,["type"]),"omp"!==l.channelType?(v(),x("span",fe,"端口: "+y(Pa.value.port),1)):s("",!0)]),yl("channels")?(v(),u($(Y),{key:0,trigger:"click",placement:"bottom",width:320,class:"channel-popover"},{trigger:m(()=>[r($(a),{text:"",size:"tiny",class:"channel-status"},{default:m(()=>[C("span",ke,y(dl.value),1)]),_:1})]),default:m(()=>[C("div",Te,[C("div",be,[c[6]||(c[6]=C("span",null,"渠道快捷管理",-1)),r($(Q),{depth:"3",style:{"font-size":"11px"}},{default:m(()=>[...c[5]||(c[5]=[n("点击开关切换状态",-1)])]),_:1})]),0===rl.value.length?(v(),x("div",we,[r($(Q),{depth:"3"},{default:m(()=>[...c[7]||(c[7]=[n("暂无配置渠道",-1)])]),_:1})])):(v(),x("div",$e,[(v(!0),x(f,null,i(rl.value,e=>{return v(),x("div",{key:e.id,class:T(["channel-quick-item",{disabled:!1===e.enabled}])},[C("div",_e,[C("span",xe,y(e.name),1),"frozen"===e.health?.status?(v(),u($(le),{key:0,size:"tiny",type:"error",bordered:!1},{default:m(()=>[...c[8]||(c[8]=[n(" 冻结 ",-1)])]),_:1})):s("",!0),r($(G),{size:"small",value:!1!==e.enabled,"onUpdate:value":a=>async function(e,a){if(e&&!xl(e.id)){Cl(e.id,!0);try{await B(z.channelType,e.id,{enabled:a}),await zl(e.id,a),fa.success(a?`渠道「${e.name}」已启用`:`渠道「${e.name}」已停用`),await Ca({force:!0,keys:[z.channelType]}),window.dispatchEvent(new CustomEvent("channel-management-refresh",{detail:{channel:z.channelType}}))}catch(l){fa.error("操作失败: "+l.message)}finally{Cl(e.id,!1)}}}(e,a),loading:xl(e.id),disabled:xl(e.id),style:{"margin-left":"auto"}},null,8,["value","onUpdate:value","loading","disabled"])]),xl(e.id)?(v(),x("div",Ce," 正在切换渠道状态... ")):s("",!0),C("div",ze,[C("span",Se,[c[9]||(c[9]=C("span",{class:"metric-label"},"请求",-1)),C("span",je,y(pl(e.id).requests),1)]),C("span",qe,[c[10]||(c[10]=C("span",{class:"metric-label"},"Tokens",-1)),C("span",Le,y((a=pl(e.id).tokens,a>=1e6?(a/1e6).toFixed(1)+"M":a>=1e3?(a/1e3).toFixed(1)+"K":a.toString())),1)]),C("span",Me,[c[11]||(c[11]=C("span",{class:"metric-label"},"权重",-1)),C("span",Ee,y(e.weight||1),1)]),C("span",Ie,[c[12]||(c[12]=C("span",{class:"metric-label"},"并发",-1)),C("span",{class:T(["metric-value",{active:ul(e.id)>0}])},y(ul(e.id))+y(e.maxConcurrency?`/${e.maxConcurrency}`:""),3)])])],2);var a}),128))]))])]),_:1})):s("",!0)])])])):s("",!0),C("div",De,[C("div",Fe,[r($(e),{size:14},{default:m(()=>[r($(W))]),_:1}),c[13]||(c[13]=C("h3",{class:"card-title"},"快速访问",-1))]),C("div",Oe,[C("div",Pe,[C("div",{class:T(["access-card access-card-projects",{clickable:yl("projects"),disabled:!yl("projects")}]),onClick:bl},[C("div",Ne,[r($(e),{size:16},{default:m(()=>[r($(E))]),_:1})]),C("div",Ae,[c[14]||(c[14]=C("span",{class:"access-label"},"项目",-1)),C("span",Je,y(Na.value.projects),1)])],2),C("div",{class:T(["access-card access-card-sessions",{clickable:yl("sessions"),disabled:!yl("sessions")}]),onClick:$l},[C("div",Ue,[r($(e),{size:16},{default:m(()=>[r($(F))]),_:1})]),C("div",Ve,[c[15]||(c[15]=C("span",{class:"access-label"},"最新对话",-1)),C("span",Ke,y(Na.value.sessions),1)])],2),C("div",{class:T(["access-card access-card-goto",{clickable:yl("projects"),disabled:!yl("projects")}]),onClick:wl},[C("div",Re,[r($(e),{size:16},{default:m(()=>[r($(U))]),_:1})]),C("div",He,[c[16]||(c[16]=C("span",{class:"access-label"},"前往",-1)),C("span",We,y(Oa.value),1)])],2)])])]),yl("statistics")?(v(),x("div",{key:1,class:T(["card stats-card",`stats-card-${l.channelType}`])},[C("div",Xe,[r($(e),{size:14},{default:m(()=>[r($(V))]),_:1}),c[17]||(c[17]=C("h3",{class:"card-title"},"今日数据",-1))]),C("div",Ye,[C("div",Ze,[C("div",Be,[c[19]||(c[19]=C("div",{class:"stat-icon-dot requests"},null,-1)),C("div",Ge,[c[18]||(c[18]=C("span",{class:"stat-label"},"请求",-1)),C("span",{class:T(["stat-value",{animating:Ka.value.requests}])},y(Ja.value.requests),3)])]),C("div",Qe,[c[21]||(c[21]=C("div",{class:"stat-icon-dot tokens"},null,-1)),C("div",ea,[c[20]||(c[20]=C("span",{class:"stat-label"},"总 Tokens",-1)),C("span",{class:T(["stat-value",{animating:Ka.value.tokens}])},y((g=Ja.value.tokens,g>=1e6?(g/1e6).toFixed(1)+"M":g>=1e3?(g/1e3).toFixed(1)+"K":g.toString())),3)])]),C("div",aa,[c[23]||(c[23]=C("div",{class:"stat-icon-dot cost"},null,-1)),C("div",la,[c[22]||(c[22]=C("span",{class:"stat-label"},"成本 / USD",-1)),C("span",{class:T(["stat-value",{animating:Ka.value.cost}])},y((h=Ja.value.cost,!h||Number.isNaN(h)?"$0":"$"+Number(h).toFixed(3))),3)])])])])],2)):s("",!0),yl("statistics")&&Object.keys(Ra.value).length>0?(v(),x("div",{key:2,class:T(["card chart-card",`chart-card-${l.channelType}`])},[r(d,{"default-expanded-names":[],accordion:""})],2)):s("",!0),Ba.value&&fl()?(v(),x("div",sa,[C("div",na,[r($(e),{size:14},{default:m(()=>[r($(H))]),_:1}),c[24]||(c[24]=C("h3",{class:"card-title"},"实时日志",-1)),r($(a),{text:"",size:"tiny",onClick:w(ql,["stop"]),style:{"margin-left":"auto"},title:"清空日志"},{icon:m(()=>[r($(e),{size:14},{default:m(()=>[r($(R))]),_:1})]),_:1})]),C("div",ta,[C("div",ca,[C("div",{class:T(["logs-table-header",`logs-header-${l.channelType}`])},[C("div",{class:T(["log-col col-channel",`col-channel-${l.channelType}`])},"渠道",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"请求",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"回复",2),"claude"===l.channelType?(v(),x(f,{key:0},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"写入",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"命中",2)],64)):"codex"===l.channelType?(v(),x(f,{key:1},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"推理",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"缓存",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"总计",2)],64)):"gemini"===l.channelType?(v(),x(f,{key:2},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"缓存",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"总计",2)],64)):"opencode"===l.channelType||"omp"===l.channelType?(v(),x(f,{key:3},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"推理",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"缓存",2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},"总计",2)],64)):(v(),x("div",{key:4,class:T(["log-col col-token",`col-token-${l.channelType}`])},"总计",2)),C("div",{class:T(["log-col col-time",`col-time-${l.channelType}`])},"时间",2)],2),C("div",{class:"logs-container",ref_key:"logsContainer",ref:al},[0===sl.value.length?(v(),x("div",oa,[r($(e),{size:32,depth:"3",style:{"margin-bottom":"8px"}},{default:m(()=>[r($(H))]),_:1}),r($(Q),{depth:"3",style:{"font-size":"12px","font-weight":"500"}},{default:m(()=>[...c[25]||(c[25]=[n("暂无实时日志",-1)])]),_:1}),r($(Q),{depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:m(()=>[n(y("omp"===l.channelType?"ctx 将持续读取 OMP 原生会话日志":"开启代理后将显示请求记录"),1)]),_:1})])):s("",!0),(v(!0),x(f,null,i(sl.value,a=>(v(),x("div",{key:a.id,class:T(["log-row",{"action-row":"action"===a.type,"error-row":"error"===a.status,"new-log":a.isNew}]),title:kl(a)},["action"===a.type?(v(),x("div",ra,[r($(e),{size:12,color:"#18a058"},{default:m(()=>[r($(A))]),_:1}),C("span",ua,y(a.message),1),C("span",da,y(a.time),1)])):"error"===a.status?(v(),x("div",va,[r($(e),{size:12,color:"#d03050"},{default:m(()=>[r($(K))]),_:1}),C("span",pa,y(a.channel)+": "+y(a.error||a.message||"请求失败"),1),C("span",ha,y(a.time),1)])):(v(),x(f,{key:2},[C("div",{class:T(["log-col col-channel",`col-channel-${l.channelType}`])},[r($(le),{size:"tiny",type:"success"},{default:m(()=>[n(y(a.channel),1)]),_:2},1024)],2),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"input")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"output")),3),"claude"===l.channelType?(v(),x(f,{key:0},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"cacheCreation")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"cacheRead")),3)],64)):"codex"===l.channelType?(v(),x(f,{key:1},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"reasoning")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"cached")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"total")),3)],64)):"gemini"===l.channelType?(v(),x(f,{key:2},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"cached")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"total")),3)],64)):"opencode"===l.channelType||"omp"===l.channelType?(v(),x(f,{key:3},[C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"reasoning")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"cached")),3),C("div",{class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"total")),3)],64)):(v(),x("div",{key:4,class:T(["log-col col-token",`col-token-${l.channelType}`])},y(hl(a,"total")),3)),C("div",{class:T(["log-col col-time",`col-time-${l.channelType}`])},y(a.time),3)],64))],10,ia))),128))],512)])])])):s("",!0)])),Ya.value?(v(),x("div",{key:1,class:T(["locked-overlay",`locked-${l.channelType}`])},[C("div",ya,[C("div",ga,[r($(e),{size:48},{default:m(()=>[r($(D))]),_:1})]),c[27]||(c[27]=C("h3",{class:"locked-title"},"该渠道已锁定",-1)),r($(Q),{depth:"3",class:"locked-hint"},{default:m(()=>[...c[26]||(c[26]=[n(" 点击上方按钮解锁以查看内容 ",-1)])]),_:1})])],2)):s("",!0),yl("sessions")?(v(),u(ne,{key:2,visible:Wa.value,"onUpdate:visible":c[1]||(c[1]=e=>Wa.value=e),channel:l.channelType},null,8,["visible","channel"])):s("",!0)]);var h,g}}},[["__scopeId","data-v-a1598dde"]]),ka={class:"dashboard-container"},Ta=l({__name:"Home",setup(e){const{uiConfig:a,updateConfig:l,loadUIConfig:s}=S(),n=q(),{enabledKeys:c}=ae({platformStore:n,configRef:a}),o=_([]);function i(e=c.value){o.value=e.map(e=>({type:e}))}async function p(){const e=o.value.map(e=>e.type);i(e),await l("enabledCliPlatforms",e)}function h(e){const l=e?.detail?.enabledCliPlatforms;Array.isArray(l)&&(a.value={...a.value,enabledCliPlatforms:[...l]}),i()}return d(async()=>{window.addEventListener("enabled-cli-platforms-change",h),await Promise.all([s(),n.load()]),i()}),t(()=>{window.removeEventListener("enabled-cli-platforms-change",h)}),(e,a)=>(v(),x("div",ka,[r($(z),{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=e=>o.value=e),class:"dashboard-grid","item-key":"type",animation:200,handle:".drag-handle",onEnd:p},{item:m(({element:e})=>[(v(),u(fa,{"channel-type":e.type,key:e.type},null,8,["channel-type"]))]),_:1},8,["modelValue"])]))}},[["__scopeId","data-v-5858e14d"]]);export{Ta as default};
@@ -1 +0,0 @@
1
- import{i as e,s as a,t}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as l,J as r,K as n,O as i,S as o,W as u,Z as c,_t as d,at as v,b as p,et as f,g as m,ht as y,m as h,mt as g,st as k,w as b,x as w}from"./vue-vendor-BqZbbXHA.js";import{s as _}from"./client-UDwXBP9i.js";import{$ as C,D as j,X as x,ct as $,et as D,it as S,o as O,r as z,rt as M,x as U}from"./icons-DmFe4b5j.js";import{l as P}from"./light-0eavxNvt.js";import{a as N,c as J,i as A,l as R,n as q,o as L,r as T,s as B,t as E}from"./McpFormDrawer-DEP3C7ut.js";import{n as W,t as F}from"./useResponsiveDrawer-V_onl9NV.js";import{t as I}from"./DrawerContent-ChXgZ1Xm.js";import{$ as K,F as Q,I as X,M as Z,N as G,Q as H,dt as V,jt as Y,mt as ee,st as ae}from"./index-BKlAWTH-.js";import{t as te}from"./clipboard-B46yyoz_.js";function se(e,a,t="操作失败",s=""){const l=function(e,a="操作失败"){return String(function(e){return e?"string"==typeof e?e:e.message||e.error||e.result?.message||e.result?.error||e.response?.data?.message||e.response?.data?.error||e.response?.data?.result?.message||e.response?.data?.result?.error||e.data?.message||e.data?.error||"":""}(e)||"").trim()||a}(a,t),r=function(e){return e?.hint||e?.data?.hint||e?.result?.hint||e?.result?.data?.hint||e?.response?.data?.hint||e?.response?.data?.result?.hint||e?.response?.data?.result?.data?.hint||null}(a),n=l.split(/\r?\n/).map(e=>e.trim()).filter(Boolean),i=[r?.title,...Array.isArray(r?.details)?r.details:[]].map(e=>String(e||"").trim()).filter(Boolean).filter(e=>!n.includes(e)),o=[...n,...i],u=o[0]||t,c=o.slice(1),d=s?`${s}${u}`:u;return e.error(d,{duration:c.length>0?8e3:5e3}),c.length>0&&e.warning(c.join("\n"),{duration:12e3,closable:!0}),l}var le={class:"drawer-header"},re={class:"header-title"},ne={class:"header-actions"},ie={class:"mcp-container"},oe={class:"stats-bar"},ue={class:"stats-text"},ce={class:"server-list"},de={key:0,class:"empty-state"},ve=["onClick","onDragstart","onDragover","onDrop"],pe={class:"card-header"},fe={class:"card-title"},me={class:"server-name"},ye={class:"card-actions"},he={key:0,class:"card-desc"},ge={key:1,class:"card-tags"},ke={class:"card-apps"},be={class:"app-label"},we={class:"paste-modal-content"},_e={key:0,class:"parse-error"},Ce={class:"paste-modal-footer"},je={class:"batch-modal-content"},xe={class:"batch-actions"},$e={class:"batch-selected"},De={class:"batch-list"},Se={class:"batch-item-info"},Oe={class:"batch-item-header"},ze={class:"batch-item-name"},Me={class:"batch-item-detail"},Ue={key:0},Pe={key:1,class:"batch-args"},Ne={class:"batch-modal-footer"},Je={class:"export-modal-content"},Ae={class:"export-info"},Re={class:"export-modal-footer"},qe=t({__name:"McpDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(t,{emit:qe}){const{drawerWidth:Le}=F(720),Te=t,Be=qe,Ee=p({get:()=>Te.visible,set:e=>Be("update:visible",e)}),We=k(!1),Fe=k({}),Ie=k(!1),Ke=k(null),Qe=v({}),Xe=k(null),Ze=k(null),Ge=k(!1),He=k(""),Ve=k(""),Ye=k(!1),ea=k(!1),aa=k([]),ta=k([]),sa=k(!1),la=k(!1),ra=k({format:"",content:"",filename:""}),na=k(!1),ia=k(null),oa=p(()=>Object.values(Fe.value).sort((e,a)=>void 0!==e.order&&void 0!==a.order?e.order-a.order:void 0!==e.order?-1:void 0!==a.order?1:(a.updatedAt||0)-(e.updatedAt||0))),ua=p(()=>oa.value.length),ca=p(()=>Object.keys(Fe.value)),{byCapability:da}=Y(),va=p(()=>da("mcp")),pa=p(()=>{const e=oa.value;return Object.fromEntries(va.value.map(a=>[a.key,e.filter(e=>!0===e.apps?.[a.key]).length]))}),fa=p({get:()=>{const e=aa.value.filter(e=>!ka(e.id)).map(e=>e.id);return e.length>0&&e.every(e=>ta.value.includes(e))},set:()=>{}}),ma=p(()=>va.value.map(e=>({label:`同步 ${e.label||e.title||e.key} 已有配置`,key:e.key}))),ya=p(()=>[{label:"导出为 JSON (通用)",key:"json"},...va.value.filter(e=>_(e.key)).map(e=>({label:`导出为 ${e.label||e.title||e.key} 格式`,key:e.key}))]);function ha(e){return"online"===e.status?`在线 - ${ga(e.lastChecked)}`:"error"===e.status?`异常 - ${ga(e.lastChecked)}`:"testing"===e.status?"测试中...":"未测试"}function ga(e){return e?new Date(e).toLocaleString("zh-CN",{hour:"2-digit",minute:"2-digit"}):""}function ka(e){return ca.value.includes(e)}async function ba(){We.value=!0;try{const e=await A();e.success&&(Fe.value=e.servers)}catch(e){G.error("加载 MCP 服务器失败")}finally{We.value=!1}}async function wa(e){try{const a=await N(e);a.success&&(G.success(a.message),await ba())}catch(a){G.error("同步失败")}}async function _a(e){try{const a=await T(e);a.success&&(ra.value={format:a.format,content:a.content,filename:a.filename},la.value=!0)}catch(a){G.error("导出失败")}}async function Ca(){try{if("manual"===(await te(ra.value.content))?.method)return void G.warning("自动复制失败,已弹出手动复制框");G.success("已复制到剪贴板")}catch{G.error("复制失败")}}function ja(){const e=new Blob([ra.value.content],{type:"text/plain"}),a=URL.createObjectURL(e),t=document.createElement("a");t.href=a,t.download=ra.value.filename,t.click(),URL.revokeObjectURL(a),G.success("下载成功")}function xa(){Xe.value=null}function $a(){Ke.value=null,Ie.value=!0}function Da(){ba()}function Sa(){Ve.value="",Ye.value=!0;try{let t,s=He.value.trim();if(!s)return Ve.value="请输入配置内容",void(Ye.value=!1);s.startsWith("{")||s.startsWith("[")||(s=s.replace(/^[\s,]+/,""),s=s.replace(/[\s,]+$/,""),s=`{${s}}`);try{t=JSON.parse(s)}catch(e){let l=s.replace(/\}\s*"/g,'}, "');try{t=JSON.parse(l)}catch(a){return Ve.value="JSON 格式错误:"+e.message,void(Ye.value=!1)}}const l=[];let r=null;if(t.mcpServers&&"object"==typeof t.mcpServers)r=t.mcpServers;else if(t.mcp_servers&&"object"==typeof t.mcp_servers)r=t.mcp_servers;else if(t.command||t.url)r={"new-server":t};else{if(!Object.keys(t).some(e=>{const a=t[e];return a&&"object"==typeof a&&(a.command||a.url||a.args)}))return Ve.value="未找到有效的 MCP 服务器配置,请检查 JSON 格式",void(Ye.value=!1);r=t}for(const[e,a]of Object.entries(r)){if(!a||"object"!=typeof a)continue;if(!a.command&&!a.url&&!a.args)continue;const t={id:e,name:e,apps:Object.fromEntries(va.value.map((e,a)=>[e.key,0===a])),server:{type:a.type||"stdio"}};a.command&&(t.server.command=a.command,a.args&&(t.server.args=Array.isArray(a.args)?a.args:[a.args]),a.env&&"object"==typeof a.env&&(t.server.env=a.env)),a.url&&(t.server.type=a.type||"streamable_http",t.server.url=a.url,a.headers&&"object"==typeof a.headers&&(t.server.headers=a.headers)),l.push(t)}if(0===l.length)return Ve.value="未找到有效的 MCP 服务器配置",void(Ye.value=!1);1!==l.length||ka(l[0].id)?(aa.value=l,ta.value=l.filter(e=>!ka(e.id)).map(e=>e.id),ea.value=!0,Ge.value=!1):(Ke.value=l[0],Ie.value=!0,Ge.value=!1,He.value="")}catch(t){Ve.value="解析失败:"+t.message}finally{Ye.value=!1}}function Oa(e){ta.value=e?aa.value.filter(e=>!ka(e.id)).map(e=>e.id):[]}async function za(){if(0===ta.value.length)return;sa.value=!0;let e=0,a=0;try{for(const s of ta.value){const l=aa.value.find(e=>e.id===s);if(l)try{await L(l),e++}catch(t){a++}}e>0?(G.success(`成功导入 ${e} 个服务器${a>0?`,${a} 个失败`:""}`),await ba()):G.error("导入失败"),ea.value=!1,He.value="",aa.value=[],ta.value=[]}catch(t){G.error("批量导入失败")}finally{sa.value=!1}}return c(()=>Te.visible,e=>{e&&ba()},{immediate:!0}),c(Ge,e=>{e||(Ve.value="")}),(t,c)=>{const v=r("McpServerDetailDrawer");return u(),b(m,null,[i(g(W),{show:Ee.value,"onUpdate:show":c[2]||(c[2]=e=>Ee.value=e),width:g(Le),placement:"right","show-mask":!0},{default:f(()=>[i(g(I),{title:"MCP 服务器管理",closable:"","native-scrollbar":!1},{header:f(()=>[w("div",le,[w("div",re,[i(g(e),{size:20,class:"header-icon"},{default:f(()=>[i(g(x))]),_:1}),c[13]||(c[13]=w("span",null,"MCP 服务器管理",-1))]),w("div",ne,[i(g(H),{trigger:"click",options:ya.value,onSelect:_a},{default:f(()=>[i(g(a),{size:"small",quaternary:""},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(C))]),_:1})]),default:f(()=>[c[14]||(c[14]=l(" 导出 ",-1))]),_:1})]),_:1},8,["options"]),i(g(a),{size:"small",type:"primary",ghost:"",onClick:c[0]||(c[0]=e=>Ge.value=!0)},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g($))]),_:1})]),default:f(()=>[c[15]||(c[15]=l(" 粘贴解析 ",-1))]),_:1}),i(g(a),{size:"small",type:"primary",onClick:$a},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(D))]),_:1})]),default:f(()=>[c[16]||(c[16]=l(" 添加 ",-1))]),_:1})])])]),default:f(()=>[w("div",ie,[w("div",oe,[w("span",ue,[l(" 共 "+d(ua.value)+" 个服务器 ",1),(u(!0),b(m,null,n(va.value,e=>(u(),b(m,{key:e.key},[l(" · "+d(e.label||e.title||e.key)+": "+d(pa.value[e.key]||0),1)],64))),128))]),i(g(H),{trigger:"click",options:ma.value,onSelect:wa},{default:f(()=>[i(g(a),{size:"tiny",quaternary:""},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(O))]),_:1})]),default:f(()=>[c[17]||(c[17]=l(" 同步 ",-1))]),_:1})]),_:1},8,["options"])]),w("div",ce,[i(g(X),{show:We.value},{default:f(()=>[0!==oa.value.length||We.value?(u(),b("div",{key:1,class:"server-cards",ref_key:"serverCardsRef",ref:Ze},[(u(!0),b(m,null,n(oa.value,(t,r)=>(u(),b("div",{key:t.id,class:y(["server-card",{dragging:Xe.value===r}]),draggable:"true",onClick:e=>function(e){ia.value=e,na.value=!0}(t),onDragstart:e=>function(e,a){Xe.value=a,e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",a)}(e,r),onDragend:xa,onDragover:e=>{return(a=e).preventDefault(),void(a.dataTransfer.dropEffect="move");var a},onDrop:e=>async function(e,a){e.preventDefault();const t=Xe.value;if(null===t||t===a)return void(Xe.value=null);const s=[...oa.value],[l]=s.splice(t,1);s.splice(a,0,l);const r=s.map(e=>e.id);try{await R(r),await ba()}catch(n){G.error("排序保存失败")}Xe.value=null}(e,r)},[w("div",pe,[w("div",fe,[i(g(e),{class:"drag-handle",size:14},{default:f(()=>[i(g(U))]),_:1}),w("span",me,d(t.name||t.id),1),t.server?.type?(u(),o(g(ee),{key:0,size:"tiny",bordered:!1,type:"info"},{default:f(()=>[l(d(t.server.type),1)]),_:2},1024)):s("",!0),t.status?(u(),o(g(K),{key:1},{trigger:f(()=>[w("span",{class:y(["status-dot",{online:"online"===t.status,error:"error"===t.status,testing:"testing"===t.status}])},null,2)]),default:f(()=>[l(" "+d(ha(t)),1)]),_:2},1024)):s("",!0)]),w("div",ye,[i(g(K),null,{trigger:f(()=>[i(g(a),{quaternary:"",size:"tiny",loading:Qe[t.id],onClick:h(e=>async function(e){Qe[e.id]=!0,Fe.value[e.id].status="testing";try{const a=await B(e.id);if(a.success){const t=a.result;Fe.value[e.id].status=t.success?"online":"error",Fe.value[e.id].lastChecked=Date.now(),t.success?G.success(`${e.name||e.id}: ${t.message} (${t.duration}ms)`):se(G,t,"测试失败",`${e.name||e.id}: `)}}catch(a){Fe.value[e.id].status="error",se(G,a,"测试失败",`${e.name||e.id}: `)}finally{Qe[e.id]=!1}}(t),["stop"])},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(j))]),_:1})]),_:1},8,["loading","onClick"])]),default:f(()=>[c[20]||(c[20]=l(" 测试连接 ",-1))]),_:2},1024),i(g(a),{quaternary:"",size:"tiny",onClick:h(e=>function(e){Ke.value=e,Ie.value=!0}(t),["stop"])},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(M))]),_:1})]),_:1},8,["onClick"]),i(g(a),{quaternary:"",size:"tiny",onClick:h(e=>function(e){Z.warning({title:"删除确认",content:`确定要删除 MCP 服务器 "${e.name||e.id}" 吗?此操作将从所有平台配置中移除该服务器。`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{(await q(e.id)).success&&(delete Fe.value[e.id],G.success("删除成功"))}catch(a){G.error("删除失败")}}})}(t),["stop"])},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(z))]),_:1})]),_:1},8,["onClick"])])]),t.description?(u(),b("p",he,d(t.description),1)):s("",!0),t.tags?.length?(u(),b("div",ge,[(u(!0),b(m,null,n(t.tags.slice(0,3),e=>(u(),o(g(ee),{key:e,size:"tiny",bordered:!1},{default:f(()=>[l(d(e),1)]),_:2},1024))),128))])):s("",!0),w("div",ke,[(u(!0),b(m,null,n(va.value,e=>(u(),b("label",{key:e.key,class:"app-toggle",onClick:c[1]||(c[1]=h(()=>{},["stop"]))},[i(g(Q),{size:"small",value:!0===t.apps?.[e.key],"onUpdate:value":a=>async function(e,a,t){try{const s=await J(e,a,t);s.success&&(Fe.value[e]=s.server,G.success(`已${t?"启用":"禁用"} ${a}`))}catch(s){G.error("操作失败")}}(t.id,e.key,a)},null,8,["value","onUpdate:value"]),w("span",be,d(e.label||e.title||e.key),1)]))),128))])],42,ve))),128))],512)):(u(),b("div",de,[i(g(e),{size:48,class:"empty-icon"},{default:f(()=>[i(g(x))]),_:1}),c[18]||(c[18]=w("p",{class:"empty-title"},"暂无 MCP 服务器",-1)),c[19]||(c[19]=w("p",{class:"empty-desc"},'点击上方"添加"按钮添加 MCP 服务器,或"粘贴解析"快速导入',-1))]))]),_:1},8,["show"])])])]),_:1})]),_:1},8,["show","width"]),i(E,{visible:Ie.value,"onUpdate:visible":c[3]||(c[3]=e=>Ie.value=e),"editing-server":Ke.value,"existing-ids":ca.value,platforms:va.value,onSaved:Da},null,8,["visible","editing-server","existing-ids","platforms"]),i(g(P),{show:Ge.value,"onUpdate:show":c[6]||(c[6]=e=>Ge.value=e),preset:"card",title:"粘贴 MCP 配置",style:{width:"600px","max-width":"90vw"}},{footer:f(()=>[w("div",Ce,[i(g(a),{onClick:c[5]||(c[5]=e=>Ge.value=!1)},{default:f(()=>[...c[23]||(c[23]=[l("取消",-1)])]),_:1}),i(g(a),{type:"primary",onClick:Sa,loading:Ye.value},{default:f(()=>[...c[24]||(c[24]=[l(" 解析配置 ",-1)])]),_:1},8,["loading"])])]),default:f(()=>[w("div",we,[c[21]||(c[21]=w("p",{class:"paste-hint"}," 粘贴 JSON 格式的 MCP 配置,支持单个或批量导入。格式示例: ",-1)),c[22]||(c[22]=w("pre",{class:"paste-example"},'{\n "mcpServers": {\n "服务器名称": {\n "type": "streamable_http",\n "url": "https://example.com/mcp"\n }\n }\n}',-1)),i(g(V),{value:He.value,"onUpdate:value":c[4]||(c[4]=e=>He.value=e),type:"textarea",placeholder:"在此粘贴 JSON 配置...",rows:8,status:Ve.value?"error":void 0},null,8,["value","status"]),Ve.value?(u(),b("p",_e,d(Ve.value),1)):s("",!0)])]),_:1},8,["show"]),i(g(P),{show:ea.value,"onUpdate:show":c[9]||(c[9]=e=>ea.value=e),preset:"card",title:"选择要导入的 MCP 服务器",style:{width:"650px","max-width":"90vw"}},{footer:f(()=>[w("div",Ne,[i(g(a),{onClick:c[8]||(c[8]=e=>ea.value=!1)},{default:f(()=>[...c[26]||(c[26]=[l("取消",-1)])]),_:1}),i(g(a),{type:"primary",disabled:0===ta.value.length,loading:sa.value,onClick:za},{default:f(()=>[l(" 导入选中 ("+d(ta.value.length)+") ",1)]),_:1},8,["disabled","loading"])])]),default:f(()=>[w("div",je,[w("div",xe,[i(g(ae),{checked:fa.value,"onUpdate:checked":[c[7]||(c[7]=e=>fa.value=e),Oa]},{default:f(()=>[l(" 全选 ("+d(aa.value.length)+") ",1)]),_:1},8,["checked"]),w("span",$e,"已选择 "+d(ta.value.length)+" 个",1)]),w("div",De,[(u(!0),b(m,null,n(aa.value,e=>(u(),b("div",{key:e.id,class:y(["batch-item",{selected:ta.value.includes(e.id),exists:ka(e.id)}])},[i(g(ae),{checked:ta.value.includes(e.id),disabled:ka(e.id),"onUpdate:checked":a=>function(e,a){if(a)ta.value.includes(e)||ta.value.push(e);else{const a=ta.value.indexOf(e);a>-1&&ta.value.splice(a,1)}}(e.id,a)},null,8,["checked","disabled","onUpdate:checked"]),w("div",Se,[w("div",Oe,[w("span",ze,d(e.id),1),ka(e.id)?(u(),o(g(ee),{key:0,size:"tiny",type:"warning"},{default:f(()=>[...c[25]||(c[25]=[l("已存在",-1)])]),_:1})):s("",!0),e.server?.type?(u(),o(g(ee),{key:1,size:"tiny",bordered:!1,type:"info"},{default:f(()=>[l(d(e.server.type),1)]),_:2},1024)):s("",!0)]),w("div",Me,[e.server?.command?(u(),b("span",Ue,d(e.server.command),1)):s("",!0),e.server?.args?.length?(u(),b("span",Pe,d(e.server.args.slice(0,3).join(" "))+d(e.server.args.length>3?"...":""),1)):s("",!0)])])],2))),128))])])]),_:1},8,["show"]),i(g(P),{show:la.value,"onUpdate:show":c[11]||(c[11]=e=>la.value=e),preset:"card",title:"导出 MCP 配置",style:{width:"650px","max-width":"90vw"}},{footer:f(()=>[w("div",Re,[i(g(a),{onClick:c[10]||(c[10]=e=>la.value=!1)},{default:f(()=>[...c[27]||(c[27]=[l("关闭",-1)])]),_:1}),i(g(a),{onClick:Ca},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(S))]),_:1})]),default:f(()=>[c[28]||(c[28]=l(" 复制 ",-1))]),_:1}),i(g(a),{type:"primary",onClick:ja},{icon:f(()=>[i(g(e),null,{default:f(()=>[i(g(C))]),_:1})]),default:f(()=>[c[29]||(c[29]=l(" 下载 ",-1))]),_:1})])]),default:f(()=>[w("div",Je,[w("div",Ae,[w("span",null,"格式: "+d(ra.value.format),1),w("span",null,"文件名: "+d(ra.value.filename),1)]),i(g(V),{value:ra.value.content,type:"textarea",readonly:"",rows:12,class:"export-content"},null,8,["value"])])]),_:1},8,["show"]),i(v,{visible:na.value,"onUpdate:visible":c[12]||(c[12]=e=>na.value=e),server:ia.value},null,8,["visible","server"])],64)}}},[["__scopeId","data-v-0b241016"]]);export{qe as default};
@@ -1 +0,0 @@
1
- import{I as e,L as a,N as t,P as l,Qt as r,St as s,Tt as n,Yt as i,bn as o,d as u,gn as d,gt as c,hn as p,ht as v,i as m,j as f,pt as h,rn as g,s as y,t as b,vn as k,xt as w,yn as x}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as C,C as $,D as P,G as j,K as U,M as I,N as _,O as S,S as O,W as D,Z as R,_t as A,at as B,b as V,dt as z,et as T,g as F,ht as E,mt as L,nt as M,st as q,ut as N,w as K,x as W}from"./vue-vendor-BqZbbXHA.js";import{n as G}from"./client-UDwXBP9i.js";import{J as Z,Mt as H,Pt as J,bt as Q,et as Y,g as X,jt as ee,z as ae}from"./icons-DmFe4b5j.js";import{n as te,t as le}from"./CollapseItem-CwqJk3bE.js";import{n as re,t as se}from"./useResponsiveDrawer-V_onl9NV.js";import{t as ne}from"./DrawerContent-ChXgZ1Xm.js";import{$ as ie,F as oe,I as ue,N as de,St as ce,dt as pe,et as ve,jt as me,q as fe,tt as he,yt as ge}from"./index-BKlAWTH-.js";import{s as ye}from"./project-config-B2baPzYL.js";var be=C({name:"ArrowDown",render:()=>I("svg",{viewBox:"0 0 28 28",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},I("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},I("g",{"fill-rule":"nonzero"},I("path",{d:"M23.7916,15.2664 C24.0788,14.9679 24.0696,14.4931 23.7711,14.206 C23.4726,13.9188 22.9978,13.928 22.7106,14.2265 L14.7511,22.5007 L14.7511,3.74792 C14.7511,3.33371 14.4153,2.99792 14.0011,2.99792 C13.5869,2.99792 13.2511,3.33371 13.2511,3.74793 L13.2511,22.4998 L5.29259,14.2265 C5.00543,13.928 4.53064,13.9188 4.23213,14.206 C3.93361,14.4931 3.9244,14.9679 4.21157,15.2664 L13.2809,24.6944 C13.6743,25.1034 14.3289,25.1034 14.7223,24.6944 L23.7916,15.2664 Z"}))))}),ke=C({name:"ArrowUp",render:()=>I("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},I("g",{fill:"none"},I("path",{d:"M3.13 9.163a.5.5 0 1 0 .74.674L9.5 3.67V17.5a.5.5 0 0 0 1 0V3.672l5.63 6.165a.5.5 0 0 0 .738-.674l-6.315-6.916a.746.746 0 0 0-.632-.24a.746.746 0 0 0-.476.24L3.131 9.163z",fill:"currentColor"})))}),we="0!important",xe="-1px!important";function Ce(e){return x(`${e}-type`,[p("& +",[d("button",{},[x(`${e}-type`,[k("border",{borderLeftWidth:we}),k("state-border",{left:xe})])])])])}function $e(e){return x(`${e}-type`,[p("& +",[d("button",[x(`${e}-type`,[k("border",{borderTopWidth:we}),k("state-border",{top:xe})])])])])}var Pe=d("button-group","\n flex-wrap: nowrap;\n display: inline-flex;\n position: relative;\n",[o("vertical",{flexDirection:"row"},[o("rtl",[d("button",[p("&:first-child:not(:last-child)",`\n margin-right: ${we};\n border-top-right-radius: ${we};\n border-bottom-right-radius: ${we};\n `),p("&:last-child:not(:first-child)",`\n margin-left: ${we};\n border-top-left-radius: ${we};\n border-bottom-left-radius: ${we};\n `),p("&:not(:first-child):not(:last-child)",`\n margin-left: ${we};\n margin-right: ${we};\n border-radius: ${we};\n `),Ce("default"),x("ghost",[Ce("primary"),Ce("info"),Ce("success"),Ce("warning"),Ce("error")])])])]),x("vertical",{flexDirection:"column"},[d("button",[p("&:first-child:not(:last-child)",`\n margin-bottom: ${we};\n margin-left: ${we};\n margin-right: ${we};\n border-bottom-left-radius: ${we};\n border-bottom-right-radius: ${we};\n `),p("&:last-child:not(:first-child)",`\n margin-top: ${we};\n margin-left: ${we};\n margin-right: ${we};\n border-top-left-radius: ${we};\n border-top-right-radius: ${we};\n `),p("&:not(:first-child):not(:last-child)",`\n margin: ${we};\n border-radius: ${we};\n `),$e("default"),x("ghost",[$e("primary"),$e("info"),$e("success"),$e("warning"),$e("error")])])])]),je=C({name:"ButtonGroup",props:{size:{type:String,default:void 0},vertical:Boolean},setup(a){const{mergedClsPrefixRef:t,mergedRtlRef:r}=c(a);return l("-button-group",Pe,t),j(u,a),{rtlEnabled:e("ButtonGroup",r,t),mergedClsPrefix:t}},render(){const{mergedClsPrefix:e}=this;return I("div",{class:[`${e}-button-group`,this.rtlEnabled&&`${e}-button-group--rtl`,this.vertical&&`${e}-button-group--vertical`],role:"group"},this.$slots)}}),Ue=i("n-dynamic-input"),Ie=C({name:"DynamicInputInputPreset",props:{clsPrefix:{type:String,required:!0},value:{type:String,default:""},disabled:Boolean,parentPath:String,path:String,onUpdateValue:{type:Function,required:!0}},setup(){const{mergedThemeRef:e,placeholderRef:a}=_(Ue);return{mergedTheme:e,placeholder:a}},render(){const{mergedTheme:e,placeholder:a,value:t,clsPrefix:l,onUpdateValue:r,disabled:s}=this;return I("div",{class:`${l}-dynamic-input-preset-input`},I(pe,{theme:e.peers.Input,"theme-overrides":e.peerOverrides.Input,value:t,placeholder:a,onUpdateValue:r,disabled:s}))}}),_e=C({name:"DynamicInputPairPreset",props:{clsPrefix:{type:String,required:!0},value:{type:Object,default:()=>({key:"",value:""})},disabled:Boolean,parentPath:String,path:String,onUpdateValue:{type:Function,required:!0}},setup(e){const{mergedThemeRef:a,keyPlaceholderRef:t,valuePlaceholderRef:l}=_(Ue);return{mergedTheme:a,keyPlaceholder:t,valuePlaceholder:l,handleKeyInput(a){e.onUpdateValue({key:a,value:e.value.value})},handleValueInput(a){e.onUpdateValue({key:e.value.key,value:a})}}},render(){const{mergedTheme:e,keyPlaceholder:a,valuePlaceholder:t,value:l,clsPrefix:r,disabled:s}=this;return I("div",{class:`${r}-dynamic-input-preset-pair`},I(pe,{theme:e.peers.Input,"theme-overrides":e.peerOverrides.Input,value:l.key,class:`${r}-dynamic-input-pair-input`,placeholder:a,onUpdateValue:this.handleKeyInput,disabled:s}),I(pe,{theme:e.peers.Input,"theme-overrides":e.peerOverrides.Input,value:l.value,class:`${r}-dynamic-input-pair-input`,placeholder:t,onUpdateValue:this.handleValueInput,disabled:s}))}}),Se=d("dynamic-input",{width:"100%"},[d("dynamic-input-item","\n margin-bottom: 10px;\n display: flex;\n flex-wrap: nowrap;\n ",[d("dynamic-input-preset-input",{flex:1,alignItems:"center"}),d("dynamic-input-preset-pair","\n flex: 1;\n display: flex;\n align-items: center;\n ",[d("dynamic-input-pair-input",[p("&:first-child",{"margin-right":"12px"})])]),k("action","\n align-self: flex-start;\n display: flex;\n justify-content: flex-end;\n flex-shrink: 0;\n flex-grow: 0;\n margin: var(--action-margin);\n ",[x("icon",{cursor:"pointer"})]),p("&:last-child",{marginBottom:0})]),d("form-item","\n padding-top: 0 !important;\n margin-right: 0 !important;\n ",[d("form-item-blank",{paddingTop:"0 !important"})])]),Oe=new WeakMap,De=C({name:"DynamicInput",props:Object.assign(Object.assign({},t.props),{max:Number,min:{type:Number,default:0},value:Array,defaultValue:{type:Array,default:()=>[]},preset:{type:String,default:"input"},keyField:String,itemClass:String,itemStyle:[String,Object],keyPlaceholder:{type:String,default:""},valuePlaceholder:{type:String,default:""},placeholder:{type:String,default:""},disabled:Boolean,showSortButton:Boolean,createButtonProps:Object,onCreate:Function,onRemove:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onClear:Function,onInput:[Function,Array]}),setup(l,{slots:s}){const{mergedComponentPropsRef:i,mergedClsPrefixRef:o,mergedRtlRef:u,inlineThemeDisabled:d}=c(),p=_(h,null),m=q(l.defaultValue),f=z(l,"value"),y=r(f,m),b=t("DynamicInput","-dynamic-input",Se,fe,l,o),k=V(()=>{const{value:e}=y;if(Array.isArray(e)){const{max:a}=l;return void 0!==a&&e.length>=a}return!1}),w=V(()=>{const{value:e}=y;return!Array.isArray(e)||e.length<=l.min}),x=V(()=>{var e,a;return null===(a=null===(e=null==i?void 0:i.value)||void 0===e?void 0:e.DynamicInput)||void 0===a?void 0:a.buttonSize});function C(e){const{onInput:a,"onUpdate:value":t,onUpdateValue:r}=l;a&&n(a,e),t&&n(t,e),r&&n(r,e),m.value=e}function $(e){const{value:a}=y,{onCreate:t}=l,r=Array.from(null!=a?a:[]);if(t)r.splice(e+1,0,t(e+1)),C(r);else if(s.default)r.splice(e+1,0,null),C(r);else switch(l.preset){case"input":r.splice(e+1,0,""),C(r);break;case"pair":r.splice(e+1,0,{key:"",value:""}),C(r)}}function P(e,a,t){if(a<0||t<0||a>=e.length||t>=e.length)return;if(a===t)return;const l=e[a];e[a]=e[t],e[t]=l}j(Ue,{mergedThemeRef:b,keyPlaceholderRef:z(l,"keyPlaceholder"),valuePlaceholderRef:z(l,"valuePlaceholder"),placeholderRef:z(l,"placeholder")});const U=e("DynamicInput",u,o),I=V(()=>{const{self:{actionMargin:e,actionMarginRtl:a}}=b.value;return{"--action-margin":e,"--action-margin-rtl":a}}),S=d?v("dynamic-input",void 0,I,l):void 0;return{locale:a("DynamicInput").localeRef,rtlEnabled:U,buttonSize:x,mergedClsPrefix:o,NFormItem:p,uncontrolledValue:m,mergedValue:y,insertionDisabled:k,removeDisabled:w,handleCreateClick:function(){$(-1)},ensureKey:function(e,a){if(null==e)return a;if("object"!=typeof e)return a;const t=M(e)?N(e):e;let l=Oe.get(t);return void 0===l&&Oe.set(t,l=g()),l},handleValueChange:function(e,a){const{value:t}=y,l=Array.from(null!=t?t:[]),r=l[e];if(l[e]=a,r&&a&&"object"==typeof r&&"object"==typeof a){const e=M(r)?N(r):r,t=M(a)?N(a):a,l=Oe.get(e);void 0!==l&&Oe.set(t,l)}C(l)},remove:function(e){const{value:a}=y;if(!Array.isArray(a))return;const{min:t}=l;if(a.length<=t)return;const{onRemove:r}=l;r&&r(e);const s=Array.from(a);s.splice(e,1),C(s)},move:function(e,a){const{value:t}=y;if(!Array.isArray(t))return;const l=Array.from(t);"up"===e&&P(l,a,a-1),"down"===e&&P(l,a,a+1),C(l)},createItem:$,mergedTheme:b,cssVars:d?void 0:I,themeClass:null==S?void 0:S.themeClass,onRender:null==S?void 0:S.onRender}},render(){const{$slots:e,itemClass:a,buttonSize:t,mergedClsPrefix:l,mergedValue:r,locale:n,mergedTheme:i,keyField:o,itemStyle:u,preset:d,showSortButton:c,NFormItem:p,ensureKey:v,handleValueChange:m,remove:h,createItem:g,move:b,onRender:k,disabled:x}=this;return null==k||k(),I("div",{class:[`${l}-dynamic-input`,this.rtlEnabled&&`${l}-dynamic-input--rtl`,this.themeClass],style:this.cssVars},Array.isArray(r)&&0!==r.length?r.map((n,k)=>I("div",{key:o?n[o]:v(n,k),"data-key":o?n[o]:v(n,k),class:[`${l}-dynamic-input-item`,a],style:u},s(e.default,{value:r[k],index:k},()=>["input"===d?I(Ie,{disabled:x,clsPrefix:l,value:r[k],parentPath:p?p.path.value:void 0,path:(null==p?void 0:p.path.value)?`${p.path.value}[${k}]`:void 0,onUpdateValue:e=>{m(k,e)}}):"pair"===d?I(_e,{disabled:x,clsPrefix:l,value:r[k],parentPath:p?p.path.value:void 0,path:(null==p?void 0:p.path.value)?`${p.path.value}[${k}]`:void 0,onUpdateValue:e=>{m(k,e)}}):null]),s(e.action,{value:r[k],index:k,create:g,remove:h,move:b},()=>[I("div",{class:`${l}-dynamic-input-item__action`},I(je,{size:t},{default:()=>[I(y,{disabled:this.removeDisabled||x,theme:i.peers.Button,themeOverrides:i.peerOverrides.Button,circle:!0,onClick:()=>{h(k)}},{icon:()=>I(f,{clsPrefix:l},{default:()=>I(ge,null)})}),I(y,{disabled:this.insertionDisabled||x,circle:!0,theme:i.peers.Button,themeOverrides:i.peerOverrides.Button,onClick:()=>{g(k)}},{icon:()=>I(f,{clsPrefix:l},{default:()=>I(ce,null)})}),c?I(y,{disabled:0===k||x,circle:!0,theme:i.peers.Button,themeOverrides:i.peerOverrides.Button,onClick:()=>{b("up",k)}},{icon:()=>I(f,{clsPrefix:l},{default:()=>I(ke,null)})}):null,c?I(y,{disabled:k===r.length-1||x,circle:!0,theme:i.peers.Button,themeOverrides:i.peerOverrides.Button,onClick:()=>{b("down",k)}},{icon:()=>I(f,{clsPrefix:l},{default:()=>I(be,null)})}):null]}))]))):I(y,Object.assign({block:!0,ghost:!0,dashed:!0,size:t},this.createButtonProps,{disabled:this.insertionDisabled||x,theme:i.peers.Button,themeOverrides:i.peerOverrides.Button,onClick:this.handleCreateClick}),{default:()=>w(e["create-button-default"],()=>[n.create]),icon:()=>w(e["create-button-icon"],()=>[I(f,{clsPrefix:l},{default:()=>I(ce,null)})])}))}});async function Re(){return(await G.get("/mcp/servers")).data}async function Ae(e){return(await G.post("/mcp/servers",e)).data}async function Be(e){return(await G.delete(`/mcp/servers/${e}`)).data}async function Ve(e,a,t){return(await G.post(`/mcp/servers/${e}/toggle`,{app:a,enabled:t})).data}async function ze(e){return(await G.post(`/mcp/import/${e}`)).data}async function Te(e){return(await G.post(`/mcp/servers/${e}/test`)).data}async function Fe(e){return(await G.post("/mcp/servers/order",{serverIds:e})).data}async function Ee(e="json"){return(await G.get("/mcp/export",{params:{format:e}})).data}var Le={class:"drawer-header"},Me={class:"header-title"},qe={class:"drawer-footer"},Ne={class:"form-content"},Ke={key:0,class:"form-group"},We={class:"group-title"},Ge={class:"preset-grid"},Ze=["onClick"],He={class:"form-group"},Je={class:"group-title"},Qe={class:"field"},Ye={key:0,class:"field-error"},Xe={class:"field"},ea={key:1,class:"form-group"},aa={class:"group-title"},ta={class:"platform-toggles"},la={class:"platform-name"},ra={key:0,class:"platform-empty"},sa={class:"form-group"},na={class:"group-title"},ia={class:"field"},oa={class:"field"},ua={class:"field"},da={class:"field"},ca={class:"kv-row"},pa={class:"field"},va={class:"field"},ma={class:"kv-row"},fa={class:"collapse-header"},ha={class:"collapse-content"},ga={class:"field"},ya={class:"field"},ba={class:"field-row"},ka={class:"field"},wa={class:"field"},xa=b({__name:"McpFormDrawer",props:{visible:{type:Boolean,default:!1},editingServer:{type:Object,default:null},existingIds:{type:Array,default:()=>[]},platforms:{type:Array,default:()=>[]},platform:{type:String,default:"claude"},scope:{type:String,default:"user"},projectPath:{type:String,default:""}},emits:["update:visible","saved"],setup(e,{emit:a}){const{drawerWidth:t}=se(520),l=e,r=a,s=V({get:()=>l.visible,set:e=>r("update:visible",e)}),n=V(()=>!!l.editingServer),i=q([]),o=q(!1),u=q(-1),d=q(!1),{byCapability:c}=me(),p=V(()=>l.platforms.length>0?l.platforms:c("mcp"));function v(){return Object.fromEntries(p.value.map((e,a)=>[e.key,0===a]))}const f=B({id:"",name:"",description:"",homepage:"",docs:"",apps:{},server:{type:"stdio",command:"",args:[],env:{},url:"",headers:{}}}),h=q("stdio"),g=q([]),b=q([]),k=q(""),w=V(()=>f.id.trim()&&!n.value&&l.existingIds.includes(f.id.trim())?"该 ID 已存在":"");function x(e){return l.existingIds.includes(e)}async function C(){o.value=!0;try{const e=await async function(){return(await G.get("/mcp/presets")).data}();e.success&&(i.value=e.presets)}catch(e){}finally{o.value=!1}}function j(){u.value=-1,I()}function I(){f.id="",f.name="",f.description="",f.homepage="",f.docs="",f.apps=v(),f.server={type:"stdio",command:"",args:[],env:{},url:"",headers:{}},h.value="stdio",g.value=[],b.value=[],k.value=""}async function _(){if(!f.id.trim())return void de.error("请输入服务器 ID");if(w.value)return void de.error(w.value);if("stdio"===h.value&&!f.server.command?.trim())return void de.error("请输入命令");if(("streamable_http"===h.value||"sse"===h.value)&&!f.server.url?.trim())return void de.error("请输入 URL");const e={type:h.value};if("stdio"===h.value){e.command=f.server.command,f.server.args?.length&&(e.args=f.server.args.filter(e=>e.trim()));const a={};g.value.forEach(e=>{const t=e.key.trim();t&&"[REDACTED]"!==e.value&&(a[t]=e.value)}),Object.keys(a).length>0&&(e.env=a)}else{e.url=f.server.url;const a={};b.value.forEach(e=>{const t=e.key.trim();t&&"[REDACTED]"!==e.value&&(a[t]=e.value)}),Object.keys(a).length>0&&(e.headers=a)}const a={id:f.id.trim(),name:f.name.trim()||f.id.trim(),server:e,apps:n.value?{...f.apps}:Object.fromEntries(p.value.map(e=>[e.key,!0===f.apps[e.key]]))};f.description.trim()&&(a.description=f.description.trim()),f.homepage.trim()&&(a.homepage=f.homepage.trim()),f.docs.trim()&&(a.docs=f.docs.trim()),k.value.trim()&&(a.tags=k.value.split(",").map(e=>e.trim()).filter(e=>e)),d.value=!0;try{("project"===l.scope?await ye(l.projectPath,l.platform,a.id,a.server):await Ae(a)).success&&(de.success(n.value?"保存成功":"添加成功"),r("saved"),s.value=!1)}catch(t){de.error(t.response?.data?.error||"保存失败")}finally{d.value=!1}}return R(()=>l.visible,e=>{e&&(C(),l.editingServer?function(){const e=l.editingServer;e&&(f.id=e.id,f.name=e.name||"",f.description=e.description||"",f.homepage=e.homepage||"",f.docs=e.docs||"",f.apps=e.apps?{...e.apps}:v(),k.value=(e.tags||[]).join(", "),e.server&&(h.value=e.server.type||"stdio",f.server={...e.server},f.server.type=h.value,e.server.env&&"object"==typeof e.server.env?g.value=Object.entries(e.server.env).map(([e,a])=>({key:e,value:a})):g.value=[],e.server.headers&&"object"==typeof e.server.headers?b.value=Object.entries(e.server.headers).map(([e,a])=>({key:e,value:a})):b.value=[]))}():(I(),u.value=-1))}),R(h,e=>{f.server.type=e}),(a,r)=>(D(),O(L(re),{show:s.value,"onUpdate:show":r[14]||(r[14]=e=>s.value=e),width:L(t),placement:"right","show-mask":!0},{default:T(()=>[S(L(ne),{closable:"","native-scrollbar":!1},{header:T(()=>[W("div",Le,[S(L(y),{quaternary:"",size:"small",onClick:r[0]||(r[0]=e=>s.value=!1)},{icon:T(()=>[S(L(m),null,{default:T(()=>[S(L(ee))]),_:1})]),_:1}),W("span",Me,A(n.value?"编辑 MCP 服务器":"添加 MCP 服务器"),1)])]),footer:T(()=>[W("div",qe,[S(L(y),{onClick:r[1]||(r[1]=e=>s.value=!1)},{default:T(()=>[...r[15]||(r[15]=[P("取消",-1)])]),_:1}),S(L(y),{type:"primary",loading:d.value,onClick:_},{default:T(()=>[P(A(n.value?"保存":"添加"),1)]),_:1},8,["loading"])])]),default:T(()=>[S(L(ue),{show:o.value},{default:T(()=>[W("div",Ne,[n.value?$("",!0):(D(),K("div",Ke,[W("div",We,[S(L(m),{size:16,class:"group-icon"},{default:T(()=>[S(L(Z))]),_:1}),r[16]||(r[16]=W("span",null,"快速选择",-1))]),W("div",Ge,[W("div",{class:E(["preset-chip",{active:-1===u.value}]),onClick:j},[S(L(m),{size:14},{default:T(()=>[S(L(J))]),_:1}),r[17]||(r[17]=W("span",null,"自定义",-1))],2),(D(!0),K(F,null,U(i.value,(e,a)=>(D(),O(L(ie),{key:e.id,disabled:!x(e.id)},{trigger:T(()=>[W("div",{class:E(["preset-chip",{active:u.value===a,disabled:x(e.id)}]),onClick:t=>!x(e.id)&&function(e){u.value=e;const a=i.value[e];if(!a)return;let t=a.id,r=1;for(;l.existingIds.includes(t);)t=`${a.id}-${r}`,r++;f.id=t,f.name=a.name||a.id,f.description=a.description||"",f.homepage=a.homepage||"",f.docs=a.docs||"",k.value=(a.tags||[]).join(", "),a.server&&(h.value=a.server.type||"stdio",f.server={...a.server},f.server.type=h.value,a.server.env?g.value=Object.entries(a.server.env).map(([e,a])=>({key:e,value:a})):g.value=[],a.server.headers?b.value=Object.entries(a.server.headers).map(([e,a])=>({key:e,value:a})):b.value=[])}(a)},[P(A(e.id)+" ",1),x(e.id)?(D(),O(L(m),{key:0,size:12,class:"installed-icon"},{default:T(()=>[S(L(Q))]),_:1})):$("",!0)],10,Ze)]),default:T(()=>[r[18]||(r[18]=P(" 已安装 ",-1))]),_:2},1032,["disabled"]))),128))])])),W("div",He,[W("div",Je,[S(L(m),{size:16,class:"group-icon"},{default:T(()=>[S(L(ae))]),_:1}),r[19]||(r[19]=W("span",null,"基本信息",-1))]),W("div",Qe,[r[20]||(r[20]=W("label",{class:"field-label"},[P(" ID "),W("span",{class:"required"},"*")],-1)),S(L(pe),{value:f.id,"onUpdate:value":r[2]||(r[2]=e=>f.id=e),placeholder:"服务器唯一标识,如 fetch、memory",disabled:n.value,status:w.value?"error":void 0},null,8,["value","disabled","status"]),w.value?(D(),K("span",Ye,A(w.value),1)):$("",!0)]),W("div",Xe,[r[21]||(r[21]=W("label",{class:"field-label"},"显示名称",-1)),S(L(pe),{value:f.name,"onUpdate:value":r[3]||(r[3]=e=>f.name=e),placeholder:"可选,用于展示的名称"},null,8,["value"])])]),"project"!==e.scope?(D(),K("div",ea,[W("div",aa,[S(L(m),{size:16,class:"group-icon"},{default:T(()=>[S(L(H))]),_:1}),r[22]||(r[22]=W("span",null,"启用平台",-1))]),W("div",ta,[(D(!0),K(F,null,U(p.value,e=>(D(),K("label",{key:e.key,class:"platform-item"},[S(L(oe),{size:"small",value:f.apps[e.key],"onUpdate:value":a=>f.apps[e.key]=a},null,8,["value","onUpdate:value"]),W("span",la,A(e.label||e.title||e.key),1)]))),128)),0===p.value.length?(D(),K("span",ra," 当前没有可用的 MCP 平台 ")):$("",!0)])])):$("",!0),W("div",sa,[W("div",na,[S(L(m),{size:16,class:"group-icon"},{default:T(()=>[S(L(X))]),_:1}),r[23]||(r[23]=W("span",null,"服务器配置",-1))]),W("div",ia,[r[27]||(r[27]=W("label",{class:"field-label"},"类型",-1)),S(L(ve),{value:h.value,"onUpdate:value":r[4]||(r[4]=e=>h.value=e),class:"type-radios"},{default:T(()=>[S(L(he),{value:"stdio"},{default:T(()=>[...r[24]||(r[24]=[W("span",{class:"radio-label"},"stdio",-1),W("span",{class:"radio-desc"},"本地命令",-1)])]),_:1}),S(L(he),{value:"streamable_http"},{default:T(()=>[...r[25]||(r[25]=[W("span",{class:"radio-label"},"streamable_http",-1)])]),_:1}),S(L(he),{value:"sse"},{default:T(()=>[...r[26]||(r[26]=[W("span",{class:"radio-label"},"sse",-1)])]),_:1})]),_:1},8,["value"])]),"stdio"===h.value?(D(),K(F,{key:0},[W("div",oa,[r[28]||(r[28]=W("label",{class:"field-label"},[P(" 命令 "),W("span",{class:"required"},"*")],-1)),S(L(pe),{value:f.server.command,"onUpdate:value":r[5]||(r[5]=e=>f.server.command=e),placeholder:"如 npx、uvx、node"},null,8,["value"])]),W("div",ua,[r[29]||(r[29]=W("label",{class:"field-label"},"参数",-1)),S(L(De),{value:f.server.args,"onUpdate:value":r[6]||(r[6]=e=>f.server.args=e),placeholder:"点击添加参数",min:0},null,8,["value"])]),W("div",da,[r[31]||(r[31]=W("label",{class:"field-label"},"环境变量",-1)),S(L(De),{value:g.value,"onUpdate:value":r[7]||(r[7]=e=>g.value=e),"on-create":()=>({key:"",value:""}),min:0},{default:T(({value:e})=>[W("div",ca,[S(L(pe),{value:e.key,"onUpdate:value":a=>e.key=a,placeholder:"变量名",class:"kv-key"},null,8,["value","onUpdate:value"]),r[30]||(r[30]=W("span",{class:"kv-sep"},"=",-1)),S(L(pe),{value:e.value,"onUpdate:value":a=>e.value=a,placeholder:"值",class:"kv-value"},null,8,["value","onUpdate:value"])])]),_:1},8,["value"])])],64)):(D(),K(F,{key:1},[W("div",pa,[r[32]||(r[32]=W("label",{class:"field-label"},[P(" URL "),W("span",{class:"required"},"*")],-1)),S(L(pe),{value:f.server.url,"onUpdate:value":r[8]||(r[8]=e=>f.server.url=e),placeholder:"http://localhost:3000/mcp"},null,8,["value"])]),W("div",va,[r[34]||(r[34]=W("label",{class:"field-label"},"请求头",-1)),S(L(De),{value:b.value,"onUpdate:value":r[9]||(r[9]=e=>b.value=e),"on-create":()=>({key:"",value:""}),min:0},{default:T(({value:e})=>[W("div",ma,[S(L(pe),{value:e.key,"onUpdate:value":a=>e.key=a,placeholder:"Header 名",class:"kv-key"},null,8,["value","onUpdate:value"]),r[33]||(r[33]=W("span",{class:"kv-sep"},":",-1)),S(L(pe),{value:e.value,"onUpdate:value":a=>e.value=a,placeholder:"值",class:"kv-value"},null,8,["value","onUpdate:value"])])]),_:1},8,["value"])])],64))]),S(L(te),{class:"extra-collapse"},{default:T(()=>[S(L(le),{name:"extra"},{header:T(()=>[W("div",fa,[S(L(m),{size:16,class:"group-icon"},{default:T(()=>[S(L(Y))]),_:1}),r[35]||(r[35]=W("span",null,"附加信息",-1)),r[36]||(r[36]=W("span",{class:"collapse-hint"},"(可选)",-1))])]),default:T(()=>[W("div",ha,[W("div",ga,[r[37]||(r[37]=W("label",{class:"field-label"},"描述",-1)),S(L(pe),{value:f.description,"onUpdate:value":r[10]||(r[10]=e=>f.description=e),type:"textarea",placeholder:"服务器功能描述",rows:2},null,8,["value"])]),W("div",ya,[r[38]||(r[38]=W("label",{class:"field-label"},"标签",-1)),S(L(pe),{value:k.value,"onUpdate:value":r[11]||(r[11]=e=>k.value=e),placeholder:"用逗号分隔,如 http, web, fetch"},null,8,["value"])]),W("div",ba,[W("div",ka,[r[39]||(r[39]=W("label",{class:"field-label"},"主页",-1)),S(L(pe),{value:f.homepage,"onUpdate:value":r[12]||(r[12]=e=>f.homepage=e),placeholder:"https://github.com/..."},null,8,["value"])]),W("div",wa,[r[40]||(r[40]=W("label",{class:"field-label"},"文档",-1)),S(L(pe),{value:f.docs,"onUpdate:value":r[13]||(r[13]=e=>f.docs=e),placeholder:"https://..."},null,8,["value"])])])])]),_:1})]),_:1})])]),_:1},8,["show"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-f2623980"]]);export{ze as a,Ve as c,Re as i,Fe as l,Be as n,Ae as o,Ee as r,Te as s,xa as t};