@director.run/cli 0.0.41 → 0.0.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.
Files changed (2) hide show
  1. package/dist/cli.js +4 -4
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -544,7 +544,7 @@ Please see the 3.x to 4.x migration guide for details on how to update your app.
544
544
  `)+w,p=J+1,J=D.indexOf(`
545
545
  `,p)}while(J!==-1);return B+=D.slice(p),B}var{stdout:tP,stderr:rP}=nP,Eu=Symbol("GENERATOR"),zD=Symbol("STYLER"),BJ=Symbol("IS_EMPTY"),eP=["ansi","ansi","ansi256","ansi16m"],UD=Object.create(null),XH1=(D,F={})=>{if(F.level&&!(Number.isInteger(F.level)&&F.level>=0&&F.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let w=tP?tP.level:0;D.level=F.level===void 0?w:F.level};var EH1=(D)=>{let F=(...w)=>w.join(" ");return XH1(F,D),Object.setPrototypeOf(F,YJ.prototype),F};function YJ(D){return EH1(D)}Object.setPrototypeOf(YJ.prototype,Function.prototype);for(let[D,F]of Object.entries(a4))UD[D]={get(){let w=vQ(this,Ku(F.open,F.close,this[zD]),this[BJ]);return Object.defineProperty(this,D,{value:w}),w}};UD.visible={get(){let D=vQ(this,this[zD],!0);return Object.defineProperty(this,"visible",{value:D}),D}};var Wu=(D,F,w,...J)=>{if(D==="rgb"){if(F==="ansi16m")return a4[w].ansi16m(...J);if(F==="ansi256")return a4[w].ansi256(a4.rgbToAnsi256(...J));return a4[w].ansi(a4.rgbToAnsi(...J))}if(D==="hex")return Wu("rgb",F,w,...a4.hexToRgb(...J));return a4[w][D](...J)},WH1=["rgb","hex","ansi256"];for(let D of WH1){UD[D]={get(){let{level:w}=this;return function(...J){let p=Ku(Wu(D,eP[w],"color",...J),a4.color.close,this[zD]);return vQ(this,p,this[BJ])}}};let F="bg"+D[0].toUpperCase()+D.slice(1);UD[F]={get(){let{level:w}=this;return function(...J){let p=Ku(Wu(D,eP[w],"bgColor",...J),a4.bgColor.close,this[zD]);return vQ(this,p,this[BJ])}}}}var KH1=Object.defineProperties(()=>{},{...UD,level:{enumerable:!0,get(){return this[Eu].level},set(D){this[Eu].level=D}}}),Ku=(D,F,w)=>{let J,p;if(w===void 0)J=D,p=F;else J=w.openAll+D,p=F+w.closeAll;return{open:D,close:F,openAll:J,closeAll:p,parent:w}},vQ=(D,F,w)=>{let J=(...p)=>VH1(J,p.length===1?""+p[0]:p.join(" "));return Object.setPrototypeOf(J,KH1),J[Eu]=D,J[zD]=F,J[BJ]=w,J},VH1=(D,F)=>{if(D.level<=0||!F)return D[BJ]?"":F;let w=D[zD];if(w===void 0)return F;let{openAll:J,closeAll:p}=w;if(F.includes("\x1B"))while(w!==void 0)F=oP(F,w.close,w.open),w=w.parent;let B=F.indexOf(`
