@director.run/cli 0.0.26 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  > **Note:** This project is under active development and is not yet stable & may contain bugs. Please see our [contributing](https://docs.director.run/project/contributing) if you'd like to help.
11
11
 
12
- ## Pre-requisits
12
+ ## Prerequisites
13
13
 
14
14
  - Tested on MacOS (Sequoia 15.5) and Ubuntu (24.04.2 LTS)
15
15
  - [Node.js](https://nodejs.org/en/download) (tested on v23.7.0)
@@ -46,7 +46,7 @@ docker run \
46
46
  -d -p 8080:8080 \
47
47
  -v ./data:/root/.director \
48
48
  --name director \
49
- director/gateway:latest
49
+ barnaby/director:latest
50
50
 
51
51
  # Tail the logs
52
52
  docker logs -f director
package/dist/cli.js CHANGED
@@ -501,7 +501,7 @@ Please see the 3.x to 4.x migration guide for details on how to update your app.
501
501
  `)+$,Y=Q+1,Q=D.indexOf(`
502
502
  `,Y)}while(Q!==-1);return X+=D.slice(Y),X}var{stdout:Nx,stderr:Ex}=Vx,hW=Symbol("GENERATOR"),N9=Symbol("STYLER"),m7=Symbol("IS_EMPTY"),Ax=["ansi","ansi","ansi256","ansi16m"],E9=Object.create(null),g10=(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 $=Nx?Nx.level:0;D.level=F.level===void 0?$:F.level};var m10=(D)=>{let F=(...$)=>$.join(" ");return g10(F,D),Object.setPrototypeOf(F,c7.prototype),F};function c7(D){return m10(D)}Object.setPrototypeOf(c7.prototype,Function.prototype);for(let[D,F]of Object.entries(i8))E9[D]={get(){let $=IY(this,gW(F.open,F.close,this[N9]),this[m7]);return Object.defineProperty(this,D,{value:$}),$}};E9.visible={get(){let D=IY(this,this[N9],!0);return Object.defineProperty(this,"visible",{value:D}),D}};var yW=(D,F,$,...Q)=>{if(D==="rgb"){if(F==="ansi16m")return i8[$].ansi16m(...Q);if(F==="ansi256")return i8[$].ansi256(i8.rgbToAnsi256(...Q));return i8[$].ansi(i8.rgbToAnsi(...Q))}if(D==="hex")return yW("rgb",F,$,...i8.hexToRgb(...Q));return i8[$][D](...Q)},c10=["rgb","hex","ansi256"];for(let D of c10){E9[D]={get(){let{level:$}=this;return function(...Q){let Y=gW(yW(D,Ax[$],"color",...Q),i8.color.close,this[N9]);return IY(this,Y,this[m7])}}};let F="bg"+D[0].toUpperCase()+D.slice(1);E9[F]={get(){let{level:$}=this;return function(...Q){let Y=gW(yW(D,Ax[$],"bgColor",...Q),i8.bgColor.close,this[N9]);return IY(this,Y,this[m7])}}}}var i10=Object.defineProperties(()=>{},{...E9,level:{enumerable:!0,get(){return this[hW].level},set(D){this[hW].level=D}}}),gW=(D,F,$)=>{let Q,Y;if($===void 0)Q=D,Y=F;else Q=$.openAll+D,Y=F+$.closeAll;return{open:D,close:F,openAll:Q,closeAll:Y,parent:$}},IY=(D,F,$)=>{let Q=(...Y)=>p10(Q,Y.length===1?""+Y[0]:Y.join(" "));return Object.setPrototypeOf(Q,i10),Q[hW]=D,Q[N9]=F,Q[m7]=$,Q},p10=(D,F)=>{if(D.level<=0||!F)return D[m7]?"":F;let $=D[N9];if($===void 0)return F;let{openAll:Q,closeAll:Y}=$;if(F.includes("\x1B"))while($!==void 0)F=wx(F,$.close,$.open),$=$.parent;let X=F.indexOf(`
503
503
  `);if(X!==-1)F=qx(F,Y,Q,X);return Q+F+Y};Object.defineProperties(c7.prototype,E9);var l10=c7(),L_0=c7({level:Ex?Ex.level:0});var u1=l10;var Lx=a0(Ox(),1),N4=pW("#0099F7"),cW=pW("#F11712"),o10=pW("#00FF00"),iW=(D)=>u1.yellow(D);function pW(D){let F=s10(D);return($)=>`\x1B[38;5;${F}m${$}${Lx.default.reset("")}`}function s10(D){let F=parseInt(D.slice(1),16),$=Math.floor(F/65536)%256,Q=Math.floor(F/256)%256,Y=F%256;return 16+36*Math.round($/255*5)+6*Math.round(Q/255*5)+Math.round(Y/255*5)}function OD(D){return u1.white.bold(D)}var lW=" ".repeat(2);function Cx(D){let F=[];if(D._enableDebugCommands)F.push(iW("\uD83D\uDEA7 debug commands appear in yellow \uD83D\uDEA7")),F.push("");if(F.push(D.description().trim()),F.push(""),F.push(A9("usage")),F.push(lW+i7([D.parent?D.parent.name():"",D.name(),Ix("command"),"[subcommand]","[flags]"])),F.push(""),D.parent)F.push(A9(`${D.name()} commands`));else F.push(A9("core commands"));D.commands.toSorted((Q,Y)=>Number(!!Q.commands.length)-Number(!!Y.commands.length)).forEach((Q)=>{if(Q.commands.length)F.push(""),F.push(A9(Q.name())),Q.commands.forEach((Y)=>{F.push(Rx(Y))});else F.push(Rx(Q))}),F.push("");let $=[D._helpOption,...D.options].filter((Q)=>Q!==void 0);if($.length)F.push(A9("flags")),$.forEach((Q)=>{F.push(i7([lW,Q.flags,Tx(Q.description,Q.flags.length)]))}),F.push("");if(D.examples)F.push(A9("examples")),F.push(" "+D.examples.trim()),F.push("");return F.push(""),F.join(`
504
- `)}var A9=(D)=>{return OD(D.toLocaleUpperCase())},Rx=(D)=>{let F=D.registeredArguments.map((X)=>X.required?Ix(X.name()):Px(X.name())).filter((X)=>X!=="").join(" "),$=i7([i7([D.parent&&D.parent.parent?D.parent?.name():void 0,D.name()]),F,D.options.length?Px("options"):""]),Q=D.description()||cW("TODO"),Y=i7([lW,$,Tx(Q,$.length)]);return D._debug?iW(Y):Y},Tx=(D,F)=>{return" ".repeat(Math.max(0,45-F))+D},Ix=(D)=>["<",D,">"].join(""),Px=(D)=>["[",D,"]"].join(""),i7=(D)=>D.filter(Boolean).join(" ");class y2 extends bW{debug=!0;examples="";constructor(D){super(D);this.helpCommand(!1)}showDebugCommands(D){return this._enableDebugCommands=D,this}debugCommand(D,F){if(this._enableDebugCommands){let $=super.command(D,F);return $._enableDebugCommands=!0,$._debug=!0,$}else return new bW(D)}helpInformation(D){return Cx(this)}addExamples(D){this.examples=D}addCommand(D,F){return D._enableDebugCommands=this._enableDebugCommands,D._debug=this._debug,super.addCommand(D,F)}}function E4({flags:D,description:F,defaultValue:$,choices:Q,mandatory:Y}){let X=new Gx(D,F);return Y&&X.makeOptionMandatory(),$&&X.default($),Q&&X.choices(Q),X}var p7={name:"@director.run/cli",type:"module",version:"0.0.26",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:{"@inquirer/prompts":"^7.5.2","type-fest":"^4.40.0","@director.run/gateway":"workspace:*","@director.run/mcp":"workspace:*","@director.run/utilities":"workspace:*",chalk:"^5.4.1","cli-table3":"^0.6.5",commander:"^13.1.0",superjson:"^2.2.2"}};var _x=a0(d7(),1);class S0 extends Error{code;props;name="AppError";constructor(D,F,$={}){super(F);this.code=D;this.props=$}}function SY(D){return D instanceof S0}function jx(D){return D instanceof Error&&"statusCode"in D&&_x.isNumber(D.statusCode)}import _F0 from"node:os";import jF0 from"node:path";import nW from"node:fs";import{existsSync as t10}from"node:fs";import{dirname as e10}from"node:path";async function fY(D){if(!t10(D))throw new S0("NOT_FOUND",`file not found at: ${D}`);let F=await nW.promises.readFile(D),$=new TextDecoder().decode(F);return JSON.parse($)}async function m6(D,F){return await nW.promises.mkdir(e10(D),{recursive:!0}),nW.promises.writeFile(D,JSON.stringify(F,null,2))}import{exec as PF0,execSync as RP}from"node:child_process";import{existsSync as CF0}from"node:fs";import{promisify as TF0}from"node:util";var UX=a0(d7(),1),MX=a0(gz(),1),LP=a0(OP(),1);var xF0=process.env.LOG_LEVEL??(U4()?"silent":"info"),OF0=process.env.LOG_PRETTY!=="false",LF0=process.env.LOG_ERROR_STACK==="true",RF0=MX.default({level:xF0.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(SY(D))return{type:D.name,...UX.pick(D,"message","stack","code","props"),...D.cause?{cause:MX.default.stdSerializers.errWithCause(D)}:{}};let F=MX.default.stdSerializers.errWithCause(D);return LF0?F:UX.omit(F,"stack")}}},OF0?LP.default({colorize:!0,translateTime:"HH:MM:ss",ignore:"pid,hostname"}):void 0),u0=(D)=>RF0.child({name:D});function $F(D){return new Promise((F)=>setTimeout(F,D))}var wX=TF0(PF0),VX=u0("restartApp");async function T9(D){if(VX.info(`restarting ${D}...`),!IF0(D)){VX.info(`${D} is not running, skipping restart`);return}await wX(`osascript -e 'tell application "${D}" to quit'`),await $F(2000),await wX(`open -a ${D}`),VX.info(`${D} has been restarted`)}async function I9(D){VX.info(`opening ${D}`),await wX(`code "${D}"`)}function _9(D){try{let F=process.platform==="win32",$;switch(D){case"Claude":$="claude";break;case"Cursor":$="cursor";break;case"Visual Studio Code":$="code";break;default:$=D}let Q=F?`where ${$}`:`which ${$}`;return RP(Q,{stdio:"pipe",encoding:"utf8"}),!0}catch(F){return!1}}function j9(D){return CF0(D)}function IF0(D){try{return RP(`pgrep -x "${D}"`,{stdio:"pipe"}),!0}catch(F){return!1}}async function PP(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`,$=process.platform,Q;switch($){case"darwin":Q=`open "${F}"`;break;case"win32":Q=`start "" "${F}"`;break;case"linux":Q=`xdg-open "${F}"`;break;default:throw new Error(`Unsupported platform: ${$}`)}try{await wX(Q)}catch(Y){throw new Error(`Failed to open URL: ${Y instanceof Error?Y.message:"Unknown error"}`)}}var CP="director__";class n2{config;isInitialized;logger;configPath;name;constructor(D){this.configPath=D.configPath,this.isInitialized=!1,this.name=D.name,this.logger=u0(`client-configurator/${this.name}`)}async initialize(){if(this.isInitialized&&this.config)return;if(this.logger.info("initializing"),!await this.isClientPresent())throw new S0("COMMAND_NOT_FOUND",`${this.name} doesn't appear to be installed`,{name:this.name,configPath:this.configPath});if(!await this.isClientConfigPresent())throw new S0("FILE_NOT_FOUND",`${this.name} config file not found at ${this.configPath}`,{name:this.name,configPath:this.configPath});this.config=await fY(this.configPath),this.isInitialized=!0}async getStatus(){return{name:this.name,present:await this.isClientPresent(),configPresent:await this.isClientConfigPresent()}}createServerConfigKey(D){return`${CP}${D}`}isManagedConfigKey(D){return D.startsWith(CP)}}var SF0=jF0.join(_F0.homedir(),"Library/Application Support/Claude/claude_desktop_config.json");class OK extends n2{async isClientPresent(){return await _9("Claude")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||SF0,name:"claude"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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 I9(this.configPath)}async restart(){if(await this.initialize(),!U4())this.logger.info("restarting claude"),await T9("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=vF0.parse(D),this.logger.info(`writing config to ${this.configPath}`),await m6(this.configPath,this.config),await this.restart()}}var fF0=p.object({command:p.string().describe('The command to execute (e.g., "bun", "node")'),args:p.array(p.string()).describe("Command line arguments"),env:p.record(p.string()).optional().describe("Environment variables")}),vF0=p.object({mcpServers:p.record(p.string(),fF0).describe("Map of MCP server configurations")});import kF0 from"node:os";import bF0 from"node:path";var uF0=bF0.join(kF0.homedir(),".cursor/mcp.json");class LK extends n2{async isClientPresent(){return await _9("Cursor")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||uF0,name:"cursor"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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(),!U4())this.logger.info("restarting cursor"),await T9("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 S0("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await $F(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 openConfig(){this.logger.info("opening cursor config"),await I9(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 m6(this.configPath,D),this.config=D}}import hF0 from"node:fs";import yF0 from"node:os";import IP from"node:path";var gF0=IP.join(yF0.homedir(),"Library/Application Support/Code/User/settings.json");class RK extends n2{async isClientPresent(){return await _9("Visual Studio Code")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||gF0,name:"vscode"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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(),!U4())this.logger.info("restarting vscode"),await T9("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 S0("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await $F(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 I9(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=IP.dirname(this.configPath);await hF0.promises.mkdir(F,{recursive:!0}),await m6(this.configPath,D),this.config=D}}var QF;((Q)=>{Q.Claude="claude";Q.Cursor="cursor";Q.VSCode="vscode"})(QF||={});function BD(D,F={}){switch(D){case"claude":return new OK(F);case"cursor":return new LK(F);case"vscode":return new RK(F);default:throw new S0("BAD_REQUEST",`Client ${D} is not supported`)}}async function qX(){let D=await Promise.all(YF().map((F)=>BD(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 NX(){return await Promise.all(YF().map((D)=>BD(D)).map((D)=>D.getStatus()))}function YF(){return Object.values(QF)}async function _P(D){let F=await Promise.all(YF().map((Q)=>BD(Q))),$={["claude"]:!1,["cursor"]:!1,["vscode"]:!1};return await Promise.all(F.map(async(Q)=>{let Y=await Q.isInstalled(D);$[Q.name]=Y})),$}function XF(D){return typeof D==="object"&&D!==null&&"subscribe"in D}function GD(D){let F={subscribe($){let Q=null,Y=!1,X=!1,J=!1;function B(){if(Q===null){J=!0;return}if(X)return;if(X=!0,typeof Q==="function")Q();else if(Q)Q.unsubscribe()}if(Q=D({next(W){if(Y)return;$.next?.(W)},error(W){if(Y)return;Y=!0,$.error?.(W),B()},complete(){if(Y)return;Y=!0,$.complete?.(),B()}}),J)B();return{unsubscribe:B}},pipe(...$){return $.reduce(mF0,F)}};return F}function mF0(D,F){return F(D)}function PK(D){let F=new AbortController;return new Promise((Q,Y)=>{let X=!1;function J(){if(X)return;X=!0,B.unsubscribe()}F.signal.addEventListener("abort",()=>{Y(F.signal.reason)});let B=D.subscribe({next(W){X=!0,Q(W),J()},error(W){Y(W)},complete(){F.abort(),J()}})})}function cF0(D,F){let $=null,Q=()=>{$?.unsubscribe(),$=null,F.removeEventListener("abort",Q)};return new ReadableStream({start(Y){if($=D.subscribe({next(X){Y.enqueue({ok:!0,value:X})},error(X){Y.enqueue({ok:!1,error:X}),Y.close()},complete(){Y.close()}}),F.aborted)Q();else F.addEventListener("abort",Q,{once:!0})},cancel(){Q()}})}function EX(D,F){let Q=cF0(D,F).getReader(),Y={async next(){let X=await Q.read();if(X.done)return{value:void 0,done:!0};let{value:J}=X;if(!J.ok)throw J.error;return{value:J.value,done:!1}},async return(){return await Q.cancel(),{value:void 0,done:!0}}};return{[Symbol.asyncIterator](){return Y}}}function CK(D){return(F)=>{let $=0,Q=null,Y=[];function X(){if(Q)return;Q=F.subscribe({next(B){for(let W of Y)W.next?.(B)},error(B){for(let W of Y)W.error?.(B)},complete(){for(let B of Y)B.complete?.()}})}function J(){if($===0&&Q){let B=Q;Q=null,B.unsubscribe()}}return GD((B)=>{return $++,Y.push(B),X(),{unsubscribe(){$--,J();let W=Y.findIndex((z)=>z===B);if(W>-1)Y.splice(W,1)}}})}}var Yf0=Symbol();function JF(D){let F=D,$=[],Q=(J)=>{if(F!==void 0)J.next(F);$.push(J)},Y=(J)=>{$.splice($.indexOf(J),1)},X=GD((J)=>{return Q(J),()=>{Y(J)}});return X.next=(J)=>{if(F===J)return;F=J;for(let B of $)B.next(J)},X.get=()=>F,X}function TK(D){return GD((F)=>{function $(Y=0,X=D.op){let J=D.links[Y];if(!J)throw new Error("No more links to execute - did you forget to add an ending link?");return J({op:X,next(W){return $(Y+1,W)}})}return $().subscribe(F)})}var SP=()=>{},jP=(D)=>{if(Object.freeze)Object.freeze(D)};function fP(D,F,$){var Q,Y;let X=F.join(".");return(Q=$)[Y=X]??(Q[Y]=new Proxy(SP,{get(J,B){if(typeof B!=="string"||B==="then")return;return fP(D,[...F,B],$)},apply(J,B,W){let z=F[F.length-1],M={args:W,path:F};if(z==="call")M={args:W.length>=2?[W[1]]:[],path:F.slice(0,-1)};else if(z==="apply")M={args:W.length>=2?W[1]:[],path:F.slice(0,-1)};return jP(M.args),jP(M.path),D(M)}})),$[X]}var S9=(D)=>fP(D,[],Object.create(null)),AX=(D)=>{return new Proxy(SP,{get(F,$){if($==="then")return;return D($)}})};var n6=({shape:D})=>{return D};var J6={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,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},ZX={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-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"};var HF=Symbol();function BF(D,...F){let $=Object.assign(Object.create(null),D);for(let Q of F)for(let Y in Q){if(Y in $&&$[Y]!==Q[Y])throw new Error(`Duplicate key ${Y}`);$[Y]=Q[Y]}return $}function $1(D){return!!D&&!Array.isArray(D)&&typeof D==="object"}function GF(D){return typeof D==="function"}function WF(D){return Object.assign(Object.create(null),D)}var pF0=typeof Symbol==="function"&&!!Symbol.asyncIterator;function d2(D){return pF0&&$1(D)&&Symbol.asyncIterator in D}var mD=(D)=>D();function IK(D){return D}var vP={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,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 _K(D){return vP[D]??500}function jK(D){let F=Array.isArray(D)?D:[D],$=new Set(F.map((Y)=>{if("error"in Y&&$1(Y.error.data)){if(typeof Y.error.data?.httpStatus==="number")return Y.error.data.httpStatus;let X=ZX[Y.error.code];return _K(X)}return 200}));if($.size!==1)return 207;return $.values().next().value}function SK(D){return _K(D.code)}function n8(D){let{path:F,error:$,config:Q}=D,{code:Y}=D.error,X={message:$.message,code:J6[Y],data:{code:Y,httpStatus:SK($)}};if(Q.isDev&&typeof D.error.stack==="string")X.data.stack=D.error.stack;if(typeof F==="string")X.data.path=F;return Q.errorFormatter({...D,shape:X})}function kP(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}class bP extends Error{}function uP(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($1(D)){let $=new bP;for(let Q in D)$[Q]=D[Q];return $}return}function a1(D){if(D instanceof n0)return D;if(D instanceof Error&&D.name==="TRPCError")return D;let F=new n0({code:"INTERNAL_SERVER_ERROR",cause:D});if(D instanceof Error&&D.stack)F.stack=D.stack;return F}class n0 extends Error{constructor(D){let F=uP(D.cause),$=D.message??F?.message??D.code;if(super($,{cause:F}),kP(this,"cause",void 0),kP(this,"code",void 0),this.code=D.code,this.name="TRPCError",!this.cause)this.cause=F}}function fK(D){if("input"in D)return D;return{input:D,output:D}}var d6={input:{serialize:(D)=>D,deserialize:(D)=>D},output:{serialize:(D)=>D,deserialize:(D)=>D}};function hP(D,F){if("error"in F)return{...F,error:D.transformer.output.serialize(F.error)};if("data"in F.result)return{...F,result:{...F.result,data:D.transformer.output.serialize(F.result.data)}};return F}function a6(D,F){return Array.isArray(F)?F.map(($)=>hP(D,$)):hP(D,F)}function lF0(D,F){if("error"in D){let Q=F.deserialize(D.error);return{ok:!1,error:{...D,error:Q}}}return{ok:!0,result:{...D.result,...(!D.result.type||D.result.type==="data")&&{type:"data",data:F.deserialize(D.result.data)}}}}class xX extends Error{constructor(){super("Unable to transform response from server")}}function zF(D,F){let $;try{$=lF0(D,F)}catch{throw new xX}if(!$.ok&&(!$1($.error.error)||typeof $.error.error.code!=="number"))throw new xX;if($.ok&&!$1($.result))throw new xX;return $}var nF0=Symbol("lazy");function dF0(D){let F=Symbol(),$=F;return()=>{if($===F)$=D();return $}}function aF0(D){return typeof D==="function"&&nF0 in D}function oF0(D){return $1(D)&&$1(D._def)&&"router"in D._def}var sF0={_ctx:null,_errorShape:null,_meta:null,queries:{},mutations:{},subscriptions:{},errorFormatter:n6,transformer:d6},rF0=["then","call","apply"];function OX(D){function F($){let Q=new Set(Object.keys($).filter((U)=>rF0.includes(U)));if(Q.size>0)throw new Error("Reserved words used in `router({})` call: "+Array.from(Q).join(", "));let Y=WF({}),X=WF({});function J(U){return{ref:U.ref,load:dF0(async()=>{let q=await U.ref(),w=[...U.path,U.key],V=w.join(".");U.aggregate[U.key]=B(q._def.record,w),delete X[V];for(let[E,A]of Object.entries(q._def.lazy)){let R=[...w,E].join(".");X[R]=J({ref:A.ref,path:w,key:E,aggregate:U.aggregate[U.key]})}})}}function B(U,q=[]){let w=WF({});for(let[V,E]of Object.entries(U??{})){if(aF0(E)){X[[...q,V].join(".")]=J({path:q,ref:E,key:V,aggregate:w});continue}if(oF0(E)){w[V]=B(E._def.record,[...q,V]);continue}if(!tF0(E)){w[V]=B(E,[...q,V]);continue}let A=[...q,V].join(".");if(Y[A])throw new Error(`Duplicate key: ${A}`);Y[A]=E,w[V]=E}return w}let W=B($),z={_config:D,router:!0,procedures:Y,lazy:X,...sF0,record:W};return{...W,_def:z,createCaller:LX()({_def:z})}}return F}function tF0(D){return typeof D==="function"}async function f9(D,F){let{_def:$}=D,Q=$.procedures[F];while(!Q){let Y=Object.keys($.lazy).find((J)=>F.startsWith(J));if(!Y)return null;await $.lazy[Y].load(),Q=$.procedures[F]}return Q}function LX(){return function D(F){let{_def:$}=F;return function Q(Y,X){return S9(async({path:J,args:B})=>{let W=J.join(".");if(J.length===1&&J[0]==="_def")return $;let z=await f9(F,W),M=void 0;try{if(!z)throw new n0({code:"NOT_FOUND",message:`No procedure found on path "${J}"`});return M=GF(Y)?await Promise.resolve(Y()):Y,await z({path:W,getRawInput:async()=>B[0],ctx:M,type:z._def.type,signal:X?.signal})}catch(U){throw X?.onError?.({ctx:M,error:a1(U),input:B[0],path:W,type:z?._def.type??"unknown"}),U}})}}}function vK(...D){let F=BF({},...D.map((X)=>X._def.record)),$=D.reduce((X,J)=>{if(J._def._config.errorFormatter&&J._def._config.errorFormatter!==n6){if(X!==n6&&X!==J._def._config.errorFormatter)throw new Error("You seem to have several error formatters");return J._def._config.errorFormatter}return X},n6),Q=D.reduce((X,J)=>{if(J._def._config.transformer&&J._def._config.transformer!==d6){if(X!==d6&&X!==J._def._config.transformer)throw new Error("You seem to have several transformers");return J._def._config.transformer}return X},d6);return OX({errorFormatter:$,transformer:Q,isDev:D.every((X)=>X._def._config.isDev),allowOutsideOfServer:D.every((X)=>X._def._config.allowOutsideOfServer),isServer:D.every((X)=>X._def._config.isServer),$types:D[0]?._def._config.$types})(F)}function yP(D){try{if(D===null)return null;if(!$1(D))throw new Error("Expected object");let F=Object.entries(D).filter(([$,Q])=>typeof Q!=="string");if(F.length>0)throw new Error(`Expected connectionParams to be string values. Got ${F.map(([$,Q])=>`${$}: ${typeof Q}`).join(", ")}`);return D}catch(F){throw new n0({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:F})}}function kK(D){let F;try{F=JSON.parse(D)}catch($){throw new n0({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:$})}return yP(F)}function bK(D){let F=null,$=HF;return{read:async()=>{if($!==HF)return $;if(F===null)F=D().catch((Q)=>{if(Q instanceof n0)throw Q;throw new n0({code:"BAD_REQUEST",message:Q instanceof Error?Q.message:"Invalid input",cause:Q})});return $=await F,F=null,$},result:()=>{return $!==HF?$:void 0}}}var gP={isMatch(D){return!!D.headers.get("content-type")?.startsWith("application/json")},async parse(D){let{req:F}=D,$=D.searchParams.get("batch")==="1",Q=$?D.path.split(","):[D.path],Y=bK(async()=>{let M=void 0;if(F.method==="GET"){let q=D.searchParams.get("input");if(q)M=JSON.parse(q)}else M=await F.json();if(M===void 0)return{};if(!$)return{0:D.router._def._config.transformer.input.deserialize(M)};if(!$1(M))throw new n0({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});let U={};for(let q of Q.keys()){let w=M[q];if(w!==void 0)U[q]=D.router._def._config.transformer.input.deserialize(w)}return U}),X=await Promise.all(Q.map(async(M,U)=>{let q=await f9(D.router,M);return{path:M,procedure:q,getRawInput:async()=>{let V=(await Y.read())[U];if(q?._def.type==="subscription"){let E=D.headers.get("last-event-id")??D.searchParams.get("lastEventId")??D.searchParams.get("Last-Event-Id");if(E)if($1(V))V={...V,lastEventId:E};else V??(V={lastEventId:E})}return V},result:()=>{return Y.result()?.[U]}}})),J=new Set(X.map((M)=>M.procedure?._def.type).filter(Boolean));if(J.size>1)throw new n0({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(J).join(", ")}`});let B=J.values().next().value??"unknown",W=D.searchParams.get("connectionParams");return{isBatchCall:$,accept:F.headers.get("trpc-accept"),calls:X,type:B,connectionParams:W===null?null:kK(W),signal:F.signal,url:D.url}}},eF0={isMatch(D){return!!D.headers.get("content-type")?.startsWith("multipart/form-data")},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new n0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});let $=bK(async()=>{return await F.formData()}),Q=await f9(D.router,D.path);return{accept:null,calls:[{path:D.path,getRawInput:$.read,result:$.result,procedure:Q}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},D$0={isMatch(D){return!!D.headers.get("content-type")?.startsWith("application/octet-stream")},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new n0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});let $=bK(async()=>{return F.body});return{calls:[{path:D.path,getRawInput:$.read,result:$.result,procedure:await f9(D.router,D.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},F$0=[gP,eF0,D$0];function $$0(D){let F=F$0.find(($)=>$.isMatch(D));if(F)return F;if(!F&&D.method==="GET")return gP;throw new n0({code:"UNSUPPORTED_MEDIA_TYPE",message:D.headers.has("content-type")?`Unsupported content-type "${D.headers.get("content-type")}`:"Missing content-type header"})}async function uK(D){return await $$0(D.req).parse(D)}function KF(D){return $1(D)&&D.name==="AbortError"}function RX(D="AbortError"){throw new DOMException(D,"AbortError")}function PX(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}var mP,hK=new WeakMap,Q$0=()=>{};mP=Symbol.toStringTag;var Y$0=mP;class LD{subscribe(){let D,F,{settlement:$}=this;if($===null){if(this.subscribers===null)throw new Error("Unpromise settled but still has subscribers");let Q=J$0();this.subscribers=H$0(this.subscribers,Q),D=Q.promise,F=()=>{if(this.subscribers!==null)this.subscribers=G$0(this.subscribers,Q)}}else{let{status:Q}=$;if(Q==="fulfilled")D=Promise.resolve($.value);else D=Promise.reject($.reason);F=Q$0}return Object.assign(D,{unsubscribe:F})}then(D,F){let $=this.subscribe(),{unsubscribe:Q}=$;return Object.assign($.then(D,F),{unsubscribe:Q})}catch(D){let F=this.subscribe(),{unsubscribe:$}=F;return Object.assign(F.catch(D),{unsubscribe:$})}finally(D){let F=this.subscribe(),{unsubscribe:$}=F;return Object.assign(F.finally(D),{unsubscribe:$})}static proxy(D){let F=LD.getSubscribablePromise(D);return typeof F!=="undefined"?F:LD.createSubscribablePromise(D)}static createSubscribablePromise(D){let F=new LD(D);return hK.set(D,F),hK.set(F,F),F}static getSubscribablePromise(D){return hK.get(D)}static resolve(D){let F=typeof D==="object"&&D!==null&&"then"in D&&typeof D.then==="function"?D:Promise.resolve(D);return LD.proxy(F).subscribe()}static async any(D){let $=(Array.isArray(D)?D:[...D]).map(LD.resolve);try{return await Promise.any($)}finally{$.forEach(({unsubscribe:Q})=>{Q()})}}static async race(D){let $=(Array.isArray(D)?D:[...D]).map(LD.resolve);try{return await Promise.race($)}finally{$.forEach(({unsubscribe:Q})=>{Q()})}}static async raceReferences(D){let F=D.map(X$0);try{return await Promise.race(F)}finally{for(let $ of F)$.unsubscribe()}}constructor(D){if(PX(this,"promise",void 0),PX(this,"subscribers",[]),PX(this,"settlement",null),PX(this,Y$0,"Unpromise"),typeof D==="function")this.promise=new Promise(D);else this.promise=D;let F=this.promise.then(($)=>{let{subscribers:Q}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:$},Q?.forEach(({resolve:Y})=>{Y($)})});if("catch"in F)F.catch(($)=>{let{subscribers:Q}=this;this.subscribers=null,this.settlement={status:"rejected",reason:$},Q?.forEach(({reject:Y})=>{Y($)})})}}function X$0(D){return LD.proxy(D).then(()=>[D])}function J$0(){let D,F;return{promise:new Promise((Q,Y)=>{D=Q,F=Y}),resolve:D,reject:F}}function H$0(D,F){return[...D,F]}function B$0(D,F){return[...D.slice(0,F),...D.slice(F+1)]}function G$0(D,F){let $=D.indexOf(F);if($!==-1)return B$0(D,$);return D}var cP,iP;(cP=Symbol).dispose??(cP.dispose=Symbol());(iP=Symbol).asyncDispose??(iP.asyncDispose=Symbol());function CX(D,F){let $=D,Q=$[Symbol.dispose];return $[Symbol.dispose]=()=>{F(),Q?.()},$}function v9(D,F){let $=D,Q=$[Symbol.asyncDispose];return $[Symbol.asyncDispose]=async()=>{await F(),await Q?.()},$}var a2=Symbol();function k9(D){let F=null;return CX({start(){if(F)throw new Error("Timer already started");return new Promise((Q)=>{F=setTimeout(()=>Q(a2),D)})}},()=>{if(F)clearTimeout(F)})}function TX(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function yK(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(yK=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function o2(D){let F=D[Symbol.asyncIterator]();return v9(F,async()=>{await F.return?.()})}async function*gK(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=TX($,o2(D),!0),X=TX($,k9(F.maxDurationMs),!1).start(),J;while(!0){if(J=await LD.race([Q.next(),X]),J===a2)RX();if(J.done)return J;yield J.value,J=null}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=yK($);if(Q)await Q}}async function*mK(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=TX($,o2(D),!0),Y,X=TX($,k9(F.gracePeriodMs),!1),J=F.count,B=new Promise(()=>{});while(!0){if(Y=await LD.race([Q.next(),B]),Y===a2)RX();if(Y.done)return Y.value;if(yield Y.value,--J===0)B=X.start();Y=null}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=yK($);if(Q)await Q}}function MF(){let D,F;return{promise:new Promise((Q,Y)=>{D=Q,F=Y}),resolve:D,reject:F}}function W$0(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;{if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");Q=F[Symbol.dispose],Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else D.stack.push({async:!0});return F}function pP(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(pP=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function z$0(D,F){let $=D[Symbol.asyncIterator](),Q="idle";function Y(){Q="done",F=()=>{}}function X(){if(Q!=="idle")return;Q="pending",$.next().then((B)=>{if(B.done){Q="done",F({status:"return",value:B.value}),Y();return}Q="idle",F({status:"yield",value:B.value})}).catch((B)=>{F({status:"error",error:B}),Y()})}return{pull:X,destroy:async()=>{Y(),await $.return?.()}}}function lP(){let D="idle",F=MF(),$=[],Q=new Set,Y=[];function X(J){if(D!=="pending")return;let B=z$0(J,(W)=>{if(D!=="pending")return;switch(W.status){case"yield":Y.push([B,W]);break;case"return":Q.delete(B);break;case"error":Y.push([B,W]),Q.delete(B);break}F.resolve()});Q.add(B),B.pull()}return{add(J){switch(D){case"idle":$.push(J);break;case"pending":X(J);break}},async*[Symbol.asyncIterator](){let J={stack:[],error:void 0,hasError:!1};try{if(D!=="idle")throw new Error("Cannot iterate twice");D="pending";let B=W$0(J,v9({},async()=>{D="done";let W=[];if(await Promise.all(Array.from(Q.values()).map(async(z)=>{try{await z.destroy()}catch(M){W.push(M)}})),Y.length=0,Q.clear(),F.resolve(),W.length>0)throw new AggregateError(W)}),!0);while($.length>0)X($.shift());while(Q.size>0){await F.promise;while(Y.length>0){let[W,z]=Y.shift();switch(z.status){case"yield":yield z.value,W.pull();break;case"error":throw z.error}}F=MF()}}catch(B){J.error=B,J.hasError=!0}finally{let B=pP(J);if(B)await B}}}}function IX(D){let F=D[Symbol.asyncIterator]();return new ReadableStream({async cancel(){await F.return?.()},async pull($){let Q=await F.next();if(Q.done){$.close();return}$.enqueue(Q.value)}})}function nP(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function cK(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(cK=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}var s2=Symbol("ping");async function*_X(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=nP($,o2(D),!0),Y,X=Q.next();while(!0){let J={stack:[],error:void 0,hasError:!1};try{let B=nP(J,k9(F),!1);if(Y=await LD.race([X,B.start()]),Y===a2){yield s2;continue}if(Y.done)return Y.value;X=Q.next(),yield Y.value,Y=null}catch(B){J.error=B,J.hasError=!0}finally{cK(J)}}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=cK($);if(Q)await Q}}function K$0(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}function M$0(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function dP(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(dP=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function U$0(D){return Object.prototype.toString.call(D)==="[object Object]"}var V$0=0,w$0=1,q$0=0,N$0=1,E$0=0,A$0=1,Z$0=2;function jX(D){return($1(D)||GF(D))&&typeof D?.then==="function"&&typeof D?.catch==="function"}class aP extends Error{constructor(D){super("Max depth reached at path: "+D.join(".")),K$0(this,"path",void 0),this.path=D}}async function*x$0(D){let{data:F}=D,$=0,Q=0,Y=lP();function X(w){let V=$++,E=w(V);return Y.add(E),V}function J(w,V){return X(async function*(E){let A=W(V);if(A)w.catch((R)=>{D.onError?.({error:R,path:V})}),w=Promise.reject(A);try{let R=await w;yield[E,q$0,M(R,V)]}catch(R){D.onError?.({error:R,path:V}),yield[E,N$0,D.formatError?.({error:R,path:V})]}})}function B(w,V){return X(async function*(E){let A={stack:[],error:void 0,hasError:!1};try{let R=W(V);if(R)throw R;let C=M$0(A,o2(w),!0);try{while(!0){let T=await C.next();if(T.done){yield[E,E$0,M(T.value,V)];break}yield[E,A$0,M(T.value,V)]}}catch(T){D.onError?.({error:T,path:V}),yield[E,Z$0,D.formatError?.({error:T,path:V})]}}catch(R){A.error=R,A.hasError=!0}finally{let R=dP(A);if(R)await R}})}function W(w){if(D.maxDepth&&w.length>D.maxDepth)return new aP(w);return null}function z(w,V){if(jX(w))return[V$0,J(w,V)];if(d2(w)){if(D.maxDepth&&V.length>=D.maxDepth)throw new Error("Max depth reached");return[w$0,B(w,V)]}return null}function M(w,V){if(w===void 0)return[[]];let E=z(w,V);if(E)return[[Q],[null,...E]];if(!U$0(w))return[[w]];let A={},R=[];for(let[C,T]of Object.entries(w)){let j=z(T,[...V,C]);if(!j){A[C]=T;continue}A[C]=Q,R.push([C,...j])}return[[A],...R]}let U={};for(let[w,V]of Object.entries(F))U[w]=M(V,[w]);yield U;let q=Y;if(D.pingMs)q=_X(Y,D.pingMs);for await(let w of q)yield w}function iK(D){let F=IX(x$0(D)),{serialize:$}=D;if($)F=F.pipeThrough(new TransformStream({transform(Q,Y){if(Q===s2)Y.enqueue(s2);else Y.enqueue($(Q))}}));return F.pipeThrough(new TransformStream({transform(Q,Y){if(Q===s2)Y.enqueue(" ");else Y.enqueue(JSON.stringify(Q)+`
504
+ `)}var A9=(D)=>{return OD(D.toLocaleUpperCase())},Rx=(D)=>{let F=D.registeredArguments.map((X)=>X.required?Ix(X.name()):Px(X.name())).filter((X)=>X!=="").join(" "),$=i7([i7([D.parent&&D.parent.parent?D.parent?.name():void 0,D.name()]),F,D.options.length?Px("options"):""]),Q=D.description()||cW("TODO"),Y=i7([lW,$,Tx(Q,$.length)]);return D._debug?iW(Y):Y},Tx=(D,F)=>{return" ".repeat(Math.max(0,45-F))+D},Ix=(D)=>["<",D,">"].join(""),Px=(D)=>["[",D,"]"].join(""),i7=(D)=>D.filter(Boolean).join(" ");class y2 extends bW{debug=!0;examples="";constructor(D){super(D);this.helpCommand(!1)}showDebugCommands(D){return this._enableDebugCommands=D,this}debugCommand(D,F){if(this._enableDebugCommands){let $=super.command(D,F);return $._enableDebugCommands=!0,$._debug=!0,$}else return new bW(D)}helpInformation(D){return Cx(this)}addExamples(D){this.examples=D}addCommand(D,F){return D._enableDebugCommands=this._enableDebugCommands,D._debug=this._debug,super.addCommand(D,F)}}function E4({flags:D,description:F,defaultValue:$,choices:Q,mandatory:Y}){let X=new Gx(D,F);return Y&&X.makeOptionMandatory(),$&&X.default($),Q&&X.choices(Q),X}var p7={name:"@director.run/cli",type:"module",version:"0.0.28",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:{"@inquirer/prompts":"^7.5.2","type-fest":"^4.40.0","@director.run/gateway":"workspace:*","@director.run/mcp":"workspace:*","@director.run/utilities":"workspace:*",chalk:"^5.4.1","cli-table3":"^0.6.5",commander:"^13.1.0",superjson:"^2.2.2"}};var _x=a0(d7(),1);class S0 extends Error{code;props;name="AppError";constructor(D,F,$={}){super(F);this.code=D;this.props=$}}function SY(D){return D instanceof S0}function jx(D){return D instanceof Error&&"statusCode"in D&&_x.isNumber(D.statusCode)}import _F0 from"node:os";import jF0 from"node:path";import nW from"node:fs";import{existsSync as t10}from"node:fs";import{dirname as e10}from"node:path";async function fY(D){if(!t10(D))throw new S0("NOT_FOUND",`file not found at: ${D}`);let F=await nW.promises.readFile(D),$=new TextDecoder().decode(F);return JSON.parse($)}async function m6(D,F){return await nW.promises.mkdir(e10(D),{recursive:!0}),nW.promises.writeFile(D,JSON.stringify(F,null,2))}import{exec as PF0,execSync as RP}from"node:child_process";import{existsSync as CF0}from"node:fs";import{promisify as TF0}from"node:util";var UX=a0(d7(),1),MX=a0(gz(),1),LP=a0(OP(),1);var xF0=process.env.LOG_LEVEL??(U4()?"silent":"info"),OF0=process.env.LOG_PRETTY!=="false",LF0=process.env.LOG_ERROR_STACK==="true",RF0=MX.default({level:xF0.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(SY(D))return{type:D.name,...UX.pick(D,"message","stack","code","props"),...D.cause?{cause:MX.default.stdSerializers.errWithCause(D)}:{}};let F=MX.default.stdSerializers.errWithCause(D);return LF0?F:UX.omit(F,"stack")}}},OF0?LP.default({colorize:!0,translateTime:"HH:MM:ss",ignore:"pid,hostname"}):void 0),u0=(D)=>RF0.child({name:D});function $F(D){return new Promise((F)=>setTimeout(F,D))}var wX=TF0(PF0),VX=u0("restartApp");async function T9(D){if(VX.info(`restarting ${D}...`),!IF0(D)){VX.info(`${D} is not running, skipping restart`);return}await wX(`osascript -e 'tell application "${D}" to quit'`),await $F(2000),await wX(`open -a ${D}`),VX.info(`${D} has been restarted`)}async function I9(D){VX.info(`opening ${D}`),await wX(`code "${D}"`)}function _9(D){try{let F=process.platform==="win32",$;switch(D){case"Claude":$="claude";break;case"Cursor":$="cursor";break;case"Visual Studio Code":$="code";break;default:$=D}let Q=F?`where ${$}`:`which ${$}`;return RP(Q,{stdio:"pipe",encoding:"utf8"}),!0}catch(F){return!1}}function j9(D){return CF0(D)}function IF0(D){try{return RP(`pgrep -x "${D}"`,{stdio:"pipe"}),!0}catch(F){return!1}}async function PP(D){if(!D||typeof D!=="string")throw new Error("Invalid URL provided");let F=D.startsWith("http://")||D.startsWith("https://")?D:`https://${D}`,$=process.platform,Q;switch($){case"darwin":Q=`open "${F}"`;break;case"win32":Q=`start "" "${F}"`;break;case"linux":Q=`xdg-open "${F}"`;break;default:throw new Error(`Unsupported platform: ${$}`)}try{await wX(Q)}catch(Y){throw new Error(`Failed to open URL: ${Y instanceof Error?Y.message:"Unknown error"}`)}}var CP="director__";class n2{config;isInitialized;logger;configPath;name;constructor(D){this.configPath=D.configPath,this.isInitialized=!1,this.name=D.name,this.logger=u0(`client-configurator/${this.name}`)}async initialize(){if(this.isInitialized&&this.config)return;if(this.logger.info("initializing"),!await this.isClientPresent())throw new S0("COMMAND_NOT_FOUND",`${this.name} doesn't appear to be installed`,{name:this.name,configPath:this.configPath});if(!await this.isClientConfigPresent())throw new S0("FILE_NOT_FOUND",`${this.name} config file not found at ${this.configPath}`,{name:this.name,configPath:this.configPath});this.config=await fY(this.configPath),this.isInitialized=!0}async getStatus(){return{name:this.name,present:await this.isClientPresent(),configPresent:await this.isClientConfigPresent()}}createServerConfigKey(D){return`${CP}${D}`}isManagedConfigKey(D){return D.startsWith(CP)}}var SF0=jF0.join(_F0.homedir(),"Library/Application Support/Claude/claude_desktop_config.json");class OK extends n2{async isClientPresent(){return await _9("Claude")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||SF0,name:"claude"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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 I9(this.configPath)}async restart(){if(await this.initialize(),!U4())this.logger.info("restarting claude"),await T9("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=vF0.parse(D),this.logger.info(`writing config to ${this.configPath}`),await m6(this.configPath,this.config),await this.restart()}}var fF0=p.object({command:p.string().describe('The command to execute (e.g., "bun", "node")'),args:p.array(p.string()).describe("Command line arguments"),env:p.record(p.string()).optional().describe("Environment variables")}),vF0=p.object({mcpServers:p.record(p.string(),fF0).describe("Map of MCP server configurations")});import kF0 from"node:os";import bF0 from"node:path";var uF0=bF0.join(kF0.homedir(),".cursor/mcp.json");class LK extends n2{async isClientPresent(){return await _9("Cursor")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||uF0,name:"cursor"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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(),!U4())this.logger.info("restarting cursor"),await T9("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 S0("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await $F(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 openConfig(){this.logger.info("opening cursor config"),await I9(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 m6(this.configPath,D),this.config=D}}import hF0 from"node:fs";import yF0 from"node:os";import IP from"node:path";var gF0=IP.join(yF0.homedir(),"Library/Application Support/Code/User/settings.json");class RK extends n2{async isClientPresent(){return await _9("Visual Studio Code")}async isClientConfigPresent(){return await j9(this.configPath)}constructor(D){super({configPath:D.configPath||gF0,name:"vscode"})}async isInstalled(D){if(!await this.isClientPresent()||!await this.isClientConfigPresent())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 S0("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 S0("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(),!U4())this.logger.info("restarting vscode"),await T9("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 S0("NOT_FOUND",`server '${D}' is not installed`);await this.uninstall(D),await $F(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 I9(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=IP.dirname(this.configPath);await hF0.promises.mkdir(F,{recursive:!0}),await m6(this.configPath,D),this.config=D}}var QF;((Q)=>{Q.Claude="claude";Q.Cursor="cursor";Q.VSCode="vscode"})(QF||={});function BD(D,F={}){switch(D){case"claude":return new OK(F);case"cursor":return new LK(F);case"vscode":return new RK(F);default:throw new S0("BAD_REQUEST",`Client ${D} is not supported`)}}async function qX(){let D=await Promise.all(YF().map((F)=>BD(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 NX(){return await Promise.all(YF().map((D)=>BD(D)).map((D)=>D.getStatus()))}function YF(){return Object.values(QF)}async function _P(D){let F=await Promise.all(YF().map((Q)=>BD(Q))),$={["claude"]:!1,["cursor"]:!1,["vscode"]:!1};return await Promise.all(F.map(async(Q)=>{let Y=await Q.isInstalled(D);$[Q.name]=Y})),$}function XF(D){return typeof D==="object"&&D!==null&&"subscribe"in D}function GD(D){let F={subscribe($){let Q=null,Y=!1,X=!1,J=!1;function B(){if(Q===null){J=!0;return}if(X)return;if(X=!0,typeof Q==="function")Q();else if(Q)Q.unsubscribe()}if(Q=D({next(W){if(Y)return;$.next?.(W)},error(W){if(Y)return;Y=!0,$.error?.(W),B()},complete(){if(Y)return;Y=!0,$.complete?.(),B()}}),J)B();return{unsubscribe:B}},pipe(...$){return $.reduce(mF0,F)}};return F}function mF0(D,F){return F(D)}function PK(D){let F=new AbortController;return new Promise((Q,Y)=>{let X=!1;function J(){if(X)return;X=!0,B.unsubscribe()}F.signal.addEventListener("abort",()=>{Y(F.signal.reason)});let B=D.subscribe({next(W){X=!0,Q(W),J()},error(W){Y(W)},complete(){F.abort(),J()}})})}function cF0(D,F){let $=null,Q=()=>{$?.unsubscribe(),$=null,F.removeEventListener("abort",Q)};return new ReadableStream({start(Y){if($=D.subscribe({next(X){Y.enqueue({ok:!0,value:X})},error(X){Y.enqueue({ok:!1,error:X}),Y.close()},complete(){Y.close()}}),F.aborted)Q();else F.addEventListener("abort",Q,{once:!0})},cancel(){Q()}})}function EX(D,F){let Q=cF0(D,F).getReader(),Y={async next(){let X=await Q.read();if(X.done)return{value:void 0,done:!0};let{value:J}=X;if(!J.ok)throw J.error;return{value:J.value,done:!1}},async return(){return await Q.cancel(),{value:void 0,done:!0}}};return{[Symbol.asyncIterator](){return Y}}}function CK(D){return(F)=>{let $=0,Q=null,Y=[];function X(){if(Q)return;Q=F.subscribe({next(B){for(let W of Y)W.next?.(B)},error(B){for(let W of Y)W.error?.(B)},complete(){for(let B of Y)B.complete?.()}})}function J(){if($===0&&Q){let B=Q;Q=null,B.unsubscribe()}}return GD((B)=>{return $++,Y.push(B),X(),{unsubscribe(){$--,J();let W=Y.findIndex((z)=>z===B);if(W>-1)Y.splice(W,1)}}})}}var Yf0=Symbol();function JF(D){let F=D,$=[],Q=(J)=>{if(F!==void 0)J.next(F);$.push(J)},Y=(J)=>{$.splice($.indexOf(J),1)},X=GD((J)=>{return Q(J),()=>{Y(J)}});return X.next=(J)=>{if(F===J)return;F=J;for(let B of $)B.next(J)},X.get=()=>F,X}function TK(D){return GD((F)=>{function $(Y=0,X=D.op){let J=D.links[Y];if(!J)throw new Error("No more links to execute - did you forget to add an ending link?");return J({op:X,next(W){return $(Y+1,W)}})}return $().subscribe(F)})}var SP=()=>{},jP=(D)=>{if(Object.freeze)Object.freeze(D)};function fP(D,F,$){var Q,Y;let X=F.join(".");return(Q=$)[Y=X]??(Q[Y]=new Proxy(SP,{get(J,B){if(typeof B!=="string"||B==="then")return;return fP(D,[...F,B],$)},apply(J,B,W){let z=F[F.length-1],M={args:W,path:F};if(z==="call")M={args:W.length>=2?[W[1]]:[],path:F.slice(0,-1)};else if(z==="apply")M={args:W.length>=2?W[1]:[],path:F.slice(0,-1)};return jP(M.args),jP(M.path),D(M)}})),$[X]}var S9=(D)=>fP(D,[],Object.create(null)),AX=(D)=>{return new Proxy(SP,{get(F,$){if($==="then")return;return D($)}})};var n6=({shape:D})=>{return D};var J6={PARSE_ERROR:-32700,BAD_REQUEST:-32600,INTERNAL_SERVER_ERROR:-32603,NOT_IMPLEMENTED:-32603,BAD_GATEWAY:-32603,SERVICE_UNAVAILABLE:-32603,GATEWAY_TIMEOUT:-32603,UNAUTHORIZED:-32001,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},ZX={[-32700]:"PARSE_ERROR",[-32600]:"BAD_REQUEST",[-32603]:"INTERNAL_SERVER_ERROR",[-32001]:"UNAUTHORIZED",[-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"};var HF=Symbol();function BF(D,...F){let $=Object.assign(Object.create(null),D);for(let Q of F)for(let Y in Q){if(Y in $&&$[Y]!==Q[Y])throw new Error(`Duplicate key ${Y}`);$[Y]=Q[Y]}return $}function $1(D){return!!D&&!Array.isArray(D)&&typeof D==="object"}function GF(D){return typeof D==="function"}function WF(D){return Object.assign(Object.create(null),D)}var pF0=typeof Symbol==="function"&&!!Symbol.asyncIterator;function d2(D){return pF0&&$1(D)&&Symbol.asyncIterator in D}var mD=(D)=>D();function IK(D){return D}var vP={PARSE_ERROR:400,BAD_REQUEST:400,UNAUTHORIZED:401,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 _K(D){return vP[D]??500}function jK(D){let F=Array.isArray(D)?D:[D],$=new Set(F.map((Y)=>{if("error"in Y&&$1(Y.error.data)){if(typeof Y.error.data?.httpStatus==="number")return Y.error.data.httpStatus;let X=ZX[Y.error.code];return _K(X)}return 200}));if($.size!==1)return 207;return $.values().next().value}function SK(D){return _K(D.code)}function n8(D){let{path:F,error:$,config:Q}=D,{code:Y}=D.error,X={message:$.message,code:J6[Y],data:{code:Y,httpStatus:SK($)}};if(Q.isDev&&typeof D.error.stack==="string")X.data.stack=D.error.stack;if(typeof F==="string")X.data.path=F;return Q.errorFormatter({...D,shape:X})}function kP(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}class bP extends Error{}function uP(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($1(D)){let $=new bP;for(let Q in D)$[Q]=D[Q];return $}return}function a1(D){if(D instanceof n0)return D;if(D instanceof Error&&D.name==="TRPCError")return D;let F=new n0({code:"INTERNAL_SERVER_ERROR",cause:D});if(D instanceof Error&&D.stack)F.stack=D.stack;return F}class n0 extends Error{constructor(D){let F=uP(D.cause),$=D.message??F?.message??D.code;if(super($,{cause:F}),kP(this,"cause",void 0),kP(this,"code",void 0),this.code=D.code,this.name="TRPCError",!this.cause)this.cause=F}}function fK(D){if("input"in D)return D;return{input:D,output:D}}var d6={input:{serialize:(D)=>D,deserialize:(D)=>D},output:{serialize:(D)=>D,deserialize:(D)=>D}};function hP(D,F){if("error"in F)return{...F,error:D.transformer.output.serialize(F.error)};if("data"in F.result)return{...F,result:{...F.result,data:D.transformer.output.serialize(F.result.data)}};return F}function a6(D,F){return Array.isArray(F)?F.map(($)=>hP(D,$)):hP(D,F)}function lF0(D,F){if("error"in D){let Q=F.deserialize(D.error);return{ok:!1,error:{...D,error:Q}}}return{ok:!0,result:{...D.result,...(!D.result.type||D.result.type==="data")&&{type:"data",data:F.deserialize(D.result.data)}}}}class xX extends Error{constructor(){super("Unable to transform response from server")}}function zF(D,F){let $;try{$=lF0(D,F)}catch{throw new xX}if(!$.ok&&(!$1($.error.error)||typeof $.error.error.code!=="number"))throw new xX;if($.ok&&!$1($.result))throw new xX;return $}var nF0=Symbol("lazy");function dF0(D){let F=Symbol(),$=F;return()=>{if($===F)$=D();return $}}function aF0(D){return typeof D==="function"&&nF0 in D}function oF0(D){return $1(D)&&$1(D._def)&&"router"in D._def}var sF0={_ctx:null,_errorShape:null,_meta:null,queries:{},mutations:{},subscriptions:{},errorFormatter:n6,transformer:d6},rF0=["then","call","apply"];function OX(D){function F($){let Q=new Set(Object.keys($).filter((U)=>rF0.includes(U)));if(Q.size>0)throw new Error("Reserved words used in `router({})` call: "+Array.from(Q).join(", "));let Y=WF({}),X=WF({});function J(U){return{ref:U.ref,load:dF0(async()=>{let q=await U.ref(),w=[...U.path,U.key],V=w.join(".");U.aggregate[U.key]=B(q._def.record,w),delete X[V];for(let[E,A]of Object.entries(q._def.lazy)){let R=[...w,E].join(".");X[R]=J({ref:A.ref,path:w,key:E,aggregate:U.aggregate[U.key]})}})}}function B(U,q=[]){let w=WF({});for(let[V,E]of Object.entries(U??{})){if(aF0(E)){X[[...q,V].join(".")]=J({path:q,ref:E,key:V,aggregate:w});continue}if(oF0(E)){w[V]=B(E._def.record,[...q,V]);continue}if(!tF0(E)){w[V]=B(E,[...q,V]);continue}let A=[...q,V].join(".");if(Y[A])throw new Error(`Duplicate key: ${A}`);Y[A]=E,w[V]=E}return w}let W=B($),z={_config:D,router:!0,procedures:Y,lazy:X,...sF0,record:W};return{...W,_def:z,createCaller:LX()({_def:z})}}return F}function tF0(D){return typeof D==="function"}async function f9(D,F){let{_def:$}=D,Q=$.procedures[F];while(!Q){let Y=Object.keys($.lazy).find((J)=>F.startsWith(J));if(!Y)return null;await $.lazy[Y].load(),Q=$.procedures[F]}return Q}function LX(){return function D(F){let{_def:$}=F;return function Q(Y,X){return S9(async({path:J,args:B})=>{let W=J.join(".");if(J.length===1&&J[0]==="_def")return $;let z=await f9(F,W),M=void 0;try{if(!z)throw new n0({code:"NOT_FOUND",message:`No procedure found on path "${J}"`});return M=GF(Y)?await Promise.resolve(Y()):Y,await z({path:W,getRawInput:async()=>B[0],ctx:M,type:z._def.type,signal:X?.signal})}catch(U){throw X?.onError?.({ctx:M,error:a1(U),input:B[0],path:W,type:z?._def.type??"unknown"}),U}})}}}function vK(...D){let F=BF({},...D.map((X)=>X._def.record)),$=D.reduce((X,J)=>{if(J._def._config.errorFormatter&&J._def._config.errorFormatter!==n6){if(X!==n6&&X!==J._def._config.errorFormatter)throw new Error("You seem to have several error formatters");return J._def._config.errorFormatter}return X},n6),Q=D.reduce((X,J)=>{if(J._def._config.transformer&&J._def._config.transformer!==d6){if(X!==d6&&X!==J._def._config.transformer)throw new Error("You seem to have several transformers");return J._def._config.transformer}return X},d6);return OX({errorFormatter:$,transformer:Q,isDev:D.every((X)=>X._def._config.isDev),allowOutsideOfServer:D.every((X)=>X._def._config.allowOutsideOfServer),isServer:D.every((X)=>X._def._config.isServer),$types:D[0]?._def._config.$types})(F)}function yP(D){try{if(D===null)return null;if(!$1(D))throw new Error("Expected object");let F=Object.entries(D).filter(([$,Q])=>typeof Q!=="string");if(F.length>0)throw new Error(`Expected connectionParams to be string values. Got ${F.map(([$,Q])=>`${$}: ${typeof Q}`).join(", ")}`);return D}catch(F){throw new n0({code:"PARSE_ERROR",message:"Invalid connection params shape",cause:F})}}function kK(D){let F;try{F=JSON.parse(D)}catch($){throw new n0({code:"PARSE_ERROR",message:"Not JSON-parsable query params",cause:$})}return yP(F)}function bK(D){let F=null,$=HF;return{read:async()=>{if($!==HF)return $;if(F===null)F=D().catch((Q)=>{if(Q instanceof n0)throw Q;throw new n0({code:"BAD_REQUEST",message:Q instanceof Error?Q.message:"Invalid input",cause:Q})});return $=await F,F=null,$},result:()=>{return $!==HF?$:void 0}}}var gP={isMatch(D){return!!D.headers.get("content-type")?.startsWith("application/json")},async parse(D){let{req:F}=D,$=D.searchParams.get("batch")==="1",Q=$?D.path.split(","):[D.path],Y=bK(async()=>{let M=void 0;if(F.method==="GET"){let q=D.searchParams.get("input");if(q)M=JSON.parse(q)}else M=await F.json();if(M===void 0)return{};if(!$)return{0:D.router._def._config.transformer.input.deserialize(M)};if(!$1(M))throw new n0({code:"BAD_REQUEST",message:'"input" needs to be an object when doing a batch call'});let U={};for(let q of Q.keys()){let w=M[q];if(w!==void 0)U[q]=D.router._def._config.transformer.input.deserialize(w)}return U}),X=await Promise.all(Q.map(async(M,U)=>{let q=await f9(D.router,M);return{path:M,procedure:q,getRawInput:async()=>{let V=(await Y.read())[U];if(q?._def.type==="subscription"){let E=D.headers.get("last-event-id")??D.searchParams.get("lastEventId")??D.searchParams.get("Last-Event-Id");if(E)if($1(V))V={...V,lastEventId:E};else V??(V={lastEventId:E})}return V},result:()=>{return Y.result()?.[U]}}})),J=new Set(X.map((M)=>M.procedure?._def.type).filter(Boolean));if(J.size>1)throw new n0({code:"BAD_REQUEST",message:`Cannot mix procedure types in call: ${Array.from(J).join(", ")}`});let B=J.values().next().value??"unknown",W=D.searchParams.get("connectionParams");return{isBatchCall:$,accept:F.headers.get("trpc-accept"),calls:X,type:B,connectionParams:W===null?null:kK(W),signal:F.signal,url:D.url}}},eF0={isMatch(D){return!!D.headers.get("content-type")?.startsWith("multipart/form-data")},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new n0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for multipart/form-data requests"});let $=bK(async()=>{return await F.formData()}),Q=await f9(D.router,D.path);return{accept:null,calls:[{path:D.path,getRawInput:$.read,result:$.result,procedure:Q}],isBatchCall:!1,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},D$0={isMatch(D){return!!D.headers.get("content-type")?.startsWith("application/octet-stream")},async parse(D){let{req:F}=D;if(F.method!=="POST")throw new n0({code:"METHOD_NOT_SUPPORTED",message:"Only POST requests are supported for application/octet-stream requests"});let $=bK(async()=>{return F.body});return{calls:[{path:D.path,getRawInput:$.read,result:$.result,procedure:await f9(D.router,D.path)}],isBatchCall:!1,accept:null,type:"mutation",connectionParams:null,signal:F.signal,url:D.url}}},F$0=[gP,eF0,D$0];function $$0(D){let F=F$0.find(($)=>$.isMatch(D));if(F)return F;if(!F&&D.method==="GET")return gP;throw new n0({code:"UNSUPPORTED_MEDIA_TYPE",message:D.headers.has("content-type")?`Unsupported content-type "${D.headers.get("content-type")}`:"Missing content-type header"})}async function uK(D){return await $$0(D.req).parse(D)}function KF(D){return $1(D)&&D.name==="AbortError"}function RX(D="AbortError"){throw new DOMException(D,"AbortError")}function PX(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}var mP,hK=new WeakMap,Q$0=()=>{};mP=Symbol.toStringTag;var Y$0=mP;class LD{subscribe(){let D,F,{settlement:$}=this;if($===null){if(this.subscribers===null)throw new Error("Unpromise settled but still has subscribers");let Q=J$0();this.subscribers=H$0(this.subscribers,Q),D=Q.promise,F=()=>{if(this.subscribers!==null)this.subscribers=G$0(this.subscribers,Q)}}else{let{status:Q}=$;if(Q==="fulfilled")D=Promise.resolve($.value);else D=Promise.reject($.reason);F=Q$0}return Object.assign(D,{unsubscribe:F})}then(D,F){let $=this.subscribe(),{unsubscribe:Q}=$;return Object.assign($.then(D,F),{unsubscribe:Q})}catch(D){let F=this.subscribe(),{unsubscribe:$}=F;return Object.assign(F.catch(D),{unsubscribe:$})}finally(D){let F=this.subscribe(),{unsubscribe:$}=F;return Object.assign(F.finally(D),{unsubscribe:$})}static proxy(D){let F=LD.getSubscribablePromise(D);return typeof F!=="undefined"?F:LD.createSubscribablePromise(D)}static createSubscribablePromise(D){let F=new LD(D);return hK.set(D,F),hK.set(F,F),F}static getSubscribablePromise(D){return hK.get(D)}static resolve(D){let F=typeof D==="object"&&D!==null&&"then"in D&&typeof D.then==="function"?D:Promise.resolve(D);return LD.proxy(F).subscribe()}static async any(D){let $=(Array.isArray(D)?D:[...D]).map(LD.resolve);try{return await Promise.any($)}finally{$.forEach(({unsubscribe:Q})=>{Q()})}}static async race(D){let $=(Array.isArray(D)?D:[...D]).map(LD.resolve);try{return await Promise.race($)}finally{$.forEach(({unsubscribe:Q})=>{Q()})}}static async raceReferences(D){let F=D.map(X$0);try{return await Promise.race(F)}finally{for(let $ of F)$.unsubscribe()}}constructor(D){if(PX(this,"promise",void 0),PX(this,"subscribers",[]),PX(this,"settlement",null),PX(this,Y$0,"Unpromise"),typeof D==="function")this.promise=new Promise(D);else this.promise=D;let F=this.promise.then(($)=>{let{subscribers:Q}=this;this.subscribers=null,this.settlement={status:"fulfilled",value:$},Q?.forEach(({resolve:Y})=>{Y($)})});if("catch"in F)F.catch(($)=>{let{subscribers:Q}=this;this.subscribers=null,this.settlement={status:"rejected",reason:$},Q?.forEach(({reject:Y})=>{Y($)})})}}function X$0(D){return LD.proxy(D).then(()=>[D])}function J$0(){let D,F;return{promise:new Promise((Q,Y)=>{D=Q,F=Y}),resolve:D,reject:F}}function H$0(D,F){return[...D,F]}function B$0(D,F){return[...D.slice(0,F),...D.slice(F+1)]}function G$0(D,F){let $=D.indexOf(F);if($!==-1)return B$0(D,$);return D}var cP,iP;(cP=Symbol).dispose??(cP.dispose=Symbol());(iP=Symbol).asyncDispose??(iP.asyncDispose=Symbol());function CX(D,F){let $=D,Q=$[Symbol.dispose];return $[Symbol.dispose]=()=>{F(),Q?.()},$}function v9(D,F){let $=D,Q=$[Symbol.asyncDispose];return $[Symbol.asyncDispose]=async()=>{await F(),await Q?.()},$}var a2=Symbol();function k9(D){let F=null;return CX({start(){if(F)throw new Error("Timer already started");return new Promise((Q)=>{F=setTimeout(()=>Q(a2),D)})}},()=>{if(F)clearTimeout(F)})}function TX(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function yK(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(yK=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function o2(D){let F=D[Symbol.asyncIterator]();return v9(F,async()=>{await F.return?.()})}async function*gK(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=TX($,o2(D),!0),X=TX($,k9(F.maxDurationMs),!1).start(),J;while(!0){if(J=await LD.race([Q.next(),X]),J===a2)RX();if(J.done)return J;yield J.value,J=null}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=yK($);if(Q)await Q}}async function*mK(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=TX($,o2(D),!0),Y,X=TX($,k9(F.gracePeriodMs),!1),J=F.count,B=new Promise(()=>{});while(!0){if(Y=await LD.race([Q.next(),B]),Y===a2)RX();if(Y.done)return Y.value;if(yield Y.value,--J===0)B=X.start();Y=null}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=yK($);if(Q)await Q}}function MF(){let D,F;return{promise:new Promise((Q,Y)=>{D=Q,F=Y}),resolve:D,reject:F}}function W$0(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;{if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");Q=F[Symbol.dispose],Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else D.stack.push({async:!0});return F}function pP(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(pP=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function z$0(D,F){let $=D[Symbol.asyncIterator](),Q="idle";function Y(){Q="done",F=()=>{}}function X(){if(Q!=="idle")return;Q="pending",$.next().then((B)=>{if(B.done){Q="done",F({status:"return",value:B.value}),Y();return}Q="idle",F({status:"yield",value:B.value})}).catch((B)=>{F({status:"error",error:B}),Y()})}return{pull:X,destroy:async()=>{Y(),await $.return?.()}}}function lP(){let D="idle",F=MF(),$=[],Q=new Set,Y=[];function X(J){if(D!=="pending")return;let B=z$0(J,(W)=>{if(D!=="pending")return;switch(W.status){case"yield":Y.push([B,W]);break;case"return":Q.delete(B);break;case"error":Y.push([B,W]),Q.delete(B);break}F.resolve()});Q.add(B),B.pull()}return{add(J){switch(D){case"idle":$.push(J);break;case"pending":X(J);break}},async*[Symbol.asyncIterator](){let J={stack:[],error:void 0,hasError:!1};try{if(D!=="idle")throw new Error("Cannot iterate twice");D="pending";let B=W$0(J,v9({},async()=>{D="done";let W=[];if(await Promise.all(Array.from(Q.values()).map(async(z)=>{try{await z.destroy()}catch(M){W.push(M)}})),Y.length=0,Q.clear(),F.resolve(),W.length>0)throw new AggregateError(W)}),!0);while($.length>0)X($.shift());while(Q.size>0){await F.promise;while(Y.length>0){let[W,z]=Y.shift();switch(z.status){case"yield":yield z.value,W.pull();break;case"error":throw z.error}}F=MF()}}catch(B){J.error=B,J.hasError=!0}finally{let B=pP(J);if(B)await B}}}}function IX(D){let F=D[Symbol.asyncIterator]();return new ReadableStream({async cancel(){await F.return?.()},async pull($){let Q=await F.next();if(Q.done){$.close();return}$.enqueue(Q.value)}})}function nP(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function cK(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(cK=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}var s2=Symbol("ping");async function*_X(D,F){let $={stack:[],error:void 0,hasError:!1};try{let Q=nP($,o2(D),!0),Y,X=Q.next();while(!0){let J={stack:[],error:void 0,hasError:!1};try{let B=nP(J,k9(F),!1);if(Y=await LD.race([X,B.start()]),Y===a2){yield s2;continue}if(Y.done)return Y.value;X=Q.next(),yield Y.value,Y=null}catch(B){J.error=B,J.hasError=!0}finally{cK(J)}}}catch(Q){$.error=Q,$.hasError=!0}finally{let Q=cK($);if(Q)await Q}}function K$0(D,F,$){if(F in D)Object.defineProperty(D,F,{value:$,enumerable:!0,configurable:!0,writable:!0});else D[F]=$;return D}function M$0(D,F,$){if(F!==null&&F!==void 0){if(typeof F!=="object"&&typeof F!=="function")throw new TypeError("Object expected.");var Q,Y;if($){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=F[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");if(Q=F[Symbol.dispose],$)Y=Q}if(typeof Q!=="function")throw new TypeError("Object not disposable.");if(Y)Q=function(){try{Y.call(this)}catch(X){return Promise.reject(X)}};D.stack.push({value:F,dispose:Q,async:$})}else if($)D.stack.push({async:!0});return F}function dP(D){var F=typeof SuppressedError==="function"?SuppressedError:function($,Q,Y){var X=new Error(Y);return X.name="SuppressedError",X.error=$,X.suppressed=Q,X};return(dP=function $(Q){function Y(W){Q.error=Q.hasError?new F(W,Q.error,"An error was suppressed during disposal."):W,Q.hasError=!0}var X,J=0;function B(){while(X=Q.stack.pop())try{if(!X.async&&J===1)return J=0,Q.stack.push(X),Promise.resolve().then(B);if(X.dispose){var W=X.dispose.call(X.value);if(X.async)return J|=2,Promise.resolve(W).then(B,function(z){return Y(z),B()})}else J|=1}catch(z){Y(z)}if(J===1)return Q.hasError?Promise.reject(Q.error):Promise.resolve();if(Q.hasError)throw Q.error}return B()})(D)}function U$0(D){return Object.prototype.toString.call(D)==="[object Object]"}var V$0=0,w$0=1,q$0=0,N$0=1,E$0=0,A$0=1,Z$0=2;function jX(D){return($1(D)||GF(D))&&typeof D?.then==="function"&&typeof D?.catch==="function"}class aP extends Error{constructor(D){super("Max depth reached at path: "+D.join(".")),K$0(this,"path",void 0),this.path=D}}async function*x$0(D){let{data:F}=D,$=0,Q=0,Y=lP();function X(w){let V=$++,E=w(V);return Y.add(E),V}function J(w,V){return X(async function*(E){let A=W(V);if(A)w.catch((R)=>{D.onError?.({error:R,path:V})}),w=Promise.reject(A);try{let R=await w;yield[E,q$0,M(R,V)]}catch(R){D.onError?.({error:R,path:V}),yield[E,N$0,D.formatError?.({error:R,path:V})]}})}function B(w,V){return X(async function*(E){let A={stack:[],error:void 0,hasError:!1};try{let R=W(V);if(R)throw R;let C=M$0(A,o2(w),!0);try{while(!0){let T=await C.next();if(T.done){yield[E,E$0,M(T.value,V)];break}yield[E,A$0,M(T.value,V)]}}catch(T){D.onError?.({error:T,path:V}),yield[E,Z$0,D.formatError?.({error:T,path:V})]}}catch(R){A.error=R,A.hasError=!0}finally{let R=dP(A);if(R)await R}})}function W(w){if(D.maxDepth&&w.length>D.maxDepth)return new aP(w);return null}function z(w,V){if(jX(w))return[V$0,J(w,V)];if(d2(w)){if(D.maxDepth&&V.length>=D.maxDepth)throw new Error("Max depth reached");return[w$0,B(w,V)]}return null}function M(w,V){if(w===void 0)return[[]];let E=z(w,V);if(E)return[[Q],[null,...E]];if(!U$0(w))return[[w]];let A={},R=[];for(let[C,T]of Object.entries(w)){let j=z(T,[...V,C]);if(!j){A[C]=T;continue}A[C]=Q,R.push([C,...j])}return[[A],...R]}let U={};for(let[w,V]of Object.entries(F))U[w]=M(V,[w]);yield U;let q=Y;if(D.pingMs)q=_X(Y,D.pingMs);for await(let w of q)yield w}function iK(D){let F=IX(x$0(D)),{serialize:$}=D;if($)F=F.pipeThrough(new TransformStream({transform(Q,Y){if(Q===s2)Y.enqueue(s2);else Y.enqueue($(Q))}}));return F.pipeThrough(new TransformStream({transform(Q,Y){if(Q===s2)Y.enqueue(" ");else Y.enqueue(JSON.stringify(Q)+`
505
505
  `)}})).pipeThrough(new TextEncoderStream)}var O$0=Symbol();function SX(D){return Array.isArray(D)&&D[2]===O$0}var L$0="ping",R$0="serialized-error",P$0="connected",C$0="return";function pK(D){let{serialize:F=IK}=D,$={enabled:D.ping?.enabled??!1,intervalMs:D.ping?.intervalMs??1000},Q=D.client??{};if($.enabled&&Q.reconnectAfterInactivityMs&&$.intervalMs>Q.reconnectAfterInactivityMs)throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${$.intervalMs} client.reconnectAfterInactivityMs: ${Q.reconnectAfterInactivityMs}`);async function*Y(){yield{event:P$0,data:JSON.stringify(Q)};let B=D.data;if(D.emitAndEndImmediately)B=mK(B,{count:1,gracePeriodMs:1});if(D.maxDurationMs&&D.maxDurationMs>0&&D.maxDurationMs!==1/0)B=gK(B,{maxDurationMs:D.maxDurationMs});if($.enabled&&$.intervalMs!==1/0&&$.intervalMs>0)B=_X(B,$.intervalMs);let W,z;for await(W of B){if(W===s2){yield{event:L$0,data:""};continue}z=SX(W)?{id:W[0],data:W[1]}:{data:W},z.data=JSON.stringify(F(z.data)),yield z,W=null,z=null}}async function*X(){try{yield*Y(),yield{event:C$0,data:""}}catch(B){if(KF(B))return;let W=a1(B),z=D.formatError?.({error:W})??null;yield{event:R$0,data:JSON.stringify(F(z))}}}return IX(X()).pipeThrough(new TransformStream({transform(B,W){if("event"in B)W.enqueue(`event: ${B.event}
506
506
  `);if("data"in B)W.enqueue(`data: ${B.data}
507
507
  `);if("id"in B)W.enqueue(`id: ${B.id}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@director.run/cli",
3
3
  "type": "module",
4
- "version": "0.0.26",
4
+ "version": "0.0.28",
5
5
  "files": ["dist", "README.md"],
6
6
  "bin": {
7
7
  "director": "./dist/cli.js"