FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
surerank
/
build
/
vendor-9f9c6a24
Edit File: index.js
"use strict";(globalThis.webpackChunksurerank=globalThis.webpackChunksurerank||[]).push([[8562],{53718(e,t,s){s.d(t,{_:()=>bs});var r=s(35921),a=s(12236);function o(e){return!!e._zod}function i(e){const t=Object.values(e);if(0===t.length)return a.Ikc({});const s=t.every(o),i=t.every(e=>!o(e));if(s)return a.Ikc(e);if(i)return r.Ik(e);throw new Error("Mixed Zod versions detected in object shape.")}function n(e,t){return o(e)?a.xLC(e,t):e.safeParse(t)}async function l(e,t){if(o(e))return await a.bpZ(e,t);const s=e;return await s.safeParseAsync(t)}function c(e){if(!e)return;let t;if(o(e)){const s=e;t=s._zod?.def?.shape}else t=e.shape;if(t){if("function"===typeof t)try{return t()}catch{return}return t}}function d(e){if(e){if("object"===typeof e&&!e._def&&!e._zod){const t=Object.values(e);if(t.length>0&&t.every(e=>"object"===typeof e&&null!==e&&(void 0!==e._def||void 0!==e._zod||"function"===typeof e.parse)))return i(e)}if(o(e)){const t=e,s=t._zod?.def;if(s&&("object"===s.type||void 0!==s.shape))return e}else if(void 0!==e.shape)return e}}function u(e){if(e&&"object"===typeof e){if("message"in e&&"string"===typeof e.message)return e.message;if("issues"in e&&Array.isArray(e.issues)&&e.issues.length>0){const t=e.issues[0];if(t&&"object"===typeof t&&"message"in t)return String(t.message)}try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}function p(e){if(o(e)){const t=e,s=t._zod?.def;if(s){if(void 0!==s.value)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}const t=e._def;if(t){if(void 0!==t.value)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}const s=e.value;if(void 0!==s)return s}var m=s(34692);const h="2025-11-25",f=[h,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],g="io.modelcontextprotocol/related-task",k="2.0",_=m.IeY(e=>null!==e&&("object"===typeof e||"function"===typeof e)),w=m.KCZ([m.YjP(),m.aig().int()]),y=m.YjP(),P=(m._H3({ttl:m.KCZ([m.aig(),m.chJ()]).optional(),pollInterval:m.aig().optional()}),m.Ikc({ttl:m.aig().optional()})),v=m.Ikc({taskId:m.YjP()}),I=m._H3({progressToken:w.optional(),[g]:v.optional()}),T=m.Ikc({_meta:I.optional()}),b=T.extend({task:P.optional()}),q=m.Ikc({method:m.YjP(),params:T.loose().optional()}),j=m.Ikc({_meta:I.optional()}),Y=m.Ikc({method:m.YjP(),params:j.loose().optional()}),R=m._H3({_meta:I.optional()}),S=m.KCZ([m.YjP(),m.aig().int()]),C=m.Ikc({jsonrpc:m.euz(k),id:S,...q.shape}).strict(),x=e=>C.safeParse(e).success,E=m.Ikc({jsonrpc:m.euz(k),...Y.shape}).strict(),H=m.Ikc({jsonrpc:m.euz(k),id:S,result:R}).strict(),z=e=>H.safeParse(e).success;var M;!function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"}(M||(M={}));const $=m.Ikc({jsonrpc:m.euz(k),id:S.optional(),error:m.Ikc({code:m.aig().int(),message:m.YjP(),data:m.L5J().optional()})}).strict(),O=(m.KCZ([C,E,H,$]),m.KCZ([H,$]),R.strict()),L=j.extend({requestId:S.optional(),reason:m.YjP().optional()}),A=Y.extend({method:m.euz("notifications/cancelled"),params:L}),N=m.Ikc({src:m.YjP(),mimeType:m.YjP().optional(),sizes:m.YOg(m.YjP()).optional(),theme:m.k5n(["light","dark"]).optional()}),Z=m.Ikc({icons:m.YOg(N).optional()}),U=m.Ikc({name:m.YjP(),title:m.YjP().optional()}),J=U.extend({...U.shape,...Z.shape,version:m.YjP(),websiteUrl:m.YjP().optional(),description:m.YjP().optional()}),K=m.E$q(m.Ikc({applyDefaults:m.zMY().optional()}),m.g1P(m.YjP(),m.L5J())),V=m.vkY(e=>e&&"object"===typeof e&&!Array.isArray(e)&&0===Object.keys(e).length?{form:{}}:e,m.E$q(m.Ikc({form:K.optional(),url:_.optional()}),m.g1P(m.YjP(),m.L5J()).optional())),F=m._H3({list:_.optional(),cancel:_.optional(),requests:m._H3({sampling:m._H3({createMessage:_.optional()}).optional(),elicitation:m._H3({create:_.optional()}).optional()}).optional()}),Q=m._H3({list:_.optional(),cancel:_.optional(),requests:m._H3({tools:m._H3({call:_.optional()}).optional()}).optional()}),D=m.Ikc({experimental:m.g1P(m.YjP(),_).optional(),sampling:m.Ikc({context:_.optional(),tools:_.optional()}).optional(),elicitation:V.optional(),roots:m.Ikc({listChanged:m.zMY().optional()}).optional(),tasks:F.optional()}),W=T.extend({protocolVersion:m.YjP(),capabilities:D,clientInfo:J}),G=q.extend({method:m.euz("initialize"),params:W}),B=m.Ikc({experimental:m.g1P(m.YjP(),_).optional(),logging:_.optional(),completions:_.optional(),prompts:m.Ikc({listChanged:m.zMY().optional()}).optional(),resources:m.Ikc({subscribe:m.zMY().optional(),listChanged:m.zMY().optional()}).optional(),tools:m.Ikc({listChanged:m.zMY().optional()}).optional(),tasks:Q.optional()}),X=R.extend({protocolVersion:m.YjP(),capabilities:B,serverInfo:J,instructions:m.YjP().optional()}),ee=Y.extend({method:m.euz("notifications/initialized"),params:j.optional()}),te=q.extend({method:m.euz("ping"),params:T.optional()}),se=m.Ikc({progress:m.aig(),total:m.lqM(m.aig()),message:m.lqM(m.YjP())}),re=m.Ikc({...j.shape,...se.shape,progressToken:w}),ae=Y.extend({method:m.euz("notifications/progress"),params:re}),oe=T.extend({cursor:y.optional()}),ie=q.extend({params:oe.optional()}),ne=R.extend({nextCursor:y.optional()}),le=m.k5n(["working","input_required","completed","failed","cancelled"]),ce=m.Ikc({taskId:m.YjP(),status:le,ttl:m.KCZ([m.aig(),m.chJ()]),createdAt:m.YjP(),lastUpdatedAt:m.YjP(),pollInterval:m.lqM(m.aig()),statusMessage:m.lqM(m.YjP())}),de=R.extend({task:ce}),ue=j.merge(ce),pe=Y.extend({method:m.euz("notifications/tasks/status"),params:ue}),me=q.extend({method:m.euz("tasks/get"),params:T.extend({taskId:m.YjP()})}),he=R.merge(ce),fe=q.extend({method:m.euz("tasks/result"),params:T.extend({taskId:m.YjP()})}),ge=(R.loose(),ie.extend({method:m.euz("tasks/list")})),ke=ne.extend({tasks:m.YOg(ce)}),_e=q.extend({method:m.euz("tasks/cancel"),params:T.extend({taskId:m.YjP()})}),we=R.merge(ce),ye=m.Ikc({uri:m.YjP(),mimeType:m.lqM(m.YjP()),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),Pe=ye.extend({text:m.YjP()}),ve=m.YjP().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),Ie=ye.extend({blob:ve}),Te=m.k5n(["user","assistant"]),be=m.Ikc({audience:m.YOg(Te).optional(),priority:m.aig().min(0).max(1).optional(),lastModified:m.KH5.datetime({offset:!0}).optional()}),qe=m.Ikc({...U.shape,...Z.shape,uri:m.YjP(),description:m.lqM(m.YjP()),mimeType:m.lqM(m.YjP()),annotations:be.optional(),_meta:m.lqM(m._H3({}))}),je=m.Ikc({...U.shape,...Z.shape,uriTemplate:m.YjP(),description:m.lqM(m.YjP()),mimeType:m.lqM(m.YjP()),annotations:be.optional(),_meta:m.lqM(m._H3({}))}),Ye=ie.extend({method:m.euz("resources/list")}),Re=ne.extend({resources:m.YOg(qe)}),Se=ie.extend({method:m.euz("resources/templates/list")}),Ce=ne.extend({resourceTemplates:m.YOg(je)}),xe=T.extend({uri:m.YjP()}),Ee=xe,He=q.extend({method:m.euz("resources/read"),params:Ee}),ze=R.extend({contents:m.YOg(m.KCZ([Pe,Ie]))}),Me=Y.extend({method:m.euz("notifications/resources/list_changed"),params:j.optional()}),$e=xe,Oe=q.extend({method:m.euz("resources/subscribe"),params:$e}),Le=xe,Ae=q.extend({method:m.euz("resources/unsubscribe"),params:Le}),Ne=j.extend({uri:m.YjP()}),Ze=Y.extend({method:m.euz("notifications/resources/updated"),params:Ne}),Ue=m.Ikc({name:m.YjP(),description:m.lqM(m.YjP()),required:m.lqM(m.zMY())}),Je=m.Ikc({...U.shape,...Z.shape,description:m.lqM(m.YjP()),arguments:m.lqM(m.YOg(Ue)),_meta:m.lqM(m._H3({}))}),Ke=ie.extend({method:m.euz("prompts/list")}),Ve=ne.extend({prompts:m.YOg(Je)}),Fe=T.extend({name:m.YjP(),arguments:m.g1P(m.YjP(),m.YjP()).optional()}),Qe=q.extend({method:m.euz("prompts/get"),params:Fe}),De=m.Ikc({type:m.euz("text"),text:m.YjP(),annotations:be.optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),We=m.Ikc({type:m.euz("image"),data:ve,mimeType:m.YjP(),annotations:be.optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),Ge=m.Ikc({type:m.euz("audio"),data:ve,mimeType:m.YjP(),annotations:be.optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),Be=m.Ikc({type:m.euz("tool_use"),name:m.YjP(),id:m.YjP(),input:m.g1P(m.YjP(),m.L5J()),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),Xe=m.Ikc({type:m.euz("resource"),resource:m.KCZ([Pe,Ie]),annotations:be.optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),et=qe.extend({type:m.euz("resource_link")}),tt=m.KCZ([De,We,Ge,et,Xe]),st=m.Ikc({role:Te,content:tt}),rt=R.extend({description:m.YjP().optional(),messages:m.YOg(st)}),at=Y.extend({method:m.euz("notifications/prompts/list_changed"),params:j.optional()}),ot=m.Ikc({title:m.YjP().optional(),readOnlyHint:m.zMY().optional(),destructiveHint:m.zMY().optional(),idempotentHint:m.zMY().optional(),openWorldHint:m.zMY().optional()}),it=m.Ikc({taskSupport:m.k5n(["required","optional","forbidden"]).optional()}),nt=m.Ikc({...U.shape,...Z.shape,description:m.YjP().optional(),inputSchema:m.Ikc({type:m.euz("object"),properties:m.g1P(m.YjP(),_).optional(),required:m.YOg(m.YjP()).optional()}).catchall(m.L5J()),outputSchema:m.Ikc({type:m.euz("object"),properties:m.g1P(m.YjP(),_).optional(),required:m.YOg(m.YjP()).optional()}).catchall(m.L5J()).optional(),annotations:ot.optional(),execution:it.optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),lt=ie.extend({method:m.euz("tools/list")}),ct=ne.extend({tools:m.YOg(nt)}),dt=R.extend({content:m.YOg(tt).default([]),structuredContent:m.g1P(m.YjP(),m.L5J()).optional(),isError:m.zMY().optional()}),ut=(dt.or(R.extend({toolResult:m.L5J()})),b.extend({name:m.YjP(),arguments:m.g1P(m.YjP(),m.L5J()).optional()})),pt=q.extend({method:m.euz("tools/call"),params:ut}),mt=Y.extend({method:m.euz("notifications/tools/list_changed"),params:j.optional()}),ht=(m.Ikc({autoRefresh:m.zMY().default(!0),debounceMs:m.aig().int().nonnegative().default(300)}),m.k5n(["debug","info","notice","warning","error","critical","alert","emergency"])),ft=T.extend({level:ht}),gt=q.extend({method:m.euz("logging/setLevel"),params:ft}),kt=j.extend({level:ht,logger:m.YjP().optional(),data:m.L5J()}),_t=Y.extend({method:m.euz("notifications/message"),params:kt}),wt=m.Ikc({name:m.YjP().optional()}),yt=m.Ikc({hints:m.YOg(wt).optional(),costPriority:m.aig().min(0).max(1).optional(),speedPriority:m.aig().min(0).max(1).optional(),intelligencePriority:m.aig().min(0).max(1).optional()}),Pt=m.Ikc({mode:m.k5n(["auto","required","none"]).optional()}),vt=m.Ikc({type:m.euz("tool_result"),toolUseId:m.YjP().describe("The unique identifier for the corresponding tool call."),content:m.YOg(tt).default([]),structuredContent:m.Ikc({}).loose().optional(),isError:m.zMY().optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),It=m.gMt("type",[De,We,Ge]),Tt=m.gMt("type",[De,We,Ge,Be,vt]),bt=m.Ikc({role:Te,content:m.KCZ([Tt,m.YOg(Tt)]),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),qt=b.extend({messages:m.YOg(bt),modelPreferences:yt.optional(),systemPrompt:m.YjP().optional(),includeContext:m.k5n(["none","thisServer","allServers"]).optional(),temperature:m.aig().optional(),maxTokens:m.aig().int(),stopSequences:m.YOg(m.YjP()).optional(),metadata:_.optional(),tools:m.YOg(nt).optional(),toolChoice:Pt.optional()}),jt=q.extend({method:m.euz("sampling/createMessage"),params:qt}),Yt=R.extend({model:m.YjP(),stopReason:m.lqM(m.k5n(["endTurn","stopSequence","maxTokens"]).or(m.YjP())),role:Te,content:It}),Rt=R.extend({model:m.YjP(),stopReason:m.lqM(m.k5n(["endTurn","stopSequence","maxTokens","toolUse"]).or(m.YjP())),role:Te,content:m.KCZ([Tt,m.YOg(Tt)])}),St=m.Ikc({type:m.euz("boolean"),title:m.YjP().optional(),description:m.YjP().optional(),default:m.zMY().optional()}),Ct=m.Ikc({type:m.euz("string"),title:m.YjP().optional(),description:m.YjP().optional(),minLength:m.aig().optional(),maxLength:m.aig().optional(),format:m.k5n(["email","uri","date","date-time"]).optional(),default:m.YjP().optional()}),xt=m.Ikc({type:m.k5n(["number","integer"]),title:m.YjP().optional(),description:m.YjP().optional(),minimum:m.aig().optional(),maximum:m.aig().optional(),default:m.aig().optional()}),Et=m.Ikc({type:m.euz("string"),title:m.YjP().optional(),description:m.YjP().optional(),enum:m.YOg(m.YjP()),default:m.YjP().optional()}),Ht=m.Ikc({type:m.euz("string"),title:m.YjP().optional(),description:m.YjP().optional(),oneOf:m.YOg(m.Ikc({const:m.YjP(),title:m.YjP()})),default:m.YjP().optional()}),zt=m.Ikc({type:m.euz("string"),title:m.YjP().optional(),description:m.YjP().optional(),enum:m.YOg(m.YjP()),enumNames:m.YOg(m.YjP()).optional(),default:m.YjP().optional()}),Mt=m.KCZ([Et,Ht]),$t=m.Ikc({type:m.euz("array"),title:m.YjP().optional(),description:m.YjP().optional(),minItems:m.aig().optional(),maxItems:m.aig().optional(),items:m.Ikc({type:m.euz("string"),enum:m.YOg(m.YjP())}),default:m.YOg(m.YjP()).optional()}),Ot=m.Ikc({type:m.euz("array"),title:m.YjP().optional(),description:m.YjP().optional(),minItems:m.aig().optional(),maxItems:m.aig().optional(),items:m.Ikc({anyOf:m.YOg(m.Ikc({const:m.YjP(),title:m.YjP()}))}),default:m.YOg(m.YjP()).optional()}),Lt=m.KCZ([$t,Ot]),At=m.KCZ([zt,Mt,Lt]),Nt=m.KCZ([At,St,Ct,xt]),Zt=b.extend({mode:m.euz("form").optional(),message:m.YjP(),requestedSchema:m.Ikc({type:m.euz("object"),properties:m.g1P(m.YjP(),Nt),required:m.YOg(m.YjP()).optional()})}),Ut=b.extend({mode:m.euz("url"),message:m.YjP(),elicitationId:m.YjP(),url:m.YjP().url()}),Jt=m.KCZ([Zt,Ut]),Kt=q.extend({method:m.euz("elicitation/create"),params:Jt}),Vt=j.extend({elicitationId:m.YjP()}),Ft=Y.extend({method:m.euz("notifications/elicitation/complete"),params:Vt}),Qt=R.extend({action:m.k5n(["accept","decline","cancel"]),content:m.vkY(e=>null===e?void 0:e,m.g1P(m.YjP(),m.KCZ([m.YjP(),m.aig(),m.zMY(),m.YOg(m.YjP())])).optional())}),Dt=m.Ikc({type:m.euz("ref/resource"),uri:m.YjP()}),Wt=m.Ikc({type:m.euz("ref/prompt"),name:m.YjP()}),Gt=T.extend({ref:m.KCZ([Wt,Dt]),argument:m.Ikc({name:m.YjP(),value:m.YjP()}),context:m.Ikc({arguments:m.g1P(m.YjP(),m.YjP()).optional()}).optional()}),Bt=q.extend({method:m.euz("completion/complete"),params:Gt}),Xt=R.extend({completion:m._H3({values:m.YOg(m.YjP()).max(100),total:m.lqM(m.aig().int()),hasMore:m.lqM(m.zMY())})}),es=m.Ikc({uri:m.YjP().startsWith("file://"),name:m.YjP().optional(),_meta:m.g1P(m.YjP(),m.L5J()).optional()}),ts=q.extend({method:m.euz("roots/list"),params:T.optional()}),ss=R.extend({roots:m.YOg(es)}),rs=Y.extend({method:m.euz("notifications/roots/list_changed"),params:j.optional()});m.KCZ([te,G,Bt,gt,Qe,Ke,Ye,Se,He,Oe,Ae,pt,lt,me,fe,ge,_e]),m.KCZ([A,ae,ee,rs,pe]),m.KCZ([O,Yt,Rt,Qt,ss,he,ke,de]),m.KCZ([te,jt,Kt,ts,me,fe,ge,_e]),m.KCZ([A,ae,_t,Ze,Me,mt,at,pe,Ft]),m.KCZ([O,X,Xt,rt,Ve,Re,Ce,ze,dt,ct,he,ke,de]);class as extends Error{constructor(e,t,s){super(`MCP error ${e}: ${t}`),this.code=e,this.data=s,this.name="McpError"}static fromError(e,t,s){return e===M.UrlElicitationRequired&&s&&s.elicitations?new os(s.elicitations,t):new as(e,t,s)}}class os extends as{constructor(e,t=`URL elicitation${e.length>1?"s":""} required`){super(M.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}}function is(e){return"completed"===e||"failed"===e||"cancelled"===e}var ns=s(48201);function ls(e,t){return o(e)?a.blZ(e,{target:(s=t?.target,s?"jsonSchema7"===s||"draft-7"===s?"draft-7":"jsonSchema2019-09"===s||"draft-2020-12"===s?"draft-2020-12":"draft-7":"draft-7"),io:t?.pipeStrategy??"input"}):(0,ns.Ik)(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??"input"});var s}function cs(e){const t=c(e),s=t?.method;if(!s)throw new Error("Schema is missing a method literal");const r=p(s);if("string"!==typeof r)throw new Error("Schema method literal must be a string");return r}function ds(e,t){const s=n(e,t);if(!s.success)throw s.error;return s.data}class us{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._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(A,e=>{this._oncancel(e)}),this.setNotificationHandler(ae,e=>{this._onprogress(e)}),this.setRequestHandler(te,e=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(me,async(e,t)=>{const s=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!s)throw new as(M.InvalidParams,"Failed to retrieve task: Task not found");return{...s}}),this.setRequestHandler(fe,async(e,t)=>{const s=async()=>{const r=e.params.taskId;if(this._taskMessageQueue){let e;for(;e=await this._taskMessageQueue.dequeue(r,t.sessionId);){if("response"===e.type||"error"===e.type){const t=e.message,s=t.id,r=this._requestResolvers.get(s);r?(this._requestResolvers.delete(s),r("response"===e.type?t:new as(t.error.code,t.error.message,t.error.data))):this._onerror(new Error(`${"response"===e.type?"Response":"Error"} handler missing for request ${s}`));continue}await(this._transport?.send(e.message,{relatedRequestId:t.requestId}))}}const a=await this._taskStore.getTask(r,t.sessionId);if(!a)throw new as(M.InvalidParams,`Task not found: ${r}`);if(!is(a.status))return await this._waitForTaskUpdate(r,t.signal),await s();if(is(a.status)){const e=await this._taskStore.getTaskResult(r,t.sessionId);return this._clearTaskQueue(r),{...e,_meta:{...e._meta,[g]:{taskId:r}}}}return await s()};return await s()}),this.setRequestHandler(ge,async(e,t)=>{try{const{tasks:s,nextCursor:r}=await this._taskStore.listTasks(e.params?.cursor,t.sessionId);return{tasks:s,nextCursor:r,_meta:{}}}catch(s){throw new as(M.InvalidParams,`Failed to list tasks: ${s instanceof Error?s.message:String(s)}`)}}),this.setRequestHandler(_e,async(e,t)=>{try{const s=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!s)throw new as(M.InvalidParams,`Task not found: ${e.params.taskId}`);if(is(s.status))throw new as(M.InvalidParams,`Cannot cancel task in terminal status: ${s.status}`);await this._taskStore.updateTaskStatus(e.params.taskId,"cancelled","Client cancelled task execution.",t.sessionId),this._clearTaskQueue(e.params.taskId);const r=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!r)throw new as(M.InvalidParams,`Task not found after cancellation: ${e.params.taskId}`);return{_meta:{},...r}}catch(s){if(s instanceof as)throw s;throw new as(M.InvalidRequest,`Failed to cancel task: ${s instanceof Error?s.message:String(s)}`)}}))}async _oncancel(e){if(!e.params.requestId)return;const t=this._requestHandlerAbortControllers.get(e.params.requestId);t?.abort(e.params.reason)}_setupTimeout(e,t,s,r,a=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:s,resetTimeoutOnProgress:a,onTimeout:r})}_resetTimeout(e){const t=this._timeoutInfo.get(e);if(!t)return!1;const s=Date.now()-t.startTime;if(t.maxTotalTimeout&&s>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),as.fromError(M.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:s});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){const t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;const t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};const s=this.transport?.onerror;this._transport.onerror=e=>{s?.(e),this._onerror(e)};const r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),z(e)||$.safeParse(e).success?this._onresponse(e):x(e)?this._onrequest(e,t):E.safeParse(e).success?this._onnotification(e):this._onerror(new Error(`Unknown message type: ${JSON.stringify(e)}`))},await this._transport.start()}_onclose(){const e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(const s of this._requestHandlerAbortControllers.values())s.abort();this._requestHandlerAbortControllers.clear();const t=as.fromError(M.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(const s of e.values())s(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){const t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;void 0!==t&&Promise.resolve().then(()=>t(e)).catch(e=>this._onerror(new Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){const s=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,r=this._transport,a=e.params?._meta?.[g]?.taskId;if(void 0===s){const t={jsonrpc:"2.0",id:e.id,error:{code:M.MethodNotFound,message:"Method not found"}};return void(a&&this._taskMessageQueue?this._enqueueTaskMessage(a,{type:"error",message:t,timestamp:Date.now()},r?.sessionId).catch(e=>this._onerror(new Error(`Failed to enqueue error response: ${e}`))):r?.send(t).catch(e=>this._onerror(new Error(`Failed to send an error response: ${e}`))))}const o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);const i=b.safeParse(e.params).success?e.params.task:void 0,n=this._taskStore?this.requestTaskStore(e,r?.sessionId):void 0,l={signal:o.signal,sessionId:r?.sessionId,_meta:e.params?._meta,sendNotification:async t=>{if(o.signal.aborted)return;const s={relatedRequestId:e.id};a&&(s.relatedTask={taskId:a}),await this.notification(t,s)},sendRequest:async(t,s,r)=>{if(o.signal.aborted)throw new as(M.ConnectionClosed,"Request was cancelled");const i={...r,relatedRequestId:e.id};a&&!i.relatedTask&&(i.relatedTask={taskId:a});const l=i.relatedTask?.taskId??a;return l&&n&&await n.updateTaskStatus(l,"input_required"),await this.request(t,s,i)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:a,taskStore:n,taskRequestedTtl:i?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{i&&this.assertTaskHandlerCapability(e.method)}).then(()=>s(e,l)).then(async t=>{if(o.signal.aborted)return;const s={result:t,jsonrpc:"2.0",id:e.id};a&&this._taskMessageQueue?await this._enqueueTaskMessage(a,{type:"response",message:s,timestamp:Date.now()},r?.sessionId):await(r?.send(s))},async t=>{if(o.signal.aborted)return;const s={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(t.code)?t.code:M.InternalError,message:t.message??"Internal error",...void 0!==t.data&&{data:t.data}}};a&&this._taskMessageQueue?await this._enqueueTaskMessage(a,{type:"error",message:s,timestamp:Date.now()},r?.sessionId):await(r?.send(s))}).catch(e=>this._onerror(new Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){const{progressToken:t,...s}=e.params,r=Number(t),a=this._progressHandlers.get(r);if(!a)return void this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));const o=this._responseHandlers.get(r),i=this._timeoutInfo.get(r);if(i&&o&&i.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(n){return this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),void o(n)}a(s)}_onresponse(e){const t=Number(e.id),s=this._requestResolvers.get(t);if(s)return this._requestResolvers.delete(t),void(z(e)?s(e):s(new as(e.error.code,e.error.message,e.error.data)));const r=this._responseHandlers.get(t);if(void 0===r)return void this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));this._responseHandlers.delete(t),this._cleanupTimeout(t);let a=!1;if(z(e)&&e.result&&"object"===typeof e.result){const s=e.result;if(s.task&&"object"===typeof s.task){const e=s.task;"string"===typeof e.taskId&&(a=!0,this._taskProgressTokens.set(e.taskId,t))}}a||this._progressHandlers.delete(t),z(e)?r(e):r(as.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await(this._transport?.close())}async*requestStream(e,t,s){const{task:r}=s??{};if(!r){try{const r=await this.request(e,t,s);yield{type:"result",result:r}}catch(o){yield{type:"error",error:o instanceof as?o:new as(M.InternalError,String(o))}}return}let a;try{const r=await this.request(e,de,s);if(!r.task)throw new as(M.InternalError,"Task creation did not return a task");for(a=r.task.taskId,yield{type:"taskCreated",task:r.task};;){const e=await this.getTask({taskId:a},s);if(yield{type:"taskStatus",task:e},is(e.status)){if("completed"===e.status){const e=await this.getTaskResult({taskId:a},t,s);yield{type:"result",result:e}}else"failed"===e.status?yield{type:"error",error:new as(M.InternalError,`Task ${a} failed`)}:"cancelled"===e.status&&(yield{type:"error",error:new as(M.InternalError,`Task ${a} was cancelled`)});return}if("input_required"===e.status){const e=await this.getTaskResult({taskId:a},t,s);return void(yield{type:"result",result:e})}const r=e.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(e=>setTimeout(e,r)),s?.signal?.throwIfAborted()}}catch(o){yield{type:"error",error:o instanceof as?o:new as(M.InternalError,String(o))}}}request(e,t,s){const{relatedRequestId:r,resumptionToken:a,onresumptiontoken:o,task:i,relatedTask:l}=s??{};return new Promise((c,d)=>{const u=e=>{d(e)};if(!this._transport)return void u(new Error("Not connected"));if(!0===this._options?.enforceStrictCapabilities)try{this.assertCapabilityForMethod(e.method),i&&this.assertTaskCapability(e.method)}catch(_){return void u(_)}s?.signal?.throwIfAborted();const p=this._requestMessageId++,m={...e,jsonrpc:"2.0",id:p};s?.onprogress&&(this._progressHandlers.set(p,s.onprogress),m.params={...e.params,_meta:{...e.params?._meta||{},progressToken:p}}),i&&(m.params={...m.params,task:i}),l&&(m.params={...m.params,_meta:{...m.params?._meta||{},[g]:l}});const h=e=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(e)}},{relatedRequestId:r,resumptionToken:a,onresumptiontoken:o}).catch(e=>this._onerror(new Error(`Failed to send cancellation: ${e}`)));const t=e instanceof as?e:new as(M.RequestTimeout,String(e));d(t)};this._responseHandlers.set(p,e=>{if(!s?.signal?.aborted){if(e instanceof Error)return d(e);try{const s=n(t,e.result);s.success?c(s.data):d(s.error)}catch(r){d(r)}}}),s?.signal?.addEventListener("abort",()=>{h(s?.signal?.reason)});const f=s?.timeout??6e4;this._setupTimeout(p,f,s?.maxTotalTimeout,()=>h(as.fromError(M.RequestTimeout,"Request timed out",{timeout:f})),s?.resetTimeoutOnProgress??!1);const k=l?.taskId;k?(this._requestResolvers.set(p,e=>{const t=this._responseHandlers.get(p);t?t(e):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))}),this._enqueueTaskMessage(k,{type:"request",message:m,timestamp:Date.now()}).catch(e=>{this._cleanupTimeout(p),d(e)})):this._transport.send(m,{relatedRequestId:r,resumptionToken:a,onresumptiontoken:o}).catch(e=>{this._cleanupTimeout(p),d(e)})})}async getTask(e,t){return this.request({method:"tasks/get",params:e},he,t)}async getTaskResult(e,t,s){return this.request({method:"tasks/result",params:e},t,s)}async listTasks(e,t){return this.request({method:"tasks/list",params:e},ke,t)}async cancelTask(e,t){return this.request({method:"tasks/cancel",params:e},we,t)}async notification(e,t){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(e.method);const s=t?.relatedTask?.taskId;if(s){const r={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[g]:t.relatedTask}}};return void await this._enqueueTaskMessage(s,{type:"notification",message:r,timestamp:Date.now()})}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;return this._pendingDebouncedNotifications.add(e.method),void Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let s={...e,jsonrpc:"2.0"};t?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[g]:t.relatedTask}}}),this._transport?.send(s,t).catch(e=>this._onerror(e))})}let r={...e,jsonrpc:"2.0"};t?.relatedTask&&(r={...r,params:{...r.params,_meta:{...r.params?._meta||{},[g]:t.relatedTask}}}),await this._transport.send(r,t)}setRequestHandler(e,t){const s=cs(e);this.assertRequestHandlerCapability(s),this._requestHandlers.set(s,(s,r)=>{const a=ds(e,s);return Promise.resolve(t(a,r))})}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){const s=cs(e);this._notificationHandlers.set(s,s=>{const r=ds(e,s);return Promise.resolve(t(r))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){const t=this._taskProgressTokens.get(e);void 0!==t&&(this._progressHandlers.delete(t),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,t,s){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");const r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,s,r)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){const s=await this._taskMessageQueue.dequeueAll(e,t);for(const t of s)if("request"===t.type&&x(t.message)){const s=t.message.id,r=this._requestResolvers.get(s);r?(r(new as(M.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let s=this._options?.defaultTaskPollInterval??1e3;try{const t=await(this._taskStore?.getTask(e));t?.pollInterval&&(s=t.pollInterval)}catch{}return new Promise((e,r)=>{if(t.aborted)return void r(new as(M.InvalidRequest,"Request cancelled"));const a=setTimeout(e,s);t.addEventListener("abort",()=>{clearTimeout(a),r(new as(M.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,t){const s=this._taskStore;if(!s)throw new Error("No task store configured");return{createTask:async r=>{if(!e)throw new Error("No request provided");return await s.createTask(r,e.id,{method:e.method,params:e.params},t)},getTask:async e=>{const r=await s.getTask(e,t);if(!r)throw new as(M.InvalidParams,"Failed to retrieve task: Task not found");return r},storeTaskResult:async(e,r,a)=>{await s.storeTaskResult(e,r,a,t);const o=await s.getTask(e,t);if(o){const t=pe.parse({method:"notifications/tasks/status",params:o});await this.notification(t),is(o.status)&&this._cleanupTaskProgressHandler(e)}},getTaskResult:e=>s.getTaskResult(e,t),updateTaskStatus:async(e,r,a)=>{const o=await s.getTask(e,t);if(!o)throw new as(M.InvalidParams,`Task "${e}" not found - it may have been cleaned up`);if(is(o.status))throw new as(M.InvalidParams,`Cannot update task "${e}" from terminal status "${o.status}" to "${r}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await s.updateTaskStatus(e,r,a,t);const i=await s.getTask(e,t);if(i){const t=pe.parse({method:"notifications/tasks/status",params:i});await this.notification(t),is(i.status)&&this._cleanupTaskProgressHandler(e)}},listTasks:e=>s.listTasks(e,t)}}}function ps(e){return null!==e&&"object"===typeof e&&!Array.isArray(e)}var ms=s(63282),hs=s(68182);class fs{constructor(e){this._ajv=e??function(){const e=new ms({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return hs(e),e}()}getValidator(e){const t="$id"in e&&"string"===typeof e.$id?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return e=>t(e)?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(t.errors)}}}class gs{constructor(e){this._server=e}requestStream(e,t,s){return this._server.requestStream(e,t,s)}async getTask(e,t){return this._server.getTask({taskId:e},t)}async getTaskResult(e,t,s){return this._server.getTaskResult({taskId:e},t,s)}async listTasks(e,t){return this._server.listTasks(e?{cursor:e}:void 0,t)}async cancelTask(e,t){return this._server.cancelTask({taskId:e},t)}}class ks extends us{constructor(e,t){super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(ht.options.map((e,t)=>[e,t])),this.isMessageIgnored=(e,t)=>{const s=this._loggingLevels.get(t);return!!s&&this.LOG_LEVEL_SEVERITY.get(e)<this.LOG_LEVEL_SEVERITY.get(s)},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new fs,this.setRequestHandler(G,e=>this._oninitialize(e)),this.setNotificationHandler(ee,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(gt,async(e,t)=>{const s=t.sessionId||t.requestInfo?.headers["mcp-session-id"]||void 0,{level:r}=e.params,a=ht.safeParse(r);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new gs(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=function(e,t){const s={...e};for(const r in t){const e=r,a=t[e];if(void 0===a)continue;const o=s[e];s[e]=ps(o)&&ps(a)?{...o,...a}:a}return s}(this._capabilities,e)}setRequestHandler(e,t){const s=c(e),r=s?.method;if(!r)throw new Error("Schema is missing a method literal");let a;if(o(r)){const e=r,t=e._zod?.def;a=t?.value??e.value}else{const e=r,t=e._def;a=t?.value??e.value}if("string"!==typeof a)throw new Error("Schema method literal must be a string");return super.setRequestHandler(e,"tools/call"===a?async(e,s)=>{const r=n(pt,e);if(!r.success){const e=r.error instanceof Error?r.error.message:String(r.error);throw new as(M.InvalidParams,`Invalid tools/call request: ${e}`)}const{params:a}=r.data,o=await Promise.resolve(t(e,s));if(a.task){const e=n(de,o);if(!e.success){const t=e.error instanceof Error?e.error.message:String(e.error);throw new as(M.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}const i=n(dt,o);if(!i.success){const e=i.error instanceof Error?i.error.message:String(i.error);throw new as(M.InvalidParams,`Invalid tools/call result: ${e}`)}return i.data}:t)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`)}}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/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`)}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (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"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`)}}assertTaskCapability(e){!function(e,t,s){if(!e)throw new Error(`${s} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${s} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${s} does not support task creation for elicitation/create (required for ${t})`)}}(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&function(e,t,s){if(!e)throw new Error(`${s} does not support task creation (required for ${t})`);if("tools/call"===t&&!e.tools?.call)throw new Error(`${s} does not support task creation for tools/call (required for ${t})`)}(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){const t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:f.includes(t)?t:h,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"},O)}async createMessage(e,t){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){const t=e.messages[e.messages.length-1],s=Array.isArray(t.content)?t.content:[t.content],r=s.some(e=>"tool_result"===e.type),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,o=a?Array.isArray(a.content)?a.content:[a.content]:[],i=o.some(e=>"tool_use"===e.type);if(r){if(s.some(e=>"tool_result"!==e.type))throw new Error("The last message must contain only tool_result content if any is present");if(!i)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(i){const e=new Set(o.filter(e=>"tool_use"===e.type).map(e=>e.id)),t=new Set(s.filter(e=>"tool_result"===e.type).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.request({method:"sampling/createMessage",params:e},e.tools?Rt:Yt,t)}async elicitInput(e,t){switch(e.mode??"form"){case"url":if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");return this.request({method:"elicitation/create",params:e},Qt,t);case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");const r="form"===e.mode?e:{...e,mode:"form"},a=await this.request({method:"elicitation/create",params:r},Qt,t);if("accept"===a.action&&a.content&&r.requestedSchema)try{const e=this._jsonSchemaValidator.getValidator(r.requestedSchema)(a.content);if(!e.valid)throw new as(M.InvalidParams,`Elicitation response content does not match requested schema: ${e.errorMessage}`)}catch(s){if(s instanceof as)throw s;throw new as(M.InternalError,`Error validating elicitation response: ${s instanceof Error?s.message:String(s)}`)}return a}}}createElicitationCompletionNotifier(e,t){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},t)}async listRoots(e,t){return this.request({method:"roots/list",params:e},ss,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))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"})}}const _s=Symbol.for("mcp.completable");function ws(e){return!!e&&"object"===typeof e&&_s in e}var ys;!function(e){e.Completable="McpCompletable"}(ys||(ys={}));const Ps=/^[A-Za-z0-9._-]{1,128}$/;function vs(e){const t=function(e){const t=[];if(0===e.length)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(" ")&&t.push("Tool name contains spaces, which may cause parsing issues"),e.includes(",")&&t.push("Tool name contains commas, which may cause parsing issues"),(e.startsWith("-")||e.endsWith("-"))&&t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(e.startsWith(".")||e.endsWith("."))&&t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!Ps.test(e)){const s=e.split("").filter(e=>!/[A-Za-z0-9._-]/.test(e)).filter((e,t,s)=>s.indexOf(e)===t);return t.push(`Tool name contains invalid characters: ${s.map(e=>`"${e}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}(e);return function(e,t){if(t.length>0)for(const s of t);}(0,t.warnings),t.isValid}class Is{constructor(e){this._mcpServer=e}registerToolTask(e,t,s){const r={taskSupport:"required",...t.execution};if("forbidden"===r.taskSupport)throw new Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,t.title,t.description,t.inputSchema,t.outputSchema,t.annotations,r,t._meta,s)}}var Ts=s(8354);class bs{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 ks(e,t)}get experimental(){return this._experimental||(this._experimental={tasks:new Is(this)}),this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(Cs(lt)),this.server.assertCanSetRequestHandler(Cs(pt)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(lt,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,t])=>{const s={name:e,title:t.title,description:t.description,inputSchema:(()=>{const e=d(t.inputSchema);return e?ls(e,{strictUnions:!0,pipeStrategy:"input"}):qs})(),annotations:t.annotations,execution:t.execution,_meta:t._meta};if(t.outputSchema){const e=d(t.outputSchema);e&&(s.outputSchema=ls(e,{strictUnions:!0,pipeStrategy:"output"}))}return s})})),this.server.setRequestHandler(pt,async(e,t)=>{try{const s=this._registeredTools[e.params.name];if(!s)throw new as(M.InvalidParams,`Tool ${e.params.name} not found`);if(!s.enabled)throw new as(M.InvalidParams,`Tool ${e.params.name} disabled`);const r=!!e.params.task,a=s.execution?.taskSupport,o="createTask"in s.handler;if(("required"===a||"optional"===a)&&!o)throw new as(M.InternalError,`Tool ${e.params.name} has taskSupport '${a}' but was not registered with registerToolTask`);if("required"===a&&!r)throw new as(M.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if("optional"===a&&!r&&o)return await this.handleAutomaticTaskPolling(s,e,t);const i=await this.validateToolInput(s,e.params.arguments,e.params.name),n=await this.executeToolHandler(s,i,t);return r||await this.validateToolOutput(s,n,e.params.name),n}catch(s){if(s instanceof as&&s.code===M.UrlElicitationRequired)throw s;return this.createToolError(s instanceof Error?s.message:String(s))}}),this._toolHandlersInitialized=!0)}createToolError(e){return{content:[{type:"text",text:e}],isError:!0}}async validateToolInput(e,t,s){if(!e.inputSchema)return;const r=d(e.inputSchema)??e.inputSchema,a=await l(r,t);if(!a.success){const e=u("error"in a?a.error:"Unknown error");throw new as(M.InvalidParams,`Input validation error: Invalid arguments for tool ${s}: ${e}`)}return a.data}async validateToolOutput(e,t,s){if(!e.outputSchema)return;if(!("content"in t))return;if(t.isError)return;if(!t.structuredContent)throw new as(M.InvalidParams,`Output validation error: Tool ${s} has an output schema but no structured content was provided`);const r=d(e.outputSchema),a=await l(r,t.structuredContent);if(!a.success){const e=u("error"in a?a.error:"Unknown error");throw new as(M.InvalidParams,`Output validation error: Invalid structured content for tool ${s}: ${e}`)}}async executeToolHandler(e,t,s){const r=e.handler;if("createTask"in r){if(!s.taskStore)throw new Error("No task store provided.");const a={...s,taskStore:s.taskStore};if(e.inputSchema){const e=r;return await Promise.resolve(e.createTask(t,a))}{const e=r;return await Promise.resolve(e.createTask(a))}}if(e.inputSchema){const e=r;return await Promise.resolve(e(t,s))}{const e=r;return await Promise.resolve(e(s))}}async handleAutomaticTaskPolling(e,t,s){if(!s.taskStore)throw new Error("No task store provided for task-capable tool.");const r=await this.validateToolInput(e,t.params.arguments,t.params.name),a=e.handler,o={...s,taskStore:s.taskStore},i=r?await Promise.resolve(a.createTask(r,o)):await Promise.resolve(a.createTask(o)),n=i.task.taskId;let l=i.task;const c=l.pollInterval??5e3;for(;"completed"!==l.status&&"failed"!==l.status&&"cancelled"!==l.status;){await new Promise(e=>setTimeout(e,c));const e=await s.taskStore.getTask(n);if(!e)throw new as(M.InternalError,`Task ${n} not found during polling`);l=e}return await s.taskStore.getTaskResult(n)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(Cs(Bt)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Bt,async e=>{switch(e.params.ref.type){case"ref/prompt":return function(e){if("ref/prompt"!==e.params.ref.type)throw new TypeError(`Expected CompleteRequestPrompt, but got ${e.params.ref.type}`)}(e),this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return function(e){if("ref/resource"!==e.params.ref.type)throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${e.params.ref.type}`)}(e),this.handleResourceCompletion(e,e.params.ref);default:throw new as(M.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,t){const s=this._registeredPrompts[t.name];if(!s)throw new as(M.InvalidParams,`Prompt ${t.name} not found`);if(!s.enabled)throw new as(M.InvalidParams,`Prompt ${t.name} disabled`);if(!s.argsSchema)return Es;const r=c(s.argsSchema),a=r?.[e.params.argument.name];if(!ws(a))return Es;const o=function(e){const t=e[_s];return t?.complete}(a);return o?xs(await o(e.params.argument.value,e.params.context)):Es}async handleResourceCompletion(e,t){const s=Object.values(this._registeredResourceTemplates).find(e=>e.resourceTemplate.uriTemplate.toString()===t.uri);if(!s){if(this._registeredResources[t.uri])return Es;throw new as(M.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}const r=s.resourceTemplate.completeCallback(e.params.argument.name);return r?xs(await r(e.params.argument.value,e.params.context)):Es}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(Cs(Ye)),this.server.assertCanSetRequestHandler(Cs(Se)),this.server.assertCanSetRequestHandler(Cs(He)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Ye,async(e,t)=>{const s=Object.entries(this._registeredResources).filter(([e,t])=>t.enabled).map(([e,t])=>({uri:e,name:t.name,...t.metadata})),r=[];for(const a of Object.values(this._registeredResourceTemplates)){if(!a.resourceTemplate.listCallback)continue;const e=await a.resourceTemplate.listCallback(t);for(const t of e.resources)r.push({...a.metadata,...t})}return{resources:[...s,...r]}}),this.server.setRequestHandler(Se,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([e,t])=>({name:e,uriTemplate:t.resourceTemplate.uriTemplate.toString(),...t.metadata}))})),this.server.setRequestHandler(He,async(e,t)=>{const s=new URL(e.params.uri),r=this._registeredResources[s.toString()];if(r){if(!r.enabled)throw new as(M.InvalidParams,`Resource ${s} disabled`);return r.readCallback(s,t)}for(const a of Object.values(this._registeredResourceTemplates)){const e=a.resourceTemplate.uriTemplate.match(s.toString());if(e)return a.readCallback(s,e,t)}throw new as(M.InvalidParams,`Resource ${s} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(Cs(Ke)),this.server.assertCanSetRequestHandler(Cs(Qe)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Ke,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,t])=>({name:e,title:t.title,description:t.description,arguments:t.argsSchema?Ss(t.argsSchema):void 0}))})),this.server.setRequestHandler(Qe,async(e,t)=>{const s=this._registeredPrompts[e.params.name];if(!s)throw new as(M.InvalidParams,`Prompt ${e.params.name} not found`);if(!s.enabled)throw new as(M.InvalidParams,`Prompt ${e.params.name} disabled`);if(s.argsSchema){const r=d(s.argsSchema),a=await l(r,e.params.arguments);if(!a.success){const t=u("error"in a?a.error:"Unknown error");throw new as(M.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${t}`)}const o=a.data,i=s.callback;return await Promise.resolve(i(o,t))}{const e=s.callback;return await Promise.resolve(e(t))}}),this._promptHandlersInitialized=!0)}resource(e,t,...s){let r;"object"===typeof s[0]&&(r=s.shift());const a=s[0];if("string"===typeof t){if(this._registeredResources[t])throw new Error(`Resource ${t} is already registered`);const s=this._createRegisteredResource(e,void 0,t,r,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);const s=this._createRegisteredResourceTemplate(e,void 0,t,r,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(e,t,s,r){if("string"===typeof t){if(this._registeredResources[t])throw new Error(`Resource ${t} is already registered`);const a=this._createRegisteredResource(e,s.title,t,s,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);const a=this._createRegisteredResourceTemplate(e,s.title,t,s,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}}_createRegisteredResource(e,t,s,r,a){const o={name:e,title:t,metadata:r,readCallback:a,enabled:!0,disable:()=>o.update({enabled:!1}),enable:()=>o.update({enabled:!0}),remove:()=>o.update({uri:null}),update:e=>{"undefined"!==typeof e.uri&&e.uri!==s&&(delete this._registeredResources[s],e.uri&&(this._registeredResources[e.uri]=o)),"undefined"!==typeof e.name&&(o.name=e.name),"undefined"!==typeof e.title&&(o.title=e.title),"undefined"!==typeof e.metadata&&(o.metadata=e.metadata),"undefined"!==typeof e.callback&&(o.readCallback=e.callback),"undefined"!==typeof e.enabled&&(o.enabled=e.enabled),this.sendResourceListChanged()}};return this._registeredResources[s]=o,o}_createRegisteredResourceTemplate(e,t,s,r,a){const o={resourceTemplate:s,title:t,metadata:r,readCallback:a,enabled:!0,disable:()=>o.update({enabled:!1}),enable:()=>o.update({enabled:!0}),remove:()=>o.update({name:null}),update:t=>{"undefined"!==typeof t.name&&t.name!==e&&(delete this._registeredResourceTemplates[e],t.name&&(this._registeredResourceTemplates[t.name]=o)),"undefined"!==typeof t.title&&(o.title=t.title),"undefined"!==typeof t.template&&(o.resourceTemplate=t.template),"undefined"!==typeof t.metadata&&(o.metadata=t.metadata),"undefined"!==typeof t.callback&&(o.readCallback=t.callback),"undefined"!==typeof t.enabled&&(o.enabled=t.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=o;const i=s.uriTemplate.variableNames;return Array.isArray(i)&&i.some(e=>!!s.completeCallback(e))&&this.setCompletionRequestHandler(),o}_createRegisteredPrompt(e,t,s,r,a){const o={title:t,description:s,argsSchema:void 0===r?void 0:i(r),callback:a,enabled:!0,disable:()=>o.update({enabled:!1}),enable:()=>o.update({enabled:!0}),remove:()=>o.update({name:null}),update:t=>{"undefined"!==typeof t.name&&t.name!==e&&(delete this._registeredPrompts[e],t.name&&(this._registeredPrompts[t.name]=o)),"undefined"!==typeof t.title&&(o.title=t.title),"undefined"!==typeof t.description&&(o.description=t.description),"undefined"!==typeof t.argsSchema&&(o.argsSchema=i(t.argsSchema)),"undefined"!==typeof t.callback&&(o.callback=t.callback),"undefined"!==typeof t.enabled&&(o.enabled=t.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=o,r&&Object.values(r).some(e=>ws(e instanceof Ts.IiU?e._def?.innerType:e))&&this.setCompletionRequestHandler(),o}_createRegisteredTool(e,t,s,r,a,o,n,l,c){vs(e);const d={title:t,description:s,inputSchema:Rs(r),outputSchema:Rs(a),annotations:o,execution:n,_meta:l,handler:c,enabled:!0,disable:()=>d.update({enabled:!1}),enable:()=>d.update({enabled:!0}),remove:()=>d.update({name:null}),update:t=>{"undefined"!==typeof t.name&&t.name!==e&&("string"===typeof t.name&&vs(t.name),delete this._registeredTools[e],t.name&&(this._registeredTools[t.name]=d)),"undefined"!==typeof t.title&&(d.title=t.title),"undefined"!==typeof t.description&&(d.description=t.description),"undefined"!==typeof t.paramsSchema&&(d.inputSchema=i(t.paramsSchema)),"undefined"!==typeof t.outputSchema&&(d.outputSchema=i(t.outputSchema)),"undefined"!==typeof t.callback&&(d.handler=t.callback),"undefined"!==typeof t.annotations&&(d.annotations=t.annotations),"undefined"!==typeof t._meta&&(d._meta=t._meta),"undefined"!==typeof t.enabled&&(d.enabled=t.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=d,this.setToolRequestHandlers(),this.sendToolListChanged(),d}tool(e,...t){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let s,r,a;if("string"===typeof t[0]&&(s=t.shift()),t.length>1){const e=t[0];Ys(e)?(r=t.shift(),t.length>1&&"object"===typeof t[0]&&null!==t[0]&&!Ys(t[0])&&(a=t.shift())):"object"===typeof e&&null!==e&&(a=t.shift())}return this._createRegisteredTool(e,void 0,s,r,void 0,a,{taskSupport:"forbidden"},void 0,t[0])}registerTool(e,t,s){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);const{title:r,description:a,inputSchema:o,outputSchema:i,annotations:n,_meta:l}=t;return this._createRegisteredTool(e,r,a,o,i,n,{taskSupport:"forbidden"},l,s)}prompt(e,...t){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let s,r;"string"===typeof t[0]&&(s=t.shift()),t.length>1&&(r=t.shift());const a=this._createRegisteredPrompt(e,void 0,s,r,t[0]);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}registerPrompt(e,t,s){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);const{title:r,description:a,argsSchema:o}=t,i=this._createRegisteredPrompt(e,r,a,o,s);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),i}isConnected(){return void 0!==this.server.transport}async sendLoggingMessage(e,t){return this.server.sendLoggingMessage(e,t)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}}const qs={type:"object",properties:{}};function js(e){return null!==e&&"object"===typeof e&&"parse"in e&&"function"===typeof e.parse&&"safeParse"in e&&"function"===typeof e.safeParse}function Ys(e){return"object"===typeof e&&null!==e&&!function(e){return"_def"in e||"_zod"in e||js(e)}(e)&&(0===Object.keys(e).length||Object.values(e).some(js))}function Rs(e){if(e)return Ys(e)?i(e):e}function Ss(e){const t=c(e);return t?Object.entries(t).map(([e,t])=>{const s=function(e){return e.description}(t),r=function(e){if(o(e)){const t=e;return"optional"===t._zod?.def?.type}const t=e;return"function"===typeof e.isOptional?e.isOptional():"ZodOptional"===t._def?.typeName}(t);return{name:e,description:s,required:!r}}):[]}function Cs(e){const t=c(e),s=t?.method;if(!s)throw new Error("Schema is missing a method literal");const r=p(s);if("string"===typeof r)return r;throw new Error("Schema method literal must be a string")}function xs(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}const Es={completion:{values:[],hasMore:!1}}}}]);
Save
Back