coding-tool-x 3.9.6-261024 → 3.9.7-261027

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 (45) hide show
  1. package/dist/web/assets/{AgentsDrawer-D2oYKcOj.js → AgentsDrawer-CKEf8ie1.js} +1 -1
  2. package/dist/web/assets/{Analytics-Cy3QSSrn.js → Analytics-0BCMxQ-o.js} +1 -1
  3. package/dist/web/assets/{AssetPathField-BGuw5ZR7.js → AssetPathField-pfN6L814.js} +1 -1
  4. package/dist/web/assets/{ChatHistoryDrawer-BZ8FY_-9.js → ChatHistoryDrawer-nuUPRqje.js} +1 -1
  5. package/dist/web/assets/{CollapseItem-DOoxtmtj.js → CollapseItem-B2SdqQp2.js} +1 -1
  6. package/dist/web/assets/{CommandsDrawer-YCgZAeNx.js → CommandsDrawer-D8m0qLzQ.js} +1 -1
  7. package/dist/web/assets/{ConfigExportDrawer-BlAHQidK.js → ConfigExportDrawer-BlCBLdue.js} +1 -1
  8. package/dist/web/assets/{ConfigTemplates-C6qSF4Ht.js → ConfigTemplates-CePBARK8.js} +1 -1
  9. package/dist/web/assets/{ConfigTemplatesDrawer-lRT_6-jD.js → ConfigTemplatesDrawer-DbVY4rD1.js} +1 -1
  10. package/dist/web/assets/{ConfigTemplatesPanel-DrS57Y8V.js → ConfigTemplatesPanel-CwYPLEFV.js} +1 -1
  11. package/dist/web/assets/{FavoritesDrawer-CuOcHtqM.js → FavoritesDrawer-BKAKQNqP.js} +1 -1
  12. package/dist/web/assets/{GatewayConvertDrawer-b0pIvH02.js → GatewayConvertDrawer-D2MFXcqS.js} +1 -1
  13. package/dist/web/assets/{Home-DvfQcP4b.js → Home-BmElvXVZ.js} +1 -1
  14. package/dist/web/assets/{MarkdownEditor-BLS6HmBb.js → MarkdownEditor-buNC2iDj.js} +1 -1
  15. package/dist/web/assets/{McpDrawer-BHt7zFf0.js → McpDrawer-NBjAyFU5.js} +1 -1
  16. package/dist/web/assets/{McpFormDrawer-DpTMHc-e.js → McpFormDrawer-BUnW9j4A.js} +1 -1
  17. package/dist/web/assets/{PluginManager-CYAuy5dm.js → PluginManager-BgHpsF5S.js} +1 -1
  18. package/dist/web/assets/{PluginsDrawer-CoyprWNl.js → PluginsDrawer-CFnmqzV0.js} +1 -1
  19. package/dist/web/assets/{PluginsPanel-DsmiW9TU.css → PluginsPanel-B1PcHqhB.css} +1 -1
  20. package/dist/web/assets/PluginsPanel-ClSdnSCu.js +1 -0
  21. package/dist/web/assets/{ProjectList-pJo0xp0Q.js → ProjectList-CjlHEyU1.js} +1 -1
  22. package/dist/web/assets/{PromptsDrawer-CM-irN84.js → PromptsDrawer-xeSGgpCd.js} +1 -1
  23. package/dist/web/assets/{RecentSessionsDrawer-l5nO_5bS.js → RecentSessionsDrawer-DELB6-rU.js} +1 -1
  24. package/dist/web/assets/{SessionCard-BqTFOt05.js → SessionCard-BaH42eOe.js} +1 -1
  25. package/dist/web/assets/{SessionList-Bs_YFKW5.js → SessionList-BGB9GwYE.js} +1 -1
  26. package/dist/web/assets/SettingsDrawer-Cw-6Joic.css +1 -0
  27. package/dist/web/assets/SettingsDrawer-DdYC8GIa.js +1 -0
  28. package/dist/web/assets/{SkillManager-DgLhL2Qv.js → SkillManager-CF7EiSps.js} +1 -1
  29. package/dist/web/assets/{SkillsDrawer-CT69YSEE.js → SkillsDrawer-Bc5zA1bk.js} +1 -1
  30. package/dist/web/assets/{SkillsPanel-Dm8FkYD6.js → SkillsPanel-SnzwzqW5.js} +1 -1
  31. package/dist/web/assets/{Upload-BHTymsxe.js → Upload-xqorL26i.js} +1 -1
  32. package/dist/web/assets/{WorkspaceDrawer-DLXh_c7u.js → WorkspaceDrawer-DBiEnZ7j.js} +1 -1
  33. package/dist/web/assets/{WorkspaceManager-E_IoRTlC.js → WorkspaceManager-C1dNfoAy.js} +1 -1
  34. package/dist/web/assets/{WorkspacePanel-DLlTIU8Y.js → WorkspacePanel-CWNQZjm1.js} +1 -1
  35. package/dist/web/assets/{index-DP0Ggf-8.js → index-BKpL4XdU.js} +2 -2
  36. package/dist/web/assets/{platforms-DNVEAtqx.js → platforms-Cq6XDXfy.js} +1 -1
  37. package/dist/web/assets/{useResponsiveDrawer-D9ti7g-U.js → useResponsiveDrawer-CTQPBATk.js} +1 -1
  38. package/dist/web/index.html +2 -2
  39. package/package.json +1 -1
  40. package/src/config/model-metadata.json +30 -2
  41. package/src/platforms/drivers/dsh/channels-implementation.js +148 -23
  42. package/src/platforms/drivers/dsh/common.js +4 -1
  43. package/dist/web/assets/PluginsPanel-C3AzXlkH.js +0 -1
  44. package/dist/web/assets/SettingsDrawer-BFzaxbgC.css +0 -1
  45. package/dist/web/assets/SettingsDrawer-COszrj_Y.js +0 -1