546
546
  `);if(B!==-1)F=sP(F,p,J,B);return J+F+p};Object.defineProperties(YJ.prototype,UD);var HH1=YJ(),GB0=YJ({level:rP?rP.level:0});var x1=HH1;var Jx=z1(wx(),1),O8=Gu("#0099F7"),z5=Gu("#F11712"),QJ=Gu("#00FF00"),Hu=(D)=>x1.yellow(D);function Gu(D){let F=zH1(D);return(w)=>`\x1B[38;5;${F}m${w}${Jx.default.reset("")}`}function zH1(D){let F=parseInt(D.slice(1),16),w=Math.floor(F/65536)%256,J=Math.floor(F/256)%256,p=F%256;return 16+36*Math.round(w/255*5)+6*Math.round(J/255*5)+Math.round(p/255*5)}function G2(D){return x1.white.bold(D)}var uu=" ".repeat(2);function Yx(D){let F=[];if(D._enableDebugCommands)F.push(Hu("\uD83D\uDEA7 debug commands appear in yellow \uD83D\uDEA7")),F.push("");if(F.push(D.description().trim()),F.push(""),F.push(ZD("usage")),F.push(uu+XJ([D.parent?D.parent.name():"",D.name(),Xx("command"),"[subcommand]","[flags]"])),F.push(""),D.parent)F.push(ZD(`${D.name()} commands`));else F.push(ZD("core commands"));D.commands.toSorted((J,p)=>Number(!!J.commands.length)-Number(!!p.commands.length)).forEach((J)=>{if(J.commands.length)F.push(""),F.push(ZD(J.name())),J.commands.forEach((p)=>{F.push(px(p))});else F.push(px(J))}),F.push("");let w=[D._helpOption,...D.options].filter((J)=>J!==void 0);if(w.length)F.push(ZD("flags")),w.forEach((J)=>{F.push(XJ([uu,J.flags,Qx(J.description,J.flags.length)]))}),F.push("");if(D.examples)F.push(ZD("examples")),F.push(" "+D.examples.trim()),F.push("");return F.push(""),F.join(`
547
- `)}var ZD=(D)=>{return G2(D.toLocaleUpperCase())},px=(D)=>{let F=D.registeredArguments.map((B)=>B.required?Xx(B.name()):Bx(B.name())).filter((B)=>B!=="").join(" "),w=XJ([XJ([D.parent&&D.parent.parent?D.parent?.name():void 0,D.name()]),F,D.options.length?Bx("options"):""]),J=D.description()||z5("TODO"),p=XJ([uu,w,Qx(J,w.length)]);return D._debug?Hu(p):p},Qx=(D,F)=>{return" ".repeat(Math.max(0,45-F))+D},Xx=(D)=>["<",D,">"].join(""),Bx=(D)=>["[",D,"]"].join(""),XJ=(D)=>D.filter(Boolean).join(" ");class U5 extends Qu{debug=!0;examples="";constructor(D){super(D);this.helpCommand(!1)}showDebugCommands(D){return this._enableDebugCommands=D,this}debugCommand(D,F){if(this._enableDebugCommands){let w=super.command(D,F);return w._enableDebugCommands=!0,w._debug=!0,w}else return new Qu(D)}helpInformation(D){return Yx(this)}addExamples(D){this.examples=D}addCommand(D,F){return D._enableDebugCommands=this._enableDebugCommands,D._debug=this._debug,super.addCommand(D,F)}}function L8({flags:D,description:F,defaultValue:w,choices:J,mandatory:p}){let B=new yP(D,F);return p&&B.makeOptionMandatory(),w&&B.default(w),J&&B.choices(J),B}var K9={name:"@director.run/cli",type:"module",version:"0.0.41",files:["dist","README.md"],bin:{director:"./dist/cli.js"},license:"MIT",repository:{type:"git",url:"https://github.com/director-run/director"},description:"The easiest way to manage and deploy MCP servers",author:"The Working Company <hello@director.run>",homepage:"https://director.run",scripts:{lint:"biome check .",format:"biome format --write .",clean:"rm -rf .turbo dist/*",test:"bun run vitest --fileParallelism=false",cli:"NODE_ENV=development bun run bin/cli.ts",typecheck:"tsc --noEmit",build:"bun build --production --target=node bin/cli.ts --outdir dist",release:"bun publish --access public --omit=peer",prepare:"bun run build",dev:"bun --watch bin/cli.ts"},peerDependencies:{typescript:"^5"},devDependencies:{"@director.run/gateway":"workspace:*","@director.run/mcp":"workspace:*","@director.run/utilities":"workspace:*","@inquirer/prompts":"^7.5.2","@types/update-notifier":"^6.0.8",boxen:"^8.0.1",chalk:"^5.4.1","cli-table3":"^0.6.5",commander:"^13.1.0",semver:"^7.7.2",superjson:"^2.2.2","type-fest":"^4.40.0","update-notifier":"^7.3.1","@segment/analytics-node":"^2.3.0","node-machine-id":"^1.1.12"}};import kQ from"node:process";function Nu({onlyFirst:D=!1}={}){let w=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(w,D?void 0:"g")}var ZH1=Nu();function Z5(D){if(typeof D!=="string")throw new TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(ZH1,"")}function Ex(D){return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109}function Wx(D){return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510}function Kx(D){return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9776&&D<=9783||D>=9800&&D<=9811||D===9855||D>=9866&&D<=9871||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12773||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101631&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D>=119552&&D<=119638||D>=119648&&D<=119670||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129673||D>=129679&&D<=129734||D>=129742&&D<=129756||D>=129759&&D<=129769||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141}function $H1(D){if(!Number.isSafeInteger(D))throw new TypeError(`Expected a code point, got \`${typeof D}\`.`)}function Vx(D,{ambiguousAsWide:F=!1}={}){if($H1(D),Wx(D)||Kx(D)||F&&Ex(D))return 2;return 1}var ux=z1(Gx(),1),MH1=new Intl.Segmenter,qH1=/^\p{Default_Ignorable_Code_Point}$/u;function k2(D,F={}){if(typeof D!=="string"||D.length===0)return 0;let{ambiguousIsNarrow:w=!0,countAnsiEscapeCodes:J=!1}=F;if(!J)D=Z5(D);if(D.length===0)return 0;let p=0,B={ambiguousAsWide:!w};for(let{segment:Y}of MH1.segment(D)){let Q=Y.codePointAt(0);if(Q<=31||Q>=127&&Q<=159)continue;if(Q>=8203&&Q<=8207||Q===65279)continue;if(Q>=768&&Q<=879||Q>=6832&&Q<=6911||Q>=7616&&Q<=7679||Q>=8400&&Q<=8447||Q>=65056&&Q<=65071)continue;if(Q>=55296&&Q<=57343)continue;if(Q>=65024&&Q<=65039)continue;if(qH1.test(Y))continue;if(ux.default().test(Y)){p+=2;continue}p+=Vx(Q,B)}return p}function dQ(D){let F=0;for(let w of D.split(`
547
+ `)}var ZD=(D)=>{return G2(D.toLocaleUpperCase())},px=(D)=>{let F=D.registeredArguments.map((B)=>B.required?Xx(B.name()):Bx(B.name())).filter((B)=>B!=="").join(" "),w=XJ([XJ([D.parent&&D.parent.parent?D.parent?.name():void 0,D.name()]),F,D.options.length?Bx("options"):""]),J=D.description()||z5("TODO"),p=XJ([uu,w,Qx(J,w.length)]);return D._debug?Hu(p):p},Qx=(D,F)=>{return" ".repeat(Math.max(0,45-F))+D},Xx=(D)=>["<",D,">"].join(""),Bx=(D)=>["[",D,"]"].join(""),XJ=(D)=>D.filter(Boolean).join(" ");class U5 extends Qu{debug=!0;examples="";constructor(D){super(D);this.helpCommand(!1)}showDebugCommands(D){return this._enableDebugCommands=D,this}debugCommand(D,F){if(this._enableDebugCommands){let w=super.command(D,F);return w._enableDebugCommands=!0,w._debug=!0,w}else return new Qu(D)}helpInformation(D){return Yx(this)}addExamples(D){this.examples=D}addCommand(D,F){return D._enableDebugCommands=this._enableDebugCommands,D._debug=this._debug,super.addCommand(D,F)}}function L8({flags:D,description:F,defaultValue:w,choices:J,mandatory:p}){let B=new yP(D,F);return p&&B.makeOptionMandatory(),w&&B.default(w),J&&B.choices(J),B}var K9={name:"@director.run/cli",type:"module",version:"0.0.43",files:["dist","README.md"],bin:{director:"./dist/cli.js"},license:"MIT",repository:{type:"git",url:"https://github.com/director-run/director"},description:"The easiest way to manage and deploy MCP servers",author:"The Working Company <hello@director.run>",homepage:"https://director.run",scripts:{lint:"biome check .",format:"biome format --write .",clean:"rm -rf .turbo dist/*",test:"bun run vitest --fileParallelism=false",cli:"NODE_ENV=development bun run bin/cli.ts",typecheck:"tsc --noEmit",build:"bun build --production --target=node bin/cli.ts --outdir dist",release:"bun publish --access public --omit=peer",prepare:"bun run build",dev:"bun --watch bin/cli.ts"},peerDependencies:{typescript:"^5"},devDependencies:{"@director.run/gateway":"workspace:*","@director.run/mcp":"workspace:*","@director.run/utilities":"workspace:*","@inquirer/prompts":"^7.5.2","@types/update-notifier":"^6.0.8",boxen:"^8.0.1",chalk:"^5.4.1","cli-table3":"^0.6.5",commander:"^13.1.0",semver:"^7.7.2",superjson:"^2.2.2","type-fest":"^4.40.0","update-notifier":"^7.3.1","@segment/analytics-node":"^2.3.0","node-machine-id":"^1.1.12"}};import kQ from"node:process";function Nu({onlyFirst:D=!1}={}){let w=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(w,D?void 0:"g")}var ZH1=Nu();function Z5(D){if(typeof D!=="string")throw new TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(ZH1,"")}function Ex(D){return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109}function Wx(D){return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510}function Kx(D){return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9776&&D<=9783||D>=9800&&D<=9811||D===9855||D>=9866&&D<=9871||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12773||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101631&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D>=119552&&D<=119638||D>=119648&&D<=119670||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129673||D>=129679&&D<=129734||D>=129742&&D<=129756||D>=129759&&D<=129769||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141}function $H1(D){if(!Number.isSafeInteger(D))throw new TypeError(`Expected a code point, got \`${typeof D}\`.`)}function Vx(D,{ambiguousAsWide:F=!1}={}){if($H1(D),Wx(D)||Kx(D)||F&&Ex(D))return 2;return 1}var ux=z1(Gx(),1),MH1=new Intl.Segmenter,qH1=/^\p{Default_Ignorable_Code_Point}$/u;function k2(D,F={}){if(typeof D!=="string"||D.length===0)return 0;let{ambiguousIsNarrow:w=!0,countAnsiEscapeCodes:J=!1}=F;if(!J)D=Z5(D);if(D.length===0)return 0;let p=0,B={ambiguousAsWide:!w};for(let{segment:Y}of MH1.segment(D)){let Q=Y.codePointAt(0);if(Q<=31||Q>=127&&Q<=159)continue;if(Q>=8203&&Q<=8207||Q===65279)continue;if(Q>=768&&Q<=879||Q>=6832&&Q<=6911||Q>=7616&&Q<=7679||Q>=8400&&Q<=8447||Q>=65056&&Q<=65071)continue;if(Q>=55296&&Q<=57343)continue;if(Q>=65024&&Q<=65039)continue;if(qH1.test(Y))continue;if(ux.default().test(Y)){p+=2;continue}p+=Vx(Q,B)}return p}function dQ(D){let F=0;for(let w of D.split(`
548
548
  `))F=Math.max(F,k2(w));return F}var cx=z1(Uu(),1);var CH1=/[\p{Lu}]/u,OH1=/[\p{Ll}]/u,Ux=/^[\p{Lu}](?![\p{Lu}])/gu,Mx=/([\p{Alpha}\p{N}_]|$)/u,Zu=/[_.\- ]+/,LH1=new RegExp("^"+Zu.source),Zx=new RegExp(Zu.source+Mx.source,"gu"),$x=new RegExp("\\d+"+Mx.source,"gu"),TH1=(D,F,w,J)=>{let p=!1,B=!1,Y=!1,Q=!1;for(let X=0;X<D.length;X++){let W=D[X];if(Q=X>2?D[X-3]==="-":!0,p&&CH1.test(W))D=D.slice(0,X)+"-"+D.slice(X),p=!1,Y=B,B=!0,X++;else if(B&&Y&&OH1.test(W)&&(!Q||J))D=D.slice(0,X-1)+"-"+D.slice(X-1),Y=B,B=!1,p=!0;else p=F(W)===W&&w(W)!==W,Y=B,B=w(W)===W&&F(W)!==W}return D},RH1=(D,F)=>{return Ux.lastIndex=0,D.replaceAll(Ux,(w)=>F(w))},PH1=(D,F)=>{return Zx.lastIndex=0,$x.lastIndex=0,D.replaceAll($x,(w,J,p)=>["_","-"].includes(D.charAt(p+w.length))?w:F(w)).replaceAll(Zx,(w,J)=>F(J))};function $u(D,F){if(!(typeof D==="string"||Array.isArray(D)))throw new TypeError("Expected the input to be `string | string[]`");if(F={pascalCase:!1,preserveConsecutiveUppercase:!1,...F},Array.isArray(D))D=D.map((B)=>B.trim()).filter((B)=>B.length).join("-");else D=D.trim();if(D.length===0)return"";let w=F.locale===!1?(B)=>B.toLowerCase():(B)=>B.toLocaleLowerCase(F.locale),J=F.locale===!1?(B)=>B.toUpperCase():(B)=>B.toLocaleUpperCase(F.locale);if(D.length===1){if(Zu.test(D))return"";return F.pascalCase?J(D):w(D)}if(D!==w(D))D=TH1(D,w,J,F.preserveConsecutiveUppercase);if(D=D.replace(LH1,""),D=F.preserveConsecutiveUppercase?RH1(D,w):w(D),F.pascalCase)D=J(D.charAt(0))+D.slice(1);return PH1(D,J)}var Ou=z1(Ix(),1);var Sx=(D=0)=>(F)=>`\x1B[${F+D}m`,dx=(D=0)=>(F)=>`\x1B[${38+D};5;${F}m`,_x=(D=0)=>(F,w,J)=>`\x1B[${38+D};2;${F};${w};${J}m`,j0={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},nB0=Object.keys(j0.modifier),fH1=Object.keys(j0.color),mH1=Object.keys(j0.bgColor),oB0=[...fH1,...mH1];function kH1(){let D=new Map;for(let[F,w]of Object.entries(j0)){for(let[J,p]of Object.entries(w))j0[J]={open:`\x1B[${p[0]}m`,close:`\x1B[${p[1]}m`},w[J]=j0[J],D.set(p[0],p[1]);Object.defineProperty(j0,F,{value:w,enumerable:!1})}return Object.defineProperty(j0,"codes",{value:D,enumerable:!1}),j0.color.close="\x1B[39m",j0.bgColor.close="\x1B[49m",j0.color.ansi=Sx(),j0.color.ansi256=dx(),j0.color.ansi16m=_x(),j0.bgColor.ansi=Sx(10),j0.bgColor.ansi256=dx(10),j0.bgColor.ansi16m=_x(10),Object.defineProperties(j0,{rgbToAnsi256:{value:(F,w,J)=>{if(F===w&&w===J){if(F<8)return 16;if(F>248)return 231;return Math.round((F-8)/247*24)+232}return 16+36*Math.round(F/255*5)+6*Math.round(w/255*5)+Math.round(J/255*5)},enumerable:!1},hexToRgb:{value:(F)=>{let w=/[a-f\d]{6}|[a-f\d]{3}/i.exec(F.toString(16));if(!w)return[0,0,0];let[J]=w;if(J.length===3)J=[...J].map((B)=>B+B).join("");let p=Number.parseInt(J,16);return[p>>16&255,p>>8&255,p&255]},enumerable:!1},hexToAnsi256:{value:(F)=>j0.rgbToAnsi256(...j0.hexToRgb(F)),enumerable:!1},ansi256ToAnsi:{value:(F)=>{if(F<8)return 30+F;if(F<16)return 90+(F-8);let w,J,p;if(F>=232)w=((F-232)*10+8)/255,J=w,p=w;else{F-=16;let Q=F%36;w=Math.floor(F/36)/5,J=Math.floor(Q/6)/5,p=Q%6/5}let B=Math.max(w,J,p)*2;if(B===0)return 30;let Y=30+(Math.round(p)<<2|Math.round(J)<<1|Math.round(w));if(B===2)Y+=60;return Y},enumerable:!1},rgbToAnsi:{value:(F,w,J)=>j0.ansi256ToAnsi(j0.rgbToAnsi256(F,w,J)),enumerable:!1},hexToAnsi:{value:(F)=>j0.ansi256ToAnsi(j0.hexToAnsi256(F)),enumerable:!1}}),j0}var bH1=kH1(),jx=bH1;var fQ=new Set(["\x1B","›"]),hH1=39,Cu="\x07",kx="[",yH1="]",bx="m",jQ=`${yH1}8;;`,fx=(D)=>`${fQ.values().next().value}${kx}${D}${bx}`,mx=(D)=>`${fQ.values().next().value}${jQ}${D}${Cu}`,iH1=(D)=>D.split(" ").map((F)=>k2(F)),Au=(D,F,w)=>{let J=[...F],p=!1,B=!1,Y=k2(Z5(D.at(-1)));for(let[Q,X]of J.entries()){let W=k2(X);if(Y+W<=w)D[D.length-1]+=X;else D.push(X),Y=0;if(fQ.has(X))p=!0,B=J.slice(Q+1,Q+1+jQ.length).join("")===jQ;if(p){if(B){if(X===Cu)p=!1,B=!1}else if(X===bx)p=!1;continue}if(Y+=W,Y===w&&Q<J.length-1)D.push(""),Y=0}if(!Y&&D.at(-1).length>0&&D.length>1)D[D.length-2]+=D.pop()},cH1=(D)=>{let F=D.split(" "),w=F.length;while(w>0){if(k2(F[w-1])>0)break;w--}if(w===F.length)return D;return F.slice(0,w).join(" ")+F.slice(w).join("")},lH1=(D,F,w={})=>{if(w.trim!==!1&&D.trim()==="")return"";let J="",p,B,Y=iH1(D),Q=[""];for(let[H,N]of D.split(" ").entries()){if(w.trim!==!1)Q[Q.length-1]=Q.at(-1).trimStart();let u=k2(Q.at(-1));if(H!==0){if(u>=F&&(w.wordWrap===!1||w.trim===!1))Q.push(""),u=0;if(u>0||w.trim===!1)Q[Q.length-1]+=" ",u++}if(w.hard&&Y[H]>F){let G=F-u,U=1+Math.floor((Y[H]-G-1)/F);if(Math.floor((Y[H]-1)/F)<U)Q.push("");Au(Q,N,F);continue}if(u+Y[H]>F&&u>0&&Y[H]>0){if(w.wordWrap===!1&&u<F){Au(Q,N,F);continue}Q.push("")}if(u+Y[H]>F&&w.wordWrap===!1){Au(Q,N,F);continue}Q[Q.length-1]+=N}if(w.trim!==!1)Q=Q.map((H)=>cH1(H));let X=Q.join(`
549
549
  `),W=[...X],K=0;for(let[H,N]of W.entries()){if(J+=N,fQ.has(N)){let{groups:G}=new RegExp(`(?:\\${kx}(?<code>\\d+)m|\\${jQ}(?<uri>.*)${Cu})`).exec(X.slice(K))||{groups:{}};if(G.code!==void 0){let U=Number.parseFloat(G.code);p=U===hH1?void 0:U}else if(G.uri!==void 0)B=G.uri.length===0?void 0:G.uri}let u=jx.codes.get(Number(p));if(W[H+1]===`
550
550
  `){if(B)J+=mx("");if(p&&u)J+=fx(u)}else if(N===`
@@ -566,7 +566,7 @@ Run `+x1.cyan("{updateCommand}")+" to update",p=D.message||J;D.boxenOptions??={p
566
566
 
567
567
  To continue using Director, please update to the lastest version.
568
568
 
569
- Run `+x1.cyan("npm install -g @director.run/cli");console.log($D(w,{padding:1,borderStyle:"double"})),process.exit(0)}}var A_=z1(dJ(),1);class O1 extends Error{code;props;name="AppError";constructor(D,F,w={}){super(F);this.code=D;this.props=w}}function vX(D){return D instanceof O1}function C_(D){return D instanceof Error&&"statusCode"in D&&A_.isNumber(D.statusCode)}var VE=z1(dJ(),1),KE=z1(Tz(),1),Uk=z1(zk(),1);var IR1=process.env.LOG_LEVEL??(M8()?"silent":"info"),SR1=process.env.LOG_PRETTY!=="false",dR1=process.env.LOG_ERROR_STACK==="true",_R1=KE.default({level:IR1.toLowerCase(),messageKey:"message",timestamp:!0,redact:["transport.headers.Authorization","transport.headers.authorization","transport.env.OPENAPI_MCP_HEADERS","transport.env.SLACK_BOT_TOKEN"],serializers:{error:(D)=>{if(vX(D))return{type:D.name,...VE.pick(D,"message","stack","code","props"),...D.cause?{cause:KE.default.stdSerializers.errWithCause(D)}:{}};let F=KE.default.stdSerializers.errWithCause(D);return dR1?F:VE.omit(F,"stack")}}},SR1?Uk.default({colorize:!0,translateTime:"HH:MM:ss",ignore:"pid,hostname"}):void 0),q1=(D)=>_R1.child({name:D});import WU from"node:fs";import{existsSync as jR1}from"node:fs";import{dirname as fR1}from"node:path";async function HE(D){if(!jR1(D))throw new O1("NOT_FOUND",`file not found at: ${D}`);let F=await WU.promises.readFile(D),w=new TextDecoder().decode(F);return JSON.parse(w)}async function t4(D,F){return await WU.promises.mkdir(fR1(D),{recursive:!0}),WU.promises.writeFile(D,JSON.stringify(F,null,2))}class b5{}import{exec as mR1,execSync as kR1}from"node:child_process";import{existsSync as bR1}from"node:fs";import{homedir as hR1}from"node:os";import yR1 from"node:path";import{promisify as iR1}from"node:util";var Zk=iR1(mR1),bD=q1("os/linux");class KU extends b5{restartApp(D){return bD.warn(`restarting ${D} is not supported on Linux`),Promise.resolve()}async openFileInCode(D){bD.info(`opening ${D}`),await Zk(`code "${D}"`)}isCommandInPath(D){try{return kR1(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(F){return!1}}isAppInstalled(D){switch(D){case"Claude":return bD.warn(`${D} is not supported on Linux`),!1;case"Cursor":return bD.warn(`${D} is not supported on Linux, yet`),!1;case"Visual Studio Code":return this.isCommandInPath("code");default:throw new O1("INVALID_ARGUMENT",`unknown app: ${D}`)}}isFilePresent(D){return bR1(D)}async openUrl(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`;try{await Zk(`xdg-open "${F}"`)}catch(w){throw new Error(`Failed to open URL: ${w instanceof Error?w.message:"Unknown error"}`)}}getConfigFileForApp(D){switch(D){case"Claude":return bD.warn(`${D} is not supported on Linux, yet`),"";case"Cursor":return bD.warn(`${D} is not supported on Linux, yet`),"";case"Visual Studio Code":return yR1.join(hR1(),".config/Code/User/settings.json")}}}import{exec as cR1,execSync as VU}from"node:child_process";import{existsSync as lR1}from"node:fs";import{homedir as HU}from"node:os";import GU from"node:path";import{promisify as gR1}from"node:util";function hD(D){return new Promise((F)=>setTimeout(F,D))}var GE=gR1(cR1),uE=q1("os/macos");class uU extends b5{async restartApp(D){if(uE.info(`restarting ${D}...`),!this.isAppRunning(D)){uE.info(`${D} is not running, skipping restart`);return}await GE(`osascript -e 'tell application "${D}" to quit'`),await hD(2000),await GE(`open -a ${D}`),uE.info(`${D} has been restarted`)}async openFileInCode(D){uE.info(`opening ${D}`),await GE(`code "${D}"`)}isCommandInPath(D){try{return VU(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(F){return!1}}isAppInstalled(D){try{let F;switch(D){case"Claude":F="Claude";break;case"Cursor":F="Cursor";break;case"Visual Studio Code":F="Visual Studio Code";break;default:throw new O1("INVALID_ARGUMENT",`unknown app: ${D}`)}return VU(`mdfind "kMDItemDisplayName == '${F}'"`,{stdio:"pipe",encoding:"utf8"}).trim().length>0}catch(F){return!1}}isFilePresent(D){return lR1(D)}isAppRunning(D){try{return VU(`pgrep -x "${D}"`,{stdio:"pipe"}),!0}catch(F){return!1}}async openUrl(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`;try{await GE(`open "${F}"`)}catch(w){throw new Error(`Failed to open URL: ${w instanceof Error?w.message:"Unknown error"}`)}}getConfigFileForApp(D){switch(D){case"Claude":return GU.join(HU(),"Library/Application Support/Claude/claude_desktop_config.json");case"Cursor":return GU.join(HU(),".cursor/mcp.json");case"Visual Studio Code":return GU.join(HU(),"Library/Application Support/Code/User/settings.json")}}}class NU extends b5{restartApp(D){return Promise.resolve()}openFileInCode(D){return Promise.resolve()}isCommandInPath(D){return!1}isAppInstalled(D){return!1}isFilePresent(D){return!1}isAppRunning(D){return!1}openUrl(D){return Promise.resolve()}getConfigFileForApp(D){return""}}var NE,aR1=q1("os");if(process.platform==="darwin")NE=new uU;else if(process.platform==="linux")NE=new KU;else aR1.warn(`unsupported platform: ${process.platform}, automatic client configuration will not work`),NE=new NU;var O2=NE;var $k="director__";class h5{config;isInitialized;logger;configPath;name;constructor(D){this.configPath=D.configPath,this.isInitialized=!1,this.name=D.name,this.logger=q1(`client-configurator/${this.name}`)}async initialize(){if(this.isInitialized&&this.config)return;if(this.logger.info("initializing"),!await this.isClientPresent())throw new O1("COMMAND_NOT_FOUND",`${this.name} doesn't appear to be installed`,{name:this.name,configPath:this.configPath});if(!await this.isClientConfigPresent())await this.createConfig();try{this.config=await HE(this.configPath),this.isInitialized=!0}catch(D){if(D instanceof SyntaxError)throw new O1("JSON_PARSE_ERROR",`syntax error in config file: ${D.message}`,{path:this.configPath});else throw D}}async getStatus(){return{name:this.name,installed:await this.isClientPresent(),configExists:await this.isClientConfigPresent(),configPath:this.configPath}}createServerConfigKey(D){return`${$k}${D}`}isManagedConfigKey(D){return D.startsWith($k)}}class zU extends h5{async isClientPresent(){return await O2.isAppInstalled("Claude")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Claude"),name:"claude"})}async initialize(){if(await super.initialize(),!this.config?.mcpServers)await this.updateConfig({...this.config,mcpServers:{}})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcpServers?.[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcpServers:{...this.config?.mcpServers}};delete F.mcpServers?.[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcpServers:{...this.config?.mcpServers}};F.mcpServers[this.createServerConfigKey(D.name)]={command:"npx",args:["-y","@director.run/cli","http2stdio",D.url],env:{LOG_LEVEL:"silent"}},await this.updateConfig(F)}async reset(){await this.initialize(),this.logger.info("purging claude config");let D={mcpServers:{...this.config?.mcpServers}};D.mcpServers={},await this.updateConfig(D)}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcpServers??{}).filter(([D])=>this.isManagedConfigKey(D)).map(([D,F])=>({name:D,url:F.args[3]}))}async openConfig(){this.logger.info("opening claude config"),await O2.openFileInCode(this.configPath)}async restart(){if(!M8())this.logger.info("restarting claude"),await O2.restartApp("Claude");else this.logger.warn("skipping restart of claude in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`),await this.restart()}async updateConfig(D){this.config=D,this.logger.info(`writing config to ${this.configPath}`),await t4(this.configPath,this.config),await this.restart()}async createConfig(){this.logger.info("initializing claude config"),await t4(this.configPath,{mcpServers:{}})}}var nR1=A.object({command:A.string().describe('The command to execute (e.g., "bun", "node")'),args:A.array(A.string()).describe("Command line arguments"),env:A.record(A.string()).optional().describe("Environment variables")}),dV0=A.object({mcpServers:A.record(A.string(),nR1).describe("Map of MCP server configurations")});class UU extends h5{async isClientPresent(){return await O2.isAppInstalled("Cursor")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Cursor"),name:"cursor"})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcpServers?.[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcpServers:{...this.config?.mcpServers??{}}};delete F.mcpServers[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcpServers:{...this.config?.mcpServers??{}}};F.mcpServers[this.createServerConfigKey(D.name)]={url:D.url},await this.updateConfig(F)}async restart(){if(await this.initialize(),!M8())this.logger.info("restarting cursor"),await O2.restartApp("Cursor");else this.logger.warn("skipping restart of cursor in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`);let F=this.config?.mcpServers[this.createServerConfigKey(D)]?.url;if(!F)throw new O1("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await hD(1000),await this.install({name:D,url:F})}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcpServers??{}).map(([D,F])=>({name:D,url:F.url}))}async initialize(){if(await super.initialize(),!this.config?.mcpServers)await this.updateConfig({...this.config,mcpServers:{}})}async openConfig(){this.logger.info("opening cursor config"),await O2.openFileInCode(this.configPath)}async reset(){await this.initialize(),this.logger.info("purging cursor config");let D={mcpServers:{}};await this.updateConfig(D)}async updateConfig(D){this.logger.info(`writing config to ${this.configPath}`),await t4(this.configPath,D),this.config=D}async createConfig(){this.logger.info("initializing cursor config"),await t4(this.configPath,{mcpServers:{}})}}import oR1 from"node:fs";import sR1 from"node:path";class ZU extends h5{async isClientPresent(){return await O2.isAppInstalled("Visual Studio Code")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Visual Studio Code"),name:"vscode"})}async initialize(){if(await super.initialize(),!this.config?.mcp?.servers)await this.updateConfig({...this.config,mcp:{servers:{}}})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcp.servers[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcp:{servers:{...this.config?.mcp?.servers??{}}}};delete F.mcp.servers[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcp:{servers:{...this.config?.mcp?.servers??{}}}};F.mcp.servers[this.createServerConfigKey(D.name)]={url:D.url},await this.updateConfig(F)}async restart(){if(await this.initialize(),!M8())this.logger.info("restarting vscode"),await O2.restartApp("Visual Studio Code");else this.logger.warn("skipping restart of vscode in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`);let F=this.config?.mcp?.servers[this.createServerConfigKey(D)]?.url;if(!F)throw new O1("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await hD(1000),await this.install({name:D,url:F})}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcp.servers??{}).filter(([D])=>this.isManagedConfigKey(D)).map(([D,F])=>({name:D,url:F.url}))}async openConfig(){this.logger.info("opening vscode config"),await O2.openFileInCode(this.configPath)}async reset(){await this.initialize(),this.logger.info("purging vscode config");let D={mcp:{servers:{}}};await this.updateConfig(D)}async updateConfig(D){this.logger.info(`writing config to ${this.configPath}`);let F=sR1.dirname(this.configPath);await oR1.promises.mkdir(F,{recursive:!0}),await t4(this.configPath,D),this.config=D}async createConfig(){this.logger.info("initializing vscode config"),await t4(this.configPath,{mcp:{servers:{}}})}}var tR1=q1("client-configurator"),cJ;((J)=>{J.Claude="claude";J.Cursor="cursor";J.VSCode="vscode"})(cJ||={});function y2(D,F={}){switch(D){case"claude":return new zU(F);case"cursor":return new UU(F);case"vscode":return new ZU(F);default:throw new O1("BAD_REQUEST",`Client ${D} is not supported`)}}async function zE(){let D=await Promise.all(lJ().map((F)=>y2(F)));for(let F of D)if(console.log("resetting",F.name),await F.isClientPresent())await F.reset();else console.log("client not present:",F.name)}async function yD(){return await Promise.all(lJ().map((D)=>y2(D)).map((D)=>D.getStatus()))}function lJ(){return Object.values(cJ)}async function Mk(D){let F=await Promise.all(lJ().map((J)=>y2(J))),w={["claude"]:!1,["cursor"]:!1,["vscode"]:!1};return await Promise.all(F.map(async(J)=>{try{let p=await J.isInstalled(D);w[J.name]=p}catch(p){tR1.error({error:p,message:`error checking ${D} installed status for ${J.name}`}),w[J.name]=!1}})),w}var{create:rR1,defineProperty:qk,getOwnPropertyDescriptor:eR1,getOwnPropertyNames:Ak,getPrototypeOf:DP1}=Object,FP1=Object.prototype.hasOwnProperty,r4=(D,F)=>function(){return F||D[Ak(D)[0]]((F={exports:{}}).exports,F),F.exports},wP1=(D,F,w,J)=>{if(F&&typeof F==="object"||typeof F==="function"){for(var p=Ak(F),B=0,Y=p.length,Q;B<Y;B++)if(Q=p[B],!FP1.call(D,Q)&&Q!==w)qk(D,Q,{get:((X)=>F[X]).bind(null,Q),enumerable:!(J=eR1(F,Q))||J.enumerable})}return D},$0=(D,F,w)=>(w=D!=null?rR1(DP1(D)):{},wP1(F||!D||!D.__esModule?qk(w,"default",{value:D,enumerable:!0}):w,D)),Ck=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(D,F){function w(J){return F.exports=w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},F.exports.__esModule=!0,F.exports.default=F.exports,w(J)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),JP1=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(D,F){var w=Ck().default;function J(p,B){if(w(p)!="object"||!p)return p;var Y=p[Symbol.toPrimitive];if(Y!==void 0){var Q=Y.call(p,B||"default");if(w(Q)!="object")return Q;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(p)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),pP1=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(D,F){var w=Ck().default,J=JP1();function p(B){var Y=J(B,"string");return w(Y)=="symbol"?Y:Y+""}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),S8=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(D,F){var w=pP1();function J(p,B,Y){return(B=w(B))in p?Object.defineProperty(p,B,{value:Y,enumerable:!0,configurable:!0,writable:!0}):p[B]=Y,p}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),L2=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(D,F){var w=S8();function J(B,Y){var Q=Object.keys(B);if(Object.getOwnPropertySymbols){var X=Object.getOwnPropertySymbols(B);Y&&(X=X.filter(function(W){return Object.getOwnPropertyDescriptor(B,W).enumerable})),Q.push.apply(Q,X)}return Q}function p(B){for(var Y=1;Y<arguments.length;Y++){var Q=arguments[Y]!=null?arguments[Y]:{};Y%2?J(Object(Q),!0).forEach(function(X){w(B,X,Q[X])}):Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(Q)):J(Object(Q)).forEach(function(X){Object.defineProperty(B,X,Object.getOwnPropertyDescriptor(Q,X))})}return B}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}});function gJ(D){return typeof D==="object"&&D!==null&&"subscribe"in D}function d8(D){let F={subscribe(w){let J=null,p=!1,B=!1,Y=!1;function Q(){if(J===null){Y=!0;return}if(B)return;if(B=!0,typeof J==="function")J();else if(J)J.unsubscribe()}if(J=D({next(X){var W;if(p)return;(W=w.next)===null||W===void 0||W.call(w,X)},error(X){var W;if(p)return;p=!0,(W=w.error)===null||W===void 0||W.call(w,X),Q()},complete(){var X;if(p)return;p=!0,(X=w.complete)===null||X===void 0||X.call(w),Q()}}),Y)Q();return{unsubscribe:Q}},pipe(...w){return w.reduce(BP1,F)}};return F}function BP1(D,F){return F(D)}function $U(D){let F=new AbortController;return new Promise((J,p)=>{let B=!1;function Y(){if(B)return;B=!0,Q.unsubscribe()}F.signal.addEventListener("abort",()=>{p(F.signal.reason)});let Q=D.subscribe({next(X){B=!0,J(X),Y()},error(X){p(X)},complete(){F.abort(),Y()}})})}function YP1(D,F){let w=null,J=()=>{w===null||w===void 0||w.unsubscribe(),w=null,F.removeEventListener("abort",J)};return new ReadableStream({start(p){if(w=D.subscribe({next(B){p.enqueue({ok:!0,value:B})},error(B){p.enqueue({ok:!1,error:B}),p.close()},complete(){p.close()}}),F.aborted)J();else F.addEventListener("abort",J,{once:!0})},cancel(){J()}})}function UE(D,F){let J=YP1(D,F).getReader(),p={async next(){let B=await J.read();if(B.done)return{value:void 0,done:!0};let{value:Y}=B;if(!Y.ok)throw Y.error;return{value:Y.value,done:!1}},async return(){return await J.cancel(),{value:void 0,done:!0}}};return{[Symbol.asyncIterator](){return p}}}function MU(D){return(F)=>{let w=0,J=null,p=[];function B(){if(J)return;J=F.subscribe({next(Q){for(let W of p){var X;(X=W.next)===null||X===void 0||X.call(W,Q)}},error(Q){for(let W of p){var X;(X=W.error)===null||X===void 0||X.call(W,Q)}},complete(){for(let X of p){var Q;(Q=X.complete)===null||Q===void 0||Q.call(X)}}})}function Y(){if(w===0&&J){let Q=J;J=null,Q.unsubscribe()}}return d8((Q)=>{return w++,p.push(Q),B(),{unsubscribe(){w--,Y();let X=p.findIndex((W)=>W===Q);if(X>-1)p.splice(X,1)}}})}}var EH0=Symbol();function ZE(D){let F=D,w=[],J=(Y)=>{if(F!==void 0)Y.next(F);w.push(Y)},p=(Y)=>{w.splice(w.indexOf(Y),1)},B=d8((Y)=>{return J(Y),()=>{p(Y)}});return B.next=(Y)=>{if(F===Y)return;F=Y;for(let Q of w)Q.next(Y)},B.get=()=>F,B}function Ok(D){return d8((F)=>{function w(p=0,B=D.op){let Y=D.links[p];if(!Y)throw new Error("No more links to execute - did you forget to add an ending link?");return Y({op:B,next(X){return w(p+1,X)}})}return w().subscribe(F)})}var y5={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,PAYMENT_REQUIRED:-32002,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNSUPPORTED_MEDIA_TYPE:-32015,UNPROCESSABLE_CONTENT:-32022,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099},qU={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-32002]:"PAYMENT_REQUIRED",[-32003]:"FORBIDDEN",[-32004]:"NOT_FOUND",[-32005]:"METHOD_NOT_SUPPORTED",[-32008]:"TIMEOUT",[-32009]:"CONFLICT",[-32012]:"PRECONDITION_FAILED",[-32013]:"PAYLOAD_TOO_LARGE",[-32015]:"UNSUPPORTED_MEDIA_TYPE",[-32022]:"UNPROCESSABLE_CONTENT",[-32029]:"TOO_MANY_REQUESTS",[-32099]:"CLIENT_CLOSED_REQUEST"},Lk=[y5.BAD_GATEWAY,y5.SERVICE_UNAVAILABLE,y5.GATEWAY_TIMEOUT,y5.INTERNAL_SERVER_ERROR];function aJ(D,...F){let w=Object.assign(Object.create(null),D);for(let J of F)for(let p in J){if(p in w&&w[p]!==J[p])throw new Error(`Duplicate key ${p}`);w[p]=J[p]}return w}function f0(D){return!!D&&!Array.isArray(D)&&typeof D==="object"}function nJ(D){return typeof D==="function"}function oJ(D){return Object.assign(Object.create(null),D)}var QP1=typeof Symbol==="function"&&!!Symbol.asyncIterator;function i5(D){return QP1&&f0(D)&&Symbol.asyncIterator in D}var e4=(D)=>D();function AU(D){return D}var{create:XP1,defineProperty:Pk,getOwnPropertyDescriptor:EP1,getOwnPropertyNames:xk,getPrototypeOf:WP1}=Object,KP1=Object.prototype.hasOwnProperty,H6=(D,F)=>function(){return F||D[xk(D)[0]]((F={exports:{}}).exports,F),F.exports},VP1=(D,F,w,J)=>{if(F&&typeof F==="object"||typeof F==="function"){for(var p=xk(F),B=0,Y=p.length,Q;B<Y;B++)if(Q=p[B],!KP1.call(D,Q)&&Q!==w)Pk(D,Q,{get:((X)=>F[X]).bind(null,Q),enumerable:!(J=EP1(F,Q))||J.enumerable})}return D},y1=(D,F,w)=>(w=D!=null?XP1(WP1(D)):{},VP1(F||!D||!D.__esModule?Pk(w,"default",{value:D,enumerable:!0}):w,D)),vk=()=>{},Tk=(D)=>{if(Object.freeze)Object.freeze(D)};function Ik(D,F,w){var J;let p=F.join(".");return(J=w[p])!==null&&J!==void 0||(w[p]=new Proxy(vk,{get(B,Y){if(typeof Y!=="string"||Y==="then")return;return Ik(D,[...F,Y],w)},apply(B,Y,Q){let X=F[F.length-1],W={args:Q,path:F};if(X==="call")W={args:Q.length>=2?[Q[1]]:[],path:F.slice(0,-1)};else if(X==="apply")W={args:Q.length>=2?Q[1]:[],path:F.slice(0,-1)};return Tk(W.args),Tk(W.path),D(W)}})),w[p]}var sJ=(D)=>Ik(D,[],Object.create(null)),CU=(D)=>{return new Proxy(vk,{get(F,w){if(w==="then")return;return D(w)}})},Sk={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,TIMEOUT:408,CONFLICT:409,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504};function OU(D){var F;return(F=Sk[D])!==null&&F!==void 0?F:500}function LU(D){let F=Array.isArray(D)?D:[D],w=new Set(F.map((p)=>{if("error"in p&&f0(p.error.data)){var B;if(typeof((B=p.error.data)===null||B===void 0?void 0:B.httpStatus)==="number")return p.error.data.httpStatus;let Y=qU[p.error.code];return OU(Y)}return 200}));if(w.size!==1)return 207;return w.values().next().value}function dk(D){return OU(D.code)}var _k=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(D,F){function w(J){return F.exports=w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},F.exports.__esModule=!0,F.exports.default=F.exports,w(J)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),HP1=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(D,F){var w=_k().default;function J(p,B){if(w(p)!="object"||!p)return p;var Y=p[Symbol.toPrimitive];if(Y!==void 0){var Q=Y.call(p,B||"default");if(w(Q)!="object")return Q;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(p)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),GP1=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(D,F){var w=_k().default,J=HP1();function p(B){var Y=J(B,"string");return w(Y)=="symbol"?Y:Y+""}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),c5=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(D,F){var w=GP1();function J(p,B,Y){return(B=w(B))in p?Object.defineProperty(p,B,{value:Y,enumerable:!0,configurable:!0,writable:!0}):p[B]=Y,p}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),G6=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(D,F){var w=c5();function J(B,Y){var Q=Object.keys(B);if(Object.getOwnPropertySymbols){var X=Object.getOwnPropertySymbols(B);Y&&(X=X.filter(function(W){return Object.getOwnPropertyDescriptor(B,W).enumerable})),Q.push.apply(Q,X)}return Q}function p(B){for(var Y=1;Y<arguments.length;Y++){var Q=arguments[Y]!=null?arguments[Y]:{};Y%2?J(Object(Q),!0).forEach(function(X){w(B,X,Q[X])}):Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(Q)):J(Object(Q)).forEach(function(X){Object.defineProperty(B,X,Object.getOwnPropertyDescriptor(Q,X))})}return B}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),Rk=y1(G6(),1);function _8(D){let{path:F,error:w,config:J}=D,{code:p}=D.error,B={message:w.message,code:y5[p],data:{code:p,httpStatus:dk(w)}};if(J.isDev&&typeof D.error.stack==="string")B.data.stack=D.error.stack;if(typeof F==="string")B.data.path=F;return J.errorFormatter(Rk.default(Rk.default({},D),{},{shape:B}))}var l5=({shape:D})=>{return D},jk=y1(c5(),1),uP1=class extends Error{};function mk(D){if(D instanceof Error)return D;let F=typeof D;if(F==="undefined"||F==="function"||D===null)return;if(F!=="object")return new Error(String(D));if(f0(D))return Object.assign(new uP1,D);return}function D6(D){if(D instanceof K0)return D;if(D instanceof Error&&D.name==="TRPCError")return D;let F=new K0({code:"INTERNAL_SERVER_ERROR",cause:D});if(D instanceof Error&&D.stack)F.stack=D.stack;return F}var K0=class extends Error{constructor(D){var F,w,J;let p=mk(D.cause),B=(F=(w=D.message)!==null&&w!==void 0?w:p===null||p===void 0?void 0:p.message)!==null&&F!==void 0?F:D.code;super(B,{cause:p});jk.default(this,"cause",void 0),jk.default(this,"code",void 0),this.code=D.code,this.name="TRPCError",(J=this.cause)!==null&&J!==void 0||(this.cause=p)}},j8=y1(G6(),1);function RU(D){if("input"in D)return D;return{input:D,output:D}}var g5={input:{serialize:(D)=>D,deserialize:(D)=>D},output:{serialize:(D)=>D,deserialize:(D)=>D}};function fk(D,F){if("error"in F)return j8.default(j8.default({},F),{},{error:D.transformer.output.serialize(F.error)});if("data"in F.result)return j8.default(j8.default({},F),{},{result:j8.default(j8.default({},F.result),{},{data:D.transformer.output.serialize(F.result.data)})});return F}function a5(D,F){return Array.isArray(F)?F.map((w)=>fk(D,w)):fk(D,F)}function NP1(D,F){if("error"in D){let J=F.deserialize(D.error);return{ok:!1,error:j8.default(j8.default({},D),{},{error:J})}}return{ok:!0,result:j8.default(j8.default({},D.result),(!D.result.type||D.result.type==="data")&&{type:"data",data:F.deserialize(D.result.data)})}}var TU=class extends Error{constructor(){super("Unable to transform response from server")}};function PU(D,F){let w;try{w=NP1(D,F)}catch(J){throw new TU}if(!w.ok&&(!f0(w.error.error)||typeof w.error.error.code!=="number"))throw new TU;if(w.ok&&!f0(w.result))throw new TU;return w}var $E=y1(G6(),1),zP1=Symbol("lazy");function UP1(D){let F=Symbol(),w=F;return()=>{if(w===F)w=D();return w}}function ZP1(D){return typeof D==="function"&&zP1 in D}function $P1(D){return f0(D)&&f0(D._def)&&"router"in D._def}var MP1={_ctx:null,_errorShape:null,_meta:null,queries:{},mutations:{},subscriptions:{},errorFormatter:l5,transformer:g5},qP1=["then","call","apply"];function ME(D){function F(w){let J=new Set(Object.keys(w).filter((H)=>qP1.includes(H)));if(J.size>0)throw new Error("Reserved words used in `router({})` call: "+Array.from(J).join(", "));let p=oJ({}),B=oJ({});function Y(H){return{ref:H.ref,load:UP1(async()=>{let N=await H.ref(),u=[...H.path,H.key],G=u.join(".");H.aggregate[H.key]=Q(N._def.record,u),delete B[G];for(let[U,Z]of Object.entries(N._def.lazy)){let C=[...u,U].join(".");B[C]=Y({ref:Z.ref,path:u,key:U,aggregate:H.aggregate[H.key]})}})}}function Q(H,N=[]){let u=oJ({});for(let[G,U]of Object.entries(H!==null&&H!==void 0?H:{})){if(ZP1(U)){B[[...N,G].join(".")]=Y({path:N,ref:U,key:G,aggregate:u});continue}if($P1(U)){u[G]=Q(U._def.record,[...N,G]);continue}if(!AP1(U)){u[G]=Q(U,[...N,G]);continue}let Z=[...N,G].join(".");if(p[Z])throw new Error(`Duplicate key: ${Z}`);p[Z]=U,u[G]=U}return u}let X=Q(w),W=$E.default($E.default({_config:D,router:!0,procedures:p,lazy:B},MP1),{},{record:X});return $E.default($E.default({},X),{},{_def:W,createCaller:qE()({_def:W})})}return F}function AP1(D){return typeof D==="function"}async function iD(D,F){let{_def:w}=D,J=w.procedures[F];while(!J){let p=Object.keys(w.lazy).find((Y)=>F.startsWith(Y));if(!p)return null;await w.lazy[p].load(),J=w.procedures[F]}return J}function qE(){return function D(F){let{_def:w}=F;return function J(p,B){return sJ(async({path:Y,args:Q})=>{let X=Y.join(".");if(Y.length===1&&Y[0]==="_def")return w;let W=await iD(F,X),K=void 0;try{if(!W)throw new K0({code:"NOT_FOUND",message:`No procedure found on path "${Y}"`});return K=nJ(p)?await Promise.resolve(p()):p,await W({path:X,getRawInput:async()=>Q[0],ctx:K,type:W._def.type,signal:B===null||B===void 0?void 0:B.signal})}catch(u){var H,N;throw B===null||B===void 0||(H=B.onError)===null||H===void 0||H.call(B,{ctx:K,error:D6(u),input:Q[0],path:X,type:(N=W===null||W===void 0?void 0:W._def.type)!==null&&N!==void 0?N:"unknown"}),u}})}}}function xU(...D){var F;let w=aJ({},...D.map((Y)=>Y._def.record)),J=D.reduce((Y,Q)=>{if(Q._def._config.errorFormatter&&Q._def._config.errorFormatter!==l5){if(Y!==l5&&Y!==Q._def._config.errorFormatter)throw new Error("You seem to have several error formatters");return Q._def._config.errorFormatter}return Y},l5),p=D.reduce((Y,Q)=>{if(Q._def._config.transformer&&Q._def._config.transformer!==g5){if(Y!==g5&&Y!==Q._def._config.transformer)throw new Error("You seem to have several transformers");return Q._def._config.transformer}return Y},g5);return ME({errorFormatter:J,transformer:p,isDev:D.every((Y)=>Y._def._config.isDev),allowOutsideOfServer:D.every((Y)=>Y._def._config.allowOutsideOfServer),isServer:D.every((Y)=>Y._def._config.isServer),$types:(F=D[0])===null||F===void 0?void 0:F._def._config.$types})(w)}var CP1=Symbol();function vU(D){return Array.isArray(D)&&D[2]===CP1}function OP1(D){try{if(D===null)return null;if(!f0(D))throw new Error("Expected object");let F=Object.entries(D).filter(([w,J])=>typeof J!=="string");if(F.length>0)throw new Error(`Expected connectionParams to be string values. Got ${F.map(([w,J])=>`${w}: ${typeof J}`).join(", ")}`);return D}catch(F){throw new K0({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:F})}}function LP1(D){let F;try{F=JSON.parse(D)}catch(w){throw new K0({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:w})}return OP1(F)}var kk=y1(G6(),1);function kU(D){let F=null,w=Symbol.for("@trpc/server/http/memo"),J=w;return{read:async()=>{var p;if(J!==w)return J;return(p=F)!==null&&p!==void 0||(F=D().catch((B)=>{if(B instanceof K0)throw B;throw new K0({code:"BAD_REQUEST",message:B instanceof Error?B.message:"Invalid input",cause:B})})),J=await F,F=null,J},result:()=>{return J!==w?J:void 0}}}var rk={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("application/json"))},async parse(D){var F;let{req:w}=D,J=D.searchParams.get("batch")==="1",p=J?D.path.split(","):[D.path],B=kU(async()=>{let H=void 0;if(w.method==="GET"){let u=D.searchParams.get("input");if(u)H=JSON.parse(u)}else H=await w.json();if(H===void 0)return{};if(!J)return{0:D.router._def._config.transformer.input.deserialize(H)};if(!f0(H))throw new K0({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});let N={};for(let u of p.keys()){let G=H[u];if(G!==void 0)N[u]=D.router._def._config.transformer.input.deserialize(G)}return N}),Y=await Promise.all(p.map(async(H,N)=>{let u=await iD(D.router,H);return{path:H,procedure:u,getRawInput:async()=>{let U=(await B.read())[N];if((u===null||u===void 0?void 0:u._def.type)==="subscription"){var Z,C;let L=(Z=(C=D.headers.get("last-event-id"))!==null&&C!==void 0?C:D.searchParams.get("lastEventId"))!==null&&Z!==void 0?Z:D.searchParams.get("Last-Event-Id");if(L)if(f0(U))U=kk.default(kk.default({},U),{},{lastEventId:L});else{var q;(q=U)!==null&&q!==void 0||(U={lastEventId:L})}}return U},result:()=>{var G;return(G=B.result())===null||G===void 0?void 0:G[N]}}})),Q=new Set(Y.map((H)=>{var N;return(N=H.procedure)===null||N===void 0?void 0:N._def.type}).filter(Boolean));if(Q.size>1)throw new K0({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(Q).join(", ")}`});let X=(F=Q.values().next().value)!==null&&F!==void 0?F:"unknown",W=D.searchParams.get("connectionParams");return{isBatchCall:J,accept:w.headers.get("trpc-accept"),calls:Y,type:X,connectionParams:W===null?null:LP1(W),signal:w.signal,url:D.url}}},TP1={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("multipart/form-data"))},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new K0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});let w=kU(async()=>{return await F.formData()}),J=await iD(D.router,D.path);return{accept:null,calls:[{path:D.path,getRawInput:w.read,result:w.result,procedure:J}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},RP1={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("application/octet-stream"))},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new K0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});let w=kU(async()=>{return F.body});return{calls:[{path:D.path,getRawInput:w.read,result:w.result,procedure:await iD(D.router,D.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},PP1=[rk,TP1,RP1];function xP1(D){let F=PP1.find((w)=>w.isMatch(D));if(F)return F;if(!F&&D.method==="GET")return rk;throw new K0({code:"UNSUPPORTED_MEDIA_TYPE",message:D.headers.has("content-type")?`Unsupported content-type "${D.headers.get("content-type")}`:"Missing content-type header"})}async function vP1(D){return await xP1(D.req).parse(D)}function LE(D){return f0(D)&&D.name==="AbortError"}function ek(D="AbortError"){throw new DOMException(D,"AbortError")}var AE=y1(c5(),1),Db,IU=new WeakMap,IP1=()=>{};Db=Symbol.toStringTag;var TE=class D{constructor(F){if(AE.default(this,"promise",void 0),AE.default(this,"subscribers",[]),AE.default(this,"settlement",null),AE.default(this,Db,"Unpromise"),typeof F==="function")this.promise=new Promise(F);else this.promise=F;let w=this.promise.then((J)=>{let{subscribers:p}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:J},p===null||p===void 0||p.forEach(({resolve:B})=>{B(J)})});if("catch"in w)w.catch((J)=>{let{subscribers:p}=this;this.subscribers=null,this.settlement={status:"rejected",reason:J},p===null||p===void 0||p.forEach(({reject:B})=>{B(J)})})}subscribe(){let F,w,{settlement:J}=this;if(J===null){if(this.subscribers===null)throw new Error("Unpromise settled but still has subscribers");let p=dP1();this.subscribers=_P1(this.subscribers,p),F=p.promise,w=()=>{if(this.subscribers!==null)this.subscribers=fP1(this.subscribers,p)}}else{let{status:p}=J;if(p==="fulfilled")F=Promise.resolve(J.value);else F=Promise.reject(J.reason);w=IP1}return Object.assign(F,{unsubscribe:w})}then(F,w){let J=this.subscribe(),{unsubscribe:p}=J;return Object.assign(J.then(F,w),{unsubscribe:p})}catch(F){let w=this.subscribe(),{unsubscribe:J}=w;return Object.assign(w.catch(F),{unsubscribe:J})}finally(F){let w=this.subscribe(),{unsubscribe:J}=w;return Object.assign(w.finally(F),{unsubscribe:J})}static proxy(F){let w=D.getSubscribablePromise(F);return typeof w!=="undefined"?w:D.createSubscribablePromise(F)}static createSubscribablePromise(F){let w=new D(F);return IU.set(F,w),IU.set(w,w),w}static getSubscribablePromise(F){return IU.get(F)}static resolve(F){let w=typeof F==="object"&&F!==null&&"then"in F&&typeof F.then==="function"?F:Promise.resolve(F);return D.proxy(w).subscribe()}static async any(F){let J=(Array.isArray(F)?F:[...F]).map(D.resolve);try{return await Promise.any(J)}finally{J.forEach(({unsubscribe:p})=>{p()})}}static async race(F){let J=(Array.isArray(F)?F:[...F]).map(D.resolve);try{return await Promise.race(J)}finally{J.forEach(({unsubscribe:p})=>{p()})}}static async raceReferences(F){let w=F.map(SP1);try{return await Promise.race(w)}finally{for(let J of w)J.unsubscribe()}}};function SP1(D){return TE.proxy(D).then(()=>[D])}function dP1(){let D,F;return{promise:new Promise((J,p)=>{D=J,F=p}),resolve:D,reject:F}}function _P1(D,F){return[...D,F]}function jP1(D,F){return[...D.slice(0,F),...D.slice(F+1)]}function fP1(D,F){let w=D.indexOf(F);if(w!==-1)return jP1(D,w);return D}var bk,hk,yk,ik;(hk=(bk=Symbol).dispose)!==null&&hk!==void 0||(bk.dispose=Symbol());(ik=(yk=Symbol).asyncDispose)!==null&&ik!==void 0||(yk.asyncDispose=Symbol());function Fb(D,F){let w=D,J=w[Symbol.dispose];return w[Symbol.dispose]=()=>{F(),J===null||J===void 0||J()},w}function wb(D,F){let w=D,J=w[Symbol.asyncDispose];return w[Symbol.asyncDispose]=async()=>{await F(),await(J===null||J===void 0?void 0:J())},w}var RE=Symbol();function bU(D){let F=null;return Fb({start(){if(F)throw new Error("Timer already started");return new Promise((J)=>{F=setTimeout(()=>J(RE),D)})}},()=>{if(F)clearTimeout(F)})}var Dp=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(D,F){function w(){var J=typeof SuppressedError=="function"?SuppressedError:function(Q,X){var W=Error();return W.name="SuppressedError",W.error=Q,W.suppressed=X,W},p={},B=[];function Y(Q,X){if(X!=null){if(Object(X)!==X)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(Q)var W=X[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(W===void 0&&(W=X[Symbol.dispose||Symbol.for("Symbol.dispose")],Q))var K=W;if(typeof W!="function")throw new TypeError("Object is not disposable.");K&&(W=function H(){try{K.call(X)}catch(N){return Promise.reject(N)}}),B.push({v:X,d:W,a:Q})}else Q&&B.push({d:X,a:Q});return X}return{e:p,u:Y.bind(null,!1),a:Y.bind(null,!0),d:function Q(){var X,W=this.e,K=0;function H(){for(;X=B.pop();)try{if(!X.a&&K===1)return K=0,B.push(X),Promise.resolve().then(H);if(X.d){var u=X.d.call(X.v);if(X.a)return K|=2,Promise.resolve(u).then(H,N)}else K|=1}catch(G){return N(G)}if(K===1)return W!==p?Promise.reject(W):Promise.resolve();if(W!==p)throw W}function N(u){return W=W!==p?new J(u,W):u,H()}return H()}}}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),hU=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(D,F){function w(J,p){this.v=J,this.k=p}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),Fp=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(D,F){var w=hU();function J(p){return new w(p,0)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),cD=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(D,F){var w=hU();function J(B){return function(){return new p(B.apply(this,arguments))}}function p(B){var Y,Q;function X(K,H){try{var N=B[K](H),u=N.value,G=u instanceof w;Promise.resolve(G?u.v:u).then(function(U){if(G){var Z=K==="return"?"return":"next";if(!u.k||U.done)return X(Z,U);U=B[Z](U).value}W(N.done?"return":"normal",U)},function(U){X("throw",U)})}catch(U){W("throw",U)}}function W(K,H){switch(K){case"return":Y.resolve({value:H,done:!0});break;case"throw":Y.reject(H);break;default:Y.resolve({value:H,done:!1})}(Y=Y.next)?X(Y.key,Y.arg):Q=null}this._invoke=function(K,H){return new Promise(function(N,u){var G={key:K,arg:H,resolve:N,reject:u,next:null};Q?Q=Q.next=G:(Y=Q=G,X(K,H))})},typeof B.return!="function"&&(this.return=void 0)}p.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},p.prototype.next=function(B){return this._invoke("next",B)},p.prototype.throw=function(B){return this._invoke("throw",B)},p.prototype.return=function(B){return this._invoke("return",B)},F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),Jb=y1(Dp(),1),OE=y1(Fp(),1),pb=y1(cD(),1);function wp(D){let F=D[Symbol.asyncIterator]();if(F[Symbol.asyncDispose])return F;return wb(F,async()=>{var w;await((w=F.return)===null||w===void 0?void 0:w.call(F))})}function mP1(D,F){return _U.apply(this,arguments)}function _U(){return _U=pb.default(function*(D,F){try{var w=Jb.default();let J=w.a(wp(D)),B=w.u(bU(F.maxDurationMs)).start(),Y;while(!0){if(Y=yield OE.default(TE.race([J.next(),B])),Y===RE)ek();if(Y.done)return Y;yield Y.value,Y=null}}catch(J){w.e=J}finally{yield OE.default(w.d())}}),_U.apply(this,arguments)}function kP1(D,F){return jU.apply(this,arguments)}function jU(){return jU=pb.default(function*(D,F){try{var w=Jb.default();let J=w.a(wp(D)),p,B=w.u(bU(F.gracePeriodMs)),Y=F.count,Q=new Promise(()=>{});while(!0){if(p=yield OE.default(TE.race([J.next(),Q])),p===RE)ek();if(p.done)return p.value;if(yield p.value,--Y===0)Q=B.start();p=null}}catch(J){w.e=J}finally{yield OE.default(w.d())}}),jU.apply(this,arguments)}function ck(){let D,F;return{promise:new Promise((J,p)=>{D=J,F=p}),resolve:D,reject:F}}var bP1=y1(Dp(),1),lk=y1(Fp(),1),hP1=y1(cD(),1);function yP1(D,F){let w=D[Symbol.asyncIterator](),J="idle";function p(){J="done",F=()=>{}}function B(){if(J!=="idle")return;J="pending",w.next().then((Q)=>{if(Q.done){J="done",F({status:"return",value:Q.value}),p();return}J="idle",F({status:"yield",value:Q.value})}).catch((Q)=>{F({status:"error",error:Q}),p()})}return{pull:B,destroy:async()=>{var Y;p(),await((Y=w.return)===null||Y===void 0?void 0:Y.call(w))}}}function iP1(){let D="idle",F=ck(),w=[],J=new Set,p=[];function B(Y){if(D!=="pending")return;let Q=yP1(Y,(X)=>{if(D!=="pending")return;switch(X.status){case"yield":p.push([Q,X]);break;case"return":J.delete(Q);break;case"error":p.push([Q,X]),J.delete(Q);break}F.resolve()});J.add(Q),Q.pull()}return{add(Y){switch(D){case"idle":w.push(Y);break;case"pending":B(Y);break;case"done":break}},[Symbol.asyncIterator](){return hP1.default(function*(){try{var Y=bP1.default();if(D!=="idle")throw new Error("Cannot iterate twice");D="pending";let Q=Y.a(wb({},async()=>{D="done";let X=[];if(await Promise.all(Array.from(J.values()).map(async(W)=>{try{await W.destroy()}catch(K){X.push(K)}})),p.length=0,J.clear(),F.resolve(),X.length>0)throw new AggregateError(X)}));while(w.length>0)B(w.shift());while(J.size>0){yield lk.default(F.promise);while(p.length>0){let[X,W]=p.shift();switch(W.status){case"yield":yield W.value,X.pull();break;case"error":throw W.error}}F=ck()}}catch(Q){Y.e=Q}finally{yield lk.default(Y.d())}})()}}}function Bb(D){let F=D[Symbol.asyncIterator]();return new ReadableStream({async cancel(){var w;await((w=F.return)===null||w===void 0?void 0:w.call(F))},async pull(w){let J=await F.next();if(J.done){w.close();return}w.enqueue(J.value)}})}var gk=y1(Dp(),1),ak=y1(Fp(),1),cP1=y1(cD(),1),eJ=Symbol("ping");function Yb(D,F){return fU.apply(this,arguments)}function fU(){return fU=cP1.default(function*(D,F){try{var w=gk.default();let p=w.a(wp(D)),B,Y=p.next();while(!0)try{var J=gk.default();let Q=J.u(bU(F));if(B=yield ak.default(TE.race([Y,Q.start()])),B===RE){yield eJ;continue}if(B.done)return B.value;Y=p.next(),yield B.value,B=null}catch(Q){J.e=Q}finally{J.d()}}catch(p){w.e=p}finally{yield ak.default(w.d())}}),fU.apply(this,arguments)}var Qb=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(D,F){function w(p){var B,Y,Q,X=2;for(typeof Symbol!="undefined"&&(Y=Symbol.asyncIterator,Q=Symbol.iterator);X--;){if(Y&&(B=p[Y])!=null)return B.call(p);if(Q&&(B=p[Q])!=null)return new J(B.call(p));Y="@@asyncIterator",Q="@@iterator"}throw new TypeError("Object is not async iterable")}function J(p){function B(Y){if(Object(Y)!==Y)return Promise.reject(new TypeError(Y+" is not an object."));var Q=Y.done;return Promise.resolve(Y.value).then(function(X){return{value:X,done:Q}})}return J=function Y(Q){this.s=Q,this.n=Q.next},J.prototype={s:null,n:null,next:function Y(){return B(this.n.apply(this.s,arguments))},return:function Y(Q){var X=this.s.return;return X===void 0?Promise.resolve({value:Q,done:!0}):B(X.apply(this.s,arguments))},throw:function Y(Q){var X=this.s.return;return X===void 0?Promise.reject(Q):B(X.apply(this.s,arguments))}},new J(p)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),tJ=y1(Fp(),1),SU=y1(cD(),1),lP1=y1(Dp(),1),gP1=y1(Qb(),1);function aP1(D){return Object.prototype.toString.call(D)==="[object Object]"}var nP1=0,oP1=1,sP1=0,tP1=1,rP1=0,eP1=1,Dx1=2;function Xb(D){return(f0(D)||nJ(D))&&typeof(D===null||D===void 0?void 0:D.then)==="function"&&typeof(D===null||D===void 0?void 0:D.catch)==="function"}var Fx1=class extends Error{constructor(D){super("Max depth reached at path: "+D.join("."));this.path=D}};function wx1(D){return mU.apply(this,arguments)}function mU(){return mU=SU.default(function*(D){let{data:F}=D,w=0,J=0,p=iP1();function B(q){let L=w++,P=q(L);return p.add(P),L}function Y(q,L){return B(function(){var P=SU.default(function*(x){let I=X(L);if(I)q.catch((S)=>{var h;(h=D.onError)===null||h===void 0||h.call(D,{error:S,path:L})}),q=Promise.reject(I);try{let S=yield tJ.default(q);yield[x,sP1,K(S,L)]}catch(S){var k,c;(k=D.onError)===null||k===void 0||k.call(D,{error:S,path:L}),yield[x,tP1,(c=D.formatError)===null||c===void 0?void 0:c.call(D,{error:S,path:L})]}});return function(x){return P.apply(this,arguments)}}())}function Q(q,L){return B(function(){var P=SU.default(function*(x){try{var I=lP1.default();let S=X(L);if(S)throw S;let h=I.a(wp(q));try{while(!0){let b=yield tJ.default(h.next());if(b.done){yield[x,rP1,K(b.value,L)];break}yield[x,eP1,K(b.value,L)]}}catch(b){var k,c;(k=D.onError)===null||k===void 0||k.call(D,{error:b,path:L}),yield[x,Dx1,(c=D.formatError)===null||c===void 0?void 0:c.call(D,{error:b,path:L})]}}catch(S){I.e=S}finally{yield tJ.default(I.d())}});return function(x){return P.apply(this,arguments)}}())}function X(q){if(D.maxDepth&&q.length>D.maxDepth)return new Fx1(q);return null}function W(q,L){if(Xb(q))return[nP1,Y(q,L)];if(i5(q)){if(D.maxDepth&&L.length>=D.maxDepth)throw new Error("Max depth reached");return[oP1,Q(q,L)]}return null}function K(q,L){if(q===void 0)return[[]];let P=W(q,L);if(P)return[[J],[null,...P]];if(!aP1(q))return[[q]];let x={},I=[];for(let[k,c]of Object.entries(q)){let S=W(c,[...L,k]);if(!S){x[k]=c;continue}x[k]=J,I.push([k,...S])}return[[x],...I]}let H={};for(let[q,L]of Object.entries(F))H[q]=K(L,[q]);yield H;let N=p;if(D.pingMs)N=Yb(p,D.pingMs);var u=!1,G=!1,U;try{for(var Z=gP1.default(N),C;u=!(C=yield tJ.default(Z.next())).done;u=!1)yield C.value}catch(q){G=!0,U=q}finally{try{if(u&&Z.return!=null)yield tJ.default(Z.return())}finally{if(G)throw U}}}),mU.apply(this,arguments)}function Jx1(D){let F=Bb(wx1(D)),{serialize:w}=D;if(w)F=F.pipeThrough(new TransformStream({transform(J,p){if(J===eJ)p.enqueue(eJ);else p.enqueue(w(J))}}));return F.pipeThrough(new TransformStream({transform(J,p){if(J===eJ)p.enqueue(" ");else p.enqueue(JSON.stringify(J)+`
569
+ Run `+x1.cyan("npm install -g @director.run/cli");console.log($D(w,{padding:1,borderStyle:"double"})),process.exit(0)}}var A_=z1(dJ(),1);class O1 extends Error{code;props;name="AppError";constructor(D,F,w={}){super(F);this.code=D;this.props=w}}function vX(D){return D instanceof O1}function C_(D){return D instanceof Error&&"statusCode"in D&&A_.isNumber(D.statusCode)}var VE=z1(dJ(),1),KE=z1(Tz(),1),Uk=z1(zk(),1);var IR1=process.env.LOG_LEVEL??(M8()?"silent":"info"),SR1=process.env.LOG_PRETTY!=="false",dR1=process.env.LOG_ERROR_STACK==="true",_R1=KE.default({level:IR1.toLowerCase(),messageKey:"message",timestamp:!0,redact:["transport.headers.Authorization","transport.headers.authorization","transport.env.OPENAPI_MCP_HEADERS","transport.env.SLACK_BOT_TOKEN"],serializers:{error:(D)=>{if(vX(D))return{type:D.name,...VE.pick(D,"message","stack","code","props"),...D.cause?{cause:KE.default.stdSerializers.errWithCause(D)}:{}};let F=KE.default.stdSerializers.errWithCause(D);return dR1?F:VE.omit(F,"stack")}}},SR1?Uk.default({colorize:!0,translateTime:"HH:MM:ss",ignore:"pid,hostname"}):void 0),q1=(D)=>_R1.child({name:D});import WU from"node:fs";import{existsSync as jR1}from"node:fs";import{dirname as fR1}from"node:path";async function HE(D){if(!jR1(D))throw new O1("NOT_FOUND",`file not found at: ${D}`);let F=await WU.promises.readFile(D),w=new TextDecoder().decode(F);return JSON.parse(w)}async function t4(D,F){return await WU.promises.mkdir(fR1(D),{recursive:!0}),WU.promises.writeFile(D,JSON.stringify(F,null,2))}class b5{}import{exec as mR1,execSync as kR1}from"node:child_process";import{existsSync as bR1}from"node:fs";import{homedir as hR1}from"node:os";import yR1 from"node:path";import{promisify as iR1}from"node:util";var Zk=iR1(mR1),bD=q1("os/linux");class KU extends b5{restartApp(D){return bD.warn(`restarting ${D} is not supported on Linux`),Promise.resolve()}async openFileInCode(D){bD.info(`opening ${D}`),await Zk(`code "${D}"`)}isCommandInPath(D){try{return kR1(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(F){return!1}}isAppInstalled(D){switch(D){case"Claude":return bD.warn(`${D} is not supported on Linux`),!1;case"Cursor":return bD.warn(`${D} is not supported on Linux, yet`),!1;case"Visual Studio Code":return this.isCommandInPath("code");default:throw new O1("INVALID_ARGUMENT",`unknown app: ${D}`)}}isFilePresent(D){return bR1(D)}async openUrl(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`;try{await Zk(`xdg-open "${F}"`)}catch(w){throw new Error(`Failed to open URL: ${w instanceof Error?w.message:"Unknown error"}`)}}getConfigFileForApp(D){switch(D){case"Claude":return bD.warn(`${D} is not supported on Linux, yet`),"";case"Cursor":return bD.warn(`${D} is not supported on Linux, yet`),"";case"Visual Studio Code":return yR1.join(hR1(),".config/Code/User/settings.json")}}}import{exec as cR1,execSync as VU}from"node:child_process";import{existsSync as lR1}from"node:fs";import{homedir as HU}from"node:os";import GU from"node:path";import{promisify as gR1}from"node:util";function hD(D){return new Promise((F)=>setTimeout(F,D))}var GE=gR1(cR1),uE=q1("os/macos");class uU extends b5{async restartApp(D){if(uE.info(`restarting ${D}...`),!this.isAppRunning(D)){uE.info(`${D} is not running, skipping restart`);return}await GE(`osascript -e 'tell application "${D}" to quit'`),await hD(2000),await GE(`open -a ${D}`),uE.info(`${D} has been restarted`)}async openFileInCode(D){uE.info(`opening ${D}`),await GE(`code "${D}"`)}isCommandInPath(D){try{return VU(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(F){return!1}}isAppInstalled(D){try{let F;switch(D){case"Claude":F="Claude";break;case"Cursor":F="Cursor";break;case"Visual Studio Code":F="Visual Studio Code";break;default:throw new O1("INVALID_ARGUMENT",`unknown app: ${D}`)}return VU(`mdfind "kMDItemDisplayName == '${F}'"`,{stdio:"pipe",encoding:"utf8"}).trim().length>0}catch(F){return!1}}isFilePresent(D){return lR1(D)}isAppRunning(D){try{return VU(`pgrep -x "${D}"`,{stdio:"pipe"}),!0}catch(F){return!1}}async openUrl(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`;try{await GE(`open "${F}"`)}catch(w){throw new Error(`Failed to open URL: ${w instanceof Error?w.message:"Unknown error"}`)}}getConfigFileForApp(D){switch(D){case"Claude":return GU.join(HU(),"Library/Application Support/Claude/claude_desktop_config.json");case"Cursor":return GU.join(HU(),".cursor/mcp.json");case"Visual Studio Code":return GU.join(HU(),"Library/Application Support/Code/User/settings.json")}}}class NU extends b5{restartApp(D){return Promise.resolve()}openFileInCode(D){return Promise.resolve()}isCommandInPath(D){return!1}isAppInstalled(D){return!1}isFilePresent(D){return!1}isAppRunning(D){return!1}openUrl(D){return Promise.resolve()}getConfigFileForApp(D){return""}}var NE,aR1=q1("os");if(process.platform==="darwin")NE=new uU;else if(process.platform==="linux")NE=new KU;else aR1.warn(`unsupported platform: ${process.platform}, automatic client configuration will not work`),NE=new NU;var O2=NE;var $k="director__";class h5{config;isInitialized;logger;configPath;name;constructor(D){this.configPath=D.configPath,this.isInitialized=!1,this.name=D.name,this.logger=q1(`client-configurator/${this.name}`)}async initialize(){if(this.isInitialized&&this.config)return;if(this.logger.info("initializing"),!await this.isClientPresent())throw new O1("COMMAND_NOT_FOUND",`${this.name} doesn't appear to be installed`,{name:this.name,configPath:this.configPath});if(!await this.isClientConfigPresent())await this.createConfig();try{this.config=await HE(this.configPath),this.isInitialized=!0}catch(D){if(D instanceof SyntaxError)throw new O1("JSON_PARSE_ERROR",`syntax error in config file: ${D.message}`,{path:this.configPath});else throw D}}async getStatus(){return{name:this.name,installed:await this.isClientPresent(),configExists:await this.isClientConfigPresent(),configPath:this.configPath}}createServerConfigKey(D){return`${$k}${D}`}isManagedConfigKey(D){return D.startsWith($k)}}class zU extends h5{async isClientPresent(){return await O2.isAppInstalled("Claude")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Claude"),name:"claude"})}async initialize(){if(await super.initialize(),!this.config?.mcpServers)await this.updateConfig({...this.config,mcpServers:{}})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcpServers?.[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcpServers:{...this.config?.mcpServers}};delete F.mcpServers?.[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcpServers:{...this.config?.mcpServers}};F.mcpServers[this.createServerConfigKey(D.name)]={command:"npx",args:["-y","@director.run/cli@latest","http2stdio",D.url],env:{LOG_LEVEL:"silent"}},await this.updateConfig(F)}async reset(){await this.initialize(),this.logger.info("purging claude config");let D={mcpServers:{...this.config?.mcpServers}};D.mcpServers={},await this.updateConfig(D)}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcpServers??{}).filter(([D])=>this.isManagedConfigKey(D)).map(([D,F])=>({name:D,url:F.args[3]}))}async openConfig(){this.logger.info("opening claude config"),await O2.openFileInCode(this.configPath)}async restart(){if(!M8())this.logger.info("restarting claude"),await O2.restartApp("Claude");else this.logger.warn("skipping restart of claude in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`),await this.restart()}async updateConfig(D){this.config=D,this.logger.info(`writing config to ${this.configPath}`),await t4(this.configPath,this.config),await this.restart()}async createConfig(){this.logger.info("initializing claude config"),await t4(this.configPath,{mcpServers:{}})}}var nR1=A.object({command:A.string().describe('The command to execute (e.g., "bun", "node")'),args:A.array(A.string()).describe("Command line arguments"),env:A.record(A.string()).optional().describe("Environment variables")}),dV0=A.object({mcpServers:A.record(A.string(),nR1).describe("Map of MCP server configurations")});class UU extends h5{async isClientPresent(){return await O2.isAppInstalled("Cursor")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Cursor"),name:"cursor"})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcpServers?.[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcpServers:{...this.config?.mcpServers??{}}};delete F.mcpServers[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcpServers:{...this.config?.mcpServers??{}}};F.mcpServers[this.createServerConfigKey(D.name)]={url:D.url},await this.updateConfig(F)}async restart(){if(await this.initialize(),!M8())this.logger.info("restarting cursor"),await O2.restartApp("Cursor");else this.logger.warn("skipping restart of cursor in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`);let F=this.config?.mcpServers[this.createServerConfigKey(D)]?.url;if(!F)throw new O1("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await hD(1000),await this.install({name:D,url:F})}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcpServers??{}).map(([D,F])=>({name:D,url:F.url}))}async initialize(){if(await super.initialize(),!this.config?.mcpServers)await this.updateConfig({...this.config,mcpServers:{}})}async openConfig(){this.logger.info("opening cursor config"),await O2.openFileInCode(this.configPath)}async reset(){await this.initialize(),this.logger.info("purging cursor config");let D={mcpServers:{}};await this.updateConfig(D)}async updateConfig(D){this.logger.info(`writing config to ${this.configPath}`),await t4(this.configPath,D),this.config=D}async createConfig(){this.logger.info("initializing cursor config"),await t4(this.configPath,{mcpServers:{}})}}import oR1 from"node:fs";import sR1 from"node:path";class ZU extends h5{async isClientPresent(){return await O2.isAppInstalled("Visual Studio Code")}async isClientConfigPresent(){return await O2.isFilePresent(this.configPath)}constructor(D){super({configPath:D.configPath||O2.getConfigFileForApp("Visual Studio Code"),name:"vscode"})}async initialize(){if(await super.initialize(),!this.config?.mcp?.servers)await this.updateConfig({...this.config,mcp:{servers:{}}})}async isInstalled(D){if(!await this.isClientPresent())return!1;return await this.initialize(),this.config?.mcp.servers[this.createServerConfigKey(D)]!==void 0}async uninstall(D){if(await this.initialize(),!this.isInstalled(D))throw new O1("NOT_FOUND",`server '${D}' is not installed`);this.logger.info(`uninstalling ${D}`);let F={mcp:{servers:{...this.config?.mcp?.servers??{}}}};delete F.mcp.servers[this.createServerConfigKey(D)],await this.updateConfig(F)}async install(D){if(await this.initialize(),await this.isInstalled(D.name))throw new O1("BAD_REQUEST",`server '${D.name}' is already installed`);this.logger.info(`installing ${D.name}`);let F={mcp:{servers:{...this.config?.mcp?.servers??{}}}};F.mcp.servers[this.createServerConfigKey(D.name)]={url:D.url},await this.updateConfig(F)}async restart(){if(await this.initialize(),!M8())this.logger.info("restarting vscode"),await O2.restartApp("Visual Studio Code");else this.logger.warn("skipping restart of vscode in test environment")}async reload(D){await this.initialize(),this.logger.info(`reloading ${D}`);let F=this.config?.mcp?.servers[this.createServerConfigKey(D)]?.url;if(!F)throw new O1("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await hD(1000),await this.install({name:D,url:F})}async list(){return await this.initialize(),this.logger.info("listing servers"),Object.entries(this.config?.mcp.servers??{}).filter(([D])=>this.isManagedConfigKey(D)).map(([D,F])=>({name:D,url:F.url}))}async openConfig(){this.logger.info("opening vscode config"),await O2.openFileInCode(this.configPath)}async reset(){await this.initialize(),this.logger.info("purging vscode config");let D={mcp:{servers:{}}};await this.updateConfig(D)}async updateConfig(D){this.logger.info(`writing config to ${this.configPath}`);let F=sR1.dirname(this.configPath);await oR1.promises.mkdir(F,{recursive:!0}),await t4(this.configPath,D),this.config=D}async createConfig(){this.logger.info("initializing vscode config"),await t4(this.configPath,{mcp:{servers:{}}})}}var tR1=q1("client-configurator"),cJ;((J)=>{J.Claude="claude";J.Cursor="cursor";J.VSCode="vscode"})(cJ||={});function y2(D,F={}){switch(D){case"claude":return new zU(F);case"cursor":return new UU(F);case"vscode":return new ZU(F);default:throw new O1("BAD_REQUEST",`Client ${D} is not supported`)}}async function zE(){let D=await Promise.all(lJ().map((F)=>y2(F)));for(let F of D)if(console.log("resetting",F.name),await F.isClientPresent())await F.reset();else console.log("client not present:",F.name)}async function yD(){return await Promise.all(lJ().map((D)=>y2(D)).map((D)=>D.getStatus()))}function lJ(){return Object.values(cJ)}async function Mk(D){let F=await Promise.all(lJ().map((J)=>y2(J))),w={["claude"]:!1,["cursor"]:!1,["vscode"]:!1};return await Promise.all(F.map(async(J)=>{try{let p=await J.isInstalled(D);w[J.name]=p}catch(p){tR1.error({error:p,message:`error checking ${D} installed status for ${J.name}`}),w[J.name]=!1}})),w}var{create:rR1,defineProperty:qk,getOwnPropertyDescriptor:eR1,getOwnPropertyNames:Ak,getPrototypeOf:DP1}=Object,FP1=Object.prototype.hasOwnProperty,r4=(D,F)=>function(){return F||D[Ak(D)[0]]((F={exports:{}}).exports,F),F.exports},wP1=(D,F,w,J)=>{if(F&&typeof F==="object"||typeof F==="function"){for(var p=Ak(F),B=0,Y=p.length,Q;B<Y;B++)if(Q=p[B],!FP1.call(D,Q)&&Q!==w)qk(D,Q,{get:((X)=>F[X]).bind(null,Q),enumerable:!(J=eR1(F,Q))||J.enumerable})}return D},$0=(D,F,w)=>(w=D!=null?rR1(DP1(D)):{},wP1(F||!D||!D.__esModule?qk(w,"default",{value:D,enumerable:!0}):w,D)),Ck=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(D,F){function w(J){return F.exports=w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},F.exports.__esModule=!0,F.exports.default=F.exports,w(J)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),JP1=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(D,F){var w=Ck().default;function J(p,B){if(w(p)!="object"||!p)return p;var Y=p[Symbol.toPrimitive];if(Y!==void 0){var Q=Y.call(p,B||"default");if(w(Q)!="object")return Q;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(p)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),pP1=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(D,F){var w=Ck().default,J=JP1();function p(B){var Y=J(B,"string");return w(Y)=="symbol"?Y:Y+""}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),S8=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(D,F){var w=pP1();function J(p,B,Y){return(B=w(B))in p?Object.defineProperty(p,B,{value:Y,enumerable:!0,configurable:!0,writable:!0}):p[B]=Y,p}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),L2=r4({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(D,F){var w=S8();function J(B,Y){var Q=Object.keys(B);if(Object.getOwnPropertySymbols){var X=Object.getOwnPropertySymbols(B);Y&&(X=X.filter(function(W){return Object.getOwnPropertyDescriptor(B,W).enumerable})),Q.push.apply(Q,X)}return Q}function p(B){for(var Y=1;Y<arguments.length;Y++){var Q=arguments[Y]!=null?arguments[Y]:{};Y%2?J(Object(Q),!0).forEach(function(X){w(B,X,Q[X])}):Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(Q)):J(Object(Q)).forEach(function(X){Object.defineProperty(B,X,Object.getOwnPropertyDescriptor(Q,X))})}return B}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}});function gJ(D){return typeof D==="object"&&D!==null&&"subscribe"in D}function d8(D){let F={subscribe(w){let J=null,p=!1,B=!1,Y=!1;function Q(){if(J===null){Y=!0;return}if(B)return;if(B=!0,typeof J==="function")J();else if(J)J.unsubscribe()}if(J=D({next(X){var W;if(p)return;(W=w.next)===null||W===void 0||W.call(w,X)},error(X){var W;if(p)return;p=!0,(W=w.error)===null||W===void 0||W.call(w,X),Q()},complete(){var X;if(p)return;p=!0,(X=w.complete)===null||X===void 0||X.call(w),Q()}}),Y)Q();return{unsubscribe:Q}},pipe(...w){return w.reduce(BP1,F)}};return F}function BP1(D,F){return F(D)}function $U(D){let F=new AbortController;return new Promise((J,p)=>{let B=!1;function Y(){if(B)return;B=!0,Q.unsubscribe()}F.signal.addEventListener("abort",()=>{p(F.signal.reason)});let Q=D.subscribe({next(X){B=!0,J(X),Y()},error(X){p(X)},complete(){F.abort(),Y()}})})}function YP1(D,F){let w=null,J=()=>{w===null||w===void 0||w.unsubscribe(),w=null,F.removeEventListener("abort",J)};return new ReadableStream({start(p){if(w=D.subscribe({next(B){p.enqueue({ok:!0,value:B})},error(B){p.enqueue({ok:!1,error:B}),p.close()},complete(){p.close()}}),F.aborted)J();else F.addEventListener("abort",J,{once:!0})},cancel(){J()}})}function UE(D,F){let J=YP1(D,F).getReader(),p={async next(){let B=await J.read();if(B.done)return{value:void 0,done:!0};let{value:Y}=B;if(!Y.ok)throw Y.error;return{value:Y.value,done:!1}},async return(){return await J.cancel(),{value:void 0,done:!0}}};return{[Symbol.asyncIterator](){return p}}}function MU(D){return(F)=>{let w=0,J=null,p=[];function B(){if(J)return;J=F.subscribe({next(Q){for(let W of p){var X;(X=W.next)===null||X===void 0||X.call(W,Q)}},error(Q){for(let W of p){var X;(X=W.error)===null||X===void 0||X.call(W,Q)}},complete(){for(let X of p){var Q;(Q=X.complete)===null||Q===void 0||Q.call(X)}}})}function Y(){if(w===0&&J){let Q=J;J=null,Q.unsubscribe()}}return d8((Q)=>{return w++,p.push(Q),B(),{unsubscribe(){w--,Y();let X=p.findIndex((W)=>W===Q);if(X>-1)p.splice(X,1)}}})}}var EH0=Symbol();function ZE(D){let F=D,w=[],J=(Y)=>{if(F!==void 0)Y.next(F);w.push(Y)},p=(Y)=>{w.splice(w.indexOf(Y),1)},B=d8((Y)=>{return J(Y),()=>{p(Y)}});return B.next=(Y)=>{if(F===Y)return;F=Y;for(let Q of w)Q.next(Y)},B.get=()=>F,B}function Ok(D){return d8((F)=>{function w(p=0,B=D.op){let Y=D.links[p];if(!Y)throw new Error("No more links to execute - did you forget to add an ending link?");return Y({op:B,next(X){return w(p+1,X)}})}return w().subscribe(F)})}var y5={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,PAYMENT_REQUIRED:-32002,FORBIDDEN:-32003,NOT_FOUND:-32004,METHOD_NOT_SUPPORTED:-32005,TIMEOUT:-32008,CONFLICT:-32009,PRECONDITION_FAILED:-32012,PAYLOAD_TOO_LARGE:-32013,UNSUPPORTED_MEDIA_TYPE:-32015,UNPROCESSABLE_CONTENT:-32022,TOO_MANY_REQUESTS:-32029,CLIENT_CLOSED_REQUEST:-32099},qU={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-32002]:"PAYMENT_REQUIRED",[-32003]:"FORBIDDEN",[-32004]:"NOT_FOUND",[-32005]:"METHOD_NOT_SUPPORTED",[-32008]:"TIMEOUT",[-32009]:"CONFLICT",[-32012]:"PRECONDITION_FAILED",[-32013]:"PAYLOAD_TOO_LARGE",[-32015]:"UNSUPPORTED_MEDIA_TYPE",[-32022]:"UNPROCESSABLE_CONTENT",[-32029]:"TOO_MANY_REQUESTS",[-32099]:"CLIENT_CLOSED_REQUEST"},Lk=[y5.BAD_GATEWAY,y5.SERVICE_UNAVAILABLE,y5.GATEWAY_TIMEOUT,y5.INTERNAL_SERVER_ERROR];function aJ(D,...F){let w=Object.assign(Object.create(null),D);for(let J of F)for(let p in J){if(p in w&&w[p]!==J[p])throw new Error(`Duplicate key ${p}`);w[p]=J[p]}return w}function f0(D){return!!D&&!Array.isArray(D)&&typeof D==="object"}function nJ(D){return typeof D==="function"}function oJ(D){return Object.assign(Object.create(null),D)}var QP1=typeof Symbol==="function"&&!!Symbol.asyncIterator;function i5(D){return QP1&&f0(D)&&Symbol.asyncIterator in D}var e4=(D)=>D();function AU(D){return D}var{create:XP1,defineProperty:Pk,getOwnPropertyDescriptor:EP1,getOwnPropertyNames:xk,getPrototypeOf:WP1}=Object,KP1=Object.prototype.hasOwnProperty,H6=(D,F)=>function(){return F||D[xk(D)[0]]((F={exports:{}}).exports,F),F.exports},VP1=(D,F,w,J)=>{if(F&&typeof F==="object"||typeof F==="function"){for(var p=xk(F),B=0,Y=p.length,Q;B<Y;B++)if(Q=p[B],!KP1.call(D,Q)&&Q!==w)Pk(D,Q,{get:((X)=>F[X]).bind(null,Q),enumerable:!(J=EP1(F,Q))||J.enumerable})}return D},y1=(D,F,w)=>(w=D!=null?XP1(WP1(D)):{},VP1(F||!D||!D.__esModule?Pk(w,"default",{value:D,enumerable:!0}):w,D)),vk=()=>{},Tk=(D)=>{if(Object.freeze)Object.freeze(D)};function Ik(D,F,w){var J;let p=F.join(".");return(J=w[p])!==null&&J!==void 0||(w[p]=new Proxy(vk,{get(B,Y){if(typeof Y!=="string"||Y==="then")return;return Ik(D,[...F,Y],w)},apply(B,Y,Q){let X=F[F.length-1],W={args:Q,path:F};if(X==="call")W={args:Q.length>=2?[Q[1]]:[],path:F.slice(0,-1)};else if(X==="apply")W={args:Q.length>=2?Q[1]:[],path:F.slice(0,-1)};return Tk(W.args),Tk(W.path),D(W)}})),w[p]}var sJ=(D)=>Ik(D,[],Object.create(null)),CU=(D)=>{return new Proxy(vk,{get(F,w){if(w==="then")return;return D(w)}})},Sk={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,TIMEOUT:408,CONFLICT:409,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504};function OU(D){var F;return(F=Sk[D])!==null&&F!==void 0?F:500}function LU(D){let F=Array.isArray(D)?D:[D],w=new Set(F.map((p)=>{if("error"in p&&f0(p.error.data)){var B;if(typeof((B=p.error.data)===null||B===void 0?void 0:B.httpStatus)==="number")return p.error.data.httpStatus;let Y=qU[p.error.code];return OU(Y)}return 200}));if(w.size!==1)return 207;return w.values().next().value}function dk(D){return OU(D.code)}var _k=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(D,F){function w(J){return F.exports=w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},F.exports.__esModule=!0,F.exports.default=F.exports,w(J)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),HP1=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(D,F){var w=_k().default;function J(p,B){if(w(p)!="object"||!p)return p;var Y=p[Symbol.toPrimitive];if(Y!==void 0){var Q=Y.call(p,B||"default");if(w(Q)!="object")return Q;throw new TypeError("@@toPrimitive must return a primitive value.")}return(B==="string"?String:Number)(p)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),GP1=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(D,F){var w=_k().default,J=HP1();function p(B){var Y=J(B,"string");return w(Y)=="symbol"?Y:Y+""}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),c5=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(D,F){var w=GP1();function J(p,B,Y){return(B=w(B))in p?Object.defineProperty(p,B,{value:Y,enumerable:!0,configurable:!0,writable:!0}):p[B]=Y,p}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),G6=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(D,F){var w=c5();function J(B,Y){var Q=Object.keys(B);if(Object.getOwnPropertySymbols){var X=Object.getOwnPropertySymbols(B);Y&&(X=X.filter(function(W){return Object.getOwnPropertyDescriptor(B,W).enumerable})),Q.push.apply(Q,X)}return Q}function p(B){for(var Y=1;Y<arguments.length;Y++){var Q=arguments[Y]!=null?arguments[Y]:{};Y%2?J(Object(Q),!0).forEach(function(X){w(B,X,Q[X])}):Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(Q)):J(Object(Q)).forEach(function(X){Object.defineProperty(B,X,Object.getOwnPropertyDescriptor(Q,X))})}return B}F.exports=p,F.exports.__esModule=!0,F.exports.default=F.exports}}),Rk=y1(G6(),1);function _8(D){let{path:F,error:w,config:J}=D,{code:p}=D.error,B={message:w.message,code:y5[p],data:{code:p,httpStatus:dk(w)}};if(J.isDev&&typeof D.error.stack==="string")B.data.stack=D.error.stack;if(typeof F==="string")B.data.path=F;return J.errorFormatter(Rk.default(Rk.default({},D),{},{shape:B}))}var l5=({shape:D})=>{return D},jk=y1(c5(),1),uP1=class extends Error{};function mk(D){if(D instanceof Error)return D;let F=typeof D;if(F==="undefined"||F==="function"||D===null)return;if(F!=="object")return new Error(String(D));if(f0(D))return Object.assign(new uP1,D);return}function D6(D){if(D instanceof K0)return D;if(D instanceof Error&&D.name==="TRPCError")return D;let F=new K0({code:"INTERNAL_SERVER_ERROR",cause:D});if(D instanceof Error&&D.stack)F.stack=D.stack;return F}var K0=class extends Error{constructor(D){var F,w,J;let p=mk(D.cause),B=(F=(w=D.message)!==null&&w!==void 0?w:p===null||p===void 0?void 0:p.message)!==null&&F!==void 0?F:D.code;super(B,{cause:p});jk.default(this,"cause",void 0),jk.default(this,"code",void 0),this.code=D.code,this.name="TRPCError",(J=this.cause)!==null&&J!==void 0||(this.cause=p)}},j8=y1(G6(),1);function RU(D){if("input"in D)return D;return{input:D,output:D}}var g5={input:{serialize:(D)=>D,deserialize:(D)=>D},output:{serialize:(D)=>D,deserialize:(D)=>D}};function fk(D,F){if("error"in F)return j8.default(j8.default({},F),{},{error:D.transformer.output.serialize(F.error)});if("data"in F.result)return j8.default(j8.default({},F),{},{result:j8.default(j8.default({},F.result),{},{data:D.transformer.output.serialize(F.result.data)})});return F}function a5(D,F){return Array.isArray(F)?F.map((w)=>fk(D,w)):fk(D,F)}function NP1(D,F){if("error"in D){let J=F.deserialize(D.error);return{ok:!1,error:j8.default(j8.default({},D),{},{error:J})}}return{ok:!0,result:j8.default(j8.default({},D.result),(!D.result.type||D.result.type==="data")&&{type:"data",data:F.deserialize(D.result.data)})}}var TU=class extends Error{constructor(){super("Unable to transform response from server")}};function PU(D,F){let w;try{w=NP1(D,F)}catch(J){throw new TU}if(!w.ok&&(!f0(w.error.error)||typeof w.error.error.code!=="number"))throw new TU;if(w.ok&&!f0(w.result))throw new TU;return w}var $E=y1(G6(),1),zP1=Symbol("lazy");function UP1(D){let F=Symbol(),w=F;return()=>{if(w===F)w=D();return w}}function ZP1(D){return typeof D==="function"&&zP1 in D}function $P1(D){return f0(D)&&f0(D._def)&&"router"in D._def}var MP1={_ctx:null,_errorShape:null,_meta:null,queries:{},mutations:{},subscriptions:{},errorFormatter:l5,transformer:g5},qP1=["then","call","apply"];function ME(D){function F(w){let J=new Set(Object.keys(w).filter((H)=>qP1.includes(H)));if(J.size>0)throw new Error("Reserved words used in `router({})` call: "+Array.from(J).join(", "));let p=oJ({}),B=oJ({});function Y(H){return{ref:H.ref,load:UP1(async()=>{let N=await H.ref(),u=[...H.path,H.key],G=u.join(".");H.aggregate[H.key]=Q(N._def.record,u),delete B[G];for(let[U,Z]of Object.entries(N._def.lazy)){let C=[...u,U].join(".");B[C]=Y({ref:Z.ref,path:u,key:U,aggregate:H.aggregate[H.key]})}})}}function Q(H,N=[]){let u=oJ({});for(let[G,U]of Object.entries(H!==null&&H!==void 0?H:{})){if(ZP1(U)){B[[...N,G].join(".")]=Y({path:N,ref:U,key:G,aggregate:u});continue}if($P1(U)){u[G]=Q(U._def.record,[...N,G]);continue}if(!AP1(U)){u[G]=Q(U,[...N,G]);continue}let Z=[...N,G].join(".");if(p[Z])throw new Error(`Duplicate key: ${Z}`);p[Z]=U,u[G]=U}return u}let X=Q(w),W=$E.default($E.default({_config:D,router:!0,procedures:p,lazy:B},MP1),{},{record:X});return $E.default($E.default({},X),{},{_def:W,createCaller:qE()({_def:W})})}return F}function AP1(D){return typeof D==="function"}async function iD(D,F){let{_def:w}=D,J=w.procedures[F];while(!J){let p=Object.keys(w.lazy).find((Y)=>F.startsWith(Y));if(!p)return null;await w.lazy[p].load(),J=w.procedures[F]}return J}function qE(){return function D(F){let{_def:w}=F;return function J(p,B){return sJ(async({path:Y,args:Q})=>{let X=Y.join(".");if(Y.length===1&&Y[0]==="_def")return w;let W=await iD(F,X),K=void 0;try{if(!W)throw new K0({code:"NOT_FOUND",message:`No procedure found on path "${Y}"`});return K=nJ(p)?await Promise.resolve(p()):p,await W({path:X,getRawInput:async()=>Q[0],ctx:K,type:W._def.type,signal:B===null||B===void 0?void 0:B.signal})}catch(u){var H,N;throw B===null||B===void 0||(H=B.onError)===null||H===void 0||H.call(B,{ctx:K,error:D6(u),input:Q[0],path:X,type:(N=W===null||W===void 0?void 0:W._def.type)!==null&&N!==void 0?N:"unknown"}),u}})}}}function xU(...D){var F;let w=aJ({},...D.map((Y)=>Y._def.record)),J=D.reduce((Y,Q)=>{if(Q._def._config.errorFormatter&&Q._def._config.errorFormatter!==l5){if(Y!==l5&&Y!==Q._def._config.errorFormatter)throw new Error("You seem to have several error formatters");return Q._def._config.errorFormatter}return Y},l5),p=D.reduce((Y,Q)=>{if(Q._def._config.transformer&&Q._def._config.transformer!==g5){if(Y!==g5&&Y!==Q._def._config.transformer)throw new Error("You seem to have several transformers");return Q._def._config.transformer}return Y},g5);return ME({errorFormatter:J,transformer:p,isDev:D.every((Y)=>Y._def._config.isDev),allowOutsideOfServer:D.every((Y)=>Y._def._config.allowOutsideOfServer),isServer:D.every((Y)=>Y._def._config.isServer),$types:(F=D[0])===null||F===void 0?void 0:F._def._config.$types})(w)}var CP1=Symbol();function vU(D){return Array.isArray(D)&&D[2]===CP1}function OP1(D){try{if(D===null)return null;if(!f0(D))throw new Error("Expected object");let F=Object.entries(D).filter(([w,J])=>typeof J!=="string");if(F.length>0)throw new Error(`Expected connectionParams to be string values. Got ${F.map(([w,J])=>`${w}: ${typeof J}`).join(", ")}`);return D}catch(F){throw new K0({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:F})}}function LP1(D){let F;try{F=JSON.parse(D)}catch(w){throw new K0({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:w})}return OP1(F)}var kk=y1(G6(),1);function kU(D){let F=null,w=Symbol.for("@trpc/server/http/memo"),J=w;return{read:async()=>{var p;if(J!==w)return J;return(p=F)!==null&&p!==void 0||(F=D().catch((B)=>{if(B instanceof K0)throw B;throw new K0({code:"BAD_REQUEST",message:B instanceof Error?B.message:"Invalid input",cause:B})})),J=await F,F=null,J},result:()=>{return J!==w?J:void 0}}}var rk={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("application/json"))},async parse(D){var F;let{req:w}=D,J=D.searchParams.get("batch")==="1",p=J?D.path.split(","):[D.path],B=kU(async()=>{let H=void 0;if(w.method==="GET"){let u=D.searchParams.get("input");if(u)H=JSON.parse(u)}else H=await w.json();if(H===void 0)return{};if(!J)return{0:D.router._def._config.transformer.input.deserialize(H)};if(!f0(H))throw new K0({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});let N={};for(let u of p.keys()){let G=H[u];if(G!==void 0)N[u]=D.router._def._config.transformer.input.deserialize(G)}return N}),Y=await Promise.all(p.map(async(H,N)=>{let u=await iD(D.router,H);return{path:H,procedure:u,getRawInput:async()=>{let U=(await B.read())[N];if((u===null||u===void 0?void 0:u._def.type)==="subscription"){var Z,C;let L=(Z=(C=D.headers.get("last-event-id"))!==null&&C!==void 0?C:D.searchParams.get("lastEventId"))!==null&&Z!==void 0?Z:D.searchParams.get("Last-Event-Id");if(L)if(f0(U))U=kk.default(kk.default({},U),{},{lastEventId:L});else{var q;(q=U)!==null&&q!==void 0||(U={lastEventId:L})}}return U},result:()=>{var G;return(G=B.result())===null||G===void 0?void 0:G[N]}}})),Q=new Set(Y.map((H)=>{var N;return(N=H.procedure)===null||N===void 0?void 0:N._def.type}).filter(Boolean));if(Q.size>1)throw new K0({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(Q).join(", ")}`});let X=(F=Q.values().next().value)!==null&&F!==void 0?F:"unknown",W=D.searchParams.get("connectionParams");return{isBatchCall:J,accept:w.headers.get("trpc-accept"),calls:Y,type:X,connectionParams:W===null?null:LP1(W),signal:w.signal,url:D.url}}},TP1={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("multipart/form-data"))},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new K0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});let w=kU(async()=>{return await F.formData()}),J=await iD(D.router,D.path);return{accept:null,calls:[{path:D.path,getRawInput:w.read,result:w.result,procedure:J}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},RP1={isMatch(D){var F;return!!((F=D.headers.get("content-type"))===null||F===void 0?void 0:F.startsWith("application/octet-stream"))},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new K0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});let w=kU(async()=>{return F.body});return{calls:[{path:D.path,getRawInput:w.read,result:w.result,procedure:await iD(D.router,D.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},PP1=[rk,TP1,RP1];function xP1(D){let F=PP1.find((w)=>w.isMatch(D));if(F)return F;if(!F&&D.method==="GET")return rk;throw new K0({code:"UNSUPPORTED_MEDIA_TYPE",message:D.headers.has("content-type")?`Unsupported content-type "${D.headers.get("content-type")}`:"Missing content-type header"})}async function vP1(D){return await xP1(D.req).parse(D)}function LE(D){return f0(D)&&D.name==="AbortError"}function ek(D="AbortError"){throw new DOMException(D,"AbortError")}var AE=y1(c5(),1),Db,IU=new WeakMap,IP1=()=>{};Db=Symbol.toStringTag;var TE=class D{constructor(F){if(AE.default(this,"promise",void 0),AE.default(this,"subscribers",[]),AE.default(this,"settlement",null),AE.default(this,Db,"Unpromise"),typeof F==="function")this.promise=new Promise(F);else this.promise=F;let w=this.promise.then((J)=>{let{subscribers:p}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:J},p===null||p===void 0||p.forEach(({resolve:B})=>{B(J)})});if("catch"in w)w.catch((J)=>{let{subscribers:p}=this;this.subscribers=null,this.settlement={status:"rejected",reason:J},p===null||p===void 0||p.forEach(({reject:B})=>{B(J)})})}subscribe(){let F,w,{settlement:J}=this;if(J===null){if(this.subscribers===null)throw new Error("Unpromise settled but still has subscribers");let p=dP1();this.subscribers=_P1(this.subscribers,p),F=p.promise,w=()=>{if(this.subscribers!==null)this.subscribers=fP1(this.subscribers,p)}}else{let{status:p}=J;if(p==="fulfilled")F=Promise.resolve(J.value);else F=Promise.reject(J.reason);w=IP1}return Object.assign(F,{unsubscribe:w})}then(F,w){let J=this.subscribe(),{unsubscribe:p}=J;return Object.assign(J.then(F,w),{unsubscribe:p})}catch(F){let w=this.subscribe(),{unsubscribe:J}=w;return Object.assign(w.catch(F),{unsubscribe:J})}finally(F){let w=this.subscribe(),{unsubscribe:J}=w;return Object.assign(w.finally(F),{unsubscribe:J})}static proxy(F){let w=D.getSubscribablePromise(F);return typeof w!=="undefined"?w:D.createSubscribablePromise(F)}static createSubscribablePromise(F){let w=new D(F);return IU.set(F,w),IU.set(w,w),w}static getSubscribablePromise(F){return IU.get(F)}static resolve(F){let w=typeof F==="object"&&F!==null&&"then"in F&&typeof F.then==="function"?F:Promise.resolve(F);return D.proxy(w).subscribe()}static async any(F){let J=(Array.isArray(F)?F:[...F]).map(D.resolve);try{return await Promise.any(J)}finally{J.forEach(({unsubscribe:p})=>{p()})}}static async race(F){let J=(Array.isArray(F)?F:[...F]).map(D.resolve);try{return await Promise.race(J)}finally{J.forEach(({unsubscribe:p})=>{p()})}}static async raceReferences(F){let w=F.map(SP1);try{return await Promise.race(w)}finally{for(let J of w)J.unsubscribe()}}};function SP1(D){return TE.proxy(D).then(()=>[D])}function dP1(){let D,F;return{promise:new Promise((J,p)=>{D=J,F=p}),resolve:D,reject:F}}function _P1(D,F){return[...D,F]}function jP1(D,F){return[...D.slice(0,F),...D.slice(F+1)]}function fP1(D,F){let w=D.indexOf(F);if(w!==-1)return jP1(D,w);return D}var bk,hk,yk,ik;(hk=(bk=Symbol).dispose)!==null&&hk!==void 0||(bk.dispose=Symbol());(ik=(yk=Symbol).asyncDispose)!==null&&ik!==void 0||(yk.asyncDispose=Symbol());function Fb(D,F){let w=D,J=w[Symbol.dispose];return w[Symbol.dispose]=()=>{F(),J===null||J===void 0||J()},w}function wb(D,F){let w=D,J=w[Symbol.asyncDispose];return w[Symbol.asyncDispose]=async()=>{await F(),await(J===null||J===void 0?void 0:J())},w}var RE=Symbol();function bU(D){let F=null;return Fb({start(){if(F)throw new Error("Timer already started");return new Promise((J)=>{F=setTimeout(()=>J(RE),D)})}},()=>{if(F)clearTimeout(F)})}var Dp=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(D,F){function w(){var J=typeof SuppressedError=="function"?SuppressedError:function(Q,X){var W=Error();return W.name="SuppressedError",W.error=Q,W.suppressed=X,W},p={},B=[];function Y(Q,X){if(X!=null){if(Object(X)!==X)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(Q)var W=X[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(W===void 0&&(W=X[Symbol.dispose||Symbol.for("Symbol.dispose")],Q))var K=W;if(typeof W!="function")throw new TypeError("Object is not disposable.");K&&(W=function H(){try{K.call(X)}catch(N){return Promise.reject(N)}}),B.push({v:X,d:W,a:Q})}else Q&&B.push({d:X,a:Q});return X}return{e:p,u:Y.bind(null,!1),a:Y.bind(null,!0),d:function Q(){var X,W=this.e,K=0;function H(){for(;X=B.pop();)try{if(!X.a&&K===1)return K=0,B.push(X),Promise.resolve().then(H);if(X.d){var u=X.d.call(X.v);if(X.a)return K|=2,Promise.resolve(u).then(H,N)}else K|=1}catch(G){return N(G)}if(K===1)return W!==p?Promise.reject(W):Promise.resolve();if(W!==p)throw W}function N(u){return W=W!==p?new J(u,W):u,H()}return H()}}}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),hU=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(D,F){function w(J,p){this.v=J,this.k=p}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),Fp=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(D,F){var w=hU();function J(p){return new w(p,0)}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),cD=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(D,F){var w=hU();function J(B){return function(){return new p(B.apply(this,arguments))}}function p(B){var Y,Q;function X(K,H){try{var N=B[K](H),u=N.value,G=u instanceof w;Promise.resolve(G?u.v:u).then(function(U){if(G){var Z=K==="return"?"return":"next";if(!u.k||U.done)return X(Z,U);U=B[Z](U).value}W(N.done?"return":"normal",U)},function(U){X("throw",U)})}catch(U){W("throw",U)}}function W(K,H){switch(K){case"return":Y.resolve({value:H,done:!0});break;case"throw":Y.reject(H);break;default:Y.resolve({value:H,done:!1})}(Y=Y.next)?X(Y.key,Y.arg):Q=null}this._invoke=function(K,H){return new Promise(function(N,u){var G={key:K,arg:H,resolve:N,reject:u,next:null};Q?Q=Q.next=G:(Y=Q=G,X(K,H))})},typeof B.return!="function"&&(this.return=void 0)}p.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},p.prototype.next=function(B){return this._invoke("next",B)},p.prototype.throw=function(B){return this._invoke("throw",B)},p.prototype.return=function(B){return this._invoke("return",B)},F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),Jb=y1(Dp(),1),OE=y1(Fp(),1),pb=y1(cD(),1);function wp(D){let F=D[Symbol.asyncIterator]();if(F[Symbol.asyncDispose])return F;return wb(F,async()=>{var w;await((w=F.return)===null||w===void 0?void 0:w.call(F))})}function mP1(D,F){return _U.apply(this,arguments)}function _U(){return _U=pb.default(function*(D,F){try{var w=Jb.default();let J=w.a(wp(D)),B=w.u(bU(F.maxDurationMs)).start(),Y;while(!0){if(Y=yield OE.default(TE.race([J.next(),B])),Y===RE)ek();if(Y.done)return Y;yield Y.value,Y=null}}catch(J){w.e=J}finally{yield OE.default(w.d())}}),_U.apply(this,arguments)}function kP1(D,F){return jU.apply(this,arguments)}function jU(){return jU=pb.default(function*(D,F){try{var w=Jb.default();let J=w.a(wp(D)),p,B=w.u(bU(F.gracePeriodMs)),Y=F.count,Q=new Promise(()=>{});while(!0){if(p=yield OE.default(TE.race([J.next(),Q])),p===RE)ek();if(p.done)return p.value;if(yield p.value,--Y===0)Q=B.start();p=null}}catch(J){w.e=J}finally{yield OE.default(w.d())}}),jU.apply(this,arguments)}function ck(){let D,F;return{promise:new Promise((J,p)=>{D=J,F=p}),resolve:D,reject:F}}var bP1=y1(Dp(),1),lk=y1(Fp(),1),hP1=y1(cD(),1);function yP1(D,F){let w=D[Symbol.asyncIterator](),J="idle";function p(){J="done",F=()=>{}}function B(){if(J!=="idle")return;J="pending",w.next().then((Q)=>{if(Q.done){J="done",F({status:"return",value:Q.value}),p();return}J="idle",F({status:"yield",value:Q.value})}).catch((Q)=>{F({status:"error",error:Q}),p()})}return{pull:B,destroy:async()=>{var Y;p(),await((Y=w.return)===null||Y===void 0?void 0:Y.call(w))}}}function iP1(){let D="idle",F=ck(),w=[],J=new Set,p=[];function B(Y){if(D!=="pending")return;let Q=yP1(Y,(X)=>{if(D!=="pending")return;switch(X.status){case"yield":p.push([Q,X]);break;case"return":J.delete(Q);break;case"error":p.push([Q,X]),J.delete(Q);break}F.resolve()});J.add(Q),Q.pull()}return{add(Y){switch(D){case"idle":w.push(Y);break;case"pending":B(Y);break;case"done":break}},[Symbol.asyncIterator](){return hP1.default(function*(){try{var Y=bP1.default();if(D!=="idle")throw new Error("Cannot iterate twice");D="pending";let Q=Y.a(wb({},async()=>{D="done";let X=[];if(await Promise.all(Array.from(J.values()).map(async(W)=>{try{await W.destroy()}catch(K){X.push(K)}})),p.length=0,J.clear(),F.resolve(),X.length>0)throw new AggregateError(X)}));while(w.length>0)B(w.shift());while(J.size>0){yield lk.default(F.promise);while(p.length>0){let[X,W]=p.shift();switch(W.status){case"yield":yield W.value,X.pull();break;case"error":throw W.error}}F=ck()}}catch(Q){Y.e=Q}finally{yield lk.default(Y.d())}})()}}}function Bb(D){let F=D[Symbol.asyncIterator]();return new ReadableStream({async cancel(){var w;await((w=F.return)===null||w===void 0?void 0:w.call(F))},async pull(w){let J=await F.next();if(J.done){w.close();return}w.enqueue(J.value)}})}var gk=y1(Dp(),1),ak=y1(Fp(),1),cP1=y1(cD(),1),eJ=Symbol("ping");function Yb(D,F){return fU.apply(this,arguments)}function fU(){return fU=cP1.default(function*(D,F){try{var w=gk.default();let p=w.a(wp(D)),B,Y=p.next();while(!0)try{var J=gk.default();let Q=J.u(bU(F));if(B=yield ak.default(TE.race([Y,Q.start()])),B===RE){yield eJ;continue}if(B.done)return B.value;Y=p.next(),yield B.value,B=null}catch(Q){J.e=Q}finally{J.d()}}catch(p){w.e=p}finally{yield ak.default(w.d())}}),fU.apply(this,arguments)}var Qb=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(D,F){function w(p){var B,Y,Q,X=2;for(typeof Symbol!="undefined"&&(Y=Symbol.asyncIterator,Q=Symbol.iterator);X--;){if(Y&&(B=p[Y])!=null)return B.call(p);if(Q&&(B=p[Q])!=null)return new J(B.call(p));Y="@@asyncIterator",Q="@@iterator"}throw new TypeError("Object is not async iterable")}function J(p){function B(Y){if(Object(Y)!==Y)return Promise.reject(new TypeError(Y+" is not an object."));var Q=Y.done;return Promise.resolve(Y.value).then(function(X){return{value:X,done:Q}})}return J=function Y(Q){this.s=Q,this.n=Q.next},J.prototype={s:null,n:null,next:function Y(){return B(this.n.apply(this.s,arguments))},return:function Y(Q){var X=this.s.return;return X===void 0?Promise.resolve({value:Q,done:!0}):B(X.apply(this.s,arguments))},throw:function Y(Q){var X=this.s.return;return X===void 0?Promise.reject(Q):B(X.apply(this.s,arguments))}},new J(p)}F.exports=w,F.exports.__esModule=!0,F.exports.default=F.exports}}),tJ=y1(Fp(),1),SU=y1(cD(),1),lP1=y1(Dp(),1),gP1=y1(Qb(),1);function aP1(D){return Object.prototype.toString.call(D)==="[object Object]"}var nP1=0,oP1=1,sP1=0,tP1=1,rP1=0,eP1=1,Dx1=2;function Xb(D){return(f0(D)||nJ(D))&&typeof(D===null||D===void 0?void 0:D.then)==="function"&&typeof(D===null||D===void 0?void 0:D.catch)==="function"}var Fx1=class extends Error{constructor(D){super("Max depth reached at path: "+D.join("."));this.path=D}};function wx1(D){return mU.apply(this,arguments)}function mU(){return mU=SU.default(function*(D){let{data:F}=D,w=0,J=0,p=iP1();function B(q){let L=w++,P=q(L);return p.add(P),L}function Y(q,L){return B(function(){var P=SU.default(function*(x){let I=X(L);if(I)q.catch((S)=>{var h;(h=D.onError)===null||h===void 0||h.call(D,{error:S,path:L})}),q=Promise.reject(I);try{let S=yield tJ.default(q);yield[x,sP1,K(S,L)]}catch(S){var k,c;(k=D.onError)===null||k===void 0||k.call(D,{error:S,path:L}),yield[x,tP1,(c=D.formatError)===null||c===void 0?void 0:c.call(D,{error:S,path:L})]}});return function(x){return P.apply(this,arguments)}}())}function Q(q,L){return B(function(){var P=SU.default(function*(x){try{var I=lP1.default();let S=X(L);if(S)throw S;let h=I.a(wp(q));try{while(!0){let b=yield tJ.default(h.next());if(b.done){yield[x,rP1,K(b.value,L)];break}yield[x,eP1,K(b.value,L)]}}catch(b){var k,c;(k=D.onError)===null||k===void 0||k.call(D,{error:b,path:L}),yield[x,Dx1,(c=D.formatError)===null||c===void 0?void 0:c.call(D,{error:b,path:L})]}}catch(S){I.e=S}finally{yield tJ.default(I.d())}});return function(x){return P.apply(this,arguments)}}())}function X(q){if(D.maxDepth&&q.length>D.maxDepth)return new Fx1(q);return null}function W(q,L){if(Xb(q))return[nP1,Y(q,L)];if(i5(q)){if(D.maxDepth&&L.length>=D.maxDepth)throw new Error("Max depth reached");return[oP1,Q(q,L)]}return null}function K(q,L){if(q===void 0)return[[]];let P=W(q,L);if(P)return[[J],[null,...P]];if(!aP1(q))return[[q]];let x={},I=[];for(let[k,c]of Object.entries(q)){let S=W(c,[...L,k]);if(!S){x[k]=c;continue}x[k]=J,I.push([k,...S])}return[[x],...I]}let H={};for(let[q,L]of Object.entries(F))H[q]=K(L,[q]);yield H;let N=p;if(D.pingMs)N=Yb(p,D.pingMs);var u=!1,G=!1,U;try{for(var Z=gP1.default(N),C;u=!(C=yield tJ.default(Z.next())).done;u=!1)yield C.value}catch(q){G=!0,U=q}finally{try{if(u&&Z.return!=null)yield tJ.default(Z.return())}finally{if(G)throw U}}}),mU.apply(this,arguments)}function Jx1(D){let F=Bb(wx1(D)),{serialize:w}=D;if(w)F=F.pipeThrough(new TransformStream({transform(J,p){if(J===eJ)p.enqueue(eJ);else p.enqueue(w(J))}}));return F.pipeThrough(new TransformStream({transform(J,p){if(J===eJ)p.enqueue(" ");else p.enqueue(JSON.stringify(J)+`
570
570
  `)}})).pipeThrough(new TextEncoderStream)}var px1=H6({"../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncGeneratorDelegate.js"(D,F){var w=hU();function J(p){var B={},Y=!1;function Q(X,W){return Y=!0,W=new Promise(function(K){K(p[X](W))}),{done:!1,value:new w(W,1)}}return B[typeof Symbol!="undefined"&&Symbol.iterator||"@@iterator"]=function(){return this},B.next=function(X){return Y?(Y=!1,X):Q("next",X)},typeof p.throw=="function"&&(B.throw=function(X){if(Y)throw Y=!1,X;return Q("throw",X)}),typeof p.return=="function"&&(B.return=function(X){return Y?(Y=!1,X):Q("return",X)}),B}F.exports=J,F.exports.__esModule=!0,F.exports.default=F.exports}}),nk=y1(Qb(),1),ok=y1(Fp(),1),sk=y1(cD(),1),Bx1=y1(px1(),1),SH0=y1(Dp(),1),Yx1="ping",Qx1="serialized-error",Xx1="connected",Ex1="return";function Wx1(D){var F,w,J,p,B;let{serialize:Y=AU}=D,Q={enabled:(F=(w=D.ping)===null||w===void 0?void 0:w.enabled)!==null&&F!==void 0?F:!1,intervalMs:(J=(p=D.ping)===null||p===void 0?void 0:p.intervalMs)!==null&&J!==void 0?J:1000},X=(B=D.client)!==null&&B!==void 0?B:{};if(Q.enabled&&X.reconnectAfterInactivityMs&&Q.intervalMs>X.reconnectAfterInactivityMs)throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${Q.intervalMs} client.reconnectAfterInactivityMs: ${X.reconnectAfterInactivityMs}`);function W(){return K.apply(this,arguments)}function K(){return K=sk.default(function*(){yield{event:Xx1,data:JSON.stringify(X)};let G=D.data;if(D.emitAndEndImmediately)G=kP1(G,{count:1,gracePeriodMs:1});if(D.maxDurationMs&&D.maxDurationMs>0&&D.maxDurationMs!==1/0)G=mP1(G,{maxDurationMs:D.maxDurationMs});if(Q.enabled&&Q.intervalMs!==1/0&&Q.intervalMs>0)G=Yb(G,Q.intervalMs);let U,Z;var C=!1,q=!1,L;try{for(var P=nk.default(G),x;C=!(x=yield ok.default(P.next())).done;C=!1){U=x.value;{if(U===eJ){yield{event:Yx1,data:""};continue}Z=vU(U)?{id:U[0],data:U[1]}:{data:U},Z.data=JSON.stringify(Y(Z.data)),yield Z,U=null,Z=null}}}catch(I){q=!0,L=I}finally{try{if(C&&P.return!=null)yield ok.default(P.return())}finally{if(q)throw L}}}),K.apply(this,arguments)}function H(){return N.apply(this,arguments)}function N(){return N=sk.default(function*(){try{yield*Bx1.default(nk.default(W())),yield{event:Ex1,data:""}}catch(Z){var G,U;if(LE(Z))return;let C=D6(Z),q=(G=(U=D.formatError)===null||U===void 0?void 0:U.call(D,{error:C}))!==null&&G!==void 0?G:null;yield{event:Qx1,data:JSON.stringify(Y(q))}}}),N.apply(this,arguments)}return Bb(H()).pipeThrough(new TransformStream({transform(G,U){if("event"in G)U.enqueue(`event: ${G.event}
571
571
  `);if("data"in G)U.enqueue(`data: ${G.data}
572
572
  `);if("id"in G)U.enqueue(`id: ${G.id}
@@ -618,9 +618,9 @@ ${F}`,w10=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),J10=Obj
618
618
  at ${I}`)}let[P,x]=typeof L==="string"?[L]:L;K.render(P,x),R7.run()}catch(L){u(L)}}),Object.assign(H.then((L)=>{return R7.clearAll(),L},(L)=>{throw R7.clearAll(),L}).finally(()=>{Q.forEach((L)=>L()),K.done({clearContent:Boolean(p.clearPromptOnDone)}),X.end()}).then(()=>H),{cancel:G})})}}var z61=z1(TV(),1);class x7{separator=z61.default.dim(Array.from({length:15}).join(Dw.line));type="separator";constructor(D){if(D)this.separator=D}static isSeparator(D){return Boolean(D&&typeof D==="object"&&"type"in D&&D.type==="separator")}}function U61(D,F){let w=F!==!1;if(/^(y|yes)/i.test(D))w=!0;else if(/^(n|no)/i.test(D))w=!1;return w}function Z61(D){return D?"Yes":"No"}var pY=b3((D,F)=>{let{transformer:w=Z61}=D,[J,p]=Q2("idle"),[B,Y]=Q2(""),Q=H8(D.theme),X=m3({status:J,theme:Q});k3((N,u)=>{if(y9(N)){let G=U61(B,D.default);Y(w(G)),p("done"),F(G)}else if(N.name==="tab"){let G=Z61(!U61(B,D.default));u.clearLine(0),u.write(G),Y(G)}else Y(u.line)});let W=B,K="";if(J==="done")W=Q.style.answer(B);else K=` ${Q.style.defaultAnswer(D.default===!1?"y/N":"Y/n")}`;let H=Q.style.message(D.message,J);return`${X} ${H}${K} ${W}`});var J00={validationFailureMode:"keep"},zC=b3((D,F)=>{let{required:w,validate:J=()=>!0}=D,p=H8(J00,D.theme),[B,Y]=Q2("idle"),[Q="",X]=Q2(D.default),[W,K]=Q2(),[H,N]=Q2(""),u=m3({status:B,theme:p});k3(async(q,L)=>{if(B!=="idle")return;if(y9(q)){let P=H||Q;Y("loading");let x=w&&!P?"You must provide a value":await J(P);if(x===!0)N(P),Y("done"),F(P);else{if(p.validationFailureMode==="clear")N("");else L.write(H);K(x||"You must provide a valid value"),Y("idle")}}else if(OV(q)&&!H)X(void 0);else if(q.name==="tab"&&!H)X(void 0),L.clearLine(0),L.write(Q),N(Q);else N(L.line),K(void 0)});let G=p.style.message(D.message,B),U=H;if(typeof D.transformer==="function")U=D.transformer(H,{isFinal:B==="done"});else if(B==="done")U=p.style.answer(H);let Z;if(Q&&B!=="done"&&!H)Z=p.style.defaultAnswer(Q);let C="";if(W)C=p.style.error(W);return[[u,G,Z,U].filter((q)=>q!==void 0).join(" "),C]});var $61=z1(IV(),1),UC=b3((D,F)=>{let{validate:w=()=>!0}=D,J=H8(D.theme),[p,B]=Q2("idle"),[Y,Q]=Q2(),[X,W]=Q2(""),K=m3({status:p,theme:J});k3(async(U,Z)=>{if(p!=="idle")return;if(y9(U)){let C=X;B("loading");let q=await w(C);if(q===!0)W(C),B("done"),F(C);else Z.write(X),Q(q||"You must provide a valid value"),B("idle")}else W(Z.line),Q(void 0)});let H=J.style.message(D.message,p),N="",u;if(D.mask)N=(typeof D.mask==="string"?D.mask:"*").repeat(X.length);else if(p!=="done")u=`${J.style.help("[input is masked]")}${$61.default.cursorHide}`;if(p==="done")N=J.style.answer(N);let G="";if(Y)G=J.style.error(Y);return[[K,H,D.mask?N:u].join(" "),G]});var ZC=z1(TV(),1);var M61=z1(IV(),1);var p00={icon:{cursor:Dw.pointer},style:{disabled:(D)=>ZC.default.dim(`- ${D}`),description:(D)=>ZC.default.cyan(D)},helpMode:"auto",indexMode:"hidden"};function Bw(D){return!x7.isSeparator(D)&&!D.disabled}function B00(D){return D.map((F)=>{if(x7.isSeparator(F))return F;if(typeof F==="string")return{value:F,name:F,short:F,disabled:!1};let w=F.name??String(F.value),J={value:F.value,name:w,short:F.short??w,disabled:F.disabled??!1};if(F.description)J.description=F.description;return J})}var $C=b3((D,F)=>{let{loop:w=!0,pageSize:J=7}=D,p=i9(!0),B=H8(p00,D.theme),[Y,Q]=Q2("idle"),X=m3({status:Y,theme:B}),W=i9(),K=eB(()=>B00(D.choices),[D.choices]),H=eB(()=>{let x=K.findIndex(Bw),I=K.findLastIndex(Bw);if(x===-1)throw new rB("[select prompt] No selectable choices. All choices are disabled.");return{first:x,last:I}},[K]),N=eB(()=>{if(!("default"in D))return-1;return K.findIndex((x)=>Bw(x)&&x.value===D.default)},[D.default,K]),[u,G]=Q2(N===-1?H.first:N),U=K[u];k3((x,I)=>{if(clearTimeout(W.current),y9(x))Q("done"),F(U.value);else if(CV(x)||FC(x)){if(I.clearLine(0),w||CV(x)&&u!==H.first||FC(x)&&u!==H.last){let k=CV(x)?-1:1,c=u;do c=(c+k+K.length)%K.length;while(!Bw(K[c]));G(c)}}else if(O21(x)&&!Number.isNaN(Number(I.line))){let k=Number(I.line)-1,c=K[k];if(c!=null&&Bw(c))G(k);W.current=setTimeout(()=>{I.clearLine(0)},700)}else if(OV(x))I.clearLine(0);else{let k=I.line.toLowerCase(),c=K.findIndex((S)=>{if(x7.isSeparator(S)||!Bw(S))return!1;return S.name.toLowerCase().startsWith(k)});if(c!==-1)G(c);W.current=setTimeout(()=>{I.clearLine(0)},700)}}),P7(()=>()=>{clearTimeout(W.current)},[]);let Z=B.style.message(D.message,Y),C="",q="";if(B.helpMode==="always"||B.helpMode==="auto"&&p.current)if(p.current=!1,K.length>J)q=`
619
619
  ${B.style.help(`(${D.instructions?.pager??"Use arrow keys to reveal more choices"})`)}`;else C=B.style.help(`(${D.instructions?.navigation??"Use arrow keys"})`);let L=GC({items:K,active:u,renderItem({item:x,isActive:I,index:k}){if(x7.isSeparator(x))return` ${x.separator}`;let c=B.indexMode==="number"?`${k+1}. `:"";if(x.disabled){let b=typeof x.disabled==="string"?x.disabled:"(disabled)";return B.style.disabled(`${c}${x.name} ${b}`)}let S=I?B.style.highlight:(b)=>b,h=I?B.icon.cursor:" ";return S(`${h} ${c}${x.name}`)},pageSize:J,loop:w});if(Y==="done")return`${X} ${Z} ${B.style.answer(U.short)}`;let P=U.description?`
620
620
  ${B.style.description(U.description)}`:"";return`${[X,Z,C].filter(Boolean).join(" ")}
621
- ${L}${q}${P}${M61.default.cursorHide}`});function q61(D){return D.command("add <proxyId>").description("Add a server to a proxy.").addOption(L8({flags:"-e,--entry <entryName>",description:"add a server from the registry by specifying the entry name"})).addOption(L8({flags:"-u,--url <url>",description:"add a streamable or sse server by specifying the url"})).addOption(L8({flags:"-n,--name <serverName>",description:"the name of the server as it'll appear in the config file"})).action(_1(async(F,w)=>{if(w.entry)console.log(`adding ${w.entry} to ${F}`),await Q00(F,w.entry);else if(w.url){if(!w.name)throw new Error("No server name provided. use --name to specify the name of the server");console.log(`adding ${w.url} to ${F}`),await Y00(F,w.url,w.name)}else console.warn("No entry name or url provided. You must speciy --entry or --url and --name, alternatively update the config file directly and restart the gateway:"),console.log(),console.log(`${G2("CONFIG_FILE_PATH:")} ${Q0.CONFIG_FILE_PATH}`),console.log()}))}async function Y00(D,F,w){await l6(async()=>{await I2.store.addServer.mutate({proxyId:D,server:{name:w,transport:{type:"http",url:F}}})}).start("installing server...").succeed(`HTTP server ${F} added to ${D}`).run()}async function Q00(D,F){let w=await l6(()=>T4.entries.getEntryByName.query({name:F})).start("fetching entry...").succeed("Entry fetched.").run(),J=await X00(w);await l6(async()=>{let p=await T4.entries.getTransportForEntry.query({entryName:F,parameters:J});await I2.store.addServer.mutate({proxyId:D,server:{name:F,transport:p,source:{name:"registry",entryId:w.id,entryData:w}}})}).start("installing server...").succeed(`Registry entry ${F} added to ${D}`).run()}async function X00(D){let F={};if(!D.parameters)return{};for(let w of D.parameters)if(w.required)F[w.name]=await UC({message:w.name,mask:"*"});else F[w.name]=await zC({message:w.name});return F}var A61=q1("gateway/helpers");function BY(D){return`/${D}/mcp`}function YY(D){return`/${D}/sse`}async function MC(D){A61.info(`restarting connected clients for ${D.id}`);for(let F of lJ()){let w=y2(F);if(await w.isInstalled(D.id))A61.info(`${D.id} is intalled in ${F}, restarting...`),await w.restart()}}function C61(D){D.command("connect <proxyId>").description("Connect a proxy to a MCP client").addOption(L8({flags:"-t,--target <target>",description:"target client",choices:["claude","cursor","vscode"]})).action(_1(async(F,w)=>{if(w.target){let J=await I2.store.get.query({proxyId:F}),B=await(await y2(w.target)).install({name:J.id,url:c6(Q0.GATEWAY_URL,YY(J.id))});console.log(B)}else{console.log(),console.log(O8("--------------------------------")),console.log(O8(`Connection Details for '${F}'`)),console.log(O8("--------------------------------")),console.log(),console.log("Note: if you'd like to connect to a client automatically, run:"),console.log("director connect "+F+" --target <target>"),console.log();let J=await I2.store.get.query({proxyId:F}),p=Q0.GATEWAY_URL,B=c6(p,YY(J.id)),Y=c6(p,BY(J.id)),Q={command:"npx",args:["-y","@director.run/cli","http2stdio",Y],env:{LOG_LEVEL:"silent"}};console.log(G2("HTTP Streamable:")+" "+Y),console.log(G2("HTTP SSE:")+" "+B),console.log(G2("Stdio:"),JSON.stringify(Q,null,2)),console.log()}}))}function O61(D){D.debugCommand("test-proxy <proxyId>").description("Run a high level test of a proxy").action(_1(async(F)=>{let w=new s8("proxy-test-client");await w.connectToHTTP(c6(Q0.GATEWAY_URL,`${F}/mcp`));let{tools:J}=await w.listTools();console.log(),console.log(G2("TOOLS")),console.log(),console.log(J.map((p)=>p.name).join(`
621
+ ${L}${q}${P}${M61.default.cursorHide}`});function q61(D){return D.command("add <proxyId>").description("Add a server to a proxy.").addOption(L8({flags:"-e,--entry <entryName>",description:"add a server from the registry by specifying the entry name"})).addOption(L8({flags:"-u,--url <url>",description:"add a streamable or sse server by specifying the url"})).addOption(L8({flags:"-n,--name <serverName>",description:"the name of the server as it'll appear in the config file"})).action(_1(async(F,w)=>{if(w.entry)console.log(`adding ${w.entry} to ${F}`),await Q00(F,w.entry);else if(w.url){if(!w.name)throw new Error("No server name provided. use --name to specify the name of the server");console.log(`adding ${w.url} to ${F}`),await Y00(F,w.url,w.name)}else console.warn("No entry name or url provided. You must speciy --entry or --url and --name, alternatively update the config file directly and restart the gateway:"),console.log(),console.log(`${G2("CONFIG_FILE_PATH:")} ${Q0.CONFIG_FILE_PATH}`),console.log()}))}async function Y00(D,F,w){await l6(async()=>{await I2.store.addServer.mutate({proxyId:D,server:{name:w,transport:{type:"http",url:F}}})}).start("installing server...").succeed(`HTTP server ${F} added to ${D}`).run()}async function Q00(D,F){let w=await l6(()=>T4.entries.getEntryByName.query({name:F})).start("fetching entry...").succeed("Entry fetched.").run(),J=await X00(w);await l6(async()=>{let p=await T4.entries.getTransportForEntry.query({entryName:F,parameters:J});await I2.store.addServer.mutate({proxyId:D,server:{name:F,transport:p,source:{name:"registry",entryId:w.id,entryData:w}}})}).start("installing server...").succeed(`Registry entry ${F} added to ${D}`).run()}async function X00(D){let F={};if(!D.parameters)return{};for(let w of D.parameters)if(w.required)F[w.name]=await UC({message:w.name,mask:"*"});else F[w.name]=await zC({message:w.name});return F}var A61=q1("gateway/helpers");function BY(D){return`/${D}/mcp`}function YY(D){return`/${D}/sse`}async function MC(D){A61.info(`restarting connected clients for ${D.id}`);for(let F of lJ()){let w=y2(F);if(await w.isInstalled(D.id))A61.info(`${D.id} is intalled in ${F}, restarting...`),await w.restart()}}function C61(D){D.command("connect <proxyId>").description("Connect a proxy to a MCP client").addOption(L8({flags:"-t,--target <target>",description:"target client",choices:["claude","cursor","vscode"]})).action(_1(async(F,w)=>{if(w.target){let J=await I2.store.get.query({proxyId:F}),B=await(await y2(w.target)).install({name:J.id,url:c6(Q0.GATEWAY_URL,YY(J.id))});console.log(B)}else{console.log(),console.log(O8("--------------------------------")),console.log(O8(`Connection Details for '${F}'`)),console.log(O8("--------------------------------")),console.log(),console.log("Note: if you'd like to connect to a client automatically, run:"),console.log("director connect "+F+" --target <target>"),console.log();let J=await I2.store.get.query({proxyId:F}),p=Q0.GATEWAY_URL,B=c6(p,YY(J.id)),Y=c6(p,BY(J.id)),Q={command:"npx",args:["-y","@director.run/cli@latest","http2stdio",Y],env:{LOG_LEVEL:"silent"}};console.log(G2("HTTP Streamable:")+" "+Y),console.log(G2("HTTP SSE:")+" "+B),console.log(G2("Stdio:"),JSON.stringify(Q,null,2)),console.log()}}))}function O61(D){D.debugCommand("test-proxy <proxyId>").description("Run a high level test of a proxy").action(_1(async(F)=>{let w=new s8("proxy-test-client");await w.connectToHTTP(c6(Q0.GATEWAY_URL,`${F}/mcp`));let{tools:J}=await w.listTools();console.log(),console.log(G2("TOOLS")),console.log(),console.log(J.map((p)=>p.name).join(`
622
622
  `)),console.log(),await w.close()})),D.debugCommand("reset").description("Delete proxies, clear the config file, and reset all clients").action(_1(async({target:F})=>{console.log("resetting service"),await I2.store.purge.mutate(),console.log("resetting clients"),await zE()}))}import E00 from"node:fs";function L61(D){D.command("env").description("Print environment variables").option("--write","Write the environment variables to .env.local in current working directory").action(_1((F)=>{if(F.write){console.log(`writing env vars to '${JJ}'`);let w=Object.entries(Q0).map(([J,p])=>`${J}=${p}`).join(`
623
- `);E00.writeFileSync(JJ,w)}else AP()&&console.log(O8(`using env file: ${TQ()}`)),console.log(),console.log("env",Q0)}))}import{exec as W00,execSync as K00}from"node:child_process";import{promisify as V00}from"node:util";var H00=V00(W00),aL0=q1("restartApp");function qC(D){if(process.platform==="win32")return!1;try{return K00(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(w){return!1}}async function T61(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`,w=process.platform,J;switch(w){case"darwin":J=`open "${F}"`;break;case"win32":J=`start "" "${F}"`;break;case"linux":J=`xdg-open "${F}"`;break;default:throw new Error(`Unsupported platform: ${w}`)}try{await H00(J)}catch(p){throw new Error(`Failed to open URL: ${p instanceof Error?p.message:"Unknown error"}`)}}async function Yw(){return{platform:process.platform,dependencies:[{name:"npx",installed:qC("npx")},{name:"uvx",installed:qC("uvx")}],clients:await yD()}}var I61=z1(v61(),1),S61=q1("http/middleware"),d61=(D,F,w,J)=>{let{status:p,message:B,code:Y}=C00(D);S61.error({message:`${F.method} ${F.originalUrl} failed: ${B}`,code:Y}),w.status(p).json({message:B,code:Y})};function C00(D){if(vX(D))return O00(D);if(C_(D))return{status:D.statusCode,message:D.message};else return{status:500,message:"Something unexpected happened :("}}function O00(D){let F;switch(D.code){case"NOT_FOUND":F=404;break;case"BAD_REQUEST":F=400;break;default:F=500}return{status:F,message:D.message,code:D.code}}function _61(){throw new O1("NOT_FOUND","there's nothing here")}function Ew(D){return(F,w,J)=>{Promise.resolve(D(F,w,J)).catch(J)}}function j61(){return I61.default({logger:S61,useLevel:"trace",autoLogging:{ignore:(D)=>D.originalUrl?.startsWith("/trpc")},serializers:{req:(D)=>({id:D.id,ip:D.ip||D.connection?.remoteAddress,userAgent:D.headers["user-agent"]}),res:(D)=>({status:D.statusCode})},customReceivedMessage:(D)=>`→ ${D.method} ${D.originalUrl}`,customSuccessMessage:(D,F)=>{let w=F.statusCode,J=w>=500?"\uD83D\uDD34":w>=400?"\uD83D\uDFE1":"\uD83D\uDFE2";return`← ${D.method} ${D.originalUrl} ${J} ${w}`},customErrorMessage:(D,F)=>`← ${D.method} ${D.originalUrl} \uD83D\uDD34 ${F.statusCode}`})}var pw1=z1(ww1(),1),Bw1=z1(Jw1(),1);import zL from"os";class F5{analytics;machineId;enabled;traits;constructor(D){this.analytics=new pw1.Analytics({writeKey:D.writeKey}),this.enabled=D.enabled,this.traits=D.traits||{}}async initialize(){if(this.machineId)return;if(this.machineId=await Bw1.machineId(),this.enabled)this.analytics.identify({userId:this.machineId,traits:{...this.traits,os:zL.platform(),osVersion:zL.release(),arch:zL.arch()}})}static noTelemetry(){return new F5({writeKey:"--",enabled:!1})}async trackEvent(D,F={}){if(await this.initialize(),this.enabled)this.analytics.track({userId:this.machineId,event:D,properties:F})}}var Tw1=z1(Ww1(),1),Rw1=z1(ZB(),1);import{existsSync as _J0}from"node:fs";var M2=A.string().trim().min(1,"Required"),UH=M2.nullish(),TJ0=A.string().trim().min(1,"Required").regex(/^[a-z0-9._-]+$/,"Only lowercase ASCII letters, digits, and characters ., -, _ are allowed"),RJ0=A.object({type:A.literal("http"),url:M2.url(),headers:A.record(M2,A.string()).optional()}),PJ0=A.object({type:A.literal("stdio"),command:M2,args:A.array(A.string()).default([]),env:A.record(M2,A.string()).optional()}),Kw1=A.discriminatedUnion("type",[RJ0,PJ0]),xJ0=A.object({name:M2,description:M2,required:A.boolean(),type:A.enum(["string"]),password:A.boolean().optional()}),vJ0=A.object({name:M2,description:M2,inputSchema:A.object({type:M2,required:A.array(A.string()).optional(),properties:A.record(M2,A.object({type:A.string().optional(),description:A.string().optional(),default:A.unknown().optional(),title:A.string().optional(),anyOf:A.unknown().optional()})).optional()})}),IJ0=A.object({id:M2,name:M2,title:M2,description:M2,icon:UH,createdAt:A.coerce.date().nullable().default(null),isOfficial:A.boolean().nullable().default(null),isEnriched:A.boolean().nullable().default(null),isConnectable:A.boolean().nullable().default(null),lastConnectionAttemptedAt:A.coerce.date().nullable().default(null),lastConnectionError:UH,homepage:M2,transport:Kw1,source_registry:A.any(),categories:A.array(A.string()).nullable().default(null),tools:A.array(vJ0).nullable().default(null),parameters:A.array(xJ0),readme:UH}),SJ0=A.object({name:A.literal("registry"),entryId:M2,entryData:IJ0}),ZH=A.object({name:TJ0,transport:Kw1,source:SJ0.optional()}),dJ0=A.object({id:M2,name:M2,description:UH,servers:A.array(ZH)}),Vw1=A.object({proxies:A.array(dJ0)});var $H=z1(Hw1(),1);async function PY(D){let F=await HE(D);return Vw1.parse(F)}async function xY(D,F){return await t4(D,F)}class MH{filePath;constructor(D){this.filePath=D}static async connect(D){let F=new MH(D);if(!_J0(D))await xY(D,{proxies:[]});return F}async addProxy(D){let F=await PY(this.filePath);if(F.proxies.find((p)=>p.name===D.name))throw new Error("Proxy already exists");let J={...D,servers:(D.servers||[]).map((p)=>({...p,name:$H.default(p.name,{lower:!0,strict:!0,trim:!0})})),id:$H.default(D.name,{lower:!0,strict:!0,trim:!0})};return F.proxies.push(J),await xY(this.filePath,F),J}async getProxy(D){let w=(await PY(this.filePath)).proxies.find((J)=>J.id===D);if(!w)throw new Error("Proxy not found");return w}async deleteProxy(D){let F=await PY(this.filePath);if(!F.proxies.find((J)=>J.id===D))throw new Error("Proxy not found");F.proxies=F.proxies.filter((J)=>J.id!==D),await xY(this.filePath,F)}async updateProxy(D,F){let w=await PY(this.filePath),J=w.proxies.find((p)=>p.id===D);if(!J)throw new Error("Proxy not found");return Object.assign(J,{...F,servers:(F.servers||J.servers||[]).map((p)=>({...p,name:$H.default(p.name,{lower:!0,trim:!0})}))}),await xY(this.filePath,w),J}async getAll(){return(await PY(this.filePath)).proxies}async purge(){await xY(this.filePath,{proxies:[]})}}var b7=q1("ProxyServerStore");class qH{proxyServers=new Map;db;telemetry;constructor(D){this.db=D.db,this.telemetry=D.telemetry}static async create(D,F){b7.debug("initializing ProxyServerStore");let w=new qH({db:D,telemetry:F||F5.noTelemetry()});return await w.initialize(),b7.debug("initialization complete"),w}async initialize(){let D=await this.db.getAll();for(let F of D){let w=F.id;b7.debug({message:`initializing ${w}`,proxyId:w});let J=new nF({id:w,name:F.name,description:F.description??void 0,servers:F.servers});await J.connectTargets(),this.proxyServers.set(w,J)}}get(D){let F=this.proxyServers.get(D);if(!F)throw new O1("NOT_FOUND",`proxy server '${D}' not found or failed to initialize.`);return F}async delete(D){await this.get(D).close(),await this.db.deleteProxy(D),this.proxyServers.delete(D),b7.info(`successfully deleted proxy server configuration: ${D}`)}async purge(){await this.closeAll(),await this.db.purge(),this.proxyServers.clear()}async closeAll(){b7.info("cleaning up all proxy servers..."),await Promise.all(Array.from(this.proxyServers.values()).map((D)=>D.close())),b7.info("finished cleaning up all proxy servers.")}getAll(){return Array.from(this.proxyServers.values())}async create({name:D,description:F,servers:w,source:J}){let p=await this.db.addProxy({name:D,description:F,servers:w??[]}),B=new nF({name:D,id:p.id,servers:p.servers,description:p.description??void 0});return await B.connectTargets(),this.proxyServers.set(p.id,B),b7.info({message:"Created new proxy",proxyId:p.id}),B}async addServer(D,F){let w=this.get(D);return await w.addTarget(F,{throwOnError:!0}),await this.db.updateProxy(D,{servers:w.attributes.servers}),w}async removeServer(D,F){let w=this.get(D);return await w.removeTarget(F),await this.db.updateProxy(D,{servers:w.attributes.servers}),w}async update(D,F){let w=this.get(D);return await w.update(F),await this.db.updateProxy(D,F),w}}var Gw1=z1(A9(),1),uw1=z1(uW(),1),jJ0="4mb";async function Nw1(D){let F=Gw1.default.parse(D.headers["content-type"]??"");if(F.type!=="application/json")throw new Error(`Unsupported content-type: ${F}`);let w=await uw1.default(D,{limit:jJ0,encoding:F.parameters.charset??"utf-8"});return JSON.parse(w)}var zw1=z1(ZB(),1),AH=q1("mcp/sse"),Uw1=({proxyStore:D})=>{let F=zw1.default.Router(),w=new Map;return F.get("/:proxy_id/sse",Ew(async(J,p)=>{let B=J.params.proxy_id,Y=D.get(B),Q=new NW(`/${Y.id}/message`,p);w.set(Q.sessionId,Q),AH.info({message:"SSE connection started",sessionId:Q.sessionId,proxyId:Y.id,userAgent:J.headers["user-agent"],host:J.headers.host}),J.socket.on("close",()=>{AH.info({message:"SSE connection closed",sessionId:Q.sessionId,proxyId:Y.id}),w.delete(Q.sessionId)}),await Y.connect(Q)})),F.post("/:proxy_id/message",Ew(async(J,p)=>{let B=J.params.proxy_id,Y=D.get(B),Q=J.query.sessionId?.toString();if(!Q)throw new O1("BAD_REQUEST","No sessionId provided");let X=await Nw1(J);AH.info({message:"Message received",proxyId:Y.id,sessionId:Q,method:X.method,params:X.params});let W=w.get(Q);if(!W)throw AH.warn({message:"Transport not found",sessionId:Q,proxyId:Y.id}),new O1("NOT_FOUND","Transport not found");await W.handlePostMessage(J,p,X)})),F};var $L=z1(ZB(),1),vY=q1("mcp/streamable"),Zw1=({proxyStore:D})=>{let F=$L.default.Router(),w=new Map;F.use($L.default.json()),F.post("/:proxy_id/mcp",Ew(async(p,B)=>{let Y=p.params.proxy_id,Q=await D.get(Y),X=p.headers["mcp-session-id"],W;if(X&&w.has(X)){let K=w.get(X);if(!K)throw new O1("NOT_FOUND","Transport not found");W=K}else if(!X&&Ep(p.body))vY.info(`[${Q.id}] new initialization request`),W=new UW({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:(K)=>{w.set(K,W)}}),W.onclose=()=>{if(vY.info(`[${Q.id}] transport closed`,{proxyId:Q.id,sessionId:W.sessionId}),W.sessionId)w.delete(W.sessionId)},p.socket.on("close",()=>{vY.info(`[${Q.id}] socket closed'`,{proxyId:Q.id,sessionId:W.sessionId})}),await Q.connect(W);else throw new O1("BAD_REQUEST","No valid session ID provided");vY.info({message:`[${Q.id}] '${p.body.method}' called`,proxyId:Q.id,sessionId:W.sessionId,method:p.body.method,body:p.body}),await W.handleRequest(p,B,p.body)}));let J=Ew(async(p,B)=>{let Y=p.params.proxy_id,Q=D.get(Y),X=p.headers["mcp-session-id"];if(!X||!w.has(X))throw new O1("BAD_REQUEST","Invalid or missing session ID");let W=w.get(X);if(!W)throw new O1("NOT_FOUND","Transport not found");let K=W;vY.info({message:"MCP handleSessionRequest",proxyId:Q.id,sessionId:K.sessionId,body:p.body}),await K.handleRequest(p,B)});return F.get("/:proxy_id/mcp",J),F.delete("/:proxy_id/mcp",J),F};function fJ0(D,F){if("body"in D){if(D.body===void 0)return;if(typeof D.body==="string")return D.body;return JSON.stringify(D.body)}let w=0,J=!1;return new ReadableStream({start(p){let B=(Q)=>{if(w+=Q.length,!F.maxBodySize||w<=F.maxBodySize){p.enqueue(new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength));return}p.error(new K0({code:"PAYLOAD_TOO_LARGE"})),J=!0,D.off("data",B),D.off("end",Y)},Y=()=>{if(J)return;J=!0,D.off("data",B),D.off("end",Y),p.close()};D.on("data",B),D.on("end",Y)},cancel(){D.destroy()}})}function mJ0(D){try{var F,w;let J=D.headers[":scheme"]&&D.headers[":scheme"]==="https"||D.socket&&"encrypted"in D.socket&&D.socket.encrypted?"https:":"http:",p=(F=(w=D.headers.host)!==null&&w!==void 0?w:D.headers[":authority"])!==null&&F!==void 0?F:"localhost";return new URL(D.url,`${J}//${p}`)}catch(J){throw new K0({code:"BAD_REQUEST",message:"Invalid URL",cause:J})}}function kJ0(D){let F=new Headers;for(let w in D){let J=D[w];if(typeof w==="string"&&w.startsWith(":"))continue;if(Array.isArray(J))for(let p of J)F.append(w,p);else if(J!=null)F.append(w,J)}return F}function bJ0(D,F,w){let J=new AbortController,p=()=>{F.off("close",p),D.off("aborted",p),J.abort()};F.once("close",p),D.once("aborted",p);let B=mJ0(D),Y={headers:kJ0(D.headers),method:D.method,signal:J.signal};if(D.method!=="GET"&&D.method!=="HEAD")Y.body=fJ0(D,w),Y.duplex="half";return new Request(B,Y)}async function hJ0(D,F){if(D.write(F)===!1)await new Promise((w,J)=>{let p=(Q)=>{J(Q),Y()},B=()=>{w(),Y()},Y=()=>{D.off("error",p),D.off("drain",B)};D.once("error",p),D.once("drain",B)})}async function yJ0(D){let{res:F}=D;try{let w=new WritableStream({async write(J){var p;await hJ0(F,J),(p=F.flush)===null||p===void 0||p.call(F)}});await D.body.pipeTo(w,{signal:D.signal})}catch(w){if(LE(w))return;throw w}}async function iJ0(D){let{response:F,rawResponse:w}=D;if(w.statusCode===200)w.statusCode=F.status;for(let[J,p]of F.headers)w.setHeader(J,p);try{if(F.body)await yJ0({res:w,signal:D.request.signal,body:F.body})}catch(J){if(!w.headersSent)w.statusCode=500;throw J}finally{w.end()}}var Rw=y1(G6(),1);function ML(D){return(F)=>{var w;let{res:J,req:p}=D,B=D6(F),Y=_8({config:D.router._def._config,error:B,type:"unknown",path:void 0,input:void 0,ctx:void 0});(w=D.onError)===null||w===void 0||w.call(D,{req:p,error:B,type:"unknown",path:void 0,input:void 0,ctx:void 0});let Q=a5(D.router._def._config,{error:Y});J.statusCode=Y.data.httpStatus,J.end(JSON.stringify(Q))}}async function $w1(D){return new Promise((F)=>{var w;let J=(w=D.middleware)!==null&&w!==void 0?w:(p,B,Y)=>Y();return D.res.once("finish",()=>{F()}),J(D.req,D.res,(p)=>{e4(async()=>{var B;let Y=bJ0(D.req,D.res,{maxBodySize:(B=D.maxBodySize)!==null&&B!==void 0?B:null}),Q=async(W)=>{var K;return await((K=D.createContext)===null||K===void 0?void 0:K.call(D,Rw.default(Rw.default({},D),W)))},X=await Eb(Rw.default(Rw.default({},D),{},{req:Y,error:p?D6(p):null,createContext:Q,onError(W){var K;D===null||D===void 0||(K=D.onError)===null||K===void 0||K.call(D,Rw.default(Rw.default({},W),{},{req:D.req}))}}));await iJ0({request:Y,response:X,rawResponse:D.res})}).catch(ML(D))})})}var qL=y1(G6(),1);function Mw1(D){return(F,w)=>{let J="";e4(async()=>{J=F.path.slice(F.path.lastIndexOf("/")+1),await $w1(qL.default(qL.default({},D),{},{req:F,res:w,path:J}))}).catch(ML(qL.default({req:F,res:w,path:J},D)))}}function qw1({proxyStore:D}){return v0.router({allClients:v0.procedure.query(()=>yD()),byProxy:v0.router({list:v0.procedure.input(A.object({proxyId:A.string()})).query(async({input:F})=>{return await Mk(F.proxyId)}),install:v0.procedure.input(A.object({client:A.nativeEnum(cJ),proxyId:A.string(),baseUrl:A.string()})).mutation(async({input:F})=>{let w=D.get(F.proxyId);await(await y2(F.client)).install({name:w.id,url:c6(F.baseUrl,YY(w.id))})}),uninstall:v0.procedure.input(A.object({client:A.nativeEnum(cJ),proxyId:A.string()})).mutation(async({input:F})=>{let w=D.get(F.proxyId);await(await y2(F.client)).uninstall(w.id)})})})}function Aw1({registryURL:D,proxyStore:F}){let w=NV(D);return v0.router({getEntries:v0.procedure.input(A.object({pageIndex:A.number().min(0),pageSize:A.number().min(1)})).query(({input:J})=>w.entries.getEntries.query(J)),getEntryByName:v0.procedure.input(A.object({name:A.string()})).query(({input:J})=>w.entries.getEntryByName.query(J)),getTransportForEntry:v0.procedure.input(A.object({entryName:A.string(),parameters:A.record(A.string(),A.string()).optional()})).mutation(async({input:J})=>{return await w.entries.getTransportForEntry.query({entryName:J.entryName,parameters:J.parameters})})})}var Cw1=A.object({name:A.string(),description:A.string().optional(),servers:A.array(ZH).optional()}),lJ0=Cw1.omit({servers:!0}).partial();function Ow1({proxyStore:D}){return v0.router({getAll:v0.procedure.query(async()=>{return(await D.getAll()).map((F)=>({...F.toPlainObject(),path:BY(F.id)}))}),get:v0.procedure.input(A.object({proxyId:A.string()})).query(({input:F})=>{return{...D.get(F.proxyId).toPlainObject(),path:BY(F.proxyId)}}),create:v0.procedure.input(Cw1).mutation(async({input:F})=>{return(await D.create({name:F.name,description:F.description??void 0,servers:F.servers})).toPlainObject()}),update:v0.procedure.input(A.object({proxyId:A.string(),attributes:lJ0})).mutation(async({input:F})=>{return(await D.update(F.proxyId,{name:F.attributes.name,description:F.attributes.description??void 0})).toPlainObject()}),delete:v0.procedure.input(A.object({proxyId:A.string()})).mutation(async({input:F})=>{return await D.delete(F.proxyId),{success:!0}}),addServer:v0.procedure.input(A.object({proxyId:A.string(),server:ZH})).mutation(async({input:F})=>{let w=await D.addServer(F.proxyId,F.server);return await MC(w),w.toPlainObject()}),purge:v0.procedure.mutation(()=>D.purge()),removeServer:v0.procedure.input(A.object({proxyId:A.string(),serverName:A.string()})).mutation(async({input:F})=>{let w=await D.removeServer(F.proxyId,F.serverName);return await MC(w),w.toPlainObject()})})}function gJ0({proxyStore:D,registryURL:F}){return v0.router({health:v0.procedure.query(()=>Yw()),store:Ow1({proxyStore:D}),installer:qw1({proxyStore:D}),registry:Aw1({registryURL:F,proxyStore:D})})}function Lw1({proxyStore:D,registryURL:F}){return Mw1({router:gJ0({proxyStore:D,registryURL:F})})}var AL=q1("Gateway");class CH{proxyStore;port;server;constructor(D){this.port=D.port,this.proxyStore=D.proxyStore,this.server=D.server}static async start(D,F){AL.info("starting director gateway");let w=await MH.connect(D.databaseFilePath),J=D.telemetry||F5.noTelemetry(),p=await qH.create(w,J),B=Rw1.default(),Y=D.registryURL;B.use(Tw1.default({origin:D.allowedOrigins})),B.use(j61()),B.use("/",Uw1({proxyStore:p})),B.use("/",Zw1({proxyStore:p})),B.use("/trpc",Lw1({proxyStore:p,registryURL:Y})),B.all("*",_61),B.use(d61),J.trackEvent("gateway_start");let Q=B.listen(D.port,()=>{AL.info(`director gateway running on port ${D.port}`),F?.()}),X=new CH({port:D.port,db:w,proxyStore:p,server:Q});return process.on("SIGINT",async()=>{AL.info("received SIGINT, cleaning up proxy servers..."),await X.stop(),process.exit(0)}),X}async stop(){await this.proxyStore.closeAll(),await new Promise((D)=>{this.server.closeAllConnections(),this.server.close(()=>D())})}}function Pw1(D){D.command("serve").description("Start the web service").action(_1(async()=>{try{await CL()}catch(F){console.error("Fatal error starting gateway",F),process.exit(1)}}))}async function CL(D){console.log(`v${K9.version}`),Oh(),await CH.start({port:Q0.GATEWAY_PORT,databaseFilePath:Q0.CONFIG_FILE_PATH,registryURL:Q0.REGISTRY_API_URL,allowedOrigins:[Q0.STUDIO_URL,/^https?:\/\/localhost(:\d+)?$/],telemetry:new F5({writeKey:Q0.SEGMENT_WRITE_KEY,enabled:Q0.SEND_TELEMETRY,traits:{cliVersion:K9.version}})},D)}function xw1(D){D.command("studio").description("Open the UI in your browser").action(_1(async()=>{let F=tB();F.start("opening studio...");try{await I2.health.query()}catch(w){F.fail("Failed to connect to gateway. Have you ran `director serve`?"),process.exit(1)}try{OL()}catch(w){F.fail(`failed to open ${Q0.STUDIO_URL}, try manually`)}F.stop()}))}async function OL(){await T61(Q0.STUDIO_URL)}var aJ0=q1("quickstart");function Iw1(D){D.command("quickstart").description("Start the gateway and open the studio in your browser").action(_1(async()=>{await nJ0(),await CL(async()=>{aJ0.info(`gateway started, opening ${Q0.STUDIO_URL} in your browser...`),await OL()})}))}async function nJ0(){let D=tB();D.start("checking prerequisites...");let F=await Yw();D.stop();let w=[],J=[];w.push(""),w.push(G2("Dependency Check")),w.push("The following dependencies are required by some MCP servers that use Stdout. It's best to have them all installed."),w.push("");for(let Y of F.dependencies)w.push(vw1({name:Y.name,installed:Y.installed,successText:`${Y.name} is installed`,failureText:`${Y.name} is not available in $PATH. ${oJ0(Y)}`}));if(F.dependencies.filter((Y)=>Y.installed).length<F.dependencies.length)J.push("Some dependencies are not available in $PATH, MCP servers that depend on them will not work.");w.push(""),w.push(G2("MCP Clients Check")),w.push("Director can automatically configure the following MCP clients for you. It's best to have at least one installed."),w.push("");for(let Y of F.clients)w.push(vw1({name:Y.name,installed:Y.installed}));if(F.clients.filter((Y)=>Y.installed).length===0)J.push("No MCP clients found. It's best to have at least one MCP client installed in order to use the automatic client configuration.");if(w.push(""),w.push(G2("Summary")),w.push(""),console.log(w.join(`
623
+ `);E00.writeFileSync(JJ,w)}else AP()&&console.log(O8(`using env file: ${TQ()}`)),console.log(),console.log("env",Q0)}))}import{exec as W00,execSync as K00}from"node:child_process";import{promisify as V00}from"node:util";var H00=V00(W00),aL0=q1("restartApp");function qC(D){if(process.platform==="win32")return!1;try{return K00(`which ${D}`,{stdio:"pipe"}).toString().trim().length>0}catch(w){return!1}}async function T61(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`,w=process.platform,J;switch(w){case"darwin":J=`open "${F}"`;break;case"win32":J=`start "" "${F}"`;break;case"linux":J=`xdg-open "${F}"`;break;default:throw new Error(`Unsupported platform: ${w}`)}try{await H00(J)}catch(p){throw new Error(`Failed to open URL: ${p instanceof Error?p.message:"Unknown error"}`)}}async function Yw(){return{platform:process.platform,dependencies:[{name:"npx",installed:qC("npx")},{name:"uvx",installed:qC("uvx")}],clients:await yD()}}var I61=z1(v61(),1),S61=q1("http/middleware"),d61=(D,F,w,J)=>{let{status:p,message:B,code:Y}=C00(D);S61.error({message:`${F.method} ${F.originalUrl} failed: ${B}`,code:Y}),w.status(p).json({message:B,code:Y})};function C00(D){if(vX(D))return O00(D);if(C_(D))return{status:D.statusCode,message:D.message};else return{status:500,message:"Something unexpected happened :("}}function O00(D){let F;switch(D.code){case"NOT_FOUND":F=404;break;case"BAD_REQUEST":F=400;break;default:F=500}return{status:F,message:D.message,code:D.code}}function _61(){throw new O1("NOT_FOUND","there's nothing here")}function Ew(D){return(F,w,J)=>{Promise.resolve(D(F,w,J)).catch(J)}}function j61(){return I61.default({logger:S61,useLevel:"trace",autoLogging:{ignore:(D)=>D.originalUrl?.startsWith("/trpc")},serializers:{req:(D)=>({id:D.id,ip:D.ip||D.connection?.remoteAddress,userAgent:D.headers["user-agent"]}),res:(D)=>({status:D.statusCode})},customReceivedMessage:(D)=>`→ ${D.method} ${D.originalUrl}`,customSuccessMessage:(D,F)=>{let w=F.statusCode,J=w>=500?"\uD83D\uDD34":w>=400?"\uD83D\uDFE1":"\uD83D\uDFE2";return`← ${D.method} ${D.originalUrl} ${J} ${w}`},customErrorMessage:(D,F)=>`← ${D.method} ${D.originalUrl} \uD83D\uDD34 ${F.statusCode}`})}var pw1=z1(ww1(),1),Bw1=z1(Jw1(),1);import zL from"os";class F5{analytics;machineId;enabled;traits;constructor(D){this.analytics=new pw1.Analytics({writeKey:D.writeKey}),this.enabled=D.enabled,this.traits=D.traits||{}}async initialize(){if(this.machineId)return;if(this.machineId=await Bw1.machineId(),this.enabled)this.analytics.identify({userId:this.machineId,traits:{...this.traits,os:zL.platform(),osVersion:zL.release(),arch:zL.arch()}})}static noTelemetry(){return new F5({writeKey:"--",enabled:!1})}async trackEvent(D,F={}){if(await this.initialize(),this.enabled)this.analytics.track({userId:this.machineId,event:D,properties:F})}}var Tw1=z1(Ww1(),1),Rw1=z1(ZB(),1);import{existsSync as _J0}from"node:fs";var M2=A.string().trim().min(1,"Required"),UH=M2.nullish(),TJ0=A.string().trim().min(1,"Required").regex(/^[a-z0-9._-]+$/,"Only lowercase ASCII letters, digits, and characters ., -, _ are allowed"),RJ0=A.object({type:A.literal("http"),url:M2.url(),headers:A.record(M2,A.string()).optional()}),PJ0=A.object({type:A.literal("stdio"),command:M2,args:A.array(A.string()).default([]),env:A.record(M2,A.string()).optional()}),Kw1=A.discriminatedUnion("type",[RJ0,PJ0]),xJ0=A.object({name:M2,description:M2,required:A.boolean(),type:A.enum(["string"]),password:A.boolean().optional()}),vJ0=A.object({name:M2,description:M2,inputSchema:A.object({type:M2,required:A.array(A.string()).optional(),properties:A.record(M2,A.object({type:A.string().optional(),description:A.string().optional(),default:A.unknown().optional(),title:A.string().optional(),anyOf:A.unknown().optional()})).optional()})}),IJ0=A.object({id:M2,name:M2,title:M2,description:M2,icon:UH,createdAt:A.coerce.date().nullable().default(null),isOfficial:A.boolean().nullable().default(null),isEnriched:A.boolean().nullable().default(null),isConnectable:A.boolean().nullable().default(null),lastConnectionAttemptedAt:A.coerce.date().nullable().default(null),lastConnectionError:UH,homepage:M2,transport:Kw1,source_registry:A.any(),categories:A.array(A.string()).nullable().default(null),tools:A.array(vJ0).nullable().default(null),parameters:A.array(xJ0),readme:UH}),SJ0=A.object({name:A.literal("registry"),entryId:M2,entryData:IJ0}),ZH=A.object({name:TJ0,transport:Kw1,source:SJ0.optional()}),dJ0=A.object({id:M2,name:M2,description:UH,servers:A.array(ZH)}),Vw1=A.object({proxies:A.array(dJ0)});var $H=z1(Hw1(),1);async function PY(D){let F=await HE(D);return Vw1.parse(F)}async function xY(D,F){return await t4(D,F)}class MH{filePath;constructor(D){this.filePath=D}static async connect(D){let F=new MH(D);if(!_J0(D))await xY(D,{proxies:[]});return F}async addProxy(D){let F=await PY(this.filePath);if(F.proxies.find((p)=>p.name===D.name))throw new Error("Proxy already exists");let J={...D,servers:(D.servers||[]).map((p)=>({...p,name:$H.default(p.name,{lower:!0,strict:!0,trim:!0})})),id:$H.default(D.name,{lower:!0,strict:!0,trim:!0})};return F.proxies.push(J),await xY(this.filePath,F),J}async getProxy(D){let w=(await PY(this.filePath)).proxies.find((J)=>J.id===D);if(!w)throw new Error("Proxy not found");return w}async deleteProxy(D){let F=await PY(this.filePath);if(!F.proxies.find((J)=>J.id===D))throw new Error("Proxy not found");F.proxies=F.proxies.filter((J)=>J.id!==D),await xY(this.filePath,F)}async updateProxy(D,F){let w=await PY(this.filePath),J=w.proxies.find((p)=>p.id===D);if(!J)throw new Error("Proxy not found");return Object.assign(J,{...F,servers:(F.servers||J.servers||[]).map((p)=>({...p,name:$H.default(p.name,{lower:!0,trim:!0})}))}),await xY(this.filePath,w),J}async getAll(){return(await PY(this.filePath)).proxies}async purge(){await xY(this.filePath,{proxies:[]})}}var b7=q1("ProxyServerStore");class qH{proxyServers=new Map;db;telemetry;constructor(D){this.db=D.db,this.telemetry=D.telemetry||F5.noTelemetry()}static async create(D,F){b7.debug("initializing ProxyServerStore");let w=new qH({db:D,telemetry:F});return await w.initialize(),b7.debug("initialization complete"),w}async initialize(){let D=await this.db.getAll();for(let F of D){let w=F.id;b7.debug({message:`initializing ${w}`,proxyId:w});let J=new nF({id:w,name:F.name,description:F.description??void 0,servers:F.servers});await J.connectTargets(),this.proxyServers.set(w,J)}}get(D){let F=this.proxyServers.get(D);if(!F)throw new O1("NOT_FOUND",`proxy server '${D}' not found or failed to initialize.`);return F}async delete(D){this.telemetry.trackEvent("proxy_deleted"),await this.get(D).close(),await this.db.deleteProxy(D),this.proxyServers.delete(D),b7.info(`successfully deleted proxy server configuration: ${D}`)}async purge(){await this.closeAll(),await this.db.purge(),this.proxyServers.clear()}async closeAll(){b7.info("cleaning up all proxy servers..."),await Promise.all(Array.from(this.proxyServers.values()).map((D)=>D.close())),b7.info("finished cleaning up all proxy servers.")}getAll(){return Array.from(this.proxyServers.values())}async create({name:D,description:F,servers:w,source:J}){this.telemetry.trackEvent("proxy_created");let p=await this.db.addProxy({name:D,description:F,servers:w??[]}),B=new nF({name:D,id:p.id,servers:p.servers,description:p.description??void 0});return await B.connectTargets(),this.proxyServers.set(p.id,B),b7.info({message:"Created new proxy",proxyId:p.id}),B}async addServer(D,F){this.telemetry.trackEvent("server_added");let w=this.get(D);return await w.addTarget(F,{throwOnError:!0}),await this.db.updateProxy(D,{servers:w.attributes.servers}),w}async removeServer(D,F){this.telemetry.trackEvent("server_removed");let w=this.get(D);return await w.removeTarget(F),await this.db.updateProxy(D,{servers:w.attributes.servers}),w}async update(D,F){this.telemetry.trackEvent("proxy_updated");let w=this.get(D);return await w.update(F),await this.db.updateProxy(D,F),w}}var Gw1=z1(A9(),1),uw1=z1(uW(),1),jJ0="4mb";async function Nw1(D){let F=Gw1.default.parse(D.headers["content-type"]??"");if(F.type!=="application/json")throw new Error(`Unsupported content-type: ${F}`);let w=await uw1.default(D,{limit:jJ0,encoding:F.parameters.charset??"utf-8"});return JSON.parse(w)}var zw1=z1(ZB(),1),AH=q1("mcp/sse"),Uw1=({proxyStore:D,telemetry:F})=>{let w=zw1.default.Router(),J=new Map;return w.get("/:proxy_id/sse",Ew(async(p,B)=>{let Y=p.params.proxy_id,Q=D.get(Y),X=new NW(`/${Q.id}/message`,B);J.set(X.sessionId,X),AH.info({message:"SSE connection started",sessionId:X.sessionId,proxyId:Q.id,userAgent:p.headers["user-agent"],host:p.headers.host}),F.trackEvent("connection_started",{transport:"sse"}),p.socket.on("close",()=>{AH.info({message:"SSE connection closed",sessionId:X.sessionId,proxyId:Q.id}),J.delete(X.sessionId)}),await Q.connect(X)})),w.post("/:proxy_id/message",Ew(async(p,B)=>{let Y=p.params.proxy_id,Q=D.get(Y),X=p.query.sessionId?.toString();if(!X)throw new O1("BAD_REQUEST","No sessionId provided");let W=await Nw1(p);AH.info({message:"Message received",proxyId:Q.id,sessionId:X,method:W.method,params:W.params});let K=J.get(X);if(!K)throw AH.warn({message:"Transport not found",sessionId:X,proxyId:Q.id}),new O1("NOT_FOUND","Transport not found");F.trackEvent("method_called",{method:W.method,transport:"sse"}),await K.handlePostMessage(p,B,W)})),w};var $L=z1(ZB(),1),vY=q1("mcp/streamable"),Zw1=({proxyStore:D,telemetry:F})=>{let w=$L.default.Router(),J=new Map;w.use($L.default.json()),w.post("/:proxy_id/mcp",Ew(async(B,Y)=>{let Q=B.params.proxy_id,X=await D.get(Q),W=B.headers["mcp-session-id"],K;if(W&&J.has(W)){let H=J.get(W);if(!H)throw new O1("NOT_FOUND","Transport not found");K=H}else if(!W&&Ep(B.body))vY.info(`[${X.id}] new initialization request`),F.trackEvent("connection_started",{transport:"streamable"}),K=new UW({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:(H)=>{J.set(H,K)}}),K.onclose=()=>{if(vY.info(`[${X.id}] transport closed`,{proxyId:X.id,sessionId:K.sessionId}),K.sessionId)J.delete(K.sessionId)},B.socket.on("close",()=>{vY.info(`[${X.id}] socket closed'`,{proxyId:X.id,sessionId:K.sessionId})}),await X.connect(K);else throw new O1("BAD_REQUEST","No valid session ID provided");vY.info({message:`[${X.id}] '${B.body.method}' called`,proxyId:X.id,sessionId:K.sessionId,method:B.body.method,body:B.body}),F.trackEvent("method_called",{method:B.body.method,transport:"streamable"}),await K.handleRequest(B,Y,B.body)}));let p=Ew(async(B,Y)=>{let Q=B.params.proxy_id,X=D.get(Q),W=B.headers["mcp-session-id"];if(!W||!J.has(W))throw new O1("BAD_REQUEST","Invalid or missing session ID");let K=J.get(W);if(!K)throw new O1("NOT_FOUND","Transport not found");let H=K;vY.info({message:"MCP handleSessionRequest",proxyId:X.id,sessionId:H.sessionId,body:B.body}),await H.handleRequest(B,Y)});return w.get("/:proxy_id/mcp",p),w.delete("/:proxy_id/mcp",p),w};function fJ0(D,F){if("body"in D){if(D.body===void 0)return;if(typeof D.body==="string")return D.body;return JSON.stringify(D.body)}let w=0,J=!1;return new ReadableStream({start(p){let B=(Q)=>{if(w+=Q.length,!F.maxBodySize||w<=F.maxBodySize){p.enqueue(new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength));return}p.error(new K0({code:"PAYLOAD_TOO_LARGE"})),J=!0,D.off("data",B),D.off("end",Y)},Y=()=>{if(J)return;J=!0,D.off("data",B),D.off("end",Y),p.close()};D.on("data",B),D.on("end",Y)},cancel(){D.destroy()}})}function mJ0(D){try{var F,w;let J=D.headers[":scheme"]&&D.headers[":scheme"]==="https"||D.socket&&"encrypted"in D.socket&&D.socket.encrypted?"https:":"http:",p=(F=(w=D.headers.host)!==null&&w!==void 0?w:D.headers[":authority"])!==null&&F!==void 0?F:"localhost";return new URL(D.url,`${J}//${p}`)}catch(J){throw new K0({code:"BAD_REQUEST",message:"Invalid URL",cause:J})}}function kJ0(D){let F=new Headers;for(let w in D){let J=D[w];if(typeof w==="string"&&w.startsWith(":"))continue;if(Array.isArray(J))for(let p of J)F.append(w,p);else if(J!=null)F.append(w,J)}return F}function bJ0(D,F,w){let J=new AbortController,p=()=>{F.off("close",p),D.off("aborted",p),J.abort()};F.once("close",p),D.once("aborted",p);let B=mJ0(D),Y={headers:kJ0(D.headers),method:D.method,signal:J.signal};if(D.method!=="GET"&&D.method!=="HEAD")Y.body=fJ0(D,w),Y.duplex="half";return new Request(B,Y)}async function hJ0(D,F){if(D.write(F)===!1)await new Promise((w,J)=>{let p=(Q)=>{J(Q),Y()},B=()=>{w(),Y()},Y=()=>{D.off("error",p),D.off("drain",B)};D.once("error",p),D.once("drain",B)})}async function yJ0(D){let{res:F}=D;try{let w=new WritableStream({async write(J){var p;await hJ0(F,J),(p=F.flush)===null||p===void 0||p.call(F)}});await D.body.pipeTo(w,{signal:D.signal})}catch(w){if(LE(w))return;throw w}}async function iJ0(D){let{response:F,rawResponse:w}=D;if(w.statusCode===200)w.statusCode=F.status;for(let[J,p]of F.headers)w.setHeader(J,p);try{if(F.body)await yJ0({res:w,signal:D.request.signal,body:F.body})}catch(J){if(!w.headersSent)w.statusCode=500;throw J}finally{w.end()}}var Rw=y1(G6(),1);function ML(D){return(F)=>{var w;let{res:J,req:p}=D,B=D6(F),Y=_8({config:D.router._def._config,error:B,type:"unknown",path:void 0,input:void 0,ctx:void 0});(w=D.onError)===null||w===void 0||w.call(D,{req:p,error:B,type:"unknown",path:void 0,input:void 0,ctx:void 0});let Q=a5(D.router._def._config,{error:Y});J.statusCode=Y.data.httpStatus,J.end(JSON.stringify(Q))}}async function $w1(D){return new Promise((F)=>{var w;let J=(w=D.middleware)!==null&&w!==void 0?w:(p,B,Y)=>Y();return D.res.once("finish",()=>{F()}),J(D.req,D.res,(p)=>{e4(async()=>{var B;let Y=bJ0(D.req,D.res,{maxBodySize:(B=D.maxBodySize)!==null&&B!==void 0?B:null}),Q=async(W)=>{var K;return await((K=D.createContext)===null||K===void 0?void 0:K.call(D,Rw.default(Rw.default({},D),W)))},X=await Eb(Rw.default(Rw.default({},D),{},{req:Y,error:p?D6(p):null,createContext:Q,onError(W){var K;D===null||D===void 0||(K=D.onError)===null||K===void 0||K.call(D,Rw.default(Rw.default({},W),{},{req:D.req}))}}));await iJ0({request:Y,response:X,rawResponse:D.res})}).catch(ML(D))})})}var qL=y1(G6(),1);function Mw1(D){return(F,w)=>{let J="";e4(async()=>{J=F.path.slice(F.path.lastIndexOf("/")+1),await $w1(qL.default(qL.default({},D),{},{req:F,res:w,path:J}))}).catch(ML(qL.default({req:F,res:w,path:J},D)))}}function qw1({proxyStore:D}){return v0.router({allClients:v0.procedure.query(()=>yD()),byProxy:v0.router({list:v0.procedure.input(A.object({proxyId:A.string()})).query(async({input:F})=>{return await Mk(F.proxyId)}),install:v0.procedure.input(A.object({client:A.nativeEnum(cJ),proxyId:A.string(),baseUrl:A.string()})).mutation(async({input:F})=>{let w=D.get(F.proxyId);await(await y2(F.client)).install({name:w.id,url:c6(F.baseUrl,YY(w.id))})}),uninstall:v0.procedure.input(A.object({client:A.nativeEnum(cJ),proxyId:A.string()})).mutation(async({input:F})=>{let w=D.get(F.proxyId);await(await y2(F.client)).uninstall(w.id)})})})}function Aw1({registryURL:D,proxyStore:F}){let w=NV(D);return v0.router({getEntries:v0.procedure.input(A.object({pageIndex:A.number().min(0),pageSize:A.number().min(1)})).query(({input:J})=>w.entries.getEntries.query(J)),getEntryByName:v0.procedure.input(A.object({name:A.string()})).query(({input:J})=>w.entries.getEntryByName.query(J)),getTransportForEntry:v0.procedure.input(A.object({entryName:A.string(),parameters:A.record(A.string(),A.string()).optional()})).mutation(async({input:J})=>{return await w.entries.getTransportForEntry.query({entryName:J.entryName,parameters:J.parameters})})})}var Cw1=A.object({name:A.string(),description:A.string().optional(),servers:A.array(ZH).optional()}),lJ0=Cw1.omit({servers:!0}).partial();function Ow1({proxyStore:D}){return v0.router({getAll:v0.procedure.query(async()=>{return(await D.getAll()).map((F)=>({...F.toPlainObject(),path:BY(F.id)}))}),get:v0.procedure.input(A.object({proxyId:A.string()})).query(({input:F})=>{return{...D.get(F.proxyId).toPlainObject(),path:BY(F.proxyId)}}),create:v0.procedure.input(Cw1).mutation(async({input:F})=>{return(await D.create({name:F.name,description:F.description??void 0,servers:F.servers})).toPlainObject()}),update:v0.procedure.input(A.object({proxyId:A.string(),attributes:lJ0})).mutation(async({input:F})=>{return(await D.update(F.proxyId,{name:F.attributes.name,description:F.attributes.description??void 0})).toPlainObject()}),delete:v0.procedure.input(A.object({proxyId:A.string()})).mutation(async({input:F})=>{return await D.delete(F.proxyId),{success:!0}}),addServer:v0.procedure.input(A.object({proxyId:A.string(),server:ZH})).mutation(async({input:F})=>{let w=await D.addServer(F.proxyId,F.server);return await MC(w),w.toPlainObject()}),purge:v0.procedure.mutation(()=>D.purge()),removeServer:v0.procedure.input(A.object({proxyId:A.string(),serverName:A.string()})).mutation(async({input:F})=>{let w=await D.removeServer(F.proxyId,F.serverName);return await MC(w),w.toPlainObject()})})}function gJ0({proxyStore:D,registryURL:F}){return v0.router({health:v0.procedure.query(()=>Yw()),store:Ow1({proxyStore:D}),installer:qw1({proxyStore:D}),registry:Aw1({registryURL:F,proxyStore:D})})}function Lw1({proxyStore:D,registryURL:F}){return Mw1({router:gJ0({proxyStore:D,registryURL:F})})}var AL=q1("Gateway");class CH{proxyStore;port;server;constructor(D){this.port=D.port,this.proxyStore=D.proxyStore,this.server=D.server}static async start(D,F){AL.info("starting director gateway");let w=await MH.connect(D.databaseFilePath),J=D.telemetry||F5.noTelemetry(),p=await qH.create(w,J),B=Rw1.default(),Y=D.registryURL;B.use(Tw1.default({origin:D.allowedOrigins})),B.use(j61()),B.use("/",Uw1({proxyStore:p,telemetry:J})),B.use("/",Zw1({proxyStore:p,telemetry:J})),B.use("/trpc",Lw1({proxyStore:p,registryURL:Y})),B.all("*",_61),B.use(d61),J.trackEvent("gateway_start");let Q=B.listen(D.port,()=>{AL.info(`director gateway running on port ${D.port}`),F?.()}),X=new CH({port:D.port,db:w,proxyStore:p,server:Q});return process.on("SIGINT",async()=>{AL.info("received SIGINT, cleaning up proxy servers..."),await X.stop(),process.exit(0)}),X}async stop(){await this.proxyStore.closeAll(),await new Promise((D)=>{this.server.closeAllConnections(),this.server.close(()=>D())})}}function Pw1(D){D.command("serve").description("Start the web service").action(_1(async()=>{try{await CL()}catch(F){console.error("Fatal error starting gateway",F),process.exit(1)}}))}async function CL(D){console.log(`v${K9.version}`),Oh(),await CH.start({port:Q0.GATEWAY_PORT,databaseFilePath:Q0.CONFIG_FILE_PATH,registryURL:Q0.REGISTRY_API_URL,allowedOrigins:[Q0.STUDIO_URL,/^https?:\/\/localhost(:\d+)?$/],telemetry:new F5({writeKey:Q0.SEGMENT_WRITE_KEY,enabled:Q0.SEND_TELEMETRY,traits:{cliVersion:K9.version}})},D)}function xw1(D){D.command("studio").description("Open the UI in your browser").action(_1(async()=>{let F=tB();F.start("opening studio...");try{await I2.health.query()}catch(w){F.fail("Failed to connect to gateway. Have you ran `director serve`?"),process.exit(1)}try{OL()}catch(w){F.fail(`failed to open ${Q0.STUDIO_URL}, try manually`)}F.stop()}))}async function OL(){await T61(Q0.STUDIO_URL)}var aJ0=q1("quickstart");function Iw1(D){D.command("quickstart").description("Start the gateway and open the studio in your browser").action(_1(async()=>{await nJ0(),await CL(async()=>{aJ0.info(`gateway started, opening ${Q0.STUDIO_URL} in your browser...`),await OL()})}))}async function nJ0(){let D=tB();D.start("checking prerequisites...");let F=await Yw();D.stop();let w=[],J=[];w.push(""),w.push(G2("Dependency Check")),w.push("The following dependencies are required by some MCP servers that use Stdout. It's best to have them all installed."),w.push("");for(let Y of F.dependencies)w.push(vw1({name:Y.name,installed:Y.installed,successText:`${Y.name} is installed`,failureText:`${Y.name} is not available in $PATH. ${oJ0(Y)}`}));if(F.dependencies.filter((Y)=>Y.installed).length<F.dependencies.length)J.push("Some dependencies are not available in $PATH, MCP servers that depend on them will not work.");w.push(""),w.push(G2("MCP Clients Check")),w.push("Director can automatically configure the following MCP clients for you. It's best to have at least one installed."),w.push("");for(let Y of F.clients)w.push(vw1({name:Y.name,installed:Y.installed}));if(F.clients.filter((Y)=>Y.installed).length===0)J.push("No MCP clients found. It's best to have at least one MCP client installed in order to use the automatic client configuration.");if(w.push(""),w.push(G2("Summary")),w.push(""),console.log(w.join(`
624
624
  `)),J.length>0)if(console.log(J.map((Q)=>`${z5("✗")} ${z5(Q)}`).join(`
625
625
  `)),console.log(""),await $C({message:"Would you like to continue with a degraded experience?",choices:["No","Yes"]})==="Yes")console.log(QJ("Continuing with a degraded experience..."));else console.log("Exiting..."),process.exit(1);else console.log(QJ("All systems go!")),console.log("")}function vw1(D){let F=`[${D.installed?QJ("✓"):z5("✗")}]`,w=D.successText??`${D.name} is installed`,J=D.failureText??`${D.name} is not installed`;return`${F} ${D.installed?w:J}`}function oJ0(D){switch(D.name){case"npx":return"Follow the installation instructions here: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm.";case"uvx":return"Follow the installation instructions here: https://docs.astral.sh/uv/getting-started/installation/.";default:return}}function Sw1(D){return D.command("remove <proxyId> <serverName>").description("Remove a server from a proxy").action(_1(async(F,w)=>{let J=await l6(()=>I2.store.removeServer.mutate({proxyId:F,serverName:w})).start("removing server...").succeed(`Server ${w} removed from ${F}`).run()}))}function dw1(D){D.command("status").description("Get the status of the director").action(_1(async()=>{let F=await Yw();console.log(F)}))}function _w1(D){Iw1(D),Pw1(D),xw1(D),D.command("ls").alias("list").description("List proxies").action(_1(async()=>{let F=await I2.store.getAll.query();if(F.length===0)console.log("no proxies configured yet.");else{let w=L3(["id","name","path"]);w.push(...F.map((J)=>[J.id,J.name,c6(Q0.GATEWAY_URL,J.path)])),console.log(w.toString())}})),D.command("get <proxyId>").description("Show proxy details").action(_1(async(F)=>{let w=await I2.store.get.query({proxyId:F});if(!w){console.error(`proxy ${F} not found`);return}console.log(`id=${w.id}`),console.log(`name=${w.name}`);let J=L3(["name","transport","url/command"]);J.push(...w.servers.map((p)=>[p.name,p.transport.type,p.transport.type==="http"?p.transport.url:[p.transport.command,...p.transport.args??[]].join(" ")])),console.log(J.toString())})),D.command("create <name>").description("Create a new proxy").action(_1(async(F)=>{let w=await I2.store.create.mutate({name:F,servers:[]});console.log(`proxy ${w.id} created`)})),D.command("destroy <proxyId>").description("Delete a proxy").action(_1(async(F)=>{await I2.store.delete.mutate({proxyId:F}),console.log(`proxy ${F} deleted`)})),C61(D),D.command("disconnect <proxyId>").description("Disconnect a proxy from an MCP client").addOption(L8({flags:"-t,--target <target>",description:"target client",choices:["claude","cursor","vscode"]}).makeOptionMandatory()).action(_1(async(F,w)=>{let J=await I2.store.get.query({proxyId:F}),B=await(await y2(w.target)).uninstall(J.id);console.log(B)})),q61(D),Sw1(D),D.command("http2stdio <url>").description("Proxy an HTTP connection (sse or streamable) to a stdio stream").action(async(F)=>{await k01(F)}),L61(D),dw1(D),O61(D)}var OH=q1("enrich/tools");async function jw1(D){let F=await D.entries.getEntries.query({pageIndex:0,pageSize:100});for(let w of F.entries){if(w.lastConnectionAttemptedAt){OH.info(`skipping ${w.name}, already processed`);continue}let J;try{J=await sJ0(w)}catch(p){let B=p instanceof Error?p.message:String(p);OH.error(`error enriching ${w.name}: ${B}`),await D.entries.updateEntry.mutate({id:w.id,isConnectable:!1,lastConnectionAttemptedAt:new Date,lastConnectionError:B});continue}await D.entries.updateEntry.mutate({id:w.id,isConnectable:!0,lastConnectionAttemptedAt:new Date,lastConnectionError:void 0,tools:J})}}async function sJ0(D){let F=D.transport,w=new s8(`${D.name}-client`);if(F.type==="stdio")await w.connectToStdio(F.command,F.args,{...process.env,...F.env});else if(F.type==="http")await w.connectToHTTP(F.url);else return[];OH.info(`connected to ${D.name}, fetching tools...`);let J=(await w.listTools()).tools.map(({name:p,description:B,inputSchema:Y})=>({name:p,description:B??"",inputSchema:{type:"object",properties:Y?.properties??{},required:Y?.required}}));return OH.info(`closing client ${D.name}`),await w.close(),J}function fw1(D){console.log(`
626
626
  ${G2(D.name.toUpperCase())}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@director.run/cli",
3
3
  "type": "module",
4
- "version": "0.0.41",
4
+ "version": "0.0.43",
5
5
  "files": ["dist", "README.md"],
6
6
  "bin": {
7
7
  "director": "./dist/cli.js"