coding-tool-x 3.9.6-261027 → 3.9.9-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 (39) hide show
  1. package/dist/web/assets/{AgentsDrawer-CIKKn5h4.js → AgentsDrawer-CKEf8ie1.js} +1 -1
  2. package/dist/web/assets/{Analytics-CWLOqH3a.js → Analytics-0BCMxQ-o.js} +1 -1
  3. package/dist/web/assets/{AssetPathField-CYJ6TvS9.js → AssetPathField-pfN6L814.js} +1 -1
  4. package/dist/web/assets/{ChatHistoryDrawer-r9UZA7rU.js → ChatHistoryDrawer-nuUPRqje.js} +1 -1
  5. package/dist/web/assets/{CollapseItem-S_sLioKf.js → CollapseItem-B2SdqQp2.js} +1 -1
  6. package/dist/web/assets/{CommandsDrawer-DFmX8thK.js → CommandsDrawer-D8m0qLzQ.js} +1 -1
  7. package/dist/web/assets/{ConfigExportDrawer-5ZritRKp.js → ConfigExportDrawer-BlCBLdue.js} +1 -1
  8. package/dist/web/assets/{ConfigTemplates-B1H2866J.js → ConfigTemplates-CePBARK8.js} +1 -1
  9. package/dist/web/assets/{ConfigTemplatesDrawer-BBATnWnW.js → ConfigTemplatesDrawer-DbVY4rD1.js} +1 -1
  10. package/dist/web/assets/{ConfigTemplatesPanel-CXmfzRym.js → ConfigTemplatesPanel-CwYPLEFV.js} +1 -1
  11. package/dist/web/assets/{FavoritesDrawer-DPQOXg4g.js → FavoritesDrawer-BKAKQNqP.js} +1 -1
  12. package/dist/web/assets/{GatewayConvertDrawer-Z_sILtn8.js → GatewayConvertDrawer-D2MFXcqS.js} +1 -1
  13. package/dist/web/assets/{Home-C5mlI2U0.js → Home-BmElvXVZ.js} +1 -1
  14. package/dist/web/assets/{MarkdownEditor-Coo4TaB-.js → MarkdownEditor-buNC2iDj.js} +1 -1
  15. package/dist/web/assets/{McpDrawer-DwvUzioj.js → McpDrawer-NBjAyFU5.js} +1 -1
  16. package/dist/web/assets/{McpFormDrawer-C-JHWmhC.js → McpFormDrawer-BUnW9j4A.js} +1 -1
  17. package/dist/web/assets/{PluginManager-C6dq0YkN.js → PluginManager-BgHpsF5S.js} +1 -1
  18. package/dist/web/assets/{PluginsDrawer-DacBCEVQ.js → PluginsDrawer-CFnmqzV0.js} +1 -1
  19. package/dist/web/assets/{PluginsPanel-CkH9dcj0.js → PluginsPanel-ClSdnSCu.js} +1 -1
  20. package/dist/web/assets/{ProjectList-Bo0n_J7T.js → ProjectList-CjlHEyU1.js} +1 -1
  21. package/dist/web/assets/{PromptsDrawer-D5Gmm0HC.js → PromptsDrawer-xeSGgpCd.js} +1 -1
  22. package/dist/web/assets/{RecentSessionsDrawer-BbP16V3T.js → RecentSessionsDrawer-DELB6-rU.js} +1 -1
  23. package/dist/web/assets/{SessionCard-zr0236fl.js → SessionCard-BaH42eOe.js} +1 -1
  24. package/dist/web/assets/{SessionList-38c7aouf.js → SessionList-BGB9GwYE.js} +1 -1
  25. package/dist/web/assets/SettingsDrawer-Cw-6Joic.css +1 -0
  26. package/dist/web/assets/SettingsDrawer-DdYC8GIa.js +1 -0
  27. package/dist/web/assets/{SkillManager-Cqm9cc8C.js → SkillManager-CF7EiSps.js} +1 -1
  28. package/dist/web/assets/{SkillsDrawer-wgOUCPGA.js → SkillsDrawer-Bc5zA1bk.js} +1 -1
  29. package/dist/web/assets/{SkillsPanel-ryjZpaCC.js → SkillsPanel-SnzwzqW5.js} +1 -1
  30. package/dist/web/assets/{Upload-CfC0lPJC.js → Upload-xqorL26i.js} +1 -1
  31. package/dist/web/assets/{WorkspaceDrawer-2Qgm-8Pa.js → WorkspaceDrawer-DBiEnZ7j.js} +1 -1
  32. package/dist/web/assets/{WorkspaceManager-Dp6vKCMD.js → WorkspaceManager-C1dNfoAy.js} +1 -1
  33. package/dist/web/assets/{WorkspacePanel-CSer3CdC.js → WorkspacePanel-CWNQZjm1.js} +1 -1
  34. package/dist/web/assets/{index-D1b2vDrs.js → index-BKpL4XdU.js} +2 -2
  35. package/dist/web/assets/{useResponsiveDrawer-CmC5cPpB.js → useResponsiveDrawer-CTQPBATk.js} +1 -1
  36. package/dist/web/index.html +1 -1
  37. package/package.json +1 -1
  38. package/dist/web/assets/SettingsDrawer-BFzaxbgC.css +0 -1
  39. package/dist/web/assets/SettingsDrawer-oG-V_hS1.js +0 -1