@@ -1 +1 @@
1
- import{I as e,L as a,N as t,Qt as s,Tt as n,Yt as l,bn as i,gn as o,gt as r,hn as u,ht as d,i as c,j as p,s as v,t as m,xn as h,xt as f,yn as g}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as b,C as y,D as w,G as k,H as C,I as x,K as j,M as P,N as F,O as _,Q as z,S as M,V as I,W as S,Z as B,_t as $,b as N,dt as T,et as O,f as A,g as U,ht as R,i as D,m as E,mt as L,p as q,r as H,st as V,tt as Q,w as W,x as J}from"./vue-vendor-BqZbbXHA.js";import{r as K}from"./platforms-DNVEAtqx.js";import{$ as Z,At as G,Ct as Y,U as X,c as ee,g as ae,i as te,l as se,nt as ne,r as le}from"./icons-B-AzZoeE.js";import{d as ie,k as oe,t as re,u as ue,x as de}from"./use-message-DBsCm7FJ.js";import{F as ce,S as pe,l as ve}from"./light-C2X7hegj.js";import{c as me,s as he}from"./AssetPathField-BGuw5ZR7.js";import{t as fe}from"./McpFormDrawer-DpTMHc-e.js";import{i as ge,n as be,r as ye,t as we}from"./Forward-DLCL7aMY.js";import{n as ke,t as Ce}from"./useResponsiveDrawer-D9ti7g-U.js";import{t as xe}from"./DrawerContent-ChXgZ1Xm.js";import{t as je}from"./headers-DbowkmZJ.js";import{t as Pe}from"./SkillsPanel-Dm8FkYD6.js";import{$ as Fe,A as _e,H as ze,M as Me,O as Ie,Q as Se,Tt as Be,Y as $e,_ as Ne,ct as Te,dt as Oe,et as Ae,ft as Ue,k as Re,ot as De,pt as Ee,rt as Le,st as qe,ut as He,vt as Ve,xt as Qe,yt as We}from"./index-DP0Ggf-8.js";import{c as Je,f as Ke,t as Ze}from"./sessions-DSLpMXCq.js";import Ge from"./ChatHistoryDrawer-BZ8FY_-9.js";import{t as Ye}from"./sessions-DJiJJgvg.js";import{i as Xe,l as ea,n as aa,o as ta,r as sa,t as na}from"./project-config-CzFKBw_m.js";var la={tiny:"mini",small:"tiny",medium:"small",large:"medium",huge:"large"};function ia(e){const a=la[e];if(void 0===a)throw new Error(`${e} has no smaller size.`);return a}var oa=b({name:"More",render:()=>P("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},P("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},P("g",{fill:"currentColor","fill-rule":"nonzero"},P("path",{d:"M4,7 C4.55228,7 5,7.44772 5,8 C5,8.55229 4.55228,9 4,9 C3.44772,9 3,8.55229 3,8 C3,7.44772 3.44772,7 4,7 Z M8,7 C8.55229,7 9,7.44772 9,8 C9,8.55229 8.55229,9 8,9 C7.44772,9 7,8.55229 7,8 C7,7.44772 7.44772,7 8,7 Z M12,7 C12.5523,7 13,7.44772 13,8 C13,8.55229 12.5523,9 12,9 C11.4477,9 11,8.55229 11,8 C11,7.44772 11.4477,7 12,7 Z"}))))}),ra=l("n-popselect"),ua=o("popselect-menu","\n box-shadow: var(--n-menu-box-shadow);\n"),da={multiple:Boolean,value:{type:[String,Number,Array],default:null},cancelable:Boolean,options:{type:Array,default:()=>[]},size:{type:String,default:"medium"},scrollable:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onMouseenter:Function,onMouseleave:Function,renderLabel:Function,showCheckmark:{type:Boolean,default:void 0},nodeProps:Function,virtualScroll:Boolean,onChange:[Function,Array]},ca=ce(da),pa=b({name:"PopselectPanel",props:da,setup(e){const a=F(ra),{mergedClsPrefixRef:s,inlineThemeDisabled:l}=r(e),i=t("Popselect","-pop-select",ua,Ae,a.props,s),o=N(()=>Ee(e.options,De("value","children")));function u(a,t){const{onUpdateValue:s,"onUpdate:value":l,onChange:i}=e;s&&n(s,a,t),l&&n(l,a,t),i&&n(i,a,t)}B(T(e,"options"),()=>{x(()=>{a.syncPosition()})});const c=N(()=>{const{self:{menuBoxShadow:e}}=i.value;return{"--n-menu-box-shadow":e}}),p=l?d("select",void 0,c,a.props):void 0;return{mergedTheme:a.mergedThemeRef,mergedClsPrefix:s,treeMate:o,handleToggle:function(t){!function(t){const{value:{getNode:s}}=o;if(e.multiple)if(Array.isArray(e.value)){const a=[],n=[];let l=!0;e.value.forEach(e=>{if(e===t)return void(l=!1);const i=s(e);i&&(a.push(i.key),n.push(i.rawNode))}),l&&(a.push(t),n.push(s(t).rawNode)),u(a,n)}else{const e=s(t);e&&u([t],[e.rawNode])}else if(e.value===t&&e.cancelable)u(null,null);else{const e=s(t);e&&u(t,e.rawNode);const{"onUpdate:show":l,onUpdateShow:i}=a.props;l&&n(l,!1),i&&n(i,!1),a.setShow(!1)}x(()=>{a.syncPosition()})}(t.key)},handleMenuMousedown:function(e){Be(e,"action")||Be(e,"empty")||Be(e,"header")||e.preventDefault()},cssVars:l?void 0:c,themeClass:null==p?void 0:p.themeClass,onRender:null==p?void 0:p.onRender}},render(){var e;return null===(e=this.onRender)||void 0===e||e.call(this),P(Oe,{clsPrefix:this.mergedClsPrefix,focusable:!0,nodeProps:this.nodeProps,class:[`${this.mergedClsPrefix}-popselect-menu`,this.themeClass],style:this.cssVars,theme:this.mergedTheme.peers.InternalSelectMenu,themeOverrides:this.mergedTheme.peerOverrides.InternalSelectMenu,multiple:this.multiple,treeMate:this.treeMate,size:this.size,value:this.value,virtualScroll:this.virtualScroll,scrollable:this.scrollable,renderLabel:this.renderLabel,onToggle:this.handleToggle,onMouseenter:this.onMouseenter,onMouseleave:this.onMouseenter,onMousedown:this.handleMenuMousedown,showCheckmark:this.showCheckmark},{header:()=>{var e,a;return(null===(a=(e=this.$slots).header)||void 0===a?void 0:a.call(e))||[]},action:()=>{var e,a;return(null===(a=(e=this.$slots).action)||void 0===a?void 0:a.call(e))||[]},empty:()=>{var e,a;return(null===(a=(e=this.$slots).empty)||void 0===a?void 0:a.call(e))||[]}})}}),va=b({name:"Popselect",props:Object.assign(Object.assign(Object.assign(Object.assign({},t.props),Ve(ie,["showArrow","arrow"])),{placement:Object.assign(Object.assign({},ie.placement),{default:"bottom"}),trigger:{type:String,default:"hover"}}),da),slots:Object,inheritAttrs:!1,__popover__:!0,setup(e){const{mergedClsPrefixRef:a}=r(e),s=t("Popselect","-popselect",void 0,Ae,e,a),n=V(null);function l(){var e;null===(e=n.value)||void 0===e||e.syncPosition()}function i(e){var a;null===(a=n.value)||void 0===a||a.setShow(e)}return k(ra,{props:e,mergedThemeRef:s,syncPosition:l,setShow:i}),Object.assign(Object.assign({},{syncPosition:l,setShow:i}),{popoverInstRef:n,mergedTheme:s})},render(){const{mergedTheme:e}=this,a={theme:e.peers.Popover,themeOverrides:e.peerOverrides.Popover,builtinThemeOverrides:{padding:"0"},ref:"popoverInstRef",internalRenderBody:(e,a,t,s,n)=>{const{$attrs:l}=this;return P(pa,Object.assign({},l,{class:[l.class,e],style:[l.style,...t]},de(this.$props,ca),{ref:Qe(a),onMouseenter:We([s,l.onMouseenter]),onMouseleave:We([n,l.onMouseleave])}),{header:()=>{var e,a;return null===(a=(e=this.$slots).header)||void 0===a?void 0:a.call(e)},action:()=>{var e,a;return null===(a=(e=this.$slots).action)||void 0===a?void 0:a.call(e)},empty:()=>{var e,a;return null===(a=(e=this.$slots).empty)||void 0===a?void 0:a.call(e)}})}};return P(ue,Object.assign({},Ve(this.$props,ca),a,{internalDeactivateImmediately:!0}),{trigger:()=>{var e,a;return null===(a=(e=this.$slots).default)||void 0===a?void 0:a.call(e)}})}}),ma="\n background: var(--n-item-color-hover);\n color: var(--n-item-text-color-hover);\n border: var(--n-item-border-hover);\n",ha=[g("button","\n background: var(--n-button-color-hover);\n border: var(--n-button-border-hover);\n color: var(--n-button-icon-color-hover);\n ")],fa=o("pagination","\n display: flex;\n vertical-align: middle;\n font-size: var(--n-item-font-size);\n flex-wrap: nowrap;\n",[o("pagination-prefix","\n display: flex;\n align-items: center;\n margin: var(--n-prefix-margin);\n "),o("pagination-suffix","\n display: flex;\n align-items: center;\n margin: var(--n-suffix-margin);\n "),u("> *:not(:first-child)","\n margin: var(--n-item-margin);\n "),o("select","\n width: var(--n-select-width);\n "),u("&.transition-disabled",[o("pagination-item","transition: none!important;")]),o("pagination-quick-jumper","\n white-space: nowrap;\n display: flex;\n color: var(--n-jumper-text-color);\n transition: color .3s var(--n-bezier);\n align-items: center;\n font-size: var(--n-jumper-font-size);\n ",[o("input","\n margin: var(--n-input-margin);\n width: var(--n-input-width);\n ")]),o("pagination-item","\n position: relative;\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: var(--n-item-size);\n height: var(--n-item-size);\n padding: var(--n-item-padding);\n background-color: var(--n-item-color);\n color: var(--n-item-text-color);\n border-radius: var(--n-item-border-radius);\n border: var(--n-item-border);\n fill: var(--n-button-icon-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n fill .3s var(--n-bezier);\n ",[g("button","\n background: var(--n-button-color);\n color: var(--n-button-icon-color);\n border: var(--n-button-border);\n padding: 0;\n ",[o("base-icon","\n font-size: var(--n-button-icon-size);\n ")]),i("disabled",[g("hover",ma,ha),u("&:hover",ma,ha),u("&:active","\n background: var(--n-item-color-pressed);\n color: var(--n-item-text-color-pressed);\n border: var(--n-item-border-pressed);\n ",[g("button","\n background: var(--n-button-color-pressed);\n border: var(--n-button-border-pressed);\n color: var(--n-button-icon-color-pressed);\n ")]),g("active","\n background: var(--n-item-color-active);\n color: var(--n-item-text-color-active);\n border: var(--n-item-border-active);\n ",[u("&:hover","\n background: var(--n-item-color-active-hover);\n ")])]),g("disabled","\n cursor: not-allowed;\n color: var(--n-item-text-color-disabled);\n ",[g("active, button","\n background-color: var(--n-item-color-disabled);\n border: var(--n-item-border-disabled);\n ")])]),g("disabled","\n cursor: not-allowed;\n ",[o("pagination-quick-jumper","\n color: var(--n-jumper-text-color-disabled);\n ")]),g("simple","\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n ",[o("pagination-quick-jumper",[o("input","\n margin: 0;\n ")])])]);function ga(e,a){const t=[];for(let s=e;s<=a;++s)t.push({label:`${s}`,value:s});return t}var ba=b({name:"Pagination",props:Object.assign(Object.assign({},t.props),{simple:Boolean,page:Number,defaultPage:{type:Number,default:1},itemCount:Number,pageCount:Number,defaultPageCount:{type:Number,default:1},showSizePicker:Boolean,pageSize:Number,defaultPageSize:Number,pageSizes:{type:Array,default:()=>[10]},showQuickJumper:Boolean,size:{type:String,default:"medium"},disabled:Boolean,pageSlot:{type:Number,default:9},selectProps:Object,prev:Function,next:Function,goto:Function,prefix:Function,suffix:Function,label:Function,displayOrder:{type:Array,default:["pages","size-picker","quick-jumper"]},to:oe.propTo,showQuickJumpDropdown:{type:Boolean,default:!0},"onUpdate:page":[Function,Array],onUpdatePage:[Function,Array],"onUpdate:pageSize":[Function,Array],onUpdatePageSize:[Function,Array],onPageSizeChange:[Function,Array],onChange:[Function,Array]}),slots:Object,setup(l){const{mergedComponentPropsRef:i,mergedClsPrefixRef:o,inlineThemeDisabled:u,mergedRtlRef:c}=r(l),p=t("Pagination","-pagination",fa,Se,l,o),{localeRef:v}=a("Pagination"),m=V(null),f=V(l.defaultPage),g=V(function(e){var a;if(!e)return 10;const{defaultPageSize:t}=e;if(void 0!==t)return t;const s=null===(a=e.pageSizes)||void 0===a?void 0:a[0];return"number"==typeof s?s:(null==s?void 0:s.value)||10}(l)),b=s(T(l,"page"),f),y=s(T(l,"pageSize"),g),w=N(()=>{const{itemCount:e}=l;if(void 0!==e)return Math.max(1,Math.ceil(e/y.value));const{pageCount:a}=l;return void 0!==a?Math.max(a,1):1}),k=V("");z(()=>{l.simple,k.value=String(b.value)});const C=V(!1),j=V(!1),P=V(!1),F=V(!1),_=N(()=>function(e,a,t,s){let n=!1,l=!1,i=1,o=a;if(1===a)return{hasFastBackward:!1,hasFastForward:!1,fastForwardTo:o,fastBackwardTo:i,items:[{type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1}]};if(2===a)return{hasFastBackward:!1,hasFastForward:!1,fastForwardTo:o,fastBackwardTo:i,items:[{type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1},{type:"page",label:2,active:2===e,mayBeFastBackward:!0,mayBeFastForward:!1}]};const r=a;let u=e,d=e;const c=(t-5)/2;d+=Math.ceil(c),d=Math.min(Math.max(d,1+t-3),r-2),u-=Math.floor(c),u=Math.max(Math.min(u,r-t+3),3);let p=!1,v=!1;u>3&&(p=!0),d<r-2&&(v=!0);const m=[];m.push({type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1}),p?(n=!0,i=u-1,m.push({type:"fast-backward",active:!1,label:void 0,options:s?ga(2,u-1):null})):r>=2&&m.push({type:"page",label:2,mayBeFastBackward:!0,mayBeFastForward:!1,active:2===e});for(let h=u;h<=d;++h)m.push({type:"page",label:h,mayBeFastBackward:!1,mayBeFastForward:!1,active:e===h});return v?(l=!0,o=d+1,m.push({type:"fast-forward",active:!1,label:void 0,options:s?ga(d+1,r-1):null})):d===r-2&&m[m.length-1].label!==r-1&&m.push({type:"page",mayBeFastForward:!0,mayBeFastBackward:!1,label:r-1,active:e===r-1}),m[m.length-1].label!==r&&m.push({type:"page",mayBeFastForward:!1,mayBeFastBackward:!1,label:r,active:e===r}),{hasFastBackward:n,hasFastForward:l,fastBackwardTo:i,fastForwardTo:o,items:m}}(b.value,w.value,l.pageSlot,l.showQuickJumpDropdown));z(()=>{_.value.hasFastBackward?_.value.hasFastForward||(C.value=!1,P.value=!1):(j.value=!1,F.value=!1)});const M=N(()=>{const e=v.value.selectionSuffix;return l.pageSizes.map(a=>"number"==typeof a?{label:`${a} / ${e}`,value:a}:a)}),I=N(()=>{var e,a;return(null===(a=null===(e=null==i?void 0:i.value)||void 0===e?void 0:e.Pagination)||void 0===a?void 0:a.inputSize)||ia(l.size)}),S=N(()=>{var e,a;return(null===(a=null===(e=null==i?void 0:i.value)||void 0===e?void 0:e.Pagination)||void 0===a?void 0:a.selectSize)||ia(l.size)}),B=N(()=>(b.value-1)*y.value),$=N(()=>{const e=b.value*y.value-1,{itemCount:a}=l;return void 0!==a&&e>a-1?a-1:e}),O=N(()=>{const{itemCount:e}=l;return void 0!==e?e:(l.pageCount||1)*y.value}),A=e("Pagination",c,o);function U(){x(()=>{var e;const{value:a}=m;a&&(a.classList.add("transition-disabled"),null===(e=m.value)||void 0===e||e.offsetWidth,a.classList.remove("transition-disabled"))})}function R(e){if(e===b.value)return;const{"onUpdate:page":a,onUpdatePage:t,onChange:s,simple:i}=l;a&&n(a,e),t&&n(t,e),s&&n(s,e),f.value=e,i&&(k.value=String(e))}z(()=>{b.value,y.value,U()});const D=N(()=>{const{size:e}=l,{self:{buttonBorder:a,buttonBorderHover:t,buttonBorderPressed:s,buttonIconColor:n,buttonIconColorHover:i,buttonIconColorPressed:o,itemTextColor:r,itemTextColorHover:u,itemTextColorPressed:d,itemTextColorActive:c,itemTextColorDisabled:v,itemColor:m,itemColorHover:f,itemColorPressed:g,itemColorActive:b,itemColorActiveHover:y,itemColorDisabled:w,itemBorder:k,itemBorderHover:C,itemBorderPressed:x,itemBorderActive:j,itemBorderDisabled:P,itemBorderRadius:F,jumperTextColor:_,jumperTextColorDisabled:z,buttonColor:M,buttonColorHover:I,buttonColorPressed:S,[h("itemPadding",e)]:B,[h("itemMargin",e)]:$,[h("inputWidth",e)]:N,[h("selectWidth",e)]:T,[h("inputMargin",e)]:O,[h("selectMargin",e)]:A,[h("jumperFontSize",e)]:U,[h("prefixMargin",e)]:R,[h("suffixMargin",e)]:D,[h("itemSize",e)]:E,[h("buttonIconSize",e)]:L,[h("itemFontSize",e)]:q,[`${h("itemMargin",e)}Rtl`]:H,[`${h("inputMargin",e)}Rtl`]:V},common:{cubicBezierEaseInOut:Q}}=p.value;return{"--n-prefix-margin":R,"--n-suffix-margin":D,"--n-item-font-size":q,"--n-select-width":T,"--n-select-margin":A,"--n-input-width":N,"--n-input-margin":O,"--n-input-margin-rtl":V,"--n-item-size":E,"--n-item-text-color":r,"--n-item-text-color-disabled":v,"--n-item-text-color-hover":u,"--n-item-text-color-active":c,"--n-item-text-color-pressed":d,"--n-item-color":m,"--n-item-color-hover":f,"--n-item-color-disabled":w,"--n-item-color-active":b,"--n-item-color-active-hover":y,"--n-item-color-pressed":g,"--n-item-border":k,"--n-item-border-hover":C,"--n-item-border-disabled":P,"--n-item-border-active":j,"--n-item-border-pressed":x,"--n-item-padding":B,"--n-item-border-radius":F,"--n-bezier":Q,"--n-jumper-font-size":U,"--n-jumper-text-color":_,"--n-jumper-text-color-disabled":z,"--n-item-margin":$,"--n-item-margin-rtl":H,"--n-button-icon-size":L,"--n-button-icon-color":n,"--n-button-icon-color-hover":i,"--n-button-icon-color-pressed":o,"--n-button-color-hover":I,"--n-button-color":M,"--n-button-color-pressed":S,"--n-button-border":a,"--n-button-border-hover":t,"--n-button-border-pressed":s}}),E=u?d("pagination",N(()=>{let e="";const{size:a}=l;return e+=a[0],e}),D,l):void 0;return{rtlEnabled:A,mergedClsPrefix:o,locale:v,selfRef:m,mergedPage:b,pageItems:N(()=>_.value.items),mergedItemCount:O,jumperValue:k,pageSizeOptions:M,mergedPageSize:y,inputSize:I,selectSize:S,mergedTheme:p,mergedPageCount:w,startIndex:B,endIndex:$,showFastForwardMenu:P,showFastBackwardMenu:F,fastForwardActive:C,fastBackwardActive:j,handleMenuSelect:e=>{R(e)},handleFastForwardMouseenter:()=>{l.disabled||(C.value=!0,U())},handleFastForwardMouseleave:()=>{l.disabled||(C.value=!1,U())},handleFastBackwardMouseenter:()=>{j.value=!0,U()},handleFastBackwardMouseleave:()=>{j.value=!1,U()},handleJumperInput:function(e){k.value=e.replace(/\D+/g,"")},handleBackwardClick:function(){l.disabled||R(Math.max(b.value-1,1))},handleForwardClick:function(){l.disabled||R(Math.min(b.value+1,w.value))},handlePageItemClick:function(e){if(!l.disabled)switch(e.type){case"page":R(e.label);break;case"fast-backward":l.disabled||R(Math.max(_.value.fastBackwardTo,1));break;case"fast-forward":l.disabled||R(Math.min(_.value.fastForwardTo,w.value))}},handleSizePickerChange:function(e){!function(e){if(e===y.value)return;const{"onUpdate:pageSize":a,onUpdatePageSize:t,onPageSizeChange:s}=l;a&&n(a,e),t&&n(t,e),s&&n(s,e),g.value=e,w.value<b.value&&R(w.value)}(e)},handleQuickJumperChange:function(){!function(){const e=Number.parseInt(k.value);Number.isNaN(e)||(R(Math.max(1,Math.min(e,w.value))),l.simple||(k.value=""))}()},cssVars:u?void 0:D,themeClass:null==E?void 0:E.themeClass,onRender:null==E?void 0:E.onRender}},render(){const{$slots:e,mergedClsPrefix:a,disabled:t,cssVars:s,mergedPage:n,mergedPageCount:l,pageItems:i,showSizePicker:o,showQuickJumper:r,mergedTheme:u,locale:d,inputSize:c,selectSize:v,mergedPageSize:m,pageSizeOptions:h,jumperValue:g,simple:b,prev:y,next:w,prefix:k,suffix:C,label:x,goto:j,handleJumperInput:F,handleSizePickerChange:_,handleBackwardClick:z,handlePageItemClick:M,handleForwardClick:I,handleQuickJumperChange:S,onRender:B}=this;null==B||B();const $=k||e.prefix,N=C||e.suffix,T=y||e.prev,O=w||e.next,A=x||e.label;return P("div",{ref:"selfRef",class:[`${a}-pagination`,this.themeClass,this.rtlEnabled&&`${a}-pagination--rtl`,t&&`${a}-pagination--disabled`,b&&`${a}-pagination--simple`],style:s},$?P("div",{class:`${a}-pagination-prefix`},$({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount})):null,this.displayOrder.map(e=>{switch(e){case"pages":return P(U,null,P("div",{class:[`${a}-pagination-item`,!T&&`${a}-pagination-item--button`,(n<=1||n>l||t)&&`${a}-pagination-item--disabled`],onClick:z},T?T({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount}):P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(we,null):P(ge,null)})),b?P(U,null,P("div",{class:`${a}-pagination-quick-jumper`},P(qe,{value:g,onUpdateValue:F,size:c,placeholder:"",disabled:t,theme:u.peers.Input,themeOverrides:u.peerOverrides.Input,onChange:S}))," /"," ",l):i.map((e,s)=>{let n,l,i;const{type:o}=e;switch(o){case"page":const t=e.label;n=A?A({type:"page",node:t,active:e.active}):t;break;case"fast-forward":const s=this.fastForwardActive?P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(ye,null):P(be,null)}):P(p,{clsPrefix:a},{default:()=>P(oa,null)});n=A?A({type:"fast-forward",node:s,active:this.fastForwardActive||this.showFastForwardMenu}):s,l=this.handleFastForwardMouseenter,i=this.handleFastForwardMouseleave;break;case"fast-backward":const o=this.fastBackwardActive?P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(be,null):P(ye,null)}):P(p,{clsPrefix:a},{default:()=>P(oa,null)});n=A?A({type:"fast-backward",node:o,active:this.fastBackwardActive||this.showFastBackwardMenu}):o,l=this.handleFastBackwardMouseenter,i=this.handleFastBackwardMouseleave}const r=P("div",{key:s,class:[`${a}-pagination-item`,e.active&&`${a}-pagination-item--active`,"page"!==o&&("fast-backward"===o&&this.showFastBackwardMenu||"fast-forward"===o&&this.showFastForwardMenu)&&`${a}-pagination-item--hover`,t&&`${a}-pagination-item--disabled`,"page"===o&&`${a}-pagination-item--clickable`],onClick:()=>{M(e)},onMouseenter:l,onMouseleave:i},n);if("page"!==o||e.mayBeFastBackward||e.mayBeFastForward){const a="page"===e.type?e.mayBeFastBackward?"fast-backward":"fast-forward":e.type;return"page"===e.type||e.options?P(va,{to:this.to,key:a,disabled:t,trigger:"hover",virtualScroll:!0,style:{width:"60px"},theme:u.peers.Popselect,themeOverrides:u.peerOverrides.Popselect,builtinThemeOverrides:{peers:{InternalSelectMenu:{height:"calc(var(--n-option-height) * 4.6)"}}},nodeProps:()=>({style:{justifyContent:"center"}}),show:"page"!==o&&("fast-backward"===o?this.showFastBackwardMenu:this.showFastForwardMenu),onUpdateShow:e=>{"page"!==o&&(e?"fast-backward"===o?this.showFastBackwardMenu=e:this.showFastForwardMenu=e:(this.showFastBackwardMenu=!1,this.showFastForwardMenu=!1))},options:"page"!==e.type&&e.options?e.options:[],onUpdateValue:this.handleMenuSelect,scrollable:!0,showCheckmark:!1},{default:()=>r}):r}return r}),P("div",{class:[`${a}-pagination-item`,!O&&`${a}-pagination-item--button`,{[`${a}-pagination-item--disabled`]:n<1||n>=l||t}],onClick:I},O?O({page:n,pageSize:m,pageCount:l,itemCount:this.mergedItemCount,startIndex:this.startIndex,endIndex:this.endIndex}):P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(ge,null):P(we,null)})));case"size-picker":return!b&&o?P(Fe,Object.assign({consistentMenuWidth:!1,placeholder:"",showCheckmark:!1,to:this.to},this.selectProps,{size:v,options:h,value:m,disabled:t,theme:u.peers.Select,themeOverrides:u.peerOverrides.Select,onUpdateValue:_})):null;case"quick-jumper":return!b&&r?P("div",{class:`${a}-pagination-quick-jumper`},j?j():f(this.$slots.goto,()=>[d.goto]),P(qe,{value:g,onUpdateValue:F,size:c,placeholder:"",disabled:t,theme:u.peers.Input,themeOverrides:u.peerOverrides.Input,onChange:S})):null;default:return null}}),N?P("div",{class:`${a}-pagination-suffix`},N({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount})):null)}}),ya={class:"project-instruction-panel"},wa={key:0,class:"unsupported-state"},ka={class:"resource-path"},Ca={__name:"ProjectInstructionPanel",props:{projectPath:{type:String,required:!0},platform:{type:String,required:!0},instruction:{type:Object,default:()=>({supported:!1,path:null,exists:!1,content:""})}},emits:["updated"],setup(e,{emit:a}){const t=e,s=a,n=re(),l=pe(),i=V(t.instruction.content||""),o=V(!1),r=V(!1);async function u(){o.value=!0;try{const e=await ta(t.projectPath,t.platform,i.value);i.value=e.content??i.value,s("updated",e),n.success("项目指令已保存")}catch(e){n.error(`保存项目指令失败:${e.message}`)}finally{o.value=!1}}function d(){l.warning({title:"删除项目指令",content:`确定删除 ${t.instruction.path} 吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{r.value=!0;try{const e=await na(t.projectPath,t.platform);i.value="",s("updated",e),n.success("项目指令已删除")}catch(e){n.error(`删除项目指令失败:${e.message}`)}finally{r.value=!1}}})}return B(()=>t.instruction,e=>{i.value=e?.content||""},{deep:!0}),(a,t)=>(S(),W("div",ya,[e.instruction?.supported?(S(),W(U,{key:1},[J("div",ka,"目标文件:"+$(e.instruction.path),1),_(L(qe),{value:i.value,"onUpdate:value":t[0]||(t[0]=e=>i.value=e),type:"textarea",rows:16,placeholder:"输入项目指令",disabled:o.value},null,8,["value","disabled"]),_(L(ze),{justify:"end",class:"actions"},{default:O(()=>[e.instruction.exists?(S(),M(L(v),{key:0,"data-action":"delete-instruction",type:"error",secondary:"",loading:r.value,onClick:d},{default:O(()=>[...t[1]||(t[1]=[w(" 删除文件 ",-1)])]),_:1},8,["loading"])):y("",!0),_(L(v),{"data-action":"save-instruction",type:"primary",loading:o.value,onClick:u},{default:O(()=>[...t[2]||(t[2]=[w(" 保存 ",-1)])]),_:1},8,["loading"])]),_:1}),_(L(_e),{depth:"3",class:"hint"},{default:O(()=>[...t[3]||(t[3]=[w(" 写入项目原生文件;修改后通常需要重新启动对应 CLI。 ",-1)])]),_:1})],64)):(S(),W("div",wa," 当前平台不提供项目指令文件 "))]))}},xa=m(Ca,[["__scopeId","data-v-f2f46409"]]),ja={class:"project-mcp-panel"},Pa={class:"panel-toolbar"},Fa={class:"resource-path"},_a={key:2,class:"server-list"},za={class:"server-info"},Ma={class:"server-title"},Ia={class:"server-spec"},Sa={__name:"ProjectMcpPanel",props:{projectPath:{type:String,required:!0},platform:{type:String,required:!0},mcp:{type:Object,default:()=>({supported:!0,servers:[]})}},emits:["updated"],setup(e,{emit:a}){const t=e,s=a,n=re(),l=pe(),i=V(!1),o=V(null),r=V(""),u=V(t.mcp),d=N(()=>u.value||t.mcp||{servers:[]}),c=N(()=>Array.isArray(d.value?.servers)?d.value.servers:[]),p=N(()=>c.value.some(e=>{const a=e.server||{};return Object.keys(a.env||{}).length>0||Object.keys(a.headers||{}).length>0}));function m(e){const a=e.server||{};return"stdio"===a.type?`${a.command||""} ${(a.args||[]).join(" ")}`.trim():a.url||a.type||"MCP"}function h(){o.value=null,i.value=!0}async function f(){i.value=!1,o.value=null,await g(),s("updated")}async function g(){const e=await Xe(t.projectPath,t.platform);u.value=e}return B(()=>t.mcp,e=>{u.value=e},{deep:!0}),B([()=>t.projectPath,()=>t.platform],()=>{t.projectPath&&t.platform&&g().catch(e=>n.error(`加载项目 MCP 失败:${e.message}`))}),(a,u)=>(S(),W("div",ja,[J("div",Pa,[J("span",Fa,"目标文件:"+$(d.value?.path||"当前平台未声明"),1),_(L(v),{size:"small",type:"primary",onClick:h},{default:O(()=>[...u[1]||(u[1]=[w(" 添加 MCP ",-1)])]),_:1})]),p.value?(S(),M(L(Te),{key:0,type:"warning",bordered:!1,style:{"margin-bottom":"12px"}},{default:O(()=>[...u[2]||(u[2]=[w(" 项目 MCP 配置中的静态密钥可能随项目进入 Git,请优先使用环境变量引用。 ",-1)])]),_:1})):y("",!0),0===c.value.length?(S(),M(L(Ue),{key:1,description:"暂无项目 MCP 服务器"})):(S(),W("div",_a,[(S(!0),W(U,null,j(c.value,e=>(S(),W("div",{key:e.id,class:"server-row"},[J("div",za,[J("div",Ma,$(e.id),1),J("div",Ia,$(m(e)),1)]),_(L(ze),{size:"small"},{default:O(()=>[_(L(v),{size:"tiny",loading:r.value===e.id,onClick:a=>async function(e){r.value=e.id;try{const a=await ea(t.projectPath,t.platform,e.id);a.success?n.success(`${e.id} 连接成功`):n.error(a.message||`${e.id} 连接失败`)}catch(a){n.error(`测试失败:${a.message}`)}finally{r.value=""}}(e)},{default:O(()=>[...u[3]||(u[3]=[w("测试",-1)])]),_:1},8,["loading","onClick"]),_(L(v),{size:"tiny",disabled:e.external,onClick:a=>function(e){o.value={id:e.id,...e},i.value=!0}(e)},{default:O(()=>[...u[4]||(u[4]=[w("编辑",-1)])]),_:1},8,["disabled","onClick"]),_(L(v),{size:"tiny",type:"error",secondary:"",disabled:e.external,onClick:a=>function(e){l.warning({title:"移除项目 MCP",content:`确定从当前项目移除 ${e.id} 吗?用户级配置不会被删除。`,positiveText:"移除",negativeText:"取消",onPositiveClick:async()=>{try{await aa(t.projectPath,t.platform,e.id),await g(),s("updated"),n.success("项目 MCP 已移除")}catch(a){n.error(`移除失败:${a.message}`)}}})}(e)},{default:O(()=>[...u[5]||(u[5]=[w("移除",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]))),128))])),_(fe,{visible:i.value,"onUpdate:visible":u[0]||(u[0]=e=>i.value=e),"editing-server":o.value,"existing-ids":c.value.map(e=>e.id),scope:"project","project-path":e.projectPath,platform:e.platform,onSaved:f},null,8,["visible","editing-server","existing-ids","project-path","platform"])]))}},Ba=m(Sa,[["__scopeId","data-v-1ebbb765"]]),$a={class:"project-config-content"},Na={class:"project-config-header"},Ta={key:0,class:"unsupported-state"},Oa={key:0,class:"unsupported-state"},Aa=m({__name:"ProjectConfigDrawer",props:{show:{type:Boolean,default:!1},projectPath:{type:String,default:""},platform:{type:String,default:"claude"}},emits:["update:show"],setup(e,{emit:a}){const t=e,s=a,{drawerWidth:n}=Ce(760),l=N({get:()=>t.show,set:e=>s("update:show",e)}),i=[{label:"Claude",value:"claude"},{label:"Codex",value:"codex"},{label:"Gemini",value:"gemini"},{label:"OpenCode",value:"opencode"},{label:"OMP",value:"omp"}],o=V(t.platform||"claude"),r=V("instruction"),u=V(null),d=V(!1),c=V(0);async function p(){if(!t.projectPath||!o.value)return;const e=++c.value;d.value=!0;try{const a=await sa(t.projectPath,o.value);if(e!==c.value)return;u.value=a}finally{e===c.value&&(d.value=!1)}}return B(l,e=>{e?(o.value=t.platform||"claude",r.value="instruction",p()):c.value+=1}),B([()=>t.projectPath,()=>t.platform,o],([e,a],t)=>{l.value&&e&&a&&(a===t?.[1]&&e===t?.[0]||p())}),I(()=>{l.value&&p()}),(a,t)=>(S(),M(L(ke),{show:l.value,"onUpdate:show":t[2]||(t[2]=e=>l.value=e),width:L(n),placement:"right","show-mask":!0},{default:O(()=>[_(L(xe),{title:"项目配置",closable:"","native-scrollbar":!1},{default:O(()=>[J("div",$a,[J("div",Na,[J("div",null,[t[3]||(t[3]=J("div",{class:"project-config-title"},"当前项目",-1)),_(L(_e),{depth:"3",class:"project-path"},{default:O(()=>[w($(e.projectPath),1)]),_:1})]),_(L(Fe),{value:o.value,"onUpdate:value":t[0]||(t[0]=e=>o.value=e),size:"small",options:i,disabled:d.value,style:{width:"130px"}},null,8,["value","disabled"])]),_(L(Me),{show:d.value},{default:O(()=>[_(L(he),{value:r.value,"onUpdate:value":t[1]||(t[1]=e=>r.value=e),type:"line",animated:""},{default:O(()=>[_(L(me),{name:"instruction",tab:"项目指令"},{default:O(()=>[_(xa,{"project-path":e.projectPath,platform:o.value,instruction:u.value?.instruction,onUpdated:p},null,8,["project-path","platform","instruction"])]),_:1}),_(L(me),{name:"skills",tab:"Skills"},{default:O(()=>[!1===u.value?.capabilities?.skills?(S(),W("div",Ta," 当前平台不提供项目 Skills ")):(S(),M(Pe,{key:1,platform:o.value,"project-path":e.projectPath,scope:"project","in-drawer":"","drawer-visible":l.value},null,8,["platform","project-path","drawer-visible"]))]),_:1}),_(L(me),{name:"mcp",tab:"MCP"},{default:O(()=>[!1===u.value?.capabilities?.mcp?(S(),W("div",Oa," 当前平台不提供项目 MCP ")):(S(),M(Ba,{key:1,"project-path":e.projectPath,platform:o.value,mcp:u.value?.mcp,onUpdated:p},null,8,["project-path","platform","mcp"]))]),_:1})]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-e9a405fe"]]),Ua={class:"session-list-container"},Ra={class:"header"},Da={class:"title-bar"},Ea={class:"title-section"},La={class:"title-with-count"},qa={class:"header-actions"},Ha={key:0,class:"loading-container"},Va={key:1,class:"loading-container compact"},Qa={key:3,class:"sessions-list"},Wa=["onMouseenter","onClick"],Ja={class:"session-left"},Ka={class:"session-icon"},Za={class:"session-info"},Ga={class:"session-header"},Ya={class:"session-title-row"},Xa={class:"session-title"},et={class:"session-meta"},at={class:"session-right"},tt={class:"session-tags-area"},st={key:0,class:"session-actions"},nt={key:0,style:{"max-height":"70vh","overflow-y":"auto"}},lt={class:"search-result-header"},it={class:"search-result-title"},ot="__full__",rt=m({__name:"SessionList",props:{projectName:{type:String,required:!0}},setup(e){const a=e,t=D(),s=H(),n=Ye(),{addFavorite:l,removeFavorite:i,isFavorite:o}=Ne(),r=N(()=>K(s)),u=V(a.projectName),d=N(()=>u.value||a.projectName),p=V(""),m=V(null),h=V(!1),f=V(null),g=V(""),b=V(null),k=V([]),P=V(1),F=V(null),z=V(!1),T=V(!1),ie=V(null),oe=V(!1),re=V(!1),ue=V([]),de=V(!1),ce=V(!1),pe=V(null),me=V(""),he=V(ot),fe=V(!1),ge=V(!1),be=V([]),ye=V(!1),we=V(""),ke=V(""),Ce=V(null);function xe(e){return"string"==typeof e&&(e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e)||e.startsWith("\\\\"))}const Pe=N(()=>{const e=d.value;return n.projects.find(a=>a.name===e)||n.projects.find(e=>e.displayName===a.projectName||e.fullPath===a.projectName||e.path===a.projectName)||null}),Se=N(()=>[n.currentProjectInfo?.fullPath,n.currentProjectInfo?.path,Pe.value?.fullPath,Pe.value?.path].find(xe)||""),Be=N(()=>n.currentProjectInfo?.displayName||Pe.value?.displayName||a.projectName),Oe=N(()=>Se.value||n.currentProjectInfo?.fullPath||Pe.value?.fullPath||Pe.value?.path||d.value),Ae=N(()=>new Set(ue.value)),De=N(()=>ue.value.length),Ee=N(()=>k.value.length>0&&k.value.every(e=>Ae.value.has(e.sessionId))),Ve=N(()=>De.value>0&&!Ee.value);async function Qe(){n.projects.length||await n.fetchProjects();const e=n.projects.find(e=>e.name===a.projectName);if(e)return u.value=e.name,e.name;const s=n.projects.find(e=>e.displayName===a.projectName||e.fullPath===a.projectName||e.path===a.projectName);return s?(u.value=s.name,s.name!==a.projectName&&await t.replace({name:"cli-sessions",params:{platform:r.value,projectName:s.name}}),s.name):(u.value=a.projectName,a.projectName)}async function We(e={}){const a=await Qe(),t=e.page??P.value,s=e.limit??n.sessionsPagination.limit;await n.fetchSessions(a,{page:t,limit:s,...e})}async function Xe(e){P.value=e,await We({page:e})}function ea(){t.push({name:"cli-projects",params:{platform:r.value}})}async function aa(){if(p.value){oe.value=!0;try{const e=await Ke(d.value,p.value,35,r.value);F.value=e,z.value=!0}catch(e){Re.error("搜索失败: "+e.message)}finally{oe.value=!1}}}function ta(){re.value=!0,b.value=null}function sa(){re.value=!1,ue.value=[],b.value=null}function na(e){return Ae.value.has(e)}function la(e,a=!na(e)){const t=new Set(ue.value);a?t.add(e):t.delete(e),ue.value=Array.from(t)}function ia(e){ue.value=e?k.value.map(e=>e.sessionId):[]}function oa(e){re.value?la(e.sessionId):function(e){we.value=e.sessionId,ke.value=e.alias||"",ye.value=!0,x(()=>{Ce.value?.open()})}(e)}async function ra(){if(f.value)try{const e=f.value.sessionId;g.value?(await n.setAlias(e,g.value),Re.success("别名设置成功")):(await n.deleteAlias(e),Re.success("别名已删除")),h.value=!1,f.value=null,g.value=""}catch(e){Re.error("操作失败: "+e.message)}}function ua(){ce.value=!1,pe.value=null,me.value="",he.value=ot,be.value=[],fe.value=!1,ge.value=!1}async function da(){if(pe.value)try{ge.value=!0,await n.forkSession(pe.value.sessionId,{afterUserMessageNumber:he.value===ot?null:he.value,alias:me.value?.trim()||void 0}),Re.success("Fork 成功!"),ua()}catch(e){Re.error("Fork 失败: "+e.message)}finally{ge.value=!1}}function ca(e){Re.error(e)}function pa(e){const a=new Set((e||[]).filter(Boolean));0!==a.size&&(ue.value=ue.value.filter(e=>!a.has(e)),we.value&&a.has(we.value)&&(ye.value=!1,we.value="",ke.value=""))}async function va(e){try{const{copyResult:a}=await Ze(d.value,e,r.value);if("manual"===a?.method)return void Re.warning("自动复制失败,已弹出手动复制框");Re.success("启动命令已复制到剪贴板")}catch(a){Re.error("复制失败: "+a.message)}}function ma(){if(0===De.value)return void Re.warning("请先选择要删除的会话");const e=[...ue.value];Ie.warning({title:"批量删除会话",content:`确定要删除选中的 ${e.length} 个会话吗?此操作不可恢复!`,positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{de.value=!0;try{const a=await n.deleteSessions(e);if(pa(a.deletedSessionIds),0===a.failed.length)return Re.success(`已删除 ${a.deletedSessionIds.length} 个会话`),void sa();ue.value=a.failed.map(e=>e.sessionId),a.deletedSessionIds.length>0?Re.warning(`已删除 ${a.deletedSessionIds.length} 个会话,${a.failed.length} 个删除失败`):Re.error(`删除失败: ${a.failed[0].error.message}`)}finally{de.value=!1}}})}function ha(e){if(!e)return"0 B";const a=1024;return e<a?e+" B":e<a*a?(e/a).toFixed(1)+" KB":(e/a/a).toFixed(1)+" MB"}function fa(e,a){if(!a||!e)return e;const t=new RegExp(`(${a})`,"gi");return e.replace(t,'<mark style="background-color: #ffd700; padding: 2px 4px; border-radius: 2px; font-weight: 600;">$1</mark>')}function ga(e,a=80){return e?e.length>a?e.substring(0,a)+"...":e:""}B(()=>n.sessionsWithAlias,e=>{k.value=[...e];const a=new Set(e.map(e=>e.sessionId));ue.value=ue.value.filter(e=>a.has(e)),re.value&&0===e.length&&sa()},{immediate:!0});let ya=0,wa=!1;async function ka(){if("visible"!==document.visibilityState||wa)return;const e=Date.now();if(!(e-ya<3e4)){wa=!0,ya=e;try{const e=ie.value?.scrollTop||0,a=await Qe();await n.fetchSessions(a,{page:P.value,limit:n.sessionsPagination.limit,force:!0,silent:!0,fresh:!0}),await x(),ie.value&&(ie.value.scrollTop=e)}finally{wa=!1}}}function Ca(){"visible"===document.visibilityState&&ka().catch(()=>{})}function xa(){ka().catch(()=>{})}function ja(e){(e.metaKey||e.ctrlKey)&&"k"===String(e.key).toLowerCase()&&(e.preventDefault(),m.value?.querySelector?.("input")?.focus?.())}return B([r,()=>a.projectName],([e])=>{T.value=!1,sa(),n.setChannel(e),P.value=1,We()},{immediate:!0}),I(()=>{document.addEventListener("visibilitychange",Ca),window.addEventListener("focus",xa),document.addEventListener("keydown",ja)}),C(()=>{document.removeEventListener("visibilitychange",Ca),window.removeEventListener("focus",xa),document.removeEventListener("keydown",ja)}),(e,a)=>(S(),W("div",Ua,[J("div",Ra,[J("div",Da,[_(L(v),{size:"small",onClick:ea,class:"back-button"},{icon:O(()=>[_(L(c),{size:"18"},{default:O(()=>[_(L(G))]),_:1})]),_:1}),J("div",Ea,[J("div",La,[_(L(je),null,{default:O(()=>[w($(Be.value),1)]),_:1}),_(L(_e),{depth:"3",class:"session-count"},{default:O(()=>[w("("+$(L(n).sessionsPagination.total)+" 个对话)",1)]),_:1}),_(L(He),{size:"small",bordered:!1,type:"info",class:"total-size-tag"},{default:O(()=>[w($(ha(L(n).totalSize)),1)]),_:1}),J("div",qa,[re.value?(S(),W(U,{key:0},[_(L(Le),{checked:Ee.value,indeterminate:Ve.value,disabled:0===k.value.length||de.value,"onUpdate:checked":ia},{default:O(()=>[...a[14]||(a[14]=[w(" 全选 ",-1)])]),_:1},8,["checked","indeterminate","disabled"]),_(L(_e),{depth:"3"},{default:O(()=>[w("已选 "+$(De.value)+" 个",1)]),_:1}),_(L(v),{size:"small",type:"error",disabled:0===De.value,loading:de.value,onClick:ma},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[15]||(a[15]=w(" 删除 ",-1))]),_:1},8,["disabled","loading"]),_(L(v),{size:"small",disabled:de.value,onClick:sa},{default:O(()=>[...a[16]||(a[16]=[w(" 完成 ",-1)])]),_:1},8,["disabled"])],64)):(S(),W(U,{key:1},[_(L(v),{size:"small",type:"error",secondary:"",onClick:ta},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[17]||(a[17]=w(" 管理 ",-1))]),_:1}),_(L(v),{size:"small",type:"primary",secondary:"",disabled:!Se.value,onClick:a[0]||(a[0]=e=>T.value=!0)},{default:O(()=>[...a[18]||(a[18]=[w(" 项目配置 ",-1)])]),_:1},8,["disabled"])],64))])]),_(L(_e),{depth:"3",class:"project-path"},{default:O(()=>[w($(Oe.value),1)]),_:1})]),J("div",{ref_key:"searchInputContainer",ref:m,class:"search-input-container"},[_(L(qe),{value:p.value,"onUpdate:value":a[1]||(a[1]=e=>p.value=e),placeholder:"搜索会话...(Cmd/Ctrl+K)",clearable:"",class:"search-input",onKeyup:q(aa,["enter"]),disabled:oe.value},{prefix:O(()=>[_(L(c),null,{default:O(()=>[_(L(ae))]),_:1})]),suffix:O(()=>[_(L(v),{text:"",onClick:aa,disabled:!p.value||oe.value,loading:oe.value},{default:O(()=>[...a[19]||(a[19]=[w(" 搜索 ",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["value","disabled"])],512)])]),J("div",{class:"content",ref_key:"contentEl",ref:ie},[L(n).loading&&0===L(n).sessions.length&&!L(n).sessionsPending?(S(),W("div",Ha,[_(L(Me),{size:"large"},{description:O(()=>[...a[20]||(a[20]=[w(" 加载会话列表... ",-1)])]),_:1})])):L(n).sessionsPending?(S(),W("div",Va,[_(L(Me),{size:"small"},{description:O(()=>[...a[21]||(a[21]=[w(" 正在生成会话列表... ",-1)])]),_:1})])):L(n).error&&0===L(n).sessions.length?(S(),M(L(Te),{key:2,type:"error",title:"加载失败",style:{"margin-bottom":"16px"}},{default:O(()=>[w($(L(n).error),1)]),_:1})):k.value.length>0?(S(),W("div",Qa,[(S(!0),W(U,null,j(k.value,e=>(S(),W("div",{key:e.sessionId},[J("div",{class:R(["session-item",{"session-item-selected":na(e.sessionId),"session-item-selection-mode":re.value}]),onMouseenter:a=>b.value=e.sessionId,onMouseleave:a[3]||(a[3]=e=>b.value=null),onClick:a=>oa(e)},[re.value?(S(),W("div",{key:0,class:"selection-checkbox",onClick:a[2]||(a[2]=E(()=>{},["stop"]))},[_(L(Le),{checked:na(e.sessionId),"onUpdate:checked":a=>la(e.sessionId,a)},null,8,["checked","onUpdate:checked"])])):y("",!0),J("div",Ja,[J("div",Ka,[_(L(c),{size:"24",color:"#18a058"},{default:O(()=>[_(L(Y))]),_:1})]),J("div",Za,[J("div",Ga,[J("div",Ya,[J("span",Xa,$(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId),1),e.forkedFrom?(S(),M(L($e),{key:0,placement:"top"},{trigger:O(()=>[_(L(He),{size:"small",type:"warning",bordered:!1,style:{"margin-left":"8px",cursor:"help"}},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[a[22]||(a[22]=w(" Fork ",-1))]),_:1})]),default:O(()=>[w(" Fork 自: "+$(e.forkedFrom),1)]),_:2},1024)):y("",!0)])]),J("div",et,[_(L(_e),{depth:"3"},{default:O(()=>{return[w($((a=e.mtime,a?new Date(a).toLocaleString("zh-CN"):"")),1)];var a}),_:2},1024),_(L(_e),{depth:"3"},{default:O(()=>[...a[23]||(a[23]=[w("•",-1)])]),_:1}),_(L(He),{size:"small",bordered:!1},{default:O(()=>[w($(ha(e.size)),1)]),_:2},1024)]),e.firstMessage?(S(),M(L(_e),{key:0,depth:"3",class:"session-message"},{default:O(()=>[w($(ga(e.firstMessage,80)),1)]),_:2},1024)):e.gitBranch||e.summary?y("",!0):(S(),M(L(_e),{key:1,depth:"3",class:"session-message session-message-empty"},{default:O(()=>[...a[24]||(a[24]=[w(" 暂未读取到对话内容 ",-1)])]),_:1}))])]),J("div",at,[J("div",tt,[e.gitBranch?(S(),M(L(He),{key:0,size:"small",type:"info",bordered:!1},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[w(" "+$(e.gitBranch),1)]),_:2},1024)):y("",!0)]),re.value?y("",!0):(S(),W("div",st,[_(L(ze),null,{default:O(()=>[Q(_(L(v),{size:"small",type:"error",onClick:E(a=>{return t=e.sessionId,void Ie.warning({title:"删除会话",content:"确定要删除这个会话吗?此操作不可恢复!",positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{try{await n.deleteSession(t),pa([t]),Re.success("会话已删除")}catch(e){Re.error("删除失败: "+e.message)}}});var t},["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[25]||(a[25]=w(" 删除 ",-1))]),_:1},8,["onClick"]),[[A,b.value===e.sessionId]]),_(L(v),{size:"small",onClick:E(a=>function(e){f.value=e,g.value=e.alias||"",h.value=!0}(e),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(ne))]),_:1})]),default:O(()=>[a[26]||(a[26]=w(" 别名 ",-1))]),_:1},8,["onClick"]),_(L(v),{size:"small",type:L(o)(r.value,d.value,e.sessionId)?"warning":"default",onClick:E(a=>async function(e){const a=r.value,t=o(a,d.value,e.sessionId);try{if(t)await i(a,d.value,e.sessionId),Re.success("已取消收藏");else{const t={sessionId:e.sessionId,projectName:d.value,projectDisplayName:Be.value,projectFullPath:Oe.value,alias:e.alias||"",firstMessage:e.firstMessage||"",mtime:e.mtime,size:e.size,gitBranch:e.gitBranch||"",forkedFrom:e.forkedFrom||""};await l(a,t),Re.success("已添加到收藏")}}catch(s){Re.error("操作失败: "+s.message)}}(e),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[L(o)(r.value,d.value,e.sessionId)?(S(),M(L(se),{key:0})):(S(),M(L(ee),{key:1}))]),_:2},1024)]),default:O(()=>[w(" "+$(L(o)(r.value,d.value,e.sessionId)?"已收藏":"收藏"),1)]),_:2},1032,["type","onClick"]),"opencode"!==r.value?(S(),M(L(v),{key:0,size:"small",onClick:E(a=>async function(e){if("opencode"!==r.value)try{const a=k.value.find(a=>a.sessionId===e);pe.value=a||{sessionId:e},me.value="",he.value=ot,be.value=[{label:"完整会话末尾(保留全部消息)",value:ot}],ce.value=!0,fe.value=!0;const t=await Je(d.value,e,r.value),s=Array.isArray(t?.items)?t.items:[];be.value=[{label:"完整会话末尾(保留全部消息)",value:ot},...s.map(e=>({label:`保留到第 ${e.userMessageNumber} 条用户消息这一轮 · ${e.preview}`,value:e.userMessageNumber}))]}catch(a){Re.error("加载 Fork 位置失败: "+a.message),ua()}finally{fe.value=!1}else Re.warning("OpenCode 当前不支持该 Fork 操作")}(e.sessionId),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[a[27]||(a[27]=w(" Fork ",-1))]),_:1},8,["onClick"])):y("",!0),_(L(v),{size:"small",type:"primary",onClick:E(a=>va(e.sessionId),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(te))]),_:1})]),default:O(()=>[a[28]||(a[28]=w(" 使用对话 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]))])],42,Wa)]))),128))])):y("",!0),L(n).sessionsPagination.total>L(n).sessionsPagination.limit?(S(),M(L(ba),{key:4,page:P.value,"onUpdate:page":[a[4]||(a[4]=e=>P.value=e),Xe],"page-count":Math.ceil(L(n).sessionsPagination.total/L(n).sessionsPagination.limit),"page-size":L(n).sessionsPagination.limit,"show-quick-jumper":"",class:"list-pagination"},null,8,["page","page-count","page-size"])):y("",!0),L(n).loading||L(n).error||L(n).sessionsPending||0!==k.value.length?y("",!0):(S(),M(L(Ue),{key:5,description:p.value?"当前页没有匹配的会话":"没有找到会话",style:{"margin-top":"60px"}},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(Z))]),_:1})]),_:1},8,["description"]))],512),_(L(ve),{show:h.value,"onUpdate:show":a[7]||(a[7]=e=>h.value=e),preset:"dialog",title:"设置别名"},{action:O(()=>[_(L(ze),null,{default:O(()=>[_(L(v),{onClick:a[6]||(a[6]=e=>h.value=!1)},{default:O(()=>[...a[29]||(a[29]=[w("取消",-1)])]),_:1}),_(L(v),{type:"primary",onClick:ra},{default:O(()=>[...a[30]||(a[30]=[w("确定",-1)])]),_:1})]),_:1})]),default:O(()=>[_(L(qe),{value:g.value,"onUpdate:value":a[5]||(a[5]=e=>g.value=e),placeholder:"输入别名(留空删除)",onKeyup:q(ra,["enter"])},null,8,["value"])]),_:1},8,["show"]),_(L(ve),{show:ce.value,"onUpdate:show":a[10]||(a[10]=e=>ce.value=e),preset:"dialog",title:"Fork 对话"},{action:O(()=>[_(L(ze),null,{default:O(()=>[_(L(v),{disabled:ge.value,onClick:ua},{default:O(()=>[...a[32]||(a[32]=[w("取消",-1)])]),_:1},8,["disabled"]),_(L(v),{type:"primary",loading:ge.value,onClick:da},{default:O(()=>[...a[33]||(a[33]=[w(" 确认 Fork ",-1)])]),_:1},8,["loading"])]),_:1})]),default:O(()=>[_(L(ze),{vertical:"",size:14},{default:O(()=>[_(L(_e),{depth:"3"},{default:O(()=>[...a[31]||(a[31]=[w(" 可选择保留到第几条用户消息所在轮次;会包含这条消息后 AI 的完整输出。 ",-1)])]),_:1}),_(L(Fe),{value:he.value,"onUpdate:value":a[8]||(a[8]=e=>he.value=e),options:be.value,loading:fe.value,clearable:"",placeholder:"选择保留到哪一轮(默认完整会话)"},null,8,["value","options","loading"]),_(L(qe),{value:me.value,"onUpdate:value":a[9]||(a[9]=e=>me.value=e),placeholder:"输入新会话别名(可选)",maxlength:"120"},null,8,["value"])]),_:1})]),_:1},8,["show"]),_(L(ve),{show:z.value,"onUpdate:show":a[11]||(a[11]=e=>z.value=e),preset:"card",title:"搜索结果",style:{width:"1200px"}},{default:O(()=>[F.value?(S(),W("div",nt,[_(L(Te),{type:"info",style:{"margin-bottom":"16px"}},{default:O(()=>[w(' 关键词 "'+$(F.value.keyword)+'" 共找到 '+$(F.value.totalMatches)+" 处匹配 ",1)]),_:1}),(S(!0),W(U,null,j(F.value.sessions,e=>(S(),W("div",{key:e.sessionId,class:"search-result-item"},[J("div",lt,[J("div",it,[_(L(_e),{strong:""},{default:O(()=>[w($(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId.substring(0,8)),1)]),_:2},1024),_(L(He),{size:"small",bordered:!1},{default:O(()=>[w($(e.matchCount)+" 个匹配",1)]),_:2},1024)]),_(L(v),{size:"small",type:"primary",onClick:a=>va(e.sessionId)},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(te))]),_:1})]),default:O(()=>[a[34]||(a[34]=w(" 使用对话 ",-1))]),_:1},8,["onClick"])]),(S(!0),W(U,null,j(e.matches,(e,a)=>(S(),W("div",{key:a,class:"search-match"},[_(L(He),{size:"tiny",type:"user"===e.role?"info":"success",bordered:!1},{default:O(()=>[w($("user"===e.role?"用户":"助手"),1)]),_:2},1032,["type"]),_(L(_e),{depth:"3",class:"search-match-text",innerHTML:fa(e.context,F.value.keyword)},null,8,["innerHTML"])]))),128))]))),128)),0===F.value.sessions.length?(S(),M(L(Ue),{key:0,description:"没有找到匹配的内容"})):y("",!0)])):y("",!0)]),_:1},8,["show"]),we.value?(S(),M(Ge,{key:0,ref_key:"chatHistoryRef",ref:Ce,show:ye.value,"onUpdate:show":a[12]||(a[12]=e=>ye.value=e),"project-name":d.value,"session-id":we.value,"session-alias":ke.value,channel:r.value,onError:ca},null,8,["show","project-name","session-id","session-alias","channel"])):y("",!0),_(Aa,{show:T.value,"onUpdate:show":a[13]||(a[13]=e=>T.value=e),"project-path":Se.value,platform:r.value},null,8,["show","project-path","platform"])]))}},[["__scopeId","data-v-66cfe9c9"]]);export{rt as default};
1
+ import{I as e,L as a,N as t,Qt as s,Tt as n,Yt as l,bn as i,gn as o,gt as r,hn as u,ht as d,i as c,j as p,s as v,t as m,xn as h,xt as f,yn as g}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as b,C as y,D as w,G as k,H as C,I as x,K as j,M as P,N as F,O as _,Q as z,S as M,V as I,W as S,Z as B,_t as $,b as N,dt as T,et as O,f as A,g as U,ht as R,i as D,m as E,mt as L,p as q,r as H,st as V,tt as Q,w as W,x as J}from"./vue-vendor-BqZbbXHA.js";import{i as K}from"./platforms-Cq6XDXfy.js";import{$ as Z,At as G,Ct as Y,U as X,c as ee,g as ae,i as te,l as se,nt as ne,r as le}from"./icons-B-AzZoeE.js";import{d as ie,k as oe,t as re,u as ue,x as de}from"./use-message-DBsCm7FJ.js";import{F as ce,S as pe,l as ve}from"./light-C2X7hegj.js";import{c as me,s as he}from"./AssetPathField-pfN6L814.js";import{t as fe}from"./McpFormDrawer-BUnW9j4A.js";import{i as ge,n as be,r as ye,t as we}from"./Forward-DLCL7aMY.js";import{n as ke,t as Ce}from"./useResponsiveDrawer-CTQPBATk.js";import{t as xe}from"./DrawerContent-ChXgZ1Xm.js";import{t as je}from"./headers-DbowkmZJ.js";import{t as Pe}from"./SkillsPanel-SnzwzqW5.js";import{$ as Fe,A as _e,H as ze,M as Me,O as Ie,Q as Se,Tt as Be,Y as $e,_ as Ne,ct as Te,dt as Oe,et as Ae,ft as Ue,k as Re,ot as De,pt as Ee,rt as Le,st as qe,ut as He,vt as Ve,xt as Qe,yt as We}from"./index-BKpL4XdU.js";import{c as Je,f as Ke,t as Ze}from"./sessions-DSLpMXCq.js";import Ge from"./ChatHistoryDrawer-nuUPRqje.js";import{t as Ye}from"./sessions-DJiJJgvg.js";import{i as Xe,l as ea,n as aa,o as ta,r as sa,t as na}from"./project-config-CzFKBw_m.js";var la={tiny:"mini",small:"tiny",medium:"small",large:"medium",huge:"large"};function ia(e){const a=la[e];if(void 0===a)throw new Error(`${e} has no smaller size.`);return a}var oa=b({name:"More",render:()=>P("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},P("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},P("g",{fill:"currentColor","fill-rule":"nonzero"},P("path",{d:"M4,7 C4.55228,7 5,7.44772 5,8 C5,8.55229 4.55228,9 4,9 C3.44772,9 3,8.55229 3,8 C3,7.44772 3.44772,7 4,7 Z M8,7 C8.55229,7 9,7.44772 9,8 C9,8.55229 8.55229,9 8,9 C7.44772,9 7,8.55229 7,8 C7,7.44772 7.44772,7 8,7 Z M12,7 C12.5523,7 13,7.44772 13,8 C13,8.55229 12.5523,9 12,9 C11.4477,9 11,8.55229 11,8 C11,7.44772 11.4477,7 12,7 Z"}))))}),ra=l("n-popselect"),ua=o("popselect-menu","\n box-shadow: var(--n-menu-box-shadow);\n"),da={multiple:Boolean,value:{type:[String,Number,Array],default:null},cancelable:Boolean,options:{type:Array,default:()=>[]},size:{type:String,default:"medium"},scrollable:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onMouseenter:Function,onMouseleave:Function,renderLabel:Function,showCheckmark:{type:Boolean,default:void 0},nodeProps:Function,virtualScroll:Boolean,onChange:[Function,Array]},ca=ce(da),pa=b({name:"PopselectPanel",props:da,setup(e){const a=F(ra),{mergedClsPrefixRef:s,inlineThemeDisabled:l}=r(e),i=t("Popselect","-pop-select",ua,Ae,a.props,s),o=N(()=>Ee(e.options,De("value","children")));function u(a,t){const{onUpdateValue:s,"onUpdate:value":l,onChange:i}=e;s&&n(s,a,t),l&&n(l,a,t),i&&n(i,a,t)}B(T(e,"options"),()=>{x(()=>{a.syncPosition()})});const c=N(()=>{const{self:{menuBoxShadow:e}}=i.value;return{"--n-menu-box-shadow":e}}),p=l?d("select",void 0,c,a.props):void 0;return{mergedTheme:a.mergedThemeRef,mergedClsPrefix:s,treeMate:o,handleToggle:function(t){!function(t){const{value:{getNode:s}}=o;if(e.multiple)if(Array.isArray(e.value)){const a=[],n=[];let l=!0;e.value.forEach(e=>{if(e===t)return void(l=!1);const i=s(e);i&&(a.push(i.key),n.push(i.rawNode))}),l&&(a.push(t),n.push(s(t).rawNode)),u(a,n)}else{const e=s(t);e&&u([t],[e.rawNode])}else if(e.value===t&&e.cancelable)u(null,null);else{const e=s(t);e&&u(t,e.rawNode);const{"onUpdate:show":l,onUpdateShow:i}=a.props;l&&n(l,!1),i&&n(i,!1),a.setShow(!1)}x(()=>{a.syncPosition()})}(t.key)},handleMenuMousedown:function(e){Be(e,"action")||Be(e,"empty")||Be(e,"header")||e.preventDefault()},cssVars:l?void 0:c,themeClass:null==p?void 0:p.themeClass,onRender:null==p?void 0:p.onRender}},render(){var e;return null===(e=this.onRender)||void 0===e||e.call(this),P(Oe,{clsPrefix:this.mergedClsPrefix,focusable:!0,nodeProps:this.nodeProps,class:[`${this.mergedClsPrefix}-popselect-menu`,this.themeClass],style:this.cssVars,theme:this.mergedTheme.peers.InternalSelectMenu,themeOverrides:this.mergedTheme.peerOverrides.InternalSelectMenu,multiple:this.multiple,treeMate:this.treeMate,size:this.size,value:this.value,virtualScroll:this.virtualScroll,scrollable:this.scrollable,renderLabel:this.renderLabel,onToggle:this.handleToggle,onMouseenter:this.onMouseenter,onMouseleave:this.onMouseenter,onMousedown:this.handleMenuMousedown,showCheckmark:this.showCheckmark},{header:()=>{var e,a;return(null===(a=(e=this.$slots).header)||void 0===a?void 0:a.call(e))||[]},action:()=>{var e,a;return(null===(a=(e=this.$slots).action)||void 0===a?void 0:a.call(e))||[]},empty:()=>{var e,a;return(null===(a=(e=this.$slots).empty)||void 0===a?void 0:a.call(e))||[]}})}}),va=b({name:"Popselect",props:Object.assign(Object.assign(Object.assign(Object.assign({},t.props),Ve(ie,["showArrow","arrow"])),{placement:Object.assign(Object.assign({},ie.placement),{default:"bottom"}),trigger:{type:String,default:"hover"}}),da),slots:Object,inheritAttrs:!1,__popover__:!0,setup(e){const{mergedClsPrefixRef:a}=r(e),s=t("Popselect","-popselect",void 0,Ae,e,a),n=V(null);function l(){var e;null===(e=n.value)||void 0===e||e.syncPosition()}function i(e){var a;null===(a=n.value)||void 0===a||a.setShow(e)}return k(ra,{props:e,mergedThemeRef:s,syncPosition:l,setShow:i}),Object.assign(Object.assign({},{syncPosition:l,setShow:i}),{popoverInstRef:n,mergedTheme:s})},render(){const{mergedTheme:e}=this,a={theme:e.peers.Popover,themeOverrides:e.peerOverrides.Popover,builtinThemeOverrides:{padding:"0"},ref:"popoverInstRef",internalRenderBody:(e,a,t,s,n)=>{const{$attrs:l}=this;return P(pa,Object.assign({},l,{class:[l.class,e],style:[l.style,...t]},de(this.$props,ca),{ref:Qe(a),onMouseenter:We([s,l.onMouseenter]),onMouseleave:We([n,l.onMouseleave])}),{header:()=>{var e,a;return null===(a=(e=this.$slots).header)||void 0===a?void 0:a.call(e)},action:()=>{var e,a;return null===(a=(e=this.$slots).action)||void 0===a?void 0:a.call(e)},empty:()=>{var e,a;return null===(a=(e=this.$slots).empty)||void 0===a?void 0:a.call(e)}})}};return P(ue,Object.assign({},Ve(this.$props,ca),a,{internalDeactivateImmediately:!0}),{trigger:()=>{var e,a;return null===(a=(e=this.$slots).default)||void 0===a?void 0:a.call(e)}})}}),ma="\n background: var(--n-item-color-hover);\n color: var(--n-item-text-color-hover);\n border: var(--n-item-border-hover);\n",ha=[g("button","\n background: var(--n-button-color-hover);\n border: var(--n-button-border-hover);\n color: var(--n-button-icon-color-hover);\n ")],fa=o("pagination","\n display: flex;\n vertical-align: middle;\n font-size: var(--n-item-font-size);\n flex-wrap: nowrap;\n",[o("pagination-prefix","\n display: flex;\n align-items: center;\n margin: var(--n-prefix-margin);\n "),o("pagination-suffix","\n display: flex;\n align-items: center;\n margin: var(--n-suffix-margin);\n "),u("> *:not(:first-child)","\n margin: var(--n-item-margin);\n "),o("select","\n width: var(--n-select-width);\n "),u("&.transition-disabled",[o("pagination-item","transition: none!important;")]),o("pagination-quick-jumper","\n white-space: nowrap;\n display: flex;\n color: var(--n-jumper-text-color);\n transition: color .3s var(--n-bezier);\n align-items: center;\n font-size: var(--n-jumper-font-size);\n ",[o("input","\n margin: var(--n-input-margin);\n width: var(--n-input-width);\n ")]),o("pagination-item","\n position: relative;\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: var(--n-item-size);\n height: var(--n-item-size);\n padding: var(--n-item-padding);\n background-color: var(--n-item-color);\n color: var(--n-item-text-color);\n border-radius: var(--n-item-border-radius);\n border: var(--n-item-border);\n fill: var(--n-button-icon-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n fill .3s var(--n-bezier);\n ",[g("button","\n background: var(--n-button-color);\n color: var(--n-button-icon-color);\n border: var(--n-button-border);\n padding: 0;\n ",[o("base-icon","\n font-size: var(--n-button-icon-size);\n ")]),i("disabled",[g("hover",ma,ha),u("&:hover",ma,ha),u("&:active","\n background: var(--n-item-color-pressed);\n color: var(--n-item-text-color-pressed);\n border: var(--n-item-border-pressed);\n ",[g("button","\n background: var(--n-button-color-pressed);\n border: var(--n-button-border-pressed);\n color: var(--n-button-icon-color-pressed);\n ")]),g("active","\n background: var(--n-item-color-active);\n color: var(--n-item-text-color-active);\n border: var(--n-item-border-active);\n ",[u("&:hover","\n background: var(--n-item-color-active-hover);\n ")])]),g("disabled","\n cursor: not-allowed;\n color: var(--n-item-text-color-disabled);\n ",[g("active, button","\n background-color: var(--n-item-color-disabled);\n border: var(--n-item-border-disabled);\n ")])]),g("disabled","\n cursor: not-allowed;\n ",[o("pagination-quick-jumper","\n color: var(--n-jumper-text-color-disabled);\n ")]),g("simple","\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n ",[o("pagination-quick-jumper",[o("input","\n margin: 0;\n ")])])]);function ga(e,a){const t=[];for(let s=e;s<=a;++s)t.push({label:`${s}`,value:s});return t}var ba=b({name:"Pagination",props:Object.assign(Object.assign({},t.props),{simple:Boolean,page:Number,defaultPage:{type:Number,default:1},itemCount:Number,pageCount:Number,defaultPageCount:{type:Number,default:1},showSizePicker:Boolean,pageSize:Number,defaultPageSize:Number,pageSizes:{type:Array,default:()=>[10]},showQuickJumper:Boolean,size:{type:String,default:"medium"},disabled:Boolean,pageSlot:{type:Number,default:9},selectProps:Object,prev:Function,next:Function,goto:Function,prefix:Function,suffix:Function,label:Function,displayOrder:{type:Array,default:["pages","size-picker","quick-jumper"]},to:oe.propTo,showQuickJumpDropdown:{type:Boolean,default:!0},"onUpdate:page":[Function,Array],onUpdatePage:[Function,Array],"onUpdate:pageSize":[Function,Array],onUpdatePageSize:[Function,Array],onPageSizeChange:[Function,Array],onChange:[Function,Array]}),slots:Object,setup(l){const{mergedComponentPropsRef:i,mergedClsPrefixRef:o,inlineThemeDisabled:u,mergedRtlRef:c}=r(l),p=t("Pagination","-pagination",fa,Se,l,o),{localeRef:v}=a("Pagination"),m=V(null),f=V(l.defaultPage),g=V(function(e){var a;if(!e)return 10;const{defaultPageSize:t}=e;if(void 0!==t)return t;const s=null===(a=e.pageSizes)||void 0===a?void 0:a[0];return"number"==typeof s?s:(null==s?void 0:s.value)||10}(l)),b=s(T(l,"page"),f),y=s(T(l,"pageSize"),g),w=N(()=>{const{itemCount:e}=l;if(void 0!==e)return Math.max(1,Math.ceil(e/y.value));const{pageCount:a}=l;return void 0!==a?Math.max(a,1):1}),k=V("");z(()=>{l.simple,k.value=String(b.value)});const C=V(!1),j=V(!1),P=V(!1),F=V(!1),_=N(()=>function(e,a,t,s){let n=!1,l=!1,i=1,o=a;if(1===a)return{hasFastBackward:!1,hasFastForward:!1,fastForwardTo:o,fastBackwardTo:i,items:[{type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1}]};if(2===a)return{hasFastBackward:!1,hasFastForward:!1,fastForwardTo:o,fastBackwardTo:i,items:[{type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1},{type:"page",label:2,active:2===e,mayBeFastBackward:!0,mayBeFastForward:!1}]};const r=a;let u=e,d=e;const c=(t-5)/2;d+=Math.ceil(c),d=Math.min(Math.max(d,1+t-3),r-2),u-=Math.floor(c),u=Math.max(Math.min(u,r-t+3),3);let p=!1,v=!1;u>3&&(p=!0),d<r-2&&(v=!0);const m=[];m.push({type:"page",label:1,active:1===e,mayBeFastBackward:!1,mayBeFastForward:!1}),p?(n=!0,i=u-1,m.push({type:"fast-backward",active:!1,label:void 0,options:s?ga(2,u-1):null})):r>=2&&m.push({type:"page",label:2,mayBeFastBackward:!0,mayBeFastForward:!1,active:2===e});for(let h=u;h<=d;++h)m.push({type:"page",label:h,mayBeFastBackward:!1,mayBeFastForward:!1,active:e===h});return v?(l=!0,o=d+1,m.push({type:"fast-forward",active:!1,label:void 0,options:s?ga(d+1,r-1):null})):d===r-2&&m[m.length-1].label!==r-1&&m.push({type:"page",mayBeFastForward:!0,mayBeFastBackward:!1,label:r-1,active:e===r-1}),m[m.length-1].label!==r&&m.push({type:"page",mayBeFastForward:!1,mayBeFastBackward:!1,label:r,active:e===r}),{hasFastBackward:n,hasFastForward:l,fastBackwardTo:i,fastForwardTo:o,items:m}}(b.value,w.value,l.pageSlot,l.showQuickJumpDropdown));z(()=>{_.value.hasFastBackward?_.value.hasFastForward||(C.value=!1,P.value=!1):(j.value=!1,F.value=!1)});const M=N(()=>{const e=v.value.selectionSuffix;return l.pageSizes.map(a=>"number"==typeof a?{label:`${a} / ${e}`,value:a}:a)}),I=N(()=>{var e,a;return(null===(a=null===(e=null==i?void 0:i.value)||void 0===e?void 0:e.Pagination)||void 0===a?void 0:a.inputSize)||ia(l.size)}),S=N(()=>{var e,a;return(null===(a=null===(e=null==i?void 0:i.value)||void 0===e?void 0:e.Pagination)||void 0===a?void 0:a.selectSize)||ia(l.size)}),B=N(()=>(b.value-1)*y.value),$=N(()=>{const e=b.value*y.value-1,{itemCount:a}=l;return void 0!==a&&e>a-1?a-1:e}),O=N(()=>{const{itemCount:e}=l;return void 0!==e?e:(l.pageCount||1)*y.value}),A=e("Pagination",c,o);function U(){x(()=>{var e;const{value:a}=m;a&&(a.classList.add("transition-disabled"),null===(e=m.value)||void 0===e||e.offsetWidth,a.classList.remove("transition-disabled"))})}function R(e){if(e===b.value)return;const{"onUpdate:page":a,onUpdatePage:t,onChange:s,simple:i}=l;a&&n(a,e),t&&n(t,e),s&&n(s,e),f.value=e,i&&(k.value=String(e))}z(()=>{b.value,y.value,U()});const D=N(()=>{const{size:e}=l,{self:{buttonBorder:a,buttonBorderHover:t,buttonBorderPressed:s,buttonIconColor:n,buttonIconColorHover:i,buttonIconColorPressed:o,itemTextColor:r,itemTextColorHover:u,itemTextColorPressed:d,itemTextColorActive:c,itemTextColorDisabled:v,itemColor:m,itemColorHover:f,itemColorPressed:g,itemColorActive:b,itemColorActiveHover:y,itemColorDisabled:w,itemBorder:k,itemBorderHover:C,itemBorderPressed:x,itemBorderActive:j,itemBorderDisabled:P,itemBorderRadius:F,jumperTextColor:_,jumperTextColorDisabled:z,buttonColor:M,buttonColorHover:I,buttonColorPressed:S,[h("itemPadding",e)]:B,[h("itemMargin",e)]:$,[h("inputWidth",e)]:N,[h("selectWidth",e)]:T,[h("inputMargin",e)]:O,[h("selectMargin",e)]:A,[h("jumperFontSize",e)]:U,[h("prefixMargin",e)]:R,[h("suffixMargin",e)]:D,[h("itemSize",e)]:E,[h("buttonIconSize",e)]:L,[h("itemFontSize",e)]:q,[`${h("itemMargin",e)}Rtl`]:H,[`${h("inputMargin",e)}Rtl`]:V},common:{cubicBezierEaseInOut:Q}}=p.value;return{"--n-prefix-margin":R,"--n-suffix-margin":D,"--n-item-font-size":q,"--n-select-width":T,"--n-select-margin":A,"--n-input-width":N,"--n-input-margin":O,"--n-input-margin-rtl":V,"--n-item-size":E,"--n-item-text-color":r,"--n-item-text-color-disabled":v,"--n-item-text-color-hover":u,"--n-item-text-color-active":c,"--n-item-text-color-pressed":d,"--n-item-color":m,"--n-item-color-hover":f,"--n-item-color-disabled":w,"--n-item-color-active":b,"--n-item-color-active-hover":y,"--n-item-color-pressed":g,"--n-item-border":k,"--n-item-border-hover":C,"--n-item-border-disabled":P,"--n-item-border-active":j,"--n-item-border-pressed":x,"--n-item-padding":B,"--n-item-border-radius":F,"--n-bezier":Q,"--n-jumper-font-size":U,"--n-jumper-text-color":_,"--n-jumper-text-color-disabled":z,"--n-item-margin":$,"--n-item-margin-rtl":H,"--n-button-icon-size":L,"--n-button-icon-color":n,"--n-button-icon-color-hover":i,"--n-button-icon-color-pressed":o,"--n-button-color-hover":I,"--n-button-color":M,"--n-button-color-pressed":S,"--n-button-border":a,"--n-button-border-hover":t,"--n-button-border-pressed":s}}),E=u?d("pagination",N(()=>{let e="";const{size:a}=l;return e+=a[0],e}),D,l):void 0;return{rtlEnabled:A,mergedClsPrefix:o,locale:v,selfRef:m,mergedPage:b,pageItems:N(()=>_.value.items),mergedItemCount:O,jumperValue:k,pageSizeOptions:M,mergedPageSize:y,inputSize:I,selectSize:S,mergedTheme:p,mergedPageCount:w,startIndex:B,endIndex:$,showFastForwardMenu:P,showFastBackwardMenu:F,fastForwardActive:C,fastBackwardActive:j,handleMenuSelect:e=>{R(e)},handleFastForwardMouseenter:()=>{l.disabled||(C.value=!0,U())},handleFastForwardMouseleave:()=>{l.disabled||(C.value=!1,U())},handleFastBackwardMouseenter:()=>{j.value=!0,U()},handleFastBackwardMouseleave:()=>{j.value=!1,U()},handleJumperInput:function(e){k.value=e.replace(/\D+/g,"")},handleBackwardClick:function(){l.disabled||R(Math.max(b.value-1,1))},handleForwardClick:function(){l.disabled||R(Math.min(b.value+1,w.value))},handlePageItemClick:function(e){if(!l.disabled)switch(e.type){case"page":R(e.label);break;case"fast-backward":l.disabled||R(Math.max(_.value.fastBackwardTo,1));break;case"fast-forward":l.disabled||R(Math.min(_.value.fastForwardTo,w.value))}},handleSizePickerChange:function(e){!function(e){if(e===y.value)return;const{"onUpdate:pageSize":a,onUpdatePageSize:t,onPageSizeChange:s}=l;a&&n(a,e),t&&n(t,e),s&&n(s,e),g.value=e,w.value<b.value&&R(w.value)}(e)},handleQuickJumperChange:function(){!function(){const e=Number.parseInt(k.value);Number.isNaN(e)||(R(Math.max(1,Math.min(e,w.value))),l.simple||(k.value=""))}()},cssVars:u?void 0:D,themeClass:null==E?void 0:E.themeClass,onRender:null==E?void 0:E.onRender}},render(){const{$slots:e,mergedClsPrefix:a,disabled:t,cssVars:s,mergedPage:n,mergedPageCount:l,pageItems:i,showSizePicker:o,showQuickJumper:r,mergedTheme:u,locale:d,inputSize:c,selectSize:v,mergedPageSize:m,pageSizeOptions:h,jumperValue:g,simple:b,prev:y,next:w,prefix:k,suffix:C,label:x,goto:j,handleJumperInput:F,handleSizePickerChange:_,handleBackwardClick:z,handlePageItemClick:M,handleForwardClick:I,handleQuickJumperChange:S,onRender:B}=this;null==B||B();const $=k||e.prefix,N=C||e.suffix,T=y||e.prev,O=w||e.next,A=x||e.label;return P("div",{ref:"selfRef",class:[`${a}-pagination`,this.themeClass,this.rtlEnabled&&`${a}-pagination--rtl`,t&&`${a}-pagination--disabled`,b&&`${a}-pagination--simple`],style:s},$?P("div",{class:`${a}-pagination-prefix`},$({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount})):null,this.displayOrder.map(e=>{switch(e){case"pages":return P(U,null,P("div",{class:[`${a}-pagination-item`,!T&&`${a}-pagination-item--button`,(n<=1||n>l||t)&&`${a}-pagination-item--disabled`],onClick:z},T?T({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount}):P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(we,null):P(ge,null)})),b?P(U,null,P("div",{class:`${a}-pagination-quick-jumper`},P(qe,{value:g,onUpdateValue:F,size:c,placeholder:"",disabled:t,theme:u.peers.Input,themeOverrides:u.peerOverrides.Input,onChange:S}))," /"," ",l):i.map((e,s)=>{let n,l,i;const{type:o}=e;switch(o){case"page":const t=e.label;n=A?A({type:"page",node:t,active:e.active}):t;break;case"fast-forward":const s=this.fastForwardActive?P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(ye,null):P(be,null)}):P(p,{clsPrefix:a},{default:()=>P(oa,null)});n=A?A({type:"fast-forward",node:s,active:this.fastForwardActive||this.showFastForwardMenu}):s,l=this.handleFastForwardMouseenter,i=this.handleFastForwardMouseleave;break;case"fast-backward":const o=this.fastBackwardActive?P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(be,null):P(ye,null)}):P(p,{clsPrefix:a},{default:()=>P(oa,null)});n=A?A({type:"fast-backward",node:o,active:this.fastBackwardActive||this.showFastBackwardMenu}):o,l=this.handleFastBackwardMouseenter,i=this.handleFastBackwardMouseleave}const r=P("div",{key:s,class:[`${a}-pagination-item`,e.active&&`${a}-pagination-item--active`,"page"!==o&&("fast-backward"===o&&this.showFastBackwardMenu||"fast-forward"===o&&this.showFastForwardMenu)&&`${a}-pagination-item--hover`,t&&`${a}-pagination-item--disabled`,"page"===o&&`${a}-pagination-item--clickable`],onClick:()=>{M(e)},onMouseenter:l,onMouseleave:i},n);if("page"!==o||e.mayBeFastBackward||e.mayBeFastForward){const a="page"===e.type?e.mayBeFastBackward?"fast-backward":"fast-forward":e.type;return"page"===e.type||e.options?P(va,{to:this.to,key:a,disabled:t,trigger:"hover",virtualScroll:!0,style:{width:"60px"},theme:u.peers.Popselect,themeOverrides:u.peerOverrides.Popselect,builtinThemeOverrides:{peers:{InternalSelectMenu:{height:"calc(var(--n-option-height) * 4.6)"}}},nodeProps:()=>({style:{justifyContent:"center"}}),show:"page"!==o&&("fast-backward"===o?this.showFastBackwardMenu:this.showFastForwardMenu),onUpdateShow:e=>{"page"!==o&&(e?"fast-backward"===o?this.showFastBackwardMenu=e:this.showFastForwardMenu=e:(this.showFastBackwardMenu=!1,this.showFastForwardMenu=!1))},options:"page"!==e.type&&e.options?e.options:[],onUpdateValue:this.handleMenuSelect,scrollable:!0,showCheckmark:!1},{default:()=>r}):r}return r}),P("div",{class:[`${a}-pagination-item`,!O&&`${a}-pagination-item--button`,{[`${a}-pagination-item--disabled`]:n<1||n>=l||t}],onClick:I},O?O({page:n,pageSize:m,pageCount:l,itemCount:this.mergedItemCount,startIndex:this.startIndex,endIndex:this.endIndex}):P(p,{clsPrefix:a},{default:()=>this.rtlEnabled?P(ge,null):P(we,null)})));case"size-picker":return!b&&o?P(Fe,Object.assign({consistentMenuWidth:!1,placeholder:"",showCheckmark:!1,to:this.to},this.selectProps,{size:v,options:h,value:m,disabled:t,theme:u.peers.Select,themeOverrides:u.peerOverrides.Select,onUpdateValue:_})):null;case"quick-jumper":return!b&&r?P("div",{class:`${a}-pagination-quick-jumper`},j?j():f(this.$slots.goto,()=>[d.goto]),P(qe,{value:g,onUpdateValue:F,size:c,placeholder:"",disabled:t,theme:u.peers.Input,themeOverrides:u.peerOverrides.Input,onChange:S})):null;default:return null}}),N?P("div",{class:`${a}-pagination-suffix`},N({page:n,pageSize:m,pageCount:l,startIndex:this.startIndex,endIndex:this.endIndex,itemCount:this.mergedItemCount})):null)}}),ya={class:"project-instruction-panel"},wa={key:0,class:"unsupported-state"},ka={class:"resource-path"},Ca={__name:"ProjectInstructionPanel",props:{projectPath:{type:String,required:!0},platform:{type:String,required:!0},instruction:{type:Object,default:()=>({supported:!1,path:null,exists:!1,content:""})}},emits:["updated"],setup(e,{emit:a}){const t=e,s=a,n=re(),l=pe(),i=V(t.instruction.content||""),o=V(!1),r=V(!1);async function u(){o.value=!0;try{const e=await ta(t.projectPath,t.platform,i.value);i.value=e.content??i.value,s("updated",e),n.success("项目指令已保存")}catch(e){n.error(`保存项目指令失败:${e.message}`)}finally{o.value=!1}}function d(){l.warning({title:"删除项目指令",content:`确定删除 ${t.instruction.path} 吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{r.value=!0;try{const e=await na(t.projectPath,t.platform);i.value="",s("updated",e),n.success("项目指令已删除")}catch(e){n.error(`删除项目指令失败:${e.message}`)}finally{r.value=!1}}})}return B(()=>t.instruction,e=>{i.value=e?.content||""},{deep:!0}),(a,t)=>(S(),W("div",ya,[e.instruction?.supported?(S(),W(U,{key:1},[J("div",ka,"目标文件:"+$(e.instruction.path),1),_(L(qe),{value:i.value,"onUpdate:value":t[0]||(t[0]=e=>i.value=e),type:"textarea",rows:16,placeholder:"输入项目指令",disabled:o.value},null,8,["value","disabled"]),_(L(ze),{justify:"end",class:"actions"},{default:O(()=>[e.instruction.exists?(S(),M(L(v),{key:0,"data-action":"delete-instruction",type:"error",secondary:"",loading:r.value,onClick:d},{default:O(()=>[...t[1]||(t[1]=[w(" 删除文件 ",-1)])]),_:1},8,["loading"])):y("",!0),_(L(v),{"data-action":"save-instruction",type:"primary",loading:o.value,onClick:u},{default:O(()=>[...t[2]||(t[2]=[w(" 保存 ",-1)])]),_:1},8,["loading"])]),_:1}),_(L(_e),{depth:"3",class:"hint"},{default:O(()=>[...t[3]||(t[3]=[w(" 写入项目原生文件;修改后通常需要重新启动对应 CLI。 ",-1)])]),_:1})],64)):(S(),W("div",wa," 当前平台不提供项目指令文件 "))]))}},xa=m(Ca,[["__scopeId","data-v-f2f46409"]]),ja={class:"project-mcp-panel"},Pa={class:"panel-toolbar"},Fa={class:"resource-path"},_a={key:2,class:"server-list"},za={class:"server-info"},Ma={class:"server-title"},Ia={class:"server-spec"},Sa={__name:"ProjectMcpPanel",props:{projectPath:{type:String,required:!0},platform:{type:String,required:!0},mcp:{type:Object,default:()=>({supported:!0,servers:[]})}},emits:["updated"],setup(e,{emit:a}){const t=e,s=a,n=re(),l=pe(),i=V(!1),o=V(null),r=V(""),u=V(t.mcp),d=N(()=>u.value||t.mcp||{servers:[]}),c=N(()=>Array.isArray(d.value?.servers)?d.value.servers:[]),p=N(()=>c.value.some(e=>{const a=e.server||{};return Object.keys(a.env||{}).length>0||Object.keys(a.headers||{}).length>0}));function m(e){const a=e.server||{};return"stdio"===a.type?`${a.command||""} ${(a.args||[]).join(" ")}`.trim():a.url||a.type||"MCP"}function h(){o.value=null,i.value=!0}async function f(){i.value=!1,o.value=null,await g(),s("updated")}async function g(){const e=await Xe(t.projectPath,t.platform);u.value=e}return B(()=>t.mcp,e=>{u.value=e},{deep:!0}),B([()=>t.projectPath,()=>t.platform],()=>{t.projectPath&&t.platform&&g().catch(e=>n.error(`加载项目 MCP 失败:${e.message}`))}),(a,u)=>(S(),W("div",ja,[J("div",Pa,[J("span",Fa,"目标文件:"+$(d.value?.path||"当前平台未声明"),1),_(L(v),{size:"small",type:"primary",onClick:h},{default:O(()=>[...u[1]||(u[1]=[w(" 添加 MCP ",-1)])]),_:1})]),p.value?(S(),M(L(Te),{key:0,type:"warning",bordered:!1,style:{"margin-bottom":"12px"}},{default:O(()=>[...u[2]||(u[2]=[w(" 项目 MCP 配置中的静态密钥可能随项目进入 Git,请优先使用环境变量引用。 ",-1)])]),_:1})):y("",!0),0===c.value.length?(S(),M(L(Ue),{key:1,description:"暂无项目 MCP 服务器"})):(S(),W("div",_a,[(S(!0),W(U,null,j(c.value,e=>(S(),W("div",{key:e.id,class:"server-row"},[J("div",za,[J("div",Ma,$(e.id),1),J("div",Ia,$(m(e)),1)]),_(L(ze),{size:"small"},{default:O(()=>[_(L(v),{size:"tiny",loading:r.value===e.id,onClick:a=>async function(e){r.value=e.id;try{const a=await ea(t.projectPath,t.platform,e.id);a.success?n.success(`${e.id} 连接成功`):n.error(a.message||`${e.id} 连接失败`)}catch(a){n.error(`测试失败:${a.message}`)}finally{r.value=""}}(e)},{default:O(()=>[...u[3]||(u[3]=[w("测试",-1)])]),_:1},8,["loading","onClick"]),_(L(v),{size:"tiny",disabled:e.external,onClick:a=>function(e){o.value={id:e.id,...e},i.value=!0}(e)},{default:O(()=>[...u[4]||(u[4]=[w("编辑",-1)])]),_:1},8,["disabled","onClick"]),_(L(v),{size:"tiny",type:"error",secondary:"",disabled:e.external,onClick:a=>function(e){l.warning({title:"移除项目 MCP",content:`确定从当前项目移除 ${e.id} 吗?用户级配置不会被删除。`,positiveText:"移除",negativeText:"取消",onPositiveClick:async()=>{try{await aa(t.projectPath,t.platform,e.id),await g(),s("updated"),n.success("项目 MCP 已移除")}catch(a){n.error(`移除失败:${a.message}`)}}})}(e)},{default:O(()=>[...u[5]||(u[5]=[w("移除",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]))),128))])),_(fe,{visible:i.value,"onUpdate:visible":u[0]||(u[0]=e=>i.value=e),"editing-server":o.value,"existing-ids":c.value.map(e=>e.id),scope:"project","project-path":e.projectPath,platform:e.platform,onSaved:f},null,8,["visible","editing-server","existing-ids","project-path","platform"])]))}},Ba=m(Sa,[["__scopeId","data-v-1ebbb765"]]),$a={class:"project-config-content"},Na={class:"project-config-header"},Ta={key:0,class:"unsupported-state"},Oa={key:0,class:"unsupported-state"},Aa=m({__name:"ProjectConfigDrawer",props:{show:{type:Boolean,default:!1},projectPath:{type:String,default:""},platform:{type:String,default:"claude"}},emits:["update:show"],setup(e,{emit:a}){const t=e,s=a,{drawerWidth:n}=Ce(760),l=N({get:()=>t.show,set:e=>s("update:show",e)}),i=[{label:"Claude",value:"claude"},{label:"Codex",value:"codex"},{label:"Gemini",value:"gemini"},{label:"OpenCode",value:"opencode"},{label:"OMP",value:"omp"}],o=V(t.platform||"claude"),r=V("instruction"),u=V(null),d=V(!1),c=V(0);async function p(){if(!t.projectPath||!o.value)return;const e=++c.value;d.value=!0;try{const a=await sa(t.projectPath,o.value);if(e!==c.value)return;u.value=a}finally{e===c.value&&(d.value=!1)}}return B(l,e=>{e?(o.value=t.platform||"claude",r.value="instruction",p()):c.value+=1}),B([()=>t.projectPath,()=>t.platform,o],([e,a],t)=>{l.value&&e&&a&&(a===t?.[1]&&e===t?.[0]||p())}),I(()=>{l.value&&p()}),(a,t)=>(S(),M(L(ke),{show:l.value,"onUpdate:show":t[2]||(t[2]=e=>l.value=e),width:L(n),placement:"right","show-mask":!0},{default:O(()=>[_(L(xe),{title:"项目配置",closable:"","native-scrollbar":!1},{default:O(()=>[J("div",$a,[J("div",Na,[J("div",null,[t[3]||(t[3]=J("div",{class:"project-config-title"},"当前项目",-1)),_(L(_e),{depth:"3",class:"project-path"},{default:O(()=>[w($(e.projectPath),1)]),_:1})]),_(L(Fe),{value:o.value,"onUpdate:value":t[0]||(t[0]=e=>o.value=e),size:"small",options:i,disabled:d.value,style:{width:"130px"}},null,8,["value","disabled"])]),_(L(Me),{show:d.value},{default:O(()=>[_(L(he),{value:r.value,"onUpdate:value":t[1]||(t[1]=e=>r.value=e),type:"line",animated:""},{default:O(()=>[_(L(me),{name:"instruction",tab:"项目指令"},{default:O(()=>[_(xa,{"project-path":e.projectPath,platform:o.value,instruction:u.value?.instruction,onUpdated:p},null,8,["project-path","platform","instruction"])]),_:1}),_(L(me),{name:"skills",tab:"Skills"},{default:O(()=>[!1===u.value?.capabilities?.skills?(S(),W("div",Ta," 当前平台不提供项目 Skills ")):(S(),M(Pe,{key:1,platform:o.value,"project-path":e.projectPath,scope:"project","in-drawer":"","drawer-visible":l.value},null,8,["platform","project-path","drawer-visible"]))]),_:1}),_(L(me),{name:"mcp",tab:"MCP"},{default:O(()=>[!1===u.value?.capabilities?.mcp?(S(),W("div",Oa," 当前平台不提供项目 MCP ")):(S(),M(Ba,{key:1,"project-path":e.projectPath,platform:o.value,mcp:u.value?.mcp,onUpdated:p},null,8,["project-path","platform","mcp"]))]),_:1})]),_:1},8,["value"])]),_:1},8,["show"])])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-e9a405fe"]]),Ua={class:"session-list-container"},Ra={class:"header"},Da={class:"title-bar"},Ea={class:"title-section"},La={class:"title-with-count"},qa={class:"header-actions"},Ha={key:0,class:"loading-container"},Va={key:1,class:"loading-container compact"},Qa={key:3,class:"sessions-list"},Wa=["onMouseenter","onClick"],Ja={class:"session-left"},Ka={class:"session-icon"},Za={class:"session-info"},Ga={class:"session-header"},Ya={class:"session-title-row"},Xa={class:"session-title"},et={class:"session-meta"},at={class:"session-right"},tt={class:"session-tags-area"},st={key:0,class:"session-actions"},nt={key:0,style:{"max-height":"70vh","overflow-y":"auto"}},lt={class:"search-result-header"},it={class:"search-result-title"},ot="__full__",rt=m({__name:"SessionList",props:{projectName:{type:String,required:!0}},setup(e){const a=e,t=D(),s=H(),n=Ye(),{addFavorite:l,removeFavorite:i,isFavorite:o}=Ne(),r=N(()=>K(s)),u=V(a.projectName),d=N(()=>u.value||a.projectName),p=V(""),m=V(null),h=V(!1),f=V(null),g=V(""),b=V(null),k=V([]),P=V(1),F=V(null),z=V(!1),T=V(!1),ie=V(null),oe=V(!1),re=V(!1),ue=V([]),de=V(!1),ce=V(!1),pe=V(null),me=V(""),he=V(ot),fe=V(!1),ge=V(!1),be=V([]),ye=V(!1),we=V(""),ke=V(""),Ce=V(null);function xe(e){return"string"==typeof e&&(e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e)||e.startsWith("\\\\"))}const Pe=N(()=>{const e=d.value;return n.projects.find(a=>a.name===e)||n.projects.find(e=>e.displayName===a.projectName||e.fullPath===a.projectName||e.path===a.projectName)||null}),Se=N(()=>[n.currentProjectInfo?.fullPath,n.currentProjectInfo?.path,Pe.value?.fullPath,Pe.value?.path].find(xe)||""),Be=N(()=>n.currentProjectInfo?.displayName||Pe.value?.displayName||a.projectName),Oe=N(()=>Se.value||n.currentProjectInfo?.fullPath||Pe.value?.fullPath||Pe.value?.path||d.value),Ae=N(()=>new Set(ue.value)),De=N(()=>ue.value.length),Ee=N(()=>k.value.length>0&&k.value.every(e=>Ae.value.has(e.sessionId))),Ve=N(()=>De.value>0&&!Ee.value);async function Qe(){n.projects.length||await n.fetchProjects();const e=n.projects.find(e=>e.name===a.projectName);if(e)return u.value=e.name,e.name;const s=n.projects.find(e=>e.displayName===a.projectName||e.fullPath===a.projectName||e.path===a.projectName);return s?(u.value=s.name,s.name!==a.projectName&&await t.replace({name:"cli-sessions",params:{platform:r.value,projectName:s.name}}),s.name):(u.value=a.projectName,a.projectName)}async function We(e={}){const a=await Qe(),t=e.page??P.value,s=e.limit??n.sessionsPagination.limit;await n.fetchSessions(a,{page:t,limit:s,...e})}async function Xe(e){P.value=e,await We({page:e})}function ea(){t.push({name:"cli-projects",params:{platform:r.value}})}async function aa(){if(p.value){oe.value=!0;try{const e=await Ke(d.value,p.value,35,r.value);F.value=e,z.value=!0}catch(e){Re.error("搜索失败: "+e.message)}finally{oe.value=!1}}}function ta(){re.value=!0,b.value=null}function sa(){re.value=!1,ue.value=[],b.value=null}function na(e){return Ae.value.has(e)}function la(e,a=!na(e)){const t=new Set(ue.value);a?t.add(e):t.delete(e),ue.value=Array.from(t)}function ia(e){ue.value=e?k.value.map(e=>e.sessionId):[]}function oa(e){re.value?la(e.sessionId):function(e){we.value=e.sessionId,ke.value=e.alias||"",ye.value=!0,x(()=>{Ce.value?.open()})}(e)}async function ra(){if(f.value)try{const e=f.value.sessionId;g.value?(await n.setAlias(e,g.value),Re.success("别名设置成功")):(await n.deleteAlias(e),Re.success("别名已删除")),h.value=!1,f.value=null,g.value=""}catch(e){Re.error("操作失败: "+e.message)}}function ua(){ce.value=!1,pe.value=null,me.value="",he.value=ot,be.value=[],fe.value=!1,ge.value=!1}async function da(){if(pe.value)try{ge.value=!0,await n.forkSession(pe.value.sessionId,{afterUserMessageNumber:he.value===ot?null:he.value,alias:me.value?.trim()||void 0}),Re.success("Fork 成功!"),ua()}catch(e){Re.error("Fork 失败: "+e.message)}finally{ge.value=!1}}function ca(e){Re.error(e)}function pa(e){const a=new Set((e||[]).filter(Boolean));0!==a.size&&(ue.value=ue.value.filter(e=>!a.has(e)),we.value&&a.has(we.value)&&(ye.value=!1,we.value="",ke.value=""))}async function va(e){try{const{copyResult:a}=await Ze(d.value,e,r.value);if("manual"===a?.method)return void Re.warning("自动复制失败,已弹出手动复制框");Re.success("启动命令已复制到剪贴板")}catch(a){Re.error("复制失败: "+a.message)}}function ma(){if(0===De.value)return void Re.warning("请先选择要删除的会话");const e=[...ue.value];Ie.warning({title:"批量删除会话",content:`确定要删除选中的 ${e.length} 个会话吗?此操作不可恢复!`,positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{de.value=!0;try{const a=await n.deleteSessions(e);if(pa(a.deletedSessionIds),0===a.failed.length)return Re.success(`已删除 ${a.deletedSessionIds.length} 个会话`),void sa();ue.value=a.failed.map(e=>e.sessionId),a.deletedSessionIds.length>0?Re.warning(`已删除 ${a.deletedSessionIds.length} 个会话,${a.failed.length} 个删除失败`):Re.error(`删除失败: ${a.failed[0].error.message}`)}finally{de.value=!1}}})}function ha(e){if(!e)return"0 B";const a=1024;return e<a?e+" B":e<a*a?(e/a).toFixed(1)+" KB":(e/a/a).toFixed(1)+" MB"}function fa(e,a){if(!a||!e)return e;const t=new RegExp(`(${a})`,"gi");return e.replace(t,'<mark style="background-color: #ffd700; padding: 2px 4px; border-radius: 2px; font-weight: 600;">$1</mark>')}function ga(e,a=80){return e?e.length>a?e.substring(0,a)+"...":e:""}B(()=>n.sessionsWithAlias,e=>{k.value=[...e];const a=new Set(e.map(e=>e.sessionId));ue.value=ue.value.filter(e=>a.has(e)),re.value&&0===e.length&&sa()},{immediate:!0});let ya=0,wa=!1;async function ka(){if("visible"!==document.visibilityState||wa)return;const e=Date.now();if(!(e-ya<3e4)){wa=!0,ya=e;try{const e=ie.value?.scrollTop||0,a=await Qe();await n.fetchSessions(a,{page:P.value,limit:n.sessionsPagination.limit,force:!0,silent:!0,fresh:!0}),await x(),ie.value&&(ie.value.scrollTop=e)}finally{wa=!1}}}function Ca(){"visible"===document.visibilityState&&ka().catch(()=>{})}function xa(){ka().catch(()=>{})}function ja(e){(e.metaKey||e.ctrlKey)&&"k"===String(e.key).toLowerCase()&&(e.preventDefault(),m.value?.querySelector?.("input")?.focus?.())}return B([r,()=>a.projectName],([e])=>{T.value=!1,sa(),n.setChannel(e),P.value=1,We()},{immediate:!0}),I(()=>{document.addEventListener("visibilitychange",Ca),window.addEventListener("focus",xa),document.addEventListener("keydown",ja)}),C(()=>{document.removeEventListener("visibilitychange",Ca),window.removeEventListener("focus",xa),document.removeEventListener("keydown",ja)}),(e,a)=>(S(),W("div",Ua,[J("div",Ra,[J("div",Da,[_(L(v),{size:"small",onClick:ea,class:"back-button"},{icon:O(()=>[_(L(c),{size:"18"},{default:O(()=>[_(L(G))]),_:1})]),_:1}),J("div",Ea,[J("div",La,[_(L(je),null,{default:O(()=>[w($(Be.value),1)]),_:1}),_(L(_e),{depth:"3",class:"session-count"},{default:O(()=>[w("("+$(L(n).sessionsPagination.total)+" 个对话)",1)]),_:1}),_(L(He),{size:"small",bordered:!1,type:"info",class:"total-size-tag"},{default:O(()=>[w($(ha(L(n).totalSize)),1)]),_:1}),J("div",qa,[re.value?(S(),W(U,{key:0},[_(L(Le),{checked:Ee.value,indeterminate:Ve.value,disabled:0===k.value.length||de.value,"onUpdate:checked":ia},{default:O(()=>[...a[14]||(a[14]=[w(" 全选 ",-1)])]),_:1},8,["checked","indeterminate","disabled"]),_(L(_e),{depth:"3"},{default:O(()=>[w("已选 "+$(De.value)+" 个",1)]),_:1}),_(L(v),{size:"small",type:"error",disabled:0===De.value,loading:de.value,onClick:ma},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[15]||(a[15]=w(" 删除 ",-1))]),_:1},8,["disabled","loading"]),_(L(v),{size:"small",disabled:de.value,onClick:sa},{default:O(()=>[...a[16]||(a[16]=[w(" 完成 ",-1)])]),_:1},8,["disabled"])],64)):(S(),W(U,{key:1},[_(L(v),{size:"small",type:"error",secondary:"",onClick:ta},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[17]||(a[17]=w(" 管理 ",-1))]),_:1}),_(L(v),{size:"small",type:"primary",secondary:"",disabled:!Se.value,onClick:a[0]||(a[0]=e=>T.value=!0)},{default:O(()=>[...a[18]||(a[18]=[w(" 项目配置 ",-1)])]),_:1},8,["disabled"])],64))])]),_(L(_e),{depth:"3",class:"project-path"},{default:O(()=>[w($(Oe.value),1)]),_:1})]),J("div",{ref_key:"searchInputContainer",ref:m,class:"search-input-container"},[_(L(qe),{value:p.value,"onUpdate:value":a[1]||(a[1]=e=>p.value=e),placeholder:"搜索会话...(Cmd/Ctrl+K)",clearable:"",class:"search-input",onKeyup:q(aa,["enter"]),disabled:oe.value},{prefix:O(()=>[_(L(c),null,{default:O(()=>[_(L(ae))]),_:1})]),suffix:O(()=>[_(L(v),{text:"",onClick:aa,disabled:!p.value||oe.value,loading:oe.value},{default:O(()=>[...a[19]||(a[19]=[w(" 搜索 ",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["value","disabled"])],512)])]),J("div",{class:"content",ref_key:"contentEl",ref:ie},[L(n).loading&&0===L(n).sessions.length&&!L(n).sessionsPending?(S(),W("div",Ha,[_(L(Me),{size:"large"},{description:O(()=>[...a[20]||(a[20]=[w(" 加载会话列表... ",-1)])]),_:1})])):L(n).sessionsPending?(S(),W("div",Va,[_(L(Me),{size:"small"},{description:O(()=>[...a[21]||(a[21]=[w(" 正在生成会话列表... ",-1)])]),_:1})])):L(n).error&&0===L(n).sessions.length?(S(),M(L(Te),{key:2,type:"error",title:"加载失败",style:{"margin-bottom":"16px"}},{default:O(()=>[w($(L(n).error),1)]),_:1})):k.value.length>0?(S(),W("div",Qa,[(S(!0),W(U,null,j(k.value,e=>(S(),W("div",{key:e.sessionId},[J("div",{class:R(["session-item",{"session-item-selected":na(e.sessionId),"session-item-selection-mode":re.value}]),onMouseenter:a=>b.value=e.sessionId,onMouseleave:a[3]||(a[3]=e=>b.value=null),onClick:a=>oa(e)},[re.value?(S(),W("div",{key:0,class:"selection-checkbox",onClick:a[2]||(a[2]=E(()=>{},["stop"]))},[_(L(Le),{checked:na(e.sessionId),"onUpdate:checked":a=>la(e.sessionId,a)},null,8,["checked","onUpdate:checked"])])):y("",!0),J("div",Ja,[J("div",Ka,[_(L(c),{size:"24",color:"#18a058"},{default:O(()=>[_(L(Y))]),_:1})]),J("div",Za,[J("div",Ga,[J("div",Ya,[J("span",Xa,$(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId),1),e.forkedFrom?(S(),M(L($e),{key:0,placement:"top"},{trigger:O(()=>[_(L(He),{size:"small",type:"warning",bordered:!1,style:{"margin-left":"8px",cursor:"help"}},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[a[22]||(a[22]=w(" Fork ",-1))]),_:1})]),default:O(()=>[w(" Fork 自: "+$(e.forkedFrom),1)]),_:2},1024)):y("",!0)])]),J("div",et,[_(L(_e),{depth:"3"},{default:O(()=>{return[w($((a=e.mtime,a?new Date(a).toLocaleString("zh-CN"):"")),1)];var a}),_:2},1024),_(L(_e),{depth:"3"},{default:O(()=>[...a[23]||(a[23]=[w("•",-1)])]),_:1}),_(L(He),{size:"small",bordered:!1},{default:O(()=>[w($(ha(e.size)),1)]),_:2},1024)]),e.firstMessage?(S(),M(L(_e),{key:0,depth:"3",class:"session-message"},{default:O(()=>[w($(ga(e.firstMessage,80)),1)]),_:2},1024)):e.gitBranch||e.summary?y("",!0):(S(),M(L(_e),{key:1,depth:"3",class:"session-message session-message-empty"},{default:O(()=>[...a[24]||(a[24]=[w(" 暂未读取到对话内容 ",-1)])]),_:1}))])]),J("div",at,[J("div",tt,[e.gitBranch?(S(),M(L(He),{key:0,size:"small",type:"info",bordered:!1},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[w(" "+$(e.gitBranch),1)]),_:2},1024)):y("",!0)]),re.value?y("",!0):(S(),W("div",st,[_(L(ze),null,{default:O(()=>[Q(_(L(v),{size:"small",type:"error",onClick:E(a=>{return t=e.sessionId,void Ie.warning({title:"删除会话",content:"确定要删除这个会话吗?此操作不可恢复!",positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{try{await n.deleteSession(t),pa([t]),Re.success("会话已删除")}catch(e){Re.error("删除失败: "+e.message)}}});var t},["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(le))]),_:1})]),default:O(()=>[a[25]||(a[25]=w(" 删除 ",-1))]),_:1},8,["onClick"]),[[A,b.value===e.sessionId]]),_(L(v),{size:"small",onClick:E(a=>function(e){f.value=e,g.value=e.alias||"",h.value=!0}(e),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(ne))]),_:1})]),default:O(()=>[a[26]||(a[26]=w(" 别名 ",-1))]),_:1},8,["onClick"]),_(L(v),{size:"small",type:L(o)(r.value,d.value,e.sessionId)?"warning":"default",onClick:E(a=>async function(e){const a=r.value,t=o(a,d.value,e.sessionId);try{if(t)await i(a,d.value,e.sessionId),Re.success("已取消收藏");else{const t={sessionId:e.sessionId,projectName:d.value,projectDisplayName:Be.value,projectFullPath:Oe.value,alias:e.alias||"",firstMessage:e.firstMessage||"",mtime:e.mtime,size:e.size,gitBranch:e.gitBranch||"",forkedFrom:e.forkedFrom||""};await l(a,t),Re.success("已添加到收藏")}}catch(s){Re.error("操作失败: "+s.message)}}(e),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[L(o)(r.value,d.value,e.sessionId)?(S(),M(L(se),{key:0})):(S(),M(L(ee),{key:1}))]),_:2},1024)]),default:O(()=>[w(" "+$(L(o)(r.value,d.value,e.sessionId)?"已收藏":"收藏"),1)]),_:2},1032,["type","onClick"]),"opencode"!==r.value?(S(),M(L(v),{key:0,size:"small",onClick:E(a=>async function(e){if("opencode"!==r.value)try{const a=k.value.find(a=>a.sessionId===e);pe.value=a||{sessionId:e},me.value="",he.value=ot,be.value=[{label:"完整会话末尾(保留全部消息)",value:ot}],ce.value=!0,fe.value=!0;const t=await Je(d.value,e,r.value),s=Array.isArray(t?.items)?t.items:[];be.value=[{label:"完整会话末尾(保留全部消息)",value:ot},...s.map(e=>({label:`保留到第 ${e.userMessageNumber} 条用户消息这一轮 · ${e.preview}`,value:e.userMessageNumber}))]}catch(a){Re.error("加载 Fork 位置失败: "+a.message),ua()}finally{fe.value=!1}else Re.warning("OpenCode 当前不支持该 Fork 操作")}(e.sessionId),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(X))]),_:1})]),default:O(()=>[a[27]||(a[27]=w(" Fork ",-1))]),_:1},8,["onClick"])):y("",!0),_(L(v),{size:"small",type:"primary",onClick:E(a=>va(e.sessionId),["stop"])},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(te))]),_:1})]),default:O(()=>[a[28]||(a[28]=w(" 使用对话 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]))])],42,Wa)]))),128))])):y("",!0),L(n).sessionsPagination.total>L(n).sessionsPagination.limit?(S(),M(L(ba),{key:4,page:P.value,"onUpdate:page":[a[4]||(a[4]=e=>P.value=e),Xe],"page-count":Math.ceil(L(n).sessionsPagination.total/L(n).sessionsPagination.limit),"page-size":L(n).sessionsPagination.limit,"show-quick-jumper":"",class:"list-pagination"},null,8,["page","page-count","page-size"])):y("",!0),L(n).loading||L(n).error||L(n).sessionsPending||0!==k.value.length?y("",!0):(S(),M(L(Ue),{key:5,description:p.value?"当前页没有匹配的会话":"没有找到会话",style:{"margin-top":"60px"}},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(Z))]),_:1})]),_:1},8,["description"]))],512),_(L(ve),{show:h.value,"onUpdate:show":a[7]||(a[7]=e=>h.value=e),preset:"dialog",title:"设置别名"},{action:O(()=>[_(L(ze),null,{default:O(()=>[_(L(v),{onClick:a[6]||(a[6]=e=>h.value=!1)},{default:O(()=>[...a[29]||(a[29]=[w("取消",-1)])]),_:1}),_(L(v),{type:"primary",onClick:ra},{default:O(()=>[...a[30]||(a[30]=[w("确定",-1)])]),_:1})]),_:1})]),default:O(()=>[_(L(qe),{value:g.value,"onUpdate:value":a[5]||(a[5]=e=>g.value=e),placeholder:"输入别名(留空删除)",onKeyup:q(ra,["enter"])},null,8,["value"])]),_:1},8,["show"]),_(L(ve),{show:ce.value,"onUpdate:show":a[10]||(a[10]=e=>ce.value=e),preset:"dialog",title:"Fork 对话"},{action:O(()=>[_(L(ze),null,{default:O(()=>[_(L(v),{disabled:ge.value,onClick:ua},{default:O(()=>[...a[32]||(a[32]=[w("取消",-1)])]),_:1},8,["disabled"]),_(L(v),{type:"primary",loading:ge.value,onClick:da},{default:O(()=>[...a[33]||(a[33]=[w(" 确认 Fork ",-1)])]),_:1},8,["loading"])]),_:1})]),default:O(()=>[_(L(ze),{vertical:"",size:14},{default:O(()=>[_(L(_e),{depth:"3"},{default:O(()=>[...a[31]||(a[31]=[w(" 可选择保留到第几条用户消息所在轮次;会包含这条消息后 AI 的完整输出。 ",-1)])]),_:1}),_(L(Fe),{value:he.value,"onUpdate:value":a[8]||(a[8]=e=>he.value=e),options:be.value,loading:fe.value,clearable:"",placeholder:"选择保留到哪一轮(默认完整会话)"},null,8,["value","options","loading"]),_(L(qe),{value:me.value,"onUpdate:value":a[9]||(a[9]=e=>me.value=e),placeholder:"输入新会话别名(可选)",maxlength:"120"},null,8,["value"])]),_:1})]),_:1},8,["show"]),_(L(ve),{show:z.value,"onUpdate:show":a[11]||(a[11]=e=>z.value=e),preset:"card",title:"搜索结果",style:{width:"1200px"}},{default:O(()=>[F.value?(S(),W("div",nt,[_(L(Te),{type:"info",style:{"margin-bottom":"16px"}},{default:O(()=>[w(' 关键词 "'+$(F.value.keyword)+'" 共找到 '+$(F.value.totalMatches)+" 处匹配 ",1)]),_:1}),(S(!0),W(U,null,j(F.value.sessions,e=>(S(),W("div",{key:e.sessionId,class:"search-result-item"},[J("div",lt,[J("div",it,[_(L(_e),{strong:""},{default:O(()=>[w($(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId.substring(0,8)),1)]),_:2},1024),_(L(He),{size:"small",bordered:!1},{default:O(()=>[w($(e.matchCount)+" 个匹配",1)]),_:2},1024)]),_(L(v),{size:"small",type:"primary",onClick:a=>va(e.sessionId)},{icon:O(()=>[_(L(c),null,{default:O(()=>[_(L(te))]),_:1})]),default:O(()=>[a[34]||(a[34]=w(" 使用对话 ",-1))]),_:1},8,["onClick"])]),(S(!0),W(U,null,j(e.matches,(e,a)=>(S(),W("div",{key:a,class:"search-match"},[_(L(He),{size:"tiny",type:"user"===e.role?"info":"success",bordered:!1},{default:O(()=>[w($("user"===e.role?"用户":"助手"),1)]),_:2},1032,["type"]),_(L(_e),{depth:"3",class:"search-match-text",innerHTML:fa(e.context,F.value.keyword)},null,8,["innerHTML"])]))),128))]))),128)),0===F.value.sessions.length?(S(),M(L(Ue),{key:0,description:"没有找到匹配的内容"})):y("",!0)])):y("",!0)]),_:1},8,["show"]),we.value?(S(),M(Ge,{key:0,ref_key:"chatHistoryRef",ref:Ce,show:ye.value,"onUpdate:show":a[12]||(a[12]=e=>ye.value=e),"project-name":d.value,"session-id":we.value,"session-alias":ke.value,channel:r.value,onError:ca},null,8,["show","project-name","session-id","session-alias","channel"])):y("",!0),_(Aa,{show:T.value,"onUpdate:show":a[13]||(a[13]=e=>T.value=e),"project-path":Se.value,platform:r.value},null,8,["show","project-path","platform"])]))}},[["__scopeId","data-v-66cfe9c9"]]);export{rt as default};
@@ -0,0 +1 @@
1
+ .remote-provider-fields[data-v-44913e2a]{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.remote-field[data-v-44913e2a]{flex-direction:column;gap:5px;min-width:0;display:flex}.remote-field-wide[data-v-44913e2a]{grid-column:1/-1}.remote-field-label[data-v-44913e2a]{color:var(--text-tertiary);font-size:11px;font-weight:600}@media (width<=600px){.remote-provider-fields[data-v-44913e2a]{grid-template-columns:1fr}}.settings-container[data-v-1d15d4c9]{gap:0;height:100vh;display:flex}.settings-sidebar[data-v-1d15d4c9]{background:var(--bg-secondary);border-right:1px solid var(--border-primary);flex-direction:column;flex-shrink:0;width:240px;display:flex;overflow:hidden}[data-theme=dark] .settings-sidebar[data-v-1d15d4c9]{background:#0f172a80;border-right:1px solid #94a3b81a}.sidebar-header[data-v-1d15d4c9]{border-bottom:1px solid var(--border-primary);align-items:center;gap:12px;padding:28px 20px 24px;display:flex}[data-theme=dark] .sidebar-header[data-v-1d15d4c9]{border-bottom:1px solid #94a3b81a}.sidebar-title[data-v-1d15d4c9]{color:var(--text-primary);letter-spacing:-.3px;font-size:16px;font-weight:700}.settings-menu[data-v-1d15d4c9]{flex:1;padding:16px 12px;overflow-y:auto}.menu-item[data-v-1d15d4c9]{cursor:pointer;border-radius:8px;align-items:center;gap:12px;margin-bottom:4px;padding:12px 16px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.menu-item[data-v-1d15d4c9]:hover{background:var(--hover-bg)}[data-theme=dark] .menu-item[data-v-1d15d4c9]:hover{background:#47556940}.menu-item.active[data-v-1d15d4c9]{background:#94a3b826}[data-theme=dark] .menu-item.active[data-v-1d15d4c9]{background:linear-gradient(90deg,#94a3b833 0%,#94a3b826 100%);border:1px solid #94a3b840;box-shadow:0 0 0 1px #94a3b81a}.menu-item.active[data-v-1d15d4c9]:before{content:"";background:var(--border-secondary);border-radius:0 2px 2px 0;width:3px;height:60%;position:absolute;top:50%;left:0;transform:translateY(-50%)}[data-theme=dark] .menu-item.active[data-v-1d15d4c9]:before{background:linear-gradient(#94a3b8e6 0%,#94a3b8b3 50%,#94a3b880 100%);box-shadow:0 0 8px #94a3b84d}.menu-icon[data-v-1d15d4c9]{color:var(--text-tertiary);flex-shrink:0;transition:all .25s}.menu-item:hover .menu-icon[data-v-1d15d4c9]{color:var(--text-primary);transform:scale(1.1)}.menu-item.active .menu-icon[data-v-1d15d4c9]{color:var(--text-primary)}[data-theme=dark] .menu-item.active .menu-icon[data-v-1d15d4c9]{color:#94a3b8e6}.menu-label[data-v-1d15d4c9]{color:var(--text-primary);flex:1;font-size:14px;font-weight:500;transition:all .2s}.menu-item.active .menu-label[data-v-1d15d4c9]{color:var(--text-primary);font-weight:600}[data-theme=dark] .menu-item.active .menu-label[data-v-1d15d4c9]{color:#94a3b8f2;font-weight:600}.settings-content[data-v-1d15d4c9]{background:var(--bg-primary);flex:1;overflow-y:auto}.settings-panel[data-v-1d15d4c9]{flex-direction:column;height:100%;display:flex}.panel-header[data-v-1d15d4c9]{border-bottom:1px solid var(--border-primary);padding:28px 32px}[data-theme=dark] .panel-header[data-v-1d15d4c9]{border-bottom:1px solid #94a3b81a}.panel-title-row[data-v-1d15d4c9]{align-items:flex-start;gap:16px;display:flex}.panel-title[data-v-1d15d4c9]{color:var(--text-primary);margin:0;font-size:20px;font-weight:700}.panel-subtitle[data-v-1d15d4c9]{margin-top:6px;font-size:13px;display:block}.panel-body[data-v-1d15d4c9]{flex:1;padding:28px;overflow-y:auto}.setting-group[data-v-1d15d4c9]{flex-direction:column;gap:24px;display:flex}.setting-item[data-v-1d15d4c9]{flex-direction:column;gap:12px;display:flex}.setting-label[data-v-1d15d4c9]{flex-direction:column;display:flex}.panel-footer[data-v-1d15d4c9]{border-top:1px solid var(--border-primary);background:var(--bg-secondary);padding:20px 32px}[data-theme=dark] .panel-footer[data-v-1d15d4c9]{background:#0f172a80;border-top:1px solid #94a3b81a}[data-v-1d15d4c9] .n-select{width:100%}[data-v-1d15d4c9] .n-drawer-body-content-wrapper{padding:0!important}[data-v-1d15d4c9] .n-drawer-header{display:none!important}[data-v-1d15d4c9] .n-drawer-body{padding:0!important}[data-v-1d15d4c9] .n-drawer-content{flex-direction:column;height:100%;display:flex}[data-v-1d15d4c9] .n-drawer-content__body{flex:1;overflow:hidden;padding:0!important}.visibility-options[data-v-1d15d4c9]{flex-direction:column;gap:16px;margin-top:16px;display:flex}.visibility-item[data-v-1d15d4c9]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;justify-content:space-between;align-items:center;padding:16px;transition:all .2s;display:flex}[data-theme=dark] .visibility-item[data-v-1d15d4c9]{background:#1e293b66;border:1px solid #94a3b826}.visibility-item[data-v-1d15d4c9]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #94a3b81a}.visibility-info[data-v-1d15d4c9]{flex-direction:column;flex:1;gap:4px;margin-right:16px;display:flex}.simple-theme-options[data-v-1d15d4c9]{flex-direction:column;gap:12px;margin-top:16px;display:flex}.simple-theme-item[data-v-1d15d4c9]{background:var(--bg-secondary);border:1px solid var(--border-primary);cursor:pointer;border-radius:10px;align-items:center;gap:12px;padding:16px;transition:all .2s;display:flex}[data-theme=dark] .simple-theme-item[data-v-1d15d4c9]{background:#1e293b66;border:1px solid #94a3b826}.simple-theme-item[data-v-1d15d4c9]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #94a3b81a}.simple-theme-item.active[data-v-1d15d4c9]{border-color:var(--border-secondary);background:#94a3b814}[data-theme=dark] .simple-theme-item.active[data-v-1d15d4c9]{background:#94a3b826;border-color:#94a3b866}.simple-theme-item .theme-icon[data-v-1d15d4c9]{color:var(--text-secondary);flex-shrink:0;transition:all .2s}.simple-theme-item:hover .theme-icon[data-v-1d15d4c9]{color:var(--text-primary);transform:scale(1.1)}.simple-theme-item.active .theme-icon[data-v-1d15d4c9]{color:var(--text-primary)}[data-theme=dark] .simple-theme-item.active .theme-icon[data-v-1d15d4c9]{color:#94a3b8e6}.theme-text[data-v-1d15d4c9]{flex-direction:column;flex:1;gap:2px;display:flex}.theme-check[data-v-1d15d4c9]{flex-shrink:0;justify-content:center;align-items:center;display:flex}.ports-grid[data-v-1d15d4c9]{flex-direction:column;gap:16px;margin-top:16px;display:flex}.port-field[data-v-1d15d4c9]{flex-direction:column;display:flex}.port-field[data-v-1d15d4c9] .n-input-number{width:100%}.port-field[data-v-1d15d4c9] .n-input-number .n-input__input{font-family:monospace;font-size:13px}.home-cli-settings[data-v-1d15d4c9]{flex-direction:column;gap:12px;margin-top:16px;display:flex}.platform-catalog-list[data-v-1d15d4c9]{flex-direction:column;gap:8px;display:flex}.platform-catalog-item[data-v-1d15d4c9]{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.platform-order-actions[data-v-1d15d4c9]{gap:2px;display:flex}.home-cli-actions[data-v-1d15d4c9]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.option-field[data-v-1d15d4c9]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #94a3b81a}.option-label[data-v-1d15d4c9]{flex-direction:column;flex:1;gap:4px;margin-right:16px;display:flex}.notification-options[data-v-1d15d4c9]{flex-direction:column;gap:16px;margin-top:16px;display:flex}.notification-type-section[data-v-1d15d4c9]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;margin-top:8px;padding:16px}[data-theme=dark] .notification-type-section[data-v-1d15d4c9]{background:#1e293b66;border:1px solid #94a3b826}.radio-content[data-v-1d15d4c9]{flex-direction:column;gap:2px;padding:4px 0;display:flex}.remote-provider-toolbar[data-v-1d15d4c9]{grid-template-columns:minmax(180px,220px) auto 1fr;align-items:center;gap:10px;display:grid}.remote-provider-card[data-v-1d15d4c9]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:14px;transition:border-color .18s,box-shadow .18s}.remote-provider-card[data-v-1d15d4c9]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #94a3b81a}[data-theme=dark] .remote-provider-card[data-v-1d15d4c9]{background:#1e293b66;border-color:#94a3b826}.remote-provider-header[data-v-1d15d4c9]{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.remote-provider-title-row[data-v-1d15d4c9]{align-items:flex-start;gap:10px;min-width:0;display:flex}.remote-provider-avatar[data-v-1d15d4c9]{width:30px;height:30px;color:var(--text-secondary);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:8px;flex:0 0 30px;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}[data-theme=dark] .remote-provider-avatar[data-v-1d15d4c9]{background:#0f172a8c;border-color:#94a3b829}.remote-provider-title[data-v-1d15d4c9]{min-width:0}.remote-provider-name-row[data-v-1d15d4c9]{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:3px;display:flex}.remote-provider-fields[data-v-1d15d4c9]{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.remote-field[data-v-1d15d4c9]{flex-direction:column;gap:5px;min-width:0;display:flex}.remote-field-wide[data-v-1d15d4c9],.remote-fields-descriptor[data-v-1d15d4c9]{grid-column:1/-1}.remote-field-label[data-v-1d15d4c9]{color:var(--text-tertiary);font-size:11px;font-weight:600;line-height:1.2}.remote-provider-actions[data-v-1d15d4c9]{border-top:1px solid var(--border-primary);justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding-top:12px;display:flex}[data-theme=dark] .remote-provider-actions[data-v-1d15d4c9]{border-top-color:#94a3b81f}@media (width<=768px){.remote-provider-toolbar[data-v-1d15d4c9]{grid-template-columns:1fr}.remote-provider-header[data-v-1d15d4c9],.remote-provider-actions[data-v-1d15d4c9]{flex-direction:column;align-items:stretch}.remote-provider-fields[data-v-1d15d4c9]{grid-template-columns:1fr}}.security-status[data-v-1d15d4c9]{align-items:center;gap:8px;display:flex}.security-form[data-v-1d15d4c9]{flex-direction:column;gap:12px;max-width:360px;display:flex}.security-error[data-v-1d15d4c9]{color:#d03050;font-size:12px}.command-config-card[data-v-1d15d4c9]{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:10px;margin-bottom:16px;padding:16px;transition:all .2s}.command-config-card[data-v-1d15d4c9]:last-child{margin-bottom:0}.command-config-card[data-v-1d15d4c9]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #94a3b81a}[data-theme=dark] .command-config-card[data-v-1d15d4c9]{background:#1e293b66;border:1px solid #94a3b826}[data-theme=dark] .command-config-card[data-v-1d15d4c9]:hover{border-color:#94a3b84d;box-shadow:0 2px 8px #94a3b81a}.command-card-header[data-v-1d15d4c9]{border-bottom:1px solid var(--border-primary);align-items:center;gap:10px;margin-bottom:16px;padding-bottom:12px;display:flex}[data-theme=dark] .command-card-header[data-v-1d15d4c9]{border-bottom:1px solid #94a3b81a}.command-fields[data-v-1d15d4c9]{flex-direction:column;gap:12px;display:flex}.command-field[data-v-1d15d4c9]{flex-direction:column;display:flex}.command-field[data-v-1d15d4c9] .n-input{font-family:SF Mono,Monaco,Cascadia Code,monospace}.command-field[data-v-1d15d4c9] .n-input .n-input__input-el{font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:13px}.model-meta-editor[data-v-1d15d4c9]{padding:4px 2px 8px}.model-meta-section[data-v-1d15d4c9]{background:var(--bg-secondary,#00000008);border-radius:8px;padding:10px 12px}.speed-test-defaults[data-v-1d15d4c9]{flex-direction:column;gap:10px;display:flex}.speed-test-default-row[data-v-1d15d4c9]{grid-template-columns:132px 1fr;align-items:center;gap:10px;display:grid}.speed-test-default-label[data-v-1d15d4c9]{min-width:0}.model-toolbar[data-v-1d15d4c9]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.model-filter-row[data-v-1d15d4c9]{margin-bottom:12px}.model-list[data-v-1d15d4c9]{flex-direction:column;gap:2px;display:flex}.model-card[data-v-1d15d4c9]{border:1px solid var(--border-primary);border-radius:8px;transition:border-color .2s;overflow:hidden}.model-card[data-v-1d15d4c9]:hover{border-color:var(--border-hover,#63b3ed66)}.model-card.expanded[data-v-1d15d4c9]{border-color:var(--primary-color,#63b3ed)}.model-card-header[data-v-1d15d4c9]{cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--bg-secondary,#00000005);align-items:center;gap:8px;padding:8px 12px;transition:background .15s;display:flex}.model-card-header[data-v-1d15d4c9]:hover{background:var(--bg-hover,#0000000a)}.expand-icon[data-v-1d15d4c9]{color:var(--text-tertiary);flex-shrink:0;transition:transform .2s}.model-card.expanded .expand-icon[data-v-1d15d4c9]{transform:rotate(90deg)}.model-card-id[data-v-1d15d4c9]{color:var(--text-primary);flex:1;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:12px}.model-card-actions[data-v-1d15d4c9]{gap:4px;margin-left:auto;display:flex}.model-card-body[data-v-1d15d4c9]{border-top:1px solid var(--border-primary);background:var(--bg-primary)}[data-theme=dark] .model-card[data-v-1d15d4c9]{border-color:#94a3b826}[data-theme=dark] .model-card[data-v-1d15d4c9]:hover{border-color:#63b3ed4d}[data-theme=dark] .model-card.expanded[data-v-1d15d4c9]{border-color:#63b3ed80}[data-theme=dark] .model-card-header[data-v-1d15d4c9]{background:#1e293b66}[data-theme=dark] .model-card-header[data-v-1d15d4c9]:hover{background:#1e293b99}[data-theme=dark] .model-card-body[data-v-1d15d4c9]{border-color:#94a3b826}@media (width<=768px){.speed-test-default-row[data-v-1d15d4c9]{grid-template-columns:1fr;gap:6px}}
@@ -0,0 +1 @@
1
+ import{E as e,F as a,I as t,Mt as l,N as s,P as n,bt as i,gn as o,gt as r,hn as u,ht as d,i as c,m as p,p as v,s as f,t as m,vn as y,xn as g,xt as h,yn as b}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as w,C as x,D as k,I as _,K as z,M as C,O as P,S,V as U,W as O,Y as j,Z as A,_t as N,b as I,dt as L,et as $,f as B,g as T,ht as M,l as E,m as D,mt as R,rt as W,st as Y,tt as J,u as q,w as F,x as H}from"./vue-vendor-BqZbbXHA.js";import{t as V}from"./client-oU6RT-6I.js";import{d as X,l as Z,o as K,s as G,t as Q,u as ee}from"./platforms-Cq6XDXfy.js";import{N as ae,Nt as te,P as le,_ as se,_t as ne,d as ie,ht as oe,j as re,m as ue,o as de,ot as ce,p as pe,r as ve,t as fe,vt as me,yt as ye}from"./icons-B-AzZoeE.js";import{h as ge}from"./use-message-DBsCm7FJ.js";import{l as he}from"./light-C2X7hegj.js";import{t as be}from"./Divider-BLLhMTSt.js";import{n as we,t as xe}from"./useResponsiveDrawer-CTQPBATk.js";import{t as ke}from"./DrawerContent-ChXgZ1Xm.js";import{$ as _e,A as ze,D as Ce,E as Pe,H as Se,M as Ue,P as Oe,St as je,X as Ae,Z as Ne,at as Ie,ct as Le,ft as $e,j as Be,k as Te,rt as Me,st as Ee,ut as De,y as Re}from"./index-BKpL4XdU.js";var We=w({name:"SlotMachineNumber",props:{clsPrefix:{type:String,required:!0},value:{type:[Number,String],required:!0},oldOriginalNumber:{type:Number,default:void 0},newOriginalNumber:{type:Number,default:void 0}},setup(e){const a=Y(null),t=Y(e.value),l=Y(e.value),s=Y("up"),n=Y(!1),i=I(()=>n.value?`${e.clsPrefix}-base-slot-machine-current-number--${s.value}-scroll`:null),o=I(()=>n.value?`${e.clsPrefix}-base-slot-machine-old-number--${s.value}-scroll`:null);function r(){const a=e.newOriginalNumber,t=e.oldOriginalNumber;void 0!==t&&void 0!==a&&(a>t?u("up"):t>a&&u("down"))}function u(e){s.value=e,n.value=!1,_(()=>{var e;null===(e=a.value)||void 0===e||e.offsetWidth,n.value=!0})}return A(L(e,"value"),(e,a)=>{t.value=a,l.value=e,_(r)}),()=>{const{clsPrefix:s}=e;return C("span",{ref:a,class:`${s}-base-slot-machine-number`},null!==t.value?C("span",{class:[`${s}-base-slot-machine-old-number ${s}-base-slot-machine-old-number--top`,o.value]},t.value):null,C("span",{class:[`${s}-base-slot-machine-current-number`,i.value]},C("span",{ref:"numberWrapper",class:[`${s}-base-slot-machine-current-number__inner`,"number"!=typeof e.value&&`${s}-base-slot-machine-current-number__inner--not-number`]},l.value)),null!==t.value?C("span",{class:[`${s}-base-slot-machine-old-number ${s}-base-slot-machine-old-number--bottom`,o.value]},t.value):null)}}}),{cubicBezierEaseOut:Ye}=a;var Je=u([u("@keyframes n-base-slot-machine-fade-up-in","\n from {\n transform: translateY(60%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n "),u("@keyframes n-base-slot-machine-fade-down-in","\n from {\n transform: translateY(-60%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n "),u("@keyframes n-base-slot-machine-fade-up-out","\n from {\n transform: translateY(0%);\n opacity: 1;\n }\n to {\n transform: translateY(-60%);\n opacity: 0;\n }\n "),u("@keyframes n-base-slot-machine-fade-down-out","\n from {\n transform: translateY(0%);\n opacity: 1;\n }\n to {\n transform: translateY(60%);\n opacity: 0;\n }\n "),o("base-slot-machine","\n overflow: hidden;\n white-space: nowrap;\n display: inline-block;\n height: 18px;\n line-height: 18px;\n ",[o("base-slot-machine-number","\n display: inline-block;\n position: relative;\n height: 18px;\n width: .6em;\n max-width: .6em;\n ",[function({duration:e=".2s"}={}){return[u("&.fade-up-width-expand-transition-leave-active",{transition:`\n opacity ${e} ${Ye},\n max-width ${e} ${Ye},\n transform ${e} ${Ye}\n `}),u("&.fade-up-width-expand-transition-enter-active",{transition:`\n opacity ${e} ${Ye},\n max-width ${e} ${Ye},\n transform ${e} ${Ye}\n `}),u("&.fade-up-width-expand-transition-enter-to",{opacity:1,transform:"translateX(0) translateY(0)"}),u("&.fade-up-width-expand-transition-enter-from",{maxWidth:"0 !important",opacity:0,transform:"translateY(60%)"}),u("&.fade-up-width-expand-transition-leave-from",{opacity:1,transform:"translateY(0)"}),u("&.fade-up-width-expand-transition-leave-to",{maxWidth:"0 !important",opacity:0,transform:"translateY(60%)"})]}({duration:".2s"}),p({duration:".2s",delay:"0s"}),o("base-slot-machine-old-number","\n display: inline-block;\n opacity: 0;\n position: absolute;\n left: 0;\n right: 0;\n ",[b("top",{transform:"translateY(-100%)"}),b("bottom",{transform:"translateY(100%)"}),b("down-scroll",{animation:"n-base-slot-machine-fade-down-out .2s cubic-bezier(0, 0, .2, 1)",animationIterationCount:1}),b("up-scroll",{animation:"n-base-slot-machine-fade-up-out .2s cubic-bezier(0, 0, .2, 1)",animationIterationCount:1})]),o("base-slot-machine-current-number","\n display: inline-block;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 1;\n transform: translateY(0);\n width: .6em;\n ",[b("down-scroll",{animation:"n-base-slot-machine-fade-down-in .2s cubic-bezier(0, 0, .2, 1)",animationIterationCount:1}),b("up-scroll",{animation:"n-base-slot-machine-fade-up-in .2s cubic-bezier(0, 0, .2, 1)",animationIterationCount:1}),y("inner","\n display: inline-block;\n position: absolute;\n right: 0;\n top: 0;\n width: .6em;\n ",[b("not-number","\n right: unset;\n left: 0;\n ")])])])])]),qe=w({name:"BaseSlotMachine",props:{clsPrefix:{type:String,required:!0},value:{type:[Number,String],default:0},max:{type:Number,default:void 0},appeared:{type:Boolean,required:!0}},setup(a){n("-base-slot-machine",Je,L(a,"clsPrefix"));const t=Y(),l=Y(),s=I(()=>{if("string"==typeof a.value)return[];if(a.value<1)return[0];const e=[];let t=a.value;for(void 0!==a.max&&(t=Math.min(a.max,t));t>=1;)e.push(t%10),t/=10,t=Math.floor(t);return e.reverse(),e});return A(L(a,"value"),(e,a)=>{"string"==typeof e?(l.value=void 0,t.value=void 0):"string"==typeof a?(l.value=e,t.value=void 0):(l.value=e,t.value=a)}),()=>{const{value:n,clsPrefix:i}=a;return"number"==typeof n?C("span",{class:`${i}-base-slot-machine`},C(q,{name:"fade-up-width-expand-transition",tag:"span"},{default:()=>s.value.map((e,a)=>C(We,{clsPrefix:i,key:s.value.length-a-1,oldOriginalNumber:t.value,newOriginalNumber:l.value,value:e}))}),C(e,{key:"+",width:!0},{default:()=>void 0!==a.max&&a.max<n?C(We,{clsPrefix:i,value:"+"}):null})):C("span",{class:`${i}-base-slot-machine`},n)}}}),Fe=u([u("@keyframes badge-wave-spread",{from:{boxShadow:"0 0 0.5px 0px var(--n-ripple-color)",opacity:.6},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)",opacity:0}}),o("badge","\n display: inline-flex;\n position: relative;\n vertical-align: middle;\n font-family: var(--n-font-family);\n ",[b("as-is",[o("badge-sup",{position:"static",transform:"translateX(0)"},[ge({transformOrigin:"left bottom",originalTransform:"translateX(0)"})])]),b("dot",[o("badge-sup","\n height: 8px;\n width: 8px;\n padding: 0;\n min-width: 8px;\n left: 100%;\n bottom: calc(100% - 4px);\n ",[u("::before","border-radius: 4px;")])]),o("badge-sup","\n background: var(--n-color);\n transition:\n background-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n color: #FFF;\n position: absolute;\n height: 18px;\n line-height: 18px;\n border-radius: 9px;\n padding: 0 6px;\n text-align: center;\n font-size: var(--n-font-size);\n transform: translateX(-50%);\n left: 100%;\n bottom: calc(100% - 9px);\n font-variant-numeric: tabular-nums;\n z-index: 2;\n display: flex;\n align-items: center;\n ",[ge({transformOrigin:"left bottom",originalTransform:"translateX(-50%)"}),o("base-wave",{zIndex:1,animationDuration:"2s",animationIterationCount:"infinite",animationDelay:"1s",animationTimingFunction:"var(--n-ripple-bezier)",animationName:"badge-wave-spread"}),u("&::before",'\n opacity: 0;\n transform: scale(1);\n border-radius: 9px;\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n ')])])]),He=w({name:"Badge",props:Object.assign(Object.assign({},s.props),{value:[String,Number],max:Number,dot:Boolean,type:{type:String,default:"default"},show:{type:Boolean,default:!0},showZero:Boolean,processing:Boolean,color:String,offset:Array}),setup(e,{slots:a}){const{mergedClsPrefixRef:n,inlineThemeDisabled:o,mergedRtlRef:u}=r(e),c=s("Badge","-badge",Fe,Ie,e,n),p=Y(!1),v=I(()=>e.show&&(e.dot||void 0!==e.value&&!(!e.showZero&&Number(e.value)<=0)||!i(a.value)));U(()=>{v.value&&(p.value=!0)});const f=t("Badge",u,n),m=I(()=>{const{type:a,color:t}=e,{common:{cubicBezierEaseInOut:l,cubicBezierEaseOut:s},self:{[g("color",a)]:n,fontFamily:i,fontSize:o}}=c.value;return{"--n-font-size":o,"--n-font-family":i,"--n-color":t||n,"--n-ripple-color":t||n,"--n-bezier":l,"--n-ripple-bezier":s}}),y=o?d("badge",I(()=>{let a="";const{type:t,color:s}=e;return t&&(a+=t[0]),s&&(a+=l(s)),a}),m,e):void 0,h=I(()=>{const{offset:a}=e;if(!a)return;const[t,l]=a,s="number"==typeof t?`${t}px`:t,n="number"==typeof l?`${l}px`:l;return{transform:`translate(calc(${(null==f?void 0:f.value)?"50%":"-50%"} + ${s}), ${n})`}});return{rtlEnabled:f,mergedClsPrefix:n,appeared:p,showBadge:v,handleAfterEnter:()=>{p.value=!0},handleAfterLeave:()=>{p.value=!1},cssVars:o?void 0:m,themeClass:null==y?void 0:y.themeClass,onRender:null==y?void 0:y.onRender,offsetStyle:h}},render(){var e;const{mergedClsPrefix:a,onRender:t,themeClass:l,$slots:s}=this;null==t||t();const n=null===(e=s.default)||void 0===e?void 0:e.call(s);return C("div",{class:[`${a}-badge`,this.rtlEnabled&&`${a}-badge--rtl`,l,{[`${a}-badge--dot`]:this.dot,[`${a}-badge--as-is`]:!n}],style:this.cssVars},n,C(E,{name:"fade-in-scale-up-transition",onAfterEnter:this.handleAfterEnter,onAfterLeave:this.handleAfterLeave},{default:()=>this.showBadge?C("sup",{class:`${a}-badge-sup`,title:je(this.value),style:this.offsetStyle},h(s.value,()=>[this.dot?null:C(qe,{clsPrefix:a,appeared:this.appeared,max:this.max,value:this.value})]),this.processing?C(v,{clsPrefix:a}):null):null}))}}),Ve={class:"remote-provider-fields"},Xe={class:"remote-field-label"},Ze=m({__name:"RemoteProviderFields",props:{provider:{type:Object,required:!0},definition:{type:Object,default:null}},setup(e){const a=e,t=I(()=>Array.isArray(a.definition?.fields)?a.definition.fields:[]);function l(e){const t=e?.visibleWhen;return!t||"object"!=typeof t||a.provider?.config?.[t.key]===t.equals}function s(e){return"secret"===e.type?"password":"text"}return(a,n)=>(O(),F("div",Ve,[(O(!0),F(T,null,z(t.value,a=>J((O(),F("div",{key:a.key,class:M(["remote-field",{"remote-field-wide":!0===a.wide}])},[H("span",Xe,N(a.label),1),"select"===a.type?(O(),S(R(_e),{key:0,value:e.provider.config[a.key],"onUpdate:value":t=>e.provider.config[a.key]=t,size:"small",options:a.options||[],placeholder:a.placeholder},null,8,["value","onUpdate:value","options","placeholder"])):(O(),S(R(Ee),{key:1,value:e.provider.config[a.key],"onUpdate:value":t=>e.provider.config[a.key]=t,size:"small",type:s(a),"show-password-on":"secret"===a.type?"click":void 0,placeholder:a.placeholder},null,8,["value","onUpdate:value","type","show-password-on","placeholder"]))],2)),[[B,l(a)]])),128))]))}},[["__scopeId","data-v-44913e2a"]]);var Ke={class:"settings-container"},Ge={class:"settings-sidebar"},Qe={class:"sidebar-header"},ea={class:"settings-menu"},aa=["onClick"],ta={class:"menu-label"},la={class:"settings-content"},sa={class:"settings-panel"},na={class:"panel-header"},ia={class:"panel-title-row"},oa={class:"panel-body"},ra={class:"setting-group"},ua={class:"setting-item"},da={class:"setting-label"},ca={class:"visibility-options"},pa={class:"visibility-item"},va={class:"visibility-info"},fa={class:"visibility-item"},ma={class:"visibility-info"},ya={class:"visibility-item"},ga={class:"visibility-info"},ha={class:"setting-item"},ba={class:"setting-label"},wa={class:"home-cli-settings"},xa={class:"platform-catalog-list"},ka={key:0,class:"platform-order-actions"},_a={class:"home-cli-actions"},za={class:"setting-item"},Ca={class:"setting-label"},Pa={class:"simple-theme-options"},Sa={class:"theme-text"},Ua={key:0,class:"theme-check"},Oa={class:"theme-text"},ja={key:0,class:"theme-check"},Aa={class:"settings-panel"},Na={class:"panel-header"},Ia={class:"panel-title-row"},La={class:"panel-body"},$a={class:"setting-group"},Ba={class:"setting-item"},Ta={class:"setting-label"},Ma={class:"notification-options"},Ea={class:"visibility-item"},Da={class:"visibility-info"},Ra={key:1,class:"notification-type-section"},Wa={class:"radio-content"},Ya={class:"radio-content"},Ja={class:"radio-content"},qa={style:{"font-size":"13px"}},Fa={class:"setting-item"},Ha={class:"setting-label"},Va={class:"notification-options"},Xa={class:"remote-provider-toolbar"},Za={class:"remote-provider-header"},Ka={class:"remote-provider-title-row"},Ga={class:"remote-provider-avatar"},Qa={class:"remote-provider-title"},et={class:"remote-provider-name-row"},at={class:"remote-provider-fields"},tt={class:"remote-field remote-field-wide"},lt={class:"remote-fields-descriptor"},st={class:"remote-provider-actions"},nt={class:"panel-footer"},it={class:"settings-panel"},ot={class:"panel-header"},rt={class:"panel-title-row"},ut={class:"panel-body"},dt={class:"setting-group"},ct={class:"setting-item"},pt={class:"setting-label"},vt={class:"ports-grid"},ft={class:"setting-item"},mt={class:"setting-label"},yt={class:"advanced-options"},gt={class:"option-field"},ht={class:"option-label"},bt={class:"setting-item"},wt={class:"setting-label"},xt={class:"advanced-options"},kt={class:"option-field"},_t={class:"option-label"},zt={class:"option-field"},Ct={class:"option-label"},Pt={class:"option-field"},St={class:"option-label"},Ut={class:"option-field"},Ot={class:"option-label"},jt={class:"setting-item"},At={class:"setting-label"},Nt={style:{"margin-top":"16px"}},It={style:{background:"var(--bg-secondary)",padding:"16px","border-radius":"8px","border-left":"3px solid var(--border-secondary)"}},Lt={style:{display:"flex","align-items":"center",gap:"12px","margin-bottom":"12px"}},$t={class:"panel-footer"},Bt={class:"settings-panel"},Tt={class:"panel-header"},Mt={class:"panel-title-row"},Et={class:"panel-body"},Dt={class:"setting-group"},Rt={class:"setting-item"},Wt={class:"setting-label"},Yt={class:"security-status"},Jt={class:"setting-item"},qt={class:"setting-label"},Ft={class:"security-form"},Ht={class:"panel-footer"},Vt={class:"settings-panel"},Xt={class:"panel-header"},Zt={class:"panel-title-row"},Kt={class:"panel-body"},Gt={class:"setting-item",style:{"margin-bottom":"12px"}},Qt={class:"model-meta-section"},el={class:"speed-test-defaults"},al={class:"speed-test-default-label"},tl={class:"model-toolbar"},ll={class:"model-filter-row"},sl={key:0,class:"setting-item"},nl={key:1,class:"model-list"},il=["onClick"],ol={class:"model-card-id"},rl={key:0,class:"model-card-body"},ul={class:"model-meta-editor"},dl={class:"model-meta-section"},cl={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"8px"}},pl={class:"model-meta-section",style:{"margin-top":"8px"}},vl={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"8px"}},fl={class:"panel-footer"},ml={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"12px"}},yl={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"12px"}},gl={style:{display:"grid","grid-template-columns":"1fr 1fr",gap:"12px"}},hl=m({__name:"SettingsDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(e,{emit:a}){const{drawerWidth:t,isMobile:l}=xe(720),s=Q(),{uiConfig:n}=K();async function i(e){return(await V.post("/settings/model-settings",e)).data}async function o(e){return(await V.delete(`/settings/model-settings/${encodeURIComponent(e)}`)).data}const r=e,u=a,d=I({get:()=>r.visible,set:e=>u("update:visible",e)}),p=Y("appearance"),{isDark:v,toggleTheme:m}=Re(),y=Y(!0),g=Y(!0),h=Y(!1),b=Y({webUI:19999}),w=Y({webUI:19999}),_=I(()=>[{key:"webUI",label:"Web UI",defaultPort:19999},...s.all.filter(e=>e.portKey&&Number.isFinite(e.defaultPort)).sort((e,a)=>(e.sortOrder||0)-(a.sortOrder||0)).map(e=>({key:e.portKey,label:e.portLabel||e.label||e.key,defaultPort:e.defaultPort}))]),C=Y(!1),L=Y([...G]),E=Y([...G]),q=Y(!1),ge=Y(!1),je=Y(!1),Ie=I(()=>ge.value?"[v] 已启用":"未启用"),We=I(()=>ge.value?"重启电脑时 coding-tool-x 会自动启动。如需禁用,点击下方按钮":"启用后,重启电脑时 coding-tool-x 会自动启动");function Ye(e={}){const a=(e?.omp&&"object"==typeof e.omp&&!Array.isArray(e.omp)?e.omp:null)||e,t=Number.isInteger(a.intervalSeconds)&&a.intervalSeconds>=1&&a.intervalSeconds<=60?a.intervalSeconds:5;return{enabled:"boolean"!=typeof a.enabled||a.enabled,intervalSeconds:t}}function Je(e={}){return{maxLogs:e.maxLogs??100,statsInterval:e.statsInterval??30,enableSessionBinding:!1!==e.enableSessionBinding,nativeCliLogs:Ye(e.nativeCliLogs)}}const qe=Y(Je()),Fe=Y(Je()),Ve=Y([]),Xe=Y([]);function hl(e={}){const a=String(e.key||"").trim();return a?{key:a,label:String(e.label||a),description:"string"==typeof e.description?e.description:"",implementation:"string"==typeof e.implementation?e.implementation:"",externalMessage:"string"==typeof e.externalMessage?e.externalMessage:"",hints:Array.isArray(e.hints)?e.hints.filter(e=>"string"==typeof e):[]}:null}function bl(e={}){return{enabled:!0===e.enabled,type:"dialog"===e.type||"browser"===e.type?e.type:"notification",external:!0===e.external}}function wl(e,a=Xe.value){return a.find(a=>a.type===e)||null}function xl(e){return wl(e)?.label||e||"远程通知"}function kl(e){const a=xl(e).trim();return Array.from(a)[0]||"通"}function _l(e={},a=Ve.value,t=Xe.value){const l={enabled:e?.stopHook?.enabled,type:e?.stopHook?.type},s=e.platforms&&"object"==typeof e.platforms&&!Array.isArray(e.platforms)?e.platforms:{};return{platforms:Object.fromEntries(a.map(e=>[e.key,bl(s[e.key]||("claude"===e.key?l:{}))])),remoteNotifications:{providers:Array.isArray(e?.remoteNotifications?.providers)?e.remoteNotifications.providers.map(e=>function(e={},a=Xe.value){const t=String(e.type||"").trim(),l=wl(t,a)||a[0],s=l?.type||t;if(!s)return null;const n=l?.defaults&&"object"==typeof l.defaults?l.defaults:{};return{id:e.id||`${s}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,type:s,name:e.name||l?.label||s,enabled:!0===e.enabled,config:{...n,...e.config&&"object"==typeof e.config?e.config:{}}}}(e,t)).filter(Boolean):[]}}}const zl=Y(_l()),Cl=Y(_l()),Pl=Y(!1),Sl=Y(""),Ul=Y(""),Ol=I(()=>Xe.value.map(e=>({label:e.label||e.type,value:e.type}))),jl=Y(""),Al=Y("default"),Nl=I(()=>"undefined"!=typeof window&&"undefined"!=typeof Notification&&(!!window.isSecureContext||["localhost","127.0.0.1","::1"].includes(window.location.hostname))),Il=I(()=>Nl.value?"granted"===Al.value?"已授权":"denied"===Al.value?"已被浏览器拒绝,请在浏览器站点设置里重新开启":"尚未授权,保存时会请求浏览器权限":"当前环境不支持浏览器通知,请使用 localhost 或 HTTPS 页面");function Ll(e="notification"){if("browser"===e)return"浏览器通知";if("dialog"===e)return"确认式弹窗";switch(jl.value){case"win32":return"右上角悬浮卡片";case"darwin":return"角落横幅通知";case"linux":return"桌面环境通知";default:return"轻提醒卡片"}}function $l(e="notification"){return"browser"===e?Nl.value?"granted"===Al.value?"通过当前打开的 Web 页面显示浏览器原生通知":"denied"===Al.value?"浏览器通知权限已被拒绝,需要先在浏览器中重新授权":"通过当前打开的 Web 页面显示原生通知,保存时会请求权限":"当前页面环境不支持浏览器通知":"dialog"===e?"强制提醒,需要手动点击确认才能关闭":"win32"===jl.value?"轻量提醒,几秒后自动消失,带提示音(Windows 使用系统 Toast 风格提醒)":"轻量提醒,几秒后自动消失,带提示音"}function Bl(){"undefined"!=typeof Notification?Al.value=Notification.permission:Al.value="unsupported"}function Tl(){const e=function(e=Xe.value[0]?.type){const a=wl(e);return a?{id:`${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,type:e,name:xl(e),enabled:!1,config:{...a.defaults&&"object"==typeof a.defaults?a.defaults:{}}}:null}(Ul.value);e&&zl.value.remoteNotifications.providers.push(e)}const Ml=Y({hasPassword:!1}),El=Y(!1),Dl=Y(!1),Rl=Y({currentPassword:"",newPassword:"",confirmPassword:""}),Wl=Y(!1),Yl=I(()=>{const e=Rl.value.currentPassword.trim(),a=Rl.value.newPassword,t=Rl.value.confirmPassword;return Ml.value.hasPassword&&!e?"请输入当前密码":a?a.length<4?"新密码至少需要 4 位":t&&a!==t?"两次输入的新密码不一致":"":""}),Jl=I(()=>{const e=Rl.value;return(!Ml.value.hasPassword||Boolean(e.currentPassword.trim()))&&e.newPassword.length>=4&&e.newPassword===e.confirmPassword});let ql=null;const Fl=Y({name:"Models.dev",url:"",lastUpdated:""}),Hl=Y(!1),Vl=Y(!1),Xl=Y({}),Zl=Y({}),Kl=Y({}),Gl=Y(""),Ql=Y("all"),es=Y([]),as=Y(!1),ts=Y({modelId:"",context:128e3,output:8192,inputPrice:0,outputPrice:0,cacheCreationPrice:0,cacheReadPrice:0}),ls=Y(new Set),ss=Y({}),ns=Y({}),is=I(()=>es.value.length>0?es.value.map(e=>({key:e.key,label:e.label||e.key,models:Array.isArray(e.models)?e.models:[]})):Object.keys(ss.value).map(e=>{const a="function"==typeof s.get?s.get(e):null;return{key:e,label:a?.label||a?.title||e,models:[]}})),os=Y(new Set),rs=I(()=>Object.keys(Kl.value).length>0),us=I(()=>rs.value||JSON.stringify(ss.value)!==JSON.stringify(ns.value)),ds=I(()=>{const e=String(ts.value.modelId||"").trim();if(!e)return"请输入模型 ID";const a=Object.keys(Xl.value).find(a=>a.toLowerCase()===e.toLowerCase());return a?`模型已存在:${a}`:!Number.isFinite(ts.value.context)||ts.value.context<=0?"Context 窗口必须为正数":!Number.isFinite(ts.value.output)||ts.value.output<=0?"Max Output 必须为正数":ts.value.inputPrice<0||ts.value.outputPrice<0||ts.value.cacheCreationPrice<0||ts.value.cacheReadPrice<0?"价格不能为负数":""});function cs(){ts.value={modelId:"",context:128e3,output:8192,inputPrice:0,outputPrice:0,cacheCreationPrice:0,cacheReadPrice:0},as.value=!0}function ps(){as.value=!1}function vs(){if(ds.value)return;const e=String(ts.value.modelId||"").trim(),a={limit:{context:ts.value.context,output:ts.value.output},pricing:{input:ts.value.inputPrice,output:ts.value.outputPrice,cacheCreation:ts.value.cacheCreationPrice,cacheRead:ts.value.cacheReadPrice}};Xl.value[e]=a,Kl.value[e]={limit:{...a.limit},pricing:{...a.pricing}},Gl.value=e,as.value=!1,Te.success("模型已新增,请点击“保存设置”使其生效")}function fs(e){return ls.value.has(e)}function ms(e){return!fs(e)}const ys={claude:"claude",openai:"codex",gemini:"gemini"},gs=I(()=>{const e=Object.keys(Xl.value),a=Gl.value.trim().toLowerCase(),t=Ql.value,l=ys[t];return e.filter(e=>{if(a&&!e.toLowerCase().includes(a))return!1;const s=Xl.value[e];return"compatible"===t?!!Array.isArray(s?.toolTypes)&&(s.toolTypes.includes("opencode")||s.toolTypes.includes("omp")):l?Array.isArray(s?.toolTypes)?s.toolTypes.includes(l):function(e,a=Xl.value[e]){const t=String(e||"").trim().toLowerCase(),l=function(e={}){return Array.isArray(e?.toolTypes)?[...new Set(e.toolTypes.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean))]:[]}(a);return l.length>0?l[0]:t.startsWith("claude-")?"claude":t.startsWith("gemini-")?"gemini":t.startsWith("gpt-")||t.startsWith("o1")||t.startsWith("o3")||t.startsWith("o4")?"codex":""}(e,s)===l:"overrides"!==t||!!Zl.value[e]})});const hs=I(()=>{const e=Object.fromEntries(is.value.map(e=>[e.key,[...new Set(e.models)].sort((e,a)=>e.localeCompare(a)).map(e=>({label:e,value:e}))]));for(const a of is.value){const t=String(ss.value[a.key]||"").trim();t&&e[a.key]&&(e[a.key].some(e=>e.value===t)||e[a.key].push({label:`${t}(自定义)`,value:t}))}return e});function bs(e,a,t){return void 0!==Kl.value[e]?.[a]?.[t]?Kl.value[e][a][t]:Xl.value[e]?.[a]?.[t]??null}function ws(e,a,t,l){if(!Kl.value[e]){const a=Xl.value[e]||{};Kl.value[e]={limit:{...a.limit||{}},pricing:{...a.pricing||{}}}}Kl.value[e][a]||(Kl.value[e][a]={}),Kl.value[e][a][t]=l}async function xs(){Hl.value=!0;try{const e=await async function(){return(await V.get("/settings/model-settings")).data}(),a=e.metadataSource||{};Fl.value={name:a.name||"Models.dev",url:a.url||"",lastUpdated:a.lastUpdated||""},Xl.value=e.models&&"object"==typeof e.models&&!Array.isArray(e.models)?e.models:{},es.value=Array.isArray(e.modelPlatforms)?e.modelPlatforms.filter(e=>e&&"string"==typeof e.key&&e.key.trim()):[];const t=e.overrides??e.modelMetadataOverrides;Zl.value={...t&&"object"==typeof t&&!Array.isArray(t)?t:{}};const l=Array.isArray(e.builtinModelIds)?e.builtinModelIds:Object.keys(Xl.value);ls.value=new Set(l.filter(e=>"string"==typeof e&&e.trim())),ss.value=Object.fromEntries(Object.entries(e.defaultSpeedTestModels||{}).map(([e,a])=>[e,"string"==typeof a?a.trim():""])),function(){const e={...ss.value};let a=!1;for(const t of is.value){const l=hs.value[t.key]||[];0!==l.length&&(new Set(l.map(e=>e.value)).has(e[t.key])||(e[t.key]=l[0].value,a=!0))}a&&(ss.value=e)}(),ns.value={...ss.value},Kl.value={}}catch(e){}finally{Hl.value=!1}}async function ks(){Vl.value=!0;try{const e={...Zl.value};for(const[a,t]of Object.entries(Kl.value)){const l=e[a]||{};e[a]={limit:{...l.limit||{},...t.limit||{}},pricing:{...l.pricing||{},...t.pricing||{}}}}await i({overrides:e,defaultSpeedTestModels:ss.value}),Zl.value=e,ns.value={...ss.value},Kl.value={},await xs(),Te.success("模型设置已保存")}catch(e){Te.error("保存失败:"+e.message)}finally{Vl.value=!1}}async function _s(){try{await i({overrides:{},defaultSpeedTestModels:ss.value}),Zl.value={},Kl.value={},await xs(),Te.success("全部模型设置已重置为内置默认值")}catch(e){Te.error("重置失败:"+e.message)}}const zs=I(()=>{const e=Object.keys(b.value).some(e=>b.value[e]!==w.value[e]),a=qe.value.nativeCliLogs.enabled!==Fe.value.nativeCliLogs.enabled||qe.value.nativeCliLogs.intervalSeconds!==Fe.value.nativeCliLogs.intervalSeconds;return e||qe.value.maxLogs!==Fe.value.maxLogs||qe.value.statsInterval!==Fe.value.statsInterval||qe.value.enableSessionBinding!==Fe.value.enableSessionBinding||a}),Cs=I(()=>[{key:"appearance",label:"外观设置",icon:W(ce)},{key:"notification",label:"通知设置",icon:W(ae)},{key:"advanced",label:"高级设置",icon:W(re)},{key:"security",label:"安全设置",icon:W(pe)},{key:"model-settings",label:"模型设置",icon:W(ie)}]),Ps=I(()=>{const e=Array.isArray(s.all)?s.all:[],a=new Map(e.map(e=>[e.key,e])),t=L.value.map(e=>a.get(e)).filter(Boolean),l=new Set(t.map(e=>e.key)),n=e.filter(e=>!l.has(e.key));return[...t,...n]});function Ss(e){return String(e||"").trim().toLowerCase()}const Us=I(()=>function(e=Ve.value){const a=new Set((Array.isArray(s.all)?s.all:[]).map(e=>Ss(e.key)).filter(Boolean)),t=new Set(L.value.map(Ss).filter(Boolean));return e.filter(e=>{const l=Ss(e.key);return!a.has(l)||t.has(l)})}());const Os=I(()=>JSON.stringify(L.value)!==JSON.stringify(E.value));function js(e){return L.value.indexOf(e)}function As(e,a){const t=js(e),l=t+a;if(t<0||l<0||l>=L.value.length)return;const s=[...L.value],[n]=s.splice(t,1);s.splice(l,0,n),L.value=s}function Ns(){L.value=[...G]}async function Is(){try{const e=await Z();if(e.success&&e.config){y.value=!1!==e.config.panelVisibility?.showChannels,g.value=!1!==e.config.panelVisibility?.showLogs,h.value=!0===e.config.channelBalance?.showRemaining;const a=Array.isArray(e.config.enabledCliPlatforms)?e.config.enabledCliPlatforms:G;L.value=[...a],E.value=[...a]}}catch(e){}}async function Ls(){q.value=!0;try{const e=await ee({enabledCliPlatforms:[...L.value]});if(!e.success)throw new Error(e.message||"保存失败");const a=Array.isArray(e.config?.enabledCliPlatforms)?[...e.config.enabledCliPlatforms]:[...L.value];L.value=[...a],E.value=[...a],n.value={...n.value,enabledCliPlatforms:[...a]},window.dispatchEvent(new CustomEvent("enabled-cli-platforms-change",{detail:{enabledCliPlatforms:[...a]}})),Te.success("首页 CLI 显示已保存")}catch(e){Te.error("保存失败: "+e.message)}finally{q.value=!1}}async function $s(){try{await X("panelVisibility","showChannels",y.value),await X("panelVisibility","showLogs",g.value),await X("channelBalance","showRemaining",h.value)}catch(e){}}function Bs(e){y.value=e,$s(),window.dispatchEvent(new CustomEvent("panel-visibility-change",{detail:{showChannels:e,showLogs:g.value}}))}function Ts(e){g.value=e,$s(),window.dispatchEvent(new CustomEvent("panel-visibility-change",{detail:{showChannels:y.value,showLogs:e}}))}function Ms(e){h.value=e,$s(),window.dispatchEvent(new CustomEvent("channel-balance-visibility-change",{detail:{showRemaining:e}}))}async function Es(e){try{(await fetch("/api/config/advanced",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ports:b.value,maxLogs:qe.value.maxLogs,statsInterval:qe.value.statsInterval,enableSessionBinding:e,nativeCliLogs:qe.value.nativeCliLogs})})).ok?(Fe.value=Je(qe.value),Te.success(e?"会话绑定已开启":"会话绑定已关闭")):(qe.value.enableSessionBinding=!e,Te.error("保存失���"))}catch(a){qe.value.enableSessionBinding=!e,Te.error("保存失败: "+a.message)}}function Ds(e={}){const a=function(e={}){const a=Array.isArray(e.platformDefinitions)?e.platformDefinitions.map(hl).filter(Boolean):[];if(a.length>0)return a;const t=e.platforms&&"object"==typeof e.platforms&&!Array.isArray(e.platforms)?e.platforms:{},l=Object.keys(t);return 0===l.length&&e.stopHook&&"object"==typeof e.stopHook&&l.push("claude"),l.map(e=>hl({key:e,label:e})).filter(Boolean)}(e),t=function(e={}){const a=Array.isArray(e.remoteProviderTypes)?e.remoteProviderTypes.map(e=>({...e,type:String(e?.type||"").trim()})).filter(e=>e.type):[],t=new Set(a.map(e=>e.type)),l=Array.isArray(e.remoteNotifications?.providers)?e.remoteNotifications.providers:[];for(const s of l){const e=String(s?.type||"").trim();e&&!t.has(e)&&(a.push({type:e,label:e,description:"",hint:"",defaults:{},fields:[]}),t.add(e))}return a}(e);return Ve.value=a,Xe.value=t,t.some(e=>e.type===Ul.value)||(Ul.value=t[0]?.type||""),{definitions:a,providerDefinitions:t}}async function Rs(){try{const e=await fetch("/api/hooks");if(e.ok){const a=await e.json(),{definitions:t,providerDefinitions:l}=Ds(a),s=_l(a,t,l);zl.value=s,Cl.value=JSON.parse(JSON.stringify(s)),jl.value=a.platform||"",Bl()}}catch(e){}}async function Ws(){Pl.value=!0;try{const e=new Set(Us.value.map(e=>e.key));Object.entries(zl.value.platforms||{}).filter(([a])=>e.has(a)).some(([,e])=>!0===e?.enabled&&"browser"===e.type)&&await async function(){if(!Nl.value)throw new Error("当前页面环境不支持浏览器通知,请改用 HTTPS 或 localhost 页面");if(Bl(),"granted"===Al.value)return;const e=await Notification.requestPermission();if(Al.value=e,"granted"!==e)throw new Error("浏览器通知权限未授予")}();const a=await fetch("/api/hooks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({platforms:Object.fromEntries(Object.entries(zl.value.platforms||{}).filter(([a])=>e.has(a)).map(([e,a])=>[e,{enabled:a.enabled,type:a.type}])),remoteNotifications:{providers:zl.value.remoteNotifications.providers}})});if(a.ok){const e=await a.json(),{definitions:t,providerDefinitions:l}=Ds(e),s=_l(e,t,l);zl.value=s,Cl.value=JSON.parse(JSON.stringify(s)),jl.value=e.platform||jl.value,Te.success("通知设置已保存")}else{const e=await a.json();Te.error("保存失败:"+(e.error||"未知错误"))}}catch(e){Te.error("保存失败:"+e.message)}finally{Pl.value=!1}}function Ys(){Rl.value={currentPassword:"",newPassword:"",confirmPassword:""}}async function Js(e=!1){return Dl.value&&ql?ql:El.value&&!e?Promise.resolve():(Dl.value=!0,ql=(async()=>{try{const e=await Pe();e.success&&(Ml.value={hasPassword:Boolean(e.hasPassword)},El.value=!0)}catch(e){}finally{Dl.value=!1,ql=null}})(),ql)}async function qs(){if(!Jl.value)return void Te.warning("请完善密码信息");const e=Ml.value.hasPassword;Wl.value=!0;try{const a={newPassword:Rl.value.newPassword};Ml.value.hasPassword&&(a.currentPassword=Rl.value.currentPassword);const t=await Ce(a);t.success?(Ml.value.hasPassword=!0,El.value=!0,Ys(),Te.success(e?"密码已更新":"密码已设置")):Te.error(t.error||"保存失败")}catch(a){Te.error(a.response?.data?.error||"保存失败")}finally{Wl.value=!1}}async function Fs(){C.value=!0;try{const e=await fetch("/api/config/advanced",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ports:b.value,maxLogs:qe.value.maxLogs,statsInterval:qe.value.statsInterval,enableSessionBinding:qe.value.enableSessionBinding,nativeCliLogs:qe.value.nativeCliLogs})});if(e.ok)w.value={...b.value},Fe.value=Je(qe.value),window.dispatchEvent(new CustomEvent("advanced-config-change",{detail:{maxLogs:qe.value.maxLogs,statsInterval:qe.value.statsInterval}})),Te.success("配置已保存,端口修改需要重启服务器生效;OMP 原生会话日志配置立即生效");else{const a=await e.json();Te.error("保存失败:"+(a.error||"未知错误"))}}catch(e){Te.error("保存失败:"+e.message)}finally{C.value=!1}}async function Hs(){try{const e=await async function(){return(await V.get("/pm2-autostart")).data}();e&&e.success?ge.value=e.data?.enabled||!1:ge.value=!1}catch(e){ge.value=!1}}async function Vs(){je.value=!0;try{const e=await async function(){return(await V.post("/pm2-autostart",{action:"enable"})).data}();if(e.success)ge.value=!0,Te.success("开机自启已启用");else{const a=e.message||"未知错误";a.includes("暂无运行中的进程")||a.includes("请先启动")?Te.warning(a):Te.error(a)}}catch(e){Te.error(e.message||"启用失败:未知错误")}finally{je.value=!1}}async function Xs(){je.value=!0;try{const e=await async function(){return(await V.post("/pm2-autostart",{action:"disable"})).data}();if(e.success)ge.value=!1,Te.success("开机自启已禁用");else{const a=e.message||"未知错误";a.includes("未启用")||a.includes("不存在")?Te.warning(a):Te.error(a)}}catch(e){Te.error(e.message||"禁用失败:未知错误")}finally{je.value=!1}}return U(()=>{"function"==typeof s.load&&s.load(),Is(),Js(),xs(),r.visible&&Rs()}),A(d,e=>{e?(Is(),async function(){try{"function"==typeof s.load&&await s.load();const e=await fetch("/api/config/advanced");if(e.ok){const a=await e.json(),t={};for(const e of _.value)t[e.key]=a.ports?.[e.key]||e.defaultPort;b.value=t,w.value={...b.value},qe.value=Je({maxLogs:a.maxLogs||100,statsInterval:a.statsInterval||30,enableSessionBinding:!1!==a.enableSessionBinding,nativeCliLogs:a.nativeCliLogs}),Fe.value=Je(qe.value)}}catch(e){}}(),Hs(),Rs(),xs(),Js(!0)):Ys()}),A(p,(e,a)=>{"security"===e&&Js(),"security"===a&&"security"!==e&&Ys()}),(e,a)=>(O(),S(R(we),{show:d.value,"onUpdate:show":a[25]||(a[25]=e=>d.value=e),width:R(t),placement:"right","show-mask":!0},{default:$(()=>[P(R(ke),{"show-header":!1,closable:"","native-scrollbar":!1},{default:$(()=>[H("div",Ke,[H("div",Ge,[H("div",Qe,[P(R(c),{size:"20",color:"var(--text-secondary)"},{default:$(()=>[P(R(ue))]),_:1}),a[26]||(a[26]=H("span",{class:"sidebar-title"},"设置分类",-1))]),H("div",ea,[(O(!0),F(T,null,z(Cs.value,e=>(O(),F("div",{key:e.key,class:M(["menu-item",{active:p.value===e.key}]),onClick:a=>p.value=e.key},[P(R(c),{size:18,class:"menu-icon"},{default:$(()=>[(O(),S(j(e.icon)))]),_:2},1024),H("span",ta,N(e.label),1),e.badge?(O(),S(R(He),{key:0,value:e.badge,type:e.badgeType||"info","show-zero":!1},null,8,["value","type"])):x("",!0)],10,aa))),128))])]),H("div",la,[J(H("div",sa,[H("div",na,[H("div",ia,[P(R(c),{size:"24",color:"var(--text-secondary)"},{default:$(()=>[P(R(ce))]),_:1}),H("div",null,[a[28]||(a[28]=H("h3",{class:"panel-title"},"外观设置",-1)),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[...a[27]||(a[27]=[k("自定义界面外观和主题",-1)])]),_:1})])])]),H("div",oa,[H("div",ra,[H("div",ua,[H("div",da,[P(R(ze),{strong:""},{default:$(()=>[...a[29]||(a[29]=[k("面板显示",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[30]||(a[30]=[k(" 控制右侧面板中各个区域的显示 ",-1)])]),_:1})]),H("div",ca,[H("div",pa,[H("div",va,[P(R(ze),{strong:""},{default:$(()=>[...a[31]||(a[31]=[k("显示渠道列表",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px"}},{default:$(()=>[...a[32]||(a[32]=[k(" 在右侧面板显示 API 渠道管理区域 ",-1)])]),_:1})]),P(R(Be),{value:y.value,"onUpdate:value":Bs},null,8,["value"])]),H("div",fa,[H("div",ma,[P(R(ze),{strong:""},{default:$(()=>[...a[33]||(a[33]=[k("显示实时日志",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px"}},{default:$(()=>[...a[34]||(a[34]=[k(" 在 Dashboard 显示实时日志区域 ",-1)])]),_:1})]),P(R(Be),{value:g.value,"onUpdate:value":Ts},null,8,["value"])]),H("div",ya,[H("div",ga,[P(R(ze),{strong:""},{default:$(()=>[...a[35]||(a[35]=[k("显示剩余金额",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px"}},{default:$(()=>[...a[36]||(a[36]=[k(" 在渠道卡片显示可识别 API 网关的余额 ",-1)])]),_:1})]),P(R(Be),{value:h.value,"onUpdate:value":Ms},null,8,["value"])])])]),P(R(be)),H("div",ha,[H("div",ba,[P(R(ze),{strong:""},{default:$(()=>[...a[37]||(a[37]=[k("首页 CLI 显示",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[38]||(a[38]=[k(" 从已注册的平台目录中选择并排序首页显示的 CLI ",-1)])]),_:1})]),H("div",wa,[H("div",xa,[(O(!0),F(T,null,z(Ps.value,e=>(O(),F("div",{key:e.key,class:"platform-catalog-item"},[P(R(Me),{checked:L.value.includes(e.key),"onUpdate:checked":a=>function(e,a){const t=L.value.filter(a=>a!==e);a&&t.push(e),L.value=t}(e.key,a)},{default:$(()=>[k(N(e.label||e.title||e.key),1)]),_:2},1032,["checked","onUpdate:checked"]),L.value.includes(e.key)?(O(),F("div",ka,[P(R(f),{text:"",size:"small",disabled:0===js(e.key),"aria-label":"上移",onClick:a=>As(e.key,-1)},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(oe))]),_:1})]),_:1},8,["disabled","onClick"]),P(R(f),{text:"",size:"small",disabled:js(e.key)===L.value.length-1,"aria-label":"下移",onClick:a=>As(e.key,1)},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(me))]),_:1})]),_:1},8,["disabled","onClick"])])):x("",!0)]))),128))]),H("div",_a,[P(R(f),{size:"small",onClick:Ns},{default:$(()=>[...a[39]||(a[39]=[k("恢复默认显示",-1)])]),_:1}),P(R(f),{type:"primary",size:"small",loading:q.value,disabled:!Os.value,onClick:Ls},{default:$(()=>[...a[40]||(a[40]=[k(" 保存首页显示 ",-1)])]),_:1},8,["loading","disabled"])])])]),P(R(be)),H("div",za,[H("div",Ca,[P(R(ze),{strong:""},{default:$(()=>[...a[41]||(a[41]=[k("界面主题",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[42]||(a[42]=[k(" 选择你喜欢的界面主题风格 ",-1)])]),_:1})]),H("div",Pa,[H("div",{class:M(["simple-theme-item",{active:!R(v)}]),onClick:a[0]||(a[0]=e=>R(v)&&R(m)())},[P(R(c),{size:20,class:"theme-icon"},{default:$(()=>[P(R(de))]),_:1}),H("div",Sa,[P(R(ze),{strong:""},{default:$(()=>[...a[43]||(a[43]=[k("亮色模式",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[44]||(a[44]=[k("经典的浅色主题",-1)])]),_:1})]),R(v)?x("",!0):(O(),F("div",Ua,[P(R(c),{size:20,color:"#18a058"},{default:$(()=>[P(R(ye))]),_:1})]))],2),H("div",{class:M(["simple-theme-item",{active:R(v)}]),onClick:a[1]||(a[1]=e=>!R(v)&&R(m)())},[P(R(c),{size:20,class:"theme-icon"},{default:$(()=>[P(R(le))]),_:1}),H("div",Oa,[P(R(ze),{strong:""},{default:$(()=>[...a[45]||(a[45]=[k("暗色模式",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[46]||(a[46]=[k("护眼的深色主题",-1)])]),_:1})]),R(v)?(O(),F("div",ja,[P(R(c),{size:20,color:"#18a058"},{default:$(()=>[P(R(ye))]),_:1})])):x("",!0)],2)])])])])],512),[[B,"appearance"===p.value]]),J(H("div",Aa,[H("div",Na,[H("div",Ia,[P(R(c),{size:"24",color:"var(--text-secondary)"},{default:$(()=>[P(R(ae))]),_:1}),H("div",null,[a[48]||(a[48]=H("h3",{class:"panel-title"},"通知设置",-1)),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[...a[47]||(a[47]=[k("配置任务完成时的系统通知",-1)])]),_:1})])])]),H("div",La,[H("div",$a,[(O(!0),F(T,null,z(Us.value,(e,t)=>(O(),F(T,{key:e.key},[H("div",Ba,[H("div",Ta,[P(R(ze),{strong:""},{default:$(()=>[k(N(e.label),1)]),_:2},1024),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[k(N(e.description),1)]),_:2},1024)]),H("div",Ma,[H("div",Ea,[H("div",Da,[P(R(ze),{strong:""},{default:$(()=>[...a[49]||(a[49]=[k("启用任务完成通知",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px"}},{default:$(()=>[k(N(e.implementation),1)]),_:2},1024)]),P(R(Be),{value:zl.value.platforms[e.key].enabled,"onUpdate:value":a=>zl.value.platforms[e.key].enabled=a},null,8,["value","onUpdate:value"])]),zl.value.platforms[e.key].external?(O(),S(R(Le),{key:0,type:"warning",bordered:!1,style:{"margin-top":"16px"}},{default:$(()=>[k(N(e.externalMessage),1)]),_:2},1024)):x("",!0),zl.value.platforms[e.key].enabled?(O(),F("div",Ra,[P(R(ze),{depth:"2",style:{"font-size":"13px","margin-bottom":"12px",display:"block"}},{default:$(()=>[...a[50]||(a[50]=[k(" 选择通知方式 ",-1)])]),_:1}),P(R(Ae),{value:zl.value.platforms[e.key].type,"onUpdate:value":a=>zl.value.platforms[e.key].type=a},{default:$(()=>[P(R(Se),{vertical:""},{default:$(()=>[P(R(Ne),{value:"notification"},{default:$(()=>[H("div",Wa,[P(R(ze),{strong:""},{default:$(()=>[k(N(Ll("notification")),1)]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px",display:"block"}},{default:$(()=>[k(N($l("notification")),1)]),_:1})])]),_:1}),P(R(Ne),{value:"browser",disabled:!Nl.value},{default:$(()=>[H("div",Ya,[P(R(ze),{strong:""},{default:$(()=>[k(N(Ll("browser")),1)]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px",display:"block"}},{default:$(()=>[k(N($l("browser")),1)]),_:1})])]),_:1},8,["disabled"]),P(R(Ne),{value:"dialog"},{default:$(()=>[H("div",Ja,[P(R(ze),{strong:""},{default:$(()=>[k(N(Ll("dialog")),1)]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px",display:"block"}},{default:$(()=>[k(N($l("dialog")),1)]),_:1})])]),_:1})]),_:1})]),_:1},8,["value","onUpdate:value"]),"claude"===e.key&&"darwin"===jl.value?(O(),S(R(Le),{key:0,type:"info",bordered:!1,style:{"margin-top":"16px"},"show-icon":!1},{default:$(()=>[H("div",qa,[P(R(ze),{strong:""},{default:$(()=>[...a[51]||(a[51]=[k("[TIP] 更好的通知体验",-1)])]),_:1}),P(R(ze),{depth:"3",style:{display:"block","margin-top":"4px","font-size":"12px"}},{default:$(()=>[...a[52]||(a[52]=[k(" 安装 terminal-notifier 后,点击通知可自动打开终端 ",-1)])]),_:1}),P(R(ze),{code:"",style:{display:"block","margin-top":"8px","font-size":"12px"}},{default:$(()=>[...a[53]||(a[53]=[k(" brew install terminal-notifier ",-1)])]),_:1})])]),_:1})):x("",!0),"browser"===zl.value.platforms[e.key].type?(O(),S(R(Le),{key:1,type:"info",bordered:!1,style:{"margin-top":"16px"}},{default:$(()=>[k(" 当前权限状态:"+N(Il.value),1)]),_:1})):x("",!0)])):x("",!0)])]),t<Us.value.length-1?(O(),S(R(be),{key:0})):x("",!0)],64))),128)),P(R(be)),H("div",Fa,[H("div",Ha,[P(R(ze),{strong:""},{default:$(()=>[...a[54]||(a[54]=[k("远程通知渠道",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[55]||(a[55]=[k(" 支持服务端注册的远程通知渠道 ",-1)])]),_:1})]),H("div",Va,[H("div",Xa,[P(R(_e),{value:Ul.value,"onUpdate:value":a[2]||(a[2]=e=>Ul.value=e),options:Ol.value,size:"small",style:{"max-width":"220px"}},null,8,["value","options"]),P(R(f),{size:"small",secondary:"",type:"primary",onClick:Tl},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(te))]),_:1})]),default:$(()=>[a[56]||(a[56]=k(" 添加渠道 ",-1))]),_:1})]),0===zl.value.remoteNotifications.providers.length?(O(),S(R($e),{key:0,description:"还没有远程通知渠道",style:{padding:"20px 0"}})):x("",!0),(O(!0),F(T,null,z(zl.value.remoteNotifications.providers,e=>(O(),F("div",{key:e.id,class:"remote-provider-card"},[H("div",Za,[H("div",Ka,[H("div",Ga,N(kl(e.type)),1),H("div",Qa,[H("div",et,[P(R(ze),{strong:""},{default:$(()=>[k(N(e.name||xl(e.type)),1)]),_:2},1024),P(R(De),{size:"tiny",bordered:!1,type:e.enabled?"success":"default"},{default:$(()=>[k(N(e.enabled?"已启用":"未启用"),1)]),_:2},1032,["type"])]),P(R(ze),{depth:"3",style:{"font-size":"12px",display:"block"}},{default:$(()=>{return[k(N((a=e.type,wl(a)?.description||"")),1)];var a}),_:2},1024)])]),P(R(Se),{size:"small",align:"center"},{default:$(()=>[P(R(Be),{value:e.enabled,"onUpdate:value":a=>e.enabled=a,size:"small"},null,8,["value","onUpdate:value"]),P(R(f),{size:"small",quaternary:"",circle:"",type:"error",onClick:a=>{return t=e.id,void(zl.value.remoteNotifications.providers=zl.value.remoteNotifications.providers.filter(e=>e.id!==t));var t}},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(ve))]),_:1})]),_:1},8,["onClick"])]),_:2},1024)]),H("div",at,[H("div",tt,[a[57]||(a[57]=H("span",{class:"remote-field-label"},"渠道名称",-1)),P(R(Ee),{value:e.name,"onUpdate:value":a=>e.name=a,size:"small",placeholder:"例如:我的飞书"},null,8,["value","onUpdate:value"])]),H("div",lt,[P(Ze,{provider:e,definition:wl(e.type)},null,8,["provider","definition"])])]),H("div",st,[P(R(f),{size:"small",secondary:"",loading:Sl.value===e.id,onClick:a=>async function(e){Sl.value=e.id;try{const a=await fetch("/api/hooks/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})}),t=await a.json().catch(()=>({}));if(!a.ok)throw new Error(t.error||"测试通知发送失败");Te.success(t.message||"测试通知已发送")}catch(a){Te.error("测试失败:"+a.message)}finally{Sl.value=""}}(e)},{default:$(()=>[...a[58]||(a[58]=[k(" 测试 ",-1)])]),_:1},8,["loading","onClick"]),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>{return[k(N((a=e.type,wl(a)?.hint||"")),1)];var a}),_:2},1024)])]))),128))])])])]),H("div",nt,[P(R(Se),{justify:"end"},{default:$(()=>[P(R(f),{size:"large",onClick:a[3]||(a[3]=e=>d.value=!1)},{default:$(()=>[...a[59]||(a[59]=[k(" 取消 ",-1)])]),_:1}),P(R(f),{type:"primary",size:"large",loading:Pl.value,disabled:JSON.stringify(zl.value)===JSON.stringify(Cl.value),onClick:Ws},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(se))]),_:1})]),default:$(()=>[a[60]||(a[60]=k(" 保存设置 ",-1))]),_:1},8,["loading","disabled"])]),_:1})])],512),[[B,"notification"===p.value]]),J(H("div",it,[H("div",ot,[H("div",rt,[P(R(c),{size:"24",color:"var(--text-secondary)"},{default:$(()=>[P(R(re))]),_:1}),H("div",null,[a[62]||(a[62]=H("h3",{class:"panel-title"},"高级设置",-1)),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[...a[61]||(a[61]=[k("端口配置和高级选项",-1)])]),_:1})])])]),H("div",ut,[H("div",dt,[H("div",ct,[H("div",pt,[P(R(ze),{strong:""},{default:$(()=>[...a[63]||(a[63]=[k("端口配置",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[64]||(a[64]=[k(" 修改后需要重启服务器才能生效 ",-1)])]),_:1})]),H("div",vt,[(O(!0),F(T,null,z(_.value,e=>(O(),F("div",{key:e.key,class:"port-field"},[P(R(ze),{depth:"3",style:{"font-size":"13px","margin-bottom":"6px"}},{default:$(()=>[k(N(e.label),1)]),_:2},1024),P(R(Oe),{value:b.value[e.key],"onUpdate:value":a=>b.value[e.key]=a,min:1024,max:65535,"show-button":!1,placeholder:String(e.defaultPort)},{prefix:$(()=>[P(R(c),null,{default:$(()=>[P(R(re))]),_:1})]),_:1},8,["value","onUpdate:value","placeholder"])]))),128))])]),P(R(be)),H("div",ft,[H("div",mt,[P(R(ze),{strong:""},{default:$(()=>[...a[65]||(a[65]=[k("负载均衡",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[66]||(a[66]=[k(" 多渠道负载均衡时的分配策略 ",-1)])]),_:1})]),H("div",yt,[H("div",gt,[H("div",ht,[P(R(ze),{depth:"2",style:{"font-size":"13px"}},{default:$(()=>[...a[67]||(a[67]=[k("多渠道负载会话绑定",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[68]||(a[68]=[k("开启后同一对话始终使用同一渠道,保证上下文连续性",-1)])]),_:1})]),P(R(Be),{value:qe.value.enableSessionBinding,"onUpdate:value":[a[4]||(a[4]=e=>qe.value.enableSessionBinding=e),Es],size:"medium"},null,8,["value"])])])]),P(R(be)),H("div",bt,[H("div",wt,[P(R(ze),{strong:""},{default:$(()=>[...a[69]||(a[69]=[k("日志和性能",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[70]||(a[70]=[k(" 控制日志显示和数据刷新行为 ",-1)])]),_:1})]),H("div",xt,[H("div",kt,[H("div",_t,[P(R(ze),{depth:"2",style:{"font-size":"13px"}},{default:$(()=>[...a[71]||(a[71]=[k("实时日志保留数量",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[72]||(a[72]=[k("超过此数量将自动清理旧日志",-1)])]),_:1})]),P(R(Oe),{value:qe.value.maxLogs,"onUpdate:value":a[5]||(a[5]=e=>qe.value.maxLogs=e),min:50,max:500,step:10,style:{width:"140px"}},{suffix:$(()=>[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[73]||(a[73]=[k("条",-1)])]),_:1})]),_:1},8,["value"])]),H("div",zt,[H("div",Ct,[P(R(ze),{depth:"2",style:{"font-size":"13px"}},{default:$(()=>[...a[74]||(a[74]=[k("统计数据刷新间隔",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[75]||(a[75]=[k("自动刷新今日统计的时间间隔",-1)])]),_:1})]),P(R(Oe),{value:qe.value.statsInterval,"onUpdate:value":a[6]||(a[6]=e=>qe.value.statsInterval=e),min:10,max:300,step:5,style:{width:"140px"}},{suffix:$(()=>[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[76]||(a[76]=[k("秒",-1)])]),_:1})]),_:1},8,["value"])]),H("div",Pt,[H("div",St,[P(R(ze),{depth:"2",style:{"font-size":"13px"}},{default:$(()=>[...a[77]||(a[77]=[k("CLI 原生会话日志",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[78]||(a[78]=[k("读取各 CLI 工具自己的会话日志,配置保存后立即生效",-1)])]),_:1})]),P(R(Be),{value:qe.value.nativeCliLogs.enabled,"onUpdate:value":a[7]||(a[7]=e=>qe.value.nativeCliLogs.enabled=e),size:"medium"},null,8,["value"])]),H("div",Ut,[H("div",Ot,[P(R(ze),{depth:"2",style:{"font-size":"13px"}},{default:$(()=>[...a[79]||(a[79]=[k("CLI 原生日志读取间隔",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[80]||(a[80]=[k("轮询原生会话日志的时间间隔",-1)])]),_:1})]),P(R(Oe),{value:qe.value.nativeCliLogs.intervalSeconds,"onUpdate:value":a[8]||(a[8]=e=>qe.value.nativeCliLogs.intervalSeconds=e),min:1,max:60,step:1,style:{width:"140px"}},{suffix:$(()=>[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[81]||(a[81]=[k("秒",-1)])]),_:1})]),_:1},8,["value"])])])]),P(R(be)),H("div",jt,[H("div",At,[P(R(ze),{strong:""},{default:$(()=>[...a[82]||(a[82]=[k("开机自启",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[83]||(a[83]=[k(" 启用此选项后,重启电脑时 coding-tool-x 会自动启动 ",-1)])]),_:1})]),H("div",Nt,[H("div",It,[H("div",Lt,[P(R(ze),{strong:"",style:{flex:"1"}},{default:$(()=>[k(N(Ie.value),1)]),_:1}),ge.value?(O(),S(R(f),{key:1,type:"warning",size:"small",loading:je.value,onClick:Xs},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(fe))]),_:1})]),default:$(()=>[a[85]||(a[85]=k(" 禁用自启 ",-1))]),_:1},8,["loading"])):(O(),S(R(f),{key:0,type:"primary",size:"small",loading:je.value,onClick:Vs},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(ye))]),_:1})]),default:$(()=>[a[84]||(a[84]=k(" 启用自启 ",-1))]),_:1},8,["loading"]))]),P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[k(N(We.value),1)]),_:1})])])])])]),H("div",$t,[P(R(Se),{justify:"end"},{default:$(()=>[P(R(f),{size:"large",onClick:a[9]||(a[9]=e=>d.value=!1)},{default:$(()=>[...a[86]||(a[86]=[k(" 取消 ",-1)])]),_:1}),P(R(f),{type:"primary",size:"large",loading:C.value,disabled:!zs.value,onClick:Fs},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(se))]),_:1})]),default:$(()=>[a[87]||(a[87]=k(" 保存端口配置 ",-1))]),_:1},8,["loading","disabled"])]),_:1})])],512),[[B,"advanced"===p.value]]),J(H("div",Bt,[H("div",Tt,[H("div",Mt,[P(R(c),{size:"24",color:"var(--text-secondary)"},{default:$(()=>[P(R(pe))]),_:1}),H("div",null,[a[89]||(a[89]=H("h3",{class:"panel-title"},"安全设置",-1)),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[...a[88]||(a[88]=[k("设置访问密码,保护面板访问",-1)])]),_:1})])])]),H("div",Et,[H("div",Dt,[H("div",Rt,[H("div",Wt,[P(R(ze),{strong:""},{default:$(()=>[...a[90]||(a[90]=[k("访问保护",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[91]||(a[91]=[k(" 启用后,重新打开面板时需要先输入访问密码 ",-1)])]),_:1})]),H("div",Yt,[Ml.value.hasPassword?(O(),S(R(De),{key:0,type:"success",bordered:!1},{default:$(()=>[...a[92]||(a[92]=[k(" 已启用 ",-1)])]),_:1})):(O(),S(R(De),{key:1,type:"warning",bordered:!1},{default:$(()=>[...a[93]||(a[93]=[k(" 未启用 ",-1)])]),_:1}))])]),P(R(be)),H("div",Jt,[H("div",qt,[P(R(ze),{strong:""},{default:$(()=>[k(N(Ml.value.hasPassword?"修改密码":"设置密码"),1)]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"13px","margin-top":"4px"}},{default:$(()=>[...a[94]||(a[94]=[k(" 密码至少 4 位,建议包含数字与字母 ",-1)])]),_:1}),P(R(ze),{depth:"3",style:{"font-size":"12px","margin-top":"4px"}},{default:$(()=>[a[96]||(a[96]=k(" 忘记密码可在终端执行 ",-1)),P(R(ze),{code:""},{default:$(()=>[...a[95]||(a[95]=[k("ctx security reset",-1)])]),_:1}),a[97]||(a[97]=k(" 关闭密码 ",-1))]),_:1})]),H("div",Ft,[Ml.value.hasPassword?(O(),S(R(Ee),{key:0,value:Rl.value.currentPassword,"onUpdate:value":a[10]||(a[10]=e=>Rl.value.currentPassword=e),type:"password",placeholder:"当前密码","show-password-on":"click"},null,8,["value"])):x("",!0),P(R(Ee),{value:Rl.value.newPassword,"onUpdate:value":a[11]||(a[11]=e=>Rl.value.newPassword=e),type:"password",placeholder:"新密码","show-password-on":"click"},null,8,["value"]),P(R(Ee),{value:Rl.value.confirmPassword,"onUpdate:value":a[12]||(a[12]=e=>Rl.value.confirmPassword=e),type:"password",placeholder:"确认新密码","show-password-on":"click"},null,8,["value"]),Yl.value?(O(),S(R(ze),{key:1,depth:"3",class:"security-error"},{default:$(()=>[k(N(Yl.value),1)]),_:1})):x("",!0)])])])]),H("div",Ht,[P(R(Se),{justify:"end"},{default:$(()=>[P(R(f),{size:"large",onClick:a[13]||(a[13]=e=>d.value=!1)},{default:$(()=>[...a[98]||(a[98]=[k(" 取消 ",-1)])]),_:1}),P(R(f),{type:"primary",size:"large",loading:Wl.value,disabled:!Jl.value,onClick:qs},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(se))]),_:1})]),default:$(()=>[a[99]||(a[99]=k(" 保存密码 ",-1))]),_:1},8,["loading","disabled"])]),_:1})])],512),[[B,"security"===p.value]]),J(H("div",Vt,[H("div",Xt,[H("div",Zt,[P(R(c),{size:"24",color:"var(--text-secondary)"},{default:$(()=>[P(R(ie))]),_:1}),H("div",null,[a[101]||(a[101]=H("h3",{class:"panel-title"},"模型设置",-1)),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[...a[100]||(a[100]=[k("管理默认测速模型、模型上下文窗口和定价信息",-1)])]),_:1}),P(R(ze),{depth:"3",class:"panel-subtitle"},{default:$(()=>[k(" 价格来源:Models.dev 参考价格(离线快照) · "+N(Fl.value.lastUpdated||"日期未知"),1)]),_:1})])])]),H("div",Kt,[P(R(Ue),{show:Hl.value},{default:$(()=>[H("div",Gt,[H("div",Qt,[P(R(ze),{strong:"",style:{"font-size":"12px",display:"block","margin-bottom":"8px"}},{default:$(()=>[...a[102]||(a[102]=[k("默认测速模型",-1)])]),_:1}),H("div",el,[(O(!0),F(T,null,z(is.value,e=>(O(),F("div",{key:e.key,class:"speed-test-default-row"},[H("div",al,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[k(N(e.label),1)]),_:2},1024)]),P(R(_e),{value:ss.value[e.key],"onUpdate:value":a=>ss.value[e.key]=a,options:hs.value[e.key],placeholder:`选择或输入${e.label}默认测速模型`,size:"small",filterable:"",tag:""},null,8,["value","onUpdate:value","options","placeholder"])]))),128))])])]),H("div",tl,[P(R(Ee),{value:Gl.value,"onUpdate:value":a[14]||(a[14]=e=>Gl.value=e),placeholder:"搜索模型 ID...",clearable:"",size:"small",style:{flex:"1","min-width":"0"}},null,8,["value"]),P(R(f),{size:"small",type:"primary",onClick:cs},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(te))]),_:1})]),default:$(()=>[a[103]||(a[103]=k(" 新增 ",-1))]),_:1})]),H("div",ll,[P(R(Ae),{value:Ql.value,"onUpdate:value":a[15]||(a[15]=e=>Ql.value=e),size:"small"},{default:$(()=>[P(R(Ne),{value:"all"},{default:$(()=>[...a[104]||(a[104]=[k("全部",-1)])]),_:1}),P(R(Ne),{value:"claude"},{default:$(()=>[...a[105]||(a[105]=[k("Claude",-1)])]),_:1}),P(R(Ne),{value:"openai"},{default:$(()=>[...a[106]||(a[106]=[k("OpenAI",-1)])]),_:1}),P(R(Ne),{value:"gemini"},{default:$(()=>[...a[107]||(a[107]=[k("Gemini",-1)])]),_:1}),P(R(Ne),{value:"compatible"},{default:$(()=>[...a[108]||(a[108]=[k("OpenCode / OMP",-1)])]),_:1}),P(R(Ne),{value:"overrides"},{default:$(()=>[...a[109]||(a[109]=[k("自定义",-1)])]),_:1})]),_:1},8,["value"])]),0===gs.value.length?(O(),F("div",sl,[P(R($e),{description:"没有匹配的模型"})])):(O(),F("div",nl,[(O(!0),F(T,null,z(gs.value,e=>(O(),F("div",{key:e,class:M(["model-card",{expanded:os.value.has(e)}])},[H("div",{class:"model-card-header",onClick:a=>(e=>{os.value.has(e)?os.value.delete(e):os.value.add(e),os.value=new Set(os.value)})(e)},[P(R(c),{size:"14",class:"expand-icon"},{default:$(()=>[P(R(ne))]),_:1}),H("span",ol,N(e),1),Zl.value[e]?(O(),S(R(De),{key:0,type:"warning",size:"tiny",bordered:!1},{default:$(()=>[...a[110]||(a[110]=[k("自定义",-1)])]),_:1})):x("",!0),H("div",{class:"model-card-actions",onClick:a[16]||(a[16]=D(()=>{},["stop"]))},[Zl.value[e]&&fs(e)?(O(),S(R(f),{key:0,size:"tiny",quaternary:"",type:"warning",onClick:a=>async function(e){try{await o(e),delete Zl.value[e],delete Kl.value[e],await xs(),Te.success(`${e} 已重置为内置默认值`)}catch(a){Te.error("重置失败:"+a.message)}}(e)},{default:$(()=>[...a[111]||(a[111]=[k(" 重置 ",-1)])]),_:1},8,["onClick"])):x("",!0),ms(e)?(O(),S(R(f),{key:1,size:"tiny",quaternary:"",type:"error",onClick:a=>async function(e){try{const a=!!Zl.value[e];a&&(await o(e),delete Zl.value[e]),delete Kl.value[e],ms(e)?delete Xl.value[e]:a&&await xs(),Te.success(`已删除模型:${e}`)}catch(a){Te.error("删除失败:"+a.message)}}(e)},{default:$(()=>[...a[112]||(a[112]=[k(" 删除 ",-1)])]),_:1},8,["onClick"])):x("",!0)])],8,il),os.value.has(e)?(O(),F("div",rl,[H("div",ul,[H("div",dl,[P(R(ze),{strong:"",style:{"font-size":"12px",display:"block","margin-bottom":"8px"}},{default:$(()=>[...a[113]||(a[113]=[k("上下文限制",-1)])]),_:1}),H("div",cl,[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[114]||(a[114]=[k("Context 窗口 (tokens)",-1)])]),_:1}),P(R(Oe),{value:bs(e,"limit","context"),"onUpdate:value":a=>ws(e,"limit","context",a),min:1e3,step:1e3,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[115]||(a[115]=[k("Max Output (tokens)",-1)])]),_:1}),P(R(Oe),{value:bs(e,"limit","output"),"onUpdate:value":a=>ws(e,"limit","output",a),min:100,step:1e3,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])])])]),H("div",pl,[P(R(ze),{strong:"",style:{"font-size":"12px",display:"block","margin-bottom":"8px"}},{default:$(()=>[...a[116]||(a[116]=[k("定价(USD / 百万 tokens)",-1)])]),_:1}),H("div",vl,[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[117]||(a[117]=[k("输入价格",-1)])]),_:1}),P(R(Oe),{value:bs(e,"pricing","input"),"onUpdate:value":a=>ws(e,"pricing","input",a),min:0,step:.1,precision:4,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[118]||(a[118]=[k("输出价格",-1)])]),_:1}),P(R(Oe),{value:bs(e,"pricing","output"),"onUpdate:value":a=>ws(e,"pricing","output",a),min:0,step:.1,precision:4,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[119]||(a[119]=[k("缓存写入价格",-1)])]),_:1}),P(R(Oe),{value:bs(e,"pricing","cacheCreation"),"onUpdate:value":a=>ws(e,"pricing","cacheCreation",a),min:0,step:.1,precision:4,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"11px"}},{default:$(()=>[...a[120]||(a[120]=[k("缓存读取价格",-1)])]),_:1}),P(R(Oe),{value:bs(e,"pricing","cacheRead"),"onUpdate:value":a=>ws(e,"pricing","cacheRead",a),min:0,step:.01,precision:4,size:"small","show-button":!1,style:{width:"100%"}},null,8,["value","onUpdate:value"])])])])])])):x("",!0)],2))),128))]))]),_:1},8,["show"])]),H("div",fl,[P(R(Se),{justify:"end"},{default:$(()=>[P(R(f),{size:"large",onClick:_s,disabled:0===Object.keys(Zl.value).length},{default:$(()=>[...a[121]||(a[121]=[k(" 重置全部 ",-1)])]),_:1},8,["disabled"]),P(R(f),{type:"primary",size:"large",loading:Vl.value,disabled:!us.value,onClick:ks},{icon:$(()=>[P(R(c),null,{default:$(()=>[P(R(se))]),_:1})]),default:$(()=>[a[122]||(a[122]=k(" 保存设置 ",-1))]),_:1},8,["loading","disabled"])]),_:1})])],512),[[B,"model-settings"===p.value]])])]),P(R(he),{show:as.value,"onUpdate:show":a[24]||(a[24]=e=>as.value=e),preset:"card",title:"新增模型设置",style:{width:"560px"},"mask-closable":!1},{default:$(()=>[P(R(Se),{vertical:"",size:12},{default:$(()=>[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[123]||(a[123]=[k("模型 ID",-1)])]),_:1}),P(R(Ee),{value:ts.value.modelId,"onUpdate:value":a[17]||(a[17]=e=>ts.value.modelId=e),placeholder:"例如:gpt-4.1-mini",clearable:""},null,8,["value"])]),H("div",ml,[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[124]||(a[124]=[k("Context 窗口",-1)])]),_:1}),P(R(Oe),{value:ts.value.context,"onUpdate:value":a[18]||(a[18]=e=>ts.value.context=e),min:1e3,step:1e3,"show-button":!1,style:{width:"100%"}},null,8,["value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[125]||(a[125]=[k("Max Output",-1)])]),_:1}),P(R(Oe),{value:ts.value.output,"onUpdate:value":a[19]||(a[19]=e=>ts.value.output=e),min:100,step:100,"show-button":!1,style:{width:"100%"}},null,8,["value"])])]),H("div",yl,[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[126]||(a[126]=[k("输入价格",-1)])]),_:1}),P(R(Oe),{value:ts.value.inputPrice,"onUpdate:value":a[20]||(a[20]=e=>ts.value.inputPrice=e),min:0,step:.1,precision:4,"show-button":!1,style:{width:"100%"}},null,8,["value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[127]||(a[127]=[k("输出价格",-1)])]),_:1}),P(R(Oe),{value:ts.value.outputPrice,"onUpdate:value":a[21]||(a[21]=e=>ts.value.outputPrice=e),min:0,step:.1,precision:4,"show-button":!1,style:{width:"100%"}},null,8,["value"])])]),H("div",gl,[H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[128]||(a[128]=[k("缓存写入价格",-1)])]),_:1}),P(R(Oe),{value:ts.value.cacheCreationPrice,"onUpdate:value":a[22]||(a[22]=e=>ts.value.cacheCreationPrice=e),min:0,step:.1,precision:4,"show-button":!1,style:{width:"100%"}},null,8,["value"])]),H("div",null,[P(R(ze),{depth:"3",style:{"font-size":"12px"}},{default:$(()=>[...a[129]||(a[129]=[k("缓存读取价格",-1)])]),_:1}),P(R(Oe),{value:ts.value.cacheReadPrice,"onUpdate:value":a[23]||(a[23]=e=>ts.value.cacheReadPrice=e),min:0,step:.01,precision:4,"show-button":!1,style:{width:"100%"}},null,8,["value"])])]),ds.value?(O(),S(R(ze),{key:0,depth:"3",class:"security-error"},{default:$(()=>[k(N(ds.value),1)]),_:1})):x("",!0),P(R(Se),{justify:"end"},{default:$(()=>[P(R(f),{onClick:ps},{default:$(()=>[...a[130]||(a[130]=[k("取消",-1)])]),_:1}),P(R(f),{type:"primary",disabled:!!ds.value,onClick:vs},{default:$(()=>[...a[131]||(a[131]=[k(" 新增 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["show"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-1d15d4c9"]]);export{hl as default};
@@ -1 +1 @@
1
- import{t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as r,W as e,b as s,et as l,mt as t,r as o,w as i}from"./vue-vendor-BqZbbXHA.js";import{O as m}from"./light-C2X7hegj.js";import{t as p}from"./SkillsPanel-Dm8FkYD6.js";import{Et as u}from"./index-DP0Ggf-8.js";var f={class:"skill-manager"},n=a({__name:"SkillManager",setup(a){const n=o(),{byCapability:d}=u(),v=s(()=>d("skills").map(a=>a.key)),y=s(()=>{const a=Array.isArray(n.query.platform)?n.query.platform[0]:n.query.platform;return v.value.includes(a)?a:""});return(a,s)=>(e(),i("div",f,[r(t(m),{title:"Skills 技能管理",bordered:!1},{default:l(()=>[r(p,{"in-drawer":!1,"hide-back":!0,platform:y.value},null,8,["platform"])]),_:1})]))}},[["__scopeId","data-v-350fb0fd"]]);export{n as default};
1
+ import{t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as r,W as e,b as s,et as l,mt as t,r as o,w as i}from"./vue-vendor-BqZbbXHA.js";import{O as m}from"./light-C2X7hegj.js";import{t as p}from"./SkillsPanel-SnzwzqW5.js";import{Et as u}from"./index-BKpL4XdU.js";var f={class:"skill-manager"},n=a({__name:"SkillManager",setup(a){const n=o(),{byCapability:d}=u(),v=s(()=>d("skills").map(a=>a.key)),y=s(()=>{const a=Array.isArray(n.query.platform)?n.query.platform[0]:n.query.platform;return v.value.includes(a)?a:""});return(a,s)=>(e(),i("div",f,[r(t(m),{title:"Skills 技能管理",bordered:!1},{default:l(()=>[r(p,{"in-drawer":!1,"hide-back":!0,platform:y.value},null,8,["platform"])]),_:1})]))}},[["__scopeId","data-v-350fb0fd"]]);export{n as default};
@@ -1 +1 @@
1
- import{t as e}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as a,S as t,W as r,b as s,et as l,mt as o,x as i}from"./vue-vendor-BqZbbXHA.js";import{n as p,t as d}from"./useResponsiveDrawer-D9ti7g-U.js";import{t as n}from"./DrawerContent-ChXgZ1Xm.js";import{t as m}from"./SkillsPanel-Dm8FkYD6.js";var u=e({__name:"SkillsDrawer",props:{visible:{type:Boolean,default:!1},platform:{type:String,default:""},projectPath:{type:String,default:""}},emits:["update:visible"],setup(e,{emit:u}){const f=e,v=u,{drawerWidth:c}=d(720),h=s({get:()=>f.visible,set:e=>v("update:visible",e)}),w={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,s)=>(r(),t(o(p),{show:h.value,"onUpdate:show":s[1]||(s[1]=e=>h.value=e),width:o(c),placement:"right","mask-closable":!0},{default:l(()=>[a(o(n),{closable:"","native-scrollbar":!1,"body-content-style":w},{header:l(()=>[...s[2]||(s[2]=[i("div",{class:"drawer-header"},"技能管理",-1)])]),default:l(()=>[a(m,{"in-drawer":!0,"hide-back":!0,"drawer-visible":h.value,platform:f.platform,"project-path":f.projectPath,onBack:s[0]||(s[0]=e=>h.value=!1)},null,8,["drawer-visible","platform","project-path"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-a4957f96"]]);export{u as default};
1
+ import{t as e}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as a,S as t,W as r,b as s,et as l,mt as o,x as i}from"./vue-vendor-BqZbbXHA.js";import{n as p,t as d}from"./useResponsiveDrawer-CTQPBATk.js";import{t as n}from"./DrawerContent-ChXgZ1Xm.js";import{t as m}from"./SkillsPanel-SnzwzqW5.js";var u=e({__name:"SkillsDrawer",props:{visible:{type:Boolean,default:!1},platform:{type:String,default:""},projectPath:{type:String,default:""}},emits:["update:visible"],setup(e,{emit:u}){const f=e,v=u,{drawerWidth:c}=d(720),h=s({get:()=>f.visible,set:e=>v("update:visible",e)}),w={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,s)=>(r(),t(o(p),{show:h.value,"onUpdate:show":s[1]||(s[1]=e=>h.value=e),width:o(c),placement:"right","mask-closable":!0},{default:l(()=>[a(o(n),{closable:"","native-scrollbar":!1,"body-content-style":w},{header:l(()=>[...s[2]||(s[2]=[i("div",{class:"drawer-header"},"技能管理",-1)])]),default:l(()=>[a(m,{"in-drawer":!0,"hide-back":!0,"drawer-visible":h.value,platform:f.platform,"project-path":f.projectPath,onBack:s[0]||(s[0]=e=>h.value=!1)},null,8,["drawer-visible","platform","project-path"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-a4957f96"]]);export{u as default};