@farthershore/cli 0.31.0 → 0.31.1
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 +10 -9
- package/dist/index.js +32 -32
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._life
|
|
|
25
25
|
`),this.outputHelp({error:!0}));let i=r||{},n=i.exitCode||1,o=i.code||"commander.error";this._exit(n,o,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in H.env){let r=t.attributeName();(this.getOptionValue(r)===void 0||["default","config","env"].includes(this.getOptionValueSource(r)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,H.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new UI(this.options),r=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&r(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(n=>!r(n)).forEach(n=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(t){let r=`error: missing required argument '${t}'`;this.error(r,{code:"commander.missingArgument"})}optionMissingArgument(t){let r=`error: option '${t.flags}' argument missing`;this.error(r,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let r=`error: required option '${t.flags}' not specified`;this.error(r,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,r){let i=a=>{let c=a.attributeName(),u=this.getOptionValue(c),l=this.options.find(g=>g.negate&&c===g.attributeName()),d=this.options.find(g=>!g.negate&&c===g.attributeName());return l&&(l.presetArg===void 0&&u===!1||l.presetArg!==void 0&&u===l.presetArg)?l:d||a},n=a=>{let c=i(a),u=c.attributeName();return this.getOptionValueSource(u)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},o=`error: ${n(t)} cannot be used with ${n(r)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let r="";if(t.startsWith("--")&&this._showSuggestionAfterError){let n=[],o=this;do{let a=o.createHelp().visibleOptions(o).filter(c=>c.long).map(c=>c.long);n=n.concat(a),o=o.parent}while(o&&!o._enablePositionalOptions);r=Sf(t,n)}let i=`error: unknown option '${t}'${r}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let r=this.registeredArguments.length,i=r===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${r} argument${i} but got ${t.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],r="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(o=>{n.push(o.name()),o.alias()&&n.push(o.alias())}),r=Sf(t,n)}let i=`error: unknown command '${t}'${r}`;this.error(i,{code:"commander.unknownCommand"})}version(t,r,i){if(t===void 0)return this._version;this._version=t,r=r||"-V, --version",i=i||"output the version number";let n=this.createOption(r,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${t}
|
|
26
26
|
`),this._exit(0,"commander.version",t)}),this}description(t,r){return t===void 0&&r===void 0?this._description:(this._description=t,r&&(this._argsDescription=r),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let r=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(r=this.commands[this.commands.length-1]),t===r._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${n}'`)}return r._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(r=>this.alias(r)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let r=this.registeredArguments.map(i=>NI(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?r:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}nameFromFilename(t){return this._name=Ye.basename(t,Ye.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let r=this.createHelp(),i=this._getOutputContext(t);r.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let n=r.formatHelp(this,r);return i.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(t){t=t||{};let r=!!t.error,i,n,o;return r?(i=c=>this._outputConfiguration.writeErr(c),n=this._outputConfiguration.getErrHasColors(),o=this._outputConfiguration.getErrHelpWidth()):(i=c=>this._outputConfiguration.writeOut(c),n=this._outputConfiguration.getOutHasColors(),o=this._outputConfiguration.getOutHelpWidth()),{error:r,write:c=>(n||(c=this._outputConfiguration.stripColor(c)),i(c)),hasColors:n,helpWidth:o}}outputHelp(t){let r;typeof t=="function"&&(r=t,t=void 0);let i=this._getOutputContext(t),n={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(a=>a.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let o=this.helpInformation({error:i.error});if(r&&(o=r(o),typeof o!="string"&&!Buffer.isBuffer(o)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(o),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(a=>a.emit("afterAllHelp",n))}helpOption(t,r){return typeof t=="boolean"?(t?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(t=t??"-h, --help",r=r??"display help for command",this._helpOption=this.createOption(t,r),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this}help(t){this.outputHelp(t);let r=Number(H.exitCode??0);r===0&&t&&typeof t!="function"&&t.error&&(r=1),this._exit(r,"commander.help","(outputHelp)")}addHelpText(t,r){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
|
|
27
27
|
Expecting one of '${i.join("', '")}'`);let n=`${t}Help`;return this.on(n,o=>{let a;typeof r=="function"?a=r({error:o.error,command:o.command}):a=r,a&&o.write(`${a}
|
|
28
|
-
`)}),this}_outputHelpIfRequested(t){let r=this._getHelpOption();r&&t.find(n=>r.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function wf(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let r,i="127.0.0.1",n="9229",o;return(o=t.match(/^(--inspect(-brk)?)$/))!==null?r=o[1]:(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(r=o[1],/^\d+$/.test(o[3])?n=o[3]:i=o[3]):(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(r=o[1],i=o[3],n=o[4]),r&&n!=="0"?`${r}=${i}:${parseInt(n)+1}`:t})}function ba(){if(H.env.NO_COLOR||H.env.FORCE_COLOR==="0"||H.env.FORCE_COLOR==="false")return!1;if(H.env.FORCE_COLOR||H.env.CLICOLOR_FORCE!==void 0)return!0}_a.Command=ha;_a.useColor=ba});var Af=St(Oe=>{var{Argument:$f}=gi(),{Command:va}=xf(),{CommanderError:LI,InvalidArgumentError:Tf}=Jn(),{Help:jI}=ua(),{Option:Of}=pa();Oe.program=new va;Oe.createCommand=e=>new va(e);Oe.createOption=(e,t)=>new Of(e,t);Oe.createArgument=(e,t)=>new $f(e,t);Oe.Command=va;Oe.Option=Of;Oe.Argument=$f;Oe.Help=jI;Oe.CommanderError=LI;Oe.InvalidArgumentError=Tf;Oe.InvalidOptionArgumentError=Tf});var Rf=SI(Af(),1),{program:EP,createCommand:SP,createArgument:wP,createOption:xP,CommanderError:$P,InvalidArgumentError:TP,InvalidOptionArgumentError:OP,Command:Cf,Argument:AP,Option:RP,Help:CP}=Rf.default;import{readFile as oP}from"node:fs/promises";import{fileURLToPath as sP}from"node:url";import{dirname as aP,join as cP}from"node:path";var b=class extends Error{constructor(r,i,n){super(r);this.status=i;this.name="CliError",this.code=n?.code,this.details=n?.details,this.param=n?.param}status;code;details;param},nt=class extends Error{constructor(t,r){super(t,{cause:r}),this.name="CliTransportError"}};var Yn="x-fs-surface",Qn="cli",ya="x-farthershore-organization-id";function v(e){return encodeURIComponent(e)}function Q(e,t){let r=new URLSearchParams;for(let[n,o]of Object.entries(t))if(typeof o=="string")o&&r.set(n,o);else if(o!==void 0)for(let a of o)a&&r.append(n,a);let i=r.toString();return i?`${e}?${i}`:e}function bi(e){return{filter:e?.filters.map(({field:t,value:r})=>`${t}=${r}`),sort:e?.sort?`${e.sort.field}:${e.sort.direction}`:void 0,q:e?.q}}function Pf(e){let t=e.includes("?")?"&":"?";return`${e}${t}dry_run=true`}var BI=new Set([429,500,502,503,504]),MI=3,FI=3e4,Nf=200,KI=4e3,HI=(e,t)=>new Promise((r,i)=>{if(t?.aborted){i(new Error("Request aborted"));return}let n=setTimeout(()=>{t?.removeEventListener("abort",o),r()},e),o=()=>{clearTimeout(n),i(new Error("Request aborted"))};t?.addEventListener("abort",o,{once:!0})});function Df(e,t){if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.min(i*1e3,1e4)}return Math.min(Nf*2**(e-1),KI)+Math.floor(Math.random()*Nf)}function ka(e,t){let r=e.toUpperCase();return r==="GET"||r==="HEAD"?!0:"Idempotency-Key"in t}function Ft(e){let t=e.retry?.attempts??MI,r=e.retry?.sleep??HI;async function i(f,m,k){let A=m.signal??void 0,P=k?t:1,z;for(let U=1;U<=P;U++){let re=new AbortController,ie=A?AbortSignal.any([re.signal,A]):re.signal,Y=setTimeout(()=>re.abort(),FI);try{let K=await fetch(f,{...m,signal:ie});if(k&&U<P&&BI.has(K.status)){let oe=K.headers?.get?.("retry-after")??null;await r(Df(U,oe),A);continue}return K}catch(K){if(z=K,A?.aborted)throw new nt("Request aborted",K);if(k&&U<P){try{await r(Df(U,null),A)}catch(ta){throw new nt("Request aborted",ta)}continue}let oe=K instanceof Error?K.message:"Network request failed";throw new nt(oe,K)}finally{clearTimeout(Y)}}throw z}let n=null,o=e.token.startsWith("fscli_"),a=o||e.token.startsWith("mk_"),c;async function u(f){if(!o)throw new b("Organization switching requires a user CLI login.",400,{code:"AUTH_ORGANIZATION_UNAVAILABLE"});let m=await i(`${e.apiUrl}/auth/cli/organizations`,{method:"GET",headers:{Authorization:`Bearer ${e.token}`,[Yn]:Qn},signal:f},!0);if(!m.ok){let A=(await m.json().catch(()=>null))?.error,P=typeof A=="string"?{message:A}:A;throw new b(P?.message??m.statusText,m.status,{code:P?.code,details:P?.details})}return m.json()}async function l(f){if(!o)return e.organizationId??e.requiredOrganizationId;if(c)return c;let m=e.organizationId??e.requiredOrganizationId;if(!m)return;let A=(await u(f)).organizations.filter(z=>z.id===m||z.slug===m);if(A.length!==1)throw new b(`Organization '${m}' is not available.`,404,{code:"AUTH_ORGANIZATION_NOT_FOUND",param:"organization"});let P=A[0];if(e.requiredOrganizationId&&P.id!==e.requiredOrganizationId)throw new b("The requested organization does not own the business linked to this directory.",409,{code:"AUTH_ORGANIZATION_LINK_MISMATCH"});return c=P.id,P.id}async function d(f){let m=await l(f),k=await i(`${e.apiUrl}/auth/cli/exchange`,{method:"POST",headers:{Authorization:`Bearer ${e.token}`,"Content-Type":"application/json",[Yn]:Qn},body:m?JSON.stringify({organizationId:m}):void 0,signal:f},!1);if(!k.ok){let P=await k.json().catch(()=>null),z=P?.error,U=typeof z=="string"?{message:z}:z;throw new b(U?.message??k.statusText,k.status,{code:U?.code,details:U?.details??VI(P)})}let A=await k.json();if(n=A,!o&&e.requiredOrganizationId&&A.organizationId!==e.requiredOrganizationId)throw n=null,new b("The credential organization does not own the business linked to this directory.",409,{code:"AUTH_ORGANIZATION_LINK_MISMATCH"});return A}async function g(f,m){if(!a)return e.token;let k=n?Date.parse(n.expiresAt):0;return(!n||k-Date.now()<6e4)&&await d(m),n.accessToken}async function p(f,m,k,A,P){let z=await g(m,P),U=A?.dryRun?Pf(m):m,re={Authorization:`Bearer ${z}`,"Content-Type":"application/json",[Yn]:Qn};o&&n?.organizationId&&(re[ya]=n.organizationId),A?.idempotencyKey&&(re["Idempotency-Key"]=A.idempotencyKey);let ie=await i(`${e.apiUrl}${U}`,{method:f,headers:re,body:k?JSON.stringify(k):void 0,signal:P},A?.retryOnTransient===!1?!1:ka(f,re));if(!ie.ok){let K=(await ie.json().catch(()=>null))?.error,oe=typeof K=="string"?{message:K}:K;throw new b(oe?.message??ie.statusText,ie.status,{code:oe?.code,details:oe?.details})}if(ie.status!==204)return ie.json()}async function _(f,m,k,A,P){let z=await g(m),U=P?.dryRun?Pf(m):m,re={Authorization:`Bearer ${z}`,"Content-Type":A,[Yn]:Qn};o&&n?.organizationId&&(re[ya]=n.organizationId),P?.idempotencyKey&&(re["Idempotency-Key"]=P.idempotencyKey);let ie=await i(`${e.apiUrl}${U}`,{method:f,headers:re,body:k},P?.retryOnTransient===!1?!1:ka(f,re));if(!ie.ok){let K=(await ie.json().catch(()=>null))?.error,oe=typeof K=="string"?{message:K}:K;throw new b(oe?.message??ie.statusText,ie.status,{code:oe?.code,details:oe?.details})}if(ie.status!==204)return ie.json()}async function S(f,m){let A={Authorization:`Bearer ${await g(m)}`,[Yn]:Qn};o&&n?.organizationId&&(A[ya]=n.organizationId);let P=await i(`${e.apiUrl}${m}`,{method:f,headers:A},ka(f,A));if(!P.ok){let U=(await P.json().catch(()=>null))?.error,re=typeof U=="string"?{message:U}:U;throw new b(re?.message??P.statusText,P.status,{code:re?.code,details:re?.details})}return P.text()}return{exchangeCliToken:d,listCliOrganizations:u,selectedOrganizationId:async()=>{let f=await l();return f||(a&&!n&&await d(),n?.organizationId)},authWhoami:async f=>{if(a){let k=await p("GET","/management/whoami",void 0,void 0,f?.signal);return k.credentialType==="cli_session"?{kind:"cli_user",...k}:{kind:"maker",...k}}return{kind:"builder",...await p("POST","/builder/context/bootstrap",void 0,void 0,f?.signal)}},bootstrap:()=>p("POST","/builder/context/bootstrap"),listBuilderOrganizations:()=>p("GET","/builder/organizations"),createBuilderOrganization:(f,m)=>p("POST","/builder/organizations",f,m),listBuilderOrganizationMembers:(f,m,k)=>p("GET",Q(`/builder/organizations/${v(f)}/members`,{...bi(m),limit:k?String(k.limit):void 0,offset:k?String(k.offset):void 0})),listBuilderOrganizationRoles:(f,m)=>p("GET",Q(`/builder/organizations/${v(f)}/roles`,bi(m))),getBuilderOrganizationRole:(f,m)=>p("GET",`/builder/organizations/${v(f)}/roles/${v(m)}`),createBuilderOrganizationRole:(f,m,k)=>p("POST",`/builder/organizations/${v(f)}/roles`,m,k),updateBuilderOrganizationRole:(f,m,k)=>p("PATCH",`/builder/organizations/${v(f)}/roles/${v(m)}`,k),deleteBuilderOrganizationRole:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/roles/${v(m)}`),inviteBuilderOrganizationMember:(f,m,k)=>p("POST",`/builder/organizations/${v(f)}/invitations`,m,k),listBuilderInvitations:()=>p("GET","/builder/invitations"),revokeBuilderInvitation:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/invitations/${v(m)}`),acceptBuilderInvitation:(f,m)=>p("POST",`/builder/invitations/${v(f)}/accept`,m?{token:m}:void 0),updateBuilderOrganizationMember:(f,m,k)=>p("PATCH",`/builder/organizations/${v(f)}/members/${v(m)}`,{roleKey:k}),removeBuilderOrganizationMember:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/members/${v(m)}`),transferBuilderOrganizationOwnership:(f,m)=>p("POST",`/builder/organizations/${v(f)}/ownership/transfer`,{newOwnerUserId:m}),deleteBuilderOrganization:f=>p("DELETE",`/builder/organizations/${v(f)}`),getBuilderOrganizationOverview:f=>p("GET",`/builder/organizations/${v(f)}/overview`),listBuilderOrganizationBulletin:(f,m)=>p("GET",Q(`/builder/organizations/${v(f)}/bulletin`,{kind:m?.kind,status:m?.status,cursor:m?.cursor,limit:m?.limit!==void 0?String(m.limit):void 0})),listBuilderAuditLogs:(f,m)=>{let k=m?.businessId?`/builder/organizations/${v(f)}/businesses/${v(m.businessId)}/audit-logs`:`/builder/organizations/${v(f)}/audit-logs`;return p("GET",Q(k,{action:m?.action,actorUserId:m?.actorUserId,decision:m?.decision,from:m?.from,to:m?.to,cursor:m?.cursor,limit:m?.limit!==void 0?String(m.limit):void 0}))},exportBuilderAuditLogs:(f,m)=>{let k=m?.businessId?`/builder/organizations/${v(f)}/businesses/${v(m.businessId)}/audit-logs/export.csv`:`/builder/organizations/${v(f)}/audit-logs/export.csv`;return S("GET",Q(k,{action:m?.action,actorUserId:m?.actorUserId,decision:m?.decision,from:m?.from,to:m?.to,limit:m?.limit!==void 0?String(m.limit):void 0}))},listBusinesses:f=>p("GET",Q("/businesses",{limit:f?.limit!==void 0?String(f.limit):void 0,offset:f?.offset!==void 0?String(f.offset):void 0,...bi(f?.query)})),createBusiness:(f,m)=>p("POST","/businesses",f,m),updateBusiness:(f,m,k,A)=>p("PATCH",Q(`/businesses/${v(f)}`,{env:k?.env}),m,A),uploadBrandAsset:(f,m,k,A,P)=>_("PUT",`/businesses/${v(f)}/${v(m)}`,k,A,P),deleteBrandAsset:(f,m,k)=>p("DELETE",`/businesses/${v(f)}/${v(m)}`,void 0,k),publishBusiness:(f,m,k)=>p("POST",`/businesses/${v(f)}/publish`,m&&Object.keys(m).length>0?m:void 0,k),rollbackBusiness:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/rollback`,m,k),migratePlan:(f,m,k,A)=>p("POST",`/businesses/${v(f)}/plans/${v(m)}/migration-batches`,k,A),getBusiness:(f,m)=>p("GET",Q(`/businesses/${v(f)}`,{env:m?.env})),listBusinessConfigAttempts:f=>p("GET",`/businesses/${v(f)}/config-attempts`),listBusinessRoutes:(f,m)=>p("GET",Q(`/businesses/${v(f)}/routes`,{env:m?.env})),getBusinessContract:(f,m)=>p("GET",Q(`/businesses/${v(f)}/contract`,{env:m?.env})),getDeployments:f=>p("GET",`/businesses/${v(f)}/deployments`),listApplyTimeline:(f,m)=>p("GET",Q(`/businesses/${v(f)}/apply-timeline`,{env:m?.env})),proposeConsumerChangeSet:(f,m,k,A,P)=>p("POST",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets`,{env:A?.env}),k,P),listConsumerChangeSets:(f,m,k)=>p("GET",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets`,{env:k?.env,status:k?.status,cursor:k?.cursor,limit:k?.limit!==void 0?String(k.limit):void 0})),getConsumerChangeSet:(f,m,k,A)=>p("GET",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets/${v(k)}`,{env:A?.env})),previewConsumerChangeSet:(f,m,k,A)=>p("POST",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets/${v(k)}/preview`,{env:A?.env})),compileManifest:(f,m,k)=>p("POST",`/businesses/${v(f)}/manifest/compile`,{ir:m,...k?.env?{env:k.env}:{}}),previewPlanRelease:(f,m,k)=>p("POST",`/businesses/${v(f)}/plans/release-preview`,{ir:m,...k?.env?{env:k.env}:{}}),listEnvironments:(f,m)=>p("GET",Q(`/businesses/${v(f)}/environments`,{limit:m?.limit!==void 0?String(m.limit):void 0,offset:m?.offset!==void 0?String(m.offset):void 0,...bi(m?.query)})),createEnvironment:(f,m,k)=>p("POST",`/businesses/${v(f)}/environments`,m,k),deleteEnvironment:(f,m)=>p("DELETE",`/businesses/${v(f)}/environments/${v(m)}`),deleteBusiness:f=>p("DELETE",`/businesses/${v(f)}`),builderListConsumers:(f,m)=>p("GET",Q(`/businesses/${v(f)}/consumers`,{env:m?.env})),builderBlockConsumer:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/block`),builderRemoveConsumer:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/remove`),builderMigrateConsumerToLatest:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/migrate-latest`),builderAssignConsumerMemberRoles:(f,m,k,A)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/members/${v(k)}/roles`,{roles:A}),listPromoCodes:f=>p("GET",`/businesses/${v(f)}/promo-codes`),createPromoCode:(f,m)=>p("POST",`/businesses/${v(f)}/promo-codes`,m),updatePromoCode:(f,m,k)=>p("PATCH",`/businesses/${v(f)}/promo-codes/${v(m)}`,k),managementListPlans:f=>p("GET",`/management/businesses/${v(f)}/plans`),managementGetUsage:f=>p("GET",`/management/businesses/${v(f)}/usage`),analyticsQuery:(f,m)=>p("POST",`/businesses/${v(f)}/analytics/query`,m),managementListWebhooks:(f,m)=>p("GET",Q(`/management/businesses/${v(f)}/webhooks`,{limit:m?.limit})),managementCreateWebhook:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/webhooks`,m,k),managementUpdateWebhook:(f,m,k,A)=>p("PATCH",`/management/businesses/${v(f)}/webhooks/${v(m)}`,k,A),managementDeleteWebhook:(f,m)=>p("DELETE",`/management/businesses/${v(f)}/webhooks/${v(m)}`),managementTestWebhook:(f,m)=>p("POST",`/management/businesses/${v(f)}/webhooks/${v(m)}/test`),managementListWebhookDeliveries:(f,m,k)=>p("GET",Q(`/management/businesses/${v(f)}/webhooks/${v(m)}/deliveries`,{limit:k?.limit})),builderListBackends:f=>p("GET",`/businesses/${v(f)}/backends`),builderCreateBackend:(f,m,k)=>p("POST",`/businesses/${v(f)}/backends`,m,k),builderBindBackend:(f,m,k,A)=>p("PATCH",`/businesses/${v(f)}/backends/${v(m)}`,k,A),builderDeleteBackend:(f,m)=>p("DELETE",`/businesses/${v(f)}/backends/${v(m)}`),builderListRuntimeTokens:f=>p("GET",`/businesses/${v(f)}/runtime-tokens`),builderCreateRuntimeToken:(f,m,k)=>p("POST",`/businesses/${v(f)}/runtime-tokens`,m,k),builderRotateRuntimeToken:(f,m,k)=>p("POST",`/businesses/${v(f)}/runtime-tokens/${v(m)}/rotate`,void 0,k),builderRevokeRuntimeToken:(f,m)=>p("DELETE",`/businesses/${v(f)}/runtime-tokens/${v(m)}`),builderFrontendStatus:(f,m)=>p("GET",`/businesses/${v(f)}/frontend/status${m?`?environmentId=${encodeURIComponent(m)}`:""}`),builderFrontendReleases:(f,m)=>p("GET",`/businesses/${v(f)}/frontend/releases${m?`?environmentId=${encodeURIComponent(m)}`:""}`),builderFrontendRollback:(f,m,k)=>p("POST",`/businesses/${v(f)}/frontend/rollback`,m,k),builderListBulletin:(f,m)=>p("GET",Q(`/businesses/${v(f)}/bulletin`,{kind:m?.kind,status:m?.status,cursor:m?.cursor,limit:m?.limit})),builderGetBulletinPost:(f,m)=>p("GET",`/businesses/${v(f)}/bulletin/${v(m)}`),builderSetBulletinStatus:(f,m,k)=>p("PATCH",`/businesses/${v(f)}/bulletin/${v(m)}`,{status:k}),builderListAgents:f=>p("GET",`/businesses/${v(f)}/agents`),builderAgentStatus:(f,m)=>p("GET",`/businesses/${v(f)}/agents/${v(m)}`),builderAgentRunDetail:(f,m,k)=>p("GET",`/businesses/${v(f)}/agents/${v(m)}/runs/${v(k)}`),builderConfigureAgent:(f,m,k,A)=>p("PUT",`/businesses/${v(f)}/agents/${v(m)}`,k,A),builderBusinessVariables:async(f,m)=>(await p("GET",Q(`/businesses/${v(f)}/variables`,{environmentId:m}))).variables,builderCreateBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}`,k,A)).operation,builderRotateBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}/rotate`,k,A)).operation,builderRevokeBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}/revoke`,{environmentId:k,confirmation:"REVOKE"},A)).operation,builderDeleteBusinessVariable:async(f,m,k,A)=>(await p("DELETE",`/businesses/${v(f)}/variables/${v(m)}`,{environmentId:k,confirmation:"DELETE"},A)).operation,builderGetBusinessVariableOperation:async(f,m)=>(await p("GET",`/businesses/${v(f)}/variables/operations/${v(m)}`)).operation,getBusinessNotificationPreferences:f=>p("GET",`/businesses/${v(f)}/notification-preferences`),updateBusinessNotificationPreferences:(f,m)=>p("PATCH",`/businesses/${v(f)}/notification-preferences`,m),getBusinessTaxSettings:f=>p("GET",`/management/businesses/${v(f)}/tax-settings`),issueBusinessAuthContext:(f,m)=>p("POST",`/management/businesses/${v(f)}/auth/context-token`,{...m,actorType:"user"}),updateBusinessTaxSettings:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/tax-settings`,m,k),reportBusinessResourceCount:(f,m,k,A)=>p("PUT",`/management/businesses/${v(f)}/resources/${v(m)}/count`,k,A),explainBusinessDenial:(f,m)=>p("GET",`/management/businesses/${v(f)}/explain-denial/${v(m)}`),listBusinessDependents:(f,m)=>p("GET",Q(`/management/businesses/${v(f)}/dependents`,m)),replayBusinessPeriod:(f,m)=>p("POST","/replay",f,m),previewBusinessConfigRollback:(f,m)=>p("POST","/rollback-to-config",f,m),listAutomationRules:(f,m)=>p("GET",Q(`/businesses/${v(f)}/automation-rules`,{env:m?.env,cursor:m?.cursor,limit:m?.limit===void 0?void 0:String(m.limit)})),getAutomationRule:(f,m)=>p("GET",`/businesses/${v(f)}/automation-rules/${v(m)}`),createAutomationRule:(f,m,k)=>p("POST",`/businesses/${v(f)}/automation-rules`,m,k),updateAutomationRule:(f,m,k,A)=>p("PATCH",`/businesses/${v(f)}/automation-rules/${v(m)}`,k,A),deleteAutomationRule:(f,m)=>p("DELETE",`/businesses/${v(f)}/automation-rules/${v(m)}`),listKnowledgeIndex:f=>p("GET",Q("/knowledge/index",{cursor:f?.cursor,limit:f?.limit===void 0?void 0:String(f.limit)})),listBusinessKnowledgeIndex:(f,m)=>p("GET",Q(`/businesses/${v(f)}/knowledge/index`,{cursor:m?.cursor,limit:m?.limit===void 0?void 0:String(m.limit)})),issuePersonaBootstrapKey:async(f,m,k)=>p("POST",`/portal/businesses/${v(f)}/environments/${v(m)}/test/bootstrap-key`,k??{}),listPersonas:async(f,m)=>p("GET",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas`),revokePersona:async(f,m,k)=>p("DELETE",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas/${v(k)}`),rotatePersona:async(f,m,k)=>p("POST",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas/${v(k)}/rotate`),getBusinessConfig:(f,m)=>p("GET",Q(`/businesses/${v(f)}/config`,{format:"json",env:m?.env}))}}function VI(e){if(!e||typeof e!="object")return;let t=e,r=Array.isArray(t.errors)?t.errors:void 0,i=Array.isArray(t.warnings)?t.warnings:void 0;if(!(!r?.length&&!i?.length))return{...r?.length?{errors:r}:{},...i?.length?{warnings:i}:{}}}import{randomUUID as GI}from"node:crypto";import{chmodSync as Uf,existsSync as Lf,mkdirSync as ZI,readFileSync as jf,unlinkSync as WI,writeFileSync as Bf}from"node:fs";import*as Mf from"node:fs";import{homedir as qI}from"node:os";import{join as Xn}from"node:path";var zf="https://core.farthershore.com";var Kt=Xn(qI(),".farthershore"),Ea=Xn(Kt,"config.json"),_i=Xn(Kt,"credentials.json"),JI={renameSync:Mf.renameSync};function Sa(e){ZI(e,{recursive:!0,mode:448}),Uf(e,448)}var Ia={apiUrl:zf};function Ht(){if(Sa(Kt),!Lf(Ea))return Ia;try{let e=JSON.parse(jf(Ea,"utf-8"));return{...Ia,...e}}catch{return Ia}}var YI=new Set(["token","orgId","userId"]);function Ff(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).some(r=>!YI.has(r))?!1:typeof t.token=="string"&&t.token.length>0&&(t.orgId===void 0||typeof t.orgId=="string")&&(t.userId===void 0||typeof t.userId=="string")}function QI(e){try{let t=JSON.stringify(e,null,2);if(t===void 0||!Ff(JSON.parse(t)))throw new Error("invalid shape");return`${t}
|
|
28
|
+
`)}),this}_outputHelpIfRequested(t){let r=this._getHelpOption();r&&t.find(n=>r.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function wf(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let r,i="127.0.0.1",n="9229",o;return(o=t.match(/^(--inspect(-brk)?)$/))!==null?r=o[1]:(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(r=o[1],/^\d+$/.test(o[3])?n=o[3]:i=o[3]):(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(r=o[1],i=o[3],n=o[4]),r&&n!=="0"?`${r}=${i}:${parseInt(n)+1}`:t})}function ba(){if(H.env.NO_COLOR||H.env.FORCE_COLOR==="0"||H.env.FORCE_COLOR==="false")return!1;if(H.env.FORCE_COLOR||H.env.CLICOLOR_FORCE!==void 0)return!0}_a.Command=ha;_a.useColor=ba});var Af=St(Oe=>{var{Argument:$f}=gi(),{Command:va}=xf(),{CommanderError:LI,InvalidArgumentError:Tf}=Jn(),{Help:jI}=ua(),{Option:Of}=pa();Oe.program=new va;Oe.createCommand=e=>new va(e);Oe.createOption=(e,t)=>new Of(e,t);Oe.createArgument=(e,t)=>new $f(e,t);Oe.Command=va;Oe.Option=Of;Oe.Argument=$f;Oe.Help=jI;Oe.CommanderError=LI;Oe.InvalidArgumentError=Tf;Oe.InvalidOptionArgumentError=Tf});var Rf=SI(Af(),1),{program:xP,createCommand:$P,createArgument:TP,createOption:OP,CommanderError:AP,InvalidArgumentError:RP,InvalidOptionArgumentError:CP,Command:Cf,Argument:PP,Option:NP,Help:DP}=Rf.default;import{readFile as cP}from"node:fs/promises";import{fileURLToPath as uP}from"node:url";import{dirname as lP,join as dP}from"node:path";var b=class extends Error{constructor(r,i,n){super(r);this.status=i;this.name="CliError",this.code=n?.code,this.details=n?.details,this.param=n?.param}status;code;details;param},nt=class extends Error{constructor(t,r){super(t,{cause:r}),this.name="CliTransportError"}};var Yn="x-fs-surface",Qn="cli",ya="x-farthershore-organization-id";function v(e){return encodeURIComponent(e)}function Q(e,t){let r=new URLSearchParams;for(let[n,o]of Object.entries(t))if(typeof o=="string")o&&r.set(n,o);else if(o!==void 0)for(let a of o)a&&r.append(n,a);let i=r.toString();return i?`${e}?${i}`:e}function bi(e){return{filter:e?.filters.map(({field:t,value:r})=>`${t}=${r}`),sort:e?.sort?`${e.sort.field}:${e.sort.direction}`:void 0,q:e?.q}}function Pf(e){let t=e.includes("?")?"&":"?";return`${e}${t}dry_run=true`}var BI=new Set([429,500,502,503,504]),MI=3,FI=3e4,Nf=200,KI=4e3,HI=(e,t)=>new Promise((r,i)=>{if(t?.aborted){i(new Error("Request aborted"));return}let n=setTimeout(()=>{t?.removeEventListener("abort",o),r()},e),o=()=>{clearTimeout(n),i(new Error("Request aborted"))};t?.addEventListener("abort",o,{once:!0})});function Df(e,t){if(t){let i=Number(t);if(Number.isFinite(i)&&i>=0)return Math.min(i*1e3,1e4)}return Math.min(Nf*2**(e-1),KI)+Math.floor(Math.random()*Nf)}function ka(e,t){let r=e.toUpperCase();return r==="GET"||r==="HEAD"?!0:"Idempotency-Key"in t}function Ft(e){let t=e.retry?.attempts??MI,r=e.retry?.sleep??HI;async function i(f,m,k){let A=m.signal??void 0,P=k?t:1,z;for(let U=1;U<=P;U++){let re=new AbortController,ie=A?AbortSignal.any([re.signal,A]):re.signal,Y=setTimeout(()=>re.abort(),FI);try{let K=await fetch(f,{...m,signal:ie});if(k&&U<P&&BI.has(K.status)){let oe=K.headers?.get?.("retry-after")??null;await r(Df(U,oe),A);continue}return K}catch(K){if(z=K,A?.aborted)throw new nt("Request aborted",K);if(k&&U<P){try{await r(Df(U,null),A)}catch(ta){throw new nt("Request aborted",ta)}continue}let oe=K instanceof Error?K.message:"Network request failed";throw new nt(oe,K)}finally{clearTimeout(Y)}}throw z}let n=null,o=e.token.startsWith("fscli_"),a=o||e.token.startsWith("mk_"),c;async function u(f){if(!o)throw new b("Organization switching requires a user CLI login.",400,{code:"AUTH_ORGANIZATION_UNAVAILABLE"});let m=await i(`${e.apiUrl}/auth/cli/organizations`,{method:"GET",headers:{Authorization:`Bearer ${e.token}`,[Yn]:Qn},signal:f},!0);if(!m.ok){let A=(await m.json().catch(()=>null))?.error,P=typeof A=="string"?{message:A}:A;throw new b(P?.message??m.statusText,m.status,{code:P?.code,details:P?.details})}return m.json()}async function l(f){if(!o)return e.organizationId??e.requiredOrganizationId;if(c)return c;let m=e.organizationId??e.requiredOrganizationId;if(!m)return;let A=(await u(f)).organizations.filter(z=>z.id===m||z.slug===m);if(A.length!==1)throw new b(`Organization '${m}' is not available.`,404,{code:"AUTH_ORGANIZATION_NOT_FOUND",param:"organization"});let P=A[0];if(e.requiredOrganizationId&&P.id!==e.requiredOrganizationId)throw new b("The requested organization does not own the business linked to this directory.",409,{code:"AUTH_ORGANIZATION_LINK_MISMATCH"});return c=P.id,P.id}async function d(f){let m=await l(f),k=await i(`${e.apiUrl}/auth/cli/exchange`,{method:"POST",headers:{Authorization:`Bearer ${e.token}`,"Content-Type":"application/json",[Yn]:Qn},body:m?JSON.stringify({organizationId:m}):void 0,signal:f},!1);if(!k.ok){let P=await k.json().catch(()=>null),z=P?.error,U=typeof z=="string"?{message:z}:z;throw new b(U?.message??k.statusText,k.status,{code:U?.code,details:U?.details??VI(P)})}let A=await k.json();if(n=A,!o&&e.requiredOrganizationId&&A.organizationId!==e.requiredOrganizationId)throw n=null,new b("The credential organization does not own the business linked to this directory.",409,{code:"AUTH_ORGANIZATION_LINK_MISMATCH"});return A}async function g(f,m){if(!a)return e.token;let k=n?Date.parse(n.expiresAt):0;return(!n||k-Date.now()<6e4)&&await d(m),n.accessToken}async function p(f,m,k,A,P){let z=await g(m,P),U=A?.dryRun?Pf(m):m,re={Authorization:`Bearer ${z}`,"Content-Type":"application/json",[Yn]:Qn};o&&n?.organizationId&&(re[ya]=n.organizationId),A?.idempotencyKey&&(re["Idempotency-Key"]=A.idempotencyKey);let ie=await i(`${e.apiUrl}${U}`,{method:f,headers:re,body:k?JSON.stringify(k):void 0,signal:P},A?.retryOnTransient===!1?!1:ka(f,re));if(!ie.ok){let K=(await ie.json().catch(()=>null))?.error,oe=typeof K=="string"?{message:K}:K;throw new b(oe?.message??ie.statusText,ie.status,{code:oe?.code,details:oe?.details})}if(ie.status!==204)return ie.json()}async function _(f,m,k,A,P){let z=await g(m),U=P?.dryRun?Pf(m):m,re={Authorization:`Bearer ${z}`,"Content-Type":A,[Yn]:Qn};o&&n?.organizationId&&(re[ya]=n.organizationId),P?.idempotencyKey&&(re["Idempotency-Key"]=P.idempotencyKey);let ie=await i(`${e.apiUrl}${U}`,{method:f,headers:re,body:k},P?.retryOnTransient===!1?!1:ka(f,re));if(!ie.ok){let K=(await ie.json().catch(()=>null))?.error,oe=typeof K=="string"?{message:K}:K;throw new b(oe?.message??ie.statusText,ie.status,{code:oe?.code,details:oe?.details})}if(ie.status!==204)return ie.json()}async function S(f,m){let A={Authorization:`Bearer ${await g(m)}`,[Yn]:Qn};o&&n?.organizationId&&(A[ya]=n.organizationId);let P=await i(`${e.apiUrl}${m}`,{method:f,headers:A},ka(f,A));if(!P.ok){let U=(await P.json().catch(()=>null))?.error,re=typeof U=="string"?{message:U}:U;throw new b(re?.message??P.statusText,P.status,{code:re?.code,details:re?.details})}return P.text()}return{exchangeCliToken:d,listCliOrganizations:u,selectedOrganizationId:async()=>{let f=await l();return f||(a&&!n&&await d(),n?.organizationId)},authWhoami:async f=>{if(a){let k=await p("GET","/management/whoami",void 0,void 0,f?.signal);return k.credentialType==="cli_session"?{kind:"cli_user",...k}:{kind:"maker",...k}}return{kind:"builder",...await p("POST","/builder/context/bootstrap",void 0,void 0,f?.signal)}},bootstrap:()=>p("POST","/builder/context/bootstrap"),listBuilderOrganizations:()=>p("GET","/builder/organizations"),createBuilderOrganization:(f,m)=>p("POST","/builder/organizations",f,m),listBuilderOrganizationMembers:(f,m,k)=>p("GET",Q(`/builder/organizations/${v(f)}/members`,{...bi(m),limit:k?String(k.limit):void 0,offset:k?String(k.offset):void 0})),listBuilderOrganizationRoles:(f,m)=>p("GET",Q(`/builder/organizations/${v(f)}/roles`,bi(m))),getBuilderOrganizationRole:(f,m)=>p("GET",`/builder/organizations/${v(f)}/roles/${v(m)}`),createBuilderOrganizationRole:(f,m,k)=>p("POST",`/builder/organizations/${v(f)}/roles`,m,k),updateBuilderOrganizationRole:(f,m,k)=>p("PATCH",`/builder/organizations/${v(f)}/roles/${v(m)}`,k),deleteBuilderOrganizationRole:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/roles/${v(m)}`),inviteBuilderOrganizationMember:(f,m,k)=>p("POST",`/builder/organizations/${v(f)}/invitations`,m,k),listBuilderInvitations:()=>p("GET","/builder/invitations"),revokeBuilderInvitation:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/invitations/${v(m)}`),acceptBuilderInvitation:(f,m)=>p("POST",`/builder/invitations/${v(f)}/accept`,m?{token:m}:void 0),updateBuilderOrganizationMember:(f,m,k)=>p("PATCH",`/builder/organizations/${v(f)}/members/${v(m)}`,{roleKey:k}),removeBuilderOrganizationMember:(f,m)=>p("DELETE",`/builder/organizations/${v(f)}/members/${v(m)}`),transferBuilderOrganizationOwnership:(f,m)=>p("POST",`/builder/organizations/${v(f)}/ownership/transfer`,{newOwnerUserId:m}),deleteBuilderOrganization:f=>p("DELETE",`/builder/organizations/${v(f)}`),getBuilderOrganizationOverview:f=>p("GET",`/builder/organizations/${v(f)}/overview`),listBuilderOrganizationBulletin:(f,m)=>p("GET",Q(`/builder/organizations/${v(f)}/bulletin`,{kind:m?.kind,status:m?.status,cursor:m?.cursor,limit:m?.limit!==void 0?String(m.limit):void 0})),listBuilderAuditLogs:(f,m)=>{let k=m?.businessId?`/builder/organizations/${v(f)}/businesses/${v(m.businessId)}/audit-logs`:`/builder/organizations/${v(f)}/audit-logs`;return p("GET",Q(k,{action:m?.action,actorUserId:m?.actorUserId,decision:m?.decision,from:m?.from,to:m?.to,cursor:m?.cursor,limit:m?.limit!==void 0?String(m.limit):void 0}))},exportBuilderAuditLogs:(f,m)=>{let k=m?.businessId?`/builder/organizations/${v(f)}/businesses/${v(m.businessId)}/audit-logs/export.csv`:`/builder/organizations/${v(f)}/audit-logs/export.csv`;return S("GET",Q(k,{action:m?.action,actorUserId:m?.actorUserId,decision:m?.decision,from:m?.from,to:m?.to,limit:m?.limit!==void 0?String(m.limit):void 0}))},listBusinesses:f=>p("GET",Q("/businesses",{limit:f?.limit!==void 0?String(f.limit):void 0,offset:f?.offset!==void 0?String(f.offset):void 0,...bi(f?.query)})),createBusiness:(f,m)=>p("POST","/businesses",f,m),updateBusiness:(f,m,k,A)=>p("PATCH",Q(`/businesses/${v(f)}`,{env:k?.env}),m,A),uploadBrandAsset:(f,m,k,A,P)=>_("PUT",`/businesses/${v(f)}/${v(m)}`,k,A,P),deleteBrandAsset:(f,m,k)=>p("DELETE",`/businesses/${v(f)}/${v(m)}`,void 0,k),publishBusiness:(f,m,k)=>p("POST",`/businesses/${v(f)}/publish`,m&&Object.keys(m).length>0?m:void 0,k),rollbackBusiness:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/rollback`,m,k),migratePlan:(f,m,k,A)=>p("POST",`/businesses/${v(f)}/plans/${v(m)}/migration-batches`,k,A),getBusiness:(f,m)=>p("GET",Q(`/businesses/${v(f)}`,{env:m?.env})),listBusinessConfigAttempts:f=>p("GET",`/businesses/${v(f)}/config-attempts`),listBusinessRoutes:(f,m)=>p("GET",Q(`/businesses/${v(f)}/routes`,{env:m?.env})),getBusinessContract:(f,m)=>p("GET",Q(`/businesses/${v(f)}/contract`,{env:m?.env})),getDeployments:f=>p("GET",`/businesses/${v(f)}/deployments`),listApplyTimeline:(f,m)=>p("GET",Q(`/businesses/${v(f)}/apply-timeline`,{env:m?.env})),proposeConsumerChangeSet:(f,m,k,A,P)=>p("POST",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets`,{env:A?.env}),k,P),listConsumerChangeSets:(f,m,k)=>p("GET",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets`,{env:k?.env,status:k?.status,cursor:k?.cursor,limit:k?.limit!==void 0?String(k.limit):void 0})),getConsumerChangeSet:(f,m,k,A)=>p("GET",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets/${v(k)}`,{env:A?.env})),previewConsumerChangeSet:(f,m,k,A)=>p("POST",Q(`/businesses/${v(f)}/consumers/${v(m)}/change-sets/${v(k)}/preview`,{env:A?.env})),compileManifest:(f,m,k)=>p("POST",`/businesses/${v(f)}/manifest/compile`,{ir:m,...k?.env?{env:k.env}:{}}),previewPlanRelease:(f,m,k)=>p("POST",`/businesses/${v(f)}/plans/release-preview`,{ir:m,...k?.env?{env:k.env}:{}}),listEnvironments:(f,m)=>p("GET",Q(`/businesses/${v(f)}/environments`,{limit:m?.limit!==void 0?String(m.limit):void 0,offset:m?.offset!==void 0?String(m.offset):void 0,...bi(m?.query)})),createEnvironment:(f,m,k)=>p("POST",`/businesses/${v(f)}/environments`,m,k),deleteEnvironment:(f,m)=>p("DELETE",`/businesses/${v(f)}/environments/${v(m)}`),deleteBusiness:f=>p("DELETE",`/businesses/${v(f)}`),builderListConsumers:(f,m)=>p("GET",Q(`/businesses/${v(f)}/consumers`,{env:m?.env})),builderBlockConsumer:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/block`),builderRemoveConsumer:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/remove`),builderMigrateConsumerToLatest:(f,m)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/migrate-latest`),builderAssignConsumerMemberRoles:(f,m,k,A)=>p("POST",`/businesses/${v(f)}/consumers/${v(m)}/members/${v(k)}/roles`,{roles:A}),listPromoCodes:f=>p("GET",`/businesses/${v(f)}/promo-codes`),createPromoCode:(f,m)=>p("POST",`/businesses/${v(f)}/promo-codes`,m),updatePromoCode:(f,m,k)=>p("PATCH",`/businesses/${v(f)}/promo-codes/${v(m)}`,k),managementListPlans:f=>p("GET",`/management/businesses/${v(f)}/plans`),managementGetUsage:f=>p("GET",`/management/businesses/${v(f)}/usage`),analyticsQuery:(f,m)=>p("POST",`/businesses/${v(f)}/analytics/query`,m),managementListWebhooks:(f,m)=>p("GET",Q(`/management/businesses/${v(f)}/webhooks`,{limit:m?.limit})),managementCreateWebhook:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/webhooks`,m,k),managementUpdateWebhook:(f,m,k,A)=>p("PATCH",`/management/businesses/${v(f)}/webhooks/${v(m)}`,k,A),managementDeleteWebhook:(f,m)=>p("DELETE",`/management/businesses/${v(f)}/webhooks/${v(m)}`),managementTestWebhook:(f,m)=>p("POST",`/management/businesses/${v(f)}/webhooks/${v(m)}/test`),managementListWebhookDeliveries:(f,m,k)=>p("GET",Q(`/management/businesses/${v(f)}/webhooks/${v(m)}/deliveries`,{limit:k?.limit})),builderListBackends:f=>p("GET",`/businesses/${v(f)}/backends`),builderCreateBackend:(f,m,k)=>p("POST",`/businesses/${v(f)}/backends`,m,k),builderBindBackend:(f,m,k,A)=>p("PATCH",`/businesses/${v(f)}/backends/${v(m)}`,k,A),builderDeleteBackend:(f,m)=>p("DELETE",`/businesses/${v(f)}/backends/${v(m)}`),builderListRuntimeTokens:f=>p("GET",`/businesses/${v(f)}/runtime-tokens`),builderCreateRuntimeToken:(f,m,k)=>p("POST",`/businesses/${v(f)}/runtime-tokens`,m,k),builderRotateRuntimeToken:(f,m,k)=>p("POST",`/businesses/${v(f)}/runtime-tokens/${v(m)}/rotate`,void 0,k),builderRevokeRuntimeToken:(f,m)=>p("DELETE",`/businesses/${v(f)}/runtime-tokens/${v(m)}`),builderFrontendStatus:(f,m)=>p("GET",`/businesses/${v(f)}/frontend/status${m?`?environmentId=${encodeURIComponent(m)}`:""}`),builderFrontendReleases:(f,m)=>p("GET",`/businesses/${v(f)}/frontend/releases${m?`?environmentId=${encodeURIComponent(m)}`:""}`),builderFrontendRollback:(f,m,k)=>p("POST",`/businesses/${v(f)}/frontend/rollback`,m,k),builderListBulletin:(f,m)=>p("GET",Q(`/businesses/${v(f)}/bulletin`,{kind:m?.kind,status:m?.status,cursor:m?.cursor,limit:m?.limit})),builderGetBulletinPost:(f,m)=>p("GET",`/businesses/${v(f)}/bulletin/${v(m)}`),builderSetBulletinStatus:(f,m,k)=>p("PATCH",`/businesses/${v(f)}/bulletin/${v(m)}`,{status:k}),builderListAgents:f=>p("GET",`/businesses/${v(f)}/agents`),builderAgentStatus:(f,m)=>p("GET",`/businesses/${v(f)}/agents/${v(m)}`),builderAgentRunDetail:(f,m,k)=>p("GET",`/businesses/${v(f)}/agents/${v(m)}/runs/${v(k)}`),builderConfigureAgent:(f,m,k,A)=>p("PUT",`/businesses/${v(f)}/agents/${v(m)}`,k,A),builderBusinessVariables:async(f,m)=>(await p("GET",Q(`/businesses/${v(f)}/variables`,{environmentId:m}))).variables,builderCreateBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}`,k,A)).operation,builderRotateBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}/rotate`,k,A)).operation,builderRevokeBusinessVariable:async(f,m,k,A)=>(await p("POST",`/businesses/${v(f)}/variables/${v(m)}/revoke`,{environmentId:k,confirmation:"REVOKE"},A)).operation,builderDeleteBusinessVariable:async(f,m,k,A)=>(await p("DELETE",`/businesses/${v(f)}/variables/${v(m)}`,{environmentId:k,confirmation:"DELETE"},A)).operation,builderGetBusinessVariableOperation:async(f,m)=>(await p("GET",`/businesses/${v(f)}/variables/operations/${v(m)}`)).operation,getBusinessNotificationPreferences:f=>p("GET",`/businesses/${v(f)}/notification-preferences`),updateBusinessNotificationPreferences:(f,m)=>p("PATCH",`/businesses/${v(f)}/notification-preferences`,m),getBusinessTaxSettings:f=>p("GET",`/management/businesses/${v(f)}/tax-settings`),issueBusinessAuthContext:(f,m)=>p("POST",`/management/businesses/${v(f)}/auth/context-token`,{...m,actorType:"user"}),updateBusinessTaxSettings:(f,m,k)=>p("POST",`/management/businesses/${v(f)}/tax-settings`,m,k),reportBusinessResourceCount:(f,m,k,A)=>p("PUT",`/management/businesses/${v(f)}/resources/${v(m)}/count`,k,A),explainBusinessDenial:(f,m)=>p("GET",`/management/businesses/${v(f)}/explain-denial/${v(m)}`),listBusinessDependents:(f,m)=>p("GET",Q(`/management/businesses/${v(f)}/dependents`,m)),replayBusinessPeriod:(f,m)=>p("POST","/replay",f,m),previewBusinessConfigRollback:(f,m)=>p("POST","/rollback-to-config",f,m),listAutomationRules:(f,m)=>p("GET",Q(`/businesses/${v(f)}/automation-rules`,{env:m?.env,cursor:m?.cursor,limit:m?.limit===void 0?void 0:String(m.limit)})),getAutomationRule:(f,m)=>p("GET",`/businesses/${v(f)}/automation-rules/${v(m)}`),createAutomationRule:(f,m,k)=>p("POST",`/businesses/${v(f)}/automation-rules`,m,k),updateAutomationRule:(f,m,k,A)=>p("PATCH",`/businesses/${v(f)}/automation-rules/${v(m)}`,k,A),deleteAutomationRule:(f,m)=>p("DELETE",`/businesses/${v(f)}/automation-rules/${v(m)}`),listKnowledgeIndex:f=>p("GET",Q("/knowledge/index",{cursor:f?.cursor,limit:f?.limit===void 0?void 0:String(f.limit)})),listBusinessKnowledgeIndex:(f,m)=>p("GET",Q(`/businesses/${v(f)}/knowledge/index`,{cursor:m?.cursor,limit:m?.limit===void 0?void 0:String(m.limit)})),issuePersonaBootstrapKey:async(f,m,k)=>p("POST",`/portal/businesses/${v(f)}/environments/${v(m)}/test/bootstrap-key`,k??{}),listPersonas:async(f,m)=>p("GET",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas`),revokePersona:async(f,m,k)=>p("DELETE",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas/${v(k)}`),rotatePersona:async(f,m,k)=>p("POST",`/portal/businesses/${v(f)}/environments/${v(m)}/test/personas/${v(k)}/rotate`),getBusinessConfig:(f,m)=>p("GET",Q(`/businesses/${v(f)}/config`,{format:"json",env:m?.env}))}}function VI(e){if(!e||typeof e!="object")return;let t=e,r=Array.isArray(t.errors)?t.errors:void 0,i=Array.isArray(t.warnings)?t.warnings:void 0;if(!(!r?.length&&!i?.length))return{...r?.length?{errors:r}:{},...i?.length?{warnings:i}:{}}}import{randomUUID as GI}from"node:crypto";import{chmodSync as Uf,existsSync as Lf,mkdirSync as ZI,readFileSync as jf,unlinkSync as WI,writeFileSync as Bf}from"node:fs";import*as Mf from"node:fs";import{homedir as qI}from"node:os";import{join as Xn}from"node:path";var zf="https://core.farthershore.com";var Kt=Xn(qI(),".farthershore"),Ea=Xn(Kt,"config.json"),_i=Xn(Kt,"credentials.json"),JI={renameSync:Mf.renameSync};function Sa(e){ZI(e,{recursive:!0,mode:448}),Uf(e,448)}var Ia={apiUrl:zf};function Ht(){if(Sa(Kt),!Lf(Ea))return Ia;try{let e=JSON.parse(jf(Ea,"utf-8"));return{...Ia,...e}}catch{return Ia}}var YI=new Set(["token","orgId","userId"]);function Ff(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return Object.keys(t).some(r=>!YI.has(r))?!1:typeof t.token=="string"&&t.token.length>0&&(t.orgId===void 0||typeof t.orgId=="string")&&(t.userId===void 0||typeof t.userId=="string")}function QI(e){try{let t=JSON.stringify(e,null,2);if(t===void 0||!Ff(JSON.parse(t)))throw new Error("invalid shape");return`${t}
|
|
29
29
|
`}catch{throw new Error("Invalid credentials.")}}function Kf(e){try{WI(e)}catch(t){if(t.code!=="ENOENT")throw t}}function Qe(){if(!Lf(_i))return null;try{let e=JSON.parse(jf(_i,"utf-8"));return Ff(e)?e:null}catch{return null}}function er(e){let t=QI(e);Sa(Kt);let r=Xn(Kt,`.credentials.${process.pid}.${GI()}.tmp`);try{Bf(r,t,{encoding:"utf8",flag:"wx",mode:384}),Uf(r,384),JI.renameSync(r,_i)}catch{try{Kf(r)}catch{}throw new Error("Failed to save credentials.")}}function wa(){try{Kf(_i)}catch{throw new Error("Failed to clear credentials.")}}function xa(){return Ht().links??{}}function Hf(e){Sa(Kt);let t=Ht();Bf(Ea,JSON.stringify({...t,links:e},null,2)+`
|
|
30
30
|
`,{mode:384})}function rt(e){let t=xa(),r=e;for(;;){let i=t[r];if(i)return i;let n=Xn(r,"..");if(n===r)return null;r=n}}function Vf(e,t){Hf({...xa(),[e]:t})}function Gf(e){let t=xa();return e in t?(delete t[e],Hf(t),!0):!1}function Zf(){let e=process.env.FARTHERSHORE_TOKEN;if(e){if(!e.startsWith("mk_"))throw new b("FARTHERSHORE_TOKEN accepts only an organization-scoped MakerToken.",400,{code:"AUTH_ENV_REQUIRES_MAKER_TOKEN"});return e}let t=Qe();if(t?.token){if(!t.token.startsWith("fscli_")&&!t.token.startsWith("mk_"))throw new b("Stored credentials are no longer supported. Run `farthershore login` again.",401,{code:"AUTH_STORED_CREDENTIAL_UNSUPPORTED"});return t.token}throw new b("Not authenticated. Run `farthershore login` or set FARTHERSHORE_TOKEN for this invocation.")}import{spawn as sO}from"node:child_process";var XI="x-fs-surface",vi=1e4,eE=3600,Yf=300,tE=8*1024,nE=8*1024,rE=4*1024,nr=class extends Error{};function iE(e){return new Promise(t=>setTimeout(t,e))}function ki(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $a(e,t){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0&&e<=t}function Wf(e){if(typeof e!="string"||e.length===0||e.length>rE||oE(e))return!1;try{let t=new URL(e);return t.protocol==="https:"||t.protocol==="http:"}catch{return!1}}function oE(e){for(let t of e){let r=t.codePointAt(0)??0;if(r<=31||r>=127&&r<=159)return!0}return!1}function sE(e){return typeof e=="string"&&e.length>=4&&e.length<=64&&/^[A-Za-z0-9-]+$/.test(e)}function aE(e,t){if(!ki(e)||typeof e.deviceCode!="string"||e.deviceCode.length===0||Buffer.byteLength(e.deviceCode)>tE||!sE(e.userCode)||!Wf(e.verificationUri)||!Wf(e.verificationUriComplete)||!$a(e.expiresIn,eE)||!$a(e.interval,Yf))throw new b("Device authorization start response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});return{deviceCode:e.deviceCode,userCode:e.userCode,verificationUri:e.verificationUri,verificationUriComplete:e.verificationUriComplete,expiresIn:e.expiresIn,interval:e.interval,startedAtMs:t,expiresAtMs:t+e.expiresIn*1e3}}function qf(e){return!ki(e)||typeof e.error!="string"||e.error!=="authorization_pending"&&e.error!=="slow_down"&&e.error!=="access_denied"&&e.error!=="expired_token"&&e.error!=="invalid_grant"?null:{error:e.error,...$a(e.interval,Yf)?{interval:e.interval}:{}}}function Jf(e){return e==="access_denied"?new b("Device authorization was denied.",403,{code:"AUTH_DEVICE_ACCESS_DENIED"}):e==="expired_token"?tr():new b("Device authorization is invalid.",401,{code:"AUTH_DEVICE_INVALID"})}function tr(){return new b("Device authorization expired.",401,{code:"AUTH_DEVICE_EXPIRED"})}async function yi(e){try{return await e.json()}catch{return null}}function Qf(e){let t=e.fetch??globalThis.fetch,r=e.now??Date.now,i=e.sleep??iE,n=e.apiUrl.replace(/\/+$/,"");async function o(u,l,d=vi,g){try{let p=AbortSignal.timeout(Math.max(1,d));return await t(`${n}${u}`,{method:"POST",headers:{"Content-Type":"application/json",[XI]:"cli"},body:JSON.stringify(l),signal:g?AbortSignal.any([p,g]):p})}catch{throw new nr}}async function a(u,l,d){let g=l-r();if(g<=0)throw tr();let p=i(Math.min(u,g));if(!d)await p;else{if(d.aborted)throw new nr;let _;try{await Promise.race([p,new Promise((S,f)=>{_=()=>f(new nr),d.addEventListener("abort",_,{once:!0})})])}finally{_&&d.removeEventListener("abort",_)}}if(r()>=l)throw tr()}async function c(u){let l=await yi(u);if(u.ok){if(ki(l)&&l.status==="CONSUMED")return"consumed";throw new b("Device authorization acknowledgement is invalid.",502,{code:"AUTH_DEVICE_ACK_INVALID_RESPONSE"})}let d=qf(l);if(d)throw Jf(d.error);return u.status===429?"rate_limited":u.status>=500?"server_error":"failure"}return{async start(){let u=r(),l;try{l=await o("/auth/cli/device/start",{})}catch{throw new b("Unable to start device authorization.",503,{code:"AUTH_DEVICE_START_FAILED"})}if(!l.ok)throw await yi(l),new b("Unable to start device authorization.",l.status,{code:"AUTH_DEVICE_START_FAILED"});return aE(await yi(l),u)},async poll(u){let l=u.interval*1e3;for(;;){await a(l,u.expiresAtMs);let d;try{d=await o("/auth/cli/device/token",{deviceCode:u.deviceCode},Math.min(vi,u.expiresAtMs-r()))}catch{continue}let g=await yi(d);if(d.ok){if(!ki(g)||g.tokenType!=="Bearer"||typeof g.accessToken!="string"||!g.accessToken.startsWith("fscli_")||Buffer.byteLength(g.accessToken)>nE)throw new b("Device authorization response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});return g.accessToken}let p=qf(g);if(p?.error!=="authorization_pending"){if(p?.error==="slow_down"){if(p.interval===void 0)throw new b("Device authorization response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});l=Math.max(l,p.interval*1e3);continue}if(p)throw Jf(p.error);if(!(d.status===429||d.status>=500))throw new b("Device authorization response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"})}}},async ack(u,l){let d=u.interval*1e3;async function g(){let _;try{_=await o("/auth/cli/device/ack",{deviceCode:u.deviceCode},vi)}catch{throw tr()}if(await c(_)!=="consumed")throw new b("Device authorization acknowledgement failed.",_.status,{code:"AUTH_DEVICE_ACK_FAILED"})}async function p(_){try{return await a(d,u.expiresAtMs,l?.signal),!1}catch(S){if(!_&&!l?.signal?.aborted)throw S;return await g(),!0}}for(;;){if(r()>=u.expiresAtMs)throw tr();let _;try{_=await o("/auth/cli/device/ack",{deviceCode:u.deviceCode},Math.min(vi,u.expiresAtMs-r()),l?.signal)}catch{if(l?.signal?.aborted){await g();return}if(await p(!0))return;continue}let S=await c(_);if(S==="consumed")return;if(S==="rate_limited"){if(await p(!1))return;continue}if(S==="server_error"){if(await p(!0))return;continue}throw new b("Device authorization acknowledgement failed.",502,{code:"AUTH_DEVICE_ACK_FAILED"})}}}}var s={};Je(s,{$brand:()=>Oa,$input:()=>Ju,$output:()=>qu,NEVER:()=>Ta,TimePrecision:()=>el,ZodAny:()=>Kd,ZodArray:()=>Zd,ZodBase64:()=>qo,ZodBase64URL:()=>Jo,ZodBigInt:()=>In,ZodBigIntFormat:()=>Xo,ZodBoolean:()=>kn,ZodCIDRv4:()=>Zo,ZodCIDRv6:()=>Wo,ZodCUID:()=>Bo,ZodCUID2:()=>Mo,ZodCatch:()=>gm,ZodCodec:()=>Nr,ZodCustom:()=>Dr,ZodCustomStringFormat:()=>vn,ZodDate:()=>Or,ZodDefault:()=>um,ZodDiscriminatedUnion:()=>qd,ZodE164:()=>Yo,ZodEmail:()=>Uo,ZodEmoji:()=>Lo,ZodEnum:()=>bn,ZodError:()=>Lw,ZodExactOptional:()=>sm,ZodFile:()=>im,ZodFirstPartyTypeKind:()=>Tm,ZodFunction:()=>wm,ZodGUID:()=>Sr,ZodIPv4:()=>Vo,ZodIPv6:()=>Go,ZodISODate:()=>Ro,ZodISODateTime:()=>Ao,ZodISODuration:()=>Po,ZodISOTime:()=>Co,ZodIntersection:()=>Jd,ZodIssueCode:()=>Bw,ZodJWT:()=>Qo,ZodKSUID:()=>Ho,ZodLazy:()=>Im,ZodLiteral:()=>rm,ZodMAC:()=>zd,ZodMap:()=>tm,ZodNaN:()=>bm,ZodNanoID:()=>jo,ZodNever:()=>Vd,ZodNonOptional:()=>os,ZodNull:()=>Md,ZodNullable:()=>cm,ZodNumber:()=>yn,ZodNumberFormat:()=>Pt,ZodObject:()=>Rr,ZodOptional:()=>is,ZodPipe:()=>Pr,ZodPrefault:()=>dm,ZodPreprocess:()=>_m,ZodPromise:()=>Sm,ZodReadonly:()=>vm,ZodRealError:()=>Ie,ZodRecord:()=>hn,ZodSet:()=>nm,ZodString:()=>_n,ZodStringFormat:()=>W,ZodSuccess:()=>fm,ZodSymbol:()=>jd,ZodTemplateLiteral:()=>km,ZodTransform:()=>om,ZodTuple:()=>Qd,ZodType:()=>D,ZodULID:()=>Fo,ZodURL:()=>Tr,ZodUUID:()=>Ke,ZodUndefined:()=>Bd,ZodUnion:()=>Cr,ZodUnknown:()=>Hd,ZodVoid:()=>Gd,ZodXID:()=>Ko,ZodXor:()=>Wd,_ZodString:()=>zo,_default:()=>lm,_function:()=>Bb,any:()=>bb,array:()=>Ar,base64:()=>eb,base64url:()=>tb,bigint:()=>mb,boolean:()=>Ld,catch:()=>hm,check:()=>Mb,cidrv4:()=>Qh,cidrv6:()=>Xh,clone:()=>ge,codec:()=>zb,coerce:()=>Om,config:()=>se,core:()=>tt,cuid:()=>Hh,cuid2:()=>Vh,custom:()=>Fb,date:()=>vb,decode:()=>Od,decodeAsync:()=>Rd,describe:()=>Kb,discriminatedUnion:()=>wb,e164:()=>nb,email:()=>Nh,emoji:()=>Fh,encode:()=>Td,encodeAsync:()=>Ad,endsWith:()=>sn,enum:()=>ns,exactOptional:()=>am,file:()=>Cb,flattenError:()=>lr,float32:()=>cb,float64:()=>ub,formatError:()=>dr,fromJSONSchema:()=>Jb,function:()=>Bb,getErrorMap:()=>Fw,globalRegistry:()=>de,gt:()=>Me,gte:()=>be,guid:()=>Dh,hash:()=>ab,hex:()=>sb,hostname:()=>ob,httpUrl:()=>Mh,includes:()=>rn,instanceof:()=>Vb,int:()=>No,int32:()=>lb,int64:()=>pb,intersection:()=>Yd,invertCodec:()=>Ub,ipv4:()=>qh,ipv6:()=>Yh,iso:()=>gn,json:()=>Zb,jwt:()=>rb,keyof:()=>yb,ksuid:()=>Wh,lazy:()=>Em,length:()=>Rt,literal:()=>Rb,locales:()=>vr,looseObject:()=>Eb,looseRecord:()=>$b,lowercase:()=>tn,lt:()=>Be,lte:()=>Se,mac:()=>Jh,map:()=>Tb,maxLength:()=>At,maxSize:()=>lt,meta:()=>Hb,mime:()=>an,minLength:()=>et,minSize:()=>Fe,multipleOf:()=>ut,nan:()=>Db,nanoid:()=>Kh,nativeEnum:()=>Ab,negative:()=>yo,never:()=>es,nonnegative:()=>Io,nonoptional:()=>pm,nonpositive:()=>ko,normalize:()=>cn,null:()=>Fd,nullable:()=>xr,nullish:()=>Pb,number:()=>Ud,object:()=>kb,optional:()=>wr,overwrite:()=>Ne,parse:()=>Sd,parseAsync:()=>wd,partialRecord:()=>xb,pipe:()=>Do,positive:()=>vo,prefault:()=>mm,preprocess:()=>Wb,prettifyError:()=>Fa,promise:()=>jb,property:()=>Eo,readonly:()=>ym,record:()=>em,refine:()=>xm,regex:()=>en,regexes:()=>Ee,registry:()=>Yi,safeDecode:()=>Pd,safeDecodeAsync:()=>Dd,safeEncode:()=>Cd,safeEncodeAsync:()=>Nd,safeParse:()=>xd,safeParseAsync:()=>$d,set:()=>Ob,setErrorMap:()=>Mw,size:()=>Ot,slugify:()=>mn,startsWith:()=>on,strictObject:()=>Ib,string:()=>Er,stringFormat:()=>ib,stringbool:()=>Gb,success:()=>Nb,superRefine:()=>$m,symbol:()=>gb,templateLiteral:()=>Lb,toJSONSchema:()=>$o,toLowerCase:()=>ln,toUpperCase:()=>dn,transform:()=>rs,treeifyError:()=>Ma,trim:()=>un,tuple:()=>Xd,uint32:()=>db,uint64:()=>fb,ulid:()=>Gh,undefined:()=>hb,union:()=>ts,unknown:()=>Ct,uppercase:()=>nn,url:()=>Bh,util:()=>$,uuid:()=>zh,uuidv4:()=>Uh,uuidv6:()=>Lh,uuidv7:()=>jh,void:()=>_b,xid:()=>Zh,xor:()=>Sb});var tt={};Je(tt,{$ZodAny:()=>bu,$ZodArray:()=>Iu,$ZodAsyncError:()=>Pe,$ZodBase64:()=>au,$ZodBase64URL:()=>cu,$ZodBigInt:()=>Ki,$ZodBigIntFormat:()=>pu,$ZodBoolean:()=>gr,$ZodCIDRv4:()=>iu,$ZodCIDRv6:()=>ou,$ZodCUID:()=>Gc,$ZodCUID2:()=>Zc,$ZodCatch:()=>Bu,$ZodCheck:()=>J,$ZodCheckBigIntFormat:()=>Ic,$ZodCheckEndsWith:()=>Nc,$ZodCheckGreaterThan:()=>Ui,$ZodCheckIncludes:()=>Cc,$ZodCheckLengthEquals:()=>Tc,$ZodCheckLessThan:()=>zi,$ZodCheckLowerCase:()=>Ac,$ZodCheckMaxLength:()=>xc,$ZodCheckMaxSize:()=>Ec,$ZodCheckMimeType:()=>zc,$ZodCheckMinLength:()=>$c,$ZodCheckMinSize:()=>Sc,$ZodCheckMultipleOf:()=>yc,$ZodCheckNumberFormat:()=>kc,$ZodCheckOverwrite:()=>Uc,$ZodCheckProperty:()=>Dc,$ZodCheckRegex:()=>Oc,$ZodCheckSizeEquals:()=>wc,$ZodCheckStartsWith:()=>Pc,$ZodCheckStringFormat:()=>Qt,$ZodCheckUpperCase:()=>Rc,$ZodCodec:()=>br,$ZodCustom:()=>Wu,$ZodCustomStringFormat:()=>du,$ZodDate:()=>ku,$ZodDefault:()=>zu,$ZodDiscriminatedUnion:()=>wu,$ZodE164:()=>uu,$ZodEmail:()=>Fc,$ZodEmoji:()=>Hc,$ZodEncodeError:()=>it,$ZodEnum:()=>Au,$ZodError:()=>ur,$ZodExactOptional:()=>Nu,$ZodFile:()=>Cu,$ZodFunction:()=>Vu,$ZodGUID:()=>Bc,$ZodIPv4:()=>tu,$ZodIPv6:()=>nu,$ZodISODate:()=>Qc,$ZodISODateTime:()=>Yc,$ZodISODuration:()=>eu,$ZodISOTime:()=>Xc,$ZodIntersection:()=>xu,$ZodJWT:()=>lu,$ZodKSUID:()=>Jc,$ZodLazy:()=>Zu,$ZodLiteral:()=>Ru,$ZodMAC:()=>ru,$ZodMap:()=>Tu,$ZodNaN:()=>Mu,$ZodNanoID:()=>Vc,$ZodNever:()=>vu,$ZodNonOptional:()=>Lu,$ZodNull:()=>hu,$ZodNullable:()=>Du,$ZodNumber:()=>Fi,$ZodNumberFormat:()=>mu,$ZodObject:()=>Og,$ZodObjectJIT:()=>Eu,$ZodOptional:()=>Vi,$ZodPipe:()=>Gi,$ZodPrefault:()=>Uu,$ZodPreprocess:()=>Fu,$ZodPromise:()=>Gu,$ZodReadonly:()=>Ku,$ZodRealError:()=>ke,$ZodRecord:()=>$u,$ZodRegistry:()=>Ji,$ZodSet:()=>Ou,$ZodString:()=>Tt,$ZodStringFormat:()=>Z,$ZodSuccess:()=>ju,$ZodSymbol:()=>fu,$ZodTemplateLiteral:()=>Hu,$ZodTransform:()=>Pu,$ZodTuple:()=>Hi,$ZodType:()=>N,$ZodULID:()=>Wc,$ZodURL:()=>Kc,$ZodUUID:()=>Mc,$ZodUndefined:()=>gu,$ZodUnion:()=>hr,$ZodUnknown:()=>_u,$ZodVoid:()=>yu,$ZodXID:()=>qc,$ZodXor:()=>Su,$brand:()=>Oa,$constructor:()=>h,$input:()=>Ju,$output:()=>qu,Doc:()=>fr,JSONSchema:()=>Rh,JSONSchemaGenerator:()=>To,NEVER:()=>Ta,TimePrecision:()=>el,_any:()=>kl,_array:()=>Tl,_base64:()=>go,_base64url:()=>ho,_bigint:()=>fl,_boolean:()=>ml,_catch:()=>Aw,_check:()=>Ah,_cidrv4:()=>po,_cidrv6:()=>fo,_coercedBigint:()=>gl,_coercedBoolean:()=>pl,_coercedDate:()=>xl,_coercedNumber:()=>sl,_coercedString:()=>Qu,_cuid:()=>oo,_cuid2:()=>so,_custom:()=>Al,_date:()=>wl,_decode:()=>$i,_decodeAsync:()=>Oi,_default:()=>$w,_discriminatedUnion:()=>gw,_e164:()=>bo,_email:()=>Qi,_emoji:()=>ro,_encode:()=>xi,_encodeAsync:()=>Ti,_endsWith:()=>sn,_enum:()=>kw,_file:()=>Ol,_float32:()=>cl,_float64:()=>ul,_gt:()=>Me,_gte:()=>be,_guid:()=>yr,_includes:()=>rn,_int:()=>al,_int32:()=>ll,_int64:()=>hl,_intersection:()=>hw,_ipv4:()=>lo,_ipv6:()=>mo,_isoDate:()=>nl,_isoDateTime:()=>tl,_isoDuration:()=>il,_isoTime:()=>rl,_jwt:()=>_o,_ksuid:()=>uo,_lazy:()=>Nw,_length:()=>Rt,_literal:()=>Ew,_lowercase:()=>tn,_lt:()=>Be,_lte:()=>Se,_mac:()=>Xu,_map:()=>vw,_max:()=>Se,_maxLength:()=>At,_maxSize:()=>lt,_mime:()=>an,_min:()=>be,_minLength:()=>et,_minSize:()=>Fe,_multipleOf:()=>ut,_nan:()=>$l,_nanoid:()=>io,_nativeEnum:()=>Iw,_negative:()=>yo,_never:()=>El,_nonnegative:()=>Io,_nonoptional:()=>Tw,_nonpositive:()=>ko,_normalize:()=>cn,_null:()=>yl,_nullable:()=>xw,_number:()=>ol,_optional:()=>ww,_overwrite:()=>Ne,_parse:()=>Wt,_parseAsync:()=>qt,_pipe:()=>Rw,_positive:()=>vo,_promise:()=>Dw,_property:()=>Eo,_readonly:()=>Cw,_record:()=>_w,_refine:()=>Rl,_regex:()=>en,_safeDecode:()=>Ri,_safeDecodeAsync:()=>Pi,_safeEncode:()=>Ai,_safeEncodeAsync:()=>Ci,_safeParse:()=>Jt,_safeParseAsync:()=>Yt,_set:()=>yw,_size:()=>Ot,_slugify:()=>mn,_startsWith:()=>on,_string:()=>Yu,_stringFormat:()=>pn,_stringbool:()=>Dl,_success:()=>Ow,_superRefine:()=>Cl,_symbol:()=>_l,_templateLiteral:()=>Pw,_toLowerCase:()=>ln,_toUpperCase:()=>dn,_transform:()=>Sw,_trim:()=>un,_tuple:()=>bw,_uint32:()=>dl,_uint64:()=>bl,_ulid:()=>ao,_undefined:()=>vl,_union:()=>pw,_unknown:()=>Il,_uppercase:()=>nn,_url:()=>kr,_uuid:()=>Xi,_uuidv4:()=>eo,_uuidv6:()=>to,_uuidv7:()=>no,_void:()=>Sl,_xid:()=>co,_xor:()=>fw,clone:()=>ge,config:()=>se,createStandardJSONSchemaMethod:()=>fn,createToJSONSchemaMethod:()=>zl,decode:()=>DE,decodeAsync:()=>UE,describe:()=>Pl,encode:()=>NE,encodeAsync:()=>zE,extractDefs:()=>mt,finalize:()=>pt,flattenError:()=>lr,formatError:()=>dr,globalConfig:()=>wt,globalRegistry:()=>de,initializeContext:()=>dt,isValidBase64:()=>su,isValidBase64URL:()=>wg,isValidJWT:()=>xg,locales:()=>vr,meta:()=>Nl,parse:()=>Si,parseAsync:()=>wi,prettifyError:()=>Fa,process:()=>V,regexes:()=>Ee,registry:()=>Yi,safeDecode:()=>jE,safeDecodeAsync:()=>ME,safeEncode:()=>LE,safeEncodeAsync:()=>BE,safeParse:()=>Ka,safeParseAsync:()=>Ha,toDotPath:()=>ig,toJSONSchema:()=>$o,treeifyError:()=>Ma,util:()=>$,version:()=>Lc});var Xf,Ta=Object.freeze({status:"aborted"});function h(e,t,r){function i(c,u){if(c._zod||Object.defineProperty(c,"_zod",{value:{def:u,constr:a,traits:new Set},enumerable:!1}),c._zod.traits.has(e))return;c._zod.traits.add(e),t(c,u);let l=a.prototype,d=Object.keys(l);for(let g=0;g<d.length;g++){let p=d[g];p in c||(c[p]=l[p].bind(c))}}let n=r?.Parent??Object;class o extends n{}Object.defineProperty(o,"name",{value:e});function a(c){var u;let l=r?.Parent?new o:this;i(l,c),(u=l._zod).deferred??(u.deferred=[]);for(let d of l._zod.deferred)d();return l}return Object.defineProperty(a,"init",{value:i}),Object.defineProperty(a,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(e)}),Object.defineProperty(a,"name",{value:e}),a}var Oa=Symbol("zod_brand"),Pe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},it=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Xf=globalThis).__zod_globalConfig??(Xf.__zod_globalConfig={});var wt=globalThis.__zod_globalConfig;function se(e){return e&&Object.assign(wt,e),wt}var $={};Je($,{BIGINT_FORMAT_RANGES:()=>ja,Class:()=>Ra,NUMBER_FORMAT_RANGES:()=>La,aborted:()=>ct,allowsEval:()=>Na,assert:()=>mE,assertEqual:()=>cE,assertIs:()=>lE,assertNever:()=>dE,assertNotEqual:()=>uE,assignProp:()=>st,base64ToUint8Array:()=>tg,base64urlToUint8Array:()=>OE,cached:()=>Gt,captureStackTrace:()=>Ei,cleanEnum:()=>TE,cleanRegex:()=>or,clone:()=>ge,cloneDef:()=>fE,createTransparentProxy:()=>yE,defineLazy:()=>j,esc:()=>Ii,escapeRegex:()=>Ae,explicitlyAborted:()=>Ba,extend:()=>EE,finalizeIssue:()=>he,floatSafeRemainder:()=>Ca,getElementAtPath:()=>gE,getEnumValues:()=>ir,getLengthableOrigin:()=>cr,getParsedType:()=>vE,getSizableOrigin:()=>ar,hexToUint8Array:()=>RE,isObject:()=>xt,isPlainObject:()=>at,issue:()=>Zt,joinValues:()=>y,jsonStringifyReplacer:()=>Vt,merge:()=>wE,mergeDefs:()=>Xe,normalizeParams:()=>T,nullish:()=>ot,numKeys:()=>_E,objectClone:()=>pE,omit:()=>IE,optionalKeys:()=>Ua,parsedType:()=>w,partial:()=>xE,pick:()=>kE,prefixIssues:()=>ye,primitiveTypes:()=>za,promiseAllObject:()=>hE,propertyKeyTypes:()=>sr,randomString:()=>bE,required:()=>$E,safeExtend:()=>SE,shallowClone:()=>Da,slugify:()=>Pa,stringifyPrimitive:()=>E,uint8ArrayToBase64:()=>ng,uint8ArrayToBase64url:()=>AE,uint8ArrayToHex:()=>CE,unwrapMessage:()=>rr});function cE(e){return e}function uE(e){return e}function lE(e){}function dE(e){throw new Error("Unexpected value in exhaustive check")}function mE(e){}function ir(e){let t=Object.values(e).filter(i=>typeof i=="number");return Object.entries(e).filter(([i,n])=>t.indexOf(+i)===-1).map(([i,n])=>n)}function y(e,t="|"){return e.map(r=>E(r)).join(t)}function Vt(e,t){return typeof t=="bigint"?t.toString():t}function Gt(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function ot(e){return e==null}function or(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Ca(e,t){let r=e/t,i=Math.round(r),n=Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-i)<n?0:r-i}var eg=Symbol("evaluating");function j(e,t,r){let i;Object.defineProperty(e,t,{get(){if(i!==eg)return i===void 0&&(i=eg,i=r()),i},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function pE(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function st(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function Xe(...e){let t={};for(let r of e){let i=Object.getOwnPropertyDescriptors(r);Object.assign(t,i)}return Object.defineProperties({},t)}function fE(e){return Xe(e._zod.def)}function gE(e,t){return t?t.reduce((r,i)=>r?.[i],e):e}function hE(e){let t=Object.keys(e),r=t.map(i=>e[i]);return Promise.all(r).then(i=>{let n={};for(let o=0;o<t.length;o++)n[t[o]]=i[o];return n})}function bE(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let i=0;i<e;i++)r+=t[Math.floor(Math.random()*t.length)];return r}function Ii(e){return JSON.stringify(e)}function Pa(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ei="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Na=Gt(()=>{if(wt.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function at(e){if(xt(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(xt(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function Da(e){return at(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function _E(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var vE=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},sr=new Set(["string","number","symbol"]),za=new Set(["string","number","bigint","boolean","symbol","undefined"]);function Ae(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ge(e,t,r){let i=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(i._zod.parent=e),i}function T(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function yE(e){let t;return new Proxy({},{get(r,i,n){return t??(t=e()),Reflect.get(t,i,n)},set(r,i,n,o){return t??(t=e()),Reflect.set(t,i,n,o)},has(r,i){return t??(t=e()),Reflect.has(t,i)},deleteProperty(r,i){return t??(t=e()),Reflect.deleteProperty(t,i)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,i){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,i)},defineProperty(r,i,n){return t??(t=e()),Reflect.defineProperty(t,i,n)}})}function E(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Ua(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var La={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},ja={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function kE(e,t){let r=e._zod.def,i=r.checks;if(i&&i.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let o=Xe(e._zod.def,{get shape(){let a={};for(let c in t){if(!(c in r.shape))throw new Error(`Unrecognized key: "${c}"`);t[c]&&(a[c]=r.shape[c])}return st(this,"shape",a),a},checks:[]});return ge(e,o)}function IE(e,t){let r=e._zod.def,i=r.checks;if(i&&i.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let o=Xe(e._zod.def,{get shape(){let a={...e._zod.def.shape};for(let c in t){if(!(c in r.shape))throw new Error(`Unrecognized key: "${c}"`);t[c]&&delete a[c]}return st(this,"shape",a),a},checks:[]});return ge(e,o)}function EE(e,t){if(!at(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=e._zod.def.shape;for(let a in t)if(Object.getOwnPropertyDescriptor(o,a)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let n=Xe(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t};return st(this,"shape",o),o}});return ge(e,n)}function SE(e,t){if(!at(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=Xe(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t};return st(this,"shape",i),i}});return ge(e,r)}function wE(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=Xe(e._zod.def,{get shape(){let i={...e._zod.def.shape,...t._zod.def.shape};return st(this,"shape",i),i},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return ge(e,r)}function xE(e,t,r){let n=t._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let a=Xe(t._zod.def,{get shape(){let c=t._zod.def.shape,u={...c};if(r)for(let l in r){if(!(l in c))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:c[l]}):c[l])}else for(let l in c)u[l]=e?new e({type:"optional",innerType:c[l]}):c[l];return st(this,"shape",u),u},checks:[]});return ge(t,a)}function $E(e,t,r){let i=Xe(t._zod.def,{get shape(){let n=t._zod.def.shape,o={...n};if(r)for(let a in r){if(!(a in o))throw new Error(`Unrecognized key: "${a}"`);r[a]&&(o[a]=new e({type:"nonoptional",innerType:n[a]}))}else for(let a in n)o[a]=new e({type:"nonoptional",innerType:n[a]});return st(this,"shape",o),o}});return ge(t,i)}function ct(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Ba(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function ye(e,t){return t.map(r=>{var i;return(i=r).path??(i.path=[]),r.path.unshift(e),r})}function rr(e){return typeof e=="string"?e:e?.message}function he(e,t,r){let i=e.message?e.message:rr(e.inst?._zod.def?.error?.(e))??rr(t?.error?.(e))??rr(r.customError?.(e))??rr(r.localeError?.(e))??"Invalid input",{inst:n,continue:o,input:a,...c}=e;return c.path??(c.path=[]),c.message=i,t?.reportInput&&(c.input=a),c}function ar(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function cr(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function w(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function Zt(...e){let[t,r,i]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:i}:{...t}}function TE(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function tg(e){let t=atob(e),r=new Uint8Array(t.length);for(let i=0;i<t.length;i++)r[i]=t.charCodeAt(i);return r}function ng(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function OE(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return tg(t+r)}function AE(e){return ng(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function RE(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let i=0;i<t.length;i+=2)r[i/2]=Number.parseInt(t.slice(i,i+2),16);return r}function CE(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Ra=class{constructor(...t){}};var rg=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Vt,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},ur=h("$ZodError",rg),ke=h("$ZodError",rg,{Parent:Error});function lr(e,t=r=>r.message){let r={},i=[];for(let n of e.issues)n.path.length>0?(r[n.path[0]]=r[n.path[0]]||[],r[n.path[0]].push(t(n))):i.push(t(n));return{formErrors:i,fieldErrors:r}}function dr(e,t=r=>r.message){let r={_errors:[]},i=(n,o=[])=>{for(let a of n.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(c=>i({issues:c},[...o,...a.path]));else if(a.code==="invalid_key")i({issues:a.issues},[...o,...a.path]);else if(a.code==="invalid_element")i({issues:a.issues},[...o,...a.path]);else{let c=[...o,...a.path];if(c.length===0)r._errors.push(t(a));else{let u=r,l=0;for(;l<c.length;){let d=c[l];l===c.length-1?(u[d]=u[d]||{_errors:[]},u[d]._errors.push(t(a))):u[d]=u[d]||{_errors:[]},u=u[d],l++}}}};return i(e),r}function Ma(e,t=r=>r.message){let r={errors:[]},i=(n,o=[])=>{var a,c;for(let u of n.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>i({issues:l},[...o,...u.path]));else if(u.code==="invalid_key")i({issues:u.issues},[...o,...u.path]);else if(u.code==="invalid_element")i({issues:u.issues},[...o,...u.path]);else{let l=[...o,...u.path];if(l.length===0){r.errors.push(t(u));continue}let d=r,g=0;for(;g<l.length;){let p=l[g],_=g===l.length-1;typeof p=="string"?(d.properties??(d.properties={}),(a=d.properties)[p]??(a[p]={errors:[]}),d=d.properties[p]):(d.items??(d.items=[]),(c=d.items)[p]??(c[p]={errors:[]}),d=d.items[p]),_&&d.errors.push(t(u)),g++}}};return i(e),r}function ig(e){let t=[],r=e.map(i=>typeof i=="object"?i.key:i);for(let i of r)typeof i=="number"?t.push(`[${i}]`):typeof i=="symbol"?t.push(`[${JSON.stringify(String(i))}]`):/[^\w$]/.test(i)?t.push(`[${JSON.stringify(i)}]`):(t.length&&t.push("."),t.push(i));return t.join("")}function Fa(e){let t=[],r=[...e.issues].sort((i,n)=>(i.path??[]).length-(n.path??[]).length);for(let i of r)t.push(`\u2716 ${i.message}`),i.path?.length&&t.push(` \u2192 at ${ig(i.path)}`);return t.join(`
|
|
31
31
|
`)}var Wt=e=>(t,r,i,n)=>{let o=i?{...i,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},o);if(a instanceof Promise)throw new Pe;if(a.issues.length){let c=new(n?.Err??e)(a.issues.map(u=>he(u,o,se())));throw Ei(c,n?.callee),c}return a.value},Si=Wt(ke),qt=e=>async(t,r,i,n)=>{let o=i?{...i,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},o);if(a instanceof Promise&&(a=await a),a.issues.length){let c=new(n?.Err??e)(a.issues.map(u=>he(u,o,se())));throw Ei(c,n?.callee),c}return a.value},wi=qt(ke),Jt=e=>(t,r,i)=>{let n=i?{...i,async:!1}:{async:!1},o=t._zod.run({value:r,issues:[]},n);if(o instanceof Promise)throw new Pe;return o.issues.length?{success:!1,error:new(e??ur)(o.issues.map(a=>he(a,n,se())))}:{success:!0,data:o.value}},Ka=Jt(ke),Yt=e=>async(t,r,i)=>{let n=i?{...i,async:!0}:{async:!0},o=t._zod.run({value:r,issues:[]},n);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(a=>he(a,n,se())))}:{success:!0,data:o.value}},Ha=Yt(ke),xi=e=>(t,r,i)=>{let n=i?{...i,direction:"backward"}:{direction:"backward"};return Wt(e)(t,r,n)},NE=xi(ke),$i=e=>(t,r,i)=>Wt(e)(t,r,i),DE=$i(ke),Ti=e=>async(t,r,i)=>{let n=i?{...i,direction:"backward"}:{direction:"backward"};return qt(e)(t,r,n)},zE=Ti(ke),Oi=e=>async(t,r,i)=>qt(e)(t,r,i),UE=Oi(ke),Ai=e=>(t,r,i)=>{let n=i?{...i,direction:"backward"}:{direction:"backward"};return Jt(e)(t,r,n)},LE=Ai(ke),Ri=e=>(t,r,i)=>Jt(e)(t,r,i),jE=Ri(ke),Ci=e=>async(t,r,i)=>{let n=i?{...i,direction:"backward"}:{direction:"backward"};return Yt(e)(t,r,n)},BE=Ci(ke),Pi=e=>async(t,r,i)=>Yt(e)(t,r,i),ME=Pi(ke);var Ee={};Je(Ee,{base64:()=>sc,base64url:()=>Ni,bigint:()=>pc,boolean:()=>gc,browserEmail:()=>qE,cidrv4:()=>ic,cidrv6:()=>oc,cuid:()=>Va,cuid2:()=>Ga,date:()=>uc,datetime:()=>dc,domain:()=>QE,duration:()=>Ya,e164:()=>cc,email:()=>Xa,emoji:()=>ec,extendedDuration:()=>FE,guid:()=>Qa,hex:()=>XE,hostname:()=>YE,html5Email:()=>GE,httpProtocol:()=>ac,idnEmail:()=>WE,integer:()=>fc,ipv4:()=>tc,ipv6:()=>nc,ksuid:()=>qa,lowercase:()=>_c,mac:()=>rc,md5_base64:()=>tS,md5_base64url:()=>nS,md5_hex:()=>eS,nanoid:()=>Ja,null:()=>hc,number:()=>Di,rfc5322Email:()=>ZE,sha1_base64:()=>iS,sha1_base64url:()=>oS,sha1_hex:()=>rS,sha256_base64:()=>aS,sha256_base64url:()=>cS,sha256_hex:()=>sS,sha384_base64:()=>lS,sha384_base64url:()=>dS,sha384_hex:()=>uS,sha512_base64:()=>pS,sha512_base64url:()=>fS,sha512_hex:()=>mS,string:()=>mc,time:()=>lc,ulid:()=>Za,undefined:()=>bc,unicodeEmail:()=>og,uppercase:()=>vc,uuid:()=>$t,uuid4:()=>KE,uuid6:()=>HE,uuid7:()=>VE,xid:()=>Wa});var Va=/^[cC][0-9a-z]{6,}$/,Ga=/^[0-9a-z]+$/,Za=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Wa=/^[0-9a-vA-V]{20}$/,qa=/^[A-Za-z0-9]{27}$/,Ja=/^[a-zA-Z0-9_-]{21}$/,Ya=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,FE=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Qa=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,$t=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,KE=$t(4),HE=$t(6),VE=$t(7),Xa=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,GE=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,ZE=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,og=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,WE=og,qE=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,JE="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function ec(){return new RegExp(JE,"u")}var tc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,nc=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,rc=e=>{let t=Ae(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},ic=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,oc=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,sc=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Ni=/^[A-Za-z0-9_-]*$/,YE=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,QE=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,ac=/^https?$/,cc=/^\+[1-9]\d{6,14}$/,sg="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",uc=new RegExp(`^${sg}$`);function ag(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function lc(e){return new RegExp(`^${ag(e)}$`)}function dc(e){let t=ag({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let i=`${t}(?:${r.join("|")})`;return new RegExp(`^${sg}T(?:${i})$`)}var mc=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},pc=/^-?\d+n?$/,fc=/^-?\d+$/,Di=/^-?\d+(?:\.\d+)?$/,gc=/^(?:true|false)$/i,hc=/^null$/i;var bc=/^undefined$/i;var _c=/^[^A-Z]*$/,vc=/^[^a-z]*$/,XE=/^[0-9a-fA-F]*$/;function mr(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function pr(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var eS=/^[0-9a-fA-F]{32}$/,tS=mr(22,"=="),nS=pr(22),rS=/^[0-9a-fA-F]{40}$/,iS=mr(27,"="),oS=pr(27),sS=/^[0-9a-fA-F]{64}$/,aS=mr(43,"="),cS=pr(43),uS=/^[0-9a-fA-F]{96}$/,lS=mr(64,""),dS=pr(64),mS=/^[0-9a-fA-F]{128}$/,pS=mr(86,"=="),fS=pr(86);var J=h("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),ug={number:"number",bigint:"bigint",object:"date"},zi=h("$ZodCheckLessThan",(e,t)=>{J.init(e,t);let r=ug[typeof t.value];e._zod.onattach.push(i=>{let n=i._zod.bag,o=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<o&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value<=t.value:i.value<t.value)||i.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ui=h("$ZodCheckGreaterThan",(e,t)=>{J.init(e,t);let r=ug[typeof t.value];e._zod.onattach.push(i=>{let n=i._zod.bag,o=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>o&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value>=t.value:i.value>t.value)||i.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),yc=h("$ZodCheckMultipleOf",(e,t)=>{J.init(e,t),e._zod.onattach.push(r=>{var i;(i=r._zod.bag).multipleOf??(i.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):Ca(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),kc=h("$ZodCheckNumberFormat",(e,t)=>{J.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),i=r?"int":"number",[n,o]=La[t.format];e._zod.onattach.push(a=>{let c=a._zod.bag;c.format=t.format,c.minimum=n,c.maximum=o,r&&(c.pattern=fc)}),e._zod.check=a=>{let c=a.value;if(r){if(!Number.isInteger(c)){a.issues.push({expected:i,format:t.format,code:"invalid_type",continue:!1,input:c,inst:e});return}if(!Number.isSafeInteger(c)){c>0?a.issues.push({input:c,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,inclusive:!0,continue:!t.abort}):a.issues.push({input:c,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,inclusive:!0,continue:!t.abort});return}}c<n&&a.issues.push({origin:"number",input:c,code:"too_small",minimum:n,inclusive:!0,inst:e,continue:!t.abort}),c>o&&a.issues.push({origin:"number",input:c,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!t.abort})}}),Ic=h("$ZodCheckBigIntFormat",(e,t)=>{J.init(e,t);let[r,i]=ja[t.format];e._zod.onattach.push(n=>{let o=n._zod.bag;o.format=t.format,o.minimum=r,o.maximum=i}),e._zod.check=n=>{let o=n.value;o<r&&n.issues.push({origin:"bigint",input:o,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),o>i&&n.issues.push({origin:"bigint",input:o,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ec=h("$ZodCheckMaxSize",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.size!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(i._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;n.size<=t.maximum||i.issues.push({origin:ar(n),code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),Sc=h("$ZodCheckMinSize",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.size!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(i._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;n.size>=t.minimum||i.issues.push({origin:ar(n),code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),wc=h("$ZodCheckSizeEquals",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.size!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag;n.minimum=t.size,n.maximum=t.size,n.size=t.size}),e._zod.check=i=>{let n=i.value,o=n.size;if(o===t.size)return;let a=o>t.size;i.issues.push({origin:ar(n),...a?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),xc=h("$ZodCheckMaxLength",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.length!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(i._zod.bag.maximum=t.maximum)}),e._zod.check=i=>{let n=i.value;if(n.length<=t.maximum)return;let a=cr(n);i.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),$c=h("$ZodCheckMinLength",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.length!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(i._zod.bag.minimum=t.minimum)}),e._zod.check=i=>{let n=i.value;if(n.length>=t.minimum)return;let a=cr(n);i.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),Tc=h("$ZodCheckLengthEquals",(e,t)=>{var r;J.init(e,t),(r=e._zod.def).when??(r.when=i=>{let n=i.value;return!ot(n)&&n.length!==void 0}),e._zod.onattach.push(i=>{let n=i._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=i=>{let n=i.value,o=n.length;if(o===t.length)return;let a=cr(n),c=o>t.length;i.issues.push({origin:a,...c?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!t.abort})}}),Qt=h("$ZodCheckStringFormat",(e,t)=>{var r,i;J.init(e,t),e._zod.onattach.push(n=>{let o=n._zod.bag;o.format=t.format,t.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(i=e._zod).check??(i.check=()=>{})}),Oc=h("$ZodCheckRegex",(e,t)=>{Qt.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Ac=h("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=_c),Qt.init(e,t)}),Rc=h("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=vc),Qt.init(e,t)}),Cc=h("$ZodCheckIncludes",(e,t)=>{J.init(e,t);let r=Ae(t.includes),i=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=i,e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(i)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Pc=h("$ZodCheckStartsWith",(e,t)=>{J.init(e,t);let r=new RegExp(`^${Ae(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(i=>{let n=i._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(r)}),e._zod.check=i=>{i.value.startsWith(t.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:i.value,inst:e,continue:!t.abort})}}),Nc=h("$ZodCheckEndsWith",(e,t)=>{J.init(e,t);let r=new RegExp(`.*${Ae(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(i=>{let n=i._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(r)}),e._zod.check=i=>{i.value.endsWith(t.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:i.value,inst:e,continue:!t.abort})}});function cg(e,t,r){e.issues.length&&t.issues.push(...ye(r,e.issues))}var Dc=h("$ZodCheckProperty",(e,t)=>{J.init(e,t),e._zod.check=r=>{let i=t.schema._zod.run({value:r.value[t.property],issues:[]},{});if(i instanceof Promise)return i.then(n=>cg(n,r,t.property));cg(i,r,t.property)}}),zc=h("$ZodCheckMimeType",(e,t)=>{J.init(e,t);let r=new Set(t.mime);e._zod.onattach.push(i=>{i._zod.bag.mime=t.mime}),e._zod.check=i=>{r.has(i.value.type)||i.issues.push({code:"invalid_value",values:t.mime,input:i.value.type,inst:e,continue:!t.abort})}}),Uc=h("$ZodCheckOverwrite",(e,t)=>{J.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var fr=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let i=t.split(`
|
|
@@ -91,43 +91,43 @@ Expecting one of '${i.join("', '")}'`);let n=`${t}Help`;return this.on(n,o=>{let
|
|
|
91
91
|
|
|
92
92
|
`)}_.write("payload.value = newResult;"),_.write("return payload;");let A=_.compile();return(P,z)=>A(p,P,z)},o,a=xt,c=!wt.jitless,l=c&&Na.value,d=t.catchall,g;e._zod.parse=(p,_)=>{g??(g=i.value);let S=p.value;return a(S)?c&&l&&_?.async===!1&&_.jitless!==!0?(o||(o=n(t.shape)),p=o(p,_),d?Tg([],S,p,_,g,e):p):r(p,_):(p.issues.push({expected:"object",code:"invalid_type",input:S,inst:e}),p)}});function mg(e,t,r,i){for(let o of e)if(o.issues.length===0)return t.value=o.value,t;let n=e.filter(o=>!ct(o));return n.length===1?(t.value=n[0].value,n[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(o=>o.issues.map(a=>he(a,i,se())))}),t)}var hr=h("$ZodUnion",(e,t)=>{N.init(e,t),j(e._zod,"optin",()=>t.options.some(i=>i._zod.optin==="optional")?"optional":void 0),j(e._zod,"optout",()=>t.options.some(i=>i._zod.optout==="optional")?"optional":void 0),j(e._zod,"values",()=>{if(t.options.every(i=>i._zod.values))return new Set(t.options.flatMap(i=>Array.from(i._zod.values)))}),j(e._zod,"pattern",()=>{if(t.options.every(i=>i._zod.pattern)){let i=t.options.map(n=>n._zod.pattern);return new RegExp(`^(${i.map(n=>or(n.source)).join("|")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(i,n)=>{if(r)return r(i,n);let o=!1,a=[];for(let c of t.options){let u=c._zod.run({value:i.value,issues:[]},n);if(u instanceof Promise)a.push(u),o=!0;else{if(u.issues.length===0)return u;a.push(u)}}return o?Promise.all(a).then(c=>mg(c,i,e,n)):mg(a,i,e,n)}});function pg(e,t,r,i){let n=e.filter(o=>o.issues.length===0);return n.length===1?(t.value=n[0].value,t):(n.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(o=>o.issues.map(a=>he(a,i,se())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var Su=h("$ZodXor",(e,t)=>{hr.init(e,t),t.inclusive=!1;let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(i,n)=>{if(r)return r(i,n);let o=!1,a=[];for(let c of t.options){let u=c._zod.run({value:i.value,issues:[]},n);u instanceof Promise?(a.push(u),o=!0):a.push(u)}return o?Promise.all(a).then(c=>pg(c,i,e,n)):pg(a,i,e,n)}}),wu=h("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,hr.init(e,t);let r=e._zod.parse;j(e._zod,"propValues",()=>{let n={};for(let o of t.options){let a=o._zod.propValues;if(!a||Object.keys(a).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(o)}"`);for(let[c,u]of Object.entries(a)){n[c]||(n[c]=new Set);for(let l of u)n[c].add(l)}}return n});let i=Gt(()=>{let n=t.options,o=new Map;for(let a of n){let c=a._zod.propValues?.[t.discriminator];if(!c||c.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(a)}"`);for(let u of c){if(o.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);o.set(u,a)}}return o});e._zod.parse=(n,o)=>{let a=n.value;if(!xt(a))return n.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),n;let c=i.value.get(a?.[t.discriminator]);return c?c._zod.run(n,o):t.unionFallback||o.direction==="backward"?r(n,o):(n.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(i.value.keys()),input:a,path:[t.discriminator],inst:e}),n)}}),xu=h("$ZodIntersection",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{let n=r.value,o=t.left._zod.run({value:n,issues:[]},i),a=t.right._zod.run({value:n,issues:[]},i);return o instanceof Promise||a instanceof Promise?Promise.all([o,a]).then(([u,l])=>fg(r,u,l)):fg(r,o,a)}});function jc(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(at(e)&&at(t)){let r=Object.keys(t),i=Object.keys(e).filter(o=>r.indexOf(o)!==-1),n={...e,...t};for(let o of i){let a=jc(e[o],t[o]);if(!a.valid)return{valid:!1,mergeErrorPath:[o,...a.mergeErrorPath]};n[o]=a.data}return{valid:!0,data:n}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let i=0;i<e.length;i++){let n=e[i],o=t[i],a=jc(n,o);if(!a.valid)return{valid:!1,mergeErrorPath:[i,...a.mergeErrorPath]};r.push(a.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function fg(e,t,r){let i=new Map,n;for(let c of t.issues)if(c.code==="unrecognized_keys"){n??(n=c);for(let u of c.keys)i.has(u)||i.set(u,{}),i.get(u).l=!0}else e.issues.push(c);for(let c of r.issues)if(c.code==="unrecognized_keys")for(let u of c.keys)i.has(u)||i.set(u,{}),i.get(u).r=!0;else e.issues.push(c);let o=[...i].filter(([,c])=>c.l&&c.r).map(([c])=>c);if(o.length&&n&&e.issues.push({...n,keys:o}),ct(e))return e;let a=jc(t.value,r.value);if(!a.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(a.mergeErrorPath)}`);return e.value=a.data,e}var Hi=h("$ZodTuple",(e,t)=>{N.init(e,t);let r=t.items;e._zod.parse=(i,n)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:"tuple",code:"invalid_type"}),i;i.value=[];let a=[],c=gg(r,"optin"),u=gg(r,"optout");if(!t.rest){if(o.length<c)return i.issues.push({code:"too_small",minimum:c,inclusive:!0,input:o,inst:e,origin:"array"}),i;o.length>r.length&&i.issues.push({code:"too_big",maximum:r.length,inclusive:!0,input:o,inst:e,origin:"array"})}let l=new Array(r.length);for(let d=0;d<r.length;d++){let g=r[d]._zod.run({value:o[d],issues:[]},n);g instanceof Promise?a.push(g.then(p=>{l[d]=p})):l[d]=g}if(t.rest){let d=r.length-1,g=o.slice(r.length);for(let p of g){d++;let _=t.rest._zod.run({value:p,issues:[]},n);_ instanceof Promise?a.push(_.then(S=>hg(S,i,d))):hg(_,i,d)}}return a.length?Promise.all(a).then(()=>bg(l,i,r,o,u)):bg(l,i,r,o,u)}});function gg(e,t){for(let r=e.length-1;r>=0;r--)if(e[r]._zod[t]!=="optional")return r+1;return 0}function hg(e,t,r){e.issues.length&&t.issues.push(...ye(r,e.issues)),t.value[r]=e.value}function bg(e,t,r,i,n){for(let o=0;o<r.length;o++){let a=e[o],c=o<i.length;if(a.issues.length){if(!c&&o>=n){t.value.length=o;break}t.issues.push(...ye(o,a.issues))}t.value[o]=a.value}for(let o=t.value.length-1;o>=i.length&&(r[o]._zod.optout==="optional"&&t.value[o]===void 0);o--)t.value.length=o;return t}var $u=h("$ZodRecord",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{let n=r.value;if(!at(n))return r.issues.push({expected:"record",code:"invalid_type",input:n,inst:e}),r;let o=[],a=t.keyType._zod.values;if(a){r.value={};let c=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){c.add(typeof l=="number"?l.toString():l);let d=t.keyType._zod.run({value:l,issues:[]},i);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(_=>he(_,i,se())),input:l,path:[l],inst:e});continue}let g=d.value,p=t.valueType._zod.run({value:n[l],issues:[]},i);p instanceof Promise?o.push(p.then(_=>{_.issues.length&&r.issues.push(...ye(l,_.issues)),r.value[g]=_.value})):(p.issues.length&&r.issues.push(...ye(l,p.issues)),r.value[g]=p.value)}let u;for(let l in n)c.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:n,inst:e,keys:u})}else{r.value={};for(let c of Reflect.ownKeys(n)){if(c==="__proto__"||!Object.prototype.propertyIsEnumerable.call(n,c))continue;let u=t.keyType._zod.run({value:c,issues:[]},i);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof c=="string"&&Di.test(c)&&u.issues.length){let g=t.keyType._zod.run({value:Number(c),issues:[]},i);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(u=g)}if(u.issues.length){t.mode==="loose"?r.value[c]=n[c]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(g=>he(g,i,se())),input:c,path:[c],inst:e});continue}let d=t.valueType._zod.run({value:n[c],issues:[]},i);d instanceof Promise?o.push(d.then(g=>{g.issues.length&&r.issues.push(...ye(c,g.issues)),r.value[u.value]=g.value})):(d.issues.length&&r.issues.push(...ye(c,d.issues)),r.value[u.value]=d.value)}}return o.length?Promise.all(o).then(()=>r):r}}),Tu=h("$ZodMap",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{let n=r.value;if(!(n instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:n,inst:e}),r;let o=[];r.value=new Map;for(let[a,c]of n){let u=t.keyType._zod.run({value:a,issues:[]},i),l=t.valueType._zod.run({value:c,issues:[]},i);u instanceof Promise||l instanceof Promise?o.push(Promise.all([u,l]).then(([d,g])=>{_g(d,g,r,a,n,e,i)})):_g(u,l,r,a,n,e,i)}return o.length?Promise.all(o).then(()=>r):r}});function _g(e,t,r,i,n,o,a){e.issues.length&&(sr.has(typeof i)?r.issues.push(...ye(i,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:n,inst:o,issues:e.issues.map(c=>he(c,a,se()))})),t.issues.length&&(sr.has(typeof i)?r.issues.push(...ye(i,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:n,inst:o,key:i,issues:t.issues.map(c=>he(c,a,se()))})),r.value.set(e.value,t.value)}var Ou=h("$ZodSet",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{let n=r.value;if(!(n instanceof Set))return r.issues.push({input:n,inst:e,expected:"set",code:"invalid_type"}),r;let o=[];r.value=new Set;for(let a of n){let c=t.valueType._zod.run({value:a,issues:[]},i);c instanceof Promise?o.push(c.then(u=>vg(u,r))):vg(c,r)}return o.length?Promise.all(o).then(()=>r):r}});function vg(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var Au=h("$ZodEnum",(e,t)=>{N.init(e,t);let r=ir(t.entries),i=new Set(r);e._zod.values=i,e._zod.pattern=new RegExp(`^(${r.filter(n=>sr.has(typeof n)).map(n=>typeof n=="string"?Ae(n):n.toString()).join("|")})$`),e._zod.parse=(n,o)=>{let a=n.value;return i.has(a)||n.issues.push({code:"invalid_value",values:r,input:a,inst:e}),n}}),Ru=h("$ZodLiteral",(e,t)=>{if(N.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(i=>typeof i=="string"?Ae(i):i?Ae(i.toString()):String(i)).join("|")})$`),e._zod.parse=(i,n)=>{let o=i.value;return r.has(o)||i.issues.push({code:"invalid_value",values:t.values,input:o,inst:e}),i}}),Cu=h("$ZodFile",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{let n=r.value;return n instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:n,inst:e}),r}}),Pu=h("$ZodTransform",(e,t)=>{N.init(e,t),e._zod.optin="optional",e._zod.parse=(r,i)=>{if(i.direction==="backward")throw new it(e.constructor.name);let n=t.transform(r.value,r);if(i.async)return(n instanceof Promise?n:Promise.resolve(n)).then(a=>(r.value=a,r.fallback=!0,r));if(n instanceof Promise)throw new Pe;return r.value=n,r.fallback=!0,r}});function yg(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var Vi=h("$ZodOptional",(e,t)=>{N.init(e,t),e._zod.optin="optional",e._zod.optout="optional",j(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),j(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${or(r.source)})?$`):void 0}),e._zod.parse=(r,i)=>{if(t.innerType._zod.optin==="optional"){let n=r.value,o=t.innerType._zod.run(r,i);return o instanceof Promise?o.then(a=>yg(a,n)):yg(o,n)}return r.value===void 0?r:t.innerType._zod.run(r,i)}}),Nu=h("$ZodExactOptional",(e,t)=>{Vi.init(e,t),j(e._zod,"values",()=>t.innerType._zod.values),j(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,i)=>t.innerType._zod.run(r,i)}),Du=h("$ZodNullable",(e,t)=>{N.init(e,t),j(e._zod,"optin",()=>t.innerType._zod.optin),j(e._zod,"optout",()=>t.innerType._zod.optout),j(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${or(r.source)}|null)$`):void 0}),j(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,i)=>r.value===null?r:t.innerType._zod.run(r,i)}),zu=h("$ZodDefault",(e,t)=>{N.init(e,t),e._zod.optin="optional",j(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,i)=>{if(i.direction==="backward")return t.innerType._zod.run(r,i);if(r.value===void 0)return r.value=t.defaultValue,r;let n=t.innerType._zod.run(r,i);return n instanceof Promise?n.then(o=>kg(o,t)):kg(n,t)}});function kg(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Uu=h("$ZodPrefault",(e,t)=>{N.init(e,t),e._zod.optin="optional",j(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,i)=>(i.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,i))}),Lu=h("$ZodNonOptional",(e,t)=>{N.init(e,t),j(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(i=>i!==void 0)):void 0}),e._zod.parse=(r,i)=>{let n=t.innerType._zod.run(r,i);return n instanceof Promise?n.then(o=>Ig(o,e)):Ig(n,e)}});function Ig(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var ju=h("$ZodSuccess",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>{if(i.direction==="backward")throw new it("ZodSuccess");let n=t.innerType._zod.run(r,i);return n instanceof Promise?n.then(o=>(r.value=o.issues.length===0,r)):(r.value=n.issues.length===0,r)}}),Bu=h("$ZodCatch",(e,t)=>{N.init(e,t),e._zod.optin="optional",j(e._zod,"optout",()=>t.innerType._zod.optout),j(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,i)=>{if(i.direction==="backward")return t.innerType._zod.run(r,i);let n=t.innerType._zod.run(r,i);return n instanceof Promise?n.then(o=>(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(a=>he(a,i,se()))},input:r.value}),r.issues=[],r.fallback=!0),r)):(r.value=n.value,n.issues.length&&(r.value=t.catchValue({...r,error:{issues:n.issues.map(o=>he(o,i,se()))},input:r.value}),r.issues=[],r.fallback=!0),r)}}),Mu=h("$ZodNaN",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),Gi=h("$ZodPipe",(e,t)=>{N.init(e,t),j(e._zod,"values",()=>t.in._zod.values),j(e._zod,"optin",()=>t.in._zod.optin),j(e._zod,"optout",()=>t.out._zod.optout),j(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,i)=>{if(i.direction==="backward"){let o=t.out._zod.run(r,i);return o instanceof Promise?o.then(a=>Li(a,t.in,i)):Li(o,t.in,i)}let n=t.in._zod.run(r,i);return n instanceof Promise?n.then(o=>Li(o,t.out,i)):Li(n,t.out,i)}});function Li(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},r)}var br=h("$ZodCodec",(e,t)=>{N.init(e,t),j(e._zod,"values",()=>t.in._zod.values),j(e._zod,"optin",()=>t.in._zod.optin),j(e._zod,"optout",()=>t.out._zod.optout),j(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,i)=>{if((i.direction||"forward")==="forward"){let o=t.in._zod.run(r,i);return o instanceof Promise?o.then(a=>ji(a,t,i)):ji(o,t,i)}else{let o=t.out._zod.run(r,i);return o instanceof Promise?o.then(a=>ji(a,t,i)):ji(o,t,i)}}});function ji(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let n=t.transform(e.value,e);return n instanceof Promise?n.then(o=>Bi(e,o,t.out,r)):Bi(e,n,t.out,r)}else{let n=t.reverseTransform(e.value,e);return n instanceof Promise?n.then(o=>Bi(e,o,t.in,r)):Bi(e,n,t.in,r)}}function Bi(e,t,r,i){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},i)}var Fu=h("$ZodPreprocess",(e,t)=>{Gi.init(e,t)}),Ku=h("$ZodReadonly",(e,t)=>{N.init(e,t),j(e._zod,"propValues",()=>t.innerType._zod.propValues),j(e._zod,"values",()=>t.innerType._zod.values),j(e._zod,"optin",()=>t.innerType?._zod?.optin),j(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,i)=>{if(i.direction==="backward")return t.innerType._zod.run(r,i);let n=t.innerType._zod.run(r,i);return n instanceof Promise?n.then(Eg):Eg(n)}});function Eg(e){return e.value=Object.freeze(e.value),e}var Hu=h("$ZodTemplateLiteral",(e,t)=>{N.init(e,t);let r=[];for(let i of t.parts)if(typeof i=="object"&&i!==null){if(!i._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...i._zod.traits].shift()}`);let n=i._zod.pattern instanceof RegExp?i._zod.pattern.source:i._zod.pattern;if(!n)throw new Error(`Invalid template literal part: ${i._zod.traits}`);let o=n.startsWith("^")?1:0,a=n.endsWith("$")?n.length-1:n.length;r.push(n.slice(o,a))}else if(i===null||za.has(typeof i))r.push(Ae(`${i}`));else throw new Error(`Invalid template literal part: ${i}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(i,n)=>typeof i.value!="string"?(i.issues.push({input:i.value,inst:e,expected:"string",code:"invalid_type"}),i):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(i.value)||i.issues.push({input:i.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),i)}),Vu=h("$ZodFunction",(e,t)=>(N.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...i){let n=e._def.input?Si(e._def.input,i):i,o=Reflect.apply(r,this,n);return e._def.output?Si(e._def.output,o):o}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...i){let n=e._def.input?await wi(e._def.input,i):i,o=await Reflect.apply(r,this,n);return e._def.output?await wi(e._def.output,o):o}},e._zod.parse=(r,i)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let i=e.constructor;return Array.isArray(r[0])?new i({type:"function",input:new Hi({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new i({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let i=e.constructor;return new i({type:"function",input:e._def.input,output:r})},e)),Gu=h("$ZodPromise",(e,t)=>{N.init(e,t),e._zod.parse=(r,i)=>Promise.resolve(r.value).then(n=>t.innerType._zod.run({value:n,issues:[]},i))}),Zu=h("$ZodLazy",(e,t)=>{N.init(e,t),j(e._zod,"innerType",()=>{let r=t;return r._cachedInner||(r._cachedInner=t.getter()),r._cachedInner}),j(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),j(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),j(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),j(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,i)=>e._zod.innerType._zod.run(r,i)}),Wu=h("$ZodCustom",(e,t)=>{J.init(e,t),N.init(e,t),e._zod.parse=(r,i)=>r,e._zod.check=r=>{let i=r.value,n=t.fn(i);if(n instanceof Promise)return n.then(o=>Sg(o,r,i,e));Sg(n,r,i,e)}});function Sg(e,t,r,i){if(!e){let n={code:"custom",input:r,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(n.params=i._zod.def.params),t.issues.push(Zt(n))}}var vr={};Je(vr,{ar:()=>Ag,az:()=>Rg,be:()=>Pg,bg:()=>Ng,ca:()=>Dg,cs:()=>zg,da:()=>Ug,de:()=>Lg,el:()=>jg,en:()=>Zi,eo:()=>Bg,es:()=>Mg,fa:()=>Fg,fi:()=>Kg,fr:()=>Hg,frCA:()=>Vg,he:()=>Gg,hr:()=>Zg,hu:()=>Wg,hy:()=>Jg,id:()=>Yg,is:()=>Qg,it:()=>Xg,ja:()=>eh,ka:()=>th,kh:()=>nh,km:()=>Wi,ko:()=>rh,lt:()=>oh,mk:()=>sh,ms:()=>ah,nl:()=>ch,no:()=>uh,ota:()=>lh,pl:()=>mh,ps:()=>dh,pt:()=>ph,ro:()=>fh,ru:()=>hh,sl:()=>bh,sv:()=>_h,ta:()=>vh,th:()=>yh,tr:()=>kh,ua:()=>Ih,uk:()=>qi,ur:()=>Eh,uz:()=>Sh,vi:()=>wh,yo:()=>Th,zhCN:()=>xh,zhTW:()=>$h});var hS=()=>{let e={string:{unit:"\u062D\u0631\u0641",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},file:{unit:"\u0628\u0627\u064A\u062A",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},array:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},set:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"}};function t(n){return e[n]??null}let r={regex:"\u0645\u062F\u062E\u0644",email:"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",url:"\u0631\u0627\u0628\u0637",emoji:"\u0625\u064A\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",date:"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO",time:"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",duration:"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO",ipv4:"\u0639\u0646\u0648\u0627\u0646 IPv4",ipv6:"\u0639\u0646\u0648\u0627\u0646 IPv6",cidrv4:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4",cidrv6:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6",base64:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded",base64url:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded",json_string:"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON",e164:"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164",jwt:"JWT",template_literal:"\u0645\u062F\u062E\u0644"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${n.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${c}`:`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${o}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${c}`}case"invalid_value":return n.values.length===1?`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${E(n.values[0])}`:`\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${n.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${o} ${n.maximum.toString()} ${a.unit??"\u0639\u0646\u0635\u0631"}`:`\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${n.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${o} ${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${n.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${o} ${n.minimum.toString()} ${a.unit}`:`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${n.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${o} ${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${n.prefix}"`:o.format==="ends_with"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${o.suffix}"`:o.format==="includes"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${o.includes}"`:o.format==="regex"?`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${o.pattern}`:`${r[o.format]??n.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`}case"not_multiple_of":return`\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${n.divisor}`;case"unrecognized_keys":return`\u0645\u0639\u0631\u0641${n.keys.length>1?"\u0627\u062A":""} \u063A\u0631\u064A\u0628${n.keys.length>1?"\u0629":""}: ${y(n.keys,"\u060C ")}`;case"invalid_key":return`\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${n.origin}`;case"invalid_union":return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644";case"invalid_element":return`\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${n.origin}`;default:return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"}}};function Ag(){return{localeError:hS()}}var bS=()=>{let e={string:{unit:"simvol",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"element",verb:"olmal\u0131d\u0131r"},set:{unit:"element",verb:"olmal\u0131d\u0131r"}};function t(n){return e[n]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${n.expected}, daxil olan ${c}`:`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${o}, daxil olan ${c}`}case"invalid_value":return n.values.length===1?`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${E(n.values[0])}`:`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${n.origin??"d\u0259y\u0259r"} ${o}${n.maximum.toString()} ${a.unit??"element"}`:`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${n.origin??"d\u0259y\u0259r"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${n.origin} ${o}${n.minimum.toString()} ${a.unit}`:`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Yanl\u0131\u015F m\u0259tn: "${o.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`:o.format==="ends_with"?`Yanl\u0131\u015F m\u0259tn: "${o.suffix}" il\u0259 bitm\u0259lidir`:o.format==="includes"?`Yanl\u0131\u015F m\u0259tn: "${o.includes}" daxil olmal\u0131d\u0131r`:o.format==="regex"?`Yanl\u0131\u015F m\u0259tn: ${o.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`:`Yanl\u0131\u015F ${r[o.format]??n.format}`}case"not_multiple_of":return`Yanl\u0131\u015F \u0259d\u0259d: ${n.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`;case"unrecognized_keys":return`Tan\u0131nmayan a\xE7ar${n.keys.length>1?"lar":""}: ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`;case"invalid_union":return"Yanl\u0131\u015F d\u0259y\u0259r";case"invalid_element":return`${n.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;default:return"Yanl\u0131\u015F d\u0259y\u0259r"}}};function Rg(){return{localeError:bS()}}function Cg(e,t,r,i){let n=Math.abs(e),o=n%10,a=n%100;return a>=11&&a<=19?i:o===1?t:o>=2&&o<=4?r:i}var _S=()=>{let e={string:{unit:{one:"\u0441\u0456\u043C\u0432\u0430\u043B",few:"\u0441\u0456\u043C\u0432\u0430\u043B\u044B",many:"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u044B",many:"\u0431\u0430\u0439\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"}};function t(n){return e[n]??null}let r={regex:"\u0443\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0430\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0447\u0430\u0441",duration:"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0430\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0430\u0441",cidrv4:"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",base64:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64",base64url:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url",json_string:"JSON \u0440\u0430\u0434\u043E\u043A",e164:"\u043D\u0443\u043C\u0430\u0440 E.164",jwt:"JWT",template_literal:"\u0443\u0432\u043E\u0434"},i={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${n.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${c}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${o}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${c}`}case"invalid_value":return n.values.length===1?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${E(n.values[0])}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);if(a){let c=Number(n.maximum),u=Cg(c,a.unit.one,a.unit.few,a.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${a.verb} ${o}${n.maximum.toString()} ${u}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);if(a){let c=Number(n.minimum),u=Cg(c,a.unit.one,a.unit.few,a.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${a.verb} ${o}${n.minimum.toString()} ${u}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${n.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${o.prefix}"`:o.format==="ends_with"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${o.suffix}"`:o.format==="includes"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${o.includes}"`:o.format==="regex"?`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${o.pattern}`:`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${r[o.format]??n.format}`}case"not_multiple_of":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${n.keys.length>1?"\u043A\u043B\u044E\u0447\u044B":"\u043A\u043B\u044E\u0447"}: ${y(n.keys,", ")}`;case"invalid_key":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${n.origin}`;case"invalid_union":return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434";case"invalid_element":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${n.origin}`;default:return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"}}};function Pg(){return{localeError:_S()}}var vS=()=>{let e={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},file:{unit:"\u0431\u0430\u0439\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"}};function t(n){return e[n]??null}let r={regex:"\u0432\u0445\u043E\u0434",email:"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0436\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",base64url:"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",json_string:"JSON \u043D\u0438\u0437",e164:"E.164 \u043D\u043E\u043C\u0435\u0440",jwt:"JWT",template_literal:"\u0432\u0445\u043E\u0434"},i={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${n.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${c}`:`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${o}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${c}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${E(n.values[0])}`:`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${o}${n.maximum.toString()} ${a.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`:`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${o}${n.minimum.toString()} ${a.unit}`:`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${n.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;if(o.format==="starts_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${o.prefix}"`;if(o.format==="ends_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${o.suffix}"`;if(o.format==="includes")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${o.includes}"`;if(o.format==="regex")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${o.pattern}`;let a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";return o.format==="emoji"&&(a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),o.format==="datetime"&&(a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),o.format==="date"&&(a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"),o.format==="time"&&(a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"),o.format==="duration"&&(a="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"),`${a} ${r[o.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${n.keys.length>1?"\u0438":""} \u043A\u043B\u044E\u0447${n.keys.length>1?"\u043E\u0432\u0435":""}: ${y(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434";case"invalid_element":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${n.origin}`;default:return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"}}};function Ng(){return{localeError:vS()}}var yS=()=>{let e={string:{unit:"car\xE0cters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function t(n){return e[n]??null}let r={regex:"entrada",email:"adre\xE7a electr\xF2nica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adre\xE7a IPv4",ipv6:"adre\xE7a IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Tipus inv\xE0lid: s'esperava instanceof ${n.expected}, s'ha rebut ${c}`:`Tipus inv\xE0lid: s'esperava ${o}, s'ha rebut ${c}`}case"invalid_value":return n.values.length===1?`Valor inv\xE0lid: s'esperava ${E(n.values[0])}`:`Opci\xF3 inv\xE0lida: s'esperava una de ${y(n.values," o ")}`;case"too_big":{let o=n.inclusive?"com a m\xE0xim":"menys de",a=t(n.origin);return a?`Massa gran: s'esperava que ${n.origin??"el valor"} contingu\xE9s ${o} ${n.maximum.toString()} ${a.unit??"elements"}`:`Massa gran: s'esperava que ${n.origin??"el valor"} fos ${o} ${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?"com a m\xEDnim":"m\xE9s de",a=t(n.origin);return a?`Massa petit: s'esperava que ${n.origin} contingu\xE9s ${o} ${n.minimum.toString()} ${a.unit}`:`Massa petit: s'esperava que ${n.origin} fos ${o} ${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Format inv\xE0lid: ha de comen\xE7ar amb "${o.prefix}"`:o.format==="ends_with"?`Format inv\xE0lid: ha d'acabar amb "${o.suffix}"`:o.format==="includes"?`Format inv\xE0lid: ha d'incloure "${o.includes}"`:o.format==="regex"?`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${o.pattern}`:`Format inv\xE0lid per a ${r[o.format]??n.format}`}case"not_multiple_of":return`N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${n.divisor}`;case"unrecognized_keys":return`Clau${n.keys.length>1?"s":""} no reconeguda${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Clau inv\xE0lida a ${n.origin}`;case"invalid_union":return"Entrada inv\xE0lida";case"invalid_element":return`Element inv\xE0lid a ${n.origin}`;default:return"Entrada inv\xE0lida"}}};function Dg(){return{localeError:yS()}}var kS=()=>{let e={string:{unit:"znak\u016F",verb:"m\xEDt"},file:{unit:"bajt\u016F",verb:"m\xEDt"},array:{unit:"prvk\u016F",verb:"m\xEDt"},set:{unit:"prvk\u016F",verb:"m\xEDt"}};function t(n){return e[n]??null}let r={regex:"regul\xE1rn\xED v\xFDraz",email:"e-mailov\xE1 adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a \u010Das ve form\xE1tu ISO",date:"datum ve form\xE1tu ISO",time:"\u010Das ve form\xE1tu ISO",duration:"doba trv\xE1n\xED ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64",base64url:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url",json_string:"\u0159et\u011Bzec ve form\xE1tu JSON",e164:"\u010D\xEDslo E.164",jwt:"JWT",template_literal:"vstup"},i={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${n.expected}, obdr\u017Eeno ${c}`:`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${o}, obdr\u017Eeno ${c}`}case"invalid_value":return n.values.length===1?`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${E(n.values[0])}`:`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${n.origin??"hodnota"} mus\xED m\xEDt ${o}${n.maximum.toString()} ${a.unit??"prvk\u016F"}`:`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${n.origin??"hodnota"} mus\xED b\xFDt ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${n.origin??"hodnota"} mus\xED m\xEDt ${o}${n.minimum.toString()} ${a.unit??"prvk\u016F"}`:`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${n.origin??"hodnota"} mus\xED b\xFDt ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${o.prefix}"`:o.format==="ends_with"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${o.suffix}"`:o.format==="includes"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${o.includes}"`:o.format==="regex"?`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${o.pattern}`:`Neplatn\xFD form\xE1t ${r[o.format]??n.format}`}case"not_multiple_of":return`Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${n.divisor}`;case"unrecognized_keys":return`Nezn\xE1m\xE9 kl\xED\u010De: ${y(n.keys,", ")}`;case"invalid_key":return`Neplatn\xFD kl\xED\u010D v ${n.origin}`;case"invalid_union":return"Neplatn\xFD vstup";case"invalid_element":return`Neplatn\xE1 hodnota v ${n.origin}`;default:return"Neplatn\xFD vstup"}}};function zg(){return{localeError:kS()}}var IS=()=>{let e={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function t(n){return e[n]??null}let r={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkesl\xE6t",date:"ISO-dato",time:"ISO-klokkesl\xE6t",duration:"ISO-varighed",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},i={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"s\xE6t",file:"fil"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ugyldigt input: forventede instanceof ${n.expected}, fik ${c}`:`Ugyldigt input: forventede ${o}, fik ${c}`}case"invalid_value":return n.values.length===1?`Ugyldig v\xE6rdi: forventede ${E(n.values[0])}`:`Ugyldigt valg: forventede en af f\xF8lgende ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin),c=i[n.origin]??n.origin;return a?`For stor: forventede ${c??"value"} ${a.verb} ${o} ${n.maximum.toString()} ${a.unit??"elementer"}`:`For stor: forventede ${c??"value"} havde ${o} ${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin),c=i[n.origin]??n.origin;return a?`For lille: forventede ${c} ${a.verb} ${o} ${n.minimum.toString()} ${a.unit}`:`For lille: forventede ${c} havde ${o} ${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ugyldig streng: skal starte med "${o.prefix}"`:o.format==="ends_with"?`Ugyldig streng: skal ende med "${o.suffix}"`:o.format==="includes"?`Ugyldig streng: skal indeholde "${o.includes}"`:o.format==="regex"?`Ugyldig streng: skal matche m\xF8nsteret ${o.pattern}`:`Ugyldig ${r[o.format]??n.format}`}case"not_multiple_of":return`Ugyldigt tal: skal v\xE6re deleligt med ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ukendte n\xF8gler":"Ukendt n\xF8gle"}: ${y(n.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8gle i ${n.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig v\xE6rdi i ${n.origin}`;default:return"Ugyldigt input"}}};function Ug(){return{localeError:IS()}}var ES=()=>{let e={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function t(n){return e[n]??null}let r={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"},i={nan:"NaN",number:"Zahl",array:"Array"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ung\xFCltige Eingabe: erwartet instanceof ${n.expected}, erhalten ${c}`:`Ung\xFCltige Eingabe: erwartet ${o}, erhalten ${c}`}case"invalid_value":return n.values.length===1?`Ung\xFCltige Eingabe: erwartet ${E(n.values[0])}`:`Ung\xFCltige Option: erwartet eine von ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Zu gro\xDF: erwartet, dass ${n.origin??"Wert"} ${o}${n.maximum.toString()} ${a.unit??"Elemente"} hat`:`Zu gro\xDF: erwartet, dass ${n.origin??"Wert"} ${o}${n.maximum.toString()} ist`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Zu klein: erwartet, dass ${n.origin} ${o}${n.minimum.toString()} ${a.unit} hat`:`Zu klein: erwartet, dass ${n.origin} ${o}${n.minimum.toString()} ist`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ung\xFCltiger String: muss mit "${o.prefix}" beginnen`:o.format==="ends_with"?`Ung\xFCltiger String: muss mit "${o.suffix}" enden`:o.format==="includes"?`Ung\xFCltiger String: muss "${o.includes}" enthalten`:o.format==="regex"?`Ung\xFCltiger String: muss dem Muster ${o.pattern} entsprechen`:`Ung\xFCltig: ${r[o.format]??n.format}`}case"not_multiple_of":return`Ung\xFCltige Zahl: muss ein Vielfaches von ${n.divisor} sein`;case"unrecognized_keys":return`${n.keys.length>1?"Unbekannte Schl\xFCssel":"Unbekannter Schl\xFCssel"}: ${y(n.keys,", ")}`;case"invalid_key":return`Ung\xFCltiger Schl\xFCssel in ${n.origin}`;case"invalid_union":return"Ung\xFCltige Eingabe";case"invalid_element":return`Ung\xFCltiger Wert in ${n.origin}`;default:return"Ung\xFCltige Eingabe"}}};function Lg(){return{localeError:ES()}}var SS=()=>{let e={string:{unit:"\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},file:{unit:"bytes",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},array:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},set:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},map:{unit:"\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"}};function t(n){return e[n]??null}let r={regex:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2",email:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1",date:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1",time:"ISO \u03CE\u03C1\u03B1",duration:"ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1",ipv4:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4",ipv6:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6",mac:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC",cidrv4:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4",cidrv6:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6",base64:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64",base64url:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url",json_string:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON",e164:"\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164",jwt:"JWT",template_literal:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return typeof n.expected=="string"&&/^[A-Z]/.test(n.expected)?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${n.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${c}`:`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${o}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${c}`}case"invalid_value":return n.values.length===1?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${E(n.values[0])}`:`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${n.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${o}${n.maximum.toString()} ${a.unit??"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1"}`:`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${n.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${n.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${o}${n.minimum.toString()} ${a.unit}`:`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${n.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 "${o.prefix}"`:o.format==="ends_with"?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 "${o.suffix}"`:o.format==="includes"?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 "${o.includes}"`:o.format==="regex"?`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${o.pattern}`:`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${r[o.format]??n.format}`}case"not_multiple_of":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${n.divisor}`;case"unrecognized_keys":return`\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${n.keys.length>1?"\u03B1":"\u03BF"} \u03BA\u03BB\u03B5\u03B9\u03B4${n.keys.length>1?"\u03B9\u03AC":"\u03AF"}: ${y(n.keys,", ")}`;case"invalid_key":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${n.origin}`;case"invalid_union":return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2";case"invalid_element":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${n.origin}`;default:return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"}}};function jg(){return{localeError:SS()}}var wS=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(n){return e[n]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return`Invalid input: expected ${o}, received ${c}`}case"invalid_value":return n.values.length===1?`Invalid input: expected ${E(n.values[0])}`:`Invalid option: expected one of ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Too big: expected ${n.origin??"value"} to have ${o}${n.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${n.origin??"value"} to be ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Too small: expected ${n.origin} to have ${o}${n.minimum.toString()} ${a.unit}`:`Too small: expected ${n.origin} to be ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Invalid string: must start with "${o.prefix}"`:o.format==="ends_with"?`Invalid string: must end with "${o.suffix}"`:o.format==="includes"?`Invalid string: must include "${o.includes}"`:o.format==="regex"?`Invalid string: must match pattern ${o.pattern}`:`Invalid ${r[o.format]??n.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${n.divisor}`;case"unrecognized_keys":return`Unrecognized key${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Invalid key in ${n.origin}`;case"invalid_union":return n.options&&Array.isArray(n.options)&&n.options.length>0?`Invalid discriminator value. Expected ${n.options.map(a=>`'${a}'`).join(" | ")}`:"Invalid input";case"invalid_element":return`Invalid value in ${n.origin}`;default:return"Invalid input"}}};function Zi(){return{localeError:wS()}}var xS=()=>{let e={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function t(n){return e[n]??null}let r={regex:"enigo",email:"retadreso",url:"URL",emoji:"emo\u011Dio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-da\u016Dro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"},i={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Nevalida enigo: atendi\u011Dis instanceof ${n.expected}, ricevi\u011Dis ${c}`:`Nevalida enigo: atendi\u011Dis ${o}, ricevi\u011Dis ${c}`}case"invalid_value":return n.values.length===1?`Nevalida enigo: atendi\u011Dis ${E(n.values[0])}`:`Nevalida opcio: atendi\u011Dis unu el ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Tro granda: atendi\u011Dis ke ${n.origin??"valoro"} havu ${o}${n.maximum.toString()} ${a.unit??"elementojn"}`:`Tro granda: atendi\u011Dis ke ${n.origin??"valoro"} havu ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Tro malgranda: atendi\u011Dis ke ${n.origin} havu ${o}${n.minimum.toString()} ${a.unit}`:`Tro malgranda: atendi\u011Dis ke ${n.origin} estu ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Nevalida karaktraro: devas komenci\u011Di per "${o.prefix}"`:o.format==="ends_with"?`Nevalida karaktraro: devas fini\u011Di per "${o.suffix}"`:o.format==="includes"?`Nevalida karaktraro: devas inkluzivi "${o.includes}"`:o.format==="regex"?`Nevalida karaktraro: devas kongrui kun la modelo ${o.pattern}`:`Nevalida ${r[o.format]??n.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${n.divisor}`;case"unrecognized_keys":return`Nekonata${n.keys.length>1?"j":""} \u015Dlosilo${n.keys.length>1?"j":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Nevalida \u015Dlosilo en ${n.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${n.origin}`;default:return"Nevalida enigo"}}};function Bg(){return{localeError:xS()}}var $S=()=>{let e={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function t(n){return e[n]??null}let r={regex:"entrada",email:"direcci\xF3n de correo electr\xF3nico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duraci\xF3n ISO",ipv4:"direcci\xF3n IPv4",ipv6:"direcci\xF3n IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},i={nan:"NaN",string:"texto",number:"n\xFAmero",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"n\xFAmero grande",symbol:"s\xEDmbolo",undefined:"indefinido",null:"nulo",function:"funci\xF3n",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeraci\xF3n",union:"uni\xF3n",literal:"literal",promise:"promesa",void:"vac\xEDo",never:"nunca",unknown:"desconocido",any:"cualquiera"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Entrada inv\xE1lida: se esperaba instanceof ${n.expected}, recibido ${c}`:`Entrada inv\xE1lida: se esperaba ${o}, recibido ${c}`}case"invalid_value":return n.values.length===1?`Entrada inv\xE1lida: se esperaba ${E(n.values[0])}`:`Opci\xF3n inv\xE1lida: se esperaba una de ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin),c=i[n.origin]??n.origin;return a?`Demasiado grande: se esperaba que ${c??"valor"} tuviera ${o}${n.maximum.toString()} ${a.unit??"elementos"}`:`Demasiado grande: se esperaba que ${c??"valor"} fuera ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin),c=i[n.origin]??n.origin;return a?`Demasiado peque\xF1o: se esperaba que ${c} tuviera ${o}${n.minimum.toString()} ${a.unit}`:`Demasiado peque\xF1o: se esperaba que ${c} fuera ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Cadena inv\xE1lida: debe comenzar con "${o.prefix}"`:o.format==="ends_with"?`Cadena inv\xE1lida: debe terminar en "${o.suffix}"`:o.format==="includes"?`Cadena inv\xE1lida: debe incluir "${o.includes}"`:o.format==="regex"?`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${o.pattern}`:`Inv\xE1lido ${r[o.format]??n.format}`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${n.divisor}`;case"unrecognized_keys":return`Llave${n.keys.length>1?"s":""} desconocida${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${i[n.origin]??n.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${i[n.origin]??n.origin}`;default:return"Entrada inv\xE1lida"}}};function Mg(){return{localeError:$S()}}var TS=()=>{let e={string:{unit:"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},file:{unit:"\u0628\u0627\u06CC\u062A",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},array:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},set:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"}};function t(n){return e[n]??null}let r={regex:"\u0648\u0631\u0648\u062F\u06CC",email:"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644",url:"URL",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",date:"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648",time:"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",duration:"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",ipv4:"IPv4 \u0622\u062F\u0631\u0633",ipv6:"IPv6 \u0622\u062F\u0631\u0633",cidrv4:"IPv4 \u062F\u0627\u0645\u0646\u0647",cidrv6:"IPv6 \u062F\u0627\u0645\u0646\u0647",base64:"base64-encoded \u0631\u0634\u062A\u0647",base64url:"base64url-encoded \u0631\u0634\u062A\u0647",json_string:"JSON \u0631\u0634\u062A\u0647",e164:"E.164 \u0639\u062F\u062F",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u06CC"},i={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${n.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${c} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`:`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${o} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${c} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}case"invalid_value":return n.values.length===1?`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${E(n.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`:`\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${y(n.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${n.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${o}${n.maximum.toString()} ${a.unit??"\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`:`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${n.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${o}${n.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${n.origin} \u0628\u0627\u06CC\u062F ${o}${n.minimum.toString()} ${a.unit} \u0628\u0627\u0634\u062F`:`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${n.origin} \u0628\u0627\u06CC\u062F ${o}${n.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${o.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`:o.format==="ends_with"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${o.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`:o.format==="includes"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${o.includes}" \u0628\u0627\u0634\u062F`:o.format==="regex"?`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${o.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`:`${r[o.format]??n.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}case"not_multiple_of":return`\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${n.divisor} \u0628\u0627\u0634\u062F`;case"unrecognized_keys":return`\u06A9\u0644\u06CC\u062F${n.keys.length>1?"\u0647\u0627\u06CC":""} \u0646\u0627\u0634\u0646\u0627\u0633: ${y(n.keys,", ")}`;case"invalid_key":return`\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${n.origin}`;case"invalid_union":return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631";case"invalid_element":return`\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${n.origin}`;default:return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631"}}};function Fg(){return{localeError:TS()}}var OS=()=>{let e={string:{unit:"merkki\xE4",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"p\xE4iv\xE4m\xE4\xE4r\xE4n"}};function t(n){return e[n]??null}let r={regex:"s\xE4\xE4nn\xF6llinen lauseke",email:"s\xE4hk\xF6postiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-p\xE4iv\xE4m\xE4\xE4r\xE4",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Virheellinen tyyppi: odotettiin instanceof ${n.expected}, oli ${c}`:`Virheellinen tyyppi: odotettiin ${o}, oli ${c}`}case"invalid_value":return n.values.length===1?`Virheellinen sy\xF6te: t\xE4ytyy olla ${E(n.values[0])}`:`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Liian suuri: ${a.subject} t\xE4ytyy olla ${o}${n.maximum.toString()} ${a.unit}`.trim():`Liian suuri: arvon t\xE4ytyy olla ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Liian pieni: ${a.subject} t\xE4ytyy olla ${o}${n.minimum.toString()} ${a.unit}`.trim():`Liian pieni: arvon t\xE4ytyy olla ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${o.prefix}"`:o.format==="ends_with"?`Virheellinen sy\xF6te: t\xE4ytyy loppua "${o.suffix}"`:o.format==="includes"?`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${o.includes}"`:o.format==="regex"?`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${o.pattern}`:`Virheellinen ${r[o.format]??n.format}`}case"not_multiple_of":return`Virheellinen luku: t\xE4ytyy olla luvun ${n.divisor} monikerta`;case"unrecognized_keys":return`${n.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${y(n.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return"Virheellinen sy\xF6te"}}};function Kg(){return{localeError:OS()}}var AS=()=>{let e={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function t(n){return e[n]??null}let r={regex:"entr\xE9e",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},i={string:"cha\xEEne",number:"nombre",int:"entier",boolean:"bool\xE9en",bigint:"grand entier",symbol:"symbole",undefined:"ind\xE9fini",null:"null",never:"jamais",void:"vide",date:"date",array:"tableau",object:"objet",tuple:"tuple",record:"enregistrement",map:"carte",set:"ensemble",file:"fichier",nonoptional:"non-optionnel",nan:"NaN",function:"fonction"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Entr\xE9e invalide : instanceof ${n.expected} attendu, ${c} re\xE7u`:`Entr\xE9e invalide : ${o} attendu, ${c} re\xE7u`}case"invalid_value":return n.values.length===1?`Entr\xE9e invalide : ${E(n.values[0])} attendu`:`Option invalide : une valeur parmi ${y(n.values,"|")} attendue`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Trop grand : ${i[n.origin]??"valeur"} doit ${a.verb} ${o}${n.maximum.toString()} ${a.unit??"\xE9l\xE9ment(s)"}`:`Trop grand : ${i[n.origin]??"valeur"} doit \xEAtre ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Trop petit : ${i[n.origin]??"valeur"} doit ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`Trop petit : ${i[n.origin]??"valeur"} doit \xEAtre ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Cha\xEEne invalide : doit commencer par "${o.prefix}"`:o.format==="ends_with"?`Cha\xEEne invalide : doit se terminer par "${o.suffix}"`:o.format==="includes"?`Cha\xEEne invalide : doit inclure "${o.includes}"`:o.format==="regex"?`Cha\xEEne invalide : doit correspondre au mod\xE8le ${o.pattern}`:`${r[o.format]??n.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${n.divisor}`;case"unrecognized_keys":return`Cl\xE9${n.keys.length>1?"s":""} non reconnue${n.keys.length>1?"s":""} : ${y(n.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${n.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${n.origin}`;default:return"Entr\xE9e invalide"}}};function Hg(){return{localeError:AS()}}var RS=()=>{let e={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function t(n){return e[n]??null}let r={regex:"entr\xE9e",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Entr\xE9e invalide : attendu instanceof ${n.expected}, re\xE7u ${c}`:`Entr\xE9e invalide : attendu ${o}, re\xE7u ${c}`}case"invalid_value":return n.values.length===1?`Entr\xE9e invalide : attendu ${E(n.values[0])}`:`Option invalide : attendu l'une des valeurs suivantes ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"\u2264":"<",a=t(n.origin);return a?`Trop grand : attendu que ${n.origin??"la valeur"} ait ${o}${n.maximum.toString()} ${a.unit}`:`Trop grand : attendu que ${n.origin??"la valeur"} soit ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?"\u2265":">",a=t(n.origin);return a?`Trop petit : attendu que ${n.origin} ait ${o}${n.minimum.toString()} ${a.unit}`:`Trop petit : attendu que ${n.origin} soit ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Cha\xEEne invalide : doit commencer par "${o.prefix}"`:o.format==="ends_with"?`Cha\xEEne invalide : doit se terminer par "${o.suffix}"`:o.format==="includes"?`Cha\xEEne invalide : doit inclure "${o.includes}"`:o.format==="regex"?`Cha\xEEne invalide : doit correspondre au motif ${o.pattern}`:`${r[o.format]??n.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${n.divisor}`;case"unrecognized_keys":return`Cl\xE9${n.keys.length>1?"s":""} non reconnue${n.keys.length>1?"s":""} : ${y(n.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${n.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${n.origin}`;default:return"Entr\xE9e invalide"}}};function Vg(){return{localeError:RS()}}var CS=()=>{let e={string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA",gender:"f"},number:{label:"\u05DE\u05E1\u05E4\u05E8",gender:"m"},boolean:{label:"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA",gender:"m"},array:{label:"\u05DE\u05E2\u05E8\u05DA",gender:"m"},object:{label:"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8",gender:"m"},null:{label:"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)",gender:"m"},undefined:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)",gender:"m"},symbol:{label:"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)",gender:"m"},function:{label:"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4",gender:"f"},map:{label:"\u05DE\u05E4\u05D4 (Map)",gender:"f"},set:{label:"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)",gender:"f"},file:{label:"\u05E7\u05D5\u05D1\u05E5",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2",gender:"m"},value:{label:"\u05E2\u05E8\u05DA",gender:"m"}},t={string:{unit:"\u05EA\u05D5\u05D5\u05D9\u05DD",shortLabel:"\u05E7\u05E6\u05E8",longLabel:"\u05D0\u05E8\u05D5\u05DA"},file:{unit:"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},array:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},set:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},number:{unit:"",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"}},r=l=>l?e[l]:void 0,i=l=>{let d=r(l);return d?d.label:l??e.unknown.label},n=l=>`\u05D4${i(l)}`,o=l=>(r(l)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA",a=l=>l?t[l]??null:null,c={regex:{label:"\u05E7\u05DC\u05D8",gender:"m"},email:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",gender:"f"},url:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA",gender:"f"},emoji:{label:"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA ISO",gender:"m"},time:{label:"\u05D6\u05DE\u05DF ISO",gender:"m"},duration:{label:"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO",gender:"m"},ipv4:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4",gender:"f"},ipv6:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6",gender:"f"},cidrv4:{label:"\u05D8\u05D5\u05D5\u05D7 IPv4",gender:"m"},cidrv6:{label:"\u05D8\u05D5\u05D5\u05D7 IPv6",gender:"m"},base64:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64",gender:"f"},base64url:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA",gender:"f"},json_string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON",gender:"f"},e164:{label:"\u05DE\u05E1\u05E4\u05E8 E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},includes:{label:"\u05E7\u05DC\u05D8",gender:"m"},lowercase:{label:"\u05E7\u05DC\u05D8",gender:"m"},starts_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},uppercase:{label:"\u05E7\u05DC\u05D8",gender:"m"}},u={nan:"NaN"};return l=>{switch(l.code){case"invalid_type":{let d=l.expected,g=u[d??""]??i(d),p=w(l.input),_=u[p]??e[p]?.label??p;return/^[A-Z]/.test(l.expected)?`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${l.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${_}`:`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${g}, \u05D4\u05EA\u05E7\u05D1\u05DC ${_}`}case"invalid_value":{if(l.values.length===1)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${E(l.values[0])}`;let d=l.values.map(_=>E(_));if(l.values.length===2)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${d[0]} \u05D0\u05D5 ${d[1]}`;let g=d[d.length-1];return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${d.slice(0,-1).join(", ")} \u05D0\u05D5 ${g}`}case"too_big":{let d=a(l.origin),g=n(l.origin??"value");if(l.origin==="string")return`${d?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${g} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${l.maximum.toString()} ${d?.unit??""} ${l.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(l.origin==="number"){let S=l.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${l.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${l.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${g} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(l.origin==="array"||l.origin==="set"){let S=l.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",f=l.inclusive?`${l.maximum} ${d?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${l.maximum} ${d?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${g} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${f}`.trim()}let p=l.inclusive?"<=":"<",_=o(l.origin??"value");return d?.unit?`${d.longLabel} \u05DE\u05D3\u05D9: ${g} ${_} ${p}${l.maximum.toString()} ${d.unit}`:`${d?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${g} ${_} ${p}${l.maximum.toString()}`}case"too_small":{let d=a(l.origin),g=n(l.origin??"value");if(l.origin==="string")return`${d?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${g} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${l.minimum.toString()} ${d?.unit??""} ${l.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(l.origin==="number"){let S=l.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${l.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${l.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${g} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(l.origin==="array"||l.origin==="set"){let S=l.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(l.minimum===1&&l.inclusive){let m=(l.origin==="set","\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3");return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${g} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${m}`}let f=l.inclusive?`${l.minimum} ${d?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${l.minimum} ${d?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${g} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${f}`.trim()}let p=l.inclusive?">=":">",_=o(l.origin??"value");return d?.unit?`${d.shortLabel} \u05DE\u05D3\u05D9: ${g} ${_} ${p}${l.minimum.toString()} ${d.unit}`:`${d?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${g} ${_} ${p}${l.minimum.toString()}`}case"invalid_format":{let d=l;if(d.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${d.prefix}"`;if(d.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${d.suffix}"`;if(d.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${d.includes}"`;if(d.format==="regex")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${d.pattern}`;let g=c[d.format],p=g?.label??d.format,S=(g?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${p} \u05DC\u05D0 ${S}`}case"not_multiple_of":return`\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${l.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${l.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${l.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${y(l.keys,", ")}`;case"invalid_key":return"\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8";case"invalid_union":return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";case"invalid_element":return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${n(l.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};function Gg(){return{localeError:CS()}}var PS=()=>{let e={string:{unit:"znakova",verb:"imati"},file:{unit:"bajtova",verb:"imati"},array:{unit:"stavki",verb:"imati"},set:{unit:"stavki",verb:"imati"}};function t(n){return e[n]??null}let r={regex:"unos",email:"email adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum i vrijeme",date:"ISO datum",time:"ISO vrijeme",duration:"ISO trajanje",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"IPv4 raspon",cidrv6:"IPv6 raspon",base64:"base64 kodirani tekst",base64url:"base64url kodirani tekst",json_string:"JSON tekst",e164:"E.164 broj",jwt:"JWT",template_literal:"unos"},i={nan:"NaN",string:"tekst",number:"broj",boolean:"boolean",array:"niz",object:"objekt",set:"skup",file:"datoteka",date:"datum",bigint:"bigint",symbol:"simbol",undefined:"undefined",null:"null",function:"funkcija",map:"mapa"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Neispravan unos: o\u010Dekuje se instanceof ${n.expected}, a primljeno je ${c}`:`Neispravan unos: o\u010Dekuje se ${o}, a primljeno je ${c}`}case"invalid_value":return n.values.length===1?`Neispravna vrijednost: o\u010Dekivano ${E(n.values[0])}`:`Neispravna opcija: o\u010Dekivano jedno od ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin),c=i[n.origin]??n.origin;return a?`Preveliko: o\u010Dekivano da ${c??"vrijednost"} ima ${o}${n.maximum.toString()} ${a.unit??"elemenata"}`:`Preveliko: o\u010Dekivano da ${c??"vrijednost"} bude ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin),c=i[n.origin]??n.origin;return a?`Premalo: o\u010Dekivano da ${c} ima ${o}${n.minimum.toString()} ${a.unit}`:`Premalo: o\u010Dekivano da ${c} bude ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Neispravan tekst: mora zapo\u010Dinjati s "${o.prefix}"`:o.format==="ends_with"?`Neispravan tekst: mora zavr\u0161avati s "${o.suffix}"`:o.format==="includes"?`Neispravan tekst: mora sadr\u017Eavati "${o.includes}"`:o.format==="regex"?`Neispravan tekst: mora odgovarati uzorku ${o.pattern}`:`Neispravna ${r[o.format]??n.format}`}case"not_multiple_of":return`Neispravan broj: mora biti vi\u0161ekratnik od ${n.divisor}`;case"unrecognized_keys":return`Neprepoznat${n.keys.length>1?"i klju\u010Devi":" klju\u010D"}: ${y(n.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${i[n.origin]??n.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${i[n.origin]??n.origin}`;default:return"Neispravan unos"}}};function Zg(){return{localeError:PS()}}var NS=()=>{let e={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function t(n){return e[n]??null}let r={regex:"bemenet",email:"email c\xEDm",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO id\u0151b\xE9lyeg",date:"ISO d\xE1tum",time:"ISO id\u0151",duration:"ISO id\u0151intervallum",ipv4:"IPv4 c\xEDm",ipv6:"IPv6 c\xEDm",cidrv4:"IPv4 tartom\xE1ny",cidrv6:"IPv6 tartom\xE1ny",base64:"base64-k\xF3dolt string",base64url:"base64url-k\xF3dolt string",json_string:"JSON string",e164:"E.164 sz\xE1m",jwt:"JWT",template_literal:"bemenet"},i={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${n.expected}, a kapott \xE9rt\xE9k ${c}`:`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${o}, a kapott \xE9rt\xE9k ${c}`}case"invalid_value":return n.values.length===1?`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${E(n.values[0])}`:`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`T\xFAl nagy: ${n.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${o}${n.maximum.toString()} ${a.unit??"elem"}`:`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${n.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${n.origin} m\xE9rete t\xFAl kicsi ${o}${n.minimum.toString()} ${a.unit}`:`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${n.origin} t\xFAl kicsi ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\xC9rv\xE9nytelen string: "${o.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`:o.format==="ends_with"?`\xC9rv\xE9nytelen string: "${o.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`:o.format==="includes"?`\xC9rv\xE9nytelen string: "${o.includes}" \xE9rt\xE9ket kell tartalmaznia`:o.format==="regex"?`\xC9rv\xE9nytelen string: ${o.pattern} mint\xE1nak kell megfelelnie`:`\xC9rv\xE9nytelen ${r[o.format]??n.format}`}case"not_multiple_of":return`\xC9rv\xE9nytelen sz\xE1m: ${n.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`\xC9rv\xE9nytelen kulcs ${n.origin}`;case"invalid_union":return"\xC9rv\xE9nytelen bemenet";case"invalid_element":return`\xC9rv\xE9nytelen \xE9rt\xE9k: ${n.origin}`;default:return"\xC9rv\xE9nytelen bemenet"}}};function Wg(){return{localeError:NS()}}function qg(e,t,r){return Math.abs(e)===1?t:r}function Xt(e){if(!e)return"";let t=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],r=e[e.length-1];return e+(t.includes(r)?"\u0576":"\u0568")}var DS=()=>{let e={string:{unit:{one:"\u0576\u0577\u0561\u0576",many:"\u0576\u0577\u0561\u0576\u0576\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},file:{unit:{one:"\u0562\u0561\u0575\u0569",many:"\u0562\u0561\u0575\u0569\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},array:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},set:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"}};function t(n){return e[n]??null}let r={regex:"\u0574\u0578\u0582\u057F\u0584",email:"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565",url:"URL",emoji:"\u0567\u0574\u0578\u057B\u056B",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574",date:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E",time:"ISO \u056A\u0561\u0574",duration:"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",ipv4:"IPv4 \u0570\u0561\u057D\u0581\u0565",ipv6:"IPv6 \u0570\u0561\u057D\u0581\u0565",cidrv4:"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",cidrv6:"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",base64:"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",base64url:"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",json_string:"JSON \u057F\u0578\u0572",e164:"E.164 \u0570\u0561\u0574\u0561\u0580",jwt:"JWT",template_literal:"\u0574\u0578\u0582\u057F\u0584"},i={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${n.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${c}`:`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${o}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${c}`}case"invalid_value":return n.values.length===1?`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${E(n.values[1])}`:`\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);if(a){let c=Number(n.maximum),u=qg(c,a.unit.one,a.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${Xt(n.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${o}${n.maximum.toString()} ${u}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${Xt(n.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);if(a){let c=Number(n.minimum),u=qg(c,a.unit.one,a.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${Xt(n.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${o}${n.minimum.toString()} ${u}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${Xt(n.origin)} \u056C\u056B\u0576\u056B ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${o.prefix}"-\u0578\u057E`:o.format==="ends_with"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${o.suffix}"-\u0578\u057E`:o.format==="includes"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${o.includes}"`:o.format==="regex"?`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${o.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`:`\u054D\u056D\u0561\u056C ${r[o.format]??n.format}`}case"not_multiple_of":return`\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${n.divisor}-\u056B`;case"unrecognized_keys":return`\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${n.keys.length>1?"\u0576\u0565\u0580":""}. ${y(n.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${Xt(n.origin)}-\u0578\u0582\u0574`;case"invalid_union":return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574";case"invalid_element":return`\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${Xt(n.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};function Jg(){return{localeError:DS()}}var zS=()=>{let e={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function t(n){return e[n]??null}let r={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Input tidak valid: diharapkan instanceof ${n.expected}, diterima ${c}`:`Input tidak valid: diharapkan ${o}, diterima ${c}`}case"invalid_value":return n.values.length===1?`Input tidak valid: diharapkan ${E(n.values[0])}`:`Pilihan tidak valid: diharapkan salah satu dari ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Terlalu besar: diharapkan ${n.origin??"value"} memiliki ${o}${n.maximum.toString()} ${a.unit??"elemen"}`:`Terlalu besar: diharapkan ${n.origin??"value"} menjadi ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Terlalu kecil: diharapkan ${n.origin} memiliki ${o}${n.minimum.toString()} ${a.unit}`:`Terlalu kecil: diharapkan ${n.origin} menjadi ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`String tidak valid: harus dimulai dengan "${o.prefix}"`:o.format==="ends_with"?`String tidak valid: harus berakhir dengan "${o.suffix}"`:o.format==="includes"?`String tidak valid: harus menyertakan "${o.includes}"`:o.format==="regex"?`String tidak valid: harus sesuai pola ${o.pattern}`:`${r[o.format]??n.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${n.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${n.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${n.origin}`;default:return"Input tidak valid"}}};function Yg(){return{localeError:zS()}}var US=()=>{let e={string:{unit:"stafi",verb:"a\xF0 hafa"},file:{unit:"b\xE6ti",verb:"a\xF0 hafa"},array:{unit:"hluti",verb:"a\xF0 hafa"},set:{unit:"hluti",verb:"a\xF0 hafa"}};function t(n){return e[n]??null}let r={regex:"gildi",email:"netfang",url:"vefsl\xF3\xF0",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og t\xEDmi",date:"ISO dagsetning",time:"ISO t\xEDmi",duration:"ISO t\xEDmalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 t\xF6lugildi",jwt:"JWT",template_literal:"gildi"},i={nan:"NaN",number:"n\xFAmer",array:"fylki"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Rangt gildi: \xDE\xFA sl\xF3st inn ${c} \xFEar sem \xE1 a\xF0 vera instanceof ${n.expected}`:`Rangt gildi: \xDE\xFA sl\xF3st inn ${c} \xFEar sem \xE1 a\xF0 vera ${o}`}case"invalid_value":return n.values.length===1?`Rangt gildi: gert r\xE1\xF0 fyrir ${E(n.values[0])}`:`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin??"gildi"} hafi ${o}${n.maximum.toString()} ${a.unit??"hluti"}`:`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin??"gildi"} s\xE9 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin} hafi ${o}${n.minimum.toString()} ${a.unit}`:`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${n.origin} s\xE9 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${o.prefix}"`:o.format==="ends_with"?`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${o.suffix}"`:o.format==="includes"?`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${o.includes}"`:o.format==="regex"?`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${o.pattern}`:`Rangt ${r[o.format]??n.format}`}case"not_multiple_of":return`R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${n.divisor}`;case"unrecognized_keys":return`\xD3\xFEekkt ${n.keys.length>1?"ir lyklar":"ur lykill"}: ${y(n.keys,", ")}`;case"invalid_key":return`Rangur lykill \xED ${n.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi \xED ${n.origin}`;default:return"Rangt gildi"}}};function Qg(){return{localeError:US()}}var LS=()=>{let e={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function t(n){return e[n]??null}let r={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"},i={nan:"NaN",number:"numero",array:"vettore"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Input non valido: atteso instanceof ${n.expected}, ricevuto ${c}`:`Input non valido: atteso ${o}, ricevuto ${c}`}case"invalid_value":return n.values.length===1?`Input non valido: atteso ${E(n.values[0])}`:`Opzione non valida: atteso uno tra ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Troppo grande: ${n.origin??"valore"} deve avere ${o}${n.maximum.toString()} ${a.unit??"elementi"}`:`Troppo grande: ${n.origin??"valore"} deve essere ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Troppo piccolo: ${n.origin} deve avere ${o}${n.minimum.toString()} ${a.unit}`:`Troppo piccolo: ${n.origin} deve essere ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Stringa non valida: deve iniziare con "${o.prefix}"`:o.format==="ends_with"?`Stringa non valida: deve terminare con "${o.suffix}"`:o.format==="includes"?`Stringa non valida: deve includere "${o.includes}"`:o.format==="regex"?`Stringa non valida: deve corrispondere al pattern ${o.pattern}`:`Input non valido: ${r[o.format]??n.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${n.divisor}`;case"unrecognized_keys":return`Chiav${n.keys.length>1?"i":"e"} non riconosciut${n.keys.length>1?"e":"a"}: ${y(n.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${n.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${n.origin}`;default:return"Input non valido"}}};function Xg(){return{localeError:LS()}}var jS=()=>{let e={string:{unit:"\u6587\u5B57",verb:"\u3067\u3042\u308B"},file:{unit:"\u30D0\u30A4\u30C8",verb:"\u3067\u3042\u308B"},array:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"},set:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"}};function t(n){return e[n]??null}let r={regex:"\u5165\u529B\u5024",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",url:"URL",emoji:"\u7D75\u6587\u5B57",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u6642",date:"ISO\u65E5\u4ED8",time:"ISO\u6642\u523B",duration:"ISO\u671F\u9593",ipv4:"IPv4\u30A2\u30C9\u30EC\u30B9",ipv6:"IPv6\u30A2\u30C9\u30EC\u30B9",cidrv4:"IPv4\u7BC4\u56F2",cidrv6:"IPv6\u7BC4\u56F2",base64:"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",base64url:"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",json_string:"JSON\u6587\u5B57\u5217",e164:"E.164\u756A\u53F7",jwt:"JWT",template_literal:"\u5165\u529B\u5024"},i={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u7121\u52B9\u306A\u5165\u529B: instanceof ${n.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${c}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`:`\u7121\u52B9\u306A\u5165\u529B: ${o}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${c}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":return n.values.length===1?`\u7121\u52B9\u306A\u5165\u529B: ${E(n.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`:`\u7121\u52B9\u306A\u9078\u629E: ${y(n.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let o=n.inclusive?"\u4EE5\u4E0B\u3067\u3042\u308B":"\u3088\u308A\u5C0F\u3055\u3044",a=t(n.origin);return a?`\u5927\u304D\u3059\u304E\u308B\u5024: ${n.origin??"\u5024"}\u306F${n.maximum.toString()}${a.unit??"\u8981\u7D20"}${o}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u5927\u304D\u3059\u304E\u308B\u5024: ${n.origin??"\u5024"}\u306F${n.maximum.toString()}${o}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let o=n.inclusive?"\u4EE5\u4E0A\u3067\u3042\u308B":"\u3088\u308A\u5927\u304D\u3044",a=t(n.origin);return a?`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${n.origin}\u306F${n.minimum.toString()}${a.unit}${o}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${n.origin}\u306F${n.minimum.toString()}${o}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${o.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:o.format==="ends_with"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${o.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:o.format==="includes"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${o.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:o.format==="regex"?`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${o.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`:`\u7121\u52B9\u306A${r[o.format]??n.format}`}case"not_multiple_of":return`\u7121\u52B9\u306A\u6570\u5024: ${n.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"unrecognized_keys":return`\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${n.keys.length>1?"\u7FA4":""}: ${y(n.keys,"\u3001")}`;case"invalid_key":return`${n.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;case"invalid_union":return"\u7121\u52B9\u306A\u5165\u529B";case"invalid_element":return`${n.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;default:return"\u7121\u52B9\u306A\u5165\u529B"}}};function eh(){return{localeError:jS()}}var BS=()=>{let e={string:{unit:"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},file:{unit:"\u10D1\u10D0\u10D8\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},array:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},set:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"}};function t(n){return e[n]??null}let r={regex:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0",email:"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",url:"URL",emoji:"\u10D4\u10DB\u10DD\u10EF\u10D8",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD",date:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8",time:"\u10D3\u10E0\u10DD",duration:"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0",ipv4:"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",ipv6:"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",cidrv4:"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",cidrv6:"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",base64:"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",base64url:"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",json_string:"JSON \u10D5\u10D4\u10DA\u10D8",e164:"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8",jwt:"JWT",template_literal:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"},i={nan:"NaN",number:"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8",string:"\u10D5\u10D4\u10DA\u10D8",boolean:"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8",function:"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0",array:"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${n.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${c}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${o}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${c}`}case"invalid_value":return n.values.length===1?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${E(n.values[0])}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${y(n.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${a.verb} ${o}${n.maximum.toString()} ${a.unit}`:`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin} ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${n.origin} \u10D8\u10E7\u10DD\u10E1 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${o.prefix}"-\u10D8\u10D7`:o.format==="ends_with"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${o.suffix}"-\u10D8\u10D7`:o.format==="includes"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${o.includes}"-\u10E1`:o.format==="regex"?`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${o.pattern}`:`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${n.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;case"unrecognized_keys":return`\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${n.keys.length>1?"\u10D4\u10D1\u10D8":"\u10D8"}: ${y(n.keys,", ")}`;case"invalid_key":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${n.origin}-\u10E8\u10D8`;case"invalid_union":return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0";case"invalid_element":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${n.origin}-\u10E8\u10D8`;default:return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"}}};function th(){return{localeError:BS()}}var MS=()=>{let e={string:{unit:"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},file:{unit:"\u1794\u17C3",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},array:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},set:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"}};function t(n){return e[n]??null}let r={regex:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B",email:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B",url:"URL",emoji:"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO",date:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO",time:"\u1798\u17C9\u17C4\u1784 ISO",duration:"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO",ipv4:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",ipv6:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",cidrv4:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",cidrv6:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",base64:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64",base64url:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url",json_string:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON",e164:"\u179B\u17C1\u1781 E.164",jwt:"JWT",template_literal:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B"},i={nan:"NaN",number:"\u179B\u17C1\u1781",array:"\u17A2\u17B6\u179A\u17C1 (Array)",null:"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${n.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${c}`:`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${o} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${c}`}case"invalid_value":return n.values.length===1?`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${E(n.values[0])}`:`\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${o} ${n.maximum.toString()} ${a.unit??"\u1792\u17B6\u178F\u17BB"}`:`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${o} ${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin} ${o} ${n.minimum.toString()} ${a.unit}`:`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${n.origin} ${o} ${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${o.prefix}"`:o.format==="ends_with"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${o.suffix}"`:o.format==="includes"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${o.includes}"`:o.format==="regex"?`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${o.pattern}`:`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${n.divisor}`;case"unrecognized_keys":return`\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${y(n.keys,", ")}`;case"invalid_key":return`\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${n.origin}`;case"invalid_union":return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C";case"invalid_element":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${n.origin}`;default:return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C"}}};function Wi(){return{localeError:MS()}}function nh(){return Wi()}var FS=()=>{let e={string:{unit:"\uBB38\uC790",verb:"to have"},file:{unit:"\uBC14\uC774\uD2B8",verb:"to have"},array:{unit:"\uAC1C",verb:"to have"},set:{unit:"\uAC1C",verb:"to have"}};function t(n){return e[n]??null}let r={regex:"\uC785\uB825",email:"\uC774\uBA54\uC77C \uC8FC\uC18C",url:"URL",emoji:"\uC774\uBAA8\uC9C0",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \uB0A0\uC9DC\uC2DC\uAC04",date:"ISO \uB0A0\uC9DC",time:"ISO \uC2DC\uAC04",duration:"ISO \uAE30\uAC04",ipv4:"IPv4 \uC8FC\uC18C",ipv6:"IPv6 \uC8FC\uC18C",cidrv4:"IPv4 \uBC94\uC704",cidrv6:"IPv6 \uBC94\uC704",base64:"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",base64url:"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",json_string:"JSON \uBB38\uC790\uC5F4",e164:"E.164 \uBC88\uD638",jwt:"JWT",template_literal:"\uC785\uB825"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${n.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${c}\uC785\uB2C8\uB2E4`:`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${o}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${c}\uC785\uB2C8\uB2E4`}case"invalid_value":return n.values.length===1?`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${E(n.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`:`\uC798\uBABB\uB41C \uC635\uC158: ${y(n.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let o=n.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",a=o==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",c=t(n.origin),u=c?.unit??"\uC694\uC18C";return c?`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${n.maximum.toString()}${u} ${o}${a}`:`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${n.maximum.toString()} ${o}${a}`}case"too_small":{let o=n.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",a=o==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",c=t(n.origin),u=c?.unit??"\uC694\uC18C";return c?`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${n.minimum.toString()}${u} ${o}${a}`:`${n.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${n.minimum.toString()} ${o}${a}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${o.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`:o.format==="ends_with"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${o.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`:o.format==="includes"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${o.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`:o.format==="regex"?`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${o.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`:`\uC798\uBABB\uB41C ${r[o.format]??n.format}`}case"not_multiple_of":return`\uC798\uBABB\uB41C \uC22B\uC790: ${n.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"unrecognized_keys":return`\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${y(n.keys,", ")}`;case"invalid_key":return`\uC798\uBABB\uB41C \uD0A4: ${n.origin}`;case"invalid_union":return"\uC798\uBABB\uB41C \uC785\uB825";case"invalid_element":return`\uC798\uBABB\uB41C \uAC12: ${n.origin}`;default:return"\uC798\uBABB\uB41C \uC785\uB825"}}};function rh(){return{localeError:FS()}}var _r=e=>e.charAt(0).toUpperCase()+e.slice(1);function ih(e){let t=Math.abs(e),r=t%10,i=t%100;return i>=11&&i<=19||r===0?"many":r===1?"one":"few"}var KS=()=>{let e={string:{unit:{one:"simbolis",few:"simboliai",many:"simboli\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne ilgesn\u0117 kaip",notInclusive:"turi b\u016Bti trumpesn\u0117 kaip"},bigger:{inclusive:"turi b\u016Bti ne trumpesn\u0117 kaip",notInclusive:"turi b\u016Bti ilgesn\u0117 kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"bait\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne didesnis kaip",notInclusive:"turi b\u016Bti ma\u017Eesnis kaip"},bigger:{inclusive:"turi b\u016Bti ne ma\u017Eesnis kaip",notInclusive:"turi b\u016Bti didesnis kaip"}}},array:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}},set:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}}};function t(n,o,a,c){let u=e[n]??null;return u===null?u:{unit:u.unit[o],verb:u.verb[c][a?"inclusive":"notInclusive"]}}let r={regex:"\u012Fvestis",email:"el. pa\u0161to adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukm\u0117",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 u\u017Ekoduota eilut\u0117",base64url:"base64url u\u017Ekoduota eilut\u0117",json_string:"JSON eilut\u0117",e164:"E.164 numeris",jwt:"JWT",template_literal:"\u012Fvestis"},i={nan:"NaN",number:"skai\u010Dius",bigint:"sveikasis skai\u010Dius",string:"eilut\u0117",boolean:"login\u0117 reik\u0161m\u0117",undefined:"neapibr\u0117\u017Eta reik\u0161m\u0117",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulin\u0117 reik\u0161m\u0117"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Gautas tipas ${c}, o tik\u0117tasi - instanceof ${n.expected}`:`Gautas tipas ${c}, o tik\u0117tasi - ${o}`}case"invalid_value":return n.values.length===1?`Privalo b\u016Bti ${E(n.values[0])}`:`Privalo b\u016Bti vienas i\u0161 ${y(n.values,"|")} pasirinkim\u0173`;case"too_big":{let o=i[n.origin]??n.origin,a=t(n.origin,ih(Number(n.maximum)),n.inclusive??!1,"smaller");if(a?.verb)return`${_r(o??n.origin??"reik\u0161m\u0117")} ${a.verb} ${n.maximum.toString()} ${a.unit??"element\u0173"}`;let c=n.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${_r(o??n.origin??"reik\u0161m\u0117")} turi b\u016Bti ${c} ${n.maximum.toString()} ${a?.unit}`}case"too_small":{let o=i[n.origin]??n.origin,a=t(n.origin,ih(Number(n.minimum)),n.inclusive??!1,"bigger");if(a?.verb)return`${_r(o??n.origin??"reik\u0161m\u0117")} ${a.verb} ${n.minimum.toString()} ${a.unit??"element\u0173"}`;let c=n.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${_r(o??n.origin??"reik\u0161m\u0117")} turi b\u016Bti ${c} ${n.minimum.toString()} ${a?.unit}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Eilut\u0117 privalo prasid\u0117ti "${o.prefix}"`:o.format==="ends_with"?`Eilut\u0117 privalo pasibaigti "${o.suffix}"`:o.format==="includes"?`Eilut\u0117 privalo \u012Ftraukti "${o.includes}"`:o.format==="regex"?`Eilut\u0117 privalo atitikti ${o.pattern}`:`Neteisingas ${r[o.format]??n.format}`}case"not_multiple_of":return`Skai\u010Dius privalo b\u016Bti ${n.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpa\u017Eint${n.keys.length>1?"i":"as"} rakt${n.keys.length>1?"ai":"as"}: ${y(n.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let o=i[n.origin]??n.origin;return`${_r(o??n.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};function oh(){return{localeError:KS()}}var HS=()=>{let e={string:{unit:"\u0437\u043D\u0430\u0446\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},file:{unit:"\u0431\u0430\u0458\u0442\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},array:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},set:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"}};function t(n){return e[n]??null}let r={regex:"\u0432\u043D\u0435\u0441",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430",url:"URL",emoji:"\u0435\u043C\u043E\u045F\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0443\u043C",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430",cidrv4:"IPv4 \u043E\u043F\u0441\u0435\u0433",cidrv6:"IPv6 \u043E\u043F\u0441\u0435\u0433",base64:"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",base64url:"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",json_string:"JSON \u043D\u0438\u0437\u0430",e164:"E.164 \u0431\u0440\u043E\u0458",jwt:"JWT",template_literal:"\u0432\u043D\u0435\u0441"},i={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${n.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${c}`:`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${o}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${c}`}case"invalid_value":return n.values.length===1?`Invalid input: expected ${E(n.values[0])}`:`\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${o}${n.maximum.toString()} ${a.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`:`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin} \u0434\u0430 \u0438\u043C\u0430 ${o}${n.minimum.toString()} ${a.unit}`:`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${n.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${o.prefix}"`:o.format==="ends_with"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${o.suffix}"`:o.format==="includes"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${o.includes}"`:o.format==="regex"?`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${o.pattern}`:`Invalid ${r[o.format]??n.format}`}case"not_multiple_of":return`\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438":"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${y(n.keys,", ")}`;case"invalid_key":return`\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${n.origin}`;case"invalid_union":return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441";case"invalid_element":return`\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${n.origin}`;default:return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"}}};function sh(){return{localeError:HS()}}var VS=()=>{let e={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function t(n){return e[n]??null}let r={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"},i={nan:"NaN",number:"nombor"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Input tidak sah: dijangka instanceof ${n.expected}, diterima ${c}`:`Input tidak sah: dijangka ${o}, diterima ${c}`}case"invalid_value":return n.values.length===1?`Input tidak sah: dijangka ${E(n.values[0])}`:`Pilihan tidak sah: dijangka salah satu daripada ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Terlalu besar: dijangka ${n.origin??"nilai"} ${a.verb} ${o}${n.maximum.toString()} ${a.unit??"elemen"}`:`Terlalu besar: dijangka ${n.origin??"nilai"} adalah ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Terlalu kecil: dijangka ${n.origin} ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`Terlalu kecil: dijangka ${n.origin} adalah ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`String tidak sah: mesti bermula dengan "${o.prefix}"`:o.format==="ends_with"?`String tidak sah: mesti berakhir dengan "${o.suffix}"`:o.format==="includes"?`String tidak sah: mesti mengandungi "${o.includes}"`:o.format==="regex"?`String tidak sah: mesti sepadan dengan corak ${o.pattern}`:`${r[o.format]??n.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${n.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${y(n.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${n.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${n.origin}`;default:return"Input tidak sah"}}};function ah(){return{localeError:VS()}}var GS=()=>{let e={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function t(n){return e[n]??null}let r={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"},i={nan:"NaN",number:"getal"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ongeldige invoer: verwacht instanceof ${n.expected}, ontving ${c}`:`Ongeldige invoer: verwacht ${o}, ontving ${c}`}case"invalid_value":return n.values.length===1?`Ongeldige invoer: verwacht ${E(n.values[0])}`:`Ongeldige optie: verwacht \xE9\xE9n van ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin),c=n.origin==="date"?"laat":n.origin==="string"?"lang":"groot";return a?`Te ${c}: verwacht dat ${n.origin??"waarde"} ${o}${n.maximum.toString()} ${a.unit??"elementen"} ${a.verb}`:`Te ${c}: verwacht dat ${n.origin??"waarde"} ${o}${n.maximum.toString()} is`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin),c=n.origin==="date"?"vroeg":n.origin==="string"?"kort":"klein";return a?`Te ${c}: verwacht dat ${n.origin} ${o}${n.minimum.toString()} ${a.unit} ${a.verb}`:`Te ${c}: verwacht dat ${n.origin} ${o}${n.minimum.toString()} is`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ongeldige tekst: moet met "${o.prefix}" beginnen`:o.format==="ends_with"?`Ongeldige tekst: moet op "${o.suffix}" eindigen`:o.format==="includes"?`Ongeldige tekst: moet "${o.includes}" bevatten`:o.format==="regex"?`Ongeldige tekst: moet overeenkomen met patroon ${o.pattern}`:`Ongeldig: ${r[o.format]??n.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${n.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${n.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${n.origin}`;default:return"Ongeldige invoer"}}};function ch(){return{localeError:GS()}}var ZS=()=>{let e={string:{unit:"tegn",verb:"\xE5 ha"},file:{unit:"bytes",verb:"\xE5 ha"},array:{unit:"elementer",verb:"\xE5 inneholde"},set:{unit:"elementer",verb:"\xE5 inneholde"}};function t(n){return e[n]??null}let r={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},i={nan:"NaN",number:"tall",array:"liste"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ugyldig input: forventet instanceof ${n.expected}, fikk ${c}`:`Ugyldig input: forventet ${o}, fikk ${c}`}case"invalid_value":return n.values.length===1?`Ugyldig verdi: forventet ${E(n.values[0])}`:`Ugyldig valg: forventet en av ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`For stor(t): forventet ${n.origin??"value"} til \xE5 ha ${o}${n.maximum.toString()} ${a.unit??"elementer"}`:`For stor(t): forventet ${n.origin??"value"} til \xE5 ha ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`For lite(n): forventet ${n.origin} til \xE5 ha ${o}${n.minimum.toString()} ${a.unit}`:`For lite(n): forventet ${n.origin} til \xE5 ha ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ugyldig streng: m\xE5 starte med "${o.prefix}"`:o.format==="ends_with"?`Ugyldig streng: m\xE5 ende med "${o.suffix}"`:o.format==="includes"?`Ugyldig streng: m\xE5 inneholde "${o.includes}"`:o.format==="regex"?`Ugyldig streng: m\xE5 matche m\xF8nsteret ${o.pattern}`:`Ugyldig ${r[o.format]??n.format}`}case"not_multiple_of":return`Ugyldig tall: m\xE5 v\xE6re et multiplum av ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ukjente n\xF8kler":"Ukjent n\xF8kkel"}: ${y(n.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8kkel i ${n.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${n.origin}`;default:return"Ugyldig input"}}};function uh(){return{localeError:ZS()}}var WS=()=>{let e={string:{unit:"harf",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"unsur",verb:"olmal\u0131d\u0131r"},set:{unit:"unsur",verb:"olmal\u0131d\u0131r"}};function t(n){return e[n]??null}let r={regex:"giren",email:"epostag\xE2h",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO heng\xE2m\u0131",date:"ISO tarihi",time:"ISO zaman\u0131",duration:"ISO m\xFCddeti",ipv4:"IPv4 ni\u015F\xE2n\u0131",ipv6:"IPv6 ni\u015F\xE2n\u0131",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-\u015Fifreli metin",base64url:"base64url-\u015Fifreli metin",json_string:"JSON metin",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"giren"},i={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`F\xE2sit giren: umulan instanceof ${n.expected}, al\u0131nan ${c}`:`F\xE2sit giren: umulan ${o}, al\u0131nan ${c}`}case"invalid_value":return n.values.length===1?`F\xE2sit giren: umulan ${E(n.values[0])}`:`F\xE2sit tercih: m\xFBteberler ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Fazla b\xFCy\xFCk: ${n.origin??"value"}, ${o}${n.maximum.toString()} ${a.unit??"elements"} sahip olmal\u0131yd\u0131.`:`Fazla b\xFCy\xFCk: ${n.origin??"value"}, ${o}${n.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Fazla k\xFC\xE7\xFCk: ${n.origin}, ${o}${n.minimum.toString()} ${a.unit} sahip olmal\u0131yd\u0131.`:`Fazla k\xFC\xE7\xFCk: ${n.origin}, ${o}${n.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let o=n;return o.format==="starts_with"?`F\xE2sit metin: "${o.prefix}" ile ba\u015Flamal\u0131.`:o.format==="ends_with"?`F\xE2sit metin: "${o.suffix}" ile bitmeli.`:o.format==="includes"?`F\xE2sit metin: "${o.includes}" ihtiv\xE2 etmeli.`:o.format==="regex"?`F\xE2sit metin: ${o.pattern} nak\u015F\u0131na uymal\u0131.`:`F\xE2sit ${r[o.format]??n.format}`}case"not_multiple_of":return`F\xE2sit say\u0131: ${n.divisor} kat\u0131 olmal\u0131yd\u0131.`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar ${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} i\xE7in tan\u0131nmayan anahtar var.`;case"invalid_union":return"Giren tan\u0131namad\u0131.";case"invalid_element":return`${n.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`;default:return"K\u0131ymet tan\u0131namad\u0131."}}};function lh(){return{localeError:WS()}}var qS=()=>{let e={string:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},file:{unit:"\u0628\u0627\u06CC\u067C\u0633",verb:"\u0648\u0644\u0631\u064A"},array:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},set:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"}};function t(n){return e[n]??null}let r={regex:"\u0648\u0631\u0648\u062F\u064A",email:"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9",url:"\u06CC\u0648 \u0622\u0631 \u0627\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A",date:"\u0646\u06D0\u067C\u0647",time:"\u0648\u062E\u062A",duration:"\u0645\u0648\u062F\u0647",ipv4:"\u062F IPv4 \u067E\u062A\u0647",ipv6:"\u062F IPv6 \u067E\u062A\u0647",cidrv4:"\u062F IPv4 \u0633\u0627\u062D\u0647",cidrv6:"\u062F IPv6 \u0633\u0627\u062D\u0647",base64:"base64-encoded \u0645\u062A\u0646",base64url:"base64url-encoded \u0645\u062A\u0646",json_string:"JSON \u0645\u062A\u0646",e164:"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u064A"},i={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${n.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${c} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`:`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${o} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${c} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}case"invalid_value":return n.values.length===1?`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${E(n.values[0])} \u0648\u0627\u06CC`:`\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${y(n.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${n.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${o}${n.maximum.toString()} ${a.unit??"\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`:`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${n.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${o}${n.maximum.toString()} \u0648\u064A`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${n.origin} \u0628\u0627\u06CC\u062F ${o}${n.minimum.toString()} ${a.unit} \u0648\u0644\u0631\u064A`:`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${n.origin} \u0628\u0627\u06CC\u062F ${o}${n.minimum.toString()} \u0648\u064A`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${o.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`:o.format==="ends_with"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${o.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`:o.format==="includes"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${o.includes}" \u0648\u0644\u0631\u064A`:o.format==="regex"?`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${o.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`:`${r[o.format]??n.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`}case"not_multiple_of":return`\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${n.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;case"unrecognized_keys":return`\u0646\u0627\u0633\u0645 ${n.keys.length>1?"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647":"\u06A9\u0644\u06CC\u0689"}: ${y(n.keys,", ")}`;case"invalid_key":return`\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${n.origin} \u06A9\u06D0`;case"invalid_union":return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A";case"invalid_element":return`\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${n.origin} \u06A9\u06D0`;default:return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A"}}};function dh(){return{localeError:qS()}}var JS=()=>{let e={string:{unit:"znak\xF3w",verb:"mie\u0107"},file:{unit:"bajt\xF3w",verb:"mie\u0107"},array:{unit:"element\xF3w",verb:"mie\u0107"},set:{unit:"element\xF3w",verb:"mie\u0107"}};function t(n){return e[n]??null}let r={regex:"wyra\u017Cenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ci\u0105g znak\xF3w zakodowany w formacie base64",base64url:"ci\u0105g znak\xF3w zakodowany w formacie base64url",json_string:"ci\u0105g znak\xF3w w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wej\u015Bcie"},i={nan:"NaN",number:"liczba",array:"tablica"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${n.expected}, otrzymano ${c}`:`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${o}, otrzymano ${c}`}case"invalid_value":return n.values.length===1?`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${E(n.values[0])}`:`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${o}${n.maximum.toString()} ${a.unit??"element\xF3w"}`:`Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${o}${n.minimum.toString()} ${a.unit??"element\xF3w"}`:`Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${n.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${o.prefix}"`:o.format==="ends_with"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${o.suffix}"`:o.format==="includes"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${o.includes}"`:o.format==="regex"?`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${o.pattern}`:`Nieprawid\u0142ow(y/a/e) ${r[o.format]??n.format}`}case"not_multiple_of":return`Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${n.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Nieprawid\u0142owy klucz w ${n.origin}`;case"invalid_union":return"Nieprawid\u0142owe dane wej\u015Bciowe";case"invalid_element":return`Nieprawid\u0142owa warto\u015B\u0107 w ${n.origin}`;default:return"Nieprawid\u0142owe dane wej\u015Bciowe"}}};function mh(){return{localeError:JS()}}var YS=()=>{let e={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function t(n){return e[n]??null}let r={regex:"padr\xE3o",email:"endere\xE7o de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"dura\xE7\xE3o ISO",ipv4:"endere\xE7o IPv4",ipv6:"endere\xE7o IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},i={nan:"NaN",number:"n\xFAmero",null:"nulo"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Tipo inv\xE1lido: esperado instanceof ${n.expected}, recebido ${c}`:`Tipo inv\xE1lido: esperado ${o}, recebido ${c}`}case"invalid_value":return n.values.length===1?`Entrada inv\xE1lida: esperado ${E(n.values[0])}`:`Op\xE7\xE3o inv\xE1lida: esperada uma das ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Muito grande: esperado que ${n.origin??"valor"} tivesse ${o}${n.maximum.toString()} ${a.unit??"elementos"}`:`Muito grande: esperado que ${n.origin??"valor"} fosse ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Muito pequeno: esperado que ${n.origin} tivesse ${o}${n.minimum.toString()} ${a.unit}`:`Muito pequeno: esperado que ${n.origin} fosse ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Texto inv\xE1lido: deve come\xE7ar com "${o.prefix}"`:o.format==="ends_with"?`Texto inv\xE1lido: deve terminar com "${o.suffix}"`:o.format==="includes"?`Texto inv\xE1lido: deve incluir "${o.includes}"`:o.format==="regex"?`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${o.pattern}`:`${r[o.format]??n.format} inv\xE1lido`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${n.divisor}`;case"unrecognized_keys":return`Chave${n.keys.length>1?"s":""} desconhecida${n.keys.length>1?"s":""}: ${y(n.keys,", ")}`;case"invalid_key":return`Chave inv\xE1lida em ${n.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido em ${n.origin}`;default:return"Campo inv\xE1lido"}}};function ph(){return{localeError:YS()}}var QS=()=>{let e={string:{unit:"caractere",verb:"s\u0103 aib\u0103"},file:{unit:"octe\u021Bi",verb:"s\u0103 aib\u0103"},array:{unit:"elemente",verb:"s\u0103 aib\u0103"},set:{unit:"elemente",verb:"s\u0103 aib\u0103"},map:{unit:"intr\u0103ri",verb:"s\u0103 aib\u0103"}};function t(n){return e[n]??null}let r={regex:"intrare",email:"adres\u0103 de email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"dat\u0103 \u0219i or\u0103 ISO",date:"dat\u0103 ISO",time:"or\u0103 ISO",duration:"durat\u0103 ISO",ipv4:"adres\u0103 IPv4",ipv6:"adres\u0103 IPv6",mac:"adres\u0103 MAC",cidrv4:"interval IPv4",cidrv6:"interval IPv6",base64:"\u0219ir codat base64",base64url:"\u0219ir codat base64url",json_string:"\u0219ir JSON",e164:"num\u0103r E.164",jwt:"JWT",template_literal:"intrare"},i={nan:"NaN",string:"\u0219ir",number:"num\u0103r",boolean:"boolean",function:"func\u021Bie",array:"matrice",object:"obiect",undefined:"nedefinit",symbol:"simbol",bigint:"num\u0103r mare",void:"void",never:"never",map:"hart\u0103",set:"set"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return`Intrare invalid\u0103: a\u0219teptat ${o}, primit ${c}`}case"invalid_value":return n.values.length===1?`Intrare invalid\u0103: a\u0219teptat ${E(n.values[0])}`:`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Prea mare: a\u0219teptat ca ${n.origin??"valoarea"} ${a.verb} ${o}${n.maximum.toString()} ${a.unit??"elemente"}`:`Prea mare: a\u0219teptat ca ${n.origin??"valoarea"} s\u0103 fie ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Prea mic: a\u0219teptat ca ${n.origin} ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`Prea mic: a\u0219teptat ca ${n.origin} s\u0103 fie ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${o.prefix}"`:o.format==="ends_with"?`\u0218ir invalid: trebuie s\u0103 se termine cu "${o.suffix}"`:o.format==="includes"?`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${o.includes}"`:o.format==="regex"?`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${o.pattern}`:`Format invalid: ${r[o.format]??n.format}`}case"not_multiple_of":return`Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${n.divisor}`;case"unrecognized_keys":return`Chei nerecunoscute: ${y(n.keys,", ")}`;case"invalid_key":return`Cheie invalid\u0103 \xEEn ${n.origin}`;case"invalid_union":return"Intrare invalid\u0103";case"invalid_element":return`Valoare invalid\u0103 \xEEn ${n.origin}`;default:return"Intrare invalid\u0103"}}};function fh(){return{localeError:QS()}}function gh(e,t,r,i){let n=Math.abs(e),o=n%10,a=n%100;return a>=11&&a<=19?i:o===1?t:o>=2&&o<=4?r:i}var XS=()=>{let e={string:{unit:{one:"\u0441\u0438\u043C\u0432\u043E\u043B",few:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",many:"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u0430",many:"\u0431\u0430\u0439\u0442"},verb:"\u0438\u043C\u0435\u0442\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"}};function t(n){return e[n]??null}let r={regex:"\u0432\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u044F",duration:"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64",base64url:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url",json_string:"JSON \u0441\u0442\u0440\u043E\u043A\u0430",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0432\u043E\u0434"},i={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${n.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${c}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${o}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${c}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${E(n.values[0])}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);if(a){let c=Number(n.maximum),u=gh(c,a.unit.one,a.unit.few,a.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${o}${n.maximum.toString()} ${u}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);if(a){let c=Number(n.minimum),u=gh(c,a.unit.one,a.unit.few,a.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${o}${n.minimum.toString()} ${u}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${n.origin} \u0431\u0443\u0434\u0435\u0442 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${o.prefix}"`:o.format==="ends_with"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${o.suffix}"`:o.format==="includes"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${o.includes}"`:o.format==="regex"?`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${o.pattern}`:`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${n.keys.length>1?"\u044B\u0435":"\u044B\u0439"} \u043A\u043B\u044E\u0447${n.keys.length>1?"\u0438":""}: ${y(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435";case"invalid_element":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${n.origin}`;default:return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"}}};function hh(){return{localeError:XS()}}var ew=()=>{let e={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function t(n){return e[n]??null}let r={regex:"vnos",email:"e-po\u0161tni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in \u010Das",date:"ISO datum",time:"ISO \u010Das",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 \u0161tevilka",jwt:"JWT",template_literal:"vnos"},i={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Neveljaven vnos: pri\u010Dakovano instanceof ${n.expected}, prejeto ${c}`:`Neveljaven vnos: pri\u010Dakovano ${o}, prejeto ${c}`}case"invalid_value":return n.values.length===1?`Neveljaven vnos: pri\u010Dakovano ${E(n.values[0])}`:`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Preveliko: pri\u010Dakovano, da bo ${n.origin??"vrednost"} imelo ${o}${n.maximum.toString()} ${a.unit??"elementov"}`:`Preveliko: pri\u010Dakovano, da bo ${n.origin??"vrednost"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Premajhno: pri\u010Dakovano, da bo ${n.origin} imelo ${o}${n.minimum.toString()} ${a.unit}`:`Premajhno: pri\u010Dakovano, da bo ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Neveljaven niz: mora se za\u010Deti z "${o.prefix}"`:o.format==="ends_with"?`Neveljaven niz: mora se kon\u010Dati z "${o.suffix}"`:o.format==="includes"?`Neveljaven niz: mora vsebovati "${o.includes}"`:o.format==="regex"?`Neveljaven niz: mora ustrezati vzorcu ${o.pattern}`:`Neveljaven ${r[o.format]??n.format}`}case"not_multiple_of":return`Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${n.divisor}`;case"unrecognized_keys":return`Neprepoznan${n.keys.length>1?"i klju\u010Di":" klju\u010D"}: ${y(n.keys,", ")}`;case"invalid_key":return`Neveljaven klju\u010D v ${n.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${n.origin}`;default:return"Neveljaven vnos"}}};function bh(){return{localeError:ew()}}var tw=()=>{let e={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att inneh\xE5lla"},set:{unit:"objekt",verb:"att inneh\xE5lla"}};function t(n){return e[n]??null}let r={regex:"regulj\xE4rt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad str\xE4ng",base64url:"base64url-kodad str\xE4ng",json_string:"JSON-str\xE4ng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},i={nan:"NaN",number:"antal",array:"lista"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${n.expected}, fick ${c}`:`Ogiltig inmatning: f\xF6rv\xE4ntat ${o}, fick ${c}`}case"invalid_value":return n.values.length===1?`Ogiltig inmatning: f\xF6rv\xE4ntat ${E(n.values[0])}`:`Ogiltigt val: f\xF6rv\xE4ntade en av ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`F\xF6r stor(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${o}${n.maximum.toString()} ${a.unit??"element"}`:`F\xF6r stor(t): f\xF6rv\xE4ntat ${n.origin??"v\xE4rdet"} att ha ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`F\xF6r lite(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${o}${n.minimum.toString()} ${a.unit}`:`F\xF6r lite(t): f\xF6rv\xE4ntade ${n.origin??"v\xE4rdet"} att ha ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${o.prefix}"`:o.format==="ends_with"?`Ogiltig str\xE4ng: m\xE5ste sluta med "${o.suffix}"`:o.format==="includes"?`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${o.includes}"`:o.format==="regex"?`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${o.pattern}"`:`Ogiltig(t) ${r[o.format]??n.format}`}case"not_multiple_of":return`Ogiltigt tal: m\xE5ste vara en multipel av ${n.divisor}`;case"unrecognized_keys":return`${n.keys.length>1?"Ok\xE4nda nycklar":"Ok\xE4nd nyckel"}: ${y(n.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${n.origin??"v\xE4rdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt v\xE4rde i ${n.origin??"v\xE4rdet"}`;default:return"Ogiltig input"}}};function _h(){return{localeError:tw()}}var nw=()=>{let e={string:{unit:"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},file:{unit:"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},array:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},set:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"}};function t(n){return e[n]??null}let r={regex:"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1",email:"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",date:"ISO \u0BA4\u0BC7\u0BA4\u0BBF",time:"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",duration:"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1",ipv4:"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",ipv6:"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",cidrv4:"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",cidrv6:"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",base64:"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD",base64url:"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD",json_string:"JSON \u0B9A\u0BB0\u0BAE\u0BCD",e164:"E.164 \u0B8E\u0BA3\u0BCD",jwt:"JWT",template_literal:"input"},i={nan:"NaN",number:"\u0B8E\u0BA3\u0BCD",array:"\u0B85\u0BA3\u0BBF",null:"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${n.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${c}`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${o}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${c}`}case"invalid_value":return n.values.length===1?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${E(n.values[0])}`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${y(n.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${o}${n.maximum.toString()} ${a.unit??"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${o}${n.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin} ${o}${n.minimum.toString()} ${a.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${n.origin} ${o}${n.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${o.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:o.format==="ends_with"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${o.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:o.format==="includes"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${o.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:o.format==="regex"?`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${o.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`:`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${n.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;case"unrecognized_keys":return`\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${n.keys.length>1?"\u0B95\u0BB3\u0BCD":""}: ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;case"invalid_union":return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1";case"invalid_element":return`${n.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;default:return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"}}};function vh(){return{localeError:nw()}}var rw=()=>{let e={string:{unit:"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},file:{unit:"\u0E44\u0E1A\u0E15\u0E4C",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},array:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},set:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"}};function t(n){return e[n]??null}let r={regex:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19",email:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25",url:"URL",emoji:"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",date:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO",time:"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",duration:"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",ipv4:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4",ipv6:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6",cidrv4:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4",cidrv6:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6",base64:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64",base64url:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL",json_string:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON",e164:"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)",jwt:"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT",template_literal:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19"},i={nan:"NaN",number:"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02",array:"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)",null:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${n.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${c}`:`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${o} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${c}`}case"invalid_value":return n.values.length===1?`\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${E(n.values[0])}`:`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19":"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",a=t(n.origin);return a?`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${o} ${n.maximum.toString()} ${a.unit??"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`:`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${o} ${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22":"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",a=t(n.origin);return a?`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${o} ${n.minimum.toString()} ${a.unit}`:`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${n.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${o} ${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${o.prefix}"`:o.format==="ends_with"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${o.suffix}"`:o.format==="includes"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${o.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`:o.format==="regex"?`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${o.pattern}`:`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${r[o.format]??n.format}`}case"not_multiple_of":return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${n.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;case"unrecognized_keys":return`\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${y(n.keys,", ")}`;case"invalid_key":return`\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${n.origin}`;case"invalid_union":return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49";case"invalid_element":return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${n.origin}`;default:return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07"}}};function yh(){return{localeError:rw()}}var iw=()=>{let e={string:{unit:"karakter",verb:"olmal\u0131"},file:{unit:"bayt",verb:"olmal\u0131"},array:{unit:"\xF6\u011Fe",verb:"olmal\u0131"},set:{unit:"\xF6\u011Fe",verb:"olmal\u0131"}};function t(n){return e[n]??null}let r={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO s\xFCre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aral\u0131\u011F\u0131",cidrv6:"IPv6 aral\u0131\u011F\u0131",base64:"base64 ile \u015Fifrelenmi\u015F metin",base64url:"base64url ile \u015Fifrelenmi\u015F metin",json_string:"JSON dizesi",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"\u015Eablon dizesi"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${n.expected}, al\u0131nan ${c}`:`Ge\xE7ersiz de\u011Fer: beklenen ${o}, al\u0131nan ${c}`}case"invalid_value":return n.values.length===1?`Ge\xE7ersiz de\u011Fer: beklenen ${E(n.values[0])}`:`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\xC7ok b\xFCy\xFCk: beklenen ${n.origin??"de\u011Fer"} ${o}${n.maximum.toString()} ${a.unit??"\xF6\u011Fe"}`:`\xC7ok b\xFCy\xFCk: beklenen ${n.origin??"de\u011Fer"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\xC7ok k\xFC\xE7\xFCk: beklenen ${n.origin} ${o}${n.minimum.toString()} ${a.unit}`:`\xC7ok k\xFC\xE7\xFCk: beklenen ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Ge\xE7ersiz metin: "${o.prefix}" ile ba\u015Flamal\u0131`:o.format==="ends_with"?`Ge\xE7ersiz metin: "${o.suffix}" ile bitmeli`:o.format==="includes"?`Ge\xE7ersiz metin: "${o.includes}" i\xE7ermeli`:o.format==="regex"?`Ge\xE7ersiz metin: ${o.pattern} desenine uymal\u0131`:`Ge\xE7ersiz ${r[o.format]??n.format}`}case"not_multiple_of":return`Ge\xE7ersiz say\u0131: ${n.divisor} ile tam b\xF6l\xFCnebilmeli`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar${n.keys.length>1?"lar":""}: ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} i\xE7inde ge\xE7ersiz anahtar`;case"invalid_union":return"Ge\xE7ersiz de\u011Fer";case"invalid_element":return`${n.origin} i\xE7inde ge\xE7ersiz de\u011Fer`;default:return"Ge\xE7ersiz de\u011Fer"}}};function kh(){return{localeError:iw()}}var ow=()=>{let e={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},file:{unit:"\u0431\u0430\u0439\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"}};function t(n){return e[n]??null}let r={regex:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO",date:"\u0434\u0430\u0442\u0430 ISO",time:"\u0447\u0430\u0441 ISO",duration:"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO",ipv4:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4",ipv6:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6",cidrv4:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4",cidrv6:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6",base64:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64",base64url:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url",json_string:"\u0440\u044F\u0434\u043E\u043A JSON",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"},i={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${n.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${c}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${o}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${c}`}case"invalid_value":return n.values.length===1?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${E(n.values[0])}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${a.verb} ${o}${n.maximum.toString()} ${a.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`:`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin} ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${n.origin} \u0431\u0443\u0434\u0435 ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${o.prefix}"`:o.format==="ends_with"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${o.suffix}"`:o.format==="includes"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${o.includes}"`:o.format==="regex"?`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${o.pattern}`:`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${n.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${n.keys.length>1?"\u0456":""}: ${y(n.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${n.origin}`;case"invalid_union":return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456";case"invalid_element":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${n.origin}`;default:return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"}}};function qi(){return{localeError:ow()}}function Ih(){return qi()}var sw=()=>{let e={string:{unit:"\u062D\u0631\u0648\u0641",verb:"\u06C1\u0648\u0646\u0627"},file:{unit:"\u0628\u0627\u0626\u0679\u0633",verb:"\u06C1\u0648\u0646\u0627"},array:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"},set:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"}};function t(n){return e[n]??null}let r={regex:"\u0627\u0646 \u067E\u0679",email:"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633",url:"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",uuidv4:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4",uuidv6:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6",nanoid:"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC",guid:"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid2:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2",ulid:"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC",xid:"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC",ksuid:"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",datetime:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645",date:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E",time:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A",duration:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A",ipv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633",ipv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633",cidrv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C",cidrv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C",base64:"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",base64url:"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",json_string:"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF",e164:"\u0627\u06CC 164 \u0646\u0645\u0628\u0631",jwt:"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC",template_literal:"\u0627\u0646 \u067E\u0679"},i={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${n.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${c} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`:`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${o} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${c} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":return n.values.length===1?`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${E(n.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`:`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${y(n.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u0628\u06C1\u062A \u0628\u0691\u0627: ${n.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${o}${n.maximum.toString()} ${a.unit??"\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`:`\u0628\u06C1\u062A \u0628\u0691\u0627: ${n.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${o}${n.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${n.origin} \u06A9\u06D2 ${o}${n.minimum.toString()} ${a.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`:`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${n.origin} \u06A9\u0627 ${o}${n.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${o.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:o.format==="ends_with"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${o.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:o.format==="includes"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${o.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:o.format==="regex"?`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${o.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`:`\u063A\u0644\u0637 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${n.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;case"unrecognized_keys":return`\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${n.keys.length>1?"\u0632":""}: ${y(n.keys,"\u060C ")}`;case"invalid_key":return`${n.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;case"invalid_union":return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679";case"invalid_element":return`${n.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;default:return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"}}};function Eh(){return{localeError:sw()}}var aw=()=>{let e={string:{unit:"belgi",verb:"bo\u2018lishi kerak"},file:{unit:"bayt",verb:"bo\u2018lishi kerak"},array:{unit:"element",verb:"bo\u2018lishi kerak"},set:{unit:"element",verb:"bo\u2018lishi kerak"},map:{unit:"yozuv",verb:"bo\u2018lishi kerak"}};function t(n){return e[n]??null}let r={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"},i={nan:"NaN",number:"raqam",array:"massiv"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${n.expected}, qabul qilingan ${c}`:`Noto\u2018g\u2018ri kirish: kutilgan ${o}, qabul qilingan ${c}`}case"invalid_value":return n.values.length===1?`Noto\u2018g\u2018ri kirish: kutilgan ${E(n.values[0])}`:`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Juda katta: kutilgan ${n.origin??"qiymat"} ${o}${n.maximum.toString()} ${a.unit} ${a.verb}`:`Juda katta: kutilgan ${n.origin??"qiymat"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Juda kichik: kutilgan ${n.origin} ${o}${n.minimum.toString()} ${a.unit} ${a.verb}`:`Juda kichik: kutilgan ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Noto\u2018g\u2018ri satr: "${o.prefix}" bilan boshlanishi kerak`:o.format==="ends_with"?`Noto\u2018g\u2018ri satr: "${o.suffix}" bilan tugashi kerak`:o.format==="includes"?`Noto\u2018g\u2018ri satr: "${o.includes}" ni o\u2018z ichiga olishi kerak`:o.format==="regex"?`Noto\u2018g\u2018ri satr: ${o.pattern} shabloniga mos kelishi kerak`:`Noto\u2018g\u2018ri ${r[o.format]??n.format}`}case"not_multiple_of":return`Noto\u2018g\u2018ri raqam: ${n.divisor} ning karralisi bo\u2018lishi kerak`;case"unrecognized_keys":return`Noma\u2019lum kalit${n.keys.length>1?"lar":""}: ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} dagi kalit noto\u2018g\u2018ri`;case"invalid_union":return"Noto\u2018g\u2018ri kirish";case"invalid_element":return`${n.origin} da noto\u2018g\u2018ri qiymat`;default:return"Noto\u2018g\u2018ri kirish"}}};function Sh(){return{localeError:aw()}}var cw=()=>{let e={string:{unit:"k\xFD t\u1EF1",verb:"c\xF3"},file:{unit:"byte",verb:"c\xF3"},array:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"},set:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"}};function t(n){return e[n]??null}let r={regex:"\u0111\u1EA7u v\xE0o",email:"\u0111\u1ECBa ch\u1EC9 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ng\xE0y gi\u1EDD ISO",date:"ng\xE0y ISO",time:"gi\u1EDD ISO",duration:"kho\u1EA3ng th\u1EDDi gian ISO",ipv4:"\u0111\u1ECBa ch\u1EC9 IPv4",ipv6:"\u0111\u1ECBa ch\u1EC9 IPv6",cidrv4:"d\u1EA3i IPv4",cidrv6:"d\u1EA3i IPv6",base64:"chu\u1ED7i m\xE3 h\xF3a base64",base64url:"chu\u1ED7i m\xE3 h\xF3a base64url",json_string:"chu\u1ED7i JSON",e164:"s\u1ED1 E.164",jwt:"JWT",template_literal:"\u0111\u1EA7u v\xE0o"},i={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${n.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${c}`:`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${o}, nh\u1EADn \u0111\u01B0\u1EE3c ${c}`}case"invalid_value":return n.values.length===1?`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${E(n.values[0])}`:`T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${n.origin??"gi\xE1 tr\u1ECB"} ${a.verb} ${o}${n.maximum.toString()} ${a.unit??"ph\u1EA7n t\u1EED"}`:`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${n.origin??"gi\xE1 tr\u1ECB"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${n.origin} ${a.verb} ${o}${n.minimum.toString()} ${a.unit}`:`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${o.prefix}"`:o.format==="ends_with"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${o.suffix}"`:o.format==="includes"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${o.includes}"`:o.format==="regex"?`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${o.pattern}`:`${r[o.format]??n.format} kh\xF4ng h\u1EE3p l\u1EC7`}case"not_multiple_of":return`S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${n.divisor}`;case"unrecognized_keys":return`Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${y(n.keys,", ")}`;case"invalid_key":return`Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${n.origin}`;case"invalid_union":return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7";case"invalid_element":return`Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${n.origin}`;default:return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"}}};function wh(){return{localeError:cw()}}var uw=()=>{let e={string:{unit:"\u5B57\u7B26",verb:"\u5305\u542B"},file:{unit:"\u5B57\u8282",verb:"\u5305\u542B"},array:{unit:"\u9879",verb:"\u5305\u542B"},set:{unit:"\u9879",verb:"\u5305\u542B"}};function t(n){return e[n]??null}let r={regex:"\u8F93\u5165",email:"\u7535\u5B50\u90AE\u4EF6",url:"URL",emoji:"\u8868\u60C5\u7B26\u53F7",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u671F\u65F6\u95F4",date:"ISO\u65E5\u671F",time:"ISO\u65F6\u95F4",duration:"ISO\u65F6\u957F",ipv4:"IPv4\u5730\u5740",ipv6:"IPv6\u5730\u5740",cidrv4:"IPv4\u7F51\u6BB5",cidrv6:"IPv6\u7F51\u6BB5",base64:"base64\u7F16\u7801\u5B57\u7B26\u4E32",base64url:"base64url\u7F16\u7801\u5B57\u7B26\u4E32",json_string:"JSON\u5B57\u7B26\u4E32",e164:"E.164\u53F7\u7801",jwt:"JWT",template_literal:"\u8F93\u5165"},i={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${n.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${c}`:`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${o}\uFF0C\u5B9E\u9645\u63A5\u6536 ${c}`}case"invalid_value":return n.values.length===1?`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${E(n.values[0])}`:`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${n.origin??"\u503C"} ${o}${n.maximum.toString()} ${a.unit??"\u4E2A\u5143\u7D20"}`:`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${n.origin??"\u503C"} ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${n.origin} ${o}${n.minimum.toString()} ${a.unit}`:`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${n.origin} ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${o.prefix}" \u5F00\u5934`:o.format==="ends_with"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${o.suffix}" \u7ED3\u5C3E`:o.format==="includes"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${o.includes}"`:o.format==="regex"?`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${o.pattern}`:`\u65E0\u6548${r[o.format]??n.format}`}case"not_multiple_of":return`\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${n.divisor} \u7684\u500D\u6570`;case"unrecognized_keys":return`\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${y(n.keys,", ")}`;case"invalid_key":return`${n.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;case"invalid_union":return"\u65E0\u6548\u8F93\u5165";case"invalid_element":return`${n.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;default:return"\u65E0\u6548\u8F93\u5165"}}};function xh(){return{localeError:uw()}}var lw=()=>{let e={string:{unit:"\u5B57\u5143",verb:"\u64C1\u6709"},file:{unit:"\u4F4D\u5143\u7D44",verb:"\u64C1\u6709"},array:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"},set:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"}};function t(n){return e[n]??null}let r={regex:"\u8F38\u5165",email:"\u90F5\u4EF6\u5730\u5740",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u65E5\u671F\u6642\u9593",date:"ISO \u65E5\u671F",time:"ISO \u6642\u9593",duration:"ISO \u671F\u9593",ipv4:"IPv4 \u4F4D\u5740",ipv6:"IPv6 \u4F4D\u5740",cidrv4:"IPv4 \u7BC4\u570D",cidrv6:"IPv6 \u7BC4\u570D",base64:"base64 \u7DE8\u78BC\u5B57\u4E32",base64url:"base64url \u7DE8\u78BC\u5B57\u4E32",json_string:"JSON \u5B57\u4E32",e164:"E.164 \u6578\u503C",jwt:"JWT",template_literal:"\u8F38\u5165"},i={nan:"NaN"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${n.expected}\uFF0C\u4F46\u6536\u5230 ${c}`:`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${o}\uFF0C\u4F46\u6536\u5230 ${c}`}case"invalid_value":return n.values.length===1?`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${E(n.values[0])}`:`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${n.origin??"\u503C"} \u61C9\u70BA ${o}${n.maximum.toString()} ${a.unit??"\u500B\u5143\u7D20"}`:`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${n.origin??"\u503C"} \u61C9\u70BA ${o}${n.maximum.toString()}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${n.origin} \u61C9\u70BA ${o}${n.minimum.toString()} ${a.unit}`:`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${n.origin} \u61C9\u70BA ${o}${n.minimum.toString()}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${o.prefix}" \u958B\u982D`:o.format==="ends_with"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${o.suffix}" \u7D50\u5C3E`:o.format==="includes"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${o.includes}"`:o.format==="regex"?`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${o.pattern}`:`\u7121\u6548\u7684 ${r[o.format]??n.format}`}case"not_multiple_of":return`\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${n.divisor} \u7684\u500D\u6578`;case"unrecognized_keys":return`\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${n.keys.length>1?"\u5011":""}\uFF1A${y(n.keys,"\u3001")}`;case"invalid_key":return`${n.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;case"invalid_union":return"\u7121\u6548\u7684\u8F38\u5165\u503C";case"invalid_element":return`${n.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;default:return"\u7121\u6548\u7684\u8F38\u5165\u503C"}}};function $h(){return{localeError:lw()}}var dw=()=>{let e={string:{unit:"\xE0mi",verb:"n\xED"},file:{unit:"bytes",verb:"n\xED"},array:{unit:"nkan",verb:"n\xED"},set:{unit:"nkan",verb:"n\xED"}};function t(n){return e[n]??null}let r={regex:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9",email:"\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\xE0k\xF3k\xF2 ISO",date:"\u1ECDj\u1ECD\u0301 ISO",time:"\xE0k\xF3k\xF2 ISO",duration:"\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO",ipv4:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv4",ipv6:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv6",cidrv4:"\xE0gb\xE8gb\xE8 IPv4",cidrv6:"\xE0gb\xE8gb\xE8 IPv6",base64:"\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64",base64url:"\u1ECD\u0300r\u1ECD\u0300 base64url",json_string:"\u1ECD\u0300r\u1ECD\u0300 JSON",e164:"n\u1ECD\u0301mb\xE0 E.164",jwt:"JWT",template_literal:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9"},i={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return n=>{switch(n.code){case"invalid_type":{let o=i[n.expected]??n.expected,a=w(n.input),c=i[a]??a;return/^[A-Z]/.test(n.expected)?`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${n.expected}, \xE0m\u1ECD\u0300 a r\xED ${c}`:`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${o}, \xE0m\u1ECD\u0300 a r\xED ${c}`}case"invalid_value":return n.values.length===1?`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${E(n.values[0])}`:`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${y(n.values,"|")}`;case"too_big":{let o=n.inclusive?"<=":"<",a=t(n.origin);return a?`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${n.origin??"iye"} ${a.verb} ${o}${n.maximum} ${a.unit}`:`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${o}${n.maximum}`}case"too_small":{let o=n.inclusive?">=":">",a=t(n.origin);return a?`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${n.origin} ${a.verb} ${o}${n.minimum} ${a.unit}`:`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${o}${n.minimum}`}case"invalid_format":{let o=n;return o.format==="starts_with"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${o.prefix}"`:o.format==="ends_with"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${o.suffix}"`:o.format==="includes"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${o.includes}"`:o.format==="regex"?`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${o.pattern}`:`A\u1E63\xEC\u1E63e: ${r[o.format]??n.format}`}case"not_multiple_of":return`N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${n.divisor}`;case"unrecognized_keys":return`B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${y(n.keys,", ")}`;case"invalid_key":return`B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${n.origin}`;case"invalid_union":return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e";case"invalid_element":return`Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${n.origin}`;default:return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"}}};function Th(){return{localeError:dw()}}var Oh,qu=Symbol("ZodOutput"),Ju=Symbol("ZodInput"),Ji=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let i=r[0];return this._map.set(t,i),i&&typeof i=="object"&&"id"in i&&this._idmap.set(i.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let i={...this.get(r)??{}};delete i.id;let n={...i,...this._map.get(t)};return Object.keys(n).length?n:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function Yi(){return new Ji}(Oh=globalThis).__zod_globalRegistry??(Oh.__zod_globalRegistry=Yi());var de=globalThis.__zod_globalRegistry;function Yu(e,t){return new e({type:"string",...T(t)})}function Qu(e,t){return new e({type:"string",coerce:!0,...T(t)})}function Qi(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...T(t)})}function yr(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...T(t)})}function Xi(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...T(t)})}function eo(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...T(t)})}function to(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...T(t)})}function no(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...T(t)})}function kr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...T(t)})}function ro(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...T(t)})}function io(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...T(t)})}function oo(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...T(t)})}function so(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...T(t)})}function ao(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...T(t)})}function co(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...T(t)})}function uo(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...T(t)})}function lo(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...T(t)})}function mo(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...T(t)})}function Xu(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...T(t)})}function po(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...T(t)})}function fo(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...T(t)})}function go(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...T(t)})}function ho(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...T(t)})}function bo(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...T(t)})}function _o(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...T(t)})}var el={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function tl(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...T(t)})}function nl(e,t){return new e({type:"string",format:"date",check:"string_format",...T(t)})}function rl(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...T(t)})}function il(e,t){return new e({type:"string",format:"duration",check:"string_format",...T(t)})}function ol(e,t){return new e({type:"number",checks:[],...T(t)})}function sl(e,t){return new e({type:"number",coerce:!0,checks:[],...T(t)})}function al(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...T(t)})}function cl(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...T(t)})}function ul(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...T(t)})}function ll(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...T(t)})}function dl(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...T(t)})}function ml(e,t){return new e({type:"boolean",...T(t)})}function pl(e,t){return new e({type:"boolean",coerce:!0,...T(t)})}function fl(e,t){return new e({type:"bigint",...T(t)})}function gl(e,t){return new e({type:"bigint",coerce:!0,...T(t)})}function hl(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...T(t)})}function bl(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...T(t)})}function _l(e,t){return new e({type:"symbol",...T(t)})}function vl(e,t){return new e({type:"undefined",...T(t)})}function yl(e,t){return new e({type:"null",...T(t)})}function kl(e){return new e({type:"any"})}function Il(e){return new e({type:"unknown"})}function El(e,t){return new e({type:"never",...T(t)})}function Sl(e,t){return new e({type:"void",...T(t)})}function wl(e,t){return new e({type:"date",...T(t)})}function xl(e,t){return new e({type:"date",coerce:!0,...T(t)})}function $l(e,t){return new e({type:"nan",...T(t)})}function Be(e,t){return new zi({check:"less_than",...T(t),value:e,inclusive:!1})}function Se(e,t){return new zi({check:"less_than",...T(t),value:e,inclusive:!0})}function Me(e,t){return new Ui({check:"greater_than",...T(t),value:e,inclusive:!1})}function be(e,t){return new Ui({check:"greater_than",...T(t),value:e,inclusive:!0})}function vo(e){return Me(0,e)}function yo(e){return Be(0,e)}function ko(e){return Se(0,e)}function Io(e){return be(0,e)}function ut(e,t){return new yc({check:"multiple_of",...T(t),value:e})}function lt(e,t){return new Ec({check:"max_size",...T(t),maximum:e})}function Fe(e,t){return new Sc({check:"min_size",...T(t),minimum:e})}function Ot(e,t){return new wc({check:"size_equals",...T(t),size:e})}function At(e,t){return new xc({check:"max_length",...T(t),maximum:e})}function et(e,t){return new $c({check:"min_length",...T(t),minimum:e})}function Rt(e,t){return new Tc({check:"length_equals",...T(t),length:e})}function en(e,t){return new Oc({check:"string_format",format:"regex",...T(t),pattern:e})}function tn(e){return new Ac({check:"string_format",format:"lowercase",...T(e)})}function nn(e){return new Rc({check:"string_format",format:"uppercase",...T(e)})}function rn(e,t){return new Cc({check:"string_format",format:"includes",...T(t),includes:e})}function on(e,t){return new Pc({check:"string_format",format:"starts_with",...T(t),prefix:e})}function sn(e,t){return new Nc({check:"string_format",format:"ends_with",...T(t),suffix:e})}function Eo(e,t,r){return new Dc({check:"property",property:e,schema:t,...T(r)})}function an(e,t){return new zc({check:"mime_type",mime:e,...T(t)})}function Ne(e){return new Uc({check:"overwrite",tx:e})}function cn(e){return Ne(t=>t.normalize(e))}function un(){return Ne(e=>e.trim())}function ln(){return Ne(e=>e.toLowerCase())}function dn(){return Ne(e=>e.toUpperCase())}function mn(){return Ne(e=>Pa(e))}function Tl(e,t,r){return new e({type:"array",element:t,...T(r)})}function pw(e,t,r){return new e({type:"union",options:t,...T(r)})}function fw(e,t,r){return new e({type:"union",options:t,inclusive:!1,...T(r)})}function gw(e,t,r,i){return new e({type:"union",options:r,discriminator:t,...T(i)})}function hw(e,t,r){return new e({type:"intersection",left:t,right:r})}function bw(e,t,r,i){let n=r instanceof N,o=n?i:r,a=n?r:null;return new e({type:"tuple",items:t,rest:a,...T(o)})}function _w(e,t,r,i){return new e({type:"record",keyType:t,valueType:r,...T(i)})}function vw(e,t,r,i){return new e({type:"map",keyType:t,valueType:r,...T(i)})}function yw(e,t,r){return new e({type:"set",valueType:t,...T(r)})}function kw(e,t,r){let i=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new e({type:"enum",entries:i,...T(r)})}function Iw(e,t,r){return new e({type:"enum",entries:t,...T(r)})}function Ew(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...T(r)})}function Ol(e,t){return new e({type:"file",...T(t)})}function Sw(e,t){return new e({type:"transform",transform:t})}function ww(e,t){return new e({type:"optional",innerType:t})}function xw(e,t){return new e({type:"nullable",innerType:t})}function $w(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():Da(r)}})}function Tw(e,t,r){return new e({type:"nonoptional",innerType:t,...T(r)})}function Ow(e,t){return new e({type:"success",innerType:t})}function Aw(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function Rw(e,t,r){return new e({type:"pipe",in:t,out:r})}function Cw(e,t){return new e({type:"readonly",innerType:t})}function Pw(e,t,r){return new e({type:"template_literal",parts:t,...T(r)})}function Nw(e,t){return new e({type:"lazy",getter:t})}function Dw(e,t){return new e({type:"promise",innerType:t})}function Al(e,t,r){let i=T(r);return i.abort??(i.abort=!0),new e({type:"custom",check:"custom",fn:t,...i})}function Rl(e,t,r){return new e({type:"custom",check:"custom",fn:t,...T(r)})}function Cl(e,t){let r=Ah(i=>(i.addIssue=n=>{if(typeof n=="string")i.issues.push(Zt(n,i.value,r._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=i.value),o.inst??(o.inst=r),o.continue??(o.continue=!r._zod.def.abort),i.issues.push(Zt(o))}},e(i.value,i)),t);return r}function Ah(e,t){let r=new J({check:"custom",...T(t)});return r._zod.check=e,r}function Pl(e){let t=new J({check:"describe"});return t._zod.onattach=[r=>{let i=de.get(r)??{};de.add(r,{...i,description:e})}],t._zod.check=()=>{},t}function Nl(e){let t=new J({check:"meta"});return t._zod.onattach=[r=>{let i=de.get(r)??{};de.add(r,{...i,...e})}],t._zod.check=()=>{},t}function Dl(e,t){let r=T(t),i=r.truthy??["true","1","yes","on","y","enabled"],n=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(i=i.map(_=>typeof _=="string"?_.toLowerCase():_),n=n.map(_=>typeof _=="string"?_.toLowerCase():_));let o=new Set(i),a=new Set(n),c=e.Codec??br,u=e.Boolean??gr,l=e.String??Tt,d=new l({type:"string",error:r.error}),g=new u({type:"boolean",error:r.error}),p=new c({type:"pipe",in:d,out:g,transform:((_,S)=>{let f=_;return r.case!=="sensitive"&&(f=f.toLowerCase()),o.has(f)?!0:a.has(f)?!1:(S.issues.push({code:"invalid_value",expected:"stringbool",values:[...o,...a],input:S.value,inst:p,continue:!1}),{})}),reverseTransform:((_,S)=>_===!0?i[0]||"true":n[0]||"false"),error:r.error});return p}function pn(e,t,r,i={}){let n=T(i),o={...T(i),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:c=>r.test(c),...n};return r instanceof RegExp&&(o.pattern=r),new e(o)}function dt(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??de,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function V(e,t,r={path:[],schemaPath:[]}){var i;let n=e._zod.def,o=t.seen.get(e);if(o)return o.count++,r.schemaPath.includes(e)&&(o.cycle=r.path),o.schema;let a={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,a);let c=e._zod.toJSONSchema?.();if(c)a.schema=c;else{let d={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,d);else{let p=a.schema,_=t.processors[n.type];if(!_)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${n.type}`);_(e,t,p,d)}let g=e._zod.parent;g&&(a.ref||(a.ref=g),V(g,t,d),t.seen.get(g).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(a.schema,u),t.io==="input"&&_e(e)&&(delete a.schema.examples,delete a.schema.default),t.io==="input"&&"_prefault"in a.schema&&((i=a.schema).default??(i.default=a.schema._prefault)),delete a.schema._prefault,t.seen.get(e).schema}function mt(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let i=new Map;for(let a of e.seen.entries()){let c=e.metadataRegistry.get(a[0])?.id;if(c){let u=i.get(c);if(u&&u!==a[0])throw new Error(`Duplicate schema id "${c}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);i.set(c,a[0])}}let n=a=>{let c=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let g=e.external.registry.get(a[0])?.id,p=e.external.uri??(S=>S);if(g)return{ref:p(g)};let _=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=_,{defId:_,ref:`${p("__shared")}#/${c}/${_}`}}if(a[1]===r)return{ref:"#"};let l=`#/${c}/`,d=a[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:l+d}},o=a=>{if(a[1].schema.$ref)return;let c=a[1],{ref:u,defId:l}=n(a);c.def={...c.schema},l&&(c.defId=l);let d=c.schema;for(let g in d)delete d[g];d.$ref=u};if(e.cycles==="throw")for(let a of e.seen.entries()){let c=a[1];if(c.cycle)throw new Error(`Cycle detected: #/${c.cycle?.join("/")}/<root>
|
|
93
93
|
|
|
94
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let c=a[1];if(t===a[0]){o(a);continue}if(e.external){let l=e.external.registry.get(a[0])?.id;if(t!==a[0]&&l){o(a);continue}}if(e.metadataRegistry.get(a[0])?.id){o(a);continue}if(c.cycle){o(a);continue}if(c.count>1&&e.reused==="ref"){o(a);continue}}}function pt(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let i=c=>{let u=e.seen.get(c);if(u.ref===null)return;let l=u.def??u.schema,d={...l},g=u.ref;if(u.ref=null,g){i(g);let _=e.seen.get(g),S=_.schema;if(S.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(S)):Object.assign(l,S),Object.assign(l,d),c._zod.parent===g)for(let m in l)m==="$ref"||m==="allOf"||m in d||delete l[m];if(S.$ref&&_.def)for(let m in l)m==="$ref"||m==="allOf"||m in _.def&&JSON.stringify(l[m])===JSON.stringify(_.def[m])&&delete l[m]}let p=c._zod.parent;if(p&&p!==g){i(p);let _=e.seen.get(p);if(_?.schema.$ref&&(l.$ref=_.schema.$ref,_.def))for(let S in l)S==="$ref"||S==="allOf"||S in _.def&&JSON.stringify(l[S])===JSON.stringify(_.def[S])&&delete l[S]}e.override({zodSchema:c,jsonSchema:l,path:u.path??[]})};for(let c of[...e.seen.entries()].reverse())i(c[0]);let n={};if(e.target==="draft-2020-12"?n.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?n.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?n.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let c=e.external.registry.get(t)?.id;if(!c)throw new Error("Schema is missing an `id` property");n.$id=e.external.uri(c)}Object.assign(n,r.def??r.schema);let o=e.metadataRegistry.get(t)?.id;o!==void 0&&n.id===o&&delete n.id;let a=e.external?.defs??{};for(let c of e.seen.entries()){let u=c[1];u.def&&u.defId&&(u.def.id===u.defId&&delete u.def.id,a[u.defId]=u.def)}e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?n.$defs=a:n.definitions=a);try{let c=JSON.parse(JSON.stringify(n));return Object.defineProperty(c,"~standard",{value:{...t["~standard"],jsonSchema:{input:fn(t,"input",e.processors),output:fn(t,"output",e.processors)}},enumerable:!1,writable:!1}),c}catch{throw new Error("Error converting schema to JSON.")}}function _e(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let i=e._zod.def;if(i.type==="transform")return!0;if(i.type==="array")return _e(i.element,r);if(i.type==="set")return _e(i.valueType,r);if(i.type==="lazy")return _e(i.getter(),r);if(i.type==="promise"||i.type==="optional"||i.type==="nonoptional"||i.type==="nullable"||i.type==="readonly"||i.type==="default"||i.type==="prefault")return _e(i.innerType,r);if(i.type==="intersection")return _e(i.left,r)||_e(i.right,r);if(i.type==="record"||i.type==="map")return _e(i.keyType,r)||_e(i.valueType,r);if(i.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:_e(i.in,r)||_e(i.out,r);if(i.type==="object"){for(let n in i.shape)if(_e(i.shape[n],r))return!0;return!1}if(i.type==="union"){for(let n of i.options)if(_e(n,r))return!0;return!1}if(i.type==="tuple"){for(let n of i.items)if(_e(n,r))return!0;return!!(i.rest&&_e(i.rest,r))}return!1}var zl=(e,t={})=>r=>{let i=dt({...r,processors:t});return V(e,i),mt(i,e),pt(i,e)},fn=(e,t,r={})=>i=>{let{libraryOptions:n,target:o}=i??{},a=dt({...n??{},target:o,io:t,processors:r});return V(e,a),mt(a,e),pt(a,e)};var zw={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Ul=(e,t,r,i)=>{let n=r;n.type="string";let{minimum:o,maximum:a,format:c,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof o=="number"&&(n.minLength=o),typeof a=="number"&&(n.maxLength=a),c&&(n.format=zw[c]??c,n.format===""&&delete n.format,c==="time"&&delete n.format),l&&(n.contentEncoding=l),u&&u.size>0){let d=[...u];d.length===1?n.pattern=d[0].source:d.length>1&&(n.allOf=[...d.map(g=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},Ll=(e,t,r,i)=>{let n=r,{minimum:o,maximum:a,format:c,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:d}=e._zod.bag;typeof c=="string"&&c.includes("int")?n.type="integer":n.type="number";let g=typeof d=="number"&&d>=(o??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(a??Number.POSITIVE_INFINITY),_=t.target==="draft-04"||t.target==="openapi-3.0";g?_?(n.minimum=d,n.exclusiveMinimum=!0):n.exclusiveMinimum=d:typeof o=="number"&&(n.minimum=o),p?_?(n.maximum=l,n.exclusiveMaximum=!0):n.exclusiveMaximum=l:typeof a=="number"&&(n.maximum=a),typeof u=="number"&&(n.multipleOf=u)},jl=(e,t,r,i)=>{r.type="boolean"},Bl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Ml=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},Fl=(e,t,r,i)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},Kl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Hl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},Vl=(e,t,r,i)=>{r.not={}},Gl=(e,t,r,i)=>{},Zl=(e,t,r,i)=>{},Wl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},ql=(e,t,r,i)=>{let n=e._zod.def,o=ir(n.entries);o.every(a=>typeof a=="number")&&(r.type="number"),o.every(a=>typeof a=="string")&&(r.type="string"),r.enum=o},Jl=(e,t,r,i)=>{let n=e._zod.def,o=[];for(let a of n.values)if(a===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");o.push(Number(a))}else o.push(a);if(o.length!==0)if(o.length===1){let a=o[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else o.every(a=>typeof a=="number")&&(r.type="number"),o.every(a=>typeof a=="string")&&(r.type="string"),o.every(a=>typeof a=="boolean")&&(r.type="boolean"),o.every(a=>a===null)&&(r.type="null"),r.enum=o},Yl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Ql=(e,t,r,i)=>{let n=r,o=e._zod.pattern;if(!o)throw new Error("Pattern not found in template literal");n.type="string",n.pattern=o.source},Xl=(e,t,r,i)=>{let n=r,o={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:c,mime:u}=e._zod.bag;a!==void 0&&(o.minLength=a),c!==void 0&&(o.maxLength=c),u?u.length===1?(o.contentMediaType=u[0],Object.assign(n,o)):(Object.assign(n,o),n.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(n,o)},ed=(e,t,r,i)=>{r.type="boolean"},td=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},nd=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},rd=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},id=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},od=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},sd=(e,t,r,i)=>{let n=r,o=e._zod.def,{minimum:a,maximum:c}=e._zod.bag;typeof a=="number"&&(n.minItems=a),typeof c=="number"&&(n.maxItems=c),n.type="array",n.items=V(o.element,t,{...i,path:[...i.path,"items"]})},ad=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="object",n.properties={};let a=o.shape;for(let l in a)n.properties[l]=V(a[l],t,{...i,path:[...i.path,"properties",l]});let c=new Set(Object.keys(a)),u=new Set([...c].filter(l=>{let d=o.shape[l]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));u.size>0&&(n.required=Array.from(u)),o.catchall?._zod.def.type==="never"?n.additionalProperties=!1:o.catchall?o.catchall&&(n.additionalProperties=V(o.catchall,t,{...i,path:[...i.path,"additionalProperties"]})):t.io==="output"&&(n.additionalProperties=!1)},wo=(e,t,r,i)=>{let n=e._zod.def,o=n.inclusive===!1,a=n.options.map((c,u)=>V(c,t,{...i,path:[...i.path,o?"oneOf":"anyOf",u]}));o?r.oneOf=a:r.anyOf=a},cd=(e,t,r,i)=>{let n=e._zod.def,o=V(n.left,t,{...i,path:[...i.path,"allOf",0]}),a=V(n.right,t,{...i,path:[...i.path,"allOf",1]}),c=l=>"allOf"in l&&Object.keys(l).length===1,u=[...c(o)?o.allOf:[o],...c(a)?a.allOf:[a]];r.allOf=u},ud=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="array";let a=t.target==="draft-2020-12"?"prefixItems":"items",c=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=o.items.map((p,_)=>V(p,t,{...i,path:[...i.path,a,_]})),l=o.rest?V(o.rest,t,{...i,path:[...i.path,c,...t.target==="openapi-3.0"?[o.items.length]:[]]}):null;t.target==="draft-2020-12"?(n.prefixItems=u,l&&(n.items=l)):t.target==="openapi-3.0"?(n.items={anyOf:u},l&&n.items.anyOf.push(l),n.minItems=u.length,l||(n.maxItems=u.length)):(n.items=u,l&&(n.additionalItems=l));let{minimum:d,maximum:g}=e._zod.bag;typeof d=="number"&&(n.minItems=d),typeof g=="number"&&(n.maxItems=g)},ld=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="object";let a=o.keyType,u=a._zod.bag?.patterns;if(o.mode==="loose"&&u&&u.size>0){let d=V(o.valueType,t,{...i,path:[...i.path,"patternProperties","*"]});n.patternProperties={};for(let g of u)n.patternProperties[g.source]=d}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(n.propertyNames=V(o.keyType,t,{...i,path:[...i.path,"propertyNames"]})),n.additionalProperties=V(o.valueType,t,{...i,path:[...i.path,"additionalProperties"]});let l=a._zod.values;if(l){let d=[...l].filter(g=>typeof g=="string"||typeof g=="number");d.length>0&&(n.required=d)}},dd=(e,t,r,i)=>{let n=e._zod.def,o=V(n.innerType,t,i),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=n.innerType,r.nullable=!0):r.anyOf=[o,{type:"null"}]},md=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},pd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,r.default=JSON.parse(JSON.stringify(n.defaultValue))},fd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(n.defaultValue)))},gd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType;let a;try{a=n.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=a},hd=(e,t,r,i)=>{let n=e._zod.def,o=n.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?o?n.out:n.in:n.out;V(a,t,i);let c=t.seen.get(e);c.ref=a},bd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,r.readOnly=!0},_d=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},xo=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},vd=(e,t,r,i)=>{let n=e._zod.innerType;V(n,t,i);let o=t.seen.get(e);o.ref=n},So={string:Ul,number:Ll,boolean:jl,bigint:Bl,symbol:Ml,null:Fl,undefined:Kl,void:Hl,never:Vl,any:Gl,unknown:Zl,date:Wl,enum:ql,literal:Jl,nan:Yl,template_literal:Ql,file:Xl,success:ed,custom:td,function:nd,transform:rd,map:id,set:od,array:sd,object:ad,union:wo,intersection:cd,tuple:ud,record:ld,nullable:dd,nonoptional:md,default:pd,prefault:fd,catch:gd,pipe:hd,readonly:bd,promise:_d,optional:xo,lazy:vd};function $o(e,t){if("_idmap"in e){let i=e,n=dt({...t,processors:So}),o={};for(let u of i._idmap.entries()){let[l,d]=u;V(d,n)}let a={},c={registry:i,uri:t?.uri,defs:o};n.external=c;for(let u of i._idmap.entries()){let[l,d]=u;mt(n,d),a[l]=pt(n,d)}if(Object.keys(o).length>0){let u=n.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[u]:o}}return{schemas:a}}let r=dt({...t,processors:So});return V(e,r),mt(r,e),pt(r,e)}var To=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=dt({processors:So,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return V(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),mt(this.ctx,t);let i=pt(this.ctx,t),{"~standard":n,...o}=i;return o}};var Rh={};var Ir={};Je(Ir,{ZodAny:()=>Kd,ZodArray:()=>Zd,ZodBase64:()=>qo,ZodBase64URL:()=>Jo,ZodBigInt:()=>In,ZodBigIntFormat:()=>Xo,ZodBoolean:()=>kn,ZodCIDRv4:()=>Zo,ZodCIDRv6:()=>Wo,ZodCUID:()=>Bo,ZodCUID2:()=>Mo,ZodCatch:()=>gm,ZodCodec:()=>Nr,ZodCustom:()=>Dr,ZodCustomStringFormat:()=>vn,ZodDate:()=>Or,ZodDefault:()=>um,ZodDiscriminatedUnion:()=>qd,ZodE164:()=>Yo,ZodEmail:()=>Uo,ZodEmoji:()=>Lo,ZodEnum:()=>bn,ZodExactOptional:()=>sm,ZodFile:()=>im,ZodFunction:()=>wm,ZodGUID:()=>Sr,ZodIPv4:()=>Vo,ZodIPv6:()=>Go,ZodIntersection:()=>Jd,ZodJWT:()=>Qo,ZodKSUID:()=>Ho,ZodLazy:()=>Im,ZodLiteral:()=>rm,ZodMAC:()=>zd,ZodMap:()=>tm,ZodNaN:()=>bm,ZodNanoID:()=>jo,ZodNever:()=>Vd,ZodNonOptional:()=>os,ZodNull:()=>Md,ZodNullable:()=>cm,ZodNumber:()=>yn,ZodNumberFormat:()=>Pt,ZodObject:()=>Rr,ZodOptional:()=>is,ZodPipe:()=>Pr,ZodPrefault:()=>dm,ZodPreprocess:()=>_m,ZodPromise:()=>Sm,ZodReadonly:()=>vm,ZodRecord:()=>hn,ZodSet:()=>nm,ZodString:()=>_n,ZodStringFormat:()=>W,ZodSuccess:()=>fm,ZodSymbol:()=>jd,ZodTemplateLiteral:()=>km,ZodTransform:()=>om,ZodTuple:()=>Qd,ZodType:()=>D,ZodULID:()=>Fo,ZodURL:()=>Tr,ZodUUID:()=>Ke,ZodUndefined:()=>Bd,ZodUnion:()=>Cr,ZodUnknown:()=>Hd,ZodVoid:()=>Gd,ZodXID:()=>Ko,ZodXor:()=>Wd,_ZodString:()=>zo,_default:()=>lm,_function:()=>Bb,any:()=>bb,array:()=>Ar,base64:()=>eb,base64url:()=>tb,bigint:()=>mb,boolean:()=>Ld,catch:()=>hm,check:()=>Mb,cidrv4:()=>Qh,cidrv6:()=>Xh,codec:()=>zb,cuid:()=>Hh,cuid2:()=>Vh,custom:()=>Fb,date:()=>vb,describe:()=>Kb,discriminatedUnion:()=>wb,e164:()=>nb,email:()=>Nh,emoji:()=>Fh,enum:()=>ns,exactOptional:()=>am,file:()=>Cb,float32:()=>cb,float64:()=>ub,function:()=>Bb,guid:()=>Dh,hash:()=>ab,hex:()=>sb,hostname:()=>ob,httpUrl:()=>Mh,instanceof:()=>Vb,int:()=>No,int32:()=>lb,int64:()=>pb,intersection:()=>Yd,invertCodec:()=>Ub,ipv4:()=>qh,ipv6:()=>Yh,json:()=>Zb,jwt:()=>rb,keyof:()=>yb,ksuid:()=>Wh,lazy:()=>Em,literal:()=>Rb,looseObject:()=>Eb,looseRecord:()=>$b,mac:()=>Jh,map:()=>Tb,meta:()=>Hb,nan:()=>Db,nanoid:()=>Kh,nativeEnum:()=>Ab,never:()=>es,nonoptional:()=>pm,null:()=>Fd,nullable:()=>xr,nullish:()=>Pb,number:()=>Ud,object:()=>kb,optional:()=>wr,partialRecord:()=>xb,pipe:()=>Do,prefault:()=>mm,preprocess:()=>Wb,promise:()=>jb,readonly:()=>ym,record:()=>em,refine:()=>xm,set:()=>Ob,strictObject:()=>Ib,string:()=>Er,stringFormat:()=>ib,stringbool:()=>Gb,success:()=>Nb,superRefine:()=>$m,symbol:()=>gb,templateLiteral:()=>Lb,transform:()=>rs,tuple:()=>Xd,uint32:()=>db,uint64:()=>fb,ulid:()=>Gh,undefined:()=>hb,union:()=>ts,unknown:()=>Ct,url:()=>Bh,uuid:()=>zh,uuidv4:()=>Uh,uuidv6:()=>Lh,uuidv7:()=>jh,void:()=>_b,xid:()=>Zh,xor:()=>Sb});var Oo={};Je(Oo,{endsWith:()=>sn,gt:()=>Me,gte:()=>be,includes:()=>rn,length:()=>Rt,lowercase:()=>tn,lt:()=>Be,lte:()=>Se,maxLength:()=>At,maxSize:()=>lt,mime:()=>an,minLength:()=>et,minSize:()=>Fe,multipleOf:()=>ut,negative:()=>yo,nonnegative:()=>Io,nonpositive:()=>ko,normalize:()=>cn,overwrite:()=>Ne,positive:()=>vo,property:()=>Eo,regex:()=>en,size:()=>Ot,slugify:()=>mn,startsWith:()=>on,toLowerCase:()=>ln,toUpperCase:()=>dn,trim:()=>un,uppercase:()=>nn});var gn={};Je(gn,{ZodISODate:()=>Ro,ZodISODateTime:()=>Ao,ZodISODuration:()=>Po,ZodISOTime:()=>Co,date:()=>kd,datetime:()=>yd,duration:()=>Ed,time:()=>Id});var Ao=h("ZodISODateTime",(e,t)=>{Yc.init(e,t),W.init(e,t)});function yd(e){return tl(Ao,e)}var Ro=h("ZodISODate",(e,t)=>{Qc.init(e,t),W.init(e,t)});function kd(e){return nl(Ro,e)}var Co=h("ZodISOTime",(e,t)=>{Xc.init(e,t),W.init(e,t)});function Id(e){return rl(Co,e)}var Po=h("ZodISODuration",(e,t)=>{eu.init(e,t),W.init(e,t)});function Ed(e){return il(Po,e)}var Ch=(e,t)=>{ur.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:r=>dr(e,r)},flatten:{value:r=>lr(e,r)},addIssue:{value:r=>{e.issues.push(r),e.message=JSON.stringify(e.issues,Vt,2)}},addIssues:{value:r=>{e.issues.push(...r),e.message=JSON.stringify(e.issues,Vt,2)}},isEmpty:{get(){return e.issues.length===0}}})},Lw=h("ZodError",Ch),Ie=h("ZodError",Ch,{Parent:Error});var Sd=Wt(Ie),wd=qt(Ie),xd=Jt(Ie),$d=Yt(Ie),Td=xi(Ie),Od=$i(Ie),Ad=Ti(Ie),Rd=Oi(Ie),Cd=Ai(Ie),Pd=Ri(Ie),Nd=Ci(Ie),Dd=Pi(Ie);var Ph=new WeakMap;function $r(e,t,r){let i=Object.getPrototypeOf(e),n=Ph.get(i);if(n||(n=new Set,Ph.set(i,n)),!n.has(t)){n.add(t);for(let o in r){let a=r[o];Object.defineProperty(i,o,{configurable:!0,enumerable:!1,get(){let c=a.bind(this);return Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:c}),c},set(c){Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:c})}})}}}var D=h("ZodType",(e,t)=>(N.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:fn(e,"input"),output:fn(e,"output")}}),e.toJSONSchema=zl(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(r,i)=>Sd(e,r,i,{callee:e.parse}),e.safeParse=(r,i)=>xd(e,r,i),e.parseAsync=async(r,i)=>wd(e,r,i,{callee:e.parseAsync}),e.safeParseAsync=async(r,i)=>$d(e,r,i),e.spa=e.safeParseAsync,e.encode=(r,i)=>Td(e,r,i),e.decode=(r,i)=>Od(e,r,i),e.encodeAsync=async(r,i)=>Ad(e,r,i),e.decodeAsync=async(r,i)=>Rd(e,r,i),e.safeEncode=(r,i)=>Cd(e,r,i),e.safeDecode=(r,i)=>Pd(e,r,i),e.safeEncodeAsync=async(r,i)=>Nd(e,r,i),e.safeDecodeAsync=async(r,i)=>Dd(e,r,i),$r(e,"ZodType",{check(...r){let i=this.def;return this.clone($.mergeDefs(i,{checks:[...i.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...r){return this.check(...r)},clone(r,i){return ge(this,r,i)},brand(){return this},register(r,i){return r.add(this,i),this},refine(r,i){return this.check(xm(r,i))},superRefine(r,i){return this.check($m(r,i))},overwrite(r){return this.check(Ne(r))},optional(){return wr(this)},exactOptional(){return am(this)},nullable(){return xr(this)},nullish(){return wr(xr(this))},nonoptional(r){return pm(this,r)},array(){return Ar(this)},or(r){return ts([this,r])},and(r){return Yd(this,r)},transform(r){return Do(this,rs(r))},default(r){return lm(this,r)},prefault(r){return mm(this,r)},catch(r){return hm(this,r)},pipe(r){return Do(this,r)},readonly(){return ym(this)},describe(r){let i=this.clone();return de.add(i,{description:r}),i},meta(...r){if(r.length===0)return de.get(this);let i=this.clone();return de.add(i,r[0]),i},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(r){return r(this)}}),Object.defineProperty(e,"description",{get(){return de.get(e)?.description},configurable:!0}),e)),zo=h("_ZodString",(e,t)=>{Tt.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Ul(e,i,n,o);let r=e._zod.bag;e.format=r.format??null,e.minLength=r.minimum??null,e.maxLength=r.maximum??null,$r(e,"_ZodString",{regex(...i){return this.check(en(...i))},includes(...i){return this.check(rn(...i))},startsWith(...i){return this.check(on(...i))},endsWith(...i){return this.check(sn(...i))},min(...i){return this.check(et(...i))},max(...i){return this.check(At(...i))},length(...i){return this.check(Rt(...i))},nonempty(...i){return this.check(et(1,...i))},lowercase(i){return this.check(tn(i))},uppercase(i){return this.check(nn(i))},trim(){return this.check(un())},normalize(...i){return this.check(cn(...i))},toLowerCase(){return this.check(ln())},toUpperCase(){return this.check(dn())},slugify(){return this.check(mn())}})}),_n=h("ZodString",(e,t)=>{Tt.init(e,t),zo.init(e,t),e.email=r=>e.check(Qi(Uo,r)),e.url=r=>e.check(kr(Tr,r)),e.jwt=r=>e.check(_o(Qo,r)),e.emoji=r=>e.check(ro(Lo,r)),e.guid=r=>e.check(yr(Sr,r)),e.uuid=r=>e.check(Xi(Ke,r)),e.uuidv4=r=>e.check(eo(Ke,r)),e.uuidv6=r=>e.check(to(Ke,r)),e.uuidv7=r=>e.check(no(Ke,r)),e.nanoid=r=>e.check(io(jo,r)),e.guid=r=>e.check(yr(Sr,r)),e.cuid=r=>e.check(oo(Bo,r)),e.cuid2=r=>e.check(so(Mo,r)),e.ulid=r=>e.check(ao(Fo,r)),e.base64=r=>e.check(go(qo,r)),e.base64url=r=>e.check(ho(Jo,r)),e.xid=r=>e.check(co(Ko,r)),e.ksuid=r=>e.check(uo(Ho,r)),e.ipv4=r=>e.check(lo(Vo,r)),e.ipv6=r=>e.check(mo(Go,r)),e.cidrv4=r=>e.check(po(Zo,r)),e.cidrv6=r=>e.check(fo(Wo,r)),e.e164=r=>e.check(bo(Yo,r)),e.datetime=r=>e.check(yd(r)),e.date=r=>e.check(kd(r)),e.time=r=>e.check(Id(r)),e.duration=r=>e.check(Ed(r))});function Er(e){return Yu(_n,e)}var W=h("ZodStringFormat",(e,t)=>{Z.init(e,t),zo.init(e,t)}),Uo=h("ZodEmail",(e,t)=>{Fc.init(e,t),W.init(e,t)});function Nh(e){return Qi(Uo,e)}var Sr=h("ZodGUID",(e,t)=>{Bc.init(e,t),W.init(e,t)});function Dh(e){return yr(Sr,e)}var Ke=h("ZodUUID",(e,t)=>{Mc.init(e,t),W.init(e,t)});function zh(e){return Xi(Ke,e)}function Uh(e){return eo(Ke,e)}function Lh(e){return to(Ke,e)}function jh(e){return no(Ke,e)}var Tr=h("ZodURL",(e,t)=>{Kc.init(e,t),W.init(e,t)});function Bh(e){return kr(Tr,e)}function Mh(e){return kr(Tr,{protocol:Ee.httpProtocol,hostname:Ee.domain,...$.normalizeParams(e)})}var Lo=h("ZodEmoji",(e,t)=>{Hc.init(e,t),W.init(e,t)});function Fh(e){return ro(Lo,e)}var jo=h("ZodNanoID",(e,t)=>{Vc.init(e,t),W.init(e,t)});function Kh(e){return io(jo,e)}var Bo=h("ZodCUID",(e,t)=>{Gc.init(e,t),W.init(e,t)});function Hh(e){return oo(Bo,e)}var Mo=h("ZodCUID2",(e,t)=>{Zc.init(e,t),W.init(e,t)});function Vh(e){return so(Mo,e)}var Fo=h("ZodULID",(e,t)=>{Wc.init(e,t),W.init(e,t)});function Gh(e){return ao(Fo,e)}var Ko=h("ZodXID",(e,t)=>{qc.init(e,t),W.init(e,t)});function Zh(e){return co(Ko,e)}var Ho=h("ZodKSUID",(e,t)=>{Jc.init(e,t),W.init(e,t)});function Wh(e){return uo(Ho,e)}var Vo=h("ZodIPv4",(e,t)=>{tu.init(e,t),W.init(e,t)});function qh(e){return lo(Vo,e)}var zd=h("ZodMAC",(e,t)=>{ru.init(e,t),W.init(e,t)});function Jh(e){return Xu(zd,e)}var Go=h("ZodIPv6",(e,t)=>{nu.init(e,t),W.init(e,t)});function Yh(e){return mo(Go,e)}var Zo=h("ZodCIDRv4",(e,t)=>{iu.init(e,t),W.init(e,t)});function Qh(e){return po(Zo,e)}var Wo=h("ZodCIDRv6",(e,t)=>{ou.init(e,t),W.init(e,t)});function Xh(e){return fo(Wo,e)}var qo=h("ZodBase64",(e,t)=>{au.init(e,t),W.init(e,t)});function eb(e){return go(qo,e)}var Jo=h("ZodBase64URL",(e,t)=>{cu.init(e,t),W.init(e,t)});function tb(e){return ho(Jo,e)}var Yo=h("ZodE164",(e,t)=>{uu.init(e,t),W.init(e,t)});function nb(e){return bo(Yo,e)}var Qo=h("ZodJWT",(e,t)=>{lu.init(e,t),W.init(e,t)});function rb(e){return _o(Qo,e)}var vn=h("ZodCustomStringFormat",(e,t)=>{du.init(e,t),W.init(e,t)});function ib(e,t,r={}){return pn(vn,e,t,r)}function ob(e){return pn(vn,"hostname",Ee.hostname,e)}function sb(e){return pn(vn,"hex",Ee.hex,e)}function ab(e,t){let r=t?.enc??"hex",i=`${e}_${r}`,n=Ee[i];if(!n)throw new Error(`Unrecognized hash format: ${i}`);return pn(vn,i,n,t)}var yn=h("ZodNumber",(e,t)=>{Fi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Ll(e,i,n,o),$r(e,"ZodNumber",{gt(i,n){return this.check(Me(i,n))},gte(i,n){return this.check(be(i,n))},min(i,n){return this.check(be(i,n))},lt(i,n){return this.check(Be(i,n))},lte(i,n){return this.check(Se(i,n))},max(i,n){return this.check(Se(i,n))},int(i){return this.check(No(i))},safe(i){return this.check(No(i))},positive(i){return this.check(Me(0,i))},nonnegative(i){return this.check(be(0,i))},negative(i){return this.check(Be(0,i))},nonpositive(i){return this.check(Se(0,i))},multipleOf(i,n){return this.check(ut(i,n))},step(i,n){return this.check(ut(i,n))},finite(){return this}});let r=e._zod.bag;e.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),e.isFinite=!0,e.format=r.format??null});function Ud(e){return ol(yn,e)}var Pt=h("ZodNumberFormat",(e,t)=>{mu.init(e,t),yn.init(e,t)});function No(e){return al(Pt,e)}function cb(e){return cl(Pt,e)}function ub(e){return ul(Pt,e)}function lb(e){return ll(Pt,e)}function db(e){return dl(Pt,e)}var kn=h("ZodBoolean",(e,t)=>{gr.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>jl(e,r,i,n)});function Ld(e){return ml(kn,e)}var In=h("ZodBigInt",(e,t)=>{Ki.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Bl(e,i,n,o),e.gte=(i,n)=>e.check(be(i,n)),e.min=(i,n)=>e.check(be(i,n)),e.gt=(i,n)=>e.check(Me(i,n)),e.gte=(i,n)=>e.check(be(i,n)),e.min=(i,n)=>e.check(be(i,n)),e.lt=(i,n)=>e.check(Be(i,n)),e.lte=(i,n)=>e.check(Se(i,n)),e.max=(i,n)=>e.check(Se(i,n)),e.positive=i=>e.check(Me(BigInt(0),i)),e.negative=i=>e.check(Be(BigInt(0),i)),e.nonpositive=i=>e.check(Se(BigInt(0),i)),e.nonnegative=i=>e.check(be(BigInt(0),i)),e.multipleOf=(i,n)=>e.check(ut(i,n));let r=e._zod.bag;e.minValue=r.minimum??null,e.maxValue=r.maximum??null,e.format=r.format??null});function mb(e){return fl(In,e)}var Xo=h("ZodBigIntFormat",(e,t)=>{pu.init(e,t),In.init(e,t)});function pb(e){return hl(Xo,e)}function fb(e){return bl(Xo,e)}var jd=h("ZodSymbol",(e,t)=>{fu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Ml(e,r,i,n)});function gb(e){return _l(jd,e)}var Bd=h("ZodUndefined",(e,t)=>{gu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Kl(e,r,i,n)});function hb(e){return vl(Bd,e)}var Md=h("ZodNull",(e,t)=>{hu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Fl(e,r,i,n)});function Fd(e){return yl(Md,e)}var Kd=h("ZodAny",(e,t)=>{bu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Gl(e,r,i,n)});function bb(){return kl(Kd)}var Hd=h("ZodUnknown",(e,t)=>{_u.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Zl(e,r,i,n)});function Ct(){return Il(Hd)}var Vd=h("ZodNever",(e,t)=>{vu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Vl(e,r,i,n)});function es(e){return El(Vd,e)}var Gd=h("ZodVoid",(e,t)=>{yu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Hl(e,r,i,n)});function _b(e){return Sl(Gd,e)}var Or=h("ZodDate",(e,t)=>{ku.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Wl(e,i,n,o),e.min=(i,n)=>e.check(be(i,n)),e.max=(i,n)=>e.check(Se(i,n));let r=e._zod.bag;e.minDate=r.minimum?new Date(r.minimum):null,e.maxDate=r.maximum?new Date(r.maximum):null});function vb(e){return wl(Or,e)}var Zd=h("ZodArray",(e,t)=>{Iu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>sd(e,r,i,n),e.element=t.element,$r(e,"ZodArray",{min(r,i){return this.check(et(r,i))},nonempty(r){return this.check(et(1,r))},max(r,i){return this.check(At(r,i))},length(r,i){return this.check(Rt(r,i))},unwrap(){return this.element}})});function Ar(e,t){return Tl(Zd,e,t)}function yb(e){let t=e._zod.def.shape;return ns(Object.keys(t))}var Rr=h("ZodObject",(e,t)=>{Eu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ad(e,r,i,n),$.defineLazy(e,"shape",()=>t.shape),$r(e,"ZodObject",{keyof(){return ns(Object.keys(this._zod.def.shape))},catchall(r){return this.clone({...this._zod.def,catchall:r})},passthrough(){return this.clone({...this._zod.def,catchall:Ct()})},loose(){return this.clone({...this._zod.def,catchall:Ct()})},strict(){return this.clone({...this._zod.def,catchall:es()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(r){return $.extend(this,r)},safeExtend(r){return $.safeExtend(this,r)},merge(r){return $.merge(this,r)},pick(r){return $.pick(this,r)},omit(r){return $.omit(this,r)},partial(...r){return $.partial(is,this,r[0])},required(...r){return $.required(os,this,r[0])}})});function kb(e,t){let r={type:"object",shape:e??{},...$.normalizeParams(t)};return new Rr(r)}function Ib(e,t){return new Rr({type:"object",shape:e,catchall:es(),...$.normalizeParams(t)})}function Eb(e,t){return new Rr({type:"object",shape:e,catchall:Ct(),...$.normalizeParams(t)})}var Cr=h("ZodUnion",(e,t)=>{hr.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>wo(e,r,i,n),e.options=t.options});function ts(e,t){return new Cr({type:"union",options:e,...$.normalizeParams(t)})}var Wd=h("ZodXor",(e,t)=>{Cr.init(e,t),Su.init(e,t),e._zod.processJSONSchema=(r,i,n)=>wo(e,r,i,n),e.options=t.options});function Sb(e,t){return new Wd({type:"union",options:e,inclusive:!1,...$.normalizeParams(t)})}var qd=h("ZodDiscriminatedUnion",(e,t)=>{Cr.init(e,t),wu.init(e,t)});function wb(e,t,r){return new qd({type:"union",options:t,discriminator:e,...$.normalizeParams(r)})}var Jd=h("ZodIntersection",(e,t)=>{xu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>cd(e,r,i,n)});function Yd(e,t){return new Jd({type:"intersection",left:e,right:t})}var Qd=h("ZodTuple",(e,t)=>{Hi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ud(e,r,i,n),e.rest=r=>e.clone({...e._zod.def,rest:r})});function Xd(e,t,r){let i=t instanceof N,n=i?r:t,o=i?t:null;return new Qd({type:"tuple",items:e,rest:o,...$.normalizeParams(n)})}var hn=h("ZodRecord",(e,t)=>{$u.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ld(e,r,i,n),e.keyType=t.keyType,e.valueType=t.valueType});function em(e,t,r){return!t||!t._zod?new hn({type:"record",keyType:Er(),valueType:e,...$.normalizeParams(t)}):new hn({type:"record",keyType:e,valueType:t,...$.normalizeParams(r)})}function xb(e,t,r){let i=ge(e);return i._zod.values=void 0,new hn({type:"record",keyType:i,valueType:t,...$.normalizeParams(r)})}function $b(e,t,r){return new hn({type:"record",keyType:e,valueType:t,mode:"loose",...$.normalizeParams(r)})}var tm=h("ZodMap",(e,t)=>{Tu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>id(e,r,i,n),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...r)=>e.check(Fe(...r)),e.nonempty=r=>e.check(Fe(1,r)),e.max=(...r)=>e.check(lt(...r)),e.size=(...r)=>e.check(Ot(...r))});function Tb(e,t,r){return new tm({type:"map",keyType:e,valueType:t,...$.normalizeParams(r)})}var nm=h("ZodSet",(e,t)=>{Ou.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>od(e,r,i,n),e.min=(...r)=>e.check(Fe(...r)),e.nonempty=r=>e.check(Fe(1,r)),e.max=(...r)=>e.check(lt(...r)),e.size=(...r)=>e.check(Ot(...r))});function Ob(e,t){return new nm({type:"set",valueType:e,...$.normalizeParams(t)})}var bn=h("ZodEnum",(e,t)=>{Au.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>ql(e,i,n,o),e.enum=t.entries,e.options=Object.values(t.entries);let r=new Set(Object.keys(t.entries));e.extract=(i,n)=>{let o={};for(let a of i)if(r.has(a))o[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new bn({...t,checks:[],...$.normalizeParams(n),entries:o})},e.exclude=(i,n)=>{let o={...t.entries};for(let a of i)if(r.has(a))delete o[a];else throw new Error(`Key ${a} not found in enum`);return new bn({...t,checks:[],...$.normalizeParams(n),entries:o})}});function ns(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(i=>[i,i])):e;return new bn({type:"enum",entries:r,...$.normalizeParams(t)})}function Ab(e,t){return new bn({type:"enum",entries:e,...$.normalizeParams(t)})}var rm=h("ZodLiteral",(e,t)=>{Ru.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Jl(e,r,i,n),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Rb(e,t){return new rm({type:"literal",values:Array.isArray(e)?e:[e],...$.normalizeParams(t)})}var im=h("ZodFile",(e,t)=>{Cu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Xl(e,r,i,n),e.min=(r,i)=>e.check(Fe(r,i)),e.max=(r,i)=>e.check(lt(r,i)),e.mime=(r,i)=>e.check(an(Array.isArray(r)?r:[r],i))});function Cb(e){return Ol(im,e)}var om=h("ZodTransform",(e,t)=>{Pu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>rd(e,r,i,n),e._zod.parse=(r,i)=>{if(i.direction==="backward")throw new it(e.constructor.name);r.addIssue=o=>{if(typeof o=="string")r.issues.push($.issue(o,r.value,t));else{let a=o;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=r.value),a.inst??(a.inst=e),r.issues.push($.issue(a))}};let n=t.transform(r.value,r);return n instanceof Promise?n.then(o=>(r.value=o,r.fallback=!0,r)):(r.value=n,r.fallback=!0,r)}});function rs(e){return new om({type:"transform",transform:e})}var is=h("ZodOptional",(e,t)=>{Vi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>xo(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function wr(e){return new is({type:"optional",innerType:e})}var sm=h("ZodExactOptional",(e,t)=>{Nu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>xo(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function am(e){return new sm({type:"optional",innerType:e})}var cm=h("ZodNullable",(e,t)=>{Du.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>dd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function xr(e){return new cm({type:"nullable",innerType:e})}function Pb(e){return wr(xr(e))}var um=h("ZodDefault",(e,t)=>{zu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>pd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function lm(e,t){return new um({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():$.shallowClone(t)}})}var dm=h("ZodPrefault",(e,t)=>{Uu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>fd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function mm(e,t){return new dm({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():$.shallowClone(t)}})}var os=h("ZodNonOptional",(e,t)=>{Lu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>md(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function pm(e,t){return new os({type:"nonoptional",innerType:e,...$.normalizeParams(t)})}var fm=h("ZodSuccess",(e,t)=>{ju.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ed(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function Nb(e){return new fm({type:"success",innerType:e})}var gm=h("ZodCatch",(e,t)=>{Bu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>gd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function hm(e,t){return new gm({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var bm=h("ZodNaN",(e,t)=>{Mu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Yl(e,r,i,n)});function Db(e){return $l(bm,e)}var Pr=h("ZodPipe",(e,t)=>{Gi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>hd(e,r,i,n),e.in=t.in,e.out=t.out});function Do(e,t){return new Pr({type:"pipe",in:e,out:t})}var Nr=h("ZodCodec",(e,t)=>{Pr.init(e,t),br.init(e,t)});function zb(e,t,r){return new Nr({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}function Ub(e){let t=e._zod.def;return new Nr({type:"pipe",in:t.out,out:t.in,transform:t.reverseTransform,reverseTransform:t.transform})}var _m=h("ZodPreprocess",(e,t)=>{Pr.init(e,t),Fu.init(e,t)}),vm=h("ZodReadonly",(e,t)=>{Ku.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>bd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function ym(e){return new vm({type:"readonly",innerType:e})}var km=h("ZodTemplateLiteral",(e,t)=>{Hu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Ql(e,r,i,n)});function Lb(e,t){return new km({type:"template_literal",parts:e,...$.normalizeParams(t)})}var Im=h("ZodLazy",(e,t)=>{Zu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>vd(e,r,i,n),e.unwrap=()=>e._zod.def.getter()});function Em(e){return new Im({type:"lazy",getter:e})}var Sm=h("ZodPromise",(e,t)=>{Gu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>_d(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function jb(e){return new Sm({type:"promise",innerType:e})}var wm=h("ZodFunction",(e,t)=>{Vu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>nd(e,r,i,n)});function Bb(e){return new wm({type:"function",input:Array.isArray(e?.input)?Xd(e?.input):e?.input??Ar(Ct()),output:e?.output??Ct()})}var Dr=h("ZodCustom",(e,t)=>{Wu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>td(e,r,i,n)});function Mb(e){let t=new J({check:"custom"});return t._zod.check=e,t}function Fb(e,t){return Al(Dr,e??(()=>!0),t)}function xm(e,t={}){return Rl(Dr,e,t)}function $m(e,t){return Cl(e,t)}var Kb=Pl,Hb=Nl;function Vb(e,t={}){let r=new Dr({type:"custom",check:"custom",fn:i=>i instanceof e,abort:!0,...$.normalizeParams(t)});return r._zod.bag.Class=e,r._zod.check=i=>{i.value instanceof e||i.issues.push({code:"invalid_type",expected:e.name,input:i.value,inst:r,path:[...r._zod.def.path??[]]})},r}var Gb=(...e)=>Dl({Codec:Nr,Boolean:kn,String:_n},...e);function Zb(e){let t=Em(()=>ts([Er(e),Ud(),Ld(),Fd(),Ar(t),em(Er(),t)]));return t}function Wb(e,t){return new _m({type:"pipe",in:rs(e),out:t})}var Bw={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function Mw(e){se({customError:e})}function Fw(){return se().customError}var Tm;Tm||(Tm={});var R={...Ir,...Oo,iso:gn},Kw=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function Hw(e,t){let r=e.$schema;return r==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":r==="http://json-schema.org/draft-07/schema#"?"draft-7":r==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function Vw(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let r=e.slice(1).split("/").filter(Boolean);if(r.length===0)return t.rootSchema;let i=t.version==="draft-2020-12"?"$defs":"definitions";if(r[0]===i){let n=r[1];if(!n||!t.defs[n])throw new Error(`Reference not found: ${e}`);return t.defs[n]}throw new Error(`Reference not found: ${e}`)}function qb(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return R.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let n=e.$ref;if(t.refs.has(n))return t.refs.get(n);if(t.processing.has(n))return R.lazy(()=>{if(!t.refs.has(n))throw new Error(`Circular reference not resolved: ${n}`);return t.refs.get(n)});t.processing.add(n);let o=Vw(n,t),a=me(o,t);return t.refs.set(n,a),t.processing.delete(n),a}if(e.enum!==void 0){let n=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&n.length===1&&n[0]===null)return R.null();if(n.length===0)return R.never();if(n.length===1)return R.literal(n[0]);if(n.every(a=>typeof a=="string"))return R.enum(n);let o=n.map(a=>R.literal(a));return o.length<2?o[0]:R.union([o[0],o[1],...o.slice(2)])}if(e.const!==void 0)return R.literal(e.const);let r=e.type;if(Array.isArray(r)){let n=r.map(o=>{let a={...e,type:o};return qb(a,t)});return n.length===0?R.never():n.length===1?n[0]:R.union(n)}if(!r)return R.any();let i;switch(r){case"string":{let n=R.string();if(e.format){let o=e.format;o==="email"?n=n.check(R.email()):o==="uri"||o==="uri-reference"?n=n.check(R.url()):o==="uuid"||o==="guid"?n=n.check(R.uuid()):o==="date-time"?n=n.check(R.iso.datetime()):o==="date"?n=n.check(R.iso.date()):o==="time"?n=n.check(R.iso.time()):o==="duration"?n=n.check(R.iso.duration()):o==="ipv4"?n=n.check(R.ipv4()):o==="ipv6"?n=n.check(R.ipv6()):o==="mac"?n=n.check(R.mac()):o==="cidr"?n=n.check(R.cidrv4()):o==="cidr-v6"?n=n.check(R.cidrv6()):o==="base64"?n=n.check(R.base64()):o==="base64url"?n=n.check(R.base64url()):o==="e164"?n=n.check(R.e164()):o==="jwt"?n=n.check(R.jwt()):o==="emoji"?n=n.check(R.emoji()):o==="nanoid"?n=n.check(R.nanoid()):o==="cuid"?n=n.check(R.cuid()):o==="cuid2"?n=n.check(R.cuid2()):o==="ulid"?n=n.check(R.ulid()):o==="xid"?n=n.check(R.xid()):o==="ksuid"&&(n=n.check(R.ksuid()))}typeof e.minLength=="number"&&(n=n.min(e.minLength)),typeof e.maxLength=="number"&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),i=n;break}case"number":case"integer":{let n=r==="integer"?R.number().int():R.number();typeof e.minimum=="number"&&(n=n.min(e.minimum)),typeof e.maximum=="number"&&(n=n.max(e.maximum)),typeof e.exclusiveMinimum=="number"?n=n.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(n=n.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?n=n.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(n=n.lt(e.maximum)),typeof e.multipleOf=="number"&&(n=n.multipleOf(e.multipleOf)),i=n;break}case"boolean":{i=R.boolean();break}case"null":{i=R.null();break}case"object":{let n={},o=e.properties||{},a=new Set(e.required||[]);for(let[u,l]of Object.entries(o)){let d=me(l,t);n[u]=a.has(u)?d:d.optional()}if(e.propertyNames){let u=me(e.propertyNames,t),l=e.additionalProperties&&typeof e.additionalProperties=="object"?me(e.additionalProperties,t):R.any();if(Object.keys(n).length===0){i=R.record(u,l);break}let d=R.object(n).passthrough(),g=R.looseRecord(u,l);i=R.intersection(d,g);break}if(e.patternProperties){let u=e.patternProperties,l=Object.keys(u),d=[];for(let p of l){let _=me(u[p],t),S=R.string().regex(new RegExp(p));d.push(R.looseRecord(S,_))}let g=[];if(Object.keys(n).length>0&&g.push(R.object(n).passthrough()),g.push(...d),g.length===0)i=R.object({}).passthrough();else if(g.length===1)i=g[0];else{let p=R.intersection(g[0],g[1]);for(let _=2;_<g.length;_++)p=R.intersection(p,g[_]);i=p}break}let c=R.object(n);e.additionalProperties===!1?i=c.strict():typeof e.additionalProperties=="object"?i=c.catchall(me(e.additionalProperties,t)):i=c.passthrough();break}case"array":{let n=e.prefixItems,o=e.items;if(n&&Array.isArray(n)){let a=n.map(u=>me(u,t)),c=o&&typeof o=="object"&&!Array.isArray(o)?me(o,t):void 0;c?i=R.tuple(a).rest(c):i=R.tuple(a),typeof e.minItems=="number"&&(i=i.check(R.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(R.maxLength(e.maxItems)))}else if(Array.isArray(o)){let a=o.map(u=>me(u,t)),c=e.additionalItems&&typeof e.additionalItems=="object"?me(e.additionalItems,t):void 0;c?i=R.tuple(a).rest(c):i=R.tuple(a),typeof e.minItems=="number"&&(i=i.check(R.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(R.maxLength(e.maxItems)))}else if(o!==void 0){let a=me(o,t),c=R.array(a);typeof e.minItems=="number"&&(c=c.min(e.minItems)),typeof e.maxItems=="number"&&(c=c.max(e.maxItems)),i=c}else i=R.array(R.any());break}default:throw new Error(`Unsupported type: ${r}`)}return i}function me(e,t){if(typeof e=="boolean")return e?R.any():R.never();let r=qb(e,t),i=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let c=e.anyOf.map(l=>me(l,t)),u=R.union(c);r=i?R.intersection(r,u):u}if(e.oneOf&&Array.isArray(e.oneOf)){let c=e.oneOf.map(l=>me(l,t)),u=R.xor(c);r=i?R.intersection(r,u):u}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)r=i?r:R.any();else{let c=i?r:me(e.allOf[0],t),u=i?0:1;for(let l=u;l<e.allOf.length;l++)c=R.intersection(c,me(e.allOf[l],t));r=c}e.nullable===!0&&t.version==="openapi-3.0"&&(r=R.nullable(r)),e.readOnly===!0&&(r=R.readonly(r)),e.default!==void 0&&(r=r.default(e.default));let n={},o=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let c of o)c in e&&(n[c]=e[c]);let a=["contentEncoding","contentMediaType","contentSchema"];for(let c of a)c in e&&(n[c]=e[c]);for(let c of Object.keys(e))Kw.has(c)||(n[c]=e[c]);return Object.keys(n).length>0&&t.registry.add(r,n),e.description&&(r=r.describe(e.description)),r}function Jb(e,t){if(typeof e=="boolean")return e?R.any():R.never();let r;try{r=JSON.parse(JSON.stringify(e))}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let i=Hw(r,t?.defaultTarget),n=r.$defs||r.definitions||{},o={version:i,defs:n,refs:new Map,processing:new Set,rootSchema:r,registry:t?.registry??de};return me(r,o)}var Om={};Je(Om,{bigint:()=>qw,boolean:()=>Ww,date:()=>Jw,number:()=>Zw,string:()=>Gw});function Gw(e){return Qu(_n,e)}function Zw(e){return sl(yn,e)}function Ww(e){return pl(kn,e)}function qw(e){return gl(In,e)}function Jw(e){return xl(Or,e)}se(Zi());var zr=s.object({endpoint:s.string().min(1).max(256).optional(),apiKey:s.string().min(1).max(256).optional(),workspace:s.string().min(1).max(256).optional(),region:s.string().min(1).max(256).optional()}).strict(),Yb=s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]),Am=s.object({d:s.number().int().nonnegative(),w:s.number().int().positive(),c:s.number().nonnegative(),agg:Yb.default("COUNT").optional(),valueProperty:s.string().optional(),uniqueProperty:s.string().optional(),provenance:s.enum(["plan","manual","provider"]).optional(),warnAt:s.number().min(0).max(1).optional(),scope:zr.optional()}),Yw=s.object({kind:s.literal("credential_validity")}),Qw=s.object({kind:s.literal("track_only_bypass")}),Xw=s.object({kind:s.literal("lifecycle_block"),blockOn:s.array(s.string()).default(["SUSPENDED","CANCELLED","INACTIVE"]),code:s.string().default("subscription_inactive")}),ex=s.object({kind:s.literal("scope"),requireExplicit:s.boolean().default(!0)}),tx=s.object({kind:s.literal("permission"),mode:s.enum(["grace","closed"]).optional()}),nx=s.object({kind:s.literal("geo_restriction"),allow:s.array(s.string().length(2).regex(/^[A-Z]{2}$/)).optional(),block:s.array(s.string().length(2).regex(/^[A-Z]{2}$/)).optional()}).refine(e=>e.allow!==void 0||e.block!==void 0,{message:"geo_restriction requires either `allow` or `block`"}),rx=s.enum(["fixed_window","sliding_window","token_bucket"]),ix=Am.extend({kind:s.literal("rate_limit"),m:s.enum(["e","t"]).default("e"),strategy:rx.default("fixed_window"),bucket_capacity:s.number().positive().optional(),refill_rate_per_second:s.number().positive().optional()}).superRefine((e,t)=>{e.strategy==="token_bucket"?(e.bucket_capacity===void 0&&t.addIssue({code:"custom",message:"token_bucket strategy requires `bucket_capacity` (positive number)",path:["bucket_capacity"]}),e.refill_rate_per_second===void 0&&t.addIssue({code:"custom",message:"token_bucket strategy requires `refill_rate_per_second` (positive number)",path:["refill_rate_per_second"]})):(e.bucket_capacity!==void 0&&t.addIssue({code:"custom",message:`bucket_capacity is only valid when strategy === 'token_bucket' (got '${e.strategy}')`,path:["bucket_capacity"]}),e.refill_rate_per_second!==void 0&&t.addIssue({code:"custom",message:`refill_rate_per_second is only valid when strategy === 'token_bucket' (got '${e.strategy}')`,path:["refill_rate_per_second"]}))}),ox=s.enum(["fixed_window","sliding_window"]),sx=Am.extend({kind:s.literal("quota"),ovr:s.enum(["BLOCK","ALLOW_AND_BILL"]),strategy:ox.default("fixed_window")}),ax=Am.extend({kind:s.literal("credit_balance"),ovr:s.enum(["BLOCK","ALLOW_AND_BILL"])}),cx=s.object({kind:s.literal("concurrency"),dimension:s.string().min(1).max(120),limit:s.number().int().positive(),lease_ttl_seconds:s.number().int().positive().max(3600).default(60)}),ux=s.object({kind:s.literal("resource_limit"),resource:s.string().min(1).max(120),limit:s.number().int().nonnegative()}),lx=s.object({kind:s.literal("reservation"),dimension:s.string().min(1).max(120),max_outstanding:s.number().int().positive(),hold_seconds:s.number().int().positive().max(86400)}),dx=s.enum(["plan","manual","provider"]),Rm=s.object({maxInputTokens:s.number().int().positive().optional(),maxOutputTokens:s.number().int().positive().optional(),maxContextTokens:s.number().int().positive().optional(),maxPayloadBytes:s.number().int().positive().optional(),enforcement:s.enum(["enforce","track"]).default("enforce"),failMode:s.enum(["open","closed"]).default("open"),tokenCountSource:s.enum(["declared","estimated"]).optional(),scope:zr.optional()}).refine(Qb,{message:"capacity requires at least one ceiling (maxInputTokens / maxOutputTokens / maxContextTokens / maxPayloadBytes)"});function Qb(e){return e.maxInputTokens!==void 0||e.maxOutputTokens!==void 0||e.maxContextTokens!==void 0||e.maxPayloadBytes!==void 0}var mx=s.object({kind:s.literal("capacity"),maxInputTokens:s.number().int().positive().optional(),maxOutputTokens:s.number().int().positive().optional(),maxContextTokens:s.number().int().positive().optional(),maxPayloadBytes:s.number().int().positive().optional(),enforcement:s.enum(["enforce","track"]).default("enforce"),failMode:s.enum(["open","closed"]).default("open"),tokenCountSource:s.enum(["declared","estimated"]).optional(),scope:zr.optional(),provenance:dx.optional()}).refine(Qb,{message:"capacity requires at least one ceiling (maxInputTokens / maxOutputTokens / maxContextTokens / maxPayloadBytes)"}),Cm=s.discriminatedUnion("kind",[Yw,Qw,Xw,ex,tx,nx,ix,sx,ax,ux,cx,lx,mx]);var Ur=["customer_operation","control_plane","admin_internal","background_job","webhook","healthcheck","unclassified"],Qz=new Set(Ur);var ss=s.object({trafficClass:s.enum(Ur),policySource:s.enum(["declared","inherited","defaulted","inferred"]),limitParticipation:s.object({profile:s.enum(["customer_usage","business_capacity","control_plane","admin_internal","platform_abuse_only","healthcheck","none"]),pools:s.array(s.string().min(1)).optional(),scopes:s.array(s.object({endpoint:s.string().optional(),apiKey:s.string().optional(),workspace:s.string().optional(),region:s.string().optional()}).passthrough()).optional(),metrics:s.array(s.string().min(1)).optional()}).passthrough(),customerBillingPolicy:s.object({customerBillable:s.boolean(),meterKey:s.string().min(1).optional(),chargeableOutcomes:s.enum(["success_only","success_and_partial","attempted","trusted_actual_usage_only"]),invoiceBehavior:s.string().optional()}).passthrough(),providerCostPolicy:s.object({providerCostTracked:s.boolean(),declaredProviderHint:s.string().optional(),declaredModelHint:s.string().optional()}).passthrough()}).passthrough();var u0=s.object({keyId:s.string().min(1),orgId:s.string().min(1),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().optional(),serviceAccountId:s.string().optional(),keyId:s.string()}),businessId:s.string().min(1),compiledPlanId:s.string().min(1),entitlementHash:s.string().optional(),subjectKey:s.string().min(1),subscriptionId:s.string().min(1),currentPeriodId:s.string().optional(),currentPeriodStartMs:s.number().optional(),subscriberId:s.string().min(1),apiKeyId:s.string().nullable(),entitlementVersion:s.number(),status:s.enum(["active","revoked"]),expiresAt:s.number().nullable().optional(),subscriberStatus:s.enum(["ONBOARDING","ACTIVE","SUSPENDED"]),subscriptionStatus:s.string().min(1),environment:s.enum(["production","sandbox"]).optional(),environmentId:s.string().optional(),scopes:s.array(s.string()).readonly().optional(),entitlement:s.record(s.string(),s.unknown()).nullable().optional()});var Xb=s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()}),px=s.object({id:s.string().min(1),slug:s.string().optional(),transportMode:s.enum(["direct","tunnel"]),verificationRequired:s.boolean().optional(),originUrl:s.string().optional(),originHostname:s.string().optional(),accessCredentialRef:s.string().optional(),policyVersion:s.string().optional()}),l0=s.object({id:s.string().min(1),origin:s.string().min(1),sandboxOrigin:s.string().nullable().optional(),authHeader:s.string().optional(),pricing:s.object({requests:s.number().optional(),tokens:s.number().optional(),computeMs:s.number().optional(),per_request:s.number().optional()}).catchall(s.number().optional()).optional(),metering:s.object({tokens:s.object({}).optional(),computeMs:s.object({}).optional(),billOn4xx:s.boolean().optional()}).optional(),tenantLimits:s.array(Xb).readonly().optional(),userLimits:s.array(Xb).readonly().optional(),environmentId:s.string().optional(),contextTokenSecret:s.string().nullable().optional(),timeoutMs:s.number().positive().optional(),idleTimeoutMs:s.number().positive().optional(),backends:s.array(px).optional(),defaultBackendId:s.string().optional(),verificationRequired:s.boolean().optional(),allowedOrigins:s.array(s.string()).optional(),hasPublicRoutes:s.boolean().optional(),publicRoutesCompiledPlanId:s.string().min(1).optional()});var fx=s.object({perRequestMinUnitsByDim:s.record(s.string(),s.number()).optional(),creditPoolMicros:s.number().optional(),perDimUnitCostMicros:s.record(s.string(),s.number()).optional()}),gx=s.object({source:s.enum(["fixed","provider_catalog"]),meterKey:s.string(),selector:s.string().optional(),measures:s.array(s.string()),catalog:s.string().optional(),pricePolicy:s.string().optional(),markupPercent:s.number().optional(),fixedRatesMicros:s.record(s.string(),s.record(s.string(),s.number())).optional()}),hx=s.object({key:s.string(),display:s.string(),unit:s.string().optional(),aggregation:s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]),window:s.enum(["minute","hour","day","month","billing_period"]),enforcementType:s.string()}),bx=s.object({routeId:s.string().min(1),method:s.string(),path:s.string(),meters:s.array(s.string()).optional(),usagePolicy:ss.optional(),policyResolutionMode:s.literal("policy").optional()}),d0=s.object({v:s.number(),sub:s.string(),compiledPlanId:s.string().min(1),planType:s.string(),ts:s.number(),constraints:s.array(Cm),cv:s.number(),policyResolutionMode:s.literal("policy").optional(),dm:s.record(s.string(),s.number()),dmv:s.number().optional(),floor:fx.nullable().optional(),displayDims:s.array(s.number()).optional(),meterSemantics:s.record(s.string(),hx).optional(),rp:s.record(s.string(),gx).optional(),fr:s.array(bx).optional(),sig:s.string().min(1),sigKid:s.string().optional(),environmentId:s.string().optional()}).passthrough();var m0=s.object({subscriptionId:s.string().min(1),activePeriodId:s.string().optional(),activeCompiledPlanId:s.string().min(1),activeEntitlementHash:s.string().optional(),enforcementMode:s.enum(["STRICT","GRACE","TRACK_ONLY"]),postStreamLockouts:s.array(s.object({code:s.literal("post_stream_overspend"),reason:s.literal("usage_exhausted"),constraintKey:s.string().min(1),cycleId:s.string().min(1),dimension:s.string().min(1),currentCapacity:s.number().nonnegative(),observedUsage:s.number().nonnegative(),lockedAt:s.string().min(1),expiresAt:s.string().min(1)})).optional(),gracePeriodEndsAt:s.string().optional(),trialEndsAt:s.string().optional(),scheduledTransition:s.object({kind:s.string(),timing:s.string(),scheduledFor:s.string(),toCompiledPlanId:s.string().nullable()}).optional(),creditPool:s.object({periodStartMs:s.number(),periodEndMs:s.number(),grantedCents:s.number(),policy:s.enum(["block","allow"]),epoch:s.number()}).optional(),dedicatedShard:s.enum(["ACTIVE","DRAINING"]).optional(),memberAuthz:s.record(s.string(),s.object({permissions:s.array(s.string()),roles:s.array(s.string())})).optional(),memberAuthzComputedAt:s.number().optional(),generation:s.number(),updatedAt:s.string()});var _x=["DRAFT","ACTIVE"],g0=s.enum(_x),vx=["ONBOARDING","ACTIVE","SUSPENDED"],e_=s.enum(vx),yx=["ACTIVE","REVOKED"],h0=s.enum(yx),kx=["BLOCK","ALLOW_AND_BILL"],t_=s.enum(kx),Ix=["ACTIVE","ARCHIVED"],b0=s.enum(Ix),Ex=["ACTIVE","PHASING_OUT","SUPERSEDED","ARCHIVED"],_0=s.enum(Ex);var n_=["input","output","total","cached_read_input","cache_creation_input","context","max_output","estimated_output","actual_output","streaming_output"];var Sx="FS_RUNTIME_TOKEN";var wx={payload:"x-fs-metering",signature:"x-fs-metering-sig",token:"x-fs-metering-token"};var S0={environmentVariable:Sx,presentation:wx.token,storage:"sha256-hash-only"};var r_={missingSignature:"missing_signature",malformedSignature:"malformed_signature",unknownKeyId:"unknown_key_id",jwksUnavailable:"jwks_unavailable",badSignature:"bad_signature",bodyHashMismatch:"body_hash_mismatch",routeMismatch:"route_mismatch",clockSkew:"clock_skew",expiredSignature:"expired_signature",replayedNonce:"replayed_nonce",bodyTooLarge:"body_too_large",environmentMismatch:"environment_mismatch",missingToken:"missing_token",invalidToken:"invalid_token",contextUnverified:"context_unverified",memberSubjectRequired:"member_subject_required",serviceSubjectRequired:"service_subject_required",surfaceNotAllowed:"surface_not_allowed"};var w0=10*1024*1024;var xx=["CHECKOUT_COMPLETED","PLAN_CHANGED","CANCELLED","RESTORED","UNSCHEDULED_CANCELLATION","PRICE_ROLLOVER","PAUSED","RESUMED","PLAN_CHANGE_SCHEDULED","PLAN_CHANGE_ABORTED","SCHEDULE_CREATED","SCHEDULE_UPDATED","SCHEDULE_RELEASED","SCHEDULE_COMPLETED","SCHEDULE_ABORTED","CANCEL_SCHEDULED","PAYMENT_FAILED","PAYMENT_RECOVERED","PAYMENT_RECOVERED_FROM_SUSPENDED","PAYMENT_ACTION_REQUIRED","RECURRING_PAYMENT","REFUND_PROCESSED","DISPUTE_OPENED","DISPUTE_FUNDS_WITHDRAWN","DISPUTE_CLOSED","DISPUTE_FUNDS_REINSTATED","DISPUTE_CREDIT_REVOKED","DISPUTE_CREDIT_REINSTATED","MIN_SPEND_TRUE_UP"],T0=s.enum(xx);var Pm=["BRANCH_PREFIX","PULL_REQUEST","DISABLED"];var $x=s.object({d:s.number(),w:s.number(),capacity:s.number(),remaining:s.number(),windowStart:s.number(),windowEnd:s.number()}),Tx=s.record(s.string(),$x),Ox=s.object({allocations:s.array(s.number()),expiresAt:s.number()}),Ax=s.record(s.string(),Ox),Rx=s.record(s.string(),s.bigint()),z0=s.object({subscriptionId:s.string(),handoffToken:s.string(),targetShardId:s.string(),policyVersion:s.number(),entitlementVersion:s.number().nullable(),windowStates:Tx,activeLeases:Ax,totalsByDimension:Rx.optional(),billingCycleId:s.string().nullable().optional(),billingCycleStartMs:s.number().optional()});var i_=new Set(["read","export","download"]);var o_={subscription:["read","cancel","restore","change_plan"],usage:["read","export"],invoice:["read","pay","download"],team:["read","invite","remove_member","change_role","manage_rbac","assign_product_role"],apikey:["read","create","rotate","revoke"],audit_log:["read"]},M0=Object.keys(o_),F0=Object.fromEntries(Object.entries(o_).map(([e,t])=>[e,{read:t.filter(r=>i_.has(r)),write:t.filter(r=>!i_.has(r))}]));var Cx=new Set(["GET","HEAD","OPTIONS"]);function s_(e,t){return Cx.has(t.toUpperCase())?`${e}:read`:`${e}:write`}var Px="farthershore.internal",l_="EdDSA",Nm="Ed25519";var Nx=["gateway","analytics","core","usage-consumer","web-ui","fs-admin","site-shell","agent-runner","build-api"],Dm={gatewayProjectRead:"gateway:project:read",gatewayResourceWrite:"gateway:resource:write",usageWrite:"usage:write",authzDeniedWrite:"authz-denied:write",reservationAuthorize:"reservation:authorize",reservationFinalize:"reservation:finalize",internalCronRun:"internal:cron:run",personaManage:"persona:manage",proxyTrust:"proxy:trust",internalAdmin:"internal:admin",agentDispatch:"agent:dispatch",buildDispatch:"build:dispatch",internalNotify:"internal:notify",analyticsQuery:"analytics:query"},Z0=Object.values(Dm),En=class extends Error{code;constructor(t,r){super(t),this.code=r,this.name="ServiceJwtError"}},a_=new WeakMap;async function d_(e){let t=e.lifetimeSeconds??60;if(!Number.isInteger(t)||t<=0||t>120)throw new En("Invalid service JWT lifetime","invalid_claims");if(!e.kid.trim())throw new En("Service JWT kid is required","invalid_header");let r=Lx(e.now??Date.now()),i={alg:l_,typ:"JWT",kid:e.kid},n={iss:Px,sub:e.sub,aud:e.aud,scope:[...e.scope],iat:r,exp:r+t,jti:e.jti??jx()};c_(n.sub,"sub"),c_(n.aud,"aud"),Dx(n.scope);let o=u_(i),a=u_(n),c=`${o}.${a}`,u=await Ux(e.privateJwk),l=await crypto.subtle.sign(Nm,u,new TextEncoder().encode(c));return`${c}.${m_(new Uint8Array(l))}`}function c_(e,t){if(!Nx.includes(e))throw new En(`Invalid service JWT ${t}`,"invalid_claims")}function Dx(e){if(!e.every(t=>typeof t=="string"&&t.length>0))throw new En("Invalid service JWT scope","invalid_claims")}function zx(e){return e.alg===Nm?{...e,alg:l_}:e}async function Ux(e){let t=a_.get(e);return t||(t=crypto.subtle.importKey("jwk",zx(e),Nm,!1,["sign"]),a_.set(e,t)),t}function u_(e){return m_(new TextEncoder().encode(JSON.stringify(e)))}function m_(e){let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}function Lx(e){let t=e instanceof Date?e.getTime():e;return Math.floor(t/1e3)}function jx(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,r=>r.toString(16).padStart(2,"0"));return`${t.slice(0,4).join("")}-${t.slice(4,6).join("")}-${t.slice(6,8).join("")}-${t.slice(8,10).join("")}-${t.slice(10).join("")}`}var Bx=["managed_frontend","custom_frontend","embedded_sdk","public_api","cli","agent","webhook","admin","internal"],f_=s.enum(Bx),p_=s.string().min(1).max(128),Mx=s.object({d:s.number().int().nonnegative(),w:s.number().int().positive(),rem:s.number(),cap:s.number()}).strict(),g_=s.object({v:s.literal(1),entV:s.number().int().nonnegative().optional(),entHash:p_.optional(),featureGrant:s.boolean().optional(),gates:s.array(p_).max(16).optional(),limits:s.array(Mx).max(16).optional()}).strict();var Fx=["resource_lifecycle_only","platform_only_request","provider_restamped","usage_policy","legacy_tenant_metering"],Kx=["credentialed_gateway_work","no_resolved_credential"],tU=s.object({requestId:s.string(),eventId:s.string(),tenantId:s.string(),slug:s.string(),subscriptionId:s.string(),subscriberId:s.string(),apiKeyId:s.string().nullable(),compiledPlanId:s.string(),subscriberStatus:e_,subscriptionStatus:s.string(),businessId:s.string(),statusCode:s.number(),path:s.string(),latencyMs:s.number(),upstreamMs:s.number().nonnegative().finite().optional(),rawDimsUnits:s.record(s.string(),s.number()),matchedRouteMeters:s.array(s.string().min(1)).optional(),servedRouteScopes:s.array(s.string().min(1)).optional(),meterSettlements:s.array(s.object({meterId:s.string(),meterType:s.enum(["exact_pre_request","estimated_then_settled","postpaid","strict_concurrency"]),reserved:s.number(),actual:s.number(),delta:s.number(),dimension:s.number().int().nonnegative(),leaseId:s.string()})).optional(),reportingAttested:s.boolean(),customerBillable:s.boolean(),platformBillable:s.boolean().optional(),customerBillableReason:s.enum(Fx).optional(),platformBillableReason:s.enum(Kx).optional(),postStreamPending:s.boolean().optional(),measureContext:s.record(s.string(),s.unknown()).optional(),creditUnitsConsumed:s.record(s.string(),s.number()).optional(),timestamp:s.number(),environmentId:s.string().nullable().optional(),orgId:s.string().optional(),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().trim().min(1).optional(),serviceAccountId:s.string().trim().min(1).optional(),keyId:s.string().trim().min(1).optional()}).optional(),subjectKey:s.string().optional(),overageBehavior:t_.optional(),environment:s.enum(["production","sandbox"]).optional(),surface:f_.optional(),actionId:s.string().min(1).max(128).optional(),resourceMutationId:s.string().min(1).max(200).optional(),subjectType:s.string().min(1).max(128).optional(),subjectId:s.string().min(1).max(256).optional(),decision:g_.optional(),decisionId:s.string().min(1).max(256).optional(),denyClass:s.enum(["quota","rate","concurrency","capacity","spend","adaptive"]).optional(),blockingConstraintId:s.string().min(1).max(256).optional(),providerSettlements:s.array(s.object({meterId:s.string(),providerReported:s.number(),reconciled:s.number()})).optional(),usagePolicyId:s.string().min(1).max(256).optional(),policySource:s.enum(["declared","inherited","defaulted","inferred"]).optional(),trafficClass:s.enum(Ur).optional(),limitProfile:s.enum(["customer_usage","business_capacity","control_plane","admin_internal","platform_abuse_only","healthcheck","none"]).optional(),leaseId:s.string(),transactionId:s.string(),gatewayMetadata:s.object({shardId:s.string(),policyVersion:s.number().int().nonnegative().optional(),artifactVersion:s.number().int().nonnegative().default(0),artifactHash:s.string().regex(/^sha256_[a-f0-9]{64}$/).optional(),leaseTelemetry:s.object({consumeRequests:s.number().int().nonnegative(),localLeaseHits:s.number().int().nonnegative(),doAllocationAttempts:s.number().int().nonnegative(),doAllocationGrants:s.number().int().nonnegative(),doAllocationDenials:s.number().int().nonnegative(),doUnavailable:s.number().int().nonnegative(),doCircuitOpen:s.number().int().nonnegative(),leaseRefreshSingleflightJoins:s.number().int().nonnegative(),leaseRefreshSingleflightJoinRate:s.number().min(0).max(1),expiredLeasesReaped:s.number().int().nonnegative(),expiredLeaseReclaimedGrant:s.array(s.number().nonnegative()),reconcileRequests:s.number().int().nonnegative(),reconcilePositiveDeltas:s.number().int().nonnegative(),reconcileNoLocalLease:s.number().int().nonnegative(),doReconcileAttempts:s.number().int().nonnegative(),doReconcileFailures:s.number().int().nonnegative(),unspentLeaseRemainderReturns:s.number().int().nonnegative(),unspentLeaseRemainderReturnFailures:s.number().int().nonnegative(),unspentLeaseRemainderReturnedGrant:s.array(s.number().nonnegative()),maxObservedPositiveReconcileDelta:s.array(s.number().nonnegative()),requestToDoRatio:s.number().nonnegative(),localLeaseHitRate:s.number().min(0).max(1),localSpendRate:s.number().min(0).max(1),maxObservedActiveLeases:s.number().int().nonnegative(),maxObservedOutstandingGrant:s.array(s.number().nonnegative()),maxObservedOutstandingGrantRatio:s.number().nonnegative(),maxObservedEmergencyReserveGrant:s.array(s.number().nonnegative()),maxObservedEmergencyReserveGrantRatio:s.number().nonnegative(),maxObservedLeaseGrant:s.array(s.number().nonnegative()),maxObservedLeaseGrantRatio:s.number().nonnegative(),maxObservedLeaseTtlMs:s.number().int().nonnegative()}).optional(),artifactCacheTelemetry:s.object({reads:s.number().int().nonnegative(),l0FreshHits:s.number().int().nonnegative(),l0Misses:s.number().int().nonnegative(),l0StaleServes:s.number().int().nonnegative(),l0StaleIfErrorServes:s.number().int().nonnegative(),l0BlockingRefreshes:s.number().int().nonnegative(),l0SingleflightJoins:s.number().int().nonnegative(),l0EarlyRefreshes:s.number().int().nonnegative(),l1Hits:s.number().int().nonnegative(),l1Misses:s.number().int().nonnegative(),l1Rejected:s.number().int().nonnegative(),l1WriteFailures:s.number().int().nonnegative(),kvHits:s.number().int().nonnegative(),kvMisses:s.number().int().nonnegative(),kvTimeouts:s.number().int().nonnegative(),kvCircuitOpenReads:s.number().int().nonnegative(),resultHits:s.number().int().nonnegative(),resultMisses:s.number().int().nonnegative(),resultDenied:s.number().int().nonnegative(),resultUnavailable:s.number().int().nonnegative(),backgroundRefreshErrors:s.number().int().nonnegative(),l0HitRate:s.number().min(0).max(1),l0SingleflightJoinRate:s.number().min(0).max(1),l0EarlyRefreshRate:s.number().min(0).max(1),l1HitRate:s.number().min(0).max(1),kvHitRate:s.number().min(0).max(1),resultHitRate:s.number().min(0).max(1),staleServeRate:s.number().min(0).max(1)}).optional(),gatewayVersion:s.string()}).passthrough()}).passthrough();var Hx=s.object({path:s.string(),code:s.string(),message:s.string()}),iU=s.object({reason:s.literal("schema_validation_failed"),receivedAt:s.string(),rawPayload:s.unknown(),issues:s.array(Hx),consumerVersion:s.string().optional(),originalMessageId:s.string().optional()});var h_=[{name:"subscription.created",webhook:!0,description:"A subscriber subscription was created."},{name:"subscription.updated",webhook:!0,description:"A subscriber subscription changed (plan, status, trial)."},{name:"subscription.canceled",webhook:!0,description:"A subscriber subscription was canceled."},{name:"payment.succeeded",webhook:!0,description:"A Stripe payment succeeded for a subscription."},{name:"payment.failed",webhook:!0,description:"A Stripe payment failed for a subscription."},{name:"rate_limit.exceeded",webhook:!0,description:"The gateway denied a request for exceeding a rate limit."},{name:"entitlement.changed",webhook:!0,description:"A compiled entitlement/plan was (re)published."},{name:"usage.threshold_reached",webhook:!0,description:"A metered-usage threshold was crossed."},{name:"usage.recorded",webhook:!1,description:"The gateway recorded one usage fact; the canonical usage queue remains the coordination path and the event stream is its evidence copy."},{name:"gateway.request_denied",webhook:!1,description:"The gateway denied a request during admission or enforcement and recorded the normalized LimitDecision as evidence."},{name:"change_set.created",webhook:!1,description:"A governed Evolution ChangeSet was proposed (draft created)."},{name:"change_set.approved",webhook:!1,description:"A governed Evolution ChangeSet was approved."},{name:"change_set.applied",webhook:!1,description:"A governed Evolution ChangeSet was applied to live state."},{name:"change_set.rolled_back",webhook:!1,description:"A governed Evolution ChangeSet was rolled back."},{name:"change_set.cancelled",webhook:!1,description:"A governed Evolution ChangeSet was cancelled."},{name:"billing.event_recorded",webhook:!1,description:"A BillingEvent row was recorded; the fact references it by id (the authoritative billing row is unchanged \u2014 exact-accounting invariant)."},{name:"authz.decision",webhook:!1,description:"An authorization decision (ALLOW/DENY) mirrored from the audit log onto the spine; AuditLog stays authoritative."},{name:"repo.changed",webhook:!1,description:"A default-branch push to the business's repo touched paths at least one enabled automation rule watches (payload: branch, headSha, bounded changed-path list). Emitted pre-filtered \u2014 never on every push \u2014 so path-triggered automations (e.g. legal/** changed \u2192 notify subscribers) can fire deterministically."},{name:"automation.rule_fired",webhook:!1,description:"An enabled AutomationRule matched a spine fact (trigger + all conditions held) and its actions were scheduled."},{name:"automation.action_succeeded",webhook:!1,description:"An AutomationRule action ran to success."},{name:"automation.action_failed",webhook:!1,description:"An AutomationRule action failed (will retry per the queue)."},{name:"automation.action_denied",webhook:!1,description:"An AutomationRule action was DENIED \u2014 the automation actor lacked the action's native permission (automation is a first-class authz subject, never a bypass). Recorded + audited; the action did not run."},{name:"automation.notification",webhook:!1,description:"A notification recorded by an AutomationRule `create_notification` action \u2014 a spine fact other surfaces (portal/admin) read; no separate notification runtime."},{name:"access_request.created",webhook:!1,description:"A subscriber member requested a missing permission (AccessRequest row created). Internal \u2014 the Communication layer notifies the subscriber's admins (who can grant it)."},{name:"access_request.resolved",webhook:!1,description:"A pending AccessRequest was resolved (approved or denied) by an owner/admin. Internal \u2014 notifies the subscriber's admins."},{name:"build.failed",webhook:!1,description:"A build for the business (frontend/portal or Business-SDK) failed and did not go live. Internal \u2014 the Communication layer notifies the org's members (opt-out-able, category: deployments)."},{name:"product.published",webhook:!1,description:"A business went live for the first time (DRAFT\u2192ACTIVE first publish). Internal \u2014 notifies the org's members (category: deployments)."},{name:"workflow.failed",webhook:!1,description:"A platform workflow (config apply / Stripe sync / subscription transition) reached a terminal FAILED state. Internal \u2014 notifies the org's admins (category: deployments)."},{name:"pr.review_posted",webhook:!1,description:"The platform posted (or updated) its Business-as-Code impact report on a managed-repo pull request. Internal \u2014 emails the org's members the review synopsis + a link to the PR (category: deployments)."}],Vx=h_.map(e=>e.name),b_=h_.filter(e=>e.webhook).map(e=>e.name),He=s.enum(Vx);var __=["subscription.created","subscription.updated","subscription.canceled","payment.succeeded","payment.failed","rate_limit.exceeded","entitlement.changed","usage.threshold_reached"],zm=__;{let e=new Set(b_),t=new Set(__),r=[...e].filter(n=>!t.has(n)),i=[...t].filter(n=>!e.has(n));if(r.length>0||i.length>0)throw new Error(`[webhooks/events] WEBHOOK_EVENT_NAMES drifted from the events catalog. Missing from order tuple: [${r.join(", ")}]; extra in order tuple: [${i.join(", ")}]. Reconcile ../events/catalog.ts (webhook: true entries) with WEBHOOK_EVENT_ORDER in this file.`)}var Sn=s.enum(zm);var De=s.enum(["immediate","period_end"]),wn=s.object({default:De.default("period_end"),when:s.object({price_increase:De.optional(),price_decrease:De.optional(),route_grant_added:De.optional(),route_grant_removed:De.optional(),limit_increased:De.optional(),limit_reduced:De.optional(),credit_increased:De.optional(),credit_reduced:De.optional(),rating_changed:De.optional()}).strict().default({price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"}),allowImmediatePriceIncrease:s.boolean().default(!1),allowImmediateEntitlementReduction:s.boolean().default(!1)}).strict().superRefine((e,t)=>{(e.when.price_increase??e.default)==="immediate"&&!e.allowImmediatePriceIncrease&&t.addIssue({code:"custom",path:["when","price_increase"],message:"price_increase cannot switch immediately without allowImmediatePriceIncrease: true"});for(let r of["route_grant_removed","limit_reduced","credit_reduced"])(e.when[r]??e.default)==="immediate"&&!e.allowImmediateEntitlementReduction&&t.addIssue({code:"custom",path:["when",r],message:`${r} cannot switch immediately without allowImmediateEntitlementReduction: true`})}),Gx=wn.parse({});var Zx=s.object({kind:s.literal("credit"),amount_cents:s.number().int().nonnegative(),recurs:s.boolean().optional(),expires_after_days:s.number().int().positive().optional(),label:s.string().min(1).max(120).optional()}),Wx=s.object({kind:s.literal("top_up"),sku:s.string().min(1).max(120),label:s.string().min(1).max(200),price_cents:s.number().int().positive(),credit_cents:s.number().int().positive()}),ft=s.discriminatedUnion("kind",[Zx,Wx]);function v_(e){return e.kind==="credit"&&e.recurs===!0&&e.label===void 0}function y_(e){return e.kind==="credit"&&e.recurs!==!0&&e.label===void 0}function k_(e,t,r=["grants"]){if(!e)return;let i=0,n=0;for(let o of e)v_(o)?i+=1:y_(o)&&(n+=1);i>1&&t.addIssue({code:"custom",message:"At most one recurring `credit` grant (recurs:true, no label) is allowed \u2014 recurring credit is a single canonical entry.",path:r}),n>1&&t.addIssue({code:"custom",message:"At most one one-time `credit` grant (recurs:false, no label) is allowed \u2014 one-time credit is a single canonical entry.",path:r})}function I_(e){return e.grants&&e.grants.length>0?[...e.grants]:[]}function Um(e){return I_(e).find(v_)?.amount_cents??0}function as(e){return I_(e).find(y_)?.amount_cents??0}var qx=s.object({percent:s.number().int().min(0).max(100)}),Jx=s.object({threshold_cents:s.number().int().nonnegative(),refill_cents:s.number().int().positive()}),gt=s.object({rollover:qx.optional(),auto_recharge:Jx.optional()});var E_=s.enum(["linear","active_count","event_count"]);var Yx=s.object({up_to:s.number().int().positive().nullable(),price_per_unit_micros:s.number().int().nonnegative()}),Qx=s.object({strategy:s.enum(["graduated","volume"]),tiers:s.array(Yx).min(1).max(20)}),ht=s.object({dimension:s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Meter dimension must be lowercase alphanumeric with underscores"),kind:E_.default("linear"),price_per_unit_micros:s.number().int().nonnegative().default(0),tiered:Qx.optional(),included_units:s.number().int().positive().optional()}).superRefine((e,t)=>{if(e.tiered&&e.price_per_unit_micros>0&&t.addIssue({code:"custom",message:"`tiered` is mutually exclusive with a non-zero `price_per_unit_micros` \u2014 drop one",path:["tiered"]}),e.included_units!==void 0&&e.tiered&&t.addIssue({code:"custom",message:"`included_units` is mutually exclusive with `tiered` \u2014 a tiered schedule already expresses the included allotment as a zero-priced first tier",path:["included_units"]}),e.tiered){let r=0,i=!1;for(let n=0;n<e.tiered.tiers.length;n++){let o=e.tiered.tiers[n];if(i){t.addIssue({code:"custom",message:"Open-ended tier (`up_to: null`) must be the final tier",path:["tiered","tiers",n,"up_to"]});break}if(o.up_to===null){i=!0;continue}o.up_to<=r&&t.addIssue({code:"custom",message:`Tier upper bounds must be strictly ascending (tier ${n} = ${o.up_to} <= previous ${r})`,path:["tiered","tiers",n,"up_to"]}),r=o.up_to}i||t.addIssue({code:"custom",message:"The final tier of a `tiered` schedule must be open-ended (`up_to: null`)",path:["tiered","tiers",e.tiered.tiers.length-1,"up_to"]})}}),xn=s.enum(["month","year"]),Xx=s.object({meters:s.array(ht).default([]),recurring_fee_cents:s.number().int().nonnegative().default(0),billing_interval:xn.default("month"),grants:s.array(ft).max(40).default([]),creditPolicy:gt.optional(),trial_days:s.number().int().nonnegative().default(0),max_monthly_spend_cents:s.number().int().nonnegative().optional()});var e$=s.string().min(1),t$=s.object({type:s.literal("named"),name:s.enum(["second","minute","hour","day","week","month"])}),n$=s.object({type:s.literal("custom"),seconds:s.number().int().positive(),label:s.string().optional()}),r$=s.discriminatedUnion("type",[t$,n$]),Lr=s.object({dimension:e$,window:r$,capacity:s.number().nonnegative(),enforcement:s.enum(["enforce","track"]).optional(),warnAt:s.number().min(0).max(1).optional(),scope:zr.optional(),acknowledgeUnreachable:s.boolean().optional()}),EU=s.array(Lr).max(20);function i$(e){let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return!1;let r=Number(t[1]),i=Number(t[2]);return r>255||i>255||Number(t[3])>255||Number(t[4])>255?!1:r===0||r===127||r===10||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254||r===100&&i>=64&&i<=127||r===192&&i===0&&Number(t[3])===0||r===198&&(i===18||i===19)||r>=224}function S_(e){let t=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return t.endsWith(".")&&(t=t.slice(0,-1)),t==="localhost"||t.endsWith(".localhost")||t.startsWith("::ffff:")||t==="::"||t==="::1"||t.includes(":")&&(t.startsWith("fc")||t.startsWith("fd")||/^fe[89ab][0-9a-f]:/.test(t))||/^ff[0-9a-f]{2}:/.test(t)||t.startsWith("2002:")||/^2001:0{0,4}:/.test(t)||t.includes(":")&&t.startsWith("64:ff9b:")||/^::(?:\d+\.\d+\.\d+\.\d+|[0-9a-f]{1,4}:[0-9a-f]{1,4})$/.test(t)?!0:i$(t)}var jm=["GET","HEAD","POST","PUT","PATCH","DELETE"],jr=1048576,x_=1048576;function $_(e){return new TextEncoder().encode(e).byteLength}function o$(e){try{let t=JSON.stringify(e);return typeof t=="string"?$_(t):null}catch{return null}}var Bm=s.string().min(1).max(64).regex(/^[a-z][a-z0-9_-]*$/,"Integration id must be lowercase alphanumeric with hyphens/underscores"),Mm=s.string().min(1).max(128).regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,"Header name must be a valid HTTP token").refine(e=>e!=="*","Header wildcard is not allowed").transform(e=>e.toLowerCase()),T_=new Set(["connection","keep-alive","proxy-connection","te","trailer","transfer-encoding","upgrade","content-length","content-encoding"]),O_=Mm.refine(e=>!T_.has(e)&&!["host","cookie","set-cookie","authorization","proxy-authorization"].includes(e),"Browser request header is not safe"),s$=Mm.refine(e=>!T_.has(e)&&!["host","cookie","set-cookie"].includes(e),"Injection header is not safe"),a$=new Set(["cache-control","etag","last-modified","link","retry-after","x-request-id","x-ratelimit-limit","x-ratelimit-remaining","x-ratelimit-reset"]),c$=Mm.refine(e=>a$.has(e),"Response header is not safe to project"),u$=s.string().max(16384).refine(e=>!/[\r\n]/.test(e),"Header values cannot contain CR/LF"),A_=s.string().min(3).max(128).regex(/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/i,"Content type must be an exact media type").refine(e=>!e.includes("*"),"Content type wildcards are not allowed").transform(e=>e.toLowerCase());function R_(e){return[...new Set(e)].sort((t,r)=>t<r?-1:t>r?1:0)}function $n(e,t,r=1,i=!1){return s.array(e).min(r).max(t).superRefine((n,o)=>{if(!i)return;let a=new Set;for(let[c,u]of n.entries())a.has(u)&&o.addIssue({code:"custom",path:[c],message:`duplicate value "${u}" is not allowed`}),a.add(u)}).transform(n=>R_(n))}var l$=$n(O_,20,0,!0),C_=s.string().min(1).max(128).regex(/^[A-Za-z0-9_.~-]+$/,"Query parameter name is invalid"),d$=$n(C_,30,0,!0);function m$(){return s.record(s.string(),s.string().max(16384)).superRefine((e,t)=>{let r=Object.keys(e);r.length>30&&t.addIssue({code:"custom",message:"Too many query parameters"});for(let i of r)C_.safeParse(i).success||t.addIssue({code:"custom",path:[i],message:"Browser query parameter is invalid"})})}function p$(){return s.record(s.string(),u$).superRefine((e,t)=>{Object.keys(e).length>20&&t.addIssue({code:"custom",message:"Too many request headers"});let i=new Set;for(let[n,o]of Object.entries(e)){let a=O_.safeParse(n);if(!a.success){t.addIssue({code:"custom",path:[n],message:"Browser request header is not safe"});continue}i.has(a.data)&&t.addIssue({code:"custom",path:[n],message:`duplicate request header "${n}" is not allowed`}),i.add(a.data),typeof o!="string"&&t.addIssue({code:"custom",path:[n],message:"Request header value must be a string"})}}).transform(e=>Object.fromEntries(Object.entries(e).map(([t,r])=>[t.toLowerCase(),r])))}function f$(e){return e.split("/").some(t=>{let r=t.replace(/%2e/gi,".");return r==="."||r===".."})}var Fm=s.string().min(1).max(500).superRefine((e,t)=>{let r=i=>{t.addIssue({code:"custom",message:i})};if(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)){r(`Pass an origin-relative path, not a full URL ("${e}"). The upstream origin comes from the integration's declared \`upstream\` \u2014 e.g. "/api/projects".`);return}if(e.startsWith("//")){r('Protocol-relative paths are not allowed \u2014 "//host/x" targets another origin. Use a single leading slash.');return}if(!e.startsWith("/")){r(`Request path must start with "/" \u2014 got "${e}".`);return}if(e.includes("?")){r("Put query parameters in the `query` option, not the path \u2014 they are allowlisted per operation.");return}if(e.includes("#")){r("Fragments are never sent to a server; remove the '#'.");return}if(e.includes("\\")){r("Backslashes are not path separators; use '/'.");return}if(e.includes("*")){r("Wildcards are not allowed \u2014 an operation names one exact path so the allowlist stays decidable.");return}f$(e)&&r("Relative segments ('.' / '..') are not allowed \u2014 they could escape the declared path.")}),P_=s.string().max(2048).superRefine((e,t)=>{let r;try{r=new URL(e)}catch{t.addIssue({code:"custom",message:"Upstream must be a valid HTTPS origin"});return}r.protocol!=="https:"&&t.addIssue({code:"custom",message:"Upstream must use HTTPS"}),(r.username||r.password)&&t.addIssue({code:"custom",message:"Upstream cannot include userinfo"}),r.port&&r.port!=="443"&&t.addIssue({code:"custom",message:"Upstream must use the default HTTPS port"}),(r.pathname!=="/"||r.search||r.hash)&&t.addIssue({code:"custom",message:"Upstream must be an origin without a path, query, or fragment"}),r.hostname.includes("*")&&t.addIssue({code:"custom",message:"Upstream wildcard hosts are not allowed"}),S_(r.hostname)&&t.addIssue({code:"custom",message:"Upstream host is private or loopback"})}).transform(e=>new URL(e).origin),g$=s.discriminatedUnion("kind",[s.object({kind:s.literal("none")}).strict(),s.object({kind:s.literal("json"),maxBytes:s.number().int().positive().max(jr)}).strict(),s.object({kind:s.literal("text"),maxBytes:s.number().int().positive().max(jr),contentTypes:$n(A_,10)}).strict()]),h$=s.string().min(1).max(500).regex(/^(?:\/(?:[^~/]|~[01])*)+$/,"Response field must be an RFC 6901 JSON pointer"),b$=s.object({kind:s.literal("json"),contentTypes:$n(A_,10),maxBytes:s.number().int().positive().max(x_),jsonPointers:$n(h$,100),responseHeaders:$n(c$,20,0,!0).default([])}).strict(),w_=s.string().min(1).max(128).regex(/^[A-Z][A-Z0-9_]*$/,"secretRef must be UPPER_SNAKE"),_$=s.discriminatedUnion("location",[s.object({secretRef:w_,location:s.literal("header"),name:s$,template:s.enum(["{value}","Bearer {value}"])}).strict(),s.object({secretRef:w_,location:s.literal("query"),name:s.string().min(1).max(128).regex(/^[A-Za-z0-9_.~-]+$/,"Query parameter name is invalid")}).strict()]),v$=s.object({method:s.enum(jm),path:Fm,headers:l$.default([]),query:d$.default([]),body:g$}).strict(),y$=s.array(v$).min(1).max(100).superRefine((e,t)=>{let r=new Set;for(let[i,n]of e.entries()){let o=`${n.method} ${n.path}`;r.has(o)&&t.addIssue({code:"custom",path:[i],message:`duplicate frontend integration operation "${o}"`}),r.add(o)}}).transform(e=>[...e].sort((t,r)=>{let i=`${t.method} ${t.path}`,n=`${r.method} ${r.path}`;return i<n?-1:i>n?1:0})),N_=s.object({id:Bm,upstream:P_,request:s.object({operations:y$}).strict(),injection:_$,response:b$}).strict().superRefine((e,t)=>{if(e.injection.location==="header")for(let[r,i]of e.request.operations.entries())i.headers.includes(e.injection.name)&&t.addIssue({code:"custom",path:["request","operations",r,"headers"],message:`browser request header collides with injected header "${e.injection.name}"`})}),D_=N_;function z_(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))z_(t)}return e}var k$=N_.transform(e=>z_(e)),Km=s.array(D_).max(200).superRefine((e,t)=>{let r=new Set;for(let[i,n]of e.entries())r.has(n.id)&&t.addIssue({code:"custom",path:[i,"id"],message:`duplicate frontend integration id "${n.id}"`}),r.add(n.id)}).transform(e=>[...e].sort((t,r)=>t.id<r.id?-1:t.id>r.id?1:0)),Hm=s.array(Bm).max(200).transform(e=>R_(e)).optional(),Lm=s.lazy(()=>s.union([s.null(),s.boolean(),s.number().finite(),s.string().max(65536),s.array(Lm).max(100),s.record(s.string().min(1).max(128),Lm).superRefine((e,t)=>{Object.keys(e).length>100&&t.addIssue({code:"custom",message:"JSON object has too many keys"})})])),I$=s.discriminatedUnion("kind",[s.object({kind:s.literal("json"),value:Lm}).strict(),s.object({kind:s.literal("text"),value:s.string().max(jr)}).strict()]).superRefine((e,t)=>{let r=e.kind==="json"?o$(e.value):$_(e.value);(r===null||r>jr)&&t.addIssue({code:"custom",message:"Request body exceeds the UTF-8 byte limit"})}),E$=s.object({integrationId:Bm,path:Fm,method:s.enum(jm),headers:p$().optional(),query:m$().optional(),body:I$.optional()}).strict();var S$={meters:s.array(ht).default([]),recurring_fee_cents:s.number().int().nonnegative().default(0),billing_interval:xn.default("month"),trial_days:s.number().int().nonnegative().default(0),max_monthly_spend_cents:s.number().int().nonnegative().optional(),min_monthly_spend_cents:s.number().int().nonnegative().optional(),grants:s.array(ft).max(40).default([]),creditPolicy:gt.optional()},U_=s.object({key:s.string().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Plan key must be lowercase alphanumeric with hyphens/underscores"),name:s.string().min(1).max(100),description:s.string().max(500).optional(),details:s.array(s.string().max(200)).max(10).optional(),...S$,free:s.boolean().default(!1),limits:s.array(Lr).max(20).default([]),routeGrants:s.array(s.string().min(1).max(500)).max(500).transform(e=>[...new Set(e)].sort()).optional(),frontendIntegrationGrants:Hm,resource_limits:s.record(s.string().min(1).max(120),s.number().int().nonnegative()).default({}),overageBehavior:s.enum(["block","allow_and_bill"]).default("block"),selfServeEnabled:s.boolean().default(!0),capacity:Rm.optional(),archive:s.object({at:s.string().datetime().optional(),transitionTo:s.string().optional(),strategy:s.enum(["auto","explicit","block"]).default("auto")}).optional()}).strict(),cs=U_.superRefine((e,t)=>{k_(e.grants,t)});var w$=/^\$\{[A-Z][A-Z0-9_]{0,127}\}$/,Vm=s.string().min(3).max(200).refine(e=>w$.test(e),{message:"secret must use ${VAR} interpolation syntax (e.g. ${WEBHOOK_SECRET}); raw secrets in YAML are rejected. Define the env var in the per-product secret store and reference it here."}),Gm=s.object({maxAttempts:s.number().int().min(1).max(20).default(5),backoff:s.enum(["exponential","fixed"]).default("exponential")}),Zm=s.object({id:s.string().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Webhook endpoint id must be lowercase alphanumeric with hyphens/underscores"),url:s.string().url("webhooks.endpoints[].url must be a valid URL"),secret:Vm,events:s.array(Sn).min(1,"webhooks.endpoints[].events must subscribe to \u2265 1 event"),enabled:s.boolean().default(!0),retryPolicy:Gm.default({maxAttempts:5,backoff:"exponential"})}),Wm=s.object({endpoints:s.array(Zm).max(50).default([])});var x$=s.object({meters:s.array(ht).optional(),recurring_fee_cents:s.number().int().nonnegative().optional(),billing_interval:xn.optional(),grants:s.array(ft).max(40).optional(),creditPolicy:gt.optional(),trial_days:s.number().int().nonnegative().optional(),max_monthly_spend_cents:s.number().int().nonnegative().optional(),limits:s.array(Lr).max(20).optional(),overageBehavior:s.enum(["block","allow_and_bill"]).optional(),selfServeEnabled:s.boolean().optional()}).strict(),$$=s.object({url:s.string().url().optional(),secret:Vm.optional(),events:s.array(Sn).optional(),enabled:s.boolean().optional(),retryPolicy:Gm.partial().optional()}).strict(),T$=s.object({plans:s.record(s.string(),x$).optional(),webhooks:s.object({endpoints:s.record(s.string(),$$).optional()}).strict().optional()}).strict(),qm=s.record(s.string().min(1).max(64),T$);var Jm=s.enum(["query","mutation"]),Ym=s.enum(["none","metadata","full"]),Qm=s.object({type:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/),from:s.enum(["header","path_param"]),name:s.string().min(1).max(120)}),Xm=s.object({resource:s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),effect:s.enum(["create","delete"])}),L_=s.object({id:s.string().min(1).max(160).regex(/^[a-z0-9_.:-]+$/),title:s.string().min(1).max(160).optional(),kind:Jm,actorType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),subject:Qm.optional(),inputSchemaRef:s.string().min(1).max(240).optional(),audit:Ym.default("metadata"),resource:Xm.optional()});var j_=s.enum(["subscription","subject"]),B_=s.enum(["reported","action_inferred"]),M_=s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),F_=s.object({name:M_,display:s.string().min(1).max(120).optional(),scope:j_.default("subscription"),subjectType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),countSource:B_.default("reported")}).superRefine((e,t)=>{e.scope==="subject"&&!e.subjectType&&t.addIssue({code:"custom",path:["subjectType"],message:"subjectType is required when resource scope is subject"}),e.scope==="subscription"&&e.subjectType&&t.addIssue({code:"custom",path:["subjectType"],message:"subjectType is only valid for subject-scoped counted resources"})}),ep=s.array(F_).max(100).default([]);var K_=/^[a-z0-9][a-z0-9_-]*$/,tp=s.string().min(1).max(64).regex(K_,"backend id must be a lowercase slug ([a-z0-9][a-z0-9_-]*)"),H_=s.enum(["direct","tunnel"]),V_=s.enum(["embedded","sidecar"]);var G_=s.object({mode:H_.default("direct"),runner:V_.optional()}).strict(),Z_=s.object({required:s.boolean().default(!0)}).strict(),W_=s.object({name:s.string().min(1).max(120).optional(),slug:tp.optional(),transport:G_.default({mode:"direct"}),verification:Z_.default({required:!0}),meters:s.array(s.string().min(1).max(64)).max(100).optional(),default:s.boolean().optional()}).strict(),np=s.record(tp,W_),Tn=tp,On={unknownBackendInRoute:"UNKNOWN_BACKEND_IN_ROUTE",ambiguousDefaultBackend:"AMBIGUOUS_DEFAULT_BACKEND",routeMeterNotAllowedByBackend:"ROUTE_METER_NOT_ALLOWED_BY_BACKEND",unknownMeterInBackend:"UNKNOWN_METER_IN_BACKEND"};function rp(e){let t=Object.keys(e??{});if(t.length===0)return{defaultId:null,ambiguous:!1};if(t.length===1)return{defaultId:t[0],ambiguous:!1};let r=t.filter(i=>e[i]?.default===!0);return r.length===1?{defaultId:r[0],ambiguous:!1}:{defaultId:null,ambiguous:!0}}var J_=s.enum(["long","short","blocking"]).default("long");var Y_=s.object({method:s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),path:s.string().min(1).max(500).regex(/^\/[a-zA-Z0-9_/:.{}-]*$/,"path must be a concrete route starting with /; wildcard segments are reserved for meterRoutes selectors").refine(e=>!e.split("/").some(t=>["{__fs_rest}",":__fs_rest","[__fs_rest]"].includes(t)),"reserved greedy path parameters are only valid in non-granting meter selectors")});function O$(e){let t=e.trim();if(!t)return!1;let[r,i,n]=t.split("-");if(n!==void 0||!/^\d{3}$/.test(r??""))return!1;let o=Number(r),a=i===void 0?o:Number(i);return i!==void 0&&!/^\d{3}$/.test(i)?!1:o>=100&&o<=599&&a>=100&&a<=599&&o<=a}function Q_(e){return e.split(",").every(O$)}var us=s.union([s.string().min(1).max(100).refine(Q_,{message:"onStatusCodes must be comma-separated HTTP status codes or numeric ranges, e.g. 200-299,304"}),s.array(s.number().int().min(100).max(599)).min(1).max(100)]),X_=s.enum(["public","required"]),ev=s.enum(["network","5xx"]),tv=s.object({maxAttempts:s.number().int().min(1).max(3),retryOn:s.array(ev).min(1).max(2),backoff:s.object({base:s.number().int().min(0).max(6e4),max:s.number().int().min(0).max(6e4),jitter:s.number().min(0).max(1)}).strict().refine(e=>e.max>=e.base,{message:"retry.backoff.max must be >= retry.backoff.base"}),budgetRatio:s.number().min(0).max(1)}).strict(),nv=s.enum(["ui","api","agent","webhook","cli"]),q_=new Map(nv.options.map((e,t)=>[e,t])),A$=s.array(nv).min(1).refine(e=>e.every((t,r)=>r===0||(q_.get(t)??-1)>(q_.get(e[r-1])??-1)),{message:"surfaces must be a canonical set: unique and sorted by surface order (ui, api, agent, webhook, cli)"}),ls=s.object({authMode:X_.optional(),timeoutMs:s.number().int().min(1).max(6e5).optional(),idleTimeoutMs:s.number().int().min(1).max(6e5).optional(),retry:tv.optional(),subject:s.enum(["member","service"]).optional(),surfaces:A$.optional(),hidden:s.boolean().optional()}).strict(),ds=s.object({dimension:s.string().min(1).max(64).default("requests"),window:s.union([s.object({type:s.literal("named"),name:s.enum(["second","minute","hour","day","week","month"])}),s.object({type:s.literal("custom"),seconds:s.number().int().positive(),label:s.string().min(1).max(64).optional()})]),capacity:s.number().nonnegative(),enforcement:s.enum(["enforce","track"]).default("enforce")}).strict(),rv=s.object({match:Y_,metering:s.object({defaults:s.record(s.string().min(1).max(64),s.number().finite().nonnegative()).optional(),reports:s.array(s.string().min(1).max(64)).max(20).optional(),onStatusCodes:us.optional(),postStreamBilling:s.boolean().optional()}).optional(),unmetered:s.boolean().optional(),inheritDefaultMeters:s.boolean().optional(),action:s.string().min(1).max(160).regex(/^[a-z0-9_.:-]+$/).optional(),backend:Tn.optional(),usagePolicy:ss.optional(),policy:ls.optional(),limits:s.array(ds).min(1).max(8).optional()}).strict(),iv=s.object({rollout_key:s.string().min(1).max(120).regex(/^[a-z0-9_-]+$/,"rollout_key must be lowercase alphanumeric with hyphens/underscores").optional(),required_flags:s.array(s.string().min(1).max(120).regex(/^[a-z0-9_-]+$/)).max(10).optional()}),ip=s.object({description:s.string().max(500).optional(),mutation_class:s.enum(["runtime","contractual"]).default("contractual"),cacheProfile:J_,routes:s.array(rv).min(1).max(50),runtime:iv.default({}),actions:s.array(L_).max(100).optional(),backend:Tn.optional()}).strict();var R$="{__fs_rest}";function C$(e){if(e.startsWith(":"))return e.slice(1);if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))return e.slice(1,-1)}function op(e,t){let r=t.split("/").map((i,n)=>n===0?i:i==="**"||i===R$?"**":i==="*"||C$(i)!==void 0?"*":i).join("/");return`${e.toUpperCase()} ${r}`}function Nt(e){return e.actionId??op(e.method,e.path)}function ov(e,t){e.usagePricing!==void 0&&t.addIssue({code:"custom",path:["usagePricing"],message:"usagePricing is not supported. Define usage.meters.<key>.rating instead."})}function sv(e,t){e.filter(i=>i.free).length>1&&t.addIssue({code:"custom",path:["plans"],message:"Only one free plan is allowed per product"}),e.forEach((i,n)=>{i.free&&(P$(i,n,t),N$(i,n,t))})}function P$(e,t,r){(mv(e)??0)!==0&&r.addIssue({code:"custom",path:["plans",t,"recurring_fee_cents"],message:"Free plans must have zero price"})}function N$(e,t,r){e.limits.some(n=>!n.enforcement||n.enforcement==="enforce")||r.addIssue({code:"custom",path:["plans",t,"limits"],message:"Free plans must include at least one hard enforced limit"})}function av(e,t){let r=new Map;e.forEach((i,n)=>{if(i.free)return;let o=mv(i);if(o===void 0||o<=0)return;let a=L$(i,o),c=r.get(a);if(c){t.addIssue({code:"custom",path:["plans",n,"recurring_fee_cents"],message:`Paid plan price duplicates plan "${c}" (${a})`});return}r.set(a,i.key)})}function cv(e,t){let r=new Set((e.metering?.meters??[]).map(n=>n.key).filter(n=>typeof n=="string"&&n.length>0)),i=new Set(Object.keys(e.usage?.meters??{}));e.plans.forEach((n,o)=>{let a=n.meters;a&&a.forEach((c,u)=>{let l=c.dimension;typeof l!="string"||l.length===0||r.has(l)||i.has(l)||t.addIssue({code:"custom",path:["plans",o,"meters",u,"dimension"],message:`Plan "${n.key}" prices meter "${l}" but no metering.meters[] entry and no usage.meters[] entry declares it.`})})})}function uv(e,t){if(!e.routeCatalog)return;let r=new Set((e.metering?.meters??[]).map(n=>n.key).filter(n=>typeof n=="string"&&n.length>0)),i=!1;for(let[n,o]of Object.entries(e.routeCatalog))(o.routes??[]).forEach((c,u)=>{let l=sp(c);l.length!==0&&(i=!0,l.forEach((d,g)=>{r.has(d)||t.addIssue({code:"custom",path:["routeCatalog",n,"routes",u,"metering",g],message:`Route references unknown meter "${d}". Declare it in metering.meters[].`})}))});i&&r.size===0&&t.addIssue({code:"custom",path:["metering","meters"],message:"One or more routes declare metering keys but `metering.meters[]` is empty. Declare meters at the product level first."})}function D$(e,t){let r=new Map;for(let n of e.plans)r.set(n.key,new Set);if(!e.routeCatalog){for(let n of r.values())for(let o of t)n.add(o);return r}let i=Object.values(e.routeCatalog).flatMap(n=>n.routes??[]);for(let n of e.plans){let o=r.get(n.key),a=new Set(n.routeGrants??[]);for(let c of i){if(c.unmetered===!0||!c.path)continue;let u=Nt({actionId:c.actionId,method:c.method,path:c.path});if(a.has(u))for(let l of sp(c))o.add(l)}}return r}function sp(e){let t=new Set;for(let r of Object.keys(e.metering?.defaults??{}))t.add(r);for(let r of e.metering?.reports??[])t.add(r);return[...t]}function z$(e){if(!e||typeof e!="object")return null;let t=e;return typeof t.dimension=="string"?t.dimension:null}var U$=new Set(["credits"]);function lv(e,t){if(!e.plans||e.plans.length===0)return;let r=new Set((e.metering?.meters??[]).map(o=>o.key).filter(o=>typeof o=="string"&&o.length>0)),i=new Set(Object.keys(e.usage?.meters??{})),n=D$(e,r);e.plans.forEach((o,a)=>{let c=o.limits??[],u=n.get(o.key)??new Set;c.forEach((l,d)=>{if(l&&typeof l=="object"?l.acknowledgeUnreachable===!0:!1)return;let p=z$(l);p&&(u.has(p)||i.has(p)||U$.has(p)||t.addIssue({code:"custom",path:["plans",a,"limits",d,"meter"],message:`Plan "${o.key}" limits meter "${p}" but no directly granted route emits this meter, and the meter is not declared under usage.meters either. Either add a matching routeGrants entry for a route that emits "${p}", declare the meter under metering.meters[] or usage.meters, or set acknowledgeUnreachable: true if the limit is intentional (e.g. soft budget).`}))})})}function dv(e,t){let r=e.backend;if(!r||Object.keys(r).length===0)return;let i=new Set(Object.keys(r)),n=new Set((e.metering?.meters??[]).map(u=>u.key).filter(u=>typeof u=="string"&&u.length>0));for(let[u,l]of Object.entries(r))(l.meters??[]).forEach((d,g)=>{n.has(d)||t.addIssue({code:"custom",path:["backend",u,"meters",g],message:`${On.unknownMeterInBackend}: backend "${u}" allows meter "${d}" but no metering.meters[] entry declares it.`})});let{defaultId:o,ambiguous:a}=rp(r),c=!1;for(let u of Object.values(e.routeCatalog??{}))for(let l of u.routes??[])l.backend===void 0&&(c=!0);a&&c&&t.addIssue({code:"custom",path:["backend"],message:`${On.ambiguousDefaultBackend}: product declares ${i.size} backends but no single default \u2014 mark exactly one backend \`default: true\` or bind every route explicitly.`});for(let[u,l]of Object.entries(e.routeCatalog??{}))(l.routes??[]).forEach((d,g)=>{let p=d.backend??o;if(d.backend!==void 0&&!i.has(d.backend)){t.addIssue({code:"custom",path:["routeCatalog",u,"routes",g,"backend"],message:`${On.unknownBackendInRoute}: route binds backend "${d.backend}" which is not declared in the product \`backend\` block.`});return}if(!p)return;let S=r[p]?.meters;if(!S)return;let f=new Set(S);for(let m of sp(d))f.has(m)||t.addIssue({code:"custom",path:["routeCatalog",u,"routes",g,"metering"],message:`${On.routeMeterNotAllowedByBackend}: route meters "${m}" but backend "${p}" does not allow it (backend.meters[] = [${S.join(", ")}]).`})})}function mv(e){return e.recurring_fee_cents}function L$(e,t){return`USD:month:${t}`}var j$=s.object({subdomain:s.string().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,"Subdomain must be lowercase alphanumeric with optional hyphens")}),pv=s.enum(["exact_pre_request","estimated_then_settled","postpaid","strict_concurrency"]),B$=s.enum(n_),ap=s.object({key:s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Meter key must be lowercase alphanumeric with underscores"),display:s.string().min(1).max(100),unit:s.string().max(20).optional(),routeDefault:s.number().finite().nonnegative().optional(),enforcementType:pv.default("estimated_then_settled"),aggregation:s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]).default("COUNT"),window:s.enum(["minute","hour","day","month","billing_period"]).default("billing_period"),valueProperty:s.string().optional(),uniqueProperty:s.string().optional(),groupBy:s.array(s.string()).optional(),eventCode:s.string().optional(),tokenCategory:B$.optional(),reserveStrategy:s.enum(["reserve_max","estimate","count_actual"]).optional(),reserveCeiling:s.number().int().positive().optional(),pairsWith:s.string().min(1).max(64).optional()}),fv=s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Usage measure must be lowercase alphanumeric with underscores"),M$=s.enum(["pass_through","markup"]),F$=s.object({source:s.literal("fixed"),rates:s.record(s.string().min(1),s.record(fv,s.number().int().nonnegative()))}),K$=s.object({source:s.literal("provider_catalog"),catalog:s.string().min(1).max(100),pricePolicy:M$.default("pass_through"),markupPercent:s.number().nonnegative().max(1e4).optional(),marginMicros:s.number().int().nonnegative().optional()}),gv=s.discriminatedUnion("source",[F$,K$]),hv=s.object({selector:s.string().min(1).max(100).optional(),measures:s.array(fv).min(1).max(20),rating:gv.optional()}),bv=s.object({meters:s.record(s.string().min(1).max(64).regex(/^[a-z0-9_]+$/),hv)}),H$=s.object({defaults:s.record(s.string().min(1).max(64),s.number().finite().nonnegative()).optional(),reports:s.array(s.string().min(1).max(64)).max(20).optional(),onStatusCodes:us.optional(),postStreamBilling:s.boolean().optional()}),V$=s.object({kind:Jm,title:s.string().min(1).max(160).optional(),actorType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),subject:Qm.optional(),audit:Ym,resource:Xm.optional()}),_v=s.object({method:s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),path:s.string().min(1).max(500).regex(/^\/[a-zA-Z0-9_/:.{}-]*$/,"path must be a concrete route starting with /; wildcard segments are reserved for meterRoutes selectors").refine(e=>!e.split("/").some(t=>["{__fs_rest}",":__fs_rest","[__fs_rest]"].includes(t)),"reserved greedy path parameters are only valid in non-granting meter selectors"),actionId:s.string().min(1).max(120).optional(),actionMeta:V$.optional(),unmetered:s.boolean().optional(),metering:H$.optional(),inheritDefaultMeters:s.boolean().optional(),backend:Tn.optional(),limits:s.array(ds).min(1).max(8).optional(),policy:ls.optional()}).strict(),cp=s.object({description:s.string().max(500).optional(),routes:s.array(_v).min(1).max(50)}),vv=s.record(s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),cp),yv=s.enum(["report","pull_request"]),kv=s.enum(["safe","non_blocking","economic_risk","blocking"]),Iv=s.object({cleanup:s.object({enabled:s.boolean().default(!1),mode:yv.default("report")}).default({enabled:!1,mode:"report"}),change_approval:s.object({auto_merge_max_risk:s.enum(["none","safe","non_blocking"]).default("none"),require_human_for:s.array(kv).default(["economic_risk","blocking"])}).default({auto_merge_max_risk:"none",require_human_for:["economic_risk","blocking"]})}).default({cleanup:{enabled:!1,mode:"report"},change_approval:{auto_merge_max_risk:"none",require_human_for:["economic_risk","blocking"]}}),Ev=s.enum(["clerk","test-personas"]),Sv=s.object({context_tokens:s.object({enabled:s.boolean().default(!0)}).optional(),portal_auth:s.object({strategy:Ev}).optional()}),up=s.object({business:s.object({visibility:s.enum(["public","private"]).default("public"),rbac:s.boolean().optional()}),gateway:s.object({authHeader:s.string().min(1).max(100).default("x-api-key"),upstreamAuth:s.object({type:s.enum(["none","static_bearer"]),token:s.string().optional()}).default({type:"none"})}),metering:s.object({meters:s.array(ap).max(10).default([]),billOn4xx:s.boolean().default(!1)}).default({meters:[],billOn4xx:!1}),backend:np.optional(),usage:bv.optional(),usagePricing:s.never({error:"usagePricing is not supported. Define usage.meters.<key>.rating instead."}).optional(),routeCatalog:vv.optional(),resources:ep,policies:Iv,customer_context:Sv.optional(),frontend:s.never({error:"frontend is not authorable in Business-as-Code. Define pages and navigation in the frontend application; use route policy surfaces for API/UI callability."}).optional(),billing:s.object({applyLimitUpgradesInstantly:s.boolean().optional(),subscriberChangePolicy:wn.default({default:"period_end",when:{price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"},allowImmediatePriceIncrease:!1,allowImmediateEntitlementReduction:!1})}).default({subscriberChangePolicy:{default:"period_end",when:{price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"},allowImmediatePriceIncrease:!1,allowImmediateEntitlementReduction:!1}}),plans:s.array(cs).max(4).default([]),lifecycle:s.object({breaking_changes:s.object({require_deprecation_window_days:s.number().int().nonnegative().default(0),require_successor_route:s.boolean().default(!1)}).default({require_deprecation_window_days:0,require_successor_route:!1})}).default({breaking_changes:{require_deprecation_window_days:0,require_successor_route:!1}}),webhooks:Wm.optional(),environments:qm.optional(),ephemeral:s.object({defaultPlan:s.string().min(1).optional()}).optional()}).superRefine((e,t)=>{ov(e,t),sv(e.plans,t),av(e.plans,t),cv(e,t),uv(e,t),lv(e,t),dv(e,t)});var wv=1,xv="business",G$=`${xv}/business.ts`,Z$=s.object({irVersion:s.literal(wv),sdkVersion:s.string().min(1).max(64),business:up,routes:s.array(ip).max(200).default([]),frontendIntegrations:Km.default([])}).strict().superRefine((e,t)=>{let r=new Map;for(let[i,n]of e.routes.entries())for(let[o,a]of n.routes.entries()){let c=Nt({actionId:a.action,method:a.match.method,path:a.match.path}),u=op(a.match.method,a.match.path),l=a.action?n.actions?.find(p=>p.id===a.action):void 0,d=$v({action:l,layer:{backend:n.backend,cacheProfile:n.cacheProfile,description:n.description,mutation_class:n.mutation_class,runtime:n.runtime},route:{backend:a.backend??n.backend,inheritDefaultMeters:a.inheritDefaultMeters,limits:a.limits,metering:a.metering,policy:a.policy,unmetered:a.unmetered,usagePolicy:a.usagePolicy}}),g=r.get(c);if(g&&g.endpoint!==u){t.addIssue({code:"custom",path:["routes",i,"routes",o,"action"],message:`route id collision for "${c}": maps to both ${g.endpoint} and ${u}`});continue}if(g&&g.behavior!==d){t.addIssue({code:"custom",path:["routes",i,"routes",o],message:`conflicting route definition for "${c}"`});continue}r.set(c,{endpoint:u,behavior:d})}for(let[i,n]of e.business.plans.entries()){for(let[o,a]of(n.routeGrants??[]).entries())r.has(a)||t.addIssue({code:"custom",path:["business","plans",i,"routeGrants",o],message:`unknown route grant "${a}" for plan "${n.key}"`});for(let[o,a]of(n.frontendIntegrationGrants??[]).entries())e.frontendIntegrations.some(c=>c.id===a)||t.addIssue({code:"custom",path:["business","plans",i,"frontendIntegrationGrants",o],message:`unknown frontend integration grant "${a}" for plan "${n.key}"`})}});function $v(e){return lp(JSON.parse(JSON.stringify(e)))}function lp(e){return Array.isArray(e)?`[${e.map(lp).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[r])=>t<r?-1:t>r?1:0).map(([t,r])=>`${JSON.stringify(t)}:${lp(r)}`).join(",")}}`:JSON.stringify(e)}var GL=s.object({subscriberChangePolicy:wn.optional()}),ZL=s.object({code:s.string(),kind:s.enum(["percent_off","amount_off","free_months"]),amount:s.number().optional(),durationMonths:s.number(),applicablePlanIds:s.array(s.string()).optional(),maxRedemptions:s.number().optional(),activeFrom:s.string().optional(),activeUntil:s.string().optional(),status:s.enum(["ACTIVE","ARCHIVED"]).optional()}),WL=s.object({id:s.string(),actorUserId:s.string().optional(),action:s.string(),decision:s.string().optional(),timestamp:s.string(),details:s.unknown().optional()}),qL=s.object({name:s.string(),branch:s.string().optional(),isProduction:s.boolean().optional()}),JL=s.object({id:s.string(),name:s.string(),apiKeyId:s.string().optional()});var Tv=s.object({id:s.string(),billingCycleId:s.string(),effectiveStart:s.string(),effectiveEnd:s.string(),compiledPlanId:s.string()}),Ov=s.object({currentPeriod:Tv,priorPeriod:Tv.optional()});var W$=s.object({subjectKey:s.string(),subscriptionId:s.string(),subscriberId:s.string(),businessId:s.string(),organizationId:s.string(),compiledPlanId:s.string(),activeEntitlementHash:s.string().optional(),generation:s.number(),enforcementMode:s.enum(["STRICT","GRACE","TRACK_ONLY"]),dedicatedShard:s.enum(["ACTIVE","DRAINING"]).optional(),memberAuthz:s.record(s.string(),s.object({permissions:s.array(s.string()),roles:s.array(s.string())})).optional(),memberAuthzComputedAt:s.number().optional(),postStreamLockouts:s.array(s.object({code:s.literal("post_stream_overspend"),reason:s.literal("usage_exhausted"),constraintKey:s.string().min(1),cycleId:s.string().min(1),dimension:s.string().min(1),currentCapacity:s.number().nonnegative(),observedUsage:s.number().nonnegative(),lockedAt:s.string().min(1),expiresAt:s.string().min(1)})).optional(),subscriptionStatus:s.string(),subscriberStatus:s.string(),scopes:s.array(s.string()),periods:Ov,expiresAt:s.number().optional(),trialEndsAt:s.string().optional()}),q$=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),state:W$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("revoked"),negativeCacheTtlSeconds:s.number().default(300),reason:s.string().optional()}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),aj=s.object({environmentId:s.string().nullable(),subjectKeys:s.array(s.string()).min(1).max(500)}),cj=s.object({results:s.array(s.object({subjectKey:s.string(),result:q$}))}),J$=s.object({keyId:s.string(),orgId:s.string(),businessId:s.string(),compiledPlanId:s.string(),entitlementHash:s.string().optional(),subscriptionId:s.string(),subscriberId:s.string(),apiKeyId:s.string().nullable(),subjectKey:s.string(),entitlementVersion:s.number().int(),status:s.enum(["active","revoked"]),subscriberStatus:s.enum(["ONBOARDING","ACTIVE","SUSPENDED"]),subscriptionStatus:s.string(),environment:s.enum(["production","sandbox"]).optional(),environmentId:s.string().optional(),scopes:s.array(s.string()).default([]),permissions:s.array(s.string()).optional(),roles:s.array(s.string()).optional(),entitlement:s.unknown().optional(),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().optional(),serviceAccountId:s.string().optional(),keyId:s.string()}),currentPeriodId:s.string().optional(),currentPeriodStartMs:s.number().int().nonnegative().optional(),expiresAt:s.number().nullable().optional()}),uj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),record:J$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("revoked"),negativeCacheTtlSeconds:s.number().default(300),reason:s.string().optional()}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),lj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),entitlement:s.unknown(),expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),Y$=s.object({id:s.string().min(1),slug:s.string().optional(),transportMode:s.enum(["direct","tunnel"]),verificationRequired:s.boolean().optional(),originUrl:s.string().optional(),originHostname:s.string().optional(),accessCredentialRef:s.string().optional(),policyVersion:s.string().optional()}),Q$=s.object({id:s.string(),origin:s.string(),sandboxOrigin:s.string().nullable().optional(),authHeader:s.string().optional(),pricing:s.record(s.string(),s.number()).optional(),metering:s.object({billOn4xx:s.boolean().optional()}).optional(),tenantLimits:s.array(s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()})).optional(),userLimits:s.array(s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()})).optional(),environmentId:s.string().optional(),contextTokenSecret:s.string().nullable().optional(),timeoutMs:s.number().positive().optional(),idleTimeoutMs:s.number().positive().optional(),backends:s.array(Y$).optional(),defaultBackendId:s.string().optional(),verificationRequired:s.boolean().optional(),allowedOrigins:s.array(s.string()).optional(),hasPublicRoutes:s.boolean().optional(),publicRoutesCompiledPlanId:s.string().min(1).optional()}),dj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),tenant:Q$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]);var Av=["consumer_api_key","consumer_session_token","test_persona_session_token","builder_master_key","builder_session_token","maker_jwt","cli_session_jwt","service_jwt","internal_service","context_token"],Rv=s.enum(Av);var X$=s.object({fromIssuer:s.string().min(1),fromTokenId:s.string().min(1),intent:s.string().min(1)}),Cv=s.object({issuer:s.string().min(1),issuedAt:s.number().int().nonnegative(),expiresAt:s.number().int().nonnegative().optional(),tokenId:s.string().min(1).optional(),delegationChain:s.array(X$)});var eT=["template","embedded","provisioned","agent"],tT=s.enum(eT),nT=["builder_user","builder_org","maker","consumer_subject","internal_service","service_jwt","agent_runtime"],rT=s.enum(nT),Pv=s.object({kind:rT,id:s.string().min(1),label:s.string().optional()}),iT=["subscription","organization","platform"],oT=s.enum(iT),sT=s.object({kind:oT,id:s.string().min(1)}),aT=s.object({type:Rv,id:s.string().min(1),hint:s.string().max(8).optional()}),cT=s.object({compiledPlanId:s.string().min(1),fromCache:s.boolean().optional()}),kj=s.object({requestId:s.string().min(1),surface:tT,builderOrgId:s.string().min(1),businessId:s.string().min(1).optional(),runtimeId:s.string().min(1).optional(),template:s.string().optional(),caller:Pv,actor:Pv,billingSubject:sT,credential:aT,operation:s.string().min(1),scopes:s.array(s.string()),entitlement:cT.optional(),trust:Cv});var uT=["BusinessApplyWorkflow","RollbackWorkflow","StripeSyncWorkflow","WebhookDispatchWorkflow","SubscriptionTransitionWorkflow","CompiledPlanLifecycleWorkflow","ShardReshardWorkflow","MaintenanceJobWorkflow"],xj=s.enum(uT),lT=["transient","permanent","rollback-required","human-intervention"],$j=s.enum(lT);var dT=["SAFE_AUTOMATIC","REQUIRES_APPROVAL","IRREVERSIBLE","BILLING_IMPACTING","EDGE_BREAKING"],Tj=s.enum(dT);var Nj=s.object({workflowExecutionId:s.string().min(1),eventType:s.string().min(1),phase:s.string().min(1).optional(),stepId:s.string().min(1).optional(),cohortKey:s.string().min(1).optional(),payload:s.record(s.string(),s.unknown()),occurredAt:s.string().min(1),correlationId:s.string().min(1).optional()}).transform(e=>({...e,workflowExecutionId:e.workflowExecutionId,stepId:e.stepId===void 0?void 0:e.stepId}));var mT=["GATEWAY","HOSTED_UI_PAGE","HOSTED_UI_PROXY"],pT=["platform_requests"],fT=s.object({requestId:s.string().optional(),businessId:s.string().optional(),route:s.string().optional(),usageEventId:s.string().optional()}).strict(),gT=s.object({organizationId:s.string().min(1),source:s.enum(mT),dimension:s.enum(pT),quantity:s.number().int().positive(),idempotencyKey:s.string().min(1).max(512),occurredAt:s.string().datetime(),metadata:fT.optional()}).strict(),Jj=s.object({entries:s.array(gT).min(1).max(500)});var hT=["owner","admin","member"];function bT(e){return e==="maker_token"}var M=hT,C=["owner","admin"],Ve=["owner"],O=["business"],ee=["organization"],ms=["self"],dp=["business","organization"],_T=["business","self"],vT=["organization","self"];function An(e){return e.replaceAll("_"," ")}function I(e,t){let[r,i]=e.split(":"),n=r,o=`${An(r)}: ${An(i)}`,a=t.effect==="read"?`View ${An(r)} ${An(i)} data through authorized platform surfaces.`:`Perform ${An(r)} ${An(i)} operations through authorized platform surfaces.`;return{...t,domain:n,title:o,description:a}}var Dt={"agent:configure":I("agent:configure",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"auth_provider_connection:create":I("auth_provider_connection:create",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"auth_provider_connection:delete":I("auth_provider_connection:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"auth_provider_connection:read":I("auth_provider_connection:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"browser_only"}),"auth_provider_connection:update":I("auth_provider_connection:update",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"agent:read":I("agent:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"analytics:read":I("analytics:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"apply_timeline:read":I("apply_timeline:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"audit_log:export":I("audit_log:export",{effect:"read",allowedTargetKinds:dp,defaultRoles:C,delegation:"maker_token"}),"audit_log:read":I("audit_log:read",{effect:"read",allowedTargetKinds:dp,defaultRoles:M,delegation:"maker_token"}),"auth_context:read":I("auth_context:read",{effect:"read",allowedTargetKinds:ms,defaultRoles:M,delegation:"maker_token"}),"auth_context:issue":I("auth_context:issue",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:create":I("automation_rule:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:delete":I("automation_rule:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:read":I("automation_rule:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"automation_rule:update":I("automation_rule:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:bind":I("backend:bind",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:create":I("backend:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:delete":I("backend:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:read":I("backend:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"brand:update":I("brand:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"bulletin:ack":I("bulletin:ack",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"bulletin:read":I("bulletin:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"bulletin:resolve":I("bulletin:resolve",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:create":I("business:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"maker_token"}),"business:compile":I("business:compile",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:delete":I("business:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:docs_update":I("business:docs_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:origin_update":I("business:origin_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:preview_env_update":I("business:preview_env_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:publish":I("business:publish",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:read":I("business:read",{effect:"read",allowedTargetKinds:dp,defaultRoles:M,delegation:"maker_token"}),"business:rollback":I("business:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_dependents:read":I("business_dependents:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:create":I("business_variable:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:delete":I("business_variable:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:operation_read":I("business_variable:operation_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:read":I("business_variable:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:revoke":I("business_variable:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:rotate":I("business_variable:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"change_set:propose":I("change_set:propose",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"change_set:read":I("change_set:read",{effect:"read",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:block":I("consumer:block",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:migrate_latest":I("consumer:migrate_latest",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:read":I("consumer:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"consumer:remove":I("consumer:remove",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:roles_assign":I("consumer:roles_assign",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"denial:read":I("denial:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"environment:create":I("environment:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"environment:delete":I("environment:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"environment:read":I("environment:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"frontend:deploy":I("frontend:deploy",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"frontend:read":I("frontend:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"frontend:rollback":I("frontend:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"git_connection:create":I("git_connection:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:delete":I("git_connection:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:read":I("git_connection:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:update":I("git_connection:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"knowledge:read":I("knowledge:read",{effect:"read",allowedTargetKinds:_T,defaultRoles:M,delegation:"maker_token"}),"maker_token:create":I("maker_token:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:read":I("maker_token:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:revoke":I("maker_token:revoke",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:rotate":I("maker_token:rotate",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"notification:preferences_read":I("notification:preferences_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"user_session_only"}),"notification:preferences_update":I("notification:preferences_update",{effect:"write",allowedTargetKinds:O,defaultRoles:M,delegation:"user_session_only"}),"organization:create":I("organization:create",{effect:"write",allowedTargetKinds:ms,defaultRoles:C,delegation:"user_session_only"}),"organization:delete":I("organization:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"user_session_only"}),"organization:ownership_transfer":I("organization:ownership_transfer",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"organization:read":I("organization:read",{effect:"read",allowedTargetKinds:vT,defaultRoles:M,delegation:"maker_token"}),"organization:manage_billing":I("organization:manage_billing",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"organization_role:read":I("organization_role:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"user_session_only"}),"organization_role:create":I("organization_role:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_role:update":I("organization_role:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_role:delete":I("organization_role:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_bulletin:read":I("organization_bulletin:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"maker_token"}),"organization_invitation:accept":I("organization_invitation:accept",{effect:"write",allowedTargetKinds:ms,defaultRoles:M,delegation:"user_session_only"}),"organization_invitation:create":I("organization_invitation:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_invitation:list":I("organization_invitation:list",{effect:"read",allowedTargetKinds:ms,defaultRoles:M,delegation:"user_session_only"}),"organization_invitation:revoke":I("organization_invitation:revoke",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_member:list":I("organization_member:list",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"user_session_only"}),"organization_member:remove":I("organization_member:remove",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_member:update":I("organization_member:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"persona:issue":I("persona:issue",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"persona:read":I("persona:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"persona:revoke":I("persona:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"persona:rotate":I("persona:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"plan:read":I("plan:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"plan:release_preview":I("plan:release_preview",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"plan_migration:create":I("plan_migration:create",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"maker_token"}),"promo_code:archive":I("promo_code:archive",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:create":I("promo_code:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:reactivate":I("promo_code:reactivate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:read":I("promo_code:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"promo_code:update":I("promo_code:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"rbac:read":I("rbac:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"resource_count:report":I("resource_count:report",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:mint":I("runtime_token:mint",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:read":I("runtime_token:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"runtime_token:revoke":I("runtime_token:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:rotate":I("runtime_token:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"stripe_connection:create":I("stripe_connection:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"stripe_connection:delete":I("stripe_connection:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"stripe_connection:read":I("stripe_connection:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"tax_settings:read":I("tax_settings:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"tax_settings:update":I("tax_settings:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"usage:read":I("usage:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:create":I("webhook:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:delete":I("webhook:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:delivery_read":I("webhook:delivery_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:read":I("webhook:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:test":I("webhook:test",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:update":I("webhook:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"workflow:replay":I("workflow:replay",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"workflow:rollback":I("workflow:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"})},Nv=Object.keys(Dt).sort(),Xj=Nv.filter(e=>bT(Dt[e].delegation));function yT(){for(let e of Nv){if(!/^[a-z_]+:[a-z_]+$/.test(e)||e.includes("*"))throw new Error(`Platform permission must be exact: ${e}`);let t=Dt[e];if(t.allowedTargetKinds.length===0)throw new Error(`Platform permission has no target kind: ${e}`);if(t.defaultRoles.length===0)throw new Error(`Platform permission has no default role: ${e}`)}}yT();var ps={contract:{label:"Managed as code",summary:"Declarative business state, canonical in the GitHub repo. Author the business program and push.",canonicalHome:"repo",mcpMayWrite:!1},operate:{label:"Runtime operation",summary:"Imperative action on the running platform; never in the repo. Tokens, usage, readiness, builds, publish triggers, runtime knobs, brand edits.",canonicalHome:"api",mcpMayWrite:!0}};function Dv(e){return ps[e].mcpMayWrite}function zv(e){return ps[e].canonicalHome}var mp={repo_authored:{label:"Managed as code",agentAction:"Edit the business repo's business/ folder and push. Do not look for a command.",isPlatformGap:!1},git_triggered:{label:"Git-triggered",agentAction:"Push the branch or cut the GitHub Release; then poll the matching status command.",isPlatformGap:!1},served_by_other_command:{label:"Covered by another command",agentAction:"Run the command named in `unavailableDetail`.",isPlatformGap:!1},subscriber_portal:{label:"Subscriber portal surface",agentAction:"Not the builder's to run \u2014 it belongs to the subscriber org's own portal session. Use the builder-plane equivalent named in `unavailableDetail`, if any.",isPlatformGap:!1},human_decision:{label:"Human decision",agentAction:"Hand off to a human in the subscriber portal. An agent may propose; it may never decide.",isPlatformGap:!1},runtime_surface:{label:"Runtime surface",agentAction:"Performed by the running backend through @farthershore/backend at request time; there is nothing for an operator to call.",isPlatformGap:!1},credential_administration:{label:"Credential administration",agentAction:"Use the signed-in user credential-administration surface. Do not expose, persist, or rotate secrets through agent discovery.",isPlatformGap:!1},not_implemented:{label:"Not implemented",agentAction:"This IS a platform gap. Report it, and route around it with the fallback in `unavailableDetail` if one is given.",isPlatformGap:!0}},zt="webhooks",Br="promo-codes",Rn="variables",Re="change-sets",ve=e=>({reason:"repo_authored",detail:`Declare ${e} in the business repo's business/ folder and push \u2014 the platform applies it.`}),kT=[{key:"plan.create",class:"contract",domain:"plans",unavailable:ve("the plan with `fs.plan()`")},{key:"plan.update",class:"contract",domain:"plans",unavailable:ve("the plan's new shape with `fs.plan()`")},{key:"plan.delete",class:"contract",domain:"plans",unavailable:ve("the removal (delete the `fs.plan()` call)")},{key:"plan.read",class:"contract",domain:"plans"},{key:"plan.release_preview",class:"contract",domain:"plans",sideEffect:"write",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore plan diff <business>`; it builds the repo-local manifest and calls this release-preview endpoint."}},{key:"plan.variant.create",class:"contract",domain:"plans",unavailable:ve("the plan variant with `fs.plan()`")},{key:"plan.promote",class:"contract",domain:"plans",unavailable:ve("the promoted plan version")},{key:"plan.rollback",class:"contract",domain:"plans",unavailable:ve("the prior plan shape (revert the commit)")},{key:"route.define",class:"contract",domain:"routes",unavailable:ve("the route with `fs.route()`")},{key:"gateway.config",class:"contract",domain:"gateway",unavailable:ve("the gateway block on `fs.business()`")},{key:"auth_strategy.update",class:"contract",domain:"gateway",unavailable:ve("the auth strategy on `fs.business()`")},{key:"rate_limit.update",class:"contract",domain:"gateway",unavailable:ve("the limits on the plan or route")},{key:"meter.define",class:"contract",domain:"metering",unavailable:ve("the meter with `fs.meter()`")},{key:"backend.define",class:"contract",domain:"backends",unavailable:ve("the backend with `fs.backend()`")},{key:"webhook.define",class:"contract",domain:zt,unavailable:ve("the webhook block on `fs.business()`")},{key:"business.contract_field.update",class:"contract",domain:"businesses",unavailable:ve("the field (name / meters / subscriberChangePolicy / rbac) on `fs.business()`")},{key:"rbac.enable",class:"contract",domain:"products",unavailable:ve("the `rbac` flag on `fs.business()`")},{key:"rbac.read",class:"contract",domain:"products"},{key:"business.list",class:"operate",domain:"businesses"},{key:"business.status",class:"operate",domain:"businesses"},{key:"change_set.portal_list",class:"operate",domain:Re,sideEffect:"read",unavailable:{reason:"subscriber_portal",detail:"GET /portal/businesses/:id/me/change-sets \u2014 the subscriber org's own view of its ChangeSets, reached in the portal. The builder-plane equivalent IS a command: `farthershore proposal list` (change_set.proposal_list)."}},{key:"change_set.portal_read",class:"operate",domain:Re,sideEffect:"read",unavailable:{reason:"subscriber_portal",detail:"GET /portal/businesses/:id/me/change-sets/:changeSetId \u2014 the subscriber's own detail view. The builder-plane equivalent IS a command: `farthershore proposal get` (change_set.proposal_read)."}},{key:"apply_timeline.list",class:"operate",domain:Re},{key:"apply_timeline.read",class:"operate",domain:Re},{key:"change_set.approve",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Sign-off is human/portal-session-only (ADR-0013). Propose with `farthershore proposal create`, then ask a human in the subscriber org to approve it in the portal."}},{key:"change_set.apply",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Execution of a governed ChangeSet is human/portal-session-only (ADR-0013). Poll `farthershore proposal get` for the status a human's apply produces."}},{key:"change_set.rollback",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Reverting an applied ChangeSet is human/portal-session-only (ADR-0013). Ask a human in the subscriber org to roll it back in the portal."}},{key:"change_set.cancel",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Cancelling a governed ChangeSet is human/portal-session-only (ADR-0013), reserved for the proposer or an approver in the portal."}},{key:"change_set.propose",class:"operate",domain:Re},{key:"change_set.preview",class:"operate",domain:Re},{key:"change_set.proposal_list",class:"operate",domain:Re},{key:"change_set.proposal_read",class:"operate",domain:Re},{key:"business.delete",class:"operate",domain:"businesses"},{key:"business.config_attempts.read",class:"operate",domain:"businesses"},{key:"build.trigger",class:"operate",domain:"lifecycle",unavailable:{reason:"git_triggered",detail:"The sanctioned build triggers are git events: production on a GitHub Release, a preview environment on a push to its env branch. A builder-API trigger route exists (POST /businesses/:id/frontend/deploy) but the CLI deliberately does not expose it \u2014 a third manual trigger lets what is serving diverge from git. Push or release, then `farthershore frontend status --wait`."}},{key:"frontend.deploy",class:"operate",domain:"frontend",unavailable:{reason:"git_triggered",detail:"The CLI DELIBERATELY exposes no deploy verb: production publishes on a GitHub Release, a preview environment on a push to its env branch, and a third manual trigger is another way for what is serving to diverge from git. (The builder API does mount POST /businesses/:id/frontend/deploy; the CLI intentionally does not wrap it.) Push or release, then `farthershore frontend status --wait`."}},{key:"frontend.status",class:"operate",domain:"frontend"},{key:"frontend.rollback",class:"operate",domain:"frontend"},{key:"auth_provider_connection.read",class:"operate",domain:"identity"},{key:"auth_provider_connection.create",class:"operate",domain:"identity"},{key:"auth_provider_connection.update",class:"operate",domain:"identity"},{key:"auth_provider_connection.delete",class:"operate",domain:"identity"},{key:"webhook.read",class:"operate",domain:zt},{key:"webhook.create",class:"operate",domain:zt},{key:"webhook.update",class:"operate",domain:zt},{key:"webhook.delete",class:"operate",domain:zt},{key:"webhook.test",class:"operate",domain:zt},{key:"agents.list",class:"operate",domain:"agents"},{key:"agents.status",class:"operate",domain:"agents"},{key:"agents.runs.show",class:"operate",domain:"agents"},{key:"agents.enable",class:"operate",domain:"agents"},{key:"agents.disable",class:"operate",domain:"agents"},{key:"bulletin.list",class:"operate",domain:"agents"},{key:"bulletin.read",class:"operate",domain:"agents"},{key:"bulletin.ack",class:"operate",domain:"agents"},{key:"bulletin.resolve",class:"operate",domain:"agents"},{key:"webhook.delivery.read",class:"operate",domain:zt},{key:"promo_code.read",class:"operate",domain:Br},{key:"promo_code.create",class:"operate",domain:Br},{key:"promo_code.update",class:"operate",domain:Br},{key:"promo_code.archive",class:"operate",domain:Br},{key:"promo_code.reactivate",class:"operate",domain:Br},{key:"consumer.read",class:"operate",domain:"consumers"},{key:"consumer.block",class:"operate",domain:"consumers"},{key:"consumer.migrate_latest",class:"operate",domain:"consumers"},{key:"consumer.remove",class:"operate",domain:"consumers"},{key:"consumer.rbac.settings",class:"operate",domain:"consumers",unavailable:{reason:"subscriber_portal",detail:"GET/PUT /portal/businesses/:id/me/rbac/settings \u2014 the subscriber org toggles RBAC and picks its default role in its own portal. The builder enables the RBAC feature by declaring `rbac` on `fs.business()` and pushing (rbac.enable, repo-authored); `farthershore business rbac` only VERIFIES the accepted state (rbac.read)."}},{key:"consumer.rbac.roles",class:"operate",domain:"consumers",unavailable:{reason:"subscriber_portal",detail:"/portal/businesses/:id/me/rbac/roles \u2014 the subscriber org authors its own roles in its portal. A builder/agent may only PROPOSE a role change, via `farthershore proposal create`."}},{key:"consumer.roles.assign",class:"operate",domain:"consumers"},{key:"business_variable.read",class:"operate",domain:Rn},{key:"business_variable.create",class:"operate",domain:Rn},{key:"business_variable.rotate",class:"operate",domain:Rn},{key:"business_variable.revoke",class:"operate",domain:Rn},{key:"business_variable.delete",class:"operate",domain:Rn},{key:"business_variable.operation.read",class:"operate",domain:Rn},{key:"runtime_token.mint",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.rotate",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.revoke",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.read",class:"operate",domain:"runtime-tokens"},{key:"metering_token.mint",class:"operate",domain:"metering",unavailable:{reason:"runtime_surface",detail:"The metering credential is DERIVED from the runtime token at backend bootstrap (/runtime/*), not minted separately. Issue the runtime token with `farthershore backend tokens create --operations metering`."}},{key:"usage.report",class:"operate",domain:"usage",unavailable:{reason:"runtime_surface",detail:"Usage is reported by the running backend at request time \u2014 `usage.report(meter, n)` from @farthershore/backend. Read what it recorded with `farthershore usage summary`."}},{key:"usage.read",class:"operate",domain:"usage"},{key:"backend.create",class:"operate",domain:"backends"},{key:"backend.bind",class:"operate",domain:"backends"},{key:"backend.delete",class:"operate",domain:"backends"},{key:"backend.read",class:"operate",domain:"backends"},{key:"backend.status.read",class:"operate",domain:"backends",unavailable:{reason:"served_by_other_command",detail:"`farthershore backend list` (backend.read) already returns each backend's derived status \u2014 there is no separate status command."}},{key:"persona.bootstrap",class:"operate",domain:"personas"},{key:"persona.read",class:"operate",domain:"personas"},{key:"persona.rotate",class:"operate",domain:"personas"},{key:"persona.revoke",class:"operate",domain:"personas"},{key:"analytics.timeseries",class:"operate",domain:"analytics"},{key:"analytics.latency",class:"operate",domain:"analytics"},{key:"analytics.top",class:"operate",domain:"analytics"},{key:"analytics.log",class:"operate",domain:"analytics"},{key:"organization.list",class:"operate",domain:"organizations"},{key:"organization.create",class:"operate",domain:"organizations"},{key:"organization.role.list",class:"operate",domain:"organizations"},{key:"organization.role.show",class:"operate",domain:"organizations"},{key:"organization.role.create",class:"operate",domain:"organizations"},{key:"organization.role.update",class:"operate",domain:"organizations"},{key:"organization.role.delete",class:"operate",domain:"organizations"},{key:"organization.member.list",class:"operate",domain:"organizations"},{key:"organization.invitation.create",class:"operate",domain:"organizations"},{key:"organization.invitation.list",class:"operate",domain:"organizations"},{key:"organization.invitation.revoke",class:"operate",domain:"organizations"},{key:"organization.invitation.accept",class:"operate",domain:"organizations"},{key:"organization.member.update",class:"operate",domain:"organizations"},{key:"organization.member.remove",class:"operate",domain:"organizations"},{key:"organization.ownership.transfer",class:"operate",domain:"organizations"},{key:"organization.delete",class:"operate",domain:"organizations"},{key:"organization.overview.read",class:"operate",domain:"organizations"},{key:"organization.bulletin.read",class:"operate",domain:"organizations"},{key:"organization.billing.manage",class:"operate",domain:"billing",unavailable:{reason:"credential_administration",detail:"Use the signed-in browser billing flow. Platform subscription management is interactive and browser-only."}},{key:"audit_log.read",class:"operate",domain:"audit-logs"},{key:"audit_log.business.read",class:"operate",domain:"audit-logs"},{key:"audit_log.business.export",class:"operate",domain:"audit-logs"},{key:"audit_log.export",class:"operate",domain:"audit-logs"},{key:"notification.preferences.read",class:"operate",domain:"notifications"},{key:"notification.preferences.update",class:"operate",domain:"notifications"},{key:"brand.update",class:"operate",domain:"branding",unavailable:{reason:"served_by_other_command",detail:"`farthershore business update --display-name/--description/--icon-url/--logo-url` (registered under business.origin.update; MCP tool `fs_brand_update`) writes the brand fields."}},{key:"business.origin.update",class:"operate",domain:"businesses"},{key:"business.docs.enable",class:"operate",domain:"businesses"},{key:"business.docs.disable",class:"operate",domain:"businesses"},{key:"business.preview_env.set",class:"operate",domain:"businesses"},{key:"plan.migration_batch.create",class:"operate",domain:"plans"},{key:"business.create",class:"operate",domain:"businesses"},{key:"business.compile",class:"operate",domain:"businesses",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore validate --business <business>`; it builds deterministically and calls this manifest-compile endpoint for the server verdict."}},{key:"business.read",class:"operate",domain:"businesses"},{key:"business.routes.read",class:"contract",domain:"businesses"},{key:"business.contract.read",class:"contract",domain:"businesses"},{key:"business.publish",class:"operate",domain:"lifecycle"},{key:"business.rollback",class:"operate",domain:"lifecycle"},{key:"manifest.apply",class:"contract",domain:"lifecycle",unavailable:{reason:"git_triggered",detail:"The repo pipeline applies the compiled IR on a push/release through the same neutral apply service. `farthershore validate` runs the identical verdict locally WITHOUT applying; `farthershore apply-timeline list` shows what the platform applied."}},{key:"environment.create",class:"operate",domain:"environments"},{key:"environment.delete",class:"operate",domain:"environments"},{key:"environment.read",class:"operate",domain:"environments"},{key:"auth.context.read",class:"operate",domain:"authentication",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore auth whoami`."}},{key:"auth.context.issue",class:"operate",domain:"authentication"},...["create","read","rotate","revoke"].map(e=>({key:`maker_token.${e}`,class:"operate",domain:"authentication",unavailable:{reason:"credential_administration",detail:"Use the signed-in dashboard token administration page. MakerToken secrets are never exposed through agent discovery."}})),...["create","read","update","delete"].map(e=>({key:`git_connection.${e}`,class:"operate",domain:"authentication"})),...["create","read","delete"].map(e=>({key:`stripe_connection.${e}`,class:"operate",domain:"billing"})),{key:"tax_settings.read",class:"operate",domain:"billing"},{key:"tax_settings.update",class:"operate",domain:"billing"},{key:"resource_count.report",class:"operate",domain:"resources"},{key:"denial.read",class:"operate",domain:"observability"},{key:"business_dependents.read",class:"operate",domain:"businesses"},{key:"workflow.replay",class:"operate",domain:"workflows"},{key:"workflow.rollback",class:"operate",domain:"workflows"},{key:"automation_rule.read",class:"operate",domain:"automation"},{key:"automation_rule.create",class:"operate",domain:"automation"},{key:"automation_rule.update",class:"operate",domain:"automation"},{key:"automation_rule.delete",class:"operate",domain:"automation"},{key:"knowledge.guide.read",class:"operate",domain:"knowledge"},{key:"knowledge.business.read",class:"operate",domain:"knowledge"}],fs={"auth.context.issue":{permission:"auth_context:issue",targetKind:"business"},"auth.context.read":{permission:"auth_context:read",targetKind:"self"},"git_connection.create":{permission:"git_connection:create",targetKind:"organization"},"git_connection.delete":{permission:"git_connection:delete",targetKind:"organization"},"git_connection.read":{permission:"git_connection:read",targetKind:"organization"},"git_connection.update":{permission:"git_connection:update",targetKind:"organization"},"stripe_connection.create":{permission:"stripe_connection:create",targetKind:"organization"},"stripe_connection.delete":{permission:"stripe_connection:delete",targetKind:"organization"},"stripe_connection.read":{permission:"stripe_connection:read",targetKind:"organization"},"agents.disable":{permission:"agent:configure",targetKind:"business"},"agents.enable":{permission:"agent:configure",targetKind:"business"},"agents.list":{permission:"agent:read",targetKind:"business"},"agents.runs.show":{permission:"agent:read",targetKind:"business"},"agents.status":{permission:"agent:read",targetKind:"business"},"analytics.latency":{permission:"analytics:read",targetKind:"business"},"analytics.log":{permission:"analytics:read",targetKind:"business"},"analytics.timeseries":{permission:"analytics:read",targetKind:"business"},"analytics.top":{permission:"analytics:read",targetKind:"business"},"apply_timeline.list":{permission:"apply_timeline:read",targetKind:"business"},"apply_timeline.read":{permission:"apply_timeline:read",targetKind:"business"},"audit_log.export":{permission:"audit_log:export",targetKind:"organization"},"audit_log.read":{permission:"audit_log:read",targetKind:"organization"},"audit_log.business.read":{permission:"audit_log:read",targetKind:"business"},"audit_log.business.export":{permission:"audit_log:export",targetKind:"business"},"backend.bind":{permission:"backend:bind",targetKind:"business"},"backend.create":{permission:"backend:create",targetKind:"business"},"backend.delete":{permission:"backend:delete",targetKind:"business"},"backend.read":{permission:"backend:read",targetKind:"business"},"automation_rule.create":{permission:"automation_rule:create",targetKind:"business"},"automation_rule.delete":{permission:"automation_rule:delete",targetKind:"business"},"automation_rule.read":{permission:"automation_rule:read",targetKind:"business"},"automation_rule.update":{permission:"automation_rule:update",targetKind:"business"},"bulletin.ack":{permission:"bulletin:ack",targetKind:"business"},"bulletin.list":{permission:"bulletin:read",targetKind:"business"},"bulletin.read":{permission:"bulletin:read",targetKind:"business"},"bulletin.resolve":{permission:"bulletin:resolve",targetKind:"business"},"business.create":{permission:"business:create",targetKind:"organization"},"business.compile":{permission:"business:compile",targetKind:"business"},"business.delete":{permission:"business:delete",targetKind:"business"},"business.docs.disable":{permission:"business:docs_update",targetKind:"business"},"business.docs.enable":{permission:"business:docs_update",targetKind:"business"},"business.list":{permission:"business:read",targetKind:"organization"},"business.origin.update":{permission:"business:origin_update",targetKind:"business"},"business.preview_env.set":{permission:"business:preview_env_update",targetKind:"business"},"business.publish":{permission:"business:publish",targetKind:"business"},"business.read":{permission:"business:read",targetKind:"business"},"business.routes.read":{permission:"business:read",targetKind:"business"},"business.contract.read":{permission:"business:read",targetKind:"business"},"business.config_attempts.read":{permission:"business:read",targetKind:"business"},"business.status":{permission:"business:read",targetKind:"business"},"business_dependents.read":{permission:"business_dependents:read",targetKind:"business"},"business_variable.delete":{permission:"business_variable:delete",targetKind:"business"},"business_variable.create":{permission:"business_variable:create",targetKind:"business"},"business_variable.operation.read":{permission:"business_variable:operation_read",targetKind:"business"},"business_variable.read":{permission:"business_variable:read",targetKind:"business"},"business_variable.rotate":{permission:"business_variable:rotate",targetKind:"business"},"business_variable.revoke":{permission:"business_variable:revoke",targetKind:"business"},"change_set.preview":{permission:"change_set:propose",targetKind:"business"},"change_set.proposal_list":{permission:"change_set:read",targetKind:"business"},"change_set.proposal_read":{permission:"change_set:read",targetKind:"business"},"change_set.propose":{permission:"change_set:propose",targetKind:"business"},"consumer.block":{permission:"consumer:block",targetKind:"business"},"consumer.migrate_latest":{permission:"consumer:migrate_latest",targetKind:"business"},"consumer.read":{permission:"consumer:read",targetKind:"business"},"consumer.remove":{permission:"consumer:remove",targetKind:"business"},"consumer.roles.assign":{permission:"consumer:roles_assign",targetKind:"business"},"environment.create":{permission:"environment:create",targetKind:"business"},"environment.delete":{permission:"environment:delete",targetKind:"business"},"denial.read":{permission:"denial:read",targetKind:"business"},"environment.read":{permission:"environment:read",targetKind:"business"},"frontend.rollback":{permission:"frontend:rollback",targetKind:"business"},"frontend.status":{permission:"frontend:read",targetKind:"business"},"notification.preferences.read":{permission:"notification:preferences_read",targetKind:"business"},"notification.preferences.update":{permission:"notification:preferences_update",targetKind:"business"},"knowledge.guide.read":{permission:"knowledge:read",targetKind:"self"},"knowledge.business.read":{permission:"knowledge:read",targetKind:"business"},"organization.bulletin.read":{permission:"organization_bulletin:read",targetKind:"organization"},"organization.billing.manage":{permission:"organization:manage_billing",targetKind:"organization"},"organization.create":{permission:"organization:create",targetKind:"self"},"organization.delete":{permission:"organization:delete",targetKind:"organization"},"organization.invitation.accept":{permission:"organization_invitation:accept",targetKind:"self"},"organization.invitation.create":{permission:"organization_invitation:create",targetKind:"organization"},"organization.invitation.list":{permission:"organization_invitation:list",targetKind:"self"},"organization.invitation.revoke":{permission:"organization_invitation:revoke",targetKind:"organization"},"organization.list":{permission:"organization:read",targetKind:"self"},"organization.role.list":{permission:"organization_role:read",targetKind:"organization"},"organization.role.show":{permission:"organization_role:read",targetKind:"organization"},"organization.role.create":{permission:"organization_role:create",targetKind:"organization"},"organization.role.update":{permission:"organization_role:update",targetKind:"organization"},"organization.role.delete":{permission:"organization_role:delete",targetKind:"organization"},"organization.member.list":{permission:"organization_member:list",targetKind:"organization"},"organization.member.remove":{permission:"organization_member:remove",targetKind:"organization"},"organization.member.update":{permission:"organization_member:update",targetKind:"organization"},"organization.overview.read":{permission:"organization:read",targetKind:"organization"},"organization.ownership.transfer":{permission:"organization:ownership_transfer",targetKind:"organization"},"persona.bootstrap":{permission:"persona:issue",targetKind:"business"},"persona.read":{permission:"persona:read",targetKind:"business"},"persona.revoke":{permission:"persona:revoke",targetKind:"business"},"persona.rotate":{permission:"persona:rotate",targetKind:"business"},"plan.create":{permission:"local_repository:write",targetKind:"local_repository"},"plan.migration_batch.create":{permission:"plan_migration:create",targetKind:"business"},"plan.read":{permission:"plan:read",targetKind:"business"},"plan.release_preview":{permission:"plan:release_preview",targetKind:"business"},"auth_provider_connection.create":{permission:"auth_provider_connection:create",targetKind:"business"},"auth_provider_connection.delete":{permission:"auth_provider_connection:delete",targetKind:"business"},"auth_provider_connection.read":{permission:"auth_provider_connection:read",targetKind:"business"},"auth_provider_connection.update":{permission:"auth_provider_connection:update",targetKind:"business"},"promo_code.archive":{permission:"promo_code:archive",targetKind:"business"},"promo_code.create":{permission:"promo_code:create",targetKind:"business"},"promo_code.reactivate":{permission:"promo_code:reactivate",targetKind:"business"},"promo_code.read":{permission:"promo_code:read",targetKind:"business"},"promo_code.update":{permission:"promo_code:update",targetKind:"business"},"rbac.read":{permission:"rbac:read",targetKind:"business"},"runtime_token.mint":{permission:"runtime_token:mint",targetKind:"business"},"runtime_token.read":{permission:"runtime_token:read",targetKind:"business"},"runtime_token.revoke":{permission:"runtime_token:revoke",targetKind:"business"},"runtime_token.rotate":{permission:"runtime_token:rotate",targetKind:"business"},"resource_count.report":{permission:"resource_count:report",targetKind:"business"},"tax_settings.read":{permission:"tax_settings:read",targetKind:"business"},"tax_settings.update":{permission:"tax_settings:update",targetKind:"business"},"usage.read":{permission:"usage:read",targetKind:"business"},"workflow.replay":{permission:"workflow:replay",targetKind:"business"},"workflow.rollback":{permission:"workflow:rollback",targetKind:"business"},"webhook.create":{permission:"webhook:create",targetKind:"business"},"webhook.delete":{permission:"webhook:delete",targetKind:"business"},"webhook.delivery.read":{permission:"webhook:delivery_read",targetKind:"business"},"webhook.read":{permission:"webhook:read",targetKind:"business"},"webhook.test":{permission:"webhook:test",targetKind:"business"},"webhook.update":{permission:"webhook:update",targetKind:"business"},"plan.update":{permission:"local_repository:write",targetKind:"local_repository"},"plan.delete":{permission:"local_repository:write",targetKind:"local_repository"},"plan.variant.create":{permission:"local_repository:write",targetKind:"local_repository"},"plan.promote":{permission:"local_repository:write",targetKind:"local_repository"},"plan.rollback":{permission:"local_repository:write",targetKind:"local_repository"},"route.define":{permission:"local_repository:write",targetKind:"local_repository"},"gateway.config":{permission:"local_repository:write",targetKind:"local_repository"},"auth_strategy.update":{permission:"local_repository:write",targetKind:"local_repository"},"rate_limit.update":{permission:"local_repository:write",targetKind:"local_repository"},"meter.define":{permission:"local_repository:write",targetKind:"local_repository"},"backend.define":{permission:"local_repository:write",targetKind:"local_repository"},"webhook.define":{permission:"local_repository:write",targetKind:"local_repository"},"business.contract_field.update":{permission:"local_repository:write",targetKind:"local_repository"},"rbac.enable":{permission:"local_repository:write",targetKind:"local_repository"},"build.trigger":{permission:"local_repository:write",targetKind:"local_repository"},"frontend.deploy":{permission:"frontend:deploy",targetKind:"business"},"manifest.apply":{permission:"local_repository:write",targetKind:"local_repository"},"backend.status.read":{permission:"backend:read",targetKind:"business"},"brand.update":{permission:"brand:update",targetKind:"business"},"business.rollback":{permission:"business:rollback",targetKind:"business"}},Uv=new Set(["subscriber_portal","human_decision","runtime_surface","credential_administration"]);function Cn(e){return e.sideEffect!==void 0?e.sideEffect:/[._](read|list|status|show|top|log|latency|timeseries|export)$/.test(e.key)?"read":"write"}var IT=new Set(["business","organization","self","local_repository"]);function ET(e,t){if(!/^[a-z_]+:[a-z_]+$/.test(t.permission)||t.permission.includes("*"))throw new Error(`Agent operation ${e.key} must declare one exact permission`);if(!IT.has(t.targetKind))throw new Error(`Agent operation ${e.key} has an invalid target kind`);if(t.permission==="local_repository:write"){if(t.targetKind!=="local_repository")throw new Error(`Local repository operation ${e.key} has an invalid authorization binding`);if(Cn(e)!=="write")throw new Error(`Local repository operation ${e.key} has a read side effect but uses write-effect authority`);return}let r=Dt[t.permission];if(r===void 0)throw new Error(`Agent operation ${e.key} uses an unknown platform permission`);let i=Cn(e);if(i!==r.effect)throw new Error(`Agent operation ${e.key} has ${i} side effect but uses ${r.effect}-effect authority`);if(!r.allowedTargetKinds.includes(t.targetKind))throw new Error(`Agent operation ${e.key} uses a target kind not allowed by ${t.permission}`)}function ST(e){let t=new Set;for(let r of e){if(t.has(r.key))throw new Error(`Duplicate platform operation key: ${r.key}`);if(t.add(r.key),r.agentVisibility==="excluded"){let i=fs[r.key],n=r.unavailable!==void 0&&Uv.has(r.unavailable.reason),o=r.unavailable===void 0&&i!==void 0&&i.permission!=="local_repository:write"&&Dt[i.permission].delegation==="browser_only";if(r.authorization!==void 0||!n&&!o)throw new Error(`Excluded operation ${r.key} has an invalid agent visibility binding`);continue}if(r.authorization===void 0)throw new Error(`Agent operation ${r.key} is missing an authorization binding`);ET(r,r.authorization)}}var pp=kT.map(e=>{if(e.unavailable!==void 0&&Uv.has(e.unavailable.reason))return{...e,sideEffect:Cn(e),agentVisibility:"excluded",authorization:void 0};let r=fs[e.key];return r!==void 0&&r.permission!=="local_repository:write"&&Dt[r.permission].delegation==="browser_only"?{...e,sideEffect:Cn(e),agentVisibility:"excluded",authorization:void 0}:r===void 0?{...e,sideEffect:Cn(e),agentVisibility:"visible",authorization:void 0}:{...e,sideEffect:Cn(e),agentVisibility:"visible",authorization:r}});ST(pp);var Lv=pp.filter(e=>e.agentVisibility==="visible");for(let e of Object.keys(fs))if(!pp.some(t=>t.key===e))throw new Error(`Authorization binding references unknown operation: ${e}`);function jv(e){return fs[e]}var Ut={kind:"self"},gs={kind:"authenticated_organization"},Lt=(e="businessId")=>({kind:"path",targetKind:"business",parameter:e}),wT=(e="orgId")=>({kind:"path",targetKind:"organization",parameter:e});function fe(e,t,r,i,n){return{method:e,path:t,operationId:r,authorization:{kind:"operation",operationKeys:[i],target:n}}}function x(e,t,r,i,n="businessId"){return fe(e,t,r,i,Lt(n))}function pe(e,t,r,i){return fe(e,t,r,i,wT())}var xT=[{method:"POST",path:"/auth/cli/exchange",operationId:"exchangeCliCredential",authorization:{kind:"infrastructure",purpose:"raw_cli_credential_exchange"}},{method:"GET",path:"/auth/cli/organizations",operationId:"listCliSessionOrganizations",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/revoke",operationId:"revokeCliSessionCredential",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/start",operationId:"startCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/token",operationId:"pollCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/ack",operationId:"ackCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},fe("GET","/builder/organizations","listBuilderOrganizations","organization.list",Ut),x("POST","/management/businesses/{businessId}/auth/context-token","createContextToken","auth.context.issue"),fe("POST","/builder/organizations","createBuilderOrganization","organization.create",Ut),pe("GET","/builder/organizations/{orgId}/roles","listBuilderOrganizationRoles","organization.role.list"),pe("GET","/builder/organizations/{orgId}/roles/{roleKey}","getBuilderOrganizationRole","organization.role.show"),pe("POST","/builder/organizations/{orgId}/roles","createBuilderOrganizationRole","organization.role.create"),pe("PATCH","/builder/organizations/{orgId}/roles/{roleKey}","updateBuilderOrganizationRole","organization.role.update"),pe("DELETE","/builder/organizations/{orgId}/roles/{roleKey}","deleteBuilderOrganizationRole","organization.role.delete"),pe("GET","/builder/organizations/{orgId}/members","listBuilderOrganizationMembers","organization.member.list"),pe("POST","/builder/organizations/{orgId}/invitations","createBuilderOrganizationInvitation","organization.invitation.create"),fe("GET","/builder/invitations","listMyBuilderInvitations","organization.invitation.list",Ut),pe("DELETE","/builder/organizations/{orgId}/invitations/{invitationId}","revokeBuilderOrganizationInvitation","organization.invitation.revoke"),fe("POST","/builder/invitations/{invitationId}/accept","acceptBuilderInvitation","organization.invitation.accept",Ut),pe("PATCH","/builder/organizations/{orgId}/members/{memberUserId}","updateBuilderOrganizationMember","organization.member.update"),pe("DELETE","/builder/organizations/{orgId}/members/{memberUserId}","deleteBuilderOrganizationMember","organization.member.remove"),pe("POST","/builder/organizations/{orgId}/ownership/transfer","transferBuilderOrganizationOwnership","organization.ownership.transfer"),pe("DELETE","/builder/organizations/{orgId}","deleteBuilderOrganization","organization.delete"),pe("GET","/builder/organizations/{orgId}/overview","getBuilderOrganizationOverview","organization.overview.read"),pe("GET","/builder/organizations/{orgId}/bulletin","listBuilderOrgBulletin","organization.bulletin.read"),pe("GET","/builder/organizations/{orgId}/audit-logs","listBuilderAuditLogs","audit_log.read"),pe("GET","/builder/organizations/{orgId}/audit-logs/export.csv","exportBuilderAuditLogsCsv","audit_log.export"),x("GET","/builder/organizations/{orgId}/businesses/{businessId}/audit-logs","listBuilderBusinessAuditLogs","audit_log.business.read","businessId"),x("GET","/builder/organizations/{orgId}/businesses/{businessId}/audit-logs/export.csv","exportBuilderBusinessAuditLogsCsv","audit_log.business.export","businessId"),fe("GET","/businesses","listBusinesses","business.list",gs),fe("POST","/businesses","createBusiness","business.create",gs),x("GET","/businesses/{id}","getBusiness","business.read","id"),x("GET","/businesses/{id}/routes","listBusinessRoutes","business.routes.read","id"),x("GET","/businesses/{id}/contract","getBusinessContract","business.contract.read","id"),x("PUT","/businesses/{id}/icon","uploadBusinessIcon","brand.update","id"),x("DELETE","/businesses/{id}/icon","deleteBusinessIcon","brand.update","id"),x("PUT","/businesses/{id}/logo","uploadBusinessLogo","brand.update","id"),x("DELETE","/businesses/{id}/logo","deleteBusinessLogo","brand.update","id"),x("GET","/businesses/{id}/config","getBusinessConfigState","rbac.read","id"),x("GET","/businesses/{id}/config-attempts","listBusinessConfigAttempts","business.config_attempts.read","id"),{method:"PATCH",path:"/businesses/{id}",operationId:"updateBusiness",authorization:{kind:"operation",operationKeys:["business.origin.update","business.preview_env.set","business.docs.enable","business.docs.disable","brand.update"],target:Lt("id"),bodyFieldOperations:{origin:"business.origin.update",sandboxOrigin:"business.origin.update",envBranchPrefix:"business.preview_env.set",previewEnvTrigger:"business.preview_env.set",docsEnabled:"business.docs.enable",displayName:"brand.update",description:"brand.update",iconUrl:"brand.update",logoUrl:"brand.update"}}},x("DELETE","/businesses/{id}","deleteBusiness","business.delete","id"),x("POST","/businesses/{id}/publish","publishBusiness","business.publish","id"),x("POST","/businesses/{id}/manifest/compile","compileBusinessManifest","business.compile","id"),x("GET","/businesses/{id}/deployments","listDeployments","business.status","id"),x("POST","/businesses/{id}/plans/release-preview","previewBusinessPlanRelease","plan.release_preview","id"),x("GET","/businesses/{id}/environments","listBusinessEnvironments","environment.read","id"),x("POST","/businesses/{id}/environments","createBusinessEnvironment","environment.create","id"),x("DELETE","/businesses/{id}/environments/{envName}","deleteBusinessEnvironment","environment.delete","id"),x("GET","/businesses/{id}/consumers","listBusinessSubscribers","consumer.read","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/block","blockBusinessSubscriber","consumer.block","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/migrate-latest","migrateBusinessSubscriberToLatest","consumer.migrate_latest","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/remove","forceRemoveBusinessSubscriber","consumer.remove","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/members/{userExternalId}/roles","overrideConsumerMemberBusinessRoles","consumer.roles.assign","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/change-sets","proposeConsumerChangeSet","change_set.propose","id"),x("GET","/businesses/{id}/consumers/{subscriberId}/change-sets","listConsumerChangeSets","change_set.proposal_list","id"),x("GET","/businesses/{id}/consumers/{subscriberId}/change-sets/{changeSetId}","getConsumerChangeSet","change_set.proposal_read","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/change-sets/{changeSetId}/preview","previewConsumerChangeSet","change_set.preview","id"),x("GET","/businesses/{id}/notification-preferences","getBusinessNotificationPreferences","notification.preferences.read","id"),x("PATCH","/businesses/{id}/notification-preferences","updateBusinessNotificationPreferences","notification.preferences.update","id"),{method:"GET",path:"/businesses/{id}/apply-timeline",operationId:"listApplyTimeline",authorization:{kind:"operation",operationKeys:["apply_timeline.list","apply_timeline.read"],target:Lt("id")}},x("GET","/businesses/{id}/promo-codes","listBusinessPromoCodes","promo_code.read","id"),x("POST","/businesses/{id}/promo-codes","createBusinessPromoCode","promo_code.create","id"),{method:"PATCH",path:"/businesses/{id}/promo-codes/{promoCodeId}",operationId:"updateBusinessPromoCode",authorization:{kind:"operation",operationKeys:["promo_code.update","promo_code.archive","promo_code.reactivate"],target:Lt("id"),bodyFieldOperations:{code:"promo_code.update",amount:"promo_code.update",activeFrom:"promo_code.update",activeUntil:"promo_code.update",applicablePlanIds:"promo_code.update",status:"promo_code.update"}}},x("GET","/management/businesses/{businessId}","getManagedBusiness","business.read"),x("DELETE","/management/businesses/{businessId}","deleteManagedBusiness","business.delete"),fe("GET","/management/businesses","listManagedBusinesses","business.list",gs),fe("GET","/management/whoami","managementWhoami","auth.context.read",Ut),x("POST","/management/businesses/{businessId}/publish","publishManagedBusiness","business.publish"),x("GET","/management/businesses/{businessId}/publishes/{workflowExecutionId}","getManagedBusinessPublishStatus","business.status"),x("POST","/management/businesses/{businessId}/rollback","rollbackManagedBusiness","business.rollback"),fe("GET","/management/businesses/subdomain-availability","checkManagedSubdomainAvailability","business.create",gs),x("GET","/management/businesses/{businessId}/plans","listManagedBusinessPlans","plan.read"),x("GET","/management/businesses/{businessId}/backends","listManagedBusinessBackends","backend.read"),x("POST","/management/businesses/{businessId}/backends","createManagedBusinessBackend","backend.create"),x("PATCH","/management/businesses/{businessId}/backends/{backendId}","bindManagedBusinessBackendOrigin","backend.bind"),x("DELETE","/management/businesses/{businessId}/backends/{backendId}","deleteManagedBusinessBackend","backend.delete"),x("GET","/management/businesses/{businessId}/runtime-tokens","listManagedBusinessRuntimeTokens","runtime_token.read"),x("POST","/management/businesses/{businessId}/runtime-tokens","createManagedBusinessRuntimeToken","runtime_token.mint"),x("POST","/management/businesses/{businessId}/runtime-tokens/{tokenId}/rotate","rotateManagedBusinessRuntimeToken","runtime_token.rotate"),x("DELETE","/management/businesses/{businessId}/runtime-tokens/{tokenId}","revokeManagedBusinessRuntimeToken","runtime_token.revoke"),fe("GET","/v1/backends/{backendId}/readiness","getManagedBackendReadiness","backend.status.read",{kind:"indirect_business",resource:"backend",parameter:"backendId"}),x("GET","/management/businesses/{businessId}/usage","getManagedBusinessUsage","usage.read"),x("PUT","/management/businesses/{businessId}/logo","uploadManagedBusinessLogo","brand.update"),x("DELETE","/management/businesses/{businessId}/logo","deleteManagedBusinessLogo","brand.update"),x("PUT","/management/businesses/{businessId}/resources/{resource}/count","reportManagedBusinessResourceCount","resource_count.report"),x("GET","/management/businesses/{businessId}/tax-settings","getManagedBusinessTaxSettings","tax_settings.read"),x("POST","/management/businesses/{businessId}/tax-settings","updateManagedBusinessTaxSettings","tax_settings.update"),x("GET","/management/businesses/{businessId}/explain-denial/{requestId}","explainDenial","denial.read"),x("GET","/management/businesses/{businessId}/dependents","listBusinessDependents","business_dependents.read"),fe("POST","/replay","agentReplay","workflow.replay",{kind:"body",targetKind:"business",field:"business_id"}),fe("POST","/rollback-to-config","agentRollbackToConfig","workflow.rollback",{kind:"body",targetKind:"business",field:"business_id"}),fe("GET","/agent/v1/runtime-context","agentRuntimeContext","auth.context.read",Ut),x("POST","/management/businesses/{businessId}/webhooks","createWebhookEndpoint","webhook.create"),x("GET","/management/businesses/{businessId}/webhooks","listWebhookEndpoints","webhook.read"),x("DELETE","/management/businesses/{businessId}/webhooks/{webhookId}","deleteWebhookEndpoint","webhook.delete"),x("PATCH","/management/businesses/{businessId}/webhooks/{webhookId}","updateWebhookEndpoint","webhook.update"),x("GET","/management/businesses/{businessId}/webhooks/{webhookId}/deliveries","listWebhookDeliveries","webhook.delivery.read"),x("POST","/management/businesses/{businessId}/webhooks/{webhookId}/test","testWebhookEndpoint","webhook.test"),x("POST","/portal/businesses/{businessId}/environments/{envId}/test/bootstrap-key","bootstrapTestEnvKey","persona.bootstrap"),x("GET","/portal/businesses/{businessId}/environments/{envId}/test/personas","listTestPersonas","persona.read"),x("POST","/portal/businesses/{businessId}/environments/{envId}/test/personas/{personaId}/rotate","rotateTestPersona","persona.rotate"),x("DELETE","/portal/businesses/{businessId}/environments/{envId}/test/personas/{personaId}","revokeTestPersona","persona.revoke"),x("POST","/businesses/{businessId}/frontend/deploy","deployBusinessFrontend","frontend.deploy"),x("GET","/businesses/{businessId}/frontend/status","getBusinessFrontendStatus","frontend.status"),x("GET","/businesses/{businessId}/frontend/releases","listBusinessFrontendReleases","frontend.status"),x("POST","/businesses/{businessId}/frontend/rollback","rollbackBusinessFrontend","frontend.rollback"),x("GET","/businesses/{businessId}/backends","listBusinessBackends","backend.read"),x("POST","/businesses/{businessId}/backends","createBusinessBackend","backend.create"),x("PATCH","/businesses/{businessId}/backends/{backendId}","bindBusinessBackendOrigin","backend.bind"),x("DELETE","/businesses/{businessId}/backends/{backendId}","deleteBusinessBackend","backend.delete"),x("GET","/businesses/{businessId}/runtime-tokens","listBusinessRuntimeTokens","runtime_token.read"),x("POST","/businesses/{businessId}/runtime-tokens","createBusinessRuntimeToken","runtime_token.mint"),x("POST","/businesses/{businessId}/runtime-tokens/{tokenId}/rotate","rotateBusinessRuntimeToken","runtime_token.rotate"),x("DELETE","/businesses/{businessId}/runtime-tokens/{tokenId}","revokeBusinessRuntimeToken","runtime_token.revoke"),x("GET","/businesses/{id}/automation-rules","listAutomationRules","automation_rule.read","id"),x("POST","/businesses/{id}/automation-rules","createAutomationRule","automation_rule.create","id"),x("GET","/businesses/{id}/automation-rules/{ruleId}","getAutomationRule","automation_rule.read","id"),x("PATCH","/businesses/{id}/automation-rules/{ruleId}","updateAutomationRule","automation_rule.update","id"),x("DELETE","/businesses/{id}/automation-rules/{ruleId}","deleteAutomationRule","automation_rule.delete","id"),x("GET","/businesses/{id}/agents","listAgents","agents.list","id"),x("GET","/businesses/{id}/agents/usage","getAgentUsage","agents.list","id"),x("GET","/businesses/{id}/agents/{role}","getAgentStatus","agents.status","id"),{method:"PUT",path:"/businesses/{id}/agents/{role}",operationId:"configureAgent",authorization:{kind:"operation",operationKeys:["agents.enable","agents.disable"],target:Lt("id"),bodyFieldOperations:{enabled:"agents.enable"}}},x("GET","/businesses/{id}/agents/{role}/runs/{runId}","getAgentRunDetail","agents.runs.show","id"),x("GET","/businesses/{id}/bulletin","listBulletinPosts","bulletin.list","id"),x("GET","/businesses/{id}/bulletin/{postId}","getBulletinPost","bulletin.read","id"),{method:"PATCH",path:"/businesses/{id}/bulletin/{postId}",operationId:"setBulletinPostStatus",authorization:{kind:"operation",operationKeys:["bulletin.ack","bulletin.resolve"],target:Lt("id"),bodyFieldOperations:{status:"bulletin.ack"}}},{method:"POST",path:"/businesses/{businessId}/analytics/query",operationId:"queryBusinessAnalytics",authorization:{kind:"operation",operationKeys:["analytics.timeseries","analytics.latency","analytics.top","analytics.log"],target:Lt()}},x("POST","/businesses/{businessId}/plans/{planKey}/migration-batches","createPlanMigrationBatch","plan.migration_batch.create"),x("GET","/businesses/{businessId}/auth-provider-connections","listAuthProviderConnections","auth_provider_connection.read"),x("GET","/businesses/{businessId}/auth-provider-connections/{connectionId}","getAuthProviderConnection","auth_provider_connection.read"),x("POST","/businesses/{businessId}/auth-provider-connections","createAuthProviderConnection","auth_provider_connection.create"),x("PATCH","/businesses/{businessId}/auth-provider-connections/{connectionId}","updateAuthProviderConnection","auth_provider_connection.update"),x("DELETE","/businesses/{businessId}/auth-provider-connections/{connectionId}","deleteAuthProviderConnection","auth_provider_connection.delete"),x("GET","/businesses/{businessId}/variables","listBusinessVariables","business_variable.read"),x("POST","/businesses/{businessId}/variables/{name}","createBusinessVariable","business_variable.create"),x("POST","/businesses/{businessId}/variables/{name}/rotate","rotateBusinessVariable","business_variable.rotate"),x("DELETE","/businesses/{businessId}/variables/{name}","deleteBusinessVariable","business_variable.delete"),x("POST","/businesses/{businessId}/variables/{name}/revoke","revokeBusinessVariable","business_variable.revoke"),x("GET","/businesses/{businessId}/variables/operations/{operationId}","getBusinessVariableOperation","business_variable.operation.read"),fe("GET","/knowledge/index","getKnowledgeIndex","knowledge.guide.read",Ut),x("GET","/businesses/{businessId}/knowledge/index","getBusinessKnowledgeIndex","knowledge.business.read")];function $T(e){let t=new Set,r=new Set;for(let i of e){let n=`${i.method} ${i.path}`;if(t.has(n))throw new Error(`Duplicate agent HTTP route: ${n}`);if(t.add(n),r.has(i.operationId))throw new Error(`Duplicate agent HTTP operation id: ${i.operationId}`);if(r.add(i.operationId),i.authorization.kind!=="infrastructure"){if(i.authorization.operationKeys.length===0)throw new Error(`${n} must bind at least one operation`);for(let o of i.authorization.operationKeys){let a=jv(o);if(a===void 0)throw new Error(`Unknown agent operation ${o} on ${n}`);let c=i.authorization.target.kind==="path"||i.authorization.target.kind==="body"||i.authorization.target.kind==="query"?i.authorization.target.targetKind:i.authorization.target.kind==="authenticated_organization"?"organization":i.authorization.target.kind==="indirect_business"?"business":"self";if(a.targetKind!==c)throw new Error(`${n} target ${c} does not match ${o} target ${a.targetKind}`)}}}}$T(xT);var le={VALIDATION_ERROR:"VALIDATION_ERROR",CONFLICT:"CONFLICT",NOT_FOUND:"NOT_FOUND",NOT_IMPLEMENTED:"NOT_IMPLEMENTED",NOT_CONFIGURED:"NOT_CONFIGURED",INTERNAL_ERROR:"INTERNAL_ERROR",SERVICE_UNAVAILABLE:"SERVICE_UNAVAILABLE",RATE_LIMIT_EXCEEDED:"RATE_LIMIT_EXCEEDED",DELETE_CONFIRMATION_REQUIRED:"DELETE_CONFIRMATION_REQUIRED",MISSING_HOST:"MISSING_HOST",MISSING_CONNECTIONS:"MISSING_CONNECTIONS",SECRET_NOT_CONFIGURED:"SECRET_NOT_CONFIGURED",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",INVALID_ACCESS_KEY:"INVALID_ACCESS_KEY",AUTO_KEY_CREATION_FAILED:"AUTO_KEY_CREATION_FAILED",PERSONA_NOT_FOUND:"PERSONA_NOT_FOUND",PERSONA_REVOKED:"PERSONA_REVOKED",PERSONA_SESSIONS_NOT_SUPPORTED:"PERSONA_SESSIONS_NOT_SUPPORTED",NOT_TEST_PERSONA_ENV:"NOT_TEST_PERSONA_ENV",PERSONA_AUTH_DISABLED_IN_PROD:"PERSONA_AUTH_DISABLED_IN_PROD",MAKER_TOKEN_NOT_FOUND:"MAKER_TOKEN_NOT_FOUND",MAKER_TOKEN_NOT_REVOKED:"MAKER_TOKEN_NOT_REVOKED",MAKER_TOKEN_NO_PRODUCT:"MAKER_TOKEN_NO_PRODUCT",MAKER_TOKEN_REVOKED:"MAKER_TOKEN_REVOKED",ORGANIZATION_NOT_FOUND:"ORGANIZATION_NOT_FOUND",ORG_HAS_ACTIVE_SUBSCRIPTIONS:"ORG_HAS_ACTIVE_SUBSCRIPTIONS",ORG_HAS_OUTSTANDING_BALANCE:"ORG_HAS_OUTSTANDING_BALANCE",PERSONAL_ORG_NOT_DELETABLE:"PERSONAL_ORG_NOT_DELETABLE",PERSONAL_OWNER_IMMUTABLE:"PERSONAL_OWNER_IMMUTABLE",PERSONAL_CO_OWNER_NOT_ALLOWED:"PERSONAL_CO_OWNER_NOT_ALLOWED",PRIMARY_OWNER_TRANSFER_REQUIRED:"PRIMARY_OWNER_TRANSFER_REQUIRED",MEMBER_NOT_FOUND:"MEMBER_NOT_FOUND",INVITATION_NOT_FOUND:"INVITATION_NOT_FOUND",ROLE_NOT_FOUND:"ROLE_NOT_FOUND",ROLE_KEY_CONFLICT:"ROLE_KEY_CONFLICT",ROLE_IN_USE:"ROLE_IN_USE",BUILT_IN_ROLE_NOT_DELETABLE:"BUILT_IN_ROLE_NOT_DELETABLE",INVALID_PLATFORM_PERMISSION:"INVALID_PLATFORM_PERMISSION",INVALID_ROLE_KEY:"INVALID_ROLE_KEY",RBAC_REQUIRES_TEAM_ORG:"RBAC_REQUIRES_TEAM_ORG",RBAC_NOT_ENABLED_BY_PRODUCT:"RBAC_NOT_ENABLED_BY_PRODUCT",UNKNOWN_PERMISSION:"UNKNOWN_PERMISSION",CUSTOMER_NOT_FOUND:"CUSTOMER_NOT_FOUND",PRODUCT_NOT_FOUND:"PRODUCT_NOT_FOUND",PRODUCT_DELETE_BLOCKED:"PRODUCT_DELETE_BLOCKED",PRODUCT_REPO_NOT_LINKED:"PRODUCT_REPO_NOT_LINKED",PRODUCT_SCOPE_MISMATCH:"PRODUCT_SCOPE_MISMATCH",YAML_PARSE_ERROR:"YAML_PARSE_ERROR",COMPILATION_NOT_FOUND:"COMPILATION_NOT_FOUND",PLAN_NOT_FOUND:"PLAN_NOT_FOUND",PLAN_HAS_ACTIVE_SUBSCRIPTIONS:"PLAN_HAS_ACTIVE_SUBSCRIPTIONS",PLAN_SLUG_CONFLICT:"PLAN_SLUG_CONFLICT",PLAN_REQUIRED:"PLAN_REQUIRED",PLAN_UPGRADE_REQUIRED:"PLAN_UPGRADE_REQUIRED",PLAN_OFFER_CHANGED:"PLAN_OFFER_CHANGED",SLUG_CONFLICT:"SLUG_CONFLICT",SLUG_BLOCKED:"SLUG_BLOCKED",SLUG_OFFENSIVE:"SLUG_OFFENSIVE",SLUG_RESERVED:"SLUG_RESERVED",SLUG_IMPERSONATION:"SLUG_IMPERSONATION",SLUG_INVALID_FORMAT:"SLUG_INVALID_FORMAT",SLUG_VALIDATOR_NOT_READY:"SLUG_VALIDATOR_NOT_READY",PRICING_PREVIEW_FAILED:"PRICING_PREVIEW_FAILED",PRICING_REPLAY_FAILED:"PRICING_REPLAY_FAILED",RESERVATION_NOT_FOUND:"RESERVATION_NOT_FOUND",PROMO_CODE_NOT_FOUND:"PROMO_CODE_NOT_FOUND",PROMO_CODE_INVALID:"PROMO_CODE_INVALID",BILLING_EVENT_NOT_FOUND:"BILLING_EVENT_NOT_FOUND",BILLING_NOT_CONFIGURED:"BILLING_NOT_CONFIGURED",SUBSCRIPTION_NOT_READY:"SUBSCRIPTION_NOT_READY",SUBSCRIPTION_FETCH_FAILED:"SUBSCRIPTION_FETCH_FAILED",INVALID_STATE:"INVALID_STATE",DUPLICATE_TRANSITION:"DUPLICATE_TRANSITION",ARCHIVED_TARGET:"ARCHIVED_TARGET",FREE_TO_PAID_VIA_CHECKOUT_ONLY:"FREE_TO_PAID_VIA_CHECKOUT_ONLY",RESOURCE_LIMIT_EXCEEDED:"RESOURCE_LIMIT_EXCEEDED",RESOURCE_LIMIT_CHECK_UNAVAILABLE:"RESOURCE_LIMIT_CHECK_UNAVAILABLE",STRIPE_NOT_CONFIGURED:"STRIPE_NOT_CONFIGURED",STRIPE_BALANCE_OUTSTANDING:"STRIPE_BALANCE_OUTSTANDING",STRIPE_OPERATION_FAILED:"STRIPE_OPERATION_FAILED",STRIPE_RESYNC_FAILED:"STRIPE_RESYNC_FAILED",CHECKOUT_SESSION_FAILED:"CHECKOUT_SESSION_FAILED",POLAR_PRODUCT_NOT_CONFIGURED:"POLAR_PRODUCT_NOT_CONFIGURED",BILLING_TAX_NOT_ENROLLED:"BILLING_TAX_NOT_ENROLLED",WEBHOOK_NOT_FOUND:"WEBHOOK_NOT_FOUND",WEBHOOK_DISPATCH_FAILED:"WEBHOOK_DISPATCH_FAILED",WEBHOOK_SECRET_NOT_CONFIGURED:"WEBHOOK_SECRET_NOT_CONFIGURED",INVALID_WEBHOOK_SIGNATURE:"INVALID_WEBHOOK_SIGNATURE",MISSING_RAW_BODY:"MISSING_RAW_BODY",WEBHOOK_REDIRECTED:"WEBHOOK_REDIRECTED",MANAGED_BY_CODE:"MANAGED_BY_CODE",GITHUB_CONNECTION_NOT_FOUND:"GITHUB_CONNECTION_NOT_FOUND",GITHUB_NOT_CONNECTED:"GITHUB_NOT_CONNECTED",GITHUB_SYNC_FAILED:"GITHUB_SYNC_FAILED",GITHUB_SYNC_UNAVAILABLE:"GITHUB_SYNC_UNAVAILABLE",GITHUB_TOKEN_FAILED:"GITHUB_TOKEN_FAILED",GIT_PROVIDER_NOT_CONFIGURED:"GIT_PROVIDER_NOT_CONFIGURED",ENVIRONMENT_NOT_FOUND:"ENVIRONMENT_NOT_FOUND",ENVIRONMENT_CLEANUP_FAILED:"ENVIRONMENT_CLEANUP_FAILED",DEPLOYMENT_RUN_NOT_FOUND:"DEPLOYMENT_RUN_NOT_FOUND",BRANCH_NO_MATCHING_ENV:"BRANCH_NO_MATCHING_ENV",APPLY_SPEC_FAILED:"APPLY_SPEC_FAILED",BOOTSTRAP_FAILED:"BOOTSTRAP_FAILED",JOB_ALREADY_RUNNING:"JOB_ALREADY_RUNNING",LOGO_DELETE_FAILED:"LOGO_DELETE_FAILED",LOGO_UPLOAD_FAILED:"LOGO_UPLOAD_FAILED",INVALID_LOGO_FORMAT:"INVALID_LOGO_FORMAT",CHANGE_SET_STALE:"CHANGE_SET_STALE",SIMULATION_STALE:"SIMULATION_STALE",IDEMPOTENCY_KEY_REUSED:"IDEMPOTENCY_KEY_REUSED",SELF_APPROVAL_FORBIDDEN:"SELF_APPROVAL_FORBIDDEN",HUMAN_APPROVAL_REQUIRED:"HUMAN_APPROVAL_REQUIRED",GOVERNED_BY_CHANGE_SET:"GOVERNED_BY_CHANGE_SET",COMPENSATION_REQUIRED:"COMPENSATION_REQUIRED",MIGRATION_TOO_LARGE:"MIGRATION_TOO_LARGE"};var sB={missing_token:le.UNAUTHORIZED,invalid_token:le.UNAUTHORIZED,context_unverified:le.UNAUTHORIZED,missing_signature:le.UNAUTHORIZED,malformed_signature:le.UNAUTHORIZED,unknown_key_id:le.UNAUTHORIZED,bad_signature:le.UNAUTHORIZED,expired_signature:le.UNAUTHORIZED,clock_skew:le.UNAUTHORIZED,replayed_nonce:le.UNAUTHORIZED,body_hash_mismatch:le.UNAUTHORIZED,route_mismatch:le.UNAUTHORIZED,environment_mismatch:le.UNAUTHORIZED,jwks_unavailable:le.SERVICE_UNAVAILABLE,body_too_large:le.VALIDATION_ERROR,member_subject_required:le.FORBIDDEN,service_subject_required:le.FORBIDDEN,surface_not_allowed:le.FORBIDDEN};var aB=Object.values(r_);var X={BATCHER_ENUM:"batcher-enum",RUNTIME_INLINE:"runtime-inline",CONSTRAINT:"constraint",GATEWAY_ERROR:"gateway-error"};var Bv={limit_allocator_unavailable:{statuses:[503],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/runtime.ts:471"]},limit_exceeded:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:326","engine/enforcement/constraints/quota.ts:69"]},rate_limited:{statuses:[429],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:328","engine/enforcement/constraints/rate-limit.ts:74","engine/pipeline/rate-limit.ts:83"]},credit_exhausted:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:333"]},enforcement_denied:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:335"]},invalid_entitlement_shape:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!0,verifiedAt:["engine/enforcement/runtime.ts:144"]},unsupported_constraint_schema:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:154"]},enforcement_error:{statuses:[500],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:342"]},enforcement_dependency_unavailable:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:427"]},concurrency_limit_exceeded:{statuses:[429],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts"]},concurrency_context_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts:291"]},concurrency_coordinator_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts:305"]},key_expired:{statuses:[401],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/credential-validity.ts:33"]},permission_denied:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/permission.ts:63"]},permission_unresolved:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/permission.ts"]},route_not_enabled:{statuses:[403],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/pipeline/pre-vec-costs.ts"]},geo_context_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:44"]},geo_blocked:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:51"]},geo_not_allowed:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:58"]},resource_count_limit_exceeded:{statuses:[402],source:X.GATEWAY_ERROR,retryAfter:!1,verifiedAt:["apps/core:routes/internal/gateway-resources.ts:144"]},post_stream_overspend:{statuses:[402],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/lifecycle-block.ts"]},request_too_large:{statuses:[413],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/capacity.ts"]},resolver_rate_limited:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:55"]},resolver_unavailable:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:73"]},credential_resolver_miss_rate_limited:{statuses:[429],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:89"]},provider_throttled:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/pipeline/provider-adapter.ts"]}},TT=Object.keys(Bv);var OT=new Set([429,503]),uB=new Set(TT.filter(e=>Bv[e].statuses.every(t=>OT.has(t))));var AT=["quota","rate","concurrency","capacity","spend","adaptive"],dB=new Set(AT);var RT=[402,403,413,429],pB=new Set(RT);var CT=s.enum(["create","delete"]),PT=s.enum(["RESERVED","COMMITTED","RELEASED","DENIED"]),NT=s.object({mutationId:s.string().min(1).max(200),requestId:s.string().min(1).max(200),businessId:s.string().min(1).max(200),subscriptionId:s.string().min(1).max(200),compiledPlanId:s.string().min(1).max(200),actionId:s.string().min(1).max(160),environmentId:s.string().min(1).max(200).nullable(),subjectId:s.string().min(1).max(200).optional()}).strict();var $B=NT.extend({statusCode:s.number().int().min(100).max(599)}).strict(),TB=s.object({mutationId:s.string().min(1).max(200),resource:s.string().min(1).max(120),effect:CT,state:PT,count:s.number().int().nonnegative(),limit:s.number().int().nonnegative().nullable(),replayed:s.boolean()}).strict(),OB=s.object({error:s.object({code:s.literal("resource_count_limit_exceeded"),message:s.string(),limitCode:s.string(),dimension:s.string(),currentCapacity:s.number().int().nonnegative()}).strict()}).strict();var hs=s.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/),Mv=s.object({businessId:hs,environmentId:hs.nullable(),secretName:s.string().min(1).max(128).regex(/^[A-Z][A-Z0-9_]*$/)}).strict();var fp=s.object({scope:Mv,mutationId:hs,expectedGeneration:s.number().int().positive().nullable()}),DT=fp.extend({mutation:s.literal("publish"),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072)}).strict(),zT=fp.extend({mutation:s.literal("rotate"),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072)}).strict(),UT=fp.extend({mutation:s.enum(["revoke","delete"]),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/)}).strict(),LT=s.discriminatedUnion("mutation",[DT,zT,UT]),CB=s.object({keyId:hs,signature:s.string().regex(/^[a-f0-9]{64}$/),command:LT}).strict(),PB=s.discriminatedUnion("available",[s.object({available:s.literal(!0),scope:Mv,generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072),status:s.literal("ACTIVE")}).strict(),s.object({available:s.literal(!1),generation:s.number().int().positive().nullable(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/).nullable(),status:s.enum(["MISSING","PENDING","REVOKING","REVOKED","DELETED"])}).strict()]);var Fv=(e=0)=>t=>`\x1B[${t+e}m`,Kv=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Hv=(e=0)=>(t,r,i)=>`\x1B[${38+e};2;${t};${r};${i}m`,te={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]}},XM=Object.keys(te.modifier),jT=Object.keys(te.color),BT=Object.keys(te.bgColor),e1=[...jT,...BT];function MT(){let e=new Map;for(let[t,r]of Object.entries(te)){for(let[i,n]of Object.entries(r))te[i]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[i]=te[i],e.set(n[0],n[1]);Object.defineProperty(te,t,{value:r,enumerable:!1})}return Object.defineProperty(te,"codes",{value:e,enumerable:!1}),te.color.close="\x1B[39m",te.bgColor.close="\x1B[49m",te.color.ansi=Fv(),te.color.ansi256=Kv(),te.color.ansi16m=Hv(),te.bgColor.ansi=Fv(10),te.bgColor.ansi256=Kv(10),te.bgColor.ansi16m=Hv(10),Object.defineProperties(te,{rgbToAnsi256:{value(t,r,i){return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[i]=r;i.length===3&&(i=[...i].map(o=>o+o).join(""));let n=Number.parseInt(i,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>te.rgbToAnsi256(...te.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,i,n;if(t>=232)r=((t-232)*10+8)/255,i=r,n=r;else{t-=16;let c=t%36;r=Math.floor(t/36)/5,i=Math.floor(c/6)/5,n=c%6/5}let o=Math.max(r,i,n)*2;if(o===0)return 30;let a=30+(Math.round(n)<<2|Math.round(i)<<1|Math.round(r));return o===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(t,r,i)=>te.ansi256ToAnsi(te.rgbToAnsi256(t,r,i)),enumerable:!1},hexToAnsi:{value:t=>te.ansi256ToAnsi(te.hexToAnsi256(t)),enumerable:!1}}),te}var FT=MT(),ze=FT;import gp from"node:process";import KT from"node:os";import Vv from"node:tty";function Ce(e,t=globalThis.Deno?globalThis.Deno.args:gp.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i<n)}var{env:ne}=gp,bs;Ce("no-color")||Ce("no-colors")||Ce("color=false")||Ce("color=never")?bs=0:(Ce("color")||Ce("colors")||Ce("color=true")||Ce("color=always"))&&(bs=1);function HT(){if("FORCE_COLOR"in ne)return ne.FORCE_COLOR==="true"?1:ne.FORCE_COLOR==="false"?0:ne.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(ne.FORCE_COLOR,10),3)}function VT(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function GT(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let i=HT();i!==void 0&&(bs=i);let n=r?bs:i;if(n===0)return 0;if(r){if(Ce("color=16m")||Ce("color=full")||Ce("color=truecolor"))return 3;if(Ce("color=256"))return 2}if("TF_BUILD"in ne&&"AGENT_NAME"in ne)return 1;if(e&&!t&&n===void 0)return 0;let o=n||0;if(ne.TERM==="dumb")return o;if(gp.platform==="win32"){let a=KT.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in ne)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in ne)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in ne)||ne.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in ne)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ne.TEAMCITY_VERSION)?1:0;if(ne.COLORTERM==="truecolor"||ne.TERM==="xterm-kitty"||ne.TERM==="xterm-ghostty"||ne.TERM==="wezterm")return 3;if("TERM_PROGRAM"in ne){let a=Number.parseInt((ne.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ne.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ne.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ne.TERM)||"COLORTERM"in ne?1:o}function Gv(e,t={}){let r=GT(e,{streamIsTTY:e&&e.isTTY,...t});return VT(r)}var ZT={stdout:Gv({isTTY:Vv.isatty(1)}),stderr:Gv({isTTY:Vv.isatty(2)})},Zv=ZT;function Wv(e,t,r){let i=e.indexOf(t);if(i===-1)return e;let n=t.length,o=0,a="";do a+=e.slice(o,i)+t+r,o=i+n,i=e.indexOf(t,o);while(i!==-1);return a+=e.slice(o),a}function qv(e,t,r,i){let n=0,o="";do{let a=e[i-1]==="\r";o+=e.slice(n,a?i-1:i)+t+(a?`\r
|
|
94
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let c=a[1];if(t===a[0]){o(a);continue}if(e.external){let l=e.external.registry.get(a[0])?.id;if(t!==a[0]&&l){o(a);continue}}if(e.metadataRegistry.get(a[0])?.id){o(a);continue}if(c.cycle){o(a);continue}if(c.count>1&&e.reused==="ref"){o(a);continue}}}function pt(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let i=c=>{let u=e.seen.get(c);if(u.ref===null)return;let l=u.def??u.schema,d={...l},g=u.ref;if(u.ref=null,g){i(g);let _=e.seen.get(g),S=_.schema;if(S.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(S)):Object.assign(l,S),Object.assign(l,d),c._zod.parent===g)for(let m in l)m==="$ref"||m==="allOf"||m in d||delete l[m];if(S.$ref&&_.def)for(let m in l)m==="$ref"||m==="allOf"||m in _.def&&JSON.stringify(l[m])===JSON.stringify(_.def[m])&&delete l[m]}let p=c._zod.parent;if(p&&p!==g){i(p);let _=e.seen.get(p);if(_?.schema.$ref&&(l.$ref=_.schema.$ref,_.def))for(let S in l)S==="$ref"||S==="allOf"||S in _.def&&JSON.stringify(l[S])===JSON.stringify(_.def[S])&&delete l[S]}e.override({zodSchema:c,jsonSchema:l,path:u.path??[]})};for(let c of[...e.seen.entries()].reverse())i(c[0]);let n={};if(e.target==="draft-2020-12"?n.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?n.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?n.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let c=e.external.registry.get(t)?.id;if(!c)throw new Error("Schema is missing an `id` property");n.$id=e.external.uri(c)}Object.assign(n,r.def??r.schema);let o=e.metadataRegistry.get(t)?.id;o!==void 0&&n.id===o&&delete n.id;let a=e.external?.defs??{};for(let c of e.seen.entries()){let u=c[1];u.def&&u.defId&&(u.def.id===u.defId&&delete u.def.id,a[u.defId]=u.def)}e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?n.$defs=a:n.definitions=a);try{let c=JSON.parse(JSON.stringify(n));return Object.defineProperty(c,"~standard",{value:{...t["~standard"],jsonSchema:{input:fn(t,"input",e.processors),output:fn(t,"output",e.processors)}},enumerable:!1,writable:!1}),c}catch{throw new Error("Error converting schema to JSON.")}}function _e(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let i=e._zod.def;if(i.type==="transform")return!0;if(i.type==="array")return _e(i.element,r);if(i.type==="set")return _e(i.valueType,r);if(i.type==="lazy")return _e(i.getter(),r);if(i.type==="promise"||i.type==="optional"||i.type==="nonoptional"||i.type==="nullable"||i.type==="readonly"||i.type==="default"||i.type==="prefault")return _e(i.innerType,r);if(i.type==="intersection")return _e(i.left,r)||_e(i.right,r);if(i.type==="record"||i.type==="map")return _e(i.keyType,r)||_e(i.valueType,r);if(i.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:_e(i.in,r)||_e(i.out,r);if(i.type==="object"){for(let n in i.shape)if(_e(i.shape[n],r))return!0;return!1}if(i.type==="union"){for(let n of i.options)if(_e(n,r))return!0;return!1}if(i.type==="tuple"){for(let n of i.items)if(_e(n,r))return!0;return!!(i.rest&&_e(i.rest,r))}return!1}var zl=(e,t={})=>r=>{let i=dt({...r,processors:t});return V(e,i),mt(i,e),pt(i,e)},fn=(e,t,r={})=>i=>{let{libraryOptions:n,target:o}=i??{},a=dt({...n??{},target:o,io:t,processors:r});return V(e,a),mt(a,e),pt(a,e)};var zw={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Ul=(e,t,r,i)=>{let n=r;n.type="string";let{minimum:o,maximum:a,format:c,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof o=="number"&&(n.minLength=o),typeof a=="number"&&(n.maxLength=a),c&&(n.format=zw[c]??c,n.format===""&&delete n.format,c==="time"&&delete n.format),l&&(n.contentEncoding=l),u&&u.size>0){let d=[...u];d.length===1?n.pattern=d[0].source:d.length>1&&(n.allOf=[...d.map(g=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:g.source}))])}},Ll=(e,t,r,i)=>{let n=r,{minimum:o,maximum:a,format:c,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:d}=e._zod.bag;typeof c=="string"&&c.includes("int")?n.type="integer":n.type="number";let g=typeof d=="number"&&d>=(o??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(a??Number.POSITIVE_INFINITY),_=t.target==="draft-04"||t.target==="openapi-3.0";g?_?(n.minimum=d,n.exclusiveMinimum=!0):n.exclusiveMinimum=d:typeof o=="number"&&(n.minimum=o),p?_?(n.maximum=l,n.exclusiveMaximum=!0):n.exclusiveMaximum=l:typeof a=="number"&&(n.maximum=a),typeof u=="number"&&(n.multipleOf=u)},jl=(e,t,r,i)=>{r.type="boolean"},Bl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Ml=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},Fl=(e,t,r,i)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},Kl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Hl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},Vl=(e,t,r,i)=>{r.not={}},Gl=(e,t,r,i)=>{},Zl=(e,t,r,i)=>{},Wl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},ql=(e,t,r,i)=>{let n=e._zod.def,o=ir(n.entries);o.every(a=>typeof a=="number")&&(r.type="number"),o.every(a=>typeof a=="string")&&(r.type="string"),r.enum=o},Jl=(e,t,r,i)=>{let n=e._zod.def,o=[];for(let a of n.values)if(a===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");o.push(Number(a))}else o.push(a);if(o.length!==0)if(o.length===1){let a=o[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else o.every(a=>typeof a=="number")&&(r.type="number"),o.every(a=>typeof a=="string")&&(r.type="string"),o.every(a=>typeof a=="boolean")&&(r.type="boolean"),o.every(a=>a===null)&&(r.type="null"),r.enum=o},Yl=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Ql=(e,t,r,i)=>{let n=r,o=e._zod.pattern;if(!o)throw new Error("Pattern not found in template literal");n.type="string",n.pattern=o.source},Xl=(e,t,r,i)=>{let n=r,o={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:c,mime:u}=e._zod.bag;a!==void 0&&(o.minLength=a),c!==void 0&&(o.maxLength=c),u?u.length===1?(o.contentMediaType=u[0],Object.assign(n,o)):(Object.assign(n,o),n.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(n,o)},ed=(e,t,r,i)=>{r.type="boolean"},td=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},nd=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},rd=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},id=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},od=(e,t,r,i)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},sd=(e,t,r,i)=>{let n=r,o=e._zod.def,{minimum:a,maximum:c}=e._zod.bag;typeof a=="number"&&(n.minItems=a),typeof c=="number"&&(n.maxItems=c),n.type="array",n.items=V(o.element,t,{...i,path:[...i.path,"items"]})},ad=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="object",n.properties={};let a=o.shape;for(let l in a)n.properties[l]=V(a[l],t,{...i,path:[...i.path,"properties",l]});let c=new Set(Object.keys(a)),u=new Set([...c].filter(l=>{let d=o.shape[l]._zod;return t.io==="input"?d.optin===void 0:d.optout===void 0}));u.size>0&&(n.required=Array.from(u)),o.catchall?._zod.def.type==="never"?n.additionalProperties=!1:o.catchall?o.catchall&&(n.additionalProperties=V(o.catchall,t,{...i,path:[...i.path,"additionalProperties"]})):t.io==="output"&&(n.additionalProperties=!1)},wo=(e,t,r,i)=>{let n=e._zod.def,o=n.inclusive===!1,a=n.options.map((c,u)=>V(c,t,{...i,path:[...i.path,o?"oneOf":"anyOf",u]}));o?r.oneOf=a:r.anyOf=a},cd=(e,t,r,i)=>{let n=e._zod.def,o=V(n.left,t,{...i,path:[...i.path,"allOf",0]}),a=V(n.right,t,{...i,path:[...i.path,"allOf",1]}),c=l=>"allOf"in l&&Object.keys(l).length===1,u=[...c(o)?o.allOf:[o],...c(a)?a.allOf:[a]];r.allOf=u},ud=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="array";let a=t.target==="draft-2020-12"?"prefixItems":"items",c=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=o.items.map((p,_)=>V(p,t,{...i,path:[...i.path,a,_]})),l=o.rest?V(o.rest,t,{...i,path:[...i.path,c,...t.target==="openapi-3.0"?[o.items.length]:[]]}):null;t.target==="draft-2020-12"?(n.prefixItems=u,l&&(n.items=l)):t.target==="openapi-3.0"?(n.items={anyOf:u},l&&n.items.anyOf.push(l),n.minItems=u.length,l||(n.maxItems=u.length)):(n.items=u,l&&(n.additionalItems=l));let{minimum:d,maximum:g}=e._zod.bag;typeof d=="number"&&(n.minItems=d),typeof g=="number"&&(n.maxItems=g)},ld=(e,t,r,i)=>{let n=r,o=e._zod.def;n.type="object";let a=o.keyType,u=a._zod.bag?.patterns;if(o.mode==="loose"&&u&&u.size>0){let d=V(o.valueType,t,{...i,path:[...i.path,"patternProperties","*"]});n.patternProperties={};for(let g of u)n.patternProperties[g.source]=d}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(n.propertyNames=V(o.keyType,t,{...i,path:[...i.path,"propertyNames"]})),n.additionalProperties=V(o.valueType,t,{...i,path:[...i.path,"additionalProperties"]});let l=a._zod.values;if(l){let d=[...l].filter(g=>typeof g=="string"||typeof g=="number");d.length>0&&(n.required=d)}},dd=(e,t,r,i)=>{let n=e._zod.def,o=V(n.innerType,t,i),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=n.innerType,r.nullable=!0):r.anyOf=[o,{type:"null"}]},md=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},pd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,r.default=JSON.parse(JSON.stringify(n.defaultValue))},fd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(n.defaultValue)))},gd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType;let a;try{a=n.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=a},hd=(e,t,r,i)=>{let n=e._zod.def,o=n.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?o?n.out:n.in:n.out;V(a,t,i);let c=t.seen.get(e);c.ref=a},bd=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType,r.readOnly=!0},_d=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},xo=(e,t,r,i)=>{let n=e._zod.def;V(n.innerType,t,i);let o=t.seen.get(e);o.ref=n.innerType},vd=(e,t,r,i)=>{let n=e._zod.innerType;V(n,t,i);let o=t.seen.get(e);o.ref=n},So={string:Ul,number:Ll,boolean:jl,bigint:Bl,symbol:Ml,null:Fl,undefined:Kl,void:Hl,never:Vl,any:Gl,unknown:Zl,date:Wl,enum:ql,literal:Jl,nan:Yl,template_literal:Ql,file:Xl,success:ed,custom:td,function:nd,transform:rd,map:id,set:od,array:sd,object:ad,union:wo,intersection:cd,tuple:ud,record:ld,nullable:dd,nonoptional:md,default:pd,prefault:fd,catch:gd,pipe:hd,readonly:bd,promise:_d,optional:xo,lazy:vd};function $o(e,t){if("_idmap"in e){let i=e,n=dt({...t,processors:So}),o={};for(let u of i._idmap.entries()){let[l,d]=u;V(d,n)}let a={},c={registry:i,uri:t?.uri,defs:o};n.external=c;for(let u of i._idmap.entries()){let[l,d]=u;mt(n,d),a[l]=pt(n,d)}if(Object.keys(o).length>0){let u=n.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[u]:o}}return{schemas:a}}let r=dt({...t,processors:So});return V(e,r),mt(r,e),pt(r,e)}var To=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=dt({processors:So,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return V(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),mt(this.ctx,t);let i=pt(this.ctx,t),{"~standard":n,...o}=i;return o}};var Rh={};var Ir={};Je(Ir,{ZodAny:()=>Kd,ZodArray:()=>Zd,ZodBase64:()=>qo,ZodBase64URL:()=>Jo,ZodBigInt:()=>In,ZodBigIntFormat:()=>Xo,ZodBoolean:()=>kn,ZodCIDRv4:()=>Zo,ZodCIDRv6:()=>Wo,ZodCUID:()=>Bo,ZodCUID2:()=>Mo,ZodCatch:()=>gm,ZodCodec:()=>Nr,ZodCustom:()=>Dr,ZodCustomStringFormat:()=>vn,ZodDate:()=>Or,ZodDefault:()=>um,ZodDiscriminatedUnion:()=>qd,ZodE164:()=>Yo,ZodEmail:()=>Uo,ZodEmoji:()=>Lo,ZodEnum:()=>bn,ZodExactOptional:()=>sm,ZodFile:()=>im,ZodFunction:()=>wm,ZodGUID:()=>Sr,ZodIPv4:()=>Vo,ZodIPv6:()=>Go,ZodIntersection:()=>Jd,ZodJWT:()=>Qo,ZodKSUID:()=>Ho,ZodLazy:()=>Im,ZodLiteral:()=>rm,ZodMAC:()=>zd,ZodMap:()=>tm,ZodNaN:()=>bm,ZodNanoID:()=>jo,ZodNever:()=>Vd,ZodNonOptional:()=>os,ZodNull:()=>Md,ZodNullable:()=>cm,ZodNumber:()=>yn,ZodNumberFormat:()=>Pt,ZodObject:()=>Rr,ZodOptional:()=>is,ZodPipe:()=>Pr,ZodPrefault:()=>dm,ZodPreprocess:()=>_m,ZodPromise:()=>Sm,ZodReadonly:()=>vm,ZodRecord:()=>hn,ZodSet:()=>nm,ZodString:()=>_n,ZodStringFormat:()=>W,ZodSuccess:()=>fm,ZodSymbol:()=>jd,ZodTemplateLiteral:()=>km,ZodTransform:()=>om,ZodTuple:()=>Qd,ZodType:()=>D,ZodULID:()=>Fo,ZodURL:()=>Tr,ZodUUID:()=>Ke,ZodUndefined:()=>Bd,ZodUnion:()=>Cr,ZodUnknown:()=>Hd,ZodVoid:()=>Gd,ZodXID:()=>Ko,ZodXor:()=>Wd,_ZodString:()=>zo,_default:()=>lm,_function:()=>Bb,any:()=>bb,array:()=>Ar,base64:()=>eb,base64url:()=>tb,bigint:()=>mb,boolean:()=>Ld,catch:()=>hm,check:()=>Mb,cidrv4:()=>Qh,cidrv6:()=>Xh,codec:()=>zb,cuid:()=>Hh,cuid2:()=>Vh,custom:()=>Fb,date:()=>vb,describe:()=>Kb,discriminatedUnion:()=>wb,e164:()=>nb,email:()=>Nh,emoji:()=>Fh,enum:()=>ns,exactOptional:()=>am,file:()=>Cb,float32:()=>cb,float64:()=>ub,function:()=>Bb,guid:()=>Dh,hash:()=>ab,hex:()=>sb,hostname:()=>ob,httpUrl:()=>Mh,instanceof:()=>Vb,int:()=>No,int32:()=>lb,int64:()=>pb,intersection:()=>Yd,invertCodec:()=>Ub,ipv4:()=>qh,ipv6:()=>Yh,json:()=>Zb,jwt:()=>rb,keyof:()=>yb,ksuid:()=>Wh,lazy:()=>Em,literal:()=>Rb,looseObject:()=>Eb,looseRecord:()=>$b,mac:()=>Jh,map:()=>Tb,meta:()=>Hb,nan:()=>Db,nanoid:()=>Kh,nativeEnum:()=>Ab,never:()=>es,nonoptional:()=>pm,null:()=>Fd,nullable:()=>xr,nullish:()=>Pb,number:()=>Ud,object:()=>kb,optional:()=>wr,partialRecord:()=>xb,pipe:()=>Do,prefault:()=>mm,preprocess:()=>Wb,promise:()=>jb,readonly:()=>ym,record:()=>em,refine:()=>xm,set:()=>Ob,strictObject:()=>Ib,string:()=>Er,stringFormat:()=>ib,stringbool:()=>Gb,success:()=>Nb,superRefine:()=>$m,symbol:()=>gb,templateLiteral:()=>Lb,transform:()=>rs,tuple:()=>Xd,uint32:()=>db,uint64:()=>fb,ulid:()=>Gh,undefined:()=>hb,union:()=>ts,unknown:()=>Ct,url:()=>Bh,uuid:()=>zh,uuidv4:()=>Uh,uuidv6:()=>Lh,uuidv7:()=>jh,void:()=>_b,xid:()=>Zh,xor:()=>Sb});var Oo={};Je(Oo,{endsWith:()=>sn,gt:()=>Me,gte:()=>be,includes:()=>rn,length:()=>Rt,lowercase:()=>tn,lt:()=>Be,lte:()=>Se,maxLength:()=>At,maxSize:()=>lt,mime:()=>an,minLength:()=>et,minSize:()=>Fe,multipleOf:()=>ut,negative:()=>yo,nonnegative:()=>Io,nonpositive:()=>ko,normalize:()=>cn,overwrite:()=>Ne,positive:()=>vo,property:()=>Eo,regex:()=>en,size:()=>Ot,slugify:()=>mn,startsWith:()=>on,toLowerCase:()=>ln,toUpperCase:()=>dn,trim:()=>un,uppercase:()=>nn});var gn={};Je(gn,{ZodISODate:()=>Ro,ZodISODateTime:()=>Ao,ZodISODuration:()=>Po,ZodISOTime:()=>Co,date:()=>kd,datetime:()=>yd,duration:()=>Ed,time:()=>Id});var Ao=h("ZodISODateTime",(e,t)=>{Yc.init(e,t),W.init(e,t)});function yd(e){return tl(Ao,e)}var Ro=h("ZodISODate",(e,t)=>{Qc.init(e,t),W.init(e,t)});function kd(e){return nl(Ro,e)}var Co=h("ZodISOTime",(e,t)=>{Xc.init(e,t),W.init(e,t)});function Id(e){return rl(Co,e)}var Po=h("ZodISODuration",(e,t)=>{eu.init(e,t),W.init(e,t)});function Ed(e){return il(Po,e)}var Ch=(e,t)=>{ur.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:r=>dr(e,r)},flatten:{value:r=>lr(e,r)},addIssue:{value:r=>{e.issues.push(r),e.message=JSON.stringify(e.issues,Vt,2)}},addIssues:{value:r=>{e.issues.push(...r),e.message=JSON.stringify(e.issues,Vt,2)}},isEmpty:{get(){return e.issues.length===0}}})},Lw=h("ZodError",Ch),Ie=h("ZodError",Ch,{Parent:Error});var Sd=Wt(Ie),wd=qt(Ie),xd=Jt(Ie),$d=Yt(Ie),Td=xi(Ie),Od=$i(Ie),Ad=Ti(Ie),Rd=Oi(Ie),Cd=Ai(Ie),Pd=Ri(Ie),Nd=Ci(Ie),Dd=Pi(Ie);var Ph=new WeakMap;function $r(e,t,r){let i=Object.getPrototypeOf(e),n=Ph.get(i);if(n||(n=new Set,Ph.set(i,n)),!n.has(t)){n.add(t);for(let o in r){let a=r[o];Object.defineProperty(i,o,{configurable:!0,enumerable:!1,get(){let c=a.bind(this);return Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:c}),c},set(c){Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:c})}})}}}var D=h("ZodType",(e,t)=>(N.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:fn(e,"input"),output:fn(e,"output")}}),e.toJSONSchema=zl(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(r,i)=>Sd(e,r,i,{callee:e.parse}),e.safeParse=(r,i)=>xd(e,r,i),e.parseAsync=async(r,i)=>wd(e,r,i,{callee:e.parseAsync}),e.safeParseAsync=async(r,i)=>$d(e,r,i),e.spa=e.safeParseAsync,e.encode=(r,i)=>Td(e,r,i),e.decode=(r,i)=>Od(e,r,i),e.encodeAsync=async(r,i)=>Ad(e,r,i),e.decodeAsync=async(r,i)=>Rd(e,r,i),e.safeEncode=(r,i)=>Cd(e,r,i),e.safeDecode=(r,i)=>Pd(e,r,i),e.safeEncodeAsync=async(r,i)=>Nd(e,r,i),e.safeDecodeAsync=async(r,i)=>Dd(e,r,i),$r(e,"ZodType",{check(...r){let i=this.def;return this.clone($.mergeDefs(i,{checks:[...i.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...r){return this.check(...r)},clone(r,i){return ge(this,r,i)},brand(){return this},register(r,i){return r.add(this,i),this},refine(r,i){return this.check(xm(r,i))},superRefine(r,i){return this.check($m(r,i))},overwrite(r){return this.check(Ne(r))},optional(){return wr(this)},exactOptional(){return am(this)},nullable(){return xr(this)},nullish(){return wr(xr(this))},nonoptional(r){return pm(this,r)},array(){return Ar(this)},or(r){return ts([this,r])},and(r){return Yd(this,r)},transform(r){return Do(this,rs(r))},default(r){return lm(this,r)},prefault(r){return mm(this,r)},catch(r){return hm(this,r)},pipe(r){return Do(this,r)},readonly(){return ym(this)},describe(r){let i=this.clone();return de.add(i,{description:r}),i},meta(...r){if(r.length===0)return de.get(this);let i=this.clone();return de.add(i,r[0]),i},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(r){return r(this)}}),Object.defineProperty(e,"description",{get(){return de.get(e)?.description},configurable:!0}),e)),zo=h("_ZodString",(e,t)=>{Tt.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Ul(e,i,n,o);let r=e._zod.bag;e.format=r.format??null,e.minLength=r.minimum??null,e.maxLength=r.maximum??null,$r(e,"_ZodString",{regex(...i){return this.check(en(...i))},includes(...i){return this.check(rn(...i))},startsWith(...i){return this.check(on(...i))},endsWith(...i){return this.check(sn(...i))},min(...i){return this.check(et(...i))},max(...i){return this.check(At(...i))},length(...i){return this.check(Rt(...i))},nonempty(...i){return this.check(et(1,...i))},lowercase(i){return this.check(tn(i))},uppercase(i){return this.check(nn(i))},trim(){return this.check(un())},normalize(...i){return this.check(cn(...i))},toLowerCase(){return this.check(ln())},toUpperCase(){return this.check(dn())},slugify(){return this.check(mn())}})}),_n=h("ZodString",(e,t)=>{Tt.init(e,t),zo.init(e,t),e.email=r=>e.check(Qi(Uo,r)),e.url=r=>e.check(kr(Tr,r)),e.jwt=r=>e.check(_o(Qo,r)),e.emoji=r=>e.check(ro(Lo,r)),e.guid=r=>e.check(yr(Sr,r)),e.uuid=r=>e.check(Xi(Ke,r)),e.uuidv4=r=>e.check(eo(Ke,r)),e.uuidv6=r=>e.check(to(Ke,r)),e.uuidv7=r=>e.check(no(Ke,r)),e.nanoid=r=>e.check(io(jo,r)),e.guid=r=>e.check(yr(Sr,r)),e.cuid=r=>e.check(oo(Bo,r)),e.cuid2=r=>e.check(so(Mo,r)),e.ulid=r=>e.check(ao(Fo,r)),e.base64=r=>e.check(go(qo,r)),e.base64url=r=>e.check(ho(Jo,r)),e.xid=r=>e.check(co(Ko,r)),e.ksuid=r=>e.check(uo(Ho,r)),e.ipv4=r=>e.check(lo(Vo,r)),e.ipv6=r=>e.check(mo(Go,r)),e.cidrv4=r=>e.check(po(Zo,r)),e.cidrv6=r=>e.check(fo(Wo,r)),e.e164=r=>e.check(bo(Yo,r)),e.datetime=r=>e.check(yd(r)),e.date=r=>e.check(kd(r)),e.time=r=>e.check(Id(r)),e.duration=r=>e.check(Ed(r))});function Er(e){return Yu(_n,e)}var W=h("ZodStringFormat",(e,t)=>{Z.init(e,t),zo.init(e,t)}),Uo=h("ZodEmail",(e,t)=>{Fc.init(e,t),W.init(e,t)});function Nh(e){return Qi(Uo,e)}var Sr=h("ZodGUID",(e,t)=>{Bc.init(e,t),W.init(e,t)});function Dh(e){return yr(Sr,e)}var Ke=h("ZodUUID",(e,t)=>{Mc.init(e,t),W.init(e,t)});function zh(e){return Xi(Ke,e)}function Uh(e){return eo(Ke,e)}function Lh(e){return to(Ke,e)}function jh(e){return no(Ke,e)}var Tr=h("ZodURL",(e,t)=>{Kc.init(e,t),W.init(e,t)});function Bh(e){return kr(Tr,e)}function Mh(e){return kr(Tr,{protocol:Ee.httpProtocol,hostname:Ee.domain,...$.normalizeParams(e)})}var Lo=h("ZodEmoji",(e,t)=>{Hc.init(e,t),W.init(e,t)});function Fh(e){return ro(Lo,e)}var jo=h("ZodNanoID",(e,t)=>{Vc.init(e,t),W.init(e,t)});function Kh(e){return io(jo,e)}var Bo=h("ZodCUID",(e,t)=>{Gc.init(e,t),W.init(e,t)});function Hh(e){return oo(Bo,e)}var Mo=h("ZodCUID2",(e,t)=>{Zc.init(e,t),W.init(e,t)});function Vh(e){return so(Mo,e)}var Fo=h("ZodULID",(e,t)=>{Wc.init(e,t),W.init(e,t)});function Gh(e){return ao(Fo,e)}var Ko=h("ZodXID",(e,t)=>{qc.init(e,t),W.init(e,t)});function Zh(e){return co(Ko,e)}var Ho=h("ZodKSUID",(e,t)=>{Jc.init(e,t),W.init(e,t)});function Wh(e){return uo(Ho,e)}var Vo=h("ZodIPv4",(e,t)=>{tu.init(e,t),W.init(e,t)});function qh(e){return lo(Vo,e)}var zd=h("ZodMAC",(e,t)=>{ru.init(e,t),W.init(e,t)});function Jh(e){return Xu(zd,e)}var Go=h("ZodIPv6",(e,t)=>{nu.init(e,t),W.init(e,t)});function Yh(e){return mo(Go,e)}var Zo=h("ZodCIDRv4",(e,t)=>{iu.init(e,t),W.init(e,t)});function Qh(e){return po(Zo,e)}var Wo=h("ZodCIDRv6",(e,t)=>{ou.init(e,t),W.init(e,t)});function Xh(e){return fo(Wo,e)}var qo=h("ZodBase64",(e,t)=>{au.init(e,t),W.init(e,t)});function eb(e){return go(qo,e)}var Jo=h("ZodBase64URL",(e,t)=>{cu.init(e,t),W.init(e,t)});function tb(e){return ho(Jo,e)}var Yo=h("ZodE164",(e,t)=>{uu.init(e,t),W.init(e,t)});function nb(e){return bo(Yo,e)}var Qo=h("ZodJWT",(e,t)=>{lu.init(e,t),W.init(e,t)});function rb(e){return _o(Qo,e)}var vn=h("ZodCustomStringFormat",(e,t)=>{du.init(e,t),W.init(e,t)});function ib(e,t,r={}){return pn(vn,e,t,r)}function ob(e){return pn(vn,"hostname",Ee.hostname,e)}function sb(e){return pn(vn,"hex",Ee.hex,e)}function ab(e,t){let r=t?.enc??"hex",i=`${e}_${r}`,n=Ee[i];if(!n)throw new Error(`Unrecognized hash format: ${i}`);return pn(vn,i,n,t)}var yn=h("ZodNumber",(e,t)=>{Fi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Ll(e,i,n,o),$r(e,"ZodNumber",{gt(i,n){return this.check(Me(i,n))},gte(i,n){return this.check(be(i,n))},min(i,n){return this.check(be(i,n))},lt(i,n){return this.check(Be(i,n))},lte(i,n){return this.check(Se(i,n))},max(i,n){return this.check(Se(i,n))},int(i){return this.check(No(i))},safe(i){return this.check(No(i))},positive(i){return this.check(Me(0,i))},nonnegative(i){return this.check(be(0,i))},negative(i){return this.check(Be(0,i))},nonpositive(i){return this.check(Se(0,i))},multipleOf(i,n){return this.check(ut(i,n))},step(i,n){return this.check(ut(i,n))},finite(){return this}});let r=e._zod.bag;e.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),e.isFinite=!0,e.format=r.format??null});function Ud(e){return ol(yn,e)}var Pt=h("ZodNumberFormat",(e,t)=>{mu.init(e,t),yn.init(e,t)});function No(e){return al(Pt,e)}function cb(e){return cl(Pt,e)}function ub(e){return ul(Pt,e)}function lb(e){return ll(Pt,e)}function db(e){return dl(Pt,e)}var kn=h("ZodBoolean",(e,t)=>{gr.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>jl(e,r,i,n)});function Ld(e){return ml(kn,e)}var In=h("ZodBigInt",(e,t)=>{Ki.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Bl(e,i,n,o),e.gte=(i,n)=>e.check(be(i,n)),e.min=(i,n)=>e.check(be(i,n)),e.gt=(i,n)=>e.check(Me(i,n)),e.gte=(i,n)=>e.check(be(i,n)),e.min=(i,n)=>e.check(be(i,n)),e.lt=(i,n)=>e.check(Be(i,n)),e.lte=(i,n)=>e.check(Se(i,n)),e.max=(i,n)=>e.check(Se(i,n)),e.positive=i=>e.check(Me(BigInt(0),i)),e.negative=i=>e.check(Be(BigInt(0),i)),e.nonpositive=i=>e.check(Se(BigInt(0),i)),e.nonnegative=i=>e.check(be(BigInt(0),i)),e.multipleOf=(i,n)=>e.check(ut(i,n));let r=e._zod.bag;e.minValue=r.minimum??null,e.maxValue=r.maximum??null,e.format=r.format??null});function mb(e){return fl(In,e)}var Xo=h("ZodBigIntFormat",(e,t)=>{pu.init(e,t),In.init(e,t)});function pb(e){return hl(Xo,e)}function fb(e){return bl(Xo,e)}var jd=h("ZodSymbol",(e,t)=>{fu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Ml(e,r,i,n)});function gb(e){return _l(jd,e)}var Bd=h("ZodUndefined",(e,t)=>{gu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Kl(e,r,i,n)});function hb(e){return vl(Bd,e)}var Md=h("ZodNull",(e,t)=>{hu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Fl(e,r,i,n)});function Fd(e){return yl(Md,e)}var Kd=h("ZodAny",(e,t)=>{bu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Gl(e,r,i,n)});function bb(){return kl(Kd)}var Hd=h("ZodUnknown",(e,t)=>{_u.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Zl(e,r,i,n)});function Ct(){return Il(Hd)}var Vd=h("ZodNever",(e,t)=>{vu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Vl(e,r,i,n)});function es(e){return El(Vd,e)}var Gd=h("ZodVoid",(e,t)=>{yu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Hl(e,r,i,n)});function _b(e){return Sl(Gd,e)}var Or=h("ZodDate",(e,t)=>{ku.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>Wl(e,i,n,o),e.min=(i,n)=>e.check(be(i,n)),e.max=(i,n)=>e.check(Se(i,n));let r=e._zod.bag;e.minDate=r.minimum?new Date(r.minimum):null,e.maxDate=r.maximum?new Date(r.maximum):null});function vb(e){return wl(Or,e)}var Zd=h("ZodArray",(e,t)=>{Iu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>sd(e,r,i,n),e.element=t.element,$r(e,"ZodArray",{min(r,i){return this.check(et(r,i))},nonempty(r){return this.check(et(1,r))},max(r,i){return this.check(At(r,i))},length(r,i){return this.check(Rt(r,i))},unwrap(){return this.element}})});function Ar(e,t){return Tl(Zd,e,t)}function yb(e){let t=e._zod.def.shape;return ns(Object.keys(t))}var Rr=h("ZodObject",(e,t)=>{Eu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ad(e,r,i,n),$.defineLazy(e,"shape",()=>t.shape),$r(e,"ZodObject",{keyof(){return ns(Object.keys(this._zod.def.shape))},catchall(r){return this.clone({...this._zod.def,catchall:r})},passthrough(){return this.clone({...this._zod.def,catchall:Ct()})},loose(){return this.clone({...this._zod.def,catchall:Ct()})},strict(){return this.clone({...this._zod.def,catchall:es()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(r){return $.extend(this,r)},safeExtend(r){return $.safeExtend(this,r)},merge(r){return $.merge(this,r)},pick(r){return $.pick(this,r)},omit(r){return $.omit(this,r)},partial(...r){return $.partial(is,this,r[0])},required(...r){return $.required(os,this,r[0])}})});function kb(e,t){let r={type:"object",shape:e??{},...$.normalizeParams(t)};return new Rr(r)}function Ib(e,t){return new Rr({type:"object",shape:e,catchall:es(),...$.normalizeParams(t)})}function Eb(e,t){return new Rr({type:"object",shape:e,catchall:Ct(),...$.normalizeParams(t)})}var Cr=h("ZodUnion",(e,t)=>{hr.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>wo(e,r,i,n),e.options=t.options});function ts(e,t){return new Cr({type:"union",options:e,...$.normalizeParams(t)})}var Wd=h("ZodXor",(e,t)=>{Cr.init(e,t),Su.init(e,t),e._zod.processJSONSchema=(r,i,n)=>wo(e,r,i,n),e.options=t.options});function Sb(e,t){return new Wd({type:"union",options:e,inclusive:!1,...$.normalizeParams(t)})}var qd=h("ZodDiscriminatedUnion",(e,t)=>{Cr.init(e,t),wu.init(e,t)});function wb(e,t,r){return new qd({type:"union",options:t,discriminator:e,...$.normalizeParams(r)})}var Jd=h("ZodIntersection",(e,t)=>{xu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>cd(e,r,i,n)});function Yd(e,t){return new Jd({type:"intersection",left:e,right:t})}var Qd=h("ZodTuple",(e,t)=>{Hi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ud(e,r,i,n),e.rest=r=>e.clone({...e._zod.def,rest:r})});function Xd(e,t,r){let i=t instanceof N,n=i?r:t,o=i?t:null;return new Qd({type:"tuple",items:e,rest:o,...$.normalizeParams(n)})}var hn=h("ZodRecord",(e,t)=>{$u.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ld(e,r,i,n),e.keyType=t.keyType,e.valueType=t.valueType});function em(e,t,r){return!t||!t._zod?new hn({type:"record",keyType:Er(),valueType:e,...$.normalizeParams(t)}):new hn({type:"record",keyType:e,valueType:t,...$.normalizeParams(r)})}function xb(e,t,r){let i=ge(e);return i._zod.values=void 0,new hn({type:"record",keyType:i,valueType:t,...$.normalizeParams(r)})}function $b(e,t,r){return new hn({type:"record",keyType:e,valueType:t,mode:"loose",...$.normalizeParams(r)})}var tm=h("ZodMap",(e,t)=>{Tu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>id(e,r,i,n),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...r)=>e.check(Fe(...r)),e.nonempty=r=>e.check(Fe(1,r)),e.max=(...r)=>e.check(lt(...r)),e.size=(...r)=>e.check(Ot(...r))});function Tb(e,t,r){return new tm({type:"map",keyType:e,valueType:t,...$.normalizeParams(r)})}var nm=h("ZodSet",(e,t)=>{Ou.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>od(e,r,i,n),e.min=(...r)=>e.check(Fe(...r)),e.nonempty=r=>e.check(Fe(1,r)),e.max=(...r)=>e.check(lt(...r)),e.size=(...r)=>e.check(Ot(...r))});function Ob(e,t){return new nm({type:"set",valueType:e,...$.normalizeParams(t)})}var bn=h("ZodEnum",(e,t)=>{Au.init(e,t),D.init(e,t),e._zod.processJSONSchema=(i,n,o)=>ql(e,i,n,o),e.enum=t.entries,e.options=Object.values(t.entries);let r=new Set(Object.keys(t.entries));e.extract=(i,n)=>{let o={};for(let a of i)if(r.has(a))o[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new bn({...t,checks:[],...$.normalizeParams(n),entries:o})},e.exclude=(i,n)=>{let o={...t.entries};for(let a of i)if(r.has(a))delete o[a];else throw new Error(`Key ${a} not found in enum`);return new bn({...t,checks:[],...$.normalizeParams(n),entries:o})}});function ns(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(i=>[i,i])):e;return new bn({type:"enum",entries:r,...$.normalizeParams(t)})}function Ab(e,t){return new bn({type:"enum",entries:e,...$.normalizeParams(t)})}var rm=h("ZodLiteral",(e,t)=>{Ru.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Jl(e,r,i,n),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Rb(e,t){return new rm({type:"literal",values:Array.isArray(e)?e:[e],...$.normalizeParams(t)})}var im=h("ZodFile",(e,t)=>{Cu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Xl(e,r,i,n),e.min=(r,i)=>e.check(Fe(r,i)),e.max=(r,i)=>e.check(lt(r,i)),e.mime=(r,i)=>e.check(an(Array.isArray(r)?r:[r],i))});function Cb(e){return Ol(im,e)}var om=h("ZodTransform",(e,t)=>{Pu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>rd(e,r,i,n),e._zod.parse=(r,i)=>{if(i.direction==="backward")throw new it(e.constructor.name);r.addIssue=o=>{if(typeof o=="string")r.issues.push($.issue(o,r.value,t));else{let a=o;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=r.value),a.inst??(a.inst=e),r.issues.push($.issue(a))}};let n=t.transform(r.value,r);return n instanceof Promise?n.then(o=>(r.value=o,r.fallback=!0,r)):(r.value=n,r.fallback=!0,r)}});function rs(e){return new om({type:"transform",transform:e})}var is=h("ZodOptional",(e,t)=>{Vi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>xo(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function wr(e){return new is({type:"optional",innerType:e})}var sm=h("ZodExactOptional",(e,t)=>{Nu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>xo(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function am(e){return new sm({type:"optional",innerType:e})}var cm=h("ZodNullable",(e,t)=>{Du.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>dd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function xr(e){return new cm({type:"nullable",innerType:e})}function Pb(e){return wr(xr(e))}var um=h("ZodDefault",(e,t)=>{zu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>pd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function lm(e,t){return new um({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():$.shallowClone(t)}})}var dm=h("ZodPrefault",(e,t)=>{Uu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>fd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function mm(e,t){return new dm({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():$.shallowClone(t)}})}var os=h("ZodNonOptional",(e,t)=>{Lu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>md(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function pm(e,t){return new os({type:"nonoptional",innerType:e,...$.normalizeParams(t)})}var fm=h("ZodSuccess",(e,t)=>{ju.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>ed(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function Nb(e){return new fm({type:"success",innerType:e})}var gm=h("ZodCatch",(e,t)=>{Bu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>gd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function hm(e,t){return new gm({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var bm=h("ZodNaN",(e,t)=>{Mu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Yl(e,r,i,n)});function Db(e){return $l(bm,e)}var Pr=h("ZodPipe",(e,t)=>{Gi.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>hd(e,r,i,n),e.in=t.in,e.out=t.out});function Do(e,t){return new Pr({type:"pipe",in:e,out:t})}var Nr=h("ZodCodec",(e,t)=>{Pr.init(e,t),br.init(e,t)});function zb(e,t,r){return new Nr({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}function Ub(e){let t=e._zod.def;return new Nr({type:"pipe",in:t.out,out:t.in,transform:t.reverseTransform,reverseTransform:t.transform})}var _m=h("ZodPreprocess",(e,t)=>{Pr.init(e,t),Fu.init(e,t)}),vm=h("ZodReadonly",(e,t)=>{Ku.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>bd(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function ym(e){return new vm({type:"readonly",innerType:e})}var km=h("ZodTemplateLiteral",(e,t)=>{Hu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>Ql(e,r,i,n)});function Lb(e,t){return new km({type:"template_literal",parts:e,...$.normalizeParams(t)})}var Im=h("ZodLazy",(e,t)=>{Zu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>vd(e,r,i,n),e.unwrap=()=>e._zod.def.getter()});function Em(e){return new Im({type:"lazy",getter:e})}var Sm=h("ZodPromise",(e,t)=>{Gu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>_d(e,r,i,n),e.unwrap=()=>e._zod.def.innerType});function jb(e){return new Sm({type:"promise",innerType:e})}var wm=h("ZodFunction",(e,t)=>{Vu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>nd(e,r,i,n)});function Bb(e){return new wm({type:"function",input:Array.isArray(e?.input)?Xd(e?.input):e?.input??Ar(Ct()),output:e?.output??Ct()})}var Dr=h("ZodCustom",(e,t)=>{Wu.init(e,t),D.init(e,t),e._zod.processJSONSchema=(r,i,n)=>td(e,r,i,n)});function Mb(e){let t=new J({check:"custom"});return t._zod.check=e,t}function Fb(e,t){return Al(Dr,e??(()=>!0),t)}function xm(e,t={}){return Rl(Dr,e,t)}function $m(e,t){return Cl(e,t)}var Kb=Pl,Hb=Nl;function Vb(e,t={}){let r=new Dr({type:"custom",check:"custom",fn:i=>i instanceof e,abort:!0,...$.normalizeParams(t)});return r._zod.bag.Class=e,r._zod.check=i=>{i.value instanceof e||i.issues.push({code:"invalid_type",expected:e.name,input:i.value,inst:r,path:[...r._zod.def.path??[]]})},r}var Gb=(...e)=>Dl({Codec:Nr,Boolean:kn,String:_n},...e);function Zb(e){let t=Em(()=>ts([Er(e),Ud(),Ld(),Fd(),Ar(t),em(Er(),t)]));return t}function Wb(e,t){return new _m({type:"pipe",in:rs(e),out:t})}var Bw={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function Mw(e){se({customError:e})}function Fw(){return se().customError}var Tm;Tm||(Tm={});var R={...Ir,...Oo,iso:gn},Kw=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function Hw(e,t){let r=e.$schema;return r==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":r==="http://json-schema.org/draft-07/schema#"?"draft-7":r==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function Vw(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let r=e.slice(1).split("/").filter(Boolean);if(r.length===0)return t.rootSchema;let i=t.version==="draft-2020-12"?"$defs":"definitions";if(r[0]===i){let n=r[1];if(!n||!t.defs[n])throw new Error(`Reference not found: ${e}`);return t.defs[n]}throw new Error(`Reference not found: ${e}`)}function qb(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return R.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let n=e.$ref;if(t.refs.has(n))return t.refs.get(n);if(t.processing.has(n))return R.lazy(()=>{if(!t.refs.has(n))throw new Error(`Circular reference not resolved: ${n}`);return t.refs.get(n)});t.processing.add(n);let o=Vw(n,t),a=me(o,t);return t.refs.set(n,a),t.processing.delete(n),a}if(e.enum!==void 0){let n=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&n.length===1&&n[0]===null)return R.null();if(n.length===0)return R.never();if(n.length===1)return R.literal(n[0]);if(n.every(a=>typeof a=="string"))return R.enum(n);let o=n.map(a=>R.literal(a));return o.length<2?o[0]:R.union([o[0],o[1],...o.slice(2)])}if(e.const!==void 0)return R.literal(e.const);let r=e.type;if(Array.isArray(r)){let n=r.map(o=>{let a={...e,type:o};return qb(a,t)});return n.length===0?R.never():n.length===1?n[0]:R.union(n)}if(!r)return R.any();let i;switch(r){case"string":{let n=R.string();if(e.format){let o=e.format;o==="email"?n=n.check(R.email()):o==="uri"||o==="uri-reference"?n=n.check(R.url()):o==="uuid"||o==="guid"?n=n.check(R.uuid()):o==="date-time"?n=n.check(R.iso.datetime()):o==="date"?n=n.check(R.iso.date()):o==="time"?n=n.check(R.iso.time()):o==="duration"?n=n.check(R.iso.duration()):o==="ipv4"?n=n.check(R.ipv4()):o==="ipv6"?n=n.check(R.ipv6()):o==="mac"?n=n.check(R.mac()):o==="cidr"?n=n.check(R.cidrv4()):o==="cidr-v6"?n=n.check(R.cidrv6()):o==="base64"?n=n.check(R.base64()):o==="base64url"?n=n.check(R.base64url()):o==="e164"?n=n.check(R.e164()):o==="jwt"?n=n.check(R.jwt()):o==="emoji"?n=n.check(R.emoji()):o==="nanoid"?n=n.check(R.nanoid()):o==="cuid"?n=n.check(R.cuid()):o==="cuid2"?n=n.check(R.cuid2()):o==="ulid"?n=n.check(R.ulid()):o==="xid"?n=n.check(R.xid()):o==="ksuid"&&(n=n.check(R.ksuid()))}typeof e.minLength=="number"&&(n=n.min(e.minLength)),typeof e.maxLength=="number"&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),i=n;break}case"number":case"integer":{let n=r==="integer"?R.number().int():R.number();typeof e.minimum=="number"&&(n=n.min(e.minimum)),typeof e.maximum=="number"&&(n=n.max(e.maximum)),typeof e.exclusiveMinimum=="number"?n=n.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(n=n.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?n=n.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(n=n.lt(e.maximum)),typeof e.multipleOf=="number"&&(n=n.multipleOf(e.multipleOf)),i=n;break}case"boolean":{i=R.boolean();break}case"null":{i=R.null();break}case"object":{let n={},o=e.properties||{},a=new Set(e.required||[]);for(let[u,l]of Object.entries(o)){let d=me(l,t);n[u]=a.has(u)?d:d.optional()}if(e.propertyNames){let u=me(e.propertyNames,t),l=e.additionalProperties&&typeof e.additionalProperties=="object"?me(e.additionalProperties,t):R.any();if(Object.keys(n).length===0){i=R.record(u,l);break}let d=R.object(n).passthrough(),g=R.looseRecord(u,l);i=R.intersection(d,g);break}if(e.patternProperties){let u=e.patternProperties,l=Object.keys(u),d=[];for(let p of l){let _=me(u[p],t),S=R.string().regex(new RegExp(p));d.push(R.looseRecord(S,_))}let g=[];if(Object.keys(n).length>0&&g.push(R.object(n).passthrough()),g.push(...d),g.length===0)i=R.object({}).passthrough();else if(g.length===1)i=g[0];else{let p=R.intersection(g[0],g[1]);for(let _=2;_<g.length;_++)p=R.intersection(p,g[_]);i=p}break}let c=R.object(n);e.additionalProperties===!1?i=c.strict():typeof e.additionalProperties=="object"?i=c.catchall(me(e.additionalProperties,t)):i=c.passthrough();break}case"array":{let n=e.prefixItems,o=e.items;if(n&&Array.isArray(n)){let a=n.map(u=>me(u,t)),c=o&&typeof o=="object"&&!Array.isArray(o)?me(o,t):void 0;c?i=R.tuple(a).rest(c):i=R.tuple(a),typeof e.minItems=="number"&&(i=i.check(R.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(R.maxLength(e.maxItems)))}else if(Array.isArray(o)){let a=o.map(u=>me(u,t)),c=e.additionalItems&&typeof e.additionalItems=="object"?me(e.additionalItems,t):void 0;c?i=R.tuple(a).rest(c):i=R.tuple(a),typeof e.minItems=="number"&&(i=i.check(R.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(R.maxLength(e.maxItems)))}else if(o!==void 0){let a=me(o,t),c=R.array(a);typeof e.minItems=="number"&&(c=c.min(e.minItems)),typeof e.maxItems=="number"&&(c=c.max(e.maxItems)),i=c}else i=R.array(R.any());break}default:throw new Error(`Unsupported type: ${r}`)}return i}function me(e,t){if(typeof e=="boolean")return e?R.any():R.never();let r=qb(e,t),i=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let c=e.anyOf.map(l=>me(l,t)),u=R.union(c);r=i?R.intersection(r,u):u}if(e.oneOf&&Array.isArray(e.oneOf)){let c=e.oneOf.map(l=>me(l,t)),u=R.xor(c);r=i?R.intersection(r,u):u}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)r=i?r:R.any();else{let c=i?r:me(e.allOf[0],t),u=i?0:1;for(let l=u;l<e.allOf.length;l++)c=R.intersection(c,me(e.allOf[l],t));r=c}e.nullable===!0&&t.version==="openapi-3.0"&&(r=R.nullable(r)),e.readOnly===!0&&(r=R.readonly(r)),e.default!==void 0&&(r=r.default(e.default));let n={},o=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let c of o)c in e&&(n[c]=e[c]);let a=["contentEncoding","contentMediaType","contentSchema"];for(let c of a)c in e&&(n[c]=e[c]);for(let c of Object.keys(e))Kw.has(c)||(n[c]=e[c]);return Object.keys(n).length>0&&t.registry.add(r,n),e.description&&(r=r.describe(e.description)),r}function Jb(e,t){if(typeof e=="boolean")return e?R.any():R.never();let r;try{r=JSON.parse(JSON.stringify(e))}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let i=Hw(r,t?.defaultTarget),n=r.$defs||r.definitions||{},o={version:i,defs:n,refs:new Map,processing:new Set,rootSchema:r,registry:t?.registry??de};return me(r,o)}var Om={};Je(Om,{bigint:()=>qw,boolean:()=>Ww,date:()=>Jw,number:()=>Zw,string:()=>Gw});function Gw(e){return Qu(_n,e)}function Zw(e){return sl(yn,e)}function Ww(e){return pl(kn,e)}function qw(e){return gl(In,e)}function Jw(e){return xl(Or,e)}se(Zi());var zr=s.object({endpoint:s.string().min(1).max(256).optional(),apiKey:s.string().min(1).max(256).optional(),workspace:s.string().min(1).max(256).optional(),region:s.string().min(1).max(256).optional()}).strict(),Yb=s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]),Am=s.object({d:s.number().int().nonnegative(),w:s.number().int().positive(),c:s.number().nonnegative(),agg:Yb.default("COUNT").optional(),valueProperty:s.string().optional(),uniqueProperty:s.string().optional(),provenance:s.enum(["plan","manual","provider"]).optional(),warnAt:s.number().min(0).max(1).optional(),scope:zr.optional()}),Yw=s.object({kind:s.literal("credential_validity")}),Qw=s.object({kind:s.literal("track_only_bypass")}),Xw=s.object({kind:s.literal("lifecycle_block"),blockOn:s.array(s.string()).default(["SUSPENDED","CANCELLED","INACTIVE"]),code:s.string().default("subscription_inactive")}),ex=s.object({kind:s.literal("scope"),requireExplicit:s.boolean().default(!0)}),tx=s.object({kind:s.literal("permission"),mode:s.enum(["grace","closed"]).optional()}),nx=s.object({kind:s.literal("geo_restriction"),allow:s.array(s.string().length(2).regex(/^[A-Z]{2}$/)).optional(),block:s.array(s.string().length(2).regex(/^[A-Z]{2}$/)).optional()}).refine(e=>e.allow!==void 0||e.block!==void 0,{message:"geo_restriction requires either `allow` or `block`"}),rx=s.enum(["fixed_window","sliding_window","token_bucket"]),ix=Am.extend({kind:s.literal("rate_limit"),m:s.enum(["e","t"]).default("e"),strategy:rx.default("fixed_window"),bucket_capacity:s.number().positive().optional(),refill_rate_per_second:s.number().positive().optional()}).superRefine((e,t)=>{e.strategy==="token_bucket"?(e.bucket_capacity===void 0&&t.addIssue({code:"custom",message:"token_bucket strategy requires `bucket_capacity` (positive number)",path:["bucket_capacity"]}),e.refill_rate_per_second===void 0&&t.addIssue({code:"custom",message:"token_bucket strategy requires `refill_rate_per_second` (positive number)",path:["refill_rate_per_second"]})):(e.bucket_capacity!==void 0&&t.addIssue({code:"custom",message:`bucket_capacity is only valid when strategy === 'token_bucket' (got '${e.strategy}')`,path:["bucket_capacity"]}),e.refill_rate_per_second!==void 0&&t.addIssue({code:"custom",message:`refill_rate_per_second is only valid when strategy === 'token_bucket' (got '${e.strategy}')`,path:["refill_rate_per_second"]}))}),ox=s.enum(["fixed_window","sliding_window"]),sx=Am.extend({kind:s.literal("quota"),ovr:s.enum(["BLOCK","ALLOW_AND_BILL"]),strategy:ox.default("fixed_window")}),ax=Am.extend({kind:s.literal("credit_balance"),ovr:s.enum(["BLOCK","ALLOW_AND_BILL"])}),cx=s.object({kind:s.literal("concurrency"),dimension:s.string().min(1).max(120),limit:s.number().int().positive(),lease_ttl_seconds:s.number().int().positive().max(3600).default(60)}),ux=s.object({kind:s.literal("resource_limit"),resource:s.string().min(1).max(120),limit:s.number().int().nonnegative()}),lx=s.object({kind:s.literal("reservation"),dimension:s.string().min(1).max(120),max_outstanding:s.number().int().positive(),hold_seconds:s.number().int().positive().max(86400)}),dx=s.enum(["plan","manual","provider"]),Rm=s.object({maxInputTokens:s.number().int().positive().optional(),maxOutputTokens:s.number().int().positive().optional(),maxContextTokens:s.number().int().positive().optional(),maxPayloadBytes:s.number().int().positive().optional(),enforcement:s.enum(["enforce","track"]).default("enforce"),failMode:s.enum(["open","closed"]).default("open"),tokenCountSource:s.enum(["declared","estimated"]).optional(),scope:zr.optional()}).refine(Qb,{message:"capacity requires at least one ceiling (maxInputTokens / maxOutputTokens / maxContextTokens / maxPayloadBytes)"});function Qb(e){return e.maxInputTokens!==void 0||e.maxOutputTokens!==void 0||e.maxContextTokens!==void 0||e.maxPayloadBytes!==void 0}var mx=s.object({kind:s.literal("capacity"),maxInputTokens:s.number().int().positive().optional(),maxOutputTokens:s.number().int().positive().optional(),maxContextTokens:s.number().int().positive().optional(),maxPayloadBytes:s.number().int().positive().optional(),enforcement:s.enum(["enforce","track"]).default("enforce"),failMode:s.enum(["open","closed"]).default("open"),tokenCountSource:s.enum(["declared","estimated"]).optional(),scope:zr.optional(),provenance:dx.optional()}).refine(Qb,{message:"capacity requires at least one ceiling (maxInputTokens / maxOutputTokens / maxContextTokens / maxPayloadBytes)"}),Cm=s.discriminatedUnion("kind",[Yw,Qw,Xw,ex,tx,nx,ix,sx,ax,ux,cx,lx,mx]);var Ur=["customer_operation","control_plane","admin_internal","background_job","webhook","healthcheck","unclassified"],t0=new Set(Ur);var ss=s.object({trafficClass:s.enum(Ur),policySource:s.enum(["declared","inherited","defaulted","inferred"]),limitParticipation:s.object({profile:s.enum(["customer_usage","business_capacity","control_plane","admin_internal","platform_abuse_only","healthcheck","none"]),pools:s.array(s.string().min(1)).optional(),scopes:s.array(s.object({endpoint:s.string().optional(),apiKey:s.string().optional(),workspace:s.string().optional(),region:s.string().optional()}).passthrough()).optional(),metrics:s.array(s.string().min(1)).optional()}).passthrough(),customerBillingPolicy:s.object({customerBillable:s.boolean(),meterKey:s.string().min(1).optional(),chargeableOutcomes:s.enum(["success_only","success_and_partial","attempted","trusted_actual_usage_only"]),invoiceBehavior:s.string().optional()}).passthrough(),providerCostPolicy:s.object({providerCostTracked:s.boolean(),declaredProviderHint:s.string().optional(),declaredModelHint:s.string().optional()}).passthrough()}).passthrough();var m0=s.object({keyId:s.string().min(1),orgId:s.string().min(1),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().optional(),serviceAccountId:s.string().optional(),keyId:s.string()}),businessId:s.string().min(1),compiledPlanId:s.string().min(1),entitlementHash:s.string().optional(),subjectKey:s.string().min(1),subscriptionId:s.string().min(1),currentPeriodId:s.string().optional(),currentPeriodStartMs:s.number().optional(),subscriberId:s.string().min(1),apiKeyId:s.string().nullable(),entitlementVersion:s.number(),status:s.enum(["active","revoked"]),expiresAt:s.number().nullable().optional(),subscriberStatus:s.enum(["ONBOARDING","ACTIVE","SUSPENDED"]),subscriptionStatus:s.string().min(1),environment:s.enum(["production","sandbox"]).optional(),environmentId:s.string().optional(),scopes:s.array(s.string()).readonly().optional(),entitlement:s.record(s.string(),s.unknown()).nullable().optional()});var Xb=s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()}),px=s.object({id:s.string().min(1),slug:s.string().optional(),transportMode:s.enum(["direct","tunnel"]),verificationRequired:s.boolean().optional(),originUrl:s.string().optional(),originHostname:s.string().optional(),accessCredentialRef:s.string().optional(),policyVersion:s.string().optional()}),p0=s.object({id:s.string().min(1),origin:s.string().min(1),sandboxOrigin:s.string().nullable().optional(),authHeader:s.string().optional(),pricing:s.object({requests:s.number().optional(),tokens:s.number().optional(),computeMs:s.number().optional(),per_request:s.number().optional()}).catchall(s.number().optional()).optional(),metering:s.object({tokens:s.object({}).optional(),computeMs:s.object({}).optional(),billOn4xx:s.boolean().optional()}).optional(),tenantLimits:s.array(Xb).readonly().optional(),userLimits:s.array(Xb).readonly().optional(),environmentId:s.string().optional(),contextTokenSecret:s.string().nullable().optional(),timeoutMs:s.number().positive().optional(),idleTimeoutMs:s.number().positive().optional(),backends:s.array(px).optional(),defaultBackendId:s.string().optional(),verificationRequired:s.boolean().optional(),allowedOrigins:s.array(s.string()).optional(),hasPublicRoutes:s.boolean().optional(),publicRoutesCompiledPlanId:s.string().min(1).optional()});var fx=s.object({perRequestMinUnitsByDim:s.record(s.string(),s.number()).optional(),creditPoolMicros:s.number().optional(),perDimUnitCostMicros:s.record(s.string(),s.number()).optional()}),gx=s.object({source:s.enum(["fixed","provider_catalog"]),meterKey:s.string(),selector:s.string().optional(),measures:s.array(s.string()),catalog:s.string().optional(),pricePolicy:s.string().optional(),markupPercent:s.number().optional(),fixedRatesMicros:s.record(s.string(),s.record(s.string(),s.number())).optional()}),hx=s.object({key:s.string(),display:s.string(),unit:s.string().optional(),aggregation:s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]),window:s.enum(["minute","hour","day","month","billing_period"]),enforcementType:s.string()}),bx=s.object({routeId:s.string().min(1),method:s.string(),path:s.string(),meters:s.array(s.string()).optional(),usagePolicy:ss.optional(),policyResolutionMode:s.literal("policy").optional()}),f0=s.object({v:s.number(),sub:s.string(),compiledPlanId:s.string().min(1),planType:s.string(),ts:s.number(),constraints:s.array(Cm),cv:s.number(),policyResolutionMode:s.literal("policy").optional(),dm:s.record(s.string(),s.number()),dmv:s.number().optional(),floor:fx.nullable().optional(),displayDims:s.array(s.number()).optional(),meterSemantics:s.record(s.string(),hx).optional(),rp:s.record(s.string(),gx).optional(),fr:s.array(bx).optional(),sig:s.string().min(1),sigKid:s.string().optional(),environmentId:s.string().optional()}).passthrough();var g0=s.object({subscriptionId:s.string().min(1),activePeriodId:s.string().optional(),activeCompiledPlanId:s.string().min(1),activeEntitlementHash:s.string().optional(),enforcementMode:s.enum(["STRICT","GRACE","TRACK_ONLY"]),postStreamLockouts:s.array(s.object({code:s.literal("post_stream_overspend"),reason:s.literal("usage_exhausted"),constraintKey:s.string().min(1),cycleId:s.string().min(1),dimension:s.string().min(1),currentCapacity:s.number().nonnegative(),observedUsage:s.number().nonnegative(),lockedAt:s.string().min(1),expiresAt:s.string().min(1)})).optional(),gracePeriodEndsAt:s.string().optional(),trialEndsAt:s.string().optional(),scheduledTransition:s.object({kind:s.string(),timing:s.string(),scheduledFor:s.string(),toCompiledPlanId:s.string().nullable()}).optional(),creditPool:s.object({periodStartMs:s.number(),periodEndMs:s.number(),grantedCents:s.number(),policy:s.enum(["block","allow"]),epoch:s.number()}).optional(),dedicatedShard:s.enum(["ACTIVE","DRAINING"]).optional(),memberAuthz:s.record(s.string(),s.object({permissions:s.array(s.string()),roles:s.array(s.string())})).optional(),memberAuthzComputedAt:s.number().optional(),generation:s.number(),updatedAt:s.string()});var _x=["DRAFT","ACTIVE"],_0=s.enum(_x),vx=["ONBOARDING","ACTIVE","SUSPENDED"],e_=s.enum(vx),yx=["ACTIVE","REVOKED"],v0=s.enum(yx),kx=["BLOCK","ALLOW_AND_BILL"],t_=s.enum(kx),Ix=["ACTIVE","ARCHIVED"],y0=s.enum(Ix),Ex=["ACTIVE","PHASING_OUT","SUPERSEDED","ARCHIVED"],k0=s.enum(Ex);var n_=["input","output","total","cached_read_input","cache_creation_input","context","max_output","estimated_output","actual_output","streaming_output"];var Sx="FS_RUNTIME_TOKEN";var wx={payload:"x-fs-metering",signature:"x-fs-metering-sig",token:"x-fs-metering-token"};var $0={environmentVariable:Sx,presentation:wx.token,storage:"sha256-hash-only"};var r_={missingSignature:"missing_signature",malformedSignature:"malformed_signature",unknownKeyId:"unknown_key_id",jwksUnavailable:"jwks_unavailable",badSignature:"bad_signature",bodyHashMismatch:"body_hash_mismatch",routeMismatch:"route_mismatch",clockSkew:"clock_skew",expiredSignature:"expired_signature",replayedNonce:"replayed_nonce",bodyTooLarge:"body_too_large",environmentMismatch:"environment_mismatch",missingToken:"missing_token",invalidToken:"invalid_token",contextUnverified:"context_unverified",memberSubjectRequired:"member_subject_required",serviceSubjectRequired:"service_subject_required",surfaceNotAllowed:"surface_not_allowed"};var T0=10*1024*1024;var xx=["CHECKOUT_COMPLETED","PLAN_CHANGED","CANCELLED","RESTORED","UNSCHEDULED_CANCELLATION","PRICE_ROLLOVER","PAUSED","RESUMED","PLAN_CHANGE_SCHEDULED","PLAN_CHANGE_ABORTED","SCHEDULE_CREATED","SCHEDULE_UPDATED","SCHEDULE_RELEASED","SCHEDULE_COMPLETED","SCHEDULE_ABORTED","CANCEL_SCHEDULED","PAYMENT_FAILED","PAYMENT_RECOVERED","PAYMENT_RECOVERED_FROM_SUSPENDED","PAYMENT_ACTION_REQUIRED","RECURRING_PAYMENT","REFUND_PROCESSED","DISPUTE_OPENED","DISPUTE_FUNDS_WITHDRAWN","DISPUTE_CLOSED","DISPUTE_FUNDS_REINSTATED","DISPUTE_CREDIT_REVOKED","DISPUTE_CREDIT_REINSTATED","MIN_SPEND_TRUE_UP"],R0=s.enum(xx);var Pm=["BRANCH_PREFIX","PULL_REQUEST","DISABLED"];var $x=s.object({d:s.number(),w:s.number(),capacity:s.number(),remaining:s.number(),windowStart:s.number(),windowEnd:s.number()}),Tx=s.record(s.string(),$x),Ox=s.object({allocations:s.array(s.number()),expiresAt:s.number()}),Ax=s.record(s.string(),Ox),Rx=s.record(s.string(),s.bigint()),j0=s.object({subscriptionId:s.string(),handoffToken:s.string(),targetShardId:s.string(),policyVersion:s.number(),entitlementVersion:s.number().nullable(),windowStates:Tx,activeLeases:Ax,totalsByDimension:Rx.optional(),billingCycleId:s.string().nullable().optional(),billingCycleStartMs:s.number().optional()});var i_=new Set(["read","export","download"]);var o_={subscription:["read","cancel","restore","change_plan"],usage:["read","export"],invoice:["read","pay","download"],team:["read","invite","remove_member","change_role","manage_rbac","assign_product_role"],apikey:["read","create","rotate","revoke"],audit_log:["read"]},H0=Object.keys(o_),V0=Object.fromEntries(Object.entries(o_).map(([e,t])=>[e,{read:t.filter(r=>i_.has(r)),write:t.filter(r=>!i_.has(r))}]));var Cx=new Set(["GET","HEAD","OPTIONS"]);function s_(e,t){return Cx.has(t.toUpperCase())?`${e}:read`:`${e}:write`}var Px="farthershore.internal",l_="EdDSA",Nm="Ed25519";var Nx=["gateway","analytics","core","usage-consumer","web-ui","fs-admin","site-shell","agent-runner","build-api"],Dm={gatewayProjectRead:"gateway:project:read",gatewayResourceWrite:"gateway:resource:write",usageWrite:"usage:write",authzDeniedWrite:"authz-denied:write",reservationAuthorize:"reservation:authorize",reservationFinalize:"reservation:finalize",internalCronRun:"internal:cron:run",personaManage:"persona:manage",proxyTrust:"proxy:trust",internalAdmin:"internal:admin",agentDispatch:"agent:dispatch",buildDispatch:"build:dispatch",internalNotify:"internal:notify",analyticsQuery:"analytics:query"},J0=Object.values(Dm),En=class extends Error{code;constructor(t,r){super(t),this.code=r,this.name="ServiceJwtError"}},a_=new WeakMap;async function d_(e){let t=e.lifetimeSeconds??60;if(!Number.isInteger(t)||t<=0||t>120)throw new En("Invalid service JWT lifetime","invalid_claims");if(!e.kid.trim())throw new En("Service JWT kid is required","invalid_header");let r=Lx(e.now??Date.now()),i={alg:l_,typ:"JWT",kid:e.kid},n={iss:Px,sub:e.sub,aud:e.aud,scope:[...e.scope],iat:r,exp:r+t,jti:e.jti??jx()};c_(n.sub,"sub"),c_(n.aud,"aud"),Dx(n.scope);let o=u_(i),a=u_(n),c=`${o}.${a}`,u=await Ux(e.privateJwk),l=await crypto.subtle.sign(Nm,u,new TextEncoder().encode(c));return`${c}.${m_(new Uint8Array(l))}`}function c_(e,t){if(!Nx.includes(e))throw new En(`Invalid service JWT ${t}`,"invalid_claims")}function Dx(e){if(!e.every(t=>typeof t=="string"&&t.length>0))throw new En("Invalid service JWT scope","invalid_claims")}function zx(e){return e.alg===Nm?{...e,alg:l_}:e}async function Ux(e){let t=a_.get(e);return t||(t=crypto.subtle.importKey("jwk",zx(e),Nm,!1,["sign"]),a_.set(e,t)),t}function u_(e){return m_(new TextEncoder().encode(JSON.stringify(e)))}function m_(e){let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}function Lx(e){let t=e instanceof Date?e.getTime():e;return Math.floor(t/1e3)}function jx(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,r=>r.toString(16).padStart(2,"0"));return`${t.slice(0,4).join("")}-${t.slice(4,6).join("")}-${t.slice(6,8).join("")}-${t.slice(8,10).join("")}-${t.slice(10).join("")}`}var Bx=["managed_frontend","custom_frontend","embedded_sdk","public_api","cli","agent","webhook","admin","internal"],f_=s.enum(Bx),p_=s.string().min(1).max(128),Mx=s.object({d:s.number().int().nonnegative(),w:s.number().int().positive(),rem:s.number(),cap:s.number()}).strict(),g_=s.object({v:s.literal(1),entV:s.number().int().nonnegative().optional(),entHash:p_.optional(),featureGrant:s.boolean().optional(),gates:s.array(p_).max(16).optional(),limits:s.array(Mx).max(16).optional()}).strict();var Fx=["resource_lifecycle_only","platform_only_request","provider_restamped","usage_policy","legacy_tenant_metering"],Kx=["credentialed_gateway_work","no_resolved_credential"],iU=s.object({requestId:s.string(),eventId:s.string(),tenantId:s.string(),slug:s.string(),subscriptionId:s.string(),subscriberId:s.string(),apiKeyId:s.string().nullable(),compiledPlanId:s.string(),subscriberStatus:e_,subscriptionStatus:s.string(),businessId:s.string(),statusCode:s.number(),path:s.string(),latencyMs:s.number(),upstreamMs:s.number().nonnegative().finite().optional(),rawDimsUnits:s.record(s.string(),s.number()),matchedRouteMeters:s.array(s.string().min(1)).optional(),servedRouteScopes:s.array(s.string().min(1)).optional(),meterSettlements:s.array(s.object({meterId:s.string(),meterType:s.enum(["exact_pre_request","estimated_then_settled","postpaid","strict_concurrency"]),reserved:s.number(),actual:s.number(),delta:s.number(),dimension:s.number().int().nonnegative(),leaseId:s.string()})).optional(),reportingAttested:s.boolean(),customerBillable:s.boolean(),platformBillable:s.boolean().optional(),customerBillableReason:s.enum(Fx).optional(),platformBillableReason:s.enum(Kx).optional(),postStreamPending:s.boolean().optional(),measureContext:s.record(s.string(),s.unknown()).optional(),creditUnitsConsumed:s.record(s.string(),s.number()).optional(),timestamp:s.number(),environmentId:s.string().nullable().optional(),orgId:s.string().optional(),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().trim().min(1).optional(),serviceAccountId:s.string().trim().min(1).optional(),keyId:s.string().trim().min(1).optional()}).optional(),subjectKey:s.string().optional(),overageBehavior:t_.optional(),environment:s.enum(["production","sandbox"]).optional(),surface:f_.optional(),actionId:s.string().min(1).max(128).optional(),resourceMutationId:s.string().min(1).max(200).optional(),subjectType:s.string().min(1).max(128).optional(),subjectId:s.string().min(1).max(256).optional(),decision:g_.optional(),decisionId:s.string().min(1).max(256).optional(),denyClass:s.enum(["quota","rate","concurrency","capacity","spend","adaptive"]).optional(),blockingConstraintId:s.string().min(1).max(256).optional(),providerSettlements:s.array(s.object({meterId:s.string(),providerReported:s.number(),reconciled:s.number()})).optional(),usagePolicyId:s.string().min(1).max(256).optional(),policySource:s.enum(["declared","inherited","defaulted","inferred"]).optional(),trafficClass:s.enum(Ur).optional(),limitProfile:s.enum(["customer_usage","business_capacity","control_plane","admin_internal","platform_abuse_only","healthcheck","none"]).optional(),leaseId:s.string(),transactionId:s.string(),gatewayMetadata:s.object({shardId:s.string(),policyVersion:s.number().int().nonnegative().optional(),artifactVersion:s.number().int().nonnegative().default(0),artifactHash:s.string().regex(/^sha256_[a-f0-9]{64}$/).optional(),leaseTelemetry:s.object({consumeRequests:s.number().int().nonnegative(),localLeaseHits:s.number().int().nonnegative(),doAllocationAttempts:s.number().int().nonnegative(),doAllocationGrants:s.number().int().nonnegative(),doAllocationDenials:s.number().int().nonnegative(),doUnavailable:s.number().int().nonnegative(),doCircuitOpen:s.number().int().nonnegative(),leaseRefreshSingleflightJoins:s.number().int().nonnegative(),leaseRefreshSingleflightJoinRate:s.number().min(0).max(1),expiredLeasesReaped:s.number().int().nonnegative(),expiredLeaseReclaimedGrant:s.array(s.number().nonnegative()),reconcileRequests:s.number().int().nonnegative(),reconcilePositiveDeltas:s.number().int().nonnegative(),reconcileNoLocalLease:s.number().int().nonnegative(),doReconcileAttempts:s.number().int().nonnegative(),doReconcileFailures:s.number().int().nonnegative(),unspentLeaseRemainderReturns:s.number().int().nonnegative(),unspentLeaseRemainderReturnFailures:s.number().int().nonnegative(),unspentLeaseRemainderReturnedGrant:s.array(s.number().nonnegative()),maxObservedPositiveReconcileDelta:s.array(s.number().nonnegative()),requestToDoRatio:s.number().nonnegative(),localLeaseHitRate:s.number().min(0).max(1),localSpendRate:s.number().min(0).max(1),maxObservedActiveLeases:s.number().int().nonnegative(),maxObservedOutstandingGrant:s.array(s.number().nonnegative()),maxObservedOutstandingGrantRatio:s.number().nonnegative(),maxObservedEmergencyReserveGrant:s.array(s.number().nonnegative()),maxObservedEmergencyReserveGrantRatio:s.number().nonnegative(),maxObservedLeaseGrant:s.array(s.number().nonnegative()),maxObservedLeaseGrantRatio:s.number().nonnegative(),maxObservedLeaseTtlMs:s.number().int().nonnegative()}).optional(),artifactCacheTelemetry:s.object({reads:s.number().int().nonnegative(),l0FreshHits:s.number().int().nonnegative(),l0Misses:s.number().int().nonnegative(),l0StaleServes:s.number().int().nonnegative(),l0StaleIfErrorServes:s.number().int().nonnegative(),l0BlockingRefreshes:s.number().int().nonnegative(),l0SingleflightJoins:s.number().int().nonnegative(),l0EarlyRefreshes:s.number().int().nonnegative(),l1Hits:s.number().int().nonnegative(),l1Misses:s.number().int().nonnegative(),l1Rejected:s.number().int().nonnegative(),l1WriteFailures:s.number().int().nonnegative(),kvHits:s.number().int().nonnegative(),kvMisses:s.number().int().nonnegative(),kvTimeouts:s.number().int().nonnegative(),kvCircuitOpenReads:s.number().int().nonnegative(),resultHits:s.number().int().nonnegative(),resultMisses:s.number().int().nonnegative(),resultDenied:s.number().int().nonnegative(),resultUnavailable:s.number().int().nonnegative(),backgroundRefreshErrors:s.number().int().nonnegative(),l0HitRate:s.number().min(0).max(1),l0SingleflightJoinRate:s.number().min(0).max(1),l0EarlyRefreshRate:s.number().min(0).max(1),l1HitRate:s.number().min(0).max(1),kvHitRate:s.number().min(0).max(1),resultHitRate:s.number().min(0).max(1),staleServeRate:s.number().min(0).max(1)}).optional(),gatewayVersion:s.string()}).passthrough()}).passthrough();var Hx=s.object({path:s.string(),code:s.string(),message:s.string()}),aU=s.object({reason:s.literal("schema_validation_failed"),receivedAt:s.string(),rawPayload:s.unknown(),issues:s.array(Hx),consumerVersion:s.string().optional(),originalMessageId:s.string().optional()});var h_=[{name:"subscription.created",webhook:!0,description:"A subscriber subscription was created."},{name:"subscription.updated",webhook:!0,description:"A subscriber subscription changed (plan, status, trial)."},{name:"subscription.canceled",webhook:!0,description:"A subscriber subscription was canceled."},{name:"payment.succeeded",webhook:!0,description:"A Stripe payment succeeded for a subscription."},{name:"payment.failed",webhook:!0,description:"A Stripe payment failed for a subscription."},{name:"rate_limit.exceeded",webhook:!0,description:"The gateway denied a request for exceeding a rate limit."},{name:"entitlement.changed",webhook:!0,description:"A compiled entitlement/plan was (re)published."},{name:"usage.threshold_reached",webhook:!0,description:"A metered-usage threshold was crossed."},{name:"usage.recorded",webhook:!1,description:"The gateway recorded one usage fact; the canonical usage queue remains the coordination path and the event stream is its evidence copy."},{name:"gateway.request_denied",webhook:!1,description:"The gateway denied a request during admission or enforcement and recorded the normalized LimitDecision as evidence."},{name:"change_set.created",webhook:!1,description:"A governed Evolution ChangeSet was proposed (draft created)."},{name:"change_set.approved",webhook:!1,description:"A governed Evolution ChangeSet was approved."},{name:"change_set.applied",webhook:!1,description:"A governed Evolution ChangeSet was applied to live state."},{name:"change_set.rolled_back",webhook:!1,description:"A governed Evolution ChangeSet was rolled back."},{name:"change_set.cancelled",webhook:!1,description:"A governed Evolution ChangeSet was cancelled."},{name:"billing.event_recorded",webhook:!1,description:"A BillingEvent row was recorded; the fact references it by id (the authoritative billing row is unchanged \u2014 exact-accounting invariant)."},{name:"authz.decision",webhook:!1,description:"An authorization decision (ALLOW/DENY) mirrored from the audit log onto the spine; AuditLog stays authoritative."},{name:"repo.changed",webhook:!1,description:"A default-branch push to the business's repo touched paths at least one enabled automation rule watches (payload: branch, headSha, bounded changed-path list). Emitted pre-filtered \u2014 never on every push \u2014 so path-triggered automations (e.g. legal/** changed \u2192 notify subscribers) can fire deterministically."},{name:"automation.rule_fired",webhook:!1,description:"An enabled AutomationRule matched a spine fact (trigger + all conditions held) and its actions were scheduled."},{name:"automation.action_succeeded",webhook:!1,description:"An AutomationRule action ran to success."},{name:"automation.action_failed",webhook:!1,description:"An AutomationRule action failed (will retry per the queue)."},{name:"automation.action_denied",webhook:!1,description:"An AutomationRule action was DENIED \u2014 the automation actor lacked the action's native permission (automation is a first-class authz subject, never a bypass). Recorded + audited; the action did not run."},{name:"automation.notification",webhook:!1,description:"A notification recorded by an AutomationRule `create_notification` action \u2014 a spine fact other surfaces (portal/admin) read; no separate notification runtime."},{name:"access_request.created",webhook:!1,description:"A subscriber member requested a missing permission (AccessRequest row created). Internal \u2014 the Communication layer notifies the subscriber's admins (who can grant it)."},{name:"access_request.resolved",webhook:!1,description:"A pending AccessRequest was resolved (approved or denied) by an owner/admin. Internal \u2014 notifies the subscriber's admins."},{name:"build.failed",webhook:!1,description:"A build for the business (frontend/portal or Business-SDK) failed and did not go live. Internal \u2014 the Communication layer notifies the org's members (opt-out-able, category: deployments)."},{name:"product.published",webhook:!1,description:"A business went live for the first time (DRAFT\u2192ACTIVE first publish). Internal \u2014 notifies the org's members (category: deployments)."},{name:"workflow.failed",webhook:!1,description:"A platform workflow (config apply / Stripe sync / subscription transition) reached a terminal FAILED state. Internal \u2014 notifies the org's admins (category: deployments)."},{name:"pr.review_posted",webhook:!1,description:"The platform posted (or updated) its Business-as-Code impact report on a managed-repo pull request. Internal \u2014 emails the org's members the review synopsis + a link to the PR (category: deployments)."}],Vx=h_.map(e=>e.name),b_=h_.filter(e=>e.webhook).map(e=>e.name),He=s.enum(Vx);var __=["subscription.created","subscription.updated","subscription.canceled","payment.succeeded","payment.failed","rate_limit.exceeded","entitlement.changed","usage.threshold_reached"],zm=__;{let e=new Set(b_),t=new Set(__),r=[...e].filter(n=>!t.has(n)),i=[...t].filter(n=>!e.has(n));if(r.length>0||i.length>0)throw new Error(`[webhooks/events] WEBHOOK_EVENT_NAMES drifted from the events catalog. Missing from order tuple: [${r.join(", ")}]; extra in order tuple: [${i.join(", ")}]. Reconcile ../events/catalog.ts (webhook: true entries) with WEBHOOK_EVENT_ORDER in this file.`)}var Sn=s.enum(zm);var De=s.enum(["immediate","period_end"]),wn=s.object({default:De.default("period_end"),when:s.object({price_increase:De.optional(),price_decrease:De.optional(),route_grant_added:De.optional(),route_grant_removed:De.optional(),limit_increased:De.optional(),limit_reduced:De.optional(),credit_increased:De.optional(),credit_reduced:De.optional(),rating_changed:De.optional()}).strict().default({price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"}),allowImmediatePriceIncrease:s.boolean().default(!1),allowImmediateEntitlementReduction:s.boolean().default(!1)}).strict().superRefine((e,t)=>{(e.when.price_increase??e.default)==="immediate"&&!e.allowImmediatePriceIncrease&&t.addIssue({code:"custom",path:["when","price_increase"],message:"price_increase cannot switch immediately without allowImmediatePriceIncrease: true"});for(let r of["route_grant_removed","limit_reduced","credit_reduced"])(e.when[r]??e.default)==="immediate"&&!e.allowImmediateEntitlementReduction&&t.addIssue({code:"custom",path:["when",r],message:`${r} cannot switch immediately without allowImmediateEntitlementReduction: true`})}),Gx=wn.parse({});var Zx=s.object({kind:s.literal("credit"),amount_cents:s.number().int().nonnegative(),recurs:s.boolean().optional(),expires_after_days:s.number().int().positive().optional(),label:s.string().min(1).max(120).optional()}),Wx=s.object({kind:s.literal("top_up"),sku:s.string().min(1).max(120),label:s.string().min(1).max(200),price_cents:s.number().int().positive(),credit_cents:s.number().int().positive()}),ft=s.discriminatedUnion("kind",[Zx,Wx]);function v_(e){return e.kind==="credit"&&e.recurs===!0&&e.label===void 0}function y_(e){return e.kind==="credit"&&e.recurs!==!0&&e.label===void 0}function k_(e,t,r=["grants"]){if(!e)return;let i=0,n=0;for(let o of e)v_(o)?i+=1:y_(o)&&(n+=1);i>1&&t.addIssue({code:"custom",message:"At most one recurring `credit` grant (recurs:true, no label) is allowed \u2014 recurring credit is a single canonical entry.",path:r}),n>1&&t.addIssue({code:"custom",message:"At most one one-time `credit` grant (recurs:false, no label) is allowed \u2014 one-time credit is a single canonical entry.",path:r})}function I_(e){return e.grants&&e.grants.length>0?[...e.grants]:[]}function Um(e){return I_(e).find(v_)?.amount_cents??0}function as(e){return I_(e).find(y_)?.amount_cents??0}var qx=s.object({percent:s.number().int().min(0).max(100)}),Jx=s.object({threshold_cents:s.number().int().nonnegative(),refill_cents:s.number().int().positive()}),gt=s.object({rollover:qx.optional(),auto_recharge:Jx.optional()});var E_=s.enum(["linear","active_count","event_count"]);var Yx=s.object({up_to:s.number().int().positive().nullable(),price_per_unit_micros:s.number().int().nonnegative()}),Qx=s.object({strategy:s.enum(["graduated","volume"]),tiers:s.array(Yx).min(1).max(20)}),ht=s.object({dimension:s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Meter dimension must be lowercase alphanumeric with underscores"),kind:E_.default("linear"),price_per_unit_micros:s.number().int().nonnegative().default(0),tiered:Qx.optional(),included_units:s.number().int().positive().optional()}).superRefine((e,t)=>{if(e.tiered&&e.price_per_unit_micros>0&&t.addIssue({code:"custom",message:"`tiered` is mutually exclusive with a non-zero `price_per_unit_micros` \u2014 drop one",path:["tiered"]}),e.included_units!==void 0&&e.tiered&&t.addIssue({code:"custom",message:"`included_units` is mutually exclusive with `tiered` \u2014 a tiered schedule already expresses the included allotment as a zero-priced first tier",path:["included_units"]}),e.tiered){let r=0,i=!1;for(let n=0;n<e.tiered.tiers.length;n++){let o=e.tiered.tiers[n];if(i){t.addIssue({code:"custom",message:"Open-ended tier (`up_to: null`) must be the final tier",path:["tiered","tiers",n,"up_to"]});break}if(o.up_to===null){i=!0;continue}o.up_to<=r&&t.addIssue({code:"custom",message:`Tier upper bounds must be strictly ascending (tier ${n} = ${o.up_to} <= previous ${r})`,path:["tiered","tiers",n,"up_to"]}),r=o.up_to}i||t.addIssue({code:"custom",message:"The final tier of a `tiered` schedule must be open-ended (`up_to: null`)",path:["tiered","tiers",e.tiered.tiers.length-1,"up_to"]})}}),xn=s.enum(["month","year"]),Xx=s.object({meters:s.array(ht).default([]),recurring_fee_cents:s.number().int().nonnegative().default(0),billing_interval:xn.default("month"),grants:s.array(ft).max(40).default([]),creditPolicy:gt.optional(),trial_days:s.number().int().nonnegative().default(0),max_monthly_spend_cents:s.number().int().nonnegative().optional()});var e$=s.string().min(1),t$=s.object({type:s.literal("named"),name:s.enum(["second","minute","hour","day","week","month"])}),n$=s.object({type:s.literal("custom"),seconds:s.number().int().positive(),label:s.string().optional()}),r$=s.discriminatedUnion("type",[t$,n$]),Lr=s.object({dimension:e$,window:r$,capacity:s.number().nonnegative(),enforcement:s.enum(["enforce","track"]).optional(),warnAt:s.number().min(0).max(1).optional(),scope:zr.optional(),acknowledgeUnreachable:s.boolean().optional()}),xU=s.array(Lr).max(20);function i$(e){let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return!1;let r=Number(t[1]),i=Number(t[2]);return r>255||i>255||Number(t[3])>255||Number(t[4])>255?!1:r===0||r===127||r===10||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254||r===100&&i>=64&&i<=127||r===192&&i===0&&Number(t[3])===0||r===198&&(i===18||i===19)||r>=224}function S_(e){let t=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return t.endsWith(".")&&(t=t.slice(0,-1)),t==="localhost"||t.endsWith(".localhost")||t.startsWith("::ffff:")||t==="::"||t==="::1"||t.includes(":")&&(t.startsWith("fc")||t.startsWith("fd")||/^fe[89ab][0-9a-f]:/.test(t))||/^ff[0-9a-f]{2}:/.test(t)||t.startsWith("2002:")||/^2001:0{0,4}:/.test(t)||t.includes(":")&&t.startsWith("64:ff9b:")||/^::(?:\d+\.\d+\.\d+\.\d+|[0-9a-f]{1,4}:[0-9a-f]{1,4})$/.test(t)?!0:i$(t)}var jm=["GET","HEAD","POST","PUT","PATCH","DELETE"],jr=1048576,x_=1048576;function $_(e){return new TextEncoder().encode(e).byteLength}function o$(e){try{let t=JSON.stringify(e);return typeof t=="string"?$_(t):null}catch{return null}}var Bm=s.string().min(1).max(64).regex(/^[a-z][a-z0-9_-]*$/,"Integration id must be lowercase alphanumeric with hyphens/underscores"),Mm=s.string().min(1).max(128).regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,"Header name must be a valid HTTP token").refine(e=>e!=="*","Header wildcard is not allowed").transform(e=>e.toLowerCase()),T_=new Set(["connection","keep-alive","proxy-connection","te","trailer","transfer-encoding","upgrade","content-length","content-encoding"]),O_=Mm.refine(e=>!T_.has(e)&&!["host","cookie","set-cookie","authorization","proxy-authorization"].includes(e),"Browser request header is not safe"),s$=Mm.refine(e=>!T_.has(e)&&!["host","cookie","set-cookie"].includes(e),"Injection header is not safe"),a$=new Set(["cache-control","etag","last-modified","link","retry-after","x-request-id","x-ratelimit-limit","x-ratelimit-remaining","x-ratelimit-reset"]),c$=Mm.refine(e=>a$.has(e),"Response header is not safe to project"),u$=s.string().max(16384).refine(e=>!/[\r\n]/.test(e),"Header values cannot contain CR/LF"),A_=s.string().min(3).max(128).regex(/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/i,"Content type must be an exact media type").refine(e=>!e.includes("*"),"Content type wildcards are not allowed").transform(e=>e.toLowerCase());function R_(e){return[...new Set(e)].sort((t,r)=>t<r?-1:t>r?1:0)}function $n(e,t,r=1,i=!1){return s.array(e).min(r).max(t).superRefine((n,o)=>{if(!i)return;let a=new Set;for(let[c,u]of n.entries())a.has(u)&&o.addIssue({code:"custom",path:[c],message:`duplicate value "${u}" is not allowed`}),a.add(u)}).transform(n=>R_(n))}var l$=$n(O_,20,0,!0),C_=s.string().min(1).max(128).regex(/^[A-Za-z0-9_.~-]+$/,"Query parameter name is invalid"),d$=$n(C_,30,0,!0);function m$(){return s.record(s.string(),s.string().max(16384)).superRefine((e,t)=>{let r=Object.keys(e);r.length>30&&t.addIssue({code:"custom",message:"Too many query parameters"});for(let i of r)C_.safeParse(i).success||t.addIssue({code:"custom",path:[i],message:"Browser query parameter is invalid"})})}function p$(){return s.record(s.string(),u$).superRefine((e,t)=>{Object.keys(e).length>20&&t.addIssue({code:"custom",message:"Too many request headers"});let i=new Set;for(let[n,o]of Object.entries(e)){let a=O_.safeParse(n);if(!a.success){t.addIssue({code:"custom",path:[n],message:"Browser request header is not safe"});continue}i.has(a.data)&&t.addIssue({code:"custom",path:[n],message:`duplicate request header "${n}" is not allowed`}),i.add(a.data),typeof o!="string"&&t.addIssue({code:"custom",path:[n],message:"Request header value must be a string"})}}).transform(e=>Object.fromEntries(Object.entries(e).map(([t,r])=>[t.toLowerCase(),r])))}function f$(e){return e.split("/").some(t=>{let r=t.replace(/%2e/gi,".");return r==="."||r===".."})}var Fm=s.string().min(1).max(500).superRefine((e,t)=>{let r=i=>{t.addIssue({code:"custom",message:i})};if(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)){r(`Pass an origin-relative path, not a full URL ("${e}"). The upstream origin comes from the integration's declared \`upstream\` \u2014 e.g. "/api/projects".`);return}if(e.startsWith("//")){r('Protocol-relative paths are not allowed \u2014 "//host/x" targets another origin. Use a single leading slash.');return}if(!e.startsWith("/")){r(`Request path must start with "/" \u2014 got "${e}".`);return}if(e.includes("?")){r("Put query parameters in the `query` option, not the path \u2014 they are allowlisted per operation.");return}if(e.includes("#")){r("Fragments are never sent to a server; remove the '#'.");return}if(e.includes("\\")){r("Backslashes are not path separators; use '/'.");return}if(e.includes("*")){r("Wildcards are not allowed \u2014 an operation names one exact path so the allowlist stays decidable.");return}f$(e)&&r("Relative segments ('.' / '..') are not allowed \u2014 they could escape the declared path.")}),P_=s.string().max(2048).superRefine((e,t)=>{let r;try{r=new URL(e)}catch{t.addIssue({code:"custom",message:"Upstream must be a valid HTTPS origin"});return}r.protocol!=="https:"&&t.addIssue({code:"custom",message:"Upstream must use HTTPS"}),(r.username||r.password)&&t.addIssue({code:"custom",message:"Upstream cannot include userinfo"}),r.port&&r.port!=="443"&&t.addIssue({code:"custom",message:"Upstream must use the default HTTPS port"}),(r.pathname!=="/"||r.search||r.hash)&&t.addIssue({code:"custom",message:"Upstream must be an origin without a path, query, or fragment"}),r.hostname.includes("*")&&t.addIssue({code:"custom",message:"Upstream wildcard hosts are not allowed"}),S_(r.hostname)&&t.addIssue({code:"custom",message:"Upstream host is private or loopback"})}).transform(e=>new URL(e).origin),g$=s.discriminatedUnion("kind",[s.object({kind:s.literal("none")}).strict(),s.object({kind:s.literal("json"),maxBytes:s.number().int().positive().max(jr)}).strict(),s.object({kind:s.literal("text"),maxBytes:s.number().int().positive().max(jr),contentTypes:$n(A_,10)}).strict()]),h$=s.string().min(1).max(500).regex(/^(?:\/(?:[^~/]|~[01])*)+$/,"Response field must be an RFC 6901 JSON pointer"),b$=s.object({kind:s.literal("json"),contentTypes:$n(A_,10),maxBytes:s.number().int().positive().max(x_),jsonPointers:$n(h$,100),responseHeaders:$n(c$,20,0,!0).default([])}).strict(),w_=s.string().min(1).max(128).regex(/^[A-Z][A-Z0-9_]*$/,"secretRef must be UPPER_SNAKE"),_$=s.discriminatedUnion("location",[s.object({secretRef:w_,location:s.literal("header"),name:s$,template:s.enum(["{value}","Bearer {value}"])}).strict(),s.object({secretRef:w_,location:s.literal("query"),name:s.string().min(1).max(128).regex(/^[A-Za-z0-9_.~-]+$/,"Query parameter name is invalid")}).strict()]),v$=s.object({method:s.enum(jm),path:Fm,headers:l$.default([]),query:d$.default([]),body:g$}).strict(),y$=s.array(v$).min(1).max(100).superRefine((e,t)=>{let r=new Set;for(let[i,n]of e.entries()){let o=`${n.method} ${n.path}`;r.has(o)&&t.addIssue({code:"custom",path:[i],message:`duplicate frontend integration operation "${o}"`}),r.add(o)}}).transform(e=>[...e].sort((t,r)=>{let i=`${t.method} ${t.path}`,n=`${r.method} ${r.path}`;return i<n?-1:i>n?1:0})),N_=s.object({id:Bm,upstream:P_,request:s.object({operations:y$}).strict(),injection:_$,response:b$}).strict().superRefine((e,t)=>{if(e.injection.location==="header")for(let[r,i]of e.request.operations.entries())i.headers.includes(e.injection.name)&&t.addIssue({code:"custom",path:["request","operations",r,"headers"],message:`browser request header collides with injected header "${e.injection.name}"`})}),D_=N_;function z_(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))z_(t)}return e}var k$=N_.transform(e=>z_(e)),Km=s.array(D_).max(200).superRefine((e,t)=>{let r=new Set;for(let[i,n]of e.entries())r.has(n.id)&&t.addIssue({code:"custom",path:[i,"id"],message:`duplicate frontend integration id "${n.id}"`}),r.add(n.id)}).transform(e=>[...e].sort((t,r)=>t.id<r.id?-1:t.id>r.id?1:0)),Hm=s.array(Bm).max(200).transform(e=>R_(e)).optional(),Lm=s.lazy(()=>s.union([s.null(),s.boolean(),s.number().finite(),s.string().max(65536),s.array(Lm).max(100),s.record(s.string().min(1).max(128),Lm).superRefine((e,t)=>{Object.keys(e).length>100&&t.addIssue({code:"custom",message:"JSON object has too many keys"})})])),I$=s.discriminatedUnion("kind",[s.object({kind:s.literal("json"),value:Lm}).strict(),s.object({kind:s.literal("text"),value:s.string().max(jr)}).strict()]).superRefine((e,t)=>{let r=e.kind==="json"?o$(e.value):$_(e.value);(r===null||r>jr)&&t.addIssue({code:"custom",message:"Request body exceeds the UTF-8 byte limit"})}),E$=s.object({integrationId:Bm,path:Fm,method:s.enum(jm),headers:p$().optional(),query:m$().optional(),body:I$.optional()}).strict();var S$={meters:s.array(ht).default([]),recurring_fee_cents:s.number().int().nonnegative().default(0),billing_interval:xn.default("month"),trial_days:s.number().int().nonnegative().default(0),max_monthly_spend_cents:s.number().int().nonnegative().optional(),min_monthly_spend_cents:s.number().int().nonnegative().optional(),grants:s.array(ft).max(40).default([]),creditPolicy:gt.optional()},U_=s.object({key:s.string().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Plan key must be lowercase alphanumeric with hyphens/underscores"),name:s.string().min(1).max(100),description:s.string().max(500).optional(),details:s.array(s.string().max(200)).max(10).optional(),...S$,free:s.boolean().default(!1),limits:s.array(Lr).max(20).default([]),routeGrants:s.array(s.string().min(1).max(500)).max(500).transform(e=>[...new Set(e)].sort()).optional(),frontendIntegrationGrants:Hm,resource_limits:s.record(s.string().min(1).max(120),s.number().int().nonnegative()).default({}),overageBehavior:s.enum(["block","allow_and_bill"]).default("block"),selfServeEnabled:s.boolean().default(!0),capacity:Rm.optional(),archive:s.object({at:s.string().datetime().optional(),transitionTo:s.string().optional(),strategy:s.enum(["auto","explicit","block"]).default("auto")}).optional()}).strict(),cs=U_.superRefine((e,t)=>{k_(e.grants,t)});var w$=/^\$\{[A-Z][A-Z0-9_]{0,127}\}$/,Vm=s.string().min(3).max(200).refine(e=>w$.test(e),{message:"secret must use ${VAR} interpolation syntax (e.g. ${WEBHOOK_SECRET}); raw secrets in YAML are rejected. Define the env var in the per-product secret store and reference it here."}),Gm=s.object({maxAttempts:s.number().int().min(1).max(20).default(5),backoff:s.enum(["exponential","fixed"]).default("exponential")}),Zm=s.object({id:s.string().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Webhook endpoint id must be lowercase alphanumeric with hyphens/underscores"),url:s.string().url("webhooks.endpoints[].url must be a valid URL"),secret:Vm,events:s.array(Sn).min(1,"webhooks.endpoints[].events must subscribe to \u2265 1 event"),enabled:s.boolean().default(!0),retryPolicy:Gm.default({maxAttempts:5,backoff:"exponential"})}),Wm=s.object({endpoints:s.array(Zm).max(50).default([])});var x$=s.object({meters:s.array(ht).optional(),recurring_fee_cents:s.number().int().nonnegative().optional(),billing_interval:xn.optional(),grants:s.array(ft).max(40).optional(),creditPolicy:gt.optional(),trial_days:s.number().int().nonnegative().optional(),max_monthly_spend_cents:s.number().int().nonnegative().optional(),limits:s.array(Lr).max(20).optional(),overageBehavior:s.enum(["block","allow_and_bill"]).optional(),selfServeEnabled:s.boolean().optional()}).strict(),$$=s.object({url:s.string().url().optional(),secret:Vm.optional(),events:s.array(Sn).optional(),enabled:s.boolean().optional(),retryPolicy:Gm.partial().optional()}).strict(),T$=s.object({plans:s.record(s.string(),x$).optional(),webhooks:s.object({endpoints:s.record(s.string(),$$).optional()}).strict().optional()}).strict(),qm=s.record(s.string().min(1).max(64),T$);var Jm=s.enum(["query","mutation"]),Ym=s.enum(["none","metadata","full"]),Qm=s.object({type:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/),from:s.enum(["header","path_param"]),name:s.string().min(1).max(120)}),Xm=s.object({resource:s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),effect:s.enum(["create","delete"])}),L_=s.object({id:s.string().min(1).max(160).regex(/^[a-z0-9_.:-]+$/),title:s.string().min(1).max(160).optional(),kind:Jm,actorType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),subject:Qm.optional(),inputSchemaRef:s.string().min(1).max(240).optional(),audit:Ym.default("metadata"),resource:Xm.optional()});var j_=s.enum(["subscription","subject"]),B_=s.enum(["reported","action_inferred"]),M_=s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),F_=s.object({name:M_,display:s.string().min(1).max(120).optional(),scope:j_.default("subscription"),subjectType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),countSource:B_.default("reported")}).superRefine((e,t)=>{e.scope==="subject"&&!e.subjectType&&t.addIssue({code:"custom",path:["subjectType"],message:"subjectType is required when resource scope is subject"}),e.scope==="subscription"&&e.subjectType&&t.addIssue({code:"custom",path:["subjectType"],message:"subjectType is only valid for subject-scoped counted resources"})}),ep=s.array(F_).max(100).default([]);var K_=/^[a-z0-9][a-z0-9_-]*$/,tp=s.string().min(1).max(64).regex(K_,"backend id must be a lowercase slug ([a-z0-9][a-z0-9_-]*)"),H_=s.enum(["direct","tunnel"]),V_=s.enum(["embedded","sidecar"]);var G_=s.object({mode:H_.default("direct"),runner:V_.optional()}).strict(),Z_=s.object({required:s.boolean().default(!0)}).strict(),W_=s.object({name:s.string().min(1).max(120).optional(),slug:tp.optional(),transport:G_.default({mode:"direct"}),verification:Z_.default({required:!0}),meters:s.array(s.string().min(1).max(64)).max(100).optional(),default:s.boolean().optional()}).strict(),np=s.record(tp,W_),Tn=tp,On={unknownBackendInRoute:"UNKNOWN_BACKEND_IN_ROUTE",ambiguousDefaultBackend:"AMBIGUOUS_DEFAULT_BACKEND",routeMeterNotAllowedByBackend:"ROUTE_METER_NOT_ALLOWED_BY_BACKEND",unknownMeterInBackend:"UNKNOWN_METER_IN_BACKEND"};function rp(e){let t=Object.keys(e??{});if(t.length===0)return{defaultId:null,ambiguous:!1};if(t.length===1)return{defaultId:t[0],ambiguous:!1};let r=t.filter(i=>e[i]?.default===!0);return r.length===1?{defaultId:r[0],ambiguous:!1}:{defaultId:null,ambiguous:!0}}var J_=s.enum(["long","short","blocking"]).default("long");var Y_=s.object({method:s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),path:s.string().min(1).max(500).regex(/^\/[a-zA-Z0-9_/:.{}-]*$/,"path must be a concrete route starting with /; wildcard segments are reserved for meterRoutes selectors").refine(e=>!e.split("/").some(t=>["{__fs_rest}",":__fs_rest","[__fs_rest]"].includes(t)),"reserved greedy path parameters are only valid in non-granting meter selectors")});function O$(e){let t=e.trim();if(!t)return!1;let[r,i,n]=t.split("-");if(n!==void 0||!/^\d{3}$/.test(r??""))return!1;let o=Number(r),a=i===void 0?o:Number(i);return i!==void 0&&!/^\d{3}$/.test(i)?!1:o>=100&&o<=599&&a>=100&&a<=599&&o<=a}function Q_(e){return e.split(",").every(O$)}var us=s.union([s.string().min(1).max(100).refine(Q_,{message:"onStatusCodes must be comma-separated HTTP status codes or numeric ranges, e.g. 200-299,304"}),s.array(s.number().int().min(100).max(599)).min(1).max(100)]),X_=s.enum(["public","required"]),ev=s.enum(["network","5xx"]),tv=s.object({maxAttempts:s.number().int().min(1).max(3),retryOn:s.array(ev).min(1).max(2),backoff:s.object({base:s.number().int().min(0).max(6e4),max:s.number().int().min(0).max(6e4),jitter:s.number().min(0).max(1)}).strict().refine(e=>e.max>=e.base,{message:"retry.backoff.max must be >= retry.backoff.base"}),budgetRatio:s.number().min(0).max(1)}).strict(),nv=s.enum(["ui","api","agent","webhook","cli"]),q_=new Map(nv.options.map((e,t)=>[e,t])),A$=s.array(nv).min(1).refine(e=>e.every((t,r)=>r===0||(q_.get(t)??-1)>(q_.get(e[r-1])??-1)),{message:"surfaces must be a canonical set: unique and sorted by surface order (ui, api, agent, webhook, cli)"}),ls=s.object({authMode:X_.optional(),timeoutMs:s.number().int().min(1).max(6e5).optional(),idleTimeoutMs:s.number().int().min(1).max(6e5).optional(),retry:tv.optional(),subject:s.enum(["member","service"]).optional(),surfaces:A$.optional(),hidden:s.boolean().optional()}).strict(),ds=s.object({dimension:s.string().min(1).max(64).default("requests"),window:s.union([s.object({type:s.literal("named"),name:s.enum(["second","minute","hour","day","week","month"])}),s.object({type:s.literal("custom"),seconds:s.number().int().positive(),label:s.string().min(1).max(64).optional()})]),capacity:s.number().nonnegative(),enforcement:s.enum(["enforce","track"]).default("enforce")}).strict(),rv=s.object({match:Y_,metering:s.object({defaults:s.record(s.string().min(1).max(64),s.number().finite().nonnegative()).optional(),reports:s.array(s.string().min(1).max(64)).max(20).optional(),onStatusCodes:us.optional(),postStreamBilling:s.boolean().optional()}).optional(),unmetered:s.boolean().optional(),inheritDefaultMeters:s.boolean().optional(),action:s.string().min(1).max(160).regex(/^[a-z0-9_.:-]+$/).optional(),backend:Tn.optional(),usagePolicy:ss.optional(),policy:ls.optional(),limits:s.array(ds).min(1).max(8).optional()}).strict(),iv=s.object({rollout_key:s.string().min(1).max(120).regex(/^[a-z0-9_-]+$/,"rollout_key must be lowercase alphanumeric with hyphens/underscores").optional(),required_flags:s.array(s.string().min(1).max(120).regex(/^[a-z0-9_-]+$/)).max(10).optional()}),ip=s.object({description:s.string().max(500).optional(),mutation_class:s.enum(["runtime","contractual"]).default("contractual"),cacheProfile:J_,routes:s.array(rv).min(1).max(50),runtime:iv.default({}),actions:s.array(L_).max(100).optional(),backend:Tn.optional()}).strict();var R$="{__fs_rest}";function C$(e){if(e.startsWith(":"))return e.slice(1);if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))return e.slice(1,-1)}function op(e,t){let r=t.split("/").map((i,n)=>n===0?i:i==="**"||i===R$?"**":i==="*"||C$(i)!==void 0?"*":i).join("/");return`${e.toUpperCase()} ${r}`}function Nt(e){return e.actionId??op(e.method,e.path)}function ov(e,t){e.usagePricing!==void 0&&t.addIssue({code:"custom",path:["usagePricing"],message:"usagePricing is not supported. Define usage.meters.<key>.rating instead."})}function sv(e,t){e.filter(i=>i.free).length>1&&t.addIssue({code:"custom",path:["plans"],message:"Only one free plan is allowed per product"}),e.forEach((i,n)=>{i.free&&(P$(i,n,t),N$(i,n,t))})}function P$(e,t,r){(mv(e)??0)!==0&&r.addIssue({code:"custom",path:["plans",t,"recurring_fee_cents"],message:"Free plans must have zero price"})}function N$(e,t,r){e.limits.some(n=>!n.enforcement||n.enforcement==="enforce")||r.addIssue({code:"custom",path:["plans",t,"limits"],message:"Free plans must include at least one hard enforced limit"})}function av(e,t){let r=new Map;e.forEach((i,n)=>{if(i.free)return;let o=mv(i);if(o===void 0||o<=0)return;let a=L$(i,o),c=r.get(a);if(c){t.addIssue({code:"custom",path:["plans",n,"recurring_fee_cents"],message:`Paid plan price duplicates plan "${c}" (${a})`});return}r.set(a,i.key)})}function cv(e,t){let r=new Set((e.metering?.meters??[]).map(n=>n.key).filter(n=>typeof n=="string"&&n.length>0)),i=new Set(Object.keys(e.usage?.meters??{}));e.plans.forEach((n,o)=>{let a=n.meters;a&&a.forEach((c,u)=>{let l=c.dimension;typeof l!="string"||l.length===0||r.has(l)||i.has(l)||t.addIssue({code:"custom",path:["plans",o,"meters",u,"dimension"],message:`Plan "${n.key}" prices meter "${l}" but no metering.meters[] entry and no usage.meters[] entry declares it.`})})})}function uv(e,t){if(!e.routeCatalog)return;let r=new Set((e.metering?.meters??[]).map(n=>n.key).filter(n=>typeof n=="string"&&n.length>0)),i=!1;for(let[n,o]of Object.entries(e.routeCatalog))(o.routes??[]).forEach((c,u)=>{let l=sp(c);l.length!==0&&(i=!0,l.forEach((d,g)=>{r.has(d)||t.addIssue({code:"custom",path:["routeCatalog",n,"routes",u,"metering",g],message:`Route references unknown meter "${d}". Declare it in metering.meters[].`})}))});i&&r.size===0&&t.addIssue({code:"custom",path:["metering","meters"],message:"One or more routes declare metering keys but `metering.meters[]` is empty. Declare meters at the product level first."})}function D$(e,t){let r=new Map;for(let n of e.plans)r.set(n.key,new Set);if(!e.routeCatalog){for(let n of r.values())for(let o of t)n.add(o);return r}let i=Object.values(e.routeCatalog).flatMap(n=>n.routes??[]);for(let n of e.plans){let o=r.get(n.key),a=new Set(n.routeGrants??[]);for(let c of i){if(c.unmetered===!0||!c.path)continue;let u=Nt({actionId:c.actionId,method:c.method,path:c.path});if(a.has(u))for(let l of sp(c))o.add(l)}}return r}function sp(e){let t=new Set;for(let r of Object.keys(e.metering?.defaults??{}))t.add(r);for(let r of e.metering?.reports??[])t.add(r);return[...t]}function z$(e){if(!e||typeof e!="object")return null;let t=e;return typeof t.dimension=="string"?t.dimension:null}var U$=new Set(["credits"]);function lv(e,t){if(!e.plans||e.plans.length===0)return;let r=new Set((e.metering?.meters??[]).map(o=>o.key).filter(o=>typeof o=="string"&&o.length>0)),i=new Set(Object.keys(e.usage?.meters??{})),n=D$(e,r);e.plans.forEach((o,a)=>{let c=o.limits??[],u=n.get(o.key)??new Set;c.forEach((l,d)=>{if(l&&typeof l=="object"?l.acknowledgeUnreachable===!0:!1)return;let p=z$(l);p&&(u.has(p)||i.has(p)||U$.has(p)||t.addIssue({code:"custom",path:["plans",a,"limits",d,"meter"],message:`Plan "${o.key}" limits meter "${p}" but no directly granted route emits this meter, and the meter is not declared under usage.meters either. Either add a matching routeGrants entry for a route that emits "${p}", declare the meter under metering.meters[] or usage.meters, or set acknowledgeUnreachable: true if the limit is intentional (e.g. soft budget).`}))})})}function dv(e,t){let r=e.backend;if(!r||Object.keys(r).length===0)return;let i=new Set(Object.keys(r)),n=new Set((e.metering?.meters??[]).map(u=>u.key).filter(u=>typeof u=="string"&&u.length>0));for(let[u,l]of Object.entries(r))(l.meters??[]).forEach((d,g)=>{n.has(d)||t.addIssue({code:"custom",path:["backend",u,"meters",g],message:`${On.unknownMeterInBackend}: backend "${u}" allows meter "${d}" but no metering.meters[] entry declares it.`})});let{defaultId:o,ambiguous:a}=rp(r),c=!1;for(let u of Object.values(e.routeCatalog??{}))for(let l of u.routes??[])l.backend===void 0&&(c=!0);a&&c&&t.addIssue({code:"custom",path:["backend"],message:`${On.ambiguousDefaultBackend}: product declares ${i.size} backends but no single default \u2014 mark exactly one backend \`default: true\` or bind every route explicitly.`});for(let[u,l]of Object.entries(e.routeCatalog??{}))(l.routes??[]).forEach((d,g)=>{let p=d.backend??o;if(d.backend!==void 0&&!i.has(d.backend)){t.addIssue({code:"custom",path:["routeCatalog",u,"routes",g,"backend"],message:`${On.unknownBackendInRoute}: route binds backend "${d.backend}" which is not declared in the product \`backend\` block.`});return}if(!p)return;let S=r[p]?.meters;if(!S)return;let f=new Set(S);for(let m of sp(d))f.has(m)||t.addIssue({code:"custom",path:["routeCatalog",u,"routes",g,"metering"],message:`${On.routeMeterNotAllowedByBackend}: route meters "${m}" but backend "${p}" does not allow it (backend.meters[] = [${S.join(", ")}]).`})})}function mv(e){return e.recurring_fee_cents}function L$(e,t){return`USD:month:${t}`}var j$=s.object({subdomain:s.string().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,"Subdomain must be lowercase alphanumeric with optional hyphens")}),pv=s.enum(["exact_pre_request","estimated_then_settled","postpaid","strict_concurrency"]),B$=s.enum(n_),ap=s.object({key:s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Meter key must be lowercase alphanumeric with underscores"),display:s.string().min(1).max(100),unit:s.string().max(20).optional(),routeDefault:s.number().finite().nonnegative().optional(),enforcementType:pv.default("estimated_then_settled"),aggregation:s.enum(["SUM","COUNT","MAX","UNIQUE_COUNT","LATEST"]).default("COUNT"),window:s.enum(["minute","hour","day","month","billing_period"]).default("billing_period"),valueProperty:s.string().optional(),uniqueProperty:s.string().optional(),groupBy:s.array(s.string()).optional(),eventCode:s.string().optional(),tokenCategory:B$.optional(),reserveStrategy:s.enum(["reserve_max","estimate","count_actual"]).optional(),reserveCeiling:s.number().int().positive().optional(),pairsWith:s.string().min(1).max(64).optional()}),fv=s.string().min(1).max(64).regex(/^[a-z0-9_]+$/,"Usage measure must be lowercase alphanumeric with underscores"),M$=s.enum(["pass_through","markup"]),F$=s.object({source:s.literal("fixed"),rates:s.record(s.string().min(1),s.record(fv,s.number().int().nonnegative()))}),K$=s.object({source:s.literal("provider_catalog"),catalog:s.string().min(1).max(100),pricePolicy:M$.default("pass_through"),markupPercent:s.number().nonnegative().max(1e4).optional(),marginMicros:s.number().int().nonnegative().optional()}),gv=s.discriminatedUnion("source",[F$,K$]),hv=s.object({selector:s.string().min(1).max(100).optional(),measures:s.array(fv).min(1).max(20),rating:gv.optional()}),bv=s.object({meters:s.record(s.string().min(1).max(64).regex(/^[a-z0-9_]+$/),hv)}),H$=s.object({defaults:s.record(s.string().min(1).max(64),s.number().finite().nonnegative()).optional(),reports:s.array(s.string().min(1).max(64)).max(20).optional(),onStatusCodes:us.optional(),postStreamBilling:s.boolean().optional()}),V$=s.object({kind:Jm,title:s.string().min(1).max(160).optional(),actorType:s.string().min(1).max(64).regex(/^[a-zA-Z0-9_.:-]+$/).optional(),subject:Qm.optional(),audit:Ym,resource:Xm.optional()}),_v=s.object({method:s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),path:s.string().min(1).max(500).regex(/^\/[a-zA-Z0-9_/:.{}-]*$/,"path must be a concrete route starting with /; wildcard segments are reserved for meterRoutes selectors").refine(e=>!e.split("/").some(t=>["{__fs_rest}",":__fs_rest","[__fs_rest]"].includes(t)),"reserved greedy path parameters are only valid in non-granting meter selectors"),actionId:s.string().min(1).max(120).optional(),actionMeta:V$.optional(),unmetered:s.boolean().optional(),metering:H$.optional(),inheritDefaultMeters:s.boolean().optional(),backend:Tn.optional(),limits:s.array(ds).min(1).max(8).optional(),policy:ls.optional()}).strict(),cp=s.object({description:s.string().max(500).optional(),routes:s.array(_v).min(1).max(50)}),vv=s.record(s.string().min(1).max(100).regex(/^[a-z0-9_.:-]+$/),cp),yv=s.enum(["report","pull_request"]),kv=s.enum(["safe","non_blocking","economic_risk","blocking"]),Iv=s.object({cleanup:s.object({enabled:s.boolean().default(!1),mode:yv.default("report")}).default({enabled:!1,mode:"report"}),change_approval:s.object({auto_merge_max_risk:s.enum(["none","safe","non_blocking"]).default("none"),require_human_for:s.array(kv).default(["economic_risk","blocking"])}).default({auto_merge_max_risk:"none",require_human_for:["economic_risk","blocking"]})}).default({cleanup:{enabled:!1,mode:"report"},change_approval:{auto_merge_max_risk:"none",require_human_for:["economic_risk","blocking"]}}),Ev=s.enum(["clerk","test-personas"]),Sv=s.object({context_tokens:s.object({enabled:s.boolean().default(!0)}).optional(),portal_auth:s.object({strategy:Ev}).optional()}),up=s.object({business:s.object({visibility:s.enum(["public","private"]).default("public"),rbac:s.boolean().optional()}),gateway:s.object({authHeader:s.string().min(1).max(100).default("x-api-key"),upstreamAuth:s.object({type:s.enum(["none","static_bearer"]),token:s.string().optional()}).default({type:"none"})}),metering:s.object({meters:s.array(ap).max(10).default([]),billOn4xx:s.boolean().default(!1)}).default({meters:[],billOn4xx:!1}),backend:np.optional(),usage:bv.optional(),usagePricing:s.never({error:"usagePricing is not supported. Define usage.meters.<key>.rating instead."}).optional(),routeCatalog:vv.optional(),resources:ep,policies:Iv,customer_context:Sv.optional(),frontend:s.never({error:"frontend is not authorable in Business-as-Code. Define pages and navigation in the frontend application; use route policy surfaces for API/UI callability."}).optional(),billing:s.object({applyLimitUpgradesInstantly:s.boolean().optional(),subscriberChangePolicy:wn.default({default:"period_end",when:{price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"},allowImmediatePriceIncrease:!1,allowImmediateEntitlementReduction:!1})}).default({subscriberChangePolicy:{default:"period_end",when:{price_increase:"period_end",price_decrease:"immediate",route_grant_added:"immediate",route_grant_removed:"period_end",limit_increased:"immediate",limit_reduced:"period_end",credit_increased:"immediate",credit_reduced:"period_end",rating_changed:"period_end"},allowImmediatePriceIncrease:!1,allowImmediateEntitlementReduction:!1}}),plans:s.array(cs).max(4).default([]),lifecycle:s.object({breaking_changes:s.object({require_deprecation_window_days:s.number().int().nonnegative().default(0),require_successor_route:s.boolean().default(!1)}).default({require_deprecation_window_days:0,require_successor_route:!1})}).default({breaking_changes:{require_deprecation_window_days:0,require_successor_route:!1}}),webhooks:Wm.optional(),environments:qm.optional(),ephemeral:s.object({defaultPlan:s.string().min(1).optional()}).optional()}).superRefine((e,t)=>{ov(e,t),sv(e.plans,t),av(e.plans,t),cv(e,t),uv(e,t),lv(e,t),dv(e,t)});var wv=1,xv="business",G$=`${xv}/business.ts`,Z$=s.object({irVersion:s.literal(wv),sdkVersion:s.string().min(1).max(64),business:up,routes:s.array(ip).max(200).default([]),frontendIntegrations:Km.default([])}).strict().superRefine((e,t)=>{let r=new Map;for(let[i,n]of e.routes.entries())for(let[o,a]of n.routes.entries()){let c=Nt({actionId:a.action,method:a.match.method,path:a.match.path}),u=op(a.match.method,a.match.path),l=a.action?n.actions?.find(p=>p.id===a.action):void 0,d=$v({action:l,layer:{backend:n.backend,cacheProfile:n.cacheProfile,description:n.description,mutation_class:n.mutation_class,runtime:n.runtime},route:{backend:a.backend??n.backend,inheritDefaultMeters:a.inheritDefaultMeters,limits:a.limits,metering:a.metering,policy:a.policy,unmetered:a.unmetered,usagePolicy:a.usagePolicy}}),g=r.get(c);if(g&&g.endpoint!==u){t.addIssue({code:"custom",path:["routes",i,"routes",o,"action"],message:`route id collision for "${c}": maps to both ${g.endpoint} and ${u}`});continue}if(g&&g.behavior!==d){t.addIssue({code:"custom",path:["routes",i,"routes",o],message:`conflicting route definition for "${c}"`});continue}r.set(c,{endpoint:u,behavior:d})}for(let[i,n]of e.business.plans.entries()){for(let[o,a]of(n.routeGrants??[]).entries())r.has(a)||t.addIssue({code:"custom",path:["business","plans",i,"routeGrants",o],message:`unknown route grant "${a}" for plan "${n.key}"`});for(let[o,a]of(n.frontendIntegrationGrants??[]).entries())e.frontendIntegrations.some(c=>c.id===a)||t.addIssue({code:"custom",path:["business","plans",i,"frontendIntegrationGrants",o],message:`unknown frontend integration grant "${a}" for plan "${n.key}"`})}});function $v(e){return lp(JSON.parse(JSON.stringify(e)))}function lp(e){return Array.isArray(e)?`[${e.map(lp).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[r])=>t<r?-1:t>r?1:0).map(([t,r])=>`${JSON.stringify(t)}:${lp(r)}`).join(",")}}`:JSON.stringify(e)}var qL=s.object({subscriberChangePolicy:wn.optional()}),JL=s.object({code:s.string(),kind:s.enum(["percent_off","amount_off","free_months"]),amount:s.number().optional(),durationMonths:s.number(),applicablePlanIds:s.array(s.string()).optional(),maxRedemptions:s.number().optional(),activeFrom:s.string().optional(),activeUntil:s.string().optional(),status:s.enum(["ACTIVE","ARCHIVED"]).optional()}),YL=s.object({id:s.string(),actorUserId:s.string().optional(),action:s.string(),decision:s.string().optional(),timestamp:s.string(),details:s.unknown().optional()}),QL=s.object({name:s.string(),branch:s.string().optional(),isProduction:s.boolean().optional()}),XL=s.object({id:s.string(),name:s.string(),apiKeyId:s.string().optional()});var Tv=s.object({id:s.string(),billingCycleId:s.string(),effectiveStart:s.string(),effectiveEnd:s.string(),compiledPlanId:s.string()}),Ov=s.object({currentPeriod:Tv,priorPeriod:Tv.optional()});var W$=s.object({subjectKey:s.string(),subscriptionId:s.string(),subscriberId:s.string(),businessId:s.string(),organizationId:s.string(),compiledPlanId:s.string(),activeEntitlementHash:s.string().optional(),generation:s.number(),enforcementMode:s.enum(["STRICT","GRACE","TRACK_ONLY"]),dedicatedShard:s.enum(["ACTIVE","DRAINING"]).optional(),memberAuthz:s.record(s.string(),s.object({permissions:s.array(s.string()),roles:s.array(s.string())})).optional(),memberAuthzComputedAt:s.number().optional(),postStreamLockouts:s.array(s.object({code:s.literal("post_stream_overspend"),reason:s.literal("usage_exhausted"),constraintKey:s.string().min(1),cycleId:s.string().min(1),dimension:s.string().min(1),currentCapacity:s.number().nonnegative(),observedUsage:s.number().nonnegative(),lockedAt:s.string().min(1),expiresAt:s.string().min(1)})).optional(),subscriptionStatus:s.string(),subscriberStatus:s.string(),scopes:s.array(s.string()),periods:Ov,expiresAt:s.number().optional(),trialEndsAt:s.string().optional()}),q$=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),state:W$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("revoked"),negativeCacheTtlSeconds:s.number().default(300),reason:s.string().optional()}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),lj=s.object({environmentId:s.string().nullable(),subjectKeys:s.array(s.string()).min(1).max(500)}),dj=s.object({results:s.array(s.object({subjectKey:s.string(),result:q$}))}),J$=s.object({keyId:s.string(),orgId:s.string(),businessId:s.string(),compiledPlanId:s.string(),entitlementHash:s.string().optional(),subscriptionId:s.string(),subscriberId:s.string(),apiKeyId:s.string().nullable(),subjectKey:s.string(),entitlementVersion:s.number().int(),status:s.enum(["active","revoked"]),subscriberStatus:s.enum(["ONBOARDING","ACTIVE","SUSPENDED"]),subscriptionStatus:s.string(),environment:s.enum(["production","sandbox"]).optional(),environmentId:s.string().optional(),scopes:s.array(s.string()).default([]),permissions:s.array(s.string()).optional(),roles:s.array(s.string()).optional(),entitlement:s.unknown().optional(),principal:s.object({subjectKind:s.enum(["member","service"]),memberId:s.string().optional(),serviceAccountId:s.string().optional(),keyId:s.string()}),currentPeriodId:s.string().optional(),currentPeriodStartMs:s.number().int().nonnegative().optional(),expiresAt:s.number().nullable().optional()}),mj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),record:J$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("revoked"),negativeCacheTtlSeconds:s.number().default(300),reason:s.string().optional()}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),pj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),entitlement:s.unknown(),expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]),Y$=s.object({id:s.string().min(1),slug:s.string().optional(),transportMode:s.enum(["direct","tunnel"]),verificationRequired:s.boolean().optional(),originUrl:s.string().optional(),originHostname:s.string().optional(),accessCredentialRef:s.string().optional(),policyVersion:s.string().optional()}),Q$=s.object({id:s.string(),origin:s.string(),sandboxOrigin:s.string().nullable().optional(),authHeader:s.string().optional(),pricing:s.record(s.string(),s.number()).optional(),metering:s.object({billOn4xx:s.boolean().optional()}).optional(),tenantLimits:s.array(s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()})).optional(),userLimits:s.array(s.object({unit:s.enum(["requests","tokens","computeMs","dollars"]),window:s.enum(["second","minute","hour","day","week","month"]),capacity:s.number()})).optional(),environmentId:s.string().optional(),contextTokenSecret:s.string().nullable().optional(),timeoutMs:s.number().positive().optional(),idleTimeoutMs:s.number().positive().optional(),backends:s.array(Y$).optional(),defaultBackendId:s.string().optional(),verificationRequired:s.boolean().optional(),allowedOrigins:s.array(s.string()).optional(),hasPublicRoutes:s.boolean().optional(),publicRoutesCompiledPlanId:s.string().min(1).optional()}),fj=s.discriminatedUnion("kind",[s.object({kind:s.literal("found"),tenant:Q$,expiresAt:s.number(),ttlSeconds:s.number()}),s.object({kind:s.literal("not_found"),negativeCacheTtlSeconds:s.number().default(60)}),s.object({kind:s.literal("rate_limited"),retryAfterSeconds:s.number().default(10)})]);var Av=["consumer_api_key","consumer_session_token","test_persona_session_token","builder_master_key","builder_session_token","maker_jwt","cli_session_jwt","service_jwt","internal_service","context_token"],Rv=s.enum(Av);var X$=s.object({fromIssuer:s.string().min(1),fromTokenId:s.string().min(1),intent:s.string().min(1)}),Cv=s.object({issuer:s.string().min(1),issuedAt:s.number().int().nonnegative(),expiresAt:s.number().int().nonnegative().optional(),tokenId:s.string().min(1).optional(),delegationChain:s.array(X$)});var eT=["template","embedded","provisioned","agent"],tT=s.enum(eT),nT=["builder_user","builder_org","maker","consumer_subject","internal_service","service_jwt","agent_runtime"],rT=s.enum(nT),Pv=s.object({kind:rT,id:s.string().min(1),label:s.string().optional()}),iT=["subscription","organization","platform"],oT=s.enum(iT),sT=s.object({kind:oT,id:s.string().min(1)}),aT=s.object({type:Rv,id:s.string().min(1),hint:s.string().max(8).optional()}),cT=s.object({compiledPlanId:s.string().min(1),fromCache:s.boolean().optional()}),Sj=s.object({requestId:s.string().min(1),surface:tT,builderOrgId:s.string().min(1),businessId:s.string().min(1).optional(),runtimeId:s.string().min(1).optional(),template:s.string().optional(),caller:Pv,actor:Pv,billingSubject:sT,credential:aT,operation:s.string().min(1),scopes:s.array(s.string()),entitlement:cT.optional(),trust:Cv});var uT=["BusinessApplyWorkflow","RollbackWorkflow","StripeSyncWorkflow","WebhookDispatchWorkflow","SubscriptionTransitionWorkflow","CompiledPlanLifecycleWorkflow","ShardReshardWorkflow","MaintenanceJobWorkflow"],Oj=s.enum(uT),lT=["transient","permanent","rollback-required","human-intervention"],Aj=s.enum(lT);var dT=["SAFE_AUTOMATIC","REQUIRES_APPROVAL","IRREVERSIBLE","BILLING_IMPACTING","EDGE_BREAKING"],Rj=s.enum(dT);var Uj=s.object({workflowExecutionId:s.string().min(1),eventType:s.string().min(1),phase:s.string().min(1).optional(),stepId:s.string().min(1).optional(),cohortKey:s.string().min(1).optional(),payload:s.record(s.string(),s.unknown()),occurredAt:s.string().min(1),correlationId:s.string().min(1).optional()}).transform(e=>({...e,workflowExecutionId:e.workflowExecutionId,stepId:e.stepId===void 0?void 0:e.stepId}));var mT=["GATEWAY","HOSTED_UI_PAGE","HOSTED_UI_PROXY"],pT=["platform_requests"],fT=s.object({requestId:s.string().optional(),businessId:s.string().optional(),route:s.string().optional(),usageEventId:s.string().optional()}).strict(),gT=s.object({organizationId:s.string().min(1),source:s.enum(mT),dimension:s.enum(pT),quantity:s.number().int().positive(),idempotencyKey:s.string().min(1).max(512),occurredAt:s.string().datetime(),metadata:fT.optional()}).strict(),Xj=s.object({entries:s.array(gT).min(1).max(500)});var hT=["owner","admin","member"];function bT(e){return e==="maker_token"}var M=hT,C=["owner","admin"],Ve=["owner"],O=["business"],ee=["organization"],ms=["self"],dp=["business","organization"],_T=["business","self"],vT=["organization","self"];function An(e){return e.replaceAll("_"," ")}function I(e,t){let[r,i]=e.split(":"),n=r,o=`${An(r)}: ${An(i)}`,a=t.effect==="read"?`View ${An(r)} ${An(i)} data through authorized platform surfaces.`:`Perform ${An(r)} ${An(i)} operations through authorized platform surfaces.`;return{...t,domain:n,title:o,description:a}}var Dt={"agent:configure":I("agent:configure",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"auth_provider_connection:create":I("auth_provider_connection:create",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"auth_provider_connection:delete":I("auth_provider_connection:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"auth_provider_connection:read":I("auth_provider_connection:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"browser_only"}),"auth_provider_connection:update":I("auth_provider_connection:update",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"browser_only"}),"agent:read":I("agent:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"analytics:read":I("analytics:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"apply_timeline:read":I("apply_timeline:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"audit_log:export":I("audit_log:export",{effect:"read",allowedTargetKinds:dp,defaultRoles:C,delegation:"maker_token"}),"audit_log:read":I("audit_log:read",{effect:"read",allowedTargetKinds:dp,defaultRoles:M,delegation:"maker_token"}),"auth_context:read":I("auth_context:read",{effect:"read",allowedTargetKinds:ms,defaultRoles:M,delegation:"maker_token"}),"auth_context:issue":I("auth_context:issue",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:create":I("automation_rule:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:delete":I("automation_rule:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"automation_rule:read":I("automation_rule:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"automation_rule:update":I("automation_rule:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:bind":I("backend:bind",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:create":I("backend:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:delete":I("backend:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"backend:read":I("backend:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"brand:update":I("brand:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"bulletin:ack":I("bulletin:ack",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"bulletin:read":I("bulletin:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"bulletin:resolve":I("bulletin:resolve",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:create":I("business:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"maker_token"}),"business:compile":I("business:compile",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:delete":I("business:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:docs_update":I("business:docs_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:origin_update":I("business:origin_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:preview_env_update":I("business:preview_env_update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:publish":I("business:publish",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business:read":I("business:read",{effect:"read",allowedTargetKinds:dp,defaultRoles:M,delegation:"maker_token"}),"business:rollback":I("business:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_dependents:read":I("business_dependents:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:create":I("business_variable:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:delete":I("business_variable:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:operation_read":I("business_variable:operation_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:read":I("business_variable:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"business_variable:revoke":I("business_variable:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"business_variable:rotate":I("business_variable:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"change_set:propose":I("change_set:propose",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"change_set:read":I("change_set:read",{effect:"read",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:block":I("consumer:block",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:migrate_latest":I("consumer:migrate_latest",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:read":I("consumer:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"consumer:remove":I("consumer:remove",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"consumer:roles_assign":I("consumer:roles_assign",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"denial:read":I("denial:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"environment:create":I("environment:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"environment:delete":I("environment:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"environment:read":I("environment:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"frontend:deploy":I("frontend:deploy",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"frontend:read":I("frontend:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"frontend:rollback":I("frontend:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"git_connection:create":I("git_connection:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:delete":I("git_connection:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:read":I("git_connection:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"git_connection:update":I("git_connection:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"knowledge:read":I("knowledge:read",{effect:"read",allowedTargetKinds:_T,defaultRoles:M,delegation:"maker_token"}),"maker_token:create":I("maker_token:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:read":I("maker_token:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:revoke":I("maker_token:revoke",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"maker_token:rotate":I("maker_token:rotate",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"browser_only"}),"notification:preferences_read":I("notification:preferences_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"user_session_only"}),"notification:preferences_update":I("notification:preferences_update",{effect:"write",allowedTargetKinds:O,defaultRoles:M,delegation:"user_session_only"}),"organization:create":I("organization:create",{effect:"write",allowedTargetKinds:ms,defaultRoles:C,delegation:"user_session_only"}),"organization:delete":I("organization:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"user_session_only"}),"organization:ownership_transfer":I("organization:ownership_transfer",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"organization:read":I("organization:read",{effect:"read",allowedTargetKinds:vT,defaultRoles:M,delegation:"maker_token"}),"organization:manage_billing":I("organization:manage_billing",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"organization_role:read":I("organization_role:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"user_session_only"}),"organization_role:create":I("organization_role:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_role:update":I("organization_role:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_role:delete":I("organization_role:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_bulletin:read":I("organization_bulletin:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"maker_token"}),"organization_invitation:accept":I("organization_invitation:accept",{effect:"write",allowedTargetKinds:ms,defaultRoles:M,delegation:"user_session_only"}),"organization_invitation:create":I("organization_invitation:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_invitation:list":I("organization_invitation:list",{effect:"read",allowedTargetKinds:ms,defaultRoles:M,delegation:"user_session_only"}),"organization_invitation:revoke":I("organization_invitation:revoke",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_member:list":I("organization_member:list",{effect:"read",allowedTargetKinds:ee,defaultRoles:M,delegation:"user_session_only"}),"organization_member:remove":I("organization_member:remove",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"organization_member:update":I("organization_member:update",{effect:"write",allowedTargetKinds:ee,defaultRoles:C,delegation:"user_session_only"}),"persona:issue":I("persona:issue",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"persona:read":I("persona:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"persona:revoke":I("persona:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"persona:rotate":I("persona:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"plan:read":I("plan:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"plan:release_preview":I("plan:release_preview",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"plan_migration:create":I("plan_migration:create",{effect:"write",allowedTargetKinds:O,defaultRoles:Ve,delegation:"maker_token"}),"promo_code:archive":I("promo_code:archive",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:create":I("promo_code:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:reactivate":I("promo_code:reactivate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"promo_code:read":I("promo_code:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"promo_code:update":I("promo_code:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"rbac:read":I("rbac:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"resource_count:report":I("resource_count:report",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:mint":I("runtime_token:mint",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:read":I("runtime_token:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"runtime_token:revoke":I("runtime_token:revoke",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"runtime_token:rotate":I("runtime_token:rotate",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"stripe_connection:create":I("stripe_connection:create",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"stripe_connection:delete":I("stripe_connection:delete",{effect:"write",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"stripe_connection:read":I("stripe_connection:read",{effect:"read",allowedTargetKinds:ee,defaultRoles:Ve,delegation:"browser_only"}),"tax_settings:read":I("tax_settings:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"tax_settings:update":I("tax_settings:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"usage:read":I("usage:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:create":I("webhook:create",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:delete":I("webhook:delete",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:delivery_read":I("webhook:delivery_read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:read":I("webhook:read",{effect:"read",allowedTargetKinds:O,defaultRoles:M,delegation:"maker_token"}),"webhook:test":I("webhook:test",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"webhook:update":I("webhook:update",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"workflow:replay":I("workflow:replay",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"}),"workflow:rollback":I("workflow:rollback",{effect:"write",allowedTargetKinds:O,defaultRoles:C,delegation:"maker_token"})},Nv=Object.keys(Dt).sort(),nB=Nv.filter(e=>bT(Dt[e].delegation));function yT(){for(let e of Nv){if(!/^[a-z_]+:[a-z_]+$/.test(e)||e.includes("*"))throw new Error(`Platform permission must be exact: ${e}`);let t=Dt[e];if(t.allowedTargetKinds.length===0)throw new Error(`Platform permission has no target kind: ${e}`);if(t.defaultRoles.length===0)throw new Error(`Platform permission has no default role: ${e}`)}}yT();var ps={contract:{label:"Managed as code",summary:"Declarative business state, canonical in the GitHub repo. Author the business program and push.",canonicalHome:"repo",mcpMayWrite:!1},operate:{label:"Runtime operation",summary:"Imperative action on the running platform; never in the repo. Tokens, usage, readiness, builds, publish triggers, runtime knobs, brand edits.",canonicalHome:"api",mcpMayWrite:!0}};function Dv(e){return ps[e].mcpMayWrite}function zv(e){return ps[e].canonicalHome}var mp={repo_authored:{label:"Managed as code",agentAction:"Edit the business repo's business/ folder and push. Do not look for a command.",isPlatformGap:!1},git_triggered:{label:"Git-triggered",agentAction:"Push the branch or cut the GitHub Release; then poll the matching status command.",isPlatformGap:!1},served_by_other_command:{label:"Covered by another command",agentAction:"Run the command named in `unavailableDetail`.",isPlatformGap:!1},subscriber_portal:{label:"Subscriber portal surface",agentAction:"Not the builder's to run \u2014 it belongs to the subscriber org's own portal session. Use the builder-plane equivalent named in `unavailableDetail`, if any.",isPlatformGap:!1},human_decision:{label:"Human decision",agentAction:"Hand off to a human in the subscriber portal. An agent may propose; it may never decide.",isPlatformGap:!1},runtime_surface:{label:"Runtime surface",agentAction:"Performed by the running backend through @farthershore/backend at request time; there is nothing for an operator to call.",isPlatformGap:!1},credential_administration:{label:"Credential administration",agentAction:"Use the signed-in user credential-administration surface. Do not expose, persist, or rotate secrets through agent discovery.",isPlatformGap:!1},not_implemented:{label:"Not implemented",agentAction:"This IS a platform gap. Report it, and route around it with the fallback in `unavailableDetail` if one is given.",isPlatformGap:!0}},zt="webhooks",Br="promo-codes",Rn="variables",Re="change-sets",ve=e=>({reason:"repo_authored",detail:`Declare ${e} in the business repo's business/ folder and push \u2014 the platform applies it.`}),kT=[{key:"plan.create",class:"contract",domain:"plans",unavailable:ve("the plan with `fs.plan()`")},{key:"plan.update",class:"contract",domain:"plans",unavailable:ve("the plan's new shape with `fs.plan()`")},{key:"plan.delete",class:"contract",domain:"plans",unavailable:ve("the removal (delete the `fs.plan()` call)")},{key:"plan.read",class:"contract",domain:"plans"},{key:"plan.release_preview",class:"contract",domain:"plans",sideEffect:"write",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore plan diff <business>`; it builds the repo-local manifest and calls this release-preview endpoint."}},{key:"plan.variant.create",class:"contract",domain:"plans",unavailable:ve("the plan variant with `fs.plan()`")},{key:"plan.promote",class:"contract",domain:"plans",unavailable:ve("the promoted plan version")},{key:"plan.rollback",class:"contract",domain:"plans",unavailable:ve("the prior plan shape (revert the commit)")},{key:"route.define",class:"contract",domain:"routes",unavailable:ve("the route with `fs.route()`")},{key:"gateway.config",class:"contract",domain:"gateway",unavailable:ve("the gateway block on `fs.business()`")},{key:"auth_strategy.update",class:"contract",domain:"gateway",unavailable:ve("the auth strategy on `fs.business()`")},{key:"rate_limit.update",class:"contract",domain:"gateway",unavailable:ve("the limits on the plan or route")},{key:"meter.define",class:"contract",domain:"metering",unavailable:ve("the meter with `fs.meter()`")},{key:"backend.define",class:"contract",domain:"backends",unavailable:ve("the backend with `fs.backend()`")},{key:"webhook.define",class:"contract",domain:zt,unavailable:ve("the webhook block on `fs.business()`")},{key:"business.contract_field.update",class:"contract",domain:"businesses",unavailable:ve("the field (name / meters / subscriberChangePolicy / rbac) on `fs.business()`")},{key:"rbac.enable",class:"contract",domain:"products",unavailable:ve("the `rbac` flag on `fs.business()`")},{key:"rbac.read",class:"contract",domain:"products"},{key:"business.list",class:"operate",domain:"businesses"},{key:"business.status",class:"operate",domain:"businesses"},{key:"change_set.portal_list",class:"operate",domain:Re,sideEffect:"read",unavailable:{reason:"subscriber_portal",detail:"GET /portal/businesses/:id/me/change-sets \u2014 the subscriber org's own view of its ChangeSets, reached in the portal. The builder-plane equivalent IS a command: `farthershore proposal list` (change_set.proposal_list)."}},{key:"change_set.portal_read",class:"operate",domain:Re,sideEffect:"read",unavailable:{reason:"subscriber_portal",detail:"GET /portal/businesses/:id/me/change-sets/:changeSetId \u2014 the subscriber's own detail view. The builder-plane equivalent IS a command: `farthershore proposal get` (change_set.proposal_read)."}},{key:"apply_timeline.list",class:"operate",domain:Re},{key:"apply_timeline.read",class:"operate",domain:Re},{key:"change_set.approve",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Sign-off is human/portal-session-only (ADR-0013). Propose with `farthershore proposal create`, then ask a human in the subscriber org to approve it in the portal."}},{key:"change_set.apply",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Execution of a governed ChangeSet is human/portal-session-only (ADR-0013). Poll `farthershore proposal get` for the status a human's apply produces."}},{key:"change_set.rollback",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Reverting an applied ChangeSet is human/portal-session-only (ADR-0013). Ask a human in the subscriber org to roll it back in the portal."}},{key:"change_set.cancel",class:"operate",domain:Re,unavailable:{reason:"human_decision",detail:"Cancelling a governed ChangeSet is human/portal-session-only (ADR-0013), reserved for the proposer or an approver in the portal."}},{key:"change_set.propose",class:"operate",domain:Re},{key:"change_set.preview",class:"operate",domain:Re},{key:"change_set.proposal_list",class:"operate",domain:Re},{key:"change_set.proposal_read",class:"operate",domain:Re},{key:"business.delete",class:"operate",domain:"businesses"},{key:"business.config_attempts.read",class:"operate",domain:"businesses"},{key:"build.trigger",class:"operate",domain:"lifecycle",unavailable:{reason:"git_triggered",detail:"The sanctioned build triggers are git events: production on a GitHub Release, a preview environment on a push to its env branch. A builder-API trigger route exists (POST /businesses/:id/frontend/deploy) but the CLI deliberately does not expose it \u2014 a third manual trigger lets what is serving diverge from git. Push or release, then `farthershore frontend status --wait`."}},{key:"frontend.deploy",class:"operate",domain:"frontend",unavailable:{reason:"git_triggered",detail:"The CLI DELIBERATELY exposes no deploy verb: production publishes on a GitHub Release, a preview environment on a push to its env branch, and a third manual trigger is another way for what is serving to diverge from git. (The builder API does mount POST /businesses/:id/frontend/deploy; the CLI intentionally does not wrap it.) Push or release, then `farthershore frontend status --wait`."}},{key:"frontend.status",class:"operate",domain:"frontend"},{key:"frontend.rollback",class:"operate",domain:"frontend"},{key:"auth_provider_connection.read",class:"operate",domain:"identity"},{key:"auth_provider_connection.create",class:"operate",domain:"identity"},{key:"auth_provider_connection.update",class:"operate",domain:"identity"},{key:"auth_provider_connection.delete",class:"operate",domain:"identity"},{key:"webhook.read",class:"operate",domain:zt},{key:"webhook.create",class:"operate",domain:zt},{key:"webhook.update",class:"operate",domain:zt},{key:"webhook.delete",class:"operate",domain:zt},{key:"webhook.test",class:"operate",domain:zt},{key:"agents.list",class:"operate",domain:"agents"},{key:"agents.status",class:"operate",domain:"agents"},{key:"agents.runs.show",class:"operate",domain:"agents"},{key:"agents.enable",class:"operate",domain:"agents"},{key:"agents.disable",class:"operate",domain:"agents"},{key:"bulletin.list",class:"operate",domain:"agents"},{key:"bulletin.read",class:"operate",domain:"agents"},{key:"bulletin.ack",class:"operate",domain:"agents"},{key:"bulletin.resolve",class:"operate",domain:"agents"},{key:"webhook.delivery.read",class:"operate",domain:zt},{key:"promo_code.read",class:"operate",domain:Br},{key:"promo_code.create",class:"operate",domain:Br},{key:"promo_code.update",class:"operate",domain:Br},{key:"promo_code.archive",class:"operate",domain:Br},{key:"promo_code.reactivate",class:"operate",domain:Br},{key:"consumer.read",class:"operate",domain:"consumers"},{key:"consumer.block",class:"operate",domain:"consumers"},{key:"consumer.migrate_latest",class:"operate",domain:"consumers"},{key:"consumer.remove",class:"operate",domain:"consumers"},{key:"consumer.rbac.settings",class:"operate",domain:"consumers",unavailable:{reason:"subscriber_portal",detail:"GET/PUT /portal/businesses/:id/me/rbac/settings \u2014 the subscriber org toggles RBAC and picks its default role in its own portal. The builder enables the RBAC feature by declaring `rbac` on `fs.business()` and pushing (rbac.enable, repo-authored); `farthershore business rbac` only VERIFIES the accepted state (rbac.read)."}},{key:"consumer.rbac.roles",class:"operate",domain:"consumers",unavailable:{reason:"subscriber_portal",detail:"/portal/businesses/:id/me/rbac/roles \u2014 the subscriber org authors its own roles in its portal. A builder/agent may only PROPOSE a role change, via `farthershore proposal create`."}},{key:"consumer.roles.assign",class:"operate",domain:"consumers"},{key:"business_variable.read",class:"operate",domain:Rn},{key:"business_variable.create",class:"operate",domain:Rn},{key:"business_variable.rotate",class:"operate",domain:Rn},{key:"business_variable.revoke",class:"operate",domain:Rn},{key:"business_variable.delete",class:"operate",domain:Rn},{key:"business_variable.operation.read",class:"operate",domain:Rn},{key:"runtime_token.mint",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.rotate",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.revoke",class:"operate",domain:"runtime-tokens"},{key:"runtime_token.read",class:"operate",domain:"runtime-tokens"},{key:"metering_token.mint",class:"operate",domain:"metering",unavailable:{reason:"runtime_surface",detail:"The metering credential is DERIVED from the runtime token at backend bootstrap (/runtime/*), not minted separately. Issue the runtime token with `farthershore backend tokens create --operations metering`."}},{key:"usage.report",class:"operate",domain:"usage",unavailable:{reason:"runtime_surface",detail:"Usage is reported by the running backend at request time \u2014 `usage.report(meter, n)` from @farthershore/backend. Read what it recorded with `farthershore usage summary`."}},{key:"usage.read",class:"operate",domain:"usage"},{key:"backend.create",class:"operate",domain:"backends"},{key:"backend.bind",class:"operate",domain:"backends"},{key:"backend.delete",class:"operate",domain:"backends"},{key:"backend.read",class:"operate",domain:"backends"},{key:"backend.status.read",class:"operate",domain:"backends",unavailable:{reason:"served_by_other_command",detail:"`farthershore backend list` (backend.read) already returns each backend's derived status \u2014 there is no separate status command."}},{key:"persona.bootstrap",class:"operate",domain:"personas"},{key:"persona.read",class:"operate",domain:"personas"},{key:"persona.rotate",class:"operate",domain:"personas"},{key:"persona.revoke",class:"operate",domain:"personas"},{key:"analytics.timeseries",class:"operate",domain:"analytics"},{key:"analytics.latency",class:"operate",domain:"analytics"},{key:"analytics.top",class:"operate",domain:"analytics"},{key:"analytics.log",class:"operate",domain:"analytics"},{key:"organization.list",class:"operate",domain:"organizations"},{key:"organization.create",class:"operate",domain:"organizations"},{key:"organization.role.list",class:"operate",domain:"organizations"},{key:"organization.role.show",class:"operate",domain:"organizations"},{key:"organization.role.create",class:"operate",domain:"organizations"},{key:"organization.role.update",class:"operate",domain:"organizations"},{key:"organization.role.delete",class:"operate",domain:"organizations"},{key:"organization.member.list",class:"operate",domain:"organizations"},{key:"organization.invitation.create",class:"operate",domain:"organizations"},{key:"organization.invitation.list",class:"operate",domain:"organizations"},{key:"organization.invitation.revoke",class:"operate",domain:"organizations"},{key:"organization.invitation.accept",class:"operate",domain:"organizations"},{key:"organization.member.update",class:"operate",domain:"organizations"},{key:"organization.member.remove",class:"operate",domain:"organizations"},{key:"organization.ownership.transfer",class:"operate",domain:"organizations"},{key:"organization.delete",class:"operate",domain:"organizations"},{key:"organization.overview.read",class:"operate",domain:"organizations"},{key:"organization.bulletin.read",class:"operate",domain:"organizations"},{key:"organization.billing.manage",class:"operate",domain:"billing",unavailable:{reason:"credential_administration",detail:"Use the signed-in browser billing flow. Platform subscription management is interactive and browser-only."}},{key:"audit_log.read",class:"operate",domain:"audit-logs"},{key:"audit_log.business.read",class:"operate",domain:"audit-logs"},{key:"audit_log.business.export",class:"operate",domain:"audit-logs"},{key:"audit_log.export",class:"operate",domain:"audit-logs"},{key:"notification.preferences.read",class:"operate",domain:"notifications"},{key:"notification.preferences.update",class:"operate",domain:"notifications"},{key:"brand.update",class:"operate",domain:"branding",unavailable:{reason:"served_by_other_command",detail:"`farthershore business update --display-name/--description/--icon-url/--logo-url` (registered under business.origin.update; MCP tool `fs_brand_update`) writes the brand fields."}},{key:"business.origin.update",class:"operate",domain:"businesses"},{key:"business.docs.enable",class:"operate",domain:"businesses"},{key:"business.docs.disable",class:"operate",domain:"businesses"},{key:"business.preview_env.set",class:"operate",domain:"businesses"},{key:"plan.migration_batch.create",class:"operate",domain:"plans"},{key:"business.create",class:"operate",domain:"businesses"},{key:"business.compile",class:"operate",domain:"businesses",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore validate --business <business>`; it builds deterministically and calls this manifest-compile endpoint for the server verdict."}},{key:"business.read",class:"operate",domain:"businesses"},{key:"business.routes.read",class:"contract",domain:"businesses"},{key:"business.contract.read",class:"contract",domain:"businesses"},{key:"business.publish",class:"operate",domain:"lifecycle"},{key:"business.rollback",class:"operate",domain:"lifecycle"},{key:"manifest.apply",class:"contract",domain:"lifecycle",unavailable:{reason:"git_triggered",detail:"The repo pipeline applies the compiled IR on a push/release through the same neutral apply service. `farthershore validate` runs the identical verdict locally WITHOUT applying; `farthershore apply-timeline list` shows what the platform applied."}},{key:"environment.create",class:"operate",domain:"environments"},{key:"environment.delete",class:"operate",domain:"environments"},{key:"environment.read",class:"operate",domain:"environments"},{key:"auth.context.read",class:"operate",domain:"authentication",unavailable:{reason:"served_by_other_command",detail:"Use `farthershore auth whoami`."}},{key:"auth.context.issue",class:"operate",domain:"authentication"},...["create","read","rotate","revoke"].map(e=>({key:`maker_token.${e}`,class:"operate",domain:"authentication",unavailable:{reason:"credential_administration",detail:"Use the signed-in dashboard token administration page. MakerToken secrets are never exposed through agent discovery."}})),...["create","read","update","delete"].map(e=>({key:`git_connection.${e}`,class:"operate",domain:"authentication"})),...["create","read","delete"].map(e=>({key:`stripe_connection.${e}`,class:"operate",domain:"billing"})),{key:"tax_settings.read",class:"operate",domain:"billing"},{key:"tax_settings.update",class:"operate",domain:"billing"},{key:"resource_count.report",class:"operate",domain:"resources"},{key:"denial.read",class:"operate",domain:"observability"},{key:"business_dependents.read",class:"operate",domain:"businesses"},{key:"workflow.replay",class:"operate",domain:"workflows"},{key:"workflow.rollback",class:"operate",domain:"workflows"},{key:"automation_rule.read",class:"operate",domain:"automation"},{key:"automation_rule.create",class:"operate",domain:"automation"},{key:"automation_rule.update",class:"operate",domain:"automation"},{key:"automation_rule.delete",class:"operate",domain:"automation"},{key:"knowledge.guide.read",class:"operate",domain:"knowledge"},{key:"knowledge.business.read",class:"operate",domain:"knowledge"}],fs={"auth.context.issue":{permission:"auth_context:issue",targetKind:"business"},"auth.context.read":{permission:"auth_context:read",targetKind:"self"},"git_connection.create":{permission:"git_connection:create",targetKind:"organization"},"git_connection.delete":{permission:"git_connection:delete",targetKind:"organization"},"git_connection.read":{permission:"git_connection:read",targetKind:"organization"},"git_connection.update":{permission:"git_connection:update",targetKind:"organization"},"stripe_connection.create":{permission:"stripe_connection:create",targetKind:"organization"},"stripe_connection.delete":{permission:"stripe_connection:delete",targetKind:"organization"},"stripe_connection.read":{permission:"stripe_connection:read",targetKind:"organization"},"agents.disable":{permission:"agent:configure",targetKind:"business"},"agents.enable":{permission:"agent:configure",targetKind:"business"},"agents.list":{permission:"agent:read",targetKind:"business"},"agents.runs.show":{permission:"agent:read",targetKind:"business"},"agents.status":{permission:"agent:read",targetKind:"business"},"analytics.latency":{permission:"analytics:read",targetKind:"business"},"analytics.log":{permission:"analytics:read",targetKind:"business"},"analytics.timeseries":{permission:"analytics:read",targetKind:"business"},"analytics.top":{permission:"analytics:read",targetKind:"business"},"apply_timeline.list":{permission:"apply_timeline:read",targetKind:"business"},"apply_timeline.read":{permission:"apply_timeline:read",targetKind:"business"},"audit_log.export":{permission:"audit_log:export",targetKind:"organization"},"audit_log.read":{permission:"audit_log:read",targetKind:"organization"},"audit_log.business.read":{permission:"audit_log:read",targetKind:"business"},"audit_log.business.export":{permission:"audit_log:export",targetKind:"business"},"backend.bind":{permission:"backend:bind",targetKind:"business"},"backend.create":{permission:"backend:create",targetKind:"business"},"backend.delete":{permission:"backend:delete",targetKind:"business"},"backend.read":{permission:"backend:read",targetKind:"business"},"automation_rule.create":{permission:"automation_rule:create",targetKind:"business"},"automation_rule.delete":{permission:"automation_rule:delete",targetKind:"business"},"automation_rule.read":{permission:"automation_rule:read",targetKind:"business"},"automation_rule.update":{permission:"automation_rule:update",targetKind:"business"},"bulletin.ack":{permission:"bulletin:ack",targetKind:"business"},"bulletin.list":{permission:"bulletin:read",targetKind:"business"},"bulletin.read":{permission:"bulletin:read",targetKind:"business"},"bulletin.resolve":{permission:"bulletin:resolve",targetKind:"business"},"business.create":{permission:"business:create",targetKind:"organization"},"business.compile":{permission:"business:compile",targetKind:"business"},"business.delete":{permission:"business:delete",targetKind:"business"},"business.docs.disable":{permission:"business:docs_update",targetKind:"business"},"business.docs.enable":{permission:"business:docs_update",targetKind:"business"},"business.list":{permission:"business:read",targetKind:"organization"},"business.origin.update":{permission:"business:origin_update",targetKind:"business"},"business.preview_env.set":{permission:"business:preview_env_update",targetKind:"business"},"business.publish":{permission:"business:publish",targetKind:"business"},"business.read":{permission:"business:read",targetKind:"business"},"business.routes.read":{permission:"business:read",targetKind:"business"},"business.contract.read":{permission:"business:read",targetKind:"business"},"business.config_attempts.read":{permission:"business:read",targetKind:"business"},"business.status":{permission:"business:read",targetKind:"business"},"business_dependents.read":{permission:"business_dependents:read",targetKind:"business"},"business_variable.delete":{permission:"business_variable:delete",targetKind:"business"},"business_variable.create":{permission:"business_variable:create",targetKind:"business"},"business_variable.operation.read":{permission:"business_variable:operation_read",targetKind:"business"},"business_variable.read":{permission:"business_variable:read",targetKind:"business"},"business_variable.rotate":{permission:"business_variable:rotate",targetKind:"business"},"business_variable.revoke":{permission:"business_variable:revoke",targetKind:"business"},"change_set.preview":{permission:"change_set:propose",targetKind:"business"},"change_set.proposal_list":{permission:"change_set:read",targetKind:"business"},"change_set.proposal_read":{permission:"change_set:read",targetKind:"business"},"change_set.propose":{permission:"change_set:propose",targetKind:"business"},"consumer.block":{permission:"consumer:block",targetKind:"business"},"consumer.migrate_latest":{permission:"consumer:migrate_latest",targetKind:"business"},"consumer.read":{permission:"consumer:read",targetKind:"business"},"consumer.remove":{permission:"consumer:remove",targetKind:"business"},"consumer.roles.assign":{permission:"consumer:roles_assign",targetKind:"business"},"environment.create":{permission:"environment:create",targetKind:"business"},"environment.delete":{permission:"environment:delete",targetKind:"business"},"denial.read":{permission:"denial:read",targetKind:"business"},"environment.read":{permission:"environment:read",targetKind:"business"},"frontend.rollback":{permission:"frontend:rollback",targetKind:"business"},"frontend.status":{permission:"frontend:read",targetKind:"business"},"notification.preferences.read":{permission:"notification:preferences_read",targetKind:"business"},"notification.preferences.update":{permission:"notification:preferences_update",targetKind:"business"},"knowledge.guide.read":{permission:"knowledge:read",targetKind:"self"},"knowledge.business.read":{permission:"knowledge:read",targetKind:"business"},"organization.bulletin.read":{permission:"organization_bulletin:read",targetKind:"organization"},"organization.billing.manage":{permission:"organization:manage_billing",targetKind:"organization"},"organization.create":{permission:"organization:create",targetKind:"self"},"organization.delete":{permission:"organization:delete",targetKind:"organization"},"organization.invitation.accept":{permission:"organization_invitation:accept",targetKind:"self"},"organization.invitation.create":{permission:"organization_invitation:create",targetKind:"organization"},"organization.invitation.list":{permission:"organization_invitation:list",targetKind:"self"},"organization.invitation.revoke":{permission:"organization_invitation:revoke",targetKind:"organization"},"organization.list":{permission:"organization:read",targetKind:"self"},"organization.role.list":{permission:"organization_role:read",targetKind:"organization"},"organization.role.show":{permission:"organization_role:read",targetKind:"organization"},"organization.role.create":{permission:"organization_role:create",targetKind:"organization"},"organization.role.update":{permission:"organization_role:update",targetKind:"organization"},"organization.role.delete":{permission:"organization_role:delete",targetKind:"organization"},"organization.member.list":{permission:"organization_member:list",targetKind:"organization"},"organization.member.remove":{permission:"organization_member:remove",targetKind:"organization"},"organization.member.update":{permission:"organization_member:update",targetKind:"organization"},"organization.overview.read":{permission:"organization:read",targetKind:"organization"},"organization.ownership.transfer":{permission:"organization:ownership_transfer",targetKind:"organization"},"persona.bootstrap":{permission:"persona:issue",targetKind:"business"},"persona.read":{permission:"persona:read",targetKind:"business"},"persona.revoke":{permission:"persona:revoke",targetKind:"business"},"persona.rotate":{permission:"persona:rotate",targetKind:"business"},"plan.create":{permission:"local_repository:write",targetKind:"local_repository"},"plan.migration_batch.create":{permission:"plan_migration:create",targetKind:"business"},"plan.read":{permission:"plan:read",targetKind:"business"},"plan.release_preview":{permission:"plan:release_preview",targetKind:"business"},"auth_provider_connection.create":{permission:"auth_provider_connection:create",targetKind:"business"},"auth_provider_connection.delete":{permission:"auth_provider_connection:delete",targetKind:"business"},"auth_provider_connection.read":{permission:"auth_provider_connection:read",targetKind:"business"},"auth_provider_connection.update":{permission:"auth_provider_connection:update",targetKind:"business"},"promo_code.archive":{permission:"promo_code:archive",targetKind:"business"},"promo_code.create":{permission:"promo_code:create",targetKind:"business"},"promo_code.reactivate":{permission:"promo_code:reactivate",targetKind:"business"},"promo_code.read":{permission:"promo_code:read",targetKind:"business"},"promo_code.update":{permission:"promo_code:update",targetKind:"business"},"rbac.read":{permission:"rbac:read",targetKind:"business"},"runtime_token.mint":{permission:"runtime_token:mint",targetKind:"business"},"runtime_token.read":{permission:"runtime_token:read",targetKind:"business"},"runtime_token.revoke":{permission:"runtime_token:revoke",targetKind:"business"},"runtime_token.rotate":{permission:"runtime_token:rotate",targetKind:"business"},"resource_count.report":{permission:"resource_count:report",targetKind:"business"},"tax_settings.read":{permission:"tax_settings:read",targetKind:"business"},"tax_settings.update":{permission:"tax_settings:update",targetKind:"business"},"usage.read":{permission:"usage:read",targetKind:"business"},"workflow.replay":{permission:"workflow:replay",targetKind:"business"},"workflow.rollback":{permission:"workflow:rollback",targetKind:"business"},"webhook.create":{permission:"webhook:create",targetKind:"business"},"webhook.delete":{permission:"webhook:delete",targetKind:"business"},"webhook.delivery.read":{permission:"webhook:delivery_read",targetKind:"business"},"webhook.read":{permission:"webhook:read",targetKind:"business"},"webhook.test":{permission:"webhook:test",targetKind:"business"},"webhook.update":{permission:"webhook:update",targetKind:"business"},"plan.update":{permission:"local_repository:write",targetKind:"local_repository"},"plan.delete":{permission:"local_repository:write",targetKind:"local_repository"},"plan.variant.create":{permission:"local_repository:write",targetKind:"local_repository"},"plan.promote":{permission:"local_repository:write",targetKind:"local_repository"},"plan.rollback":{permission:"local_repository:write",targetKind:"local_repository"},"route.define":{permission:"local_repository:write",targetKind:"local_repository"},"gateway.config":{permission:"local_repository:write",targetKind:"local_repository"},"auth_strategy.update":{permission:"local_repository:write",targetKind:"local_repository"},"rate_limit.update":{permission:"local_repository:write",targetKind:"local_repository"},"meter.define":{permission:"local_repository:write",targetKind:"local_repository"},"backend.define":{permission:"local_repository:write",targetKind:"local_repository"},"webhook.define":{permission:"local_repository:write",targetKind:"local_repository"},"business.contract_field.update":{permission:"local_repository:write",targetKind:"local_repository"},"rbac.enable":{permission:"local_repository:write",targetKind:"local_repository"},"build.trigger":{permission:"local_repository:write",targetKind:"local_repository"},"frontend.deploy":{permission:"frontend:deploy",targetKind:"business"},"manifest.apply":{permission:"local_repository:write",targetKind:"local_repository"},"backend.status.read":{permission:"backend:read",targetKind:"business"},"brand.update":{permission:"brand:update",targetKind:"business"},"business.rollback":{permission:"business:rollback",targetKind:"business"}},Uv=new Set(["subscriber_portal","human_decision","runtime_surface","credential_administration"]);function Cn(e){return e.sideEffect!==void 0?e.sideEffect:/[._](read|list|status|show|top|log|latency|timeseries|export)$/.test(e.key)?"read":"write"}var IT=new Set(["business","organization","self","local_repository"]);function ET(e,t){if(!/^[a-z_]+:[a-z_]+$/.test(t.permission)||t.permission.includes("*"))throw new Error(`Agent operation ${e.key} must declare one exact permission`);if(!IT.has(t.targetKind))throw new Error(`Agent operation ${e.key} has an invalid target kind`);if(t.permission==="local_repository:write"){if(t.targetKind!=="local_repository")throw new Error(`Local repository operation ${e.key} has an invalid authorization binding`);if(Cn(e)!=="write")throw new Error(`Local repository operation ${e.key} has a read side effect but uses write-effect authority`);return}let r=Dt[t.permission];if(r===void 0)throw new Error(`Agent operation ${e.key} uses an unknown platform permission`);let i=Cn(e);if(i!==r.effect)throw new Error(`Agent operation ${e.key} has ${i} side effect but uses ${r.effect}-effect authority`);if(!r.allowedTargetKinds.includes(t.targetKind))throw new Error(`Agent operation ${e.key} uses a target kind not allowed by ${t.permission}`)}function ST(e){let t=new Set;for(let r of e){if(t.has(r.key))throw new Error(`Duplicate platform operation key: ${r.key}`);if(t.add(r.key),r.agentVisibility==="excluded"){let i=fs[r.key],n=r.unavailable!==void 0&&Uv.has(r.unavailable.reason),o=r.unavailable===void 0&&i!==void 0&&i.permission!=="local_repository:write"&&Dt[i.permission].delegation==="browser_only";if(r.authorization!==void 0||!n&&!o)throw new Error(`Excluded operation ${r.key} has an invalid agent visibility binding`);continue}if(r.authorization===void 0)throw new Error(`Agent operation ${r.key} is missing an authorization binding`);ET(r,r.authorization)}}var pp=kT.map(e=>{if(e.unavailable!==void 0&&Uv.has(e.unavailable.reason))return{...e,sideEffect:Cn(e),agentVisibility:"excluded",authorization:void 0};let r=fs[e.key];return r!==void 0&&r.permission!=="local_repository:write"&&Dt[r.permission].delegation==="browser_only"?{...e,sideEffect:Cn(e),agentVisibility:"excluded",authorization:void 0}:r===void 0?{...e,sideEffect:Cn(e),agentVisibility:"visible",authorization:void 0}:{...e,sideEffect:Cn(e),agentVisibility:"visible",authorization:r}});ST(pp);var Lv=pp.filter(e=>e.agentVisibility==="visible");for(let e of Object.keys(fs))if(!pp.some(t=>t.key===e))throw new Error(`Authorization binding references unknown operation: ${e}`);function jv(e){return fs[e]}var Ut={kind:"self"},gs={kind:"authenticated_organization"},Lt=(e="businessId")=>({kind:"path",targetKind:"business",parameter:e}),wT=(e="orgId")=>({kind:"path",targetKind:"organization",parameter:e});function fe(e,t,r,i,n){return{method:e,path:t,operationId:r,authorization:{kind:"operation",operationKeys:[i],target:n}}}function x(e,t,r,i,n="businessId"){return fe(e,t,r,i,Lt(n))}function pe(e,t,r,i){return fe(e,t,r,i,wT())}var xT=[{method:"POST",path:"/auth/cli/exchange",operationId:"exchangeCliCredential",authorization:{kind:"infrastructure",purpose:"raw_cli_credential_exchange"}},{method:"GET",path:"/auth/cli/organizations",operationId:"listCliSessionOrganizations",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/revoke",operationId:"revokeCliSessionCredential",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/start",operationId:"startCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/token",operationId:"pollCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},{method:"POST",path:"/auth/cli/device/ack",operationId:"ackCliDeviceAuthorization",authorization:{kind:"infrastructure",purpose:"cli_device_authorization"}},fe("GET","/builder/organizations","listBuilderOrganizations","organization.list",Ut),x("POST","/management/businesses/{businessId}/auth/context-token","createContextToken","auth.context.issue"),fe("POST","/builder/organizations","createBuilderOrganization","organization.create",Ut),pe("GET","/builder/organizations/{orgId}/roles","listBuilderOrganizationRoles","organization.role.list"),pe("GET","/builder/organizations/{orgId}/roles/{roleKey}","getBuilderOrganizationRole","organization.role.show"),pe("POST","/builder/organizations/{orgId}/roles","createBuilderOrganizationRole","organization.role.create"),pe("PATCH","/builder/organizations/{orgId}/roles/{roleKey}","updateBuilderOrganizationRole","organization.role.update"),pe("DELETE","/builder/organizations/{orgId}/roles/{roleKey}","deleteBuilderOrganizationRole","organization.role.delete"),pe("GET","/builder/organizations/{orgId}/members","listBuilderOrganizationMembers","organization.member.list"),pe("POST","/builder/organizations/{orgId}/invitations","createBuilderOrganizationInvitation","organization.invitation.create"),fe("GET","/builder/invitations","listMyBuilderInvitations","organization.invitation.list",Ut),pe("DELETE","/builder/organizations/{orgId}/invitations/{invitationId}","revokeBuilderOrganizationInvitation","organization.invitation.revoke"),fe("POST","/builder/invitations/{invitationId}/accept","acceptBuilderInvitation","organization.invitation.accept",Ut),pe("PATCH","/builder/organizations/{orgId}/members/{memberUserId}","updateBuilderOrganizationMember","organization.member.update"),pe("DELETE","/builder/organizations/{orgId}/members/{memberUserId}","deleteBuilderOrganizationMember","organization.member.remove"),pe("POST","/builder/organizations/{orgId}/ownership/transfer","transferBuilderOrganizationOwnership","organization.ownership.transfer"),pe("DELETE","/builder/organizations/{orgId}","deleteBuilderOrganization","organization.delete"),pe("GET","/builder/organizations/{orgId}/overview","getBuilderOrganizationOverview","organization.overview.read"),pe("GET","/builder/organizations/{orgId}/bulletin","listBuilderOrgBulletin","organization.bulletin.read"),pe("GET","/builder/organizations/{orgId}/audit-logs","listBuilderAuditLogs","audit_log.read"),pe("GET","/builder/organizations/{orgId}/audit-logs/export.csv","exportBuilderAuditLogsCsv","audit_log.export"),x("GET","/builder/organizations/{orgId}/businesses/{businessId}/audit-logs","listBuilderBusinessAuditLogs","audit_log.business.read","businessId"),x("GET","/builder/organizations/{orgId}/businesses/{businessId}/audit-logs/export.csv","exportBuilderBusinessAuditLogsCsv","audit_log.business.export","businessId"),fe("GET","/businesses","listBusinesses","business.list",gs),fe("POST","/businesses","createBusiness","business.create",gs),x("GET","/businesses/{id}","getBusiness","business.read","id"),x("GET","/businesses/{id}/routes","listBusinessRoutes","business.routes.read","id"),x("GET","/businesses/{id}/contract","getBusinessContract","business.contract.read","id"),x("PUT","/businesses/{id}/icon","uploadBusinessIcon","brand.update","id"),x("DELETE","/businesses/{id}/icon","deleteBusinessIcon","brand.update","id"),x("PUT","/businesses/{id}/logo","uploadBusinessLogo","brand.update","id"),x("DELETE","/businesses/{id}/logo","deleteBusinessLogo","brand.update","id"),x("GET","/businesses/{id}/config","getBusinessConfigState","rbac.read","id"),x("GET","/businesses/{id}/config-attempts","listBusinessConfigAttempts","business.config_attempts.read","id"),{method:"PATCH",path:"/businesses/{id}",operationId:"updateBusiness",authorization:{kind:"operation",operationKeys:["business.origin.update","business.preview_env.set","business.docs.enable","business.docs.disable","brand.update"],target:Lt("id"),bodyFieldOperations:{origin:"business.origin.update",sandboxOrigin:"business.origin.update",envBranchPrefix:"business.preview_env.set",previewEnvTrigger:"business.preview_env.set",docsEnabled:"business.docs.enable",displayName:"brand.update",description:"brand.update",iconUrl:"brand.update",logoUrl:"brand.update"}}},x("DELETE","/businesses/{id}","deleteBusiness","business.delete","id"),x("POST","/businesses/{id}/publish","publishBusiness","business.publish","id"),x("POST","/businesses/{id}/manifest/compile","compileBusinessManifest","business.compile","id"),x("GET","/businesses/{id}/deployments","listDeployments","business.status","id"),x("POST","/businesses/{id}/plans/release-preview","previewBusinessPlanRelease","plan.release_preview","id"),x("GET","/businesses/{id}/environments","listBusinessEnvironments","environment.read","id"),x("POST","/businesses/{id}/environments","createBusinessEnvironment","environment.create","id"),x("DELETE","/businesses/{id}/environments/{envName}","deleteBusinessEnvironment","environment.delete","id"),x("GET","/businesses/{id}/consumers","listBusinessSubscribers","consumer.read","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/block","blockBusinessSubscriber","consumer.block","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/migrate-latest","migrateBusinessSubscriberToLatest","consumer.migrate_latest","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/remove","forceRemoveBusinessSubscriber","consumer.remove","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/members/{userExternalId}/roles","overrideConsumerMemberBusinessRoles","consumer.roles.assign","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/change-sets","proposeConsumerChangeSet","change_set.propose","id"),x("GET","/businesses/{id}/consumers/{subscriberId}/change-sets","listConsumerChangeSets","change_set.proposal_list","id"),x("GET","/businesses/{id}/consumers/{subscriberId}/change-sets/{changeSetId}","getConsumerChangeSet","change_set.proposal_read","id"),x("POST","/businesses/{id}/consumers/{subscriberId}/change-sets/{changeSetId}/preview","previewConsumerChangeSet","change_set.preview","id"),x("GET","/businesses/{id}/notification-preferences","getBusinessNotificationPreferences","notification.preferences.read","id"),x("PATCH","/businesses/{id}/notification-preferences","updateBusinessNotificationPreferences","notification.preferences.update","id"),{method:"GET",path:"/businesses/{id}/apply-timeline",operationId:"listApplyTimeline",authorization:{kind:"operation",operationKeys:["apply_timeline.list","apply_timeline.read"],target:Lt("id")}},x("GET","/businesses/{id}/promo-codes","listBusinessPromoCodes","promo_code.read","id"),x("POST","/businesses/{id}/promo-codes","createBusinessPromoCode","promo_code.create","id"),{method:"PATCH",path:"/businesses/{id}/promo-codes/{promoCodeId}",operationId:"updateBusinessPromoCode",authorization:{kind:"operation",operationKeys:["promo_code.update","promo_code.archive","promo_code.reactivate"],target:Lt("id"),bodyFieldOperations:{code:"promo_code.update",amount:"promo_code.update",activeFrom:"promo_code.update",activeUntil:"promo_code.update",applicablePlanIds:"promo_code.update",status:"promo_code.update"}}},x("GET","/management/businesses/{businessId}","getManagedBusiness","business.read"),x("DELETE","/management/businesses/{businessId}","deleteManagedBusiness","business.delete"),fe("GET","/management/businesses","listManagedBusinesses","business.list",gs),fe("GET","/management/whoami","managementWhoami","auth.context.read",Ut),x("POST","/management/businesses/{businessId}/publish","publishManagedBusiness","business.publish"),x("GET","/management/businesses/{businessId}/publishes/{workflowExecutionId}","getManagedBusinessPublishStatus","business.status"),x("POST","/management/businesses/{businessId}/rollback","rollbackManagedBusiness","business.rollback"),fe("GET","/management/businesses/subdomain-availability","checkManagedSubdomainAvailability","business.create",gs),x("GET","/management/businesses/{businessId}/plans","listManagedBusinessPlans","plan.read"),x("GET","/management/businesses/{businessId}/backends","listManagedBusinessBackends","backend.read"),x("POST","/management/businesses/{businessId}/backends","createManagedBusinessBackend","backend.create"),x("PATCH","/management/businesses/{businessId}/backends/{backendId}","bindManagedBusinessBackendOrigin","backend.bind"),x("DELETE","/management/businesses/{businessId}/backends/{backendId}","deleteManagedBusinessBackend","backend.delete"),x("GET","/management/businesses/{businessId}/runtime-tokens","listManagedBusinessRuntimeTokens","runtime_token.read"),x("POST","/management/businesses/{businessId}/runtime-tokens","createManagedBusinessRuntimeToken","runtime_token.mint"),x("POST","/management/businesses/{businessId}/runtime-tokens/{tokenId}/rotate","rotateManagedBusinessRuntimeToken","runtime_token.rotate"),x("DELETE","/management/businesses/{businessId}/runtime-tokens/{tokenId}","revokeManagedBusinessRuntimeToken","runtime_token.revoke"),fe("GET","/v1/backends/{backendId}/readiness","getManagedBackendReadiness","backend.status.read",{kind:"indirect_business",resource:"backend",parameter:"backendId"}),x("GET","/management/businesses/{businessId}/usage","getManagedBusinessUsage","usage.read"),x("PUT","/management/businesses/{businessId}/logo","uploadManagedBusinessLogo","brand.update"),x("DELETE","/management/businesses/{businessId}/logo","deleteManagedBusinessLogo","brand.update"),x("PUT","/management/businesses/{businessId}/resources/{resource}/count","reportManagedBusinessResourceCount","resource_count.report"),x("GET","/management/businesses/{businessId}/tax-settings","getManagedBusinessTaxSettings","tax_settings.read"),x("POST","/management/businesses/{businessId}/tax-settings","updateManagedBusinessTaxSettings","tax_settings.update"),x("GET","/management/businesses/{businessId}/explain-denial/{requestId}","explainDenial","denial.read"),x("GET","/management/businesses/{businessId}/dependents","listBusinessDependents","business_dependents.read"),fe("POST","/replay","agentReplay","workflow.replay",{kind:"body",targetKind:"business",field:"business_id"}),fe("POST","/rollback-to-config","agentRollbackToConfig","workflow.rollback",{kind:"body",targetKind:"business",field:"business_id"}),fe("GET","/agent/v1/runtime-context","agentRuntimeContext","auth.context.read",Ut),x("POST","/management/businesses/{businessId}/webhooks","createWebhookEndpoint","webhook.create"),x("GET","/management/businesses/{businessId}/webhooks","listWebhookEndpoints","webhook.read"),x("DELETE","/management/businesses/{businessId}/webhooks/{webhookId}","deleteWebhookEndpoint","webhook.delete"),x("PATCH","/management/businesses/{businessId}/webhooks/{webhookId}","updateWebhookEndpoint","webhook.update"),x("GET","/management/businesses/{businessId}/webhooks/{webhookId}/deliveries","listWebhookDeliveries","webhook.delivery.read"),x("POST","/management/businesses/{businessId}/webhooks/{webhookId}/test","testWebhookEndpoint","webhook.test"),x("POST","/portal/businesses/{businessId}/environments/{envId}/test/bootstrap-key","bootstrapTestEnvKey","persona.bootstrap"),x("GET","/portal/businesses/{businessId}/environments/{envId}/test/personas","listTestPersonas","persona.read"),x("POST","/portal/businesses/{businessId}/environments/{envId}/test/personas/{personaId}/rotate","rotateTestPersona","persona.rotate"),x("DELETE","/portal/businesses/{businessId}/environments/{envId}/test/personas/{personaId}","revokeTestPersona","persona.revoke"),x("POST","/businesses/{businessId}/frontend/deploy","deployBusinessFrontend","frontend.deploy"),x("GET","/businesses/{businessId}/frontend/status","getBusinessFrontendStatus","frontend.status"),x("GET","/businesses/{businessId}/frontend/releases","listBusinessFrontendReleases","frontend.status"),x("POST","/businesses/{businessId}/frontend/rollback","rollbackBusinessFrontend","frontend.rollback"),x("GET","/businesses/{businessId}/backends","listBusinessBackends","backend.read"),x("POST","/businesses/{businessId}/backends","createBusinessBackend","backend.create"),x("PATCH","/businesses/{businessId}/backends/{backendId}","bindBusinessBackendOrigin","backend.bind"),x("DELETE","/businesses/{businessId}/backends/{backendId}","deleteBusinessBackend","backend.delete"),x("GET","/businesses/{businessId}/runtime-tokens","listBusinessRuntimeTokens","runtime_token.read"),x("POST","/businesses/{businessId}/runtime-tokens","createBusinessRuntimeToken","runtime_token.mint"),x("POST","/businesses/{businessId}/runtime-tokens/{tokenId}/rotate","rotateBusinessRuntimeToken","runtime_token.rotate"),x("DELETE","/businesses/{businessId}/runtime-tokens/{tokenId}","revokeBusinessRuntimeToken","runtime_token.revoke"),x("GET","/businesses/{id}/automation-rules","listAutomationRules","automation_rule.read","id"),x("POST","/businesses/{id}/automation-rules","createAutomationRule","automation_rule.create","id"),x("GET","/businesses/{id}/automation-rules/{ruleId}","getAutomationRule","automation_rule.read","id"),x("PATCH","/businesses/{id}/automation-rules/{ruleId}","updateAutomationRule","automation_rule.update","id"),x("DELETE","/businesses/{id}/automation-rules/{ruleId}","deleteAutomationRule","automation_rule.delete","id"),x("GET","/businesses/{id}/agents","listAgents","agents.list","id"),x("GET","/businesses/{id}/agents/usage","getAgentUsage","agents.list","id"),x("GET","/businesses/{id}/agents/{role}","getAgentStatus","agents.status","id"),{method:"PUT",path:"/businesses/{id}/agents/{role}",operationId:"configureAgent",authorization:{kind:"operation",operationKeys:["agents.enable","agents.disable"],target:Lt("id"),bodyFieldOperations:{enabled:"agents.enable"}}},x("GET","/businesses/{id}/agents/{role}/runs/{runId}","getAgentRunDetail","agents.runs.show","id"),x("GET","/businesses/{id}/bulletin","listBulletinPosts","bulletin.list","id"),x("GET","/businesses/{id}/bulletin/{postId}","getBulletinPost","bulletin.read","id"),{method:"PATCH",path:"/businesses/{id}/bulletin/{postId}",operationId:"setBulletinPostStatus",authorization:{kind:"operation",operationKeys:["bulletin.ack","bulletin.resolve"],target:Lt("id"),bodyFieldOperations:{status:"bulletin.ack"}}},{method:"POST",path:"/businesses/{businessId}/analytics/query",operationId:"queryBusinessAnalytics",authorization:{kind:"operation",operationKeys:["analytics.timeseries","analytics.latency","analytics.top","analytics.log"],target:Lt()}},x("POST","/businesses/{businessId}/plans/{planKey}/migration-batches","createPlanMigrationBatch","plan.migration_batch.create"),x("GET","/businesses/{businessId}/auth-provider-connections","listAuthProviderConnections","auth_provider_connection.read"),x("GET","/businesses/{businessId}/auth-provider-connections/{connectionId}","getAuthProviderConnection","auth_provider_connection.read"),x("POST","/businesses/{businessId}/auth-provider-connections","createAuthProviderConnection","auth_provider_connection.create"),x("PATCH","/businesses/{businessId}/auth-provider-connections/{connectionId}","updateAuthProviderConnection","auth_provider_connection.update"),x("DELETE","/businesses/{businessId}/auth-provider-connections/{connectionId}","deleteAuthProviderConnection","auth_provider_connection.delete"),x("GET","/businesses/{businessId}/variables","listBusinessVariables","business_variable.read"),x("POST","/businesses/{businessId}/variables/{name}","createBusinessVariable","business_variable.create"),x("POST","/businesses/{businessId}/variables/{name}/rotate","rotateBusinessVariable","business_variable.rotate"),x("DELETE","/businesses/{businessId}/variables/{name}","deleteBusinessVariable","business_variable.delete"),x("POST","/businesses/{businessId}/variables/{name}/revoke","revokeBusinessVariable","business_variable.revoke"),x("GET","/businesses/{businessId}/variables/operations/{operationId}","getBusinessVariableOperation","business_variable.operation.read"),fe("GET","/knowledge/index","getKnowledgeIndex","knowledge.guide.read",Ut),x("GET","/businesses/{businessId}/knowledge/index","getBusinessKnowledgeIndex","knowledge.business.read")];function $T(e){let t=new Set,r=new Set;for(let i of e){let n=`${i.method} ${i.path}`;if(t.has(n))throw new Error(`Duplicate agent HTTP route: ${n}`);if(t.add(n),r.has(i.operationId))throw new Error(`Duplicate agent HTTP operation id: ${i.operationId}`);if(r.add(i.operationId),i.authorization.kind!=="infrastructure"){if(i.authorization.operationKeys.length===0)throw new Error(`${n} must bind at least one operation`);for(let o of i.authorization.operationKeys){let a=jv(o);if(a===void 0)throw new Error(`Unknown agent operation ${o} on ${n}`);let c=i.authorization.target.kind==="path"||i.authorization.target.kind==="body"||i.authorization.target.kind==="query"?i.authorization.target.targetKind:i.authorization.target.kind==="authenticated_organization"?"organization":i.authorization.target.kind==="indirect_business"?"business":"self";if(a.targetKind!==c)throw new Error(`${n} target ${c} does not match ${o} target ${a.targetKind}`)}}}}$T(xT);var le={VALIDATION_ERROR:"VALIDATION_ERROR",CONFLICT:"CONFLICT",NOT_FOUND:"NOT_FOUND",NOT_IMPLEMENTED:"NOT_IMPLEMENTED",NOT_CONFIGURED:"NOT_CONFIGURED",INTERNAL_ERROR:"INTERNAL_ERROR",SERVICE_UNAVAILABLE:"SERVICE_UNAVAILABLE",RATE_LIMIT_EXCEEDED:"RATE_LIMIT_EXCEEDED",DELETE_CONFIRMATION_REQUIRED:"DELETE_CONFIRMATION_REQUIRED",MISSING_HOST:"MISSING_HOST",MISSING_CONNECTIONS:"MISSING_CONNECTIONS",SECRET_NOT_CONFIGURED:"SECRET_NOT_CONFIGURED",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",INVALID_ACCESS_KEY:"INVALID_ACCESS_KEY",AUTO_KEY_CREATION_FAILED:"AUTO_KEY_CREATION_FAILED",PERSONA_NOT_FOUND:"PERSONA_NOT_FOUND",PERSONA_REVOKED:"PERSONA_REVOKED",PERSONA_SESSIONS_NOT_SUPPORTED:"PERSONA_SESSIONS_NOT_SUPPORTED",NOT_TEST_PERSONA_ENV:"NOT_TEST_PERSONA_ENV",PERSONA_AUTH_DISABLED_IN_PROD:"PERSONA_AUTH_DISABLED_IN_PROD",MAKER_TOKEN_NOT_FOUND:"MAKER_TOKEN_NOT_FOUND",MAKER_TOKEN_NOT_REVOKED:"MAKER_TOKEN_NOT_REVOKED",MAKER_TOKEN_NO_PRODUCT:"MAKER_TOKEN_NO_PRODUCT",MAKER_TOKEN_REVOKED:"MAKER_TOKEN_REVOKED",ORGANIZATION_NOT_FOUND:"ORGANIZATION_NOT_FOUND",ORG_HAS_ACTIVE_SUBSCRIPTIONS:"ORG_HAS_ACTIVE_SUBSCRIPTIONS",ORG_HAS_OUTSTANDING_BALANCE:"ORG_HAS_OUTSTANDING_BALANCE",PERSONAL_ORG_NOT_DELETABLE:"PERSONAL_ORG_NOT_DELETABLE",PERSONAL_OWNER_IMMUTABLE:"PERSONAL_OWNER_IMMUTABLE",PERSONAL_CO_OWNER_NOT_ALLOWED:"PERSONAL_CO_OWNER_NOT_ALLOWED",PRIMARY_OWNER_TRANSFER_REQUIRED:"PRIMARY_OWNER_TRANSFER_REQUIRED",MEMBER_NOT_FOUND:"MEMBER_NOT_FOUND",INVITATION_NOT_FOUND:"INVITATION_NOT_FOUND",ROLE_NOT_FOUND:"ROLE_NOT_FOUND",ROLE_KEY_CONFLICT:"ROLE_KEY_CONFLICT",ROLE_IN_USE:"ROLE_IN_USE",BUILT_IN_ROLE_NOT_DELETABLE:"BUILT_IN_ROLE_NOT_DELETABLE",INVALID_PLATFORM_PERMISSION:"INVALID_PLATFORM_PERMISSION",INVALID_ROLE_KEY:"INVALID_ROLE_KEY",RBAC_REQUIRES_TEAM_ORG:"RBAC_REQUIRES_TEAM_ORG",RBAC_NOT_ENABLED_BY_PRODUCT:"RBAC_NOT_ENABLED_BY_PRODUCT",UNKNOWN_PERMISSION:"UNKNOWN_PERMISSION",CUSTOMER_NOT_FOUND:"CUSTOMER_NOT_FOUND",PRODUCT_NOT_FOUND:"PRODUCT_NOT_FOUND",PRODUCT_DELETE_BLOCKED:"PRODUCT_DELETE_BLOCKED",PRODUCT_REPO_NOT_LINKED:"PRODUCT_REPO_NOT_LINKED",PRODUCT_SCOPE_MISMATCH:"PRODUCT_SCOPE_MISMATCH",YAML_PARSE_ERROR:"YAML_PARSE_ERROR",COMPILATION_NOT_FOUND:"COMPILATION_NOT_FOUND",PLAN_NOT_FOUND:"PLAN_NOT_FOUND",PLAN_HAS_ACTIVE_SUBSCRIPTIONS:"PLAN_HAS_ACTIVE_SUBSCRIPTIONS",PLAN_SLUG_CONFLICT:"PLAN_SLUG_CONFLICT",PLAN_REQUIRED:"PLAN_REQUIRED",PLAN_UPGRADE_REQUIRED:"PLAN_UPGRADE_REQUIRED",PLAN_OFFER_CHANGED:"PLAN_OFFER_CHANGED",SLUG_CONFLICT:"SLUG_CONFLICT",SLUG_BLOCKED:"SLUG_BLOCKED",SLUG_OFFENSIVE:"SLUG_OFFENSIVE",SLUG_RESERVED:"SLUG_RESERVED",SLUG_IMPERSONATION:"SLUG_IMPERSONATION",SLUG_INVALID_FORMAT:"SLUG_INVALID_FORMAT",SLUG_VALIDATOR_NOT_READY:"SLUG_VALIDATOR_NOT_READY",PRICING_PREVIEW_FAILED:"PRICING_PREVIEW_FAILED",PRICING_REPLAY_FAILED:"PRICING_REPLAY_FAILED",RESERVATION_NOT_FOUND:"RESERVATION_NOT_FOUND",PROMO_CODE_NOT_FOUND:"PROMO_CODE_NOT_FOUND",PROMO_CODE_INVALID:"PROMO_CODE_INVALID",BILLING_EVENT_NOT_FOUND:"BILLING_EVENT_NOT_FOUND",BILLING_NOT_CONFIGURED:"BILLING_NOT_CONFIGURED",SUBSCRIPTION_NOT_READY:"SUBSCRIPTION_NOT_READY",SUBSCRIPTION_FETCH_FAILED:"SUBSCRIPTION_FETCH_FAILED",INVALID_STATE:"INVALID_STATE",DUPLICATE_TRANSITION:"DUPLICATE_TRANSITION",ARCHIVED_TARGET:"ARCHIVED_TARGET",FREE_TO_PAID_VIA_CHECKOUT_ONLY:"FREE_TO_PAID_VIA_CHECKOUT_ONLY",RESOURCE_LIMIT_EXCEEDED:"RESOURCE_LIMIT_EXCEEDED",RESOURCE_LIMIT_CHECK_UNAVAILABLE:"RESOURCE_LIMIT_CHECK_UNAVAILABLE",STRIPE_NOT_CONFIGURED:"STRIPE_NOT_CONFIGURED",STRIPE_BALANCE_OUTSTANDING:"STRIPE_BALANCE_OUTSTANDING",STRIPE_OPERATION_FAILED:"STRIPE_OPERATION_FAILED",STRIPE_RESYNC_FAILED:"STRIPE_RESYNC_FAILED",CHECKOUT_SESSION_FAILED:"CHECKOUT_SESSION_FAILED",POLAR_PRODUCT_NOT_CONFIGURED:"POLAR_PRODUCT_NOT_CONFIGURED",BILLING_TAX_NOT_ENROLLED:"BILLING_TAX_NOT_ENROLLED",WEBHOOK_NOT_FOUND:"WEBHOOK_NOT_FOUND",WEBHOOK_DISPATCH_FAILED:"WEBHOOK_DISPATCH_FAILED",WEBHOOK_SECRET_NOT_CONFIGURED:"WEBHOOK_SECRET_NOT_CONFIGURED",INVALID_WEBHOOK_SIGNATURE:"INVALID_WEBHOOK_SIGNATURE",MISSING_RAW_BODY:"MISSING_RAW_BODY",WEBHOOK_REDIRECTED:"WEBHOOK_REDIRECTED",MANAGED_BY_CODE:"MANAGED_BY_CODE",GITHUB_CONNECTION_NOT_FOUND:"GITHUB_CONNECTION_NOT_FOUND",GITHUB_NOT_CONNECTED:"GITHUB_NOT_CONNECTED",GITHUB_SYNC_FAILED:"GITHUB_SYNC_FAILED",GITHUB_SYNC_UNAVAILABLE:"GITHUB_SYNC_UNAVAILABLE",GITHUB_TOKEN_FAILED:"GITHUB_TOKEN_FAILED",GIT_PROVIDER_NOT_CONFIGURED:"GIT_PROVIDER_NOT_CONFIGURED",ENVIRONMENT_NOT_FOUND:"ENVIRONMENT_NOT_FOUND",ENVIRONMENT_CLEANUP_FAILED:"ENVIRONMENT_CLEANUP_FAILED",DEPLOYMENT_RUN_NOT_FOUND:"DEPLOYMENT_RUN_NOT_FOUND",BRANCH_NO_MATCHING_ENV:"BRANCH_NO_MATCHING_ENV",APPLY_SPEC_FAILED:"APPLY_SPEC_FAILED",BOOTSTRAP_FAILED:"BOOTSTRAP_FAILED",JOB_ALREADY_RUNNING:"JOB_ALREADY_RUNNING",LOGO_DELETE_FAILED:"LOGO_DELETE_FAILED",LOGO_UPLOAD_FAILED:"LOGO_UPLOAD_FAILED",INVALID_LOGO_FORMAT:"INVALID_LOGO_FORMAT",CHANGE_SET_STALE:"CHANGE_SET_STALE",SIMULATION_STALE:"SIMULATION_STALE",IDEMPOTENCY_KEY_REUSED:"IDEMPOTENCY_KEY_REUSED",SELF_APPROVAL_FORBIDDEN:"SELF_APPROVAL_FORBIDDEN",HUMAN_APPROVAL_REQUIRED:"HUMAN_APPROVAL_REQUIRED",GOVERNED_BY_CHANGE_SET:"GOVERNED_BY_CHANGE_SET",COMPENSATION_REQUIRED:"COMPENSATION_REQUIRED",MIGRATION_TOO_LARGE:"MIGRATION_TOO_LARGE"};var uB={missing_token:le.UNAUTHORIZED,invalid_token:le.UNAUTHORIZED,context_unverified:le.UNAUTHORIZED,missing_signature:le.UNAUTHORIZED,malformed_signature:le.UNAUTHORIZED,unknown_key_id:le.UNAUTHORIZED,bad_signature:le.UNAUTHORIZED,expired_signature:le.UNAUTHORIZED,clock_skew:le.UNAUTHORIZED,replayed_nonce:le.UNAUTHORIZED,body_hash_mismatch:le.UNAUTHORIZED,route_mismatch:le.UNAUTHORIZED,environment_mismatch:le.UNAUTHORIZED,jwks_unavailable:le.SERVICE_UNAVAILABLE,body_too_large:le.VALIDATION_ERROR,member_subject_required:le.FORBIDDEN,service_subject_required:le.FORBIDDEN,surface_not_allowed:le.FORBIDDEN};var lB=Object.values(r_);var X={BATCHER_ENUM:"batcher-enum",RUNTIME_INLINE:"runtime-inline",CONSTRAINT:"constraint",GATEWAY_ERROR:"gateway-error"};var Bv={limit_allocator_unavailable:{statuses:[503],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/runtime.ts:471"]},limit_exceeded:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:326","engine/enforcement/constraints/quota.ts:69"]},rate_limited:{statuses:[429],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:328","engine/enforcement/constraints/rate-limit.ts:74","engine/pipeline/rate-limit.ts:83"]},credit_exhausted:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:333"]},enforcement_denied:{statuses:[402],source:X.BATCHER_ENUM,retryAfter:!0,verifiedAt:["engine/enforcement/batcher.ts:335"]},invalid_entitlement_shape:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!0,verifiedAt:["engine/enforcement/runtime.ts:144"]},unsupported_constraint_schema:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:154"]},enforcement_error:{statuses:[500],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:342"]},enforcement_dependency_unavailable:{statuses:[503],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/enforcement/runtime.ts:427"]},concurrency_limit_exceeded:{statuses:[429],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts"]},concurrency_context_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts:291"]},concurrency_coordinator_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/concurrency.ts:305"]},key_expired:{statuses:[401],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/credential-validity.ts:33"]},permission_denied:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/permission.ts:63"]},permission_unresolved:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/permission.ts"]},route_not_enabled:{statuses:[403],source:X.RUNTIME_INLINE,retryAfter:!1,verifiedAt:["engine/pipeline/pre-vec-costs.ts"]},geo_context_unavailable:{statuses:[503],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:44"]},geo_blocked:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:51"]},geo_not_allowed:{statuses:[403],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/geo-restriction.ts:58"]},resource_count_limit_exceeded:{statuses:[402],source:X.GATEWAY_ERROR,retryAfter:!1,verifiedAt:["apps/core:routes/internal/gateway-resources.ts:144"]},post_stream_overspend:{statuses:[402],source:X.CONSTRAINT,retryAfter:!0,verifiedAt:["engine/enforcement/constraints/lifecycle-block.ts"]},request_too_large:{statuses:[413],source:X.CONSTRAINT,retryAfter:!1,verifiedAt:["engine/enforcement/constraints/capacity.ts"]},resolver_rate_limited:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:55"]},resolver_unavailable:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:73"]},credential_resolver_miss_rate_limited:{statuses:[429],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/errors.ts:89"]},provider_throttled:{statuses:[503],source:X.GATEWAY_ERROR,retryAfter:!0,verifiedAt:["engine/pipeline/provider-adapter.ts"]}},TT=Object.keys(Bv);var OT=new Set([429,503]),mB=new Set(TT.filter(e=>Bv[e].statuses.every(t=>OT.has(t))));var AT=["quota","rate","concurrency","capacity","spend","adaptive"],fB=new Set(AT);var RT=[402,403,413,429],hB=new Set(RT);var CT=s.enum(["create","delete"]),PT=s.enum(["RESERVED","COMMITTED","RELEASED","DENIED"]),NT=s.object({mutationId:s.string().min(1).max(200),requestId:s.string().min(1).max(200),businessId:s.string().min(1).max(200),subscriptionId:s.string().min(1).max(200),compiledPlanId:s.string().min(1).max(200),actionId:s.string().min(1).max(160),environmentId:s.string().min(1).max(200).nullable(),subjectId:s.string().min(1).max(200).optional()}).strict();var AB=NT.extend({statusCode:s.number().int().min(100).max(599)}).strict(),RB=s.object({mutationId:s.string().min(1).max(200),resource:s.string().min(1).max(120),effect:CT,state:PT,count:s.number().int().nonnegative(),limit:s.number().int().nonnegative().nullable(),replayed:s.boolean()}).strict(),CB=s.object({error:s.object({code:s.literal("resource_count_limit_exceeded"),message:s.string(),limitCode:s.string(),dimension:s.string(),currentCapacity:s.number().int().nonnegative()}).strict()}).strict();var hs=s.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/),Mv=s.object({businessId:hs,environmentId:hs.nullable(),secretName:s.string().min(1).max(128).regex(/^[A-Z][A-Z0-9_]*$/)}).strict();var fp=s.object({scope:Mv,mutationId:hs,expectedGeneration:s.number().int().positive().nullable()}),DT=fp.extend({mutation:s.literal("publish"),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072)}).strict(),zT=fp.extend({mutation:s.literal("rotate"),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072)}).strict(),UT=fp.extend({mutation:s.enum(["revoke","delete"]),generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/)}).strict(),LT=s.discriminatedUnion("mutation",[DT,zT,UT]),DB=s.object({keyId:hs,signature:s.string().regex(/^[a-f0-9]{64}$/),command:LT}).strict(),zB=s.discriminatedUnion("available",[s.object({available:s.literal(!0),scope:Mv,generation:s.number().int().positive(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/),sealedPayload:s.string().min(1).max(131072),status:s.literal("ACTIVE")}).strict(),s.object({available:s.literal(!1),generation:s.number().int().positive().nullable(),payloadHash:s.string().regex(/^[a-f0-9]{64}$/).nullable(),status:s.enum(["MISSING","PENDING","REVOKING","REVOKED","DELETED"])}).strict()]);var Fv=(e=0)=>t=>`\x1B[${t+e}m`,Kv=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Hv=(e=0)=>(t,r,i)=>`\x1B[${38+e};2;${t};${r};${i}m`,te={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]}},n1=Object.keys(te.modifier),jT=Object.keys(te.color),BT=Object.keys(te.bgColor),r1=[...jT,...BT];function MT(){let e=new Map;for(let[t,r]of Object.entries(te)){for(let[i,n]of Object.entries(r))te[i]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[i]=te[i],e.set(n[0],n[1]);Object.defineProperty(te,t,{value:r,enumerable:!1})}return Object.defineProperty(te,"codes",{value:e,enumerable:!1}),te.color.close="\x1B[39m",te.bgColor.close="\x1B[49m",te.color.ansi=Fv(),te.color.ansi256=Kv(),te.color.ansi16m=Hv(),te.bgColor.ansi=Fv(10),te.bgColor.ansi256=Kv(10),te.bgColor.ansi16m=Hv(10),Object.defineProperties(te,{rgbToAnsi256:{value(t,r,i){return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[i]=r;i.length===3&&(i=[...i].map(o=>o+o).join(""));let n=Number.parseInt(i,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>te.rgbToAnsi256(...te.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,i,n;if(t>=232)r=((t-232)*10+8)/255,i=r,n=r;else{t-=16;let c=t%36;r=Math.floor(t/36)/5,i=Math.floor(c/6)/5,n=c%6/5}let o=Math.max(r,i,n)*2;if(o===0)return 30;let a=30+(Math.round(n)<<2|Math.round(i)<<1|Math.round(r));return o===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(t,r,i)=>te.ansi256ToAnsi(te.rgbToAnsi256(t,r,i)),enumerable:!1},hexToAnsi:{value:t=>te.ansi256ToAnsi(te.hexToAnsi256(t)),enumerable:!1}}),te}var FT=MT(),ze=FT;import gp from"node:process";import KT from"node:os";import Vv from"node:tty";function Ce(e,t=globalThis.Deno?globalThis.Deno.args:gp.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i<n)}var{env:ne}=gp,bs;Ce("no-color")||Ce("no-colors")||Ce("color=false")||Ce("color=never")?bs=0:(Ce("color")||Ce("colors")||Ce("color=true")||Ce("color=always"))&&(bs=1);function HT(){if("FORCE_COLOR"in ne)return ne.FORCE_COLOR==="true"?1:ne.FORCE_COLOR==="false"?0:ne.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(ne.FORCE_COLOR,10),3)}function VT(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function GT(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let i=HT();i!==void 0&&(bs=i);let n=r?bs:i;if(n===0)return 0;if(r){if(Ce("color=16m")||Ce("color=full")||Ce("color=truecolor"))return 3;if(Ce("color=256"))return 2}if("TF_BUILD"in ne&&"AGENT_NAME"in ne)return 1;if(e&&!t&&n===void 0)return 0;let o=n||0;if(ne.TERM==="dumb")return o;if(gp.platform==="win32"){let a=KT.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in ne)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in ne)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in ne)||ne.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in ne)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ne.TEAMCITY_VERSION)?1:0;if(ne.COLORTERM==="truecolor"||ne.TERM==="xterm-kitty"||ne.TERM==="xterm-ghostty"||ne.TERM==="wezterm")return 3;if("TERM_PROGRAM"in ne){let a=Number.parseInt((ne.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ne.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ne.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ne.TERM)||"COLORTERM"in ne?1:o}function Gv(e,t={}){let r=GT(e,{streamIsTTY:e&&e.isTTY,...t});return VT(r)}var ZT={stdout:Gv({isTTY:Vv.isatty(1)}),stderr:Gv({isTTY:Vv.isatty(2)})},Zv=ZT;function Wv(e,t,r){let i=e.indexOf(t);if(i===-1)return e;let n=t.length,o=0,a="";do a+=e.slice(o,i)+t+r,o=i+n,i=e.indexOf(t,o);while(i!==-1);return a+=e.slice(o),a}function qv(e,t,r,i){let n=0,o="";do{let a=e[i-1]==="\r";o+=e.slice(n,a?i-1:i)+t+(a?`\r
|
|
95
95
|
`:`
|
|
96
96
|
`)+r,n=i+1,i=e.indexOf(`
|
|
97
97
|
`,n)}while(i!==-1);return o+=e.slice(n),o}var{stdout:Jv,stderr:Yv}=Zv,hp=Symbol("GENERATOR"),Pn=Symbol("STYLER"),Mr=Symbol("IS_EMPTY"),Qv=["ansi","ansi","ansi256","ansi16m"],Nn=Object.create(null),WT=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Jv?Jv.level:0;e.level=t.level===void 0?r:t.level};var qT=e=>{let t=(...r)=>r.join(" ");return WT(t,e),Object.setPrototypeOf(t,Fr.prototype),t};function Fr(e){return qT(e)}Object.setPrototypeOf(Fr.prototype,Function.prototype);for(let[e,t]of Object.entries(ze))Nn[e]={get(){let r=_s(this,_p(t.open,t.close,this[Pn]),this[Mr]);return Object.defineProperty(this,e,{value:r}),r}};Nn.visible={get(){let e=_s(this,this[Pn],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var bp=(e,t,r,...i)=>e==="rgb"?t==="ansi16m"?ze[r].ansi16m(...i):t==="ansi256"?ze[r].ansi256(ze.rgbToAnsi256(...i)):ze[r].ansi(ze.rgbToAnsi(...i)):e==="hex"?bp("rgb",t,r,...ze.hexToRgb(...i)):ze[r][e](...i),JT=["rgb","hex","ansi256"];for(let e of JT){Nn[e]={get(){let{level:r}=this;return function(...i){let n=_p(bp(e,Qv[r],"color",...i),ze.color.close,this[Pn]);return _s(this,n,this[Mr])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);Nn[t]={get(){let{level:r}=this;return function(...i){let n=_p(bp(e,Qv[r],"bgColor",...i),ze.bgColor.close,this[Pn]);return _s(this,n,this[Mr])}}}}var YT=Object.defineProperties(()=>{},{...Nn,level:{enumerable:!0,get(){return this[hp].level},set(e){this[hp].level=e}}}),_p=(e,t,r)=>{let i,n;return r===void 0?(i=e,n=t):(i=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:i,closeAll:n,parent:r}},_s=(e,t,r)=>{let i=(...n)=>QT(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,YT),i[hp]=e,i[Pn]=t,i[Mr]=r,i},QT=(e,t)=>{if(e.level<=0||!t)return e[Mr]?"":t;let r=e[Pn];if(r===void 0)return t;let{openAll:i,closeAll:n}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=Wv(t,r.close,r.open),r=r.parent;let o=t.indexOf(`
|
|
98
|
-
`);return o!==-1&&(t=qv(t,n,i,o)),i+t+n};Object.defineProperties(Fr.prototype,Nn);var XT=Fr(),
|
|
98
|
+
`);return o!==-1&&(t=qv(t,n,i,o)),i+t+n};Object.defineProperties(Fr.prototype,Nn);var XT=Fr(),p1=Fr({level:Yv?Yv.level:0});var q=XT;function Xv(e){return JSON.stringify(e,null,2)}var ey;function ty(e){ey=ys(e)}function ce(){return ey??ys(void 0)}function Dn(){return ce()==="json"}function vs(e){Dn()||console.log(q.green(`\u2713 ${e}`))}function Kr(e){Dn()||process.stdout.write(`${e}
|
|
99
99
|
`)}function vp(e){Dn()||console.error(q.red(`\u2717 ${e}`))}function Hr(e){Dn()||console.warn(q.yellow(`\u26A0 ${e}`))}function we(e){Dn()||console.log(q.dim(e))}function ny(e){Dn()||console.log(q.bold(e))}function yp(){return process.stdout.isTTY===!0}function ys(e){if(e==="json"||e==="table")return e;if(e!==void 0)throw new b(`Unsupported --format "${e}". Use "json" or "table".`,400,{code:"INVALID_OUTPUT_FORMAT",param:"format"});return yp()?"table":"json"}var eO={MANAGED_BY_CODE:"This business's contract is managed as code. Edit the Business SDK program in its GitHub repo (business/) and push \u2014 do NOT retry the API. (Branding stays editable via `farthershore business update`.)",UNAUTHORIZED:"Token is invalid or revoked. Run `farthershore login` to update it.",FORBIDDEN:"Your token doesn't have access to this resource. Check the org / business scope.",INVALID_ACCESS_KEY:"Token format is wrong. Generate a new one at https://farthershore.com/settings/tokens.",MAKER_TOKEN_REVOKED:"This maker token was revoked. Mint a new one in the business settings.",MAKER_TOKEN_NO_BUSINESS:"Maker token is not bound to a business. Re-create it from the business page.",AUTH_NO_TOKEN:"Pipe an organization-scoped MakerToken to `farthershore login --token-stdin`, or set FARTHERSHORE_TOKEN to one for this invocation.",AUTH_INVALID_TOKEN:"Token format is malformed. Maker tokens start with `mk_` and are 30+ characters.",DESTRUCTIVE_OP_REQUIRES_YES:"Destructive ops (delete) require an explicit `--yes` to proceed. This is intentional safety.",BUSINESS_UPDATE_NO_FIELDS:"Pass at least one field flag (--display-name, --origin, --description).",PLAN_UPDATE_NO_FIELDS:"Pass at least one of --name, --recurring-fee-cents, --grant, --trial-days, --max-monthly-spend-cents, or --meter.",ENV_NOT_FOUND:"Environment doesn't exist. Use `farthershore env list <business>` to see available envs, or create one with `farthershore env create`.",STRIPE_NOT_CONFIGURED:"Stripe isn't connected on this business. Connect it in the dashboard before running billing operations.",STRIPE_NOT_CONNECTED:"Publishing requires a connected Stripe account. Connect one on the dashboard Connections page, then re-run `farthershore business publish`.",STRIPE_NOT_VERIFIED:"Your Stripe account isn't fully verified yet. Finish Stripe onboarding, then re-run `farthershore business publish`.",BILLING_TAX_NOT_ENROLLED:"Stripe Tax isn't enrolled for this account. Enable it from the dashboard Connections page, then re-run `farthershore business publish`.",STRIPE_BALANCE_OUTSTANDING:"Customer has an outstanding balance. Resolve the invoice in Stripe before retrying.",CHECKOUT_SESSION_FAILED:"Stripe rejected the checkout request. Check that the plan exists and Stripe credentials are valid.",BUSINESS_NOT_FOUND:"Check the business slug. Run `farthershore` (no args) for a list of businesses you can see.",BUSINESS_REPO_NOT_LINKED:"Link a GitHub repo to this business before publishing or validating business manifests.",YAML_PARSE_ERROR:"Business manifest is not valid. Run `farthershore build` locally, fix business/ source, then push again for bot validation.",GITHUB_NOT_CONNECTED:"Connect GitHub on the org page before running `farthershore business create <slug>` (it provisions the managed repo).",BRANCH_NO_MATCHING_ENV:"The current branch isn't mapped to an environment. Add a branch rule in business settings or pass --branch explicitly.",PLAN_NOT_FOUND:"Plan key doesn't exist on this business. Check the `plans` block in your local business manifest.",PLAN_HAS_ACTIVE_SUBSCRIPTIONS:"Plan has active subscribers and can't be deleted. Migrate them to another plan first.",PLAN_SLUG_CONFLICT:"Another plan already uses this key. Pick a unique plan key in your manifest.",SLUG_CONFLICT:"This business slug is taken. Pick a different name.",SLUG_BLOCKED:"This slug is reserved or blocked. Pick a different name.",SLUG_RESERVED:"This slug is reserved by Farther Shore. Pick a different name.",SLUG_INVALID_FORMAT:"Slug must be lowercase letters, digits, and hyphens (no leading/trailing hyphen).",DECISION_NOT_FOUND:"No DenialEvent recorded for that decisionId. Verify the id from the original deny response or audit log.",AUTH_UNAUTHORIZED:"Token is missing, expired, or lacks the denial:read permission required to read denial events.",RATE_LIMIT_EXCEEDED:"You've hit the rate limit. Wait a moment and retry.",VALIDATION_ERROR:"Request is malformed. The `details` field has the field-level errors.",CONFLICT:"The resource is in a state that conflicts with the request. Inspect `details` to learn more."};function kp(e){if(e)return eO[e]}function iy(e){process.stdout.write(`${JSON.stringify(e,null,2)}
|
|
100
100
|
`)}function tO(e,t){return{schema_version:1,ok:!0,op:e,data:t}}function nO(e,t){let r=t.status??0;return{schema_version:1,ok:!1,op:e,error:{code:t.code??"INTERNAL_ERROR",message:t.message,status:r,param:t.param,retryable:oO(r,t.code),details:t.details,hint:kp(t.code)}}}function G(e,t,r=cy()){if(ce()==="json"){iy(tO(r,e));return}t&&vs(oy(t))}function rO(e){return e===0?1:e===400||e===422?2:e===401||e===403?3:e===409?4:e>=500?5:1}var iO=new Set(["RATE_LIMIT_EXCEEDED","SERVICE_UNAVAILABLE"]);function oO(e,t){return e>=500||e===429||e===503?!0:t?iO.has(t):!1}function Ip(e,t=cy()){let r=e.status??0;if(ce()==="json")iy(nO(t,e));else{let i=kp(e.code),n=e.code?` [${e.code}]`:"";process.stderr.write(oy(`Error${n}: ${e.message}`)+`
|
|
101
101
|
`),i&&process.stderr.write(`Hint: ${i}
|
|
102
|
-
`)}return rO(r)}function oy(e){return e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g,"")}var sy="unknown";function ay(e){sy=e}function cy(){return sy}var aO=8*1024;async function
|
|
102
|
+
`)}return rO(r)}function oy(e){return e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g,"")}var sy="unknown";function ay(e){sy=e}function cy(){return sy}var aO=8*1024,cO=1e3;async function uO(e=process.stdin){if(e.isTTY===!0)throw new b("--token-stdin requires piped input.",void 0,{code:"AUTH_TOKEN_STDIN_TTY"});let t=[],r=0;for await(let n of e){let o=Buffer.from(n);if(r+=o.byteLength,r>aO)throw new b("Credential input is too large.",void 0,{code:"AUTH_TOKEN_STDIN_TOO_LARGE"});t.push(o)}let i;try{i=new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.concat(t,r))}catch{throw new b("Credential input must be valid UTF-8.",void 0,{code:"AUTH_TOKEN_STDIN_INVALID_ENCODING"})}if(i.endsWith(`\r
|
|
103
103
|
`)?i=i.slice(0,-2):i.endsWith(`
|
|
104
|
-
`)&&(i=i.slice(0,-1)),i.length===0)throw new b("Credential input is empty.",void 0,{code:"AUTH_TOKEN_STDIN_EMPTY"});return i}async function uy(e,t){try{return await e.authWhoami(t?{signal:t}:void 0)}catch(r){let i=r instanceof b?r.status??401:503,n=i>=500;throw new b(n?"Credential validation is temporarily unavailable.":"Credential validation failed.",i,{code:n?"AUTH_CREDENTIAL_VALIDATION_UNAVAILABLE":"AUTH_CREDENTIAL_INVALID"})}}function ks(){return new b("Device authorization expired.",401,{code:"AUTH_DEVICE_EXPIRED"})}async function
|
|
104
|
+
`)&&(i=i.slice(0,-1)),i.length===0)throw new b("Credential input is empty.",void 0,{code:"AUTH_TOKEN_STDIN_EMPTY"});return i}async function uy(e,t){try{return await e.authWhoami(t?{signal:t}:void 0)}catch(r){let i=r instanceof b?r.status??401:503,n=i>=500;throw new b(n?"Credential validation is temporarily unavailable.":"Credential validation failed.",i,{code:n?"AUTH_CREDENTIAL_VALIDATION_UNAVAILABLE":"AUTH_CREDENTIAL_INVALID"})}}function ks(){return new b("Device authorization expired.",401,{code:"AUTH_DEVICE_EXPIRED"})}async function lO(e,t){let r=t-Date.now();if(r<=0)throw ks();let i=new AbortController,n=setTimeout(()=>i.abort(ks()),r);try{let o=await uy(e,i.signal);if(i.signal.aborted||Date.now()>=t)throw ks();return o}catch(o){throw i.signal.aborted?ks():o}finally{clearTimeout(n)}}var dO=12e3;function mO(e){let t=!0,r=()=>{t&&(t=!1,process.off("SIGINT",n),process.off("SIGTERM",o))},i=a=>{r();let c=!1,u=()=>{c||(c=!0,process.kill(process.pid,a))},l=setTimeout(u,dO),d;try{d=e(a)}catch{clearTimeout(l),u();return}d.catch(()=>{}).finally(()=>{clearTimeout(l),u()})},n=()=>i("SIGINT"),o=()=>i("SIGTERM");return process.on("SIGINT",n),process.on("SIGTERM",o),r}async function pO(e){let t;try{t=await fetch(`${e.apiUrl}/auth/cli/revoke`,{method:"POST",headers:{Authorization:`Bearer ${e.token}`,"x-fs-surface":"cli"}})}catch{throw new b("CLI logout is temporarily unavailable.",503,{code:"AUTH_LOGOUT_UNAVAILABLE"})}if(!(t.status===204||t.status===401))throw new b("CLI logout is temporarily unavailable.",t.status,{code:"AUTH_LOGOUT_UNAVAILABLE"})}function fO(e,t){return t.kind==="builder"?{token:e,userId:t.user.id,orgId:t.activeOrganization.id}:t.kind==="cli_user"?{token:e,userId:t.userId,orgId:t.organizationId}:{token:e}}function Ep(e){return e.optsWithGlobals().apiUrl??process.env.FARTHERSHORE_API_URL??Ht().apiUrl}function gO(e){if(e.headless)throw new b("--token-stdin cannot be combined with device-login options.",400,{code:"AUTH_LOGIN_OPTION_CONFLICT"})}function hO(e,t){let r=`Verification URL: ${e}
|
|
105
105
|
User code: ${t}
|
|
106
|
-
`;if(ce()==="json"){process.stderr.write(r);return}Kr(`Verification URL: ${e}`),Kr(`User code: ${t}`)}async function hO(e){let t=new URL(e);if(t.protocol!=="https:"&&t.protocol!=="http:")throw new b("Verification URL is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});let{executable:r,args:i}=bO(t.toString());await new Promise((n,o)=>{try{let a=sO(r,i,{detached:!0,stdio:"ignore"});a.once("error",c=>{o(new Error("Unable to open the verification URL.",{cause:c}))}),a.once("spawn",()=>{a.unref(),n()})}catch(a){o(new Error("Unable to open the verification URL.",{cause:a}))}})}function bO(e,t=process.platform){return t==="darwin"?{executable:"open",args:["-n",e]}:t==="win32"?{executable:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{executable:"xdg-open",args:[e]}}function ly(e,t,r={}){let i=e.command("auth").description("Inspect CLI identity and select an organization");e.command("login").description("Authenticate the CLI without placing credentials in argv").option("--token-stdin","Read an organization-scoped MakerToken from piped stdin").option("--headless","Print the verification URL without opening it").action(async(a,c)=>{let u=Ep(c);if(a.tokenStdin){fO(a);let oe=await(r.readTokenFromStdin??cO)();if(!oe.startsWith("mk_"))throw new b("--token-stdin accepts only a pre-issued maker token.",400,{code:"AUTH_TOKEN_STDIN_REQUIRES_MAKER_TOKEN"});let ta=r.createClientForToken?r.createClientForToken({apiUrl:u,token:oe}):Ft({apiUrl:u,token:oe});if((await uy(ta)).kind!=="maker")throw new b("--token-stdin accepts only a pre-issued maker token.",400,{code:"AUTH_TOKEN_STDIN_REQUIRES_MAKER_TOKEN"});er({token:oe}),G({},"Credential stored.");return}let l=r.createDeviceClient?r.createDeviceClient({apiUrl:u}):Qf({apiUrl:u}),d=await l.start();if(gO(d.verificationUri,d.userCode),!a.headless){let K=r.openBrowser??hO;try{await K(d.verificationUriComplete)}catch{}}let g=await l.poll(d),p=r.createClientForToken?r.createClientForToken({apiUrl:u,token:g}):Ft({apiUrl:u,token:g}),_=await uO(p,d.expiresAtMs);if(!g.startsWith("fscli_")||_.kind!=="cli_user")throw new b("Device authorization response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});let S=Qe(),f=!1,m=!1,k=!1,A=new AbortController,P,z=new Promise(K=>{P=K}),U=()=>{!f||m||(S?er(S):wa(),m=!0)},ie=(r.installSignalHandlers??dO)(async()=>{k=!0,A.abort(),await z});try{er(pO(g,_)),f=!0}catch(K){throw P?.(),ie(),K}let Y;try{await l.ack(d,{signal:A.signal})}catch(K){Y=K}finally{P?.(),ie()}if(k){if(Y)try{U()}catch{throw new b("Device login could not restore credentials after interruption.",0,{code:"AUTH_DEVICE_CLEANUP_FAILED"})}throw new b("Device login was interrupted.",0,{code:"AUTH_DEVICE_INTERRUPTED"})}if(Y){try{U()}catch{throw new b("Device login could not restore credentials after acknowledgement failure.",0,{code:"AUTH_DEVICE_CLEANUP_FAILED"})}throw new b("Device login acknowledgement failed; the credential was not saved.",503,{code:"AUTH_DEVICE_ACK_FAILED"})}G({status:"authenticated",actorType:"user",userId:_.userId,organizationId:_.organizationId,verificationUri:d.verificationUri,userCode:d.userCode},"Authentication complete.")});let n=i.command("organization").description("List or select organizations for this CLI session");n.command("list").description("List organizations available to the signed-in user").action(async()=>{let a=await t().listCliOrganizations(),c=Qe()?.orgId??null;G({userId:a.userId,activeOrganizationId:c,organizations:a.organizations.map(u=>({...u,selected:u.id===c}))},c?`Using organization ${c}`:"No default organization selected.")});let o=n.command("use").argument("<id-or-slug>","Organization id or slug").description("Set the default organization while retaining this credential");o.action(async a=>{let c=Qe();if(!c)throw new b("No stored CLI credential is available.",401,{code:"AUTH_REQUIRED"});let u=Ep(o),d=await(r.createOrganizationClientForToken?r.createOrganizationClientForToken({apiUrl:u,token:c.token}):Ft({apiUrl:u,token:c.token})).listCliOrganizations(),g=d.organizations.filter(_=>_.id===a||_.slug===a);if(g.length!==1)throw new b(`Organization '${a}' is not available.`,404,{code:"AUTH_ORGANIZATION_NOT_FOUND",param:"organization"});let p=g[0];er({...c,userId:d.userId,orgId:p.id}),G({organizationId:p.id,organizationName:p.name,organizationSlug:p.slug},`Using organization ${p.name} (${p.id}).`)}),i.command("whoami").description("Show current auth identity and delegated authority").action(async()=>{let c=await t().authWhoami();if(c.kind==="maker"){G({actorType:"maker",tokenId:c.tokenId,organizationId:c.organizationId,authVersion:c.authVersion,grantedPermissions:c.grantedPermissions,businessScopeMode:c.businessScopeMode,selectedBusinessIds:c.selectedBusinessIds},`Authenticated maker token ${c.tokenId}`);return}if(c.kind==="cli_user"){G({actorType:"user",sessionId:c.sessionId,userId:c.userId,organizationId:c.organizationId,role:c.role},`Authenticated as ${c.userId}`);return}let u=c.memberships.find(l=>l.organization.id===c.activeOrganization.id);G({userId:c.user.id,clerkUserId:c.user.clerkUserId,organizationId:c.activeOrganization.id,organizationName:c.activeOrganization.name??null,organizationSlug:c.activeOrganization.slug??null,role:u?.role??null,memberships:c.memberships.map(l=>({organizationId:l.organization.id,organizationName:l.organization.name??null,role:l.role}))},`Authenticated as ${c.user.id}`)}),e.command("logout").description("Revoke the current CLI session and clear stored credentials").action(async(a,c)=>{let u=Qe();u?.token.startsWith("fscli_")&&await(r.revokeCliSession??mO)({apiUrl:Ep(c),token:u.token}),wa(),G({},"Logged out.")})}import{createInterface as UO}from"node:readline";import{readFile as LO}from"node:fs/promises";import{setTimeout as jO}from"node:timers/promises";import{extname as BO}from"node:path";var _O=s.string().regex(/^\/[A-Za-z0-9_/:.{}*-]*$/,"non-canonical route path"),vO=s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),dy=s.object({method:vO,path:_O}),yO=dy.extend({pending:s.boolean().optional()}),O1=s.object({lockVersion:s.number().int().nonnegative(),surfaceHash:s.string().startsWith("sha256:"),backends:s.record(s.string(),s.object({routes:s.array(yO).max(500)}))}),A1=s.object({backendId:s.string().min(1),lockVersion:s.number().int().nonnegative(),reflectedSurfaceHash:s.string().startsWith("sha256:"),routes:s.array(dy).max(500)}),R1=s.object({backendId:s.string().min(1),lockVersion:s.number().int().nonnegative(),servedRouteIds:s.array(s.string().min(1)).max(500)});var ue={idempotencyKey:s.string().optional().describe("A UUID you generate; REUSE the same value when retrying so the retry replays the first result instead of double-provisioning.")};import{randomUUID as SO}from"node:crypto";function py(){let e=process.env.FARTHERSHORE_BUSINESS?.trim();if(e)return{ref:e,source:"FARTHERSHORE_BUSINESS"};let t=rt(process.cwd());return t?{ref:t.businessId,source:`linked directory (${t.label??t.businessId})`}:null}function my(e){let t=e?.trim().toLowerCase();return t?t.split(".")[0]??null:null}function EO(e,t){let r=t.trim().toLowerCase();return e.find(i=>i.id===t||i.name.toLowerCase()===r||i.runtimeHostname?.toLowerCase()===r||i.portalHostname?.toLowerCase()===r||my(i.runtimeHostname)===r||my(i.portalHostname)===r)}var zn=50,fy=8;async function Sp(e,t){let r=[];for(let i=0;i<fy;i++){let n=await e.listBusinesses({limit:zn,offset:i*zn,...t?{query:t}:{}});if(r.push(...n),n.length<zn)return{businesses:r,complete:!0}}return{businesses:r,complete:!1}}async function wp(e,t){for(let r=0;r<fy;r++){let i=await e.listBusinesses({limit:zn,offset:r*zn}),n=EO(i,t);if(n)return{outcome:"matched",business:n};if(i.length<zn)return r===0?{outcome:"absent"}:{outcome:"inconclusive"}}return{outcome:"inconclusive"}}async function F(e,t){if(t){if(t.length===36)return t;let i=await wp(e,t);if(i.outcome==="matched")return i.business.id;throw i.outcome==="inconclusive"?new b(`Could not conclusively resolve "${t}" \u2014 the business list could not be checked to the end. Pass the 36-character business id directly, or retry.`,0,{code:"BUSINESS_RESOLUTION_INCONCLUSIVE"}):new b(`Business "${t}" not found`,404,{code:"NOT_FOUND"})}let r=py();if(r)return F(e,r.ref);throw new b("No business selected. Pass one as an argument, run `farthershore link <business>` to target this directory at a business, or set FARTHERSHORE_BUSINESS.",0,{code:"NO_BUSINESS_SELECTED"})}function gy(){return py()}function hy(){let e=rt(process.cwd()),t=process.env.FARTHERSHORE_BUSINESS?.trim(),r=process.env.FARTHERSHORE_ENV?.trim(),i=t?{ref:t,source:"FARTHERSHORE_BUSINESS"}:e?{ref:e.businessId,source:`linked directory (${e.label??e.businessId})`}:null,n=r||e?.environment;return{business:i,environment:n}}var wO="Reuse the same key on retry so it replays instead of double-creating (auto-generated if omitted).",xO="Preview the change without applying it.",$O="Skip confirmation; required for this destructive action";async function TO(e,t){if(typeof e!="string"||e.length===0)return"shift";try{let r=await wp(t(),e);return r.outcome==="matched"?"explicit":r.outcome==="absent"?"shift":"unverifiable"}catch{return"unverifiable"}}function OO(e,t){let r=typeof t.parser=="function",i=t.defaultValue!==void 0,n=[t.token];(t.describe!==void 0||r||i)&&n.push(t.describe??""),r&&n.push(t.parser),i&&n.push(t.defaultValue),t.required?e.requiredOption(...n):e.option(...n)}function by(e,t,r){let i=r.cli.args.filter(d=>d.kind==="positional"),n=r.cli.args.filter(d=>d.kind==="flag"),o=i.findIndex(d=>d.resolveBusiness),a=d=>/^<.+>$/.test(d),c=d=>d.replace(/^<(.+)>$/,"[$1]"),u=[r.cli.command,...i.map((d,g)=>d.resolveBusiness||o!==-1&&g>o?c(d.token):d.token)].join(" "),l=e.command(u).description(r.cli.summary);o!==-1&&i.length>1&&l.usage(["[options]",...i.map(d=>d.resolveBusiness?c(d.token):d.token)].join(" "));for(let d of n)OO(l,d);r.cli.destructive&&l.option("--yes",$O),r.cli.idempotent&&(l.option("--idempotency-key <key>",wO),l.option("--dry-run",xO)),r.cli.helpTextAfter&&l.addHelpText("after",r.cli.helpTextAfter),l.action(async(...d)=>{let g=d[d.length-1],p=d[d.length-2]??{},_=typeof g.optsWithGlobals=="function"?g.optsWithGlobals():p,S=d.slice(0,d.length-2).map(Y=>typeof Y=="string"&&Y.trim()===""?void 0:Y),{business:f,environment:m}=hy(),k,A=()=>k??=t();if(r.cli.destructive&&_.yes!==!0)throw new b(r.cli.yesMessage??"Pass --yes to confirm this destructive action.",void 0,{code:"DESTRUCTIVE_OP_REQUIRES_YES"});S=await AO({op:r,positionals:i,bizIdx:o,isRequiredToken:a,positionalValues:S,implicitBusinessRef:f?.ref??null,useClient:A});for(let Y=0;Y<i.length;Y++){let K=i[Y];if(!K.resolveBusiness&&a(K.token)&&S[Y]===void 0){let oe=K.token.slice(1,-1);throw new b(`Missing required argument '${oe}'.`,400,{code:"MISSING_ARGUMENT",param:oe})}}let P={..._};typeof P.env=="string"&&P.env.trim()===""&&(P.env=void 0),P.env===void 0&&m!==void 0&&(P.env=m);for(let Y=0;Y<i.length;Y++){let K=i[Y],oe=S[Y];P[K.field]=K.resolveBusiness?await F(A(),oe):oe}let z=typeof _.idempotencyKey=="string"&&_.idempotencyKey.trim()!==""?_.idempotencyKey:void 0,U=r.cli.idempotent?{idempotencyKey:z??SO(),dryRun:_.dryRun}:{},re=Y=>Y?.dryRun===!0?(G({preview:Y.wouldHave,dryRun:!0},"Dry run \u2014 no changes applied."),!0):!1,ie={client:A(),args:P,opts:_,reqOpts:U,emit:G,emitDryRunPreview:re};await r.cli.handler(ie)})}async function AO(e){let{op:t,positionals:r,bizIdx:i,isRequiredToken:n,implicitBusinessRef:o,useClient:a}=e,c=e.positionalValues;if(i===-1)return c;if(r.some((l,d)=>d!==i&&n(l.token)&&c[d]===void 0)&&o!==null){let l=c[i],d=await TO(l,a);if(d==="unverifiable"&&t.sideEffect==="write")throw new b(`Cannot prove whether '${String(l)}' names a business (the business list could not be conclusively checked), so this write could target the wrong business. Pass both the business and the remaining arguments explicitly, or retry.`,0,{code:"AMBIGUOUS_BUSINESS_CONTEXT"});if(d!=="explicit"){let g=c.filter(S=>S!==void 0),p=new Array(r.length).fill(void 0),_=0;for(let S=0;S<r.length;S++)S!==i&&(p[S]=g[_++]);c=p}}if(c[i]===void 0){if(o===null)throw new b("No business selected. Pass one as an argument, run `farthershore link <business>` to target this directory at a business, or set FARTHERSHORE_BUSINESS.",0,{code:"NO_BUSINESS_SELECTED"});c=[...c],c[i]=o}return c}var RO={business:"Business bootstrap, status, release, and presentation metadata","business docs":"Enable or disable docs publishing for a business","business preview-env":"Configure automatic preview environment creation for a business","apply-timeline":"Inspect the Apply Timeline: repo-triggered manifest applies (PRs, pushes, releases), checks, diffs, apply phases",plan:"Plan operations: list code-managed plans and migrate subscribers",env:"Manage business environments (preview branches, prod)",backend:"Manage BYO backends and their runtime tokens","backend tokens":"Manage runtime tokens (fsrt_) for BYO backends",frontend:"Managed Frontend Hosting: status/rollback/local preview (deploys are Git-triggered)",webhook:"Manage outbound webhook endpoints",agents:"Enable, disable, and inspect a business's operating agents",bulletin:"Read and hand off the operating agents' bulletin board","promo-code":"Manage API-controlled checkout promo codes",consumer:"Manage business users/consumers","consumer rbac":"Managed-RBAC support overrides for client-org members (role assignment)",variables:"Manage PUBLIC bundle vars and write-only BUILD/RUNTIME secrets",persona:"Mint and manage test-env personas (test API keys)",usage:"Usage observability for a business",analytics:"Query the business event archive",organization:"Manage builder organizations and team membership","audit-log":"Read and export builder audit logs",notifications:"Read notifications and manage delivery preferences","tax-settings":"Read and update Stripe Tax settings for a business","resource-count":"Report subscription resource counts",denial:"Explain gateway denial decisions",dependents:"Inspect active business route dependents","workflow-control":"Preview replay and config rollback operations",automation:"Manage platform automation rules",knowledge:"List platform and business knowledge resources"};function CO(e,t){let r=t.split(" "),i=e,n="";for(let o of r){n=n?`${n} ${o}`:o;let a=i.commands.find(l=>l.name()===o);if(a){i=a;continue}let c=RO[n],u=i.command(o);c&&u.description(c),i=u}return i}function L(e,t,r){for(let i of r){let n=CO(e,i.cli.group);by(n,t,i)}}function jt(e){let t=Object.keys(e.filterFields).join(", "),r=e.sortFields.join(", ");return[{field:"filter",kind:"flag",token:"--filter <field=value>",describe:`Exact field filter; repeat for AND. Fields: ${t}.`,parser:PO,defaultValue:[]},{field:"sort",kind:"flag",token:"--sort <field[:asc|desc]>",describe:`Server-side sort (default asc). Fields: ${r}.`,parser:NO},...e.searchable?[{field:"search",kind:"flag",token:"--search <text>",describe:"Server-side case-insensitive text search."}]:[]]}function Le(e,t){throw new b(e,400,{code:"INVALID_LIST_QUERY",param:t})}function PO(e,t){return[...Array.isArray(t)?t:[],e]}function NO(e,t){return t!==void 0&&Le("--sort may be provided only once.","sort"),e}function DO(e,t,r){let i=t.startsWith("nullable-"),n=i?t.slice(9):t;if(e.toLowerCase()==="null")return i?"null":Le(`Filter field '${r}' cannot be null.`,"filter");if(n==="string")return e;if(n==="boolean"){let a=e.toLowerCase();return a==="true"?"true":a==="false"?"false":Le(`Filter field '${r}' requires a boolean value (true or false).`,"filter")}if(!/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(e))return Le(`Filter field '${r}' requires a finite number.`,"filter");let o=Number(e);return Number.isFinite(o)?String(o):Le(`Filter field '${r}' requires a finite number.`,"filter")}function zO(e,t){let r=Object.keys(t.filterFields),i=(e.filters??[]).map(d=>{let g=d.indexOf("=");if(g<=0||g===d.length-1)return Le("--filter must use the form field=value.","filter");let p=d.slice(0,g),_=d.slice(g+1);return Object.hasOwn(t.filterFields,p)?{field:p,value:DO(_,t.filterFields[p],p)}:Le(`Filter field '${p}' is not filterable. Allowed fields: ${r.join(", ")}.`,"filter")}),n=e.search,o;if(n!==void 0){if(!t.searchable)return Le("--search is not supported by this list command.","search");if(o=n.trim(),!o)return Le("--search must not be empty.","search")}let a=e.sort;if(a===void 0)return{filters:i,...o?{q:o}:{}};let[c,u="asc",...l]=a.split(":");return!c||l.length>0||u!=="asc"&&u!=="desc"?Le("--sort must use field[:asc|desc].","sort"):t.sortFields.includes(c)?{filters:i,sort:{field:c,direction:u},...o?{q:o}:{}}:Le(`Sort field '${c}' is not sortable. Allowed fields: ${t.sortFields.join(", ")}.`,"sort")}function Bt(e,t){let r=Array.isArray(e.filter)?e.filter.filter(o=>typeof o=="string"):[],i=typeof e.sort=="string"?e.sort:void 0,n=typeof e.search=="string"?e.search:void 0;if(!(r.length===0&&i===void 0&&n===void 0))return zO({filters:r,sort:i,search:n},t)}var _y={filterFields:{id:"string",name:"string",displayName:"string",subdomain:"string",status:"string"},sortFields:["id","name","displayName","createdAt","updatedAt"],searchable:!0};function vy(e){let t={};return typeof e.bump=="string"&&(t.bump=e.bump),typeof e.version=="string"&&(t.version=e.version),e.acceptBreaking===!0&&(t.acceptBreaking=!0),t}async function MO(e){let t=UO({input:process.stdin,output:process.stderr,terminal:!0});return new Promise(r=>{t.question(`Cut release ${e}? [y/N] `,i=>{t.close(),r(/^y(es)?$/i.test(i.trim()))})})}var xe="<businessIdOrName>",FO={BRANCH_PREFIX:"branch-prefix",PULL_REQUEST:"pull-request",DISABLED:"disabled"},KO=Object.fromEntries(Pm.map(e=>[FO[e],e])),HO=/^.{1,50}$/,VO={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp"};function GO(e){let t=new Map;for(let r of Object.values(e??{}))for(let i of r?.routes??[]){if(typeof i.method!="string"||typeof i.path!="string")continue;let n=Nt({actionId:i.actionId,method:i.method,path:i.path}),o=t.get(n)??new Set;o.add(s_(n,i.method)),t.set(n,o)}return[...t.entries()].map(([r,i])=>({subject:r,title:r,permissions:[...i].sort()})).sort((r,i)=>r.subject.localeCompare(i.subject))}function ZO(e){return{enabled:e===!0}}function WO(e){let{business:t,...r}=e;return{...r,business:t}}function qO(e){let t=VO[BO(e).toLowerCase()];if(!t)throw new b(`Cannot infer image Content-Type for "${e}". Use a .png, .jpg, .jpeg, or .webp file.`,void 0,{code:"UNSUPPORTED_BRAND_ASSET_TYPE"});return t}function JO(e){return e.filter(t=>t!==void 0&&t!==!1).length}function yy(e,t){let r=t==="icon"?"icon":"logo",i=t==="icon"?"icon":"logo",n=t==="icon"?"clearIcon":"clearLogo";if(JO([e[`${i}Url`],e[`${i}File`],e[n]])>1)throw new b(`Choose only one ${r} operation: --${i}-url, --${i}-file, or --clear-${i}.`,void 0,{code:"CONFLICTING_BRAND_ASSET_FLAGS"})}function YO(e){let t=KO[e];if(!t)throw new b(`Invalid preview environment trigger "${e}". Use branch-prefix, pull-request, or disabled.`,void 0,{code:"INVALID_PREVIEW_ENV_TRIGGER"});return t}function QO(e){let t={};if(typeof e.trigger=="string"&&(t.previewEnvTrigger=YO(e.trigger)),e.clearBranchPrefix===!0)t.envBranchPrefix=null;else if(typeof e.branchPrefix=="string"){if(!HO.test(e.branchPrefix))throw new b("--branch-prefix must be 1-50 characters.",void 0,{code:"INVALID_ENV_BRANCH_PREFIX"});t.envBranchPrefix=e.branchPrefix}if(t.previewEnvTrigger===void 0&&t.envBranchPrefix===void 0)throw new b("Pass at least one preview environment setting: --trigger, --branch-prefix, or --clear-branch-prefix.",void 0,{code:"MISSING_PREVIEW_ENV_UPDATE"});return t}async function ky(e,t,r,i){let n=await LO(i);return e.uploadBrandAsset(t,r,n,qO(i))}async function XO(e,t){return(await e.listBusinesses()).find(i=>i.name===t)??null}async function eA(e){let{client:t,body:r,reqOpts:i}=e,n=5,o=[2e3,4e3,8e3,8e3];for(let a=1;a<=n;a+=1)try{return{result:await t.createBusiness(r,{...i,retryOnTransient:!1}),recoveredFromTimeout:!1}}catch(c){let u=c instanceof b&&c.code==="IDEMPOTENCY_KEY_IN_FLIGHT",l=c instanceof nt||c instanceof b&&typeof c.status=="number"&&c.status>=500;if(!u&&l){let d=await XO(t,r.name).catch(()=>null);if(d?.gitRepoFullName&&d.acceptedBusinessSpecGitSyncStatus==="SYNCED"){let g=`https://github.com/${d.gitRepoFullName}`;return{result:{business:d,repo:{fullName:d.gitRepoFullName,htmlUrl:g,cloneUrl:`${g}.git`},agent:{instructions:"Clone the repo, read AGENTS.md, author the business shape from actual product requirements, and push.",agentsMdUrl:`${g}/blob/main/AGENTS.md`}},recoveredFromTimeout:!0}}}if(c instanceof b&&c.status===409&&c.code==="IDEMPOTENCY_KEY_IN_FLIGHT"&&a<n){await jO(o[Math.min(a-1,o.length-1)]);continue}throw c}throw new b("Timed out waiting for the idempotent business create request to finish.",409,{code:"IDEMPOTENCY_KEY_IN_FLIGHT"})}var xp=[{opKey:"business.list",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"list",summary:"List businesses in the current org",args:jt(_y),handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,_y),{businesses:n,complete:o}=await Sp(e,i);r({count:n.length,...o?{}:{truncated:!0},businesses:n.map(a=>({...a,displayName:a.displayName??null,status:a.status??null}))},`${n.length} business(es)${o?"":" (truncated)"}`)}},mcp:{tool:"fs_business_list",title:"List businesses",description:"List every business in the authenticated FartherShore workspace (id, name, status). Read-only; use this to discover business ids for the other tools.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{},handler:async e=>{let{businesses:t,complete:r}=await Sp(e);return{count:t.length,...r?{}:{truncated:!0},businesses:t.map(i=>({id:i.id,name:i.name,status:i.status??null}))}}}},{opKey:"business.read",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"show",summary:"Show a business",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusiness(i,{env:t.env});r({business:n},`Business ${i}`)}},mcp:null},{opKey:"business.routes.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"routes",summary:"List a business's compiled routes",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listBusinessRoutes(i,{env:t.env});r({businessId:i,result:n},`Compiled routes for business ${i}`)}},mcp:null},{opKey:"business.config_attempts.read",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"config-attempts",summary:"List rejected configuration attempts for a business",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listBusinessConfigAttempts(i);r({businessId:i,attempts:n.attempts},`Configuration attempts for business ${i}`)}},mcp:null},{opKey:"business.contract.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"contract",summary:"Show a business's accepted contract synopsis",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusinessContract(i,{env:t.env});r({businessId:i,contract:n},`Accepted contract for business ${i}`)}},mcp:null},{opKey:"business.status",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"status",summary:"Show a business's lifecycle/release/live state (status, latest release version, latest deployment, and a derived `live` boolean) \u2014 verify a business is serving after publish.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getDeployments(i),o=n.data[0]??null,a={id:n.business.id,status:n.business.status,latestReleaseVersion:n.business.latestReleaseVersion,live:n.live,latestDeployment:o?{id:o.id,status:o.status,edgePublishStatus:o.edgePublishStatus,createdAt:o.createdAt}:null};r(a,`Business ${i}: ${n.business.status}${n.business.latestReleaseVersion?` @ ${n.business.latestReleaseVersion}`:""} (${n.live?"live":"not live"})`)}},mcp:{tool:"fs_business_status",title:"Business status",description:"Verify a business's lifecycle/release state by id or slug: its status (DRAFT|ACTIVE), latest release version, latest deployment run, and a derived `live` boolean (ACTIVE + a real non-bootstrap release applied + the edge serving the snapshot). Read-only; use this to confirm a business is live after publishing.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to check.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i=await e.getDeployments(r),n=i.data[0]??null;return{id:i.business.id,status:i.business.status,latestReleaseVersion:i.business.latestReleaseVersion,live:i.live,latestDeployment:n?{id:n.id,status:n.status,edgePublishStatus:n.edgePublishStatus,createdAt:n.createdAt}:null}}}},{opKey:"rbac.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"rbac",summary:"Show a business's Managed-RBAC contract state: the accepted spec's `rbac` flag and the derived grantable-permission catalog.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusinessConfig(i,{env:t.env}),o=n.config??{},a=ZO(o.business?.rbac),c=GO(o.routeCatalog);r({businessId:i,environment:n.environment??null,rbac:a,catalog:c},`Managed RBAC ${a.enabled?"enabled":"not enabled"} \u2014 ${c.length} catalog group(s)`)}},mcp:null},{opKey:"business.create",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"create",summary:"Create a new business and provision its managed GitHub repo",idempotent:!0,args:[{field:"name",kind:"positional",token:"<slug>",describe:"Business slug (becomes the subdomain)"},{field:"displayName",kind:"flag",token:"--display-name <displayName>",describe:"Human-friendly business name"},{field:"description",kind:"flag",token:"--description <description>"},{field:"origin",kind:"flag",token:"--origin <url>",describe:"Optional business origin Farther Shore calls for customer-facing actions"},{field:"docs",kind:"flag",token:"--docs",describe:"Enable docs for this business (default when omitted)."},{field:"docs",kind:"flag",token:"--no-docs",describe:"Opt out of docs for this business."}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.docs===!0?!0:t.docs===!1?!1:void 0,a={name:t.name,...typeof t.origin=="string"?{origin:t.origin}:{},description:t.description,displayName:t.displayName,...o!==void 0?{docsEnabled:o}:{}},{result:c,recoveredFromTimeout:u}=await eA({client:e,body:a,reqOpts:r});if(n(c))return;let l=WO(c);i({business:l.business,repoUrl:c.repo.htmlUrl,agent:l.agent,recoveredFromTimeout:u}),Kr(c.repo.htmlUrl)}},mcp:null},{opKey:"business.origin.update",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"update",summary:"Update business presentation metadata and per-env origin",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"displayName",kind:"flag",token:"--display-name <displayName>"},{field:"description",kind:"flag",token:"--description <description>"},{field:"iconUrl",kind:"flag",token:"--icon-url <url>",describe:"Set the square icon/favicon URL"},{field:"iconFile",kind:"flag",token:"--icon-file <path>",describe:"Upload a local PNG, JPEG, or WEBP square icon"},{field:"clearIcon",kind:"flag",token:"--clear-icon",describe:"Remove the current icon asset"},{field:"logoUrl",kind:"flag",token:"--logo-url <url>",describe:"Set the wordmark/logo URL"},{field:"logoFile",kind:"flag",token:"--logo-file <path>",describe:"Upload a local PNG, JPEG, or WEBP wordmark/logo"},{field:"clearLogo",kind:"flag",token:"--clear-logo",describe:"Remove the current logo asset"},{field:"keyPrefix",kind:"flag",token:"--key-prefix <prefix>",describe:"White-label prefix for subscriber API keys (fsk_ \u2192 e.g. acme_). 2-12 lowercase letters/digits; fs/fsk/fsc/fsm reserved."},{field:"clearKeyPrefix",kind:"flag",token:"--clear-key-prefix",describe:"Reset the subscriber API key prefix to the default (fsk)."},{field:"docsHistory",kind:"flag",token:"--docs-history",describe:"Expose EVERY historical docs release to subscribers, not just the latest. Off by default \u2014 every release is still published and retained either way, so this only changes what the docs site SHOWS. Use --no-docs-history to go back to latest-only."},{field:"origin",kind:"flag",token:"--origin <url>",describe:"Set the business upstream origin (the URL the gateway proxies to). With --env, sets that environment's override."},{field:"sandboxOrigin",kind:"flag",token:"--sandbox-origin <url>",describe:"Set the sandbox upstream origin. With --env, env-scoped."},{field:"allowedOrigins",kind:"flag",token:"--allowed-origins <origins>",describe:"Comma-separated browser origins allowed to call the gateway cross-origin (custom frontend domains), e.g. https://app.example.com. The tenant's own portal origin is always allowed."},{field:"clearAllowedOrigins",kind:"flag",token:"--clear-allowed-origins",describe:"Remove all custom allowed origins."},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;yy(t,"icon"),yy(t,"logo");let n={};t.docsHistory===!0&&(n.docsHistoryEnabled=!0),t.docsHistory===!1&&(n.docsHistoryEnabled=!1),t.displayName!==void 0&&(n.displayName=t.displayName),t.description!==void 0&&(n.description=t.description),t.iconUrl!==void 0&&(n.iconUrl=t.iconUrl),t.logoUrl!==void 0&&(n.logoUrl=t.logoUrl),t.clearKeyPrefix===!0?n.keyPrefix=null:t.keyPrefix!==void 0&&(n.keyPrefix=t.keyPrefix),t.origin!==void 0&&(n.origin=t.origin),t.sandboxOrigin!==void 0&&(n.sandboxOrigin=t.sandboxOrigin),t.clearAllowedOrigins===!0?n.allowedOrigins=[]:typeof t.allowedOrigins=="string"&&(n.allowedOrigins=t.allowedOrigins.split(",").map(u=>u.trim()).filter(Boolean));let o=[];if(typeof t.iconFile=="string"&&o.push(()=>ky(e,i,"icon",t.iconFile)),typeof t.logoFile=="string"&&o.push(()=>ky(e,i,"logo",t.logoFile)),t.clearIcon===!0&&o.push(()=>e.deleteBrandAsset(i,"icon")),t.clearLogo===!0&&o.push(()=>e.deleteBrandAsset(i,"logo")),Object.keys(n).length===0&&o.length===0)throw new b("No fields to update. Pass presentation metadata flags such as --display-name, --description, --origin, --icon-file, --logo-file, --docs-history, or a clear flag.",void 0,{code:"BUSINESS_UPDATE_NO_FIELDS"});let a=Object.keys(n).length>0?await e.updateBusiness(i,n,{env:t.env}):await e.getBusiness(i,{env:t.env}),c=await Promise.all(o.map(u=>u()));r({business:a,assets:c},`Business ${i} updated`)}},mcp:{tool:"fs_brand_update",title:"Update business brand",description:"Update a business's brand/presentation and upstream origin \u2014 display name, description, icon, logo (wordmark), origin (the URL the gateway proxies to), sandboxOrigin. Pass env to write an environment-scoped origin override instead of the business default. Plans, pricing, and routes are managed as code in the business repo and are NOT editable here. Only the fields you pass are changed.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to update."),displayName:s.string().optional().describe("Display name."),description:s.string().optional().describe("Short business description."),iconUrl:s.string().nullable().optional().describe("Square icon/favicon URL, or null to clear it."),logoUrl:s.string().nullable().optional().describe("Wordmark/logo URL, or null to clear it."),keyPrefix:s.string().nullable().optional().describe("White-label prefix for subscriber API keys (fsk_ \u2192 e.g. acme_). 2-12 lowercase letters/digits; fs/fsk/fsc/fsm reserved. Null clears to the default fsk."),origin:s.string().optional().describe("Business upstream origin (the URL the gateway proxies to)."),sandboxOrigin:s.string().optional().describe("Sandbox upstream origin."),env:s.string().optional().describe("Environment scope \u2014 when set, the origin override is written to that environment instead of the business default.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i={};return t.displayName!==void 0&&(i.displayName=t.displayName),t.description!==void 0&&(i.description=t.description),t.iconUrl!==void 0&&(i.iconUrl=t.iconUrl),t.logoUrl!==void 0&&(i.logoUrl=t.logoUrl),t.keyPrefix!==void 0&&(i.keyPrefix=t.keyPrefix),t.origin!==void 0&&(i.origin=t.origin),t.sandboxOrigin!==void 0&&(i.sandboxOrigin=t.sandboxOrigin),t.clearAllowedOrigins===!0?i.allowedOrigins=[]:typeof t.allowedOrigins=="string"&&(i.allowedOrigins=t.allowedOrigins.split(",").map(n=>n.trim()).filter(Boolean)),e.updateBusiness(r,i,{env:t.env})}}},{opKey:"business.publish",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"publish",summary:"Publish a draft business (make it live) and cut a versioned release with an auto-computed semver. Requires at least one plan, an origin, and a verified Stripe connection.",idempotent:!0,args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"bump",kind:"flag",token:"--bump <bump>",describe:"Force the semver bump (major|minor|patch). Omit to auto-derive from the change."},{field:"version",kind:"flag",token:"--version <version>",describe:"Pin the exact next release tag (vX.Y.Z), skipping derivation."},{field:"acceptBreaking",kind:"flag",token:"--accept-breaking",describe:"Consent to publish a breaking (blocking-risk) change as a major release."}],helpTextAfter:`
|
|
106
|
+
`;if(ce()==="json"){process.stderr.write(r);return}Kr(`Verification URL: ${e}`),Kr(`User code: ${t}`)}async function bO(e){let t=new URL(e);if(t.protocol!=="https:"&&t.protocol!=="http:")throw new b("Verification URL is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});let{executable:r,args:i}=vO(t.toString()),n;try{n=sO(r,i,{stdio:"ignore"})}catch(o){throw new Error("Unable to open the verification URL.",{cause:o})}await _O(n)}function _O(e,t=cO){return new Promise((r,i)=>{let n=!1,o=setTimeout(()=>{n||(n=!0,e.unref(),r())},t);e.once("error",a=>{n||(n=!0,clearTimeout(o),i(a))}),e.once("close",(a,c)=>{if(!n){if(n=!0,clearTimeout(o),a===0&&c===null){r();return}i(new Error("Browser launcher exited before opening the URL."))}})})}function vO(e,t=process.platform){return t==="darwin"?{executable:"open",args:["-n",e]}:t==="win32"?{executable:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{executable:"xdg-open",args:[e]}}async function yO(e,t){try{await t(e)}catch{throw new b("Unable to open the browser. Run `farthershore login --headless` to continue manually.",500,{code:"AUTH_DEVICE_BROWSER_OPEN_FAILED"})}}function ly(e,t,r={}){let i=e.command("auth").description("Inspect CLI identity and select an organization");e.command("login").description("Authenticate the CLI without placing credentials in argv").option("--token-stdin","Read an organization-scoped MakerToken from piped stdin").option("--headless","Print the verification URL and user code without opening a browser").action(async(a,c)=>{let u=Ep(c);if(a.tokenStdin){gO(a);let oe=await(r.readTokenFromStdin??uO)();if(!oe.startsWith("mk_"))throw new b("--token-stdin accepts only a pre-issued maker token.",400,{code:"AUTH_TOKEN_STDIN_REQUIRES_MAKER_TOKEN"});let ta=r.createClientForToken?r.createClientForToken({apiUrl:u,token:oe}):Ft({apiUrl:u,token:oe});if((await uy(ta)).kind!=="maker")throw new b("--token-stdin accepts only a pre-issued maker token.",400,{code:"AUTH_TOKEN_STDIN_REQUIRES_MAKER_TOKEN"});er({token:oe}),G({},"Credential stored.");return}let l=r.createDeviceClient?r.createDeviceClient({apiUrl:u}):Qf({apiUrl:u}),d=await l.start();if(a.headless)hO(d.verificationUri,d.userCode);else{let K=r.openBrowser??bO;await yO(d.verificationUriComplete,K)}let g=await l.poll(d),p=r.createClientForToken?r.createClientForToken({apiUrl:u,token:g}):Ft({apiUrl:u,token:g}),_=await lO(p,d.expiresAtMs);if(!g.startsWith("fscli_")||_.kind!=="cli_user")throw new b("Device authorization response is invalid.",502,{code:"AUTH_DEVICE_INVALID_RESPONSE"});let S=Qe(),f=!1,m=!1,k=!1,A=new AbortController,P,z=new Promise(K=>{P=K}),U=()=>{!f||m||(S?er(S):wa(),m=!0)},ie=(r.installSignalHandlers??mO)(async()=>{k=!0,A.abort(),await z});try{er(fO(g,_)),f=!0}catch(K){throw P?.(),ie(),K}let Y;try{await l.ack(d,{signal:A.signal})}catch(K){Y=K}finally{P?.(),ie()}if(k){if(Y)try{U()}catch{throw new b("Device login could not restore credentials after interruption.",0,{code:"AUTH_DEVICE_CLEANUP_FAILED"})}throw new b("Device login was interrupted.",0,{code:"AUTH_DEVICE_INTERRUPTED"})}if(Y){try{U()}catch{throw new b("Device login could not restore credentials after acknowledgement failure.",0,{code:"AUTH_DEVICE_CLEANUP_FAILED"})}throw new b("Device login acknowledgement failed; the credential was not saved.",503,{code:"AUTH_DEVICE_ACK_FAILED"})}G({status:"authenticated",actorType:"user",userId:_.userId,organizationId:_.organizationId,...a.headless?{verificationUri:d.verificationUri,userCode:d.userCode}:{}},"Authentication complete.")});let n=i.command("organization").description("List or select organizations for this CLI session");n.command("list").description("List organizations available to the signed-in user").action(async()=>{let a=await t().listCliOrganizations(),c=Qe()?.orgId??null;G({userId:a.userId,activeOrganizationId:c,organizations:a.organizations.map(u=>({...u,selected:u.id===c}))},c?`Using organization ${c}`:"No default organization selected.")});let o=n.command("use").argument("<id-or-slug>","Organization id or slug").description("Set the default organization while retaining this credential");o.action(async a=>{let c=Qe();if(!c)throw new b("No stored CLI credential is available.",401,{code:"AUTH_REQUIRED"});let u=Ep(o),d=await(r.createOrganizationClientForToken?r.createOrganizationClientForToken({apiUrl:u,token:c.token}):Ft({apiUrl:u,token:c.token})).listCliOrganizations(),g=d.organizations.filter(_=>_.id===a||_.slug===a);if(g.length!==1)throw new b(`Organization '${a}' is not available.`,404,{code:"AUTH_ORGANIZATION_NOT_FOUND",param:"organization"});let p=g[0];er({...c,userId:d.userId,orgId:p.id}),G({organizationId:p.id,organizationName:p.name,organizationSlug:p.slug},`Using organization ${p.name} (${p.id}).`)}),i.command("whoami").description("Show current auth identity and delegated authority").action(async()=>{let c=await t().authWhoami();if(c.kind==="maker"){G({actorType:"maker",tokenId:c.tokenId,organizationId:c.organizationId,authVersion:c.authVersion,grantedPermissions:c.grantedPermissions,businessScopeMode:c.businessScopeMode,selectedBusinessIds:c.selectedBusinessIds},`Authenticated maker token ${c.tokenId}`);return}if(c.kind==="cli_user"){G({actorType:"user",sessionId:c.sessionId,userId:c.userId,organizationId:c.organizationId,role:c.role},`Authenticated as ${c.userId}`);return}let u=c.memberships.find(l=>l.organization.id===c.activeOrganization.id);G({userId:c.user.id,clerkUserId:c.user.clerkUserId,organizationId:c.activeOrganization.id,organizationName:c.activeOrganization.name??null,organizationSlug:c.activeOrganization.slug??null,role:u?.role??null,memberships:c.memberships.map(l=>({organizationId:l.organization.id,organizationName:l.organization.name??null,role:l.role}))},`Authenticated as ${c.user.id}`)}),e.command("logout").description("Revoke the current CLI session and clear stored credentials").action(async(a,c)=>{let u=Qe();u?.token.startsWith("fscli_")&&await(r.revokeCliSession??pO)({apiUrl:Ep(c),token:u.token}),wa(),G({},"Logged out.")})}import{createInterface as BO}from"node:readline";import{readFile as MO}from"node:fs/promises";import{setTimeout as FO}from"node:timers/promises";import{extname as KO}from"node:path";var kO=s.string().regex(/^\/[A-Za-z0-9_/:.{}*-]*$/,"non-canonical route path"),IO=s.enum(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),dy=s.object({method:IO,path:kO}),EO=dy.extend({pending:s.boolean().optional()}),C1=s.object({lockVersion:s.number().int().nonnegative(),surfaceHash:s.string().startsWith("sha256:"),backends:s.record(s.string(),s.object({routes:s.array(EO).max(500)}))}),P1=s.object({backendId:s.string().min(1),lockVersion:s.number().int().nonnegative(),reflectedSurfaceHash:s.string().startsWith("sha256:"),routes:s.array(dy).max(500)}),N1=s.object({backendId:s.string().min(1),lockVersion:s.number().int().nonnegative(),servedRouteIds:s.array(s.string().min(1)).max(500)});var ue={idempotencyKey:s.string().optional().describe("A UUID you generate; REUSE the same value when retrying so the retry replays the first result instead of double-provisioning.")};import{randomUUID as $O}from"node:crypto";function py(){let e=process.env.FARTHERSHORE_BUSINESS?.trim();if(e)return{ref:e,source:"FARTHERSHORE_BUSINESS"};let t=rt(process.cwd());return t?{ref:t.businessId,source:`linked directory (${t.label??t.businessId})`}:null}function my(e){let t=e?.trim().toLowerCase();return t?t.split(".")[0]??null:null}function xO(e,t){let r=t.trim().toLowerCase();return e.find(i=>i.id===t||i.name.toLowerCase()===r||i.runtimeHostname?.toLowerCase()===r||i.portalHostname?.toLowerCase()===r||my(i.runtimeHostname)===r||my(i.portalHostname)===r)}var zn=50,fy=8;async function Sp(e,t){let r=[];for(let i=0;i<fy;i++){let n=await e.listBusinesses({limit:zn,offset:i*zn,...t?{query:t}:{}});if(r.push(...n),n.length<zn)return{businesses:r,complete:!0}}return{businesses:r,complete:!1}}async function wp(e,t){for(let r=0;r<fy;r++){let i=await e.listBusinesses({limit:zn,offset:r*zn}),n=xO(i,t);if(n)return{outcome:"matched",business:n};if(i.length<zn)return r===0?{outcome:"absent"}:{outcome:"inconclusive"}}return{outcome:"inconclusive"}}async function F(e,t){if(t){if(t.length===36)return t;let i=await wp(e,t);if(i.outcome==="matched")return i.business.id;throw i.outcome==="inconclusive"?new b(`Could not conclusively resolve "${t}" \u2014 the business list could not be checked to the end. Pass the 36-character business id directly, or retry.`,0,{code:"BUSINESS_RESOLUTION_INCONCLUSIVE"}):new b(`Business "${t}" not found`,404,{code:"NOT_FOUND"})}let r=py();if(r)return F(e,r.ref);throw new b("No business selected. Pass one as an argument, run `farthershore link <business>` to target this directory at a business, or set FARTHERSHORE_BUSINESS.",0,{code:"NO_BUSINESS_SELECTED"})}function gy(){return py()}function hy(){let e=rt(process.cwd()),t=process.env.FARTHERSHORE_BUSINESS?.trim(),r=process.env.FARTHERSHORE_ENV?.trim(),i=t?{ref:t,source:"FARTHERSHORE_BUSINESS"}:e?{ref:e.businessId,source:`linked directory (${e.label??e.businessId})`}:null,n=r||e?.environment;return{business:i,environment:n}}var TO="Reuse the same key on retry so it replays instead of double-creating (auto-generated if omitted).",OO="Preview the change without applying it.",AO="Skip confirmation; required for this destructive action";async function RO(e,t){if(typeof e!="string"||e.length===0)return"shift";try{let r=await wp(t(),e);return r.outcome==="matched"?"explicit":r.outcome==="absent"?"shift":"unverifiable"}catch{return"unverifiable"}}function CO(e,t){let r=typeof t.parser=="function",i=t.defaultValue!==void 0,n=[t.token];(t.describe!==void 0||r||i)&&n.push(t.describe??""),r&&n.push(t.parser),i&&n.push(t.defaultValue),t.required?e.requiredOption(...n):e.option(...n)}function by(e,t,r){let i=r.cli.args.filter(d=>d.kind==="positional"),n=r.cli.args.filter(d=>d.kind==="flag"),o=i.findIndex(d=>d.resolveBusiness),a=d=>/^<.+>$/.test(d),c=d=>d.replace(/^<(.+)>$/,"[$1]"),u=[r.cli.command,...i.map((d,g)=>d.resolveBusiness||o!==-1&&g>o?c(d.token):d.token)].join(" "),l=e.command(u).description(r.cli.summary);o!==-1&&i.length>1&&l.usage(["[options]",...i.map(d=>d.resolveBusiness?c(d.token):d.token)].join(" "));for(let d of n)CO(l,d);r.cli.destructive&&l.option("--yes",AO),r.cli.idempotent&&(l.option("--idempotency-key <key>",TO),l.option("--dry-run",OO)),r.cli.helpTextAfter&&l.addHelpText("after",r.cli.helpTextAfter),l.action(async(...d)=>{let g=d[d.length-1],p=d[d.length-2]??{},_=typeof g.optsWithGlobals=="function"?g.optsWithGlobals():p,S=d.slice(0,d.length-2).map(Y=>typeof Y=="string"&&Y.trim()===""?void 0:Y),{business:f,environment:m}=hy(),k,A=()=>k??=t();if(r.cli.destructive&&_.yes!==!0)throw new b(r.cli.yesMessage??"Pass --yes to confirm this destructive action.",void 0,{code:"DESTRUCTIVE_OP_REQUIRES_YES"});S=await PO({op:r,positionals:i,bizIdx:o,isRequiredToken:a,positionalValues:S,implicitBusinessRef:f?.ref??null,useClient:A});for(let Y=0;Y<i.length;Y++){let K=i[Y];if(!K.resolveBusiness&&a(K.token)&&S[Y]===void 0){let oe=K.token.slice(1,-1);throw new b(`Missing required argument '${oe}'.`,400,{code:"MISSING_ARGUMENT",param:oe})}}let P={..._};typeof P.env=="string"&&P.env.trim()===""&&(P.env=void 0),P.env===void 0&&m!==void 0&&(P.env=m);for(let Y=0;Y<i.length;Y++){let K=i[Y],oe=S[Y];P[K.field]=K.resolveBusiness?await F(A(),oe):oe}let z=typeof _.idempotencyKey=="string"&&_.idempotencyKey.trim()!==""?_.idempotencyKey:void 0,U=r.cli.idempotent?{idempotencyKey:z??$O(),dryRun:_.dryRun}:{},re=Y=>Y?.dryRun===!0?(G({preview:Y.wouldHave,dryRun:!0},"Dry run \u2014 no changes applied."),!0):!1,ie={client:A(),args:P,opts:_,reqOpts:U,emit:G,emitDryRunPreview:re};await r.cli.handler(ie)})}async function PO(e){let{op:t,positionals:r,bizIdx:i,isRequiredToken:n,implicitBusinessRef:o,useClient:a}=e,c=e.positionalValues;if(i===-1)return c;if(r.some((l,d)=>d!==i&&n(l.token)&&c[d]===void 0)&&o!==null){let l=c[i],d=await RO(l,a);if(d==="unverifiable"&&t.sideEffect==="write")throw new b(`Cannot prove whether '${String(l)}' names a business (the business list could not be conclusively checked), so this write could target the wrong business. Pass both the business and the remaining arguments explicitly, or retry.`,0,{code:"AMBIGUOUS_BUSINESS_CONTEXT"});if(d!=="explicit"){let g=c.filter(S=>S!==void 0),p=new Array(r.length).fill(void 0),_=0;for(let S=0;S<r.length;S++)S!==i&&(p[S]=g[_++]);c=p}}if(c[i]===void 0){if(o===null)throw new b("No business selected. Pass one as an argument, run `farthershore link <business>` to target this directory at a business, or set FARTHERSHORE_BUSINESS.",0,{code:"NO_BUSINESS_SELECTED"});c=[...c],c[i]=o}return c}var NO={business:"Business bootstrap, status, release, and presentation metadata","business docs":"Enable or disable docs publishing for a business","business preview-env":"Configure automatic preview environment creation for a business","apply-timeline":"Inspect the Apply Timeline: repo-triggered manifest applies (PRs, pushes, releases), checks, diffs, apply phases",plan:"Plan operations: list code-managed plans and migrate subscribers",env:"Manage business environments (preview branches, prod)",backend:"Manage BYO backends and their runtime tokens","backend tokens":"Manage runtime tokens (fsrt_) for BYO backends",frontend:"Managed Frontend Hosting: status/rollback/local preview (deploys are Git-triggered)",webhook:"Manage outbound webhook endpoints",agents:"Enable, disable, and inspect a business's operating agents",bulletin:"Read and hand off the operating agents' bulletin board","promo-code":"Manage API-controlled checkout promo codes",consumer:"Manage business users/consumers","consumer rbac":"Managed-RBAC support overrides for client-org members (role assignment)",variables:"Manage PUBLIC bundle vars and write-only BUILD/RUNTIME secrets",persona:"Mint and manage test-env personas (test API keys)",usage:"Usage observability for a business",analytics:"Query the business event archive",organization:"Manage builder organizations and team membership","audit-log":"Read and export builder audit logs",notifications:"Read notifications and manage delivery preferences","tax-settings":"Read and update Stripe Tax settings for a business","resource-count":"Report subscription resource counts",denial:"Explain gateway denial decisions",dependents:"Inspect active business route dependents","workflow-control":"Preview replay and config rollback operations",automation:"Manage platform automation rules",knowledge:"List platform and business knowledge resources"};function DO(e,t){let r=t.split(" "),i=e,n="";for(let o of r){n=n?`${n} ${o}`:o;let a=i.commands.find(l=>l.name()===o);if(a){i=a;continue}let c=NO[n],u=i.command(o);c&&u.description(c),i=u}return i}function L(e,t,r){for(let i of r){let n=DO(e,i.cli.group);by(n,t,i)}}function jt(e){let t=Object.keys(e.filterFields).join(", "),r=e.sortFields.join(", ");return[{field:"filter",kind:"flag",token:"--filter <field=value>",describe:`Exact field filter; repeat for AND. Fields: ${t}.`,parser:zO,defaultValue:[]},{field:"sort",kind:"flag",token:"--sort <field[:asc|desc]>",describe:`Server-side sort (default asc). Fields: ${r}.`,parser:UO},...e.searchable?[{field:"search",kind:"flag",token:"--search <text>",describe:"Server-side case-insensitive text search."}]:[]]}function Le(e,t){throw new b(e,400,{code:"INVALID_LIST_QUERY",param:t})}function zO(e,t){return[...Array.isArray(t)?t:[],e]}function UO(e,t){return t!==void 0&&Le("--sort may be provided only once.","sort"),e}function LO(e,t,r){let i=t.startsWith("nullable-"),n=i?t.slice(9):t;if(e.toLowerCase()==="null")return i?"null":Le(`Filter field '${r}' cannot be null.`,"filter");if(n==="string")return e;if(n==="boolean"){let a=e.toLowerCase();return a==="true"?"true":a==="false"?"false":Le(`Filter field '${r}' requires a boolean value (true or false).`,"filter")}if(!/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(e))return Le(`Filter field '${r}' requires a finite number.`,"filter");let o=Number(e);return Number.isFinite(o)?String(o):Le(`Filter field '${r}' requires a finite number.`,"filter")}function jO(e,t){let r=Object.keys(t.filterFields),i=(e.filters??[]).map(d=>{let g=d.indexOf("=");if(g<=0||g===d.length-1)return Le("--filter must use the form field=value.","filter");let p=d.slice(0,g),_=d.slice(g+1);return Object.hasOwn(t.filterFields,p)?{field:p,value:LO(_,t.filterFields[p],p)}:Le(`Filter field '${p}' is not filterable. Allowed fields: ${r.join(", ")}.`,"filter")}),n=e.search,o;if(n!==void 0){if(!t.searchable)return Le("--search is not supported by this list command.","search");if(o=n.trim(),!o)return Le("--search must not be empty.","search")}let a=e.sort;if(a===void 0)return{filters:i,...o?{q:o}:{}};let[c,u="asc",...l]=a.split(":");return!c||l.length>0||u!=="asc"&&u!=="desc"?Le("--sort must use field[:asc|desc].","sort"):t.sortFields.includes(c)?{filters:i,sort:{field:c,direction:u},...o?{q:o}:{}}:Le(`Sort field '${c}' is not sortable. Allowed fields: ${t.sortFields.join(", ")}.`,"sort")}function Bt(e,t){let r=Array.isArray(e.filter)?e.filter.filter(o=>typeof o=="string"):[],i=typeof e.sort=="string"?e.sort:void 0,n=typeof e.search=="string"?e.search:void 0;if(!(r.length===0&&i===void 0&&n===void 0))return jO({filters:r,sort:i,search:n},t)}var _y={filterFields:{id:"string",name:"string",displayName:"string",subdomain:"string",status:"string"},sortFields:["id","name","displayName","createdAt","updatedAt"],searchable:!0};function vy(e){let t={};return typeof e.bump=="string"&&(t.bump=e.bump),typeof e.version=="string"&&(t.version=e.version),e.acceptBreaking===!0&&(t.acceptBreaking=!0),t}async function HO(e){let t=BO({input:process.stdin,output:process.stderr,terminal:!0});return new Promise(r=>{t.question(`Cut release ${e}? [y/N] `,i=>{t.close(),r(/^y(es)?$/i.test(i.trim()))})})}var xe="<businessIdOrName>",VO={BRANCH_PREFIX:"branch-prefix",PULL_REQUEST:"pull-request",DISABLED:"disabled"},GO=Object.fromEntries(Pm.map(e=>[VO[e],e])),ZO=/^.{1,50}$/,WO={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp"};function qO(e){let t=new Map;for(let r of Object.values(e??{}))for(let i of r?.routes??[]){if(typeof i.method!="string"||typeof i.path!="string")continue;let n=Nt({actionId:i.actionId,method:i.method,path:i.path}),o=t.get(n)??new Set;o.add(s_(n,i.method)),t.set(n,o)}return[...t.entries()].map(([r,i])=>({subject:r,title:r,permissions:[...i].sort()})).sort((r,i)=>r.subject.localeCompare(i.subject))}function JO(e){return{enabled:e===!0}}function YO(e){let{business:t,...r}=e;return{...r,business:t}}function QO(e){let t=WO[KO(e).toLowerCase()];if(!t)throw new b(`Cannot infer image Content-Type for "${e}". Use a .png, .jpg, .jpeg, or .webp file.`,void 0,{code:"UNSUPPORTED_BRAND_ASSET_TYPE"});return t}function XO(e){return e.filter(t=>t!==void 0&&t!==!1).length}function yy(e,t){let r=t==="icon"?"icon":"logo",i=t==="icon"?"icon":"logo",n=t==="icon"?"clearIcon":"clearLogo";if(XO([e[`${i}Url`],e[`${i}File`],e[n]])>1)throw new b(`Choose only one ${r} operation: --${i}-url, --${i}-file, or --clear-${i}.`,void 0,{code:"CONFLICTING_BRAND_ASSET_FLAGS"})}function eA(e){let t=GO[e];if(!t)throw new b(`Invalid preview environment trigger "${e}". Use branch-prefix, pull-request, or disabled.`,void 0,{code:"INVALID_PREVIEW_ENV_TRIGGER"});return t}function tA(e){let t={};if(typeof e.trigger=="string"&&(t.previewEnvTrigger=eA(e.trigger)),e.clearBranchPrefix===!0)t.envBranchPrefix=null;else if(typeof e.branchPrefix=="string"){if(!ZO.test(e.branchPrefix))throw new b("--branch-prefix must be 1-50 characters.",void 0,{code:"INVALID_ENV_BRANCH_PREFIX"});t.envBranchPrefix=e.branchPrefix}if(t.previewEnvTrigger===void 0&&t.envBranchPrefix===void 0)throw new b("Pass at least one preview environment setting: --trigger, --branch-prefix, or --clear-branch-prefix.",void 0,{code:"MISSING_PREVIEW_ENV_UPDATE"});return t}async function ky(e,t,r,i){let n=await MO(i);return e.uploadBrandAsset(t,r,n,QO(i))}async function nA(e,t){return(await e.listBusinesses()).find(i=>i.name===t)??null}async function rA(e){let{client:t,body:r,reqOpts:i}=e,n=5,o=[2e3,4e3,8e3,8e3];for(let a=1;a<=n;a+=1)try{return{result:await t.createBusiness(r,{...i,retryOnTransient:!1}),recoveredFromTimeout:!1}}catch(c){let u=c instanceof b&&c.code==="IDEMPOTENCY_KEY_IN_FLIGHT",l=c instanceof nt||c instanceof b&&typeof c.status=="number"&&c.status>=500;if(!u&&l){let d=await nA(t,r.name).catch(()=>null);if(d?.gitRepoFullName&&d.acceptedBusinessSpecGitSyncStatus==="SYNCED"){let g=`https://github.com/${d.gitRepoFullName}`;return{result:{business:d,repo:{fullName:d.gitRepoFullName,htmlUrl:g,cloneUrl:`${g}.git`},agent:{instructions:"Clone the repo, read AGENTS.md, author the business shape from actual product requirements, and push.",agentsMdUrl:`${g}/blob/main/AGENTS.md`}},recoveredFromTimeout:!0}}}if(c instanceof b&&c.status===409&&c.code==="IDEMPOTENCY_KEY_IN_FLIGHT"&&a<n){await FO(o[Math.min(a-1,o.length-1)]);continue}throw c}throw new b("Timed out waiting for the idempotent business create request to finish.",409,{code:"IDEMPOTENCY_KEY_IN_FLIGHT"})}var xp=[{opKey:"business.list",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"list",summary:"List businesses in the current org",args:jt(_y),handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,_y),{businesses:n,complete:o}=await Sp(e,i);r({count:n.length,...o?{}:{truncated:!0},businesses:n.map(a=>({...a,displayName:a.displayName??null,status:a.status??null}))},`${n.length} business(es)${o?"":" (truncated)"}`)}},mcp:{tool:"fs_business_list",title:"List businesses",description:"List every business in the authenticated FartherShore workspace (id, name, status). Read-only; use this to discover business ids for the other tools.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{},handler:async e=>{let{businesses:t,complete:r}=await Sp(e);return{count:t.length,...r?{}:{truncated:!0},businesses:t.map(i=>({id:i.id,name:i.name,status:i.status??null}))}}}},{opKey:"business.read",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"show",summary:"Show a business",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusiness(i,{env:t.env});r({business:n},`Business ${i}`)}},mcp:null},{opKey:"business.routes.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"routes",summary:"List a business's compiled routes",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listBusinessRoutes(i,{env:t.env});r({businessId:i,result:n},`Compiled routes for business ${i}`)}},mcp:null},{opKey:"business.config_attempts.read",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"config-attempts",summary:"List rejected configuration attempts for a business",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listBusinessConfigAttempts(i);r({businessId:i,attempts:n.attempts},`Configuration attempts for business ${i}`)}},mcp:null},{opKey:"business.contract.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"contract",summary:"Show a business's accepted contract synopsis",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusinessContract(i,{env:t.env});r({businessId:i,contract:n},`Accepted contract for business ${i}`)}},mcp:null},{opKey:"business.status",operationClass:"operate",sideEffect:"read",cli:{group:"business",command:"status",summary:"Show a business's lifecycle/release/live state (status, latest release version, latest deployment, and a derived `live` boolean) \u2014 verify a business is serving after publish.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getDeployments(i),o=n.data[0]??null,a={id:n.business.id,status:n.business.status,latestReleaseVersion:n.business.latestReleaseVersion,live:n.live,latestDeployment:o?{id:o.id,status:o.status,edgePublishStatus:o.edgePublishStatus,createdAt:o.createdAt}:null};r(a,`Business ${i}: ${n.business.status}${n.business.latestReleaseVersion?` @ ${n.business.latestReleaseVersion}`:""} (${n.live?"live":"not live"})`)}},mcp:{tool:"fs_business_status",title:"Business status",description:"Verify a business's lifecycle/release state by id or slug: its status (DRAFT|ACTIVE), latest release version, latest deployment run, and a derived `live` boolean (ACTIVE + a real non-bootstrap release applied + the edge serving the snapshot). Read-only; use this to confirm a business is live after publishing.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to check.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i=await e.getDeployments(r),n=i.data[0]??null;return{id:i.business.id,status:i.business.status,latestReleaseVersion:i.business.latestReleaseVersion,live:i.live,latestDeployment:n?{id:n.id,status:n.status,edgePublishStatus:n.edgePublishStatus,createdAt:n.createdAt}:null}}}},{opKey:"rbac.read",operationClass:"contract",sideEffect:"read",cli:{group:"business",command:"rbac",summary:"Show a business's Managed-RBAC contract state: the accepted spec's `rbac` flag and the derived grantable-permission catalog.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope (preview branch name)"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getBusinessConfig(i,{env:t.env}),o=n.config??{},a=JO(o.business?.rbac),c=qO(o.routeCatalog);r({businessId:i,environment:n.environment??null,rbac:a,catalog:c},`Managed RBAC ${a.enabled?"enabled":"not enabled"} \u2014 ${c.length} catalog group(s)`)}},mcp:null},{opKey:"business.create",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"create",summary:"Create a new business and provision its managed GitHub repo",idempotent:!0,args:[{field:"name",kind:"positional",token:"<slug>",describe:"Business slug (becomes the subdomain)"},{field:"displayName",kind:"flag",token:"--display-name <displayName>",describe:"Human-friendly business name"},{field:"description",kind:"flag",token:"--description <description>"},{field:"origin",kind:"flag",token:"--origin <url>",describe:"Optional business origin Farther Shore calls for customer-facing actions"},{field:"docs",kind:"flag",token:"--docs",describe:"Enable docs for this business (default when omitted)."},{field:"docs",kind:"flag",token:"--no-docs",describe:"Opt out of docs for this business."}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.docs===!0?!0:t.docs===!1?!1:void 0,a={name:t.name,...typeof t.origin=="string"?{origin:t.origin}:{},description:t.description,displayName:t.displayName,...o!==void 0?{docsEnabled:o}:{}},{result:c,recoveredFromTimeout:u}=await rA({client:e,body:a,reqOpts:r});if(n(c))return;let l=YO(c);i({business:l.business,repoUrl:c.repo.htmlUrl,agent:l.agent,recoveredFromTimeout:u}),Kr(c.repo.htmlUrl)}},mcp:null},{opKey:"business.origin.update",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"update",summary:"Update business presentation metadata and per-env origin",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"displayName",kind:"flag",token:"--display-name <displayName>"},{field:"description",kind:"flag",token:"--description <description>"},{field:"iconUrl",kind:"flag",token:"--icon-url <url>",describe:"Set the square icon/favicon URL"},{field:"iconFile",kind:"flag",token:"--icon-file <path>",describe:"Upload a local PNG, JPEG, or WEBP square icon"},{field:"clearIcon",kind:"flag",token:"--clear-icon",describe:"Remove the current icon asset"},{field:"logoUrl",kind:"flag",token:"--logo-url <url>",describe:"Set the wordmark/logo URL"},{field:"logoFile",kind:"flag",token:"--logo-file <path>",describe:"Upload a local PNG, JPEG, or WEBP wordmark/logo"},{field:"clearLogo",kind:"flag",token:"--clear-logo",describe:"Remove the current logo asset"},{field:"keyPrefix",kind:"flag",token:"--key-prefix <prefix>",describe:"White-label prefix for subscriber API keys (fsk_ \u2192 e.g. acme_). 2-12 lowercase letters/digits; fs/fsk/fsc/fsm reserved."},{field:"clearKeyPrefix",kind:"flag",token:"--clear-key-prefix",describe:"Reset the subscriber API key prefix to the default (fsk)."},{field:"docsHistory",kind:"flag",token:"--docs-history",describe:"Expose EVERY historical docs release to subscribers, not just the latest. Off by default \u2014 every release is still published and retained either way, so this only changes what the docs site SHOWS. Use --no-docs-history to go back to latest-only."},{field:"origin",kind:"flag",token:"--origin <url>",describe:"Set the business upstream origin (the URL the gateway proxies to). With --env, sets that environment's override."},{field:"sandboxOrigin",kind:"flag",token:"--sandbox-origin <url>",describe:"Set the sandbox upstream origin. With --env, env-scoped."},{field:"allowedOrigins",kind:"flag",token:"--allowed-origins <origins>",describe:"Comma-separated browser origins allowed to call the gateway cross-origin (custom frontend domains), e.g. https://app.example.com. The tenant's own portal origin is always allowed."},{field:"clearAllowedOrigins",kind:"flag",token:"--clear-allowed-origins",describe:"Remove all custom allowed origins."},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;yy(t,"icon"),yy(t,"logo");let n={};t.docsHistory===!0&&(n.docsHistoryEnabled=!0),t.docsHistory===!1&&(n.docsHistoryEnabled=!1),t.displayName!==void 0&&(n.displayName=t.displayName),t.description!==void 0&&(n.description=t.description),t.iconUrl!==void 0&&(n.iconUrl=t.iconUrl),t.logoUrl!==void 0&&(n.logoUrl=t.logoUrl),t.clearKeyPrefix===!0?n.keyPrefix=null:t.keyPrefix!==void 0&&(n.keyPrefix=t.keyPrefix),t.origin!==void 0&&(n.origin=t.origin),t.sandboxOrigin!==void 0&&(n.sandboxOrigin=t.sandboxOrigin),t.clearAllowedOrigins===!0?n.allowedOrigins=[]:typeof t.allowedOrigins=="string"&&(n.allowedOrigins=t.allowedOrigins.split(",").map(u=>u.trim()).filter(Boolean));let o=[];if(typeof t.iconFile=="string"&&o.push(()=>ky(e,i,"icon",t.iconFile)),typeof t.logoFile=="string"&&o.push(()=>ky(e,i,"logo",t.logoFile)),t.clearIcon===!0&&o.push(()=>e.deleteBrandAsset(i,"icon")),t.clearLogo===!0&&o.push(()=>e.deleteBrandAsset(i,"logo")),Object.keys(n).length===0&&o.length===0)throw new b("No fields to update. Pass presentation metadata flags such as --display-name, --description, --origin, --icon-file, --logo-file, --docs-history, or a clear flag.",void 0,{code:"BUSINESS_UPDATE_NO_FIELDS"});let a=Object.keys(n).length>0?await e.updateBusiness(i,n,{env:t.env}):await e.getBusiness(i,{env:t.env}),c=await Promise.all(o.map(u=>u()));r({business:a,assets:c},`Business ${i} updated`)}},mcp:{tool:"fs_brand_update",title:"Update business brand",description:"Update a business's brand/presentation and upstream origin \u2014 display name, description, icon, logo (wordmark), origin (the URL the gateway proxies to), sandboxOrigin. Pass env to write an environment-scoped origin override instead of the business default. Plans, pricing, and routes are managed as code in the business repo and are NOT editable here. Only the fields you pass are changed.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to update."),displayName:s.string().optional().describe("Display name."),description:s.string().optional().describe("Short business description."),iconUrl:s.string().nullable().optional().describe("Square icon/favicon URL, or null to clear it."),logoUrl:s.string().nullable().optional().describe("Wordmark/logo URL, or null to clear it."),keyPrefix:s.string().nullable().optional().describe("White-label prefix for subscriber API keys (fsk_ \u2192 e.g. acme_). 2-12 lowercase letters/digits; fs/fsk/fsc/fsm reserved. Null clears to the default fsk."),origin:s.string().optional().describe("Business upstream origin (the URL the gateway proxies to)."),sandboxOrigin:s.string().optional().describe("Sandbox upstream origin."),env:s.string().optional().describe("Environment scope \u2014 when set, the origin override is written to that environment instead of the business default.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i={};return t.displayName!==void 0&&(i.displayName=t.displayName),t.description!==void 0&&(i.description=t.description),t.iconUrl!==void 0&&(i.iconUrl=t.iconUrl),t.logoUrl!==void 0&&(i.logoUrl=t.logoUrl),t.keyPrefix!==void 0&&(i.keyPrefix=t.keyPrefix),t.origin!==void 0&&(i.origin=t.origin),t.sandboxOrigin!==void 0&&(i.sandboxOrigin=t.sandboxOrigin),t.clearAllowedOrigins===!0?i.allowedOrigins=[]:typeof t.allowedOrigins=="string"&&(i.allowedOrigins=t.allowedOrigins.split(",").map(n=>n.trim()).filter(Boolean)),e.updateBusiness(r,i,{env:t.env})}}},{opKey:"business.publish",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"publish",summary:"Publish a draft business (make it live) and cut a versioned release with an auto-computed semver. Requires at least one plan, an origin, and a verified Stripe connection.",idempotent:!0,args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"bump",kind:"flag",token:"--bump <bump>",describe:"Force the semver bump (major|minor|patch). Omit to auto-derive from the change."},{field:"version",kind:"flag",token:"--version <version>",describe:"Pin the exact next release tag (vX.Y.Z), skipping derivation."},{field:"acceptBreaking",kind:"flag",token:"--accept-breaking",describe:"Consent to publish a breaking (blocking-risk) change as a major release."}],helpTextAfter:`
|
|
107
107
|
Publish auto-derives the semver bump from the change and cuts a vX.Y.Z release.
|
|
108
108
|
Use --dry-run to preview the computed bump + reasons without cutting a tag.
|
|
109
|
-
A blocking-risk (breaking) change is refused unless --accept-breaking is passed.`,handler:async({client:e,args:t,opts:r,reqOpts:i,emit:n,emitDryRunPreview:o})=>{let a=t.businessId,c=vy(r);if(i.dryRun){let l=await e.publishBusiness(a,c,i);if(o(l))return}if(yp()&&r.input!==!1){let d=(await e.publishBusiness(a,c,{...i,dryRun:!0,idempotencyKey:void 0})).wouldHave?._release;if(d){ny(`Publishing ${a}: ${d.computedBump} \u2192 ${d.version}`+(d.previousVersion?` (from ${d.previousVersion})`:" (first release)"));for(let p of d.reasons)we(` \u2022 ${p}`);if(!await MO(d.version)){n({cancelled:!0},"Publish cancelled.");return}}}let u=await e.publishBusiness(a,c,i);n({business:u,_release:u._release??null},`Business ${a} published`)}},mcp:{tool:"fs_business_publish",title:"Publish a business",description:"Publish a business \u2014 deploy its current spec live and cut a versioned release with an auto-computed semver.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to publish."),bump:s.enum(["major","minor","patch"]).optional().describe("Force the semver bump. Omit to auto-derive from the change."),version:s.string().optional().describe("Pin the exact next release tag (vX.Y.Z)."),acceptBreaking:s.boolean().optional().describe("Consent to publish a breaking (blocking-risk) change as major."),dryRun:s.boolean().optional().describe("Preview the change (computed semver + reasons) without cutting a release."),...ue},handler:async(e,t)=>{let r=vy({bump:t.bump,version:t.version,acceptBreaking:t.acceptBreaking});return e.publishBusiness(t.businessId,r,{idempotencyKey:t.idempotencyKey,dryRun:t.dryRun})}}},{opKey:"business.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"rollback",summary:"Roll back a prior business publish workflow",idempotent:!0,args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"workflowExecutionId",kind:"positional",token:"<workflowExecutionId>",describe:"Prior publish workflow execution id"},{field:"reason",kind:"flag",token:"--reason <reason>",describe:"Reason recorded with the rollback"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=await e.rollbackBusiness(t.businessId,{workflowExecutionId:t.workflowExecutionId,...typeof t.reason=="string"?{reason:t.reason}:{}},r);n(o)||i(o,`Rollback enqueued for business ${t.businessId}`)}},mcp:null},{opKey:"business.delete",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"delete",summary:"Permanently delete a business. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm business deletion.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;await e.deleteBusiness(i),r({deleted:i},`Business ${i} deleted`)}},mcp:null},{opKey:"business.preview_env.set",operationClass:"operate",sideEffect:"write",cli:{group:"business preview-env",command:"set",summary:"Configure automatic preview-environment creation for a business.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"trigger",kind:"flag",token:"--trigger <branch-prefix|pull-request|disabled>",describe:"Auto-create previews from env branch prefixes, pull requests, or disable automatic creation."},{field:"branchPrefix",kind:"flag",token:"--branch-prefix <prefix>",describe:"Set the env branch prefix used by --trigger branch-prefix (1-50 characters)."},{field:"clearBranchPrefix",kind:"flag",token:"--clear-branch-prefix",describe:"Reset the env branch prefix to the platform default (env/)."}],handler:async({client:e,args:t,emit:r})=>{if(t.branchPrefix!==void 0&&t.clearBranchPrefix===!0)throw new b("Pass either --branch-prefix or --clear-branch-prefix, not both.",void 0,{code:"CONFLICTING_BRANCH_PREFIX_FLAGS"});let i=t.businessId,n=QO(t),o=await e.updateBusiness(i,n,{});r({business:o},`Preview environment policy updated for ${i}`)}},mcp:{tool:"fs_business_preview_env_set",title:"Set business preview environment policy",description:"Configure automatic preview environment creation for a business. Modes: BRANCH_PREFIX creates previews from matching env branches, PULL_REQUEST creates previews for PRs against the default branch, and DISABLED stops automatic creation while explicit `farthershore env create` continues to work. Pass envBranchPrefix to customize the branch-prefix mode, or null to reset to env/.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to update."),previewEnvTrigger:s.enum(Pm).optional().describe("Automatic preview mode: BRANCH_PREFIX, PULL_REQUEST, or DISABLED."),envBranchPrefix:s.string().min(1).max(50).nullable().optional().describe("Branch prefix for BRANCH_PREFIX mode, or null for env/.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i={};if(t.previewEnvTrigger!==void 0&&(i.previewEnvTrigger=t.previewEnvTrigger),t.envBranchPrefix!==void 0&&(i.envBranchPrefix=t.envBranchPrefix),i.previewEnvTrigger===void 0&&i.envBranchPrefix===void 0)throw new b("Pass previewEnvTrigger, envBranchPrefix, or both.",void 0,{code:"MISSING_PREVIEW_ENV_UPDATE"});return e.updateBusiness(r,i,{})}}},{opKey:"business.docs.enable",operationClass:"operate",sideEffect:"write",cli:{group:"business docs",command:"enable",summary:"Enable docs for a business (publish/serve docs scaffold).",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.updateBusiness(i,{docsEnabled:!0},{});r({business:n},`Docs enabled for ${i}`)}},mcp:{tool:"fs_business_docs_enable",title:"Enable business docs",description:"Enable docs for a business \u2014 opens the publish/sync gate so docs are served from R2 and `boot.docsEnabled=true` is emitted to the portal. Idempotent if docs are already enabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to enable docs on.")},handler:async(e,t)=>{let r=await F(e,t.businessId);return e.updateBusiness(r,{docsEnabled:!0},{})}}},{opKey:"business.docs.disable",operationClass:"operate",sideEffect:"write",cli:{group:"business docs",command:"disable",summary:"Disable docs for a business (stop publishing/serving docs; scaffold kept in the repo).",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.updateBusiness(i,{docsEnabled:!1},{});r({business:n},`Docs disabled for ${i}`)}},mcp:{tool:"fs_business_docs_disable",title:"Disable business docs",description:"Disable docs for a business \u2014 closes the publish/sync gate so docs are no longer served and `boot.docsEnabled=false` is emitted to the portal. The docs scaffold stays in the repo; re-enabling is a pure flag flip. Idempotent if docs are already disabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to disable docs on.")},handler:async(e,t)=>{let r=await F(e,t.businessId);return e.updateBusiness(r,{docsEnabled:!1},{})}}}];function Iy(e,t){L(e,t,xp)}async function Vr(e,t,r){let i=[],n=0;for(;;){let o=await e.listEnvironments(t,{limit:100,offset:n,...r?{query:r}:{}});if(i.push(...o.data),!o.pagination.hasMore)return i;let a=o.pagination.offset+o.pagination.limit;if(a<=n)throw new Error("Environment pagination did not advance.");n=a}}var Ey={filterFields:{id:"string",name:"string",branch:"string"},sortFields:["name","createdAt","id"],searchable:!0},$p=[{opKey:"environment.read",operationClass:"operate",sideEffect:"read",cli:{group:"env",command:"list",summary:"List environments for a business",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},...jt(Ey)],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=Bt(t,Ey),o=await Vr(e,i,n);r({businessId:i,count:o.length,environments:o.map(a=>({id:a.id,name:a.name,branch:a.branch??null,portalHostname:a.portalHostname??null,runtimeHostname:a.runtimeHostname??null,status:a.status??null}))},`${o.length} environment(s)`)}},mcp:{tool:"fs_env_list",title:"List environments",description:"List a business's preview environments (name, branch, hostnames). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose environments to list.")},handler:async(e,{businessId:t})=>{let r=await Vr(e,t);return{data:r,pagination:{total:r.length,limit:r.length,offset:0,hasMore:!1}}}}},{opKey:"environment.create",operationClass:"operate",sideEffect:"write",cli:{group:"env",command:"create",summary:"Create a preview environment bound to a git branch",idempotent:!0,args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"name",kind:"flag",token:"--name <name>",describe:"Environment name (e.g. preview, staging)",required:!0},{field:"branch",kind:"flag",token:"--branch <branch>",describe:"Git branch to track (e.g. env/preview)",required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await e.createEnvironment(o,{name:t.name,branch:t.branch},r);n(a)||i({businessId:o,environment:a},`Environment ${t.name} created`)}},mcp:{tool:"fs_env_create",title:"Create preview environment",description:"Create a preview environment bound to a git branch. Provide a name and the git branch it tracks.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to create the environment in."),name:s.string().describe("Environment name (e.g. 'staging', 'preview-pr-42')."),branch:s.string().describe("The git branch this environment tracks."),...ue},handler:async(e,t)=>{let r=await e.createEnvironment(t.businessId,{name:t.name,branch:t.branch},{idempotencyKey:t.idempotencyKey});return{ok:!0,businessId:t.businessId,environment:r}}}},{opKey:"environment.delete",operationClass:"operate",sideEffect:"write",cli:{group:"env",command:"delete",summary:"Delete an environment by name. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm environment deletion.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"envName",kind:"positional",token:"<envName>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.envName;await e.deleteEnvironment(i,n),r({businessId:i,deleted:n},`Environment ${n} deleted`)}},mcp:null}];function Sy(e,t){L(e,t,$p)}var KF=s.object({recurring_fee_cents:s.number().int().nonnegative().optional(),grants:s.array(ft).max(40).optional(),creditPolicy:gt.optional(),min_monthly_spend_cents:s.number().int().nonnegative().optional(),max_monthly_spend_cents:s.number().int().nonnegative().optional(),meters:s.array(ht).optional(),notes:s.string().max(2e3).optional()});var Is=["next_renewal","immediate","by_date","opt_in"];function tA(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:Array.isArray(t.plans)?t.plans:Array.isArray(e)?e:[]}function nA(e){if(e.length===0)return"(no plans)";let t=["KEY","NAME","FREE","FEE\xA2","RECURRING\xA2","ONE_TIME\xA2","TRIAL_D","MAX_SPEND\xA2","STATUS"],r=c=>c===null?"\u2014":c.toLocaleString("en-US"),i=e.map(c=>[c.key,c.name,c.free?"Y":"N",r(c.recurring_fee_cents),r(c.recurring_grant_cents),r(c.one_time_grant_cents),r(c.trial_days),r(c.max_monthly_spend_cents),c.status]),n=t.map((c,u)=>Math.max(c.length,...i.map(l=>l[u]?.length??0))),o=c=>c.map((u,l)=>u.padEnd(n[l]??u.length)).join(" "),a=n.map(c=>"-".repeat(c)).join(" ");return[o(t),a,...i.map(o)].join(`
|
|
109
|
+
A blocking-risk (breaking) change is refused unless --accept-breaking is passed.`,handler:async({client:e,args:t,opts:r,reqOpts:i,emit:n,emitDryRunPreview:o})=>{let a=t.businessId,c=vy(r);if(i.dryRun){let l=await e.publishBusiness(a,c,i);if(o(l))return}if(yp()&&r.input!==!1){let d=(await e.publishBusiness(a,c,{...i,dryRun:!0,idempotencyKey:void 0})).wouldHave?._release;if(d){ny(`Publishing ${a}: ${d.computedBump} \u2192 ${d.version}`+(d.previousVersion?` (from ${d.previousVersion})`:" (first release)"));for(let p of d.reasons)we(` \u2022 ${p}`);if(!await HO(d.version)){n({cancelled:!0},"Publish cancelled.");return}}}let u=await e.publishBusiness(a,c,i);n({business:u,_release:u._release??null},`Business ${a} published`)}},mcp:{tool:"fs_business_publish",title:"Publish a business",description:"Publish a business \u2014 deploy its current spec live and cut a versioned release with an auto-computed semver.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to publish."),bump:s.enum(["major","minor","patch"]).optional().describe("Force the semver bump. Omit to auto-derive from the change."),version:s.string().optional().describe("Pin the exact next release tag (vX.Y.Z)."),acceptBreaking:s.boolean().optional().describe("Consent to publish a breaking (blocking-risk) change as major."),dryRun:s.boolean().optional().describe("Preview the change (computed semver + reasons) without cutting a release."),...ue},handler:async(e,t)=>{let r=vy({bump:t.bump,version:t.version,acceptBreaking:t.acceptBreaking});return e.publishBusiness(t.businessId,r,{idempotencyKey:t.idempotencyKey,dryRun:t.dryRun})}}},{opKey:"business.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"rollback",summary:"Roll back a prior business publish workflow",idempotent:!0,args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"workflowExecutionId",kind:"positional",token:"<workflowExecutionId>",describe:"Prior publish workflow execution id"},{field:"reason",kind:"flag",token:"--reason <reason>",describe:"Reason recorded with the rollback"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=await e.rollbackBusiness(t.businessId,{workflowExecutionId:t.workflowExecutionId,...typeof t.reason=="string"?{reason:t.reason}:{}},r);n(o)||i(o,`Rollback enqueued for business ${t.businessId}`)}},mcp:null},{opKey:"business.delete",operationClass:"operate",sideEffect:"write",cli:{group:"business",command:"delete",summary:"Permanently delete a business. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm business deletion.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;await e.deleteBusiness(i),r({deleted:i},`Business ${i} deleted`)}},mcp:null},{opKey:"business.preview_env.set",operationClass:"operate",sideEffect:"write",cli:{group:"business preview-env",command:"set",summary:"Configure automatic preview-environment creation for a business.",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0},{field:"trigger",kind:"flag",token:"--trigger <branch-prefix|pull-request|disabled>",describe:"Auto-create previews from env branch prefixes, pull requests, or disable automatic creation."},{field:"branchPrefix",kind:"flag",token:"--branch-prefix <prefix>",describe:"Set the env branch prefix used by --trigger branch-prefix (1-50 characters)."},{field:"clearBranchPrefix",kind:"flag",token:"--clear-branch-prefix",describe:"Reset the env branch prefix to the platform default (env/)."}],handler:async({client:e,args:t,emit:r})=>{if(t.branchPrefix!==void 0&&t.clearBranchPrefix===!0)throw new b("Pass either --branch-prefix or --clear-branch-prefix, not both.",void 0,{code:"CONFLICTING_BRANCH_PREFIX_FLAGS"});let i=t.businessId,n=tA(t),o=await e.updateBusiness(i,n,{});r({business:o},`Preview environment policy updated for ${i}`)}},mcp:{tool:"fs_business_preview_env_set",title:"Set business preview environment policy",description:"Configure automatic preview environment creation for a business. Modes: BRANCH_PREFIX creates previews from matching env branches, PULL_REQUEST creates previews for PRs against the default branch, and DISABLED stops automatic creation while explicit `farthershore env create` continues to work. Pass envBranchPrefix to customize the branch-prefix mode, or null to reset to env/.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to update."),previewEnvTrigger:s.enum(Pm).optional().describe("Automatic preview mode: BRANCH_PREFIX, PULL_REQUEST, or DISABLED."),envBranchPrefix:s.string().min(1).max(50).nullable().optional().describe("Branch prefix for BRANCH_PREFIX mode, or null for env/.")},handler:async(e,t)=>{let r=await F(e,t.businessId),i={};if(t.previewEnvTrigger!==void 0&&(i.previewEnvTrigger=t.previewEnvTrigger),t.envBranchPrefix!==void 0&&(i.envBranchPrefix=t.envBranchPrefix),i.previewEnvTrigger===void 0&&i.envBranchPrefix===void 0)throw new b("Pass previewEnvTrigger, envBranchPrefix, or both.",void 0,{code:"MISSING_PREVIEW_ENV_UPDATE"});return e.updateBusiness(r,i,{})}}},{opKey:"business.docs.enable",operationClass:"operate",sideEffect:"write",cli:{group:"business docs",command:"enable",summary:"Enable docs for a business (publish/serve docs scaffold).",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.updateBusiness(i,{docsEnabled:!0},{});r({business:n},`Docs enabled for ${i}`)}},mcp:{tool:"fs_business_docs_enable",title:"Enable business docs",description:"Enable docs for a business \u2014 opens the publish/sync gate so docs are served from R2 and `boot.docsEnabled=true` is emitted to the portal. Idempotent if docs are already enabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to enable docs on.")},handler:async(e,t)=>{let r=await F(e,t.businessId);return e.updateBusiness(r,{docsEnabled:!0},{})}}},{opKey:"business.docs.disable",operationClass:"operate",sideEffect:"write",cli:{group:"business docs",command:"disable",summary:"Disable docs for a business (stop publishing/serving docs; scaffold kept in the repo).",args:[{field:"businessId",kind:"positional",token:xe,resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.updateBusiness(i,{docsEnabled:!1},{});r({business:n},`Docs disabled for ${i}`)}},mcp:{tool:"fs_business_docs_disable",title:"Disable business docs",description:"Disable docs for a business \u2014 closes the publish/sync gate so docs are no longer served and `boot.docsEnabled=false` is emitted to the portal. The docs scaffold stays in the repo; re-enabling is a pure flag flip. Idempotent if docs are already disabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id or slug to disable docs on.")},handler:async(e,t)=>{let r=await F(e,t.businessId);return e.updateBusiness(r,{docsEnabled:!1},{})}}}];function Iy(e,t){L(e,t,xp)}async function Vr(e,t,r){let i=[],n=0;for(;;){let o=await e.listEnvironments(t,{limit:100,offset:n,...r?{query:r}:{}});if(i.push(...o.data),!o.pagination.hasMore)return i;let a=o.pagination.offset+o.pagination.limit;if(a<=n)throw new Error("Environment pagination did not advance.");n=a}}var Ey={filterFields:{id:"string",name:"string",branch:"string"},sortFields:["name","createdAt","id"],searchable:!0},$p=[{opKey:"environment.read",operationClass:"operate",sideEffect:"read",cli:{group:"env",command:"list",summary:"List environments for a business",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},...jt(Ey)],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=Bt(t,Ey),o=await Vr(e,i,n);r({businessId:i,count:o.length,environments:o.map(a=>({id:a.id,name:a.name,branch:a.branch??null,portalHostname:a.portalHostname??null,runtimeHostname:a.runtimeHostname??null,status:a.status??null}))},`${o.length} environment(s)`)}},mcp:{tool:"fs_env_list",title:"List environments",description:"List a business's preview environments (name, branch, hostnames). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose environments to list.")},handler:async(e,{businessId:t})=>{let r=await Vr(e,t);return{data:r,pagination:{total:r.length,limit:r.length,offset:0,hasMore:!1}}}}},{opKey:"environment.create",operationClass:"operate",sideEffect:"write",cli:{group:"env",command:"create",summary:"Create a preview environment bound to a git branch",idempotent:!0,args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"name",kind:"flag",token:"--name <name>",describe:"Environment name (e.g. preview, staging)",required:!0},{field:"branch",kind:"flag",token:"--branch <branch>",describe:"Git branch to track (e.g. env/preview)",required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await e.createEnvironment(o,{name:t.name,branch:t.branch},r);n(a)||i({businessId:o,environment:a},`Environment ${t.name} created`)}},mcp:{tool:"fs_env_create",title:"Create preview environment",description:"Create a preview environment bound to a git branch. Provide a name and the git branch it tracks.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to create the environment in."),name:s.string().describe("Environment name (e.g. 'staging', 'preview-pr-42')."),branch:s.string().describe("The git branch this environment tracks."),...ue},handler:async(e,t)=>{let r=await e.createEnvironment(t.businessId,{name:t.name,branch:t.branch},{idempotencyKey:t.idempotencyKey});return{ok:!0,businessId:t.businessId,environment:r}}}},{opKey:"environment.delete",operationClass:"operate",sideEffect:"write",cli:{group:"env",command:"delete",summary:"Delete an environment by name. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm environment deletion.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"envName",kind:"positional",token:"<envName>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.envName;await e.deleteEnvironment(i,n),r({businessId:i,deleted:n},`Environment ${n} deleted`)}},mcp:null}];function Sy(e,t){L(e,t,$p)}var GF=s.object({recurring_fee_cents:s.number().int().nonnegative().optional(),grants:s.array(ft).max(40).optional(),creditPolicy:gt.optional(),min_monthly_spend_cents:s.number().int().nonnegative().optional(),max_monthly_spend_cents:s.number().int().nonnegative().optional(),meters:s.array(ht).optional(),notes:s.string().max(2e3).optional()});var Is=["next_renewal","immediate","by_date","opt_in"];function iA(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:Array.isArray(t.plans)?t.plans:Array.isArray(e)?e:[]}function oA(e){if(e.length===0)return"(no plans)";let t=["KEY","NAME","FREE","FEE\xA2","RECURRING\xA2","ONE_TIME\xA2","TRIAL_D","MAX_SPEND\xA2","STATUS"],r=c=>c===null?"\u2014":c.toLocaleString("en-US"),i=e.map(c=>[c.key,c.name,c.free?"Y":"N",r(c.recurring_fee_cents),r(c.recurring_grant_cents),r(c.one_time_grant_cents),r(c.trial_days),r(c.max_monthly_spend_cents),c.status]),n=t.map((c,u)=>Math.max(c.length,...i.map(l=>l[u]?.length??0))),o=c=>c.map((u,l)=>u.padEnd(n[l]??u.length)).join(" "),a=n.map(c=>"-".repeat(c)).join(" ");return[o(t),a,...i.map(o)].join(`
|
|
110
110
|
`)}var wy=[{opKey:"plan.read",operationClass:"contract",sideEffect:"read",cli:{group:"plan",command:"list",summary:"List plans for a business",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0}],helpTextAfter:`
|
|
111
111
|
Output:
|
|
112
112
|
--format json \u2014 stable agent-friendly JSON envelope (default for non-TTY)
|
|
113
113
|
--format table \u2014 human-readable summary table (default for TTY)
|
|
114
|
-
`,handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,o=
|
|
114
|
+
`,handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,o=iA(await e.managementListPlans(i)).map(a=>({id:a.id,key:a.planKey??a.key??"",name:a.name??"",version:a.version??null,free:a.free??!1,recurring_fee_cents:a.recurring_fee_cents??0,grants:a.grants??[],recurring_grant_cents:Um({grants:a.grants}),one_time_grant_cents:as({grants:a.grants}),trial_days:a.trial_days??0,max_monthly_spend_cents:a.max_monthly_spend_cents??null,status:a.status??(a.isActive===!1?"INACTIVE":"ACTIVE")}));r({businessId:i,count:o.length,plans:o},`${o.length} plan(s) for business ${i}`),ce()!=="json"&&console.log(oA(o))}},mcp:{tool:"fs_plan_list",title:"List plans",description:"List a business's pricing plans (read-only). Plans are managed as code in the business's GitHub repo \u2014 to add/change/remove a plan, edit business/ and push; this tool only reads the current state. Pass the business id from fs_business_list.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose plans to list.")},handler:async(e,{businessId:t})=>e.managementListPlans(t)}},{opKey:"plan.migration_batch.create",operationClass:"operate",sideEffect:"write",cli:{group:"plan",command:"migrate",summary:"Migrate subscribers between plan versions under a policy (owner-only)",idempotent:!0,args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"planKey",kind:"positional",token:"<planKey>"},{field:"from",kind:"flag",token:"--from <version>",describe:"Source plan version to migrate FROM: an integer (e.g. 1) or head/latest.",required:!0},{field:"to",kind:"flag",token:"--to <version>",describe:"Target plan version to migrate TO: an integer (e.g. 2) or head/latest.",required:!0},{field:"policy",kind:"flag",token:"--policy <policy>",describe:`Migration policy: ${Is.join(" | ")}.`,required:!0},{field:"proration",kind:"flag",token:"--proration <proration>",describe:"Optional proration: none | prorate | credit."},{field:"completeBy",kind:"flag",token:"--complete-by <iso8601>",describe:"Deadline (ISO 8601) \u2014 required by the by_date policy."}],helpTextAfter:`
|
|
115
115
|
Examples:
|
|
116
116
|
farthershore plan migrate my-business pro --from 1 --to head --policy next_renewal
|
|
117
117
|
farthershore plan migrate my-business pro --from 1 --to 2 --policy immediate --proration prorate
|
|
118
|
-
`,handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.planKey,c=t.policy;if(!Is.includes(c))throw new b(`Invalid --policy "${c}". Supported: ${Is.join(", ")}.`,void 0,{code:"INVALID_MIGRATION_POLICY"});let u=await e.migratePlan(o,a,{fromVersion:t.from,toVersion:t.to,policy:c,proration:t.proration,completeBy:t.completeBy},r);n(u)||i({businessId:o,planKey:a,migration:u},`Migration scheduled for plan ${a}`)}},mcp:{tool:"fs_plan_migrate",title:"Migrate subscribers between plan versions",description:"Schedule a subscriber migration for a plan: move subscribers from one plan version to another under a policy. Pass the plan KEY plus fromVersion/toVersion (each an integer or 'head'/'latest') \u2014 the server resolves them to the right plan versions. Policies: next_renewal (migrate at each subscriber's renewal), immediate (migrate now), by_date (migrate everyone by a deadline), or opt_in (subscribers choose). This is an OPERATE action (it changes live subscriber state, not the business's code-managed definition).",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose subscribers to migrate."),planKey:s.string().describe("The stable plan key (e.g. 'pro') to migrate within."),fromVersion:s.union([s.string(),s.number().int().positive()]).describe("Source plan version: an integer or 'head'/'latest'."),toVersion:s.union([s.string(),s.number().int().positive()]).describe("Target plan version: an integer or 'head'/'latest'."),policy:s.enum(Is).describe("Migration policy: next_renewal | immediate | by_date | opt_in."),proration:s.enum(["none","prorate","credit"]).optional().describe("Optional proration behaviour."),completeBy:s.string().optional().describe("ISO 8601 deadline \u2014 required by the by_date policy."),...ue},handler:async(e,t)=>e.migratePlan(t.businessId,t.planKey,{fromVersion:t.fromVersion,toVersion:t.toVersion,policy:t.policy,proration:t.proration,completeBy:t.completeBy},{idempotencyKey:t.idempotencyKey})}}],xy=wy;function $y(e,t){L(e,t,wy)}import{mkdtemp as
|
|
118
|
+
`,handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.planKey,c=t.policy;if(!Is.includes(c))throw new b(`Invalid --policy "${c}". Supported: ${Is.join(", ")}.`,void 0,{code:"INVALID_MIGRATION_POLICY"});let u=await e.migratePlan(o,a,{fromVersion:t.from,toVersion:t.to,policy:c,proration:t.proration,completeBy:t.completeBy},r);n(u)||i({businessId:o,planKey:a,migration:u},`Migration scheduled for plan ${a}`)}},mcp:{tool:"fs_plan_migrate",title:"Migrate subscribers between plan versions",description:"Schedule a subscriber migration for a plan: move subscribers from one plan version to another under a policy. Pass the plan KEY plus fromVersion/toVersion (each an integer or 'head'/'latest') \u2014 the server resolves them to the right plan versions. Policies: next_renewal (migrate at each subscriber's renewal), immediate (migrate now), by_date (migrate everyone by a deadline), or opt_in (subscribers choose). This is an OPERATE action (it changes live subscriber state, not the business's code-managed definition).",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose subscribers to migrate."),planKey:s.string().describe("The stable plan key (e.g. 'pro') to migrate within."),fromVersion:s.union([s.string(),s.number().int().positive()]).describe("Source plan version: an integer or 'head'/'latest'."),toVersion:s.union([s.string(),s.number().int().positive()]).describe("Target plan version: an integer or 'head'/'latest'."),policy:s.enum(Is).describe("Migration policy: next_renewal | immediate | by_date | opt_in."),proration:s.enum(["none","prorate","credit"]).optional().describe("Optional proration behaviour."),completeBy:s.string().optional().describe("ISO 8601 deadline \u2014 required by the by_date policy."),...ue},handler:async(e,t)=>e.migratePlan(t.businessId,t.planKey,{fromVersion:t.fromVersion,toVersion:t.toVersion,policy:t.policy,proration:t.proration,completeBy:t.completeBy},{idempotencyKey:t.idempotencyKey})}}],xy=wy;function $y(e,t){L(e,t,wy)}import{mkdtemp as SA,rm as wA}from"node:fs/promises";import{tmpdir as xA}from"node:os";import{join as Ny}from"node:path";import{spawn as pA}from"node:child_process";import{existsSync as Cy}from"node:fs";import{readFile as fA}from"node:fs/promises";import{mkdtemp as sA,rm as aA}from"node:fs/promises";import{tmpdir as cA}from"node:os";import{join as Tp}from"node:path";function Ay(e,t,r={}){e.command("validate").description("Validate the business/ program the way the PR check does, before pushing").option("--entry <path>","Business-as-code folder or file to validate (default: the repo-local SDK resolves it \u2014 normally the business/ folder)").option("--business <id-or-name>","Business id or name \u2014 runs the server dry-run validate for the full verdict (diff + economic change)").option("--env <name>","Environment for the server validate").option("--local-only","Build + determinism only; skip the server dry-run validate").addHelpText("after",`
|
|
119
119
|
Examples:
|
|
120
120
|
farthershore validate # local build + determinism
|
|
121
121
|
farthershore validate --business weather-api # + server validate (full PR verdict)
|
|
122
122
|
farthershore validate --local-only --format json
|
|
123
|
-
`).action(async i=>{let n=i.entry,o=n??"business/",a=r.runLocalManifestBuild??Gr,c=r.readManifestEnvelope??Zr,u=await
|
|
124
|
-
`,d(1,null)}),o.on("close",(g,p)=>{d(g??(p?1:0),p)})})}async function Zr(e){let t=await
|
|
123
|
+
`).action(async i=>{let n=i.entry,o=n??"business/",a=r.runLocalManifestBuild??Gr,c=r.readManifestEnvelope??Zr,u=await sA(Tp(cA(),"fs-validate-")),l=Tp(u,"build-a.json"),d=Tp(u,"build-b.json");try{let g=await a({entry:n,out:l});uA(g),g.exitCode!==0&&Oy(g,o);let p=await Ty(c,l,o),_=await a({entry:n,out:d});_.exitCode!==0&&Oy(_,o);let S=await Ty(c,d,o),f=p.irHash??null;(!f||f!==(S.irHash??null))&&lA(p.irHash??null,S.irHash??null,o);let m=null,k=null;if(i.localOnly)k="skipped (--local-only)";else if(!i.business)k="skipped (pass --business <id-or-name> for the full server verdict: diff + economic change)";else{let A=t(),P=await F(A,i.business);m=await A.compileManifest(P,p.ir,{env:i.env}),m.success||dA(m)}G({success:!0,entry:o,irHash:f,deterministic:!0,validate:m?{success:m.success,economicChange:m.economicChange??!1,warnings:m.warnings,lifecyclePlan:m.lifecyclePlan??null,environment:m.environment??null,specHash:m.specHash??null}:null,validateSkipped:k,nextActions:mA(m,k)},m?"Validate passed \u2014 manifest compiles and validates cleanly":"Validate passed \u2014 manifest builds deterministically"),m?.economicChange&&we("This change is economic (plan/pricing) \u2014 it will defer to a release on push."),k&&!i.localOnly&&we(k)}finally{await aA(u,{recursive:!0,force:!0}).catch(()=>{})}})}function uA(e){ce()!=="json"&&(e.stdout&&process.stdout.write(e.stdout),e.stderr&&process.stderr.write(e.stderr))}async function Ty(e,t,r){try{return await e(t)}catch(i){let n=i instanceof Error?i.message:"Manifest IR output could not be read";throw new b(n,0,{code:"MANIFEST_IR_READ_FAILED",details:{success:!1,phase:"read_manifest_ir",entry:r,errors:[{message:n}],nextActions:["Run farthershore build to see the full build output"]}})}}function Oy(e,t){throw new b(`Manifest build failed with exit code ${e.exitCode||1}`,0,{code:"MANIFEST_BUILD_FAILED",details:{success:!1,phase:"local_build",entry:t,command:e.command,args:e.args,exitCode:e.exitCode,signal:e.signal,stdout:e.stdout,stderr:e.stderr,nextActions:[...Op(e.stderr,e.command),"Fix your business/ program and run farthershore validate again"]}})}function lA(e,t,r){throw new b("Manifest build is nondeterministic \u2014 two builds produced different irHash",0,{code:"MANIFEST_NONDETERMINISTIC",details:{success:!1,phase:"determinism",entry:r,irHash:e,irHash2:t,nextActions:["Remove nondeterminism from your business/ program (e.g. Date.now(), Math.random(), unordered iteration)"]}})}function dA(e){throw new b(`Manifest validation failed with ${e.errors.length} error(s)`,422,{code:"MANIFEST_VALIDATION_FAILED",details:{success:!1,phase:"server_validate",irHash:e.irHash??null,errors:e.errors,warnings:e.warnings,economicChange:e.economicChange??!1,nextActions:["Fix the reported errors in your business/ program and run farthershore validate again"]}})}function mA(e,t){return e?["Manifest compiles and validates \u2014 commit and push; the GitHub check will run the same validation"]:t&&t.includes("--business")?["Pass --business <id-or-name> to also run the server validate (semantic diff + economic-change verdict)"]:["Commit and push business/ changes"]}function Op(e,t){let r=e??"";return/ENOENT/.test(r)&&/manifest-build/.test(r+t)?["business/ dependencies are not installed \u2014 this is NOT a problem with your program","Run `npm install` inside the business/ directory, then re-run the command"]:[]}var gA="business-build.json",Ry="./business/node_modules/.bin/farthershore-manifest-build",hA="./node_modules/.bin/farthershore-manifest-build";function bA(e=Cy){return e(Ry)?Ry:hA}async function Gr(e,t=pA,r=Cy){let i=bA(r),n=e.entry?["--entry",e.entry,"--out",e.out]:["--out",e.out],o=t(i,n,{stdio:["ignore","pipe","pipe"]}),a="",c="",u=!1;return o.stdout?.setEncoding("utf8"),o.stderr?.setEncoding("utf8"),o.stdout?.on("data",l=>{a+=l}),o.stderr?.on("data",l=>{c+=l}),new Promise(l=>{let d=(g,p)=>{u||(u=!0,l({command:i,args:n,exitCode:g,signal:p,stdout:a,stderr:c}))};o.on("error",g=>{c+=`${g.message}
|
|
124
|
+
`,d(1,null)}),o.on("close",(g,p)=>{d(g??(p?1:0),p)})})}async function Zr(e){let t=await fA(e,"utf8"),r=JSON.parse(t);if(!EA(r)||!("ir"in r))throw new Error(`${e} is not a Manifest IR envelope with an ir field`);return{ir:r.ir,irHash:typeof r.irHash=="string"?r.irHash:void 0}}function Py(e,t,r={}){e.command("build").description("Build the business/ program into a Manifest IR envelope").option("--entry <path>","Business-as-code folder or file to compile (default: the repo-local SDK resolves it \u2014 normally the business/ folder)").option("--out <path>","Output path for the build output (default: business-build.json)").addHelpText("after",`
|
|
125
125
|
Examples:
|
|
126
126
|
farthershore build
|
|
127
127
|
farthershore build --entry business/ --out business-build.json
|
|
128
128
|
farthershore build --format json
|
|
129
|
-
`).action(async i=>{let n=e.opts(),o=ys(n.format),a=i.entry,c=a??"business/",u=i.out??
|
|
130
|
-
`);for(let i of e.plans){r.push(
|
|
129
|
+
`).action(async i=>{let n=e.opts(),o=ys(n.format),a=i.entry,c=a??"business/",u=i.out??gA,l=r.runLocalManifestBuild??Gr,d=r.readManifestEnvelope??Zr,g=await l({entry:a,out:u});_A(g,o),g.exitCode!==0&&vA(g,c,u);let p;try{p=await d(u)}catch(_){yA(_,c,u)}kA({entry:c,out:u,envelope:p})})}function _A(e,t){t!=="json"&&(e.stdout&&process.stdout.write(e.stdout),e.stderr&&process.stderr.write(e.stderr))}function vA(e,t,r){throw new b(`Manifest build failed with exit code ${e.exitCode||1}`,0,{code:"MANIFEST_BUILD_FAILED",details:{success:!1,phase:"local_build",entry:t,out:r,command:e.command,args:e.args,exitCode:e.exitCode,signal:e.signal,stdout:e.stdout,stderr:e.stderr,nextActions:[...Op(e.stderr,e.command),"Fix your business/ program and run farthershore build again"]}})}function yA(e,t,r){let i=e instanceof Error?e.message:"Manifest IR output could not be read";throw new b(i,0,{code:"MANIFEST_IR_READ_FAILED",details:{success:!1,phase:"read_manifest_ir",entry:t,out:r,errors:[{message:i}],nextActions:["Check the manifest build output path and run farthershore build again"]}})}function kA(e){G({success:!0,entry:e.entry,out:e.out,irHash:e.envelope.irHash??null,mode:null,validation:null,errors:[],warnings:[],lifecyclePlan:null,nextActions:IA()},`Manifest IR written to ${e.out}`),we("Commit and push business/ changes for the GitHub bot to compile and publish accepted lifecycle state.")}function IA(){return["Commit and push business/ changes; the GitHub bot will compile and publish accepted lifecycle state"]}function EA(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}var $A={NO_CHANGE:"no change",IMMEDIATE:"now",BRIDGE_REQUIRED:"bridged",RENEWAL_REQUIRED:"at renewal",UNSUPPORTED:"blocked"},TA={immediate:"now",bridge:"now, old price",renewal:"at renewal",unsupported:"blocked"},OA=16;function AA(e,t){let r=t.keys.length===0?"":` \u2014 ${t.keys.slice(0,6).join(", ")}${t.keys.length>6?` +${t.keys.length-6} more`:""}`;return`${e.padEnd(OA)}${t.label}${r}`}function RA(e){let t=e.planName&&e.planName!==e.planKey?` (${e.planName})`:"";return e.mintsNewVersion?e.currentVersion===null?`${e.planKey}${t} new \u2192 v${e.nextVersion}`:`${e.planKey}${t} v${e.currentVersion} \u2192 v${e.nextVersion}`:`${e.planKey}${t} v${e.currentVersion??1} \u2014 unchanged`}function Ap(e,t,r){return`${e.toLocaleString("en-US")} ${e===1?t:r}`}function CA(e){let r=[`Plan release preview \u2014 ${e.environment.production?"production":e.environment.name??"environment"}`,""];if(e.plans.length===0&&e.unclassifiedPlanKeys.length===0)return r.push("(no plans in this manifest)"),r.join(`
|
|
130
|
+
`);for(let i of e.plans){r.push(RA(i));for(let n of i.summary)r.push(` ${n}`);for(let n of i.cohorts){r.push(""),r.push(` Version ${n.version} \xB7 ${Ap(n.subscribers,"subscriber","subscribers")} \xB7 ${$A[n.disposition]}`);let o=[["unsupported",n.unsupported],["immediate",n.immediate],["bridge",n.bridge],["renewal",n.renewal]],a=!1;for(let[c,u]of o)for(let l of u)r.push(` ${AA(TA[c],l)}`),a=!0;a||r.push(" (no differences)")}r.push("")}return r.push(e.affectedSubscribers===0?"No existing subscribers are affected.":`${Ap(e.affectedSubscribers,"subscriber","subscribers")} affected: ${e.immediateSubscribers} now \xB7 ${e.bridgedSubscribers} bridged \xB7 ${e.renewalSubscribers} at renewal \xB7 ${e.unsupportedSubscribers} blocked.`),e.noticeCount>0&&r.push(`${Ap(e.noticeCount,"pricing notice","pricing notices")} required.`),e.unclassifiedPlanKeys.length>0&&r.push(`Not classified (not counted above): ${e.unclassifiedPlanKeys.join(", ")}. Run \`farthershore validate\` for the diagnostic.`),e.blocksPublish&&r.push("Publish is BLOCKED: a change cannot be faithfully deferred for a pinned cohort. Use a new plan key and migrate subscribers explicitly."),r.join(`
|
|
131
131
|
`)}function Dy(e,t,r={}){(e.commands.find(n=>n.name()==="plan")??e.command("plan").description("Plan operations: list code-managed plans and migrate subscribers")).command("diff").description("Preview which subscribers a plan change reaches now, bridges, or defers to renewal").argument("<businessIdOrName>").option("--entry <path>","Business-as-code folder or file to build (default: the repo-local SDK resolves it \u2014 normally the business/ folder)").option("--ir <path>","Use an already-built Manifest IR envelope (e.g. business-build.json) instead of rebuilding").option("--env <name>","Environment to diff against (default: production)").option("--plan <key>","Only show this plan key").addHelpText("after",`
|
|
132
132
|
What it tells you:
|
|
133
133
|
Every plan's next version, and \u2014 per still-populated cohort \u2014 whether the
|
|
@@ -138,34 +138,34 @@ Examples:
|
|
|
138
138
|
farthershore plan diff weather-api
|
|
139
139
|
farthershore plan diff weather-api --env staging
|
|
140
140
|
farthershore plan diff weather-api --ir business-build.json --format json
|
|
141
|
-
`).action(async(n,o)=>{let a=r.runLocalManifestBuild??Gr,c=r.readManifestEnvelope??Zr,u=await CA({opts:o,runBuild:a,readEnvelope:c}),l=t(),d=await F(l,n),g=await l.previewPlanRelease(d,u.ir,{env:o.env}),p=AA(g.preview,o.plan);G({success:!0,businessId:d,irHash:g.irHash??u.irHash??null,preview:p,nextActions:RA(p)},`Plan release preview for business ${d}`),ce()!=="json"&&console.log(OA(p))})}function AA(e,t){if(!t)return e;let r=e.plans.filter(i=>i.planKey===t);if(r.length===0)throw new b(`No plan "${t}" in this manifest. Plans: ${e.plans.map(i=>i.planKey).join(", ")||"(none)"}`,0,{code:"PLAN_NOT_IN_MANIFEST",param:"plan"});return{...e,plans:r,unclassifiedPlanKeys:e.unclassifiedPlanKeys.filter(i=>i===t),affectedSubscribers:Un(r,i=>i.affectedSubscribers),immediateSubscribers:Un(r,i=>i.immediateSubscribers),bridgedSubscribers:Un(r,i=>i.bridgedSubscribers),renewalSubscribers:Un(r,i=>i.renewalSubscribers),unsupportedSubscribers:Un(r,i=>i.unsupportedSubscribers),noticeCount:Un(r,i=>i.noticeCount),blocksPublish:r.some(i=>i.blocksPublish)}}function Un(e,t){return e.reduce((r,i)=>r+t(i),0)}function RA(e){return e.blocksPublish?["A pinned cohort cannot be carried across this change \u2014 publish it under a NEW plan key and move subscribers with `farthershore plan migrate`"]:e.unsupportedSubscribers>0?["Resolve the blocked cohorts before pushing"]:e.noticeCount>0?["Commit and push \u2014 the new version is minted on release and each affected subscriber gets a pricing notice at their renewal"]:["Commit and push business/ changes"]}async function CA(e){let{opts:t,runBuild:r,readEnvelope:i}=e;if(t.ir)try{return await i(t.ir)}catch(a){throw new b(a instanceof Error?a.message:`Manifest IR envelope ${t.ir} could not be read`,0,{code:"MANIFEST_IR_READ_FAILED",param:"ir"})}let n=await kA(Ny(EA(),"fs-plan-diff-")),o=Ny(n,"business-build.json");try{let a=await r({entry:t.entry,out:o});if(ce()!=="json"&&(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),a.exitCode!==0)throw new b(`Manifest build failed with exit code ${a.exitCode||1}`,0,{code:"MANIFEST_BUILD_FAILED",details:{success:!1,phase:"local_build",entry:t.entry??"business/",command:a.command,args:a.args,exitCode:a.exitCode,stdout:a.stdout,stderr:a.stderr,nextActions:["Fix your business/ program and run farthershore plan diff again"]}});try{return await i(o)}catch(c){throw new b(c instanceof Error?c.message:"Manifest IR output could not be read",0,{code:"MANIFEST_IR_READ_FAILED"})}}finally{await IA(n,{recursive:!0,force:!0}).catch(()=>{})}}async function Ln(e,t,r){let n=(await Vr(e,t)).find(o=>o.name.toLowerCase()===r.toLowerCase()||o.id===r);if(!n)throw new Error(`Environment "${r}" not found on business ${t}.`);return n.id}var Rp=[{opKey:"persona.bootstrap",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"bootstrap",summary:"Issue a fresh fsk_test_ API key in a test environment",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name (must be test-strategy)",required:!0},{field:"plan",kind:"flag",token:"--plan <planKey>",describe:"Plan key to assign (e.g. starter)"},{field:"displayName",kind:"flag",token:"--display-name <name>",describe:"Persona display name"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Es(e,i,t.env),o=await e.issuePersonaBootstrapKey(i,n,{planKey:t.plan,displayName:t.displayName});r({businessId:i,environmentId:n,result:o},"Persona bootstrapped")}},mcp:{tool:"fs_persona_bootstrap",title:"Bootstrap a test persona",description:"Issue a one-time test bootstrap key for a business environment \u2014 use it to provision a test persona. Returns the key ONCE; store it now.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id to scope the persona to.")},handler:async(e,{businessId:t,environmentId:r})=>e.issuePersonaBootstrapKey(t,r)}},{opKey:"persona.read",operationClass:"operate",sideEffect:"read",cli:{group:"persona",command:"list",summary:"List personas for a test environment",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Es(e,i,t.env),o=await e.listPersonas(i,n);r({businessId:i,environmentId:n,result:o},"Personas")}},mcp:{tool:"fs_persona_list",title:"List personas",description:"List a business environment's test personas (id, label, status). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id whose personas to list.")},handler:async(e,{businessId:t,environmentId:r})=>e.listPersonas(t,r)}},{opKey:"persona.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"rotate",summary:"Rotate a persona's test API key and return the new key once",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"personaId",kind:"positional",token:"<personaId>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.personaId,o=await Es(e,i,t.env),a=await e.rotatePersona(i,o,n);r({businessId:i,environmentId:o,result:a},`Persona ${n} rotated`)}},mcp:{tool:"fs_persona_rotate",title:"Rotate a test persona",description:"Rotate a test persona's API key. Returns the replacement key once.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id."),personaId:s.string().describe("The persona id to rotate.")},handler:async(e,{businessId:t,environmentId:r,personaId:i})=>e.rotatePersona(t,r,i)}},{opKey:"persona.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"revoke",summary:"Revoke a persona's API key",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"personaId",kind:"positional",token:"<personaId>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.personaId,o=await Es(e,i,t.env),a=await e.revokePersona(i,o,n);r({businessId:i,environmentId:o,result:a},`Persona ${n} revoked`)}},mcp:{tool:"fs_persona_revoke",title:"Revoke a persona",description:"Revoke a test persona. Its credentials stop working.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id."),personaId:s.string().describe("The persona id to revoke.")},handler:async(e,{businessId:t,environmentId:r,personaId:i})=>e.revokePersona(t,r,i)}}];function zy(e,t){L(e,t,Rp)}async function Es(e,t,r){try{return await Ln(e,t,r)}catch(i){throw new b(i instanceof Error?i.message:`Environment "${r}" not found on business ${t}.`,void 0,{code:"ENV_NOT_FOUND"})}}var Cp=[{opKey:"usage.read",operationClass:"operate",sideEffect:"read",cli:{group:"usage",command:"summary",summary:"Show usage summary for the last 30 days",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.managementGetUsage(i);r({businessId:i,summary:n},"Usage summary")}},mcp:{tool:"fs_usage_read",title:"Read usage summary",description:"Read a business's usage summary \u2014 metered request counts and tier utilization. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose usage to read.")},handler:async(e,{businessId:t})=>e.managementGetUsage(t)}}];function Uy(e,t){L(e,t,Cp)}var PA=s.object({provider:s.string().min(1),subject:s.string().min(1),providerOrganizationId:s.string().optional(),email:s.string().optional()}).strict(),NA=s.object({provider:s.string().min(1),sessionId:s.string().optional(),authenticatedAt:s.string().optional(),assuranceLevel:s.string().optional()}).strict(),bt={id:s.string().min(1),businessId:s.string().optional(),organizationId:s.string().optional(),environmentId:s.string().optional(),externalIdentities:s.array(PA),authenticationContext:NA.optional()},DA=s.object({type:s.literal("user"),email:s.string().optional(),...bt}).strict(),zA=s.object({type:s.literal("maker_token"),tokenId:s.string().optional(),...bt}).strict(),UA=s.object({type:s.literal("subscriber_member"),subscriberId:s.string().optional(),membershipId:s.string().optional(),roles:s.array(s.string()).optional(),...bt}).strict(),LA=s.object({type:s.literal("api_key"),keyId:s.string().optional(),subscriberId:s.string().optional(),...bt}).strict(),jA=s.object({type:s.literal("runtime"),tokenId:s.string().optional(),...bt}).strict(),BA=s.object({type:s.literal("persona"),personaId:s.string().optional(),subscriberId:s.string().optional(),...bt}).strict(),MA=s.object({type:s.literal("system"),component:s.string().optional(),ruleId:s.string().optional(),...bt}).strict(),FA=s.object({type:s.literal("agent"),agentId:s.string().optional(),...bt}).strict(),Pp=s.discriminatedUnion("type",[DA,zA,UA,LA,jA,BA,MA,FA]);var KA=1;var HA=["core","billing","webhook","evolution","authz","gateway","usage","workflow"],Ly=s.enum(HA),jy=s.object({type:s.string().min(1).max(128),id:s.string().min(1).max(256)}).strict(),Y4=s.object({id:s.string().min(1),type:He,occurredAt:s.string().datetime(),businessId:s.string().min(1),environmentId:s.string().min(1).nullable().optional(),actor:Pp,subject:jy,payload:s.record(s.string(),s.unknown()).default({}),source:Ly,correlationId:s.string().min(1),correlationDepth:s.number().int().min(0).default(0),schemaVersion:s.number().int().min(1).default(KA)}).strict(),Q4=s.object({type:He,occurredAt:s.string().datetime().optional(),businessId:s.string().min(1),environmentId:s.string().min(1).nullable().optional(),actor:Pp,subject:jy,payload:s.record(s.string(),s.unknown()).optional(),source:Ly,correlationId:s.string().min(1).optional(),correlationDepth:s.number().int().min(0).optional()}).strict();var VA=50,GA=200,nK=s.object({businessId:s.string().min(1),environmentId:s.string().min(1).optional(),type:He.optional(),subjectType:s.string().min(1).optional(),subjectId:s.string().min(1).optional(),since:s.string().datetime().optional(),until:s.string().datetime().optional(),limit:s.coerce.number().int().min(1).max(GA).default(VA),cursor:s.string().min(1).optional()}).strict();var Ge=["usage","telemetry","denials","lifecycle","consumer_activity","audit"],Ss=s.enum(Ge);var sK=s.object({event_id:s.string().min(1),type:He,occurred_at:s.string().datetime({offset:!0}),business_id:s.string().min(1).optional(),environment_id:s.string().min(1).optional(),actor_type:s.string().min(1).optional(),actor_id:s.string().min(1).optional(),latency_ms:s.number().nonnegative().finite().optional(),payload:s.string().optional(),schema_version:s.number().int().min(1),upstream_ms:s.number().nonnegative().finite().optional()}).strict(),ZA={"subscription.created":"lifecycle","subscription.updated":"lifecycle","subscription.canceled":"lifecycle","payment.succeeded":"lifecycle","payment.failed":"lifecycle","rate_limit.exceeded":"denials","entitlement.changed":"lifecycle","usage.threshold_reached":"usage","usage.recorded":"usage","gateway.request_denied":"denials","change_set.created":"lifecycle","change_set.approved":"lifecycle","change_set.applied":"lifecycle","change_set.rolled_back":"lifecycle","change_set.cancelled":"lifecycle","billing.event_recorded":"lifecycle","authz.decision":"denials","repo.changed":"consumer_activity","automation.rule_fired":"audit","automation.action_succeeded":"audit","automation.action_failed":"audit","automation.action_denied":"denials","automation.notification":"consumer_activity","access_request.created":"consumer_activity","access_request.resolved":"consumer_activity","build.failed":"lifecycle","product.published":"lifecycle","workflow.failed":"lifecycle","pr.review_posted":"consumer_activity"};function By(e){return ZA[e]}var WA=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,qA=100,JA=50,YA=100,QA=50;var ws=s.string().regex(WA,"Expected a UUID"),xs=s.string().datetime({offset:!0}),Np=s.string().min(1).max(256).regex(/^[^\u0000-\u001f\u007f]+$/,"Control characters are not allowed"),$s=s.object({from:xs,to:xs}).strict().refine(({from:e,to:t})=>Date.parse(e)<Date.parse(t),"range.from must be before range.to"),Dp="production",Ts=s.object({type:He.optional(),actorId:Np.optional(),environmentId:s.union([s.literal(Dp),ws]).optional()}).strict();function zp(e,t){let r=e.filters?.type;r&&By(r)!==e.domain&&t.addIssue({code:"custom",path:["filters","type"],message:"Event type does not belong to the selected archive domain"})}var My=s.object({domain:Ss,metric:s.enum(["events","unique_actors"]),interval:s.enum(["hour","day"]),range:$s,filters:Ts.optional()}).strict().superRefine(zp),XA=s.object({t:xs,value:s.number().nonnegative()}).strict(),dK=s.array(XA),Fy=s.object({domain:Ss,by:s.enum(["actor_id","type","environment_id"]),k:s.number().int().min(1).max(QA),range:$s,filters:Ts.optional()}).strict().superRefine(zp),eR=s.object({key:s.string().min(1).max(256),count:s.number().int().nonnegative()}).strict(),mK=s.array(eR),Ky=s.object({domain:Ss,range:$s,limit:s.number().int().min(1).max(YA).default(JA),filters:Ts.optional()}).strict().superRefine(zp),tR=s.object({type:s.string().min(1).max(64),id:Np}).strict(),nR=s.object({id:Np,type:He,occurredAt:xs,businessId:ws,environmentId:ws.nullable(),actor:tR.nullable(),payload:s.string().nullable()}).strict(),pK=s.array(nR),rR=s.array(s.number().gt(0).lt(1)).min(1).max(10).refine(e=>new Set(e).size===e.length,"Percentiles must be unique"),Hy=s.object({domain:s.literal("usage"),metric:s.union([s.literal("latency_ms"),s.literal("upstream_ms")]),percentiles:rR,range:$s,filters:Ts.omit({type:!0}).optional()}).strict(),iR=s.object({percentile:s.number().gt(0).lt(1),value:s.number().nonnegative().nullable()}).strict(),fK=s.array(iR),oR={timeseries:My,topK:Fy,percentiles:Hy,eventFeed:Ky},sR=Object.keys(oR),gK=s.discriminatedUnion("verb",[s.object({verb:s.literal("timeseries"),query:My}).strict(),s.object({verb:s.literal("topK"),query:Fy}).strict(),s.object({verb:s.literal("percentiles"),query:Hy}).strict(),s.object({verb:s.literal("eventFeed"),query:Ky}).strict()]),hK=s.object({verb:s.enum(sR),query:s.unknown()}).strict(),bK=s.object({businessIds:s.array(ws).min(1).max(qA)}).strict().refine(({businessIds:e})=>new Set(e).size===e.length,"Analytics business scope must not contain duplicates");var Vy={"1h":3600*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,"30d":720*60*60*1e3},Gy=Object.keys(Vy);function _t(e){let t=Vy[e];if(t===void 0)throw new Error(`Unknown --range "${e}". Expected one of: ${Gy.join(", ")}`);let r=new Date;return{from:new Date(r.getTime()-t).toISOString(),to:r.toISOString()}}function vt(e){return{environmentId:typeof e=="string"&&e.length>0?e:Dp}}function Up(e){if(!Ge.includes(e))throw new Error(`Unknown --domain "${e}". Expected one of: ${Ge.join(", ")}`);return e}var Os={field:"range",kind:"flag",token:"--range <range>",describe:`Relative window: ${Gy.join(" | ")}`,defaultValue:"24h"},As={field:"env",kind:"flag",token:"--env <environmentId>",describe:"Environment id to scope to. Omit for production \u2014 never for 'all environments'."},Rs={field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},Cs={businessId:s.string().regex(/^[^/?#\s]+$/,"businessId must not contain '/', '?', '#', or whitespace").describe("The business whose archive to query."),range:s.enum(["1h","24h","7d","30d"]).default("24h").describe("Relative window."),environmentId:s.string().optional().describe("Environment id to scope to. Omit for production. Never returns all environments summed.")},Lp=[{opKey:"analytics.timeseries",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"timeseries",summary:"Request (or denial) volume over time",args:[Rs,Os,As,{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"interval",kind:"flag",token:"--interval <interval>",describe:"Bucket size: hour | day",defaultValue:"hour"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"timeseries",query:{domain:Up(t.domain),metric:"events",interval:t.interval,range:_t(t.range),filters:vt(t.env)}});r({businessId:i,buckets:n},"Timeseries")}},mcp:{tool:"fs_analytics_timeseries",title:"Analytics: volume over time",description:"Event volume bucketed over time for one business, from the event archive. Read-only. Scoped to production unless environmentId is given.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,domain:s.enum(Ge).default("usage"),interval:s.enum(["hour","day"]).default("hour")},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"timeseries",query:{domain:t.domain??"usage",metric:"events",interval:t.interval??"hour",range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.latency",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"latency",summary:"Request latency percentiles (p50 / p95 / p99)",args:[Rs,Os,As],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"percentiles",query:{domain:"usage",metric:"latency_ms",percentiles:[.5,.95,.99],range:_t(t.range),filters:vt(t.env)}});r({businessId:i,percentiles:n},"Latency percentiles")}},mcp:{tool:"fs_analytics_latency",title:"Analytics: latency percentiles",description:"Gateway request latency at p50/p95/p99 for one business. NOTE: this is the WHOLE request including the builder's own backend, so a high number is not necessarily platform overhead. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:Cs,handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"percentiles",query:{domain:"usage",metric:"latency_ms",percentiles:[.5,.95,.99],range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.top",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"top",summary:"Top callers / event types / environments by volume",args:[Rs,Os,As,{field:"by",kind:"flag",token:"--by <dimension>",describe:"Break down by: actor_id | type | environment_id",defaultValue:"actor_id"},{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"k",kind:"flag",token:"--k <count>",describe:"How many rows (1-50)",defaultValue:"10",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"topK",query:{domain:Up(t.domain),by:t.by,k:Number(t.k),range:_t(t.range),filters:vt(t.env)}});r({businessId:i,rows:n},"Top breakdown")}},mcp:{tool:"fs_analytics_top",title:"Analytics: top-K breakdown",description:"Ranked breakdown of archive events by caller, event type, or environment. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,by:s.enum(["actor_id","type","environment_id"]).default("actor_id"),domain:s.enum(Ge).default("usage"),k:s.number().int().min(1).max(50).default(10)},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"topK",query:{domain:t.domain??"usage",by:t.by??"actor_id",k:t.k??10,range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.log",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"log",summary:"Recent requests \u2014 the live metering signal, newest first",args:[Rs,Os,As,{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"limit",kind:"flag",token:"--limit <count>",describe:"How many rows (1-100)",defaultValue:"25",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"eventFeed",query:{domain:Up(t.domain),range:_t(t.range),limit:Number(t.limit),filters:vt(t.env)}});r({businessId:i,events:n},"Recent events")}},mcp:{tool:"fs_analytics_log",title:"Analytics: recent request log",description:"The most recent archived events for one business, newest first. Each row's `payload` carries the request detail (path, statusCode, latencyMs, orgId). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,domain:s.enum(Ge).default("usage"),limit:s.number().int().min(1).max(100).default(25)},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"eventFeed",query:{domain:t.domain??"usage",range:_t(t.range??"24h"),limit:t.limit??25,filters:vt(t.environmentId)}})}}];function Zy(e,t){L(e,t,Lp)}async function Wy(e,t,r){let i=await e.listBuilderOrganizationMembers(t,r),n=[...i.members],o=i;for(;o.pagination.hasMore;){let a=o.pagination.offset+o.pagination.limit;o=await e.listBuilderOrganizationMembers(t,r,{limit:100,offset:a}),n.push(...o.members)}return{...i,members:n,pagination:{total:i.pagination.total,limit:i.pagination.total>0?i.pagination.total:i.pagination.limit,offset:0,hasMore:!1}}}var qy={filterFields:{key:"string",name:"string",builtIn:"boolean"},sortFields:["key","name","createdAt","id"],searchable:!0},Jy={filterFields:{userId:"string",email:"string",roleKey:"string"},sortFields:["userId","email","roleKey","createdAt","updatedAt"],searchable:!0},$e={field:"organizationId",kind:"positional",token:"<organizationId>",describe:"Builder organization id."},Yy={field:"memberUserId",kind:"positional",token:"<memberUserId>"},Ps={field:"roleKey",kind:"positional",token:"<roleKey>",describe:"Organization-local role key."};function aR(e){let t;try{t=JSON.parse(e)}catch{throw new b("--permissions must be a JSON array of permission keys.",0,{code:"INVALID_PERMISSIONS"})}if(!Array.isArray(t)||t.some(r=>typeof r!="string"))throw new b("--permissions must be a JSON array of permission keys.",0,{code:"INVALID_PERMISSIONS"});return t}var Qy={field:"permissions",kind:"flag",token:"--permissions <json>",describe:'Exact permission snapshot as JSON, for example ["business:read"]. Use [] for no permissions.',parser:e=>aR(e)},Wr="organization role",jp=[{opKey:"organization.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"list",summary:"List builder organizations available to the caller",args:[],handler:async({client:e,emit:t})=>t(await e.listBuilderOrganizations(),"Organizations")},mcp:null},{opKey:"organization.create",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"create",summary:"Create a team or company organization",args:[{field:"name",kind:"positional",token:"<name>"},{field:"type",kind:"flag",token:"--type <type>",describe:"Organization type: team | company",defaultValue:"team"}],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.type==="company"?"company":"team";i(await e.createBuilderOrganization({name:t.name,type:n},r),"Organization created")}},mcp:null},{opKey:"organization.role.list",operationClass:"operate",sideEffect:"read",cli:{group:Wr,command:"list",summary:"List the roles available in an organization",args:[$e,...jt(qy)],handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,qy);r(await(i?e.listBuilderOrganizationRoles(t.organizationId,i):e.listBuilderOrganizationRoles(t.organizationId)),"Organization roles")}},mcp:null},{opKey:"organization.role.show",operationClass:"operate",sideEffect:"read",cli:{group:Wr,command:"show",summary:"Show one organization role and its exact permissions",args:[$e,Ps],handler:async({client:e,args:t,emit:r})=>r(await e.getBuilderOrganizationRole(t.organizationId,t.roleKey),"Organization role")},mcp:null},{opKey:"organization.role.create",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"create",summary:"Create a custom organization role",args:[$e,Ps,{field:"name",kind:"flag",token:"--name <name>",required:!0},{field:"description",kind:"flag",token:"--description <description>"},{...Qy,required:!0}],handler:async({client:e,args:t,emit:r})=>r(await e.createBuilderOrganizationRole(t.organizationId,{key:t.roleKey,name:t.name,...t.description?{description:t.description}:{},permissions:t.permissions}),"Organization role created")},mcp:null},{opKey:"organization.role.update",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"update",summary:"Update a built-in or custom organization role",args:[$e,Ps,{field:"name",kind:"flag",token:"--name <name>"},{field:"description",kind:"flag",token:"--description <description>"},{field:"clearDescription",kind:"flag",token:"--clear-description",describe:"Clear the role description."},Qy],handler:async({client:e,args:t,emit:r})=>{if(t.description!==void 0&&t.clearDescription)throw new b("Use either --description or --clear-description, not both.",0,{code:"INVALID_ROLE_UPDATE"});r(await e.updateBuilderOrganizationRole(t.organizationId,t.roleKey,{...t.name?{name:t.name}:{},...t.description?{description:t.description}:t.clearDescription?{description:null}:{},...t.permissions!==void 0?{permissions:t.permissions}:{}}),"Organization role updated")}},mcp:null},{opKey:"organization.role.delete",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"delete",summary:"Delete an unused custom organization role",destructive:!0,args:[$e,Ps],handler:async({client:e,args:t,emit:r})=>{await e.deleteBuilderOrganizationRole(t.organizationId,t.roleKey),r({deleted:t.roleKey},"Organization role deleted")}},mcp:null},{opKey:"organization.member.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"members",summary:"List organization members",args:[$e,...jt(Jy)],handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,Jy);r(await Wy(e,t.organizationId,i),"Organization members")}},mcp:null},{opKey:"organization.invitation.create",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invite",summary:"Invite a member to an organization",args:[$e,{field:"email",kind:"positional",token:"<email>"},{field:"role",kind:"flag",token:"--role <role>",describe:"Organization role key (see `organization role list`).",defaultValue:"member"}],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.role;i(await e.inviteBuilderOrganizationMember(t.organizationId,{email:t.email,roleKey:n},r),"Invitation created")}},mcp:null},{opKey:"organization.invitation.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"invitation-list",summary:"List the caller's pending organization invitations",args:[],handler:async({client:e,emit:t})=>t(await e.listBuilderInvitations(),"Pending invitations")},mcp:null},{opKey:"organization.invitation.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invitation-revoke",summary:"Revoke a pending organization invitation",destructive:!0,args:[$e,{field:"invitationId",kind:"positional",token:"<invitationId>"}],handler:async({client:e,args:t,emit:r})=>{await e.revokeBuilderInvitation(t.organizationId,t.invitationId),r({revoked:t.invitationId},"Invitation revoked")}},mcp:null},{opKey:"organization.invitation.accept",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invitation-accept",summary:"Accept an organization invitation",args:[{field:"invitationId",kind:"positional",token:"<invitationId>"},{field:"invitationToken",kind:"flag",token:"--invitation-token <token>",describe:"One-time token from the invitation email, when required."}],handler:async({client:e,args:t,emit:r})=>r(await e.acceptBuilderInvitation(t.invitationId,t.invitationToken),"Invitation accepted")},mcp:null},{opKey:"organization.member.update",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"member-role",summary:"Change an organization member's role",args:[$e,Yy,{field:"role",kind:"flag",token:"--role <role>",describe:"New organization role key (see `organization role list`).",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.role;r(await e.updateBuilderOrganizationMember(t.organizationId,t.memberUserId,i),"Member role updated")}},mcp:null},{opKey:"organization.member.remove",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"member-remove",summary:"Remove a member from an organization",destructive:!0,args:[$e,Yy],handler:async({client:e,args:t,emit:r})=>{await e.removeBuilderOrganizationMember(t.organizationId,t.memberUserId),r({removed:t.memberUserId},"Member removed")}},mcp:null},{opKey:"organization.delete",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"delete",summary:"Delete an organization and its managed state",destructive:!0,args:[$e],handler:async({client:e,args:t,emit:r})=>{await e.deleteBuilderOrganization(t.organizationId),r({deleted:t.organizationId},"Organization deleted")}},mcp:null},{opKey:"organization.overview.read",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"overview",summary:"Read the organization overview shown on the dashboard",args:[$e],handler:async({client:e,args:t,emit:r})=>r(await e.getBuilderOrganizationOverview(t.organizationId),"Organization overview")},mcp:null},{opKey:"organization.bulletin.read",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"bulletin",summary:"List the consolidated bulletin across the organization",args:[$e,{field:"kind",kind:"flag",token:"--kind <kind>"},{field:"status",kind:"flag",token:"--status <status>"},{field:"cursor",kind:"flag",token:"--cursor <cursor>"},{field:"limit",kind:"flag",token:"--limit <count>",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderOrganizationBulletin(t.organizationId,{kind:t.kind,status:t.status,cursor:t.cursor,limit:t.limit}),"Organization bulletin")},mcp:null}];function Xy(e,t){L(e,t,jp)}import{writeFile as ek}from"node:fs/promises";var jn=[{field:"organizationId",kind:"positional",token:"<organizationId>"},{field:"action",kind:"flag",token:"--action <action>"},{field:"actorUserId",kind:"flag",token:"--actor <userId>"},{field:"decision",kind:"flag",token:"--decision <decision>"},{field:"from",kind:"flag",token:"--from <isoDate>"},{field:"to",kind:"flag",token:"--to <isoDate>"},{field:"limit",kind:"flag",token:"--limit <count>",parser:e=>Number.parseInt(e,10)}];function Ns(e){return{businessId:e.businessId,action:e.action,actorUserId:e.actorUserId,decision:e.decision,from:e.from,to:e.to,limit:e.limit}}var Bp=[{opKey:"audit_log.read",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"list",summary:"List organization or business-scoped audit-log rows",args:[...jn,{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderAuditLogs(t.organizationId,{...Ns(t),cursor:t.cursor}),"Audit log")},mcp:null},{opKey:"audit_log.business.read",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"business-list",summary:"List one business's audit-log rows",args:[jn[0],{field:"businessId",kind:"positional",token:"<businessId>"},...jn.slice(1),{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderAuditLogs(t.organizationId,{...Ns(t),businessId:t.businessId,cursor:t.cursor}),"Business audit log")},mcp:null},{opKey:"audit_log.export",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"export",summary:"Export organization or business-scoped audit logs as CSV",args:[...jn,{field:"output",kind:"flag",token:"--output <file>",describe:"Write CSV to this file; omit to return it in command output."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.exportBuilderAuditLogs(t.organizationId,Ns(t));if(typeof t.output=="string"){await ek(t.output,i,"utf8"),r({output:t.output},`Audit log exported to ${t.output}`);return}r({csv:i},"Audit log CSV")}},mcp:null},{opKey:"audit_log.business.export",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"business-export",summary:"Export one business's audit logs as CSV",args:[jn[0],{field:"businessId",kind:"positional",token:"<businessId>"},...jn.slice(1),{field:"output",kind:"flag",token:"--output <file>",describe:"Write CSV to this file; omit to return it in command output."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.exportBuilderAuditLogs(t.organizationId,{...Ns(t),businessId:t.businessId});if(typeof t.output=="string"){await ek(t.output,i,"utf8"),r({output:t.output},`Audit log exported to ${t.output}`);return}r({csv:i},"Business audit log CSV")}},mcp:null}];function tk(e,t){L(e,t,Bp)}var nk={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",resolveBusiness:!0};function cR(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error;return t}catch{throw new b("--patch must be a JSON object",400,{code:"INVALID_NOTIFICATION_PREFERENCES_PATCH"})}}var Mp=[{opKey:"notification.preferences.read",operationClass:"operate",sideEffect:"read",cli:{group:"notifications",command:"preferences",summary:"Get notification (email) opt-out preferences",args:[nk],handler:async({client:e,args:t,emit:r})=>r(await e.getBusinessNotificationPreferences(t.businessId),"Notification preferences")},mcp:null},{opKey:"notification.preferences.update",operationClass:"operate",sideEffect:"write",cli:{group:"notifications",command:"preferences-update",summary:"Patch notification (email) opt-out preferences",args:[nk,{field:"patch",kind:"flag",token:"--patch <json>",describe:'JSON patch, e.g. {"master":true} or {"categories":{"deployments":true}} (true = opted out of email)',required:!0,parser:cR}],handler:async({client:e,args:t,emit:r})=>r(await e.updateBusinessNotificationPreferences(t.businessId,t.patch),"Notification preferences updated")},mcp:null}];function rk(e,t){L(e,t,Mp)}var Fp=["gateway_verification","metering","health","tunnel"],uR="<businessId>",Bn="The business id.",yt={field:"businessId",kind:"positional",token:uR};function ik(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:Array.isArray(t.backends)?t.backends:Array.isArray(t.tokens)?t.tokens:Array.isArray(e)?e:[]}function lR(e){let t=e.status;if(typeof t=="string"&&t.length>0)return t;let r=typeof e.readinessState=="string"?e.readinessState:null,i=typeof e.provisionStatus=="string"?e.provisionStatus:null;return r??i??"unknown"}function dR(e){return{id:e.id,environmentId:e.environmentId??null,name:e.name,slug:e.slug,transport:e.transportMode,default:e.isDefault??!1,status:lR(e),originUrl:e.originUrl??null,lastSeenAt:e.lastSeenAt??null}}async function Kp(e,t,r){if(!r)return null;try{return await Ln(e,t,r)}catch(i){throw new b(i instanceof Error?i.message:`Environment "${r}" not found on business ${t}.`,void 0,{code:"ENV_NOT_FOUND"})}}var Hp=e=>typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(t=>t.length>0):void 0,Vp=[{opKey:"backend.read",operationClass:"operate",sideEffect:"read",cli:{group:"backend",command:"list",summary:"List backends for a business (id, name, transport, status)",args:[yt],handler:async({client:e,args:t,emit:r})=>{let n=ik(await e.builderListBackends(t.businessId)).map(dR);r({count:n.length,backends:n},`${n.length} backend(s)`)}},mcp:{tool:"fs_backend_list",title:"List backends",description:"List a business's backends (origins) \u2014 id, name, slug, transport (direct|tunnel), default flag, and derived status. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose backends to list.")},handler:async(e,{businessId:t})=>e.builderListBackends(t)}},{opKey:"backend.create",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"create",summary:"Create a backend (default transport: direct)",idempotent:!0,args:[yt,{field:"name",kind:"flag",token:"--name <name>",describe:"Human-friendly backend name",required:!0},{field:"slug",kind:"flag",token:"--slug <slug>",describe:"Stable slug (defaults to a slugified name)"},{field:"env",kind:"flag",token:"--env <environment>",describe:"Scope backend to an environment name or id"},{field:"transport",kind:"flag",token:"--transport <mode>",describe:"Transport mode: direct | tunnel",defaultValue:"direct"},{field:"runner",kind:"flag",token:"--runner <runner>",describe:"embedded | sidecar"},{field:"runtime",kind:"flag",token:"--runtime <runtime>",describe:"Container/runtime descriptor"},{field:"originUrl",kind:"flag",token:"--origin-url <url>",describe:"Builder origin URL (direct)"},{field:"default",kind:"flag",token:"--default",describe:"Mark this backend the business default"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await Kp(e,o,t.env),c=t.transport==="tunnel"?"tunnel":"direct",u=await e.builderCreateBackend(o,{name:t.name,slug:t.slug,environmentId:a,transportMode:c,runner:t.runner==="embedded"||t.runner==="sidecar"?t.runner:null,runtime:t.runtime??null,originUrl:t.originUrl??null,isDefault:t.default},r);n(u)||i({result:u},"Backend created")}},mcp:{tool:"fs_backend_create",title:"Create a backend",description:"Create a backend (origin) for a business. Pick a transport mode: direct (public HTTPS URL, secured by Ed25519 request signing) or tunnel (private outbound-only cloudflared, secure bring-your-own-backend). Mark it default to route traffic to it.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to create the backend in."),name:s.string().describe("Backend name (e.g. 'prod-origin')."),slug:s.string().optional().describe("URL-safe slug; derived from name if omitted."),transportMode:s.enum(["direct","tunnel"]).optional().describe("How the gateway reaches the origin; defaults to direct."),originUrl:s.string().optional().describe("The origin URL (for direct mode)."),isDefault:s.boolean().optional().describe("Route traffic to this backend by default."),...ue},handler:async(e,t)=>e.builderCreateBackend(t.businessId,{name:t.name,slug:t.slug,transportMode:t.transportMode,originUrl:t.originUrl,isDefault:t.isDefault},{idempotencyKey:t.idempotencyKey})}},{opKey:"backend.bind",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"bind",summary:"Bind a logical backend to a direct upstream in one environment",idempotent:!0,args:[yt,{field:"backend",kind:"positional",token:"<backend>"},{field:"env",kind:"flag",token:"--env <environment>",describe:"Environment name or id (omit for production)"},{field:"originUrl",kind:"flag",token:"--origin-url <url>",describe:"Concrete direct upstream URL for this environment",required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.backend,c=await Kp(e,o,t.env),u=await e.builderBindBackend(o,a,{environmentId:c,originUrl:t.originUrl},r);n(u)||i({result:u},`Backend ${a} bound in ${c??"production"}`)}},mcp:{tool:"fs_backend_bind",title:"Bind a backend upstream",description:"Bind a logical backend id to a concrete direct upstream URL in one environment. Omit environmentId for production.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backend:s.string().describe("Logical backend slug."),environmentId:s.string().optional().describe("Preview environment id; omit for production."),originUrl:s.string().url().describe("Concrete direct upstream URL."),...ue},handler:async(e,t)=>e.builderBindBackend(t.businessId,t.backend,{environmentId:t.environmentId??null,originUrl:t.originUrl},{idempotencyKey:t.idempotencyKey})}},{opKey:"backend.delete",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"delete",summary:"Delete a backend (revokes its runtime tokens). Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm backend deletion.",args:[yt,{field:"backendId",kind:"positional",token:"<backendId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.backendId;await e.builderDeleteBackend(i,n),r({businessId:i,deleted:n},`Backend ${n} deleted`)}},mcp:{tool:"fs_backend_delete",title:"Delete a backend",description:"Delete a backend (origin). Traffic routed to it stops; re-create to restore.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backendId:s.string().describe("The backend id to delete.")},handler:async(e,{businessId:t,backendId:r})=>e.builderDeleteBackend(t,r)}},{opKey:"runtime_token.read",operationClass:"operate",sideEffect:"read",cli:{group:"backend tokens",command:"list",summary:"List runtime tokens for a business",args:[yt],handler:async({client:e,args:t,emit:r})=>{let i=ik(await e.builderListRuntimeTokens(t.businessId));r({count:i.length,tokens:i},`${i.length} runtime token(s)`)}},mcp:{tool:"fs_runtime_token_list",title:"List runtime tokens",description:"List a business's runtime tokens (fsrt_) \u2014 id, last-four, operations, status. Read-only; secrets are never shown.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn)},handler:async(e,{businessId:t})=>e.builderListRuntimeTokens(t)}},{opKey:"runtime_token.mint",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"create",summary:"Create a runtime token (returns FS_RUNTIME_TOKEN once)",idempotent:!0,args:[yt,{field:"env",kind:"flag",token:"--env <environment>",describe:"Scope token to an environment name or id"},{field:"backend",kind:"flag",token:"--backend <backendId>",describe:"Bind token to a specific backend"},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"live | test (defaults from env scope)"},{field:"operations",kind:"flag",token:"--operations <list>",describe:`Comma-separated operations: ${Fp.join(" | ")}. Default: core's DEFAULT_OPERATIONS. Use tunnel for tunnel backends.`},{field:"meters",kind:"flag",token:"--meters <list>",describe:"Comma-separated allowed meters (default: all business meters)"},{field:"routes",kind:"flag",token:"--routes <list>",describe:"Comma-separated allowed routes"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await Kp(e,o,t.env),c=t.kind==="test"||t.kind==="live"?t.kind:void 0,u=Hp(t.operations);if(u){for(let d of u)if(!Fp.includes(d))throw new b(`Unknown operation "${d}". Available: ${Fp.join(", ")}.`,void 0,{code:"UNKNOWN_RUNTIME_TOKEN_OPERATION"})}let l=await e.builderCreateRuntimeToken(o,{environmentId:a,backendId:t.backend??null,kind:c,operations:u,allowedMeters:Hp(t.meters),allowedRoutes:Hp(t.routes)},r);n(l)||i({envVar:"FS_RUNTIME_TOKEN",result:l},"Runtime token created")}},mcp:{tool:"fs_runtime_token_mint",title:"Mint a runtime token",description:"Mint a new runtime token (fsrt_) for a backend. Returns the plaintext token ONCE \u2014 store it now (e.g. as FS_RUNTIME_TOKEN). Operations default to the backend's needs (gateway_verification, metering, health).",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backendId:s.string().optional().describe("Bind the token to this backend."),environmentId:s.string().optional().describe("Scope to a preview environment (omit for production)."),kind:s.enum(["live","test"]).optional().describe("Token kind; defaults from the env scope."),operations:s.array(s.string()).optional().describe("Operations (gateway_verification, metering, health, tunnel)."),...ue},handler:async(e,t)=>e.builderCreateRuntimeToken(t.businessId,{backendId:t.backendId??null,environmentId:t.environmentId??null,kind:t.kind,operations:t.operations},{idempotencyKey:t.idempotencyKey})}},{opKey:"runtime_token.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"rotate",summary:"Rotate a runtime token (returns a fresh FS_RUNTIME_TOKEN once)",args:[yt,{field:"tokenId",kind:"positional",token:"<tokenId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.tokenId,o=await e.builderRotateRuntimeToken(i,n);r({envVar:"FS_RUNTIME_TOKEN",result:o},`Runtime token ${n} rotated`)}},mcp:{tool:"fs_runtime_token_rotate",title:"Rotate a runtime token",description:"Rotate a runtime token: mint a fresh secret carrying the same scope and revoke the old one. Returns the new plaintext token ONCE.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),tokenId:s.string().describe("The runtime token id to rotate."),...ue},handler:async(e,t)=>e.builderRotateRuntimeToken(t.businessId,t.tokenId,{idempotencyKey:t.idempotencyKey})}},{opKey:"runtime_token.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"revoke",summary:"Revoke a runtime token. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm runtime token revocation.",args:[yt,{field:"tokenId",kind:"positional",token:"<tokenId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.tokenId;await e.builderRevokeRuntimeToken(i,n),r({businessId:i,revoked:n},`Runtime token ${n} revoked`)}},mcp:{tool:"fs_runtime_token_revoke",title:"Revoke a runtime token",description:"Revoke a runtime token. The backend using it stops verifying.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),tokenId:s.string().describe("The runtime token id to revoke.")},handler:async(e,{businessId:t,tokenId:r})=>e.builderRevokeRuntimeToken(t,r)}}];function ok(e,t){L(e,t,Vp)}var sk=new Set(["SUCCEEDED","SUCCESS"]),ak=new Set(["FAILED","ERROR","CANCELLED","TIMED_OUT"]),ck="SUPERSEDED";function mR(e){let r=(e?.data??e)?.builds;return Array.isArray(r)?r:[]}var Ze=e=>typeof e=="string"?e:null;async function uk(e,t){let r=t.intervalMs??5e3,i=t.sleep??(d=>new Promise(g=>setTimeout(g,d))),n=t.now??(()=>Date.now()),o=n()+t.timeoutMs,a={status:"UNKNOWN",buildId:t.buildId??null,ref:null,error:null,timedOut:!1},c=t.buildId??null,u=null,l=t.buildId!=null;for(;;){let d=await e.builderFrontendStatus(t.businessId,t.environmentId),g=mR(d),p=(c?g.find(_=>Ze(_.id)===c):void 0)??g[0];if(p){let _=Ze(p.status)??"UNKNOWN",S=Ze(p.id);a={status:_,buildId:S,ref:Ze(p.ref),error:Ze(p.error),timedOut:!1};let f=sk.has(_)||ak.has(_)||_===ck;if(l||(l=!0,f&&(u=S)),u!==null&&S===u){if(n()>=o)return{...a,timedOut:!0};await i(Math.min(r,Math.max(0,o-n())));continue}if(u=null,sk.has(_)||ak.has(_))return a;if(_===ck){let m=g.find(k=>Ze(k.ref)===Ze(p.ref)&&Ze(k.id)!==Ze(p.id));c=m?Ze(m.id):null}}if(n()>=o)return{...a,timedOut:!0};await i(Math.min(r,Math.max(0,o-n())))}}var Gp="The business id or slug.",lk="Scope to a preview environment (omit for production).",dk={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Gp,resolveBusiness:!0},mk={field:"env",kind:"flag",token:"--env <environmentId>",describe:"Scope to a preview environment id (omit for production)."};async function pk(e,t){return F(e,t)}var Zp=[{opKey:"frontend.status",operationClass:"operate",sideEffect:"read",cli:{group:"frontend",command:"status",summary:"Show the current frontend release, recent releases, and recent builds (incl. failure reasons)",args:[dk,mk,{field:"wait",kind:"flag",token:"--wait",describe:"Block until the in-flight build finishes, then report it; exit non-zero if it failed. Use after a push or release instead of polling this command in a loop."},{field:"timeout",kind:"flag",token:"--timeout <seconds>",describe:"How long --wait waits before giving up (default 600)."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.env;if(!t.wait){r(await e.builderFrontendStatus(i,n),"Frontend status");return}let o=Number(t.timeout??600),a=await uk(e,{businessId:i,environmentId:n,buildId:null,timeoutMs:(Number.isFinite(o)&&o>0?o:600)*1e3});if(a.timedOut)throw new b(`Frontend build did not finish within the timeout (last status: ${a.status})`,0,{code:"BUILD_WAIT_TIMEOUT",details:{build:a}});if(a.status!=="SUCCEEDED"&&a.status!=="SUCCESS")throw new b(`Frontend build ${a.status}${a.error?`: ${a.error}`:""}`,0,{code:"BUILD_FAILED",details:{build:a}});let c=await e.builderFrontendStatus(i,n);r({status:c,build:a},"Frontend build succeeded")}},mcp:{tool:"fs_frontend_status",title:"Get frontend status",description:"Read a business's current frontend serve state (uiMode, active release hash + producing build, pin flag), the recent SUCCEEDED releases (rollback targets), and the recent builds \u2014 a FAILED build's `error` explains why a deploy didn't go live. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gp),environmentId:s.string().optional().describe(lk)},handler:async(e,t)=>{let r=await pk(e,t.businessId);return e.builderFrontendStatus(r,t.environmentId)}}},{opKey:"frontend.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"frontend",command:"rollback",summary:"Roll the business frontend back to a prior release (re-activate its releaseId)",idempotent:!0,args:[dk,{field:"releaseId",kind:"flag",token:"--release-id <releaseId>",describe:"The prior release id (manifest hash) to re-activate \u2014 see `frontend status`.",required:!0},mk],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=await e.builderFrontendRollback(t.businessId,{releaseId:t.releaseId,environmentId:t.env},r);n(o)||i({result:o},"Frontend rolled back")}},mcp:{tool:"fs_frontend_rollback",title:"Roll back a business frontend",description:"Roll a business's frontend back to a prior release by its releaseId (manifest hash, from fs_frontend_status). Flips the live pointer back and pins it. The releaseId must belong to this target's build history.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gp),releaseId:s.string().describe("The prior release id (manifest hash) to re-activate."),environmentId:s.string().optional().describe(lk),...ue},handler:async(e,t)=>{let r=await pk(e,t.businessId);return e.builderFrontendRollback(r,{releaseId:t.releaseId,environmentId:t.environmentId},{idempotencyKey:t.idempotencyKey})}}}];function fk(e,t){L(e,t,Zp)}function qr(e,t){if(ce()==="json"){console.log(Xv({schema_version:1,ok:!0,data:e}));return}vs(t)}function gk(e,t){e.command("link").argument("[business]","Business id, name, or hostname slug. Omit to show the current link.").option("--env <environment>","Also target an environment, so --env can be omitted too. Stored by NAME (a recreated preview env re-resolves; a stale id would not).").description("Target this directory at a business so later commands can omit it (like `railway link`). Omit the argument to show what is currently targeted.").action(async(r,i)=>{let n=process.cwd();if(!r){let u=gy();if(!u){qr({linked:null},"No business linked here. Run `farthershore link <business>`.");return}let l=rt(n)?.environment??null;qr({linked:u.ref,environment:l,source:u.source,directory:n},`Targeting ${u.ref}${l?` (env ${l})`:" (production)"} \u2014 from ${u.source}`);return}let o=t(),a=await F(o,r),c=await o.selectedOrganizationId();Vf(n,{businessId:a,label:r,...c?{organizationId:c}:{},...i.env?{environment:i.env}:{}}),qr({linked:a,label:r,organizationId:c??null,environment:i.env??null,directory:n},`Linked ${n} to ${r} (${a})`+(i.env?` in environment ${i.env}`:""))}),e.command("unlink").description("Stop targeting a business from this directory.").action(()=>{let r=process.cwd();if(!Gf(r)){let n=rt(r);if(n)throw new b(`No link on this directory. It inherits ${n.businessId} from a parent directory \u2014 run \`farthershore unlink\` there to remove it.`,0,{code:"LINK_INHERITED"});qr({unlinked:!1},"Nothing linked here.");return}qr({unlinked:!0,directory:r},`Unlinked ${r}`)})}import{existsSync as Wp,lstatSync as wR,mkdirSync as xR,mkdtempSync as $R,readFileSync as TR,rmSync as Ek,writeFileSync as OR}from"node:fs";import*as Sk from"node:fs";import{randomUUID as AR}from"node:crypto";import{gunzipSync as RR}from"node:zlib";import{join as Qr,relative as CR,resolve as wk}from"node:path";import{mkdirSync as hk,writeFileSync as pR}from"node:fs";import{dirname as fR,posix as bk,resolve as _k,sep as gR}from"node:path";var Yr={maxEntries:2e3,maxFileBytes:20*1024*1024,maxPathBytes:512,maxPathComponentBytes:255},Jr=512,hR=new Set(["x","g"]),bR=new Set(["0","","5"]),_R=new Set(["1","2"]);function zs(e,t,r=()=>!1){let i=vR(e).filter(a=>!r(a.path)),n=_k(t),o=[];for(let a of i){let c=_k(n,a.path);if(!SR(n,c))throw new Error(`Tar entry escapes destination: ${a.path}`);if("directory"in a){hk(c,{recursive:!0});continue}hk(fR(c),{recursive:!0}),pR(c,a.content,a.mode?{mode:a.mode}:void 0),o.push(a.path)}return o}function vR(e){let t=[],r=0,i=null;for(;r+Jr<=e.length;){let n=e.subarray(r,r+Jr);if(ER(n))break;let o=Ds(n,0,100),a=Ds(n,345,155),c=a?`${a}/${o}`:o,u=vk(n,124,12),l=vk(n,100,8),d=Ds(n,156,1)||"0",g=r+Jr,p=g+u;if(p>e.length)throw new Error(`Tar entry "${c}" is truncated.`);if(r=g+Math.ceil(u/Jr)*Jr,!yR(c,d,u))continue;let _=kR(c,i);if(!_.path||_.path==="/"||/^\/*$/.test(_.path)){i=_.rootPrefix;continue}i=_.rootPrefix;let S=IR(_.path);if(d==="5"?t.push({path:S,directory:!0}):t.push({path:S,content:Buffer.from(e.subarray(g,p)),mode:Number.isFinite(l)&&l>0?l:void 0}),t.length>Yr.maxEntries)throw new Error(`Tar archive exceeds ${Yr.maxEntries} entries.`)}return t}function yR(e,t,r){if(hR.has(t))return!1;if(_R.has(t))throw new Error(`Refusing link tar entry: ${e}`);if(!bR.has(t))return!1;if(r>Yr.maxFileBytes)throw new Error(`Tar entry exceeds 20 MB file limit: ${e}`);return!0}function kR(e,t){let r=e.replace(/\\/g,"/").replace(/^\.\//,""),[i,...n]=r.split("/"),o=t??i??null;return!o||i!==o?{rootPrefix:o,path:r}:{rootPrefix:o,path:n.join("/")}}function IR(e){let t=bk.normalize(e.replace(/\\/g,"/")).replace(/\/+$/,"");if(t==="."||t.includes("\0")||t.startsWith("../")||t.includes("/../")||bk.isAbsolute(t)||Buffer.byteLength(t,"utf8")>Yr.maxPathBytes)throw new Error(`Unsafe tar entry path: ${e}`);if(t.split("/").some(r=>r===""||r==="."||r===".."||Buffer.byteLength(r,"utf8")>Yr.maxPathComponentBytes))throw new Error(`Unsafe tar entry path: ${e}`);return t}function Ds(e,t,r){let i=e.subarray(t,t+r),n=i.indexOf(0);return i.subarray(0,n===-1?i.length:n).toString("utf8").trim()}function vk(e,t,r){let i=Ds(e,t,r).replace(/\0/g,"").trim();return i?Number.parseInt(i,8):0}function ER(e){return e.every(t=>t===0)}function SR(e,t){return t===e||t.startsWith(`${e}${gR}`)}var PR="https://github.com",NR=3e4,yk=20*1024*1024,DR=100*1024*1024,Us={renameSync:Sk.renameSync},Ls={node:{repo:"farther-shore/api-template-node",label:"Node (TypeScript + Express)"}},kk=["Mint a runtime token: farthershore backend tokens create <business> --kind live","Deploy the api/ Docker image anywhere that can serve HTTPS.","Register the origin: farthershore backend create <business> --name api --transport direct --origin-url ... --default"];function xk(e){e.command("create").description("Create local FartherShore project components").command("api").description("Scaffold a starter backend from a public template tarball").option("--node",`${Ls.node.label} template (default)`).option("--path <dir>","Managed builder repo root (default: current directory)").option("--force","Overwrite an existing api/ directory if present").option("--ref <branch-or-tag>","Template tag or branch to download instead of main (tags are tried first)").addHelpText("after",`
|
|
141
|
+
`).action(async(n,o)=>{let a=r.runLocalManifestBuild??Gr,c=r.readManifestEnvelope??Zr,u=await DA({opts:o,runBuild:a,readEnvelope:c}),l=t(),d=await F(l,n),g=await l.previewPlanRelease(d,u.ir,{env:o.env}),p=PA(g.preview,o.plan);G({success:!0,businessId:d,irHash:g.irHash??u.irHash??null,preview:p,nextActions:NA(p)},`Plan release preview for business ${d}`),ce()!=="json"&&console.log(CA(p))})}function PA(e,t){if(!t)return e;let r=e.plans.filter(i=>i.planKey===t);if(r.length===0)throw new b(`No plan "${t}" in this manifest. Plans: ${e.plans.map(i=>i.planKey).join(", ")||"(none)"}`,0,{code:"PLAN_NOT_IN_MANIFEST",param:"plan"});return{...e,plans:r,unclassifiedPlanKeys:e.unclassifiedPlanKeys.filter(i=>i===t),affectedSubscribers:Un(r,i=>i.affectedSubscribers),immediateSubscribers:Un(r,i=>i.immediateSubscribers),bridgedSubscribers:Un(r,i=>i.bridgedSubscribers),renewalSubscribers:Un(r,i=>i.renewalSubscribers),unsupportedSubscribers:Un(r,i=>i.unsupportedSubscribers),noticeCount:Un(r,i=>i.noticeCount),blocksPublish:r.some(i=>i.blocksPublish)}}function Un(e,t){return e.reduce((r,i)=>r+t(i),0)}function NA(e){return e.blocksPublish?["A pinned cohort cannot be carried across this change \u2014 publish it under a NEW plan key and move subscribers with `farthershore plan migrate`"]:e.unsupportedSubscribers>0?["Resolve the blocked cohorts before pushing"]:e.noticeCount>0?["Commit and push \u2014 the new version is minted on release and each affected subscriber gets a pricing notice at their renewal"]:["Commit and push business/ changes"]}async function DA(e){let{opts:t,runBuild:r,readEnvelope:i}=e;if(t.ir)try{return await i(t.ir)}catch(a){throw new b(a instanceof Error?a.message:`Manifest IR envelope ${t.ir} could not be read`,0,{code:"MANIFEST_IR_READ_FAILED",param:"ir"})}let n=await SA(Ny(xA(),"fs-plan-diff-")),o=Ny(n,"business-build.json");try{let a=await r({entry:t.entry,out:o});if(ce()!=="json"&&(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),a.exitCode!==0)throw new b(`Manifest build failed with exit code ${a.exitCode||1}`,0,{code:"MANIFEST_BUILD_FAILED",details:{success:!1,phase:"local_build",entry:t.entry??"business/",command:a.command,args:a.args,exitCode:a.exitCode,stdout:a.stdout,stderr:a.stderr,nextActions:["Fix your business/ program and run farthershore plan diff again"]}});try{return await i(o)}catch(c){throw new b(c instanceof Error?c.message:"Manifest IR output could not be read",0,{code:"MANIFEST_IR_READ_FAILED"})}}finally{await wA(n,{recursive:!0,force:!0}).catch(()=>{})}}async function Ln(e,t,r){let n=(await Vr(e,t)).find(o=>o.name.toLowerCase()===r.toLowerCase()||o.id===r);if(!n)throw new Error(`Environment "${r}" not found on business ${t}.`);return n.id}var Rp=[{opKey:"persona.bootstrap",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"bootstrap",summary:"Issue a fresh fsk_test_ API key in a test environment",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name (must be test-strategy)",required:!0},{field:"plan",kind:"flag",token:"--plan <planKey>",describe:"Plan key to assign (e.g. starter)"},{field:"displayName",kind:"flag",token:"--display-name <name>",describe:"Persona display name"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Es(e,i,t.env),o=await e.issuePersonaBootstrapKey(i,n,{planKey:t.plan,displayName:t.displayName});r({businessId:i,environmentId:n,result:o},"Persona bootstrapped")}},mcp:{tool:"fs_persona_bootstrap",title:"Bootstrap a test persona",description:"Issue a one-time test bootstrap key for a business environment \u2014 use it to provision a test persona. Returns the key ONCE; store it now.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id to scope the persona to.")},handler:async(e,{businessId:t,environmentId:r})=>e.issuePersonaBootstrapKey(t,r)}},{opKey:"persona.read",operationClass:"operate",sideEffect:"read",cli:{group:"persona",command:"list",summary:"List personas for a test environment",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Es(e,i,t.env),o=await e.listPersonas(i,n);r({businessId:i,environmentId:n,result:o},"Personas")}},mcp:{tool:"fs_persona_list",title:"List personas",description:"List a business environment's test personas (id, label, status). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id whose personas to list.")},handler:async(e,{businessId:t,environmentId:r})=>e.listPersonas(t,r)}},{opKey:"persona.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"rotate",summary:"Rotate a persona's test API key and return the new key once",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"personaId",kind:"positional",token:"<personaId>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.personaId,o=await Es(e,i,t.env),a=await e.rotatePersona(i,o,n);r({businessId:i,environmentId:o,result:a},`Persona ${n} rotated`)}},mcp:{tool:"fs_persona_rotate",title:"Rotate a test persona",description:"Rotate a test persona's API key. Returns the replacement key once.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id."),personaId:s.string().describe("The persona id to rotate.")},handler:async(e,{businessId:t,environmentId:r,personaId:i})=>e.rotatePersona(t,r,i)}},{opKey:"persona.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"persona",command:"revoke",summary:"Revoke a persona's API key",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"personaId",kind:"positional",token:"<personaId>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment name",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.personaId,o=await Es(e,i,t.env),a=await e.revokePersona(i,o,n);r({businessId:i,environmentId:o,result:a},`Persona ${n} revoked`)}},mcp:{tool:"fs_persona_revoke",title:"Revoke a persona",description:"Revoke a test persona. Its credentials stop working.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id."),environmentId:s.string().describe("The environment id."),personaId:s.string().describe("The persona id to revoke.")},handler:async(e,{businessId:t,environmentId:r,personaId:i})=>e.revokePersona(t,r,i)}}];function zy(e,t){L(e,t,Rp)}async function Es(e,t,r){try{return await Ln(e,t,r)}catch(i){throw new b(i instanceof Error?i.message:`Environment "${r}" not found on business ${t}.`,void 0,{code:"ENV_NOT_FOUND"})}}var Cp=[{opKey:"usage.read",operationClass:"operate",sideEffect:"read",cli:{group:"usage",command:"summary",summary:"Show usage summary for the last 30 days",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.managementGetUsage(i);r({businessId:i,summary:n},"Usage summary")}},mcp:{tool:"fs_usage_read",title:"Read usage summary",description:"Read a business's usage summary \u2014 metered request counts and tier utilization. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose usage to read.")},handler:async(e,{businessId:t})=>e.managementGetUsage(t)}}];function Uy(e,t){L(e,t,Cp)}var zA=s.object({provider:s.string().min(1),subject:s.string().min(1),providerOrganizationId:s.string().optional(),email:s.string().optional()}).strict(),UA=s.object({provider:s.string().min(1),sessionId:s.string().optional(),authenticatedAt:s.string().optional(),assuranceLevel:s.string().optional()}).strict(),bt={id:s.string().min(1),businessId:s.string().optional(),organizationId:s.string().optional(),environmentId:s.string().optional(),externalIdentities:s.array(zA),authenticationContext:UA.optional()},LA=s.object({type:s.literal("user"),email:s.string().optional(),...bt}).strict(),jA=s.object({type:s.literal("maker_token"),tokenId:s.string().optional(),...bt}).strict(),BA=s.object({type:s.literal("subscriber_member"),subscriberId:s.string().optional(),membershipId:s.string().optional(),roles:s.array(s.string()).optional(),...bt}).strict(),MA=s.object({type:s.literal("api_key"),keyId:s.string().optional(),subscriberId:s.string().optional(),...bt}).strict(),FA=s.object({type:s.literal("runtime"),tokenId:s.string().optional(),...bt}).strict(),KA=s.object({type:s.literal("persona"),personaId:s.string().optional(),subscriberId:s.string().optional(),...bt}).strict(),HA=s.object({type:s.literal("system"),component:s.string().optional(),ruleId:s.string().optional(),...bt}).strict(),VA=s.object({type:s.literal("agent"),agentId:s.string().optional(),...bt}).strict(),Pp=s.discriminatedUnion("type",[LA,jA,BA,MA,FA,KA,HA,VA]);var GA=1;var ZA=["core","billing","webhook","evolution","authz","gateway","usage","workflow"],Ly=s.enum(ZA),jy=s.object({type:s.string().min(1).max(128),id:s.string().min(1).max(256)}).strict(),eK=s.object({id:s.string().min(1),type:He,occurredAt:s.string().datetime(),businessId:s.string().min(1),environmentId:s.string().min(1).nullable().optional(),actor:Pp,subject:jy,payload:s.record(s.string(),s.unknown()).default({}),source:Ly,correlationId:s.string().min(1),correlationDepth:s.number().int().min(0).default(0),schemaVersion:s.number().int().min(1).default(GA)}).strict(),tK=s.object({type:He,occurredAt:s.string().datetime().optional(),businessId:s.string().min(1),environmentId:s.string().min(1).nullable().optional(),actor:Pp,subject:jy,payload:s.record(s.string(),s.unknown()).optional(),source:Ly,correlationId:s.string().min(1).optional(),correlationDepth:s.number().int().min(0).optional()}).strict();var WA=50,qA=200,oK=s.object({businessId:s.string().min(1),environmentId:s.string().min(1).optional(),type:He.optional(),subjectType:s.string().min(1).optional(),subjectId:s.string().min(1).optional(),since:s.string().datetime().optional(),until:s.string().datetime().optional(),limit:s.coerce.number().int().min(1).max(qA).default(WA),cursor:s.string().min(1).optional()}).strict();var Ge=["usage","telemetry","denials","lifecycle","consumer_activity","audit"],Ss=s.enum(Ge);var uK=s.object({event_id:s.string().min(1),type:He,occurred_at:s.string().datetime({offset:!0}),business_id:s.string().min(1).optional(),environment_id:s.string().min(1).optional(),actor_type:s.string().min(1).optional(),actor_id:s.string().min(1).optional(),latency_ms:s.number().nonnegative().finite().optional(),payload:s.string().optional(),schema_version:s.number().int().min(1),upstream_ms:s.number().nonnegative().finite().optional()}).strict(),JA={"subscription.created":"lifecycle","subscription.updated":"lifecycle","subscription.canceled":"lifecycle","payment.succeeded":"lifecycle","payment.failed":"lifecycle","rate_limit.exceeded":"denials","entitlement.changed":"lifecycle","usage.threshold_reached":"usage","usage.recorded":"usage","gateway.request_denied":"denials","change_set.created":"lifecycle","change_set.approved":"lifecycle","change_set.applied":"lifecycle","change_set.rolled_back":"lifecycle","change_set.cancelled":"lifecycle","billing.event_recorded":"lifecycle","authz.decision":"denials","repo.changed":"consumer_activity","automation.rule_fired":"audit","automation.action_succeeded":"audit","automation.action_failed":"audit","automation.action_denied":"denials","automation.notification":"consumer_activity","access_request.created":"consumer_activity","access_request.resolved":"consumer_activity","build.failed":"lifecycle","product.published":"lifecycle","workflow.failed":"lifecycle","pr.review_posted":"consumer_activity"};function By(e){return JA[e]}var YA=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,QA=100,XA=50,eR=100,tR=50;var ws=s.string().regex(YA,"Expected a UUID"),xs=s.string().datetime({offset:!0}),Np=s.string().min(1).max(256).regex(/^[^\u0000-\u001f\u007f]+$/,"Control characters are not allowed"),$s=s.object({from:xs,to:xs}).strict().refine(({from:e,to:t})=>Date.parse(e)<Date.parse(t),"range.from must be before range.to"),Dp="production",Ts=s.object({type:He.optional(),actorId:Np.optional(),environmentId:s.union([s.literal(Dp),ws]).optional()}).strict();function zp(e,t){let r=e.filters?.type;r&&By(r)!==e.domain&&t.addIssue({code:"custom",path:["filters","type"],message:"Event type does not belong to the selected archive domain"})}var My=s.object({domain:Ss,metric:s.enum(["events","unique_actors"]),interval:s.enum(["hour","day"]),range:$s,filters:Ts.optional()}).strict().superRefine(zp),nR=s.object({t:xs,value:s.number().nonnegative()}).strict(),fK=s.array(nR),Fy=s.object({domain:Ss,by:s.enum(["actor_id","type","environment_id"]),k:s.number().int().min(1).max(tR),range:$s,filters:Ts.optional()}).strict().superRefine(zp),rR=s.object({key:s.string().min(1).max(256),count:s.number().int().nonnegative()}).strict(),gK=s.array(rR),Ky=s.object({domain:Ss,range:$s,limit:s.number().int().min(1).max(eR).default(XA),filters:Ts.optional()}).strict().superRefine(zp),iR=s.object({type:s.string().min(1).max(64),id:Np}).strict(),oR=s.object({id:Np,type:He,occurredAt:xs,businessId:ws,environmentId:ws.nullable(),actor:iR.nullable(),payload:s.string().nullable()}).strict(),hK=s.array(oR),sR=s.array(s.number().gt(0).lt(1)).min(1).max(10).refine(e=>new Set(e).size===e.length,"Percentiles must be unique"),Hy=s.object({domain:s.literal("usage"),metric:s.union([s.literal("latency_ms"),s.literal("upstream_ms")]),percentiles:sR,range:$s,filters:Ts.omit({type:!0}).optional()}).strict(),aR=s.object({percentile:s.number().gt(0).lt(1),value:s.number().nonnegative().nullable()}).strict(),bK=s.array(aR),cR={timeseries:My,topK:Fy,percentiles:Hy,eventFeed:Ky},uR=Object.keys(cR),_K=s.discriminatedUnion("verb",[s.object({verb:s.literal("timeseries"),query:My}).strict(),s.object({verb:s.literal("topK"),query:Fy}).strict(),s.object({verb:s.literal("percentiles"),query:Hy}).strict(),s.object({verb:s.literal("eventFeed"),query:Ky}).strict()]),vK=s.object({verb:s.enum(uR),query:s.unknown()}).strict(),yK=s.object({businessIds:s.array(ws).min(1).max(QA)}).strict().refine(({businessIds:e})=>new Set(e).size===e.length,"Analytics business scope must not contain duplicates");var Vy={"1h":3600*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,"30d":720*60*60*1e3},Gy=Object.keys(Vy);function _t(e){let t=Vy[e];if(t===void 0)throw new Error(`Unknown --range "${e}". Expected one of: ${Gy.join(", ")}`);let r=new Date;return{from:new Date(r.getTime()-t).toISOString(),to:r.toISOString()}}function vt(e){return{environmentId:typeof e=="string"&&e.length>0?e:Dp}}function Up(e){if(!Ge.includes(e))throw new Error(`Unknown --domain "${e}". Expected one of: ${Ge.join(", ")}`);return e}var Os={field:"range",kind:"flag",token:"--range <range>",describe:`Relative window: ${Gy.join(" | ")}`,defaultValue:"24h"},As={field:"env",kind:"flag",token:"--env <environmentId>",describe:"Environment id to scope to. Omit for production \u2014 never for 'all environments'."},Rs={field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},Cs={businessId:s.string().regex(/^[^/?#\s]+$/,"businessId must not contain '/', '?', '#', or whitespace").describe("The business whose archive to query."),range:s.enum(["1h","24h","7d","30d"]).default("24h").describe("Relative window."),environmentId:s.string().optional().describe("Environment id to scope to. Omit for production. Never returns all environments summed.")},Lp=[{opKey:"analytics.timeseries",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"timeseries",summary:"Request (or denial) volume over time",args:[Rs,Os,As,{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"interval",kind:"flag",token:"--interval <interval>",describe:"Bucket size: hour | day",defaultValue:"hour"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"timeseries",query:{domain:Up(t.domain),metric:"events",interval:t.interval,range:_t(t.range),filters:vt(t.env)}});r({businessId:i,buckets:n},"Timeseries")}},mcp:{tool:"fs_analytics_timeseries",title:"Analytics: volume over time",description:"Event volume bucketed over time for one business, from the event archive. Read-only. Scoped to production unless environmentId is given.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,domain:s.enum(Ge).default("usage"),interval:s.enum(["hour","day"]).default("hour")},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"timeseries",query:{domain:t.domain??"usage",metric:"events",interval:t.interval??"hour",range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.latency",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"latency",summary:"Request latency percentiles (p50 / p95 / p99)",args:[Rs,Os,As],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"percentiles",query:{domain:"usage",metric:"latency_ms",percentiles:[.5,.95,.99],range:_t(t.range),filters:vt(t.env)}});r({businessId:i,percentiles:n},"Latency percentiles")}},mcp:{tool:"fs_analytics_latency",title:"Analytics: latency percentiles",description:"Gateway request latency at p50/p95/p99 for one business. NOTE: this is the WHOLE request including the builder's own backend, so a high number is not necessarily platform overhead. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:Cs,handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"percentiles",query:{domain:"usage",metric:"latency_ms",percentiles:[.5,.95,.99],range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.top",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"top",summary:"Top callers / event types / environments by volume",args:[Rs,Os,As,{field:"by",kind:"flag",token:"--by <dimension>",describe:"Break down by: actor_id | type | environment_id",defaultValue:"actor_id"},{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"k",kind:"flag",token:"--k <count>",describe:"How many rows (1-50)",defaultValue:"10",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"topK",query:{domain:Up(t.domain),by:t.by,k:Number(t.k),range:_t(t.range),filters:vt(t.env)}});r({businessId:i,rows:n},"Top breakdown")}},mcp:{tool:"fs_analytics_top",title:"Analytics: top-K breakdown",description:"Ranked breakdown of archive events by caller, event type, or environment. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,by:s.enum(["actor_id","type","environment_id"]).default("actor_id"),domain:s.enum(Ge).default("usage"),k:s.number().int().min(1).max(50).default(10)},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"topK",query:{domain:t.domain??"usage",by:t.by??"actor_id",k:t.k??10,range:_t(t.range??"24h"),filters:vt(t.environmentId)}})}},{opKey:"analytics.log",operationClass:"operate",sideEffect:"read",cli:{group:"analytics",command:"log",summary:"Recent requests \u2014 the live metering signal, newest first",args:[Rs,Os,As,{field:"domain",kind:"flag",token:"--domain <domain>",describe:`Archive domain: ${Ge.join(" | ")}`,defaultValue:"usage"},{field:"limit",kind:"flag",token:"--limit <count>",describe:"How many rows (1-100)",defaultValue:"25",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,{result:n}=await e.analyticsQuery(i,{verb:"eventFeed",query:{domain:Up(t.domain),range:_t(t.range),limit:Number(t.limit),filters:vt(t.env)}});r({businessId:i,events:n},"Recent events")}},mcp:{tool:"fs_analytics_log",title:"Analytics: recent request log",description:"The most recent archived events for one business, newest first. Each row's `payload` carries the request detail (path, statusCode, latencyMs, orgId). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{...Cs,domain:s.enum(Ge).default("usage"),limit:s.number().int().min(1).max(100).default(25)},handler:async(e,t)=>e.analyticsQuery(t.businessId,{verb:"eventFeed",query:{domain:t.domain??"usage",range:_t(t.range??"24h"),limit:t.limit??25,filters:vt(t.environmentId)}})}}];function Zy(e,t){L(e,t,Lp)}async function Wy(e,t,r){let i=await e.listBuilderOrganizationMembers(t,r),n=[...i.members],o=i;for(;o.pagination.hasMore;){let a=o.pagination.offset+o.pagination.limit;o=await e.listBuilderOrganizationMembers(t,r,{limit:100,offset:a}),n.push(...o.members)}return{...i,members:n,pagination:{total:i.pagination.total,limit:i.pagination.total>0?i.pagination.total:i.pagination.limit,offset:0,hasMore:!1}}}var qy={filterFields:{key:"string",name:"string",builtIn:"boolean"},sortFields:["key","name","createdAt","id"],searchable:!0},Jy={filterFields:{userId:"string",email:"string",roleKey:"string"},sortFields:["userId","email","roleKey","createdAt","updatedAt"],searchable:!0},$e={field:"organizationId",kind:"positional",token:"<organizationId>",describe:"Builder organization id."},Yy={field:"memberUserId",kind:"positional",token:"<memberUserId>"},Ps={field:"roleKey",kind:"positional",token:"<roleKey>",describe:"Organization-local role key."};function lR(e){let t;try{t=JSON.parse(e)}catch{throw new b("--permissions must be a JSON array of permission keys.",0,{code:"INVALID_PERMISSIONS"})}if(!Array.isArray(t)||t.some(r=>typeof r!="string"))throw new b("--permissions must be a JSON array of permission keys.",0,{code:"INVALID_PERMISSIONS"});return t}var Qy={field:"permissions",kind:"flag",token:"--permissions <json>",describe:'Exact permission snapshot as JSON, for example ["business:read"]. Use [] for no permissions.',parser:e=>lR(e)},Wr="organization role",jp=[{opKey:"organization.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"list",summary:"List builder organizations available to the caller",args:[],handler:async({client:e,emit:t})=>t(await e.listBuilderOrganizations(),"Organizations")},mcp:null},{opKey:"organization.create",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"create",summary:"Create a team or company organization",args:[{field:"name",kind:"positional",token:"<name>"},{field:"type",kind:"flag",token:"--type <type>",describe:"Organization type: team | company",defaultValue:"team"}],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.type==="company"?"company":"team";i(await e.createBuilderOrganization({name:t.name,type:n},r),"Organization created")}},mcp:null},{opKey:"organization.role.list",operationClass:"operate",sideEffect:"read",cli:{group:Wr,command:"list",summary:"List the roles available in an organization",args:[$e,...jt(qy)],handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,qy);r(await(i?e.listBuilderOrganizationRoles(t.organizationId,i):e.listBuilderOrganizationRoles(t.organizationId)),"Organization roles")}},mcp:null},{opKey:"organization.role.show",operationClass:"operate",sideEffect:"read",cli:{group:Wr,command:"show",summary:"Show one organization role and its exact permissions",args:[$e,Ps],handler:async({client:e,args:t,emit:r})=>r(await e.getBuilderOrganizationRole(t.organizationId,t.roleKey),"Organization role")},mcp:null},{opKey:"organization.role.create",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"create",summary:"Create a custom organization role",args:[$e,Ps,{field:"name",kind:"flag",token:"--name <name>",required:!0},{field:"description",kind:"flag",token:"--description <description>"},{...Qy,required:!0}],handler:async({client:e,args:t,emit:r})=>r(await e.createBuilderOrganizationRole(t.organizationId,{key:t.roleKey,name:t.name,...t.description?{description:t.description}:{},permissions:t.permissions}),"Organization role created")},mcp:null},{opKey:"organization.role.update",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"update",summary:"Update a built-in or custom organization role",args:[$e,Ps,{field:"name",kind:"flag",token:"--name <name>"},{field:"description",kind:"flag",token:"--description <description>"},{field:"clearDescription",kind:"flag",token:"--clear-description",describe:"Clear the role description."},Qy],handler:async({client:e,args:t,emit:r})=>{if(t.description!==void 0&&t.clearDescription)throw new b("Use either --description or --clear-description, not both.",0,{code:"INVALID_ROLE_UPDATE"});r(await e.updateBuilderOrganizationRole(t.organizationId,t.roleKey,{...t.name?{name:t.name}:{},...t.description?{description:t.description}:t.clearDescription?{description:null}:{},...t.permissions!==void 0?{permissions:t.permissions}:{}}),"Organization role updated")}},mcp:null},{opKey:"organization.role.delete",operationClass:"operate",sideEffect:"write",cli:{group:Wr,command:"delete",summary:"Delete an unused custom organization role",destructive:!0,args:[$e,Ps],handler:async({client:e,args:t,emit:r})=>{await e.deleteBuilderOrganizationRole(t.organizationId,t.roleKey),r({deleted:t.roleKey},"Organization role deleted")}},mcp:null},{opKey:"organization.member.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"members",summary:"List organization members",args:[$e,...jt(Jy)],handler:async({client:e,args:t,emit:r})=>{let i=Bt(t,Jy);r(await Wy(e,t.organizationId,i),"Organization members")}},mcp:null},{opKey:"organization.invitation.create",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invite",summary:"Invite a member to an organization",args:[$e,{field:"email",kind:"positional",token:"<email>"},{field:"role",kind:"flag",token:"--role <role>",describe:"Organization role key (see `organization role list`).",defaultValue:"member"}],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.role;i(await e.inviteBuilderOrganizationMember(t.organizationId,{email:t.email,roleKey:n},r),"Invitation created")}},mcp:null},{opKey:"organization.invitation.list",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"invitation-list",summary:"List the caller's pending organization invitations",args:[],handler:async({client:e,emit:t})=>t(await e.listBuilderInvitations(),"Pending invitations")},mcp:null},{opKey:"organization.invitation.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invitation-revoke",summary:"Revoke a pending organization invitation",destructive:!0,args:[$e,{field:"invitationId",kind:"positional",token:"<invitationId>"}],handler:async({client:e,args:t,emit:r})=>{await e.revokeBuilderInvitation(t.organizationId,t.invitationId),r({revoked:t.invitationId},"Invitation revoked")}},mcp:null},{opKey:"organization.invitation.accept",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"invitation-accept",summary:"Accept an organization invitation",args:[{field:"invitationId",kind:"positional",token:"<invitationId>"},{field:"invitationToken",kind:"flag",token:"--invitation-token <token>",describe:"One-time token from the invitation email, when required."}],handler:async({client:e,args:t,emit:r})=>r(await e.acceptBuilderInvitation(t.invitationId,t.invitationToken),"Invitation accepted")},mcp:null},{opKey:"organization.member.update",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"member-role",summary:"Change an organization member's role",args:[$e,Yy,{field:"role",kind:"flag",token:"--role <role>",describe:"New organization role key (see `organization role list`).",required:!0}],handler:async({client:e,args:t,emit:r})=>{let i=t.role;r(await e.updateBuilderOrganizationMember(t.organizationId,t.memberUserId,i),"Member role updated")}},mcp:null},{opKey:"organization.member.remove",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"member-remove",summary:"Remove a member from an organization",destructive:!0,args:[$e,Yy],handler:async({client:e,args:t,emit:r})=>{await e.removeBuilderOrganizationMember(t.organizationId,t.memberUserId),r({removed:t.memberUserId},"Member removed")}},mcp:null},{opKey:"organization.delete",operationClass:"operate",sideEffect:"write",cli:{group:"organization",command:"delete",summary:"Delete an organization and its managed state",destructive:!0,args:[$e],handler:async({client:e,args:t,emit:r})=>{await e.deleteBuilderOrganization(t.organizationId),r({deleted:t.organizationId},"Organization deleted")}},mcp:null},{opKey:"organization.overview.read",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"overview",summary:"Read the organization overview shown on the dashboard",args:[$e],handler:async({client:e,args:t,emit:r})=>r(await e.getBuilderOrganizationOverview(t.organizationId),"Organization overview")},mcp:null},{opKey:"organization.bulletin.read",operationClass:"operate",sideEffect:"read",cli:{group:"organization",command:"bulletin",summary:"List the consolidated bulletin across the organization",args:[$e,{field:"kind",kind:"flag",token:"--kind <kind>"},{field:"status",kind:"flag",token:"--status <status>"},{field:"cursor",kind:"flag",token:"--cursor <cursor>"},{field:"limit",kind:"flag",token:"--limit <count>",parser:e=>Number.parseInt(e,10)}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderOrganizationBulletin(t.organizationId,{kind:t.kind,status:t.status,cursor:t.cursor,limit:t.limit}),"Organization bulletin")},mcp:null}];function Xy(e,t){L(e,t,jp)}import{writeFile as ek}from"node:fs/promises";var jn=[{field:"organizationId",kind:"positional",token:"<organizationId>"},{field:"action",kind:"flag",token:"--action <action>"},{field:"actorUserId",kind:"flag",token:"--actor <userId>"},{field:"decision",kind:"flag",token:"--decision <decision>"},{field:"from",kind:"flag",token:"--from <isoDate>"},{field:"to",kind:"flag",token:"--to <isoDate>"},{field:"limit",kind:"flag",token:"--limit <count>",parser:e=>Number.parseInt(e,10)}];function Ns(e){return{businessId:e.businessId,action:e.action,actorUserId:e.actorUserId,decision:e.decision,from:e.from,to:e.to,limit:e.limit}}var Bp=[{opKey:"audit_log.read",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"list",summary:"List organization or business-scoped audit-log rows",args:[...jn,{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderAuditLogs(t.organizationId,{...Ns(t),cursor:t.cursor}),"Audit log")},mcp:null},{opKey:"audit_log.business.read",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"business-list",summary:"List one business's audit-log rows",args:[jn[0],{field:"businessId",kind:"positional",token:"<businessId>"},...jn.slice(1),{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBuilderAuditLogs(t.organizationId,{...Ns(t),businessId:t.businessId,cursor:t.cursor}),"Business audit log")},mcp:null},{opKey:"audit_log.export",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"export",summary:"Export organization or business-scoped audit logs as CSV",args:[...jn,{field:"output",kind:"flag",token:"--output <file>",describe:"Write CSV to this file; omit to return it in command output."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.exportBuilderAuditLogs(t.organizationId,Ns(t));if(typeof t.output=="string"){await ek(t.output,i,"utf8"),r({output:t.output},`Audit log exported to ${t.output}`);return}r({csv:i},"Audit log CSV")}},mcp:null},{opKey:"audit_log.business.export",operationClass:"operate",sideEffect:"read",cli:{group:"audit-log",command:"business-export",summary:"Export one business's audit logs as CSV",args:[jn[0],{field:"businessId",kind:"positional",token:"<businessId>"},...jn.slice(1),{field:"output",kind:"flag",token:"--output <file>",describe:"Write CSV to this file; omit to return it in command output."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.exportBuilderAuditLogs(t.organizationId,{...Ns(t),businessId:t.businessId});if(typeof t.output=="string"){await ek(t.output,i,"utf8"),r({output:t.output},`Audit log exported to ${t.output}`);return}r({csv:i},"Business audit log CSV")}},mcp:null}];function tk(e,t){L(e,t,Bp)}var nk={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",resolveBusiness:!0};function dR(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error;return t}catch{throw new b("--patch must be a JSON object",400,{code:"INVALID_NOTIFICATION_PREFERENCES_PATCH"})}}var Mp=[{opKey:"notification.preferences.read",operationClass:"operate",sideEffect:"read",cli:{group:"notifications",command:"preferences",summary:"Get notification (email) opt-out preferences",args:[nk],handler:async({client:e,args:t,emit:r})=>r(await e.getBusinessNotificationPreferences(t.businessId),"Notification preferences")},mcp:null},{opKey:"notification.preferences.update",operationClass:"operate",sideEffect:"write",cli:{group:"notifications",command:"preferences-update",summary:"Patch notification (email) opt-out preferences",args:[nk,{field:"patch",kind:"flag",token:"--patch <json>",describe:'JSON patch, e.g. {"master":true} or {"categories":{"deployments":true}} (true = opted out of email)',required:!0,parser:dR}],handler:async({client:e,args:t,emit:r})=>r(await e.updateBusinessNotificationPreferences(t.businessId,t.patch),"Notification preferences updated")},mcp:null}];function rk(e,t){L(e,t,Mp)}var Fp=["gateway_verification","metering","health","tunnel"],mR="<businessId>",Bn="The business id.",yt={field:"businessId",kind:"positional",token:mR};function ik(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:Array.isArray(t.backends)?t.backends:Array.isArray(t.tokens)?t.tokens:Array.isArray(e)?e:[]}function pR(e){let t=e.status;if(typeof t=="string"&&t.length>0)return t;let r=typeof e.readinessState=="string"?e.readinessState:null,i=typeof e.provisionStatus=="string"?e.provisionStatus:null;return r??i??"unknown"}function fR(e){return{id:e.id,environmentId:e.environmentId??null,name:e.name,slug:e.slug,transport:e.transportMode,default:e.isDefault??!1,status:pR(e),originUrl:e.originUrl??null,lastSeenAt:e.lastSeenAt??null}}async function Kp(e,t,r){if(!r)return null;try{return await Ln(e,t,r)}catch(i){throw new b(i instanceof Error?i.message:`Environment "${r}" not found on business ${t}.`,void 0,{code:"ENV_NOT_FOUND"})}}var Hp=e=>typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(t=>t.length>0):void 0,Vp=[{opKey:"backend.read",operationClass:"operate",sideEffect:"read",cli:{group:"backend",command:"list",summary:"List backends for a business (id, name, transport, status)",args:[yt],handler:async({client:e,args:t,emit:r})=>{let n=ik(await e.builderListBackends(t.businessId)).map(fR);r({count:n.length,backends:n},`${n.length} backend(s)`)}},mcp:{tool:"fs_backend_list",title:"List backends",description:"List a business's backends (origins) \u2014 id, name, slug, transport (direct|tunnel), default flag, and derived status. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id whose backends to list.")},handler:async(e,{businessId:t})=>e.builderListBackends(t)}},{opKey:"backend.create",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"create",summary:"Create a backend (default transport: direct)",idempotent:!0,args:[yt,{field:"name",kind:"flag",token:"--name <name>",describe:"Human-friendly backend name",required:!0},{field:"slug",kind:"flag",token:"--slug <slug>",describe:"Stable slug (defaults to a slugified name)"},{field:"env",kind:"flag",token:"--env <environment>",describe:"Scope backend to an environment name or id"},{field:"transport",kind:"flag",token:"--transport <mode>",describe:"Transport mode: direct | tunnel",defaultValue:"direct"},{field:"runner",kind:"flag",token:"--runner <runner>",describe:"embedded | sidecar"},{field:"runtime",kind:"flag",token:"--runtime <runtime>",describe:"Container/runtime descriptor"},{field:"originUrl",kind:"flag",token:"--origin-url <url>",describe:"Builder origin URL (direct)"},{field:"default",kind:"flag",token:"--default",describe:"Mark this backend the business default"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await Kp(e,o,t.env),c=t.transport==="tunnel"?"tunnel":"direct",u=await e.builderCreateBackend(o,{name:t.name,slug:t.slug,environmentId:a,transportMode:c,runner:t.runner==="embedded"||t.runner==="sidecar"?t.runner:null,runtime:t.runtime??null,originUrl:t.originUrl??null,isDefault:t.default},r);n(u)||i({result:u},"Backend created")}},mcp:{tool:"fs_backend_create",title:"Create a backend",description:"Create a backend (origin) for a business. Pick a transport mode: direct (public HTTPS URL, secured by Ed25519 request signing) or tunnel (private outbound-only cloudflared, secure bring-your-own-backend). Mark it default to route traffic to it.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe("The business id to create the backend in."),name:s.string().describe("Backend name (e.g. 'prod-origin')."),slug:s.string().optional().describe("URL-safe slug; derived from name if omitted."),transportMode:s.enum(["direct","tunnel"]).optional().describe("How the gateway reaches the origin; defaults to direct."),originUrl:s.string().optional().describe("The origin URL (for direct mode)."),isDefault:s.boolean().optional().describe("Route traffic to this backend by default."),...ue},handler:async(e,t)=>e.builderCreateBackend(t.businessId,{name:t.name,slug:t.slug,transportMode:t.transportMode,originUrl:t.originUrl,isDefault:t.isDefault},{idempotencyKey:t.idempotencyKey})}},{opKey:"backend.bind",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"bind",summary:"Bind a logical backend to a direct upstream in one environment",idempotent:!0,args:[yt,{field:"backend",kind:"positional",token:"<backend>"},{field:"env",kind:"flag",token:"--env <environment>",describe:"Environment name or id (omit for production)"},{field:"originUrl",kind:"flag",token:"--origin-url <url>",describe:"Concrete direct upstream URL for this environment",required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.backend,c=await Kp(e,o,t.env),u=await e.builderBindBackend(o,a,{environmentId:c,originUrl:t.originUrl},r);n(u)||i({result:u},`Backend ${a} bound in ${c??"production"}`)}},mcp:{tool:"fs_backend_bind",title:"Bind a backend upstream",description:"Bind a logical backend id to a concrete direct upstream URL in one environment. Omit environmentId for production.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backend:s.string().describe("Logical backend slug."),environmentId:s.string().optional().describe("Preview environment id; omit for production."),originUrl:s.string().url().describe("Concrete direct upstream URL."),...ue},handler:async(e,t)=>e.builderBindBackend(t.businessId,t.backend,{environmentId:t.environmentId??null,originUrl:t.originUrl},{idempotencyKey:t.idempotencyKey})}},{opKey:"backend.delete",operationClass:"operate",sideEffect:"write",cli:{group:"backend",command:"delete",summary:"Delete a backend (revokes its runtime tokens). Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm backend deletion.",args:[yt,{field:"backendId",kind:"positional",token:"<backendId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.backendId;await e.builderDeleteBackend(i,n),r({businessId:i,deleted:n},`Backend ${n} deleted`)}},mcp:{tool:"fs_backend_delete",title:"Delete a backend",description:"Delete a backend (origin). Traffic routed to it stops; re-create to restore.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backendId:s.string().describe("The backend id to delete.")},handler:async(e,{businessId:t,backendId:r})=>e.builderDeleteBackend(t,r)}},{opKey:"runtime_token.read",operationClass:"operate",sideEffect:"read",cli:{group:"backend tokens",command:"list",summary:"List runtime tokens for a business",args:[yt],handler:async({client:e,args:t,emit:r})=>{let i=ik(await e.builderListRuntimeTokens(t.businessId));r({count:i.length,tokens:i},`${i.length} runtime token(s)`)}},mcp:{tool:"fs_runtime_token_list",title:"List runtime tokens",description:"List a business's runtime tokens (fsrt_) \u2014 id, last-four, operations, status. Read-only; secrets are never shown.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn)},handler:async(e,{businessId:t})=>e.builderListRuntimeTokens(t)}},{opKey:"runtime_token.mint",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"create",summary:"Create a runtime token (returns FS_RUNTIME_TOKEN once)",idempotent:!0,args:[yt,{field:"env",kind:"flag",token:"--env <environment>",describe:"Scope token to an environment name or id"},{field:"backend",kind:"flag",token:"--backend <backendId>",describe:"Bind token to a specific backend"},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"live | test (defaults from env scope)"},{field:"operations",kind:"flag",token:"--operations <list>",describe:`Comma-separated operations: ${Fp.join(" | ")}. Default: core's DEFAULT_OPERATIONS. Use tunnel for tunnel backends.`},{field:"meters",kind:"flag",token:"--meters <list>",describe:"Comma-separated allowed meters (default: all business meters)"},{field:"routes",kind:"flag",token:"--routes <list>",describe:"Comma-separated allowed routes"}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=await Kp(e,o,t.env),c=t.kind==="test"||t.kind==="live"?t.kind:void 0,u=Hp(t.operations);if(u){for(let d of u)if(!Fp.includes(d))throw new b(`Unknown operation "${d}". Available: ${Fp.join(", ")}.`,void 0,{code:"UNKNOWN_RUNTIME_TOKEN_OPERATION"})}let l=await e.builderCreateRuntimeToken(o,{environmentId:a,backendId:t.backend??null,kind:c,operations:u,allowedMeters:Hp(t.meters),allowedRoutes:Hp(t.routes)},r);n(l)||i({envVar:"FS_RUNTIME_TOKEN",result:l},"Runtime token created")}},mcp:{tool:"fs_runtime_token_mint",title:"Mint a runtime token",description:"Mint a new runtime token (fsrt_) for a backend. Returns the plaintext token ONCE \u2014 store it now (e.g. as FS_RUNTIME_TOKEN). Operations default to the backend's needs (gateway_verification, metering, health).",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),backendId:s.string().optional().describe("Bind the token to this backend."),environmentId:s.string().optional().describe("Scope to a preview environment (omit for production)."),kind:s.enum(["live","test"]).optional().describe("Token kind; defaults from the env scope."),operations:s.array(s.string()).optional().describe("Operations (gateway_verification, metering, health, tunnel)."),...ue},handler:async(e,t)=>e.builderCreateRuntimeToken(t.businessId,{backendId:t.backendId??null,environmentId:t.environmentId??null,kind:t.kind,operations:t.operations},{idempotencyKey:t.idempotencyKey})}},{opKey:"runtime_token.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"rotate",summary:"Rotate a runtime token (returns a fresh FS_RUNTIME_TOKEN once)",args:[yt,{field:"tokenId",kind:"positional",token:"<tokenId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.tokenId,o=await e.builderRotateRuntimeToken(i,n);r({envVar:"FS_RUNTIME_TOKEN",result:o},`Runtime token ${n} rotated`)}},mcp:{tool:"fs_runtime_token_rotate",title:"Rotate a runtime token",description:"Rotate a runtime token: mint a fresh secret carrying the same scope and revoke the old one. Returns the new plaintext token ONCE.",returnsOneTimeSecret:!0,annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),tokenId:s.string().describe("The runtime token id to rotate."),...ue},handler:async(e,t)=>e.builderRotateRuntimeToken(t.businessId,t.tokenId,{idempotencyKey:t.idempotencyKey})}},{opKey:"runtime_token.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"backend tokens",command:"revoke",summary:"Revoke a runtime token. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm runtime token revocation.",args:[yt,{field:"tokenId",kind:"positional",token:"<tokenId>"}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.tokenId;await e.builderRevokeRuntimeToken(i,n),r({businessId:i,revoked:n},`Runtime token ${n} revoked`)}},mcp:{tool:"fs_runtime_token_revoke",title:"Revoke a runtime token",description:"Revoke a runtime token. The backend using it stops verifying.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Bn),tokenId:s.string().describe("The runtime token id to revoke.")},handler:async(e,{businessId:t,tokenId:r})=>e.builderRevokeRuntimeToken(t,r)}}];function ok(e,t){L(e,t,Vp)}var sk=new Set(["SUCCEEDED","SUCCESS"]),ak=new Set(["FAILED","ERROR","CANCELLED","TIMED_OUT"]),ck="SUPERSEDED";function gR(e){let r=(e?.data??e)?.builds;return Array.isArray(r)?r:[]}var Ze=e=>typeof e=="string"?e:null;async function uk(e,t){let r=t.intervalMs??5e3,i=t.sleep??(d=>new Promise(g=>setTimeout(g,d))),n=t.now??(()=>Date.now()),o=n()+t.timeoutMs,a={status:"UNKNOWN",buildId:t.buildId??null,ref:null,error:null,timedOut:!1},c=t.buildId??null,u=null,l=t.buildId!=null;for(;;){let d=await e.builderFrontendStatus(t.businessId,t.environmentId),g=gR(d),p=(c?g.find(_=>Ze(_.id)===c):void 0)??g[0];if(p){let _=Ze(p.status)??"UNKNOWN",S=Ze(p.id);a={status:_,buildId:S,ref:Ze(p.ref),error:Ze(p.error),timedOut:!1};let f=sk.has(_)||ak.has(_)||_===ck;if(l||(l=!0,f&&(u=S)),u!==null&&S===u){if(n()>=o)return{...a,timedOut:!0};await i(Math.min(r,Math.max(0,o-n())));continue}if(u=null,sk.has(_)||ak.has(_))return a;if(_===ck){let m=g.find(k=>Ze(k.ref)===Ze(p.ref)&&Ze(k.id)!==Ze(p.id));c=m?Ze(m.id):null}}if(n()>=o)return{...a,timedOut:!0};await i(Math.min(r,Math.max(0,o-n())))}}var Gp="The business id or slug.",lk="Scope to a preview environment (omit for production).",dk={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Gp,resolveBusiness:!0},mk={field:"env",kind:"flag",token:"--env <environmentId>",describe:"Scope to a preview environment id (omit for production)."};async function pk(e,t){return F(e,t)}var Zp=[{opKey:"frontend.status",operationClass:"operate",sideEffect:"read",cli:{group:"frontend",command:"status",summary:"Show the current frontend release, recent releases, and recent builds (incl. failure reasons)",args:[dk,mk,{field:"wait",kind:"flag",token:"--wait",describe:"Block until the in-flight build finishes, then report it; exit non-zero if it failed. Use after a push or release instead of polling this command in a loop."},{field:"timeout",kind:"flag",token:"--timeout <seconds>",describe:"How long --wait waits before giving up (default 600)."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.env;if(!t.wait){r(await e.builderFrontendStatus(i,n),"Frontend status");return}let o=Number(t.timeout??600),a=await uk(e,{businessId:i,environmentId:n,buildId:null,timeoutMs:(Number.isFinite(o)&&o>0?o:600)*1e3});if(a.timedOut)throw new b(`Frontend build did not finish within the timeout (last status: ${a.status})`,0,{code:"BUILD_WAIT_TIMEOUT",details:{build:a}});if(a.status!=="SUCCEEDED"&&a.status!=="SUCCESS")throw new b(`Frontend build ${a.status}${a.error?`: ${a.error}`:""}`,0,{code:"BUILD_FAILED",details:{build:a}});let c=await e.builderFrontendStatus(i,n);r({status:c,build:a},"Frontend build succeeded")}},mcp:{tool:"fs_frontend_status",title:"Get frontend status",description:"Read a business's current frontend serve state (uiMode, active release hash + producing build, pin flag), the recent SUCCEEDED releases (rollback targets), and the recent builds \u2014 a FAILED build's `error` explains why a deploy didn't go live. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gp),environmentId:s.string().optional().describe(lk)},handler:async(e,t)=>{let r=await pk(e,t.businessId);return e.builderFrontendStatus(r,t.environmentId)}}},{opKey:"frontend.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"frontend",command:"rollback",summary:"Roll the business frontend back to a prior release (re-activate its releaseId)",idempotent:!0,args:[dk,{field:"releaseId",kind:"flag",token:"--release-id <releaseId>",describe:"The prior release id (manifest hash) to re-activate \u2014 see `frontend status`.",required:!0},mk],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=await e.builderFrontendRollback(t.businessId,{releaseId:t.releaseId,environmentId:t.env},r);n(o)||i({result:o},"Frontend rolled back")}},mcp:{tool:"fs_frontend_rollback",title:"Roll back a business frontend",description:"Roll a business's frontend back to a prior release by its releaseId (manifest hash, from fs_frontend_status). Flips the live pointer back and pins it. The releaseId must belong to this target's build history.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gp),releaseId:s.string().describe("The prior release id (manifest hash) to re-activate."),environmentId:s.string().optional().describe(lk),...ue},handler:async(e,t)=>{let r=await pk(e,t.businessId);return e.builderFrontendRollback(r,{releaseId:t.releaseId,environmentId:t.environmentId},{idempotencyKey:t.idempotencyKey})}}}];function fk(e,t){L(e,t,Zp)}function qr(e,t){if(ce()==="json"){console.log(Xv({schema_version:1,ok:!0,data:e}));return}vs(t)}function gk(e,t){e.command("link").argument("[business]","Business id, name, or hostname slug. Omit to show the current link.").option("--env <environment>","Also target an environment, so --env can be omitted too. Stored by NAME (a recreated preview env re-resolves; a stale id would not).").description("Target this directory at a business so later commands can omit it (like `railway link`). Omit the argument to show what is currently targeted.").action(async(r,i)=>{let n=process.cwd();if(!r){let u=gy();if(!u){qr({linked:null},"No business linked here. Run `farthershore link <business>`.");return}let l=rt(n)?.environment??null;qr({linked:u.ref,environment:l,source:u.source,directory:n},`Targeting ${u.ref}${l?` (env ${l})`:" (production)"} \u2014 from ${u.source}`);return}let o=t(),a=await F(o,r),c=await o.selectedOrganizationId();Vf(n,{businessId:a,label:r,...c?{organizationId:c}:{},...i.env?{environment:i.env}:{}}),qr({linked:a,label:r,organizationId:c??null,environment:i.env??null,directory:n},`Linked ${n} to ${r} (${a})`+(i.env?` in environment ${i.env}`:""))}),e.command("unlink").description("Stop targeting a business from this directory.").action(()=>{let r=process.cwd();if(!Gf(r)){let n=rt(r);if(n)throw new b(`No link on this directory. It inherits ${n.businessId} from a parent directory \u2014 run \`farthershore unlink\` there to remove it.`,0,{code:"LINK_INHERITED"});qr({unlinked:!1},"Nothing linked here.");return}qr({unlinked:!0,directory:r},`Unlinked ${r}`)})}import{existsSync as Wp,lstatSync as TR,mkdirSync as OR,mkdtempSync as AR,readFileSync as RR,rmSync as Ek,writeFileSync as CR}from"node:fs";import*as Sk from"node:fs";import{randomUUID as PR}from"node:crypto";import{gunzipSync as NR}from"node:zlib";import{join as Qr,relative as DR,resolve as wk}from"node:path";import{mkdirSync as hk,writeFileSync as hR}from"node:fs";import{dirname as bR,posix as bk,resolve as _k,sep as _R}from"node:path";var Yr={maxEntries:2e3,maxFileBytes:20*1024*1024,maxPathBytes:512,maxPathComponentBytes:255},Jr=512,vR=new Set(["x","g"]),yR=new Set(["0","","5"]),kR=new Set(["1","2"]);function zs(e,t,r=()=>!1){let i=IR(e).filter(a=>!r(a.path)),n=_k(t),o=[];for(let a of i){let c=_k(n,a.path);if(!$R(n,c))throw new Error(`Tar entry escapes destination: ${a.path}`);if("directory"in a){hk(c,{recursive:!0});continue}hk(bR(c),{recursive:!0}),hR(c,a.content,a.mode?{mode:a.mode}:void 0),o.push(a.path)}return o}function IR(e){let t=[],r=0,i=null;for(;r+Jr<=e.length;){let n=e.subarray(r,r+Jr);if(xR(n))break;let o=Ds(n,0,100),a=Ds(n,345,155),c=a?`${a}/${o}`:o,u=vk(n,124,12),l=vk(n,100,8),d=Ds(n,156,1)||"0",g=r+Jr,p=g+u;if(p>e.length)throw new Error(`Tar entry "${c}" is truncated.`);if(r=g+Math.ceil(u/Jr)*Jr,!ER(c,d,u))continue;let _=SR(c,i);if(!_.path||_.path==="/"||/^\/*$/.test(_.path)){i=_.rootPrefix;continue}i=_.rootPrefix;let S=wR(_.path);if(d==="5"?t.push({path:S,directory:!0}):t.push({path:S,content:Buffer.from(e.subarray(g,p)),mode:Number.isFinite(l)&&l>0?l:void 0}),t.length>Yr.maxEntries)throw new Error(`Tar archive exceeds ${Yr.maxEntries} entries.`)}return t}function ER(e,t,r){if(vR.has(t))return!1;if(kR.has(t))throw new Error(`Refusing link tar entry: ${e}`);if(!yR.has(t))return!1;if(r>Yr.maxFileBytes)throw new Error(`Tar entry exceeds 20 MB file limit: ${e}`);return!0}function SR(e,t){let r=e.replace(/\\/g,"/").replace(/^\.\//,""),[i,...n]=r.split("/"),o=t??i??null;return!o||i!==o?{rootPrefix:o,path:r}:{rootPrefix:o,path:n.join("/")}}function wR(e){let t=bk.normalize(e.replace(/\\/g,"/")).replace(/\/+$/,"");if(t==="."||t.includes("\0")||t.startsWith("../")||t.includes("/../")||bk.isAbsolute(t)||Buffer.byteLength(t,"utf8")>Yr.maxPathBytes)throw new Error(`Unsafe tar entry path: ${e}`);if(t.split("/").some(r=>r===""||r==="."||r===".."||Buffer.byteLength(r,"utf8")>Yr.maxPathComponentBytes))throw new Error(`Unsafe tar entry path: ${e}`);return t}function Ds(e,t,r){let i=e.subarray(t,t+r),n=i.indexOf(0);return i.subarray(0,n===-1?i.length:n).toString("utf8").trim()}function vk(e,t,r){let i=Ds(e,t,r).replace(/\0/g,"").trim();return i?Number.parseInt(i,8):0}function xR(e){return e.every(t=>t===0)}function $R(e,t){return t===e||t.startsWith(`${e}${_R}`)}var zR="https://github.com",UR=3e4,yk=20*1024*1024,LR=100*1024*1024,Us={renameSync:Sk.renameSync},Ls={node:{repo:"farther-shore/api-template-node",label:"Node (TypeScript + Express)"}},kk=["Mint a runtime token: farthershore backend tokens create <business> --kind live","Deploy the api/ Docker image anywhere that can serve HTTPS.","Register the origin: farthershore backend create <business> --name api --transport direct --origin-url ... --default"];function xk(e){e.command("create").description("Create local FartherShore project components").command("api").description("Scaffold a starter backend from a public template tarball").option("--node",`${Ls.node.label} template (default)`).option("--path <dir>","Managed builder repo root (default: current directory)").option("--force","Overwrite an existing api/ directory if present").option("--ref <branch-or-tag>","Template tag or branch to download instead of main (tags are tried first)").addHelpText("after",`
|
|
142
142
|
Languages:
|
|
143
143
|
--node ${Ls.node.label} (default)
|
|
144
144
|
|
|
145
145
|
More languages are coming.
|
|
146
|
-
`).action(r=>
|
|
146
|
+
`).action(r=>jR(r))}async function jR(e){let t=BR(e),r=Ls[t],i=wk(e.path??process.cwd()),n=Qr(i,"api"),o=`${zR}/${r.repo}`;Wp(Qr(i,"business"))||Hr("this doesn't look like a FartherShore managed repo");let a=$k(n);if(a.exists){if(a.isSymlink)throw new b(`${n} is a symlink. Refusing to overwrite it.`,void 0,{code:"CREATE_API_DESTINATION_SYMLINK"});if(!e.force)throw new b(`${n} already exists. Pass --force to overwrite.`,void 0,{code:"CREATE_API_EXISTS"})}let c=await FR(r.repo,e.ref,o),u=VR(c);OR(i,{recursive:!0});let l=AR(Qr(i,".farthershore-api-")),d=!1,g,p=!1;try{g=zs(u,l,GR),p=ZR(i),HR(l,n,e.force===!0),d=!0}finally{d||Ek(l,{recursive:!0,force:!0})}let _=g.map(S=>`api/${S}`);p&&_.push(".gitignore"),G({language:t,templateRepo:r.repo,created:_,nextActions:kk},`Scaffolded ${Ls[t].label} backend in ${DR(process.cwd(),n)||n}.`,"create.api");for(let S of kk)we(`Next: ${S}`)}function BR(e){return e.node,"node"}function Ik(e,t){let r=t?`refs/tags/${encodeURIComponent(t)}`:"refs/heads/main";return`https://codeload.github.com/${e}/tar.gz/${r}`}function MR(e,t){return`https://codeload.github.com/${e}/tar.gz/refs/heads/${encodeURIComponent(t)}`}async function FR(e,t,r){if(!t)return KR(Ik(e),r);let i=await qp(Ik(e,t));if(i.ok)return i.archive;if(i.status!==404)throw Jp(r,i.error);let n=await qp(MR(e,t));if(n.ok)return n.archive;throw n.status===404?new b(`Template ref "${t}" was not found as a tag or branch in ${r}. See available tags at ${r}/tags.`,void 0,{code:"CREATE_API_REF_NOT_FOUND"}):Jp(r,n.error)}async function KR(e,t){let r=await qp(e);if(r.ok)return r.archive;throw Jp(t,r.error)}async function qp(e){let t=new AbortController,r=setTimeout(()=>t.abort(),UR);try{let i=await fetch(e,{signal:t.signal});if(!i.ok)return{ok:!1,status:i.status,error:new Error(`HTTP ${i.status}`)};let n=i.headers.get("content-length");if(n&&Number.parseInt(n,10)>yk)throw new b("Template download exceeds 20 MB compressed limit.",void 0,{code:"CREATE_API_ARCHIVE_TOO_LARGE"});let o=Buffer.from(await i.arrayBuffer());if(o.byteLength>yk)throw new b("Template download exceeds 20 MB compressed limit.",void 0,{code:"CREATE_API_ARCHIVE_TOO_LARGE"});return{ok:!0,archive:o}}catch(i){if(i instanceof b)throw i;return{ok:!1,error:i}}finally{clearTimeout(r)}}function Jp(e,t){let r=t instanceof Error?` (${t.message})`:"";return new b(`Failed to download ${e}${r}. Manual fallback: download the public template from ${e}.`,void 0,{code:"CREATE_API_DOWNLOAD_FAILED"})}function HR(e,t,r){let i=$k(t);if(i.exists){if(i.isSymlink)throw new b(`${t} is a symlink. Refusing to overwrite it.`,void 0,{code:"CREATE_API_DESTINATION_SYMLINK"});if(!r)throw new b(`${t} already exists. Pass --force to overwrite.`,void 0,{code:"CREATE_API_EXISTS"})}let n=i.exists?Qr(wk(t,".."),`.farthershore-api-backup-${PR()}`):void 0;if(!n){Us.renameSync(e,t);return}Us.renameSync(t,n);try{Us.renameSync(e,t)}catch(o){try{Us.renameSync(n,t)}catch(a){let c=a instanceof Error?` ${a.message}`:"";Hr(`failed to restore the original api/ directory after install failed.${c}`)}throw o}Ek(n,{recursive:!0,force:!0})}function VR(e){try{return NR(e,{maxOutputLength:LR})}catch(t){let r=t instanceof Error?` (${t.message})`:"";throw new b(`Template archive exceeds 100 MB expanded limit or is invalid${r}.`,void 0,{code:"CREATE_API_ARCHIVE_INVALID"})}}function $k(e){try{return{exists:!0,isSymlink:TR(e).isSymbolicLink()}}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return{exists:!1,isSymlink:!1};throw t}}function GR(e){return e===".gitignore"?!1:e===".github"||e.startsWith(".github/")||e.startsWith(".git")}function ZR(e){let t=Qr(e,".gitignore"),i=(Wp(t)?RR(t,"utf8"):"").split(/\r?\n/).filter((o,a,c)=>!(a===c.length-1&&o==="")),n=!1;for(let o of["api/dist","api/.env"])i.includes(o)||(i.push(o),n=!0);return!n&&Wp(t)?!1:(CR(t,`${i.join(`
|
|
147
147
|
`)}
|
|
148
|
-
`,"utf8"),!0)}import{readFileSync as
|
|
148
|
+
`,"utf8"),!0)}import{readFileSync as WR,writeFileSync as qR}from"node:fs";var JR=["get","post","put","patch","delete","head","options"],YR=["trace","connect"];function QR(e){let t=e.paths??{},r=[],i=[],n=0,o=0;for(let[c,u]of Object.entries(t)){if(!u||typeof u!="object")continue;let l=[];for(let d of JR)u[d]!==void 0&&(l.push(`${d}: {}`),n+=1);for(let d of YR)u[d]!==void 0&&i.push(`${d.toUpperCase()} ${c}`);l.length!==0&&(o+=1,r.push(`export const importedRoute${o} = fs.route(${JSON.stringify(c)}, { ${l.join(", ")} });`))}return{source:`// Generated by \`farthershore import openapi\` \u2014 a starting point.
|
|
149
149
|
// Enrich each route with metering (reports/costs), audience, and plans.
|
|
150
150
|
import * as fs from "@farthershore/business";
|
|
151
151
|
|
|
152
152
|
${r.join(`
|
|
153
153
|
`)}
|
|
154
|
-
`,pathCount:o,operationCount:n,skipped:i}}function Tk(e){e.command("import").description("Import external definitions into FartherShore authoring").command("openapi").argument("<spec>","Path to an OpenAPI 3.x JSON document").description("Scaffold a path-first Business SDK route module from an OpenAPI spec").option("--out <file>","Write the generated module to this file (default: print to stdout)").action((r,i)=>{let n;try{n=JSON.parse(
|
|
154
|
+
`,pathCount:o,operationCount:n,skipped:i}}function Tk(e){e.command("import").description("Import external definitions into FartherShore authoring").command("openapi").argument("<spec>","Path to an OpenAPI 3.x JSON document").description("Scaffold a path-first Business SDK route module from an OpenAPI spec").option("--out <file>","Write the generated module to this file (default: print to stdout)").action((r,i)=>{let n;try{n=JSON.parse(WR(r,"utf8"))}catch(l){process.stderr.write(`Failed to read/parse OpenAPI JSON at "${r}": ${l instanceof Error?l.message:String(l)}
|
|
155
155
|
(YAML is not supported yet \u2014 convert to JSON first.)
|
|
156
156
|
`),process.exitCode=1;return}if(!n.paths||Object.keys(n.paths).length===0){process.stderr.write(`No paths found in "${r}" \u2014 nothing to import.
|
|
157
|
-
`),process.exitCode=1;return}let{source:o,pathCount:a,operationCount:c,skipped:u}=
|
|
157
|
+
`),process.exitCode=1;return}let{source:o,pathCount:a,operationCount:c,skipped:u}=QR(n);if(c===0){process.stderr.write(`No supported operations found in "${r}" \u2014 nothing to import.
|
|
158
158
|
`+(u.length>0?`Skipped ${u.length} unsupported operation(s): ${u.join(", ")}.
|
|
159
159
|
`:"")),process.exitCode=1;return}u.length>0&&process.stderr.write(`Skipped ${u.length} unsupported operation(s) (FartherShore has no such method): ${u.join(", ")}.
|
|
160
|
-
`),i.out?(
|
|
160
|
+
`),i.out?(qR(i.out,o),process.stdout.write(`Wrote ${a} path(s) / ${c} operation(s) to ${i.out}
|
|
161
161
|
Import the exported route refs and grant them from fs.plan().
|
|
162
|
-
`)):process.stdout.write(o)})}var
|
|
163
|
-
`)}function je(e,t){let r;return t==null||t===""?r=q.dim("(unset)"):typeof t=="object"?r=JSON.stringify(t):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?r=String(t):r=JSON.stringify(t),` ${q.dim(e.padEnd(20))}${r}`}var We={stepName:28,phase:26,status:14,attempt:8,duration:10},Mn={eventType:28,occurredAt:24,payload:60},Fn={surface:24,status:14,delta:60};function
|
|
164
|
-
`)}function
|
|
165
|
-
`)}function
|
|
166
|
-
`)}function
|
|
167
|
-
`)}var Yp=["RUNNING","COMPLETED","FAILED","ROLLED_BACK","STALLED","REQUIRES_HUMAN_INTERVENTION","WAITING_FOR_APPROVAL","CANCELLED"];function
|
|
168
|
-
${n.items.length} executions${n.nextCursor?" (more available \u2014 pass --limit to see more)":""}`)))}),t.command("show <workflowExecutionId>").description("Show a single workflow execution: header, steps, events, convergence panel").action(async r=>{let i=await Ok(`/internal/admin/workflow/executions/${encodeURIComponent(r)}`);G(i),ce()!=="json"&&console.log(
|
|
162
|
+
`)):process.stdout.write(o)})}var XR="x-fs-surface",eC="cli",tC=["BusinessApplyWorkflow","RollbackWorkflow","StripeSyncWorkflow","WebhookDispatchWorkflow"];function nC(){let e=process.env.FARTHERSHORE_API_URL;if(!e)throw new b("FARTHERSHORE_API_URL is not set. Point it at the core base URL (e.g. https://core.farthershore.com) before running `farthershore workflows`.",void 0,{code:"ADMIN_API_URL_MISSING"});return e.replace(/\/+$/,"")}async function rC(){let e=process.env.FARTHERSHORE_SERVICE_JWT_PRIVATE_KEY_JWK,t=process.env.FARTHERSHORE_SERVICE_JWT_KID;if(!e||!t)throw new b("FARTHERSHORE_SERVICE_JWT_PRIVATE_KEY_JWK and FARTHERSHORE_SERVICE_JWT_KID must be set. This command authenticates against core's /internal/admin/workflow/* proxy with an Ed25519 service JWT (scope internal:admin) \u2014 the same unified service identity fs-admin uses.",void 0,{code:"SERVICE_JWT_KEYS_MISSING"});let r;try{r=JSON.parse(e)}catch{throw new b("FARTHERSHORE_SERVICE_JWT_PRIVATE_KEY_JWK is not valid JSON \u2014 it must be a JSON-encoded Ed25519 private JWK.",void 0,{code:"SERVICE_JWT_KEYS_INVALID"})}return d_({privateJwk:r,kid:t,sub:"fs-admin",aud:"core",scope:[Dm.internalAdmin]})}async function Ok(e){let t=nC(),r=await rC(),i=await fetch(`${t}${e}`,{method:"GET",headers:{"content-type":"application/json","x-fs-service-jwt":r,"x-admin-actor-id":"farthershore-cli",[XR]:eC}});if(!i.ok){let o=(await i.json().catch(()=>null))?.error;throw new b(o?.message??i.statusText,i.status,{code:o?.code,details:o?.details})}if(i.status!==204)return i.json()}function Qp(e){if(e==null)return"\u2014";if(e<1e3)return`${e}ms`;let t=e/1e3;if(t<60)return`${t.toFixed(1)}s`;let r=t/60;return r<60?`${r.toFixed(1)}m`:`${(r/60).toFixed(1)}h`}function Ak(e,t=new Date){let r=new Date(e.startedAt).getTime(),i=e.completedAt?new Date(e.completedAt).getTime():e.failedAt?new Date(e.failedAt).getTime():t.getTime();return Math.max(0,i-r)}function js(e){switch(e){case"COMPLETED":case"SUCCEEDED":case"CONVERGED":return q.green;case"RUNNING":case"PENDING":case"PAUSED":case"RETRYING":case"WAITING_FOR_APPROVAL":return q.yellow;case"FAILED":case"DIVERGED":case"STALLED":case"REQUIRES_HUMAN_INTERVENTION":case"TIMEOUT":return q.red;case"ROLLED_BACK":case"CANCELLED":case"COMPENSATED":return q.magenta;default:return t=>t}}function B(e,t){return e.length<=t?e.padEnd(t):t<=1?e.slice(0,t):`${e.slice(0,t-1)}\u2026`}var ae={id:30,type:24,business:18,status:16,phase:26,started:24,duration:10};function iC(e,t=new Date){let r=q.dim([B("ID",ae.id),B("TYPE",ae.type),B("BUSINESS",ae.business),B("STATUS",ae.status),B("PHASE",ae.phase),B("STARTED",ae.started),B("DURATION",ae.duration)].join(" ")),i=q.dim(["-".repeat(ae.id),"-".repeat(ae.type),"-".repeat(ae.business),"-".repeat(ae.status),"-".repeat(ae.phase),"-".repeat(ae.started),"-".repeat(ae.duration)].join(" ")),n=e.map(o=>{let a=Qp(Ak(o,t)),c=js(o.status)(B(o.status,ae.status));return[B(o.id,ae.id),B(o.workflowType,ae.type),B(o.businessId??"\u2014",ae.business),c,B(o.currentPhase??"\u2014",ae.phase),B(o.startedAt,ae.started),B(a,ae.duration)].join(" ")});return[r,i,...n].join(`
|
|
163
|
+
`)}function je(e,t){let r;return t==null||t===""?r=q.dim("(unset)"):typeof t=="object"?r=JSON.stringify(t):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?r=String(t):r=JSON.stringify(t),` ${q.dim(e.padEnd(20))}${r}`}var We={stepName:28,phase:26,status:14,attempt:8,duration:10},Mn={eventType:28,occurredAt:24,payload:60},Fn={surface:24,status:14,delta:60};function oC(e){if(e.length===0)return q.dim(" (no steps recorded)");let t=q.dim([B("STEP",We.stepName),B("PHASE",We.phase),B("STATUS",We.status),B("ATTEMPT",We.attempt),B("DURATION",We.duration)].join(" ")),r=e.map(i=>[B(i.stepName,We.stepName),B(i.phase,We.phase),js(i.status)(B(i.status,We.status)),B(String(i.attempt),We.attempt),B(Qp(i.durationMs),We.duration)].join(" "));return[t,...r].join(`
|
|
164
|
+
`)}function sC(e){return Object.keys(e).length===0?"(empty)":JSON.stringify(e)}function aC(e){if(e.length===0)return q.dim(" (no events recorded)");let t=q.dim([B("EVENT",Mn.eventType),B("OCCURRED AT",Mn.occurredAt),B("PAYLOAD",Mn.payload)].join(" ")),r=e.map(i=>[B(i.eventType,Mn.eventType),B(i.occurredAt,Mn.occurredAt),B(sC(i.payload),Mn.payload)].join(" "));return[t,...r].join(`
|
|
165
|
+
`)}function cC(e){if(e.length===0)return q.dim(" (no convergence state recorded)");let t=q.dim([B("SURFACE",Fn.surface),B("STATUS",Fn.status),B("DELTA",Fn.delta)].join(" ")),r=e.map(i=>[B(i.surface,Fn.surface),js(i.status)(B(i.status,Fn.status)),B(i.deltaDescription??"\u2014",Fn.delta)].join(" "));return[t,...r].join(`
|
|
166
|
+
`)}function uC(e){let{execution:t,steps:r,events:i,convergence:n}=e,o=[];return o.push(q.bold(`Workflow ${t.id}`)),o.push(je("type",t.workflowType)),o.push(je("status",js(t.status)(t.status))),o.push(je("currentPhase",t.currentPhase)),o.push(je("startedAt",t.startedAt)),o.push(je("completedAt",t.completedAt)),o.push(je("triggeredBy",t.triggeredBy)),o.push(je("correlationId",t.correlationId)),o.push(je("businessId",t.businessId)),o.push(je("duration",Qp(Ak(t)))),o.push(""),o.push(q.bold("Steps")),o.push(oC(r)),o.push(""),o.push(q.bold("Events")),o.push(aC(i)),o.push(""),o.push(q.bold("Convergence")),o.push(cC(n)),t.errorReason&&(o.push(""),o.push(q.bold(q.red("Error"))),o.push(je("reason",t.errorReason)),o.push(je("classification",t.errorClassification))),o.join(`
|
|
167
|
+
`)}var Yp=["RUNNING","COMPLETED","FAILED","ROLLED_BACK","STALLED","REQUIRES_HUMAN_INTERVENTION","WAITING_FOR_APPROVAL","CANCELLED"];function lC(e){if(!e)return 50;let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<=0)throw new b(`--limit must be a positive integer (got "${e}")`,void 0,{code:"INVALID_LIMIT"});return t}function dC(e){let t=new URLSearchParams;if(e.status){if(!Yp.includes(e.status))throw new b(`--status must be one of: ${Yp.join(", ")} (got "${e.status}")`,void 0,{code:"INVALID_STATUS"});t.set("status",e.status)}e.type&&t.set("workflowType",e.type),e.business&&t.set("businessId",e.business),t.set("limit",String(lC(e.limit)));let r=t.toString();return r?`?${r}`:""}function Rk(e){let t=e.command("workflows").description("Inspect durable lifecycle workflow executions (list / show)");t.command("ls").description("List workflow executions as a table").option("--status <status>",`Filter by status (one of: ${Yp.join(", ")})`).option("--type <type>",`Filter by workflow type (e.g. ${tC.join(", ")})`).option("--business <businessId>","Filter by businessId").option("--limit <N>","Maximum number of rows to return (default 50)").action(async r=>{let i=dC(r),n=await Ok(`/internal/admin/workflow/executions${i}`);G(n),ce()!=="json"&&(console.log(iC(n.items)),console.log(q.dim(`
|
|
168
|
+
${n.items.length} executions${n.nextCursor?" (more available \u2014 pass --limit to see more)":""}`)))}),t.command("show <workflowExecutionId>").description("Show a single workflow execution: header, steps, events, convergence panel").action(async r=>{let i=await Ok(`/internal/admin/workflow/executions/${encodeURIComponent(r)}`);G(i),ce()!=="json"&&console.log(uC(i))})}import{spawn as mC}from"node:child_process";import{existsSync as pC,mkdtempSync as fC,writeFileSync as gC}from"node:fs";import{tmpdir as hC}from"node:os";import{join as Bs,resolve as bC}from"node:path";var _C="https://core.farthershore.com";function vC(e,t){if(e.mock===!0)return{mock:!0};if(!(e.live===!0||e.coreUrl!=null||t.VITE_FS_CORE_URL!=null||e.clerkPublishableKey!=null||t.VITE_CLERK_PUBLISHABLE_KEY!=null))return{mock:!0};let i=e.coreUrl??t.VITE_FS_CORE_URL??_C,n=e.clerkPublishableKey??t.VITE_CLERK_PUBLISHABLE_KEY,o=e.clerkSignInUrl??t.VITE_CLERK_SIGN_IN_URL,a=e.clerkSatelliteDomain??t.VITE_CLERK_SATELLITE_DOMAIN,c={};return n&&(c.publishableKey=n),o&&(c.signInUrl=o),a&&(c.satelliteDomain=a),{coreUrl:i,...Object.keys(c).length>0?{clerk:c}:{}}}function yC(e){return`<script>window.__FS_CONFIG__ = ${JSON.stringify(e).replace(/</g,"\\u003c")};</script>`}function kC(e){return`import { defineConfig, mergeConfig, loadConfigFromFile } from "vite";
|
|
169
169
|
|
|
170
170
|
// Generated by \`farthershore frontend preview\` \u2014 injects window.__FS_CONFIG__
|
|
171
171
|
// (the edge does this in production). Throwaway; safe to delete.
|
|
@@ -204,7 +204,7 @@ export default defineConfig(async (configEnv) => {
|
|
|
204
204
|
],
|
|
205
205
|
});
|
|
206
206
|
});
|
|
207
|
-
`}function
|
|
207
|
+
`}function IC(e){let t=fC(Bs(hC(),"fs-frontend-preview-")),r=Bs(t,"vite.preview.config.mjs");return gC(r,e,"utf-8"),r}function EC(e,t,r={}){let i=r.existsImpl??pC,n=r.writeTempConfig??IC,o=bC(e.dir??"frontend");if(!i(Bs(o,"package.json")))throw new b(`No frontend/ project at ${o} (expected ${Bs(o,"package.json")}). Run from a business repo root, or pass --dir <path>.`,void 0,{code:"FRONTEND_PREVIEW_NO_PROJECT"});let a=vC(e,t),c=SC(e),u=yC(a),l=kC(u),d=n(l),g=r.mode??"dev",p=g==="preview"?["vite","preview","--config",d]:["vite","--config",d];return e.port&&p.push("--port",e.port),{cwd:o,config:a,configPath:d,command:"npx",args:p,buildArgs:g==="preview"?["vite","build","--config",d]:null,warnings:c}}function SC(e){if(e.mock!==!0)return[];let t=[e.coreUrl?"--core-url":void 0,e.clerkPublishableKey?"--clerk-publishable-key":void 0,e.clerkSignInUrl?"--clerk-sign-in-url":void 0,e.clerkSatelliteDomain?"--clerk-satellite-domain":void 0].filter(r=>r!==void 0);return t.length===0?[]:[`frontend preview: --mock ignores ${t.join(", ")}; injecting { mock: true } only.`]}function Ck(e,t={}){let r=e.commands.find(n=>n.name()==="frontend")??e.command("frontend").description("Managed Frontend Hosting: status/rollback/local preview (deploys are Git-triggered)"),i=(n,o,a)=>r.command(n).description(o).option("--dir <path>","Frontend project directory (default: ./frontend)").option("--mock","Force mock mode (this is already the default when no Core/Clerk config is given)").option("--live","Preview against the real platform (production Core URL) instead of mock mode").option("--core-url <url>","Platform Core base URL to shim (default: VITE_FS_CORE_URL)").option("--clerk-publishable-key <key>","Clerk publishable key for clerk-strategy envs (default: VITE_CLERK_PUBLISHABLE_KEY)").option("--clerk-sign-in-url <url>","Clerk hosted sign-in URL (default: VITE_CLERK_SIGN_IN_URL)").option("--clerk-satellite-domain <domain>","Clerk satellite domain (default: VITE_CLERK_SATELLITE_DOMAIN)").option("--port <port>","Dev server port (passed to vite)").addHelpText("after",`
|
|
208
208
|
Examples:
|
|
209
209
|
farthershore frontend dev # HOT-RELOADING dev server, mock mode (default)
|
|
210
210
|
farthershore frontend preview # production build served as-is, mock mode
|
|
@@ -216,11 +216,11 @@ Mock mode (the default with no Core/Clerk config):
|
|
|
216
216
|
Injects { mock: true } \u2014 every page renders with placeholder data and
|
|
217
217
|
bypassed auth for local inspection. Point at a real platform with
|
|
218
218
|
--live, --core-url, or VITE_FS_CORE_URL.
|
|
219
|
-
`).action(async u=>{let l=yC(u,process.env,{...t,mode:n});for(let S of l.warnings)Hr(S);let d=l.config.mock===!0,g=d?`${a} ${l.cwd} with window.__FS_CONFIG__ shimmed ({ mock: true }).`:`${a} ${l.cwd} with window.__FS_CONFIG__ shimmed (coreUrl ${l.config.coreUrl}).`;if(G({action:n==="dev"?"frontend_dev":"frontend_preview",dir:l.cwd,mock:d,coreUrl:l.config.coreUrl??null,clerk:l.config.clerk??null,warnings:l.warnings,command:`${l.command} ${l.args.join(" ")}`},g),t.spawnVite===!1||ce()==="json")return;d&&we("Mock mode: placeholder data, auth bypassed \u2014 for local page inspection only.");let p=t.spawnImpl??uC,_=(S,f)=>new Promise(m=>{let k=p(S,f,{cwd:l.cwd,stdio:"inherit"});k.on("close",A=>m(A??0)),k.on("error",A=>{vp(`vite failed to start: ${A.message}`),m(1)})});if(l.buildArgs&&(we(`Building production bundle in ${l.cwd}\u2026`),await _(l.command,l.buildArgs)!==0)){vp("vite build failed; not starting the preview server.");return}we(`Starting vite ${n==="dev"?"dev server (hot reload)":"preview server (production bundle)"} in ${l.cwd}. Ctrl-C to stop.`),await _(l.command,l.args)});i("dev","Run the frontend's HOT-RELOADING `vite` dev server with an injected window.__FS_CONFIG__ shim (mock mode by default) \u2014 for active editing.","Developing"),i("preview","Build the frontend and serve the BUSINESSION bundle via `vite preview` with the same shim (mock mode by default) \u2014 final as-shipped inspection.","Previewing")}var Xp=[{opKey:"apply_timeline.list",operationClass:"operate",sideEffect:"read",cli:{group:"apply-timeline",command:"list",summary:"List a business's Apply Timeline: repo-triggered manifest applies (PRs, pushes, releases), checks, semantic diffs, and apply phases.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope: production, all, or a preview environment name."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listApplyTimeline(i,{env:t.env});r({businessId:i,count:n.data.length,applyTimeline:n.data},`${n.data.length} apply timeline entr(ies)`)}},mcp:null},{opKey:"apply_timeline.read",operationClass:"operate",sideEffect:"read",cli:{group:"apply-timeline",command:"inspect",summary:"Inspect one Apply Timeline entry by id, release tag, PR number, branch, or commit SHA.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"selector",kind:"positional",token:"<id|tag|pr|branch|sha>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope: production, all, or a preview environment name."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=String(t.selector),o=await e.listApplyTimeline(i,{env:t.env}),a=o.data.find(c=>c.id===n)??o.data.find(c=>c.releaseTag===n)??o.data.find(c=>c.prNumber!==null&&String(c.prNumber)===n)??o.data.find(c=>c.branch===n)??o.data.find(c=>c.commitSha.startsWith(n));if(!a)throw new b(`Apply timeline entry ${n} was not found.`,404,{code:"APPLY_TIMELINE_ENTRY_NOT_FOUND"});r({businessId:i,applyTimelineEntry:a},`Apply timeline entry ${a.id}: ${a.status}`)}},mcp:null}];function Pk(e,t){L(e,t,Xp)}var Xr="The business id or slug.",ei="The subscriber (client org) id \u2014 from `consumer list`.",ef="The governed ChangeSet id.",Ms={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Xr,resolveBusiness:!0},Fs={field:"subscriberId",kind:"positional",token:"<subscriberId>",describe:ei},Nk={field:"changeSetId",kind:"positional",token:"<changeSetId>",describe:ef},Ks={field:"env",kind:"flag",token:"--env <env>",describe:"Environment name/id to scope the proposal to."};function IC(e){let t;try{t=JSON.parse(e)}catch{throw new b("--operations must be a JSON array of governed operations.",0,{code:"INVALID_OPERATIONS"})}if(!Array.isArray(t))throw new b("--operations must be a JSON array.",0,{code:"INVALID_OPERATIONS"});return t}async function Hs(e,t){return F(e,t)}var tf=[{opKey:"change_set.propose",operationClass:"operate",sideEffect:"write",cli:{group:"proposal",command:"create",summary:"Propose a governed ChangeSet against a subscriber (agent/builder proposer; a human approves + applies in the portal)",idempotent:!0,args:[Ms,Fs,{field:"intent",kind:"flag",token:"--intent <intent>",describe:"Human-readable description of the proposed change.",required:!0},{field:"operations",kind:"flag",token:"--operations <json>",describe:"JSON array of governed operations (e.g. update_role_permissions).",required:!0,parser:e=>IC(e)},Ks],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.subscriberId,c=await e.proposeConsumerChangeSet(o,a,{intent:t.intent,operations:t.operations,...r.idempotencyKey?{idempotencyKey:r.idempotencyKey}:{}},{env:t.env},r);n(c)||i(c,"ChangeSet proposed")}},mcp:{tool:"fs_proposal_create",title:"Propose a governed ChangeSet",description:"Propose a governed ChangeSet against a subscriber's live RBAC state (Agent Proposal Flow). Creates a DRAFT proposal that a HUMAN in the subscriber org must preview, approve, and apply in the portal \u2014 an agent can propose but never self-approve or apply. Operate-class live-state action; does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),intent:s.string().describe("Human-readable description of the proposed change."),operations:s.array(s.record(s.string(),s.unknown())).describe("Governed operations, e.g. [{ type: 'update_role_permissions', schemaVersion: 1, target: { resourceType: 'subscriber_business_role', resourceId: '<roleKey>' }, payload: { permissions: [...] } }]."),env:s.string().optional().describe("Environment name/id to scope the proposal to."),idempotencyKey:s.string().optional().describe("Replay-safe idempotency key for the proposal.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.proposeConsumerChangeSet(r,t.subscriberId,{intent:t.intent,operations:t.operations,...t.idempotencyKey?{idempotencyKey:t.idempotencyKey}:{}},{env:t.env})}}},{opKey:"change_set.preview",operationClass:"operate",sideEffect:"write",cli:{group:"proposal",command:"preview",summary:"Simulate + store a preview on a proposed ChangeSet (rides the propose authority)",args:[Ms,Fs,Nk,Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.previewConsumerChangeSet(i,t.subscriberId,t.changeSetId,{env:t.env});r(n,"ChangeSet preview stored")}},mcp:{tool:"fs_proposal_preview",title:"Preview a proposed ChangeSet",description:"Simulate the impact of a proposed ChangeSet and store the preview (Agent Proposal Flow). Enforced by the same authority as propose \u2014 there is no separate preview permission. Read-shaped but writes the stored simulation; does not apply the change.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),changeSetId:s.string().describe(ef),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.previewConsumerChangeSet(r,t.subscriberId,t.changeSetId,{env:t.env})}}},{opKey:"change_set.proposal_list",operationClass:"operate",sideEffect:"read",cli:{group:"proposal",command:"list",summary:"List governed ChangeSets proposed against a subscriber",args:[Ms,Fs,{field:"status",kind:"flag",token:"--status <status>",describe:"Filter by status (e.g. draft, approval_required)."},Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listConsumerChangeSets(i,t.subscriberId,{env:t.env,status:t.status});r(n,"Proposed ChangeSets")}},mcp:{tool:"fs_proposal_list",title:"List proposed ChangeSets",description:"List governed ChangeSets proposed against a subscriber (Agent Proposal Flow). Read-only; use it to discover proposal ids + their status before previewing.",annotations:{readOnlyHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),status:s.string().optional().describe("Filter by status (e.g. draft, approval_required)."),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.listConsumerChangeSets(r,t.subscriberId,{env:t.env,status:t.status})}}},{opKey:"change_set.proposal_read",operationClass:"operate",sideEffect:"read",cli:{group:"proposal",command:"get",summary:"Read one governed ChangeSet proposed against a subscriber",args:[Ms,Fs,Nk,Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getConsumerChangeSet(i,t.subscriberId,t.changeSetId,{env:t.env});r(n,"ChangeSet")}},mcp:{tool:"fs_proposal_get",title:"Read a proposed ChangeSet",description:"Read one governed ChangeSet proposed against a subscriber (Agent Proposal Flow) \u2014 its operations, risk, simulation, approvals, and status. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),changeSetId:s.string().describe(ef),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.getConsumerChangeSet(r,t.subscriberId,t.changeSetId,{env:t.env})}}}];function Dk(e,t){L(e,t,tf)}var Mt="The business id or slug.",ti="The webhook endpoint id.",Kn={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Mt,resolveBusiness:!0},Vs={field:"webhookId",kind:"positional",token:"<webhookId>",describe:ti},zk={field:"events",kind:"flag",token:"--events <events>",describe:"Comma-separated event names, e.g. subscription.created,payment.failed"},Uk={field:"limit",kind:"flag",token:"--limit <n>",describe:"Max rows to return."};function Lk(e){if(typeof e!="string")return;let t=e.split(",").map(r=>r.trim()).filter(r=>r.length>0);return t.length>0?t:void 0}function jk(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:[]}function Bk(e,t){if(!e||typeof e!="object")return t;let r=e;return typeof r.total=="number"?r.total:typeof r.pagination?.total=="number"?r.pagination.total:t}function EC(e){let t=e.enable===!0,r=e.disable===!0;if(t&&r)throw new b("Pass either --enable or --disable, not both.",400,{code:"VALIDATION_ERROR",param:"enabled"});if(t)return!0;if(r)return!1}async function Hn(e,t){return F(e,t)}var nf=[{opKey:"webhook.read",operationClass:"operate",sideEffect:"read",cli:{group:"webhook",command:"list",summary:"List API-managed webhook endpoints",args:[Kn,Uk],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.managementListWebhooks(i,{limit:t.limit}),o=jk(n);r({businessId:i,count:o.length,total:Bk(n,o.length),webhooks:o},`${o.length} webhook(s)`)}},mcp:{tool:"fs_webhook_list",title:"List webhook endpoints",description:"List API-managed outbound webhook endpoints for a business. Read-only; signing secrets are never returned.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementListWebhooks(r,{limit:t.limit})}}},{opKey:"webhook.create",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"create",summary:"Create an API-managed webhook endpoint",idempotent:!0,args:[Kn,{field:"url",kind:"flag",token:"--url <url>",describe:"HTTPS receiver URL.",required:!0},{...zk,required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=Lk(t.events);if(!o)throw new b("At least one webhook event is required.",400,{code:"VALIDATION_ERROR",param:"events"});let a=await e.managementCreateWebhook(t.businessId,{url:t.url,events:o},r);n(a)||i({businessId:t.businessId,webhook:a.data},"Webhook endpoint created")}},mcp:{tool:"fs_webhook_create",title:"Create webhook endpoint",description:"Create an API-managed outbound webhook endpoint for a business. Returns the signing secret once. If webhooks are declared under business/, Core returns 409 MANAGED_BY_CODE and the repo must be edited instead.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},returnsOneTimeSecret:!0,inputSchema:{businessId:s.string().describe(Mt),url:s.string().url().describe("HTTPS receiver URL."),events:s.array(s.string()).min(1).describe("Webhook event names to subscribe to."),...ue},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementCreateWebhook(r,{url:t.url,events:t.events},{idempotencyKey:t.idempotencyKey})}}},{opKey:"webhook.update",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"update",summary:"Update a webhook endpoint's events or enabled state",idempotent:!0,args:[Kn,Vs,zk,{field:"enable",kind:"flag",token:"--enable",describe:"Enable delivery for this endpoint."},{field:"disable",kind:"flag",token:"--disable",describe:"Disable delivery for this endpoint."}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=Lk(t.events),a=EC(t);if(!o&&a===void 0)throw new b("Pass --events, --enable, or --disable to update a webhook.",400,{code:"VALIDATION_ERROR"});let c=await e.managementUpdateWebhook(t.businessId,t.webhookId,{...o?{events:o}:{},...a!==void 0?{enabled:a}:{}},r);n(c)||i({businessId:t.businessId,webhook:c.data},"Webhook endpoint updated")}},mcp:{tool:"fs_webhook_update",title:"Update webhook endpoint",description:"Update an API-managed webhook endpoint's event list and/or enabled state. URL and secret are immutable; create a new endpoint for those changes.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti),events:s.array(s.string()).min(1).optional().describe("Replacement webhook event list."),enabled:s.boolean().optional().describe("Enable or disable delivery."),...ue},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementUpdateWebhook(r,t.webhookId,{events:t.events,enabled:t.enabled},{idempotencyKey:t.idempotencyKey})}}},{opKey:"webhook.delete",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"delete",summary:"Delete an API-managed webhook endpoint. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm webhook endpoint deletion.",args:[Kn,Vs],handler:async({client:e,args:t,emit:r})=>{await e.managementDeleteWebhook(t.businessId,t.webhookId),r({businessId:t.businessId,deleted:t.webhookId},"Webhook endpoint deleted")}},mcp:{tool:"fs_webhook_delete",title:"Delete webhook endpoint",description:"Delete an API-managed outbound webhook endpoint. If webhooks are repo-managed, Core returns 409 MANAGED_BY_CODE.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti)},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementDeleteWebhook(r,t.webhookId)}}},{opKey:"webhook.test",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"test",summary:"Send a signed test event to a webhook endpoint",args:[Kn,Vs],handler:async({client:e,args:t,emit:r})=>{let i=await e.managementTestWebhook(t.businessId,t.webhookId);r({businessId:t.businessId,result:i},"Webhook test sent")}},mcp:{tool:"fs_webhook_test",title:"Test webhook endpoint",description:"Send a signed test event to an API-managed webhook endpoint and persist the delivery result.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti)},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementTestWebhook(r,t.webhookId)}}},{opKey:"webhook.delivery.read",operationClass:"operate",sideEffect:"read",cli:{group:"webhook",command:"deliveries",summary:"List recent delivery attempts for a webhook endpoint",args:[Kn,Vs,Uk],handler:async({client:e,args:t,emit:r})=>{let i=await e.managementListWebhookDeliveries(t.businessId,t.webhookId,{limit:t.limit}),n=jk(i);r({businessId:t.businessId,webhookId:t.webhookId,count:n.length,total:Bk(i,n.length),deliveries:n},`${n.length} delivery attempt(s)`)}},mcp:{tool:"fs_webhook_deliveries",title:"List webhook deliveries",description:"List recent delivery attempts for a webhook endpoint. Payload and response body are intentionally omitted by Core.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementListWebhookDeliveries(r,t.webhookId,{limit:t.limit})}}}];function Mk(e,t){L(e,t,nf)}var Vn="The business id or slug.",kt="operator",ni={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Vn,resolveBusiness:!0};async function ri(e,t){return F(e,t)}var rf=[{opKey:"agents.list",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"list",summary:"List a business's operating agents + enableable roles",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderListAgents(i);r({businessId:i,...n},`${n.agents.length} agent(s) \u2014 enableable roles: ${n.availableRoles.join(", ")}`)}},mcp:{tool:"fs_agents_list",title:"List operating agents",description:"The agent roster for a business: the enabled/disabled Operator plus any roles that can still be enabled. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderListAgents(r)}}},{opKey:"agents.status",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"status",summary:"The Operator's activation state, recent runs, and usage totals",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderAgentStatus(i,kt);r({businessId:i,...n},`operator: ${n.enabled?"ENABLED":"disabled"} \u2014 last run ${n.lastRunAt??"never"}; ${n.recentRuns.length} recent run(s); ${n.usage.tokensIn+n.usage.tokensOut} tokens, ${n.usage.actionsCount} action(s) lifetime`)}},mcp:{tool:"fs_agents_status",title:"Get the Operator's status",description:"The Operator's activation state, recent run history (newest-first), and lifetime usage totals (LLM tokens + actions). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderAgentStatus(r,kt)}}},{opKey:"agents.runs.show",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"runs-show",summary:"One run's full paper trail: trace, launches, action receipts",args:[ni,{field:"runId",kind:"positional",token:"<runId>",describe:"The agent run id (from `agents status`)."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderAgentRunDetail(i,kt,t.runId),o=n.launches?.length??0,a=n.actions?.length??0;r({businessId:i,...n},`run ${n.run?.id}: ${o} launch(es), ${a} action receipt(s)`)}},mcp:{tool:"fs_agents_run_show",title:"Get one agent run's paper trail",description:"One run's full audit view: the orchestrator's trace summary (composed launches, verify flags, catalog changes), the per-launch performance ledger, and every platform-action receipt. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn),runId:s.string().describe("The agent run id.")},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderAgentRunDetail(r,kt,t.runId)}}},{opKey:"agents.enable",operationClass:"operate",sideEffect:"write",cli:{group:"agents",command:"enable",summary:"Turn the Operator on (creates it on first enable)",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderConfigureAgent(i,kt,{enabled:!0});r({businessId:i,agent:n},"operator ENABLED \u2014 it runs autonomously on its cadence and posts to the bulletin; usage bills while enabled")}},mcp:{tool:"fs_agents_enable",title:"Enable the Operator",description:"Turn the business's Operator agent on (created on first enable). It runs autonomously on its cadence; agent-work billing accrues while enabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderConfigureAgent(r,kt,{enabled:!0})}}},{opKey:"agents.disable",operationClass:"operate",sideEffect:"write",cli:{group:"agents",command:"disable",summary:"Turn the Operator off (stops runs + billing)",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderConfigureAgent(i,kt,{enabled:!1});r({businessId:i,agent:n},"operator disabled \u2014 no further runs; billing stops accruing")}},mcp:{tool:"fs_agents_disable",title:"Disable the Operator",description:"Turn the Operator off: the dispatcher stops scheduling runs and agent-work billing stops accruing. Re-enable at any time.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderConfigureAgent(r,kt,{enabled:!1})}}}];function Fk(e,t){L(e,t,rf)}var ii="The business id or slug.",Ws="The bulletin post id.",Gs={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:ii,resolveBusiness:!0},of={field:"postId",kind:"positional",token:"<postId>",describe:Ws};async function Zs(e,t){return F(e,t)}var sf=[{opKey:"bulletin.list",operationClass:"operate",sideEffect:"read",cli:{group:"bulletin",command:"list",summary:"List the agents' bulletin feed (trends + change requests)",args:[Gs,{field:"kind",kind:"flag",token:"--kind <kind>",describe:"Filter: trend | insight | change_request"},{field:"status",kind:"flag",token:"--status <status>",describe:"Filter: open | acknowledged | resolved"},{field:"limit",kind:"flag",token:"--limit <n>",describe:"Max rows to return."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderListBulletin(i,{kind:t.kind,status:t.status,limit:t.limit});r({businessId:i,...n},`${n.items.length} post(s)${n.nextCursor?" (more available)":""}`)}},mcp:{tool:"fs_bulletin_list",title:"List bulletin posts",description:"The agents' bulletin feed for a business: trend/insight posts (aggregated data + deltas) and change_request posts (the coding agent's backlog \u2014 filter --kind change_request --status open). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),kind:s.enum(["trend","insight","change_request"]).optional().describe("Filter by post kind."),status:s.enum(["open","acknowledged","resolved"]).optional().describe("Filter by post status."),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderListBulletin(r,{kind:t.kind,status:t.status,limit:t.limit})}}},{opKey:"bulletin.read",operationClass:"operate",sideEffect:"read",cli:{group:"bulletin",command:"show",summary:"Show one bulletin post (full body + data payload)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderGetBulletinPost(i,t.postId);r({businessId:i,post:n},`[${n.kind}] ${n.title} \u2014 ${n.status}${n.changeSetId?` (changeSet ${n.changeSetId})`:""}`)}},mcp:{tool:"fs_bulletin_show",title:"Show a bulletin post",description:"One bulletin post in full: markdown body, the dataJson payload backing the claim, and for change requests the referenced ChangeSet id + proposal. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderGetBulletinPost(r,t.postId)}}},{opKey:"bulletin.ack",operationClass:"operate",sideEffect:"write",cli:{group:"bulletin",command:"ack",summary:"Acknowledge a post (the coding agent picked it up)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderSetBulletinStatus(i,t.postId,"acknowledged");r({businessId:i,post:n},`Post acknowledged: ${n.title}`)}},mcp:{tool:"fs_bulletin_ack",title:"Acknowledge a bulletin post",description:"Mark a bulletin post acknowledged \u2014 the hand-off signal that the coding agent (or builder) has picked the item up. Forward-only; idempotent on an already-acknowledged post.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderSetBulletinStatus(r,t.postId,"acknowledged")}}},{opKey:"bulletin.resolve",operationClass:"operate",sideEffect:"write",cli:{group:"bulletin",command:"resolve",summary:"Resolve a post (the work landed)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderSetBulletinStatus(i,t.postId,"resolved");r({businessId:i,post:n},`Post resolved: ${n.title}`)}},mcp:{tool:"fs_bulletin_resolve",title:"Resolve a bulletin post",description:"Mark a bulletin post resolved \u2014 the referenced work landed (or the trend was addressed). Terminal state.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderSetBulletinStatus(r,t.postId,"resolved")}}}];function Kk(e,t){L(e,t,sf)}var Gn="The business id or slug.",Js="The promo code id.",cf=["percent_off","amount_off","free_months"],oi="promo-code",si={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Gn,resolveBusiness:!0},af={field:"promoCodeId",kind:"positional",token:"<promoCodeId>",describe:Js},Hk={field:"plan",kind:"flag",token:"--plan <planId>",describe:"Limit to a plan id. Repeatable. Omit for all launch plans; use --all-plans on update to clear scoped plans.",parser:(e,t)=>[...t,e],defaultValue:[]};function Vk(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(cf.includes(t))return t;throw new b(`Invalid promo code kind "${e}". Use percent_off, amount_off, or free_months.`,400,{code:"INVALID_PROMO_CODE_KIND",param:"kind"})}function Zn(e,t){if(t===void 0)return;let r=typeof t=="number"?t:typeof t=="string"&&/^\d+$/.test(t.trim())?Number.parseInt(t,10):Number.NaN;if(!Number.isInteger(r)||r<=0)throw new b(`${e} must be a positive integer.`,400,{code:"INVALID_PROMO_CODE_FIELD",param:e});return r}function ci(e){return typeof e=="string"&&e.length>0?e:void 0}function Gk(e,t){let r=Zn("percent",e.percent),i=Zn("amountCents",e.amountCents);if(r!==void 0&&i!==void 0)throw new b("Pass either --percent or --amount-cents, not both.",400,{code:"CONFLICTING_PROMO_AMOUNT_FLAGS",param:"amount"});if(t==="percent_off"){if(r===void 0)throw new b("percent_off promo codes require --percent.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"percent"});if(r>100)throw new b("--percent must be between 1 and 100.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"percent"});return r}if(t==="amount_off"){if(i===void 0)throw new b("amount_off promo codes require --amount-cents.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"amountCents"});return i}if(t==="free_months"&&(r!==void 0||i!==void 0))throw new b("free_months promo codes do not accept --percent or --amount-cents.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"amount"});return r??i}function Zk(e){let t=e.plan??[];if(e.allPlans===!0&&t.length>0)throw new b("Pass either --plan or --all-plans, not both.",400,{code:"CONFLICTING_PROMO_PLAN_FLAGS",param:"plan"});return e.allPlans===!0?[]:t.length>0?t:void 0}function SC(e){let t=Vk(e.kind);if(!t)throw new b("Promo code kind is required.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"kind"});let r=Zn("durationMonths",e.durationMonths);if(r===void 0)throw new b("--duration-months is required.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"durationMonths"});let i=Zk(e);return{code:String(e.code),kind:t,amount:Gk(e,t),durationMonths:r,...i!==void 0?{applicablePlanIds:i}:{},maxRedemptions:Zn("maxRedemptions",e.maxRedemptions),activeFrom:ci(e.activeFrom),activeUntil:ci(e.activeUntil)}}function wC(e){let t=Vk(e.kind),r=Zn("durationMonths",e.durationMonths),i=Zn("maxRedemptions",e.maxRedemptions),n=Zk(e);if(e.code!==void 0||t!==void 0||e.percent!==void 0||e.amountCents!==void 0||r!==void 0||i!==void 0||e.clearMaxRedemptions===!0||e.activeFrom!==void 0||e.activeUntil!==void 0||e.clearActiveFrom===!0||e.clearActiveUntil===!0||n!==void 0){if(t===void 0)throw new b("Promo-code spec updates rotate the Stripe coupon, so pass the complete spec: --kind plus --duration-months and the required amount flag for that kind.",400,{code:"PROMO_CODE_UPDATE_REQUIRES_FULL_SPEC",param:"kind"});if(r===void 0)throw new b("Promo-code spec updates require --duration-months.",400,{code:"PROMO_CODE_UPDATE_REQUIRES_FULL_SPEC",param:"durationMonths"})}let a={},c=ci(e.code);c!==void 0&&(a.code=c),t!==void 0&&(a.kind=t);let u=Gk(e,t);if(u!==void 0&&(a.amount=u),r!==void 0&&(a.durationMonths=r),i!==void 0&&(a.maxRedemptions=i),e.clearMaxRedemptions===!0&&(a.maxRedemptions=null),n!==void 0&&(a.applicablePlanIds=n),e.activeFrom!==void 0&&(a.activeFrom=ci(e.activeFrom)??null),e.activeUntil!==void 0&&(a.activeUntil=ci(e.activeUntil)??null),e.clearActiveFrom===!0&&(a.activeFrom=null),e.clearActiveUntil===!0&&(a.activeUntil=null),Object.keys(a).length===0)throw new b("No promo-code fields to update. Pass --code, --kind, amount, duration, plan, status-window, or redemption flags.",400,{code:"PROMO_CODE_UPDATE_NO_FIELDS"});return a}async function ai(e,t){return F(e,t)}function qs(e){return{status:e}}var uf=[{opKey:"promo_code.read",operationClass:"operate",sideEffect:"read",cli:{group:oi,command:"list",summary:"List API-managed promo codes for checkout",args:[si],handler:async({client:e,args:t,emit:r})=>{let i=await e.listPromoCodes(t.businessId);r({businessId:t.businessId,count:i.length,promoCodes:i},`${i.length} promo code(s)`)}},mcp:{tool:"fs_promo_code_list",title:"List promo codes",description:"List API-managed promo codes for a business. Promo codes are checkout operational state, not repo-authored Business SDK state.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.listPromoCodes(r)}}},{opKey:"promo_code.create",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"create",summary:"Create an API-managed checkout promo code",args:[si,{field:"code",kind:"flag",token:"--code <code>",describe:"Customer-entered promo code.",required:!0},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"percent_off, amount_off, or free_months.",required:!0},{field:"percent",kind:"flag",token:"--percent <n>",describe:"Percent discount for percent_off promos."},{field:"amountCents",kind:"flag",token:"--amount-cents <cents>",describe:"Fixed discount in cents for amount_off promos."},{field:"durationMonths",kind:"flag",token:"--duration-months <n>",describe:"Discount duration in months.",required:!0},{field:"maxRedemptions",kind:"flag",token:"--max-redemptions <n>",describe:"Optional maximum redemption count."},{field:"activeFrom",kind:"flag",token:"--active-from <iso>",describe:"Optional ISO-8601 activation timestamp."},{field:"activeUntil",kind:"flag",token:"--active-until <iso>",describe:"Optional ISO-8601 expiration timestamp."},Hk],handler:async({client:e,args:t,emit:r})=>{let i=await e.createPromoCode(t.businessId,SC(t));r({businessId:t.businessId,promoCode:i},"Promo code created")}},mcp:{tool:"fs_promo_code_create",title:"Create promo code",description:"Create an API-managed checkout promo code. Use percent for percent_off, amountCents for amount_off, and no amount for free_months.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Gn),code:s.string().min(1).max(64),kind:s.enum(cf),percent:s.number().int().min(1).max(100).optional(),amountCents:s.number().int().positive().optional(),durationMonths:s.number().int().min(1).max(24),maxRedemptions:s.number().int().positive().optional(),activeFrom:s.string().datetime().optional(),activeUntil:s.string().datetime().optional(),applicablePlanIds:s.array(s.string()).optional()},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.createPromoCode(r,{code:t.code,kind:t.kind,amount:t.kind==="percent_off"?t.percent:t.kind==="amount_off"?t.amountCents:void 0,durationMonths:t.durationMonths,maxRedemptions:t.maxRedemptions,activeFrom:t.activeFrom,activeUntil:t.activeUntil,applicablePlanIds:t.applicablePlanIds})}}},{opKey:"promo_code.update",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"update",summary:"Update an API-managed checkout promo code",args:[si,af,{field:"code",kind:"flag",token:"--code <code>",describe:"Replacement customer-entered promo code."},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"percent_off, amount_off, or free_months."},{field:"percent",kind:"flag",token:"--percent <n>",describe:"Percent discount for percent_off promos."},{field:"amountCents",kind:"flag",token:"--amount-cents <cents>",describe:"Fixed discount in cents for amount_off promos."},{field:"durationMonths",kind:"flag",token:"--duration-months <n>",describe:"Discount duration in months."},{field:"maxRedemptions",kind:"flag",token:"--max-redemptions <n>",describe:"Set maximum redemption count."},{field:"clearMaxRedemptions",kind:"flag",token:"--clear-max-redemptions",describe:"Clear the maximum redemption count."},{field:"activeFrom",kind:"flag",token:"--active-from <iso>",describe:"Set ISO-8601 activation timestamp."},{field:"clearActiveFrom",kind:"flag",token:"--clear-active-from",describe:"Clear activation timestamp."},{field:"activeUntil",kind:"flag",token:"--active-until <iso>",describe:"Set ISO-8601 expiration timestamp."},{field:"clearActiveUntil",kind:"flag",token:"--clear-active-until",describe:"Clear expiration timestamp."},Hk,{field:"allPlans",kind:"flag",token:"--all-plans",describe:"Clear plan scoping so the promo applies to all launch plans."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,wC(t));r({businessId:t.businessId,promoCode:i},"Promo code updated")}},mcp:{tool:"fs_promo_code_update",title:"Update promo code",description:"Update an API-managed checkout promo code. Spec changes rotate the Stripe coupon/promotion code behind the scenes.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js),code:s.string().min(1).max(64).optional(),kind:s.enum(cf).optional(),percent:s.number().int().min(1).max(100).optional(),amountCents:s.number().int().positive().optional(),durationMonths:s.number().int().min(1).max(24).optional(),maxRedemptions:s.number().int().positive().nullable().optional(),activeFrom:s.string().datetime().nullable().optional(),activeUntil:s.string().datetime().nullable().optional(),applicablePlanIds:s.array(s.string()).optional()},handler:async(e,t)=>{let r=await ai(e,t.businessId),i={code:t.code,kind:t.kind,amount:t.kind==="percent_off"?t.percent:t.kind==="amount_off"?t.amountCents:void 0,durationMonths:t.durationMonths,maxRedemptions:t.maxRedemptions,activeFrom:t.activeFrom,activeUntil:t.activeUntil,applicablePlanIds:t.applicablePlanIds};return e.updatePromoCode(r,t.promoCodeId,i)}}},{opKey:"promo_code.archive",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"archive",summary:"Archive a checkout promo code",args:[si,af],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,qs("ARCHIVED"));r({businessId:t.businessId,promoCode:i},"Promo code archived")}},mcp:{tool:"fs_promo_code_archive",title:"Archive promo code",description:"Archive an API-managed checkout promo code.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.updatePromoCode(r,t.promoCodeId,qs("ARCHIVED"))}}},{opKey:"promo_code.reactivate",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"reactivate",summary:"Reactivate an archived checkout promo code",args:[si,af],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,qs("ACTIVE"));r({businessId:t.businessId,promoCode:i},"Promo code reactivated")}},mcp:{tool:"fs_promo_code_reactivate",title:"Reactivate promo code",description:"Reactivate an archived API-managed checkout promo code.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.updatePromoCode(r,t.promoCodeId,qs("ACTIVE"))}}}];function Wk(e,t){L(e,t,uf)}var Wn="The business id or slug.",di="The subscriber id from `consumer list`.",ui={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Wn,resolveBusiness:!0},Ys={field:"subscriberId",kind:"positional",token:"<subscriberId>",describe:di},xC={field:"env",kind:"flag",token:"--env <env>",describe:"Environment name for preview-scoped consumers."},qk="The member's external identity id (Clerk userId) within the client org.",$C="Comma-separated business-role keys to set (replaces the current assignment; pass an empty string to clear).",TC={field:"userExternalId",kind:"positional",token:"<userExternalId>",describe:qk};function OC(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}var AC={field:"roles",kind:"flag",token:"--roles <roles>",describe:$C,required:!0,parser:e=>OC(e)};async function li(e,t){return F(e,t)}function RC(e){return Array.isArray(e)?e:[]}var lf=[{opKey:"consumer.read",operationClass:"operate",sideEffect:"read",cli:{group:"consumer",command:"list",summary:"List users/consumers for a business",args:[ui,xC],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=RC(await e.builderListConsumers(i,{env:t.env}));r({businessId:i,count:n.length,consumers:n},`${n.length} consumer(s)`)}},mcp:{tool:"fs_consumer_list",title:"List business consumers",description:"List users/consumers for a business. Read-only; use this to discover subscriber ids before blocking or removing a user.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Wn),env:s.string().optional().describe("Environment name for preview-scoped consumers.")},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderListConsumers(r,{env:t.env})}}},{opKey:"consumer.block",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"block",summary:"Block a user and revoke their active API keys",destructive:!0,yesMessage:"Blocking a user revokes active API keys. Pass --yes to confirm.",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderBlockConsumer(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer blocked: ${n}`)}},mcp:{tool:"fs_consumer_block",title:"Block business consumer",description:"Block a user/consumer for a business and revoke their active API keys. Destructive live-state operation; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderBlockConsumer(r,t.subscriberId)}}},{opKey:"consumer.migrate_latest",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"migrate-latest",summary:"Move one consumer to the active head of their plan lineage",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderMigrateConsumerToLatest(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer migration evaluated: ${n}`)}},mcp:{tool:"fs_consumer_migrate_latest",title:"Move consumer to latest plan",description:"Move one consumer onto the current head of their plan lineage immediately. Operates on live subscription state.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderMigrateConsumerToLatest(r,t.subscriberId)}}},{opKey:"consumer.remove",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"remove",summary:"Force-remove a user from a business",destructive:!0,yesMessage:"Removing a user tears down subscriptions, edge credentials, and related live state. Pass --yes to confirm.",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderRemoveConsumer(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer removed: ${n}`)}},mcp:{tool:"fs_consumer_remove",title:"Remove business consumer",description:"Force-remove a user/consumer from a business, tearing down subscriptions, edge credentials, and related live state. Destructive and irreversible; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderRemoveConsumer(r,t.subscriberId)}}},{opKey:"consumer.roles.assign",operationClass:"operate",sideEffect:"write",cli:{group:"consumer rbac",command:"assign",summary:"Replace a client-org member's Managed-RBAC business roles (builder support override)",args:[ui,Ys,TC,AC],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=t.userExternalId,a=t.roles,c=await e.builderAssignConsumerMemberRoles(i,n,o,a);r({businessId:i,subscriberId:n,membership:c},`Business roles set for ${o}: ${c.businessRoleKeys.length>0?c.businessRoleKeys.join(", "):"(none)"}`)}},mcp:{tool:"fs_consumer_rbac_assign",title:"Assign consumer member business roles",description:"Support override: replace a client-org member's Managed-RBAC business-role assignment on a business (set-replace \u2014 the given list becomes the member's full assignment; an empty list clears it). Role keys must exist in the org's role set. Live-state operation; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di),userExternalId:s.string().describe(qk),roles:s.array(s.string()).describe("Business-role keys to set (replaces the current assignment; [] clears it).")},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderAssignConsumerMemberRoles(r,t.subscriberId,t.userExternalId,t.roles)}}}];function Jk(e,t){L(e,t,lf)}var pf="The business id or slug.",ff="Preview environment slug or id (omit for Main).",Qk="Variable name, e.g. POSTHOG_TOKEN.",CC=s.enum(["PUBLIC","BUILD","RUNTIME"]),PC="Where the value goes. public = inlined into the frontend BUNDLE (publishable keys: PostHog project key, Stripe pk_, Sentry DSN); build = build environment only, leak-scanned out of the output; runtime = edge only, never reaches the browser.";async function NC(){if(process.stdin.isTTY)throw new b("Pipe the secret value via stdin. Never pass a secret as a command-line flag.",400,{code:"VARIABLE_STDIN_REQUIRED"});let e="";for await(let t of process.stdin)e+=Buffer.isBuffer(t)?t.toString("utf8"):String(t);return e.replace(/\r?\n$/,"")}var DC=NC;async function Qs(e,t,r){return r?Ln(e,t,r):void 0}var mi={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:pf,resolveBusiness:!0},df={field:"name",kind:"positional",token:"<name>",describe:Qk},Xs={field:"env",kind:"flag",token:"--env <slug>",describe:ff},zC={field:"delivery",kind:"flag",token:"--delivery <phase>",describe:"Private delivery boundary: build or runtime. Build values are leak-scanned from artifacts; runtime values are injected only by Gateway.",required:!0};function mf(e,t){return{businessId:e,operation:t}}function Yk(e){return{opKey:e==="set"?"business_variable.create":"business_variable.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:e,summary:e==="set"?"Create a write-only secret from stdin":"Rotate a write-only secret from stdin",helpTextAfter:`
|
|
219
|
+
`).action(async u=>{let l=EC(u,process.env,{...t,mode:n});for(let S of l.warnings)Hr(S);let d=l.config.mock===!0,g=d?`${a} ${l.cwd} with window.__FS_CONFIG__ shimmed ({ mock: true }).`:`${a} ${l.cwd} with window.__FS_CONFIG__ shimmed (coreUrl ${l.config.coreUrl}).`;if(G({action:n==="dev"?"frontend_dev":"frontend_preview",dir:l.cwd,mock:d,coreUrl:l.config.coreUrl??null,clerk:l.config.clerk??null,warnings:l.warnings,command:`${l.command} ${l.args.join(" ")}`},g),t.spawnVite===!1||ce()==="json")return;d&&we("Mock mode: placeholder data, auth bypassed \u2014 for local page inspection only.");let p=t.spawnImpl??mC,_=(S,f)=>new Promise(m=>{let k=p(S,f,{cwd:l.cwd,stdio:"inherit"});k.on("close",A=>m(A??0)),k.on("error",A=>{vp(`vite failed to start: ${A.message}`),m(1)})});if(l.buildArgs&&(we(`Building production bundle in ${l.cwd}\u2026`),await _(l.command,l.buildArgs)!==0)){vp("vite build failed; not starting the preview server.");return}we(`Starting vite ${n==="dev"?"dev server (hot reload)":"preview server (production bundle)"} in ${l.cwd}. Ctrl-C to stop.`),await _(l.command,l.args)});i("dev","Run the frontend's HOT-RELOADING `vite` dev server with an injected window.__FS_CONFIG__ shim (mock mode by default) \u2014 for active editing.","Developing"),i("preview","Build the frontend and serve the BUSINESSION bundle via `vite preview` with the same shim (mock mode by default) \u2014 final as-shipped inspection.","Previewing")}var Xp=[{opKey:"apply_timeline.list",operationClass:"operate",sideEffect:"read",cli:{group:"apply-timeline",command:"list",summary:"List a business's Apply Timeline: repo-triggered manifest applies (PRs, pushes, releases), checks, semantic diffs, and apply phases.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope: production, all, or a preview environment name."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listApplyTimeline(i,{env:t.env});r({businessId:i,count:n.data.length,applyTimeline:n.data},`${n.data.length} apply timeline entr(ies)`)}},mcp:null},{opKey:"apply_timeline.read",operationClass:"operate",sideEffect:"read",cli:{group:"apply-timeline",command:"inspect",summary:"Inspect one Apply Timeline entry by id, release tag, PR number, branch, or commit SHA.",args:[{field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0},{field:"selector",kind:"positional",token:"<id|tag|pr|branch|sha>"},{field:"env",kind:"flag",token:"--env <env>",describe:"Environment scope: production, all, or a preview environment name."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=String(t.selector),o=await e.listApplyTimeline(i,{env:t.env}),a=o.data.find(c=>c.id===n)??o.data.find(c=>c.releaseTag===n)??o.data.find(c=>c.prNumber!==null&&String(c.prNumber)===n)??o.data.find(c=>c.branch===n)??o.data.find(c=>c.commitSha.startsWith(n));if(!a)throw new b(`Apply timeline entry ${n} was not found.`,404,{code:"APPLY_TIMELINE_ENTRY_NOT_FOUND"});r({businessId:i,applyTimelineEntry:a},`Apply timeline entry ${a.id}: ${a.status}`)}},mcp:null}];function Pk(e,t){L(e,t,Xp)}var Xr="The business id or slug.",ei="The subscriber (client org) id \u2014 from `consumer list`.",ef="The governed ChangeSet id.",Ms={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Xr,resolveBusiness:!0},Fs={field:"subscriberId",kind:"positional",token:"<subscriberId>",describe:ei},Nk={field:"changeSetId",kind:"positional",token:"<changeSetId>",describe:ef},Ks={field:"env",kind:"flag",token:"--env <env>",describe:"Environment name/id to scope the proposal to."};function wC(e){let t;try{t=JSON.parse(e)}catch{throw new b("--operations must be a JSON array of governed operations.",0,{code:"INVALID_OPERATIONS"})}if(!Array.isArray(t))throw new b("--operations must be a JSON array.",0,{code:"INVALID_OPERATIONS"});return t}async function Hs(e,t){return F(e,t)}var tf=[{opKey:"change_set.propose",operationClass:"operate",sideEffect:"write",cli:{group:"proposal",command:"create",summary:"Propose a governed ChangeSet against a subscriber (agent/builder proposer; a human approves + applies in the portal)",idempotent:!0,args:[Ms,Fs,{field:"intent",kind:"flag",token:"--intent <intent>",describe:"Human-readable description of the proposed change.",required:!0},{field:"operations",kind:"flag",token:"--operations <json>",describe:"JSON array of governed operations (e.g. update_role_permissions).",required:!0,parser:e=>wC(e)},Ks],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=t.businessId,a=t.subscriberId,c=await e.proposeConsumerChangeSet(o,a,{intent:t.intent,operations:t.operations,...r.idempotencyKey?{idempotencyKey:r.idempotencyKey}:{}},{env:t.env},r);n(c)||i(c,"ChangeSet proposed")}},mcp:{tool:"fs_proposal_create",title:"Propose a governed ChangeSet",description:"Propose a governed ChangeSet against a subscriber's live RBAC state (Agent Proposal Flow). Creates a DRAFT proposal that a HUMAN in the subscriber org must preview, approve, and apply in the portal \u2014 an agent can propose but never self-approve or apply. Operate-class live-state action; does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),intent:s.string().describe("Human-readable description of the proposed change."),operations:s.array(s.record(s.string(),s.unknown())).describe("Governed operations, e.g. [{ type: 'update_role_permissions', schemaVersion: 1, target: { resourceType: 'subscriber_business_role', resourceId: '<roleKey>' }, payload: { permissions: [...] } }]."),env:s.string().optional().describe("Environment name/id to scope the proposal to."),idempotencyKey:s.string().optional().describe("Replay-safe idempotency key for the proposal.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.proposeConsumerChangeSet(r,t.subscriberId,{intent:t.intent,operations:t.operations,...t.idempotencyKey?{idempotencyKey:t.idempotencyKey}:{}},{env:t.env})}}},{opKey:"change_set.preview",operationClass:"operate",sideEffect:"write",cli:{group:"proposal",command:"preview",summary:"Simulate + store a preview on a proposed ChangeSet (rides the propose authority)",args:[Ms,Fs,Nk,Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.previewConsumerChangeSet(i,t.subscriberId,t.changeSetId,{env:t.env});r(n,"ChangeSet preview stored")}},mcp:{tool:"fs_proposal_preview",title:"Preview a proposed ChangeSet",description:"Simulate the impact of a proposed ChangeSet and store the preview (Agent Proposal Flow). Enforced by the same authority as propose \u2014 there is no separate preview permission. Read-shaped but writes the stored simulation; does not apply the change.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),changeSetId:s.string().describe(ef),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.previewConsumerChangeSet(r,t.subscriberId,t.changeSetId,{env:t.env})}}},{opKey:"change_set.proposal_list",operationClass:"operate",sideEffect:"read",cli:{group:"proposal",command:"list",summary:"List governed ChangeSets proposed against a subscriber",args:[Ms,Fs,{field:"status",kind:"flag",token:"--status <status>",describe:"Filter by status (e.g. draft, approval_required)."},Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.listConsumerChangeSets(i,t.subscriberId,{env:t.env,status:t.status});r(n,"Proposed ChangeSets")}},mcp:{tool:"fs_proposal_list",title:"List proposed ChangeSets",description:"List governed ChangeSets proposed against a subscriber (Agent Proposal Flow). Read-only; use it to discover proposal ids + their status before previewing.",annotations:{readOnlyHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),status:s.string().optional().describe("Filter by status (e.g. draft, approval_required)."),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.listConsumerChangeSets(r,t.subscriberId,{env:t.env,status:t.status})}}},{opKey:"change_set.proposal_read",operationClass:"operate",sideEffect:"read",cli:{group:"proposal",command:"get",summary:"Read one governed ChangeSet proposed against a subscriber",args:[Ms,Fs,Nk,Ks],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.getConsumerChangeSet(i,t.subscriberId,t.changeSetId,{env:t.env});r(n,"ChangeSet")}},mcp:{tool:"fs_proposal_get",title:"Read a proposed ChangeSet",description:"Read one governed ChangeSet proposed against a subscriber (Agent Proposal Flow) \u2014 its operations, risk, simulation, approvals, and status. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Xr),subscriberId:s.string().describe(ei),changeSetId:s.string().describe(ef),env:s.string().optional().describe("Environment name/id.")},handler:async(e,t)=>{let r=await Hs(e,t.businessId);return e.getConsumerChangeSet(r,t.subscriberId,t.changeSetId,{env:t.env})}}}];function Dk(e,t){L(e,t,tf)}var Mt="The business id or slug.",ti="The webhook endpoint id.",Kn={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Mt,resolveBusiness:!0},Vs={field:"webhookId",kind:"positional",token:"<webhookId>",describe:ti},zk={field:"events",kind:"flag",token:"--events <events>",describe:"Comma-separated event names, e.g. subscription.created,payment.failed"},Uk={field:"limit",kind:"flag",token:"--limit <n>",describe:"Max rows to return."};function Lk(e){if(typeof e!="string")return;let t=e.split(",").map(r=>r.trim()).filter(r=>r.length>0);return t.length>0?t:void 0}function jk(e){if(!e||typeof e!="object")return[];let t=e;return Array.isArray(t.data)?t.data:[]}function Bk(e,t){if(!e||typeof e!="object")return t;let r=e;return typeof r.total=="number"?r.total:typeof r.pagination?.total=="number"?r.pagination.total:t}function xC(e){let t=e.enable===!0,r=e.disable===!0;if(t&&r)throw new b("Pass either --enable or --disable, not both.",400,{code:"VALIDATION_ERROR",param:"enabled"});if(t)return!0;if(r)return!1}async function Hn(e,t){return F(e,t)}var nf=[{opKey:"webhook.read",operationClass:"operate",sideEffect:"read",cli:{group:"webhook",command:"list",summary:"List API-managed webhook endpoints",args:[Kn,Uk],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.managementListWebhooks(i,{limit:t.limit}),o=jk(n);r({businessId:i,count:o.length,total:Bk(n,o.length),webhooks:o},`${o.length} webhook(s)`)}},mcp:{tool:"fs_webhook_list",title:"List webhook endpoints",description:"List API-managed outbound webhook endpoints for a business. Read-only; signing secrets are never returned.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementListWebhooks(r,{limit:t.limit})}}},{opKey:"webhook.create",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"create",summary:"Create an API-managed webhook endpoint",idempotent:!0,args:[Kn,{field:"url",kind:"flag",token:"--url <url>",describe:"HTTPS receiver URL.",required:!0},{...zk,required:!0}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=Lk(t.events);if(!o)throw new b("At least one webhook event is required.",400,{code:"VALIDATION_ERROR",param:"events"});let a=await e.managementCreateWebhook(t.businessId,{url:t.url,events:o},r);n(a)||i({businessId:t.businessId,webhook:a.data},"Webhook endpoint created")}},mcp:{tool:"fs_webhook_create",title:"Create webhook endpoint",description:"Create an API-managed outbound webhook endpoint for a business. Returns the signing secret once. If webhooks are declared under business/, Core returns 409 MANAGED_BY_CODE and the repo must be edited instead.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},returnsOneTimeSecret:!0,inputSchema:{businessId:s.string().describe(Mt),url:s.string().url().describe("HTTPS receiver URL."),events:s.array(s.string()).min(1).describe("Webhook event names to subscribe to."),...ue},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementCreateWebhook(r,{url:t.url,events:t.events},{idempotencyKey:t.idempotencyKey})}}},{opKey:"webhook.update",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"update",summary:"Update a webhook endpoint's events or enabled state",idempotent:!0,args:[Kn,Vs,zk,{field:"enable",kind:"flag",token:"--enable",describe:"Enable delivery for this endpoint."},{field:"disable",kind:"flag",token:"--disable",describe:"Disable delivery for this endpoint."}],handler:async({client:e,args:t,reqOpts:r,emit:i,emitDryRunPreview:n})=>{let o=Lk(t.events),a=xC(t);if(!o&&a===void 0)throw new b("Pass --events, --enable, or --disable to update a webhook.",400,{code:"VALIDATION_ERROR"});let c=await e.managementUpdateWebhook(t.businessId,t.webhookId,{...o?{events:o}:{},...a!==void 0?{enabled:a}:{}},r);n(c)||i({businessId:t.businessId,webhook:c.data},"Webhook endpoint updated")}},mcp:{tool:"fs_webhook_update",title:"Update webhook endpoint",description:"Update an API-managed webhook endpoint's event list and/or enabled state. URL and secret are immutable; create a new endpoint for those changes.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti),events:s.array(s.string()).min(1).optional().describe("Replacement webhook event list."),enabled:s.boolean().optional().describe("Enable or disable delivery."),...ue},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementUpdateWebhook(r,t.webhookId,{events:t.events,enabled:t.enabled},{idempotencyKey:t.idempotencyKey})}}},{opKey:"webhook.delete",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"delete",summary:"Delete an API-managed webhook endpoint. Requires --yes.",destructive:!0,yesMessage:"Pass --yes to confirm webhook endpoint deletion.",args:[Kn,Vs],handler:async({client:e,args:t,emit:r})=>{await e.managementDeleteWebhook(t.businessId,t.webhookId),r({businessId:t.businessId,deleted:t.webhookId},"Webhook endpoint deleted")}},mcp:{tool:"fs_webhook_delete",title:"Delete webhook endpoint",description:"Delete an API-managed outbound webhook endpoint. If webhooks are repo-managed, Core returns 409 MANAGED_BY_CODE.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti)},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementDeleteWebhook(r,t.webhookId)}}},{opKey:"webhook.test",operationClass:"operate",sideEffect:"write",cli:{group:"webhook",command:"test",summary:"Send a signed test event to a webhook endpoint",args:[Kn,Vs],handler:async({client:e,args:t,emit:r})=>{let i=await e.managementTestWebhook(t.businessId,t.webhookId);r({businessId:t.businessId,result:i},"Webhook test sent")}},mcp:{tool:"fs_webhook_test",title:"Test webhook endpoint",description:"Send a signed test event to an API-managed webhook endpoint and persist the delivery result.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti)},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementTestWebhook(r,t.webhookId)}}},{opKey:"webhook.delivery.read",operationClass:"operate",sideEffect:"read",cli:{group:"webhook",command:"deliveries",summary:"List recent delivery attempts for a webhook endpoint",args:[Kn,Vs,Uk],handler:async({client:e,args:t,emit:r})=>{let i=await e.managementListWebhookDeliveries(t.businessId,t.webhookId,{limit:t.limit}),n=jk(i);r({businessId:t.businessId,webhookId:t.webhookId,count:n.length,total:Bk(i,n.length),deliveries:n},`${n.length} delivery attempt(s)`)}},mcp:{tool:"fs_webhook_deliveries",title:"List webhook deliveries",description:"List recent delivery attempts for a webhook endpoint. Payload and response body are intentionally omitted by Core.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Mt),webhookId:s.string().describe(ti),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Hn(e,t.businessId);return e.managementListWebhookDeliveries(r,t.webhookId,{limit:t.limit})}}}];function Mk(e,t){L(e,t,nf)}var Vn="The business id or slug.",kt="operator",ni={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Vn,resolveBusiness:!0};async function ri(e,t){return F(e,t)}var rf=[{opKey:"agents.list",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"list",summary:"List a business's operating agents + enableable roles",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderListAgents(i);r({businessId:i,...n},`${n.agents.length} agent(s) \u2014 enableable roles: ${n.availableRoles.join(", ")}`)}},mcp:{tool:"fs_agents_list",title:"List operating agents",description:"The agent roster for a business: the enabled/disabled Operator plus any roles that can still be enabled. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderListAgents(r)}}},{opKey:"agents.status",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"status",summary:"The Operator's activation state, recent runs, and usage totals",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderAgentStatus(i,kt);r({businessId:i,...n},`operator: ${n.enabled?"ENABLED":"disabled"} \u2014 last run ${n.lastRunAt??"never"}; ${n.recentRuns.length} recent run(s); ${n.usage.tokensIn+n.usage.tokensOut} tokens, ${n.usage.actionsCount} action(s) lifetime`)}},mcp:{tool:"fs_agents_status",title:"Get the Operator's status",description:"The Operator's activation state, recent run history (newest-first), and lifetime usage totals (LLM tokens + actions). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderAgentStatus(r,kt)}}},{opKey:"agents.runs.show",operationClass:"operate",sideEffect:"read",cli:{group:"agents",command:"runs-show",summary:"One run's full paper trail: trace, launches, action receipts",args:[ni,{field:"runId",kind:"positional",token:"<runId>",describe:"The agent run id (from `agents status`)."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderAgentRunDetail(i,kt,t.runId),o=n.launches?.length??0,a=n.actions?.length??0;r({businessId:i,...n},`run ${n.run?.id}: ${o} launch(es), ${a} action receipt(s)`)}},mcp:{tool:"fs_agents_run_show",title:"Get one agent run's paper trail",description:"One run's full audit view: the orchestrator's trace summary (composed launches, verify flags, catalog changes), the per-launch performance ledger, and every platform-action receipt. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn),runId:s.string().describe("The agent run id.")},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderAgentRunDetail(r,kt,t.runId)}}},{opKey:"agents.enable",operationClass:"operate",sideEffect:"write",cli:{group:"agents",command:"enable",summary:"Turn the Operator on (creates it on first enable)",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderConfigureAgent(i,kt,{enabled:!0});r({businessId:i,agent:n},"operator ENABLED \u2014 it runs autonomously on its cadence and posts to the bulletin; usage bills while enabled")}},mcp:{tool:"fs_agents_enable",title:"Enable the Operator",description:"Turn the business's Operator agent on (created on first enable). It runs autonomously on its cadence; agent-work billing accrues while enabled.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderConfigureAgent(r,kt,{enabled:!0})}}},{opKey:"agents.disable",operationClass:"operate",sideEffect:"write",cli:{group:"agents",command:"disable",summary:"Turn the Operator off (stops runs + billing)",args:[ni],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderConfigureAgent(i,kt,{enabled:!1});r({businessId:i,agent:n},"operator disabled \u2014 no further runs; billing stops accruing")}},mcp:{tool:"fs_agents_disable",title:"Disable the Operator",description:"Turn the Operator off: the dispatcher stops scheduling runs and agent-work billing stops accruing. Re-enable at any time.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Vn)},handler:async(e,t)=>{let r=await ri(e,t.businessId);return e.builderConfigureAgent(r,kt,{enabled:!1})}}}];function Fk(e,t){L(e,t,rf)}var ii="The business id or slug.",Ws="The bulletin post id.",Gs={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:ii,resolveBusiness:!0},of={field:"postId",kind:"positional",token:"<postId>",describe:Ws};async function Zs(e,t){return F(e,t)}var sf=[{opKey:"bulletin.list",operationClass:"operate",sideEffect:"read",cli:{group:"bulletin",command:"list",summary:"List the agents' bulletin feed (trends + change requests)",args:[Gs,{field:"kind",kind:"flag",token:"--kind <kind>",describe:"Filter: trend | insight | change_request"},{field:"status",kind:"flag",token:"--status <status>",describe:"Filter: open | acknowledged | resolved"},{field:"limit",kind:"flag",token:"--limit <n>",describe:"Max rows to return."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderListBulletin(i,{kind:t.kind,status:t.status,limit:t.limit});r({businessId:i,...n},`${n.items.length} post(s)${n.nextCursor?" (more available)":""}`)}},mcp:{tool:"fs_bulletin_list",title:"List bulletin posts",description:"The agents' bulletin feed for a business: trend/insight posts (aggregated data + deltas) and change_request posts (the coding agent's backlog \u2014 filter --kind change_request --status open). Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),kind:s.enum(["trend","insight","change_request"]).optional().describe("Filter by post kind."),status:s.enum(["open","acknowledged","resolved"]).optional().describe("Filter by post status."),limit:s.string().optional().describe("Max rows to return.")},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderListBulletin(r,{kind:t.kind,status:t.status,limit:t.limit})}}},{opKey:"bulletin.read",operationClass:"operate",sideEffect:"read",cli:{group:"bulletin",command:"show",summary:"Show one bulletin post (full body + data payload)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderGetBulletinPost(i,t.postId);r({businessId:i,post:n},`[${n.kind}] ${n.title} \u2014 ${n.status}${n.changeSetId?` (changeSet ${n.changeSetId})`:""}`)}},mcp:{tool:"fs_bulletin_show",title:"Show a bulletin post",description:"One bulletin post in full: markdown body, the dataJson payload backing the claim, and for change requests the referenced ChangeSet id + proposal. Read-only.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderGetBulletinPost(r,t.postId)}}},{opKey:"bulletin.ack",operationClass:"operate",sideEffect:"write",cli:{group:"bulletin",command:"ack",summary:"Acknowledge a post (the coding agent picked it up)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderSetBulletinStatus(i,t.postId,"acknowledged");r({businessId:i,post:n},`Post acknowledged: ${n.title}`)}},mcp:{tool:"fs_bulletin_ack",title:"Acknowledge a bulletin post",description:"Mark a bulletin post acknowledged \u2014 the hand-off signal that the coding agent (or builder) has picked the item up. Forward-only; idempotent on an already-acknowledged post.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderSetBulletinStatus(r,t.postId,"acknowledged")}}},{opKey:"bulletin.resolve",operationClass:"operate",sideEffect:"write",cli:{group:"bulletin",command:"resolve",summary:"Resolve a post (the work landed)",args:[Gs,of],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await e.builderSetBulletinStatus(i,t.postId,"resolved");r({businessId:i,post:n},`Post resolved: ${n.title}`)}},mcp:{tool:"fs_bulletin_resolve",title:"Resolve a bulletin post",description:"Mark a bulletin post resolved \u2014 the referenced work landed (or the trend was addressed). Terminal state.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(ii),postId:s.string().describe(Ws)},handler:async(e,t)=>{let r=await Zs(e,t.businessId);return e.builderSetBulletinStatus(r,t.postId,"resolved")}}}];function Kk(e,t){L(e,t,sf)}var Gn="The business id or slug.",Js="The promo code id.",cf=["percent_off","amount_off","free_months"],oi="promo-code",si={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Gn,resolveBusiness:!0},af={field:"promoCodeId",kind:"positional",token:"<promoCodeId>",describe:Js},Hk={field:"plan",kind:"flag",token:"--plan <planId>",describe:"Limit to a plan id. Repeatable. Omit for all launch plans; use --all-plans on update to clear scoped plans.",parser:(e,t)=>[...t,e],defaultValue:[]};function Vk(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(cf.includes(t))return t;throw new b(`Invalid promo code kind "${e}". Use percent_off, amount_off, or free_months.`,400,{code:"INVALID_PROMO_CODE_KIND",param:"kind"})}function Zn(e,t){if(t===void 0)return;let r=typeof t=="number"?t:typeof t=="string"&&/^\d+$/.test(t.trim())?Number.parseInt(t,10):Number.NaN;if(!Number.isInteger(r)||r<=0)throw new b(`${e} must be a positive integer.`,400,{code:"INVALID_PROMO_CODE_FIELD",param:e});return r}function ci(e){return typeof e=="string"&&e.length>0?e:void 0}function Gk(e,t){let r=Zn("percent",e.percent),i=Zn("amountCents",e.amountCents);if(r!==void 0&&i!==void 0)throw new b("Pass either --percent or --amount-cents, not both.",400,{code:"CONFLICTING_PROMO_AMOUNT_FLAGS",param:"amount"});if(t==="percent_off"){if(r===void 0)throw new b("percent_off promo codes require --percent.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"percent"});if(r>100)throw new b("--percent must be between 1 and 100.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"percent"});return r}if(t==="amount_off"){if(i===void 0)throw new b("amount_off promo codes require --amount-cents.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"amountCents"});return i}if(t==="free_months"&&(r!==void 0||i!==void 0))throw new b("free_months promo codes do not accept --percent or --amount-cents.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"amount"});return r??i}function Zk(e){let t=e.plan??[];if(e.allPlans===!0&&t.length>0)throw new b("Pass either --plan or --all-plans, not both.",400,{code:"CONFLICTING_PROMO_PLAN_FLAGS",param:"plan"});return e.allPlans===!0?[]:t.length>0?t:void 0}function $C(e){let t=Vk(e.kind);if(!t)throw new b("Promo code kind is required.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"kind"});let r=Zn("durationMonths",e.durationMonths);if(r===void 0)throw new b("--duration-months is required.",400,{code:"INVALID_PROMO_CODE_FIELD",param:"durationMonths"});let i=Zk(e);return{code:String(e.code),kind:t,amount:Gk(e,t),durationMonths:r,...i!==void 0?{applicablePlanIds:i}:{},maxRedemptions:Zn("maxRedemptions",e.maxRedemptions),activeFrom:ci(e.activeFrom),activeUntil:ci(e.activeUntil)}}function TC(e){let t=Vk(e.kind),r=Zn("durationMonths",e.durationMonths),i=Zn("maxRedemptions",e.maxRedemptions),n=Zk(e);if(e.code!==void 0||t!==void 0||e.percent!==void 0||e.amountCents!==void 0||r!==void 0||i!==void 0||e.clearMaxRedemptions===!0||e.activeFrom!==void 0||e.activeUntil!==void 0||e.clearActiveFrom===!0||e.clearActiveUntil===!0||n!==void 0){if(t===void 0)throw new b("Promo-code spec updates rotate the Stripe coupon, so pass the complete spec: --kind plus --duration-months and the required amount flag for that kind.",400,{code:"PROMO_CODE_UPDATE_REQUIRES_FULL_SPEC",param:"kind"});if(r===void 0)throw new b("Promo-code spec updates require --duration-months.",400,{code:"PROMO_CODE_UPDATE_REQUIRES_FULL_SPEC",param:"durationMonths"})}let a={},c=ci(e.code);c!==void 0&&(a.code=c),t!==void 0&&(a.kind=t);let u=Gk(e,t);if(u!==void 0&&(a.amount=u),r!==void 0&&(a.durationMonths=r),i!==void 0&&(a.maxRedemptions=i),e.clearMaxRedemptions===!0&&(a.maxRedemptions=null),n!==void 0&&(a.applicablePlanIds=n),e.activeFrom!==void 0&&(a.activeFrom=ci(e.activeFrom)??null),e.activeUntil!==void 0&&(a.activeUntil=ci(e.activeUntil)??null),e.clearActiveFrom===!0&&(a.activeFrom=null),e.clearActiveUntil===!0&&(a.activeUntil=null),Object.keys(a).length===0)throw new b("No promo-code fields to update. Pass --code, --kind, amount, duration, plan, status-window, or redemption flags.",400,{code:"PROMO_CODE_UPDATE_NO_FIELDS"});return a}async function ai(e,t){return F(e,t)}function qs(e){return{status:e}}var uf=[{opKey:"promo_code.read",operationClass:"operate",sideEffect:"read",cli:{group:oi,command:"list",summary:"List API-managed promo codes for checkout",args:[si],handler:async({client:e,args:t,emit:r})=>{let i=await e.listPromoCodes(t.businessId);r({businessId:t.businessId,count:i.length,promoCodes:i},`${i.length} promo code(s)`)}},mcp:{tool:"fs_promo_code_list",title:"List promo codes",description:"List API-managed promo codes for a business. Promo codes are checkout operational state, not repo-authored Business SDK state.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.listPromoCodes(r)}}},{opKey:"promo_code.create",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"create",summary:"Create an API-managed checkout promo code",args:[si,{field:"code",kind:"flag",token:"--code <code>",describe:"Customer-entered promo code.",required:!0},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"percent_off, amount_off, or free_months.",required:!0},{field:"percent",kind:"flag",token:"--percent <n>",describe:"Percent discount for percent_off promos."},{field:"amountCents",kind:"flag",token:"--amount-cents <cents>",describe:"Fixed discount in cents for amount_off promos."},{field:"durationMonths",kind:"flag",token:"--duration-months <n>",describe:"Discount duration in months.",required:!0},{field:"maxRedemptions",kind:"flag",token:"--max-redemptions <n>",describe:"Optional maximum redemption count."},{field:"activeFrom",kind:"flag",token:"--active-from <iso>",describe:"Optional ISO-8601 activation timestamp."},{field:"activeUntil",kind:"flag",token:"--active-until <iso>",describe:"Optional ISO-8601 expiration timestamp."},Hk],handler:async({client:e,args:t,emit:r})=>{let i=await e.createPromoCode(t.businessId,$C(t));r({businessId:t.businessId,promoCode:i},"Promo code created")}},mcp:{tool:"fs_promo_code_create",title:"Create promo code",description:"Create an API-managed checkout promo code. Use percent for percent_off, amountCents for amount_off, and no amount for free_months.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Gn),code:s.string().min(1).max(64),kind:s.enum(cf),percent:s.number().int().min(1).max(100).optional(),amountCents:s.number().int().positive().optional(),durationMonths:s.number().int().min(1).max(24),maxRedemptions:s.number().int().positive().optional(),activeFrom:s.string().datetime().optional(),activeUntil:s.string().datetime().optional(),applicablePlanIds:s.array(s.string()).optional()},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.createPromoCode(r,{code:t.code,kind:t.kind,amount:t.kind==="percent_off"?t.percent:t.kind==="amount_off"?t.amountCents:void 0,durationMonths:t.durationMonths,maxRedemptions:t.maxRedemptions,activeFrom:t.activeFrom,activeUntil:t.activeUntil,applicablePlanIds:t.applicablePlanIds})}}},{opKey:"promo_code.update",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"update",summary:"Update an API-managed checkout promo code",args:[si,af,{field:"code",kind:"flag",token:"--code <code>",describe:"Replacement customer-entered promo code."},{field:"kind",kind:"flag",token:"--kind <kind>",describe:"percent_off, amount_off, or free_months."},{field:"percent",kind:"flag",token:"--percent <n>",describe:"Percent discount for percent_off promos."},{field:"amountCents",kind:"flag",token:"--amount-cents <cents>",describe:"Fixed discount in cents for amount_off promos."},{field:"durationMonths",kind:"flag",token:"--duration-months <n>",describe:"Discount duration in months."},{field:"maxRedemptions",kind:"flag",token:"--max-redemptions <n>",describe:"Set maximum redemption count."},{field:"clearMaxRedemptions",kind:"flag",token:"--clear-max-redemptions",describe:"Clear the maximum redemption count."},{field:"activeFrom",kind:"flag",token:"--active-from <iso>",describe:"Set ISO-8601 activation timestamp."},{field:"clearActiveFrom",kind:"flag",token:"--clear-active-from",describe:"Clear activation timestamp."},{field:"activeUntil",kind:"flag",token:"--active-until <iso>",describe:"Set ISO-8601 expiration timestamp."},{field:"clearActiveUntil",kind:"flag",token:"--clear-active-until",describe:"Clear expiration timestamp."},Hk,{field:"allPlans",kind:"flag",token:"--all-plans",describe:"Clear plan scoping so the promo applies to all launch plans."}],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,TC(t));r({businessId:t.businessId,promoCode:i},"Promo code updated")}},mcp:{tool:"fs_promo_code_update",title:"Update promo code",description:"Update an API-managed checkout promo code. Spec changes rotate the Stripe coupon/promotion code behind the scenes.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js),code:s.string().min(1).max(64).optional(),kind:s.enum(cf).optional(),percent:s.number().int().min(1).max(100).optional(),amountCents:s.number().int().positive().optional(),durationMonths:s.number().int().min(1).max(24).optional(),maxRedemptions:s.number().int().positive().nullable().optional(),activeFrom:s.string().datetime().nullable().optional(),activeUntil:s.string().datetime().nullable().optional(),applicablePlanIds:s.array(s.string()).optional()},handler:async(e,t)=>{let r=await ai(e,t.businessId),i={code:t.code,kind:t.kind,amount:t.kind==="percent_off"?t.percent:t.kind==="amount_off"?t.amountCents:void 0,durationMonths:t.durationMonths,maxRedemptions:t.maxRedemptions,activeFrom:t.activeFrom,activeUntil:t.activeUntil,applicablePlanIds:t.applicablePlanIds};return e.updatePromoCode(r,t.promoCodeId,i)}}},{opKey:"promo_code.archive",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"archive",summary:"Archive a checkout promo code",args:[si,af],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,qs("ARCHIVED"));r({businessId:t.businessId,promoCode:i},"Promo code archived")}},mcp:{tool:"fs_promo_code_archive",title:"Archive promo code",description:"Archive an API-managed checkout promo code.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.updatePromoCode(r,t.promoCodeId,qs("ARCHIVED"))}}},{opKey:"promo_code.reactivate",operationClass:"operate",sideEffect:"write",cli:{group:oi,command:"reactivate",summary:"Reactivate an archived checkout promo code",args:[si,af],handler:async({client:e,args:t,emit:r})=>{let i=await e.updatePromoCode(t.businessId,t.promoCodeId,qs("ACTIVE"));r({businessId:t.businessId,promoCode:i},"Promo code reactivated")}},mcp:{tool:"fs_promo_code_reactivate",title:"Reactivate promo code",description:"Reactivate an archived API-managed checkout promo code.",annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Gn),promoCodeId:s.string().describe(Js)},handler:async(e,t)=>{let r=await ai(e,t.businessId);return e.updatePromoCode(r,t.promoCodeId,qs("ACTIVE"))}}}];function Wk(e,t){L(e,t,uf)}var Wn="The business id or slug.",di="The subscriber id from `consumer list`.",ui={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:Wn,resolveBusiness:!0},Ys={field:"subscriberId",kind:"positional",token:"<subscriberId>",describe:di},OC={field:"env",kind:"flag",token:"--env <env>",describe:"Environment name for preview-scoped consumers."},qk="The member's external identity id (Clerk userId) within the client org.",AC="Comma-separated business-role keys to set (replaces the current assignment; pass an empty string to clear).",RC={field:"userExternalId",kind:"positional",token:"<userExternalId>",describe:qk};function CC(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}var PC={field:"roles",kind:"flag",token:"--roles <roles>",describe:AC,required:!0,parser:e=>CC(e)};async function li(e,t){return F(e,t)}function NC(e){return Array.isArray(e)?e:[]}var lf=[{opKey:"consumer.read",operationClass:"operate",sideEffect:"read",cli:{group:"consumer",command:"list",summary:"List users/consumers for a business",args:[ui,OC],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=NC(await e.builderListConsumers(i,{env:t.env}));r({businessId:i,count:n.length,consumers:n},`${n.length} consumer(s)`)}},mcp:{tool:"fs_consumer_list",title:"List business consumers",description:"List users/consumers for a business. Read-only; use this to discover subscriber ids before blocking or removing a user.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(Wn),env:s.string().optional().describe("Environment name for preview-scoped consumers.")},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderListConsumers(r,{env:t.env})}}},{opKey:"consumer.block",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"block",summary:"Block a user and revoke their active API keys",destructive:!0,yesMessage:"Blocking a user revokes active API keys. Pass --yes to confirm.",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderBlockConsumer(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer blocked: ${n}`)}},mcp:{tool:"fs_consumer_block",title:"Block business consumer",description:"Block a user/consumer for a business and revoke their active API keys. Destructive live-state operation; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderBlockConsumer(r,t.subscriberId)}}},{opKey:"consumer.migrate_latest",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"migrate-latest",summary:"Move one consumer to the active head of their plan lineage",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderMigrateConsumerToLatest(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer migration evaluated: ${n}`)}},mcp:{tool:"fs_consumer_migrate_latest",title:"Move consumer to latest plan",description:"Move one consumer onto the current head of their plan lineage immediately. Operates on live subscription state.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderMigrateConsumerToLatest(r,t.subscriberId)}}},{opKey:"consumer.remove",operationClass:"operate",sideEffect:"write",cli:{group:"consumer",command:"remove",summary:"Force-remove a user from a business",destructive:!0,yesMessage:"Removing a user tears down subscriptions, edge credentials, and related live state. Pass --yes to confirm.",args:[ui,Ys],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=await e.builderRemoveConsumer(i,n);r({businessId:i,subscriberId:n,result:o},`Consumer removed: ${n}`)}},mcp:{tool:"fs_consumer_remove",title:"Remove business consumer",description:"Force-remove a user/consumer from a business, tearing down subscriptions, edge credentials, and related live state. Destructive and irreversible; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di)},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderRemoveConsumer(r,t.subscriberId)}}},{opKey:"consumer.roles.assign",operationClass:"operate",sideEffect:"write",cli:{group:"consumer rbac",command:"assign",summary:"Replace a client-org member's Managed-RBAC business roles (builder support override)",args:[ui,Ys,RC,PC],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=t.subscriberId,o=t.userExternalId,a=t.roles,c=await e.builderAssignConsumerMemberRoles(i,n,o,a);r({businessId:i,subscriberId:n,membership:c},`Business roles set for ${o}: ${c.businessRoleKeys.length>0?c.businessRoleKeys.join(", "):"(none)"}`)}},mcp:{tool:"fs_consumer_rbac_assign",title:"Assign consumer member business roles",description:"Support override: replace a client-org member's Managed-RBAC business-role assignment on a business (set-replace \u2014 the given list becomes the member's full assignment; an empty list clears it). Role keys must exist in the org's role set. Live-state operation; it does not edit repo-authored business behavior.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:{businessId:s.string().describe(Wn),subscriberId:s.string().describe(di),userExternalId:s.string().describe(qk),roles:s.array(s.string()).describe("Business-role keys to set (replaces the current assignment; [] clears it).")},handler:async(e,t)=>{let r=await li(e,t.businessId);return e.builderAssignConsumerMemberRoles(r,t.subscriberId,t.userExternalId,t.roles)}}}];function Jk(e,t){L(e,t,lf)}var pf="The business id or slug.",ff="Preview environment slug or id (omit for Main).",Qk="Variable name, e.g. POSTHOG_TOKEN.",DC=s.enum(["PUBLIC","BUILD","RUNTIME"]),zC="Where the value goes. public = inlined into the frontend BUNDLE (publishable keys: PostHog project key, Stripe pk_, Sentry DSN); build = build environment only, leak-scanned out of the output; runtime = edge only, never reaches the browser.";async function UC(){if(process.stdin.isTTY)throw new b("Pipe the secret value via stdin. Never pass a secret as a command-line flag.",400,{code:"VARIABLE_STDIN_REQUIRED"});let e="";for await(let t of process.stdin)e+=Buffer.isBuffer(t)?t.toString("utf8"):String(t);return e.replace(/\r?\n$/,"")}var LC=UC;async function Qs(e,t,r){return r?Ln(e,t,r):void 0}var mi={field:"businessId",kind:"positional",token:"<businessIdOrSlug>",describe:pf,resolveBusiness:!0},df={field:"name",kind:"positional",token:"<name>",describe:Qk},Xs={field:"env",kind:"flag",token:"--env <slug>",describe:ff},jC={field:"delivery",kind:"flag",token:"--delivery <phase>",describe:"Private delivery boundary: build or runtime. Build values are leak-scanned from artifacts; runtime values are injected only by Gateway.",required:!0};function mf(e,t){return{businessId:e,operation:t}}function Yk(e){return{opKey:e==="set"?"business_variable.create":"business_variable.rotate",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:e,summary:e==="set"?"Create a write-only secret from stdin":"Rotate a write-only secret from stdin",helpTextAfter:`
|
|
220
220
|
Example:
|
|
221
|
-
printf %s "$VALUE" | farthershore variables ${e} my-biz POSTHOG_TOKEN`,idempotent:!0,args:[mi,df,zC,Xs],handler:async({client:t,args:r,reqOpts:i,emit:n})=>{let o=r.businessId,a=await(e==="set"?t.builderCreateBusinessVariable:t.builderRotateBusinessVariable)(o,r.name,{value:await DC(),delivery:CC.parse(String(r.delivery).toUpperCase()),environmentId:await Qs(t,o,r.env)},i);n(mf(o,a),`Secret ${r.name} ${a.pending?"publication pending":"active"}`)}},mcp:{tool:e==="set"?"fs_variable_set":"fs_variable_rotate",title:e==="set"?"Create a write-only secret":"Rotate a write-only secret",description:"Creates an immutable secret generation. Plaintext is accepted once and never returned.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(pf),name:s.string().describe(Qk),value:s.string().min(1).describe("The write-only value."),delivery:s.enum(["PUBLIC","BUILD","RUNTIME"]).describe(PC),environmentId:s.string().optional().describe(ff),...ue},handler:async(t,r)=>(e==="set"?t.builderCreateBusinessVariable:t.builderRotateBusinessVariable)(await F(t,r.businessId),r.name,{value:r.value,delivery:r.delivery,environmentId:r.environmentId},{idempotencyKey:r.idempotencyKey})}}}var gf=[{opKey:"business_variable.read",operationClass:"operate",sideEffect:"read",cli:{group:"variables",command:"list",summary:"List PUBLIC values and BUILD/RUNTIME secret metadata",args:[mi,Xs],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Qs(e,i,t.env);r({businessId:i,environmentId:n??null,variables:await e.builderBusinessVariables(i,n)},"Business variables")}},mcp:{tool:"fs_variable_list",title:"List business variables",description:"Lists readable PUBLIC values plus lifecycle metadata for write-only BUILD and RUNTIME secrets.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(pf),environmentId:s.string().optional().describe(ff)},handler:async(e,t)=>e.builderBusinessVariables(await F(e,t.businessId),t.environmentId)}},Yk("set"),Yk("rotate"),{opKey:"business_variable.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:"revoke",summary:"Revoke runtime access to a secret. Requires --yes.",destructive:!0,yesMessage:"Revocation removes runtime availability once acknowledged. Pass --yes to confirm.",idempotent:!0,args:[mi,df,Xs],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.businessId,o=await e.builderRevokeBusinessVariable(n,t.name,await Qs(e,n,t.env),r);i(mf(n,o),"Secret revocation submitted")}},mcp:{tool:"fs_variable_revoke",title:"Revoke a write-only secret",description:"Revokes runtime access after explicit confirmation and returns a durable operation.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),name:s.string(),environmentId:s.string().optional(),confirmation:s.literal("REVOKE"),...ue},handler:async(e,t)=>e.builderRevokeBusinessVariable(await F(e,t.businessId),t.name,t.environmentId,{idempotencyKey:t.idempotencyKey})}},{opKey:"business_variable.delete",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:"rm",summary:"Destroy a revoked secret in Main or preview. Requires --yes.",destructive:!0,yesMessage:"Deletion permanently destroys ciphertext and requires acknowledged revocation first. Pass --yes to confirm.",idempotent:!0,args:[mi,df,Xs],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.businessId,o=await e.builderDeleteBusinessVariable(n,t.name,await Qs(e,n,t.env),r);i(mf(n,o),"Secret deletion submitted")}},mcp:{tool:"fs_variable_rm",title:"Destroy a revoked secret",description:"Permanently destroys ciphertext after acknowledged revocation. Main and preview use the same contract.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),name:s.string(),environmentId:s.string().optional(),confirmation:s.literal("DELETE"),...ue},handler:async(e,t)=>e.builderDeleteBusinessVariable(await F(e,t.businessId),t.name,t.environmentId,{idempotencyKey:t.idempotencyKey})}},{opKey:"business_variable.operation.read",operationClass:"operate",sideEffect:"read",cli:{group:"variables",command:"status",summary:"Read a durable secret mutation operation",args:[mi,{field:"operationId",kind:"positional",token:"<operationId>",describe:"Operation id returned by a mutation."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;r({businessId:i,operation:await e.builderGetBusinessVariableOperation(i,t.operationId)},"Secret mutation status")}},mcp:{tool:"fs_variable_operation_get",title:"Get secret mutation status",description:"Reads publication status and frozen impact metadata.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),operationId:s.string()},handler:async(e,t)=>e.builderGetBusinessVariableOperation(await F(e,t.businessId),t.operationId)}}];function Xk(e,t){L(e,t,gf)}var Te={field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0};function UC(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error("not an object");return t}catch{throw new b("Expected a JSON object",400,{code:"INVALID_JSON_OBJECT"})}}function eI(e){let t=Number(e);if(!Number.isInteger(t)||t<0)throw new b("Expected a non-negative integer",400,{code:"INVALID_INTEGER"});return t}var hf={field:"body",kind:"flag",token:"--body <json>",describe:"Closed request body as a JSON object",required:!0,parser:UC},bf=[{opKey:"auth.context.issue",operationClass:"operate",sideEffect:"write",cli:{group:"auth",command:"context-token",summary:"Issue a short-lived gateway context token for a subscriber member",args:[Te,{field:"externalOrgId",kind:"flag",token:"--external-org <id>",required:!0},{field:"actorId",kind:"flag",token:"--actor <id>",required:!0},{field:"ttlSeconds",kind:"flag",token:"--ttl-seconds <seconds>",parser:eI}],handler:async({client:e,args:t,emit:r})=>r(await e.issueBusinessAuthContext(t.businessId,{externalOrgId:t.externalOrgId,actorId:t.actorId,...t.ttlSeconds===void 0?{}:{ttlSeconds:t.ttlSeconds}}),"Context token issued")},mcp:null},{opKey:"tax_settings.read",operationClass:"operate",sideEffect:"read",cli:{group:"tax-settings",command:"show",summary:"Show a business's Stripe Tax settings",args:[Te],handler:async({client:e,args:t,emit:r})=>r(await e.getBusinessTaxSettings(t.businessId),"Tax settings")},mcp:null},{opKey:"tax_settings.update",operationClass:"operate",sideEffect:"write",cli:{group:"tax-settings",command:"update",summary:"Update a business's Stripe Tax settings",args:[Te,hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.updateBusinessTaxSettings(t.businessId,t.body,r),"Tax settings updated")},mcp:null},{opKey:"resource_count.report",operationClass:"operate",sideEffect:"write",cli:{group:"resource-count",command:"report",summary:"Report a subscription resource count",args:[Te,{field:"resource",kind:"positional",token:"<resource>"},{field:"subscriptionId",kind:"flag",token:"--subscription <id>",required:!0},{field:"count",kind:"flag",token:"--count <count>",required:!0,parser:eI},{field:"environmentId",kind:"flag",token:"--environment <id>"}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.reportBusinessResourceCount(t.businessId,t.resource,{subscriptionId:t.subscriptionId,count:t.count,...t.environmentId?{environmentId:t.environmentId}:{}},r),"Resource count reported")},mcp:null},{opKey:"denial.read",operationClass:"operate",sideEffect:"read",cli:{group:"denial",command:"show",summary:"Explain a denied request",args:[Te,{field:"requestId",kind:"positional",token:"<requestId>"}],handler:async({client:e,args:t,emit:r})=>r(await e.explainBusinessDenial(t.businessId,t.requestId),"Denial explanation")},mcp:null},{opKey:"business_dependents.read",operationClass:"operate",sideEffect:"read",cli:{group:"dependents",command:"list",summary:"List active dependents for a business route",args:[Te,{field:"route",kind:"flag",token:"--route <route>",required:!0},{field:"since",kind:"flag",token:"--since <iso-date>"},{field:"environmentId",kind:"flag",token:"--environment <id>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBusinessDependents(t.businessId,{route:t.route,since:t.since,environmentId:t.environmentId}),"Business dependents")},mcp:null},{opKey:"workflow.replay",operationClass:"operate",sideEffect:"write",cli:{group:"workflow-control",command:"replay",summary:"Preview a historical billing replay",args:[Te,{field:"periodStart",kind:"flag",token:"--period-start <iso-date>",required:!0},{field:"periodEnd",kind:"flag",token:"--period-end <iso-date>",required:!0}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.replayBusinessPeriod({business_id:t.businessId,period_start:t.periodStart,period_end:t.periodEnd},r),"Replay preview")},mcp:null},{opKey:"workflow.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"workflow-control",command:"rollback-to-config",summary:"Preview restoring a business config commit",args:[Te,{field:"commitSha",kind:"positional",token:"<commitSha>"}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.previewBusinessConfigRollback({business_id:t.businessId,commit_sha:t.commitSha},r),"Rollback preview")},mcp:null},{opKey:"automation_rule.read",operationClass:"operate",sideEffect:"read",cli:{group:"automation",command:"list",summary:"List automation rules",args:[Te],handler:async({client:e,args:t,emit:r})=>r(await e.listAutomationRules(t.businessId),"Automation rules")},mcp:null},{opKey:"automation_rule.create",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"create",summary:"Create an automation rule",args:[Te,hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.createAutomationRule(t.businessId,t.body,r),"Automation rule created")},mcp:null},{opKey:"automation_rule.update",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"update",summary:"Update an automation rule",args:[Te,{field:"ruleId",kind:"positional",token:"<ruleId>"},hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.updateAutomationRule(t.businessId,t.ruleId,t.body,r),"Automation rule updated")},mcp:null},{opKey:"automation_rule.delete",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"delete",summary:"Delete an automation rule",args:[Te,{field:"ruleId",kind:"positional",token:"<ruleId>"}],destructive:!0,handler:async({client:e,args:t,emit:r})=>{await e.deleteAutomationRule(t.businessId,t.ruleId),r({deleted:!0,ruleId:t.ruleId},"Automation rule deleted")}},mcp:null},{opKey:"knowledge.guide.read",operationClass:"operate",sideEffect:"read",cli:{group:"knowledge",command:"list",summary:"List platform guide resources",args:[{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listKnowledgeIndex({cursor:t.cursor}),"Knowledge index")},mcp:null},{opKey:"knowledge.business.read",operationClass:"operate",sideEffect:"read",cli:{group:"knowledge",command:"business-list",summary:"List one business's knowledge resources",args:[Te,{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBusinessKnowledgeIndex(t.businessId,{cursor:t.cursor}),"Business knowledge index")},mcp:null}];function tI(e,t){L(e,t,bf)}var nI=[...xp,...Xp,...tf,...xy,...$p,...Vp,...Zp,...nf,...rf,...sf,...uf,...lf,...gf,...Cp,...Rp,...Lp,...jp,...Bp,...Mp,...bf];function rI(e){return`${e.cli.group} ${e.cli.command}`}function LC(e){return e==="contract"?"repo":"api"}function jC(e){return e.endsWith(".read")||e.endsWith(".list")||e.endsWith(".status")?"read":"write"}function BC(){let e=new Map(nI.map(i=>[i.opKey,i])),t=Lv.map(i=>{let n=i.authorization;if(n===void 0)throw new Error(`Platform operation ${i.key} has no authorization binding`);let o=e.get(i.key),a=o?.sideEffect??i.sideEffect??jC(i.key);return{opKey:i.key,class:i.class,canonicalHome:zv(i.class),authoringPath:LC(i.class),domain:i.domain,sideEffect:a,permission:n.permission,targetKind:n.targetKind,scope:[n.permission],cliCommand:o?`farthershore ${rI(o)}`:null,unavailableReason:i.unavailable?.reason??null,unavailableDetail:i.unavailable?.detail??null,mcpTool:o?.mcp?.tool??null,mcpMayWrite:a==="write"&&(o?.mcp??null)!==null&&Dv(i.class)}}),r=t.reduce((i,n)=>(n.unavailableReason===null||(i[n.unavailableReason]=(i[n.unavailableReason]??0)+1),i),{});return{summary:{operationCount:t.length,cliCommandCount:t.filter(i=>i.cliCommand!==null).length,mcpToolCount:t.filter(i=>i.mcpTool!==null).length,unavailableByReason:r,platformGapCount:t.filter(i=>i.unavailableReason!==null&&mp[i.unavailableReason].isPlatformGap).length},invariants:["Contract-class business behavior is authored in business/ and pushed through GitHub.","Operate-class platform actions are performed through Core APIs, CLI commands, or MCP tools.","Every operation without a cliCommand carries a non-null unavailableReason; only reason=not_implemented is a platform gap, and the rest are boundaries to hand off at."],classes:ps,unavailableReasons:mp,operations:t}}function iI(e){e.command("operations").description("Machine-readable catalog of repository-owned and platform-operated actions").command("list").description("Print the agent operation boundary catalog").action(()=>{G(BC(),"Operation catalog")})}import{createHash as KC,timingSafeEqual as HC}from"node:crypto";import{mkdtempSync as VC,rmSync as GC,writeFileSync as ea}from"node:fs";import{tmpdir as ZC}from"node:os";import{join as It}from"node:path";import{spawnSync as mI}from"node:child_process";import{gunzipSync as WC}from"node:zlib";var qe={repository:"farther-shore/skills",tag:"v2.2.0",commit:"996cb1bcc157676aee22d55e8c5984b48f668399",source:{integrity:"sha512-BqViqfR/gpZb2Z9bQLTKoA38x7XCrbUvM567OUmSghyqnYRhJZAh1KOm9xoD1sYZtvkKssJlM2qF56reh04Weg=="},installer:{package:"skills",version:"1.5.22",integrity:"sha512-cHiLjwZEawWFvudIqeeMZlvZayTLbRouydMbblyrdiyH7ZLbqUrSrEEr+Tg+X265iztRlVMsyOYRwpD5JxBsvg=="}};var pi={name:"farthershore-skills-installer",version:"0.0.0",lockfileVersion:3,requires:!0,packages:{"":{name:"farthershore-skills-installer",version:"0.0.0",dependencies:{skills:"file:./skills-installer.tgz"}},"node_modules/@isaacs/fs-minipass":{version:"4.0.1",resolved:"https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",integrity:"sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",license:"ISC",dependencies:{minipass:"^7.0.4"},engines:{node:">=18.0.0"}},"node_modules/chownr":{version:"3.0.0",resolved:"https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",integrity:"sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",license:"BlueOak-1.0.0",engines:{node:">=18"}},"node_modules/minipass":{version:"7.1.3",resolved:"https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",integrity:"sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",license:"BlueOak-1.0.0",engines:{node:">=16 || 14 >=14.17"}},"node_modules/minizlib":{version:"3.1.0",resolved:"https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",integrity:"sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",license:"MIT",dependencies:{minipass:"^7.1.2"},engines:{node:">= 18"}},"node_modules/skills":{version:"1.5.22",resolved:"file:skills-installer.tgz",integrity:"sha512-cHiLjwZEawWFvudIqeeMZlvZayTLbRouydMbblyrdiyH7ZLbqUrSrEEr+Tg+X265iztRlVMsyOYRwpD5JxBsvg==",license:"MIT",dependencies:{tar:"^7.5.20",yaml:"^2.8.3"},bin:{"add-skill":"bin/cli.mjs",skills:"bin/cli.mjs"},engines:{node:">=22.20.0"}},"node_modules/tar":{version:"7.5.22",resolved:"https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",integrity:"sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==",license:"BlueOak-1.0.0",dependencies:{"@isaacs/fs-minipass":"^4.0.0",chownr:"^3.0.0",minipass:"^7.1.2",minizlib:"^3.1.0",yallist:"^5.0.0"},engines:{node:">=18"}},"node_modules/yallist":{version:"5.0.0",resolved:"https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",integrity:"sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",license:"BlueOak-1.0.0",engines:{node:">=18"}},"node_modules/yaml":{version:"2.9.0",resolved:"https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",integrity:"sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",license:"ISC",bin:{yaml:"bin.mjs"},engines:{node:">= 14.6"},funding:{url:"https://github.com/sponsors/eemeli"}}}};var oI=`https://github.com/${qe.repository}/tree/${qe.commit}`,sI=`https://codeload.github.com/${qe.repository}/tar.gz/${qe.commit}`,aI=qe.source.integrity,cI=qe.installer.integrity,uI=`https://registry.npmjs.org/${qe.installer.package}/-/${qe.installer.package}-${qe.installer.version}.tgz`,lI=`${JSON.stringify({name:pi.name,version:pi.version,private:!0,dependencies:pi.packages[""].dependencies},null,2)}
|
|
221
|
+
printf %s "$VALUE" | farthershore variables ${e} my-biz POSTHOG_TOKEN`,idempotent:!0,args:[mi,df,jC,Xs],handler:async({client:t,args:r,reqOpts:i,emit:n})=>{let o=r.businessId,a=await(e==="set"?t.builderCreateBusinessVariable:t.builderRotateBusinessVariable)(o,r.name,{value:await LC(),delivery:DC.parse(String(r.delivery).toUpperCase()),environmentId:await Qs(t,o,r.env)},i);n(mf(o,a),`Secret ${r.name} ${a.pending?"publication pending":"active"}`)}},mcp:{tool:e==="set"?"fs_variable_set":"fs_variable_rotate",title:e==="set"?"Create a write-only secret":"Rotate a write-only secret",description:"Creates an immutable secret generation. Plaintext is accepted once and never returned.",annotations:{readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(pf),name:s.string().describe(Qk),value:s.string().min(1).describe("The write-only value."),delivery:s.enum(["PUBLIC","BUILD","RUNTIME"]).describe(zC),environmentId:s.string().optional().describe(ff),...ue},handler:async(t,r)=>(e==="set"?t.builderCreateBusinessVariable:t.builderRotateBusinessVariable)(await F(t,r.businessId),r.name,{value:r.value,delivery:r.delivery,environmentId:r.environmentId},{idempotencyKey:r.idempotencyKey})}}}var gf=[{opKey:"business_variable.read",operationClass:"operate",sideEffect:"read",cli:{group:"variables",command:"list",summary:"List PUBLIC values and BUILD/RUNTIME secret metadata",args:[mi,Xs],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId,n=await Qs(e,i,t.env);r({businessId:i,environmentId:n??null,variables:await e.builderBusinessVariables(i,n)},"Business variables")}},mcp:{tool:"fs_variable_list",title:"List business variables",description:"Lists readable PUBLIC values plus lifecycle metadata for write-only BUILD and RUNTIME secrets.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string().describe(pf),environmentId:s.string().optional().describe(ff)},handler:async(e,t)=>e.builderBusinessVariables(await F(e,t.businessId),t.environmentId)}},Yk("set"),Yk("rotate"),{opKey:"business_variable.revoke",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:"revoke",summary:"Revoke runtime access to a secret. Requires --yes.",destructive:!0,yesMessage:"Revocation removes runtime availability once acknowledged. Pass --yes to confirm.",idempotent:!0,args:[mi,df,Xs],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.businessId,o=await e.builderRevokeBusinessVariable(n,t.name,await Qs(e,n,t.env),r);i(mf(n,o),"Secret revocation submitted")}},mcp:{tool:"fs_variable_revoke",title:"Revoke a write-only secret",description:"Revokes runtime access after explicit confirmation and returns a durable operation.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),name:s.string(),environmentId:s.string().optional(),confirmation:s.literal("REVOKE"),...ue},handler:async(e,t)=>e.builderRevokeBusinessVariable(await F(e,t.businessId),t.name,t.environmentId,{idempotencyKey:t.idempotencyKey})}},{opKey:"business_variable.delete",operationClass:"operate",sideEffect:"write",cli:{group:"variables",command:"rm",summary:"Destroy a revoked secret in Main or preview. Requires --yes.",destructive:!0,yesMessage:"Deletion permanently destroys ciphertext and requires acknowledged revocation first. Pass --yes to confirm.",idempotent:!0,args:[mi,df,Xs],handler:async({client:e,args:t,reqOpts:r,emit:i})=>{let n=t.businessId,o=await e.builderDeleteBusinessVariable(n,t.name,await Qs(e,n,t.env),r);i(mf(n,o),"Secret deletion submitted")}},mcp:{tool:"fs_variable_rm",title:"Destroy a revoked secret",description:"Permanently destroys ciphertext after acknowledged revocation. Main and preview use the same contract.",annotations:{readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),name:s.string(),environmentId:s.string().optional(),confirmation:s.literal("DELETE"),...ue},handler:async(e,t)=>e.builderDeleteBusinessVariable(await F(e,t.businessId),t.name,t.environmentId,{idempotencyKey:t.idempotencyKey})}},{opKey:"business_variable.operation.read",operationClass:"operate",sideEffect:"read",cli:{group:"variables",command:"status",summary:"Read a durable secret mutation operation",args:[mi,{field:"operationId",kind:"positional",token:"<operationId>",describe:"Operation id returned by a mutation."}],handler:async({client:e,args:t,emit:r})=>{let i=t.businessId;r({businessId:i,operation:await e.builderGetBusinessVariableOperation(i,t.operationId)},"Secret mutation status")}},mcp:{tool:"fs_variable_operation_get",title:"Get secret mutation status",description:"Reads publication status and frozen impact metadata.",annotations:{readOnlyHint:!0,openWorldHint:!1},inputSchema:{businessId:s.string(),operationId:s.string()},handler:async(e,t)=>e.builderGetBusinessVariableOperation(await F(e,t.businessId),t.operationId)}}];function Xk(e,t){L(e,t,gf)}var Te={field:"businessId",kind:"positional",token:"<businessIdOrName>",resolveBusiness:!0};function BC(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))throw new Error("not an object");return t}catch{throw new b("Expected a JSON object",400,{code:"INVALID_JSON_OBJECT"})}}function eI(e){let t=Number(e);if(!Number.isInteger(t)||t<0)throw new b("Expected a non-negative integer",400,{code:"INVALID_INTEGER"});return t}var hf={field:"body",kind:"flag",token:"--body <json>",describe:"Closed request body as a JSON object",required:!0,parser:BC},bf=[{opKey:"auth.context.issue",operationClass:"operate",sideEffect:"write",cli:{group:"auth",command:"context-token",summary:"Issue a short-lived gateway context token for a subscriber member",args:[Te,{field:"externalOrgId",kind:"flag",token:"--external-org <id>",required:!0},{field:"actorId",kind:"flag",token:"--actor <id>",required:!0},{field:"ttlSeconds",kind:"flag",token:"--ttl-seconds <seconds>",parser:eI}],handler:async({client:e,args:t,emit:r})=>r(await e.issueBusinessAuthContext(t.businessId,{externalOrgId:t.externalOrgId,actorId:t.actorId,...t.ttlSeconds===void 0?{}:{ttlSeconds:t.ttlSeconds}}),"Context token issued")},mcp:null},{opKey:"tax_settings.read",operationClass:"operate",sideEffect:"read",cli:{group:"tax-settings",command:"show",summary:"Show a business's Stripe Tax settings",args:[Te],handler:async({client:e,args:t,emit:r})=>r(await e.getBusinessTaxSettings(t.businessId),"Tax settings")},mcp:null},{opKey:"tax_settings.update",operationClass:"operate",sideEffect:"write",cli:{group:"tax-settings",command:"update",summary:"Update a business's Stripe Tax settings",args:[Te,hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.updateBusinessTaxSettings(t.businessId,t.body,r),"Tax settings updated")},mcp:null},{opKey:"resource_count.report",operationClass:"operate",sideEffect:"write",cli:{group:"resource-count",command:"report",summary:"Report a subscription resource count",args:[Te,{field:"resource",kind:"positional",token:"<resource>"},{field:"subscriptionId",kind:"flag",token:"--subscription <id>",required:!0},{field:"count",kind:"flag",token:"--count <count>",required:!0,parser:eI},{field:"environmentId",kind:"flag",token:"--environment <id>"}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.reportBusinessResourceCount(t.businessId,t.resource,{subscriptionId:t.subscriptionId,count:t.count,...t.environmentId?{environmentId:t.environmentId}:{}},r),"Resource count reported")},mcp:null},{opKey:"denial.read",operationClass:"operate",sideEffect:"read",cli:{group:"denial",command:"show",summary:"Explain a denied request",args:[Te,{field:"requestId",kind:"positional",token:"<requestId>"}],handler:async({client:e,args:t,emit:r})=>r(await e.explainBusinessDenial(t.businessId,t.requestId),"Denial explanation")},mcp:null},{opKey:"business_dependents.read",operationClass:"operate",sideEffect:"read",cli:{group:"dependents",command:"list",summary:"List active dependents for a business route",args:[Te,{field:"route",kind:"flag",token:"--route <route>",required:!0},{field:"since",kind:"flag",token:"--since <iso-date>"},{field:"environmentId",kind:"flag",token:"--environment <id>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBusinessDependents(t.businessId,{route:t.route,since:t.since,environmentId:t.environmentId}),"Business dependents")},mcp:null},{opKey:"workflow.replay",operationClass:"operate",sideEffect:"write",cli:{group:"workflow-control",command:"replay",summary:"Preview a historical billing replay",args:[Te,{field:"periodStart",kind:"flag",token:"--period-start <iso-date>",required:!0},{field:"periodEnd",kind:"flag",token:"--period-end <iso-date>",required:!0}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.replayBusinessPeriod({business_id:t.businessId,period_start:t.periodStart,period_end:t.periodEnd},r),"Replay preview")},mcp:null},{opKey:"workflow.rollback",operationClass:"operate",sideEffect:"write",cli:{group:"workflow-control",command:"rollback-to-config",summary:"Preview restoring a business config commit",args:[Te,{field:"commitSha",kind:"positional",token:"<commitSha>"}],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.previewBusinessConfigRollback({business_id:t.businessId,commit_sha:t.commitSha},r),"Rollback preview")},mcp:null},{opKey:"automation_rule.read",operationClass:"operate",sideEffect:"read",cli:{group:"automation",command:"list",summary:"List automation rules",args:[Te],handler:async({client:e,args:t,emit:r})=>r(await e.listAutomationRules(t.businessId),"Automation rules")},mcp:null},{opKey:"automation_rule.create",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"create",summary:"Create an automation rule",args:[Te,hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.createAutomationRule(t.businessId,t.body,r),"Automation rule created")},mcp:null},{opKey:"automation_rule.update",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"update",summary:"Update an automation rule",args:[Te,{field:"ruleId",kind:"positional",token:"<ruleId>"},hf],idempotent:!0,handler:async({client:e,args:t,reqOpts:r,emit:i})=>i(await e.updateAutomationRule(t.businessId,t.ruleId,t.body,r),"Automation rule updated")},mcp:null},{opKey:"automation_rule.delete",operationClass:"operate",sideEffect:"write",cli:{group:"automation",command:"delete",summary:"Delete an automation rule",args:[Te,{field:"ruleId",kind:"positional",token:"<ruleId>"}],destructive:!0,handler:async({client:e,args:t,emit:r})=>{await e.deleteAutomationRule(t.businessId,t.ruleId),r({deleted:!0,ruleId:t.ruleId},"Automation rule deleted")}},mcp:null},{opKey:"knowledge.guide.read",operationClass:"operate",sideEffect:"read",cli:{group:"knowledge",command:"list",summary:"List platform guide resources",args:[{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listKnowledgeIndex({cursor:t.cursor}),"Knowledge index")},mcp:null},{opKey:"knowledge.business.read",operationClass:"operate",sideEffect:"read",cli:{group:"knowledge",command:"business-list",summary:"List one business's knowledge resources",args:[Te,{field:"cursor",kind:"flag",token:"--cursor <cursor>"}],handler:async({client:e,args:t,emit:r})=>r(await e.listBusinessKnowledgeIndex(t.businessId,{cursor:t.cursor}),"Business knowledge index")},mcp:null}];function tI(e,t){L(e,t,bf)}var nI=[...xp,...Xp,...tf,...xy,...$p,...Vp,...Zp,...nf,...rf,...sf,...uf,...lf,...gf,...Cp,...Rp,...Lp,...jp,...Bp,...Mp,...bf];function rI(e){return`${e.cli.group} ${e.cli.command}`}function MC(e){return e==="contract"?"repo":"api"}function FC(e){return e.endsWith(".read")||e.endsWith(".list")||e.endsWith(".status")?"read":"write"}function KC(){let e=new Map(nI.map(i=>[i.opKey,i])),t=Lv.map(i=>{let n=i.authorization;if(n===void 0)throw new Error(`Platform operation ${i.key} has no authorization binding`);let o=e.get(i.key),a=o?.sideEffect??i.sideEffect??FC(i.key);return{opKey:i.key,class:i.class,canonicalHome:zv(i.class),authoringPath:MC(i.class),domain:i.domain,sideEffect:a,permission:n.permission,targetKind:n.targetKind,scope:[n.permission],cliCommand:o?`farthershore ${rI(o)}`:null,unavailableReason:i.unavailable?.reason??null,unavailableDetail:i.unavailable?.detail??null,mcpTool:o?.mcp?.tool??null,mcpMayWrite:a==="write"&&(o?.mcp??null)!==null&&Dv(i.class)}}),r=t.reduce((i,n)=>(n.unavailableReason===null||(i[n.unavailableReason]=(i[n.unavailableReason]??0)+1),i),{});return{summary:{operationCount:t.length,cliCommandCount:t.filter(i=>i.cliCommand!==null).length,mcpToolCount:t.filter(i=>i.mcpTool!==null).length,unavailableByReason:r,platformGapCount:t.filter(i=>i.unavailableReason!==null&&mp[i.unavailableReason].isPlatformGap).length},invariants:["Contract-class business behavior is authored in business/ and pushed through GitHub.","Operate-class platform actions are performed through Core APIs, CLI commands, or MCP tools.","Every operation without a cliCommand carries a non-null unavailableReason; only reason=not_implemented is a platform gap, and the rest are boundaries to hand off at."],classes:ps,unavailableReasons:mp,operations:t}}function iI(e){e.command("operations").description("Machine-readable catalog of repository-owned and platform-operated actions").command("list").description("Print the agent operation boundary catalog").action(()=>{G(KC(),"Operation catalog")})}import{createHash as GC,timingSafeEqual as ZC}from"node:crypto";import{mkdtempSync as WC,rmSync as qC,writeFileSync as ea}from"node:fs";import{tmpdir as JC}from"node:os";import{join as It}from"node:path";import{spawnSync as mI}from"node:child_process";import{gunzipSync as YC}from"node:zlib";var qe={repository:"farther-shore/skills",tag:"v2.2.0",commit:"996cb1bcc157676aee22d55e8c5984b48f668399",source:{integrity:"sha512-BqViqfR/gpZb2Z9bQLTKoA38x7XCrbUvM567OUmSghyqnYRhJZAh1KOm9xoD1sYZtvkKssJlM2qF56reh04Weg=="},installer:{package:"skills",version:"1.5.22",integrity:"sha512-cHiLjwZEawWFvudIqeeMZlvZayTLbRouydMbblyrdiyH7ZLbqUrSrEEr+Tg+X265iztRlVMsyOYRwpD5JxBsvg=="}};var pi={name:"farthershore-skills-installer",version:"0.0.0",lockfileVersion:3,requires:!0,packages:{"":{name:"farthershore-skills-installer",version:"0.0.0",dependencies:{skills:"file:./skills-installer.tgz"}},"node_modules/@isaacs/fs-minipass":{version:"4.0.1",resolved:"https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",integrity:"sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",license:"ISC",dependencies:{minipass:"^7.0.4"},engines:{node:">=18.0.0"}},"node_modules/chownr":{version:"3.0.0",resolved:"https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",integrity:"sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",license:"BlueOak-1.0.0",engines:{node:">=18"}},"node_modules/minipass":{version:"7.1.3",resolved:"https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",integrity:"sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",license:"BlueOak-1.0.0",engines:{node:">=16 || 14 >=14.17"}},"node_modules/minizlib":{version:"3.1.0",resolved:"https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",integrity:"sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",license:"MIT",dependencies:{minipass:"^7.1.2"},engines:{node:">= 18"}},"node_modules/skills":{version:"1.5.22",resolved:"file:skills-installer.tgz",integrity:"sha512-cHiLjwZEawWFvudIqeeMZlvZayTLbRouydMbblyrdiyH7ZLbqUrSrEEr+Tg+X265iztRlVMsyOYRwpD5JxBsvg==",license:"MIT",dependencies:{tar:"^7.5.20",yaml:"^2.8.3"},bin:{"add-skill":"bin/cli.mjs",skills:"bin/cli.mjs"},engines:{node:">=22.20.0"}},"node_modules/tar":{version:"7.5.22",resolved:"https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",integrity:"sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==",license:"BlueOak-1.0.0",dependencies:{"@isaacs/fs-minipass":"^4.0.0",chownr:"^3.0.0",minipass:"^7.1.2",minizlib:"^3.1.0",yallist:"^5.0.0"},engines:{node:">=18"}},"node_modules/yallist":{version:"5.0.0",resolved:"https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",integrity:"sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",license:"BlueOak-1.0.0",engines:{node:">=18"}},"node_modules/yaml":{version:"2.9.0",resolved:"https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",integrity:"sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",license:"ISC",bin:{yaml:"bin.mjs"},engines:{node:">= 14.6"},funding:{url:"https://github.com/sponsors/eemeli"}}}};var oI=`https://github.com/${qe.repository}/tree/${qe.commit}`,sI=`https://codeload.github.com/${qe.repository}/tar.gz/${qe.commit}`,aI=qe.source.integrity,cI=qe.installer.integrity,uI=`https://registry.npmjs.org/${qe.installer.package}/-/${qe.installer.package}-${qe.installer.version}.tgz`,lI=`${JSON.stringify({name:pi.name,version:pi.version,private:!0,dependencies:pi.packages[""].dependencies},null,2)}
|
|
222
222
|
`,dI=`${JSON.stringify(pi,null,2)}
|
|
223
|
-
`;var
|
|
223
|
+
`;var QC=3e4,XC=6e4,eP=12e4,pI=5*1024*1024,tP=20*1024*1024,_f="https://registry.npmjs.org/",nP={packageJson:lI,packageLockJson:dI};function hI(e){e.command("skills").description("Manage the platform-verified Farther Shore agent skills").command("install").description("Install the platform-pinned, SHA-512-verified skills release").action(async()=>{await rP(),G({source:oI},"Installed the platform-verified Farther Shore skills bundle.","skills.install")})}async function rP(e={}){let t=e.fetchArchive??fetch,r=await fI({description:"skills installer",downloadCode:"SKILLS_INSTALLER_DOWNLOAD_FAILED",integrity:cI,integrityCode:"SKILLS_INSTALLER_INTEGRITY_MISMATCH",tooLargeCode:"SKILLS_INSTALLER_TOO_LARGE",url:uI},t),i=await fI({description:"skills source archive",downloadCode:"SKILLS_SOURCE_DOWNLOAD_FAILED",integrity:aI,integrityCode:"SKILLS_SOURCE_INTEGRITY_MISMATCH",tooLargeCode:"SKILLS_SOURCE_TOO_LARGE",url:sI},t);oP(r,i,e)}async function fI(e,t){let r;try{r=await t(e.url,{headers:{Accept:"application/octet-stream","User-Agent":"farthershore-cli-skills-installer"},redirect:"error",signal:AbortSignal.timeout(QC)})}catch(i){throw new b(`Could not download the pinned ${e.description}`,0,{code:e.downloadCode,details:i instanceof Error?{cause:i.message}:void 0})}if(!r.ok)throw await r.body?.cancel(),new b(`Could not download the pinned ${e.description} (HTTP ${r.status})`,0,{code:e.downloadCode});return iP(r,e)}async function iP(e,t){let r=Number(e.headers.get("content-length"));if(Number.isFinite(r)&&r>pI)throw await e.body?.cancel(),gI(t);if(!e.body)throw new b(`Pinned ${t.description} response had no body`,0,{code:t.downloadCode});let i=e.body.getReader(),n=GC("sha512"),o=[],a=0;for(;;){let{done:c,value:u}=await i.read();if(c)break;if(a+=u.byteLength,a>pI)throw await i.cancel(),gI(t);let l=Buffer.from(u);n.update(l),o.push(l)}return aP(n.digest(),t),Buffer.concat(o,a)}function oP(e,t,r={},i=nP){let n=WC(It(JC(),"farthershore-skills-installer-"));try{let o=It(n,"skills-installer.tgz"),a=It(n,"npmrc"),c=It(n,"source"),u;try{let f=YC(t,{maxOutputLength:tP});u=zs(f,c)}catch(f){throw new b("Pinned skills source archive is invalid",0,{code:"SKILLS_SOURCE_ARCHIVE_INVALID",details:f instanceof Error?{cause:f.message}:void 0})}if(!u.some(f=>f.endsWith("/SKILL.md")))throw new b("Pinned skills source archive contains no skills",0,{code:"SKILLS_SOURCE_ARCHIVE_INVALID"});ea(o,e,{mode:384}),ea(It(n,"package.json"),i.packageJson,{mode:384}),ea(It(n,"package-lock.json"),i.packageLockJson,{mode:384}),ea(a,`registry=${_f}
|
|
224
224
|
ignore-scripts=true
|
|
225
|
-
`,{mode:384});let d=(r.installPackage??(f=>mI(process.platform==="win32"?"npm.cmd":"npm",["ci","--ignore-scripts","--no-audit","--no-fund","--omit=dev",`--registry=${_f}`,`--userconfig=${a}`],{cwd:f,stdio:"inherit",env:
|
|
226
|
-
`));Et.hook("preAction",(e,t)=>{ty(Et.opts().format),ay(
|
|
225
|
+
`,{mode:384});let d=(r.installPackage??(f=>mI(process.platform==="win32"?"npm.cmd":"npm",["ci","--ignore-scripts","--no-audit","--no-fund","--omit=dev",`--registry=${_f}`,`--userconfig=${a}`],{cwd:f,stdio:"inherit",env:sP(f),timeout:XC})))(n);if(d.error||d.status!==0)throw new b(d.error?.message??`Could not install verified skills runtime dependencies (npm exited with status ${d.status??"unknown"})`,0,{code:"SKILLS_INSTALLER_DEPENDENCY_INSTALL_FAILED"});let g=It(n,"node_modules","skills","bin","cli.mjs"),p=["add",c,"--skill","*","-g","-y"],S=(r.runInstaller??((f,m)=>mI(process.execPath,[f,...m],{stdio:"inherit",timeout:eP})))(g,p);if(S.error||S.status!==0)throw new b(S.error?.message??`Verified skills installer exited with status ${S.status??"unknown"}`,0,{code:"SKILLS_INSTALL_FAILED"})}finally{qC(n,{recursive:!0,force:!0})}}function sP(e){return{...Object.fromEntries(Object.entries(process.env).filter(([t])=>!/^npm_config_/i.test(t))),HOME:e,npm_config_cache:It(e,"npm-cache"),npm_config_registry:_f}}function aP(e,t){let r=t.integrity.replace(/^sha512-/,""),i=Buffer.from(r,"base64");if(i.byteLength!==e.byteLength||!ZC(i,e))throw new b(`Downloaded ${t.description} does not match the platform-pinned SHA-512`,0,{code:t.integrityCode})}function gI(e){return new b(`Pinned ${e.description} exceeds the 5 MB limit`,0,{code:e.tooLargeCode})}function bI(e,t){ly(e,t),hI(e),Iy(e,t),Pk(e,t),Dk(e,t),Sy(e,t),$y(e,t),Dy(e,t),zy(e,t),Uy(e,t),Zy(e,t),iI(e),Xy(e,t),tk(e,t),rk(e,t),ok(e,t),fk(e,t),Mk(e,t),Fk(e,t),Kk(e,t),Wk(e,t),Jk(e,t),Xk(e,t),tI(e,t),gk(e,t),xk(e),Tk(e),Py(e,t),Ay(e,t),Ck(e),Rk(e)}var mP=lP(uP(import.meta.url)),pP=JSON.parse(await cP(dP(mP,"..","package.json"),"utf-8")),Et=new Cf;Et.name("farthershore").description("FartherShore CLI \u2014 agent-friendly commands for business operations").version(pP.version).option("--api-url <url>","Override API base URL").option("--organization <id-or-slug>","Use this organization for the current command").option("--format <format>","Output format. Use --format json for machine-readable agent output").option("--no-input","Never prompt; fail fast in non-interactive (agent) use").addHelpText("before",["Start here (agents):"," farthershore operations list --format json"," The machine-readable catalog of EVERY platform operation \u2014 for each:"," its class (contract = author in the repo | operate = call it here),"," the scope it needs, and the exact CLI command. Read this first to"," discover what exists rather than guessing at commands.",""," Add --format json to any command for the agent output envelope.",""].join(`
|
|
226
|
+
`));Et.hook("preAction",(e,t)=>{ty(Et.opts().format),ay(fP(t))});function fP(e){let t=[],r=e;for(;r&&r.name()&&r.name()!==Et.name();)t.unshift(r.name()),r=r.parent;return t.join(".")||"unknown"}function gP(){let e=Ht(),t=Et.opts(),r=Zf(),i=Qe(),n=rt(process.cwd())?.organizationId,o=i?.token===r?i.orgId:void 0,a=t.organization??n??o,c=t.apiUrl??process.env.FARTHERSHORE_API_URL??e.apiUrl;return Ft({apiUrl:c,token:r,...a?{organizationId:a}:{},...t.organization&&n?{requiredOrganizationId:n}:{}})}bI(Et,gP);Et.exitOverride();async function hP(){try{await Et.parseAsync(process.argv)}catch(e){if(e instanceof b)process.exitCode=Ip(e);else if(e instanceof Error){let t=e.code;t==="commander.helpDisplayed"||t==="commander.version"||e.message!=="(outputHelp)"&&(process.exitCode=Ip(new b(e.message,0)))}}}hP();
|