@smithery/cli 1.1.26 → 1.1.28

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 (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -103,7 +103,7 @@ For information on Smithery's data policy, please visit: ${y1.default.underline(
103
103
  Tool: ${a.value.name}`)),console.log(si.default.dim(`Description: ${a.value.description||"No description"}`)),console.log(si.default.cyan(`
104
104
  Input Schema:`)),console.dir(a.value.inputSchema,{depth:null,colors:!0}),console.log(`
105
105
  `);continue}else if(a.type==="prompt"){let l=await Tye(a.value.arguments);p=Dn(`Using prompt ${a.value.name}...`).start(),u=await r.getPrompt({name:a.value.name,arguments:l}).catch(c=>{p?.fail(c.message),p=void 0})}p&&p.succeed(),u&&(console.dir(u,{depth:null,colors:!0}),console.log(`
106
- `))}}catch(n){t.fail(`Failed to connect to server: ${n instanceof Error?n.message:String(n)}`),r&&await r.close(),process.exit(1)}}async function Tye(e){return!e||e.length===0?{}:wv.default.prompt(e.map(t=>({type:"text",name:t.name,message:si.default.dim(`${t.required?"* ":""}${t.name}: ${t.description}`)})))}async function AI(e){let t=Dn(`Resolving ${e}...`).start(),r=null;try{let n=await Ns(e);t.succeed(`Successfully resolved ${e}`);let i=gs(n),a=await af(i);r=new Vs({command:"npx",args:["-y","@smithery/cli@latest","run",e,"--config",JSON.stringify(JSON.stringify(a))]}),await Oye(r)}catch(n){t.fail(`Failed to inspect ${e}`),n instanceof Error?console.error(si.default.red(`Error: ${n.message}`)):console.error(si.default.red("An unexpected error occurred during inspection")),r&&await r.close(),process.exit(1)}}var qye="mcp",Jf=class{constructor(t){this._url=t}start(){if(this._socket)throw new Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((t,r)=>{this._socket=new WebSocket(this._url,qye),this._socket.onerror=n=>{var i;let a="error"in n?n.error:new Error(`WebSocket error: ${JSON.stringify(n)}`);r(a),(i=this.onerror)===null||i===void 0||i.call(this,a)},this._socket.onopen=()=>{t()},this._socket.onclose=()=>{var n;(n=this.onclose)===null||n===void 0||n.call(this)},this._socket.onmessage=n=>{var i,a;let u;try{u=kf.parse(JSON.parse(n.data))}catch(p){(i=this.onerror)===null||i===void 0||i.call(this,p);return}(a=this.onmessage)===null||a===void 0||a.call(this,u)}})}async close(){var t;(t=this._socket)===null||t===void 0||t.close()}send(t){return new Promise((r,n)=>{var i;if(!this._socket){n(new Error("Not connected"));return}(i=this._socket)===null||i===void 0||i.send(JSON.stringify(t)),r()})}};function OI(e,t){let r=new URL(e);if(t){let n=typeof window<"u"?btoa(JSON.stringify(t)):Buffer.from(JSON.stringify(t)).toString("base64");r.searchParams.set("config",n)}return r}var iwe=me($j(),1),awe=me(Wv(),1),swe=me(zv(),1),eM=me(d4(),1),owe=me(Qj(),1);var tM=eM.default;global.WebSocket=tM;var rM=3,uwe=1e3,nM=(e,t)=>{let r=`${e.replace(/^http/,"ws")}${e.endsWith("/")?"":"/"}ws`,n=OI(r,t);return new Jf(n)},iM=async(e,t)=>{let r=0,n="",i=!1,a=nM(e,t),u=(D,w)=>(console.error(`${w}:`,D.message),D),p=async D=>{if(n+=D.toString("utf8"),!i)return;let w=n.split(/\r?\n/);n=w.pop()??"";for(let T of w.filter(Boolean))try{await a.send(JSON.parse(T))}catch(S){if(S instanceof Error&&S.message.includes("CLOSED"))throw new Error("WebSocket closed");u(S,"Failed to send message")}},l=async()=>{console.error(`Connecting to WebSocket endpoint: ${e}`),a.onclose=async()=>{console.error("WebSocket connection closed"),i=!1,r++<rM?(await new Promise(D=>setTimeout(D,uwe*Math.pow(2,r))),a=nM(e,t),await l()):(console.error(`Max reconnection attempts (${rM}) reached`),process.exit(1))},a.onerror=D=>{u(D,"WebSocket connection error"),process.exit(1)},a.onmessage=D=>{try{"error"in D&&(console.error(`WebSocket error: ${JSON.stringify(D.error)}`),(D.error.message==="Missing configuration"||D.error.message==="Invalid configuration")&&process.exit(1)),console.log(JSON.stringify(D))}catch(w){u(w,"Error handling message"),console.error("Raw message data:",JSON.stringify(D)),console.log(JSON.stringify(D))}},await a.start(),i=!0,await p(Buffer.from(""))},c=async()=>{console.error("Starting cleanup..."),await a.close().catch(D=>u(D,"Error during cleanup")),console.error("Cleanup completed")},h=async()=>{console.error("Shutting down WS Runner..."),await c(),process.exit(0)};return process.on("SIGINT",h),process.on("SIGTERM",h),process.stdin.on("data",D=>p(D).catch(w=>u(w,"Error processing message"))),await l(),c};var c4=["claude","cline","windsurf","roo-cline","witsy","enconvo"];var ex="https://smithery.ai/api/track";var aM=me(O7());var sM=me(Ev()),oM=async(e,t,r)=>{let n="",i=!1,a=!1,u=null,p=(w,T)=>(console.error(`[Runner] ${T}:`,w.message),w),l=async w=>{if(n+=w.toString("utf8"),!i)return;let T=n.split(/\r?\n/);n=T.pop()??"";for(let S of T.filter(Boolean))try{let C=JSON.parse(S);if(r&&ex){let{data:q,error:P}=gv.safeParse(C);P||(0,aM.default)(ex,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"tool_call",payload:{connectionType:"stdio",serverQualifiedName:e.qualifiedName,toolParams:q?(0,sM.pick)(q.params,"name"):{}}})}).catch(U=>{console.error("[Runner] Analytics error:",U)})}await u?.send(C)}catch(C){p(C,"Failed to send message to child process")}},c=async()=>{console.error("[Runner] Starting child process setup...");let w=e.connections.find(Z=>Z.type==="stdio");if(!w)throw new Error("No STDIO connection found");let T=await gN(w,t),S=await BR(e.qualifiedName,T);if(!S||"type"in S)throw new Error("Failed to get valid stdio server configuration");let{command:C,args:q=[],env:P={}}=S,U=C,pe=q;if(process.platform==="win32")try{let Z=require("node:path");if(Z.isAbsolute(C))U=C;else{let{execSync:ee}=require("node:child_process");U=ee(`where "${C}"`,{encoding:"utf8"}).split(`\r
106
+ `))}}catch(n){t.fail(`Failed to connect to server: ${n instanceof Error?n.message:String(n)}`),r&&await r.close(),process.exit(1)}}async function Tye(e){return!e||e.length===0?{}:wv.default.prompt(e.map(t=>({type:"text",name:t.name,message:si.default.dim(`${t.required?"* ":""}${t.name}: ${t.description}`)})))}async function AI(e){let t=Dn(`Resolving ${e}...`).start(),r=null;try{let n=await Ns(e);t.succeed(`Successfully resolved ${e}`);let i=gs(n),a=await af(i);r=new Vs({command:"npx",args:["-y","@smithery/cli@latest","run",e,"--config",JSON.stringify(JSON.stringify(a))]}),await Oye(r)}catch(n){t.fail(`Failed to inspect ${e}`),n instanceof Error?console.error(si.default.red(`Error: ${n.message}`)):console.error(si.default.red("An unexpected error occurred during inspection")),r&&await r.close(),process.exit(1)}}var qye="mcp",Jf=class{constructor(t){this._url=t}start(){if(this._socket)throw new Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((t,r)=>{this._socket=new WebSocket(this._url,qye),this._socket.onerror=n=>{var i;let a="error"in n?n.error:new Error(`WebSocket error: ${JSON.stringify(n)}`);r(a),(i=this.onerror)===null||i===void 0||i.call(this,a)},this._socket.onopen=()=>{t()},this._socket.onclose=()=>{var n;(n=this.onclose)===null||n===void 0||n.call(this)},this._socket.onmessage=n=>{var i,a;let u;try{u=kf.parse(JSON.parse(n.data))}catch(p){(i=this.onerror)===null||i===void 0||i.call(this,p);return}(a=this.onmessage)===null||a===void 0||a.call(this,u)}})}async close(){var t;(t=this._socket)===null||t===void 0||t.close()}send(t){return new Promise((r,n)=>{var i;if(!this._socket){n(new Error("Not connected"));return}(i=this._socket)===null||i===void 0||i.send(JSON.stringify(t)),r()})}};function OI(e,t){let r=new URL(e);if(t){let n=typeof window<"u"?btoa(JSON.stringify(t)):Buffer.from(JSON.stringify(t)).toString("base64");r.searchParams.set("config",n)}return r}var iwe=me($j(),1),awe=me(Wv(),1),swe=me(zv(),1),eM=me(d4(),1),owe=me(Qj(),1);var tM=eM.default;global.WebSocket=tM;var rM=3,uwe=1e3,nM=(e,t)=>{let r=`${e.replace(/^http/,"ws")}${e.endsWith("/")?"":"/"}ws`,n=OI(r,t);return new Jf(n)},iM=async(e,t)=>{let r=0,n="",i=!1,a=nM(e,t),u=(D,w)=>(console.error(`${w}:`,D.message),D),p=async D=>{if(n+=D.toString("utf8"),!i)return;let w=n.split(/\r?\n/);n=w.pop()??"";for(let T of w.filter(Boolean))try{await a.send(JSON.parse(T))}catch(S){if(S instanceof Error&&S.message.includes("CLOSED"))throw new Error("WebSocket closed");u(S,"Failed to send message")}},l=async()=>{console.error(`Connecting to WebSocket endpoint: ${e}`),a.onclose=async()=>{console.error("WebSocket connection closed"),i=!1,r++<rM?(await new Promise(D=>setTimeout(D,uwe*Math.pow(2,r))),a=nM(e,t),await l()):(console.error(`Max reconnection attempts (${rM}) reached`),process.exit(1))},a.onerror=D=>{u(D,"WebSocket connection error"),process.exit(1)},a.onmessage=D=>{try{"error"in D&&(console.error(`WebSocket error: ${JSON.stringify(D.error)}`),(D.error.message==="Missing configuration"||D.error.message==="Invalid configuration")&&process.exit(1)),console.log(JSON.stringify(D))}catch(w){u(w,"Error handling message"),console.error("Raw message data:",JSON.stringify(D)),console.log(JSON.stringify(D))}},await a.start(),i=!0,console.error("WebSocket connection established successfully"),await p(Buffer.from(""))},c=async()=>{console.error("Starting cleanup..."),await a.close().catch(D=>u(D,"Error during cleanup")),console.error("Cleanup completed")},h=async()=>{console.error("Shutting down WS Runner..."),await c(),process.exit(0)};return process.on("SIGINT",h),process.on("SIGTERM",h),process.stdin.on("data",D=>p(D).catch(w=>u(w,"Error processing message"))),await l(),c};var c4=["claude","cline","windsurf","roo-cline","witsy","enconvo"];var ex="https://smithery.ai/api/track";var aM=me(O7());var sM=me(Ev()),oM=async(e,t,r)=>{let n="",i=!1,a=!1,u=null,p=(w,T)=>(console.error(`[Runner] ${T}:`,w.message),w),l=async w=>{if(n+=w.toString("utf8"),!i)return;let T=n.split(/\r?\n/);n=T.pop()??"";for(let S of T.filter(Boolean))try{let C=JSON.parse(S);if(r&&ex){let{data:q,error:P}=gv.safeParse(C);P||(0,aM.default)(ex,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"tool_call",payload:{connectionType:"stdio",serverQualifiedName:e.qualifiedName,toolParams:q?(0,sM.pick)(q.params,"name"):{}}})}).catch(U=>{console.error("[Runner] Analytics error:",U)})}await u?.send(C)}catch(C){p(C,"Failed to send message to child process")}},c=async()=>{console.error("[Runner] Starting child process setup...");let w=e.connections.find(Z=>Z.type==="stdio");if(!w)throw new Error("No STDIO connection found");let T=await gN(w,t),S=await BR(e.qualifiedName,T);if(!S||"type"in S)throw new Error("Failed to get valid stdio server configuration");let{command:C,args:q=[],env:P={}}=S,U=C,pe=q;if(process.platform==="win32")try{let Z=require("node:path");if(Z.isAbsolute(C))U=C;else{let{execSync:ee}=require("node:child_process");U=ee(`where "${C}"`,{encoding:"utf8"}).split(`\r
107
107
  `)[0].trim()}U=Z.normalize(U)}catch(Z){console.error("[Runner] Could not resolve full path for command:",C,Z),U=C}else U=C;pe=q,console.error("[Runner] Executing:",{command:U,args:pe}),u=new Vs({command:U,args:pe,env:{...yv(),...P}}),u.onmessage=Z=>{try{if("error"in Z){let ee=Z;ee.error.code!==ai.MethodNotFound&&console.error("[Runner] Child process error:",ee.error)}console.log(JSON.stringify(Z))}catch(ee){p(ee,"Error handling message")}},u.onclose=()=>{console.error("[Runner] Child process terminated"),i&&!a&&(console.error("[Runner] Process terminated unexpectedly while running"),process.exit(1)),process.exit(0)},u.onerror=Z=>{console.error("[Runner] Child process error:",Z.message),Z.message.includes("spawn")?console.error("[Runner] Failed to spawn child process - check if the command exists and is executable"):Z.message.includes("permission")&&console.error("[Runner] Permission error when running child process"),process.exit(1)},await u.start(),i=!0,await l(Buffer.from(""))},h=async()=>{console.error("[Runner] Starting cleanup..."),u&&(a=!0,await u.close(),u=null),console.error("[Runner] Cleanup completed")},D=async()=>{console.error("[Runner] Shutting down STDIO Runner..."),await h(),process.exit(0)};return process.on("SIGINT",D),process.on("SIGTERM",D),process.on("beforeExit",D),process.on("exit",()=>{console.error("[Runner] Final cleanup on exit")}),process.stdin.on("data",w=>l(w).catch(T=>p(T,"Error processing message"))),await c(),h};async function uM(e,t){try{let r=await na();r.success||console.warn("[Runner] Settings initialization warning:",r.error);let n=await Ns(e);if(!n)throw new Error(`Could not resolve server: ${e}`);console.error("[Runner] Connecting to server:",{id:n.qualifiedName,connectionTypes:n.connections.map(u=>u.type)});let a=await rf()?await mN():void 0;await pwe(n,t,a)}catch(r){console.error("[Runner] Fatal error:",r),process.exit(1)}}async function pwe(e,t,r){let n=gs(e);if(n.type==="ws"){if(!n.deploymentUrl)throw new Error("Missing deployment URL");await iM(n.deploymentUrl,t)}else if(n.type==="stdio")await oM(e,t,r);else throw new Error(`Unsupported connection type: ${n.type}`)}var tx=me(tt());var lM=process.argv[2],Ks=process.argv[3],dwe=process.argv.indexOf("--client"),pM=process.argv.indexOf("--config"),lwe=process.argv.includes("--verbose");cN(lwe);var cwe=(e,t)=>{if(e==="run"||e==="inspect")return;t===-1&&(console.error(tx.default.yellow(`Please specify a client using --client. Valid options are: ${c4.join(", ")}`)),process.exit(1));let r=process.argv[t+1];return c4.includes(r)||(console.error(tx.default.yellow(`Invalid client "${r}". Valid options are: ${c4.join(", ")}`)),process.exit(1)),r},dM=cwe(lM,dwe),fwe=pM!==-1?(()=>{let e=JSON.parse(process.argv[pM+1]);return typeof e=="string"&&(e=JSON.parse(e)),e})():{};async function mwe(){switch(lM){case"inspect":await AI(Ks);break;case"install":Ks||(console.error("Please provide a package name to install"),process.exit(1)),await mI(Ks,dM);break;case"uninstall":await hI(Ks,dM);break;case"run":Ks||(console.error("Please provide a server ID to run"),process.exit(1)),await uM(Ks,fwe);break;default:console.log("Available commands:"),console.log(" install <package> Install a package"),console.log(" --client <name> Specify the AI client"),console.log(" uninstall [package] Uninstall a package"),console.log(" installed List installed packages"),console.log(" view <package> Get details for a specific package"),console.log(" inspect Inspect installed servers"),console.log(" run <server-id> Run a server"),console.log(" --verbose Show detailed logs"),process.exit(1)}}mwe();
108
108
  /*! Bundled license information:
109
109
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithery/cli",
3
- "version": "1.1.26",
3
+ "version": "1.1.28",
4
4
  "type": "commonjs",
5
5
  "private": false,
6
6
  "homepage": "https://smithery.ai/",