@@ -1 +1 @@
1
- import{i as e,s as a,t as l}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as t,K as n,O as i,S as o,V as u,W as d,Y as r,Z as c,_t as v,b as p,et as m,g,ht as f,m as y,mt as h,r as b,st as k,w,x as _}from"./vue-vendor-BqZbbXHA.js";import{t as C}from"./client-oU6RT-6I.js";import{c as j,i as x,t as M}from"./platforms-Cq6XDXfy.js";import{$ as z,At as P,Nt as O,O as U,R as A,S as N,V as L,_ as I,f as S,g as $,j as F,m as D}from"./icons-B-AzZoeE.js";import{t as R}from"./use-message-DBsCm7FJ.js";import{l as B}from"./light-C2X7hegj.js";import{a as q,c as E,i as T,o as H,r as J,s as V,t as G}from"./AssetPathField-CYJ6TvS9.js";import{n as Y,t as W}from"./useResponsiveDrawer-CmC5cPpB.js";import{t as X}from"./DrawerContent-ChXgZ1Xm.js";import{$ as Z,Et as K,I as Q,L as ee,M as ae,P as le,T as se,X as te,Y as ne,Z as ie,ct as oe,ft as ue,j as de,k as re,st as ce,ut as ve,w as pe}from"./index-D1b2vDrs.js";import{t as me}from"./MarkdownEditor-Coo4TaB-.js";import{i as ge,n as fe,r as ye,t as he}from"./dsh-agent-presets-DjJRVMT6.js";async function be(e=null,a="claude",l={}){const s=pe("agents",a,l.scope||"",e||"");return se(s,l=>C.get("/agents",{params:e?{projectPath:e,platform:a}:{platform:a},signal:l}).then(e=>e.data),"agents",`agents:${a}`)}var ke={class:"asset-card-main"},we={class:"asset-card-top"},_e={class:"asset-card-title-stack"},Ce={class:"asset-card-title-row"},je={class:"asset-name"},xe={class:"asset-tags"},Me={key:0,class:"asset-description"},ze={class:"asset-meta"},Pe={key:0,class:"asset-meta-item"},Oe={key:1,class:"asset-meta-item"},Ue={class:"asset-card-actions"},Ae={class:"asset-platform-strip"},Ne=["onClick"],Le=l({__name:"AgentCard",props:{agent:{type:Object,required:!0},deleting:{type:Boolean,default:!1},registryInfo:{type:Object,default:null},toggling:{type:Boolean,default:!1}},emits:["click","edit","delete","toggle-enabled","toggle-platform"],setup(l,{emit:u}){const c=l,b=u,{byCapability:k}=K(),C=p(()=>k("agents"));return(u,p)=>{return d(),w("div",{class:f(["agent-card asset-card",{"is-project":"project"===l.agent.scope,"is-managed":l.registryInfo}]),onClick:p[4]||(p[4]=e=>b("click",l.agent))},[_("div",ke,[_("div",we,[_("div",_e,[_("div",Ce,[_("span",{class:f(["asset-status-dot",{active:l.registryInfo?.enabled||"project"===l.agent.scope}])},null,2),_("span",je,v(l.agent.name),1)]),_("div",xe,[i(h(ve),{type:"user"===l.agent.scope?"info":"success",size:"tiny",bordered:!1},{default:m(()=>[t(v("user"===l.agent.scope?"用户级":"项目级"),1)]),_:1},8,["type"]),l.registryInfo?(d(),o(h(ve),{key:0,type:"success",size:"tiny",bordered:!1},{default:m(()=>[...p[5]||(p[5]=[t("托管",-1)])]),_:1})):s("",!0),l.agent.model?(d(),o(h(ve),{key:1,type:"warning",size:"tiny",bordered:!1},{default:m(()=>[t(v(l.agent.model),1)]),_:1})):s("",!0)])])]),l.agent.description?(d(),w("div",Me,v((j=l.agent.description,j?j.length>80?j.slice(0,80)+"...":j:"")),1)):s("",!0),_("div",ze,[l.agent.tools?(d(),w("span",Pe,[i(h(e),{size:"12"},{default:m(()=>[i(h(L))]),_:1}),t(" "+v((k=l.agent.tools,k?k.length>30?k.slice(0,30)+"...":k:"")),1)])):s("",!0),l.agent.permissionMode?(d(),w("span",Oe,[i(h(e),{size:"12"},{default:m(()=>[i(h(S))]),_:1}),t(" "+v(l.agent.permissionMode),1)])):s("",!0)])]),_("div",Ue,[l.registryInfo?(d(),w(g,{key:0},[i(h(ne),{trigger:"hover"},{trigger:m(()=>[i(h(de),{value:l.registryInfo.enabled,size:"small",loading:l.toggling,"onUpdate:value":p[0]||(p[0]=e=>b("toggle-enabled",l.agent,e)),onClick:p[1]||(p[1]=y(()=>{},["stop"]))},null,8,["value","loading"])]),default:m(()=>[t(" "+v(l.registryInfo.enabled?"已启用":"已禁用"),1)]),_:1}),_("div",Ae,[(d(!0),w(g,null,n(C.value,a=>(d(),o(h(ne),{key:a.key,trigger:"hover"},{trigger:m(()=>[_("span",{class:f(["asset-platform-icon",{active:l.registryInfo.platforms?.[a.key]}]),onClick:y(e=>b("toggle-platform",l.agent,a.key,!l.registryInfo.platforms?.[a.key]),["stop"])},[i(h(e),{size:"14"},{default:m(()=>[(d(),o(r(a.icon)))]),_:2},1024)],10,Ne)]),default:m(()=>[t(" "+v(a.label||a.title||a.key)+" "+v(l.registryInfo.platforms?.[a.key]?"已启用":"未启用"),1)]),_:2},1024))),128))])],64)):(d(),w(g,{key:1},[i(h(a),{size:"tiny",tertiary:"",onClick:p[2]||(p[2]=y(e=>b("edit",l.agent),["stop"]))},{default:m(()=>[...p[6]||(p[6]=[t(" 编辑 ",-1)])]),_:1}),i(h(a),{size:"tiny",tertiary:"",type:"error",loading:c.deleting,onClick:p[3]||(p[3]=y(e=>b("delete",l.agent),["stop"]))},{default:m(()=>[...p[7]||(p[7]=[t(" 删除 ",-1)])]),_:1},8,["loading"])],64))])],2);var k,j}}},[["__scopeId","data-v-044e4192"]]),Ie={class:"asset-detail-drawer-header"},Se={class:"asset-detail-identity"},$e={class:"asset-detail-heading"},Fe={class:"asset-detail-name"},De={class:"asset-detail-meta"},Re={key:2,class:"asset-detail-subtle"},Be={class:"asset-detail-body"},qe={key:0,class:"asset-detail-loading"},Ee={class:"asset-detail-container"},Te={class:"asset-detail-info-section"},He={class:"asset-detail-description"},Je={class:"asset-detail-info-section"},Ve={class:"asset-detail-list"},Ge={class:"asset-detail-row"},Ye={class:"asset-detail-value"},We={key:0,class:"asset-detail-row"},Xe={class:"asset-detail-value mono"},Ze={key:1,class:"asset-detail-row"},Ke={class:"asset-detail-value mono"},Qe={key:2,class:"asset-detail-row"},ea={class:"asset-detail-value"},aa={key:3,class:"asset-detail-row"},la={class:"asset-detail-value"},sa={key:4,class:"asset-detail-row"},ta={class:"asset-detail-value"},na={key:1,class:"asset-detail-info-section"},ia={class:"asset-detail-box"},oa={class:"asset-detail-code"},ua={key:2,class:"asset-detail-empty"},da={__name:"AgentDetailDrawer",props:{visible:{type:Boolean,default:!1},agent:{type:Object,default:null},platform:{type:String,default:"claude"},loading:{type:Boolean,default:!1}},emits:["update:visible"],setup(a,{emit:l}){const{drawerWidth:n}=W(600),u=a,r=l,c=p({get:()=>u.visible,set:e=>r("update:visible",e)}),g={height:"100%",minHeight:0,overflow:"hidden"},f=p(()=>({claude:"Claude Code",codex:"Codex CLI",gemini:"Gemini CLI",opencode:"OpenCode"}[u.platform]||"")),y=p(()=>u.agent?.fileName?"codex"===u.platform?`[agents.${u.agent.fileName}]`:`${u.agent.fileName}.md`:""),b=p(()=>u.agent?"codex"===u.platform?u.agent.fullContent||"(无内容)":u.agent.systemPrompt||"(无内容)":"(无内容)"),k=p(()=>u.agent?.fullPath||u.agent?.path||"");function C(e){return"project"===e?"项目级":"用户级"}return(l,u)=>(d(),o(h(Y),{show:c.value,"onUpdate:show":u[0]||(u[0]=e=>c.value=e),width:h(n),placement:"right","show-mask":!0},{default:m(()=>[i(h(X),{closable:"","native-scrollbar":!1,"body-content-style":g},{header:m(()=>[_("div",Ie,[_("div",Se,[i(h(e),{size:20,class:"asset-detail-icon"},{default:m(()=>[i(h(U))]),_:1}),_("div",$e,[_("span",Fe,v(a.agent?.name||"代理详情"),1),_("div",De,[a.agent?.scope?(d(),o(h(ve),{key:0,type:"project"===a.agent.scope?"success":"info",size:"tiny",bordered:!1},{default:m(()=>[t(v(C(a.agent.scope)),1)]),_:1},8,["type"])):s("",!0),a.agent?.model?(d(),o(h(ve),{key:1,type:"warning",size:"tiny",bordered:!1},{default:m(()=>[t(v(a.agent.model),1)]),_:1})):s("",!0),f.value?(d(),w("span",Re,v(f.value),1)):s("",!0)])])])])]),default:m(()=>[_("div",Be,[a.loading&&!a.agent?(d(),w("div",qe,[i(h(ae),{size:"medium"}),u[1]||(u[1]=_("p",null,"加载代理详情中...",-1))])):a.agent?(d(),o(h(V),{key:1,type:"line",animated:"",class:"asset-detail-tabs"},{default:m(()=>[i(h(E),{name:"overview",tab:"概览"},{default:m(()=>[_("div",Ee,["codex"===a.platform&&a.agent.configReadError?(d(),o(h(oe),{key:0,type:"warning",bordered:!1},{default:m(()=>[t(v(a.agent.configReadError),1)]),_:1})):s("",!0),_("div",Te,[u[2]||(u[2]=_("h3",{class:"asset-detail-section-title"},"描述",-1)),_("p",He,v(a.agent.description||"暂无描述"),1)]),_("div",Je,[u[9]||(u[9]=_("h3",{class:"asset-detail-section-title"},"基础信息",-1)),_("div",Ve,[_("div",Ge,[u[3]||(u[3]=_("span",{class:"asset-detail-label"},"作用域",-1)),_("span",Ye,v(C(a.agent.scope)),1)]),a.agent.fileName?(d(),w("div",We,[u[4]||(u[4]=_("span",{class:"asset-detail-label"},"文件名",-1)),_("span",Xe,v(y.value),1)])):s("",!0),"codex"===a.platform&&a.agent.configFile?(d(),w("div",Ze,[u[5]||(u[5]=_("span",{class:"asset-detail-label"},"config_file",-1)),_("span",Ke,v(a.agent.configFile),1)])):s("",!0),a.agent.model?(d(),w("div",Qe,[u[6]||(u[6]=_("span",{class:"asset-detail-label"},"模型",-1)),_("span",ea,v(a.agent.model),1)])):s("",!0),a.agent.permissionMode?(d(),w("div",aa,[u[7]||(u[7]=_("span",{class:"asset-detail-label"},"权限模式",-1)),_("span",la,v(a.agent.permissionMode),1)])):s("",!0),a.agent.skills?(d(),w("div",sa,[u[8]||(u[8]=_("span",{class:"asset-detail-label"},"技能",-1)),_("span",ta,v(a.agent.skills),1)])):s("",!0)])]),a.agent.tools?(d(),w("div",na,[u[10]||(u[10]=_("h3",{class:"asset-detail-section-title"},"可用工具",-1)),_("div",ia,[i(h(e),{size:16},{default:m(()=>[i(h(L))]),_:1}),_("code",null,v(a.agent.tools),1)])])):s("",!0),i(G,{path:k.value},null,8,["path"])])]),_:1}),i(h(E),{name:"content",tab:"codex"===a.platform?"配置":"提示词"},{default:m(()=>[_("pre",oa,v(b.value),1)]),_:1},8,["tab"])]),_:1})):(d(),w("div",ua,[i(h(e),{size:44,class:"asset-detail-empty-icon"},{default:m(()=>[i(h(z))]),_:1}),u[11]||(u[11]=_("p",null,"未选择代理",-1))]))])]),_:1})]),_:1},8,["show","width"]))}},ra={class:"config-edit-header"},ca={class:"config-edit-identity"},va={class:"config-edit-icon"},pa={class:"config-edit-title-stack"},ma={class:"config-edit-kicker"},ga={class:"config-edit-title"},fa={class:"config-edit-badges"},ya={class:"config-edit-section"},ha={class:"section-heading"},ba={class:"field-grid"},ka={class:"scope-option"},wa={class:"scope-path"},_a={class:"scope-option"},Ca={class:"scope-path"},ja={key:0,class:"platform-note"},xa={class:"config-edit-section"},Ma={class:"section-heading"},za={key:1,class:"empty-config-box"},Pa={key:0,class:"field-grid"},Oa={class:"field-grid"},Ua={key:0,class:"config-edit-section content-section"},Aa={class:"section-heading"},Na={class:"modal-footer"},La=l({__name:"AgentFormModal",props:{visible:{type:Boolean,default:!1},agent:{type:Object,default:null},projectPath:{type:String,default:null},platform:{type:String,default:"claude"}},emits:["update:visible","saved"],setup(l,{emit:n}){const u=l,r=n,y=p({get:()=>u.visible,set:e=>r("update:visible",e)}),b=p(()=>!!u.agent),j=p(()=>"codex"===u.platform),x=p(()=>"claude"===u.platform),M=p(()=>"omp"===u.platform),P=p(()=>["codex","opencode","omp"].includes(u.platform)),O=p(()=>b.value?"编辑代理":"创建代理"),N=p(()=>({claude:"Claude Code",codex:"Codex CLI",gemini:"Gemini CLI",opencode:"OpenCode",omp:"OMP"}[u.platform]||"Claude Code")),L=p(()=>"codex"===u.platform?"~/.codex/config.toml":"opencode"===u.platform?"~/.config/opencode/agents/":"gemini"===u.platform?"~/.gemini/agents/":"omp"===u.platform?"~/.omp/agent/agents/":"~/.claude/agents/"),S=p(()=>"opencode"===u.platform?".opencode/agents/":"gemini"===u.platform?".gemini/agents/":"omp"===u.platform?".omp/agents/":".claude/agents/"),$=p(()=>"project"===Y.value.scope?"项目级":"用户级"),R=p(()=>G.find(e=>e.value===Y.value.configMode)?.label||"配置"),q=k(null),E=k(!1),T={maxHeight:"calc(92vh - 134px)",overflowY:"auto",paddingBottom:"18px"},H=[{label:"Sonnet",value:"sonnet"},{label:"Opus",value:"opus"},{label:"Haiku",value:"haiku"},{label:"继承 (inherit)",value:"inherit"}],J=[{label:"默认 (default)",value:"default"},{label:"宽松 (permissive)",value:"permissive"},{label:"严格 (strict)",value:"strict"}],V=[{label:"Off",value:"off"},{label:"Minimal",value:"minimal"},{label:"Low",value:"low"},{label:"Medium",value:"medium"},{label:"High",value:"high"},{label:"XHigh",value:"xhigh"},{label:"Max",value:"max"}],G=[{label:"仅描述",value:"none"},{label:"托管 TOML",value:"managed"},{label:"自定义路径",value:"custom"}],Y=k({fileName:"",scope:"user",name:"",description:"",configMode:"none",configFile:"",configContent:"",tools:"",model:"",thinkingLevel:"",spawns:"",permissionMode:"",skills:"",systemPrompt:""}),W=p(()=>{const e={fileName:{required:!0,message:"请输入文件名",trigger:"blur"},scope:{required:!0,message:"请选择作用域",trigger:"change"},description:{required:!0,message:"请输入代理描述",trigger:"blur"}};return x.value&&(e.name={required:!0,message:"请输入代理名称",trigger:"blur"}),j.value&&(e.configMode={required:!0,message:"请选择配置模式",trigger:"change"},e.configFile={required:"custom"===Y.value.configMode,message:"请输入自定义配置文件路径",trigger:"blur"}),e});function X(){Y.value={fileName:"",scope:"user",name:"",description:"",configMode:"none",configFile:"",configContent:"",tools:"",model:"",thinkingLevel:"",spawns:"",permissionMode:"",skills:"",systemPrompt:""}}function K(){y.value=!1,X()}async function ae(){try{await(q.value?.validate())}catch{return}E.value=!0;try{const e={...Y.value,projectPath:u.projectPath};j.value?("custom"===Y.value.configMode?e.configFile=Y.value.configFile:delete e.configFile,"managed"===Y.value.configMode||"custom"===Y.value.configMode?e.configContent=Y.value.configContent||"":delete e.configContent):(delete e.configMode,delete e.configFile,delete e.configContent),b.value?(await async function(e,a,l,s="claude"){return(await C.put(`/agents/${a}/${e}`,{...l,platform:s})).data}(Y.value.fileName,Y.value.scope,e,u.platform),re.success("代理更新成功")):(await async function(e,a="claude"){return(await C.post("/agents",{...e,platform:a})).data}(e,u.platform),re.success("代理创建成功")),r("saved"),y.value=!1,X()}catch(e){re.error("操作失败: "+e.message)}finally{E.value=!1}}return c(()=>u.agent,e=>{if(e){const a=e.configMode||(e.configFile?String(e.configFile).includes("/.codex/agents/")?"managed":"custom":"none");Y.value={fileName:e.fileName||"",scope:e.scope||"user",name:e.name||"",description:e.description||"",configMode:a,configFile:e.configFile||"",configContent:e.fullContent||"",tools:e.tools||"",model:e.model||"",thinkingLevel:e.thinkingLevel||"",spawns:e.spawns||"",permissionMode:e.permissionMode||"",skills:e.skills||"",systemPrompt:e.systemPrompt||""}}else X()},{immediate:!0}),c(()=>u.platform,e=>{"codex"===e&&(Y.value.scope="user",Y.value.configMode||(Y.value.configMode="none"))},{immediate:!0}),(l,n)=>(d(),o(h(B),{show:y.value,"onUpdate:show":n[15]||(n[15]=e=>y.value=e),preset:"card",title:O.value,style:{width:"min(940px, 96vw)","max-height":"92vh"},"content-style":T,"mask-closable":!1,class:"config-edit-modal"},{footer:m(()=>[_("div",Na,[i(h(a),{onClick:K},{default:m(()=>[...n[23]||(n[23]=[t("取消",-1)])]),_:1}),i(h(a),{type:"primary",loading:E.value,onClick:ae},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(I))]),_:1})]),default:m(()=>[t(" "+v(b.value?"保存":"创建"),1)]),_:1},8,["loading"])])]),default:m(()=>[_("div",ra,[_("div",ca,[_("span",va,[i(h(e),{size:22},{default:m(()=>[i(h(U))]),_:1})]),_("div",pa,[_("span",ma,v(N.value),1),_("span",ga,v(b.value?Y.value.fileName||"编辑代理":"创建新代理"),1)])]),_("div",fa,[i(h(ve),{size:"small",bordered:!1,type:"info"},{default:m(()=>[t(v($.value),1)]),_:1}),j.value?(d(),o(h(ve),{key:0,size:"small",bordered:!1,type:"success"},{default:m(()=>[...n[16]||(n[16]=[t("Codex 用户级",-1)])]),_:1})):s("",!0),j.value&&"none"!==Y.value.configMode?(d(),o(h(ve),{key:1,size:"small",bordered:!1,type:"warning"},{default:m(()=>[t(v(R.value),1)]),_:1})):s("",!0)])]),i(h(ee),{ref_key:"formRef",ref:q,model:Y.value,rules:W.value,"label-placement":"top","require-mark-placement":"right-hanging",class:"config-edit-form"},{default:m(()=>[_("div",{class:f(["config-edit-grid",{"is-codex":j.value}])},[_("section",ya,[_("div",ha,[i(h(e),{size:16},{default:m(()=>[i(h(F))]),_:1}),n[17]||(n[17]=_("span",null,"基础信息",-1))]),_("div",ba,[i(h(Q),{label:"文件名",path:"fileName"},{default:m(()=>[i(h(ce),{value:Y.value.fileName,"onUpdate:value":n[0]||(n[0]=e=>Y.value.fileName=e),disabled:b.value,placeholder:"code-reviewer"},null,8,["value","disabled"])]),_:1}),x.value?(d(),o(h(Q),{key:0,label:"显示名称",path:"name"},{default:m(()=>[i(h(ce),{value:Y.value.name,"onUpdate:value":n[1]||(n[1]=e=>Y.value.name=e),placeholder:"代理的显示名称"},null,8,["value"])]),_:1})):s("",!0)]),i(h(Q),{label:"作用域",path:"scope"},{default:m(()=>[i(h(te),{value:Y.value.scope,"onUpdate:value":n[2]||(n[2]=e=>Y.value.scope=e),disabled:b.value,class:f(["scope-picker",{"single-option":j.value}])},{default:m(()=>[i(h(ie),{value:"user"},{default:m(()=>[_("span",ka,[n[18]||(n[18]=_("span",{class:"scope-title"},"用户级",-1)),_("span",wa,v(L.value),1)])]),_:1}),j.value?s("",!0):(d(),o(h(ie),{key:0,value:"project"},{default:m(()=>[_("span",_a,[n[19]||(n[19]=_("span",{class:"scope-title"},"项目级",-1)),_("span",Ca,v(S.value),1)])]),_:1}))]),_:1},8,["value","disabled","class"])]),_:1}),i(h(Q),{label:"描述",path:"description"},{default:m(()=>[i(h(ce),{value:Y.value.description,"onUpdate:value":n[3]||(n[3]=e=>Y.value.description=e),type:"textarea",autosize:{minRows:3,maxRows:5},placeholder:"一句话说明这个代理什么时候该被调用"},null,8,["value"])]),_:1}),j.value?(d(),w("div",ja,[i(h(e),{size:16},{default:m(()=>[i(h(A))]),_:1}),n[20]||(n[20]=_("span",null,[t("Codex agents 写入用户级配置。描述会进入 "),_("code",null,"~/.codex/config.toml"),t(",TOML 配置可托管到 "),_("code",null,"~/.codex/agents/"),t("。")],-1))])):s("",!0)]),_("section",xa,[_("div",Ma,[i(h(e),{size:16},{default:m(()=>[i(h(D))]),_:1}),_("span",null,v(j.value?"运行配置":"模型与权限"),1)]),j.value?(d(),w(g,{key:0},[i(h(Q),{label:"配置模式",path:"configMode"},{default:m(()=>[i(h(Z),{value:Y.value.configMode,"onUpdate:value":n[4]||(n[4]=e=>Y.value.configMode=e),options:G,placeholder:"选择配置模式"},null,8,["value"])]),_:1}),"custom"===Y.value.configMode?(d(),o(h(Q),{key:0,label:"配置文件路径",path:"configFile"},{default:m(()=>[i(h(ce),{value:Y.value.configFile,"onUpdate:value":n[5]||(n[5]=e=>Y.value.configFile=e),placeholder:"~/.omx/agents/my-agent.toml"},null,8,["value"])]),_:1})):s("",!0),"none"===Y.value.configMode?(d(),w("div",za,[i(h(e),{size:18},{default:m(()=>[i(h(z))]),_:1}),n[21]||(n[21]=_("span",null,"仅保存代理描述,不额外写入模型或工具配置。",-1))])):(d(),o(h(Q),{key:2,label:"Agent Config (TOML)",path:"configContent",class:"editor-form-item"},{default:m(()=>[i(h(ce),{value:Y.value.configContent,"onUpdate:value":n[6]||(n[6]=e=>Y.value.configContent=e),type:"textarea",autosize:{minRows:14,maxRows:22},class:"toml-editor",placeholder:'model = "gpt-5.4"'},null,8,["value"])]),_:1}))],64)):(d(),w(g,{key:1},[i(h(Q),{label:"可用工具",path:"tools"},{default:m(()=>[i(h(ce),{value:Y.value.tools,"onUpdate:value":n[7]||(n[7]=e=>Y.value.tools=e),placeholder:M.value?"read, edit, bash(逗号分隔)":"Read, Edit, Bash"},null,8,["value","placeholder"])]),_:1}),i(h(Q),{label:"模型",path:"model"},{default:m(()=>[P.value?(d(),o(h(ce),{key:0,value:Y.value.model,"onUpdate:value":n[8]||(n[8]=e=>Y.value.model=e),placeholder:M.value?"@default、@review 或 provider/model;多个候选用逗号分隔":"gpt-5, claude-sonnet-4, openrouter/model"},null,8,["value","placeholder"])):(d(),o(h(Z),{key:1,value:Y.value.model,"onUpdate:value":n[9]||(n[9]=e=>Y.value.model=e),options:H,placeholder:"选择模型",clearable:""},null,8,["value"]))]),_:1}),M.value?(d(),w("div",Pa,[i(h(Q),{label:"思考级别",path:"thinkingLevel"},{default:m(()=>[i(h(Z),{value:Y.value.thinkingLevel,"onUpdate:value":n[10]||(n[10]=e=>Y.value.thinkingLevel=e),options:V,placeholder:"使用模型默认级别",clearable:""},null,8,["value"])]),_:1}),i(h(Q),{label:"可调用的子 Agent",path:"spawns"},{default:m(()=>[i(h(ce),{value:Y.value.spawns,"onUpdate:value":n[11]||(n[11]=e=>Y.value.spawns=e),placeholder:"* 或 reviewer, scout"},null,8,["value"])]),_:1})])):s("",!0),_("div",Oa,["opencode"===u.platform||M.value?s("",!0):(d(),o(h(Q),{key:0,label:"权限模式",path:"permissionMode"},{default:m(()=>[i(h(Z),{value:Y.value.permissionMode,"onUpdate:value":n[12]||(n[12]=e=>Y.value.permissionMode=e),options:J,placeholder:"选择权限模式",clearable:""},null,8,["value"])]),_:1})),"opencode"===u.platform||M.value?s("",!0):(d(),o(h(Q),{key:1,label:"技能",path:"skills"},{default:m(()=>[i(h(ce),{value:Y.value.skills,"onUpdate:value":n[13]||(n[13]=e=>Y.value.skills=e),placeholder:"自动加载的技能,逗号分隔"},null,8,["value"])]),_:1}))])],64))]),j.value?s("",!0):(d(),w("section",Ua,[_("div",Aa,[i(h(e),{size:16},{default:m(()=>[i(h(z))]),_:1}),n[22]||(n[22]=_("span",null,"系统提示词",-1))]),i(h(Q),{path:"systemPrompt","show-label":!1,class:"editor-form-item"},{default:m(()=>[i(me,{modelValue:Y.value.systemPrompt,"onUpdate:modelValue":n[14]||(n[14]=e=>Y.value.systemPrompt=e),rows:10,"min-height":240,placeholder:"定义代理的行为、边界和输出要求","default-editing":!b.value},null,8,["modelValue","default-editing"])]),_:1})]))],2)]),_:1},8,["model","rules"])]),_:1},8,["show","title"]))}},[["__scopeId","data-v-ea89272f"]]),Ia={key:0,class:"asset-panel-header"},Sa={class:"asset-title-group"},$a={class:"asset-heading"},Fa={class:"asset-title-row"},Da={class:"asset-platform-pill"},Ra={key:0,class:"asset-action-row"},Ba={key:1,class:"asset-drawer-toolbar"},qa={key:0,class:"asset-action-row"},Ea={key:2,class:"omp-model-roles"},Ta={class:"omp-model-roles-toolbar"},Ha={class:"omp-model-roles-copy"},Ja={key:0,class:"omp-model-roles-stale"},Va={key:1,class:"omp-model-roles-error"},Ga={class:"asset-summary"},Ya={class:"asset-summary-item"},Wa={class:"asset-summary-value"},Xa={class:"asset-summary-item"},Za={class:"asset-summary-value"},Ka={class:"asset-summary-item"},Qa={class:"asset-summary-value"},el={class:"asset-summary-item"},al={class:"asset-summary-value"},ll={class:"asset-filter-bar"},sl={class:"asset-panel-content"},tl={key:0,class:"asset-empty"},nl={key:1,class:"asset-list"},il={class:"asset-footer"},ol=l({__name:"AgentsPanel",props:{hideBack:{type:Boolean,default:!1},inDrawer:{type:Boolean,default:!1},projectPath:{type:String,default:null},platform:{type:String,default:""}},emits:["back","updated"],setup(l,{emit:r}){const y=l,z=r,L=M(),I=b(),S=k([]),F=k(!1),D=k(""),R=k("all"),B=k(!1),E=k(!1),V=k(null),G=k(!1),Y=k(null),W=k({}),X=k({}),Q=k({}),ee=k([]),le=k(""),te=k([]),ne=k([]),ie=p(()=>new Set(te.value.map(e=>e.value))),oe=k(!1),de=k(!1),ve=k(""),me=p(()=>JSON.stringify(_e())!==le.value);let ge=0;const{byCapability:fe}=K(),ye=p(()=>fe("agents").map(e=>e.key)),he=p(()=>ye.value.includes(xe.value)),ke=["default","smol","slow","plan","commit","vision","designer","task","advisor","tiny"],we=["minimal","low","medium","high","xhigh","max"].map(e=>({label:e,value:e}));function _e(){return Object.fromEntries(ee.value.map(e=>[e.key,{model:e.model||"",thinkingLevel:e.thinkingLevel||""}]))}function Ce(e={}){const a=e.roles&&"object"==typeof e.roles?e.roles:{};ee.value=ke.map(e=>({key:e,model:"string"==typeof a[e]?.model?a[e].model:"",thinkingLevel:"string"==typeof a[e]?.thinkingLevel?a[e].thinkingLevel:""})),le.value=JSON.stringify(_e()),te.value=(Array.isArray(e.modelOptions)?e.modelOptions:[]).filter(e=>"string"==typeof e&&e.trim()).map(e=>({label:e,value:e})),ne.value=e.unavailableRoles&&"object"==typeof e.unavailableRoles?Object.keys(e.unavailableRoles).filter(a=>!0===e.unavailableRoles[a]):[]}function je(e,a){return e?.data?.error||e?.response?.data?.error||e?.message||a}const xe=p(()=>String(y.platform||x(I)||"").trim().toLowerCase()),Me=p(()=>"opencode"===xe.value?"使用 @agent 或 Task 在 OpenCode 中调用":"omp"===xe.value?"OMP Agent 由 task 工具按名称调用;模型可在 Agent 配置中单独指定":"gemini"===xe.value?"使用 @agent 调用 Gemini 自定义代理":"使用 Task tool 调用自定义代理"),ze=p(()=>{const e=L.get(xe.value)||j(xe.value);return e.label||e.title||"Claude Code"}),Pe=[{label:"全部",value:"all"},{label:"用户级",value:"user"},{label:"项目级",value:"project"},{label:"已托管",value:"managed"}],Oe=p(()=>S.value.filter(e=>"user"===e.scope).length),Ue=p(()=>S.value.filter(e=>"project"===e.scope).length),Ae=p(()=>Object.keys(X.value).length);function Ne(e){if(!e)return"";const a="string"==typeof e.scope&&e.scope.trim()?e.scope.trim():"unknown",l="string"==typeof e.path&&e.path.trim()?e.path.trim():"",s="string"==typeof e.fileName&&e.fileName.trim()?e.fileName.trim():"";return`${a}:${l||s}`}function Ie(e){if(!e)return"";const a=[];if("string"==typeof e.path&&e.path.trim()&&a.push(e.path.trim()),"string"==typeof e.fileName&&e.fileName.trim()){const l=e.fileName.trim();a.push(`${l}.md`,l)}"string"==typeof e.name&&e.name.trim()&&a.push(e.name.trim());for(const l of a)if(X.value[l])return l;return a[0]||""}const Se=p(()=>{let e=S.value;if("user"===R.value?e=e.filter(e=>"user"===e.scope):"project"===R.value?e=e.filter(e=>"project"===e.scope):"managed"===R.value&&(e=e.filter(e=>X.value[Ie(e)])),D.value.trim()){const a=D.value.toLowerCase();e=e.filter(e=>e.name?.toLowerCase().includes(a)||e.description?.toLowerCase().includes(a)||e.fileName?.toLowerCase().includes(a))}return e}),$e=p(()=>D.value?"没有匹配的代理":"user"===R.value?"暂无用户级代理":"project"===R.value?"暂无项目级代理":"managed"===R.value?"暂无托管的代理":he.value?"暂无自定义代理":`${ze.value} 暂未提供 Agents 能力`);async function Fe(){if(!he.value)return S.value=[],X.value={},void(F.value=!1);F.value=!0;try{const[e,a]=await Promise.all([be(y.projectPath,xe.value),J("agents",{platform:xe.value,projectPath:y.projectPath})]);if(e.success&&(S.value=e.agents||[]),a.success){X.value={};for(const[e,l]of Object.entries(a.items||{}))X.value[e]=l}}catch(e){re.error("加载代理列表失败: "+e.message)}finally{F.value=!1}}async function De(e,a){const l=Ie(e);if(l){Q.value[l]=!0;try{(await q("agents",l,a)).success&&(re.success(a?"已启用":"已禁用"),await Fe())}catch(s){re.error("切换失败: "+s.message)}finally{delete Q.value[l]}}else re.error("未找到代理对应的托管配置键")}async function Re(e,a,l){const s=Ie(e);if(s){Q.value[s]=!0;try{(await H("agents",s,a,l)).success&&(re.success(`${a} ${l?"已启用":"已禁用"}`),await Fe())}catch(t){re.error("切换失败: "+t.message)}finally{delete Q.value[s]}}else re.error("未找到代理对应的托管配置键")}async function Be(){F.value=!0;try{const e=await T("agents");e?.success||re.warning(e?.message||"同步失败,已继续刷新列表")}catch(e){re.warning("同步失败,已继续刷新列表: "+e.message)}await Fe()}async function qe(){if("omp"===xe.value){oe.value=!0,ve.value="";try{const{data:e}=await C.get("/settings/omp-model-roles");Ce(e)}catch(e){ve.value=`加载 OMP 角色配置失败:${je(e,"未知错误")}`}finally{oe.value=!1}}}async function Ee(){if(!(oe.value||de.value||ve.value)){de.value=!0;try{const{data:e}=await C.put("/settings/omp-model-roles",{roles:_e()});Ce(e),re.success("OMP 模型角色配置已保存")}catch(e){re.error(`保存 OMP 角色配置失败:${je(e,"未知错误")}`)}finally{de.value=!1}}}function Te(){Y.value=null,B.value=!0}function He(e){B.value=e,e||(Y.value=null)}function Je(e){Ge(e,!0)}async function Ve(e){const a=Ne(e);W.value[a]=!0;try{(await async function(e,a,l=null,s="claude"){const t={};return s&&(t.platform=s),l&&(t.projectPath=l),(await C.delete(`/agents/${a}/${e}`,{params:t})).data}(e.fileName,e.scope,y.projectPath,xe.value)).success&&(re.success("代理已删除"),await Fe(),z("updated"))}catch(l){re.error("删除失败: "+l.message)}finally{delete W.value[a]}}async function Ge(e,a=!1){if(!e)return;const l=++ge;G.value=!0,a||(V.value=null,E.value=!0);try{const s=await async function(e,a,l=null,s="claude"){const t={};s&&(t.platform=s),l&&(t.projectPath=l);const n=pe(`agent-detail:${e}`,s,a||"",l||"");return se(n,l=>C.get(`/agents/${a}/${e}`,{params:t,signal:l}).then(e=>e.data),"agent-detail",`agent-detail:${s}`)}(e.fileName,e.scope,y.projectPath,xe.value);if(l!==ge)return;const t=s?.agent||e;a?(Y.value=t,B.value=!0):V.value=t}catch(s){if(l!==ge)return;re.error("加载代理详情失败: "+s.message),a?(Y.value=e,B.value=!0):V.value=e}finally{l===ge&&(G.value=!1)}}function Ye(e){Ge(e,!1)}function We(){Y.value=null,Fe(),z("updated")}function Xe(){z("back")}return u(()=>{Fe(),qe()}),c(xe,()=>{ge+=1,G.value=!1,V.value=null,Fe(),qe()}),(u,r)=>(d(),w("div",{class:f(["agents-panel asset-panel",{"in-drawer":y.inDrawer}])},[y.inDrawer?s("",!0):(d(),w("div",Ia,[_("div",Sa,[y.hideBack?s("",!0):(d(),o(h(a),{key:0,text:"",onClick:Xe,class:"back-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(P))]),_:1})]),_:1})),_("div",$a,[_("div",Fa,[r[3]||(r[3]=_("span",{class:"asset-title"},"代理管理",-1)),_("span",Da,v(ze.value),1)]),r[4]||(r[4]=_("div",{class:"asset-subtitle"},"维护自定义代理、工具权限和平台启用状态",-1))])]),he.value?(d(),w("div",Ra,[i(h(a),{text:"",onClick:Te,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(O))]),_:1})]),default:m(()=>[r[5]||(r[5]=t(" 创建 ",-1))]),_:1}),i(h(a),{text:"",onClick:Be,loading:F.value,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(N))]),_:1})]),default:m(()=>[r[6]||(r[6]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):s("",!0)])),y.inDrawer?(d(),w("div",Ba,[he.value?(d(),w("div",qa,[i(h(a),{text:"",onClick:Te,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(O))]),_:1})]),default:m(()=>[r[7]||(r[7]=t(" 创建 ",-1))]),_:1}),i(h(a),{text:"",onClick:Be,loading:F.value,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(N))]),_:1})]),default:m(()=>[r[8]||(r[8]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):s("",!0)])):s("",!0),"omp"===xe.value?(d(),w("div",Ea,[_("div",Ta,[_("div",Ha,[r[10]||(r[10]=_("strong",null,"OMP 模型角色",-1)),r[11]||(r[11]=_("span",null,"候选模型只取当前启用渠道。原生 OAuth 渠道读取允许模型列表(未设置时读取已声明模型),并使用 OAuth provider ID 作为前缀;OAuth Auth Gateway 使用该托管渠道的模型配置。思考强度会写入选择器后缀,例如 :high。",-1)),ne.value.length?(d(),w("span",Ja," 以下角色当前指向未启用渠道模型:"+v(ne.value.join("、"))+"。请切换到已启用渠道中的模型,或清空对应角色。 ",1)):s("",!0),ve.value?(d(),w("div",Va,[_("span",null,v(ve.value),1),i(h(a),{text:"",size:"tiny",disabled:oe.value,onClick:qe},{default:m(()=>[...r[9]||(r[9]=[t("重试",-1)])]),_:1},8,["disabled"])])):s("",!0)]),i(h(a),{type:"primary",size:"small",loading:de.value,disabled:oe.value||!!ve.value||de.value||!me.value,onClick:Ee},{default:m(()=>[...r[12]||(r[12]=[t(" 保存角色配置 ",-1)])]),_:1},8,["loading","disabled"])]),r[13]||(r[13]=_("div",{class:"omp-model-roles-header"},[_("span",null,"角色"),_("span",null,"模型"),_("span",null,"思考强度")],-1)),(d(!0),w(g,null,n(ee.value,e=>(d(),w("div",{key:e.key,class:"omp-model-role-row"},[_("strong",null,v(e.key),1),i(h(Z),{value:e.model,"onUpdate:value":a=>e.model=a,options:te.value,placeholder:"请选择已启用渠道模型",filterable:"",clearable:"",size:"small",disabled:oe.value||!!ve.value||de.value},null,8,["value","onUpdate:value","options","disabled"]),i(h(Z),{value:e.thinkingLevel,"onUpdate:value":a=>e.thinkingLevel=a,options:h(we),placeholder:"跟随默认",clearable:"",size:"small",disabled:oe.value||!!ve.value||de.value||!ie.value.has(e.model)},null,8,["value","onUpdate:value","options","disabled"])]))),128))])):s("",!0),_("div",Ga,[_("span",Ya,[r[14]||(r[14]=_("span",{class:"asset-summary-label"},"全部",-1)),_("span",Wa,v(S.value.length),1)]),_("span",Xa,[r[15]||(r[15]=_("span",{class:"asset-summary-label"},"用户级",-1)),_("span",Za,v(Oe.value),1)]),_("span",Ka,[r[16]||(r[16]=_("span",{class:"asset-summary-label"},"项目级",-1)),_("span",Qa,v(Ue.value),1)]),_("span",el,[r[17]||(r[17]=_("span",{class:"asset-summary-label"},"托管",-1)),_("span",al,v(Ae.value),1)])]),_("div",ll,[i(h(ce),{value:D.value,"onUpdate:value":r[0]||(r[0]=e=>D.value=e),placeholder:"搜索代理、描述或文件名",clearable:"",size:"small",class:"asset-search"},{prefix:m(()=>[i(h(e),null,{default:m(()=>[i(h($))]),_:1})]),_:1},8,["value"]),i(h(Z),{value:R.value,"onUpdate:value":r[1]||(r[1]=e=>R.value=e),options:Pe,size:"small",class:"asset-filter"},null,8,["value"])]),_("div",sl,[i(h(ae),{show:F.value},{default:m(()=>[0!==Se.value.length||F.value?(d(),w("div",nl,[(d(!0),w(g,null,n(Se.value,e=>(d(),o(Le,{key:Ne(e),agent:e,deleting:!!W.value[Ne(e)],"registry-info":X.value[Ie(e)],toggling:!!Q.value[Ie(e)],onEdit:Je,onDelete:Ve,onClick:Ye,onToggleEnabled:De,onTogglePlatform:Re},null,8,["agent","deleting","registry-info","toggling"]))),128))])):(d(),w("div",tl,[i(h(ue),{description:$e.value},{icon:m(()=>[i(h(e),{size:"48",color:"var(--text-quaternary)"},{default:m(()=>[i(h(U))]),_:1})]),extra:m(()=>[he.value?(d(),o(h(a),{key:0,size:"small",onClick:Te},{default:m(()=>[...r[18]||(r[18]=[t(" 创建第一个代理 ",-1)])]),_:1})):s("",!0)]),_:1},8,["description"])]))]),_:1},8,["show"])]),_("div",il,[i(h(e),{size:"14",class:"asset-info-icon"},{default:m(()=>[i(h(A))]),_:1}),_("span",null,v(Me.value),1)]),i(La,{visible:B.value,"onUpdate:visible":He,agent:Y.value,"project-path":l.projectPath,platform:xe.value,onSaved:We},null,8,["visible","agent","project-path","platform"]),i(da,{visible:E.value,"onUpdate:visible":r[2]||(r[2]=e=>E.value=e),agent:V.value,platform:xe.value,loading:G.value},null,8,["visible","agent","platform","loading"])],2))}},[["__scopeId","data-v-393fa5d6"]]),ul={class:"preset-panel"},dl={class:"toolbar"},rl={key:0,class:"empty"},cl={key:1,class:"preset-list"},vl=["onClick"],pl={key:1,class:"editor"},ml={class:"editor-title"},gl={class:"field-grid"},fl={class:"wide"},yl={class:"wide"},hl={class:"editor-actions"},bl={key:0,class:"hint"},kl=l({__name:"DshAgentPresetsPanel",setup(e){const l=R(),r=k([]),c=k(""),y=k([]),b=k(null),C=k(""),j=k(!1),x=k(!1),M=k(!1),z=k(""),P=k(!1),O=k(!1),U=k("[]"),A=k({id:"",name:"",description:"",order:0,plugins:[],builtIn:!1}),N=p(()=>r.value.map(e=>({label:e.name,value:e.name})));async function L(){if(c.value){j.value=!0,z.value="";try{const e=await fe(c.value);if(y.value=e.presets||[],b.value=e.revision??null,C.value){const e=y.value.find(e=>e.id===C.value);e?I(e):(P.value=!1,C.value="")}}catch(e){z.value=e.message||"读取 Agent 预设失败"}finally{j.value=!1}}}function I(e){C.value=e.id,A.value={...e,plugins:Array.isArray(e.plugins)?e.plugins:[]},U.value=JSON.stringify(A.value.plugins,null,2),O.value=!1,P.value=!0}function S(){C.value="",A.value={id:"",name:"",description:"",order:0,plugins:[],builtIn:!1},U.value="[]",O.value=!0,P.value=!0}async function $(){let e;try{e=JSON.parse(U.value||"[]")}catch(a){return void l.error("插件声明必须是有效的 JSON 数组")}if(Array.isArray(e)){x.value=!0;try{await ge(c.value,{id:A.value.id,name:A.value.name,description:A.value.description,order:A.value.order,plugins:e},b.value),l.success("Agent 预设已保存"),C.value=A.value.id,await L()}catch(s){l.error(s.message||"保存失败,请刷新后重试")}finally{x.value=!1}}else l.error("插件声明必须是数组")}async function F(){M.value=!0;try{await he(c.value,A.value.id,b.value),l.success("自定义 Agent 预设已删除"),C.value="",P.value=!1,await L()}catch(e){l.error(e.message||"删除失败,请刷新后重试")}finally{M.value=!1}}return u(async()=>{try{r.value=await ye(),c.value=r.value[0]?.name||"",c.value&&await L()}catch(e){z.value=e.message||"读取 DSH Profile 失败"}}),(e,l)=>(d(),w("div",ul,[_("div",dl,[i(h(Z),{value:c.value,"onUpdate:value":[l[0]||(l[0]=e=>c.value=e),L],options:N.value,placeholder:"选择 DSH Profile",size:"small"},null,8,["value","options"]),i(h(a),{size:"small",disabled:!c.value,onClick:S},{default:m(()=>[...l[7]||(l[7]=[t("新建预设",-1)])]),_:1},8,["disabled"]),i(h(a),{size:"small",loading:j.value,onClick:L},{default:m(()=>[...l[8]||(l[8]=[t("刷新",-1)])]),_:1},8,["loading"])]),z.value?(d(),o(h(oe),{key:0,type:"error","show-icon":!1},{default:m(()=>[t(v(z.value),1)]),_:1})):s("",!0),i(h(ae),{show:j.value},{default:m(()=>[j.value||0!==y.value.length?(d(),w("div",cl,[(d(!0),w(g,null,n(y.value,e=>(d(),w("button",{key:e.id,class:f(["preset-item",{selected:C.value===e.id}]),onClick:a=>I(e)},[_("strong",null,v(e.name||e.id),1),_("span",null,v(e.description||e.id),1),_("small",null,v(e.builtIn?"内置预设":"自定义预设"),1)],10,vl))),128))])):(d(),w("div",rl,"该 Profile 尚无 Agent 预设"))]),_:1},8,["show"]),P.value?(d(),w("div",pl,[_("div",ml,v(O.value?"新建 Agent 预设":A.value.name||A.value.id),1),_("div",gl,[_("label",null,[l[9]||(l[9]=t("预设 ID",-1)),i(h(ce),{value:A.value.id,"onUpdate:value":l[1]||(l[1]=e=>A.value.id=e),disabled:!O.value,placeholder:"例如 review"},null,8,["value","disabled"])]),_("label",null,[l[10]||(l[10]=t("显示名称",-1)),i(h(ce),{value:A.value.name,"onUpdate:value":l[2]||(l[2]=e=>A.value.name=e),placeholder:"可选"},null,8,["value"])]),_("label",null,[l[11]||(l[11]=t("排序",-1)),i(h(le),{value:A.value.order,"onUpdate:value":l[3]||(l[3]=e=>A.value.order=e),min:0},null,8,["value"])]),_("label",fl,[l[12]||(l[12]=t("描述",-1)),i(h(ce),{value:A.value.description,"onUpdate:value":l[4]||(l[4]=e=>A.value.description=e),placeholder:"可选"},null,8,["value"])]),_("label",yl,[l[13]||(l[13]=t("插件声明(JSON 格式的 YAML) ",-1)),i(h(ce),{value:U.value,"onUpdate:value":l[5]||(l[5]=e=>U.value=e),type:"textarea",autosize:{minRows:8,maxRows:18},spellcheck:"false"},null,8,["value"])])]),_("div",hl,[i(h(a),{type:"primary",loading:x.value,onClick:$},{default:m(()=>[...l[14]||(l[14]=[t("保存预设",-1)])]),_:1},8,["loading"]),O.value||A.value.builtIn?s("",!0):(d(),o(h(a),{key:0,type:"error",secondary:"",loading:M.value,onClick:F},{default:m(()=>[...l[15]||(l[15]=[t("删除",-1)])]),_:1},8,["loading"])),i(h(a),{onClick:l[6]||(l[6]=e=>P.value=!1)},{default:m(()=>[...l[16]||(l[16]=[t("取消",-1)])]),_:1})]),A.value.builtIn?(d(),w("div",bl,"保存后会在当前 Profile 覆盖内置预设。")):s("",!0)])):s("",!0)]))}},[["__scopeId","data-v-b33b4ced"]]),wl={class:"drawer-header"},_l=l({__name:"AgentsDrawer",props:{visible:Boolean,platform:{type:String,default:""}},emits:["update:visible"],setup(e,{emit:a}){const l=e,s=a,{drawerWidth:t}=W(720),n=p({get:()=>l.visible,set:e=>s("update:visible",e)}),u={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,a)=>(d(),o(h(Y),{show:n.value,"onUpdate:show":a[1]||(a[1]=e=>n.value=e),width:h(t),placement:"right","mask-closable":!0},{default:m(()=>[i(h(X),{closable:"","native-scrollbar":!1,"body-content-style":u},{header:m(()=>[_("div",wl,[_("span",null,v("dsh"===l.platform?"Agent 预设管理":"代理管理"),1)])]),default:m(()=>["dsh"===l.platform?(d(),o(kl,{key:0})):(d(),o(ol,{key:1,onBack:a[0]||(a[0]=e=>n.value=!1),"hide-back":!0,"in-drawer":!0,platform:l.platform},null,8,["platform"]))]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-de75708b"]]);export{_l as default};
1
+ import{i as e,s as a,t as l}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as t,K as n,O as i,S as o,V as u,W as d,Y as r,Z as c,_t as v,b as p,et as m,g,ht as f,m as y,mt as h,r as b,st as k,w,x as _}from"./vue-vendor-BqZbbXHA.js";import{t as C}from"./client-oU6RT-6I.js";import{c as j,i as x,t as M}from"./platforms-Cq6XDXfy.js";import{$ as z,At as P,Nt as O,O as U,R as A,S as N,V as L,_ as I,f as S,g as $,j as F,m as D}from"./icons-B-AzZoeE.js";import{t as R}from"./use-message-DBsCm7FJ.js";import{l as B}from"./light-C2X7hegj.js";import{a as q,c as E,i as T,o as H,r as J,s as V,t as G}from"./AssetPathField-pfN6L814.js";import{n as Y,t as W}from"./useResponsiveDrawer-CTQPBATk.js";import{t as X}from"./DrawerContent-ChXgZ1Xm.js";import{$ as Z,Et as K,I as Q,L as ee,M as ae,P as le,T as se,X as te,Y as ne,Z as ie,ct as oe,ft as ue,j as de,k as re,st as ce,ut as ve,w as pe}from"./index-BKpL4XdU.js";import{t as me}from"./MarkdownEditor-buNC2iDj.js";import{i as ge,n as fe,r as ye,t as he}from"./dsh-agent-presets-DjJRVMT6.js";async function be(e=null,a="claude",l={}){const s=pe("agents",a,l.scope||"",e||"");return se(s,l=>C.get("/agents",{params:e?{projectPath:e,platform:a}:{platform:a},signal:l}).then(e=>e.data),"agents",`agents:${a}`)}var ke={class:"asset-card-main"},we={class:"asset-card-top"},_e={class:"asset-card-title-stack"},Ce={class:"asset-card-title-row"},je={class:"asset-name"},xe={class:"asset-tags"},Me={key:0,class:"asset-description"},ze={class:"asset-meta"},Pe={key:0,class:"asset-meta-item"},Oe={key:1,class:"asset-meta-item"},Ue={class:"asset-card-actions"},Ae={class:"asset-platform-strip"},Ne=["onClick"],Le=l({__name:"AgentCard",props:{agent:{type:Object,required:!0},deleting:{type:Boolean,default:!1},registryInfo:{type:Object,default:null},toggling:{type:Boolean,default:!1}},emits:["click","edit","delete","toggle-enabled","toggle-platform"],setup(l,{emit:u}){const c=l,b=u,{byCapability:k}=K(),C=p(()=>k("agents"));return(u,p)=>{return d(),w("div",{class:f(["agent-card asset-card",{"is-project":"project"===l.agent.scope,"is-managed":l.registryInfo}]),onClick:p[4]||(p[4]=e=>b("click",l.agent))},[_("div",ke,[_("div",we,[_("div",_e,[_("div",Ce,[_("span",{class:f(["asset-status-dot",{active:l.registryInfo?.enabled||"project"===l.agent.scope}])},null,2),_("span",je,v(l.agent.name),1)]),_("div",xe,[i(h(ve),{type:"user"===l.agent.scope?"info":"success",size:"tiny",bordered:!1},{default:m(()=>[t(v("user"===l.agent.scope?"用户级":"项目级"),1)]),_:1},8,["type"]),l.registryInfo?(d(),o(h(ve),{key:0,type:"success",size:"tiny",bordered:!1},{default:m(()=>[...p[5]||(p[5]=[t("托管",-1)])]),_:1})):s("",!0),l.agent.model?(d(),o(h(ve),{key:1,type:"warning",size:"tiny",bordered:!1},{default:m(()=>[t(v(l.agent.model),1)]),_:1})):s("",!0)])])]),l.agent.description?(d(),w("div",Me,v((j=l.agent.description,j?j.length>80?j.slice(0,80)+"...":j:"")),1)):s("",!0),_("div",ze,[l.agent.tools?(d(),w("span",Pe,[i(h(e),{size:"12"},{default:m(()=>[i(h(L))]),_:1}),t(" "+v((k=l.agent.tools,k?k.length>30?k.slice(0,30)+"...":k:"")),1)])):s("",!0),l.agent.permissionMode?(d(),w("span",Oe,[i(h(e),{size:"12"},{default:m(()=>[i(h(S))]),_:1}),t(" "+v(l.agent.permissionMode),1)])):s("",!0)])]),_("div",Ue,[l.registryInfo?(d(),w(g,{key:0},[i(h(ne),{trigger:"hover"},{trigger:m(()=>[i(h(de),{value:l.registryInfo.enabled,size:"small",loading:l.toggling,"onUpdate:value":p[0]||(p[0]=e=>b("toggle-enabled",l.agent,e)),onClick:p[1]||(p[1]=y(()=>{},["stop"]))},null,8,["value","loading"])]),default:m(()=>[t(" "+v(l.registryInfo.enabled?"已启用":"已禁用"),1)]),_:1}),_("div",Ae,[(d(!0),w(g,null,n(C.value,a=>(d(),o(h(ne),{key:a.key,trigger:"hover"},{trigger:m(()=>[_("span",{class:f(["asset-platform-icon",{active:l.registryInfo.platforms?.[a.key]}]),onClick:y(e=>b("toggle-platform",l.agent,a.key,!l.registryInfo.platforms?.[a.key]),["stop"])},[i(h(e),{size:"14"},{default:m(()=>[(d(),o(r(a.icon)))]),_:2},1024)],10,Ne)]),default:m(()=>[t(" "+v(a.label||a.title||a.key)+" "+v(l.registryInfo.platforms?.[a.key]?"已启用":"未启用"),1)]),_:2},1024))),128))])],64)):(d(),w(g,{key:1},[i(h(a),{size:"tiny",tertiary:"",onClick:p[2]||(p[2]=y(e=>b("edit",l.agent),["stop"]))},{default:m(()=>[...p[6]||(p[6]=[t(" 编辑 ",-1)])]),_:1}),i(h(a),{size:"tiny",tertiary:"",type:"error",loading:c.deleting,onClick:p[3]||(p[3]=y(e=>b("delete",l.agent),["stop"]))},{default:m(()=>[...p[7]||(p[7]=[t(" 删除 ",-1)])]),_:1},8,["loading"])],64))])],2);var k,j}}},[["__scopeId","data-v-044e4192"]]),Ie={class:"asset-detail-drawer-header"},Se={class:"asset-detail-identity"},$e={class:"asset-detail-heading"},Fe={class:"asset-detail-name"},De={class:"asset-detail-meta"},Re={key:2,class:"asset-detail-subtle"},Be={class:"asset-detail-body"},qe={key:0,class:"asset-detail-loading"},Ee={class:"asset-detail-container"},Te={class:"asset-detail-info-section"},He={class:"asset-detail-description"},Je={class:"asset-detail-info-section"},Ve={class:"asset-detail-list"},Ge={class:"asset-detail-row"},Ye={class:"asset-detail-value"},We={key:0,class:"asset-detail-row"},Xe={class:"asset-detail-value mono"},Ze={key:1,class:"asset-detail-row"},Ke={class:"asset-detail-value mono"},Qe={key:2,class:"asset-detail-row"},ea={class:"asset-detail-value"},aa={key:3,class:"asset-detail-row"},la={class:"asset-detail-value"},sa={key:4,class:"asset-detail-row"},ta={class:"asset-detail-value"},na={key:1,class:"asset-detail-info-section"},ia={class:"asset-detail-box"},oa={class:"asset-detail-code"},ua={key:2,class:"asset-detail-empty"},da={__name:"AgentDetailDrawer",props:{visible:{type:Boolean,default:!1},agent:{type:Object,default:null},platform:{type:String,default:"claude"},loading:{type:Boolean,default:!1}},emits:["update:visible"],setup(a,{emit:l}){const{drawerWidth:n}=W(600),u=a,r=l,c=p({get:()=>u.visible,set:e=>r("update:visible",e)}),g={height:"100%",minHeight:0,overflow:"hidden"},f=p(()=>({claude:"Claude Code",codex:"Codex CLI",gemini:"Gemini CLI",opencode:"OpenCode"}[u.platform]||"")),y=p(()=>u.agent?.fileName?"codex"===u.platform?`[agents.${u.agent.fileName}]`:`${u.agent.fileName}.md`:""),b=p(()=>u.agent?"codex"===u.platform?u.agent.fullContent||"(无内容)":u.agent.systemPrompt||"(无内容)":"(无内容)"),k=p(()=>u.agent?.fullPath||u.agent?.path||"");function C(e){return"project"===e?"项目级":"用户级"}return(l,u)=>(d(),o(h(Y),{show:c.value,"onUpdate:show":u[0]||(u[0]=e=>c.value=e),width:h(n),placement:"right","show-mask":!0},{default:m(()=>[i(h(X),{closable:"","native-scrollbar":!1,"body-content-style":g},{header:m(()=>[_("div",Ie,[_("div",Se,[i(h(e),{size:20,class:"asset-detail-icon"},{default:m(()=>[i(h(U))]),_:1}),_("div",$e,[_("span",Fe,v(a.agent?.name||"代理详情"),1),_("div",De,[a.agent?.scope?(d(),o(h(ve),{key:0,type:"project"===a.agent.scope?"success":"info",size:"tiny",bordered:!1},{default:m(()=>[t(v(C(a.agent.scope)),1)]),_:1},8,["type"])):s("",!0),a.agent?.model?(d(),o(h(ve),{key:1,type:"warning",size:"tiny",bordered:!1},{default:m(()=>[t(v(a.agent.model),1)]),_:1})):s("",!0),f.value?(d(),w("span",Re,v(f.value),1)):s("",!0)])])])])]),default:m(()=>[_("div",Be,[a.loading&&!a.agent?(d(),w("div",qe,[i(h(ae),{size:"medium"}),u[1]||(u[1]=_("p",null,"加载代理详情中...",-1))])):a.agent?(d(),o(h(V),{key:1,type:"line",animated:"",class:"asset-detail-tabs"},{default:m(()=>[i(h(E),{name:"overview",tab:"概览"},{default:m(()=>[_("div",Ee,["codex"===a.platform&&a.agent.configReadError?(d(),o(h(oe),{key:0,type:"warning",bordered:!1},{default:m(()=>[t(v(a.agent.configReadError),1)]),_:1})):s("",!0),_("div",Te,[u[2]||(u[2]=_("h3",{class:"asset-detail-section-title"},"描述",-1)),_("p",He,v(a.agent.description||"暂无描述"),1)]),_("div",Je,[u[9]||(u[9]=_("h3",{class:"asset-detail-section-title"},"基础信息",-1)),_("div",Ve,[_("div",Ge,[u[3]||(u[3]=_("span",{class:"asset-detail-label"},"作用域",-1)),_("span",Ye,v(C(a.agent.scope)),1)]),a.agent.fileName?(d(),w("div",We,[u[4]||(u[4]=_("span",{class:"asset-detail-label"},"文件名",-1)),_("span",Xe,v(y.value),1)])):s("",!0),"codex"===a.platform&&a.agent.configFile?(d(),w("div",Ze,[u[5]||(u[5]=_("span",{class:"asset-detail-label"},"config_file",-1)),_("span",Ke,v(a.agent.configFile),1)])):s("",!0),a.agent.model?(d(),w("div",Qe,[u[6]||(u[6]=_("span",{class:"asset-detail-label"},"模型",-1)),_("span",ea,v(a.agent.model),1)])):s("",!0),a.agent.permissionMode?(d(),w("div",aa,[u[7]||(u[7]=_("span",{class:"asset-detail-label"},"权限模式",-1)),_("span",la,v(a.agent.permissionMode),1)])):s("",!0),a.agent.skills?(d(),w("div",sa,[u[8]||(u[8]=_("span",{class:"asset-detail-label"},"技能",-1)),_("span",ta,v(a.agent.skills),1)])):s("",!0)])]),a.agent.tools?(d(),w("div",na,[u[10]||(u[10]=_("h3",{class:"asset-detail-section-title"},"可用工具",-1)),_("div",ia,[i(h(e),{size:16},{default:m(()=>[i(h(L))]),_:1}),_("code",null,v(a.agent.tools),1)])])):s("",!0),i(G,{path:k.value},null,8,["path"])])]),_:1}),i(h(E),{name:"content",tab:"codex"===a.platform?"配置":"提示词"},{default:m(()=>[_("pre",oa,v(b.value),1)]),_:1},8,["tab"])]),_:1})):(d(),w("div",ua,[i(h(e),{size:44,class:"asset-detail-empty-icon"},{default:m(()=>[i(h(z))]),_:1}),u[11]||(u[11]=_("p",null,"未选择代理",-1))]))])]),_:1})]),_:1},8,["show","width"]))}},ra={class:"config-edit-header"},ca={class:"config-edit-identity"},va={class:"config-edit-icon"},pa={class:"config-edit-title-stack"},ma={class:"config-edit-kicker"},ga={class:"config-edit-title"},fa={class:"config-edit-badges"},ya={class:"config-edit-section"},ha={class:"section-heading"},ba={class:"field-grid"},ka={class:"scope-option"},wa={class:"scope-path"},_a={class:"scope-option"},Ca={class:"scope-path"},ja={key:0,class:"platform-note"},xa={class:"config-edit-section"},Ma={class:"section-heading"},za={key:1,class:"empty-config-box"},Pa={key:0,class:"field-grid"},Oa={class:"field-grid"},Ua={key:0,class:"config-edit-section content-section"},Aa={class:"section-heading"},Na={class:"modal-footer"},La=l({__name:"AgentFormModal",props:{visible:{type:Boolean,default:!1},agent:{type:Object,default:null},projectPath:{type:String,default:null},platform:{type:String,default:"claude"}},emits:["update:visible","saved"],setup(l,{emit:n}){const u=l,r=n,y=p({get:()=>u.visible,set:e=>r("update:visible",e)}),b=p(()=>!!u.agent),j=p(()=>"codex"===u.platform),x=p(()=>"claude"===u.platform),M=p(()=>"omp"===u.platform),P=p(()=>["codex","opencode","omp"].includes(u.platform)),O=p(()=>b.value?"编辑代理":"创建代理"),N=p(()=>({claude:"Claude Code",codex:"Codex CLI",gemini:"Gemini CLI",opencode:"OpenCode",omp:"OMP"}[u.platform]||"Claude Code")),L=p(()=>"codex"===u.platform?"~/.codex/config.toml":"opencode"===u.platform?"~/.config/opencode/agents/":"gemini"===u.platform?"~/.gemini/agents/":"omp"===u.platform?"~/.omp/agent/agents/":"~/.claude/agents/"),S=p(()=>"opencode"===u.platform?".opencode/agents/":"gemini"===u.platform?".gemini/agents/":"omp"===u.platform?".omp/agents/":".claude/agents/"),$=p(()=>"project"===Y.value.scope?"项目级":"用户级"),R=p(()=>G.find(e=>e.value===Y.value.configMode)?.label||"配置"),q=k(null),E=k(!1),T={maxHeight:"calc(92vh - 134px)",overflowY:"auto",paddingBottom:"18px"},H=[{label:"Sonnet",value:"sonnet"},{label:"Opus",value:"opus"},{label:"Haiku",value:"haiku"},{label:"继承 (inherit)",value:"inherit"}],J=[{label:"默认 (default)",value:"default"},{label:"宽松 (permissive)",value:"permissive"},{label:"严格 (strict)",value:"strict"}],V=[{label:"Off",value:"off"},{label:"Minimal",value:"minimal"},{label:"Low",value:"low"},{label:"Medium",value:"medium"},{label:"High",value:"high"},{label:"XHigh",value:"xhigh"},{label:"Max",value:"max"}],G=[{label:"仅描述",value:"none"},{label:"托管 TOML",value:"managed"},{label:"自定义路径",value:"custom"}],Y=k({fileName:"",scope:"user",name:"",description:"",configMode:"none",configFile:"",configContent:"",tools:"",model:"",thinkingLevel:"",spawns:"",permissionMode:"",skills:"",systemPrompt:""}),W=p(()=>{const e={fileName:{required:!0,message:"请输入文件名",trigger:"blur"},scope:{required:!0,message:"请选择作用域",trigger:"change"},description:{required:!0,message:"请输入代理描述",trigger:"blur"}};return x.value&&(e.name={required:!0,message:"请输入代理名称",trigger:"blur"}),j.value&&(e.configMode={required:!0,message:"请选择配置模式",trigger:"change"},e.configFile={required:"custom"===Y.value.configMode,message:"请输入自定义配置文件路径",trigger:"blur"}),e});function X(){Y.value={fileName:"",scope:"user",name:"",description:"",configMode:"none",configFile:"",configContent:"",tools:"",model:"",thinkingLevel:"",spawns:"",permissionMode:"",skills:"",systemPrompt:""}}function K(){y.value=!1,X()}async function ae(){try{await(q.value?.validate())}catch{return}E.value=!0;try{const e={...Y.value,projectPath:u.projectPath};j.value?("custom"===Y.value.configMode?e.configFile=Y.value.configFile:delete e.configFile,"managed"===Y.value.configMode||"custom"===Y.value.configMode?e.configContent=Y.value.configContent||"":delete e.configContent):(delete e.configMode,delete e.configFile,delete e.configContent),b.value?(await async function(e,a,l,s="claude"){return(await C.put(`/agents/${a}/${e}`,{...l,platform:s})).data}(Y.value.fileName,Y.value.scope,e,u.platform),re.success("代理更新成功")):(await async function(e,a="claude"){return(await C.post("/agents",{...e,platform:a})).data}(e,u.platform),re.success("代理创建成功")),r("saved"),y.value=!1,X()}catch(e){re.error("操作失败: "+e.message)}finally{E.value=!1}}return c(()=>u.agent,e=>{if(e){const a=e.configMode||(e.configFile?String(e.configFile).includes("/.codex/agents/")?"managed":"custom":"none");Y.value={fileName:e.fileName||"",scope:e.scope||"user",name:e.name||"",description:e.description||"",configMode:a,configFile:e.configFile||"",configContent:e.fullContent||"",tools:e.tools||"",model:e.model||"",thinkingLevel:e.thinkingLevel||"",spawns:e.spawns||"",permissionMode:e.permissionMode||"",skills:e.skills||"",systemPrompt:e.systemPrompt||""}}else X()},{immediate:!0}),c(()=>u.platform,e=>{"codex"===e&&(Y.value.scope="user",Y.value.configMode||(Y.value.configMode="none"))},{immediate:!0}),(l,n)=>(d(),o(h(B),{show:y.value,"onUpdate:show":n[15]||(n[15]=e=>y.value=e),preset:"card",title:O.value,style:{width:"min(940px, 96vw)","max-height":"92vh"},"content-style":T,"mask-closable":!1,class:"config-edit-modal"},{footer:m(()=>[_("div",Na,[i(h(a),{onClick:K},{default:m(()=>[...n[23]||(n[23]=[t("取消",-1)])]),_:1}),i(h(a),{type:"primary",loading:E.value,onClick:ae},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(I))]),_:1})]),default:m(()=>[t(" "+v(b.value?"保存":"创建"),1)]),_:1},8,["loading"])])]),default:m(()=>[_("div",ra,[_("div",ca,[_("span",va,[i(h(e),{size:22},{default:m(()=>[i(h(U))]),_:1})]),_("div",pa,[_("span",ma,v(N.value),1),_("span",ga,v(b.value?Y.value.fileName||"编辑代理":"创建新代理"),1)])]),_("div",fa,[i(h(ve),{size:"small",bordered:!1,type:"info"},{default:m(()=>[t(v($.value),1)]),_:1}),j.value?(d(),o(h(ve),{key:0,size:"small",bordered:!1,type:"success"},{default:m(()=>[...n[16]||(n[16]=[t("Codex 用户级",-1)])]),_:1})):s("",!0),j.value&&"none"!==Y.value.configMode?(d(),o(h(ve),{key:1,size:"small",bordered:!1,type:"warning"},{default:m(()=>[t(v(R.value),1)]),_:1})):s("",!0)])]),i(h(ee),{ref_key:"formRef",ref:q,model:Y.value,rules:W.value,"label-placement":"top","require-mark-placement":"right-hanging",class:"config-edit-form"},{default:m(()=>[_("div",{class:f(["config-edit-grid",{"is-codex":j.value}])},[_("section",ya,[_("div",ha,[i(h(e),{size:16},{default:m(()=>[i(h(F))]),_:1}),n[17]||(n[17]=_("span",null,"基础信息",-1))]),_("div",ba,[i(h(Q),{label:"文件名",path:"fileName"},{default:m(()=>[i(h(ce),{value:Y.value.fileName,"onUpdate:value":n[0]||(n[0]=e=>Y.value.fileName=e),disabled:b.value,placeholder:"code-reviewer"},null,8,["value","disabled"])]),_:1}),x.value?(d(),o(h(Q),{key:0,label:"显示名称",path:"name"},{default:m(()=>[i(h(ce),{value:Y.value.name,"onUpdate:value":n[1]||(n[1]=e=>Y.value.name=e),placeholder:"代理的显示名称"},null,8,["value"])]),_:1})):s("",!0)]),i(h(Q),{label:"作用域",path:"scope"},{default:m(()=>[i(h(te),{value:Y.value.scope,"onUpdate:value":n[2]||(n[2]=e=>Y.value.scope=e),disabled:b.value,class:f(["scope-picker",{"single-option":j.value}])},{default:m(()=>[i(h(ie),{value:"user"},{default:m(()=>[_("span",ka,[n[18]||(n[18]=_("span",{class:"scope-title"},"用户级",-1)),_("span",wa,v(L.value),1)])]),_:1}),j.value?s("",!0):(d(),o(h(ie),{key:0,value:"project"},{default:m(()=>[_("span",_a,[n[19]||(n[19]=_("span",{class:"scope-title"},"项目级",-1)),_("span",Ca,v(S.value),1)])]),_:1}))]),_:1},8,["value","disabled","class"])]),_:1}),i(h(Q),{label:"描述",path:"description"},{default:m(()=>[i(h(ce),{value:Y.value.description,"onUpdate:value":n[3]||(n[3]=e=>Y.value.description=e),type:"textarea",autosize:{minRows:3,maxRows:5},placeholder:"一句话说明这个代理什么时候该被调用"},null,8,["value"])]),_:1}),j.value?(d(),w("div",ja,[i(h(e),{size:16},{default:m(()=>[i(h(A))]),_:1}),n[20]||(n[20]=_("span",null,[t("Codex agents 写入用户级配置。描述会进入 "),_("code",null,"~/.codex/config.toml"),t(",TOML 配置可托管到 "),_("code",null,"~/.codex/agents/"),t("。")],-1))])):s("",!0)]),_("section",xa,[_("div",Ma,[i(h(e),{size:16},{default:m(()=>[i(h(D))]),_:1}),_("span",null,v(j.value?"运行配置":"模型与权限"),1)]),j.value?(d(),w(g,{key:0},[i(h(Q),{label:"配置模式",path:"configMode"},{default:m(()=>[i(h(Z),{value:Y.value.configMode,"onUpdate:value":n[4]||(n[4]=e=>Y.value.configMode=e),options:G,placeholder:"选择配置模式"},null,8,["value"])]),_:1}),"custom"===Y.value.configMode?(d(),o(h(Q),{key:0,label:"配置文件路径",path:"configFile"},{default:m(()=>[i(h(ce),{value:Y.value.configFile,"onUpdate:value":n[5]||(n[5]=e=>Y.value.configFile=e),placeholder:"~/.omx/agents/my-agent.toml"},null,8,["value"])]),_:1})):s("",!0),"none"===Y.value.configMode?(d(),w("div",za,[i(h(e),{size:18},{default:m(()=>[i(h(z))]),_:1}),n[21]||(n[21]=_("span",null,"仅保存代理描述,不额外写入模型或工具配置。",-1))])):(d(),o(h(Q),{key:2,label:"Agent Config (TOML)",path:"configContent",class:"editor-form-item"},{default:m(()=>[i(h(ce),{value:Y.value.configContent,"onUpdate:value":n[6]||(n[6]=e=>Y.value.configContent=e),type:"textarea",autosize:{minRows:14,maxRows:22},class:"toml-editor",placeholder:'model = "gpt-5.4"'},null,8,["value"])]),_:1}))],64)):(d(),w(g,{key:1},[i(h(Q),{label:"可用工具",path:"tools"},{default:m(()=>[i(h(ce),{value:Y.value.tools,"onUpdate:value":n[7]||(n[7]=e=>Y.value.tools=e),placeholder:M.value?"read, edit, bash(逗号分隔)":"Read, Edit, Bash"},null,8,["value","placeholder"])]),_:1}),i(h(Q),{label:"模型",path:"model"},{default:m(()=>[P.value?(d(),o(h(ce),{key:0,value:Y.value.model,"onUpdate:value":n[8]||(n[8]=e=>Y.value.model=e),placeholder:M.value?"@default、@review 或 provider/model;多个候选用逗号分隔":"gpt-5, claude-sonnet-4, openrouter/model"},null,8,["value","placeholder"])):(d(),o(h(Z),{key:1,value:Y.value.model,"onUpdate:value":n[9]||(n[9]=e=>Y.value.model=e),options:H,placeholder:"选择模型",clearable:""},null,8,["value"]))]),_:1}),M.value?(d(),w("div",Pa,[i(h(Q),{label:"思考级别",path:"thinkingLevel"},{default:m(()=>[i(h(Z),{value:Y.value.thinkingLevel,"onUpdate:value":n[10]||(n[10]=e=>Y.value.thinkingLevel=e),options:V,placeholder:"使用模型默认级别",clearable:""},null,8,["value"])]),_:1}),i(h(Q),{label:"可调用的子 Agent",path:"spawns"},{default:m(()=>[i(h(ce),{value:Y.value.spawns,"onUpdate:value":n[11]||(n[11]=e=>Y.value.spawns=e),placeholder:"* 或 reviewer, scout"},null,8,["value"])]),_:1})])):s("",!0),_("div",Oa,["opencode"===u.platform||M.value?s("",!0):(d(),o(h(Q),{key:0,label:"权限模式",path:"permissionMode"},{default:m(()=>[i(h(Z),{value:Y.value.permissionMode,"onUpdate:value":n[12]||(n[12]=e=>Y.value.permissionMode=e),options:J,placeholder:"选择权限模式",clearable:""},null,8,["value"])]),_:1})),"opencode"===u.platform||M.value?s("",!0):(d(),o(h(Q),{key:1,label:"技能",path:"skills"},{default:m(()=>[i(h(ce),{value:Y.value.skills,"onUpdate:value":n[13]||(n[13]=e=>Y.value.skills=e),placeholder:"自动加载的技能,逗号分隔"},null,8,["value"])]),_:1}))])],64))]),j.value?s("",!0):(d(),w("section",Ua,[_("div",Aa,[i(h(e),{size:16},{default:m(()=>[i(h(z))]),_:1}),n[22]||(n[22]=_("span",null,"系统提示词",-1))]),i(h(Q),{path:"systemPrompt","show-label":!1,class:"editor-form-item"},{default:m(()=>[i(me,{modelValue:Y.value.systemPrompt,"onUpdate:modelValue":n[14]||(n[14]=e=>Y.value.systemPrompt=e),rows:10,"min-height":240,placeholder:"定义代理的行为、边界和输出要求","default-editing":!b.value},null,8,["modelValue","default-editing"])]),_:1})]))],2)]),_:1},8,["model","rules"])]),_:1},8,["show","title"]))}},[["__scopeId","data-v-ea89272f"]]),Ia={key:0,class:"asset-panel-header"},Sa={class:"asset-title-group"},$a={class:"asset-heading"},Fa={class:"asset-title-row"},Da={class:"asset-platform-pill"},Ra={key:0,class:"asset-action-row"},Ba={key:1,class:"asset-drawer-toolbar"},qa={key:0,class:"asset-action-row"},Ea={key:2,class:"omp-model-roles"},Ta={class:"omp-model-roles-toolbar"},Ha={class:"omp-model-roles-copy"},Ja={key:0,class:"omp-model-roles-stale"},Va={key:1,class:"omp-model-roles-error"},Ga={class:"asset-summary"},Ya={class:"asset-summary-item"},Wa={class:"asset-summary-value"},Xa={class:"asset-summary-item"},Za={class:"asset-summary-value"},Ka={class:"asset-summary-item"},Qa={class:"asset-summary-value"},el={class:"asset-summary-item"},al={class:"asset-summary-value"},ll={class:"asset-filter-bar"},sl={class:"asset-panel-content"},tl={key:0,class:"asset-empty"},nl={key:1,class:"asset-list"},il={class:"asset-footer"},ol=l({__name:"AgentsPanel",props:{hideBack:{type:Boolean,default:!1},inDrawer:{type:Boolean,default:!1},projectPath:{type:String,default:null},platform:{type:String,default:""}},emits:["back","updated"],setup(l,{emit:r}){const y=l,z=r,L=M(),I=b(),S=k([]),F=k(!1),D=k(""),R=k("all"),B=k(!1),E=k(!1),V=k(null),G=k(!1),Y=k(null),W=k({}),X=k({}),Q=k({}),ee=k([]),le=k(""),te=k([]),ne=k([]),ie=p(()=>new Set(te.value.map(e=>e.value))),oe=k(!1),de=k(!1),ve=k(""),me=p(()=>JSON.stringify(_e())!==le.value);let ge=0;const{byCapability:fe}=K(),ye=p(()=>fe("agents").map(e=>e.key)),he=p(()=>ye.value.includes(xe.value)),ke=["default","smol","slow","plan","commit","vision","designer","task","advisor","tiny"],we=["minimal","low","medium","high","xhigh","max"].map(e=>({label:e,value:e}));function _e(){return Object.fromEntries(ee.value.map(e=>[e.key,{model:e.model||"",thinkingLevel:e.thinkingLevel||""}]))}function Ce(e={}){const a=e.roles&&"object"==typeof e.roles?e.roles:{};ee.value=ke.map(e=>({key:e,model:"string"==typeof a[e]?.model?a[e].model:"",thinkingLevel:"string"==typeof a[e]?.thinkingLevel?a[e].thinkingLevel:""})),le.value=JSON.stringify(_e()),te.value=(Array.isArray(e.modelOptions)?e.modelOptions:[]).filter(e=>"string"==typeof e&&e.trim()).map(e=>({label:e,value:e})),ne.value=e.unavailableRoles&&"object"==typeof e.unavailableRoles?Object.keys(e.unavailableRoles).filter(a=>!0===e.unavailableRoles[a]):[]}function je(e,a){return e?.data?.error||e?.response?.data?.error||e?.message||a}const xe=p(()=>String(y.platform||x(I)||"").trim().toLowerCase()),Me=p(()=>"opencode"===xe.value?"使用 @agent 或 Task 在 OpenCode 中调用":"omp"===xe.value?"OMP Agent 由 task 工具按名称调用;模型可在 Agent 配置中单独指定":"gemini"===xe.value?"使用 @agent 调用 Gemini 自定义代理":"使用 Task tool 调用自定义代理"),ze=p(()=>{const e=L.get(xe.value)||j(xe.value);return e.label||e.title||"Claude Code"}),Pe=[{label:"全部",value:"all"},{label:"用户级",value:"user"},{label:"项目级",value:"project"},{label:"已托管",value:"managed"}],Oe=p(()=>S.value.filter(e=>"user"===e.scope).length),Ue=p(()=>S.value.filter(e=>"project"===e.scope).length),Ae=p(()=>Object.keys(X.value).length);function Ne(e){if(!e)return"";const a="string"==typeof e.scope&&e.scope.trim()?e.scope.trim():"unknown",l="string"==typeof e.path&&e.path.trim()?e.path.trim():"",s="string"==typeof e.fileName&&e.fileName.trim()?e.fileName.trim():"";return`${a}:${l||s}`}function Ie(e){if(!e)return"";const a=[];if("string"==typeof e.path&&e.path.trim()&&a.push(e.path.trim()),"string"==typeof e.fileName&&e.fileName.trim()){const l=e.fileName.trim();a.push(`${l}.md`,l)}"string"==typeof e.name&&e.name.trim()&&a.push(e.name.trim());for(const l of a)if(X.value[l])return l;return a[0]||""}const Se=p(()=>{let e=S.value;if("user"===R.value?e=e.filter(e=>"user"===e.scope):"project"===R.value?e=e.filter(e=>"project"===e.scope):"managed"===R.value&&(e=e.filter(e=>X.value[Ie(e)])),D.value.trim()){const a=D.value.toLowerCase();e=e.filter(e=>e.name?.toLowerCase().includes(a)||e.description?.toLowerCase().includes(a)||e.fileName?.toLowerCase().includes(a))}return e}),$e=p(()=>D.value?"没有匹配的代理":"user"===R.value?"暂无用户级代理":"project"===R.value?"暂无项目级代理":"managed"===R.value?"暂无托管的代理":he.value?"暂无自定义代理":`${ze.value} 暂未提供 Agents 能力`);async function Fe(){if(!he.value)return S.value=[],X.value={},void(F.value=!1);F.value=!0;try{const[e,a]=await Promise.all([be(y.projectPath,xe.value),J("agents",{platform:xe.value,projectPath:y.projectPath})]);if(e.success&&(S.value=e.agents||[]),a.success){X.value={};for(const[e,l]of Object.entries(a.items||{}))X.value[e]=l}}catch(e){re.error("加载代理列表失败: "+e.message)}finally{F.value=!1}}async function De(e,a){const l=Ie(e);if(l){Q.value[l]=!0;try{(await q("agents",l,a)).success&&(re.success(a?"已启用":"已禁用"),await Fe())}catch(s){re.error("切换失败: "+s.message)}finally{delete Q.value[l]}}else re.error("未找到代理对应的托管配置键")}async function Re(e,a,l){const s=Ie(e);if(s){Q.value[s]=!0;try{(await H("agents",s,a,l)).success&&(re.success(`${a} ${l?"已启用":"已禁用"}`),await Fe())}catch(t){re.error("切换失败: "+t.message)}finally{delete Q.value[s]}}else re.error("未找到代理对应的托管配置键")}async function Be(){F.value=!0;try{const e=await T("agents");e?.success||re.warning(e?.message||"同步失败,已继续刷新列表")}catch(e){re.warning("同步失败,已继续刷新列表: "+e.message)}await Fe()}async function qe(){if("omp"===xe.value){oe.value=!0,ve.value="";try{const{data:e}=await C.get("/settings/omp-model-roles");Ce(e)}catch(e){ve.value=`加载 OMP 角色配置失败:${je(e,"未知错误")}`}finally{oe.value=!1}}}async function Ee(){if(!(oe.value||de.value||ve.value)){de.value=!0;try{const{data:e}=await C.put("/settings/omp-model-roles",{roles:_e()});Ce(e),re.success("OMP 模型角色配置已保存")}catch(e){re.error(`保存 OMP 角色配置失败:${je(e,"未知错误")}`)}finally{de.value=!1}}}function Te(){Y.value=null,B.value=!0}function He(e){B.value=e,e||(Y.value=null)}function Je(e){Ge(e,!0)}async function Ve(e){const a=Ne(e);W.value[a]=!0;try{(await async function(e,a,l=null,s="claude"){const t={};return s&&(t.platform=s),l&&(t.projectPath=l),(await C.delete(`/agents/${a}/${e}`,{params:t})).data}(e.fileName,e.scope,y.projectPath,xe.value)).success&&(re.success("代理已删除"),await Fe(),z("updated"))}catch(l){re.error("删除失败: "+l.message)}finally{delete W.value[a]}}async function Ge(e,a=!1){if(!e)return;const l=++ge;G.value=!0,a||(V.value=null,E.value=!0);try{const s=await async function(e,a,l=null,s="claude"){const t={};s&&(t.platform=s),l&&(t.projectPath=l);const n=pe(`agent-detail:${e}`,s,a||"",l||"");return se(n,l=>C.get(`/agents/${a}/${e}`,{params:t,signal:l}).then(e=>e.data),"agent-detail",`agent-detail:${s}`)}(e.fileName,e.scope,y.projectPath,xe.value);if(l!==ge)return;const t=s?.agent||e;a?(Y.value=t,B.value=!0):V.value=t}catch(s){if(l!==ge)return;re.error("加载代理详情失败: "+s.message),a?(Y.value=e,B.value=!0):V.value=e}finally{l===ge&&(G.value=!1)}}function Ye(e){Ge(e,!1)}function We(){Y.value=null,Fe(),z("updated")}function Xe(){z("back")}return u(()=>{Fe(),qe()}),c(xe,()=>{ge+=1,G.value=!1,V.value=null,Fe(),qe()}),(u,r)=>(d(),w("div",{class:f(["agents-panel asset-panel",{"in-drawer":y.inDrawer}])},[y.inDrawer?s("",!0):(d(),w("div",Ia,[_("div",Sa,[y.hideBack?s("",!0):(d(),o(h(a),{key:0,text:"",onClick:Xe,class:"back-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(P))]),_:1})]),_:1})),_("div",$a,[_("div",Fa,[r[3]||(r[3]=_("span",{class:"asset-title"},"代理管理",-1)),_("span",Da,v(ze.value),1)]),r[4]||(r[4]=_("div",{class:"asset-subtitle"},"维护自定义代理、工具权限和平台启用状态",-1))])]),he.value?(d(),w("div",Ra,[i(h(a),{text:"",onClick:Te,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(O))]),_:1})]),default:m(()=>[r[5]||(r[5]=t(" 创建 ",-1))]),_:1}),i(h(a),{text:"",onClick:Be,loading:F.value,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(N))]),_:1})]),default:m(()=>[r[6]||(r[6]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):s("",!0)])),y.inDrawer?(d(),w("div",Ba,[he.value?(d(),w("div",qa,[i(h(a),{text:"",onClick:Te,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(O))]),_:1})]),default:m(()=>[r[7]||(r[7]=t(" 创建 ",-1))]),_:1}),i(h(a),{text:"",onClick:Be,loading:F.value,class:"action-btn"},{icon:m(()=>[i(h(e),null,{default:m(()=>[i(h(N))]),_:1})]),default:m(()=>[r[8]||(r[8]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):s("",!0)])):s("",!0),"omp"===xe.value?(d(),w("div",Ea,[_("div",Ta,[_("div",Ha,[r[10]||(r[10]=_("strong",null,"OMP 模型角色",-1)),r[11]||(r[11]=_("span",null,"候选模型只取当前启用渠道。原生 OAuth 渠道读取允许模型列表(未设置时读取已声明模型),并使用 OAuth provider ID 作为前缀;OAuth Auth Gateway 使用该托管渠道的模型配置。思考强度会写入选择器后缀,例如 :high。",-1)),ne.value.length?(d(),w("span",Ja," 以下角色当前指向未启用渠道模型:"+v(ne.value.join("、"))+"。请切换到已启用渠道中的模型,或清空对应角色。 ",1)):s("",!0),ve.value?(d(),w("div",Va,[_("span",null,v(ve.value),1),i(h(a),{text:"",size:"tiny",disabled:oe.value,onClick:qe},{default:m(()=>[...r[9]||(r[9]=[t("重试",-1)])]),_:1},8,["disabled"])])):s("",!0)]),i(h(a),{type:"primary",size:"small",loading:de.value,disabled:oe.value||!!ve.value||de.value||!me.value,onClick:Ee},{default:m(()=>[...r[12]||(r[12]=[t(" 保存角色配置 ",-1)])]),_:1},8,["loading","disabled"])]),r[13]||(r[13]=_("div",{class:"omp-model-roles-header"},[_("span",null,"角色"),_("span",null,"模型"),_("span",null,"思考强度")],-1)),(d(!0),w(g,null,n(ee.value,e=>(d(),w("div",{key:e.key,class:"omp-model-role-row"},[_("strong",null,v(e.key),1),i(h(Z),{value:e.model,"onUpdate:value":a=>e.model=a,options:te.value,placeholder:"请选择已启用渠道模型",filterable:"",clearable:"",size:"small",disabled:oe.value||!!ve.value||de.value},null,8,["value","onUpdate:value","options","disabled"]),i(h(Z),{value:e.thinkingLevel,"onUpdate:value":a=>e.thinkingLevel=a,options:h(we),placeholder:"跟随默认",clearable:"",size:"small",disabled:oe.value||!!ve.value||de.value||!ie.value.has(e.model)},null,8,["value","onUpdate:value","options","disabled"])]))),128))])):s("",!0),_("div",Ga,[_("span",Ya,[r[14]||(r[14]=_("span",{class:"asset-summary-label"},"全部",-1)),_("span",Wa,v(S.value.length),1)]),_("span",Xa,[r[15]||(r[15]=_("span",{class:"asset-summary-label"},"用户级",-1)),_("span",Za,v(Oe.value),1)]),_("span",Ka,[r[16]||(r[16]=_("span",{class:"asset-summary-label"},"项目级",-1)),_("span",Qa,v(Ue.value),1)]),_("span",el,[r[17]||(r[17]=_("span",{class:"asset-summary-label"},"托管",-1)),_("span",al,v(Ae.value),1)])]),_("div",ll,[i(h(ce),{value:D.value,"onUpdate:value":r[0]||(r[0]=e=>D.value=e),placeholder:"搜索代理、描述或文件名",clearable:"",size:"small",class:"asset-search"},{prefix:m(()=>[i(h(e),null,{default:m(()=>[i(h($))]),_:1})]),_:1},8,["value"]),i(h(Z),{value:R.value,"onUpdate:value":r[1]||(r[1]=e=>R.value=e),options:Pe,size:"small",class:"asset-filter"},null,8,["value"])]),_("div",sl,[i(h(ae),{show:F.value},{default:m(()=>[0!==Se.value.length||F.value?(d(),w("div",nl,[(d(!0),w(g,null,n(Se.value,e=>(d(),o(Le,{key:Ne(e),agent:e,deleting:!!W.value[Ne(e)],"registry-info":X.value[Ie(e)],toggling:!!Q.value[Ie(e)],onEdit:Je,onDelete:Ve,onClick:Ye,onToggleEnabled:De,onTogglePlatform:Re},null,8,["agent","deleting","registry-info","toggling"]))),128))])):(d(),w("div",tl,[i(h(ue),{description:$e.value},{icon:m(()=>[i(h(e),{size:"48",color:"var(--text-quaternary)"},{default:m(()=>[i(h(U))]),_:1})]),extra:m(()=>[he.value?(d(),o(h(a),{key:0,size:"small",onClick:Te},{default:m(()=>[...r[18]||(r[18]=[t(" 创建第一个代理 ",-1)])]),_:1})):s("",!0)]),_:1},8,["description"])]))]),_:1},8,["show"])]),_("div",il,[i(h(e),{size:"14",class:"asset-info-icon"},{default:m(()=>[i(h(A))]),_:1}),_("span",null,v(Me.value),1)]),i(La,{visible:B.value,"onUpdate:visible":He,agent:Y.value,"project-path":l.projectPath,platform:xe.value,onSaved:We},null,8,["visible","agent","project-path","platform"]),i(da,{visible:E.value,"onUpdate:visible":r[2]||(r[2]=e=>E.value=e),agent:V.value,platform:xe.value,loading:G.value},null,8,["visible","agent","platform","loading"])],2))}},[["__scopeId","data-v-393fa5d6"]]),ul={class:"preset-panel"},dl={class:"toolbar"},rl={key:0,class:"empty"},cl={key:1,class:"preset-list"},vl=["onClick"],pl={key:1,class:"editor"},ml={class:"editor-title"},gl={class:"field-grid"},fl={class:"wide"},yl={class:"wide"},hl={class:"editor-actions"},bl={key:0,class:"hint"},kl=l({__name:"DshAgentPresetsPanel",setup(e){const l=R(),r=k([]),c=k(""),y=k([]),b=k(null),C=k(""),j=k(!1),x=k(!1),M=k(!1),z=k(""),P=k(!1),O=k(!1),U=k("[]"),A=k({id:"",name:"",description:"",order:0,plugins:[],builtIn:!1}),N=p(()=>r.value.map(e=>({label:e.name,value:e.name})));async function L(){if(c.value){j.value=!0,z.value="";try{const e=await fe(c.value);if(y.value=e.presets||[],b.value=e.revision??null,C.value){const e=y.value.find(e=>e.id===C.value);e?I(e):(P.value=!1,C.value="")}}catch(e){z.value=e.message||"读取 Agent 预设失败"}finally{j.value=!1}}}function I(e){C.value=e.id,A.value={...e,plugins:Array.isArray(e.plugins)?e.plugins:[]},U.value=JSON.stringify(A.value.plugins,null,2),O.value=!1,P.value=!0}function S(){C.value="",A.value={id:"",name:"",description:"",order:0,plugins:[],builtIn:!1},U.value="[]",O.value=!0,P.value=!0}async function $(){let e;try{e=JSON.parse(U.value||"[]")}catch(a){return void l.error("插件声明必须是有效的 JSON 数组")}if(Array.isArray(e)){x.value=!0;try{await ge(c.value,{id:A.value.id,name:A.value.name,description:A.value.description,order:A.value.order,plugins:e},b.value),l.success("Agent 预设已保存"),C.value=A.value.id,await L()}catch(s){l.error(s.message||"保存失败,请刷新后重试")}finally{x.value=!1}}else l.error("插件声明必须是数组")}async function F(){M.value=!0;try{await he(c.value,A.value.id,b.value),l.success("自定义 Agent 预设已删除"),C.value="",P.value=!1,await L()}catch(e){l.error(e.message||"删除失败,请刷新后重试")}finally{M.value=!1}}return u(async()=>{try{r.value=await ye(),c.value=r.value[0]?.name||"",c.value&&await L()}catch(e){z.value=e.message||"读取 DSH Profile 失败"}}),(e,l)=>(d(),w("div",ul,[_("div",dl,[i(h(Z),{value:c.value,"onUpdate:value":[l[0]||(l[0]=e=>c.value=e),L],options:N.value,placeholder:"选择 DSH Profile",size:"small"},null,8,["value","options"]),i(h(a),{size:"small",disabled:!c.value,onClick:S},{default:m(()=>[...l[7]||(l[7]=[t("新建预设",-1)])]),_:1},8,["disabled"]),i(h(a),{size:"small",loading:j.value,onClick:L},{default:m(()=>[...l[8]||(l[8]=[t("刷新",-1)])]),_:1},8,["loading"])]),z.value?(d(),o(h(oe),{key:0,type:"error","show-icon":!1},{default:m(()=>[t(v(z.value),1)]),_:1})):s("",!0),i(h(ae),{show:j.value},{default:m(()=>[j.value||0!==y.value.length?(d(),w("div",cl,[(d(!0),w(g,null,n(y.value,e=>(d(),w("button",{key:e.id,class:f(["preset-item",{selected:C.value===e.id}]),onClick:a=>I(e)},[_("strong",null,v(e.name||e.id),1),_("span",null,v(e.description||e.id),1),_("small",null,v(e.builtIn?"内置预设":"自定义预设"),1)],10,vl))),128))])):(d(),w("div",rl,"该 Profile 尚无 Agent 预设"))]),_:1},8,["show"]),P.value?(d(),w("div",pl,[_("div",ml,v(O.value?"新建 Agent 预设":A.value.name||A.value.id),1),_("div",gl,[_("label",null,[l[9]||(l[9]=t("预设 ID",-1)),i(h(ce),{value:A.value.id,"onUpdate:value":l[1]||(l[1]=e=>A.value.id=e),disabled:!O.value,placeholder:"例如 review"},null,8,["value","disabled"])]),_("label",null,[l[10]||(l[10]=t("显示名称",-1)),i(h(ce),{value:A.value.name,"onUpdate:value":l[2]||(l[2]=e=>A.value.name=e),placeholder:"可选"},null,8,["value"])]),_("label",null,[l[11]||(l[11]=t("排序",-1)),i(h(le),{value:A.value.order,"onUpdate:value":l[3]||(l[3]=e=>A.value.order=e),min:0},null,8,["value"])]),_("label",fl,[l[12]||(l[12]=t("描述",-1)),i(h(ce),{value:A.value.description,"onUpdate:value":l[4]||(l[4]=e=>A.value.description=e),placeholder:"可选"},null,8,["value"])]),_("label",yl,[l[13]||(l[13]=t("插件声明(JSON 格式的 YAML) ",-1)),i(h(ce),{value:U.value,"onUpdate:value":l[5]||(l[5]=e=>U.value=e),type:"textarea",autosize:{minRows:8,maxRows:18},spellcheck:"false"},null,8,["value"])])]),_("div",hl,[i(h(a),{type:"primary",loading:x.value,onClick:$},{default:m(()=>[...l[14]||(l[14]=[t("保存预设",-1)])]),_:1},8,["loading"]),O.value||A.value.builtIn?s("",!0):(d(),o(h(a),{key:0,type:"error",secondary:"",loading:M.value,onClick:F},{default:m(()=>[...l[15]||(l[15]=[t("删除",-1)])]),_:1},8,["loading"])),i(h(a),{onClick:l[6]||(l[6]=e=>P.value=!1)},{default:m(()=>[...l[16]||(l[16]=[t("取消",-1)])]),_:1})]),A.value.builtIn?(d(),w("div",bl,"保存后会在当前 Profile 覆盖内置预设。")):s("",!0)])):s("",!0)]))}},[["__scopeId","data-v-b33b4ced"]]),wl={class:"drawer-header"},_l=l({__name:"AgentsDrawer",props:{visible:Boolean,platform:{type:String,default:""}},emits:["update:visible"],setup(e,{emit:a}){const l=e,s=a,{drawerWidth:t}=W(720),n=p({get:()=>l.visible,set:e=>s("update:visible",e)}),u={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,a)=>(d(),o(h(Y),{show:n.value,"onUpdate:show":a[1]||(a[1]=e=>n.value=e),width:h(t),placement:"right","mask-closable":!0},{default:m(()=>[i(h(X),{closable:"","native-scrollbar":!1,"body-content-style":u},{header:m(()=>[_("div",wl,[_("span",null,v("dsh"===l.platform?"Agent 预设管理":"代理管理"),1)])]),default:m(()=>["dsh"===l.platform?(d(),o(kl,{key:0})):(d(),o(ol,{key:1,onBack:a[0]||(a[0]=e=>n.value=!1),"hide-back":!0,"in-drawer":!0,platform:l.platform},null,8,["platform"]))]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-de75708b"]]);export{_l as default};