@f2c/mcp 0.2.2 → 0.2.5

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.
package/dist/cli.mjs ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import{z as n}from"zod";var ye="2025-03-26",Ie=[ye,"2024-11-05","2024-10-07"],H="2.0",Me=n.union([n.string(),n.number().int()]),Le=n.string(),zt=n.object({progressToken:n.optional(Me)}).passthrough(),P=n.object({_meta:n.optional(zt)}).passthrough(),S=n.object({method:n.string(),params:n.optional(P)}),I=n.object({_meta:n.optional(n.object({}).passthrough())}).passthrough(),E=n.object({method:n.string(),params:n.optional(I)}),T=n.object({_meta:n.optional(n.object({}).passthrough())}).passthrough(),$=n.union([n.string(),n.number().int()]),De=n.object({jsonrpc:n.literal(H),id:$}).merge(S).strict(),He=o=>De.safeParse(o).success,$e=n.object({jsonrpc:n.literal(H)}).merge(E).strict(),qe=o=>$e.safeParse(o).success,Ze=n.object({jsonrpc:n.literal(H),id:$,result:T}).strict(),be=o=>Ze.safeParse(o).success,g;(function(o){o[o.ConnectionClosed=-32e3]="ConnectionClosed",o[o.RequestTimeout=-32001]="RequestTimeout",o[o.ParseError=-32700]="ParseError",o[o.InvalidRequest=-32600]="InvalidRequest",o[o.MethodNotFound=-32601]="MethodNotFound",o[o.InvalidParams=-32602]="InvalidParams",o[o.InternalError=-32603]="InternalError"})(g||(g={}));var Fe=n.object({jsonrpc:n.literal(H),id:$,error:n.object({code:n.number().int(),message:n.string(),data:n.optional(n.unknown())})}).strict(),ze=o=>Fe.safeParse(o).success,Ue=n.union([De,$e,Ze,Fe]),q=T.strict(),Z=E.extend({method:n.literal("notifications/cancelled"),params:I.extend({requestId:$,reason:n.string().optional()})}),Ve=n.object({name:n.string(),version:n.string()}).passthrough(),Ut=n.object({experimental:n.optional(n.object({}).passthrough()),sampling:n.optional(n.object({}).passthrough()),roots:n.optional(n.object({listChanged:n.optional(n.boolean())}).passthrough())}).passthrough(),_e=S.extend({method:n.literal("initialize"),params:P.extend({protocolVersion:n.string(),capabilities:Ut,clientInfo:Ve})});var Vt=n.object({experimental:n.optional(n.object({}).passthrough()),logging:n.optional(n.object({}).passthrough()),completions:n.optional(n.object({}).passthrough()),prompts:n.optional(n.object({listChanged:n.optional(n.boolean())}).passthrough()),resources:n.optional(n.object({subscribe:n.optional(n.boolean()),listChanged:n.optional(n.boolean())}).passthrough()),tools:n.optional(n.object({listChanged:n.optional(n.boolean())}).passthrough())}).passthrough(),Gt=T.extend({protocolVersion:n.string(),capabilities:Vt,serverInfo:Ve,instructions:n.optional(n.string())}),xe=E.extend({method:n.literal("notifications/initialized")});var F=S.extend({method:n.literal("ping")}),Jt=n.object({progress:n.number(),total:n.optional(n.number())}).passthrough(),z=E.extend({method:n.literal("notifications/progress"),params:I.merge(Jt).extend({progressToken:Me})}),U=S.extend({params:P.extend({cursor:n.optional(Le)}).optional()}),V=T.extend({nextCursor:n.optional(Le)}),Ge=n.object({uri:n.string(),mimeType:n.optional(n.string())}).passthrough(),Je=Ge.extend({text:n.string()}),Ke=Ge.extend({blob:n.string().base64()}),Kt=n.object({uri:n.string(),name:n.string(),description:n.optional(n.string()),mimeType:n.optional(n.string())}).passthrough(),Bt=n.object({uriTemplate:n.string(),name:n.string(),description:n.optional(n.string()),mimeType:n.optional(n.string())}).passthrough(),G=U.extend({method:n.literal("resources/list")}),Xt=V.extend({resources:n.array(Kt)}),J=U.extend({method:n.literal("resources/templates/list")}),Wt=V.extend({resourceTemplates:n.array(Bt)}),K=S.extend({method:n.literal("resources/read"),params:P.extend({uri:n.string()})}),Yt=T.extend({contents:n.array(n.union([Je,Ke]))}),Qt=E.extend({method:n.literal("notifications/resources/list_changed")}),er=S.extend({method:n.literal("resources/subscribe"),params:P.extend({uri:n.string()})}),tr=S.extend({method:n.literal("resources/unsubscribe"),params:P.extend({uri:n.string()})}),rr=E.extend({method:n.literal("notifications/resources/updated"),params:I.extend({uri:n.string()})}),or=n.object({name:n.string(),description:n.optional(n.string()),required:n.optional(n.boolean())}).passthrough(),nr=n.object({name:n.string(),description:n.optional(n.string()),arguments:n.optional(n.array(or))}).passthrough(),B=U.extend({method:n.literal("prompts/list")}),sr=V.extend({prompts:n.array(nr)}),X=S.extend({method:n.literal("prompts/get"),params:P.extend({name:n.string(),arguments:n.optional(n.record(n.string()))})}),W=n.object({type:n.literal("text"),text:n.string()}).passthrough(),Y=n.object({type:n.literal("image"),data:n.string().base64(),mimeType:n.string()}).passthrough(),Q=n.object({type:n.literal("audio"),data:n.string().base64(),mimeType:n.string()}).passthrough(),Be=n.object({type:n.literal("resource"),resource:n.union([Je,Ke])}).passthrough(),ar=n.object({role:n.enum(["user","assistant"]),content:n.union([W,Y,Q,Be])}).passthrough(),ir=T.extend({description:n.optional(n.string()),messages:n.array(ar)}),lr=E.extend({method:n.literal("notifications/prompts/list_changed")}),cr=n.object({title:n.optional(n.string()),readOnlyHint:n.optional(n.boolean()),destructiveHint:n.optional(n.boolean()),idempotentHint:n.optional(n.boolean()),openWorldHint:n.optional(n.boolean())}).passthrough(),pr=n.object({name:n.string(),description:n.optional(n.string()),inputSchema:n.object({type:n.literal("object"),properties:n.optional(n.object({}).passthrough())}).passthrough(),annotations:n.optional(cr)}).passthrough(),ee=U.extend({method:n.literal("tools/list")}),ur=V.extend({tools:n.array(pr)}),Xe=T.extend({content:n.array(n.union([W,Y,Q,Be])),isError:n.boolean().default(!1).optional()}),Ur=Xe.or(T.extend({toolResult:n.unknown()})),te=S.extend({method:n.literal("tools/call"),params:P.extend({name:n.string(),arguments:n.optional(n.record(n.unknown()))})}),mr=E.extend({method:n.literal("notifications/tools/list_changed")}),We=n.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),dr=S.extend({method:n.literal("logging/setLevel"),params:P.extend({level:We})}),fr=E.extend({method:n.literal("notifications/message"),params:I.extend({level:We,logger:n.optional(n.string()),data:n.unknown()})}),hr=n.object({name:n.string().optional()}).passthrough(),gr=n.object({hints:n.optional(n.array(hr)),costPriority:n.optional(n.number().min(0).max(1)),speedPriority:n.optional(n.number().min(0).max(1)),intelligencePriority:n.optional(n.number().min(0).max(1))}).passthrough(),yr=n.object({role:n.enum(["user","assistant"]),content:n.union([W,Y,Q])}).passthrough(),br=S.extend({method:n.literal("sampling/createMessage"),params:P.extend({messages:n.array(yr),systemPrompt:n.optional(n.string()),includeContext:n.optional(n.enum(["none","thisServer","allServers"])),temperature:n.optional(n.number()),maxTokens:n.number().int(),stopSequences:n.optional(n.array(n.string())),metadata:n.optional(n.object({}).passthrough()),modelPreferences:n.optional(gr)})}),ve=T.extend({model:n.string(),stopReason:n.optional(n.enum(["endTurn","stopSequence","maxTokens"]).or(n.string())),role:n.enum(["user","assistant"]),content:n.discriminatedUnion("type",[W,Y,Q])}),_r=n.object({type:n.literal("ref/resource"),uri:n.string()}).passthrough(),xr=n.object({type:n.literal("ref/prompt"),name:n.string()}).passthrough(),re=S.extend({method:n.literal("completion/complete"),params:P.extend({ref:n.union([xr,_r]),argument:n.object({name:n.string(),value:n.string()}).passthrough()})}),vr=T.extend({completion:n.object({values:n.array(n.string()).max(100),total:n.optional(n.number().int()),hasMore:n.optional(n.boolean())}).passthrough()}),Sr=n.object({uri:n.string().startsWith("file://"),name:n.optional(n.string())}).passthrough(),Rr=S.extend({method:n.literal("roots/list")}),Se=T.extend({roots:n.array(Sr)}),Pr=E.extend({method:n.literal("notifications/roots/list_changed")}),Vr=n.union([F,_e,re,dr,X,B,G,J,K,er,tr,te,ee]),Gr=n.union([Z,z,xe,Pr]),Jr=n.union([q,ve,Se]),Kr=n.union([F,br,Rr]),Br=n.union([Z,z,fr,rr,Qt,mr,lr]),Xr=n.union([q,Gt,vr,ir,sr,Xt,Wt,Yt,Xe,ur]),b=class extends Error{constructor(e,t,r){super(`MCP error ${e}: ${t}`),this.code=e,this.data=r,this.name="McpError"}};var Tr=6e4,oe=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this.setNotificationHandler(Z,t=>{let r=this._requestHandlerAbortControllers.get(t.params.requestId);r?.abort(t.params.reason)}),this.setNotificationHandler(z,t=>{this._onprogress(t)}),this.setRequestHandler(F,t=>({}))}_setupTimeout(e,t,r,s,l=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(s,t),startTime:Date.now(),timeout:t,maxTotalTimeout:r,resetTimeoutOnProgress:l,onTimeout:s})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let r=Date.now()-t.startTime;if(t.maxTotalTimeout&&r>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new b(g.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:r});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e,this._transport.onclose=()=>{this._onclose()},this._transport.onerror=t=>{this._onerror(t)},this._transport.onmessage=(t,r)=>{be(t)||ze(t)?this._onresponse(t):He(t)?this._onrequest(t,r):qe(t)?this._onnotification(t):this._onerror(new Error(`Unknown message type: ${JSON.stringify(t)}`))},await this._transport.start()}_onclose(){var e;let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let r=new b(g.ConnectionClosed,"Connection closed");for(let s of t.values())s(r)}_onerror(e){var t;(t=this.onerror)===null||t===void 0||t.call(this,e)}_onnotification(e){var t;let r=(t=this._notificationHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(e)).catch(s=>this._onerror(new Error(`Uncaught error in notification handler: ${s}`)))}_onrequest(e,t){var r,s,l,a;let i=(r=this._requestHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackRequestHandler;if(i===void 0){(s=this._transport)===null||s===void 0||s.send({jsonrpc:"2.0",id:e.id,error:{code:g.MethodNotFound,message:"Method not found"}}).catch(h=>this._onerror(new Error(`Failed to send an error response: ${h}`)));return}let c=new AbortController;this._requestHandlerAbortControllers.set(e.id,c);let _={signal:c.signal,sessionId:(l=this._transport)===null||l===void 0?void 0:l.sessionId,_meta:(a=e.params)===null||a===void 0?void 0:a._meta,sendNotification:h=>this.notification(h,{relatedRequestId:e.id}),sendRequest:(h,v,j)=>this.request(h,v,{...j,relatedRequestId:e.id}),authInfo:t?.authInfo,requestId:e.id};Promise.resolve().then(()=>i(e,_)).then(h=>{var v;if(!c.signal.aborted)return(v=this._transport)===null||v===void 0?void 0:v.send({result:h,jsonrpc:"2.0",id:e.id})},h=>{var v,j;if(!c.signal.aborted)return(v=this._transport)===null||v===void 0?void 0:v.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(h.code)?h.code:g.InternalError,message:(j=h.message)!==null&&j!==void 0?j:"Internal error"}})}).catch(h=>this._onerror(new Error(`Failed to send response: ${h}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...r}=e.params,s=Number(t),l=this._progressHandlers.get(s);if(!l){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(s),i=this._timeoutInfo.get(s);if(i&&a&&i.resetTimeoutOnProgress)try{this._resetTimeout(s)}catch(c){a(c);return}l(r)}_onresponse(e){let t=Number(e.id),r=this._responseHandlers.get(t);if(r===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(t),this._progressHandlers.delete(t),this._cleanupTimeout(t),be(e))r(e);else{let s=new b(e.error.code,e.error.message,e.error.data);r(s)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,t,r){let{relatedRequestId:s,resumptionToken:l,onresumptiontoken:a}=r??{};return new Promise((i,c)=>{var _,h,v,j,ge;if(!this._transport){c(new Error("Not connected"));return}((_=this._options)===null||_===void 0?void 0:_.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(h=r?.signal)===null||h===void 0||h.throwIfAborted();let C=this._requestMessageId++,Ae={...e,jsonrpc:"2.0",id:C};r?.onprogress&&(this._progressHandlers.set(C,r.onprogress),Ae.params={...e.params,_meta:{progressToken:C}});let Oe=R=>{var A;this._responseHandlers.delete(C),this._progressHandlers.delete(C),this._cleanupTimeout(C),(A=this._transport)===null||A===void 0||A.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:C,reason:String(R)}},{relatedRequestId:s,resumptionToken:l,onresumptiontoken:a}).catch(N=>this._onerror(new Error(`Failed to send cancellation: ${N}`))),c(R)};this._responseHandlers.set(C,R=>{var A;if(!(!((A=r?.signal)===null||A===void 0)&&A.aborted)){if(R instanceof Error)return c(R);try{let N=t.parse(R.result);i(N)}catch(N){c(N)}}}),(v=r?.signal)===null||v===void 0||v.addEventListener("abort",()=>{var R;Oe((R=r?.signal)===null||R===void 0?void 0:R.reason)});let Ne=(j=r?.timeout)!==null&&j!==void 0?j:Tr,Ft=()=>Oe(new b(g.RequestTimeout,"Request timed out",{timeout:Ne}));this._setupTimeout(C,Ne,r?.maxTotalTimeout,Ft,(ge=r?.resetTimeoutOnProgress)!==null&&ge!==void 0?ge:!1),this._transport.send(Ae,{relatedRequestId:s,resumptionToken:l,onresumptiontoken:a}).catch(R=>{this._cleanupTimeout(C),c(R)})})}async notification(e,t){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(e.method);let r={...e,jsonrpc:"2.0"};await this._transport.send(r,t)}setRequestHandler(e,t){let r=e.shape.method.value;this.assertRequestHandlerCapability(r),this._requestHandlers.set(r,(s,l)=>Promise.resolve(t(e.parse(s),l)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){this._notificationHandlers.set(e.shape.method.value,r=>Promise.resolve(t(e.parse(r))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function Ye(o,e){return Object.entries(e).reduce((t,[r,s])=>(s&&typeof s=="object"?t[r]=t[r]?{...t[r],...s}:s:t[r]=s,t),{...o})}var ne=class extends oe{constructor(e,t){var r;super(t),this._serverInfo=e,this._capabilities=(r=t?.capabilities)!==null&&r!==void 0?r:{},this._instructions=t?.instructions,this.setRequestHandler(_e,s=>this._oninitialize(s)),this.setNotificationHandler(xe,()=>{var s;return(s=this.oninitialized)===null||s===void 0?void 0:s.call(this)})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Ye(this._capabilities,e)}assertCapabilityForMethod(e){var t,r;switch(e){case"sampling/createMessage":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"roots/list":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Ie.includes(t)?t:ye,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},q)}async createMessage(e,t){return this.request({method:"sampling/createMessage",params:e},ve,t)}async listRoots(e,t){return this.request({method:"roots/list",params:e},Se,t)}async sendLoggingMessage(e){return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var et=Symbol("Let zodToJsonSchema decide on which parser to use");var Qe={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"},tt=o=>typeof o=="string"?{...Qe,name:o}:{...Qe,...o};var rt=o=>{let e=tt(o),t=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return{...e,currentPath:t,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([r,s])=>[s._def,{def:s._def,path:[...e.basePath,e.definitionPath,r],jsonSchema:void 0}]))}};function Re(o,e,t,r){r?.errorMessages&&t&&(o.errorMessage={...o.errorMessage,[e]:t})}function f(o,e,t,r,s){o[e]=t,Re(o,e,r,s)}import{ZodFirstPartyTypeKind as d}from"zod";function ot(){return{}}import{ZodFirstPartyTypeKind as wr}from"zod";function nt(o,e){let t={type:"array"};return o.type?._def&&o.type?._def?.typeName!==wr.ZodAny&&(t.items=m(o.type._def,{...e,currentPath:[...e.currentPath,"items"]})),o.minLength&&f(t,"minItems",o.minLength.value,o.minLength.message,e),o.maxLength&&f(t,"maxItems",o.maxLength.value,o.maxLength.message,e),o.exactLength&&(f(t,"minItems",o.exactLength.value,o.exactLength.message,e),f(t,"maxItems",o.exactLength.value,o.exactLength.message,e)),t}function st(o,e){let t={type:"integer",format:"int64"};if(!o.checks)return t;for(let r of o.checks)switch(r.kind){case"min":e.target==="jsonSchema7"?r.inclusive?f(t,"minimum",r.value,r.message,e):f(t,"exclusiveMinimum",r.value,r.message,e):(r.inclusive||(t.exclusiveMinimum=!0),f(t,"minimum",r.value,r.message,e));break;case"max":e.target==="jsonSchema7"?r.inclusive?f(t,"maximum",r.value,r.message,e):f(t,"exclusiveMaximum",r.value,r.message,e):(r.inclusive||(t.exclusiveMaximum=!0),f(t,"maximum",r.value,r.message,e));break;case"multipleOf":f(t,"multipleOf",r.value,r.message,e);break}return t}function at(){return{type:"boolean"}}function se(o,e){return m(o.type._def,e)}var it=(o,e)=>m(o.innerType._def,e);function Pe(o,e,t){let r=t??e.dateStrategy;if(Array.isArray(r))return{anyOf:r.map((s,l)=>Pe(o,e,s))};switch(r){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return kr(o,e)}}var kr=(o,e)=>{let t={type:"integer",format:"unix-time"};if(e.target==="openApi3")return t;for(let r of o.checks)switch(r.kind){case"min":f(t,"minimum",r.value,r.message,e);break;case"max":f(t,"maximum",r.value,r.message,e);break}return t};function lt(o,e){return{...m(o.innerType._def,e),default:o.defaultValue()}}function ct(o,e){return e.effectStrategy==="input"?m(o.schema._def,e):{}}function pt(o){return{type:"string",enum:Array.from(o.values)}}var Cr=o=>"type"in o&&o.type==="string"?!1:"allOf"in o;function ut(o,e){let t=[m(o.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),m(o.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(l=>!!l),r=e.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,s=[];return t.forEach(l=>{if(Cr(l))s.push(...l.allOf),l.unevaluatedProperties===void 0&&(r=void 0);else{let a=l;if("additionalProperties"in l&&l.additionalProperties===!1){let{additionalProperties:i,...c}=l;a=c}else r=void 0;s.push(a)}}),s.length?{allOf:s,...r}:void 0}function mt(o,e){let t=typeof o.value;return t!=="bigint"&&t!=="number"&&t!=="boolean"&&t!=="string"?{type:Array.isArray(o.value)?"array":"object"}:e.target==="openApi3"?{type:t==="bigint"?"integer":t,enum:[o.value]}:{type:t==="bigint"?"integer":t,const:o.value}}import{ZodFirstPartyTypeKind as M}from"zod";var Te,w={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Te===void 0&&(Te=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Te),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function ae(o,e){let t={type:"string"};if(o.checks)for(let r of o.checks)switch(r.kind){case"min":f(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,r.value):r.value,r.message,e);break;case"max":f(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,r.value):r.value,r.message,e);break;case"email":switch(e.emailStrategy){case"format:email":k(t,"email",r.message,e);break;case"format:idn-email":k(t,"idn-email",r.message,e);break;case"pattern:zod":x(t,w.email,r.message,e);break}break;case"url":k(t,"uri",r.message,e);break;case"uuid":k(t,"uuid",r.message,e);break;case"regex":x(t,r.regex,r.message,e);break;case"cuid":x(t,w.cuid,r.message,e);break;case"cuid2":x(t,w.cuid2,r.message,e);break;case"startsWith":x(t,RegExp(`^${we(r.value,e)}`),r.message,e);break;case"endsWith":x(t,RegExp(`${we(r.value,e)}$`),r.message,e);break;case"datetime":k(t,"date-time",r.message,e);break;case"date":k(t,"date",r.message,e);break;case"time":k(t,"time",r.message,e);break;case"duration":k(t,"duration",r.message,e);break;case"length":f(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,r.value):r.value,r.message,e),f(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,r.value):r.value,r.message,e);break;case"includes":{x(t,RegExp(we(r.value,e)),r.message,e);break}case"ip":{r.version!=="v6"&&k(t,"ipv4",r.message,e),r.version!=="v4"&&k(t,"ipv6",r.message,e);break}case"base64url":x(t,w.base64url,r.message,e);break;case"jwt":x(t,w.jwt,r.message,e);break;case"cidr":{r.version!=="v6"&&x(t,w.ipv4Cidr,r.message,e),r.version!=="v4"&&x(t,w.ipv6Cidr,r.message,e);break}case"emoji":x(t,w.emoji(),r.message,e);break;case"ulid":{x(t,w.ulid,r.message,e);break}case"base64":{switch(e.base64Strategy){case"format:binary":{k(t,"binary",r.message,e);break}case"contentEncoding:base64":{f(t,"contentEncoding","base64",r.message,e);break}case"pattern:zod":{x(t,w.base64,r.message,e);break}}break}case"nanoid":x(t,w.nanoid,r.message,e);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return t}function we(o,e){return e.patternStrategy==="escape"?jr(o):o}var Er=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function jr(o){let e="";for(let t=0;t<o.length;t++)Er.has(o[t])||(e+="\\"),e+=o[t];return e}function k(o,e,t,r){o.format||o.anyOf?.some(s=>s.format)?(o.anyOf||(o.anyOf=[]),o.format&&(o.anyOf.push({format:o.format,...o.errorMessage&&r.errorMessages&&{errorMessage:{format:o.errorMessage.format}}}),delete o.format,o.errorMessage&&(delete o.errorMessage.format,Object.keys(o.errorMessage).length===0&&delete o.errorMessage)),o.anyOf.push({format:e,...t&&r.errorMessages&&{errorMessage:{format:t}}})):f(o,"format",e,t,r)}function x(o,e,t,r){o.pattern||o.allOf?.some(s=>s.pattern)?(o.allOf||(o.allOf=[]),o.pattern&&(o.allOf.push({pattern:o.pattern,...o.errorMessage&&r.errorMessages&&{errorMessage:{pattern:o.errorMessage.pattern}}}),delete o.pattern,o.errorMessage&&(delete o.errorMessage.pattern,Object.keys(o.errorMessage).length===0&&delete o.errorMessage)),o.allOf.push({pattern:dt(e,r),...t&&r.errorMessages&&{errorMessage:{pattern:t}}})):f(o,"pattern",dt(e,r),t,r)}function dt(o,e){if(!e.applyRegexFlags||!o.flags)return o.source;let t={i:o.flags.includes("i"),m:o.flags.includes("m"),s:o.flags.includes("s")},r=t.i?o.source.toLowerCase():o.source,s="",l=!1,a=!1,i=!1;for(let c=0;c<r.length;c++){if(l){s+=r[c],l=!1;continue}if(t.i){if(a){if(r[c].match(/[a-z]/)){i?(s+=r[c],s+=`${r[c-2]}-${r[c]}`.toUpperCase(),i=!1):r[c+1]==="-"&&r[c+2]?.match(/[a-z]/)?(s+=r[c],i=!0):s+=`${r[c]}${r[c].toUpperCase()}`;continue}}else if(r[c].match(/[a-z]/)){s+=`[${r[c]}${r[c].toUpperCase()}]`;continue}}if(t.m){if(r[c]==="^"){s+=`(^|(?<=[\r
3
+ ]))`;continue}else if(r[c]==="$"){s+=`($|(?=[\r
4
+ ]))`;continue}}if(t.s&&r[c]==="."){s+=a?`${r[c]}\r
5
+ `:`[${r[c]}\r
6
+ ]`;continue}s+=r[c],r[c]==="\\"?l=!0:a&&r[c]==="]"?a=!1:!a&&r[c]==="["&&(a=!0)}try{new RegExp(s)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),o.source}return s}function ie(o,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&o.keyType?._def.typeName===M.ZodEnum)return{type:"object",required:o.keyType._def.values,properties:o.keyType._def.values.reduce((r,s)=>({...r,[s]:m(o.valueType._def,{...e,currentPath:[...e.currentPath,"properties",s]})??{}}),{}),additionalProperties:e.rejectedAdditionalProperties};let t={type:"object",additionalProperties:m(o.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return t;if(o.keyType?._def.typeName===M.ZodString&&o.keyType._def.checks?.length){let{type:r,...s}=ae(o.keyType._def,e);return{...t,propertyNames:s}}else{if(o.keyType?._def.typeName===M.ZodEnum)return{...t,propertyNames:{enum:o.keyType._def.values}};if(o.keyType?._def.typeName===M.ZodBranded&&o.keyType._def.type._def.typeName===M.ZodString&&o.keyType._def.type._def.checks?.length){let{type:r,...s}=se(o.keyType._def,e);return{...t,propertyNames:s}}}return t}function ft(o,e){if(e.mapStrategy==="record")return ie(o,e);let t=m(o.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||{},r=m(o.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||{};return{type:"array",maxItems:125,items:{type:"array",items:[t,r],minItems:2,maxItems:2}}}function ht(o){let e=o.values,r=Object.keys(o.values).filter(l=>typeof e[e[l]]!="number").map(l=>e[l]),s=Array.from(new Set(r.map(l=>typeof l)));return{type:s.length===1?s[0]==="string"?"string":"number":["string","number"],enum:r}}function gt(){return{not:{}}}function yt(o){return o.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var L={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function _t(o,e){if(e.target==="openApi3")return bt(o,e);let t=o.options instanceof Map?Array.from(o.options.values()):o.options;if(t.every(r=>r._def.typeName in L&&(!r._def.checks||!r._def.checks.length))){let r=t.reduce((s,l)=>{let a=L[l._def.typeName];return a&&!s.includes(a)?[...s,a]:s},[]);return{type:r.length>1?r:r[0]}}else if(t.every(r=>r._def.typeName==="ZodLiteral"&&!r.description)){let r=t.reduce((s,l)=>{let a=typeof l._def.value;switch(a){case"string":case"number":case"boolean":return[...s,a];case"bigint":return[...s,"integer"];case"object":if(l._def.value===null)return[...s,"null"];case"symbol":case"undefined":case"function":default:return s}},[]);if(r.length===t.length){let s=r.filter((l,a,i)=>i.indexOf(l)===a);return{type:s.length>1?s:s[0],enum:t.reduce((l,a)=>l.includes(a._def.value)?l:[...l,a._def.value],[])}}}else if(t.every(r=>r._def.typeName==="ZodEnum"))return{type:"string",enum:t.reduce((r,s)=>[...r,...s._def.values.filter(l=>!r.includes(l))],[])};return bt(o,e)}var bt=(o,e)=>{let t=(o.options instanceof Map?Array.from(o.options.values()):o.options).map((r,s)=>m(r._def,{...e,currentPath:[...e.currentPath,"anyOf",`${s}`]})).filter(r=>!!r&&(!e.strictUnions||typeof r=="object"&&Object.keys(r).length>0));return t.length?{anyOf:t}:void 0};function xt(o,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(o.innerType._def.typeName)&&(!o.innerType._def.checks||!o.innerType._def.checks.length))return e.target==="openApi3"?{type:L[o.innerType._def.typeName],nullable:!0}:{type:[L[o.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let r=m(o.innerType._def,{...e,currentPath:[...e.currentPath]});return r&&"$ref"in r?{allOf:[r],nullable:!0}:r&&{...r,nullable:!0}}let t=m(o.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return t&&{anyOf:[t,{type:"null"}]}}function vt(o,e){let t={type:"number"};if(!o.checks)return t;for(let r of o.checks)switch(r.kind){case"int":t.type="integer",Re(t,"type",r.message,e);break;case"min":e.target==="jsonSchema7"?r.inclusive?f(t,"minimum",r.value,r.message,e):f(t,"exclusiveMinimum",r.value,r.message,e):(r.inclusive||(t.exclusiveMinimum=!0),f(t,"minimum",r.value,r.message,e));break;case"max":e.target==="jsonSchema7"?r.inclusive?f(t,"maximum",r.value,r.message,e):f(t,"exclusiveMaximum",r.value,r.message,e):(r.inclusive||(t.exclusiveMaximum=!0),f(t,"maximum",r.value,r.message,e));break;case"multipleOf":f(t,"multipleOf",r.value,r.message,e);break}return t}import{ZodOptional as Ar}from"zod";function St(o,e){let t=e.target==="openAi",r={type:"object",properties:{}},s=[],l=o.shape();for(let i in l){let c=l[i];if(c===void 0||c._def===void 0)continue;let _=Nr(c);_&&t&&(c instanceof Ar&&(c=c._def.innerType),c.isNullable()||(c=c.nullable()),_=!1);let h=m(c._def,{...e,currentPath:[...e.currentPath,"properties",i],propertyPath:[...e.currentPath,"properties",i]});h!==void 0&&(r.properties[i]=h,_||s.push(i))}s.length&&(r.required=s);let a=Or(o,e);return a!==void 0&&(r.additionalProperties=a),r}function Or(o,e){if(o.catchall._def.typeName!=="ZodNever")return m(o.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(o.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function Nr(o){try{return o.isOptional()}catch{return!0}}var Rt=(o,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return m(o.innerType._def,e);let t=m(o.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return t?{anyOf:[{not:{}},t]}:{}};var Pt=(o,e)=>{if(e.pipeStrategy==="input")return m(o.in._def,e);if(e.pipeStrategy==="output")return m(o.out._def,e);let t=m(o.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),r=m(o.out._def,{...e,currentPath:[...e.currentPath,"allOf",t?"1":"0"]});return{allOf:[t,r].filter(s=>s!==void 0)}};function Tt(o,e){return m(o.type._def,e)}function wt(o,e){let r={type:"array",uniqueItems:!0,items:m(o.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return o.minSize&&f(r,"minItems",o.minSize.value,o.minSize.message,e),o.maxSize&&f(r,"maxItems",o.maxSize.value,o.maxSize.message,e),r}function kt(o,e){return o.rest?{type:"array",minItems:o.items.length,items:o.items.map((t,r)=>m(t._def,{...e,currentPath:[...e.currentPath,"items",`${r}`]})).reduce((t,r)=>r===void 0?t:[...t,r],[]),additionalItems:m(o.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:o.items.length,maxItems:o.items.length,items:o.items.map((t,r)=>m(t._def,{...e,currentPath:[...e.currentPath,"items",`${r}`]})).reduce((t,r)=>r===void 0?t:[...t,r],[])}}function Ct(){return{not:{}}}function Et(){return{}}var jt=(o,e)=>m(o.innerType._def,e);var At=(o,e,t)=>{switch(e){case d.ZodString:return ae(o,t);case d.ZodNumber:return vt(o,t);case d.ZodObject:return St(o,t);case d.ZodBigInt:return st(o,t);case d.ZodBoolean:return at();case d.ZodDate:return Pe(o,t);case d.ZodUndefined:return Ct();case d.ZodNull:return yt(t);case d.ZodArray:return nt(o,t);case d.ZodUnion:case d.ZodDiscriminatedUnion:return _t(o,t);case d.ZodIntersection:return ut(o,t);case d.ZodTuple:return kt(o,t);case d.ZodRecord:return ie(o,t);case d.ZodLiteral:return mt(o,t);case d.ZodEnum:return pt(o);case d.ZodNativeEnum:return ht(o);case d.ZodNullable:return xt(o,t);case d.ZodOptional:return Rt(o,t);case d.ZodMap:return ft(o,t);case d.ZodSet:return wt(o,t);case d.ZodLazy:return()=>o.getter()._def;case d.ZodPromise:return Tt(o,t);case d.ZodNaN:case d.ZodNever:return gt();case d.ZodEffects:return ct(o,t);case d.ZodAny:return ot();case d.ZodUnknown:return Et();case d.ZodDefault:return lt(o,t);case d.ZodBranded:return se(o,t);case d.ZodReadonly:return jt(o,t);case d.ZodCatch:return it(o,t);case d.ZodPipeline:return Pt(o,t);case d.ZodFunction:case d.ZodVoid:case d.ZodSymbol:return;default:return(r=>{})(e)}};function m(o,e,t=!1){let r=e.seen.get(o);if(e.override){let i=e.override?.(o,e,r,t);if(i!==et)return i}if(r&&!t){let i=Ir(r,e);if(i!==void 0)return i}let s={def:o,path:e.currentPath,jsonSchema:void 0};e.seen.set(o,s);let l=At(o,o.typeName,e),a=typeof l=="function"?m(l(),e):l;if(a&&Lr(o,e,a),e.postProcess){let i=e.postProcess(a,o,e);return s.jsonSchema=a,i}return s.jsonSchema=a,a}var Ir=(o,e)=>{switch(e.$refStrategy){case"root":return{$ref:o.path.join("/")};case"relative":return{$ref:Mr(e.currentPath,o.path)};case"none":case"seen":return o.path.length<e.currentPath.length&&o.path.every((t,r)=>e.currentPath[r]===t)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),{}):e.$refStrategy==="seen"?{}:void 0}},Mr=(o,e)=>{let t=0;for(;t<o.length&&t<e.length&&o[t]===e[t];t++);return[(o.length-t).toString(),...e.slice(t)].join("/")},Lr=(o,e,t)=>(o.description&&(t.description=o.description,e.markdownDescription&&(t.markdownDescription=o.description)),t);var ke=(o,e)=>{let t=rt(e),r=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((c,[_,h])=>({...c,[_]:m(h._def,{...t,currentPath:[...t.basePath,t.definitionPath,_]},!0)??{}}),{}):void 0,s=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,l=m(o._def,s===void 0?t:{...t,currentPath:[...t.basePath,t.definitionPath,s]},!1)??{},a=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;a!==void 0&&(l.title=a);let i=s===void 0?r?{...l,[t.definitionPath]:r}:l:{$ref:[...t.$refStrategy==="relative"?[]:t.basePath,t.definitionPath,s].join("/"),[t.definitionPath]:{...r,[s]:l}};return t.target==="jsonSchema7"?i.$schema="http://json-schema.org/draft-07/schema#":(t.target==="jsonSchema2019-09"||t.target==="openAi")&&(i.$schema="https://json-schema.org/draft/2019-09/schema#"),t.target==="openAi"&&("anyOf"in i||"oneOf"in i||"allOf"in i||"type"in i&&Array.isArray(i.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),i};import{z as le}from"zod";import{ZodType as Dr}from"zod";var Ce;(function(o){o.Completable="McpCompletable"})(Ce||(Ce={}));var O=class extends Dr{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}};O.create=(o,e)=>new O({type:o,typeName:Ce.Completable,complete:e.complete,...Hr(e)});function Hr(o){if(!o)return{};let{errorMap:e,invalid_type_error:t,required_error:r,description:s}=o;if(e&&(t||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(a,i)=>{var c,_;let{message:h}=o;return a.code==="invalid_enum_value"?{message:h??i.defaultError}:typeof i.data>"u"?{message:(c=h??r)!==null&&c!==void 0?c:i.defaultError}:a.code!=="invalid_type"?{message:i.defaultError}:{message:(_=h??t)!==null&&_!==void 0?_:i.defaultError}},description:s}}var pe=class{constructor(e,t){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new ne(e,t)}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(ee.shape.method.value),this.server.assertCanSetRequestHandler(te.shape.method.value),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(ee,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,t])=>({name:e,description:t.description,inputSchema:t.inputSchema?ke(t.inputSchema,{strictUnions:!0}):$r,annotations:t.annotations}))})),this.server.setRequestHandler(te,async(e,t)=>{let r=this._registeredTools[e.params.name];if(!r)throw new b(g.InvalidParams,`Tool ${e.params.name} not found`);if(!r.enabled)throw new b(g.InvalidParams,`Tool ${e.params.name} disabled`);if(r.inputSchema){let s=await r.inputSchema.safeParseAsync(e.params.arguments);if(!s.success)throw new b(g.InvalidParams,`Invalid arguments for tool ${e.params.name}: ${s.error.message}`);let l=s.data,a=r.callback;try{return await Promise.resolve(a(l,t))}catch(i){return{content:[{type:"text",text:i instanceof Error?i.message:String(i)}],isError:!0}}}else{let s=r.callback;try{return await Promise.resolve(s(t))}catch(l){return{content:[{type:"text",text:l instanceof Error?l.message:String(l)}],isError:!0}}}}),this._toolHandlersInitialized=!0)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(re.shape.method.value),this.server.setRequestHandler(re,async e=>{switch(e.params.ref.type){case"ref/prompt":return this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return this.handleResourceCompletion(e,e.params.ref);default:throw new b(g.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,t){let r=this._registeredPrompts[t.name];if(!r)throw new b(g.InvalidParams,`Prompt ${t.name} not found`);if(!r.enabled)throw new b(g.InvalidParams,`Prompt ${t.name} disabled`);if(!r.argsSchema)return ce;let s=r.argsSchema.shape[e.params.argument.name];if(!(s instanceof O))return ce;let a=await s._def.complete(e.params.argument.value);return Nt(a)}async handleResourceCompletion(e,t){let r=Object.values(this._registeredResourceTemplates).find(a=>a.resourceTemplate.uriTemplate.toString()===t.uri);if(!r){if(this._registeredResources[t.uri])return ce;throw new b(g.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let s=r.resourceTemplate.completeCallback(e.params.argument.name);if(!s)return ce;let l=await s(e.params.argument.value);return Nt(l)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(G.shape.method.value),this.server.assertCanSetRequestHandler(J.shape.method.value),this.server.assertCanSetRequestHandler(K.shape.method.value),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(G,async(e,t)=>{let r=Object.entries(this._registeredResources).filter(([l,a])=>a.enabled).map(([l,a])=>({uri:l,name:a.name,...a.metadata})),s=[];for(let l of Object.values(this._registeredResourceTemplates)){if(!l.resourceTemplate.listCallback)continue;let a=await l.resourceTemplate.listCallback(t);for(let i of a.resources)s.push({...i,...l.metadata})}return{resources:[...r,...s]}}),this.server.setRequestHandler(J,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([t,r])=>({name:t,uriTemplate:r.resourceTemplate.uriTemplate.toString(),...r.metadata}))})),this.server.setRequestHandler(K,async(e,t)=>{let r=new URL(e.params.uri),s=this._registeredResources[r.toString()];if(s){if(!s.enabled)throw new b(g.InvalidParams,`Resource ${r} disabled`);return s.readCallback(r,t)}for(let l of Object.values(this._registeredResourceTemplates)){let a=l.resourceTemplate.uriTemplate.match(r.toString());if(a)return l.readCallback(r,a,t)}throw new b(g.InvalidParams,`Resource ${r} not found`)}),this.setCompletionRequestHandler(),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(B.shape.method.value),this.server.assertCanSetRequestHandler(X.shape.method.value),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(B,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,t])=>({name:e,description:t.description,arguments:t.argsSchema?Zr(t.argsSchema):void 0}))})),this.server.setRequestHandler(X,async(e,t)=>{let r=this._registeredPrompts[e.params.name];if(!r)throw new b(g.InvalidParams,`Prompt ${e.params.name} not found`);if(!r.enabled)throw new b(g.InvalidParams,`Prompt ${e.params.name} disabled`);if(r.argsSchema){let s=await r.argsSchema.safeParseAsync(e.params.arguments);if(!s.success)throw new b(g.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${s.error.message}`);let l=s.data,a=r.callback;return await Promise.resolve(a(l,t))}else{let s=r.callback;return await Promise.resolve(s(t))}}),this.setCompletionRequestHandler(),this._promptHandlersInitialized=!0)}resource(e,t,...r){let s;typeof r[0]=="object"&&(s=r.shift());let l=r[0];if(typeof t=="string"){if(this._registeredResources[t])throw new Error(`Resource ${t} is already registered`);let a={name:e,metadata:s,readCallback:l,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({uri:null}),update:i=>{typeof i.uri<"u"&&i.uri!==t&&(delete this._registeredResources[t],i.uri&&(this._registeredResources[i.uri]=a)),typeof i.name<"u"&&(a.name=i.name),typeof i.metadata<"u"&&(a.metadata=i.metadata),typeof i.callback<"u"&&(a.readCallback=i.callback),typeof i.enabled<"u"&&(a.enabled=i.enabled),this.sendResourceListChanged()}};return this._registeredResources[t]=a,this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let a={resourceTemplate:t,metadata:s,readCallback:l,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:i=>{typeof i.name<"u"&&i.name!==e&&(delete this._registeredResourceTemplates[e],i.name&&(this._registeredResourceTemplates[i.name]=a)),typeof i.template<"u"&&(a.resourceTemplate=i.template),typeof i.metadata<"u"&&(a.metadata=i.metadata),typeof i.callback<"u"&&(a.readCallback=i.callback),typeof i.enabled<"u"&&(a.enabled=i.enabled),this.sendResourceListChanged()}};return this._registeredResourceTemplates[e]=a,this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}}tool(e,...t){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let r;typeof t[0]=="string"&&(r=t.shift());let s,l;if(t.length>1){let c=t[0];Ot(c)?(s=t.shift(),t.length>1&&typeof t[0]=="object"&&t[0]!==null&&!Ot(t[0])&&(l=t.shift())):typeof c=="object"&&c!==null&&(l=t.shift())}let a=t[0],i={description:r,inputSchema:s===void 0?void 0:le.object(s),annotations:l,callback:a,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:c=>{typeof c.name<"u"&&c.name!==e&&(delete this._registeredTools[e],c.name&&(this._registeredTools[c.name]=i)),typeof c.description<"u"&&(i.description=c.description),typeof c.paramsSchema<"u"&&(i.inputSchema=le.object(c.paramsSchema)),typeof c.callback<"u"&&(i.callback=c.callback),typeof c.annotations<"u"&&(i.annotations=c.annotations),typeof c.enabled<"u"&&(i.enabled=c.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=i,this.setToolRequestHandlers(),this.sendToolListChanged(),i}prompt(e,...t){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let r;typeof t[0]=="string"&&(r=t.shift());let s;t.length>1&&(s=t.shift());let l=t[0],a={description:r,argsSchema:s===void 0?void 0:le.object(s),callback:l,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:i=>{typeof i.name<"u"&&i.name!==e&&(delete this._registeredPrompts[e],i.name&&(this._registeredPrompts[i.name]=a)),typeof i.description<"u"&&(a.description=i.description),typeof i.argsSchema<"u"&&(a.argsSchema=le.object(i.argsSchema)),typeof i.callback<"u"&&(a.callback=i.callback),typeof i.enabled<"u"&&(a.enabled=i.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=a,this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var $r={type:"object"};function Ot(o){return typeof o!="object"||o===null?!1:Object.keys(o).length===0||Object.values(o).some(qr)}function qr(o){return o!==null&&typeof o=="object"&&"parse"in o&&typeof o.parse=="function"&&"safeParse"in o&&typeof o.safeParse=="function"}function Zr(o){return Object.entries(o.shape).map(([e,t])=>({name:e,description:t.description,required:!t.isOptional()}))}function Nt(o){return{completion:{values:o.slice(0,100),total:o.length,hasMore:o.length>100}}}var ce={completion:{values:[],hasMore:!1}};var ue=process.env.personalToken||""||"",It="F2C MCP",Mt="0.1.2";var Ee=class{constructor(){this.f2cHost="https://f2c-figma-api.yy.com/api";this.personalToken=ue}async nodeToCode(e){let t={fileKey:e.fileKey,nodeIds:e.ids,personal_token:e.personalToken||this.personalToken,format:e.format,option:{}};t.format==="react-cssmodules"?(t.format="html",t.option={cssFramework:"cssmodules"}):t.format==="react-tailwind"&&(t.format="html",t.option={cssFramework:"tailwindcss"});let r=this.opToUrl(`${this.f2cHost}/nodes`,t);return this.fetch(r,"text")}async fetch(e,t="json"){try{let s=await fetch(e,{method:"GET"});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return t==="text"?await s.text():await s.json()}catch(r){throw console.error("HTTP error",r),r}}opToUrl(e,t={}){if(Object.keys(t).length===0)return e;let r=new URL(e);for(let[s,l]of Object.entries(t))if(typeof l=="object"&&l!==null)for(let[a,i]of Object.entries(l))r.searchParams.append(`${s}[${a}]`,i);else r.searchParams.append(s,l);return r.toString()}},Lt=new Ee;import{z as me}from"zod";var Dt=o=>{o.tool("figma_to_html","Convert Figma design to HTML code with node",{fileKey:me.string().describe("Unique identifier of the Figma file"),ids:me.string().describe("List of node IDs to retrieve, comma separated"),format:me.enum(["html","react-cssmodules","react-tailwind"]).default("html").describe("Format of the returned code"),personalToken:me.string().optional().describe("Your Figma personal access token")},async e=>{try{let t=e.format??"html";return{content:[{type:"text",text:await Lt.nodeToCode({...e,format:t})}]}}catch(t){return console.error("Tool execution error:",t),{content:[{type:"text",text:`Error: ${t.message}`}]}}})};var je=class{constructor(){this.figmaHost="https://api.figma.com/v1";this.personalToken=ue}async files(e){let t;return e.ids?t=this.opToUrl(`${this.figmaHost}/files/${e.fileKey}/nodes`,e):t=this.opToUrl(`${this.figmaHost}/files/${e.fileKey}`,e),this.fetch(t)}async images(e){let t=this.opToUrl(`${this.figmaHost}/images/${e.fileKey}`,e);return this.fetch(t)}async imageFills(e){let t=this.opToUrl(`${this.figmaHost}/files/${e.fileKey}/images`,e);return this.fetch(t)}async meta(e){let t=this.opToUrl(`${this.figmaHost}/files/${e.fileKey}/meta`,e);return this.fetch(t)}async fetch(e,t="json"){try{let r={method:"GET",headers:{"X-FIGMA-TOKEN":this.personalToken}},s=await fetch(e,r);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return t==="text"?await s.text():await s.json()}catch(r){throw console.error("HTTP error",r),r}}opToUrl(e,t={},r=["fileKey","personalToken"]){if(Object.keys(t).length===0)return e;t.personalToken&&(this.personalToken=t.personalToken);let s=new URL(e);for(let[l,a]of Object.entries(t))r.includes(l)||s.searchParams.append(l,a);return s.toString()}},D=new je;import{z as y}from"zod";var Ht=o=>{o.tool("figma_get_file_data","Get detailed information about a Figma file",{fileKey:y.string().describe("Unique identifier of the Figma file"),ids:y.string().describe("List of node IDs to retrieve, comma separated"),personalToken:y.string().optional().describe("Your Figma personal access token"),version:y.string().optional().describe("Specify the version to return"),depth:y.number().optional().describe("Specify the depth of nodes to return"),geometry:y.enum(["paths"]).optional().describe("Specify whether to include geometry path data"),plugin_data:y.string().optional().describe("Specify plugin data to return"),branch_data:y.boolean().optional().describe("Specify whether to return branch data")},async e=>{try{let t=await D.files(e);return{content:[{type:"text",text:JSON.stringify(t)}]}}catch(t){return{content:[{type:"text",text:`Error: ${t.message}`}]}}}),o.tool("figma_get_images","Get images of Figma nodes",{fileKey:y.string().describe("Unique identifier of the Figma file"),ids:y.string().describe("Node IDs to get images for, comma separated"),format:y.enum(["jpg","png","svg","pdf"]).optional().describe("Image format, e.g., png, jpg, svg"),scale:y.number().optional().describe("Image scale factor"),svg_include_id:y.boolean().optional().describe("Whether SVG includes ID"),svg_simplify_stroke:y.boolean().optional().describe("Whether to simplify SVG strokes"),use_absolute_bounds:y.boolean().optional().describe("Whether to use absolute bounds"),version:y.string().optional().describe("Specify the version to return"),personalToken:y.string().optional().describe("Your Figma personal access token")},async e=>{try{let t=await D.images(e);return{content:[{type:"text",text:JSON.stringify(t)}]}}catch(t){return{content:[{type:"text",text:`Error: ${t.message}`}]}}}),o.tool("figma_get_image_fills","Get all image resources in the specified Figma file",{fileKey:y.string().describe("Unique identifier of the Figma file"),personalToken:y.string().optional().describe("Your Figma personal access token")},async e=>{try{let t=await D.imageFills(e);return{content:[{type:"text",text:JSON.stringify(t)}]}}catch(t){return{content:[{type:"text",text:`Error: ${t.message}`}]}}}),o.tool("figma_get_file_meta","Get metadata information for a Figma file",{fileKey:y.string().describe("Unique identifier of the Figma file"),personalToken:y.string().optional().describe("Your Figma personal access token")},async e=>{try{let t=await D.meta(e);return{content:[{type:"text",text:JSON.stringify(t)}]}}catch(t){return{content:[{type:"text",text:`Error: ${t.message}`}]}}})};var de=new pe({name:It,version:Mt},{capabilities:{logging:{}}});Ht(de);Dt(de);import qt from"node:process";var fe=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
7
+ `);if(e===-1)return null;let t=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),Fr(t)}clear(){this._buffer=void 0}};function Fr(o){return Ue.parse(JSON.parse(o))}function $t(o){return JSON.stringify(o)+`
8
+ `}var he=class{constructor(e=qt.stdin,t=qt.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new fe,this._started=!1,this._ondata=r=>{this._readBuffer.append(r),this.processReadBuffer()},this._onerror=r=>{var s;(s=this.onerror)===null||s===void 0||s.call(this,r)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,t;;)try{let r=this._readBuffer.readMessage();if(r===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,r)}catch(r){(t=this.onerror)===null||t===void 0||t.call(this,r)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(t=>{let r=$t(e);this._stdout.write(r)?t():this._stdout.once("drain",t)})}};async function Zt(o){try{let e=new he;await o.connect(e)}catch(e){console.log(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32e3,message:`Server startup failed: ${e.message}`}})),process.exit(1)}}Zt(de);
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }