@tableau/mcp-server 1.13.3 → 1.13.4

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/build/index.js CHANGED
@@ -61,7 +61,7 @@ return fn.apply(this, arguments)
61
61
  ]))`;continue}else if(i[p]==="$"){a+=`($|(?=[\r
62
62
  ]))`;continue}}if(r.s&&i[p]==="."){a+=s?`${i[p]}\r
63
63
  `:`[${i[p]}\r
64
- ]`;continue}a+=i[p],i[p]==="\\"?n=!0:s&&i[p]==="]"?s=!1:!s&&i[p]==="["&&(s=!0)}try{new RegExp(a)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),t.source}return a}function Nc(t,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&t.keyType?._def.typeName===F.ZodEnum)return{type:"object",required:t.keyType._def.values,properties:t.keyType._def.values.reduce((i,a)=>({...i,[a]:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"properties",a]})??{}}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(t.keyType?._def.typeName===F.ZodString&&t.keyType._def.checks?.length){let{type:i,...a}=qc(t.keyType._def,e);return{...r,propertyNames:a}}else{if(t.keyType?._def.typeName===F.ZodEnum)return{...r,propertyNames:{enum:t.keyType._def.values}};if(t.keyType?._def.typeName===F.ZodBranded&&t.keyType._def.type._def.typeName===F.ZodString&&t.keyType._def.type._def.checks?.length){let{type:i,...a}=Lc(t.keyType._def,e);return{...r,propertyNames:a}}}return r}function by(t,e){if(e.mapStrategy==="record")return Nc(t,e);let r=ie(t.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||{},i=ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||{};return{type:"array",maxItems:125,items:{type:"array",items:[r,i],minItems:2,maxItems:2}}}function wy(t){let e=t.values,i=Object.keys(t.values).filter(n=>typeof e[e[n]]!="number").map(n=>e[n]),a=Array.from(new Set(i.map(n=>typeof n)));return{type:a.length===1?a[0]==="string"?"string":"number":["string","number"],enum:i}}function Ey(){return{not:{}}}function _y(t){return t.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var bs={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Ty(t,e){if(e.target==="openApi3")return Sy(t,e);let r=t.options instanceof Map?Array.from(t.options.values()):t.options;if(r.every(i=>i._def.typeName in bs&&(!i._def.checks||!i._def.checks.length))){let i=r.reduce((a,n)=>{let s=bs[n._def.typeName];return s&&!a.includes(s)?[...a,s]:a},[]);return{type:i.length>1?i:i[0]}}else if(r.every(i=>i._def.typeName==="ZodLiteral"&&!i.description)){let i=r.reduce((a,n)=>{let s=typeof n._def.value;switch(s){case"string":case"number":case"boolean":return[...a,s];case"bigint":return[...a,"integer"];case"object":if(n._def.value===null)return[...a,"null"];case"symbol":case"undefined":case"function":default:return a}},[]);if(i.length===r.length){let a=i.filter((n,s,o)=>o.indexOf(n)===s);return{type:a.length>1?a:a[0],enum:r.reduce((n,s)=>n.includes(s._def.value)?n:[...n,s._def.value],[])}}}else if(r.every(i=>i._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((i,a)=>[...i,...a._def.values.filter(n=>!i.includes(n))],[])};return Sy(t,e)}var Sy=(t,e)=>{let r=(t.options instanceof Map?Array.from(t.options.values()):t.options).map((i,a)=>ie(i._def,{...e,currentPath:[...e.currentPath,"anyOf",`${a}`]})).filter(i=>!!i&&(!e.strictUnions||typeof i=="object"&&Object.keys(i).length>0));return r.length?{anyOf:r}:void 0};function Ay(t,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(t.innerType._def.typeName)&&(!t.innerType._def.checks||!t.innerType._def.checks.length))return e.target==="openApi3"?{type:bs[t.innerType._def.typeName],nullable:!0}:{type:[bs[t.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let i=ie(t.innerType._def,{...e,currentPath:[...e.currentPath]});return i&&"$ref"in i?{allOf:[i],nullable:!0}:i&&{...i,nullable:!0}}let r=ie(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Cy(t,e){let r={type:"number"};if(!t.checks)return r;for(let i of t.checks)switch(i.kind){case"int":r.type="integer",Qu(r,"type",i.message,e);break;case"min":e.target==="jsonSchema7"?i.inclusive?me(r,"minimum",i.value,i.message,e):me(r,"exclusiveMinimum",i.value,i.message,e):(i.inclusive||(r.exclusiveMinimum=!0),me(r,"minimum",i.value,i.message,e));break;case"max":e.target==="jsonSchema7"?i.inclusive?me(r,"maximum",i.value,i.message,e):me(r,"exclusiveMaximum",i.value,i.message,e):(i.inclusive||(r.exclusiveMaximum=!0),me(r,"maximum",i.value,i.message,e));break;case"multipleOf":me(r,"multipleOf",i.value,i.message,e);break}return r}function Py(t,e){let r=e.target==="openAi",i={type:"object",properties:{}},a=[],n=t.shape();for(let o in n){let p=n[o];if(p===void 0||p._def===void 0)continue;let l=NO(p);l&&r&&(p instanceof Tt&&(p=p._def.innerType),p.isNullable()||(p=p.nullable()),l=!1);let u=ie(p._def,{...e,currentPath:[...e.currentPath,"properties",o],propertyPath:[...e.currentPath,"properties",o]});u!==void 0&&(i.properties[o]=u,l||a.push(o))}a.length&&(i.required=a);let s=qO(t,e);return s!==void 0&&(i.additionalProperties=s),i}function qO(t,e){if(t.catchall._def.typeName!=="ZodNever")return ie(t.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(t.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function NO(t){try{return t.isOptional()}catch{return!0}}var Ry=(t,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return ie(t.innerType._def,e);let r=ie(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:{}},r]}:{}};var ky=(t,e)=>{if(e.pipeStrategy==="input")return ie(t.in._def,e);if(e.pipeStrategy==="output")return ie(t.out._def,e);let r=ie(t.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),i=ie(t.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,i].filter(a=>a!==void 0)}};function Iy(t,e){return ie(t.type._def,e)}function Oy(t,e){let i={type:"array",uniqueItems:!0,items:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return t.minSize&&me(i,"minItems",t.minSize.value,t.minSize.message,e),t.maxSize&&me(i,"maxItems",t.maxSize.value,t.maxSize.message,e),i}function Dy(t,e){return t.rest?{type:"array",minItems:t.items.length,items:t.items.map((r,i)=>ie(r._def,{...e,currentPath:[...e.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[]),additionalItems:ie(t.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:t.items.length,maxItems:t.items.length,items:t.items.map((r,i)=>ie(r._def,{...e,currentPath:[...e.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[])}}function jy(){return{not:{}}}function Ly(){return{}}var qy=(t,e)=>ie(t.innerType._def,e);var Ny=(t,e,r)=>{switch(e){case F.ZodString:return qc(t,r);case F.ZodNumber:return Cy(t,r);case F.ZodObject:return Py(t,r);case F.ZodBigInt:return uy(t,r);case F.ZodBoolean:return dy();case F.ZodDate:return Yu(t,r);case F.ZodUndefined:return jy();case F.ZodNull:return _y(r);case F.ZodArray:return py(t,r);case F.ZodUnion:case F.ZodDiscriminatedUnion:return Ty(t,r);case F.ZodIntersection:return gy(t,r);case F.ZodTuple:return Dy(t,r);case F.ZodRecord:return Nc(t,r);case F.ZodLiteral:return xy(t,r);case F.ZodEnum:return vy(t);case F.ZodNativeEnum:return wy(t);case F.ZodNullable:return Ay(t,r);case F.ZodOptional:return Ry(t,r);case F.ZodMap:return by(t,r);case F.ZodSet:return Oy(t,r);case F.ZodLazy:return()=>t.getter()._def;case F.ZodPromise:return Iy(t,r);case F.ZodNaN:case F.ZodNever:return Ey();case F.ZodEffects:return hy(t,r);case F.ZodAny:return ly();case F.ZodUnknown:return Ly();case F.ZodDefault:return my(t,r);case F.ZodBranded:return Lc(t,r);case F.ZodReadonly:return qy(t,r);case F.ZodCatch:return fy(t,r);case F.ZodPipeline:return ky(t,r);case F.ZodFunction:case F.ZodVoid:case F.ZodSymbol:return;default:return(i=>{})(e)}};function ie(t,e,r=!1){let i=e.seen.get(t);if(e.override){let o=e.override?.(t,e,i,r);if(o!==sy)return o}if(i&&!r){let o=FO(i,e);if(o!==void 0)return o}let a={def:t,path:e.currentPath,jsonSchema:void 0};e.seen.set(t,a);let n=Ny(t,t.typeName,e),s=typeof n=="function"?ie(n(),e):n;if(s&&UO(t,e,s),e.postProcess){let o=e.postProcess(s,t,e);return a.jsonSchema=s,o}return a.jsonSchema=s,s}var FO=(t,e)=>{switch(e.$refStrategy){case"root":return{$ref:t.path.join("/")};case"relative":return{$ref:MO(e.currentPath,t.path)};case"none":case"seen":return t.path.length<e.currentPath.length&&t.path.every((r,i)=>e.currentPath[i]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),{}):e.$refStrategy==="seen"?{}:void 0}},MO=(t,e)=>{let r=0;for(;r<t.length&&r<e.length&&t[r]===e[r];r++);return[(t.length-r).toString(),...e.slice(r)].join("/")},UO=(t,e,r)=>(t.description&&(r.description=t.description,e.markdownDescription&&(r.markdownDescription=t.description)),r);var Fc=(t,e)=>{let r=cy(e),i=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((p,[l,u])=>({...p,[l]:ie(u._def,{...r,currentPath:[...r.basePath,r.definitionPath,l]},!0)??{}}),{}):void 0,a=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,n=ie(t._def,a===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,a]},!1)??{},s=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;s!==void 0&&(n.title=s);let o=a===void 0?i?{...n,[r.definitionPath]:i}:n:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,a].join("/"),[r.definitionPath]:{...i,[a]:n}};return r.target==="jsonSchema7"?o.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(o.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in o||"oneOf"in o||"allOf"in o||"type"in o&&Array.isArray(o.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),o};var td;(function(t){t.Completable="McpCompletable"})(td||(td={}));var Zi=class extends ce{_parse(e){let{ctx:r}=this._processInputParams(e),i=r.data;return this._def.type._parse({data:i,path:r.path,parent:r})}unwrap(){return this._def.type}};Zi.create=(t,e)=>new Zi({type:t,typeName:td.Completable,complete:e.complete,...$O(e)});function $O(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:i,description:a}=t;if(e&&(r||i))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(s,o)=>{var p,l;let{message:u}=t;return s.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:(p=u??i)!==null&&p!==void 0?p:o.defaultError}:s.code!=="invalid_type"?{message:o.defaultError}:{message:(l=u??r)!==null&&l!==void 0?l:o.defaultError}},description:a}}var Uc=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new jc(e,r)}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(oc.shape.method.value),this.server.assertCanSetRequestHandler(cc.shape.method.value),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(oc,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let i={name:e,title:r.title,description:r.description,inputSchema:r.inputSchema?Fc(r.inputSchema,{strictUnions:!0}):zO,annotations:r.annotations,_meta:r._meta};return r.outputSchema&&(i.outputSchema=Fc(r.outputSchema,{strictUnions:!0})),i})})),this.server.setRequestHandler(cc,async(e,r)=>{let i=this._registeredTools[e.params.name];if(!i)throw new Le(je.InvalidParams,`Tool ${e.params.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Tool ${e.params.name} disabled`);let a;if(i.inputSchema){let n=await i.inputSchema.safeParseAsync(e.params.arguments);if(!n.success)throw new Le(je.InvalidParams,`Invalid arguments for tool ${e.params.name}: ${n.error.message}`);let s=n.data,o=i.callback;try{a=await Promise.resolve(o(s,r))}catch(p){a={content:[{type:"text",text:p instanceof Error?p.message:String(p)}],isError:!0}}}else{let n=i.callback;try{a=await Promise.resolve(n(r))}catch(s){a={content:[{type:"text",text:s instanceof Error?s.message:String(s)}],isError:!0}}}if(i.outputSchema&&!a.isError){if(!a.structuredContent)throw new Le(je.InvalidParams,`Tool ${e.params.name} has an output schema but no structured content was provided`);let n=await i.outputSchema.safeParseAsync(a.structuredContent);if(!n.success)throw new Le(je.InvalidParams,`Invalid structured content for tool ${e.params.name}: ${n.error.message}`)}return a}),this._toolHandlersInitialized=!0)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(lc.shape.method.value),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(lc,async e=>{switch(e.params.ref.type){case"ref/prompt":return this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return this.handleResourceCompletion(e,e.params.ref);default:throw new Le(je.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let i=this._registeredPrompts[r.name];if(!i)throw new Le(je.InvalidParams,`Prompt ${r.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Prompt ${r.name} disabled`);if(!i.argsSchema)return Mc;let a=i.argsSchema.shape[e.params.argument.name];if(!(a instanceof Zi))return Mc;let s=await a._def.complete(e.params.argument.value,e.params.context);return My(s)}async handleResourceCompletion(e,r){let i=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!i){if(this._registeredResources[r.uri])return Mc;throw new Le(je.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let a=i.resourceTemplate.completeCallback(e.params.argument.name);if(!a)return Mc;let n=await a(e.params.argument.value,e.params.context);return My(n)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(rc.shape.method.value),this.server.assertCanSetRequestHandler(ac.shape.method.value),this.server.assertCanSetRequestHandler(ic.shape.method.value),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(rc,async(e,r)=>{let i=Object.entries(this._registeredResources).filter(([n,s])=>s.enabled).map(([n,s])=>({uri:n,name:s.name,...s.metadata})),a=[];for(let n of Object.values(this._registeredResourceTemplates)){if(!n.resourceTemplate.listCallback)continue;let s=await n.resourceTemplate.listCallback(r);for(let o of s.resources)a.push({...n.metadata,...o})}return{resources:[...i,...a]}}),this.server.setRequestHandler(ac,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,i])=>({name:r,uriTemplate:i.resourceTemplate.uriTemplate.toString(),...i.metadata}))})),this.server.setRequestHandler(ic,async(e,r)=>{let i=new URL(e.params.uri),a=this._registeredResources[i.toString()];if(a){if(!a.enabled)throw new Le(je.InvalidParams,`Resource ${i} disabled`);return a.readCallback(i,r)}for(let n of Object.values(this._registeredResourceTemplates)){let s=n.resourceTemplate.uriTemplate.match(i.toString());if(s)return n.readCallback(i,s,r)}throw new Le(je.InvalidParams,`Resource ${i} not found`)}),this.setCompletionRequestHandler(),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(nc.shape.method.value),this.server.assertCanSetRequestHandler(sc.shape.method.value),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(nc,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?HO(r.argsSchema):void 0}))})),this.server.setRequestHandler(sc,async(e,r)=>{let i=this._registeredPrompts[e.params.name];if(!i)throw new Le(je.InvalidParams,`Prompt ${e.params.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Prompt ${e.params.name} disabled`);if(i.argsSchema){let a=await i.argsSchema.safeParseAsync(e.params.arguments);if(!a.success)throw new Le(je.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${a.error.message}`);let n=a.data,s=i.callback;return await Promise.resolve(s(n,r))}else{let a=i.callback;return await Promise.resolve(a(r))}}),this.setCompletionRequestHandler(),this._promptHandlersInitialized=!0)}resource(e,r,...i){let a;typeof i[0]=="object"&&(a=i.shift());let n=i[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,void 0,r,a,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,void 0,r,a,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(e,r,i,a){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let n=this._createRegisteredResource(e,i.title,r,i,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let n=this._createRegisteredResourceTemplate(e,i.title,r,i,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}}_createRegisteredResource(e,r,i,a,n){let s={name:e,title:r,metadata:a,readCallback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:o=>{typeof o.uri<"u"&&o.uri!==i&&(delete this._registeredResources[i],o.uri&&(this._registeredResources[o.uri]=s)),typeof o.name<"u"&&(s.name=o.name),typeof o.title<"u"&&(s.title=o.title),typeof o.metadata<"u"&&(s.metadata=o.metadata),typeof o.callback<"u"&&(s.readCallback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendResourceListChanged()}};return this._registeredResources[i]=s,s}_createRegisteredResourceTemplate(e,r,i,a,n){let s={resourceTemplate:i,title:r,metadata:a,readCallback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:o=>{typeof o.name<"u"&&o.name!==e&&(delete this._registeredResourceTemplates[e],o.name&&(this._registeredResourceTemplates[o.name]=s)),typeof o.title<"u"&&(s.title=o.title),typeof o.template<"u"&&(s.resourceTemplate=o.template),typeof o.metadata<"u"&&(s.metadata=o.metadata),typeof o.callback<"u"&&(s.readCallback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendResourceListChanged()}};return this._registeredResourceTemplates[e]=s,s}_createRegisteredPrompt(e,r,i,a,n){let s={title:r,description:i,argsSchema:a===void 0?void 0:c.object(a),callback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:o=>{typeof o.name<"u"&&o.name!==e&&(delete this._registeredPrompts[e],o.name&&(this._registeredPrompts[o.name]=s)),typeof o.title<"u"&&(s.title=o.title),typeof o.description<"u"&&(s.description=o.description),typeof o.argsSchema<"u"&&(s.argsSchema=c.object(o.argsSchema)),typeof o.callback<"u"&&(s.callback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=s,s}_createRegisteredTool(e,r,i,a,n,s,o,p){let l={title:r,description:i,inputSchema:a===void 0?void 0:c.object(a),outputSchema:n===void 0?void 0:c.object(n),annotations:s,_meta:o,callback:p,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredTools[e],u.name&&(this._registeredTools[u.name]=l)),typeof u.title<"u"&&(l.title=u.title),typeof u.description<"u"&&(l.description=u.description),typeof u.paramsSchema<"u"&&(l.inputSchema=c.object(u.paramsSchema)),typeof u.callback<"u"&&(l.callback=u.callback),typeof u.annotations<"u"&&(l.annotations=u.annotations),typeof u._meta<"u"&&(l._meta=u._meta),typeof u.enabled<"u"&&(l.enabled=u.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let i,a,n,s;if(typeof r[0]=="string"&&(i=r.shift()),r.length>1){let p=r[0];Fy(p)?(a=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Fy(r[0])&&(s=r.shift())):typeof p=="object"&&p!==null&&(s=r.shift())}let o=r[0];return this._createRegisteredTool(e,void 0,i,a,n,s,void 0,o)}registerTool(e,r,i){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:a,description:n,inputSchema:s,outputSchema:o,annotations:p,_meta:l}=r;return this._createRegisteredTool(e,a,n,s,o,p,l,i)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let i;typeof r[0]=="string"&&(i=r.shift());let a;r.length>1&&(a=r.shift());let n=r[0],s=this._createRegisteredPrompt(e,void 0,i,a,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(e,r,i){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:a,description:n,argsSchema:s}=r,o=this._createRegisteredPrompt(e,a,n,s,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),o}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var zO={type:"object",properties:{}};function Fy(t){return typeof t!="object"||t===null?!1:Object.keys(t).length===0||Object.values(t).some(BO)}function BO(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function HO(t){return Object.entries(t.shape).map(([e,r])=>({name:e,description:r.description,required:!r.isOptional()}))}function My(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var Mc={completion:{values:[],hasMore:!1}};var Uy={name:"@tableau/mcp-server",description:"An MCP server for Tableau, providing a suite of tools that will make it easier for developers to build AI applications that integrate with Tableau.",version:"1.13.3",repository:{type:"git",url:"git+https://github.com/tableau/tableau-mcp.git"},homepage:"https://github.com/tableau/tableau-mcp",bugs:"https://github.com/tableau/tableau-mcp/issues",author:"Tableau",type:"commonjs",license:"Apache-2.0",keywords:["tableau","mcp"],bin:{"tableau-mcp-server":"./build/index.js"},scripts:{clean:"npx rimraf ./build",":build":"esbuild src/index.ts --bundle --platform=node --format=cjs --minify --outfile=build/index.js --sourcemap --log-override:empty-import-meta=silent",":build:dev":"esbuild src/index.ts --bundle --packages=external --platform=node --format=cjs --outfile=build/index.js --sourcemap",build:"run-s clean :build exec-perms","build:dev":"run-s clean :build:dev exec-perms","build:watch":"npm run :build:dev -- --watch","build:docker":"docker build -t tableau-mcp .",":build:mcpb":"npx -y @anthropic-ai/mcpb pack . tableau-mcp.mcpb","build:mcpb":"run-s build:manifest:script build:manifest :build:mcpb","build:manifest":"node build/scripts/createClaudeMcpBundleManifest.mjs","build:manifest:script":"esbuild src/scripts/createClaudeMcpBundleManifest.ts --bundle --platform=node --format=esm --outdir=build/scripts --sourcemap=inline --out-extension:.js=.mjs","start:http":"node build/index.js","start:http:docker":"docker run -p 3927:3927 -i --rm --env-file env.list tableau-mcp",lint:"npm exec eslint",inspect:"npx @modelcontextprotocol/inspector --config config.json --server tableau",":inspect:http":"npx @modelcontextprotocol/inspector --config config.http.json --server tableau","inspect:http":"run-p start:http :inspect:http","inspect:docker":"npx @modelcontextprotocol/inspector --config config.docker.json --server tableau","inspect:docker:http":"run-p start:http:docker :inspect:http","build:inspect":"run-s build inspect","build:inspect:docker":"run-s build:docker inspect:docker","build:inspect:docker:http":"run-s build:docker inspect:docker:http","exec-perms":"shx chmod +x build/*.js",test:"vitest --config ./vitest.config.ts","test:e2e":"vitest --config ./vitest.config.e2e.ts","test:eval":"vitest --config ./vitest.config.eval.ts","test:oauth":"vitest --config ./vitest.config.oauth.ts",coverage:"vitest run --config ./vitest.config.ts --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.1","@zodios/core":"^10.9.6","axios-retry":"^4.5.0",cors:"^2.8.5",dotenv:"^16.5.0",express:"^5.1.0","fast-levenshtein":"^3.0.0",jose:"^6.0.12",ssrfcheck:"^1.2.0","ts-results-es":"^5.0.1",zod:"^3.24.3","zod-validation-error":"^4.0.1"},devDependencies:{"@anthropic-ai/mcpb":"^1.0.0","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.25.1","@modelcontextprotocol/inspector":"^0.16.6","@openai/agents":"^0.1.9","@types/cors":"^2.8.19","@types/eslint__js":"^8.42.3","@types/express":"^5.0.3","@types/fast-levenshtein":"^0.0.1","@types/node":"^22.15.3","@types/supertest":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.31.1","@typescript-eslint/parser":"^8.31.1","@vitest/coverage-v8":"^3.1.3",esbuild:"^0.25.5",eslint:"^9.25.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.2.6","eslint-plugin-simple-import-sort":"^12.1.1","npm-run-all":"^4.1.5",openai:"^5.23.2",prettier:"^3.5.3",rimraf:"^6.0.1",shx:"^0.4.0",supertest:"^7.1.4",typescript:"^5.8.3","typescript-eslint":"^8.31.1",vitest:"^3.1.3"},engines:{node:">=22.7.5"}};function pa(t){var e=String(t);if(e==="[object Object]")try{e=JSON.stringify(t)}catch{}return e}var WO=function(){function t(){}return t.prototype.isSome=function(){return!1},t.prototype.isNone=function(){return!0},t.prototype[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:void 0}}}},t.prototype.unwrapOr=function(e){return e},t.prototype.unwrapOrElse=function(e){return e()},t.prototype.expect=function(e){throw new Error("".concat(e))},t.prototype.unwrap=function(){throw new Error("Tried to unwrap None")},t.prototype.map=function(e){return this},t.prototype.mapOr=function(e,r){return e},t.prototype.mapOrElse=function(e,r){return e()},t.prototype.or=function(e){return e},t.prototype.orElse=function(e){return e()},t.prototype.andThen=function(e){return this},t.prototype.toResult=function(e){return B(e)},t.prototype.toString=function(){return"None"},t.prototype.toAsyncOption=function(){return new ws(Qi)},t}(),Qi=new WO;Object.freeze(Qi);var KO=function(){function t(e){if(!(this instanceof t))return new t(e);this.value=e}return t.prototype.isSome=function(){return!0},t.prototype.isNone=function(){return!1},t.prototype[Symbol.iterator]=function(){return[this.value][Symbol.iterator]()},t.prototype.unwrapOr=function(e){return this.value},t.prototype.unwrapOrElse=function(e){return this.value},t.prototype.expect=function(e){return this.value},t.prototype.unwrap=function(){return this.value},t.prototype.map=function(e){return ii(e(this.value))},t.prototype.mapOr=function(e,r){return r(this.value)},t.prototype.mapOrElse=function(e,r){return r(this.value)},t.prototype.or=function(e){return this},t.prototype.orElse=function(e){return this},t.prototype.andThen=function(e){return e(this.value)},t.prototype.toResult=function(e){return Z(this.value)},t.prototype.toAsyncOption=function(){return new ws(this)},t.prototype.safeUnwrap=function(){return this.value},t.prototype.toString=function(){return"Some(".concat(pa(this.value),")")},t.EMPTY=new t(void 0),t}(),ii=KO,$y;(function(t){function e(){for(var a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];for(var s=[],o=0,p=a;o<p.length;o++){var l=p[o];if(l.isSome())s.push(l.value);else return l}return ii(s)}t.all=e;function r(){for(var a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];for(var s=0,o=a;s<o.length;s++){var p=o[s];if(p.isSome())return p}return Qi}t.any=r;function i(a){return a instanceof ii||a===Qi}t.isOption=i})($y||($y={}));var $c=function(t,e,r){if(r||arguments.length===2)for(var i=0,a=e.length,n;i<a;i++)(n||!(i in e))&&(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))},GO=function(){function t(e){if(!(this instanceof t))return new t(e);this.error=e;var r=new Error().stack.split(`
64
+ ]`;continue}a+=i[p],i[p]==="\\"?n=!0:s&&i[p]==="]"?s=!1:!s&&i[p]==="["&&(s=!0)}try{new RegExp(a)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),t.source}return a}function Nc(t,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&t.keyType?._def.typeName===F.ZodEnum)return{type:"object",required:t.keyType._def.values,properties:t.keyType._def.values.reduce((i,a)=>({...i,[a]:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"properties",a]})??{}}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(t.keyType?._def.typeName===F.ZodString&&t.keyType._def.checks?.length){let{type:i,...a}=qc(t.keyType._def,e);return{...r,propertyNames:a}}else{if(t.keyType?._def.typeName===F.ZodEnum)return{...r,propertyNames:{enum:t.keyType._def.values}};if(t.keyType?._def.typeName===F.ZodBranded&&t.keyType._def.type._def.typeName===F.ZodString&&t.keyType._def.type._def.checks?.length){let{type:i,...a}=Lc(t.keyType._def,e);return{...r,propertyNames:a}}}return r}function by(t,e){if(e.mapStrategy==="record")return Nc(t,e);let r=ie(t.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||{},i=ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||{};return{type:"array",maxItems:125,items:{type:"array",items:[r,i],minItems:2,maxItems:2}}}function wy(t){let e=t.values,i=Object.keys(t.values).filter(n=>typeof e[e[n]]!="number").map(n=>e[n]),a=Array.from(new Set(i.map(n=>typeof n)));return{type:a.length===1?a[0]==="string"?"string":"number":["string","number"],enum:i}}function Ey(){return{not:{}}}function _y(t){return t.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var bs={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Ty(t,e){if(e.target==="openApi3")return Sy(t,e);let r=t.options instanceof Map?Array.from(t.options.values()):t.options;if(r.every(i=>i._def.typeName in bs&&(!i._def.checks||!i._def.checks.length))){let i=r.reduce((a,n)=>{let s=bs[n._def.typeName];return s&&!a.includes(s)?[...a,s]:a},[]);return{type:i.length>1?i:i[0]}}else if(r.every(i=>i._def.typeName==="ZodLiteral"&&!i.description)){let i=r.reduce((a,n)=>{let s=typeof n._def.value;switch(s){case"string":case"number":case"boolean":return[...a,s];case"bigint":return[...a,"integer"];case"object":if(n._def.value===null)return[...a,"null"];case"symbol":case"undefined":case"function":default:return a}},[]);if(i.length===r.length){let a=i.filter((n,s,o)=>o.indexOf(n)===s);return{type:a.length>1?a:a[0],enum:r.reduce((n,s)=>n.includes(s._def.value)?n:[...n,s._def.value],[])}}}else if(r.every(i=>i._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((i,a)=>[...i,...a._def.values.filter(n=>!i.includes(n))],[])};return Sy(t,e)}var Sy=(t,e)=>{let r=(t.options instanceof Map?Array.from(t.options.values()):t.options).map((i,a)=>ie(i._def,{...e,currentPath:[...e.currentPath,"anyOf",`${a}`]})).filter(i=>!!i&&(!e.strictUnions||typeof i=="object"&&Object.keys(i).length>0));return r.length?{anyOf:r}:void 0};function Ay(t,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(t.innerType._def.typeName)&&(!t.innerType._def.checks||!t.innerType._def.checks.length))return e.target==="openApi3"?{type:bs[t.innerType._def.typeName],nullable:!0}:{type:[bs[t.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let i=ie(t.innerType._def,{...e,currentPath:[...e.currentPath]});return i&&"$ref"in i?{allOf:[i],nullable:!0}:i&&{...i,nullable:!0}}let r=ie(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function Cy(t,e){let r={type:"number"};if(!t.checks)return r;for(let i of t.checks)switch(i.kind){case"int":r.type="integer",Qu(r,"type",i.message,e);break;case"min":e.target==="jsonSchema7"?i.inclusive?me(r,"minimum",i.value,i.message,e):me(r,"exclusiveMinimum",i.value,i.message,e):(i.inclusive||(r.exclusiveMinimum=!0),me(r,"minimum",i.value,i.message,e));break;case"max":e.target==="jsonSchema7"?i.inclusive?me(r,"maximum",i.value,i.message,e):me(r,"exclusiveMaximum",i.value,i.message,e):(i.inclusive||(r.exclusiveMaximum=!0),me(r,"maximum",i.value,i.message,e));break;case"multipleOf":me(r,"multipleOf",i.value,i.message,e);break}return r}function Py(t,e){let r=e.target==="openAi",i={type:"object",properties:{}},a=[],n=t.shape();for(let o in n){let p=n[o];if(p===void 0||p._def===void 0)continue;let l=NO(p);l&&r&&(p instanceof Tt&&(p=p._def.innerType),p.isNullable()||(p=p.nullable()),l=!1);let u=ie(p._def,{...e,currentPath:[...e.currentPath,"properties",o],propertyPath:[...e.currentPath,"properties",o]});u!==void 0&&(i.properties[o]=u,l||a.push(o))}a.length&&(i.required=a);let s=qO(t,e);return s!==void 0&&(i.additionalProperties=s),i}function qO(t,e){if(t.catchall._def.typeName!=="ZodNever")return ie(t.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(t.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function NO(t){try{return t.isOptional()}catch{return!0}}var Ry=(t,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return ie(t.innerType._def,e);let r=ie(t.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:{}},r]}:{}};var ky=(t,e)=>{if(e.pipeStrategy==="input")return ie(t.in._def,e);if(e.pipeStrategy==="output")return ie(t.out._def,e);let r=ie(t.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),i=ie(t.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,i].filter(a=>a!==void 0)}};function Iy(t,e){return ie(t.type._def,e)}function Oy(t,e){let i={type:"array",uniqueItems:!0,items:ie(t.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return t.minSize&&me(i,"minItems",t.minSize.value,t.minSize.message,e),t.maxSize&&me(i,"maxItems",t.maxSize.value,t.maxSize.message,e),i}function Dy(t,e){return t.rest?{type:"array",minItems:t.items.length,items:t.items.map((r,i)=>ie(r._def,{...e,currentPath:[...e.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[]),additionalItems:ie(t.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:t.items.length,maxItems:t.items.length,items:t.items.map((r,i)=>ie(r._def,{...e,currentPath:[...e.currentPath,"items",`${i}`]})).reduce((r,i)=>i===void 0?r:[...r,i],[])}}function jy(){return{not:{}}}function Ly(){return{}}var qy=(t,e)=>ie(t.innerType._def,e);var Ny=(t,e,r)=>{switch(e){case F.ZodString:return qc(t,r);case F.ZodNumber:return Cy(t,r);case F.ZodObject:return Py(t,r);case F.ZodBigInt:return uy(t,r);case F.ZodBoolean:return dy();case F.ZodDate:return Yu(t,r);case F.ZodUndefined:return jy();case F.ZodNull:return _y(r);case F.ZodArray:return py(t,r);case F.ZodUnion:case F.ZodDiscriminatedUnion:return Ty(t,r);case F.ZodIntersection:return gy(t,r);case F.ZodTuple:return Dy(t,r);case F.ZodRecord:return Nc(t,r);case F.ZodLiteral:return xy(t,r);case F.ZodEnum:return vy(t);case F.ZodNativeEnum:return wy(t);case F.ZodNullable:return Ay(t,r);case F.ZodOptional:return Ry(t,r);case F.ZodMap:return by(t,r);case F.ZodSet:return Oy(t,r);case F.ZodLazy:return()=>t.getter()._def;case F.ZodPromise:return Iy(t,r);case F.ZodNaN:case F.ZodNever:return Ey();case F.ZodEffects:return hy(t,r);case F.ZodAny:return ly();case F.ZodUnknown:return Ly();case F.ZodDefault:return my(t,r);case F.ZodBranded:return Lc(t,r);case F.ZodReadonly:return qy(t,r);case F.ZodCatch:return fy(t,r);case F.ZodPipeline:return ky(t,r);case F.ZodFunction:case F.ZodVoid:case F.ZodSymbol:return;default:return(i=>{})(e)}};function ie(t,e,r=!1){let i=e.seen.get(t);if(e.override){let o=e.override?.(t,e,i,r);if(o!==sy)return o}if(i&&!r){let o=FO(i,e);if(o!==void 0)return o}let a={def:t,path:e.currentPath,jsonSchema:void 0};e.seen.set(t,a);let n=Ny(t,t.typeName,e),s=typeof n=="function"?ie(n(),e):n;if(s&&UO(t,e,s),e.postProcess){let o=e.postProcess(s,t,e);return a.jsonSchema=s,o}return a.jsonSchema=s,s}var FO=(t,e)=>{switch(e.$refStrategy){case"root":return{$ref:t.path.join("/")};case"relative":return{$ref:MO(e.currentPath,t.path)};case"none":case"seen":return t.path.length<e.currentPath.length&&t.path.every((r,i)=>e.currentPath[i]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),{}):e.$refStrategy==="seen"?{}:void 0}},MO=(t,e)=>{let r=0;for(;r<t.length&&r<e.length&&t[r]===e[r];r++);return[(t.length-r).toString(),...e.slice(r)].join("/")},UO=(t,e,r)=>(t.description&&(r.description=t.description,e.markdownDescription&&(r.markdownDescription=t.description)),r);var Fc=(t,e)=>{let r=cy(e),i=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((p,[l,u])=>({...p,[l]:ie(u._def,{...r,currentPath:[...r.basePath,r.definitionPath,l]},!0)??{}}),{}):void 0,a=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,n=ie(t._def,a===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,a]},!1)??{},s=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;s!==void 0&&(n.title=s);let o=a===void 0?i?{...n,[r.definitionPath]:i}:n:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,a].join("/"),[r.definitionPath]:{...i,[a]:n}};return r.target==="jsonSchema7"?o.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(o.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in o||"oneOf"in o||"allOf"in o||"type"in o&&Array.isArray(o.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),o};var td;(function(t){t.Completable="McpCompletable"})(td||(td={}));var Zi=class extends ce{_parse(e){let{ctx:r}=this._processInputParams(e),i=r.data;return this._def.type._parse({data:i,path:r.path,parent:r})}unwrap(){return this._def.type}};Zi.create=(t,e)=>new Zi({type:t,typeName:td.Completable,complete:e.complete,...$O(e)});function $O(t){if(!t)return{};let{errorMap:e,invalid_type_error:r,required_error:i,description:a}=t;if(e&&(r||i))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(s,o)=>{var p,l;let{message:u}=t;return s.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:(p=u??i)!==null&&p!==void 0?p:o.defaultError}:s.code!=="invalid_type"?{message:o.defaultError}:{message:(l=u??r)!==null&&l!==void 0?l:o.defaultError}},description:a}}var Uc=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new jc(e,r)}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(oc.shape.method.value),this.server.assertCanSetRequestHandler(cc.shape.method.value),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(oc,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let i={name:e,title:r.title,description:r.description,inputSchema:r.inputSchema?Fc(r.inputSchema,{strictUnions:!0}):zO,annotations:r.annotations,_meta:r._meta};return r.outputSchema&&(i.outputSchema=Fc(r.outputSchema,{strictUnions:!0})),i})})),this.server.setRequestHandler(cc,async(e,r)=>{let i=this._registeredTools[e.params.name];if(!i)throw new Le(je.InvalidParams,`Tool ${e.params.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Tool ${e.params.name} disabled`);let a;if(i.inputSchema){let n=await i.inputSchema.safeParseAsync(e.params.arguments);if(!n.success)throw new Le(je.InvalidParams,`Invalid arguments for tool ${e.params.name}: ${n.error.message}`);let s=n.data,o=i.callback;try{a=await Promise.resolve(o(s,r))}catch(p){a={content:[{type:"text",text:p instanceof Error?p.message:String(p)}],isError:!0}}}else{let n=i.callback;try{a=await Promise.resolve(n(r))}catch(s){a={content:[{type:"text",text:s instanceof Error?s.message:String(s)}],isError:!0}}}if(i.outputSchema&&!a.isError){if(!a.structuredContent)throw new Le(je.InvalidParams,`Tool ${e.params.name} has an output schema but no structured content was provided`);let n=await i.outputSchema.safeParseAsync(a.structuredContent);if(!n.success)throw new Le(je.InvalidParams,`Invalid structured content for tool ${e.params.name}: ${n.error.message}`)}return a}),this._toolHandlersInitialized=!0)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(lc.shape.method.value),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(lc,async e=>{switch(e.params.ref.type){case"ref/prompt":return this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return this.handleResourceCompletion(e,e.params.ref);default:throw new Le(je.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let i=this._registeredPrompts[r.name];if(!i)throw new Le(je.InvalidParams,`Prompt ${r.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Prompt ${r.name} disabled`);if(!i.argsSchema)return Mc;let a=i.argsSchema.shape[e.params.argument.name];if(!(a instanceof Zi))return Mc;let s=await a._def.complete(e.params.argument.value,e.params.context);return My(s)}async handleResourceCompletion(e,r){let i=Object.values(this._registeredResourceTemplates).find(s=>s.resourceTemplate.uriTemplate.toString()===r.uri);if(!i){if(this._registeredResources[r.uri])return Mc;throw new Le(je.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let a=i.resourceTemplate.completeCallback(e.params.argument.name);if(!a)return Mc;let n=await a(e.params.argument.value,e.params.context);return My(n)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(rc.shape.method.value),this.server.assertCanSetRequestHandler(ac.shape.method.value),this.server.assertCanSetRequestHandler(ic.shape.method.value),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(rc,async(e,r)=>{let i=Object.entries(this._registeredResources).filter(([n,s])=>s.enabled).map(([n,s])=>({uri:n,name:s.name,...s.metadata})),a=[];for(let n of Object.values(this._registeredResourceTemplates)){if(!n.resourceTemplate.listCallback)continue;let s=await n.resourceTemplate.listCallback(r);for(let o of s.resources)a.push({...n.metadata,...o})}return{resources:[...i,...a]}}),this.server.setRequestHandler(ac,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,i])=>({name:r,uriTemplate:i.resourceTemplate.uriTemplate.toString(),...i.metadata}))})),this.server.setRequestHandler(ic,async(e,r)=>{let i=new URL(e.params.uri),a=this._registeredResources[i.toString()];if(a){if(!a.enabled)throw new Le(je.InvalidParams,`Resource ${i} disabled`);return a.readCallback(i,r)}for(let n of Object.values(this._registeredResourceTemplates)){let s=n.resourceTemplate.uriTemplate.match(i.toString());if(s)return n.readCallback(i,s,r)}throw new Le(je.InvalidParams,`Resource ${i} not found`)}),this.setCompletionRequestHandler(),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(nc.shape.method.value),this.server.assertCanSetRequestHandler(sc.shape.method.value),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(nc,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?HO(r.argsSchema):void 0}))})),this.server.setRequestHandler(sc,async(e,r)=>{let i=this._registeredPrompts[e.params.name];if(!i)throw new Le(je.InvalidParams,`Prompt ${e.params.name} not found`);if(!i.enabled)throw new Le(je.InvalidParams,`Prompt ${e.params.name} disabled`);if(i.argsSchema){let a=await i.argsSchema.safeParseAsync(e.params.arguments);if(!a.success)throw new Le(je.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${a.error.message}`);let n=a.data,s=i.callback;return await Promise.resolve(s(n,r))}else{let a=i.callback;return await Promise.resolve(a(r))}}),this.setCompletionRequestHandler(),this._promptHandlersInitialized=!0)}resource(e,r,...i){let a;typeof i[0]=="object"&&(a=i.shift());let n=i[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,void 0,r,a,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,void 0,r,a,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}registerResource(e,r,i,a){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let n=this._createRegisteredResource(e,i.title,r,i,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let n=this._createRegisteredResourceTemplate(e,i.title,r,i,a);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}}_createRegisteredResource(e,r,i,a,n){let s={name:e,title:r,metadata:a,readCallback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({uri:null}),update:o=>{typeof o.uri<"u"&&o.uri!==i&&(delete this._registeredResources[i],o.uri&&(this._registeredResources[o.uri]=s)),typeof o.name<"u"&&(s.name=o.name),typeof o.title<"u"&&(s.title=o.title),typeof o.metadata<"u"&&(s.metadata=o.metadata),typeof o.callback<"u"&&(s.readCallback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendResourceListChanged()}};return this._registeredResources[i]=s,s}_createRegisteredResourceTemplate(e,r,i,a,n){let s={resourceTemplate:i,title:r,metadata:a,readCallback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:o=>{typeof o.name<"u"&&o.name!==e&&(delete this._registeredResourceTemplates[e],o.name&&(this._registeredResourceTemplates[o.name]=s)),typeof o.title<"u"&&(s.title=o.title),typeof o.template<"u"&&(s.resourceTemplate=o.template),typeof o.metadata<"u"&&(s.metadata=o.metadata),typeof o.callback<"u"&&(s.readCallback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendResourceListChanged()}};return this._registeredResourceTemplates[e]=s,s}_createRegisteredPrompt(e,r,i,a,n){let s={title:r,description:i,argsSchema:a===void 0?void 0:c.object(a),callback:n,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:o=>{typeof o.name<"u"&&o.name!==e&&(delete this._registeredPrompts[e],o.name&&(this._registeredPrompts[o.name]=s)),typeof o.title<"u"&&(s.title=o.title),typeof o.description<"u"&&(s.description=o.description),typeof o.argsSchema<"u"&&(s.argsSchema=c.object(o.argsSchema)),typeof o.callback<"u"&&(s.callback=o.callback),typeof o.enabled<"u"&&(s.enabled=o.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=s,s}_createRegisteredTool(e,r,i,a,n,s,o,p){let l={title:r,description:i,inputSchema:a===void 0?void 0:c.object(a),outputSchema:n===void 0?void 0:c.object(n),annotations:s,_meta:o,callback:p,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredTools[e],u.name&&(this._registeredTools[u.name]=l)),typeof u.title<"u"&&(l.title=u.title),typeof u.description<"u"&&(l.description=u.description),typeof u.paramsSchema<"u"&&(l.inputSchema=c.object(u.paramsSchema)),typeof u.callback<"u"&&(l.callback=u.callback),typeof u.annotations<"u"&&(l.annotations=u.annotations),typeof u._meta<"u"&&(l._meta=u._meta),typeof u.enabled<"u"&&(l.enabled=u.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let i,a,n,s;if(typeof r[0]=="string"&&(i=r.shift()),r.length>1){let p=r[0];Fy(p)?(a=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!Fy(r[0])&&(s=r.shift())):typeof p=="object"&&p!==null&&(s=r.shift())}let o=r[0];return this._createRegisteredTool(e,void 0,i,a,n,s,void 0,o)}registerTool(e,r,i){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:a,description:n,inputSchema:s,outputSchema:o,annotations:p,_meta:l}=r;return this._createRegisteredTool(e,a,n,s,o,p,l,i)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let i;typeof r[0]=="string"&&(i=r.shift());let a;r.length>1&&(a=r.shift());let n=r[0],s=this._createRegisteredPrompt(e,void 0,i,a,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}registerPrompt(e,r,i){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:a,description:n,argsSchema:s}=r,o=this._createRegisteredPrompt(e,a,n,s,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),o}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};var zO={type:"object",properties:{}};function Fy(t){return typeof t!="object"||t===null?!1:Object.keys(t).length===0||Object.values(t).some(BO)}function BO(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function HO(t){return Object.entries(t.shape).map(([e,r])=>({name:e,description:r.description,required:!r.isOptional()}))}function My(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var Mc={completion:{values:[],hasMore:!1}};var Uy={name:"@tableau/mcp-server",description:"An MCP server for Tableau, providing a suite of tools that will make it easier for developers to build AI applications that integrate with Tableau.",version:"1.13.4",repository:{type:"git",url:"git+https://github.com/tableau/tableau-mcp.git"},homepage:"https://github.com/tableau/tableau-mcp",bugs:"https://github.com/tableau/tableau-mcp/issues",author:"Tableau",type:"commonjs",license:"Apache-2.0",keywords:["tableau","mcp"],bin:{"tableau-mcp-server":"./build/index.js"},scripts:{clean:"npx rimraf ./build",":build":"esbuild src/index.ts --bundle --platform=node --format=cjs --minify --outfile=build/index.js --sourcemap --log-override:empty-import-meta=silent",":build:dev":"esbuild src/index.ts --bundle --packages=external --platform=node --format=cjs --outfile=build/index.js --sourcemap",build:"run-s clean :build exec-perms","build:dev":"run-s clean :build:dev exec-perms","build:watch":"npm run :build:dev -- --watch","build:docker":"docker build -t tableau-mcp .",":build:mcpb":"npx -y @anthropic-ai/mcpb pack . tableau-mcp.mcpb","build:mcpb":"run-s build:manifest:script build:manifest :build:mcpb","build:manifest":"node build/scripts/createClaudeMcpBundleManifest.mjs","build:manifest:script":"esbuild src/scripts/createClaudeMcpBundleManifest.ts --bundle --platform=node --format=esm --outdir=build/scripts --sourcemap=inline --out-extension:.js=.mjs","start:http":"node build/index.js","start:http:docker":"docker run -p 3927:3927 -i --rm --env-file env.list tableau-mcp",lint:"npm exec eslint",inspect:"npx @modelcontextprotocol/inspector --config config.json --server tableau",":inspect:http":"npx @modelcontextprotocol/inspector --config config.http.json --server tableau","inspect:http":"run-p start:http :inspect:http","inspect:docker":"npx @modelcontextprotocol/inspector --config config.docker.json --server tableau","inspect:docker:http":"run-p start:http:docker :inspect:http","build:inspect":"run-s build inspect","build:inspect:docker":"run-s build:docker inspect:docker","build:inspect:docker:http":"run-s build:docker inspect:docker:http","exec-perms":"shx chmod +x build/*.js",test:"vitest --config ./vitest.config.ts","test:e2e":"vitest --config ./vitest.config.e2e.ts","test:eval":"vitest --config ./vitest.config.eval.ts","test:oauth":"vitest --config ./vitest.config.oauth.ts",coverage:"vitest run --config ./vitest.config.ts --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.1","@zodios/core":"^10.9.6","axios-retry":"^4.5.0",cors:"^2.8.5",dotenv:"^16.5.0",express:"^5.1.0","fast-levenshtein":"^3.0.0",jose:"^6.0.12",ssrfcheck:"^1.2.0","ts-results-es":"^5.0.1",zod:"^3.24.3","zod-validation-error":"^4.0.1"},devDependencies:{"@anthropic-ai/mcpb":"^1.0.0","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.25.1","@modelcontextprotocol/inspector":"^0.16.6","@openai/agents":"^0.1.9","@types/cors":"^2.8.19","@types/eslint__js":"^8.42.3","@types/express":"^5.0.3","@types/fast-levenshtein":"^0.0.1","@types/node":"^22.15.3","@types/supertest":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.31.1","@typescript-eslint/parser":"^8.31.1","@vitest/coverage-v8":"^3.1.3",esbuild:"^0.25.5",eslint:"^9.25.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.2.6","eslint-plugin-simple-import-sort":"^12.1.1","npm-run-all":"^4.1.5",openai:"^5.23.2",prettier:"^3.5.3",rimraf:"^6.0.1",shx:"^0.4.0",supertest:"^7.1.4",typescript:"^5.8.3","typescript-eslint":"^8.31.1",vitest:"^3.1.3"},engines:{node:">=22.7.5"}};function pa(t){var e=String(t);if(e==="[object Object]")try{e=JSON.stringify(t)}catch{}return e}var WO=function(){function t(){}return t.prototype.isSome=function(){return!1},t.prototype.isNone=function(){return!0},t.prototype[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:void 0}}}},t.prototype.unwrapOr=function(e){return e},t.prototype.unwrapOrElse=function(e){return e()},t.prototype.expect=function(e){throw new Error("".concat(e))},t.prototype.unwrap=function(){throw new Error("Tried to unwrap None")},t.prototype.map=function(e){return this},t.prototype.mapOr=function(e,r){return e},t.prototype.mapOrElse=function(e,r){return e()},t.prototype.or=function(e){return e},t.prototype.orElse=function(e){return e()},t.prototype.andThen=function(e){return this},t.prototype.toResult=function(e){return B(e)},t.prototype.toString=function(){return"None"},t.prototype.toAsyncOption=function(){return new ws(Qi)},t}(),Qi=new WO;Object.freeze(Qi);var KO=function(){function t(e){if(!(this instanceof t))return new t(e);this.value=e}return t.prototype.isSome=function(){return!0},t.prototype.isNone=function(){return!1},t.prototype[Symbol.iterator]=function(){return[this.value][Symbol.iterator]()},t.prototype.unwrapOr=function(e){return this.value},t.prototype.unwrapOrElse=function(e){return this.value},t.prototype.expect=function(e){return this.value},t.prototype.unwrap=function(){return this.value},t.prototype.map=function(e){return ii(e(this.value))},t.prototype.mapOr=function(e,r){return r(this.value)},t.prototype.mapOrElse=function(e,r){return r(this.value)},t.prototype.or=function(e){return this},t.prototype.orElse=function(e){return this},t.prototype.andThen=function(e){return e(this.value)},t.prototype.toResult=function(e){return Z(this.value)},t.prototype.toAsyncOption=function(){return new ws(this)},t.prototype.safeUnwrap=function(){return this.value},t.prototype.toString=function(){return"Some(".concat(pa(this.value),")")},t.EMPTY=new t(void 0),t}(),ii=KO,$y;(function(t){function e(){for(var a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];for(var s=[],o=0,p=a;o<p.length;o++){var l=p[o];if(l.isSome())s.push(l.value);else return l}return ii(s)}t.all=e;function r(){for(var a=[],n=0;n<arguments.length;n++)a[n]=arguments[n];for(var s=0,o=a;s<o.length;s++){var p=o[s];if(p.isSome())return p}return Qi}t.any=r;function i(a){return a instanceof ii||a===Qi}t.isOption=i})($y||($y={}));var $c=function(t,e,r){if(r||arguments.length===2)for(var i=0,a=e.length,n;i<a;i++)(n||!(i in e))&&(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))},GO=function(){function t(e){if(!(this instanceof t))return new t(e);this.error=e;var r=new Error().stack.split(`
65
65
  `).slice(2);r&&r.length>0&&r[0].includes("ErrImpl")&&r.shift(),this._stack=r.join(`
66
66
  `)}return t.prototype.isOk=function(){return!1},t.prototype.isErr=function(){return!0},t.prototype[Symbol.iterator]=function(){return{next:function(){return{done:!0,value:void 0}}}},t.prototype.else=function(e){return e},t.prototype.unwrapOr=function(e){return e},t.prototype.unwrapOrElse=function(e){return e(this.error)},t.prototype.expect=function(e){throw new Error("".concat(e," - Error: ").concat(pa(this.error),`
67
67
  `).concat(this._stack),{cause:this.error})},t.prototype.expectErr=function(e){return this.error},t.prototype.unwrap=function(){throw new Error("Tried to unwrap Error: ".concat(pa(this.error),`