You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
15 KiB
JavaScript
1 line
15 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2328],{12154:function(e,t,a){"use strict";var r,i,s=a(52846);function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e}).apply(this,arguments)}t.Z=function(e){return s.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:16,height:16,fill:"none"},e),r||(r=s.createElement("defs",null,s.createElement("path",{id:"edit_svg__a",d:"M0 0h16v16H0z"}))),s.createElement("g",null,i||(i=s.createElement("mask",{id:"edit_svg__b",fill:"#fff"},s.createElement("use",{xlinkHref:"#edit_svg__a"}))),s.createElement("g",{mask:"url(#edit_svg__b)"},s.createElement("path",{style:{stroke:"#333",strokeWidth:1.3333333333333333,strokeOpacity:1,strokeDasharray:"0 0"},d:"M2.83 0v3c0 .37-.3.67-.66.67H0",transform:"translate(10.5 11)"}),s.createElement("path",{style:{stroke:"#333",strokeWidth:1.3333333333333333,strokeOpacity:1,strokeDasharray:"0 0"},d:"M10.67 4V.67c0-.37-.3-.67-.67-.67H.67C.3 0 0 .3 0 .67v12c0 .36.3.66.67.66h2",transform:"translate(2.667 1.333)"}),s.createElement("path",{style:{stroke:"#333",strokeWidth:1.3333333333333333,strokeOpacity:1,strokeDasharray:"0 0"},d:"M0 0h4.67",transform:"translate(5.333 5.333)"}),s.createElement("path",{style:{stroke:"#333",strokeWidth:1.3333333333333333,strokeOpacity:1,strokeDasharray:"0 0"},d:"m0 7 5.67-7",transform:"translate(7.667 7.667)"}),s.createElement("path",{style:{stroke:"#333",strokeWidth:1.3333333333333333,strokeOpacity:1,strokeDasharray:"0 0"},d:"M0 0h2.67",transform:"translate(5.333 8)"}))))}},73895:function(e,t,a){"use strict";var r,i=a(52846);function s(){return(s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e}).apply(this,arguments)}t.Z=function(e){return i.createElement("svg",s({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},e),r||(r=i.createElement("rect",{x:3,y:3,width:18,height:18,rx:2,ry:2})))}},82328:function(e,t,a){"use strict";a.r(t),a.d(t,{McpMarketPage:function(){return C}});var r,i=a(57437),s=a(35499),n=a(68454),l=a(45888),o=a.n(l),c=a(12154),d=a(58870),m=a(38669),p=a(15592),u=a(98829),_=a(56073),h=a(59566),k=a(65878),v=a(59208),g=a(2265),f=a(94386),x=a(75504),y=a(52846);function j(){return(j=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e}).apply(this,arguments)}var b=function(e){return y.createElement("svg",j({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},e),r||(r=y.createElement("path",{d:"m5 3 14 9-14 9V3z"})))},w=a(73895),N=a(75591);function C(){var e;let t=(0,v.s0)(),[a,r]=(0,g.useState)(!1),[l,y]=(0,g.useState)(""),[j,C]=(0,g.useState)({}),[S,E]=(0,g.useState)(),[F,O]=(0,g.useState)(null),[L,M]=(0,g.useState)(),[Z,H]=(0,g.useState)(!1),[z,A]=(0,g.useState)(),[P,D]=(0,g.useState)({}),[W,R]=(0,g.useState)(!0),[T,X]=(0,g.useState)([]),[J,B]=(0,g.useState)({});if((0,g.useEffect)(()=>{(async()=>{let e=await (0,f.mJ)();r(e),e||t(N.y$.Home)})()},[t]),(0,g.useEffect)(()=>{if(!a||!z)return;let e=async()=>{D(await (0,f.Nv)())};e();let t=setInterval(e,1e3);return()=>clearInterval(t)},[a,z]),(0,g.useEffect)(()=>{(async()=>{if(a)try{var e;R(!0);let t=await fetch("https://nextchat.club/mcp/list");if(!t.ok)throw Error("Failed to load preset servers");let a=await t.json();X(null!==(e=null==a?void 0:a.data)&&void 0!==e?e:[])}catch(e){console.error("Failed to load preset servers:",e),(0,k.CF)("Failed to load preset servers")}finally{R(!1)}})()},[a]),(0,g.useEffect)(()=>{(async()=>{if(a)try{H(!0);let e=await (0,f.Hv)();A(e);let t=await (0,f.Nv)();D(t)}catch(e){console.error("Failed to load initial state:",e),(0,k.CF)("Failed to load initial state")}finally{H(!1)}})()},[a]),(0,g.useEffect)(()=>{if(!S||!z)return;let e=z.mcpServers[S];if(e){let t=T.find(e=>e.id===S);if(null==t?void 0:t.configSchema){let a={};Object.entries(t.argsMapping||{}).forEach(t=>{var r,i;let[s,n]=t;if("spread"===n.type){let t=null!==(r=n.position)&&void 0!==r?r:0;a[s]=e.args.slice(t)}else"single"===n.type?a[s]=e.args[null!==(i=n.position)&&void 0!==i?i:0]:"env"===n.type&&n.key&&e.env&&(a[s]=e.env[n.key])}),C(a)}}else C({})},[S,z,T]),!a)return null;let I=e=>{var t;return e in(null!==(t=null==z?void 0:z.mcpServers)&&void 0!==t?t:{})},Q=async()=>{let e=T.find(e=>e.id===S);if(e&&e.configSchema&&S){E(void 0);try{G(S,"Updating configuration...");let t=[...e.baseArgs],a={};Object.entries(e.argsMapping||{}).forEach(e=>{let[r,i]=e,s=j[r];if("spread"===i.type&&Array.isArray(s)){var n;let e=null!==(n=i.position)&&void 0!==n?n:0;t.splice(e,0,...s)}else"single"===i.type&&void 0!==i.position?t[i.position]=s:"env"===i.type&&i.key&&"string"==typeof s&&(a[i.key]=s)});let r={command:e.command,args:t,...Object.keys(a).length>0?{env:a}:{}},i=await (0,f.uy)(S,r);A(i),(0,k.CF)("Server configuration updated successfully")}catch(e){(0,k.CF)(e instanceof Error?e.message:"Failed to save configuration")}finally{G(S,null)}}},Y=async e=>{try{let t=await (0,f.Fu)(e);if(t)O(t);else throw Error("Failed to load tools")}catch(e){(0,k.CF)("Failed to load tools"),console.error(e),O(null)}},G=(e,t)=>{B(a=>{if(null===t){let{[e]:t,...r}=a;return r}return{...a,[e]:t}})},V=async e=>{if(e.configurable)E(e.id),C({});else try{let t=e.id;G(t,"Creating MCP client...");let a={command:e.command,args:[...e.baseArgs]},r=await (0,f.uy)(e.id,a);A(r);let i=await (0,f.Nv)();D(i)}finally{G(e.id,null)}},K=async e=>{try{G(e,"Stopping server...");let t=await (0,f.cP)(e);A(t),(0,k.CF)("Server stopped successfully")}catch(e){(0,k.CF)("Failed to stop server"),console.error(e)}finally{G(e,null)}},U=async e=>{try{G(e,"Starting server..."),await (0,f.XG)(e)}catch(e){(0,k.CF)(e instanceof Error?e.message:"Failed to start server, please check logs"),console.error(e)}finally{G(e,null)}},q=async()=>{try{G("all","Restarting all servers...");let e=await (0,f.wg)();A(e),(0,k.CF)("Restarting all clients")}catch(e){(0,k.CF)("Failed to restart clients"),console.error(e)}finally{G("all",null)}},$=e=>P[e]||{status:"undefined",errorMsg:null},ee=e=>{let t=$(e);return({undefined:null,initializing:(0,i.jsx)("span",{className:(0,x.Z)(o()["server-status"],o().initializing),children:"Initializing"}),paused:(0,i.jsx)("span",{className:(0,x.Z)(o()["server-status"],o().stopped),children:"Stopped"}),active:(0,i.jsx)("span",{className:o()["server-status"],children:"Running"}),error:(0,i.jsxs)("span",{className:(0,x.Z)(o()["server-status"],o().error),children:["Error",(0,i.jsxs)("span",{className:o()["error-message"],children:[": ",t.errorMsg]})]})})[t.status]},et=e=>e.toLowerCase().includes("stopping")?"stopping":e.toLowerCase().includes("starting")?"starting":e.toLowerCase().includes("error")?"error":"default";return(0,i.jsx)(n.S,{children:(0,i.jsxs)("div",{className:o()["mcp-market-page"],children:[(0,i.jsxs)("div",{className:"window-header",children:[(0,i.jsxs)("div",{className:"window-header-title",children:[(0,i.jsxs)("div",{className:"window-header-main-title",children:["MCP Market",J.all&&(0,i.jsx)("span",{className:o()["loading-indicator"],children:J.all})]}),(0,i.jsxs)("div",{className:"window-header-sub-title",children:[Object.keys(null!==(e=null==z?void 0:z.mcpServers)&&void 0!==e?e:{}).length," servers configured"]})]}),(0,i.jsxs)("div",{className:"window-actions",children:[(0,i.jsx)("div",{className:"window-action-button",children:(0,i.jsx)(s.h,{icon:(0,i.jsx)(u.Z,{}),bordered:!0,onClick:q,text:"Restart All",disabled:Z})}),(0,i.jsx)("div",{className:"window-action-button",children:(0,i.jsx)(s.h,{icon:(0,i.jsx)(m.Z,{}),bordered:!0,onClick:()=>t(-1),disabled:Z})})]})]}),(0,i.jsxs)("div",{className:o()["mcp-market-page-body"],children:[(0,i.jsx)("div",{className:o()["mcp-market-filter"],children:(0,i.jsx)("input",{type:"text",className:o()["search-bar"],placeholder:"Search MCP Server",autoFocus:!0,onInput:e=>y(e.currentTarget.value)})}),(0,i.jsx)("div",{className:o()["server-list"],children:W?(0,i.jsx)("div",{className:o()["loading-container"],children:(0,i.jsx)("div",{className:o()["loading-text"],children:"Loading preset server list..."})}):Array.isArray(T)&&0!==T.length?T.filter(e=>{if(0===l.length)return!0;let t=l.toLowerCase();return e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.tags.some(e=>e.toLowerCase().includes(t))}).sort((e,t)=>{let a=$(e.id).status,r=$(t.id).status,i=J[e.id],s=J[t.id],n={error:0,active:1,initializing:2,starting:3,stopping:4,paused:5,undefined:6},l=(e,t)=>{if(t){let a=et(t);return"default"===a?e:a}return"initializing"!==e||t?e:"active"},o=l(a,i),c=l(r,s);if(o!==c){var d,m;return(null!==(d=n[o])&&void 0!==d?d:6)-(null!==(m=n[c])&&void 0!==m?m:6)}return e.name.localeCompare(t.name)}).map(e=>(0,i.jsx)("div",{className:(0,x.Z)(o()["mcp-market-item"],{[o().loading]:J[e.id]}),children:(0,i.jsxs)("div",{className:o()["mcp-market-header"],children:[(0,i.jsxs)("div",{className:o()["mcp-market-title"],children:[(0,i.jsxs)("div",{className:o()["mcp-market-name"],children:[e.name,J[e.id]&&(0,i.jsx)("span",{className:o()["operation-status"],"data-status":et(J[e.id]),children:J[e.id]}),!J[e.id]&&ee(e.id),e.repo&&(0,i.jsx)("a",{href:e.repo,target:"_blank",rel:"noopener noreferrer",className:o()["repo-link"],title:"Open repository",children:(0,i.jsx)(h.Z,{})})]}),(0,i.jsx)("div",{className:o()["tags-container"],children:e.tags.map((e,t)=>(0,i.jsx)("span",{className:o().tag,children:e},t))}),(0,i.jsx)("div",{className:(0,x.Z)(o()["mcp-market-info"],"one-line"),title:e.description,children:e.description})]}),(0,i.jsx)("div",{className:o()["mcp-market-actions"],children:I(e.id)?(0,i.jsxs)(i.Fragment,{children:[e.configurable&&(0,i.jsx)(s.h,{icon:(0,i.jsx)(c.Z,{}),text:"Configure",onClick:()=>E(e.id),disabled:Z}),"paused"===$(e.id).status?(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(s.h,{icon:(0,i.jsx)(b,{}),text:"Start",onClick:()=>U(e.id),disabled:Z})}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h,{icon:(0,i.jsx)(_.Z,{}),text:"Tools",onClick:async()=>{M(e.id),await Y(e.id)},disabled:Z||"error"===$(e.id).status}),(0,i.jsx)(s.h,{icon:(0,i.jsx)(w.Z,{}),text:"Stop",onClick:()=>K(e.id),disabled:Z})]})]}):(0,i.jsx)(s.h,{icon:(0,i.jsx)(d.Z,{}),text:"Add",onClick:()=>V(e),disabled:Z})})]})},e.id)):(0,i.jsx)("div",{className:o()["empty-container"],children:(0,i.jsx)("div",{className:o()["empty-text"],children:"No servers available"})})})]}),S&&(0,i.jsx)("div",{className:"modal-mask",children:(0,i.jsx)(k.u_,{title:"Configure Server - ".concat(S),onClose:()=>!Z&&E(void 0),actions:[(0,i.jsx)(s.h,{text:"Cancel",onClick:()=>E(void 0),bordered:!0,disabled:Z},"cancel"),(0,i.jsx)(s.h,{text:"Save",type:"primary",onClick:Q,bordered:!0,disabled:Z},"confirm")],children:(0,i.jsx)(k.aV,{children:(()=>{let e=T.find(e=>e.id===S);return(null==e?void 0:e.configSchema)?Object.entries(e.configSchema.properties).map(e=>{let[t,a]=e;if("array"===a.type){let e=j[t]||[],r=a.itemLabel||t,n=a.addButtonText||"Add ".concat(r);return(0,i.jsx)(k.HC,{title:t,subTitle:a.description,vertical:!0,children:(0,i.jsxs)("div",{className:o()["path-list"],children:[e.map((a,n)=>(0,i.jsxs)("div",{className:o()["path-item"],children:[(0,i.jsx)("input",{type:"text",value:a,placeholder:"".concat(r," ").concat(n+1),onChange:a=>{let r=[...e];r[n]=a.target.value,C({...j,[t]:r})}}),(0,i.jsx)(s.h,{icon:(0,i.jsx)(p.Z,{}),className:o()["delete-button"],onClick:()=>{let a=[...e];a.splice(n,1),C({...j,[t]:a})}})]},n)),(0,i.jsx)(s.h,{icon:(0,i.jsx)(d.Z,{}),text:n,className:o()["add-button"],bordered:!0,onClick:()=>{let a=[...e,""];C({...j,[t]:a})}})]})},t)}if("string"===a.type){let e=j[t]||"";return(0,i.jsx)(k.HC,{title:t,subTitle:a.description,children:(0,i.jsx)("input",{"aria-label":t,type:"text",value:e,placeholder:"Enter ".concat(t),onChange:e=>{C({...j,[t]:e.target.value})}})},t)}return null}):null})()})})}),L&&(0,i.jsx)("div",{className:"modal-mask",children:(0,i.jsx)(k.u_,{title:"Server Details - ".concat(L),onClose:()=>M(void 0),actions:[(0,i.jsx)(s.h,{text:"Close",onClick:()=>M(void 0),bordered:!0},"close")],children:(0,i.jsx)("div",{className:o()["tools-list"],children:Z?(0,i.jsx)("div",{children:"Loading..."}):(null==F?void 0:F.tools)?F.tools.map((e,t)=>(0,i.jsxs)("div",{className:o()["tool-item"],children:[(0,i.jsx)("div",{className:o()["tool-name"],children:e.name}),(0,i.jsx)("div",{className:o()["tool-description"],children:e.description})]},t)):(0,i.jsx)("div",{children:"No tools available"})})})})]})})}},45888:function(e){e.exports={"mcp-market-page":"mcp-market_mcp-market-page__XToZ1","loading-indicator":"mcp-market_loading-indicator__t6Twk","mcp-market-page-body":"mcp-market_mcp-market-page-body__FSplB","loading-container":"mcp-market_loading-container__Zy_bH","empty-container":"mcp-market_empty-container__2JdB1","slide-in":"mcp-market_slide-in__aSg7f","loading-text":"mcp-market_loading-text__G6uSy","empty-text":"mcp-market_empty-text__7veyE","mcp-market-filter":"mcp-market_mcp-market-filter__v_4MF","search-bar":"mcp-market_search-bar__z5iDx","server-list":"mcp-market_server-list__58CoO","mcp-market-item":"mcp-market_mcp-market-item___LHO4",disabled:"mcp-market_disabled__DodaP",loading:"mcp-market_loading__f0EfV","loading-pulse":"mcp-market_loading-pulse__L_XIf","operation-status":"mcp-market_operation-status__YyRkc",pulse:"mcp-market_pulse__YezWQ","mcp-market-header":"mcp-market_mcp-market-header__rMIdP","mcp-market-title":"mcp-market_mcp-market-title__QtKbv","mcp-market-name":"mcp-market_mcp-market-name__YHmNi","server-status":"mcp-market_server-status__RjHMq",error:"mcp-market_error__LHFLR",stopped:"mcp-market_stopped__dumPm",initializing:"mcp-market_initializing__klKc7","error-message":"mcp-market_error-message__dGlZy","repo-link":"mcp-market_repo-link__2Jlad","tags-container":"mcp-market_tags-container__N64r3",tag:"mcp-market_tag__Ysj4O","mcp-market-info":"mcp-market_mcp-market-info__dgxmq","mcp-market-actions":"mcp-market_mcp-market-actions__1abJs","array-input":"mcp-market_array-input__XaQoz","array-input-item":"mcp-market_array-input-item__GRLdd","path-list":"mcp-market_path-list__EiVuG","path-item":"mcp-market_path-item___e3nX","browse-button":"mcp-market_browse-button__iXLiA","delete-button":"mcp-market_delete-button__fl3ON","file-input":"mcp-market_file-input__O80Q7","add-button":"mcp-market_add-button__UKmfQ","config-section":"mcp-market_config-section__5uu1x","config-header":"mcp-market_config-header___AKhQ","config-title":"mcp-market_config-title__dJBY3","config-description":"mcp-market_config-description__fbs6P","input-item":"mcp-market_input-item__A3T4M","tools-list":"mcp-market_tools-list__nxaFU","tool-item":"mcp-market_tool-item__SJ_03","tool-name":"mcp-market_tool-name__WNDg4","tool-description":"mcp-market_tool-description__NJXdy","slide-in-from-top":"mcp-market_slide-in-from-top__eNanY"}}}]); |