1import{r as o}from"./react-vendor-DbzdS4FP.js";import{f as E,u as _,k as i}from"./index-kSfDswZP.js";import{h as q}from"./harness-B4JVY2Eg.js";import{u as x}from"./i18n-vendor-BrUIoOSg.js";import"./ui-vendor-DCtmHMLE.js";import"./markdown-vendor-DonjKQI4.js";import"./dnd-vendor-DdAwup11.js";function z(){var y;const{t:e}=x(),{selectedAgent:d,agents:g}=E(),n=g.find(r=>r.id===d),u=(n==null?void 0:n.backend)??"qwenpaw",m=!!((y=n==null?void 0:n.backend_capabilities)!=null&&y.provider_mcp_discovery),[w,P]=o.useState([]),[f,p]=o.useState([]),[v,C]=o.useState(!1),{message:s}=_(),t=o.useCallback(async()=>{C(!0);try{const r=await i.listMCPClients();if(P(r),u!=="qwenpaw"&&m)try{const a=await q.listMCP(u);p(a.servers),a.message&&s.warning(a.message)}catch(a){console.warn("Failed to discover Provider MCP servers:",a),p([])}else p([])}catch(r){console.error("Failed to load MCP clients:",r),s.error(e("mcp.loadError"))}finally{C(!1)}},[m,s,u,e]);o.useEffect(()=>{t()},[t,d]);const M=o.useCallback(async(r,a)=>{try{return await i.createMCPClient({client_key:r,client:a}),s.success(e("mcp.createSuccess")),await t(),!0}catch(c){const l=(c==null?void 0:c.message)||e("mcp.createError");return s.error(l),!1}},[s,e,t]),b=o.useCallback(async(r,a)=>{try{return await i.updateMCPClient(r,a),s.success(e("mcp.updateSuccess")),await t(),!0}catch(c){const l=(c==null?void 0:c.message)||e("mcp.updateError");return s.error(l),!1}},[s,e,t]),k=o.useCallback(async r=>{try{await i.toggleMCPClient(r.key),s.success(r.enabled?e("mcp.disableSuccess"):e("mcp.enableSuccess")),await t()}catch{s.error(e("mcp.toggleError"))}},[s,e,t]),S=o.useCallback(async r=>{try{await i.deleteMCPClient(r.key),s.success(e("mcp.deleteSuccess")),await t()}catch{s.error(e("mcp.deleteError"))}},[s,e,t]),h=o.useCallback(async(r,a)=>{try{return await i.updateMCPPolicy(r,a),s.success(e("mcp.access.saveSuccess")),await t(),!0}catch(c){const l=(c==null?void 0:c.message)||e("mcp.access.saveError");return s.error(l),!1}},[s,e,t]);return{clients:w,providerServers:f,loading:v,createClient:M,updateClient:b,updatePolicy:h,toggleEnabled:k,deleteClient:S,refreshClients:t}}export{z as useMCP};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.