@aborruso/ckan-mcp-server 0.4.42 → 0.4.43

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/LOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # LOG
2
2
 
3
- ## 2026-02-22
3
+ ## 2026-02-22 (v0.4.43)
4
+
5
+ - Fix MCP Apps message listener to use correct JSON-RPC method per ext-apps spec:
6
+ - `ui/notifications/tool-result` (was `ui/toolResult`) with data in `msg.params.structuredContent`
7
+ - Fixed in both `src/ui/datastore-table.html` and inlined HTML in `src/resources/datastore-table-ui.ts`
8
+ - Kept fallbacks for older/alternative message shapes
4
9
 
5
10
  - Audit and improve Zod parameter descriptions across all tools for "code mode" SDK compatibility:
6
11
  - `ckan_organization_list/show/search`: added `.describe()` on all parameters (previously none)
package/dist/index.js CHANGED
@@ -7187,13 +7187,14 @@ var DATASTORE_TABLE_HTML = `<!DOCTYPE html>
7187
7187
  window.addEventListener('message',function(event){
7188
7188
  var msg=event.data;
7189
7189
  if(!msg||typeof msg!=='object') return;
7190
- // ext-apps: ui/toolResult notification
7190
+ // ext-apps spec: ui/notifications/tool-result with structuredContent
7191
7191
  var data=null;
7192
- if(msg.method==='ui/toolResult'&&msg.params&&msg.params.result){
7193
- data=msg.params.result.structuredContent||null;
7192
+ if(msg.method==='ui/notifications/tool-result'&&msg.params&&msg.params.structuredContent){
7193
+ data=msg.params.structuredContent;
7194
7194
  }
7195
- // fallback: direct structuredContent or legacy _meta
7195
+ // fallbacks for older/alternative shapes
7196
7196
  if(!data) data=
7197
+ (msg.method==='ui/toolResult'&&msg.params&&msg.params.result&&msg.params.result.structuredContent)||
7197
7198
  msg.structuredContent||
7198
7199
  (msg.fields&&msg.records?msg:null);
7199
7200
  if(data&&(data.fields||data.records)) initTable(data);
package/dist/worker.js CHANGED
@@ -38,7 +38,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
38
38
  `:`[${i[u]}\r
39
39
  ]`;continue}n+=i[u],i[u]==="\\"?o=!0:a&&i[u]==="]"?a=!1:!a&&i[u]==="["&&(a=!0)}try{new RegExp(n)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return n}function nu(e,t){if(t.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),t.target==="openApi3"&&e.keyType?._def.typeName===I.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((i,n)=>({...i,[n]:J(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",n]})??Oe(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let r={type:"object",additionalProperties:J(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if(t.target==="openApi3")return r;if(e.keyType?._def.typeName===I.ZodString&&e.keyType._def.checks?.length){let{type:i,...n}=ru(e.keyType._def,t);return{...r,propertyNames:n}}else{if(e.keyType?._def.typeName===I.ZodEnum)return{...r,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===I.ZodBranded&&e.keyType._def.type._def.typeName===I.ZodString&&e.keyType._def.type._def.checks?.length){let{type:i,...n}=tu(e.keyType._def,t);return{...r,propertyNames:n}}}return r}function cb(e,t){if(t.mapStrategy==="record")return nu(e,t);let r=J(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||Oe(t),i=J(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||Oe(t);return{type:"array",maxItems:125,items:{type:"array",items:[r,i],minItems:2,maxItems:2}}}function lb(e){let t=e.values,i=Object.keys(e.values).filter(o=>typeof t[t[o]]!="number").map(o=>t[o]),n=Array.from(new Set(i.map(o=>typeof o)));return{type:n.length===1?n[0]==="string"?"string":"number":["string","number"],enum:i}}function db(e){return e.target==="openAi"?void 0:{not:Oe({...e,currentPath:[...e.currentPath,"not"]})}}function fb(e){return e.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Ao={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function mb(e,t){if(t.target==="openApi3")return pb(e,t);let r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(i=>i._def.typeName in Ao&&(!i._def.checks||!i._def.checks.length))){let i=r.reduce((n,o)=>{let a=Ao[o._def.typeName];return a&&!n.includes(a)?[...n,a]:n},[]);return{type:i.length>1?i:i[0]}}else if(r.every(i=>i._def.typeName==="ZodLiteral"&&!i.description)){let i=r.reduce((n,o)=>{let a=typeof o._def.value;switch(a){case"string":case"number":case"boolean":return[...n,a];case"bigint":return[...n,"integer"];case"object":if(o._def.value===null)return[...n,"null"];default:return n}},[]);if(i.length===r.length){let n=i.filter((o,a,s)=>s.indexOf(o)===a);return{type:n.length>1?n:n[0],enum:r.reduce((o,a)=>o.includes(a._def.value)?o:[...o,a._def.value],[])}}}else if(r.every(i=>i._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((i,n)=>[...i,...n._def.values.filter(o=>!i.includes(o))],[])};return pb(e,t)}var pb=(e,t)=>{let r=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((i,n)=>J(i._def,{...t,currentPath:[...t.currentPath,"anyOf",`${n}`]})).filter(i=>!!i&&(!t.strictUnions||typeof i=="object"&&Object.keys(i).length>0));return r.length?{anyOf:r}:void 0};function hb(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target==="openApi3"?{type:Ao[e.innerType._def.typeName],nullable:!0}:{type:[Ao[e.innerType._def.typeName],"null"]};if(t.target==="openApi3"){let i=J(e.innerType._def,{...t,currentPath:[...t.currentPath]});return i&&"$ref"in i?{allOf:[i],nullable:!0}:i&&{...i,nullable:!0}}let r=J(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function gb(e,t){let r={type:"number"};if(!e.checks)return r;for(let i of e.checks)switch(i.kind){case"int":r.type="integer",Hf(r,"type",i.message,t);break;case"min":t.target==="jsonSchema7"?i.inclusive?ce(r,"minimum",i.value,i.message,t):ce(r,"exclusiveMinimum",i.value,i.message,t):(i.inclusive||(r.exclusiveMinimum=!0),ce(r,"minimum",i.value,i.message,t));break;case"max":t.target==="jsonSchema7"?i.inclusive?ce(r,"maximum",i.value,i.message,t):ce(r,"exclusiveMaximum",i.value,i.message,t):(i.inclusive||(r.exclusiveMaximum=!0),ce(r,"maximum",i.value,i.message,t));break;case"multipleOf":ce(r,"multipleOf",i.value,i.message,t);break}return r}function vb(e,t){let r=t.target==="openAi",i={type:"object",properties:{}},n=[],o=e.shape();for(let s in o){let u=o[s];if(u===void 0||u._def===void 0)continue;let c=rA(u);c&&r&&(u._def.typeName==="ZodOptional"&&(u=u._def.innerType),u.isNullable()||(u=u.nullable()),c=!1);let l=J(u._def,{...t,currentPath:[...t.currentPath,"properties",s],propertyPath:[...t.currentPath,"properties",s]});l!==void 0&&(i.properties[s]=l,c||n.push(s))}n.length&&(i.required=n);let a=tA(e,t);return a!==void 0&&(i.additionalProperties=a),i}function tA(e,t){if(e.catchall._def.typeName!=="ZodNever")return J(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return t.removeAdditionalStrategy==="strict"?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function rA(e){try{return e.isOptional()}catch{return!0}}var yb=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return J(e.innerType._def,t);let r=J(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:Oe(t)},r]}:Oe(t)};var _b=(e,t)=>{if(t.pipeStrategy==="input")return J(e.in._def,t);if(t.pipeStrategy==="output")return J(e.out._def,t);let r=J(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),i=J(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,i].filter(n=>n!==void 0)}};function bb(e,t){return J(e.type._def,t)}function $b(e,t){let i={type:"array",uniqueItems:!0,items:J(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&ce(i,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&ce(i,"maxItems",e.maxSize.value,e.maxSize.message,t),i}function xb(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((r,i)=>J(r._def,{...t,currentPath:[...t.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[]),additionalItems:J(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((r,i)=>J(r._def,{...t,currentPath:[...t.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[])}}function wb(e){return{not:Oe(e)}}function kb(e){return Oe(e)}var Sb=(e,t)=>J(e.innerType._def,t);var zb=(e,t,r)=>{switch(t){case I.ZodString:return ru(e,r);case I.ZodNumber:return gb(e,r);case I.ZodObject:return vb(e,r);case I.ZodBigInt:return eb(e,r);case I.ZodBoolean:return tb();case I.ZodDate:return Kf(e,r);case I.ZodUndefined:return wb(r);case I.ZodNull:return fb(r);case I.ZodArray:return Y_(e,r);case I.ZodUnion:case I.ZodDiscriminatedUnion:return mb(e,r);case I.ZodIntersection:return ab(e,r);case I.ZodTuple:return xb(e,r);case I.ZodRecord:return nu(e,r);case I.ZodLiteral:return sb(e,r);case I.ZodEnum:return ob(e);case I.ZodNativeEnum:return lb(e);case I.ZodNullable:return hb(e,r);case I.ZodOptional:return yb(e,r);case I.ZodMap:return cb(e,r);case I.ZodSet:return $b(e,r);case I.ZodLazy:return()=>e.getter()._def;case I.ZodPromise:return bb(e,r);case I.ZodNaN:case I.ZodNever:return db(r);case I.ZodEffects:return ib(e,r);case I.ZodAny:return Oe(r);case I.ZodUnknown:return kb(r);case I.ZodDefault:return nb(e,r);case I.ZodBranded:return tu(e,r);case I.ZodReadonly:return Sb(e,r);case I.ZodCatch:return rb(e,r);case I.ZodPipeline:return _b(e,r);case I.ZodFunction:case I.ZodVoid:case I.ZodSymbol:return;default:return(i=>{})(t)}};function J(e,t,r=!1){let i=t.seen.get(e);if(t.override){let s=t.override?.(e,t,i,r);if(s!==G_)return s}if(i&&!r){let s=nA(i,t);if(s!==void 0)return s}let n={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,n);let o=zb(e,e.typeName,t),a=typeof o=="function"?J(o(),t):o;if(a&&iA(e,t,a),t.postProcess){let s=t.postProcess(a,e,t);return n.jsonSchema=a,s}return n.jsonSchema=a,a}var nA=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:eu(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((r,i)=>t.currentPath[i]===r)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),Oe(t)):t.$refStrategy==="seen"?Oe(t):void 0}},iA=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription&&(r.markdownDescription=e.description)),r);var Xf=(e,t)=>{let r=Q_(t),i=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((u,[c,l])=>({...u,[c]:J(l._def,{...r,currentPath:[...r.basePath,r.definitionPath,c]},!0)??Oe(r)}),{}):void 0,n=typeof t=="string"?t:t?.nameStrategy==="title"?void 0:t?.name,o=J(e._def,n===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,n]},!1)??Oe(r),a=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;a!==void 0&&(o.title=a),r.flags.hasReferencedOpenAiAnyType&&(i||(i={}),i[r.openAiAnyTypeName]||(i[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let s=n===void 0?i?{...o,[r.definitionPath]:i}:o:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,n].join("/"),[r.definitionPath]:{...i,[n]:o}};return r.target==="jsonSchema7"?s.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(s.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in s||"oneOf"in s||"allOf"in s||"type"in s&&Array.isArray(s.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),s};function oA(e){return!e||e==="jsonSchema7"||e==="draft-7"?"draft-7":e==="jsonSchema2019-09"||e==="draft-2020-12"?"draft-2020-12":"draft-7"}function Qf(e,t){return zt(e)?bf(e,{target:oA(t?.target),io:t?.pipeStrategy??"input"}):Xf(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??"input"})}function Yf(e){let r=Fr(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let i=Os(r);if(typeof i!="string")throw new Error("Schema method literal must be a string");return i}function ep(e,t){let r=Lr(e,t);if(!r.success)throw r.error;return r.data}var aA=6e4,jo=class{constructor(t){this._options=t,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(Zs,r=>{this._oncancel(r)}),this.setNotificationHandler(Us,r=>{this._onprogress(r)}),this.setRequestHandler(zo,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Ms,async(r,i)=>{let n=await this._taskStore.getTask(r.params.taskId,i.sessionId);if(!n)throw new D(q.InvalidParams,"Failed to retrieve task: Task not found");return{...n}}),this.setRequestHandler(Ls,async(r,i)=>{let n=async()=>{let o=r.params.taskId;if(this._taskMessageQueue){let s;for(;s=await this._taskMessageQueue.dequeue(o,i.sessionId);){if(s.type==="response"||s.type==="error"){let u=s.message,c=u.id,l=this._requestResolvers.get(c);if(l)if(this._requestResolvers.delete(c),s.type==="response")l(u);else{let d=u,p=new D(d.error.code,d.error.message,d.error.data);l(p)}else{let d=s.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${c}`))}continue}await this._transport?.send(s.message,{relatedRequestId:i.requestId})}}let a=await this._taskStore.getTask(o,i.sessionId);if(!a)throw new D(q.InvalidParams,`Task not found: ${o}`);if(!Br(a.status))return await this._waitForTaskUpdate(o,i.signal),await n();if(Br(a.status)){let s=await this._taskStore.getTaskResult(o,i.sessionId);return this._clearTaskQueue(o),{...s,_meta:{...s._meta,[Vr]:{taskId:o}}}}return await n()};return await n()}),this.setRequestHandler(Fs,async(r,i)=>{try{let{tasks:n,nextCursor:o}=await this._taskStore.listTasks(r.params?.cursor,i.sessionId);return{tasks:n,nextCursor:o,_meta:{}}}catch(n){throw new D(q.InvalidParams,`Failed to list tasks: ${n instanceof Error?n.message:String(n)}`)}}),this.setRequestHandler(Js,async(r,i)=>{try{let n=await this._taskStore.getTask(r.params.taskId,i.sessionId);if(!n)throw new D(q.InvalidParams,`Task not found: ${r.params.taskId}`);if(Br(n.status))throw new D(q.InvalidParams,`Cannot cancel task in terminal status: ${n.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",i.sessionId),this._clearTaskQueue(r.params.taskId);let o=await this._taskStore.getTask(r.params.taskId,i.sessionId);if(!o)throw new D(q.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...o}}catch(n){throw n instanceof D?n:new D(q.InvalidRequest,`Failed to cancel task: ${n instanceof Error?n.message:String(n)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,i,n,o=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(n,r),startTime:Date.now(),timeout:r,maxTotalTimeout:i,resetTimeoutOnProgress:o,onTimeout:n})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let i=Date.now()-r.startTime;if(r.maxTotalTimeout&&i>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),D.fromError(q.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:i});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let i=this.transport?.onerror;this._transport.onerror=o=>{i?.(o),this._onerror(o)};let n=this._transport?.onmessage;this._transport.onmessage=(o,a)=>{n?.(o,a),br(o)||_i(o)?this._onresponse(o):Jr(o)?this._onrequest(o,a):q_(o)?this._onnotification(o):this._onerror(new Error(`Unknown message type: ${JSON.stringify(o)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();let r=D.fromError(q.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let i of t.values())i(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(i=>this._onerror(new Error(`Uncaught error in notification handler: ${i}`)))}_onrequest(t,r){let i=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,n=this._transport,o=t.params?._meta?.[Vr]?.taskId;if(i===void 0){let l={jsonrpc:"2.0",id:t.id,error:{code:q.MethodNotFound,message:"Method not found"}};o&&this._taskMessageQueue?this._enqueueTaskMessage(o,{type:"error",message:l,timestamp:Date.now()},n?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):n?.send(l).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(t.id,a);let s=D_(t.params)?t.params.task:void 0,u=this._taskStore?this.requestTaskStore(t,n?.sessionId):void 0,c={signal:a.signal,sessionId:n?.sessionId,_meta:t.params?._meta,sendNotification:async l=>{let d={relatedRequestId:t.id};o&&(d.relatedTask={taskId:o}),await this.notification(l,d)},sendRequest:async(l,d,p)=>{let m={...p,relatedRequestId:t.id};o&&!m.relatedTask&&(m.relatedTask={taskId:o});let f=m.relatedTask?.taskId??o;return f&&u&&await u.updateTaskStatus(f,"input_required"),await this.request(l,d,m)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:o,taskStore:u,taskRequestedTtl:s?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(t.method)}).then(()=>i(t,c)).then(async l=>{if(a.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:t.id};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"response",message:d,timestamp:Date.now()},n?.sessionId):await n?.send(d)},async l=>{if(a.signal.aborted)return;let d={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(l.code)?l.code:q.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"error",message:d,timestamp:Date.now()},n?.sessionId):await n?.send(d)}).catch(l=>this._onerror(new Error(`Failed to send response: ${l}`))).finally(()=>{this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...i}=t.params,n=Number(r),o=this._progressHandlers.get(n);if(!o){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(n),s=this._timeoutInfo.get(n);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(n)}catch(u){this._responseHandlers.delete(n),this._progressHandlers.delete(n),this._cleanupTimeout(n),a(u);return}o(i)}_onresponse(t){let r=Number(t.id),i=this._requestResolvers.get(r);if(i){if(this._requestResolvers.delete(r),br(t))i(t);else{let a=new D(t.error.code,t.error.message,t.error.data);i(a)}return}let n=this._responseHandlers.get(r);if(n===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let o=!1;if(br(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let s=a.task;typeof s.taskId=="string"&&(o=!0,this._taskProgressTokens.set(s.taskId,r))}}if(o||this._progressHandlers.delete(r),br(t))n(t);else{let a=D.fromError(t.error.code,t.error.message,t.error.data);n(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,i){let{task:n}=i??{};if(!n){try{yield{type:"result",result:await this.request(t,r,i)}}catch(a){yield{type:"error",error:a instanceof D?a:new D(q.InternalError,String(a))}}return}let o;try{let a=await this.request(t,bi,i);if(a.task)o=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new D(q.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:o},i);if(yield{type:"taskStatus",task:s},Br(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:o},r,i)}:s.status==="failed"?yield{type:"error",error:new D(q.InternalError,`Task ${o} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new D(q.InternalError,`Task ${o} was cancelled`)});return}if(s.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:o},r,i)};return}let u=s.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(c=>setTimeout(c,u)),i?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof D?a:new D(q.InternalError,String(a))}}}request(t,r,i){let{relatedRequestId:n,resumptionToken:o,onresumptiontoken:a,task:s,relatedTask:u}=i??{};return new Promise((c,l)=>{let d=x=>{l(x)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),s&&this.assertTaskCapability(t.method)}catch(x){d(x);return}i?.signal?.throwIfAborted();let p=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:p};i?.onprogress&&(this._progressHandlers.set(p,i.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:p}}),s&&(m.params={...m.params,task:s}),u&&(m.params={...m.params,_meta:{...m.params?._meta||{},[Vr]:u}});let f=x=>{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(x)}},{relatedRequestId:n,resumptionToken:o,onresumptiontoken:a}).catch(P=>this._onerror(new Error(`Failed to send cancellation: ${P}`)));let k=x instanceof D?x:new D(q.RequestTimeout,String(x));l(k)};this._responseHandlers.set(p,x=>{if(!i?.signal?.aborted){if(x instanceof Error)return l(x);try{let k=Lr(r,x.result);k.success?c(k.data):l(k.error)}catch(k){l(k)}}}),i?.signal?.addEventListener("abort",()=>{f(i?.signal?.reason)});let g=i?.timeout??aA,v=()=>f(D.fromError(q.RequestTimeout,"Request timed out",{timeout:g}));this._setupTimeout(p,g,i?.maxTotalTimeout,v,i?.resetTimeoutOnProgress??!1);let b=u?.taskId;if(b){let x=k=>{let P=this._responseHandlers.get(p);P?P(k):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,x),this._enqueueTaskMessage(b,{type:"request",message:m,timestamp:Date.now()}).catch(k=>{this._cleanupTimeout(p),l(k)})}else this._transport.send(m,{relatedRequestId:n,resumptionToken:o,onresumptiontoken:a}).catch(x=>{this._cleanupTimeout(p),l(x)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},qs,r)}async getTaskResult(t,r,i){return this.request({method:"tasks/result",params:t},r,i)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},Vs,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},L_,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let i=r?.relatedTask?.taskId;if(i){let s={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[Vr]:r.relatedTask}}};await this._enqueueTaskMessage(i,{type:"notification",message:s,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let s={...t,jsonrpc:"2.0"};r?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[Vr]:r.relatedTask}}}),this._transport?.send(s,r).catch(u=>this._onerror(u))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[Vr]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let i=Yf(t);this.assertRequestHandlerCapability(i),this._requestHandlers.set(i,(n,o)=>{let a=ep(t,n);return Promise.resolve(r(a,o))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let i=Yf(t);this._notificationHandlers.set(i,n=>{let o=ep(t,n);return Promise.resolve(r(o))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,i){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let n=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,i,n)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let i=await this._taskMessageQueue.dequeueAll(t,r);for(let n of i)if(n.type==="request"&&Jr(n.message)){let o=n.message.id,a=this._requestResolvers.get(o);a?(a(new D(q.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(o)):this._onerror(new Error(`Resolver missing for request ${o} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r){let i=this._options?.defaultTaskPollInterval??1e3;try{let n=await this._taskStore?.getTask(t);n?.pollInterval&&(i=n.pollInterval)}catch{}return new Promise((n,o)=>{if(r.aborted){o(new D(q.InvalidRequest,"Request cancelled"));return}let a=setTimeout(n,i);r.addEventListener("abort",()=>{clearTimeout(a),o(new D(q.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let i=this._taskStore;if(!i)throw new Error("No task store configured");return{createTask:async n=>{if(!t)throw new Error("No request provided");return await i.createTask(n,t.id,{method:t.method,params:t.params},r)},getTask:async n=>{let o=await i.getTask(n,r);if(!o)throw new D(q.InvalidParams,"Failed to retrieve task: Task not found");return o},storeTaskResult:async(n,o,a)=>{await i.storeTaskResult(n,o,a,r);let s=await i.getTask(n,r);if(s){let u=Po.parse({method:"notifications/tasks/status",params:s});await this.notification(u),Br(s.status)&&this._cleanupTaskProgressHandler(n)}},getTaskResult:n=>i.getTaskResult(n,r),updateTaskStatus:async(n,o,a)=>{let s=await i.getTask(n,r);if(!s)throw new D(q.InvalidParams,`Task "${n}" not found - it may have been cleaned up`);if(Br(s.status))throw new D(q.InvalidParams,`Cannot update task "${n}" from terminal status "${s.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await i.updateTaskStatus(n,o,a,r);let u=await i.getTask(n,r);if(u){let c=Po.parse({method:"notifications/tasks/status",params:u});await this.notification(c),Br(u.status)&&this._cleanupTaskProgressHandler(n)}},listTasks:n=>i.listTasks(n,r)}}};function Ib(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Tb(e,t){let r={...e};for(let i in t){let n=i,o=t[n];if(o===void 0)continue;let a=r[n];Ib(a)&&Ib(o)?r[n]={...a,...o}:r[n]=o}return r}var mw=Dv(Um(),1),hw=Dv(pw(),1);function GD(){let e=new mw.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,hw.default)(e),e}var Mu=class{constructor(t){this._ajv=t??GD()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return i=>r(i)?{valid:!0,data:i,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var qu=class{constructor(t){this._server=t}requestStream(t,r,i){return this._server.requestStream(t,r,i)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,i){return this._server.getTaskResult({taskId:t},r,i)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function gw(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function vw(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var Lu=class extends jo{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(No.options.map((i,n)=>[i,n])),this.isMessageIgnored=(i,n)=>{let o=this._loggingLevels.get(n);return o?this.LOG_LEVEL_SEVERITY.get(i)<this.LOG_LEVEL_SEVERITY.get(o):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new Mu,this.setRequestHandler(Ds,i=>this._oninitialize(i)),this.setNotificationHandler(Zf,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Ff,async(i,n)=>{let o=n.sessionId||n.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=i.params,s=No.safeParse(a);return s.success&&this._loggingLevels.set(o,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new qu(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Tb(this._capabilities,t)}setRequestHandler(t,r){let n=Fr(t)?.method;if(!n)throw new Error("Schema is missing a method literal");let o;if(zt(n)){let s=n;o=s._zod?.def?.value??s.value}else{let s=n;o=s._def?.value??s.value}if(typeof o!="string")throw new Error("Schema method literal must be a string");if(o==="tools/call"){let s=async(u,c)=>{let l=Lr(Cn,u);if(!l.success){let f=l.error instanceof Error?l.error.message:String(l.error);throw new D(q.InvalidParams,`Invalid tools/call request: ${f}`)}let{params:d}=l.data,p=await Promise.resolve(r(u,c));if(d.task){let f=Lr(bi,p);if(!f.success){let g=f.error instanceof Error?f.error.message:String(f.error);throw new D(q.InvalidParams,`Invalid task creation result: ${g}`)}return f.data}let m=Lr(jn,p);if(!m.success){let f=m.error instanceof Error?m.error.message:String(m.error);throw new D(q.InvalidParams,`Invalid tools/call result: ${f}`)}return m.data};return super.setRequestHandler(t,s)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);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 ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);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 ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);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 ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){vw(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&gw(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:$o.includes(r)?r:Rf,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"},wo)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let i=t.messages[t.messages.length-1],n=Array.isArray(i.content)?i.content:[i.content],o=n.some(c=>c.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,s=a?Array.isArray(a.content)?a.content:[a.content]:[],u=s.some(c=>c.type==="tool_use");if(o){if(n.some(c=>c.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let c=new Set(s.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(n.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(c.size!==l.size||![...c].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},Jf,r):this.request({method:"sampling/createMessage",params:t},Vf,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let n=t;return this.request({method:"elicitation/create",params:n},Qs,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let n=t.mode==="form"?t:{...t,mode:"form"},o=await this.request({method:"elicitation/create",params:n},Qs,r);if(o.action==="accept"&&o.content&&n.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(n.requestedSchema)(o.content);if(!s.valid)throw new D(q.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof D?a:new D(q.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return o}}}createElicitationCompletionNotifier(t,r){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:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},Bf,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}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 _w=Symbol.for("mcp.completable");function Hm(e){return!!e&&typeof e=="object"&&_w in e}function bw(e){return e[_w]?.complete}var yw;(function(e){e.Completable="McpCompletable"})(yw||(yw={}));var Fu=class e{static isTemplate(t){return/\{[^}\s]+\}/.test(t)}static validateLength(t,r,i){if(t.length>r)throw new Error(`${i} exceeds maximum length of ${r} characters (got ${t.length})`)}get variableNames(){return this.parts.flatMap(t=>typeof t=="string"?[]:t.names)}constructor(t){e.validateLength(t,1e6,"Template"),this.template=t,this.parts=this.parse(t)}toString(){return this.template}parse(t){let r=[],i="",n=0,o=0;for(;n<t.length;)if(t[n]==="{"){i&&(r.push(i),i="");let a=t.indexOf("}",n);if(a===-1)throw new Error("Unclosed template expression");if(o++,o>1e4)throw new Error("Template contains too many expressions (max 10000)");let s=t.slice(n+1,a),u=this.getOperator(s),c=s.includes("*"),l=this.getNames(s),d=l[0];for(let p of l)e.validateLength(p,1e6,"Variable name");r.push({name:d,operator:u,names:l,exploded:c}),n=a+1}else i+=t[n],n++;return i&&r.push(i),r}getOperator(t){return["+","#",".","/","?","&"].find(i=>t.startsWith(i))||""}getNames(t){let r=this.getOperator(t);return t.slice(r.length).split(",").map(i=>i.replace("*","").trim()).filter(i=>i.length>0)}encodeValue(t,r){return e.validateLength(t,1e6,"Variable value"),r==="+"||r==="#"?encodeURI(t):encodeURIComponent(t)}expandPart(t,r){if(t.operator==="?"||t.operator==="&"){let a=t.names.map(u=>{let c=r[u];if(c===void 0)return"";let l=Array.isArray(c)?c.map(d=>this.encodeValue(d,t.operator)).join(","):this.encodeValue(c.toString(),t.operator);return`${u}=${l}`}).filter(u=>u.length>0);return a.length===0?"":(t.operator==="?"?"?":"&")+a.join("&")}if(t.names.length>1){let a=t.names.map(s=>r[s]).filter(s=>s!==void 0);return a.length===0?"":a.map(s=>Array.isArray(s)?s[0]:s).join(",")}let i=r[t.name];if(i===void 0)return"";let o=(Array.isArray(i)?i:[i]).map(a=>this.encodeValue(a,t.operator));switch(t.operator){case"":return o.join(",");case"+":return o.join(",");case"#":return"#"+o.join(",");case".":return"."+o.join(".");case"/":return"/"+o.join("/");default:return o.join(",")}}expand(t){let r="",i=!1;for(let n of this.parts){if(typeof n=="string"){r+=n;continue}let o=this.expandPart(n,t);o&&((n.operator==="?"||n.operator==="&")&&i?r+=o.replace("?","&"):r+=o,(n.operator==="?"||n.operator==="&")&&(i=!0))}return r}escapeRegExp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}partToRegExp(t){let r=[];for(let o of t.names)e.validateLength(o,1e6,"Variable name");if(t.operator==="?"||t.operator==="&"){for(let o=0;o<t.names.length;o++){let a=t.names[o],s=o===0?"\\"+t.operator:"&";r.push({pattern:s+this.escapeRegExp(a)+"=([^&]+)",name:a})}return r}let i,n=t.name;switch(t.operator){case"":i=t.exploded?"([^/,]+(?:,[^/,]+)*)":"([^/,]+)";break;case"+":case"#":i="(.+)";break;case".":i="\\.([^/,]+)";break;case"/":i="/"+(t.exploded?"([^/,]+(?:,[^/,]+)*)":"([^/,]+)");break;default:i="([^/]+)"}return r.push({pattern:i,name:n}),r}match(t){e.validateLength(t,1e6,"URI");let r="^",i=[];for(let s of this.parts)if(typeof s=="string")r+=this.escapeRegExp(s);else{let u=this.partToRegExp(s);for(let{pattern:c,name:l}of u)r+=c,i.push({name:l,exploded:s.exploded})}r+="$",e.validateLength(r,1e6,"Generated regex pattern");let n=new RegExp(r),o=t.match(n);if(!o)return null;let a={};for(let s=0;s<i.length;s++){let{name:u,exploded:c}=i[s],l=o[s+1],d=u.replace("*","");c&&l.includes(",")?a[d]=l.split(","):a[d]=l}return a}};var XD=/^[A-Za-z0-9._-]{1,128}$/;function QD(e){let t=[];if(e.length===0)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"),!XD.test(e)){let r=e.split("").filter(i=>!/[A-Za-z0-9._-]/.test(i)).filter((i,n,o)=>o.indexOf(i)===n);return t.push(`Tool name contains invalid characters: ${r.map(i=>`"${i}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function YD(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let r of t)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function Km(e){let t=QD(e);return YD(e,t.warnings),t.isValid}var Vu=class{constructor(t){this._mcpServer=t}registerToolTask(t,r,i){let n={taskSupport:"required",...r.execution};if(n.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${t}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(t,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,n,r._meta,i)}};var Ju=class{constructor(t,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Lu(t,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Vu(this)}),this._experimental}async connect(t){return await this.server.connect(t)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(tn(Ro)),this.server.assertCanSetRequestHandler(tn(Cn)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Ro,()=>({tools:Object.entries(this._registeredTools).filter(([,t])=>t.enabled).map(([t,r])=>{let i={name:t,title:r.title,description:r.description,inputSchema:(()=>{let n=gi(r.inputSchema);return n?Qf(n,{strictUnions:!0,pipeStrategy:"input"}):eU})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let n=gi(r.outputSchema);n&&(i.outputSchema=Qf(n,{strictUnions:!0,pipeStrategy:"output"}))}return i})})),this.server.setRequestHandler(Cn,async(t,r)=>{try{let i=this._registeredTools[t.params.name];if(!i)throw new D(q.InvalidParams,`Tool ${t.params.name} not found`);if(!i.enabled)throw new D(q.InvalidParams,`Tool ${t.params.name} disabled`);let n=!!t.params.task,o=i.execution?.taskSupport,a="createTask"in i.handler;if((o==="required"||o==="optional")&&!a)throw new D(q.InternalError,`Tool ${t.params.name} has taskSupport '${o}' but was not registered with registerToolTask`);if(o==="required"&&!n)throw new D(q.MethodNotFound,`Tool ${t.params.name} requires task augmentation (taskSupport: 'required')`);if(o==="optional"&&!n&&a)return await this.handleAutomaticTaskPolling(i,t,r);let s=await this.validateToolInput(i,t.params.arguments,t.params.name),u=await this.executeToolHandler(i,s,r);return n||await this.validateToolOutput(i,u,t.params.name),u}catch(i){if(i instanceof D&&i.code===q.UrlElicitationRequired)throw i;return this.createToolError(i instanceof Error?i.message:String(i))}}),this._toolHandlersInitialized=!0)}createToolError(t){return{content:[{type:"text",text:t}],isError:!0}}async validateToolInput(t,r,i){if(!t.inputSchema)return;let o=gi(t.inputSchema)??t.inputSchema,a=await Es(o,r);if(!a.success){let s="error"in a?a.error:"Unknown error",u=Ps(s);throw new D(q.InvalidParams,`Input validation error: Invalid arguments for tool ${i}: ${u}`)}return a.data}async validateToolOutput(t,r,i){if(!t.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new D(q.InvalidParams,`Output validation error: Tool ${i} has an output schema but no structured content was provided`);let n=gi(t.outputSchema),o=await Es(n,r.structuredContent);if(!o.success){let a="error"in o?o.error:"Unknown error",s=Ps(a);throw new D(q.InvalidParams,`Output validation error: Invalid structured content for tool ${i}: ${s}`)}}async executeToolHandler(t,r,i){let n=t.handler;if("createTask"in n){if(!i.taskStore)throw new Error("No task store provided.");let a={...i,taskStore:i.taskStore};if(t.inputSchema){let s=n;return await Promise.resolve(s.createTask(r,a))}else{let s=n;return await Promise.resolve(s.createTask(a))}}if(t.inputSchema){let a=n;return await Promise.resolve(a(r,i))}else{let a=n;return await Promise.resolve(a(i))}}async handleAutomaticTaskPolling(t,r,i){if(!i.taskStore)throw new Error("No task store provided for task-capable tool.");let n=await this.validateToolInput(t,r.params.arguments,r.params.name),o=t.handler,a={...i,taskStore:i.taskStore},s=n?await Promise.resolve(o.createTask(n,a)):await Promise.resolve(o.createTask(a)),u=s.task.taskId,c=s.task,l=c.pollInterval??5e3;for(;c.status!=="completed"&&c.status!=="failed"&&c.status!=="cancelled";){await new Promise(p=>setTimeout(p,l));let d=await i.taskStore.getTask(u);if(!d)throw new D(q.InternalError,`Task ${u} not found during polling`);c=d}return await i.taskStore.getTaskResult(u)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(tn(Ys)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Ys,async t=>{switch(t.params.ref.type){case"ref/prompt":return H_(t),this.handlePromptCompletion(t,t.params.ref);case"ref/resource":return K_(t),this.handleResourceCompletion(t,t.params.ref);default:throw new D(q.InvalidParams,`Invalid completion reference: ${t.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(t,r){let i=this._registeredPrompts[r.name];if(!i)throw new D(q.InvalidParams,`Prompt ${r.name} not found`);if(!i.enabled)throw new D(q.InvalidParams,`Prompt ${r.name} disabled`);if(!i.argsSchema)return da;let o=Fr(i.argsSchema)?.[t.params.argument.name];if(!Hm(o))return da;let a=bw(o);if(!a)return da;let s=await a(t.params.argument.value,t.params.context);return xw(s)}async handleResourceCompletion(t,r){let i=Object.values(this._registeredResourceTemplates).find(a=>a.resourceTemplate.uriTemplate.toString()===r.uri);if(!i){if(this._registeredResources[r.uri])return da;throw new D(q.InvalidParams,`Resource template ${t.params.ref.uri} not found`)}let n=i.resourceTemplate.completeCallback(t.params.argument.name);if(!n)return da;let o=await n(t.params.argument.value,t.params.context);return xw(o)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(tn(Bs)),this.server.assertCanSetRequestHandler(tn(Hs)),this.server.assertCanSetRequestHandler(tn(Ks)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Bs,async(t,r)=>{let i=Object.entries(this._registeredResources).filter(([o,a])=>a.enabled).map(([o,a])=>({uri:o,name:a.name,...a.metadata})),n=[];for(let o of Object.values(this._registeredResourceTemplates)){if(!o.resourceTemplate.listCallback)continue;let a=await o.resourceTemplate.listCallback(r);for(let s of a.resources)n.push({...o.metadata,...s})}return{resources:[...i,...n]}}),this.server.setRequestHandler(Hs,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,i])=>({name:r,uriTemplate:i.resourceTemplate.uriTemplate.toString(),...i.metadata}))})),this.server.setRequestHandler(Ks,async(t,r)=>{let i=new URL(t.params.uri),n=this._registeredResources[i.toString()];if(n){if(!n.enabled)throw new D(q.InvalidParams,`Resource ${i} disabled`);return n.readCallback(i,r)}for(let o of Object.values(this._registeredResourceTemplates)){let a=o.resourceTemplate.uriTemplate.match(i.toString());if(a)return o.readCallback(i,a,r)}throw new D(q.InvalidParams,`Resource ${i} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(tn(Ws)),this.server.assertCanSetRequestHandler(tn(Gs)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Ws,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,t])=>t.enabled).map(([t,r])=>({name:t,title:r.title,description:r.description,arguments:r.argsSchema?rU(r.argsSchema):void 0}))})),this.server.setRequestHandler(Gs,async(t,r)=>{let i=this._registeredPrompts[t.params.name];if(!i)throw new D(q.InvalidParams,`Prompt ${t.params.name} not found`);if(!i.enabled)throw new D(q.InvalidParams,`Prompt ${t.params.name} disabled`);if(i.argsSchema){let n=gi(i.argsSchema),o=await Es(n,t.params.arguments);if(!o.success){let u="error"in o?o.error:"Unknown error",c=Ps(u);throw new D(q.InvalidParams,`Invalid arguments for prompt ${t.params.name}: ${c}`)}let a=o.data,s=i.callback;return await Promise.resolve(s(a,r))}else{let n=i.callback;return await Promise.resolve(n(r))}}),this._promptHandlersInitialized=!0)}resource(t,r,...i){let n;typeof i[0]=="object"&&(n=i.shift());let o=i[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let a=this._createRegisteredResource(t,void 0,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let a=this._createRegisteredResourceTemplate(t,void 0,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}}registerResource(t,r,i,n){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let o=this._createRegisteredResource(t,i.title,r,i,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),o}else{if(this._registeredResourceTemplates[t])throw new Error(`Resource template ${t} is already registered`);let o=this._createRegisteredResourceTemplate(t,i.title,r,i,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),o}}_createRegisteredResource(t,r,i,n,o){let a={name:t,title:r,metadata:n,readCallback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({uri:null}),update:s=>{typeof s.uri<"u"&&s.uri!==i&&(delete this._registeredResources[i],s.uri&&(this._registeredResources[s.uri]=a)),typeof s.name<"u"&&(a.name=s.name),typeof s.title<"u"&&(a.title=s.title),typeof s.metadata<"u"&&(a.metadata=s.metadata),typeof s.callback<"u"&&(a.readCallback=s.callback),typeof s.enabled<"u"&&(a.enabled=s.enabled),this.sendResourceListChanged()}};return this._registeredResources[i]=a,a}_createRegisteredResourceTemplate(t,r,i,n,o){let a={resourceTemplate:i,title:r,metadata:n,readCallback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:c=>{typeof c.name<"u"&&c.name!==t&&(delete this._registeredResourceTemplates[t],c.name&&(this._registeredResourceTemplates[c.name]=a)),typeof c.title<"u"&&(a.title=c.title),typeof c.template<"u"&&(a.resourceTemplate=c.template),typeof c.metadata<"u"&&(a.metadata=c.metadata),typeof c.callback<"u"&&(a.readCallback=c.callback),typeof c.enabled<"u"&&(a.enabled=c.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[t]=a;let s=i.uriTemplate.variableNames;return Array.isArray(s)&&s.some(c=>!!i.completeCallback(c))&&this.setCompletionRequestHandler(),a}_createRegisteredPrompt(t,r,i,n,o){let a={title:r,description:i,argsSchema:n===void 0?void 0:An(n),callback:o,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:s=>{typeof s.name<"u"&&s.name!==t&&(delete this._registeredPrompts[t],s.name&&(this._registeredPrompts[s.name]=a)),typeof s.title<"u"&&(a.title=s.title),typeof s.description<"u"&&(a.description=s.description),typeof s.argsSchema<"u"&&(a.argsSchema=An(s.argsSchema)),typeof s.callback<"u"&&(a.callback=s.callback),typeof s.enabled<"u"&&(a.enabled=s.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=a,n&&Object.values(n).some(u=>{let c=u instanceof ct?u._def?.innerType:u;return Hm(c)})&&this.setCompletionRequestHandler(),a}_createRegisteredTool(t,r,i,n,o,a,s,u,c){Km(t);let l={title:r,description:i,inputSchema:$w(n),outputSchema:$w(o),annotations:a,execution:s,_meta:u,handler:c,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==t&&(typeof d.name=="string"&&Km(d.name),delete this._registeredTools[t],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=An(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=An(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(t,...r){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let i,n,o,a;if(typeof r[0]=="string"&&(i=r.shift()),r.length>1){let u=r[0];Wm(u)?(n=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Wm(r[0])&&(a=r.shift())):typeof u=="object"&&u!==null&&(a=r.shift())}let s=r[0];return this._createRegisteredTool(t,void 0,i,n,o,a,{taskSupport:"forbidden"},void 0,s)}registerTool(t,r,i){if(this._registeredTools[t])throw new Error(`Tool ${t} is already registered`);let{title:n,description:o,inputSchema:a,outputSchema:s,annotations:u,_meta:c}=r;return this._createRegisteredTool(t,n,o,a,s,u,{taskSupport:"forbidden"},c,i)}prompt(t,...r){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let i;typeof r[0]=="string"&&(i=r.shift());let n;r.length>1&&(n=r.shift());let o=r[0],a=this._createRegisteredPrompt(t,void 0,i,n,o);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}registerPrompt(t,r,i){if(this._registeredPrompts[t])throw new Error(`Prompt ${t} is already registered`);let{title:n,description:o,argsSchema:a}=r,s=this._createRegisteredPrompt(t,n,o,a,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(t,r){return this.server.sendLoggingMessage(t,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}},cr=class{constructor(t,r){this._callbacks=r,this._uriTemplate=typeof t=="string"?new Fu(t):t}get uriTemplate(){return this._uriTemplate}get listCallback(){return this._callbacks.list}completeCallback(t){return this._callbacks.complete?.[t]}},eU={type:"object",properties:{}};function ww(e){return e!==null&&typeof e=="object"&&"parse"in e&&typeof e.parse=="function"&&"safeParse"in e&&typeof e.safeParse=="function"}function tU(e){return"_def"in e||"_zod"in e||ww(e)}function Wm(e){return typeof e!="object"||e===null||tU(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(ww)}function $w(e){if(e)return Wm(e)?An(e):e}function rU(e){let t=Fr(e);return t?Object.entries(t).map(([r,i])=>{let n=f_(i),o=p_(i);return{name:r,description:n,required:!o}}):[]}function tn(e){let r=Fr(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let i=Os(r);if(typeof i=="string")return i;throw new Error("Schema method literal must be a string")}function xw(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}var da={completion:{values:[],hasMore:!1}};var rn=(r=>(r.MARKDOWN="markdown",r.JSON="json",r))(rn||{}),Ue=S.nativeEnum(rn).default("markdown").describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),kw=5e4;function fa(e,t){return function(){return e.apply(t,arguments)}}var{toString:nU}=Object.prototype,{getPrototypeOf:Xm}=Object,{iterator:Hu,toStringTag:zw}=Symbol,Ku=(e=>t=>{let r=nU.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Kt=e=>(e=e.toLowerCase(),t=>Ku(t)===e),Wu=e=>t=>typeof t===e,{isArray:Mi}=Array,Ui=Wu("undefined");function pa(e){return e!==null&&!Ui(e)&&e.constructor!==null&&!Ui(e.constructor)&&gt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var Iw=Kt("ArrayBuffer");function iU(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Iw(e.buffer),t}var oU=Wu("string"),gt=Wu("function"),Tw=Wu("number"),ma=e=>e!==null&&typeof e=="object",aU=e=>e===!0||e===!1,Bu=e=>{if(Ku(e)!=="object")return!1;let t=Xm(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(zw in e)&&!(Hu in e)},sU=e=>{if(!ma(e)||pa(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},uU=Kt("Date"),cU=Kt("File"),lU=Kt("Blob"),dU=Kt("FileList"),fU=e=>ma(e)&&gt(e.pipe),pU=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||gt(e.append)&&((t=Ku(e))==="formdata"||t==="object"&&gt(e.toString)&&e.toString()==="[object FormData]"))},mU=Kt("URLSearchParams"),[hU,gU,vU,yU]=["ReadableStream","Request","Response","Headers"].map(Kt),_U=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ha(e,t,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let i,n;if(typeof e!="object"&&(e=[e]),Mi(e))for(i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else{if(pa(e))return;let o=r?Object.getOwnPropertyNames(e):Object.keys(e),a=o.length,s;for(i=0;i<a;i++)s=o[i],t.call(null,e[s],s,e)}}function Ew(e,t){if(pa(e))return null;t=t.toLowerCase();let r=Object.keys(e),i=r.length,n;for(;i-- >0;)if(n=r[i],t===n.toLowerCase())return n;return null}var Hn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Pw=e=>!Ui(e)&&e!==Hn;function Gm(){let{caseless:e,skipUndefined:t}=Pw(this)&&this||{},r={},i=(n,o)=>{let a=e&&Ew(r,o)||o;Bu(r[a])&&Bu(n)?r[a]=Gm(r[a],n):Bu(n)?r[a]=Gm({},n):Mi(n)?r[a]=n.slice():(!t||!Ui(n))&&(r[a]=n)};for(let n=0,o=arguments.length;n<o;n++)arguments[n]&&ha(arguments[n],i);return r}var bU=(e,t,r,{allOwnKeys:i}={})=>(ha(t,(n,o)=>{r&&gt(n)?e[o]=fa(n,r):e[o]=n},{allOwnKeys:i}),e),$U=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),xU=(e,t,r,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},wU=(e,t,r,i)=>{let n,o,a,s={};if(t=t||{},e==null)return t;do{for(n=Object.getOwnPropertyNames(e),o=n.length;o-- >0;)a=n[o],(!i||i(a,e,t))&&!s[a]&&(t[a]=e[a],s[a]=!0);e=r!==!1&&Xm(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kU=(e,t,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=t.length;let i=e.indexOf(t,r);return i!==-1&&i===r},SU=e=>{if(!e)return null;if(Mi(e))return e;let t=e.length;if(!Tw(t))return null;let r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},zU=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Xm(Uint8Array)),IU=(e,t)=>{let i=(e&&e[Hu]).call(e),n;for(;(n=i.next())&&!n.done;){let o=n.value;t.call(e,o[0],o[1])}},TU=(e,t)=>{let r,i=[];for(;(r=e.exec(t))!==null;)i.push(r);return i},EU=Kt("HTMLFormElement"),PU=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,i,n){return i.toUpperCase()+n}),Sw=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),OU=Kt("RegExp"),Ow=(e,t)=>{let r=Object.getOwnPropertyDescriptors(e),i={};ha(r,(n,o)=>{let a;(a=t(n,o,e))!==!1&&(i[o]=a||n)}),Object.defineProperties(e,i)},RU=e=>{Ow(e,(t,r)=>{if(gt(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;let i=e[r];if(gt(i)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},NU=(e,t)=>{let r={},i=n=>{n.forEach(o=>{r[o]=!0})};return Mi(e)?i(e):i(String(e).split(t)),r},AU=()=>{},jU=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function CU(e){return!!(e&&gt(e.append)&&e[zw]==="FormData"&&e[Hu])}var ZU=e=>{let t=new Array(10),r=(i,n)=>{if(ma(i)){if(t.indexOf(i)>=0)return;if(pa(i))return i;if(!("toJSON"in i)){t[n]=i;let o=Mi(i)?[]:{};return ha(i,(a,s)=>{let u=r(a,n+1);!Ui(u)&&(o[s]=u)}),t[n]=void 0,o}}return i};return r(e,0)},DU=Kt("AsyncFunction"),UU=e=>e&&(ma(e)||gt(e))&&gt(e.then)&&gt(e.catch),Rw=((e,t)=>e?setImmediate:t?((r,i)=>(Hn.addEventListener("message",({source:n,data:o})=>{n===Hn&&o===r&&i.length&&i.shift()()},!1),n=>{i.push(n),Hn.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",gt(Hn.postMessage)),MU=typeof queueMicrotask<"u"?queueMicrotask.bind(Hn):typeof process<"u"&&process.nextTick||Rw,qU=e=>e!=null&&gt(e[Hu]),_={isArray:Mi,isArrayBuffer:Iw,isBuffer:pa,isFormData:pU,isArrayBufferView:iU,isString:oU,isNumber:Tw,isBoolean:aU,isObject:ma,isPlainObject:Bu,isEmptyObject:sU,isReadableStream:hU,isRequest:gU,isResponse:vU,isHeaders:yU,isUndefined:Ui,isDate:uU,isFile:cU,isBlob:lU,isRegExp:OU,isFunction:gt,isStream:fU,isURLSearchParams:mU,isTypedArray:zU,isFileList:dU,forEach:ha,merge:Gm,extend:bU,trim:_U,stripBOM:$U,inherits:xU,toFlatObject:wU,kindOf:Ku,kindOfTest:Kt,endsWith:kU,toArray:SU,forEachEntry:IU,matchAll:TU,isHTMLForm:EU,hasOwnProperty:Sw,hasOwnProp:Sw,reduceDescriptors:Ow,freezeMethods:RU,toObjectSet:NU,toCamelCase:PU,noop:AU,toFiniteNumber:jU,findKey:Ew,global:Hn,isContextDefined:Pw,isSpecCompliantForm:CU,toJSONObject:ZU,isAsyncFn:DU,isThenable:UU,setImmediate:Rw,asap:MU,isIterable:qU};function qi(e,t,r,i,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),i&&(this.request=i),n&&(this.response=n,this.status=n.status?n.status:null)}_.inherits(qi,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:_.toJSONObject(this.config),code:this.code,status:this.status}}});var Nw=qi.prototype,Aw={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Aw[e]={value:e}});Object.defineProperties(qi,Aw);Object.defineProperty(Nw,"isAxiosError",{value:!0});qi.from=(e,t,r,i,n,o)=>{let a=Object.create(Nw);_.toFlatObject(e,a,function(l){return l!==Error.prototype},c=>c!=="isAxiosError");let s=e&&e.message?e.message:"Error",u=t==null&&e?e.code:t;return qi.call(a,s,u,r,i,n),e&&a.cause==null&&Object.defineProperty(a,"cause",{value:e,configurable:!0}),a.name=e&&e.name||"Error",o&&Object.assign(a,o),a};var H=qi;var Gu=null;function Qm(e){return _.isPlainObject(e)||_.isArray(e)}function Cw(e){return _.endsWith(e,"[]")?e.slice(0,-2):e}function jw(e,t,r){return e?e.concat(t).map(function(n,o){return n=Cw(n),!r&&o?"["+n+"]":n}).join(r?".":""):t}function LU(e){return _.isArray(e)&&!e.some(Qm)}var FU=_.toFlatObject(_,{},null,function(t){return/^is[A-Z]/.test(t)});function VU(e,t,r){if(!_.isObject(e))throw new TypeError("target must be an object");t=t||new(Gu||FormData),r=_.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(g,v){return!_.isUndefined(v[g])});let i=r.metaTokens,n=r.visitor||l,o=r.dots,a=r.indexes,u=(r.Blob||typeof Blob<"u"&&Blob)&&_.isSpecCompliantForm(t);if(!_.isFunction(n))throw new TypeError("visitor must be a function");function c(f){if(f===null)return"";if(_.isDate(f))return f.toISOString();if(_.isBoolean(f))return f.toString();if(!u&&_.isBlob(f))throw new H("Blob is not supported. Use a Buffer instead.");return _.isArrayBuffer(f)||_.isTypedArray(f)?u&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function l(f,g,v){let b=f;if(f&&!v&&typeof f=="object"){if(_.endsWith(g,"{}"))g=i?g:g.slice(0,-2),f=JSON.stringify(f);else if(_.isArray(f)&&LU(f)||(_.isFileList(f)||_.endsWith(g,"[]"))&&(b=_.toArray(f)))return g=Cw(g),b.forEach(function(k,P){!(_.isUndefined(k)||k===null)&&t.append(a===!0?jw([g],P,o):a===null?g:g+"[]",c(k))}),!1}return Qm(f)?!0:(t.append(jw(v,g,o),c(f)),!1)}let d=[],p=Object.assign(FU,{defaultVisitor:l,convertValue:c,isVisitable:Qm});function m(f,g){if(!_.isUndefined(f)){if(d.indexOf(f)!==-1)throw Error("Circular reference detected in "+g.join("."));d.push(f),_.forEach(f,function(b,x){(!(_.isUndefined(b)||b===null)&&n.call(t,b,_.isString(x)?x.trim():x,g,p))===!0&&m(b,g?g.concat(x):[x])}),d.pop()}}if(!_.isObject(e))throw new TypeError("data must be an object");return m(e),t}var nn=VU;function Zw(e){let t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(i){return t[i]})}function Dw(e,t){this._pairs=[],e&&nn(e,this,t)}var Uw=Dw.prototype;Uw.append=function(t,r){this._pairs.push([t,r])};Uw.toString=function(t){let r=t?function(i){return t.call(this,i,Zw)}:Zw;return this._pairs.map(function(n){return r(n[0])+"="+r(n[1])},"").join("&")};var Xu=Dw;function JU(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function ga(e,t,r){if(!t)return e;let i=r&&r.encode||JU;_.isFunction(r)&&(r={serialize:r});let n=r&&r.serialize,o;if(n?o=n(t,r):o=_.isURLSearchParams(t)?t.toString():new Xu(t,r).toString(i),o){let a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}var Ym=class{constructor(){this.handlers=[]}use(t,r,i){return this.handlers.push({fulfilled:t,rejected:r,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){_.forEach(this.handlers,function(i){i!==null&&t(i)})}},eh=Ym;var Qu={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};var Mw=typeof URLSearchParams<"u"?URLSearchParams:Xu;var qw=typeof FormData<"u"?FormData:null;var Lw=typeof Blob<"u"?Blob:null;var Fw={isBrowser:!0,classes:{URLSearchParams:Mw,FormData:qw,Blob:Lw},protocols:["http","https","file","blob","url","data"]};var nh={};os(nh,{hasBrowserEnv:()=>rh,hasStandardBrowserEnv:()=>BU,hasStandardBrowserWebWorkerEnv:()=>HU,navigator:()=>th,origin:()=>KU});var rh=typeof window<"u"&&typeof document<"u",th=typeof navigator=="object"&&navigator||void 0,BU=rh&&(!th||["ReactNative","NativeScript","NS"].indexOf(th.product)<0),HU=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",KU=rh&&window.location.href||"http://localhost";var Ce={...nh,...Fw};function ih(e,t){return nn(e,new Ce.classes.URLSearchParams,{visitor:function(r,i,n,o){return Ce.isNode&&_.isBuffer(r)?(this.append(i,r.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function WU(e){return _.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function GU(e){let t={},r=Object.keys(e),i,n=r.length,o;for(i=0;i<n;i++)o=r[i],t[o]=e[o];return t}function XU(e){function t(r,i,n,o){let a=r[o++];if(a==="__proto__")return!0;let s=Number.isFinite(+a),u=o>=r.length;return a=!a&&_.isArray(n)?n.length:a,u?(_.hasOwnProp(n,a)?n[a]=[n[a],i]:n[a]=i,!s):((!n[a]||!_.isObject(n[a]))&&(n[a]=[]),t(r,i,n[a],o)&&_.isArray(n[a])&&(n[a]=GU(n[a])),!s)}if(_.isFormData(e)&&_.isFunction(e.entries)){let r={};return _.forEachEntry(e,(i,n)=>{t(WU(i),n,r,0)}),r}return null}var Yu=XU;function QU(e,t,r){if(_.isString(e))try{return(t||JSON.parse)(e),_.trim(e)}catch(i){if(i.name!=="SyntaxError")throw i}return(r||JSON.stringify)(e)}var oh={transitional:Qu,adapter:["xhr","http","fetch"],transformRequest:[function(t,r){let i=r.getContentType()||"",n=i.indexOf("application/json")>-1,o=_.isObject(t);if(o&&_.isHTMLForm(t)&&(t=new FormData(t)),_.isFormData(t))return n?JSON.stringify(Yu(t)):t;if(_.isArrayBuffer(t)||_.isBuffer(t)||_.isStream(t)||_.isFile(t)||_.isBlob(t)||_.isReadableStream(t))return t;if(_.isArrayBufferView(t))return t.buffer;if(_.isURLSearchParams(t))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let s;if(o){if(i.indexOf("application/x-www-form-urlencoded")>-1)return ih(t,this.formSerializer).toString();if((s=_.isFileList(t))||i.indexOf("multipart/form-data")>-1){let u=this.env&&this.env.FormData;return nn(s?{"files[]":t}:t,u&&new u,this.formSerializer)}}return o||n?(r.setContentType("application/json",!1),QU(t)):t}],transformResponse:[function(t){let r=this.transitional||oh.transitional,i=r&&r.forcedJSONParsing,n=this.responseType==="json";if(_.isResponse(t)||_.isReadableStream(t))return t;if(t&&_.isString(t)&&(i&&!this.responseType||n)){let a=!(r&&r.silentJSONParsing)&&n;try{return JSON.parse(t,this.parseReviver)}catch(s){if(a)throw s.name==="SyntaxError"?H.from(s,H.ERR_BAD_RESPONSE,this,null,this.response):s}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ce.classes.FormData,Blob:Ce.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};_.forEach(["delete","get","head","post","put","patch"],e=>{oh.headers[e]={}});var Li=oh;var YU=_.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Vw=e=>{let t={},r,i,n;return e&&e.split(`
40
40
  `).forEach(function(a){n=a.indexOf(":"),r=a.substring(0,n).trim().toLowerCase(),i=a.substring(n+1).trim(),!(!r||t[r]&&YU[r])&&(r==="set-cookie"?t[r]?t[r].push(i):t[r]=[i]:t[r]=t[r]?t[r]+", "+i:i)}),t};var Jw=Symbol("internals");function va(e){return e&&String(e).trim().toLowerCase()}function ec(e){return e===!1||e==null?e:_.isArray(e)?e.map(ec):String(e)}function eM(e){let t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,i;for(;i=r.exec(e);)t[i[1]]=i[2];return t}var tM=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ah(e,t,r,i,n){if(_.isFunction(i))return i.call(this,t,r);if(n&&(t=r),!!_.isString(t)){if(_.isString(i))return t.indexOf(i)!==-1;if(_.isRegExp(i))return i.test(t)}}function rM(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,i)=>r.toUpperCase()+i)}function nM(e,t){let r=_.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+r,{value:function(n,o,a){return this[i].call(this,t,n,o,a)},configurable:!0})})}var Fi=class{constructor(t){t&&this.set(t)}set(t,r,i){let n=this;function o(s,u,c){let l=va(u);if(!l)throw new Error("header name must be a non-empty string");let d=_.findKey(n,l);(!d||n[d]===void 0||c===!0||c===void 0&&n[d]!==!1)&&(n[d||u]=ec(s))}let a=(s,u)=>_.forEach(s,(c,l)=>o(c,l,u));if(_.isPlainObject(t)||t instanceof this.constructor)a(t,r);else if(_.isString(t)&&(t=t.trim())&&!tM(t))a(Vw(t),r);else if(_.isObject(t)&&_.isIterable(t)){let s={},u,c;for(let l of t){if(!_.isArray(l))throw TypeError("Object iterator must return a key-value pair");s[c=l[0]]=(u=s[c])?_.isArray(u)?[...u,l[1]]:[u,l[1]]:l[1]}a(s,r)}else t!=null&&o(r,t,i);return this}get(t,r){if(t=va(t),t){let i=_.findKey(this,t);if(i){let n=this[i];if(!r)return n;if(r===!0)return eM(n);if(_.isFunction(r))return r.call(this,n,i);if(_.isRegExp(r))return r.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=va(t),t){let i=_.findKey(this,t);return!!(i&&this[i]!==void 0&&(!r||ah(this,this[i],i,r)))}return!1}delete(t,r){let i=this,n=!1;function o(a){if(a=va(a),a){let s=_.findKey(i,a);s&&(!r||ah(i,i[s],s,r))&&(delete i[s],n=!0)}}return _.isArray(t)?t.forEach(o):o(t),n}clear(t){let r=Object.keys(this),i=r.length,n=!1;for(;i--;){let o=r[i];(!t||ah(this,this[o],o,t,!0))&&(delete this[o],n=!0)}return n}normalize(t){let r=this,i={};return _.forEach(this,(n,o)=>{let a=_.findKey(i,o);if(a){r[a]=ec(n),delete r[o];return}let s=t?rM(o):String(o).trim();s!==o&&delete r[o],r[s]=ec(n),i[s]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){let r=Object.create(null);return _.forEach(this,(i,n)=>{i!=null&&i!==!1&&(r[n]=t&&_.isArray(i)?i.join(", "):i)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(`
41
- `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){let i=new this(t);return r.forEach(n=>i.set(n)),i}static accessor(t){let i=(this[Jw]=this[Jw]={accessors:{}}).accessors,n=this.prototype;function o(a){let s=va(a);i[s]||(nM(n,a),i[s]=!0)}return _.isArray(t)?t.forEach(o):o(t),this}};Fi.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);_.reduceDescriptors(Fi.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(i){this[r]=i}}});_.freezeMethods(Fi);var Le=Fi;function ya(e,t){let r=this||Li,i=t||r,n=Le.from(i.headers),o=i.data;return _.forEach(e,function(s){o=s.call(r,o,n.normalize(),t?t.status:void 0)}),n.normalize(),o}function _a(e){return!!(e&&e.__CANCEL__)}function Bw(e,t,r){H.call(this,e??"canceled",H.ERR_CANCELED,t,r),this.name="CanceledError"}_.inherits(Bw,H,{__CANCEL__:!0});var lr=Bw;function ba(e,t,r){let i=r.config.validateStatus;!r.status||!i||i(r.status)?e(r):t(new H("Request failed with status code "+r.status,[H.ERR_BAD_REQUEST,H.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function sh(e){let t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function iM(e,t){e=e||10;let r=new Array(e),i=new Array(e),n=0,o=0,a;return t=t!==void 0?t:1e3,function(u){let c=Date.now(),l=i[o];a||(a=c),r[n]=u,i[n]=c;let d=o,p=0;for(;d!==n;)p+=r[d++],d=d%e;if(n=(n+1)%e,n===o&&(o=(o+1)%e),c-a<t)return;let m=l&&c-l;return m?Math.round(p*1e3/m):void 0}}var Hw=iM;function oM(e,t){let r=0,i=1e3/t,n,o,a=(c,l=Date.now())=>{r=l,n=null,o&&(clearTimeout(o),o=null),e(...c)};return[(...c)=>{let l=Date.now(),d=l-r;d>=i?a(c,l):(n=c,o||(o=setTimeout(()=>{o=null,a(n)},i-d)))},()=>n&&a(n)]}var Kw=oM;var Vi=(e,t,r=3)=>{let i=0,n=Hw(50,250);return Kw(o=>{let a=o.loaded,s=o.lengthComputable?o.total:void 0,u=a-i,c=n(u),l=a<=s;i=a;let d={loaded:a,total:s,progress:s?a/s:void 0,bytes:u,rate:c||void 0,estimated:c&&s&&l?(s-a)/c:void 0,event:o,lengthComputable:s!=null,[t?"download":"upload"]:!0};e(d)},r)},uh=(e,t)=>{let r=e!=null;return[i=>t[0]({lengthComputable:r,total:e,loaded:i}),t[1]]},ch=e=>(...t)=>_.asap(()=>e(...t));var Ww=Ce.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,Ce.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(Ce.origin),Ce.navigator&&/(msie|trident)/i.test(Ce.navigator.userAgent)):()=>!0;var Gw=Ce.hasStandardBrowserEnv?{write(e,t,r,i,n,o,a){if(typeof document>"u")return;let s=[`${e}=${encodeURIComponent(t)}`];_.isNumber(r)&&s.push(`expires=${new Date(r).toUTCString()}`),_.isString(i)&&s.push(`path=${i}`),_.isString(n)&&s.push(`domain=${n}`),o===!0&&s.push("secure"),_.isString(a)&&s.push(`SameSite=${a}`),document.cookie=s.join("; ")},read(e){if(typeof document>"u")return null;let t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function lh(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function dh(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function $a(e,t,r){let i=!lh(t);return e&&(i||r==!1)?dh(e,t):t}var Xw=e=>e instanceof Le?{...e}:e;function Wt(e,t){t=t||{};let r={};function i(c,l,d,p){return _.isPlainObject(c)&&_.isPlainObject(l)?_.merge.call({caseless:p},c,l):_.isPlainObject(l)?_.merge({},l):_.isArray(l)?l.slice():l}function n(c,l,d,p){if(_.isUndefined(l)){if(!_.isUndefined(c))return i(void 0,c,d,p)}else return i(c,l,d,p)}function o(c,l){if(!_.isUndefined(l))return i(void 0,l)}function a(c,l){if(_.isUndefined(l)){if(!_.isUndefined(c))return i(void 0,c)}else return i(void 0,l)}function s(c,l,d){if(d in t)return i(c,l);if(d in e)return i(void 0,c)}let u={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(c,l,d)=>n(Xw(c),Xw(l),d,!0)};return _.forEach(Object.keys({...e,...t}),function(l){let d=u[l]||n,p=d(e[l],t[l],l);_.isUndefined(p)&&d!==s||(r[l]=p)}),r}var tc=e=>{let t=Wt({},e),{data:r,withXSRFToken:i,xsrfHeaderName:n,xsrfCookieName:o,headers:a,auth:s}=t;if(t.headers=a=Le.from(a),t.url=ga($a(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),s&&a.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):""))),_.isFormData(r)){if(Ce.hasStandardBrowserEnv||Ce.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(_.isFunction(r.getHeaders)){let u=r.getHeaders(),c=["content-type","content-length"];Object.entries(u).forEach(([l,d])=>{c.includes(l.toLowerCase())&&a.set(l,d)})}}if(Ce.hasStandardBrowserEnv&&(i&&_.isFunction(i)&&(i=i(t)),i||i!==!1&&Ww(t.url))){let u=n&&o&&Gw.read(o);u&&a.set(n,u)}return t};var aM=typeof XMLHttpRequest<"u",Qw=aM&&function(e){return new Promise(function(r,i){let n=tc(e),o=n.data,a=Le.from(n.headers).normalize(),{responseType:s,onUploadProgress:u,onDownloadProgress:c}=n,l,d,p,m,f;function g(){m&&m(),f&&f(),n.cancelToken&&n.cancelToken.unsubscribe(l),n.signal&&n.signal.removeEventListener("abort",l)}let v=new XMLHttpRequest;v.open(n.method.toUpperCase(),n.url,!0),v.timeout=n.timeout;function b(){if(!v)return;let k=Le.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),C={data:!s||s==="text"||s==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:k,config:e,request:v};ba(function(Se){r(Se),g()},function(Se){i(Se),g()},C),v=null}"onloadend"in v?v.onloadend=b:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.indexOf("file:")===0)||setTimeout(b)},v.onabort=function(){v&&(i(new H("Request aborted",H.ECONNABORTED,e,v)),v=null)},v.onerror=function(P){let C=P&&P.message?P.message:"Network Error",Ne=new H(C,H.ERR_NETWORK,e,v);Ne.event=P||null,i(Ne),v=null},v.ontimeout=function(){let P=n.timeout?"timeout of "+n.timeout+"ms exceeded":"timeout exceeded",C=n.transitional||Qu;n.timeoutErrorMessage&&(P=n.timeoutErrorMessage),i(new H(P,C.clarifyTimeoutError?H.ETIMEDOUT:H.ECONNABORTED,e,v)),v=null},o===void 0&&a.setContentType(null),"setRequestHeader"in v&&_.forEach(a.toJSON(),function(P,C){v.setRequestHeader(C,P)}),_.isUndefined(n.withCredentials)||(v.withCredentials=!!n.withCredentials),s&&s!=="json"&&(v.responseType=n.responseType),c&&([p,f]=Vi(c,!0),v.addEventListener("progress",p)),u&&v.upload&&([d,m]=Vi(u),v.upload.addEventListener("progress",d),v.upload.addEventListener("loadend",m)),(n.cancelToken||n.signal)&&(l=k=>{v&&(i(!k||k.type?new lr(null,e,v):k),v.abort(),v=null)},n.cancelToken&&n.cancelToken.subscribe(l),n.signal&&(n.signal.aborted?l():n.signal.addEventListener("abort",l)));let x=sh(n.url);if(x&&Ce.protocols.indexOf(x)===-1){i(new H("Unsupported protocol "+x+":",H.ERR_BAD_REQUEST,e));return}v.send(o||null)})};var sM=(e,t)=>{let{length:r}=e=e?e.filter(Boolean):[];if(t||r){let i=new AbortController,n,o=function(c){if(!n){n=!0,s();let l=c instanceof Error?c:this.reason;i.abort(l instanceof H?l:new lr(l instanceof Error?l.message:l))}},a=t&&setTimeout(()=>{a=null,o(new H(`timeout ${t} of ms exceeded`,H.ETIMEDOUT))},t),s=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(o):c.removeEventListener("abort",o)}),e=null)};e.forEach(c=>c.addEventListener("abort",o));let{signal:u}=i;return u.unsubscribe=()=>_.asap(s),u}},Yw=sM;var uM=function*(e,t){let r=e.byteLength;if(!t||r<t){yield e;return}let i=0,n;for(;i<r;)n=i+t,yield e.slice(i,n),i=n},cM=async function*(e,t){for await(let r of lM(e))yield*uM(r,t)},lM=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}let t=e.getReader();try{for(;;){let{done:r,value:i}=await t.read();if(r)break;yield i}}finally{await t.cancel()}},fh=(e,t,r,i)=>{let n=cM(e,t),o=0,a,s=u=>{a||(a=!0,i&&i(u))};return new ReadableStream({async pull(u){try{let{done:c,value:l}=await n.next();if(c){s(),u.close();return}let d=l.byteLength;if(r){let p=o+=d;r(p)}u.enqueue(new Uint8Array(l))}catch(c){throw s(c),c}},cancel(u){return s(u),n.return()}},{highWaterMark:2})};var ek=64*1024,{isFunction:rc}=_,dM=(({Request:e,Response:t})=>({Request:e,Response:t}))(_.global),{ReadableStream:tk,TextEncoder:rk}=_.global,nk=(e,...t)=>{try{return!!e(...t)}catch{return!1}},fM=e=>{e=_.merge.call({skipUndefined:!0},dM,e);let{fetch:t,Request:r,Response:i}=e,n=t?rc(t):typeof fetch=="function",o=rc(r),a=rc(i);if(!n)return!1;let s=n&&rc(tk),u=n&&(typeof rk=="function"?(f=>g=>f.encode(g))(new rk):async f=>new Uint8Array(await new r(f).arrayBuffer())),c=o&&s&&nk(()=>{let f=!1,g=new r(Ce.origin,{body:new tk,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!g}),l=a&&s&&nk(()=>_.isReadableStream(new i("").body)),d={stream:l&&(f=>f.body)};n&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!d[f]&&(d[f]=(g,v)=>{let b=g&&g[f];if(b)return b.call(g);throw new H(`Response type '${f}' is not supported`,H.ERR_NOT_SUPPORT,v)})});let p=async f=>{if(f==null)return 0;if(_.isBlob(f))return f.size;if(_.isSpecCompliantForm(f))return(await new r(Ce.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(_.isArrayBufferView(f)||_.isArrayBuffer(f))return f.byteLength;if(_.isURLSearchParams(f)&&(f=f+""),_.isString(f))return(await u(f)).byteLength},m=async(f,g)=>{let v=_.toFiniteNumber(f.getContentLength());return v??p(g)};return async f=>{let{url:g,method:v,data:b,signal:x,cancelToken:k,timeout:P,onDownloadProgress:C,onUploadProgress:Ne,responseType:Se,headers:Xt,withCredentials:Or="same-origin",fetchOptions:Rr}=tc(f),ni=t||fetch;Se=Se?(Se+"").toLowerCase():"text";let dn=Yw([x,k&&k.toAbortSignal()],P),Nr=null,mr=dn&&dn.unsubscribe&&(()=>{dn.unsubscribe()}),Av;try{if(Ne&&c&&v!=="get"&&v!=="head"&&(Av=await m(Xt,b))!==0){let jr=new r(g,{method:"POST",body:b,duplex:"half"}),ii;if(_.isFormData(b)&&(ii=jr.headers.get("content-type"))&&Xt.setContentType(ii),jr.body){let[yl,is]=uh(Av,Vi(ch(Ne)));b=fh(jr.body,ek,yl,is)}}_.isString(Or)||(Or=Or?"include":"omit");let Qt=o&&"credentials"in r.prototype,jv={...Rr,signal:dn,method:v.toUpperCase(),headers:Xt.normalize().toJSON(),body:b,duplex:"half",credentials:Qt?Or:void 0};Nr=o&&new r(g,jv);let Ar=await(o?ni(Nr,Rr):ni(g,jv)),Cv=l&&(Se==="stream"||Se==="response");if(l&&(C||Cv&&mr)){let jr={};["status","statusText","headers"].forEach(Zv=>{jr[Zv]=Ar[Zv]});let ii=_.toFiniteNumber(Ar.headers.get("content-length")),[yl,is]=C&&uh(ii,Vi(ch(C),!0))||[];Ar=new i(fh(Ar.body,ek,yl,()=>{is&&is(),mr&&mr()}),jr)}Se=Se||"text";let iP=await d[_.findKey(d,Se)||"text"](Ar,f);return!Cv&&mr&&mr(),await new Promise((jr,ii)=>{ba(jr,ii,{data:iP,headers:Le.from(Ar.headers),status:Ar.status,statusText:Ar.statusText,config:f,request:Nr})})}catch(Qt){throw mr&&mr(),Qt&&Qt.name==="TypeError"&&/Load failed|fetch/i.test(Qt.message)?Object.assign(new H("Network Error",H.ERR_NETWORK,f,Nr),{cause:Qt.cause||Qt}):H.from(Qt,Qt&&Qt.code,f,Nr)}}},pM=new Map,ph=e=>{let t=e&&e.env||{},{fetch:r,Request:i,Response:n}=t,o=[i,n,r],a=o.length,s=a,u,c,l=pM;for(;s--;)u=o[s],c=l.get(u),c===void 0&&l.set(u,c=s?new Map:fM(t)),l=c;return c},VK=ph();var mh={http:Gu,xhr:Qw,fetch:{get:ph}};_.forEach(mh,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});var ik=e=>`- ${e}`,hM=e=>_.isFunction(e)||e===null||e===!1;function gM(e,t){e=_.isArray(e)?e:[e];let{length:r}=e,i,n,o={};for(let a=0;a<r;a++){i=e[a];let s;if(n=i,!hM(i)&&(n=mh[(s=String(i)).toLowerCase()],n===void 0))throw new H(`Unknown adapter '${s}'`);if(n&&(_.isFunction(n)||(n=n.get(t))))break;o[s||"#"+a]=n}if(!n){let a=Object.entries(o).map(([u,c])=>`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build")),s=r?a.length>1?`since :
41
+ `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){let i=new this(t);return r.forEach(n=>i.set(n)),i}static accessor(t){let i=(this[Jw]=this[Jw]={accessors:{}}).accessors,n=this.prototype;function o(a){let s=va(a);i[s]||(nM(n,a),i[s]=!0)}return _.isArray(t)?t.forEach(o):o(t),this}};Fi.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);_.reduceDescriptors(Fi.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(i){this[r]=i}}});_.freezeMethods(Fi);var Le=Fi;function ya(e,t){let r=this||Li,i=t||r,n=Le.from(i.headers),o=i.data;return _.forEach(e,function(s){o=s.call(r,o,n.normalize(),t?t.status:void 0)}),n.normalize(),o}function _a(e){return!!(e&&e.__CANCEL__)}function Bw(e,t,r){H.call(this,e??"canceled",H.ERR_CANCELED,t,r),this.name="CanceledError"}_.inherits(Bw,H,{__CANCEL__:!0});var lr=Bw;function ba(e,t,r){let i=r.config.validateStatus;!r.status||!i||i(r.status)?e(r):t(new H("Request failed with status code "+r.status,[H.ERR_BAD_REQUEST,H.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function sh(e){let t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function iM(e,t){e=e||10;let r=new Array(e),i=new Array(e),n=0,o=0,a;return t=t!==void 0?t:1e3,function(u){let c=Date.now(),l=i[o];a||(a=c),r[n]=u,i[n]=c;let d=o,p=0;for(;d!==n;)p+=r[d++],d=d%e;if(n=(n+1)%e,n===o&&(o=(o+1)%e),c-a<t)return;let m=l&&c-l;return m?Math.round(p*1e3/m):void 0}}var Hw=iM;function oM(e,t){let r=0,i=1e3/t,n,o,a=(c,l=Date.now())=>{r=l,n=null,o&&(clearTimeout(o),o=null),e(...c)};return[(...c)=>{let l=Date.now(),d=l-r;d>=i?a(c,l):(n=c,o||(o=setTimeout(()=>{o=null,a(n)},i-d)))},()=>n&&a(n)]}var Kw=oM;var Vi=(e,t,r=3)=>{let i=0,n=Hw(50,250);return Kw(o=>{let a=o.loaded,s=o.lengthComputable?o.total:void 0,u=a-i,c=n(u),l=a<=s;i=a;let d={loaded:a,total:s,progress:s?a/s:void 0,bytes:u,rate:c||void 0,estimated:c&&s&&l?(s-a)/c:void 0,event:o,lengthComputable:s!=null,[t?"download":"upload"]:!0};e(d)},r)},uh=(e,t)=>{let r=e!=null;return[i=>t[0]({lengthComputable:r,total:e,loaded:i}),t[1]]},ch=e=>(...t)=>_.asap(()=>e(...t));var Ww=Ce.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,Ce.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(Ce.origin),Ce.navigator&&/(msie|trident)/i.test(Ce.navigator.userAgent)):()=>!0;var Gw=Ce.hasStandardBrowserEnv?{write(e,t,r,i,n,o,a){if(typeof document>"u")return;let s=[`${e}=${encodeURIComponent(t)}`];_.isNumber(r)&&s.push(`expires=${new Date(r).toUTCString()}`),_.isString(i)&&s.push(`path=${i}`),_.isString(n)&&s.push(`domain=${n}`),o===!0&&s.push("secure"),_.isString(a)&&s.push(`SameSite=${a}`),document.cookie=s.join("; ")},read(e){if(typeof document>"u")return null;let t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function lh(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function dh(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function $a(e,t,r){let i=!lh(t);return e&&(i||r==!1)?dh(e,t):t}var Xw=e=>e instanceof Le?{...e}:e;function Wt(e,t){t=t||{};let r={};function i(c,l,d,p){return _.isPlainObject(c)&&_.isPlainObject(l)?_.merge.call({caseless:p},c,l):_.isPlainObject(l)?_.merge({},l):_.isArray(l)?l.slice():l}function n(c,l,d,p){if(_.isUndefined(l)){if(!_.isUndefined(c))return i(void 0,c,d,p)}else return i(c,l,d,p)}function o(c,l){if(!_.isUndefined(l))return i(void 0,l)}function a(c,l){if(_.isUndefined(l)){if(!_.isUndefined(c))return i(void 0,c)}else return i(void 0,l)}function s(c,l,d){if(d in t)return i(c,l);if(d in e)return i(void 0,c)}let u={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(c,l,d)=>n(Xw(c),Xw(l),d,!0)};return _.forEach(Object.keys({...e,...t}),function(l){let d=u[l]||n,p=d(e[l],t[l],l);_.isUndefined(p)&&d!==s||(r[l]=p)}),r}var tc=e=>{let t=Wt({},e),{data:r,withXSRFToken:i,xsrfHeaderName:n,xsrfCookieName:o,headers:a,auth:s}=t;if(t.headers=a=Le.from(a),t.url=ga($a(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),s&&a.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):""))),_.isFormData(r)){if(Ce.hasStandardBrowserEnv||Ce.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(_.isFunction(r.getHeaders)){let u=r.getHeaders(),c=["content-type","content-length"];Object.entries(u).forEach(([l,d])=>{c.includes(l.toLowerCase())&&a.set(l,d)})}}if(Ce.hasStandardBrowserEnv&&(i&&_.isFunction(i)&&(i=i(t)),i||i!==!1&&Ww(t.url))){let u=n&&o&&Gw.read(o);u&&a.set(n,u)}return t};var aM=typeof XMLHttpRequest<"u",Qw=aM&&function(e){return new Promise(function(r,i){let n=tc(e),o=n.data,a=Le.from(n.headers).normalize(),{responseType:s,onUploadProgress:u,onDownloadProgress:c}=n,l,d,p,m,f;function g(){m&&m(),f&&f(),n.cancelToken&&n.cancelToken.unsubscribe(l),n.signal&&n.signal.removeEventListener("abort",l)}let v=new XMLHttpRequest;v.open(n.method.toUpperCase(),n.url,!0),v.timeout=n.timeout;function b(){if(!v)return;let k=Le.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),C={data:!s||s==="text"||s==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:k,config:e,request:v};ba(function(Se){r(Se),g()},function(Se){i(Se),g()},C),v=null}"onloadend"in v?v.onloadend=b:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.indexOf("file:")===0)||setTimeout(b)},v.onabort=function(){v&&(i(new H("Request aborted",H.ECONNABORTED,e,v)),v=null)},v.onerror=function(P){let C=P&&P.message?P.message:"Network Error",Ne=new H(C,H.ERR_NETWORK,e,v);Ne.event=P||null,i(Ne),v=null},v.ontimeout=function(){let P=n.timeout?"timeout of "+n.timeout+"ms exceeded":"timeout exceeded",C=n.transitional||Qu;n.timeoutErrorMessage&&(P=n.timeoutErrorMessage),i(new H(P,C.clarifyTimeoutError?H.ETIMEDOUT:H.ECONNABORTED,e,v)),v=null},o===void 0&&a.setContentType(null),"setRequestHeader"in v&&_.forEach(a.toJSON(),function(P,C){v.setRequestHeader(C,P)}),_.isUndefined(n.withCredentials)||(v.withCredentials=!!n.withCredentials),s&&s!=="json"&&(v.responseType=n.responseType),c&&([p,f]=Vi(c,!0),v.addEventListener("progress",p)),u&&v.upload&&([d,m]=Vi(u),v.upload.addEventListener("progress",d),v.upload.addEventListener("loadend",m)),(n.cancelToken||n.signal)&&(l=k=>{v&&(i(!k||k.type?new lr(null,e,v):k),v.abort(),v=null)},n.cancelToken&&n.cancelToken.subscribe(l),n.signal&&(n.signal.aborted?l():n.signal.addEventListener("abort",l)));let x=sh(n.url);if(x&&Ce.protocols.indexOf(x)===-1){i(new H("Unsupported protocol "+x+":",H.ERR_BAD_REQUEST,e));return}v.send(o||null)})};var sM=(e,t)=>{let{length:r}=e=e?e.filter(Boolean):[];if(t||r){let i=new AbortController,n,o=function(c){if(!n){n=!0,s();let l=c instanceof Error?c:this.reason;i.abort(l instanceof H?l:new lr(l instanceof Error?l.message:l))}},a=t&&setTimeout(()=>{a=null,o(new H(`timeout ${t} of ms exceeded`,H.ETIMEDOUT))},t),s=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(o):c.removeEventListener("abort",o)}),e=null)};e.forEach(c=>c.addEventListener("abort",o));let{signal:u}=i;return u.unsubscribe=()=>_.asap(s),u}},Yw=sM;var uM=function*(e,t){let r=e.byteLength;if(!t||r<t){yield e;return}let i=0,n;for(;i<r;)n=i+t,yield e.slice(i,n),i=n},cM=async function*(e,t){for await(let r of lM(e))yield*uM(r,t)},lM=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}let t=e.getReader();try{for(;;){let{done:r,value:i}=await t.read();if(r)break;yield i}}finally{await t.cancel()}},fh=(e,t,r,i)=>{let n=cM(e,t),o=0,a,s=u=>{a||(a=!0,i&&i(u))};return new ReadableStream({async pull(u){try{let{done:c,value:l}=await n.next();if(c){s(),u.close();return}let d=l.byteLength;if(r){let p=o+=d;r(p)}u.enqueue(new Uint8Array(l))}catch(c){throw s(c),c}},cancel(u){return s(u),n.return()}},{highWaterMark:2})};var ek=64*1024,{isFunction:rc}=_,dM=(({Request:e,Response:t})=>({Request:e,Response:t}))(_.global),{ReadableStream:tk,TextEncoder:rk}=_.global,nk=(e,...t)=>{try{return!!e(...t)}catch{return!1}},fM=e=>{e=_.merge.call({skipUndefined:!0},dM,e);let{fetch:t,Request:r,Response:i}=e,n=t?rc(t):typeof fetch=="function",o=rc(r),a=rc(i);if(!n)return!1;let s=n&&rc(tk),u=n&&(typeof rk=="function"?(f=>g=>f.encode(g))(new rk):async f=>new Uint8Array(await new r(f).arrayBuffer())),c=o&&s&&nk(()=>{let f=!1,g=new r(Ce.origin,{body:new tk,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!g}),l=a&&s&&nk(()=>_.isReadableStream(new i("").body)),d={stream:l&&(f=>f.body)};n&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!d[f]&&(d[f]=(g,v)=>{let b=g&&g[f];if(b)return b.call(g);throw new H(`Response type '${f}' is not supported`,H.ERR_NOT_SUPPORT,v)})});let p=async f=>{if(f==null)return 0;if(_.isBlob(f))return f.size;if(_.isSpecCompliantForm(f))return(await new r(Ce.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(_.isArrayBufferView(f)||_.isArrayBuffer(f))return f.byteLength;if(_.isURLSearchParams(f)&&(f=f+""),_.isString(f))return(await u(f)).byteLength},m=async(f,g)=>{let v=_.toFiniteNumber(f.getContentLength());return v??p(g)};return async f=>{let{url:g,method:v,data:b,signal:x,cancelToken:k,timeout:P,onDownloadProgress:C,onUploadProgress:Ne,responseType:Se,headers:Xt,withCredentials:Or="same-origin",fetchOptions:Rr}=tc(f),ni=t||fetch;Se=Se?(Se+"").toLowerCase():"text";let dn=Yw([x,k&&k.toAbortSignal()],P),Nr=null,mr=dn&&dn.unsubscribe&&(()=>{dn.unsubscribe()}),Av;try{if(Ne&&c&&v!=="get"&&v!=="head"&&(Av=await m(Xt,b))!==0){let jr=new r(g,{method:"POST",body:b,duplex:"half"}),ii;if(_.isFormData(b)&&(ii=jr.headers.get("content-type"))&&Xt.setContentType(ii),jr.body){let[yl,is]=uh(Av,Vi(ch(Ne)));b=fh(jr.body,ek,yl,is)}}_.isString(Or)||(Or=Or?"include":"omit");let Qt=o&&"credentials"in r.prototype,jv={...Rr,signal:dn,method:v.toUpperCase(),headers:Xt.normalize().toJSON(),body:b,duplex:"half",credentials:Qt?Or:void 0};Nr=o&&new r(g,jv);let Ar=await(o?ni(Nr,Rr):ni(g,jv)),Cv=l&&(Se==="stream"||Se==="response");if(l&&(C||Cv&&mr)){let jr={};["status","statusText","headers"].forEach(Zv=>{jr[Zv]=Ar[Zv]});let ii=_.toFiniteNumber(Ar.headers.get("content-length")),[yl,is]=C&&uh(ii,Vi(ch(C),!0))||[];Ar=new i(fh(Ar.body,ek,yl,()=>{is&&is(),mr&&mr()}),jr)}Se=Se||"text";let iP=await d[_.findKey(d,Se)||"text"](Ar,f);return!Cv&&mr&&mr(),await new Promise((jr,ii)=>{ba(jr,ii,{data:iP,headers:Le.from(Ar.headers),status:Ar.status,statusText:Ar.statusText,config:f,request:Nr})})}catch(Qt){throw mr&&mr(),Qt&&Qt.name==="TypeError"&&/Load failed|fetch/i.test(Qt.message)?Object.assign(new H("Network Error",H.ERR_NETWORK,f,Nr),{cause:Qt.cause||Qt}):H.from(Qt,Qt&&Qt.code,f,Nr)}}},pM=new Map,ph=e=>{let t=e&&e.env||{},{fetch:r,Request:i,Response:n}=t,o=[i,n,r],a=o.length,s=a,u,c,l=pM;for(;s--;)u=o[s],c=l.get(u),c===void 0&&l.set(u,c=s?new Map:fM(t)),l=c;return c},V5=ph();var mh={http:Gu,xhr:Qw,fetch:{get:ph}};_.forEach(mh,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});var ik=e=>`- ${e}`,hM=e=>_.isFunction(e)||e===null||e===!1;function gM(e,t){e=_.isArray(e)?e:[e];let{length:r}=e,i,n,o={};for(let a=0;a<r;a++){i=e[a];let s;if(n=i,!hM(i)&&(n=mh[(s=String(i)).toLowerCase()],n===void 0))throw new H(`Unknown adapter '${s}'`);if(n&&(_.isFunction(n)||(n=n.get(t))))break;o[s||"#"+a]=n}if(!n){let a=Object.entries(o).map(([u,c])=>`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build")),s=r?a.length>1?`since :
42
42
  `+a.map(ik).join(`
43
43
  `):" "+ik(a[0]):"as no adapter specified";throw new H("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return n}var nc={getAdapter:gM,adapters:mh};function hh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new lr(null,e)}function ic(e){return hh(e),e.headers=Le.from(e.headers),e.data=ya.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),nc.getAdapter(e.adapter||Li.adapter,e)(e).then(function(i){return hh(e),i.data=ya.call(e,e.transformResponse,i),i.headers=Le.from(i.headers),i},function(i){return _a(i)||(hh(e),i&&i.response&&(i.response.data=ya.call(e,e.transformResponse,i.response),i.response.headers=Le.from(i.response.headers))),Promise.reject(i)})}var oc="1.13.2";var ac={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ac[e]=function(i){return typeof i===e||"a"+(t<1?"n ":" ")+e}});var ok={};ac.transitional=function(t,r,i){function n(o,a){return"[Axios v"+oc+"] Transitional option '"+o+"'"+a+(i?". "+i:"")}return(o,a,s)=>{if(t===!1)throw new H(n(a," has been removed"+(r?" in "+r:"")),H.ERR_DEPRECATED);return r&&!ok[a]&&(ok[a]=!0,console.warn(n(a," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(o,a,s):!0}};ac.spelling=function(t){return(r,i)=>(console.warn(`${i} is likely a misspelling of ${t}`),!0)};function vM(e,t,r){if(typeof e!="object")throw new H("options must be an object",H.ERR_BAD_OPTION_VALUE);let i=Object.keys(e),n=i.length;for(;n-- >0;){let o=i[n],a=t[o];if(a){let s=e[o],u=s===void 0||a(s,o,e);if(u!==!0)throw new H("option "+o+" must be "+u,H.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new H("Unknown option "+o,H.ERR_BAD_OPTION)}}var xa={assertOptions:vM,validators:ac};var dr=xa.validators,Ji=class{constructor(t){this.defaults=t||{},this.interceptors={request:new eh,response:new eh}}async request(t,r){try{return await this._request(t,r)}catch(i){if(i instanceof Error){let n={};Error.captureStackTrace?Error.captureStackTrace(n):n=new Error;let o=n.stack?n.stack.replace(/^.+\n/,""):"";try{i.stack?o&&!String(i.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(i.stack+=`
44
44
  `+o):i.stack=o}catch{}}throw i}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Wt(this.defaults,r);let{transitional:i,paramsSerializer:n,headers:o}=r;i!==void 0&&xa.assertOptions(i,{silentJSONParsing:dr.transitional(dr.boolean),forcedJSONParsing:dr.transitional(dr.boolean),clarifyTimeoutError:dr.transitional(dr.boolean)},!1),n!=null&&(_.isFunction(n)?r.paramsSerializer={serialize:n}:xa.assertOptions(n,{encode:dr.function,serialize:dr.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),xa.assertOptions(r,{baseUrl:dr.spelling("baseURL"),withXsrfToken:dr.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let a=o&&_.merge(o.common,o[r.method]);o&&_.forEach(["delete","get","head","post","put","patch","common"],f=>{delete o[f]}),r.headers=Le.concat(a,o);let s=[],u=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(r)===!1||(u=u&&g.synchronous,s.unshift(g.fulfilled,g.rejected))});let c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let l,d=0,p;if(!u){let f=[ic.bind(this),void 0];for(f.unshift(...s),f.push(...c),p=f.length,l=Promise.resolve(r);d<p;)l=l.then(f[d++],f[d++]);return l}p=s.length;let m=r;for(;d<p;){let f=s[d++],g=s[d++];try{m=f(m)}catch(v){g.call(this,v);break}}try{l=ic.call(this,m)}catch(f){return Promise.reject(f)}for(d=0,p=c.length;d<p;)l=l.then(c[d++],c[d++]);return l}getUri(t){t=Wt(this.defaults,t);let r=$a(t.baseURL,t.url,t.allowAbsoluteUrls);return ga(r,t.params,t.paramsSerializer)}};_.forEach(["delete","get","head","options"],function(t){Ji.prototype[t]=function(r,i){return this.request(Wt(i||{},{method:t,url:r,data:(i||{}).data}))}});_.forEach(["post","put","patch"],function(t){function r(i){return function(o,a,s){return this.request(Wt(s||{},{method:t,headers:i?{"Content-Type":"multipart/form-data"}:{},url:o,data:a}))}}Ji.prototype[t]=r(),Ji.prototype[t+"Form"]=r(!0)});var wa=Ji;var gh=class e{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(o){r=o});let i=this;this.promise.then(n=>{if(!i._listeners)return;let o=i._listeners.length;for(;o-- >0;)i._listeners[o](n);i._listeners=null}),this.promise.then=n=>{let o,a=new Promise(s=>{i.subscribe(s),o=s}).then(n);return a.cancel=function(){i.unsubscribe(o)},a},t(function(o,a,s){i.reason||(i.reason=new lr(o,a,s),r(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;let r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let t=new AbortController,r=i=>{t.abort(i)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new e(function(n){t=n}),cancel:t}}},ak=gh;function vh(e){return function(r){return e.apply(null,r)}}function yh(e){return _.isObject(e)&&e.isAxiosError===!0}var _h={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(_h).forEach(([e,t])=>{_h[t]=e});var sk=_h;function uk(e){let t=new wa(e),r=fa(wa.prototype.request,t);return _.extend(r,wa.prototype,t,{allOwnKeys:!0}),_.extend(r,t,null,{allOwnKeys:!0}),r.create=function(n){return uk(Wt(e,n))},r}var Me=uk(Li);Me.Axios=wa;Me.CanceledError=lr;Me.CancelToken=ak;Me.isCancel=_a;Me.VERSION=oc;Me.toFormData=nn;Me.AxiosError=H;Me.Cancel=Me.CanceledError;Me.all=function(t){return Promise.all(t)};Me.spread=vh;Me.isAxiosError=yh;Me.mergeConfig=Wt;Me.AxiosHeaders=Le;Me.formToJSON=e=>Yu(_.isHTMLForm(e)?new FormData(e):e);Me.getAdapter=nc.getAdapter;Me.HttpStatusCode=sk;Me.default=Me;var on=Me;var{Axios:qW,AxiosError:LW,CanceledError:FW,isCancel:VW,CancelToken:JW,VERSION:BW,all:HW,Cancel:KW,isAxiosError:WW,spread:GW,toFormData:XW,AxiosHeaders:QW,HttpStatusCode:YW,formToJSON:eG,getAdapter:tG,mergeConfig:rG}=on;var Kn={portals:[{id:"dati-gov-it",name:"dati.gov.it",api_url:"https://www.dati.gov.it/opendata",api_url_aliases:["https://dati.gov.it/opendata","http://www.dati.gov.it/opendata","http://dati.gov.it/opendata"],search:{force_text_field:!0},dataset_view_url:"https://www.dati.gov.it/view-dataset/dataset?id={id}",organization_view_url:"https://www.dati.gov.it/view-dataset?organization={name}"},{id:"anac-opendata",name:"dati.anticorruzione.it/opendata",api_url:"https://dati.anticorruzione.it/opendata",api_url_aliases:["http://dati.anticorruzione.it/opendata","https://dati.anticorruzione.it","http://dati.anticorruzione.it"]},{id:"data-gov-uk",name:"data.gov.uk",api_url:"https://data.gov.uk",api_url_aliases:["https://www.data.gov.uk","http://data.gov.uk","http://www.data.gov.uk"],api_path:"/api/action",dataset_view_url:"https://www.data.gov.uk/dataset/{id}/{name}",organization_view_url:"https://www.data.gov.uk/organization/{name}"},{id:"catalog-data-gov",name:"catalog.data.gov",api_url:"https://catalog.data.gov",api_url_aliases:["http://catalog.data.gov"]},{id:"open-canada",name:"open.canada.ca",api_url:"https://open.canada.ca/data",api_url_aliases:["http://open.canada.ca/data","https://open.canada.ca","http://open.canada.ca"]},{id:"data-gov-au",name:"data.gov.au",api_url:"https://data.gov.au",api_url_aliases:["http://data.gov.au","https://www.data.gov.au","http://www.data.gov.au"],dataset_view_url:"https://data.gov.au/data/dataset/{name}",organization_view_url:"https://data.gov.au/data/organization/{name}"},{id:"opendata-swiss",name:"opendata.swiss",api_url:"https://ckan.opendata.swiss",api_url_aliases:["https://opendata.swiss","http://opendata.swiss","https://www.opendata.swiss","http://www.opendata.swiss"]},{id:"govdata-de",name:"govdata.de",api_url:"https://ckan.govdata.de",api_url_aliases:["https://www.govdata.de","https://govdata.de","https://www.govdata.de/daten","https://data.gov.de","https://www.data.gov.de"],dataset_view_url:"https://ckan.govdata.de/dataset/{name}",organization_view_url:"https://ckan.govdata.de/organization/{name}"}],defaults:{dataset_view_url:"{server_url}/dataset/{name}",organization_view_url:"{server_url}/organization/{name}",search:{force_text_field:!1}}};function ka(e){return e.replace(/\/$/,"")}function _M(e){try{return new URL(e).hostname}catch{return null}}function Sa(e){let t=ka(e);return Kn.portals.find(i=>{let n=ka(i.api_url),o=(i.api_url_aliases||[]).map(ka);return n===t||o.includes(t)})||null}function ck(e){let t=Sa(e),r=Kn.defaults?.search||{};return{force_text_field:t?.search?.force_text_field??r.force_text_field??!1}}function bh(e){return ka(e)}function sc(e){let t=Kn.portals.find(r=>[r.api_url,...r.api_url_aliases||[]].some(n=>_M(n)===e));return t?ka(t.api_url):null}function lk(e){return Sa(e)?.api_path||"/api/3/action"}var bM=(()=>{let e=null;return async()=>(e||(e=(async()=>{try{return await import("node:zlib")}catch{return null}})()),e)})();function dk(e,t){if(!e)return;let r=t.toLowerCase();for(let[i,n]of Object.entries(e))if(i.toLowerCase()===r)return Array.isArray(n)?n.join(","):String(n)}function $M(e){if(e&&!(typeof Buffer>"u")){if(Buffer.isBuffer(e))return e;if(e instanceof ArrayBuffer)return Buffer.from(e);if(ArrayBuffer.isView(e))return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}}function xM(e){if(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}async function wM(e,t){if(t&&typeof DecompressionStream<"u")try{let r=new DecompressionStream(t.includes("br")?"br":t.includes("deflate")?"deflate":"gzip"),i=await new Response(new Blob([e]).stream().pipeThrough(r)).arrayBuffer();return new TextDecoder("utf-8").decode(i).trim()}catch{}return new TextDecoder("utf-8").decode(e).trim()}async function fk(e,t){if(e==null)return e;let r=xM(e);if(r&&typeof Buffer>"u"){let u=dk(t,"content-encoding"),c=await wM(r,u);if(!c)return c;try{return JSON.parse(c)}catch{return c}}if(typeof e=="string")try{return JSON.parse(e)}catch{return e}let i=$M(e);if(!i)return e;let n=dk(t,"content-encoding"),o=i,a=await bM();try{a&&(n?.includes("gzip")?o=a.gunzipSync(i):n?.includes("br")?o=a.brotliDecompressSync(i):n?.includes("deflate")?o=a.inflateSync(i):i.length>=2&&i[0]===31&&i[1]===139&&(o=a.gunzipSync(i)))}catch{o=i}let s=o.toString("utf-8").trim();if(!s)return s;try{return JSON.parse(s)}catch{return s}}async function me(e,t,r={}){let i=typeof process<"u"&&!!process.versions?.node,n=e;try{let u=new URL(e).hostname,c=sc(u);c&&(n=c)}catch{}let o=n.replace(/\/$/,""),a=lk(n),s=`${o}${a}/${t}`;try{let u;if(i){let c=await on.get(s,{params:r,timeout:3e4,responseType:"arraybuffer",headers:{Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9,it;q=0.8","Accept-Encoding":"gzip, deflate, br",Connection:"keep-alive",Referer:`${o}/`,"Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-Dest":"document","Upgrade-Insecure-Requests":"1","Sec-CH-UA":'"Chromium";v="120", "Not?A_Brand";v="24", "Google Chrome";v="120"',"Sec-CH-UA-Mobile":"?0","Sec-CH-UA-Platform":'"Linux"',"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}});u=await fk(c.data,c.headers)}else{let c=new URLSearchParams;for(let[f,g]of Object.entries(r))g!=null&&c.set(f,String(g));let l=c.toString()?`${s}?${c.toString()}`:s,d=await fetch(l,{method:"GET",headers:{Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9,it;q=0.8","Accept-Encoding":"gzip, deflate, br",Connection:"keep-alive",Referer:`${o}/`,"Sec-Fetch-Site":"same-origin","Sec-Fetch-Mode":"navigate","Sec-Fetch-Dest":"document","Upgrade-Insecure-Requests":"1","Sec-CH-UA":'"Chromium";v="120", "Not?A_Brand";v="24", "Google Chrome";v="120"',"Sec-CH-UA-Mobile":"?0","Sec-CH-UA-Platform":'"Linux"',"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}});if(!d.ok)throw new Error(`CKAN API error (${d.status}): ${d.statusText}`);let p=await d.arrayBuffer(),m={};d.headers.forEach((f,g)=>{m[g]=f}),u=await fk(p,m)}if(u&&u.success===!0)return u.result;throw new Error(`CKAN API returned success=false: ${JSON.stringify(u)}`)}catch(u){if(on.isAxiosError(u)){let c=u;if(c.response){let l=c.response.status,d=c.response.data,p=d?.error?.message||d?.error||"Unknown error";throw new Error(`CKAN API error (${l}): ${p}`)}else throw c.code==="ECONNABORTED"?new Error(`Request timeout connecting to ${e}`):c.code==="ENOTFOUND"?new Error(`Server not found: ${e}`):new Error(`Network error: ${c.message}`)}throw u}}function re(e,t=kw){return e.length<=t?e:e.substring(0,t)+`
@@ -568,7 +568,7 @@ Examples:
568
568
  - Field exists: { q: "organization:* AND num_resources:[1 TO *]" }
569
569
  - Boosting: { q: "title:climate^2 OR notes:climate" }
570
570
  - Filter org: { fq: "organization:regione-siciliana" }
571
- - Get facets: { facet_field: ["organization"], rows: 0 }`,inputSchema:S.object({server_url:S.string().url("Must be a valid URL").describe("Base URL of the CKAN server"),q:S.string().optional().default("*:*").describe("Search query in Solr syntax"),fq:S.string().optional().describe("Filter query in Solr syntax"),rows:S.number().int().min(0).max(1e3).optional().default(10).describe("Number of results to return"),start:S.number().int().min(0).optional().default(0).describe("Offset for pagination"),sort:S.string().optional().describe("Sort field and direction (e.g., 'metadata_modified desc')"),facet_field:S.array(S.string()).optional().describe("Fields to facet on"),facet_limit:S.number().int().min(1).optional().default(50).describe("Maximum facet values per field"),include_drafts:S.boolean().optional().default(!1).describe("Include draft datasets"),content_recent:S.boolean().optional().default(!1).describe("Use issued date with fallback to metadata_created for recent content"),content_recent_days:S.number().int().min(1).optional().default(30).describe("Day window for content_recent (default 30)"),query_parser:S.enum(["default","text"]).optional().describe("Override search parser ('text' forces text:(...) on non-fielded queries)"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{resourceUri:ns}}},async t=>{try{let r=t.q,i=r,n=t.sort;if(t.content_recent){let d=t.content_recent_days??30,p=`(issued:[NOW-${d}DAYS TO NOW]) OR (-issued:* AND metadata_created:[NOW-${d}DAYS TO NOW])`;i=r&&r!=="*:*"?`(${r}) AND (${p})`:p,n||(n="issued desc, metadata_created desc")}let{effectiveQuery:o}=xh(t.server_url,i,t.query_parser),a={q:o,rows:t.rows,start:t.start,include_private:t.include_drafts};t.fq&&(a.fq=t.fq),n&&(a.sort=n),t.facet_field&&t.facet_field.length>0&&(a["facet.field"]=JSON.stringify(t.facet_field),a["facet.limit"]=t.facet_limit);let s=await me(t.server_url,"package_search",a);if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(s,null,2))}],structuredContent:s};let u=`# CKAN Package Search Results
571
+ - Get facets: { facet_field: ["organization"], rows: 0 }`,inputSchema:S.object({server_url:S.string().url("Must be a valid URL").describe("Base URL of the CKAN server"),q:S.string().optional().default("*:*").describe("Search query in Solr syntax"),fq:S.string().optional().describe("Filter query in Solr syntax; applied after scoring, does not affect relevance (e.g., 'organization:comune-palermo', 'res_format:CSV')"),rows:S.number().int().min(0).max(1e3).optional().default(10).describe("Number of results to return"),start:S.number().int().min(0).optional().default(0).describe("Offset for pagination"),sort:S.string().optional().describe("Sort field and direction (e.g., 'metadata_modified desc')"),facet_field:S.array(S.string()).optional().describe("Fields to facet on"),facet_limit:S.number().int().min(1).optional().default(50).describe("Maximum facet values per field"),include_drafts:S.boolean().optional().default(!1).describe("Include draft datasets"),content_recent:S.boolean().optional().default(!1).describe("Use issued date with fallback to metadata_created for recent content"),content_recent_days:S.number().int().min(1).optional().default(30).describe("Day window for content_recent (default 30)"),query_parser:S.enum(["default","text"]).optional().describe("Override search parser ('text' forces text:(...) on non-fielded queries)"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{resourceUri:ns}}},async t=>{try{let r=t.q,i=r,n=t.sort;if(t.content_recent){let d=t.content_recent_days??30,p=`(issued:[NOW-${d}DAYS TO NOW]) OR (-issued:* AND metadata_created:[NOW-${d}DAYS TO NOW])`;i=r&&r!=="*:*"?`(${r}) AND (${p})`:p,n||(n="issued desc, metadata_created desc")}let{effectiveQuery:o}=xh(t.server_url,i,t.query_parser),a={q:o,rows:t.rows,start:t.start,include_private:t.include_drafts};t.fq&&(a.fq=t.fq),n&&(a.sort=n),t.facet_field&&t.facet_field.length>0&&(a["facet.field"]=JSON.stringify(t.facet_field),a["facet.limit"]=t.facet_limit);let s=await me(t.server_url,"package_search",a);if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(s,null,2))}],structuredContent:s};let u=`# CKAN Package Search Results
572
572
 
573
573
  **Server**: ${t.server_url}
574
574
  **Query**: ${r}
@@ -610,22 +610,27 @@ Note: showing top ${f.length} only. Use \`response_format: json\` for full list.
610
610
  **More results available**: Use \`start: ${d}\` to see next page.
611
611
  `}let c=[{id:"title",type:"text"},{id:"organization",type:"text"},{id:"formats",type:"text"},{id:"num_resources",type:"int"},{id:"metadata_modified",type:"timestamp"},{id:"license_id",type:"text"}],l=(s.results||[]).map(d=>({title:d.title||d.name,organization:d.organization?.title||"-",formats:[...new Set((d.resources||[]).map(p=>p.format).filter(Boolean))].join(", ")||"-",num_resources:d.num_resources||0,metadata_modified:d.metadata_modified||"-",license_id:d.license_id||"-"}));return{content:[{type:"text",text:re(Ze(u))}],structuredContent:{server_url:t.server_url,total:s.count||0,fields:c,records:l}}}catch(r){return{content:[{type:"text",text:`Error searching packages: ${r instanceof Error?r.message:String(r)}`}],isError:!0}}}),e.registerTool("ckan_find_relevant_datasets",{title:"Find Relevant CKAN Datasets",description:`Find and rank datasets by relevance to a query using weighted fields.
612
612
 
613
+ Use this instead of ckan_package_search when you want relevance-ranked results with
614
+ explicit scoring across title, notes, tags, and organization fields.
615
+ Use ckan_package_search instead when you need Solr filter syntax, facets, or pagination.
616
+
613
617
  Uses package_search for discovery and applies a local scoring model.
614
618
 
615
619
  Args:
616
620
  - server_url (string): Base URL of CKAN server (e.g., "https://dati.gov.it/opendata")
617
- - query (string): Search query text
621
+ - query (string): Natural language or keyword query (e.g., "mobilit\xE0 urbana", "air quality")
618
622
  - limit (number): Number of datasets to return (default: 10)
619
- - weights (object): Optional weights for title/notes/tags/organization
623
+ - weights (object): Field weights for scoring \u2014 higher weight = more influence on rank
624
+ Default: title=4, tags=3, notes=2, organization=1
620
625
  - query_parser ('default' | 'text'): Override search parser behavior
621
626
  - response_format ('markdown' | 'json'): Output format
622
627
 
623
628
  Returns:
624
- Ranked datasets with relevance scores and breakdowns
629
+ Ranked datasets with relevance scores and per-field score breakdowns
625
630
 
626
631
  Examples:
627
632
  - { server_url: "https://dati.gov.it/opendata", query: "mobilit\xE0" }
628
- - { server_url: "...", query: "trasporti", limit: 5, weights: { title: 5, notes: 2 } }`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),query:S.string().min(2).describe("Search query text"),limit:S.number().int().min(1).max(50).optional().default(10).describe("Number of datasets to return"),weights:S.object({title:S.number().min(0).optional(),notes:S.number().min(0).optional(),tags:S.number().min(0).optional(),organization:S.number().min(0).optional()}).optional().describe("Optional weights per field"),query_parser:S.enum(["default","text"]).optional().describe("Override search parser ('text' forces text:(...) on non-fielded queries)"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0}},async t=>{try{let r={...$E,...t.weights??{}},i=Math.min(Math.max(t.limit*5,t.limit),100),{effectiveQuery:n}=xh(t.server_url,t.query,t.query_parser),o=await me(t.server_url,"package_search",{q:n,rows:i,start:0}),a=(o.results||[]).map(l=>{let{total:d,breakdown:p}=yL(t.query,l,r);return{dataset:l,score:d,breakdown:p}});a.sort((l,d)=>d.score-l.score);let s=a.slice(0,t.limit).map(l=>{let d=l.dataset;return{id:d.id,name:d.name,title:d.title||d.name,organization:d.organization?.title||d.organization?.name||d.owner_org,tags:Array.isArray(d.tags)?d.tags.map(p=>p.name):[],metadata_modified:d.metadata_modified,score:l.score,breakdown:l.breakdown}}),u={query:t.query,terms:xE(t.query),weights:r,total_results:o.count??0,returned:s.length,results:s};if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(u,null,2))}],structuredContent:u};let c=`# Relevant CKAN Datasets
633
+ - { server_url: "...", query: "trasporti", limit: 5, weights: { title: 5, notes: 2 } }`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),query:S.string().min(2).describe("Natural language or keyword query to match against dataset title, notes, tags, and organization"),limit:S.number().int().min(1).max(50).optional().default(10).describe("Number of datasets to return"),weights:S.object({title:S.number().min(0).optional().describe("Weight for title match (default 4)"),notes:S.number().min(0).optional().describe("Weight for description match (default 2)"),tags:S.number().min(0).optional().describe("Weight for tag match (default 3)"),organization:S.number().min(0).optional().describe("Weight for organization match (default 1)")}).optional().describe("Per-field scoring weights; unspecified fields use defaults"),query_parser:S.enum(["default","text"]).optional().describe("Override search parser ('text' forces text:(...) on non-fielded queries)"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0}},async t=>{try{let r={...$E,...t.weights??{}},i=Math.min(Math.max(t.limit*5,t.limit),100),{effectiveQuery:n}=xh(t.server_url,t.query,t.query_parser),o=await me(t.server_url,"package_search",{q:n,rows:i,start:0}),a=(o.results||[]).map(l=>{let{total:d,breakdown:p}=yL(t.query,l,r);return{dataset:l,score:d,breakdown:p}});a.sort((l,d)=>d.score-l.score);let s=a.slice(0,t.limit).map(l=>{let d=l.dataset;return{id:d.id,name:d.name,title:d.title||d.name,organization:d.organization?.title||d.organization?.name||d.owner_org,tags:Array.isArray(d.tags)?d.tags.map(p=>p.name):[],metadata_modified:d.metadata_modified,score:l.score,breakdown:l.breakdown}}),u={query:t.query,terms:xE(t.query),weights:r,total_results:o.count??0,returned:s.length,results:s};if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(u,null,2))}],structuredContent:u};let c=`# Relevant CKAN Datasets
629
634
 
630
635
  `;return c+=`**Server**: ${t.server_url}
631
636
  `,c+=`**Query**: ${t.query}
@@ -690,7 +695,7 @@ Args:
690
695
  - response_format ('markdown' | 'json'): Output format
691
696
 
692
697
  Returns:
693
- List of organizations with metadata. When limit=0, returns only the count of organizations with datasets.`,inputSchema:S.object({server_url:S.string().url(),all_fields:S.boolean().optional().default(!1),sort:S.string().optional().default("name asc"),limit:S.number().int().min(0).optional().default(100),offset:S.number().int().min(0).optional().default(0),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{if(t.limit===0){let o=(await me(t.server_url,"package_search",{rows:0,"facet.field":JSON.stringify(["organization"]),"facet.limit":-1})).search_facets?.organization?.items?.length||0;return t.response_format==="json"?{content:[{type:"text",text:JSON.stringify({count:o},null,2)}],structuredContent:{count:o}}:{content:[{type:"text",text:`# CKAN Organizations Count
698
+ List of organizations with metadata. When limit=0, returns only the count of organizations with datasets.`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),all_fields:S.boolean().optional().default(!1).describe("Return full organization objects (true) or just name slugs (false)"),sort:S.string().optional().default("name asc").describe("Sort field and direction (e.g., 'name asc', 'package_count desc')"),limit:S.number().int().min(0).optional().default(100).describe("Max organizations to return. Use 0 to get only the count via faceting"),offset:S.number().int().min(0).optional().default(0).describe("Pagination offset"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{if(t.limit===0){let o=(await me(t.server_url,"package_search",{rows:0,"facet.field":JSON.stringify(["organization"]),"facet.limit":-1})).search_facets?.organization?.items?.length||0;return t.response_format==="json"?{content:[{type:"text",text:JSON.stringify({count:o},null,2)}],structuredContent:{count:o}}:{content:[{type:"text",text:`# CKAN Organizations Count
694
699
 
695
700
  **Server**: ${t.server_url}
696
701
  **Total organizations (with datasets)**: ${o}
@@ -732,7 +737,7 @@ Args:
732
737
  - response_format ('markdown' | 'json'): Output format
733
738
 
734
739
  Returns:
735
- Organization details with optional datasets and users`,inputSchema:S.object({server_url:S.string().url(),id:S.string().min(1),include_datasets:S.boolean().optional().default(!0),include_users:S.boolean().optional().default(!1),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{let r=await me(t.server_url,"organization_show",{id:t.id,include_datasets:t.include_datasets,include_users:t.include_users});if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(r,null,2))}],structuredContent:r};let i=`# Organization: ${r.title||r.name}
740
+ Organization details with optional datasets and users`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),id:S.string().min(1).describe("Organization ID (UUID) or machine-readable name slug (e.g., 'regione-siciliana')"),include_datasets:S.boolean().optional().default(!0).describe("Include the list of datasets published by this organization"),include_users:S.boolean().optional().default(!1).describe("Include the list of users belonging to this organization"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{let r=await me(t.server_url,"organization_show",{id:t.id,include_datasets:t.include_datasets,include_users:t.include_users});if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(r,null,2))}],structuredContent:r};let i=`# Organization: ${r.title||r.name}
736
741
 
737
742
  `;if(i+=`**Server**: ${t.server_url}
738
743
  `,i+=`**Link**: ${uc(t.server_url,r)}
@@ -774,7 +779,7 @@ Returns:
774
779
 
775
780
  Examples:
776
781
  - { server_url: "https://www.dati.gov.it/opendata", pattern: "toscana" }
777
- - { server_url: "https://catalog.data.gov", pattern: "health" }`,inputSchema:S.object({server_url:S.string().url(),pattern:S.string().min(1).describe("Search pattern (wildcards added automatically)"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0}},async t=>{try{let r=`organization:*${t.pattern}*`,i=await me(t.server_url,"package_search",{q:r,rows:0,"facet.field":JSON.stringify(["organization"]),"facet.limit":500}),n=i.search_facets?.organization?.items||[],o=i.count||0;if(t.response_format==="json"){let s={count:n.length,total_datasets:o,organizations:n.map(u=>({name:u.name,display_name:u.display_name,dataset_count:u.count}))};return{content:[{type:"text",text:re(JSON.stringify(s,null,2))}],structuredContent:s}}let a=`# CKAN Organization Search Results
782
+ - { server_url: "https://catalog.data.gov", pattern: "health" }`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),pattern:S.string().min(1).describe("Name pattern to search for (wildcards added automatically, e.g., 'toscana', 'health')"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0}},async t=>{try{let r=`organization:*${t.pattern}*`,i=await me(t.server_url,"package_search",{q:r,rows:0,"facet.field":JSON.stringify(["organization"]),"facet.limit":500}),n=i.search_facets?.organization?.items||[],o=i.count||0;if(t.response_format==="json"){let s={count:n.length,total_datasets:o,organizations:n.map(u=>({name:u.name,display_name:u.display_name,dataset_count:u.count}))};return{content:[{type:"text",text:re(JSON.stringify(s,null,2))}],structuredContent:s}}let a=`# CKAN Organization Search Results
778
783
 
779
784
  `;if(a+=`**Server**: ${t.server_url}
780
785
  `,a+=`**Pattern**: "${t.pattern}"
@@ -809,7 +814,7 @@ Returns:
809
814
  Examples:
810
815
  - { server_url: "...", resource_id: "abc-123", limit: 50 }
811
816
  - { server_url: "...", resource_id: "...", filters: { "regione": "Sicilia" } }
812
- - { server_url: "...", resource_id: "...", sort: "anno desc", limit: 100 }`,inputSchema:S.object({server_url:S.string().url(),resource_id:S.string().min(1),q:S.string().optional(),filters:S.record(S.any()).optional(),limit:S.number().int().min(1).max(32e3).optional().default(100),offset:S.number().int().min(0).optional().default(0),fields:S.array(S.string()).optional(),sort:S.string().optional(),distinct:S.boolean().optional().default(!1),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{resourceUri:ns}}},async t=>{try{let r={resource_id:t.resource_id,limit:t.limit,offset:t.offset,distinct:t.distinct};t.q&&(r.q=t.q),t.filters&&(r.filters=JSON.stringify(t.filters)),t.fields&&(r.fields=t.fields.join(",")),t.sort&&(r.sort=t.sort);let i=await me(t.server_url,"datastore_search",r);if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(i,null,2))}],structuredContent:i};let n=`# DataStore Query Results
817
+ - { server_url: "...", resource_id: "...", sort: "anno desc", limit: 100 }`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),resource_id:S.string().min(1).describe("UUID of the DataStore resource (from ckan_package_show resource.id where datastore_active is true)"),q:S.string().optional().describe("Full-text search across all fields"),filters:S.record(S.any()).optional().describe('Key-value filters for exact matches (e.g., { "regione": "Sicilia", "anno": 2023 })'),limit:S.number().int().min(1).max(32e3).optional().default(100).describe("Max rows to return (default 100, max 32000)"),offset:S.number().int().min(0).optional().default(0).describe("Pagination offset"),fields:S.array(S.string()).optional().describe("Specific field names to return; omit to return all fields"),sort:S.string().optional().describe("Sort expression (e.g., 'anno desc', 'nome asc')"),distinct:S.boolean().optional().default(!1).describe("Return only distinct rows"),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{resourceUri:ns}}},async t=>{try{let r={resource_id:t.resource_id,limit:t.limit,offset:t.offset,distinct:t.distinct};t.q&&(r.q=t.q),t.filters&&(r.filters=JSON.stringify(t.filters)),t.fields&&(r.fields=t.fields.join(",")),t.sort&&(r.sort=t.sort);let i=await me(t.server_url,"datastore_search",r);if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(i,null,2))}],structuredContent:i};let n=`# DataStore Query Results
813
818
 
814
819
  `;if(n+=`**Server**: ${t.server_url}
815
820
  `,n+=`**Resource ID**: \`${t.resource_id}\`
@@ -844,7 +849,7 @@ Returns:
844
849
 
845
850
  Examples:
846
851
  - { server_url: "...", sql: "SELECT * FROM "abc-123" LIMIT 10" }
847
- - { server_url: "...", sql: "SELECT COUNT(*) AS total FROM "abc-123"" }`,inputSchema:S.object({server_url:S.string().url(),sql:S.string().min(1),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{let r=await me(t.server_url,"datastore_search_sql",{sql:t.sql});if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(r,null,2))}],structuredContent:r};let i=r.records||[],n=r.fields?.map(a=>a.id)||Object.keys(i[0]||{}),o=`# DataStore SQL Results
852
+ - { server_url: "...", sql: "SELECT COUNT(*) AS total FROM "abc-123"" }`,inputSchema:S.object({server_url:S.string().url().describe("Base URL of the CKAN server (e.g., https://dati.gov.it/opendata)"),sql:S.string().min(1).describe('SQL SELECT query; resource_id is the table name, must be double-quoted (e.g., SELECT * FROM "abc-123" LIMIT 10)'),response_format:Ue}).strict(),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},async t=>{try{let r=await me(t.server_url,"datastore_search_sql",{sql:t.sql});if(t.response_format==="json")return{content:[{type:"text",text:re(JSON.stringify(r,null,2))}],structuredContent:r};let i=r.records||[],n=r.fields?.map(a=>a.id)||Object.keys(i[0]||{}),o=`# DataStore SQL Results
848
853
 
849
854
  `;if(o+=`**Server**: ${t.server_url}
850
855
  `,o+=`**SQL**: \`${t.sql}\`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aborruso/ckan-mcp-server",
3
- "version": "0.4.42",
3
+ "version": "0.4.43",
4
4
  "description": "MCP server for interacting with CKAN open data portals",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",