fimo 0.7.1-staging.1 → 0.8.0-staging.2

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/dist/cli/index.js CHANGED
@@ -39,7 +39,7 @@ Expecting one of '${allowedValues.join("', '")}'`);return this._lifeCycleHooks[e
39
39
  `),this.outputHelp({error:!0}));let config=errorOptions||{},exitCode=config.exitCode||1,code2=config.code||"commander.error";this._exit(exitCode,code2,message)}_parseOptionsEnv(){this.options.forEach(option=>{if(option.envVar&&option.envVar in process8.env){let optionKey=option.attributeName();(this.getOptionValue(optionKey)===void 0||["default","config","env"].includes(this.getOptionValueSource(optionKey)))&&(option.required||option.optional?this.emit(`optionEnv:${option.name()}`,process8.env[option.envVar]):this.emit(`optionEnv:${option.name()}`))}})}_parseOptionsImplied(){let dualHelper=new DualOptions(this.options),hasCustomOptionValue=__name(optionKey=>this.getOptionValue(optionKey)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(optionKey)),"hasCustomOptionValue");this.options.filter(option=>option.implied!==void 0&&hasCustomOptionValue(option.attributeName())&&dualHelper.valueFromOption(this.getOptionValue(option.attributeName()),option)).forEach(option=>{Object.keys(option.implied).filter(impliedKey=>!hasCustomOptionValue(impliedKey)).forEach(impliedKey=>{this.setOptionValueWithSource(impliedKey,option.implied[impliedKey],"implied")})})}missingArgument(name){let message=`error: missing required argument '${name}'`;this.error(message,{code:"commander.missingArgument"})}optionMissingArgument(option){let message=`error: option '${option.flags}' argument missing`;this.error(message,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(option){let message=`error: required option '${option.flags}' not specified`;this.error(message,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(option,conflictingOption){let findBestOptionFromValue=__name(option2=>{let optionKey=option2.attributeName(),optionValue=this.getOptionValue(optionKey),negativeOption=this.options.find(target=>target.negate&&optionKey===target.attributeName()),positiveOption=this.options.find(target=>!target.negate&&optionKey===target.attributeName());return negativeOption&&(negativeOption.presetArg===void 0&&optionValue===!1||negativeOption.presetArg!==void 0&&optionValue===negativeOption.presetArg)?negativeOption:positiveOption||option2},"findBestOptionFromValue"),getErrorMessage=__name(option2=>{let bestOption=findBestOptionFromValue(option2),optionKey=bestOption.attributeName();return this.getOptionValueSource(optionKey)==="env"?`environment variable '${bestOption.envVar}'`:`option '${bestOption.flags}'`},"getErrorMessage"),message=`error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;this.error(message,{code:"commander.conflictingOption"})}unknownOption(flag2){if(this._allowUnknownOption)return;let suggestion="";if(flag2.startsWith("--")&&this._showSuggestionAfterError){let candidateFlags=[],command=this;do{let moreFlags=command.createHelp().visibleOptions(command).filter(option=>option.long).map(option=>option.long);candidateFlags=candidateFlags.concat(moreFlags),command=command.parent}while(command&&!command._enablePositionalOptions);suggestion=suggestSimilar(flag2,candidateFlags)}let message=`error: unknown option '${flag2}'${suggestion}`;this.error(message,{code:"commander.unknownOption"})}_excessArguments(receivedArgs){if(this._allowExcessArguments)return;let expected=this.registeredArguments.length,s=expected===1?"":"s",message=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;this.error(message,{code:"commander.excessArguments"})}unknownCommand(){let unknownName=this.args[0],suggestion="";if(this._showSuggestionAfterError){let candidateNames=[];this.createHelp().visibleCommands(this).forEach(command=>{candidateNames.push(command.name()),command.alias()&&candidateNames.push(command.alias())}),suggestion=suggestSimilar(unknownName,candidateNames)}let message=`error: unknown command '${unknownName}'${suggestion}`;this.error(message,{code:"commander.unknownCommand"})}version(str,flags,description){if(str===void 0)return this._version;this._version=str,flags=flags||"-V, --version",description=description||"output the version number";let versionOption=this.createOption(flags,description);return this._versionOptionName=versionOption.attributeName(),this._registerOption(versionOption),this.on("option:"+versionOption.name(),()=>{this._outputConfiguration.writeOut(`${str}
40
40
  `),this._exit(0,"commander.version",str)}),this}description(str,argsDescription){return str===void 0&&argsDescription===void 0?this._description:(this._description=str,argsDescription&&(this._argsDescription=argsDescription),this)}summary(str){return str===void 0?this._summary:(this._summary=str,this)}alias(alias){if(alias===void 0)return this._aliases[0];let command=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(command=this.commands[this.commands.length-1]),alias===command._name)throw new Error("Command alias can't be the same as its name");let matchingCommand=this.parent?._findCommand(alias);if(matchingCommand){let existingCmd=[matchingCommand.name()].concat(matchingCommand.aliases()).join("|");throw new Error(`cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`)}return command._aliases.push(alias),this}aliases(aliases2){return aliases2===void 0?this._aliases:(aliases2.forEach(alias=>this.alias(alias)),this)}usage(str){if(str===void 0){if(this._usage)return this._usage;let args=this.registeredArguments.map(arg=>humanReadableArgName(arg));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?args:[]).join(" ")}return this._usage=str,this}name(str){return str===void 0?this._name:(this._name=str,this)}nameFromFilename(filename){return this._name=path49.basename(filename,path49.extname(filename)),this}executableDir(path50){return path50===void 0?this._executableDir:(this._executableDir=path50,this)}helpInformation(contextOptions){let helper=this.createHelp(),context=this._getOutputContext(contextOptions);helper.prepareContext({error:context.error,helpWidth:context.helpWidth,outputHasColors:context.hasColors});let text3=helper.formatHelp(this,helper);return context.hasColors?text3:this._outputConfiguration.stripColor(text3)}_getOutputContext(contextOptions){contextOptions=contextOptions||{};let error=!!contextOptions.error,baseWrite,hasColors,helpWidth;return error?(baseWrite=__name(str=>this._outputConfiguration.writeErr(str),"baseWrite"),hasColors=this._outputConfiguration.getErrHasColors(),helpWidth=this._outputConfiguration.getErrHelpWidth()):(baseWrite=__name(str=>this._outputConfiguration.writeOut(str),"baseWrite"),hasColors=this._outputConfiguration.getOutHasColors(),helpWidth=this._outputConfiguration.getOutHelpWidth()),{error,write:__name(str=>(hasColors||(str=this._outputConfiguration.stripColor(str)),baseWrite(str)),"write"),hasColors,helpWidth}}outputHelp(contextOptions){let deprecatedCallback;typeof contextOptions=="function"&&(deprecatedCallback=contextOptions,contextOptions=void 0);let outputContext=this._getOutputContext(contextOptions),eventContext={error:outputContext.error,write:outputContext.write,command:this};this._getCommandAndAncestors().reverse().forEach(command=>command.emit("beforeAllHelp",eventContext)),this.emit("beforeHelp",eventContext);let helpInformation=this.helpInformation({error:outputContext.error});if(deprecatedCallback&&(helpInformation=deprecatedCallback(helpInformation),typeof helpInformation!="string"&&!Buffer.isBuffer(helpInformation)))throw new Error("outputHelp callback must return a string or a Buffer");outputContext.write(helpInformation),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",eventContext),this._getCommandAndAncestors().forEach(command=>command.emit("afterAllHelp",eventContext))}helpOption(flags,description){return typeof flags=="boolean"?(flags?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(flags=flags??"-h, --help",description=description??"display help for command",this._helpOption=this.createOption(flags,description),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(option){return this._helpOption=option,this}help(contextOptions){this.outputHelp(contextOptions);let exitCode=Number(process8.exitCode??0);exitCode===0&&contextOptions&&typeof contextOptions!="function"&&contextOptions.error&&(exitCode=1),this._exit(exitCode,"commander.help","(outputHelp)")}addHelpText(position,text3){let allowedValues=["beforeAll","before","after","afterAll"];if(!allowedValues.includes(position))throw new Error(`Unexpected value for position to addHelpText.
41
41
  Expecting one of '${allowedValues.join("', '")}'`);let helpEvent=`${position}Help`;return this.on(helpEvent,context=>{let helpStr;typeof text3=="function"?helpStr=text3({error:context.error,command:context.command}):helpStr=text3,helpStr&&context.write(`${helpStr}
42
- `)}),this}_outputHelpIfRequested(args){let helpOption=this._getHelpOption();helpOption&&args.find(arg=>helpOption.is(arg))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function incrementNodeInspectorPort(args){return args.map(arg=>{if(!arg.startsWith("--inspect"))return arg;let debugOption,debugHost="127.0.0.1",debugPort="9229",match;return(match=arg.match(/^(--inspect(-brk)?)$/))!==null?debugOption=match[1]:(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(debugOption=match[1],/^\d+$/.test(match[3])?debugPort=match[3]:debugHost=match[3]):(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(debugOption=match[1],debugHost=match[3],debugPort=match[4]),debugOption&&debugPort!=="0"?`${debugOption}=${debugHost}:${parseInt(debugPort)+1}`:arg})}__name(incrementNodeInspectorPort,"incrementNodeInspectorPort");function useColor(){if(process8.env.NO_COLOR||process8.env.FORCE_COLOR==="0"||process8.env.FORCE_COLOR==="false")return!1;if(process8.env.FORCE_COLOR||process8.env.CLICOLOR_FORCE!==void 0)return!0}__name(useColor,"useColor");exports2.Command=Command2;exports2.useColor=useColor}});var require_commander=__commonJS({"../../node_modules/.pnpm/commander@13.1.0/node_modules/commander/index.js"(exports2){var{Argument:Argument2}=require_argument(),{Command:Command2}=require_command(),{CommanderError:CommanderError2,InvalidArgumentError:InvalidArgumentError2}=require_error(),{Help:Help2}=require_help(),{Option:Option2}=require_option();exports2.program=new Command2;exports2.createCommand=name=>new Command2(name);exports2.createOption=(flags,description)=>new Option2(flags,description);exports2.createArgument=(name,description)=>new Argument2(name,description);exports2.Command=Command2;exports2.Option=Option2;exports2.Argument=Argument2;exports2.Help=Help2;exports2.CommanderError=CommanderError2;exports2.InvalidArgumentError=InvalidArgumentError2;exports2.InvalidOptionArgumentError=InvalidArgumentError2}});import{createHash}from"node:crypto";function normalizeApiUrl(input){let trimmed=input.trim();try{let url=new URL(trimmed),pathname=url.pathname.replace(/\/+$/,"");return`${url.protocol}//${url.host}${pathname}`}catch{return trimmed.replace(/\/+$/,"")}}function hashApiUrl(input){return createHash("sha256").update(normalizeApiUrl(input)).digest("hex").slice(0,6)}function safeHostLabel(host){return host.replace(/:/g,"-").replace(/[^a-zA-Z0-9.-]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").toLowerCase()}function credentialsFilename(apiUrl){let normalized=normalizeApiUrl(apiUrl),hostLabel="unknown";try{hostLabel=safeHostLabel(new URL(normalized).host)}catch{}return hostLabel.length===0&&(hostLabel="unknown"),`${hostLabel}-${hashApiUrl(apiUrl)}.json`}var init_credentials_path=__esm({"src/cli/utils/credentials-path.ts"(){__name(normalizeApiUrl,"normalizeApiUrl");__name(hashApiUrl,"hashApiUrl");__name(safeHostLabel,"safeHostLabel");__name(credentialsFilename,"credentialsFilename")}});import fs from"node:fs";import{homedir}from"node:os";import path,{join}from"node:path";import{fileURLToPath}from"node:url";function readReleaseManifest(){try{let raw=fs.readFileSync(RELEASE_FILE,"utf8"),parsed=JSON.parse(raw),manifest={};return typeof parsed.apiUrl=="string"&&parsed.apiUrl.length>0&&(manifest.apiUrl=parsed.apiUrl),typeof parsed.webUrl=="string"&&parsed.webUrl.length>0&&(manifest.webUrl=parsed.webUrl),manifest}catch{return{}}}function loadConfig(){let baked=readReleaseManifest(),apiUrl=process.env.FIMO_API_URL?.trim()||baked.apiUrl||DEFAULT_API_URL,webUrl=process.env.FIMO_WEB_URL?.trim()||baked.webUrl||DEFAULT_WEB_URL,configDir=join(process.env.XDG_CONFIG_HOME||join(homedir(),".config"),"fimo"),credentialsDir=join(configDir,"credentials");return{apiUrl,webUrl,configDir,credentialsDir,credentialsFile:join(credentialsDir,credentialsFilename(apiUrl))}}var DEFAULT_API_URL,DEFAULT_WEB_URL,THIS_FILE,CLI_ROOT,RELEASE_FILE,init_config=__esm({"src/cli/config.ts"(){init_credentials_path();DEFAULT_API_URL="http://localhost:3000",DEFAULT_WEB_URL="http://localhost:5173",THIS_FILE=fileURLToPath(import.meta.url),CLI_ROOT=path.resolve(path.dirname(THIS_FILE),"..",".."),RELEASE_FILE=path.resolve(CLI_ROOT,"release.json");__name(readReleaseManifest,"readReleaseManifest");__name(loadConfig,"loadConfig")}});import fs2 from"node:fs";function ensureCredentialsDir(cfg){fs2.existsSync(cfg.credentialsDir)||fs2.mkdirSync(cfg.credentialsDir,{recursive:!0})}function readCredentials(cfg=loadConfig()){if(!fs2.existsSync(cfg.credentialsFile))return null;let raw=fs2.readFileSync(cfg.credentialsFile,"utf-8");return JSON.parse(raw)}function writeCredentials(credentials,cfg=loadConfig()){ensureCredentialsDir(cfg);let tmpFile=`${cfg.credentialsFile}.tmp-${process.pid}`;fs2.writeFileSync(tmpFile,JSON.stringify(credentials,null,2)),fs2.renameSync(tmpFile,cfg.credentialsFile)}function clearCredentials(cfg=loadConfig()){fs2.existsSync(cfg.credentialsFile)&&fs2.unlinkSync(cfg.credentialsFile)}function setActiveOrganization(organization,cfg=loadConfig()){let creds=requireCredentials(cfg);writeCredentials({...creds,activeOrganization:organization},cfg)}function recordAuthFailure(cfg=loadConfig()){let creds=readCredentials(cfg);creds&&writeCredentials({...creds,lastFailedAuthAt:new Date().toISOString()},cfg)}function requireToken(cfg=loadConfig()){return requireCredentials(cfg).access_token}function requireCredentials(cfg=loadConfig()){let creds=readCredentials(cfg);if(!creds?.access_token)throw new NotAuthenticatedError(cfg.apiUrl);return creds}var NotAuthenticatedError,init_auth=__esm({"src/cli/auth.ts"(){init_config();NotAuthenticatedError=class extends Error{static{__name(this,"NotAuthenticatedError")}apiUrl;constructor(apiUrl,message="You are not signed in to Fimo."){super(message),this.name="NotAuthenticatedError",this.apiUrl=apiUrl}};__name(ensureCredentialsDir,"ensureCredentialsDir");__name(readCredentials,"readCredentials");__name(writeCredentials,"writeCredentials");__name(clearCredentials,"clearCredentials");__name(setActiveOrganization,"setActiveOrganization");__name(recordAuthFailure,"recordAuthFailure");__name(requireToken,"requireToken");__name(requireCredentials,"requireCredentials")}});var isAmbiguous,isFullWidth,isWide,init_utils=__esm({"../../node_modules/.pnpm/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/utils.js"(){isAmbiguous=__name(x=>x===161||x===164||x===167||x===168||x===170||x===173||x===174||x>=176&&x<=180||x>=182&&x<=186||x>=188&&x<=191||x===198||x===208||x===215||x===216||x>=222&&x<=225||x===230||x>=232&&x<=234||x===236||x===237||x===240||x===242||x===243||x>=247&&x<=250||x===252||x===254||x===257||x===273||x===275||x===283||x===294||x===295||x===299||x>=305&&x<=307||x===312||x>=319&&x<=322||x===324||x>=328&&x<=331||x===333||x===338||x===339||x===358||x===359||x===363||x===462||x===464||x===466||x===468||x===470||x===472||x===474||x===476||x===593||x===609||x===708||x===711||x>=713&&x<=715||x===717||x===720||x>=728&&x<=731||x===733||x===735||x>=768&&x<=879||x>=913&&x<=929||x>=931&&x<=937||x>=945&&x<=961||x>=963&&x<=969||x===1025||x>=1040&&x<=1103||x===1105||x===8208||x>=8211&&x<=8214||x===8216||x===8217||x===8220||x===8221||x>=8224&&x<=8226||x>=8228&&x<=8231||x===8240||x===8242||x===8243||x===8245||x===8251||x===8254||x===8308||x===8319||x>=8321&&x<=8324||x===8364||x===8451||x===8453||x===8457||x===8467||x===8470||x===8481||x===8482||x===8486||x===8491||x===8531||x===8532||x>=8539&&x<=8542||x>=8544&&x<=8555||x>=8560&&x<=8569||x===8585||x>=8592&&x<=8601||x===8632||x===8633||x===8658||x===8660||x===8679||x===8704||x===8706||x===8707||x===8711||x===8712||x===8715||x===8719||x===8721||x===8725||x===8730||x>=8733&&x<=8736||x===8739||x===8741||x>=8743&&x<=8748||x===8750||x>=8756&&x<=8759||x===8764||x===8765||x===8776||x===8780||x===8786||x===8800||x===8801||x>=8804&&x<=8807||x===8810||x===8811||x===8814||x===8815||x===8834||x===8835||x===8838||x===8839||x===8853||x===8857||x===8869||x===8895||x===8978||x>=9312&&x<=9449||x>=9451&&x<=9547||x>=9552&&x<=9587||x>=9600&&x<=9615||x>=9618&&x<=9621||x===9632||x===9633||x>=9635&&x<=9641||x===9650||x===9651||x===9654||x===9655||x===9660||x===9661||x===9664||x===9665||x>=9670&&x<=9672||x===9675||x>=9678&&x<=9681||x>=9698&&x<=9701||x===9711||x===9733||x===9734||x===9737||x===9742||x===9743||x===9756||x===9758||x===9792||x===9794||x===9824||x===9825||x>=9827&&x<=9829||x>=9831&&x<=9834||x===9836||x===9837||x===9839||x===9886||x===9887||x===9919||x>=9926&&x<=9933||x>=9935&&x<=9939||x>=9941&&x<=9953||x===9955||x===9960||x===9961||x>=9963&&x<=9969||x===9972||x>=9974&&x<=9977||x===9979||x===9980||x===9982||x===9983||x===10045||x>=10102&&x<=10111||x>=11094&&x<=11097||x>=12872&&x<=12879||x>=57344&&x<=63743||x>=65024&&x<=65039||x===65533||x>=127232&&x<=127242||x>=127248&&x<=127277||x>=127280&&x<=127337||x>=127344&&x<=127373||x===127375||x===127376||x>=127387&&x<=127404||x>=917760&&x<=917999||x>=983040&&x<=1048573||x>=1048576&&x<=1114109,"isAmbiguous"),isFullWidth=__name(x=>x===12288||x>=65281&&x<=65376||x>=65504&&x<=65510,"isFullWidth"),isWide=__name(x=>x>=4352&&x<=4447||x===8986||x===8987||x===9001||x===9002||x>=9193&&x<=9196||x===9200||x===9203||x===9725||x===9726||x===9748||x===9749||x>=9800&&x<=9811||x===9855||x===9875||x===9889||x===9898||x===9899||x===9917||x===9918||x===9924||x===9925||x===9934||x===9940||x===9962||x===9970||x===9971||x===9973||x===9978||x===9981||x===9989||x===9994||x===9995||x===10024||x===10060||x===10062||x>=10067&&x<=10069||x===10071||x>=10133&&x<=10135||x===10160||x===10175||x===11035||x===11036||x===11088||x===11093||x>=11904&&x<=11929||x>=11931&&x<=12019||x>=12032&&x<=12245||x>=12272&&x<=12287||x>=12289&&x<=12350||x>=12353&&x<=12438||x>=12441&&x<=12543||x>=12549&&x<=12591||x>=12593&&x<=12686||x>=12688&&x<=12771||x>=12783&&x<=12830||x>=12832&&x<=12871||x>=12880&&x<=19903||x>=19968&&x<=42124||x>=42128&&x<=42182||x>=43360&&x<=43388||x>=44032&&x<=55203||x>=63744&&x<=64255||x>=65040&&x<=65049||x>=65072&&x<=65106||x>=65108&&x<=65126||x>=65128&&x<=65131||x>=94176&&x<=94180||x===94192||x===94193||x>=94208&&x<=100343||x>=100352&&x<=101589||x>=101632&&x<=101640||x>=110576&&x<=110579||x>=110581&&x<=110587||x===110589||x===110590||x>=110592&&x<=110882||x===110898||x>=110928&&x<=110930||x===110933||x>=110948&&x<=110951||x>=110960&&x<=111355||x===126980||x===127183||x===127374||x>=127377&&x<=127386||x>=127488&&x<=127490||x>=127504&&x<=127547||x>=127552&&x<=127560||x===127568||x===127569||x>=127584&&x<=127589||x>=127744&&x<=127776||x>=127789&&x<=127797||x>=127799&&x<=127868||x>=127870&&x<=127891||x>=127904&&x<=127946||x>=127951&&x<=127955||x>=127968&&x<=127984||x===127988||x>=127992&&x<=128062||x===128064||x>=128066&&x<=128252||x>=128255&&x<=128317||x>=128331&&x<=128334||x>=128336&&x<=128359||x===128378||x===128405||x===128406||x===128420||x>=128507&&x<=128591||x>=128640&&x<=128709||x===128716||x>=128720&&x<=128722||x>=128725&&x<=128727||x>=128732&&x<=128735||x===128747||x===128748||x>=128756&&x<=128764||x>=128992&&x<=129003||x===129008||x>=129292&&x<=129338||x>=129340&&x<=129349||x>=129351&&x<=129535||x>=129648&&x<=129660||x>=129664&&x<=129672||x>=129680&&x<=129725||x>=129727&&x<=129733||x>=129742&&x<=129755||x>=129760&&x<=129768||x>=129776&&x<=129784||x>=131072&&x<=196605||x>=196608&&x<=262141,"isWide")}});var ANSI_RE,CONTROL_RE,TAB_RE,EMOJI_RE,LATIN_RE,MODIFIER_RE,NO_TRUNCATION,getStringTruncatedWidth,dist_default,init_dist2=__esm({"../../node_modules/.pnpm/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/index.js"(){init_utils();ANSI_RE=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,CONTROL_RE=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,TAB_RE=/\t{1,1000}/y,EMOJI_RE=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),LATIN_RE=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,MODIFIER_RE=new RegExp("\\p{M}+","gu"),NO_TRUNCATION={limit:1/0,ellipsis:""},getStringTruncatedWidth=__name((input,truncationOptions={},widthOptions={})=>{let LIMIT=truncationOptions.limit??1/0,ELLIPSIS=truncationOptions.ellipsis??"",ELLIPSIS_WIDTH=truncationOptions?.ellipsisWidth??(ELLIPSIS?getStringTruncatedWidth(ELLIPSIS,NO_TRUNCATION,widthOptions).width:0),ANSI_WIDTH=widthOptions.ansiWidth??0,CONTROL_WIDTH=widthOptions.controlWidth??0,TAB_WIDTH=widthOptions.tabWidth??8,AMBIGUOUS_WIDTH=widthOptions.ambiguousWidth??1,EMOJI_WIDTH=widthOptions.emojiWidth??2,FULL_WIDTH_WIDTH=widthOptions.fullWidthWidth??2,REGULAR_WIDTH=widthOptions.regularWidth??1,WIDE_WIDTH=widthOptions.wideWidth??2,indexPrev=0,index2=0,length=input.length,lengthExtra=0,truncationEnabled=!1,truncationIndex=length,truncationLimit=Math.max(0,LIMIT-ELLIPSIS_WIDTH),unmatchedStart=0,unmatchedEnd=0,width=0,widthExtra=0;outer:for(;;){if(unmatchedEnd>unmatchedStart||index2>=length&&index2>indexPrev){let unmatched=input.slice(unmatchedStart,unmatchedEnd)||input.slice(indexPrev,index2);lengthExtra=0;for(let char of unmatched.replaceAll(MODIFIER_RE,"")){let codePoint=char.codePointAt(0)||0;if(isFullWidth(codePoint)?widthExtra=FULL_WIDTH_WIDTH:isWide(codePoint)?widthExtra=WIDE_WIDTH:AMBIGUOUS_WIDTH!==REGULAR_WIDTH&&isAmbiguous(codePoint)?widthExtra=AMBIGUOUS_WIDTH:widthExtra=REGULAR_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,Math.max(unmatchedStart,indexPrev)+lengthExtra)),width+widthExtra>LIMIT){truncationEnabled=!0;break outer}lengthExtra+=char.length,width+=widthExtra}unmatchedStart=unmatchedEnd=0}if(index2>=length)break;if(LATIN_RE.lastIndex=index2,LATIN_RE.test(input)){if(lengthExtra=LATIN_RE.lastIndex-index2,widthExtra=lengthExtra*REGULAR_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/REGULAR_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=LATIN_RE.lastIndex;continue}if(ANSI_RE.lastIndex=index2,ANSI_RE.test(input)){if(width+ANSI_WIDTH>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2)),width+ANSI_WIDTH>LIMIT){truncationEnabled=!0;break}width+=ANSI_WIDTH,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=ANSI_RE.lastIndex;continue}if(CONTROL_RE.lastIndex=index2,CONTROL_RE.test(input)){if(lengthExtra=CONTROL_RE.lastIndex-index2,widthExtra=lengthExtra*CONTROL_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/CONTROL_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=CONTROL_RE.lastIndex;continue}if(TAB_RE.lastIndex=index2,TAB_RE.test(input)){if(lengthExtra=TAB_RE.lastIndex-index2,widthExtra=lengthExtra*TAB_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/TAB_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=TAB_RE.lastIndex;continue}if(EMOJI_RE.lastIndex=index2,EMOJI_RE.test(input)){if(width+EMOJI_WIDTH>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2)),width+EMOJI_WIDTH>LIMIT){truncationEnabled=!0;break}width+=EMOJI_WIDTH,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=EMOJI_RE.lastIndex;continue}index2+=1}return{width:truncationEnabled?truncationLimit:width,index:truncationEnabled?truncationIndex:length,truncated:truncationEnabled,ellipsed:truncationEnabled&&LIMIT>=ELLIPSIS_WIDTH}},"getStringTruncatedWidth"),dist_default=getStringTruncatedWidth}});var NO_TRUNCATION2,fastStringWidth,dist_default2,init_dist3=__esm({"../../node_modules/.pnpm/fast-string-width@1.1.0/node_modules/fast-string-width/dist/index.js"(){init_dist2();NO_TRUNCATION2={limit:1/0,ellipsis:"",ellipsisWidth:0},fastStringWidth=__name((input,options={})=>dist_default(input,NO_TRUNCATION2,options).width,"fastStringWidth"),dist_default2=fastStringWidth}});function wrapAnsi(string,columns,options){return String(string).normalize().split(CRLF_OR_LF).map(line=>exec(line,columns,options)).join(`
42
+ `)}),this}_outputHelpIfRequested(args){let helpOption=this._getHelpOption();helpOption&&args.find(arg=>helpOption.is(arg))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function incrementNodeInspectorPort(args){return args.map(arg=>{if(!arg.startsWith("--inspect"))return arg;let debugOption,debugHost="127.0.0.1",debugPort="9229",match;return(match=arg.match(/^(--inspect(-brk)?)$/))!==null?debugOption=match[1]:(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(debugOption=match[1],/^\d+$/.test(match[3])?debugPort=match[3]:debugHost=match[3]):(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(debugOption=match[1],debugHost=match[3],debugPort=match[4]),debugOption&&debugPort!=="0"?`${debugOption}=${debugHost}:${parseInt(debugPort)+1}`:arg})}__name(incrementNodeInspectorPort,"incrementNodeInspectorPort");function useColor(){if(process8.env.NO_COLOR||process8.env.FORCE_COLOR==="0"||process8.env.FORCE_COLOR==="false")return!1;if(process8.env.FORCE_COLOR||process8.env.CLICOLOR_FORCE!==void 0)return!0}__name(useColor,"useColor");exports2.Command=Command2;exports2.useColor=useColor}});var require_commander=__commonJS({"../../node_modules/.pnpm/commander@13.1.0/node_modules/commander/index.js"(exports2){var{Argument:Argument2}=require_argument(),{Command:Command2}=require_command(),{CommanderError:CommanderError2,InvalidArgumentError:InvalidArgumentError2}=require_error(),{Help:Help2}=require_help(),{Option:Option2}=require_option();exports2.program=new Command2;exports2.createCommand=name=>new Command2(name);exports2.createOption=(flags,description)=>new Option2(flags,description);exports2.createArgument=(name,description)=>new Argument2(name,description);exports2.Command=Command2;exports2.Option=Option2;exports2.Argument=Argument2;exports2.Help=Help2;exports2.CommanderError=CommanderError2;exports2.InvalidArgumentError=InvalidArgumentError2;exports2.InvalidOptionArgumentError=InvalidArgumentError2}});import{createHash}from"node:crypto";function normalizeApiUrl(input){let trimmed=input.trim();try{let url=new URL(trimmed),pathname=url.pathname.replace(/\/+$/,"");return`${url.protocol}//${url.host}${pathname}`}catch{return trimmed.replace(/\/+$/,"")}}function hashApiUrl(input){return createHash("sha256").update(normalizeApiUrl(input)).digest("hex").slice(0,6)}function safeHostLabel(host){return host.replace(/:/g,"-").replace(/[^a-zA-Z0-9.-]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").toLowerCase()}function credentialsFilename(apiUrl){let normalized=normalizeApiUrl(apiUrl),hostLabel="unknown";try{hostLabel=safeHostLabel(new URL(normalized).host)}catch{}return hostLabel.length===0&&(hostLabel="unknown"),`${hostLabel}-${hashApiUrl(apiUrl)}.json`}var init_credentials_path=__esm({"src/cli/utils/credentials-path.ts"(){__name(normalizeApiUrl,"normalizeApiUrl");__name(hashApiUrl,"hashApiUrl");__name(safeHostLabel,"safeHostLabel");__name(credentialsFilename,"credentialsFilename")}});import fs from"node:fs";import{homedir}from"node:os";import path,{join}from"node:path";import{fileURLToPath}from"node:url";function readReleaseManifest(){try{let raw=fs.readFileSync(RELEASE_FILE,"utf8"),parsed=JSON.parse(raw),manifest={};return typeof parsed.apiUrl=="string"&&parsed.apiUrl.length>0&&(manifest.apiUrl=parsed.apiUrl),typeof parsed.webUrl=="string"&&parsed.webUrl.length>0&&(manifest.webUrl=parsed.webUrl),manifest}catch{return{}}}function loadConfig(){let baked=readReleaseManifest(),apiUrl=process.env.FIMO_API_URL?.trim()||baked.apiUrl||DEFAULT_API_URL,webUrl=process.env.FIMO_WEB_URL?.trim()||baked.webUrl||DEFAULT_WEB_URL,configDir=join(process.env.XDG_CONFIG_HOME||join(homedir(),".config"),"fimo"),credentialsDir=join(configDir,"credentials");return{apiUrl,webUrl,configDir,credentialsDir,credentialsFile:join(credentialsDir,credentialsFilename(apiUrl))}}var DEFAULT_API_URL,DEFAULT_WEB_URL,THIS_FILE,CLI_ROOT,RELEASE_FILE,init_config=__esm({"src/cli/config.ts"(){init_credentials_path();DEFAULT_API_URL="http://localhost:3000",DEFAULT_WEB_URL="http://localhost:5173",THIS_FILE=fileURLToPath(import.meta.url),CLI_ROOT=path.resolve(path.dirname(THIS_FILE),"..",".."),RELEASE_FILE=path.resolve(CLI_ROOT,"release.json");__name(readReleaseManifest,"readReleaseManifest");__name(loadConfig,"loadConfig")}});import fs2 from"node:fs";function ensureCredentialsDir(cfg){fs2.existsSync(cfg.credentialsDir)||fs2.mkdirSync(cfg.credentialsDir,{recursive:!0})}function readCredentials(cfg=loadConfig()){if(!fs2.existsSync(cfg.credentialsFile))return null;let raw=fs2.readFileSync(cfg.credentialsFile,"utf-8");return JSON.parse(raw)}function writeCredentials(credentials,cfg=loadConfig()){ensureCredentialsDir(cfg);let tmpFile=`${cfg.credentialsFile}.tmp-${process.pid}`;fs2.writeFileSync(tmpFile,JSON.stringify(credentials,null,2)),fs2.renameSync(tmpFile,cfg.credentialsFile)}function clearCredentials(cfg=loadConfig()){fs2.existsSync(cfg.credentialsFile)&&fs2.unlinkSync(cfg.credentialsFile)}function setActiveOrganization(organization,cfg=loadConfig()){let creds=requireCredentials(cfg);writeCredentials({...creds,activeOrganization:organization},cfg)}function recordAuthFailure(cfg=loadConfig()){let creds=readCredentials(cfg);creds&&writeCredentials({...creds,lastFailedAuthAt:new Date().toISOString()},cfg)}function requireToken(cfg=loadConfig()){return requireCredentials(cfg).access_token}function requireCredentials(cfg=loadConfig()){let creds=readCredentials(cfg);if(!creds?.access_token)throw new NotAuthenticatedError(cfg.apiUrl);return creds}var NotAuthenticatedError,init_auth=__esm({"src/cli/auth.ts"(){init_config();NotAuthenticatedError=class extends Error{static{__name(this,"NotAuthenticatedError")}apiUrl;constructor(apiUrl,message="You are not signed in to Fimo."){super(message),this.name="NotAuthenticatedError",this.apiUrl=apiUrl}};__name(ensureCredentialsDir,"ensureCredentialsDir");__name(readCredentials,"readCredentials");__name(writeCredentials,"writeCredentials");__name(clearCredentials,"clearCredentials");__name(setActiveOrganization,"setActiveOrganization");__name(recordAuthFailure,"recordAuthFailure");__name(requireToken,"requireToken");__name(requireCredentials,"requireCredentials")}});import{spawnSync}from"node:child_process";import fs3 from"node:fs";import path2 from"node:path";import{setTimeout as sleep}from"node:timers/promises";function isPublishedInstall(cliRoot=CLI_ROOT){return fs3.existsSync(path2.join(cliRoot,"release.json"))}function resolveGlobalFimoRoot(){let result=spawnSync("npm",["root","-g"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:GLOBAL_ROOT_TIMEOUT_MS});return result.error||result.status!==0||typeof result.stdout!="string"||result.stdout.trim().length===0?null:path2.resolve(result.stdout.trim(),"fimo")}function normalizedPath(input){try{return fs3.realpathSync(input)}catch{return path2.resolve(input)}}function autoUpgradeEnabled(options={}){let usesDefaults=Object.keys(options).length===0;if(usesDefaults&&defaultEligibility!==void 0)return defaultEligibility;let env=options.env??process.env,cliRoot=options.cliRoot??CLI_ROOT,published=options.published??isPublishedInstall(cliRoot);if(env.FIMO_AUTO_UPGRADE!=="1"||!published)return usesDefaults&&(defaultEligibility=!1),!1;let globalFimoRoot=options.globalFimoRoot===void 0?resolveGlobalFimoRoot():options.globalFimoRoot;if(!globalFimoRoot)return usesDefaults&&(defaultEligibility=!1),!1;let eligible=normalizedPath(cliRoot)===normalizedPath(globalFimoRoot);return usesDefaults&&(defaultEligibility=eligible),eligible}async function acquireLock(lockDir){let deadline=Date.now()+LOCK_WAIT_MS;for(;;){try{fs3.mkdirSync(lockDir);return}catch(error){if(error.code!=="EEXIST")throw error}let stale=!1;try{stale=Date.now()-fs3.statSync(lockDir).mtimeMs>LOCK_STALE_MS}catch{continue}if(stale){try{fs3.rmdirSync(lockDir)}catch{}continue}if(Date.now()>=deadline)throw new Error("auto-upgrade lock timeout");await sleep(LOCK_POLL_MS)}}function readGlobalFimoVersion(){let root2=resolveGlobalFimoRoot();if(!root2)return null;try{let pkg=JSON.parse(fs3.readFileSync(path2.join(root2,"package.json"),"utf8"));return typeof pkg.version=="string"?pkg.version:null}catch{return null}}async function autoUpgradeGlobal(latest){if(!VERSION_PATTERN.test(latest))return!1;let lockDir=path2.join(loadConfig().configDir,"auto-upgrade.lock");try{fs3.mkdirSync(path2.dirname(lockDir),{recursive:!0}),await acquireLock(lockDir)}catch{return!1}try{if(readGlobalFimoVersion()===latest)return!0;let install=spawnSync("npm",["install","-g",`fimo@${latest}`],{stdio:["ignore","ignore","inherit"],timeout:INSTALL_TIMEOUT_MS});return install.error||install.status!==0?!1:readGlobalFimoVersion()===latest}finally{try{fs3.rmdirSync(lockDir)}catch{}}}var INSTALL_TIMEOUT_MS,GLOBAL_ROOT_TIMEOUT_MS,LOCK_WAIT_MS,LOCK_STALE_MS,LOCK_POLL_MS,VERSION_PATTERN,defaultEligibility,init_auto_upgrade=__esm({"src/cli/auto-upgrade.ts"(){init_config();INSTALL_TIMEOUT_MS=12e4,GLOBAL_ROOT_TIMEOUT_MS=5e3,LOCK_WAIT_MS=18e4,LOCK_STALE_MS=3e5,LOCK_POLL_MS=500,VERSION_PATTERN=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;__name(isPublishedInstall,"isPublishedInstall");__name(resolveGlobalFimoRoot,"resolveGlobalFimoRoot");__name(normalizedPath,"normalizedPath");__name(autoUpgradeEnabled,"autoUpgradeEnabled");__name(acquireLock,"acquireLock");__name(readGlobalFimoVersion,"readGlobalFimoVersion");__name(autoUpgradeGlobal,"autoUpgradeGlobal")}});var isAmbiguous,isFullWidth,isWide,init_utils=__esm({"../../node_modules/.pnpm/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/utils.js"(){isAmbiguous=__name(x=>x===161||x===164||x===167||x===168||x===170||x===173||x===174||x>=176&&x<=180||x>=182&&x<=186||x>=188&&x<=191||x===198||x===208||x===215||x===216||x>=222&&x<=225||x===230||x>=232&&x<=234||x===236||x===237||x===240||x===242||x===243||x>=247&&x<=250||x===252||x===254||x===257||x===273||x===275||x===283||x===294||x===295||x===299||x>=305&&x<=307||x===312||x>=319&&x<=322||x===324||x>=328&&x<=331||x===333||x===338||x===339||x===358||x===359||x===363||x===462||x===464||x===466||x===468||x===470||x===472||x===474||x===476||x===593||x===609||x===708||x===711||x>=713&&x<=715||x===717||x===720||x>=728&&x<=731||x===733||x===735||x>=768&&x<=879||x>=913&&x<=929||x>=931&&x<=937||x>=945&&x<=961||x>=963&&x<=969||x===1025||x>=1040&&x<=1103||x===1105||x===8208||x>=8211&&x<=8214||x===8216||x===8217||x===8220||x===8221||x>=8224&&x<=8226||x>=8228&&x<=8231||x===8240||x===8242||x===8243||x===8245||x===8251||x===8254||x===8308||x===8319||x>=8321&&x<=8324||x===8364||x===8451||x===8453||x===8457||x===8467||x===8470||x===8481||x===8482||x===8486||x===8491||x===8531||x===8532||x>=8539&&x<=8542||x>=8544&&x<=8555||x>=8560&&x<=8569||x===8585||x>=8592&&x<=8601||x===8632||x===8633||x===8658||x===8660||x===8679||x===8704||x===8706||x===8707||x===8711||x===8712||x===8715||x===8719||x===8721||x===8725||x===8730||x>=8733&&x<=8736||x===8739||x===8741||x>=8743&&x<=8748||x===8750||x>=8756&&x<=8759||x===8764||x===8765||x===8776||x===8780||x===8786||x===8800||x===8801||x>=8804&&x<=8807||x===8810||x===8811||x===8814||x===8815||x===8834||x===8835||x===8838||x===8839||x===8853||x===8857||x===8869||x===8895||x===8978||x>=9312&&x<=9449||x>=9451&&x<=9547||x>=9552&&x<=9587||x>=9600&&x<=9615||x>=9618&&x<=9621||x===9632||x===9633||x>=9635&&x<=9641||x===9650||x===9651||x===9654||x===9655||x===9660||x===9661||x===9664||x===9665||x>=9670&&x<=9672||x===9675||x>=9678&&x<=9681||x>=9698&&x<=9701||x===9711||x===9733||x===9734||x===9737||x===9742||x===9743||x===9756||x===9758||x===9792||x===9794||x===9824||x===9825||x>=9827&&x<=9829||x>=9831&&x<=9834||x===9836||x===9837||x===9839||x===9886||x===9887||x===9919||x>=9926&&x<=9933||x>=9935&&x<=9939||x>=9941&&x<=9953||x===9955||x===9960||x===9961||x>=9963&&x<=9969||x===9972||x>=9974&&x<=9977||x===9979||x===9980||x===9982||x===9983||x===10045||x>=10102&&x<=10111||x>=11094&&x<=11097||x>=12872&&x<=12879||x>=57344&&x<=63743||x>=65024&&x<=65039||x===65533||x>=127232&&x<=127242||x>=127248&&x<=127277||x>=127280&&x<=127337||x>=127344&&x<=127373||x===127375||x===127376||x>=127387&&x<=127404||x>=917760&&x<=917999||x>=983040&&x<=1048573||x>=1048576&&x<=1114109,"isAmbiguous"),isFullWidth=__name(x=>x===12288||x>=65281&&x<=65376||x>=65504&&x<=65510,"isFullWidth"),isWide=__name(x=>x>=4352&&x<=4447||x===8986||x===8987||x===9001||x===9002||x>=9193&&x<=9196||x===9200||x===9203||x===9725||x===9726||x===9748||x===9749||x>=9800&&x<=9811||x===9855||x===9875||x===9889||x===9898||x===9899||x===9917||x===9918||x===9924||x===9925||x===9934||x===9940||x===9962||x===9970||x===9971||x===9973||x===9978||x===9981||x===9989||x===9994||x===9995||x===10024||x===10060||x===10062||x>=10067&&x<=10069||x===10071||x>=10133&&x<=10135||x===10160||x===10175||x===11035||x===11036||x===11088||x===11093||x>=11904&&x<=11929||x>=11931&&x<=12019||x>=12032&&x<=12245||x>=12272&&x<=12287||x>=12289&&x<=12350||x>=12353&&x<=12438||x>=12441&&x<=12543||x>=12549&&x<=12591||x>=12593&&x<=12686||x>=12688&&x<=12771||x>=12783&&x<=12830||x>=12832&&x<=12871||x>=12880&&x<=19903||x>=19968&&x<=42124||x>=42128&&x<=42182||x>=43360&&x<=43388||x>=44032&&x<=55203||x>=63744&&x<=64255||x>=65040&&x<=65049||x>=65072&&x<=65106||x>=65108&&x<=65126||x>=65128&&x<=65131||x>=94176&&x<=94180||x===94192||x===94193||x>=94208&&x<=100343||x>=100352&&x<=101589||x>=101632&&x<=101640||x>=110576&&x<=110579||x>=110581&&x<=110587||x===110589||x===110590||x>=110592&&x<=110882||x===110898||x>=110928&&x<=110930||x===110933||x>=110948&&x<=110951||x>=110960&&x<=111355||x===126980||x===127183||x===127374||x>=127377&&x<=127386||x>=127488&&x<=127490||x>=127504&&x<=127547||x>=127552&&x<=127560||x===127568||x===127569||x>=127584&&x<=127589||x>=127744&&x<=127776||x>=127789&&x<=127797||x>=127799&&x<=127868||x>=127870&&x<=127891||x>=127904&&x<=127946||x>=127951&&x<=127955||x>=127968&&x<=127984||x===127988||x>=127992&&x<=128062||x===128064||x>=128066&&x<=128252||x>=128255&&x<=128317||x>=128331&&x<=128334||x>=128336&&x<=128359||x===128378||x===128405||x===128406||x===128420||x>=128507&&x<=128591||x>=128640&&x<=128709||x===128716||x>=128720&&x<=128722||x>=128725&&x<=128727||x>=128732&&x<=128735||x===128747||x===128748||x>=128756&&x<=128764||x>=128992&&x<=129003||x===129008||x>=129292&&x<=129338||x>=129340&&x<=129349||x>=129351&&x<=129535||x>=129648&&x<=129660||x>=129664&&x<=129672||x>=129680&&x<=129725||x>=129727&&x<=129733||x>=129742&&x<=129755||x>=129760&&x<=129768||x>=129776&&x<=129784||x>=131072&&x<=196605||x>=196608&&x<=262141,"isWide")}});var ANSI_RE,CONTROL_RE,TAB_RE,EMOJI_RE,LATIN_RE,MODIFIER_RE,NO_TRUNCATION,getStringTruncatedWidth,dist_default,init_dist2=__esm({"../../node_modules/.pnpm/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/index.js"(){init_utils();ANSI_RE=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,CONTROL_RE=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,TAB_RE=/\t{1,1000}/y,EMOJI_RE=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),LATIN_RE=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,MODIFIER_RE=new RegExp("\\p{M}+","gu"),NO_TRUNCATION={limit:1/0,ellipsis:""},getStringTruncatedWidth=__name((input,truncationOptions={},widthOptions={})=>{let LIMIT=truncationOptions.limit??1/0,ELLIPSIS=truncationOptions.ellipsis??"",ELLIPSIS_WIDTH=truncationOptions?.ellipsisWidth??(ELLIPSIS?getStringTruncatedWidth(ELLIPSIS,NO_TRUNCATION,widthOptions).width:0),ANSI_WIDTH=widthOptions.ansiWidth??0,CONTROL_WIDTH=widthOptions.controlWidth??0,TAB_WIDTH=widthOptions.tabWidth??8,AMBIGUOUS_WIDTH=widthOptions.ambiguousWidth??1,EMOJI_WIDTH=widthOptions.emojiWidth??2,FULL_WIDTH_WIDTH=widthOptions.fullWidthWidth??2,REGULAR_WIDTH=widthOptions.regularWidth??1,WIDE_WIDTH=widthOptions.wideWidth??2,indexPrev=0,index2=0,length=input.length,lengthExtra=0,truncationEnabled=!1,truncationIndex=length,truncationLimit=Math.max(0,LIMIT-ELLIPSIS_WIDTH),unmatchedStart=0,unmatchedEnd=0,width=0,widthExtra=0;outer:for(;;){if(unmatchedEnd>unmatchedStart||index2>=length&&index2>indexPrev){let unmatched=input.slice(unmatchedStart,unmatchedEnd)||input.slice(indexPrev,index2);lengthExtra=0;for(let char of unmatched.replaceAll(MODIFIER_RE,"")){let codePoint=char.codePointAt(0)||0;if(isFullWidth(codePoint)?widthExtra=FULL_WIDTH_WIDTH:isWide(codePoint)?widthExtra=WIDE_WIDTH:AMBIGUOUS_WIDTH!==REGULAR_WIDTH&&isAmbiguous(codePoint)?widthExtra=AMBIGUOUS_WIDTH:widthExtra=REGULAR_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,Math.max(unmatchedStart,indexPrev)+lengthExtra)),width+widthExtra>LIMIT){truncationEnabled=!0;break outer}lengthExtra+=char.length,width+=widthExtra}unmatchedStart=unmatchedEnd=0}if(index2>=length)break;if(LATIN_RE.lastIndex=index2,LATIN_RE.test(input)){if(lengthExtra=LATIN_RE.lastIndex-index2,widthExtra=lengthExtra*REGULAR_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/REGULAR_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=LATIN_RE.lastIndex;continue}if(ANSI_RE.lastIndex=index2,ANSI_RE.test(input)){if(width+ANSI_WIDTH>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2)),width+ANSI_WIDTH>LIMIT){truncationEnabled=!0;break}width+=ANSI_WIDTH,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=ANSI_RE.lastIndex;continue}if(CONTROL_RE.lastIndex=index2,CONTROL_RE.test(input)){if(lengthExtra=CONTROL_RE.lastIndex-index2,widthExtra=lengthExtra*CONTROL_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/CONTROL_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=CONTROL_RE.lastIndex;continue}if(TAB_RE.lastIndex=index2,TAB_RE.test(input)){if(lengthExtra=TAB_RE.lastIndex-index2,widthExtra=lengthExtra*TAB_WIDTH,width+widthExtra>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2+Math.floor((truncationLimit-width)/TAB_WIDTH))),width+widthExtra>LIMIT){truncationEnabled=!0;break}width+=widthExtra,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=TAB_RE.lastIndex;continue}if(EMOJI_RE.lastIndex=index2,EMOJI_RE.test(input)){if(width+EMOJI_WIDTH>truncationLimit&&(truncationIndex=Math.min(truncationIndex,index2)),width+EMOJI_WIDTH>LIMIT){truncationEnabled=!0;break}width+=EMOJI_WIDTH,unmatchedStart=indexPrev,unmatchedEnd=index2,index2=indexPrev=EMOJI_RE.lastIndex;continue}index2+=1}return{width:truncationEnabled?truncationLimit:width,index:truncationEnabled?truncationIndex:length,truncated:truncationEnabled,ellipsed:truncationEnabled&&LIMIT>=ELLIPSIS_WIDTH}},"getStringTruncatedWidth"),dist_default=getStringTruncatedWidth}});var NO_TRUNCATION2,fastStringWidth,dist_default2,init_dist3=__esm({"../../node_modules/.pnpm/fast-string-width@1.1.0/node_modules/fast-string-width/dist/index.js"(){init_dist2();NO_TRUNCATION2={limit:1/0,ellipsis:"",ellipsisWidth:0},fastStringWidth=__name((input,options={})=>dist_default(input,NO_TRUNCATION2,options).width,"fastStringWidth"),dist_default2=fastStringWidth}});function wrapAnsi(string,columns,options){return String(string).normalize().split(CRLF_OR_LF).map(line=>exec(line,columns,options)).join(`
43
43
  `)}var ESC,CSI,END_CODE,ANSI_ESCAPE_BELL,ANSI_CSI,ANSI_OSC,ANSI_SGR_TERMINATOR,ANSI_ESCAPE_LINK,GROUP_REGEX,getClosingCode,wrapAnsiCode,wrapAnsiHyperlink,wrapWord,stringVisibleTrimSpacesRight,exec,CRLF_OR_LF,init_main=__esm({"../../node_modules/.pnpm/fast-wrap-ansi@0.1.6/node_modules/fast-wrap-ansi/lib/main.js"(){init_dist3();ESC="\x1B",CSI="\x9B",END_CODE=39,ANSI_ESCAPE_BELL="\x07",ANSI_CSI="[",ANSI_OSC="]",ANSI_SGR_TERMINATOR="m",ANSI_ESCAPE_LINK=`${ANSI_OSC}8;;`,GROUP_REGEX=new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`,"y"),getClosingCode=__name(openingCode=>{if(openingCode>=30&&openingCode<=37||openingCode>=90&&openingCode<=97)return 39;if(openingCode>=40&&openingCode<=47||openingCode>=100&&openingCode<=107)return 49;if(openingCode===1||openingCode===2)return 22;if(openingCode===3)return 23;if(openingCode===4)return 24;if(openingCode===7)return 27;if(openingCode===8)return 28;if(openingCode===9)return 29;if(openingCode===0)return 0},"getClosingCode"),wrapAnsiCode=__name(code2=>`${ESC}${ANSI_CSI}${code2}${ANSI_SGR_TERMINATOR}`,"wrapAnsiCode"),wrapAnsiHyperlink=__name(url=>`${ESC}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`,"wrapAnsiHyperlink"),wrapWord=__name((rows,word,columns)=>{let characters=word[Symbol.iterator](),isInsideEscape=!1,isInsideLinkEscape=!1,lastRow=rows.at(-1),visible=lastRow===void 0?0:dist_default2(lastRow),currentCharacter=characters.next(),nextCharacter=characters.next(),rawCharacterIndex=0;for(;!currentCharacter.done;){let character=currentCharacter.value,characterLength=dist_default2(character);visible+characterLength<=columns?rows[rows.length-1]+=character:(rows.push(character),visible=0),(character===ESC||character===CSI)&&(isInsideEscape=!0,isInsideLinkEscape=word.startsWith(ANSI_ESCAPE_LINK,rawCharacterIndex+1)),isInsideEscape?isInsideLinkEscape?character===ANSI_ESCAPE_BELL&&(isInsideEscape=!1,isInsideLinkEscape=!1):character===ANSI_SGR_TERMINATOR&&(isInsideEscape=!1):(visible+=characterLength,visible===columns&&!nextCharacter.done&&(rows.push(""),visible=0)),currentCharacter=nextCharacter,nextCharacter=characters.next(),rawCharacterIndex+=character.length}lastRow=rows.at(-1),!visible&&lastRow!==void 0&&lastRow.length&&rows.length>1&&(rows[rows.length-2]+=rows.pop())},"wrapWord"),stringVisibleTrimSpacesRight=__name(string=>{let words=string.split(" "),last2=words.length;for(;last2&&!dist_default2(words[last2-1]);)last2--;return last2===words.length?string:words.slice(0,last2).join(" ")+words.slice(last2).join("")},"stringVisibleTrimSpacesRight"),exec=__name((string,columns,options={})=>{if(options.trim!==!1&&string.trim()==="")return"";let returnValue="",escapeCode,escapeUrl,words=string.split(" "),rows=[""],rowLength=0;for(let index2=0;index2<words.length;index2++){let word=words[index2];if(options.trim!==!1){let row2=rows.at(-1)??"",trimmed=row2.trimStart();row2.length!==trimmed.length&&(rows[rows.length-1]=trimmed,rowLength=dist_default2(trimmed))}index2!==0&&(rowLength>=columns&&(options.wordWrap===!1||options.trim===!1)&&(rows.push(""),rowLength=0),(rowLength||options.trim===!1)&&(rows[rows.length-1]+=" ",rowLength++));let wordLength=dist_default2(word);if(options.hard&&wordLength>columns){let remainingColumns=columns-rowLength,breaksStartingThisLine=1+Math.floor((wordLength-remainingColumns-1)/columns);Math.floor((wordLength-1)/columns)<breaksStartingThisLine&&rows.push(""),wrapWord(rows,word,columns),rowLength=dist_default2(rows.at(-1)??"");continue}if(rowLength+wordLength>columns&&rowLength&&wordLength){if(options.wordWrap===!1&&rowLength<columns){wrapWord(rows,word,columns),rowLength=dist_default2(rows.at(-1)??"");continue}rows.push(""),rowLength=0}if(rowLength+wordLength>columns&&options.wordWrap===!1){wrapWord(rows,word,columns),rowLength=dist_default2(rows.at(-1)??"");continue}rows[rows.length-1]+=word,rowLength+=wordLength}options.trim!==!1&&(rows=rows.map(row2=>stringVisibleTrimSpacesRight(row2)));let preString=rows.join(`
44
44
  `),inSurrogate=!1;for(let i=0;i<preString.length;i++){let character=preString[i];if(returnValue+=character,!inSurrogate)inSurrogate=character>="\uD800"&&character<="\uDBFF";else continue;if(character===ESC||character===CSI){GROUP_REGEX.lastIndex=i+1;let groups=GROUP_REGEX.exec(preString)?.groups;if(groups?.code!==void 0){let code2=Number.parseFloat(groups.code);escapeCode=code2===END_CODE?void 0:code2}else groups?.uri!==void 0&&(escapeUrl=groups.uri.length===0?void 0:groups.uri)}if(preString[i+1]===`
45
45
  `){escapeUrl&&(returnValue+=wrapAnsiHyperlink(""));let closingCode=escapeCode?getClosingCode(escapeCode):void 0;escapeCode&&closingCode&&(returnValue+=wrapAnsiCode(closingCode))}else character===`
@@ -264,32 +264,29 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
264
264
  `:result+=" "+stringified.join(", ")+(stringified.length>0?" ":""),result+"]"}__name(stringifyInlineArray,"stringifyInlineArray");function stringifyInlineTable(value){value=toJSON(value);var result=[];return Object.keys(value).forEach(key=>{result.push(stringifyKey(key)+" = "+stringifyAnyInline(value[key],!1))}),"{ "+result.join(", ")+(result.length>0?" ":"")+"}"}__name(stringifyInlineTable,"stringifyInlineTable");function stringifyComplex(prefix,indent,key,value){var valueType=tomlType2(value);if(valueType==="array")return stringifyArrayOfTables(prefix,indent,key,value);if(valueType==="table")return stringifyComplexTable(prefix,indent,key,value);throw typeError(valueType)}__name(stringifyComplex,"stringifyComplex");function stringifyArrayOfTables(prefix,indent,key,values){values=toJSON(values),validateArray(values);var firstValueType=tomlType2(values[0]);if(firstValueType!=="table")throw typeError(firstValueType);var fullKey=prefix+stringifyKey(key),result="";return values.forEach(table=>{result.length>0&&(result+=`
265
265
  `),result+=indent+"[["+fullKey+`]]
266
266
  `,result+=stringifyObject(fullKey+".",indent,table)}),result}__name(stringifyArrayOfTables,"stringifyArrayOfTables");function stringifyComplexTable(prefix,indent,key,value){var fullKey=prefix+stringifyKey(key),result="";return getInlineKeys(value).length>0&&(result+=indent+"["+fullKey+`]
267
- `),result+stringifyObject(fullKey+".",indent,value)}__name(stringifyComplexTable,"stringifyComplexTable")}});var require_toml=__commonJS({"../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/toml.js"(exports2){"use strict";exports2.parse=require_parse();exports2.stringify=require_stringify2()}});import{existsSync as existsSync2,mkdirSync,readFileSync,writeFileSync}from"node:fs";import{homedir as homedir3,platform as platform2}from"node:os";import{dirname as dirname2,join as join3}from"node:path";var import_yaml2,import_toml,transformCodexServerConfig,transformGooseServerConfig,transformOpenCodeServerConfig,transformVscodeServerConfig,transformZedServerConfig,home2,getPlatformPaths,appSupport,vscodePath,gooseConfigPath,antigravityConfigPath,clineCliConfigPath,clineExtensionConfigPath,copilotConfigPath,UNSUPPORTED_STDIO_MESSAGE,ALL_TRANSPORTS,mcpAgents,init_mcp_D24Z3PhI=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/mcp-D24Z3PhI.js"(){init_chunk_pbuEa_1d();init_to_error_message_Bg0SEUet();import_yaml2=__toESM(require_dist(),1);init_main2();import_toml=__toESM(require_toml(),1),transformCodexServerConfig=__name(config=>{if(config.url){let remoteConfig={type:config.type||"http",url:config.url};return config.headers&&Object.keys(config.headers).length>0&&(remoteConfig.headers=config.headers),remoteConfig}let stdioConfig={command:config.command,args:config.args||[]};return config.env&&Object.keys(config.env).length>0&&(stdioConfig.env=config.env),stdioConfig},"transformCodexServerConfig"),transformGooseServerConfig=__name((serverName,config)=>config.url?{name:serverName,description:"",type:config.type==="sse"?"sse":"streamable_http",uri:config.url,headers:config.headers||{},enabled:!0,timeout:300}:{name:serverName,description:"",cmd:config.command,args:config.args||[],enabled:!0,envs:config.env||{},type:"stdio",timeout:300},"transformGooseServerConfig"),transformOpenCodeServerConfig=__name(config=>config.url?{type:"remote",url:config.url,enabled:!0,headers:config.headers}:{type:"local",command:[config.command,...config.args||[]],enabled:!0,environment:config.env||{}},"transformOpenCodeServerConfig"),transformVscodeServerConfig=__name(config=>{if(config.url){let remote={type:config.type||"http",url:config.url};return config.headers&&Object.keys(config.headers).length>0&&(remote.headers=config.headers),remote}let stdio={type:"stdio",command:config.command,args:config.args||[]};return config.env&&Object.keys(config.env).length>0&&(stdio.env=config.env),stdio},"transformVscodeServerConfig"),transformZedServerConfig=__name(config=>config.url?{source:"custom",type:config.type||"http",url:config.url,headers:config.headers||{}}:{source:"custom",command:config.command,args:config.args||[],env:config.env||{}},"transformZedServerConfig"),home2=homedir3(),getPlatformPaths=__name(()=>{let currentPlatform=platform2();if(currentPlatform==="win32"){let appData=process.env.APPDATA||join3(home2,"AppData","Roaming");return{appSupport:appData,vscodePath:join3(appData,"Code","User"),gooseConfigPath:join3(appData,"Block","goose","config","config.yaml")}}if(currentPlatform==="darwin")return{appSupport:join3(home2,"Library","Application Support"),vscodePath:join3(home2,"Library","Application Support","Code","User"),gooseConfigPath:join3(home2,".config","goose","config.yaml")};let configDir=process.env.XDG_CONFIG_HOME||join3(home2,".config");return{appSupport:configDir,vscodePath:join3(configDir,"Code","User"),gooseConfigPath:join3(configDir,"goose","config.yaml")}},"getPlatformPaths"),{appSupport,vscodePath,gooseConfigPath}=getPlatformPaths(),antigravityConfigPath=join3(home2,".gemini","antigravity","mcp_config.json"),clineCliConfigPath=join3(process.env.CLINE_DIR||join3(home2,".cline"),"data","settings","cline_mcp_settings.json"),clineExtensionConfigPath=join3(vscodePath,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json"),copilotConfigPath=join3(home2,".copilot","mcp-config.json"),UNSUPPORTED_STDIO_MESSAGE="This agent supports only remote MCP servers (HTTP/SSE). Stdio commands are not supported.",ALL_TRANSPORTS=["stdio","http","sse"],mcpAgents={antigravity:{name:"antigravity",displayName:"Antigravity",globalConfigPath:antigravityConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".gemini","antigravity")),"detectGlobalInstall")},cline:{name:"cline",displayName:"Cline (VSCode extension)",globalConfigPath:clineExtensionConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(clineExtensionConfigPath),"detectGlobalInstall")},"cline-cli":{name:"cline-cli",displayName:"Cline CLI",globalConfigPath:clineCliConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".cline")),"detectGlobalInstall")},"claude-code":{name:"claude-code",displayName:"Claude Code",globalConfigPath:join3(home2,".claude.json"),projectConfigPath:".mcp.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".claude.json")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".mcp.json")),"detectProjectInstall")},"claude-desktop":{name:"claude-desktop",displayName:"Claude Desktop",globalConfigPath:join3(appSupport,"Claude","claude_desktop_config.json"),configKey:"mcpServers",format:"jsonc",supportedTransports:["stdio"],unsupportedTransportMessage:"Claude Desktop currently supports only stdio MCP servers. Use a package name or command instead of a URL.",detectGlobalInstall:__name(()=>existsSync2(join3(appSupport,"Claude","claude_desktop_config.json")),"detectGlobalInstall")},codex:{name:"codex",displayName:"Codex",globalConfigPath:join3(process.env.CODEX_HOME?.trim()||join3(home2,".codex"),"config.toml"),projectConfigPath:".codex/config.toml",configKey:"mcp_servers",format:"toml",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(process.env.CODEX_HOME?.trim()||join3(home2,".codex")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".codex","config.toml")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformCodexServerConfig(config),"transformConfig")},cursor:{name:"cursor",displayName:"Cursor",globalConfigPath:join3(home2,".cursor","mcp.json"),projectConfigPath:".cursor/mcp.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".cursor")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".cursor","mcp.json")),"detectProjectInstall")},"gemini-cli":{name:"gemini-cli",displayName:"Gemini CLI",globalConfigPath:join3(home2,".gemini","settings.json"),projectConfigPath:".gemini/settings.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".gemini")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".gemini","settings.json")),"detectProjectInstall")},goose:{name:"goose",displayName:"Goose",globalConfigPath:gooseConfigPath,projectConfigPath:".goose/config.yaml",configKey:"extensions",format:"yaml",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(gooseConfigPath),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".goose","config.yaml")),"detectProjectInstall"),transformConfig:__name((name,config)=>transformGooseServerConfig(name,config),"transformConfig")},"github-copilot-cli":{name:"github-copilot-cli",displayName:"GitHub Copilot CLI",globalConfigPath:copilotConfigPath,projectConfigPath:".vscode/mcp.json",configKey:"mcpServers",projectConfigKey:"servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(copilotConfigPath),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".vscode","mcp.json")),"detectProjectInstall"),transformConfig:__name((_name,config,context)=>context.global?config:transformVscodeServerConfig(config),"transformConfig")},mcporter:{name:"mcporter",displayName:"MCPorter",globalConfigPath:join3(home2,".mcporter","mcporter.json"),projectConfigPath:"config/mcporter.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".mcporter")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,"config","mcporter.json")),"detectProjectInstall")},opencode:{name:"opencode",displayName:"OpenCode",globalConfigPath:join3(process.env.XDG_CONFIG_HOME||join3(home2,".config"),"opencode","opencode.json"),projectConfigPath:"opencode.json",configKey:"mcp",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(process.env.XDG_CONFIG_HOME||join3(home2,".config"),"opencode")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,"opencode.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformOpenCodeServerConfig(config),"transformConfig")},vscode:{name:"vscode",displayName:"VS Code",globalConfigPath:join3(vscodePath,"mcp.json"),projectConfigPath:".vscode/mcp.json",configKey:"servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(vscodePath,"mcp.json")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".vscode","mcp.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformVscodeServerConfig(config),"transformConfig")},zed:{name:"zed",displayName:"Zed",globalConfigPath:join3(appSupport,"Zed","settings.json"),projectConfigPath:".zed/settings.json",configKey:"context_servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,unsupportedTransportMessage:UNSUPPORTED_STDIO_MESSAGE,detectGlobalInstall:__name(()=>existsSync2(join3(appSupport,"Zed")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".zed","settings.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformZedServerConfig(config),"transformConfig")}}}});var init_agents_md_CLVomM5F=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/agents-md-CLVomM5F.js"(){init_chunk_pbuEa_1d()}});var init_dist6=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/index.js"(){init_skill_DRd1jW7a();init_mcp_D24Z3PhI();init_agents_md_CLVomM5F()}});import fs3 from"node:fs";import path2 from"node:path";function stampSkillsAfterInstall(result,version){let stamped=new Set;for(let record of result.installed)for(let candidate of[record.path,record.canonicalPath].filter(Boolean)){let skillMd=path2.join(candidate,"SKILL.md");stamped.has(skillMd)||(stamped.add(skillMd),stampSkillVersion(skillMd,version))}}function stampSkillVersion(skillMdPath,version){if(!fs3.existsSync(skillMdPath))return;let content2=fs3.readFileSync(skillMdPath,"utf8"),fmMatch=content2.match(/^---\n([\s\S]*?)\n---\n/);if(!fmMatch)return;let frontmatter=fmMatch[1],body=content2.slice(fmMatch[0].length);LEGACY_COMMENT_RE.test(body)&&(body=body.replace(LEGACY_COMMENT_RE,""));let newFrontmatter=upsertField(frontmatter,VERSION_KEY,version);newFrontmatter===frontmatter&&body===content2.slice(fmMatch[0].length)||fs3.writeFileSync(skillMdPath,`---
267
+ `),result+stringifyObject(fullKey+".",indent,value)}__name(stringifyComplexTable,"stringifyComplexTable")}});var require_toml=__commonJS({"../../node_modules/.pnpm/@iarna+toml@2.2.5/node_modules/@iarna/toml/toml.js"(exports2){"use strict";exports2.parse=require_parse();exports2.stringify=require_stringify2()}});import{existsSync as existsSync2,mkdirSync,readFileSync,writeFileSync}from"node:fs";import{homedir as homedir3,platform as platform2}from"node:os";import{dirname as dirname2,join as join3}from"node:path";var import_yaml2,import_toml,transformCodexServerConfig,transformGooseServerConfig,transformOpenCodeServerConfig,transformVscodeServerConfig,transformZedServerConfig,home2,getPlatformPaths,appSupport,vscodePath,gooseConfigPath,antigravityConfigPath,clineCliConfigPath,clineExtensionConfigPath,copilotConfigPath,UNSUPPORTED_STDIO_MESSAGE,ALL_TRANSPORTS,mcpAgents,init_mcp_D24Z3PhI=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/mcp-D24Z3PhI.js"(){init_chunk_pbuEa_1d();init_to_error_message_Bg0SEUet();import_yaml2=__toESM(require_dist(),1);init_main2();import_toml=__toESM(require_toml(),1),transformCodexServerConfig=__name(config=>{if(config.url){let remoteConfig={type:config.type||"http",url:config.url};return config.headers&&Object.keys(config.headers).length>0&&(remoteConfig.headers=config.headers),remoteConfig}let stdioConfig={command:config.command,args:config.args||[]};return config.env&&Object.keys(config.env).length>0&&(stdioConfig.env=config.env),stdioConfig},"transformCodexServerConfig"),transformGooseServerConfig=__name((serverName,config)=>config.url?{name:serverName,description:"",type:config.type==="sse"?"sse":"streamable_http",uri:config.url,headers:config.headers||{},enabled:!0,timeout:300}:{name:serverName,description:"",cmd:config.command,args:config.args||[],enabled:!0,envs:config.env||{},type:"stdio",timeout:300},"transformGooseServerConfig"),transformOpenCodeServerConfig=__name(config=>config.url?{type:"remote",url:config.url,enabled:!0,headers:config.headers}:{type:"local",command:[config.command,...config.args||[]],enabled:!0,environment:config.env||{}},"transformOpenCodeServerConfig"),transformVscodeServerConfig=__name(config=>{if(config.url){let remote={type:config.type||"http",url:config.url};return config.headers&&Object.keys(config.headers).length>0&&(remote.headers=config.headers),remote}let stdio={type:"stdio",command:config.command,args:config.args||[]};return config.env&&Object.keys(config.env).length>0&&(stdio.env=config.env),stdio},"transformVscodeServerConfig"),transformZedServerConfig=__name(config=>config.url?{source:"custom",type:config.type||"http",url:config.url,headers:config.headers||{}}:{source:"custom",command:config.command,args:config.args||[],env:config.env||{}},"transformZedServerConfig"),home2=homedir3(),getPlatformPaths=__name(()=>{let currentPlatform=platform2();if(currentPlatform==="win32"){let appData=process.env.APPDATA||join3(home2,"AppData","Roaming");return{appSupport:appData,vscodePath:join3(appData,"Code","User"),gooseConfigPath:join3(appData,"Block","goose","config","config.yaml")}}if(currentPlatform==="darwin")return{appSupport:join3(home2,"Library","Application Support"),vscodePath:join3(home2,"Library","Application Support","Code","User"),gooseConfigPath:join3(home2,".config","goose","config.yaml")};let configDir=process.env.XDG_CONFIG_HOME||join3(home2,".config");return{appSupport:configDir,vscodePath:join3(configDir,"Code","User"),gooseConfigPath:join3(configDir,"goose","config.yaml")}},"getPlatformPaths"),{appSupport,vscodePath,gooseConfigPath}=getPlatformPaths(),antigravityConfigPath=join3(home2,".gemini","antigravity","mcp_config.json"),clineCliConfigPath=join3(process.env.CLINE_DIR||join3(home2,".cline"),"data","settings","cline_mcp_settings.json"),clineExtensionConfigPath=join3(vscodePath,"globalStorage","saoudrizwan.claude-dev","settings","cline_mcp_settings.json"),copilotConfigPath=join3(home2,".copilot","mcp-config.json"),UNSUPPORTED_STDIO_MESSAGE="This agent supports only remote MCP servers (HTTP/SSE). Stdio commands are not supported.",ALL_TRANSPORTS=["stdio","http","sse"],mcpAgents={antigravity:{name:"antigravity",displayName:"Antigravity",globalConfigPath:antigravityConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".gemini","antigravity")),"detectGlobalInstall")},cline:{name:"cline",displayName:"Cline (VSCode extension)",globalConfigPath:clineExtensionConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(clineExtensionConfigPath),"detectGlobalInstall")},"cline-cli":{name:"cline-cli",displayName:"Cline CLI",globalConfigPath:clineCliConfigPath,configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".cline")),"detectGlobalInstall")},"claude-code":{name:"claude-code",displayName:"Claude Code",globalConfigPath:join3(home2,".claude.json"),projectConfigPath:".mcp.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".claude.json")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".mcp.json")),"detectProjectInstall")},"claude-desktop":{name:"claude-desktop",displayName:"Claude Desktop",globalConfigPath:join3(appSupport,"Claude","claude_desktop_config.json"),configKey:"mcpServers",format:"jsonc",supportedTransports:["stdio"],unsupportedTransportMessage:"Claude Desktop currently supports only stdio MCP servers. Use a package name or command instead of a URL.",detectGlobalInstall:__name(()=>existsSync2(join3(appSupport,"Claude","claude_desktop_config.json")),"detectGlobalInstall")},codex:{name:"codex",displayName:"Codex",globalConfigPath:join3(process.env.CODEX_HOME?.trim()||join3(home2,".codex"),"config.toml"),projectConfigPath:".codex/config.toml",configKey:"mcp_servers",format:"toml",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(process.env.CODEX_HOME?.trim()||join3(home2,".codex")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".codex","config.toml")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformCodexServerConfig(config),"transformConfig")},cursor:{name:"cursor",displayName:"Cursor",globalConfigPath:join3(home2,".cursor","mcp.json"),projectConfigPath:".cursor/mcp.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".cursor")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".cursor","mcp.json")),"detectProjectInstall")},"gemini-cli":{name:"gemini-cli",displayName:"Gemini CLI",globalConfigPath:join3(home2,".gemini","settings.json"),projectConfigPath:".gemini/settings.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".gemini")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".gemini","settings.json")),"detectProjectInstall")},goose:{name:"goose",displayName:"Goose",globalConfigPath:gooseConfigPath,projectConfigPath:".goose/config.yaml",configKey:"extensions",format:"yaml",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(gooseConfigPath),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".goose","config.yaml")),"detectProjectInstall"),transformConfig:__name((name,config)=>transformGooseServerConfig(name,config),"transformConfig")},"github-copilot-cli":{name:"github-copilot-cli",displayName:"GitHub Copilot CLI",globalConfigPath:copilotConfigPath,projectConfigPath:".vscode/mcp.json",configKey:"mcpServers",projectConfigKey:"servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(copilotConfigPath),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".vscode","mcp.json")),"detectProjectInstall"),transformConfig:__name((_name,config,context)=>context.global?config:transformVscodeServerConfig(config),"transformConfig")},mcporter:{name:"mcporter",displayName:"MCPorter",globalConfigPath:join3(home2,".mcporter","mcporter.json"),projectConfigPath:"config/mcporter.json",configKey:"mcpServers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(home2,".mcporter")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,"config","mcporter.json")),"detectProjectInstall")},opencode:{name:"opencode",displayName:"OpenCode",globalConfigPath:join3(process.env.XDG_CONFIG_HOME||join3(home2,".config"),"opencode","opencode.json"),projectConfigPath:"opencode.json",configKey:"mcp",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(process.env.XDG_CONFIG_HOME||join3(home2,".config"),"opencode")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,"opencode.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformOpenCodeServerConfig(config),"transformConfig")},vscode:{name:"vscode",displayName:"VS Code",globalConfigPath:join3(vscodePath,"mcp.json"),projectConfigPath:".vscode/mcp.json",configKey:"servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,detectGlobalInstall:__name(()=>existsSync2(join3(vscodePath,"mcp.json")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".vscode","mcp.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformVscodeServerConfig(config),"transformConfig")},zed:{name:"zed",displayName:"Zed",globalConfigPath:join3(appSupport,"Zed","settings.json"),projectConfigPath:".zed/settings.json",configKey:"context_servers",format:"jsonc",supportedTransports:ALL_TRANSPORTS,unsupportedTransportMessage:UNSUPPORTED_STDIO_MESSAGE,detectGlobalInstall:__name(()=>existsSync2(join3(appSupport,"Zed")),"detectGlobalInstall"),detectProjectInstall:__name(cwd=>existsSync2(join3(cwd,".zed","settings.json")),"detectProjectInstall"),transformConfig:__name((_name,config)=>transformZedServerConfig(config),"transformConfig")}}}});var init_agents_md_CLVomM5F=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/agents-md-CLVomM5F.js"(){init_chunk_pbuEa_1d()}});var init_dist6=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/index.js"(){init_skill_DRd1jW7a();init_mcp_D24Z3PhI();init_agents_md_CLVomM5F()}});import fs4 from"node:fs";import path3 from"node:path";function stampSkillsAfterInstall(result,version){let stamped=new Set;for(let record of result.installed)for(let candidate of[record.path,record.canonicalPath].filter(Boolean)){let skillMd=path3.join(candidate,"SKILL.md");stamped.has(skillMd)||(stamped.add(skillMd),stampSkillVersion(skillMd,version))}}function stampSkillVersion(skillMdPath,version){if(!fs4.existsSync(skillMdPath))return;let content2=fs4.readFileSync(skillMdPath,"utf8"),fmMatch=content2.match(/^---\n([\s\S]*?)\n---\n/);if(!fmMatch)return;let frontmatter=fmMatch[1],body=content2.slice(fmMatch[0].length);LEGACY_COMMENT_RE.test(body)&&(body=body.replace(LEGACY_COMMENT_RE,""));let newFrontmatter=upsertField(frontmatter,VERSION_KEY,version);newFrontmatter===frontmatter&&body===content2.slice(fmMatch[0].length)||fs4.writeFileSync(skillMdPath,`---
268
268
  ${newFrontmatter}
269
269
  ---
270
270
  ${body}`)}function upsertField(frontmatter,key,value){let re2=new RegExp(`^${escapeRegExp(key)}:.*$`,"m");return re2.test(frontmatter)?frontmatter.replace(re2,`${key}: ${value}`):`${frontmatter}
271
- ${key}: ${value}`}function escapeRegExp(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var VERSION_KEY,LEGACY_COMMENT_RE,init_skill_version=__esm({"src/cli/skill-version.ts"(){VERSION_KEY="fimoVersion",LEGACY_COMMENT_RE=/^\s*<!-- fimo skill v[^>]*-->\s*\n+/;__name(stampSkillsAfterInstall,"stampSkillsAfterInstall");__name(stampSkillVersion,"stampSkillVersion");__name(upsertField,"upsertField");__name(escapeRegExp,"escapeRegExp")}});import fs4 from"node:fs";import path3 from"node:path";import{fileURLToPath as fileURLToPath2}from"node:url";function getTemplatePath(framework=DEFAULT_TEMPLATE){return path3.resolve(PACKAGE_ROOT,"templates",framework)}function readReleaseMeta(){try{let raw=fs4.readFileSync(RELEASE_FILE2,"utf8"),parsed=JSON.parse(raw);return{source:parsed.source==="npm"||parsed.source==="dev"?parsed.source:null}}catch{return{source:null}}}function readCliSemver(){try{let raw=fs4.readFileSync(PACKAGE_JSON_FILE,"utf8"),parsed=JSON.parse(raw);if(typeof parsed.version=="string"&&parsed.version.length>0)return parsed.version}catch{}return null}function computeFimoPin(meta,semver,options={}){return meta.source==="npm"&&semver?semver:(meta.source==="dev"||meta.source===null)&&options.devPackageRoot?`file:${options.devPackageRoot}`:null}function resolveFimoPin(options={}){return computeFimoPin(readReleaseMeta(),readCliSemver(),options)}function readDevReleaseVersion(startPath=PACKAGE_ROOT){let devJsonPath=findDevJson(startPath);if(!devJsonPath)return{devJsonPath:null,version:null};let parsed=JSON.parse(fs4.readFileSync(devJsonPath,"utf8"));if(typeof parsed.version!="string"||parsed.version.trim().length===0)throw new Error(`Missing "version" in ${devJsonPath}. Publish an experimental CLI build again.`);return{devJsonPath,version:parsed.version.trim()}}function findDevJson(startPath){let current=startPath;for(;;){let candidate=path3.join(current,".fimo","dev.json");if(fs4.existsSync(candidate))return candidate;let parent2=path3.dirname(current);if(parent2===current)return null;current=parent2}}function rewriteFimoDep(pkg,pin=resolveFimoPin()){if(!pin)return!1;let changed=!1;for(let field of["dependencies","devDependencies"]){let deps=pkg[field];if(!deps)continue;let current=deps.fimo;if(typeof current!="string")continue;let looksLikeLegacyR2=current.includes("r2.dev/cli/fimo-"),looksLikeLocalFile=current.startsWith("file:"),looksLikeSemver=/^[\^~]?\d+\.\d+\.\d+/.test(current);(looksLikeLegacyR2||looksLikeLocalFile||looksLikeSemver||(current==="latest"||current==="staging"||current==="experimental"))&&current!==pin&&(deps.fimo=pin,changed=!0)}return changed}var MODULE_DIR,PACKAGE_ROOT,RELEASE_FILE2,PACKAGE_JSON_FILE,DEFAULT_TEMPLATE,init_templates=__esm({"src/runtime/templates.ts"(){MODULE_DIR=path3.dirname(fileURLToPath2(import.meta.url)),PACKAGE_ROOT=path3.resolve(MODULE_DIR,"..",".."),RELEASE_FILE2=path3.join(PACKAGE_ROOT,"release.json"),PACKAGE_JSON_FILE=path3.join(PACKAGE_ROOT,"package.json"),DEFAULT_TEMPLATE="react-router";__name(getTemplatePath,"getTemplatePath");__name(readReleaseMeta,"readReleaseMeta");__name(readCliSemver,"readCliSemver");__name(computeFimoPin,"computeFimoPin");__name(resolveFimoPin,"resolveFimoPin");__name(readDevReleaseVersion,"readDevReleaseVersion");__name(findDevJson,"findDevJson");__name(rewriteFimoDep,"rewriteFimoDep")}});import fs5 from"node:fs";import path4 from"node:path";function resolveTemplateRoot(){if(fs5.existsSync(path4.join(TEMPLATE_ROOT,"package.json")))return TEMPLATE_ROOT;throw new Error(`Bundled template not found at ${TEMPLATE_ROOT}.`)}function resolveAgentTemplatesRoot(){if(fs5.existsSync(AGENT_TEMPLATES_ROOT))return AGENT_TEMPLATES_ROOT;throw new Error(`Bundled agent templates dir not found at ${AGENT_TEMPLATES_ROOT}.`)}function resolveAgentTemplate(name){let dir=path4.join(resolveAgentTemplatesRoot(),name);if(!fs5.existsSync(dir))throw new Error(`Agent template '${name}' not found.`);return dir}function listAgentTemplates(){let root2=(()=>{try{return resolveAgentTemplatesRoot()}catch{return null}})();if(!root2)return[];let entries2=fs5.readdirSync(root2,{withFileTypes:!0}),out=[];for(let entry of entries2){if(!entry.isDirectory())continue;let goalPath=path4.join(root2,entry.name,"GOAL.md"),goalFirstLine="";try{goalFirstLine=(fs5.readFileSync(goalPath,"utf8").split(`
272
- `).find(l=>l.trim().length>0)??"").replace(/^#+\s*/,"").trim()}catch{}out.push({name:entry.name,goalFirstLine})}return out.sort((a,b)=>a.name.localeCompare(b.name))}async function copyAgentTemplate(templateRoot,targetDir){if(fs5.existsSync(targetDir))throw new Error(`Target directory '${targetDir}' already exists.`);fs5.mkdirSync(targetDir,{recursive:!0}),await copyTree(templateRoot,targetDir)}async function copyTemplate(templateRoot,targetDir){fs5.mkdirSync(targetDir,{recursive:!0}),await copyTree(templateRoot,targetDir),pinFimoDependency(targetDir)}function pinFimoDependency(targetDir){let pin=resolveFimoPin({devPackageRoot:CLI_ROOT});if(!pin)return;let pkgPath=path4.join(targetDir,"package.json");if(!fs5.existsSync(pkgPath))return;let pkg=JSON.parse(fs5.readFileSync(pkgPath,"utf8"));rewriteFimoDep(pkg,pin)&&(fs5.writeFileSync(pkgPath,JSON.stringify(pkg,null,2)+`
273
- `),fs5.rmSync(path4.join(targetDir,"pnpm-lock.yaml"),{force:!0}))}async function copyTree(srcDir,destDir){let entries2=fs5.readdirSync(srcDir,{withFileTypes:!0});for(let entry of entries2){if(EXCLUDED_DIRS.has(entry.name))continue;let srcPath=path4.join(srcDir,entry.name),destName=entry.name==="_gitignore"?".gitignore":entry.name,destPath=path4.join(destDir,destName);entry.isDirectory()?(fs5.mkdirSync(destPath,{recursive:!0}),await copyTree(srcPath,destPath)):entry.isFile()&&fs5.copyFileSync(srcPath,destPath)}}function readAgentsMdTemplate(){let templatePath=path4.join(AGENTS_STARTER_ROOT,"AGENTS.md");if(!fs5.existsSync(templatePath))throw new Error(`AGENTS.md template not found at ${templatePath}.`);return fs5.readFileSync(templatePath,"utf8")}function writePerAgentVariants(targetDir,agents,agentsMdContent){let result={perAgentVariants:[],perAgentVariantsSkipped:[]},selected=new Set(agents);function writeIfMissing(relativePath,content2){let fullPath=path4.join(targetDir,relativePath);if(fs5.existsSync(fullPath)){result.perAgentVariantsSkipped.push(relativePath);return}fs5.mkdirSync(path4.dirname(fullPath),{recursive:!0}),fs5.writeFileSync(fullPath,content2),result.perAgentVariants.push(relativePath)}if(__name(writeIfMissing,"writeIfMissing"),selected.has("claude-code")&&writeIfMissing("CLAUDE.md",agentsMdContent),selected.has("cursor")){let cursorContent=`---
271
+ ${key}: ${value}`}function escapeRegExp(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var VERSION_KEY,LEGACY_COMMENT_RE,init_skill_version=__esm({"src/cli/skill-version.ts"(){VERSION_KEY="fimoVersion",LEGACY_COMMENT_RE=/^\s*<!-- fimo skill v[^>]*-->\s*\n+/;__name(stampSkillsAfterInstall,"stampSkillsAfterInstall");__name(stampSkillVersion,"stampSkillVersion");__name(upsertField,"upsertField");__name(escapeRegExp,"escapeRegExp")}});import fs5 from"node:fs";import path4 from"node:path";import{fileURLToPath as fileURLToPath2}from"node:url";function getTemplatePath(framework=DEFAULT_TEMPLATE){return path4.resolve(PACKAGE_ROOT,"templates",framework)}function readReleaseMeta(){try{let raw=fs5.readFileSync(RELEASE_FILE2,"utf8"),parsed=JSON.parse(raw);return{source:parsed.source==="npm"||parsed.source==="dev"?parsed.source:null}}catch{return{source:null}}}function readCliSemver(){try{let raw=fs5.readFileSync(PACKAGE_JSON_FILE,"utf8"),parsed=JSON.parse(raw);if(typeof parsed.version=="string"&&parsed.version.length>0)return parsed.version}catch{}return null}function computeFimoPin(meta,semver,options={}){return meta.source==="npm"&&semver?semver:(meta.source==="dev"||meta.source===null)&&options.devPackageRoot?`file:${options.devPackageRoot}`:null}function resolveFimoPin(options={}){return computeFimoPin(readReleaseMeta(),readCliSemver(),options)}function readDevReleaseVersion(startPath=PACKAGE_ROOT){let devJsonPath=findDevJson(startPath);if(!devJsonPath)return{devJsonPath:null,version:null};let parsed=JSON.parse(fs5.readFileSync(devJsonPath,"utf8"));if(typeof parsed.version!="string"||parsed.version.trim().length===0)throw new Error(`Missing "version" in ${devJsonPath}. Publish an experimental CLI build again.`);return{devJsonPath,version:parsed.version.trim()}}function findDevJson(startPath){let current=startPath;for(;;){let candidate=path4.join(current,".fimo","dev.json");if(fs5.existsSync(candidate))return candidate;let parent2=path4.dirname(current);if(parent2===current)return null;current=parent2}}function rewriteFimoDep(pkg,pin=resolveFimoPin()){if(!pin)return!1;let changed=!1;for(let field of["dependencies","devDependencies"]){let deps=pkg[field];if(!deps)continue;let current=deps.fimo;if(typeof current!="string")continue;let looksLikeLegacyR2=current.includes("r2.dev/cli/fimo-"),looksLikeLocalFile=current.startsWith("file:"),looksLikeSemver=/^[\^~]?\d+\.\d+\.\d+/.test(current);(looksLikeLegacyR2||looksLikeLocalFile||looksLikeSemver||(current==="latest"||current==="staging"||current==="experimental"))&&current!==pin&&(deps.fimo=pin,changed=!0)}return changed}var MODULE_DIR,PACKAGE_ROOT,RELEASE_FILE2,PACKAGE_JSON_FILE,DEFAULT_TEMPLATE,init_templates=__esm({"src/runtime/templates.ts"(){MODULE_DIR=path4.dirname(fileURLToPath2(import.meta.url)),PACKAGE_ROOT=path4.resolve(MODULE_DIR,"..",".."),RELEASE_FILE2=path4.join(PACKAGE_ROOT,"release.json"),PACKAGE_JSON_FILE=path4.join(PACKAGE_ROOT,"package.json"),DEFAULT_TEMPLATE="react-router";__name(getTemplatePath,"getTemplatePath");__name(readReleaseMeta,"readReleaseMeta");__name(readCliSemver,"readCliSemver");__name(computeFimoPin,"computeFimoPin");__name(resolveFimoPin,"resolveFimoPin");__name(readDevReleaseVersion,"readDevReleaseVersion");__name(findDevJson,"findDevJson");__name(rewriteFimoDep,"rewriteFimoDep")}});import fs6 from"node:fs";import path5 from"node:path";function resolveTemplateRoot(){if(fs6.existsSync(path5.join(TEMPLATE_ROOT,"package.json")))return TEMPLATE_ROOT;throw new Error(`Bundled template not found at ${TEMPLATE_ROOT}.`)}function resolveAgentTemplatesRoot(){if(fs6.existsSync(AGENT_TEMPLATES_ROOT))return AGENT_TEMPLATES_ROOT;throw new Error(`Bundled agent templates dir not found at ${AGENT_TEMPLATES_ROOT}.`)}function resolveAgentTemplate(name){let dir=path5.join(resolveAgentTemplatesRoot(),name);if(!fs6.existsSync(dir))throw new Error(`Agent template '${name}' not found.`);return dir}function listAgentTemplates(){let root2=(()=>{try{return resolveAgentTemplatesRoot()}catch{return null}})();if(!root2)return[];let entries2=fs6.readdirSync(root2,{withFileTypes:!0}),out=[];for(let entry of entries2){if(!entry.isDirectory())continue;let goalPath=path5.join(root2,entry.name,"GOAL.md"),goalFirstLine="";try{goalFirstLine=(fs6.readFileSync(goalPath,"utf8").split(`
272
+ `).find(l=>l.trim().length>0)??"").replace(/^#+\s*/,"").trim()}catch{}out.push({name:entry.name,goalFirstLine})}return out.sort((a,b)=>a.name.localeCompare(b.name))}async function copyAgentTemplate(templateRoot,targetDir){if(fs6.existsSync(targetDir))throw new Error(`Target directory '${targetDir}' already exists.`);fs6.mkdirSync(targetDir,{recursive:!0}),await copyTree(templateRoot,targetDir)}async function copyTemplate(templateRoot,targetDir){fs6.mkdirSync(targetDir,{recursive:!0}),await copyTree(templateRoot,targetDir),pinFimoDependency(targetDir)}function pinFimoDependency(targetDir){let pin=resolveFimoPin({devPackageRoot:CLI_ROOT});if(!pin)return;let pkgPath=path5.join(targetDir,"package.json");if(!fs6.existsSync(pkgPath))return;let pkg=JSON.parse(fs6.readFileSync(pkgPath,"utf8"));rewriteFimoDep(pkg,pin)&&(fs6.writeFileSync(pkgPath,JSON.stringify(pkg,null,2)+`
273
+ `),fs6.rmSync(path5.join(targetDir,"pnpm-lock.yaml"),{force:!0}))}async function copyTree(srcDir,destDir){let entries2=fs6.readdirSync(srcDir,{withFileTypes:!0});for(let entry of entries2){if(EXCLUDED_DIRS.has(entry.name))continue;let srcPath=path5.join(srcDir,entry.name),destName=entry.name==="_gitignore"?".gitignore":entry.name,destPath=path5.join(destDir,destName);entry.isDirectory()?(fs6.mkdirSync(destPath,{recursive:!0}),await copyTree(srcPath,destPath)):entry.isFile()&&fs6.copyFileSync(srcPath,destPath)}}function readAgentsMdTemplate(){let templatePath2=path5.join(AGENTS_STARTER_ROOT,"AGENTS.md");if(!fs6.existsSync(templatePath2))throw new Error(`AGENTS.md template not found at ${templatePath2}.`);return fs6.readFileSync(templatePath2,"utf8")}function writePerAgentVariants(targetDir,agents,agentsMdContent){let result={perAgentVariants:[],perAgentVariantsSkipped:[]},selected=new Set(agents);function writeIfMissing(relativePath,content2){let fullPath=path5.join(targetDir,relativePath);if(fs6.existsSync(fullPath)){result.perAgentVariantsSkipped.push(relativePath);return}fs6.mkdirSync(path5.dirname(fullPath),{recursive:!0}),fs6.writeFileSync(fullPath,content2),result.perAgentVariants.push(relativePath)}if(__name(writeIfMissing,"writeIfMissing"),selected.has("claude-code")&&writeIfMissing("CLAUDE.md",agentsMdContent),selected.has("cursor")){let cursorContent=`---
274
274
  description: Fimo project rules
275
275
  alwaysApply: true
276
276
  ---
277
277
 
278
- ${agentsMdContent}`;writeIfMissing(".cursor/rules/fimo.mdc",cursorContent)}return selected.has("windsurf")&&writeIfMissing(".windsurfrules",agentsMdContent),selected.has("gemini-cli")&&writeIfMissing("GEMINI.md",agentsMdContent),result}function writeAgentsMd(targetDir,agents){let agentsMdContent=readAgentsMdTemplate();return fs5.writeFileSync(path4.join(targetDir,"AGENTS.md"),agentsMdContent),{agentsMdWritten:!0,...writePerAgentVariants(targetDir,agents,agentsMdContent)}}function syncPerAgentVariants(targetDir,agents){let agentsMdPath=path4.join(targetDir,"AGENTS.md");if(!fs5.existsSync(agentsMdPath))throw new Error(`No AGENTS.md found in ${targetDir}. Run \`fimo create\` first, or create AGENTS.md manually before running \`fimo rules sync\`.`);let agentsMdContent=fs5.readFileSync(agentsMdPath,"utf8");return writePerAgentVariants(targetDir,agents,agentsMdContent)}function detectAgentsInProject(cwd){let detected=[];return fs5.existsSync(path4.join(cwd,"CLAUDE.md"))&&detected.push("claude-code"),fs5.existsSync(path4.join(cwd,".cursor","rules","fimo.mdc"))&&detected.push("cursor"),fs5.existsSync(path4.join(cwd,".windsurfrules"))&&detected.push("windsurf"),fs5.existsSync(path4.join(cwd,"GEMINI.md"))&&detected.push("gemini-cli"),detected}var TEMPLATE_ROOT,AGENTS_STARTER_ROOT,AGENT_TEMPLATES_ROOT,EXCLUDED_DIRS,init_scaffold=__esm({"src/cli/utils/scaffold.ts"(){init_templates();init_config();init_templates();TEMPLATE_ROOT=getTemplatePath("react-router"),AGENTS_STARTER_ROOT=path4.resolve(CLI_ROOT,"assets","agents-starter"),AGENT_TEMPLATES_ROOT=path4.resolve(CLI_ROOT,"assets","agent-templates"),EXCLUDED_DIRS=new Set(["node_modules","dist","build",".turbo",".git"]);__name(resolveTemplateRoot,"resolveTemplateRoot");__name(resolveAgentTemplatesRoot,"resolveAgentTemplatesRoot");__name(resolveAgentTemplate,"resolveAgentTemplate");__name(listAgentTemplates,"listAgentTemplates");__name(copyAgentTemplate,"copyAgentTemplate");__name(copyTemplate,"copyTemplate");__name(pinFimoDependency,"pinFimoDependency");__name(copyTree,"copyTree");__name(readAgentsMdTemplate,"readAgentsMdTemplate");__name(writePerAgentVariants,"writePerAgentVariants");__name(writeAgentsMd,"writeAgentsMd");__name(syncPerAgentVariants,"syncPerAgentVariants");__name(detectAgentsInProject,"detectAgentsInProject")}});import fs6 from"node:fs";import path5 from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";async function installProjectFimoSkillForAgents(projectRoot,agents,mode2="copy"){if(agents.length===0)return{agents:[],failures:[]};if(!fs6.existsSync(PROJECT_SKILL_SOURCE))return{agents:[],failures:agents.map(agent=>({agent,error:`bundled fimo skill missing at ${PROJECT_SKILL_SOURCE}`})),skillSourceMissing:!0};let result=await installSkillsFromSource({source:PROJECT_SKILL_SOURCE,agents,global:!1,cwd:projectRoot,mode:mode2}),failures=result.failed.filter(f=>f.skill===SKILL_NAME).map(f=>({agent:f.agent,error:f.error})),failedAgents=new Set(failures.map(f=>f.agent)),installedAgents=agents.filter(a=>!failedAgents.has(a));return stampSkillsAfterInstall(result,getCliVersion()),{agents:installedAgents,failures}}function findFimoProjectRoot(start){let dir=path5.resolve(start);for(;;){if(fs6.existsSync(path5.join(dir,".fimo.settings.json")))return dir;let parent2=path5.dirname(dir);if(parent2===dir)return null;dir=parent2}}async function syncProjectFimoSkill(options={}){let start=path5.resolve(options.cwd??process.cwd()),projectRoot=findFimoProjectRoot(start);if(!projectRoot)return{status:"not-a-fimo-project",checked:[start]};let agents=detectAgentsInProject(projectRoot);if(agents.length===0)return{status:"no-agents",projectRoot};let result=await installProjectFimoSkillForAgents(projectRoot,agents);return{status:"installed",projectRoot,agents:result.agents,failures:result.failures,skillSourceMissing:result.skillSourceMissing}}var THIS_FILE2,CLI_ROOT2,PROJECT_SKILL_SOURCE,SKILL_NAME,init_project_skill=__esm({"src/cli/project-skill.ts"(){init_dist6();init_skill_version();init_scaffold();init_version();THIS_FILE2=fileURLToPath3(import.meta.url),CLI_ROOT2=path5.resolve(path5.dirname(THIS_FILE2),"..",".."),PROJECT_SKILL_SOURCE=path5.resolve(CLI_ROOT2,"assets","skills","fimo"),SKILL_NAME="fimo";__name(installProjectFimoSkillForAgents,"installProjectFimoSkillForAgents");__name(findFimoProjectRoot,"findFimoProjectRoot");__name(syncProjectFimoSkill,"syncProjectFimoSkill")}});function defaultFormatSelected(values,options){if(values.length===0)return ansi.dim("(none)");let labels2=values.map(v=>options.find(o=>o.value===v)?.label??String(v)),head=labels2.slice(0,3),tail=labels2.length>3?ansi.dim(` +${labels2.length-3} more`):"";return`${head.join(", ")}${tail}`}async function agentMultiselect(opts){let styleOption=__name((option,isSelected,active)=>{let label=option.label??String(option.value??""),hint=option.hint&&active?ansi.dim(` (${option.hint})`):"";if(option.disabled)return`${ansi.gray(J)} ${ansi.gray(ansi.strike(label))}`;let box=isSelected?ansi.green(U):active?ansi.cyan(te):ansi.dim(J);return active?`${box} ${label}${hint}`:`${box} ${ansi.dim(label)}`},"styleOption");return new it({options:opts.options,initialValues:opts.initialValues??[],required:opts.required??!1,render(){let header=`${ansi.gray(d2)}
278
+ ${agentsMdContent}`;writeIfMissing(".cursor/rules/fimo.mdc",cursorContent)}return selected.has("windsurf")&&writeIfMissing(".windsurfrules",agentsMdContent),selected.has("gemini-cli")&&writeIfMissing("GEMINI.md",agentsMdContent),result}function writeAgentsMd(targetDir,agents){let agentsMdContent=readAgentsMdTemplate();return fs6.writeFileSync(path5.join(targetDir,"AGENTS.md"),agentsMdContent),{agentsMdWritten:!0,...writePerAgentVariants(targetDir,agents,agentsMdContent)}}function syncPerAgentVariants(targetDir,agents){let agentsMdPath=path5.join(targetDir,"AGENTS.md");if(!fs6.existsSync(agentsMdPath))throw new Error(`No AGENTS.md found in ${targetDir}. Run \`fimo create\` first, or create AGENTS.md manually before running \`fimo rules sync\`.`);let agentsMdContent=fs6.readFileSync(agentsMdPath,"utf8");return writePerAgentVariants(targetDir,agents,agentsMdContent)}function detectAgentsInProject(cwd){let detected=[];return fs6.existsSync(path5.join(cwd,"CLAUDE.md"))&&detected.push("claude-code"),fs6.existsSync(path5.join(cwd,".cursor","rules","fimo.mdc"))&&detected.push("cursor"),fs6.existsSync(path5.join(cwd,".windsurfrules"))&&detected.push("windsurf"),fs6.existsSync(path5.join(cwd,"GEMINI.md"))&&detected.push("gemini-cli"),detected}var TEMPLATE_ROOT,AGENTS_STARTER_ROOT,AGENT_TEMPLATES_ROOT,EXCLUDED_DIRS,init_scaffold=__esm({"src/cli/utils/scaffold.ts"(){init_templates();init_config();init_templates();TEMPLATE_ROOT=getTemplatePath("react-router"),AGENTS_STARTER_ROOT=path5.resolve(CLI_ROOT,"assets","agents-starter"),AGENT_TEMPLATES_ROOT=path5.resolve(CLI_ROOT,"assets","agent-templates"),EXCLUDED_DIRS=new Set(["node_modules","dist","build",".turbo",".git"]);__name(resolveTemplateRoot,"resolveTemplateRoot");__name(resolveAgentTemplatesRoot,"resolveAgentTemplatesRoot");__name(resolveAgentTemplate,"resolveAgentTemplate");__name(listAgentTemplates,"listAgentTemplates");__name(copyAgentTemplate,"copyAgentTemplate");__name(copyTemplate,"copyTemplate");__name(pinFimoDependency,"pinFimoDependency");__name(copyTree,"copyTree");__name(readAgentsMdTemplate,"readAgentsMdTemplate");__name(writePerAgentVariants,"writePerAgentVariants");__name(writeAgentsMd,"writeAgentsMd");__name(syncPerAgentVariants,"syncPerAgentVariants");__name(detectAgentsInProject,"detectAgentsInProject")}});import fs7 from"node:fs";import path6 from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";async function installProjectFimoSkillForAgents(projectRoot,agents,mode2="copy"){if(agents.length===0)return{agents:[],failures:[]};if(!fs7.existsSync(PROJECT_SKILL_SOURCE))return{agents:[],failures:agents.map(agent=>({agent,error:`bundled fimo skill missing at ${PROJECT_SKILL_SOURCE}`})),skillSourceMissing:!0};let result=await installSkillsFromSource({source:PROJECT_SKILL_SOURCE,agents,global:!1,cwd:projectRoot,mode:mode2}),failures=result.failed.filter(f=>f.skill===SKILL_NAME).map(f=>({agent:f.agent,error:f.error})),failedAgents=new Set(failures.map(f=>f.agent)),installedAgents=agents.filter(a=>!failedAgents.has(a));return stampSkillsAfterInstall(result,getCliVersion()),{agents:installedAgents,failures}}function findFimoProjectRoot(start){let dir=path6.resolve(start);for(;;){if(fs7.existsSync(path6.join(dir,".fimo.settings.json")))return dir;let parent2=path6.dirname(dir);if(parent2===dir)return null;dir=parent2}}async function syncProjectFimoSkill(options={}){let start=path6.resolve(options.cwd??process.cwd()),projectRoot=findFimoProjectRoot(start);if(!projectRoot)return{status:"not-a-fimo-project",checked:[start]};let agents=detectAgentsInProject(projectRoot);if(agents.length===0)return{status:"no-agents",projectRoot};let result=await installProjectFimoSkillForAgents(projectRoot,agents);return{status:"installed",projectRoot,agents:result.agents,failures:result.failures,skillSourceMissing:result.skillSourceMissing}}var THIS_FILE2,CLI_ROOT2,PROJECT_SKILL_SOURCE,SKILL_NAME,init_project_skill=__esm({"src/cli/project-skill.ts"(){init_dist6();init_skill_version();init_scaffold();init_version();THIS_FILE2=fileURLToPath3(import.meta.url),CLI_ROOT2=path6.resolve(path6.dirname(THIS_FILE2),"..",".."),PROJECT_SKILL_SOURCE=path6.resolve(CLI_ROOT2,"assets","skills","fimo"),SKILL_NAME="fimo";__name(installProjectFimoSkillForAgents,"installProjectFimoSkillForAgents");__name(findFimoProjectRoot,"findFimoProjectRoot");__name(syncProjectFimoSkill,"syncProjectFimoSkill")}});function defaultFormatSelected(values,options){if(values.length===0)return ansi.dim("(none)");let labels2=values.map(v=>options.find(o=>o.value===v)?.label??String(v)),head=labels2.slice(0,3),tail=labels2.length>3?ansi.dim(` +${labels2.length-3} more`):"";return`${head.join(", ")}${tail}`}async function agentMultiselect(opts){let styleOption=__name((option,isSelected,active)=>{let label=option.label??String(option.value??""),hint=option.hint&&active?ansi.dim(` (${option.hint})`):"";if(option.disabled)return`${ansi.gray(J)} ${ansi.gray(ansi.strike(label))}`;let box=isSelected?ansi.green(U):active?ansi.cyan(te):ansi.dim(J);return active?`${box} ${label}${hint}`:`${box} ${ansi.dim(label)}`},"styleOption");return new it({options:opts.options,initialValues:opts.initialValues??[],required:opts.required??!1,render(){let header=`${ansi.gray(d2)}
279
279
  ${V2(this.state)} ${opts.message}
280
280
  `,selected=this.value??[];switch(this.state){case"submit":return`${header}${ansi.gray(d2)} ${ansi.dim(`${selected.length} items selected`)}`;case"cancel":return`${header}${ansi.gray(d2)} ${ansi.dim("cancelled")}`;default:{let color=this.state==="error"?ansi.yellow:ansi.cyan,barLeft=`${color(d2)} `,barEnd=color(E2),legendLine=`${barLeft}${ansi.dim("\u2191/\u2193 move \xB7 space toggle \xB7 a all \xB7 i invert \xB7 enter confirm")}`,errorLine=this.state==="error"&&this.error?[`${barLeft}${ansi.yellow(this.error)}`]:[],blank=barLeft,prefix=[...header.split(`
281
281
  `).filter(l=>l.length>0),legendLine,...errorLine,blank],selectedDisplay=opts.formatSelected?opts.formatSelected(selected,this.options):defaultFormatSelected(selected,this.options),selectedLine=`${barLeft}${ansi.dim("Selected:")} ${selectedDisplay}`,footer=[blank,selectedLine,barEnd],list=Y2({cursor:this.cursor,options:this.options,style:__name((option,active)=>styleOption(option,selected.some(v=>v===option.value),active),"style"),maxItems:opts.maxItems,output:process.stdout,rowPadding:prefix.length+footer.length});return[...prefix,...list.map(line=>`${barLeft}${line}`),...footer].join(`
282
- `)}}}}).prompt()}var ansi,init_agent_multiselect=__esm({"src/cli/utils/agent-multiselect.ts"(){init_dist4();init_dist5();ansi={reset:"\x1B[0m",dim:__name(s=>`\x1B[2m${s}\x1B[22m`,"dim"),gray:__name(s=>`\x1B[90m${s}\x1B[39m`,"gray"),cyan:__name(s=>`\x1B[36m${s}\x1B[39m`,"cyan"),green:__name(s=>`\x1B[32m${s}\x1B[39m`,"green"),yellow:__name(s=>`\x1B[33m${s}\x1B[39m`,"yellow"),strike:__name(s=>`\x1B[9m${s}\x1B[29m`,"strike")};__name(defaultFormatSelected,"defaultFormatSelected");__name(agentMultiselect,"agentMultiselect")}});function detectAgentsFromEnv(){let detected=new Set;for(let[envVar,agent]of Object.entries(ENV_HINTS)){let value=process.env[envVar];value&&value!=="0"&&value!=="false"&&detected.add(agent)}return[...detected]}function parseAgentsFlag(options){let fromAgents=(options.agents??"").split(",").map(s=>s.trim()).filter(Boolean),fromAgent=options.agent??[],all=[...fromAgents,...fromAgent];if(all.length===0)return null;if(all.length===1&&all[0]==="none")return"none";let valid=[],supportedIds=getSkillAgentTypes();for(let id of all)if(isSkillAgentType(id))valid.includes(id)||valid.push(id);else throw new Error(`Unknown agent: "${id}". Supported: ${supportedIds.join(", ")}`);return valid}function parseModeFlag(options){let raw=options.mode?.trim();if(!raw)return null;if(raw==="symlink"||raw==="copy")return raw;throw new Error(`Unknown --mode value: "${raw}". Expected "symlink" or "copy".`)}function buildOption(id){let cfg=getSkillAgentConfig(id);return{value:id,label:cfg.displayName,hint:cfg.skillsDir?cfg.skillsDir:void 0}}async function promptInteractive(detected,message){let supported=new Set(getSkillAgentTypes().filter(id=>id!=="universal")),sortByDisplayName=__name((a,b)=>getSkillAgentConfig(a).displayName.localeCompare(getSkillAgentConfig(b).displayName),"sortByDisplayName"),popular=POPULAR_AGENTS.filter(id=>supported.has(id)),popularSet=new Set(popular),detectedExtra=detected.filter(id=>supported.has(id)&&!popularSet.has(id)).sort(sortByDisplayName),orderedAgents=[...popular,...detectedExtra],options=orderedAgents.map(id=>buildOption(id)),shown=new Set(orderedAgents),initialValues=MAIN_AGENTS.filter(id=>shown.has(id)),picked=await agentMultiselect({message,options,initialValues,required:!1,maxItems:10});return q(picked)&&(pt("Cancelled"),process.exit(0)),picked}function getSupportedAgentIds(){return getSkillAgentTypes().filter(id=>id!=="universal")}async function selectAgents(options,context={}){let explicit=parseAgentsFlag(options);if(explicit==="none")return[];if(explicit)return explicit;let fromEnv=detectAgentsFromEnv();if(fromEnv.length>0&&!process.stdout.isTTY)return fromEnv;let detected=await(context.detectFn??detectInstalledSkillAgents)();if(!process.stdout.isTTY){if(detected.length===0)throw new Error(`No agents detected and no --agents flag passed. Pass --agents=<comma-separated> with one or more of: ${getSkillAgentTypes().join(", ")}, or pass --agents=none to skip per-agent variants entirely.`);return detected}context.intro&&mt(context.intro);let message=context.promptMessage??"Install Fimo skills for which AI tools?";return promptInteractive(detected,message)}async function selectInstallMode(args){let flagged=parseModeFlag(args.options);if(flagged)return flagged;if(!process.stdout.isTTY||args.agentCount<=1)return"symlink";let picked=await _t({message:"Installation method?",initialValue:"symlink",options:[{value:"symlink",label:"Symlink (Recommended)",hint:"Single source of truth, easy updates"},{value:"copy",label:"Copy to all agents",hint:"Works without symlink support"}]});return q(picked)&&(pt("Cancelled"),process.exit(0)),picked}var ENV_HINTS,POPULAR_AGENTS,MAIN_AGENTS,init_agents=__esm({"src/cli/utils/agents.ts"(){init_dist5();init_dist6();init_agent_multiselect();ENV_HINTS={CLAUDECODE:"claude-code",CLAUDE_CODE_ENTRYPOINT:"claude-code",CURSOR_TRACE_ID:"cursor"},POPULAR_AGENTS=["claude-code","cursor","codex","opencode","windsurf","gemini-cli"],MAIN_AGENTS=["claude-code","cursor","codex","gemini-cli","windsurf"];__name(detectAgentsFromEnv,"detectAgentsFromEnv");__name(parseAgentsFlag,"parseAgentsFlag");__name(parseModeFlag,"parseModeFlag");__name(buildOption,"buildOption");__name(promptInteractive,"promptInteractive");__name(getSupportedAgentIds,"getSupportedAgentIds");__name(selectAgents,"selectAgents");__name(selectInstallMode,"selectInstallMode")}});import path6 from"node:path";function prettifyHome(p2){let home3=process.env.HOME||process.env.USERPROFILE||"";return home3&&p2.startsWith(home3+path6.sep)?"~"+p2.slice(home3.length):p2}function buildScope(args){let universalAgents=[],additionalAgents=[];for(let agent of args.agents){let name=getSkillAgentConfig(agent).displayName;if(isUniversalSkillAgent(agent)){universalAgents.push(name);continue}let dir=args.agentDir(agent);additionalAgents.push({name,dir:dir??"(no skills dir)"})}let byName=__name((a,b)=>a.localeCompare(b),"byName");return{canonicalDir:args.canonicalDir,universalAgents:universalAgents.sort(byName),additionalAgents:additionalAgents.sort((a,b)=>byName(a.name,b.name))}}function planInstallActions(args){let{agents,bundledSkills,projectRoot}=args,global2=buildScope({agents,canonicalDir:prettifyHome(getCanonicalSkillsDir(!0)),agentDir:__name(agent=>{try{return prettifyHome(getSkillAgentDir(agent,{global:!0}))}catch{return null}},"agentDir")}),project=null;if(projectRoot){let projectRel=__name(rel=>rel,"projectRel"),scope=buildScope({agents,canonicalDir:projectRel(path6.join(".agents","skills")),agentDir:__name(agent=>{let cfg=getSkillAgentConfig(agent);return cfg.skillsDir?projectRel(cfg.skillsDir):null},"agentDir")}),rules2=["AGENTS.md"];for(let agent of agents)if(AGENTS_WITH_RULE_VARIANTS.has(agent))for(let rel of RULE_VARIANT_PATHS[agent]??[])rules2.push(rel);project={...scope,root:projectRoot,rules:rules2}}return{skills:[...bundledSkills],global:global2,project}}function formatInstallPlan(plan,projectRoot){let lines=[];lines.push(`Skills: ${plan.skills.join(", ")}`);let renderScope=__name(scope=>{if(scope.universalAgents.length>0&&(lines.push(` Universal (${scope.canonicalDir})`),lines.push(` ${scope.universalAgents.join(", ")}`)),scope.additionalAgents.length>0){lines.push(" Additional agents");for(let a of scope.additionalAgents)lines.push(` ${a.name} (${a.dir})`)}scope.universalAgents.length===0&&scope.additionalAgents.length===0&&lines.push(" (nothing to install)")},"renderScope");if(lines.push(""),lines.push("Global"),renderScope(plan.global),plan.project){let label=projectRoot&&plan.project.root===projectRoot?path6.basename(plan.project.root):plan.project.root;lines.push(""),lines.push(`Project (${label})`),renderScope(plan.project),lines.push(" Rules");for(let rel of plan.project.rules)lines.push(` ${rel}`)}return lines.join(`
283
- `)}var AGENTS_WITH_RULE_VARIANTS,RULE_VARIANT_PATHS,init_install_preview=__esm({"src/cli/utils/install-preview.ts"(){init_dist6();AGENTS_WITH_RULE_VARIANTS=new Set(["claude-code","cursor","windsurf","gemini-cli"]),RULE_VARIANT_PATHS={"claude-code":["CLAUDE.md"],cursor:[".cursor/rules/fimo.mdc"],windsurf:[".windsurfrules"],"gemini-cli":["GEMINI.md"]};__name(prettifyHome,"prettifyHome");__name(buildScope,"buildScope");__name(planInstallActions,"planInstallActions");__name(formatInstallPlan,"formatInstallPlan")}});import fs7 from"node:fs";import path7 from"node:path";function isPrettyMode(){return currentMode().format==="pretty"}async function runSkillsInstall(options={}){for(let skill of BUNDLED_SKILLS)if(!fs7.existsSync(skill.source))return{status:"error",code:"BUNDLED_SKILL_MISSING",message:`Bundled skill "${skill.name}" not found at ${skill.source}.`,hint:"Try reinstalling fimo, or report this as a bug."};let agents;try{agents=await selectAgents(options,{promptMessage:"Which agents do you want to install to?"})}catch(err){return{status:"error",code:"AGENT_SELECTION_FAILED",message:err instanceof Error?err.message:String(err)}}if(agents.length===0)return{status:"error",code:"NO_AGENTS_SELECTED",message:"`fimo skills install` requires at least one agent.",hint:"Pass --agents=<comma-separated> or run interactively to pick."};let pretty=isPrettyMode()&&!!process.stdout.isTTY,cliVersion=getCliVersion(),projectRoot=findFimoProjectRoot(process.cwd()),mode2;try{mode2=await selectInstallMode({options,agentCount:agents.length})}catch(err){return{status:"error",code:"MODE_SELECTION_FAILED",message:err instanceof Error?err.message:String(err)}}if(pretty&&!options.yes){let plan=planInstallActions({agents,mode:mode2,bundledSkills:BUNDLED_SKILL_NAMES,projectSkillName:"fimo",projectRoot});wt(formatInstallPlan(plan,projectRoot),"Installation summary");let confirmed=await ot2({message:"Proceed?",initialValue:!0});if(q(confirmed)||!confirmed)return{status:"cancelled"}}let globalFailures=[];for(let skill of BUNDLED_SKILLS){let result=await installSkillsFromSource({source:skill.source,agents,global:!0,mode:mode2});stampSkillsAfterInstall(result,cliVersion);for(let failure of result.failed)globalFailures.push({skill:skill.name,agent:failure.agent,error:failure.error})}let removedLegacy=removeLegacyMigrationSkills(agents),projectSummary=[],projectFailures=[],ruleFiles=[],preservedRuleFiles=[];if(projectRoot){let skillResult=await installProjectFimoSkillForAgents(projectRoot,agents,mode2);skillResult.agents.length>0&&projectSummary.push(`fimo (project) for ${skillResult.agents.join(", ")}`),projectFailures=skillResult.failures;try{let ruleResult=syncPerAgentVariants(projectRoot,agents);ruleResult.perAgentVariants.length>0&&(projectSummary.push(`rule files: ${ruleResult.perAgentVariants.join(", ")}`),ruleFiles=ruleResult.perAgentVariants),preservedRuleFiles=ruleResult.perAgentVariantsSkipped}catch(err){projectFailures.push({agent:"claude-code",error:`rule files: ${err instanceof Error?err.message:String(err)}`})}}return{status:"ok",data:{ok:globalFailures.length===0&&projectFailures.length===0,global:BUNDLED_SKILL_NAMES,agents,mode:mode2,projectRoot,globalFailures,projectFailures,projectSummary,ruleFiles,preservedRuleFiles,removedLegacySkills:removedLegacy}}}function renderSkillsInstall(data2){let lines=[];lines.push(`Skills: ${data2.global.join(", ")} \u2192 ${data2.agents.join(", ")} (${data2.mode})`),data2.removedLegacySkills.length>0&&lines.push(` removed legacy: ${LEGACY_MIGRATION_SKILL_NAMES.join(", ")}`);for(let f of data2.globalFailures)lines.push(` ! ${f.skill} failed for ${f.agent}: ${f.error}`);if(data2.projectRoot){lines.push(`Project (${path7.basename(data2.projectRoot)}):`);for(let item of data2.projectSummary)lines.push(` \u2022 ${item}`);for(let f of data2.projectFailures)lines.push(` ! ${f.agent}: ${f.error}`);data2.projectSummary.length===0&&lines.push(" (nothing to write)")}return lines.join(`
282
+ `)}}}}).prompt()}var ansi,init_agent_multiselect=__esm({"src/cli/utils/agent-multiselect.ts"(){init_dist4();init_dist5();ansi={reset:"\x1B[0m",dim:__name(s=>`\x1B[2m${s}\x1B[22m`,"dim"),gray:__name(s=>`\x1B[90m${s}\x1B[39m`,"gray"),cyan:__name(s=>`\x1B[36m${s}\x1B[39m`,"cyan"),green:__name(s=>`\x1B[32m${s}\x1B[39m`,"green"),yellow:__name(s=>`\x1B[33m${s}\x1B[39m`,"yellow"),strike:__name(s=>`\x1B[9m${s}\x1B[29m`,"strike")};__name(defaultFormatSelected,"defaultFormatSelected");__name(agentMultiselect,"agentMultiselect")}});function detectAgentsFromEnv(){let detected=new Set;for(let[envVar,agent]of Object.entries(ENV_HINTS)){let value=process.env[envVar];value&&value!=="0"&&value!=="false"&&detected.add(agent)}return[...detected]}function parseAgentsFlag(options){let fromAgents=(options.agents??"").split(",").map(s=>s.trim()).filter(Boolean),fromAgent=options.agent??[],all=[...fromAgents,...fromAgent];if(all.length===0)return null;if(all.length===1&&all[0]==="none")return"none";let valid=[],supportedIds=getSkillAgentTypes();for(let id of all)if(isSkillAgentType(id))valid.includes(id)||valid.push(id);else throw new Error(`Unknown agent: "${id}". Supported: ${supportedIds.join(", ")}`);return valid}function parseModeFlag(options){let raw=options.mode?.trim();if(!raw)return null;if(raw==="symlink"||raw==="copy")return raw;throw new Error(`Unknown --mode value: "${raw}". Expected "symlink" or "copy".`)}function buildOption(id){let cfg=getSkillAgentConfig(id);return{value:id,label:cfg.displayName,hint:cfg.skillsDir?cfg.skillsDir:void 0}}async function promptInteractive(detected,message){let supported=new Set(getSkillAgentTypes().filter(id=>id!=="universal")),sortByDisplayName=__name((a,b)=>getSkillAgentConfig(a).displayName.localeCompare(getSkillAgentConfig(b).displayName),"sortByDisplayName"),popular=POPULAR_AGENTS.filter(id=>supported.has(id)),popularSet=new Set(popular),detectedExtra=detected.filter(id=>supported.has(id)&&!popularSet.has(id)).sort(sortByDisplayName),orderedAgents=[...popular,...detectedExtra],options=orderedAgents.map(id=>buildOption(id)),shown=new Set(orderedAgents),initialValues=MAIN_AGENTS.filter(id=>shown.has(id)),picked=await agentMultiselect({message,options,initialValues,required:!1,maxItems:10});return q(picked)&&(pt("Cancelled"),process.exit(0)),picked}function getSupportedAgentIds(){return getSkillAgentTypes().filter(id=>id!=="universal")}async function selectAgents(options,context={}){let explicit=parseAgentsFlag(options);if(explicit==="none")return[];if(explicit)return explicit;let fromEnv=detectAgentsFromEnv();if(fromEnv.length>0&&!process.stdout.isTTY)return fromEnv;let detected=await(context.detectFn??detectInstalledSkillAgents)();if(!process.stdout.isTTY){if(detected.length===0)throw new Error(`No agents detected and no --agents flag passed. Pass --agents=<comma-separated> with one or more of: ${getSkillAgentTypes().join(", ")}, or pass --agents=none to skip per-agent variants entirely.`);return detected}context.intro&&mt(context.intro);let message=context.promptMessage??"Install Fimo skills for which AI tools?";return promptInteractive(detected,message)}async function selectInstallMode(args){let flagged=parseModeFlag(args.options);if(flagged)return flagged;if(!process.stdout.isTTY||args.agentCount<=1)return"symlink";let picked=await _t({message:"Installation method?",initialValue:"symlink",options:[{value:"symlink",label:"Symlink (Recommended)",hint:"Single source of truth, easy updates"},{value:"copy",label:"Copy to all agents",hint:"Works without symlink support"}]});return q(picked)&&(pt("Cancelled"),process.exit(0)),picked}var ENV_HINTS,POPULAR_AGENTS,MAIN_AGENTS,init_agents=__esm({"src/cli/utils/agents.ts"(){init_dist5();init_dist6();init_agent_multiselect();ENV_HINTS={CLAUDECODE:"claude-code",CLAUDE_CODE_ENTRYPOINT:"claude-code",CURSOR_TRACE_ID:"cursor"},POPULAR_AGENTS=["claude-code","cursor","codex","opencode","windsurf","gemini-cli"],MAIN_AGENTS=["claude-code","cursor","codex","gemini-cli","windsurf"];__name(detectAgentsFromEnv,"detectAgentsFromEnv");__name(parseAgentsFlag,"parseAgentsFlag");__name(parseModeFlag,"parseModeFlag");__name(buildOption,"buildOption");__name(promptInteractive,"promptInteractive");__name(getSupportedAgentIds,"getSupportedAgentIds");__name(selectAgents,"selectAgents");__name(selectInstallMode,"selectInstallMode")}});import path7 from"node:path";function prettifyHome(p2){let home3=process.env.HOME||process.env.USERPROFILE||"";return home3&&p2.startsWith(home3+path7.sep)?"~"+p2.slice(home3.length):p2}function buildScope(args){let universalAgents=[],additionalAgents=[];for(let agent of args.agents){let name=getSkillAgentConfig(agent).displayName;if(isUniversalSkillAgent(agent)){universalAgents.push(name);continue}let dir=args.agentDir(agent);additionalAgents.push({name,dir:dir??"(no skills dir)"})}let byName=__name((a,b)=>a.localeCompare(b),"byName");return{canonicalDir:args.canonicalDir,universalAgents:universalAgents.sort(byName),additionalAgents:additionalAgents.sort((a,b)=>byName(a.name,b.name))}}function planInstallActions(args){let{agents,bundledSkills,projectRoot}=args,global2=buildScope({agents,canonicalDir:prettifyHome(getCanonicalSkillsDir(!0)),agentDir:__name(agent=>{try{return prettifyHome(getSkillAgentDir(agent,{global:!0}))}catch{return null}},"agentDir")}),project=null;if(projectRoot){let projectRel=__name(rel=>rel,"projectRel"),scope=buildScope({agents,canonicalDir:projectRel(path7.join(".agents","skills")),agentDir:__name(agent=>{let cfg=getSkillAgentConfig(agent);return cfg.skillsDir?projectRel(cfg.skillsDir):null},"agentDir")}),rules2=["AGENTS.md"];for(let agent of agents)if(AGENTS_WITH_RULE_VARIANTS.has(agent))for(let rel of RULE_VARIANT_PATHS[agent]??[])rules2.push(rel);project={...scope,root:projectRoot,rules:rules2}}return{skills:[...bundledSkills],global:global2,project}}function formatInstallPlan(plan,projectRoot){let lines=[];lines.push(`Skills: ${plan.skills.join(", ")}`);let renderScope=__name(scope=>{if(scope.universalAgents.length>0&&(lines.push(` Universal (${scope.canonicalDir})`),lines.push(` ${scope.universalAgents.join(", ")}`)),scope.additionalAgents.length>0){lines.push(" Additional agents");for(let a of scope.additionalAgents)lines.push(` ${a.name} (${a.dir})`)}scope.universalAgents.length===0&&scope.additionalAgents.length===0&&lines.push(" (nothing to install)")},"renderScope");if(lines.push(""),lines.push("Global"),renderScope(plan.global),plan.project){let label=projectRoot&&plan.project.root===projectRoot?path7.basename(plan.project.root):plan.project.root;lines.push(""),lines.push(`Project (${label})`),renderScope(plan.project),lines.push(" Rules");for(let rel of plan.project.rules)lines.push(` ${rel}`)}return lines.join(`
283
+ `)}var AGENTS_WITH_RULE_VARIANTS,RULE_VARIANT_PATHS,init_install_preview=__esm({"src/cli/utils/install-preview.ts"(){init_dist6();AGENTS_WITH_RULE_VARIANTS=new Set(["claude-code","cursor","windsurf","gemini-cli"]),RULE_VARIANT_PATHS={"claude-code":["CLAUDE.md"],cursor:[".cursor/rules/fimo.mdc"],windsurf:[".windsurfrules"],"gemini-cli":["GEMINI.md"]};__name(prettifyHome,"prettifyHome");__name(buildScope,"buildScope");__name(planInstallActions,"planInstallActions");__name(formatInstallPlan,"formatInstallPlan")}});import fs8 from"node:fs";import path8 from"node:path";function isPrettyMode(){return currentMode().format==="pretty"}async function runSkillsInstall(options={}){for(let skill of BUNDLED_SKILLS)if(!fs8.existsSync(skill.source))return{status:"error",code:"BUNDLED_SKILL_MISSING",message:`Bundled skill "${skill.name}" not found at ${skill.source}.`,hint:"Try reinstalling fimo, or report this as a bug."};let agents;try{agents=await selectAgents(options,{promptMessage:"Which agents do you want to install to?"})}catch(err){return{status:"error",code:"AGENT_SELECTION_FAILED",message:err instanceof Error?err.message:String(err)}}if(agents.length===0)return{status:"error",code:"NO_AGENTS_SELECTED",message:"`fimo skills install` requires at least one agent.",hint:"Pass --agents=<comma-separated> or run interactively to pick."};let pretty=isPrettyMode()&&!!process.stdout.isTTY,cliVersion=getCliVersion(),projectRoot=findFimoProjectRoot(process.cwd()),mode2;try{mode2=await selectInstallMode({options,agentCount:agents.length})}catch(err){return{status:"error",code:"MODE_SELECTION_FAILED",message:err instanceof Error?err.message:String(err)}}if(pretty&&!options.yes){let plan=planInstallActions({agents,mode:mode2,bundledSkills:BUNDLED_SKILL_NAMES,projectSkillName:"fimo",projectRoot});wt(formatInstallPlan(plan,projectRoot),"Installation summary");let confirmed=await ot2({message:"Proceed?",initialValue:!0});if(q(confirmed)||!confirmed)return{status:"cancelled"}}let globalFailures=[];for(let skill of BUNDLED_SKILLS){let result=await installSkillsFromSource({source:skill.source,agents,global:!0,mode:mode2});stampSkillsAfterInstall(result,cliVersion);for(let failure of result.failed)globalFailures.push({skill:skill.name,agent:failure.agent,error:failure.error})}let removedLegacy=removeLegacyMigrationSkills(agents),projectSummary=[],projectFailures=[],ruleFiles=[],preservedRuleFiles=[];if(projectRoot){let skillResult=await installProjectFimoSkillForAgents(projectRoot,agents,mode2);skillResult.agents.length>0&&projectSummary.push(`fimo (project) for ${skillResult.agents.join(", ")}`),projectFailures=skillResult.failures;try{let ruleResult=syncPerAgentVariants(projectRoot,agents);ruleResult.perAgentVariants.length>0&&(projectSummary.push(`rule files: ${ruleResult.perAgentVariants.join(", ")}`),ruleFiles=ruleResult.perAgentVariants),preservedRuleFiles=ruleResult.perAgentVariantsSkipped}catch(err){projectFailures.push({agent:"claude-code",error:`rule files: ${err instanceof Error?err.message:String(err)}`})}}return{status:"ok",data:{ok:globalFailures.length===0&&projectFailures.length===0,global:BUNDLED_SKILL_NAMES,agents,mode:mode2,projectRoot,globalFailures,projectFailures,projectSummary,ruleFiles,preservedRuleFiles,removedLegacySkills:removedLegacy}}}function renderSkillsInstall(data2){let lines=[];lines.push(`Skills: ${data2.global.join(", ")} \u2192 ${data2.agents.join(", ")} (${data2.mode})`),data2.removedLegacySkills.length>0&&lines.push(` removed legacy: ${LEGACY_MIGRATION_SKILL_NAMES.join(", ")}`);for(let f of data2.globalFailures)lines.push(` ! ${f.skill} failed for ${f.agent}: ${f.error}`);if(data2.projectRoot){lines.push(`Project (${path8.basename(data2.projectRoot)}):`);for(let item of data2.projectSummary)lines.push(` \u2022 ${item}`);for(let f of data2.projectFailures)lines.push(` ! ${f.agent}: ${f.error}`);data2.projectSummary.length===0&&lines.push(" (nothing to write)")}return lines.join(`
284
284
  `)}async function skillsInstallCommand(options={}){let outcome=await runSkillsInstall(options);switch(outcome.status){case"error":ui.error({command:"skills install",code:outcome.code,message:outcome.message,hint:outcome.hint});return;case"cancelled":ui.info({command:"skills install",message:"Cancelled."});return;case"ok":ui.result({command:"skills install",data:outcome.data,render:__name(()=>renderSkillsInstall(outcome.data),"render")});return}}async function skillsSyncCommand(options={}){let globalAgentsOverride,explicit;try{explicit=parseAgentsFlag(options)}catch(err){ui.error({command:"skills sync",code:"AGENT_FLAG_PARSE_FAILED",message:err instanceof Error?err.message:String(err)});return}if(explicit==="none"){ui.error({command:"skills sync",code:"INVALID_AGENTS_NONE",message:"`--agents=none` is not valid for sync."});return}explicit&&(globalAgentsOverride=explicit);let globalResult=await refreshInstalledFimoSkills(globalAgentsOverride);if(globalResult.bundledSkillsMissing){ui.error({command:"skills sync",code:"BUNDLED_SKILL_MISSING",message:"Bundled skills not found in this fimo install.",hint:"Try reinstalling fimo, or report this as a bug."});return}let projectResult=await syncProjectFimoSkill(),data2={ok:globalResult.failures.length===0,global:{refreshed:BUNDLED_SKILL_NAMES,agents:globalResult.agents,failures:globalResult.failures},project:projectResult};ui.result({command:"skills sync",data:data2,render:__name(()=>{let lines=[];globalResult.agents.length>0?lines.push(`Global refreshed: ${BUNDLED_SKILL_NAMES.join(", ")} for ${globalResult.agents.join(", ")}`):lines.push("Global: no agents have Fimo skills installed. Run `fimo skills install` first.");for(let failure of globalResult.failures)lines.push(` ! ${failure.skill} failed for ${failure.agent}: ${failure.error}`);switch(projectResult.status){case"not-a-fimo-project":break;case"no-agents":lines.push(`Project (${projectResult.projectRoot}): no per-agent rule files detected \u2014 nothing to sync.`);break;case"installed":if(projectResult.skillSourceMissing)lines.push(" ! project fimo skill source missing \u2014 reinstall fimo.");else{lines.push(`Project refreshed: fimo \u2192 ${projectResult.agents.join(", ")} (${projectResult.projectRoot})`);for(let failure of projectResult.failures)lines.push(` ! project fimo skill failed for ${failure.agent}: ${failure.error}`)}break}return lines.join(`
285
- `)},"render")})}async function refreshInstalledFimoSkills(agentsOverride){for(let skill of BUNDLED_SKILLS)if(!fs7.existsSync(skill.source))return{agents:[],skills:BUNDLED_SKILL_NAMES,failures:[],bundledSkillsMissing:!0};let agents=agentsOverride??await detectAgentsWithFimoSkills(),failures=[];if(agents.length===0)return{agents:[],skills:BUNDLED_SKILL_NAMES,failures};let cliVersion=getCliVersion();for(let skill of BUNDLED_SKILLS){let result=await installSkillsFromSource({source:skill.source,agents,global:!0,mode:"copy"});stampSkillsAfterInstall(result,cliVersion);for(let failure of result.failed)failures.push({skill:skill.name,agent:failure.agent,error:failure.error})}return removeLegacyMigrationSkills(agents),{agents,skills:BUNDLED_SKILL_NAMES,failures}}async function detectAgentsWithFimoSkills(){let allAgents=getSkillAgentTypes().filter(id=>id!=="universal"),result=[];for(let agent of allAgents){let baseDir;try{baseDir=getSkillAgentDir(agent,{global:!0})}catch{continue}for(let skill of DETECTABLE_FIMO_SKILL_NAMES)if(fs7.existsSync(path7.join(baseDir,skill))){result.push(agent);break}}return result}function removeDirIfExists(targetPath){return fs7.existsSync(targetPath)?(fs7.rmSync(targetPath,{recursive:!0,force:!0}),!0):!1}function removeGlobalSkillDirs(skillNames,agents){let removed=[];for(let agent of agents){let baseDir=getSkillAgentDir(agent,{global:!0});for(let skill of skillNames){let skillDir=path7.join(baseDir,skill);removeDirIfExists(skillDir)&&removed.push({skill,agent,path:skillDir})}}return removed}function hasGlobalSkillInstalled(skillNames){for(let agent of getSkillAgentTypes().filter(id=>id!=="universal")){let baseDir;try{baseDir=getSkillAgentDir(agent,{global:!0})}catch{continue}for(let skill of skillNames)if(fs7.existsSync(path7.join(baseDir,skill)))return!0}return!1}function removeCanonicalSkillDirs(skillNames){let removed=[],canonicalDir=getCanonicalSkillsDir(!0);for(let skill of skillNames){let canonicalSkill=path7.join(canonicalDir,skill);removeDirIfExists(canonicalSkill)&&removed.push({skill,agent:"canonical",path:canonicalSkill})}return removed}function removeLegacyMigrationSkills(agents){let removed=removeGlobalSkillDirs(LEGACY_MIGRATION_SKILL_NAMES,agents);return hasGlobalSkillInstalled(LEGACY_MIGRATION_SKILL_NAMES)||removed.push(...removeCanonicalSkillDirs(LEGACY_MIGRATION_SKILL_NAMES)),removed}async function skillsUninstallCommand(options={}){let targetAgents,explicit;try{explicit=parseAgentsFlag(options)}catch(err){ui.error({command:"skills uninstall",code:"AGENT_FLAG_PARSE_FAILED",message:err instanceof Error?err.message:String(err)});return}if(explicit==="none"){ui.error({command:"skills uninstall",code:"INVALID_AGENTS_NONE",message:"`--agents=none` is not valid for uninstall."});return}if(explicit?targetAgents=explicit:targetAgents=await detectAgentsWithFimoSkills(),targetAgents.length===0){ui.result({command:"skills uninstall",data:{ok:!0,uninstalled:[]},render:__name(()=>"No Fimo skills are installed for any agent.","render")});return}if(isPrettyMode()&&!!process.stdout.isTTY){mt("Uninstall Fimo skills (global)");let confirmed=await ot2({message:`Remove skills from ${targetAgents.join(", ")}? (${DETECTABLE_FIMO_SKILL_NAMES.join(" + ")})`,initialValue:!0});if(q(confirmed)||!confirmed){ui.info({command:"skills uninstall",message:"Cancelled."});return}}let removed=removeGlobalSkillDirs(DETECTABLE_FIMO_SKILL_NAMES,targetAgents);(await detectAgentsWithFimoSkills()).length===0&&removed.push(...removeCanonicalSkillDirs(DETECTABLE_FIMO_SKILL_NAMES)),ui.result({command:"skills uninstall",data:{ok:!0,uninstalled:removed},render:__name(()=>removed.length===0?"No Fimo skills were installed for the selected agents.":`Uninstalled:
285
+ `)},"render")})}async function refreshInstalledFimoSkills(agentsOverride){for(let skill of BUNDLED_SKILLS)if(!fs8.existsSync(skill.source))return{agents:[],skills:BUNDLED_SKILL_NAMES,failures:[],bundledSkillsMissing:!0};let agents=agentsOverride??await detectAgentsWithFimoSkills(),failures=[];if(agents.length===0)return{agents:[],skills:BUNDLED_SKILL_NAMES,failures};let cliVersion=getCliVersion();for(let skill of BUNDLED_SKILLS){let result=await installSkillsFromSource({source:skill.source,agents,global:!0,mode:"copy"});stampSkillsAfterInstall(result,cliVersion);for(let failure of result.failed)failures.push({skill:skill.name,agent:failure.agent,error:failure.error})}return removeLegacyMigrationSkills(agents),{agents,skills:BUNDLED_SKILL_NAMES,failures}}async function detectAgentsWithFimoSkills(){let allAgents=getSkillAgentTypes().filter(id=>id!=="universal"),result=[];for(let agent of allAgents){let baseDir;try{baseDir=getSkillAgentDir(agent,{global:!0})}catch{continue}for(let skill of DETECTABLE_FIMO_SKILL_NAMES)if(fs8.existsSync(path8.join(baseDir,skill))){result.push(agent);break}}return result}function removeDirIfExists(targetPath){return fs8.existsSync(targetPath)?(fs8.rmSync(targetPath,{recursive:!0,force:!0}),!0):!1}function removeGlobalSkillDirs(skillNames,agents){let removed=[];for(let agent of agents){let baseDir=getSkillAgentDir(agent,{global:!0});for(let skill of skillNames){let skillDir=path8.join(baseDir,skill);removeDirIfExists(skillDir)&&removed.push({skill,agent,path:skillDir})}}return removed}function hasGlobalSkillInstalled(skillNames){for(let agent of getSkillAgentTypes().filter(id=>id!=="universal")){let baseDir;try{baseDir=getSkillAgentDir(agent,{global:!0})}catch{continue}for(let skill of skillNames)if(fs8.existsSync(path8.join(baseDir,skill)))return!0}return!1}function removeCanonicalSkillDirs(skillNames){let removed=[],canonicalDir=getCanonicalSkillsDir(!0);for(let skill of skillNames){let canonicalSkill=path8.join(canonicalDir,skill);removeDirIfExists(canonicalSkill)&&removed.push({skill,agent:"canonical",path:canonicalSkill})}return removed}function removeLegacyMigrationSkills(agents){let removed=removeGlobalSkillDirs(LEGACY_MIGRATION_SKILL_NAMES,agents);return hasGlobalSkillInstalled(LEGACY_MIGRATION_SKILL_NAMES)||removed.push(...removeCanonicalSkillDirs(LEGACY_MIGRATION_SKILL_NAMES)),removed}async function skillsUninstallCommand(options={}){let targetAgents,explicit;try{explicit=parseAgentsFlag(options)}catch(err){ui.error({command:"skills uninstall",code:"AGENT_FLAG_PARSE_FAILED",message:err instanceof Error?err.message:String(err)});return}if(explicit==="none"){ui.error({command:"skills uninstall",code:"INVALID_AGENTS_NONE",message:"`--agents=none` is not valid for uninstall."});return}if(explicit?targetAgents=explicit:targetAgents=await detectAgentsWithFimoSkills(),targetAgents.length===0){ui.result({command:"skills uninstall",data:{ok:!0,uninstalled:[]},render:__name(()=>"No Fimo skills are installed for any agent.","render")});return}if(isPrettyMode()&&!!process.stdout.isTTY){mt("Uninstall Fimo skills (global)");let confirmed=await ot2({message:`Remove skills from ${targetAgents.join(", ")}? (${DETECTABLE_FIMO_SKILL_NAMES.join(" + ")})`,initialValue:!0});if(q(confirmed)||!confirmed){ui.info({command:"skills uninstall",message:"Cancelled."});return}}let removed=removeGlobalSkillDirs(DETECTABLE_FIMO_SKILL_NAMES,targetAgents);(await detectAgentsWithFimoSkills()).length===0&&removed.push(...removeCanonicalSkillDirs(DETECTABLE_FIMO_SKILL_NAMES)),ui.result({command:"skills uninstall",data:{ok:!0,uninstalled:removed},render:__name(()=>removed.length===0?"No Fimo skills were installed for the selected agents.":`Uninstalled:
286
286
  ${removed.map(r=>` ${r.skill} \u2192 ${r.agent}`).join(`
287
- `)}`,"render")})}function listReferenceDocs(skillDir){let refsDir=path7.join(skillDir,"references");if(!fs7.existsSync(refsDir))return[];let out=[],walk=__name((cur,prefix)=>{for(let entry of fs7.readdirSync(cur,{withFileTypes:!0})){let rel=prefix?`${prefix}/${entry.name}`:entry.name;entry.isDirectory()?walk(path7.join(cur,entry.name),rel):entry.isFile()&&entry.name.endsWith(".md")&&out.push(rel.slice(0,-3))}},"walk");return walk(refsDir,""),out.sort()}function discoverBundledSkills(){if(!fs7.existsSync(SKILLS_ROOT))return[];let globalNames=new Set(BUNDLED_SKILL_NAMES),skills2=[];for(let entry of fs7.readdirSync(SKILLS_ROOT,{withFileTypes:!0})){if(!entry.isDirectory())continue;let dir=path7.join(SKILLS_ROOT,entry.name),skillMd=path7.join(dir,"SKILL.md");if(!fs7.existsSync(skillMd))continue;let{data:data2}=parseFrontmatter(fs7.readFileSync(skillMd,"utf8")),description=typeof data2.description=="string"?data2.description.trim():"";skills2.push({name:entry.name,description,scope:globalNames.has(entry.name)?"global":"project",refs:listReferenceDocs(dir),dir})}return skills2.sort((a,b)=>a.name.localeCompare(b.name))}function firstLine(text3){let line=text3.split(`
287
+ `)}`,"render")})}function listReferenceDocs(skillDir){let refsDir=path8.join(skillDir,"references");if(!fs8.existsSync(refsDir))return[];let out=[],walk=__name((cur,prefix)=>{for(let entry of fs8.readdirSync(cur,{withFileTypes:!0})){let rel=prefix?`${prefix}/${entry.name}`:entry.name;entry.isDirectory()?walk(path8.join(cur,entry.name),rel):entry.isFile()&&entry.name.endsWith(".md")&&out.push(rel.slice(0,-3))}},"walk");return walk(refsDir,""),out.sort()}function discoverBundledSkills(){if(!fs8.existsSync(SKILLS_ROOT))return[];let globalNames=new Set(BUNDLED_SKILL_NAMES),skills2=[];for(let entry of fs8.readdirSync(SKILLS_ROOT,{withFileTypes:!0})){if(!entry.isDirectory())continue;let dir=path8.join(SKILLS_ROOT,entry.name),skillMd=path8.join(dir,"SKILL.md");if(!fs8.existsSync(skillMd))continue;let{data:data2}=parseFrontmatter(fs8.readFileSync(skillMd,"utf8")),description=typeof data2.description=="string"?data2.description.trim():"";skills2.push({name:entry.name,description,scope:globalNames.has(entry.name)?"global":"project",refs:listReferenceDocs(dir),dir})}return skills2.sort((a,b)=>a.name.localeCompare(b.name))}function firstLine(text3){let line=text3.split(`
288
288
  `,1)[0]?.trim()??"";return line.length>80?`${line.slice(0,79)}\u2026`:line}function skillsListCommand(){let skills2=discoverBundledSkills();if(skills2.length===0){ui.error({command:"skills list",code:"BUNDLED_SKILL_MISSING",message:`No bundled skills found at ${SKILLS_ROOT}.`,hint:"Try reinstalling fimo, or report this as a bug."});return}ui.result({command:"skills list",data:{skills:skills2.map(s=>({name:s.name,scope:s.scope,description:s.description,refs:s.refs}))},render:__name(()=>{let nameWidth=Math.max(4,...skills2.map(s=>s.name.length)),scopeWidth=Math.max(5,...skills2.map(s=>s.scope.length)),header=`${"NAME".padEnd(nameWidth)} ${"SCOPE".padEnd(scopeWidth)} REFS DESCRIPTION`,lines=skills2.map(s=>{let refs=String(s.refs.length).padStart(4);return`${s.name.padEnd(nameWidth)} ${s.scope.padEnd(scopeWidth)} ${refs} ${firstLine(s.description)}`});return[header,...lines].join(`
289
- `)},"render"),hint:"Run `fimo skills get <name>` for a skill, or add `--ref <doc>` for a reference."})}function normalizeRef(ref){return ref.trim().replace(/\\/g,"/").replace(/^references\//,"").replace(/\.md$/,"")}function skillsGetCommand(name,options={}){let skills2=discoverBundledSkills(),skill=skills2.find(s=>s.name===name);if(!skill){ui.error({command:"skills get",code:"SKILL_NOT_FOUND",message:`Unknown skill "${name}".`,hint:skills2.length?`Available: ${skills2.map(s=>s.name).join(", ")}. Run \`fimo skills list\`.`:"No bundled skills found \u2014 try reinstalling fimo."});return}let targetPath,refId=null;if(options.ref){refId=normalizeRef(options.ref);let refsRoot=path7.resolve(skill.dir,"references"),candidate=path7.resolve(refsRoot,`${refId}.md`);if(!(candidate===refsRoot||candidate.startsWith(refsRoot+path7.sep))||!fs7.existsSync(candidate)){ui.error({command:"skills get",code:"SKILL_REF_NOT_FOUND",message:`Reference "${options.ref}" not found in skill "${skill.name}".`,hint:skill.refs.length?`Available refs: ${skill.refs.join(", ")}.`:"This skill has no reference docs."});return}targetPath=candidate}else targetPath=path7.join(skill.dir,"SKILL.md");let content2=fs7.readFileSync(targetPath,"utf8");ui.result({command:"skills get",data:{skill:skill.name,ref:refId,path:targetPath,content:content2},render:__name(()=>content2,"render")})}var SKILLS_ROOT,BUNDLED_SKILLS,BUNDLED_SKILL_NAMES,LEGACY_MIGRATION_SKILL_NAMES,DETECTABLE_FIMO_SKILL_NAMES,init_skills=__esm({"src/cli/commands/skills.ts"(){init_dist5();init_dist();init_dist6();init_config();init_project_skill();init_skill_version();init_agents();init_install_preview();init_scaffold();init_version();SKILLS_ROOT=path7.resolve(CLI_ROOT,"assets","skills"),BUNDLED_SKILLS=[{name:"fimo-cli",source:path7.join(SKILLS_ROOT,"fimo-cli")},{name:"fimo-studio",source:path7.join(SKILLS_ROOT,"fimo-studio")},{name:"fimo-migration",source:path7.join(SKILLS_ROOT,"fimo-migration")}],BUNDLED_SKILL_NAMES=BUNDLED_SKILLS.map(s=>s.name),LEGACY_MIGRATION_SKILL_NAMES=["fimo-migrate","fimo-source-migrate"],DETECTABLE_FIMO_SKILL_NAMES=[...BUNDLED_SKILL_NAMES,...LEGACY_MIGRATION_SKILL_NAMES];__name(isPrettyMode,"isPrettyMode");__name(runSkillsInstall,"runSkillsInstall");__name(renderSkillsInstall,"renderSkillsInstall");__name(skillsInstallCommand,"skillsInstallCommand");__name(skillsSyncCommand,"skillsSyncCommand");__name(refreshInstalledFimoSkills,"refreshInstalledFimoSkills");__name(detectAgentsWithFimoSkills,"detectAgentsWithFimoSkills");__name(removeDirIfExists,"removeDirIfExists");__name(removeGlobalSkillDirs,"removeGlobalSkillDirs");__name(hasGlobalSkillInstalled,"hasGlobalSkillInstalled");__name(removeCanonicalSkillDirs,"removeCanonicalSkillDirs");__name(removeLegacyMigrationSkills,"removeLegacyMigrationSkills");__name(skillsUninstallCommand,"skillsUninstallCommand");__name(listReferenceDocs,"listReferenceDocs");__name(discoverBundledSkills,"discoverBundledSkills");__name(firstLine,"firstLine");__name(skillsListCommand,"skillsListCommand");__name(normalizeRef,"normalizeRef");__name(skillsGetCommand,"skillsGetCommand")}});import fs8 from"node:fs";import os from"node:os";import path8 from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";function getCliVersion(){try{let raw=fs8.readFileSync(PACKAGE_JSON_PATH,"utf8");return JSON.parse(raw).version??"0.0.0"}catch{return"0.0.0"}}function getMarkerPath(){let xdgConfigHome2=process.env.XDG_CONFIG_HOME?.trim(),configDir=xdgConfigHome2||path8.join(os.homedir(),".config");return path8.join(configDir,"fimo","last-version")}function readMarker(){try{let raw=fs8.readFileSync(getMarkerPath(),"utf8").trim();return raw.length>0?raw:null}catch{return null}}function writeMarker(version){let markerPath=getMarkerPath();fs8.mkdirSync(path8.dirname(markerPath),{recursive:!0}),fs8.writeFileSync(markerPath,version)}async function refreshSkillsIfVersionChanged(){let currentVersion=getCliVersion(),previousVersion=readMarker();if(previousVersion===null){try{writeMarker(currentVersion)}catch{}return}if(previousVersion!==currentVersion){try{let result=await refreshInstalledFimoSkills();for(let failure of result.failures)console.error(`[fimo] Failed to refresh ${failure.skill} for ${failure.agent}: ${failure.error}`)}catch(err){console.error(`[fimo] Skill refresh failed: ${err instanceof Error?err.message:String(err)}`)}try{writeMarker(currentVersion)}catch{}}}var THIS_FILE3,CLI_ROOT3,PACKAGE_JSON_PATH,init_version=__esm({"src/cli/version.ts"(){init_skills();THIS_FILE3=fileURLToPath4(import.meta.url),CLI_ROOT3=path8.resolve(path8.dirname(THIS_FILE3),"..",".."),PACKAGE_JSON_PATH=path8.join(CLI_ROOT3,"package.json");__name(getCliVersion,"getCliVersion");__name(getMarkerPath,"getMarkerPath");__name(readMarker,"readMarker");__name(writeMarker,"writeMarker");__name(refreshSkillsIfVersionChanged,"refreshSkillsIfVersionChanged")}});import fs9 from"node:fs";import os2 from"node:os";import path9 from"node:path";function outdatedError(current,latest){return{command:"fimo",code:"CLI_OUTDATED",message:`Your fimo CLI (${current}) is behind the latest (${latest}) and is no longer supported.`,hint:"Run `npx fimo@latest <command>` to always use the latest, or upgrade your global install (`npm i -g fimo@latest`)."}}function parseSemver(input){let parts=(input.trim().replace(/^v/,"").split(/[-+]/,1)[0]??"").split(".");if(parts.length<3)return null;let major=Number.parseInt(parts[0],10),minor=Number.parseInt(parts[1],10),patch=Number.parseInt(parts[2],10);return!Number.isFinite(major)||!Number.isFinite(minor)||!Number.isFinite(patch)?null:{major,minor,patch}}function detectChannel(version){let v=version.trim().replace(/^v/,""),dash=v.indexOf("-");return dash<0?"latest":v.slice(dash+1).startsWith("staging")?"staging":"skip"}function isEphemeralRun(argv1=process.argv[1]??"",userAgent=process.env.npm_config_user_agent??""){let p2=argv1.replace(/\\/g,"/");if(/\/_npx\//.test(p2)||/\/dlx[-/]/.test(p2)||/\/dlx\//.test(p2)||/bunx/.test(p2))return!0;let tmp=os2.tmpdir().replace(/\\/g,"/");return tmp&&p2.toLowerCase().startsWith(tmp.toLowerCase())?!0:/ exec\b/.test(userAgent)}function decideVersionGate(currentVersion,distTags){let channel=detectChannel(currentVersion);if(channel==="skip")return{action:"ok"};let current=parseSemver(currentVersion);if(!current)return{action:"ok"};let latestRaw=channel==="latest"?distTags.latest:distTags.staging;if(!latestRaw)return{action:"ok"};let latest=parseSemver(latestRaw);return latest?current.major<latest.major||current.major===latest.major&&current.minor<latest.minor?{action:"block",latest:latestRaw}:current.major===latest.major&&current.minor===latest.minor&&current.patch<latest.patch?{action:"nudge",latest:latestRaw}:{action:"ok"}:{action:"ok"}}function cachePath(){return path9.join(loadConfig().configDir,"version-check.json")}function readCache(){try{let raw=fs9.readFileSync(cachePath(),"utf8"),parsed=JSON.parse(raw);if(parsed&&typeof parsed.checkedAt=="string"&&parsed.distTags&&typeof parsed.distTags=="object")return parsed}catch{}return null}function writeCache(distTags){try{let file=cachePath();fs9.mkdirSync(path9.dirname(file),{recursive:!0}),fs9.writeFileSync(file,JSON.stringify({checkedAt:new Date().toISOString(),distTags}))}catch{}}async function fetchDistTags(){try{let res=await fetch(DIST_TAGS_URL,{signal:AbortSignal.timeout(FETCH_TIMEOUT_MS)});if(!res.ok)return null;let json=await res.json();return json&&typeof json=="object"?json:null}catch{return null}}function resolveDistTags(now=Date.now()){let cached=readCache();return cached!==null&&(()=>{let age=now-new Date(cached.checkedAt).getTime();return Number.isFinite(age)&&age>=0&&age<CACHE_TTL_MS})()||fetchDistTags().then(fresh=>{fresh&&writeCache(fresh)}),cached?.distTags??null}function wantsJson(){return process.env.FIMO_OUTPUT==="json"||process.argv.includes("--json")}function isPublishedInstall(){return fs9.existsSync(path9.join(CLI_ROOT,"release.json"))}function shouldSkipForArgs(){let args=process.argv.slice(2);return args.length===0||args[0]==="git-credential"?!0:args.some(a=>a==="--version"||a==="-V"||a==="--help"||a==="-h")}async function runVersionCheck(){if(process.env.FIMO_SKIP_VERSION_CHECK==="1"||!isPublishedInstall()||shouldSkipForArgs()||isEphemeralRun())return;let current=getCliVersion();if(detectChannel(current)==="skip")return;let distTags=resolveDistTags();if(!distTags)return;let decision=decideVersionGate(current,distTags);if(decision.action!=="ok"){if(decision.action==="nudge"){currentMode().format!=="json"&&process.stderr.write(`
290
- [fimo] A newer version is available (${current} \u2192 ${decision.latest}). Tip: run \`npx fimo@latest <command>\` to always use the latest.
291
-
292
- `);return}initUi({json:wantsJson(),jsonEnvVar:"FIMO_OUTPUT"}),ui.error(outdatedError(current,decision.latest)),process.exit(1)}}var DIST_TAGS_URL,CACHE_TTL_MS,FETCH_TIMEOUT_MS,init_version_check=__esm({"src/cli/version-check.ts"(){init_dist();init_config();init_version();DIST_TAGS_URL="https://registry.npmjs.org/-/package/fimo/dist-tags",CACHE_TTL_MS=1440*60*1e3,FETCH_TIMEOUT_MS=3e3;__name(outdatedError,"outdatedError");__name(parseSemver,"parseSemver");__name(detectChannel,"detectChannel");__name(isEphemeralRun,"isEphemeralRun");__name(decideVersionGate,"decideVersionGate");__name(cachePath,"cachePath");__name(readCache,"readCache");__name(writeCache,"writeCache");__name(fetchDistTags,"fetchDistTags");__name(resolveDistTags,"resolveDistTags");__name(wantsJson,"wantsJson");__name(isPublishedInstall,"isPublishedInstall");__name(shouldSkipForArgs,"shouldSkipForArgs");__name(runVersionCheck,"runVersionCheck")}});function lazyFetchQs(against,extras={}){let params=new URLSearchParams;against&&params.set("against",against);for(let[k,v]of Object.entries(extras))params.set(k,v);return params.toString()}function throwUnauthorized(cfg,status){try{recordAuthFailure(cfg)}catch{}throw new UnauthorizedError(cfg.apiUrl,status)}async function throwPermissionDenied(cfg,response){let required=[];try{let body=await response.json();required=Array.isArray(body.required)?body.required:body.required?[body.required]:[]}catch{}throw new PermissionDeniedError(cfg.apiUrl,required)}async function fimoFetch(url,init){let headers=new Headers(init.headers),skipsVersionCheck=process.env.FIMO_SKIP_VERSION_CHECK==="1"||process.argv[2]==="git-credential";!headers.has(CLI_VERSION_HEADER)&&!skipsVersionCheck&&headers.set(CLI_VERSION_HEADER,getCliVersion());let response=await fetch(url,{...init,headers});if(response.status===426){let latest=response.headers.get(CLI_LATEST_HEADER);latest&&(ui.error(outdatedError(getCliVersion(),latest)),process.exit(1))}return response}function formatZodIssues(parsed){if(!parsed||typeof parsed!="object")return null;let error=parsed.error,issues=error&&typeof error=="object"&&"issues"in error?error.issues:void 0;return!Array.isArray(issues)||issues.length===0?null:issues.map(issue=>{let{path:path49,message}=issue;return`${Array.isArray(path49)&&path49.length>0?`${path49.join(".")}: `:""}${typeof message=="string"?message:"Invalid value"}`}).join("; ")}var ApiRequestError,UnauthorizedError,PermissionDeniedError,CLI_VERSION_HEADER,CLI_LATEST_HEADER,FIMO_ENV_HEADER,FimoApiClient,init_api=__esm({"src/cli/api.ts"(){init_dist();init_auth();init_config();init_version_check();init_version();__name(lazyFetchQs,"lazyFetchQs");ApiRequestError=class extends Error{static{__name(this,"ApiRequestError")}status;method;path;detail;constructor(method,path49,status,detail){super(`API ${method} ${path49} failed: ${status} ${detail}`),this.name="ApiRequestError",this.method=method,this.path=path49,this.status=status,this.detail=detail}},UnauthorizedError=class extends Error{static{__name(this,"UnauthorizedError")}apiUrl;status;constructor(apiUrl,status,message){super(message??`Session for ${apiUrl} expired or invalid (HTTP ${status}).`),this.name="UnauthorizedError",this.apiUrl=apiUrl,this.status=status}},PermissionDeniedError=class extends Error{static{__name(this,"PermissionDeniedError")}apiUrl;required;constructor(apiUrl,required=[],message){let detail=required.length?` Missing permission: ${required.join(", ")}.`:"";super(message??`You don't have permission to do this on ${apiUrl}.${detail}`),this.name="PermissionDeniedError",this.apiUrl=apiUrl,this.required=required}};__name(throwUnauthorized,"throwUnauthorized");__name(throwPermissionDenied,"throwPermissionDenied");CLI_VERSION_HEADER="X-Fimo-CLI-Version",CLI_LATEST_HEADER="X-Fimo-CLI-Latest",FIMO_ENV_HEADER="X-Fimo-Env";__name(fimoFetch,"fimoFetch");__name(formatZodIssues,"formatZodIssues");FimoApiClient=class _FimoApiClient{constructor(cfg=loadConfig()){this.cfg=cfg}static{__name(this,"FimoApiClient")}env;withEnv(env){let next2=new _FimoApiClient(this.cfg);return next2.env=env,next2}async formatError(response){let text3=await response.text();if(!text3)return String(response.status);try{let parsed=JSON.parse(text3);if(typeof parsed.message=="string"&&parsed.message.length>0)return parsed.message;if(typeof parsed.error=="string"&&parsed.error.length>0)return parsed.error;if(parsed.error&&typeof parsed.error=="object"&&"message"in parsed.error&&typeof parsed.error.message=="string")return parsed.error.message;let zodIssues=formatZodIssues(parsed);if(zodIssues)return zodIssues}catch{}return text3}resolveAuthToken(){return process.env.FIMO_API_TOKEN?.trim()||requireToken(this.cfg)}async request(path49,init={},opts={}){let token=this.resolveAuthToken(),headers=new Headers(init.headers);headers.set("Authorization",`Bearer ${token}`),init.body&&!headers.has("Content-Type")&&headers.set("Content-Type","application/json"),this.env&&!headers.has(FIMO_ENV_HEADER)&&headers.set(FIMO_ENV_HEADER,this.env);let response=await fimoFetch(`${this.cfg.apiUrl}${path49}`,{...init,headers});if(response.status===401&&throwUnauthorized(this.cfg,response.status),response.status===403&&!opts.allow403&&await throwPermissionDenied(this.cfg,response),!response.ok){let error=await this.formatError(response);throw new ApiRequestError(init.method??"GET",path49,response.status,error)}if(response.status!==204)return await response.json()}async rawRequest(path49,init={}){let token=this.resolveAuthToken(),headers=new Headers(init.headers);headers.set("Authorization",`Bearer ${token}`),this.env&&!headers.has(FIMO_ENV_HEADER)&&headers.set(FIMO_ENV_HEADER,this.env);let response=await fimoFetch(`${this.cfg.apiUrl}${path49}`,{...init,headers});if(response.status===401&&throwUnauthorized(this.cfg,response.status),response.status===403&&await throwPermissionDenied(this.cfg,response),!response.ok){let error=await this.formatError(response);throw new Error(`API ${init.method??"GET"} ${path49} failed: ${response.status} ${error}`)}return response}tenantPath(projectId,route){if(!this.env)throw new Error("FimoApiClient: tenant-scoped call requires an env. Use `client.withEnv(env)` before calling tenant CRUD methods.");return`/api/tenant/${projectId}/envs/${encodeURIComponent(this.env)}${route}`}projectEnvManagementPath(projectId,route){if(!this.env)throw new Error("FimoApiClient: env-scoped management call requires an env. Use `client.withEnv(env)` before calling env CRUD methods.");return`/api/management/projects/${projectId}/envs/${encodeURIComponent(this.env)}${route}`}async listModels(projectId,query={}){let params=new URLSearchParams;query.modality&&params.set("modality",query.modality);for(let t2 of query.tag??[])params.append("tag",t2);query.q&&params.set("q",query.q),query.category&&params.set("category",query.category);let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models${qs?`?${qs}`:""}`)).data}async getModel(projectId,key){try{return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models/${key}`)).data}catch(err){if(err instanceof ApiRequestError&&err.status===404)return null;throw err}}async estimateModel(projectId,key,options){return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models/estimate`,{method:"POST",body:JSON.stringify({model:key,options})})).data}async estimateGenerationTask(projectId,key,options){return(await this.request(this.tenantPath(projectId,"/assets/generate/estimate"),{method:"POST",body:JSON.stringify({task:key,options})})).data}async listOrganizations(){return(await this.request("/api/management/organizations")).data}async listOrganizationMembers(organizationId){return(await this.request(`/api/auth/organization/get-full-organization?organizationId=${encodeURIComponent(organizationId)}`))?.members??[]}async inviteOrganizationMember(input){return this.request("/api/auth/organization/invite-member",{method:"POST",body:JSON.stringify(input)})}async getCurrentSession(){return this.request("/api/auth/get-session")}async submitSupportIssue(input){return(await this.request("/api/support/issues",{method:"POST",body:JSON.stringify(input)})).data}async getReferralSummary(userId){return(await this.request(`/api/users/${encodeURIComponent(userId)}/referrals/summary`)).data}async listProjects(organizationId){return(await this.request(`/api/management/organizations/${encodeURIComponent(organizationId)}/projects`)).data}async publishProject(projectId){await this.request(`/api/management/projects/${projectId}/publish`,{method:"POST"})}async unpublishProject(projectId){await this.request(`/api/management/projects/${projectId}/unpublish`,{method:"POST"})}async createProject(input){return(await this.request("/api/management/projects",{method:"POST",body:JSON.stringify({...input,source:"cli"})})).data}async getProject(projectId){return(await this.request(`/api/management/projects/${projectId}`)).data}async getProjectCredits(projectId){return(await this.request(`/api/management/projects/${projectId}/billing/credits`)).data}async listProjectSecretEntries(projectId,opts={}){let qs=opts.kind?`?kind=${encodeURIComponent(opts.kind)}`:"";return(await this.request(`/api/management/projects/${projectId}/secrets${qs}`)).data}async setProjectSecretEntry(input){return(await this.request(`/api/management/projects/${input.projectId}/secrets/${encodeURIComponent(input.key)}`,{method:"PUT",body:JSON.stringify({kind:input.kind,value:input.value})})).data}async deleteProjectSecretEntry(projectId,key,kind){let qs=`?kind=${encodeURIComponent(kind)}`;await this.request(`/api/management/projects/${projectId}/secrets/${encodeURIComponent(key)}${qs}`,{method:"DELETE"})}async listProjectIntegrations(projectId){return(await this.request(`/api/management/projects/${projectId}/integrations`)).data}async getProjectIntegrationInfo(projectId,integrationKey){return(await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}/info`)).data}async getProjectIntegrationStatus(projectId,integrationKey){return(await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}/status`)).data}async enableProjectIntegration(input){let payload={...input.authMode?{authMode:input.authMode}:{},...input.connectionAlias?{connectionAlias:input.connectionAlias}:{}};return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}`,{method:"PUT",body:JSON.stringify(payload)})).data}async connectOrganizationIntegrationWithToken(input){return(await this.request(`/api/management/organizations/${encodeURIComponent(input.organizationId)}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST",body:JSON.stringify({...input.alias?{alias:input.alias}:{},token:input.token})})).data}async startOrganizationIntegrationConnect(input){return(await this.request(`/api/management/organizations/${encodeURIComponent(input.organizationId)}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST",body:JSON.stringify({})})).data}async switchProjectIntegrationAuth(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/auth`,{method:"PATCH",body:JSON.stringify({authMode:input.authMode})})).data}async disableProjectIntegration(projectId,integrationKey){await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}`,{method:"DELETE"})}async setProjectIntegrationCredential(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/credentials/${encodeURIComponent(input.credentialId)}`,{method:"PUT",body:JSON.stringify({value:input.value})})).data}async clearProjectIntegrationCredential(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/credentials/${encodeURIComponent(input.credentialId)}`,{method:"DELETE"})).data}async runProjectIntegrationTool(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/run`,{method:"POST",body:JSON.stringify(input.request)})).data}async startProjectIntegrationConnect(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST"})).data}async bindProjectChannel(projectId,request){return(await this.request(`/api/management/projects/${projectId}/channels/bind`,{method:"POST",body:JSON.stringify(request)})).data}async createSchedule(projectId,request){return(await this.request(`/api/management/projects/${projectId}/schedules`,{method:"POST",body:JSON.stringify(request)})).data}async listSchedules(projectId){return(await this.request(`/api/management/projects/${projectId}/schedules`)).data}async runSchedule(projectId,name){return(await this.request(`/api/management/projects/${projectId}/schedules/${encodeURIComponent(name)}/run`,{method:"POST"})).data}async deleteSchedule(projectId,name){await this.request(`/api/management/projects/${projectId}/schedules/${encodeURIComponent(name)}`,{method:"DELETE"})}async listEnvs(projectId,opts={}){let qs=opts.includeDeleted?"?includeDeleted=true":"";return(await this.request(`/api/management/projects/${projectId}/envs${qs}`)).data}async getEnv(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}`)).data}async createEnv(projectId,input){return(await this.request(`/api/management/projects/${projectId}/envs`,{method:"POST",body:JSON.stringify(input)})).data}async syncEnv(projectId,env,input={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sync`,{method:"POST",body:JSON.stringify(input)})).data}async deleteEnv(projectId,env){await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}`,{method:"DELETE"})}async getEnvDiff(projectId,env,opts={}){let params=new URLSearchParams;opts.against&&params.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&&params.set("surfaces",opts.surfaces.join(","));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff${qs?`?${qs}`:""}`)).data}async getEnvStatus(projectId,env,opts={}){let params=new URLSearchParams;opts.against&&params.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&&params.set("surfaces",opts.surfaces.join(","));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/status${qs?`?${qs}`:""}`)).data}async getCodeFileDiff(projectId,env,path49,opts={}){let qs=lazyFetchQs(opts.against,{path:path49});return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/code/file?${qs}`)).data}async getCodeConflictDetail(projectId,env,fromEnv,filePath){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/conflict/code?path=${encodeURIComponent(filePath)}`)).data}async getContentRowDiff(projectId,env,collection,rowId,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/content/${encodeURIComponent(collection)}/${encodeURIComponent(rowId)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getSchemaTypeDiff(projectId,env,typeName,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/schemas/${encodeURIComponent(typeName)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getAssetDiff(projectId,env,assetId,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/assets/${encodeURIComponent(assetId)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getTranslationRowDiff(projectId,env,locale,key,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/translations/${encodeURIComponent(locale)}/${encodeURIComponent(key)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getFormSchemaDiff(projectId,env,formName,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/forms/${encodeURIComponent(formName)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getActivationDiff(projectId,env,agentName,triggerIndex,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/activations/${encodeURIComponent(agentName)}/${triggerIndex}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async mergeEnv(projectId,env,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge`,{method:"POST",body:JSON.stringify(body)})).data}async resolveMerge(projectId,env,fromEnv,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve`,{method:"POST",body:JSON.stringify(body)})).data}async cancelMerge(projectId,env,mergeId){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/cancel`,{method:"POST",body:JSON.stringify({mergeId})})).data}async getMergeConflicts(projectId,env,fromEnv){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/conflicts`)).data}async putResolveDraft(projectId,env,fromEnv,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve/draft`,{method:"PUT",body:JSON.stringify(body)})).data}async deleteResolveDraft(projectId,env,fromEnv){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve/draft`,{method:"DELETE"})).data}async publishRelease(projectId,body){return(await this.request(`/api/management/projects/${projectId}/releases`,{method:"POST",body:JSON.stringify(body)})).data}async activateAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/activations`,{method:"POST",body:JSON.stringify(body)})).data}async deactivateAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/activations`,{method:"DELETE",body:JSON.stringify(body)})).data}async runAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/run`,{method:"POST",body:JSON.stringify(body)})).data}async listAgentSessions(projectId,opts={}){let params=new URLSearchParams;opts.agentName&&params.set("agent_name",opts.agentName),opts.env&&params.set("env",opts.env),opts.status&&params.set("status",opts.status),opts.limit!==void 0&&params.set("limit",String(opts.limit));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/agents/sessions${qs?`?${qs}`:""}`)).data}async getAgentSession(projectId,sessionId){return(await this.request(`/api/management/projects/${projectId}/agents/sessions/${encodeURIComponent(sessionId)}`)).data.session}async getFeatures(){return this.request("/api/features")}async inviteProjectUser(input){return{id:(await this.request(`/api/management/projects/${input.projectId}/invites`,{method:"POST",body:JSON.stringify({email:input.email,roleKey:input.roleKey})})).data.id}}async updateProjectSettings(projectId,settings){return(await this.request(`/api/management/projects/${projectId}/settings`,{method:"PUT",body:JSON.stringify(settings)})).data}async deleteProject(projectId){await this.request(`/api/management/projects/${projectId}`,{method:"DELETE",body:JSON.stringify({})})}async getGitRemote(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/git-remote`,{},{allow403:!0})).data}async getGitCredential(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/git-credential`,{},{allow403:!0})).data}async getPreviewUrl(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sandbox`)).data}async sandboxPull(projectId,onProgress,env,options={}){let query=options.noRestart?"?noRestart=true":"",response=await this.rawRequest(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sandbox/pull${query}`,{method:"POST",headers:{Accept:"text/event-stream"}});if(!response.body)throw new Error("Sandbox pull failed: empty response stream");let reader=response.body.getReader(),decoder=new TextDecoder,buffer="",errorMessage3=null,completed=!1;try{for(;;){let{value,done}=await reader.read();if(done)break;buffer+=decoder.decode(value,{stream:!0});let separatorIndex=buffer.indexOf(`
289
+ `)},"render"),hint:"Run `fimo skills get <name>` for a skill, or add `--ref <doc>` for a reference."})}function normalizeRef(ref){return ref.trim().replace(/\\/g,"/").replace(/^references\//,"").replace(/\.md$/,"")}function skillsGetCommand(name,options={}){let skills2=discoverBundledSkills(),skill=skills2.find(s=>s.name===name);if(!skill){ui.error({command:"skills get",code:"SKILL_NOT_FOUND",message:`Unknown skill "${name}".`,hint:skills2.length?`Available: ${skills2.map(s=>s.name).join(", ")}. Run \`fimo skills list\`.`:"No bundled skills found \u2014 try reinstalling fimo."});return}let targetPath,refId=null;if(options.ref){refId=normalizeRef(options.ref);let refsRoot=path8.resolve(skill.dir,"references"),candidate=path8.resolve(refsRoot,`${refId}.md`);if(!(candidate===refsRoot||candidate.startsWith(refsRoot+path8.sep))||!fs8.existsSync(candidate)){ui.error({command:"skills get",code:"SKILL_REF_NOT_FOUND",message:`Reference "${options.ref}" not found in skill "${skill.name}".`,hint:skill.refs.length?`Available refs: ${skill.refs.join(", ")}.`:"This skill has no reference docs."});return}targetPath=candidate}else targetPath=path8.join(skill.dir,"SKILL.md");let content2=fs8.readFileSync(targetPath,"utf8");ui.result({command:"skills get",data:{skill:skill.name,ref:refId,path:targetPath,content:content2},render:__name(()=>content2,"render")})}var SKILLS_ROOT,BUNDLED_SKILLS,BUNDLED_SKILL_NAMES,LEGACY_MIGRATION_SKILL_NAMES,DETECTABLE_FIMO_SKILL_NAMES,init_skills=__esm({"src/cli/commands/skills.ts"(){init_dist5();init_dist();init_dist6();init_config();init_project_skill();init_skill_version();init_agents();init_install_preview();init_scaffold();init_version();SKILLS_ROOT=path8.resolve(CLI_ROOT,"assets","skills"),BUNDLED_SKILLS=[{name:"fimo-cli",source:path8.join(SKILLS_ROOT,"fimo-cli")},{name:"fimo-studio",source:path8.join(SKILLS_ROOT,"fimo-studio")},{name:"fimo-migration",source:path8.join(SKILLS_ROOT,"fimo-migration")}],BUNDLED_SKILL_NAMES=BUNDLED_SKILLS.map(s=>s.name),LEGACY_MIGRATION_SKILL_NAMES=["fimo-migrate","fimo-source-migrate"],DETECTABLE_FIMO_SKILL_NAMES=[...BUNDLED_SKILL_NAMES,...LEGACY_MIGRATION_SKILL_NAMES];__name(isPrettyMode,"isPrettyMode");__name(runSkillsInstall,"runSkillsInstall");__name(renderSkillsInstall,"renderSkillsInstall");__name(skillsInstallCommand,"skillsInstallCommand");__name(skillsSyncCommand,"skillsSyncCommand");__name(refreshInstalledFimoSkills,"refreshInstalledFimoSkills");__name(detectAgentsWithFimoSkills,"detectAgentsWithFimoSkills");__name(removeDirIfExists,"removeDirIfExists");__name(removeGlobalSkillDirs,"removeGlobalSkillDirs");__name(hasGlobalSkillInstalled,"hasGlobalSkillInstalled");__name(removeCanonicalSkillDirs,"removeCanonicalSkillDirs");__name(removeLegacyMigrationSkills,"removeLegacyMigrationSkills");__name(skillsUninstallCommand,"skillsUninstallCommand");__name(listReferenceDocs,"listReferenceDocs");__name(discoverBundledSkills,"discoverBundledSkills");__name(firstLine,"firstLine");__name(skillsListCommand,"skillsListCommand");__name(normalizeRef,"normalizeRef");__name(skillsGetCommand,"skillsGetCommand")}});import fs9 from"node:fs";import os from"node:os";import path9 from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";function getCliVersion(){try{let raw=fs9.readFileSync(PACKAGE_JSON_PATH,"utf8");return JSON.parse(raw).version??"0.0.0"}catch{return"0.0.0"}}function getMarkerPath(){let xdgConfigHome2=process.env.XDG_CONFIG_HOME?.trim(),configDir=xdgConfigHome2||path9.join(os.homedir(),".config");return path9.join(configDir,"fimo","last-version")}function readMarker(){try{let raw=fs9.readFileSync(getMarkerPath(),"utf8").trim();return raw.length>0?raw:null}catch{return null}}function writeMarker(version){let markerPath=getMarkerPath();fs9.mkdirSync(path9.dirname(markerPath),{recursive:!0}),fs9.writeFileSync(markerPath,version)}async function refreshSkillsIfVersionChanged(){let currentVersion=getCliVersion(),previousVersion=readMarker();if(previousVersion===null){try{writeMarker(currentVersion)}catch{}return}if(previousVersion!==currentVersion){try{let result=await refreshInstalledFimoSkills();for(let failure of result.failures)console.error(`[fimo] Failed to refresh ${failure.skill} for ${failure.agent}: ${failure.error}`)}catch(err){console.error(`[fimo] Skill refresh failed: ${err instanceof Error?err.message:String(err)}`)}try{writeMarker(currentVersion)}catch{}}}var THIS_FILE3,CLI_ROOT3,PACKAGE_JSON_PATH,init_version=__esm({"src/cli/version.ts"(){init_skills();THIS_FILE3=fileURLToPath4(import.meta.url),CLI_ROOT3=path9.resolve(path9.dirname(THIS_FILE3),"..",".."),PACKAGE_JSON_PATH=path9.join(CLI_ROOT3,"package.json");__name(getCliVersion,"getCliVersion");__name(getMarkerPath,"getMarkerPath");__name(readMarker,"readMarker");__name(writeMarker,"writeMarker");__name(refreshSkillsIfVersionChanged,"refreshSkillsIfVersionChanged")}});function lazyFetchQs(against,extras={}){let params=new URLSearchParams;against&&params.set("against",against);for(let[k,v]of Object.entries(extras))params.set(k,v);return params.toString()}function throwUnauthorized(cfg,status){try{recordAuthFailure(cfg)}catch{}throw new UnauthorizedError(cfg.apiUrl,status)}async function throwPermissionDenied(cfg,response){let required=[];try{let body=await response.json();required=Array.isArray(body.required)?body.required:body.required?[body.required]:[]}catch{}throw new PermissionDeniedError(cfg.apiUrl,required)}async function fimoFetch(url,init){let headers=new Headers(init.headers);headers.delete(CLI_VERSION_HEADER),headers.delete(CLI_AUTO_UPGRADE_HEADER);let canAutoUpgrade=process.argv[2]!=="git-credential"&&autoUpgradeEnabled();canAutoUpgrade&&(headers.set(CLI_VERSION_HEADER,getCliVersion()),headers.set(CLI_AUTO_UPGRADE_HEADER,"1"));let response=await fetch(url,{...init,headers});if(canAutoUpgrade&&response.status===426){let latest=response.headers.get(CLI_LATEST_HEADER);if(latest){await autoUpgradeGlobal(latest)||ui.warn({command:process.argv[2]??"fimo",message:`Could not upgrade to ${latest}; continuing with the current command.`});let retryHeaders=new Headers(init.headers);return retryHeaders.delete(CLI_VERSION_HEADER),retryHeaders.delete(CLI_AUTO_UPGRADE_HEADER),fetch(url,{...init,headers:retryHeaders})}}return response}function formatZodIssues(parsed){if(!parsed||typeof parsed!="object")return null;let error=parsed.error,issues=error&&typeof error=="object"&&"issues"in error?error.issues:void 0;return!Array.isArray(issues)||issues.length===0?null:issues.map(issue=>{let{path:path49,message}=issue;return`${Array.isArray(path49)&&path49.length>0?`${path49.join(".")}: `:""}${typeof message=="string"?message:"Invalid value"}`}).join("; ")}var ApiRequestError,UnauthorizedError,PermissionDeniedError,CLI_VERSION_HEADER,CLI_LATEST_HEADER,CLI_AUTO_UPGRADE_HEADER,FIMO_ENV_HEADER,FimoApiClient,init_api=__esm({"src/cli/api.ts"(){init_dist();init_auth();init_auto_upgrade();init_config();init_version();__name(lazyFetchQs,"lazyFetchQs");ApiRequestError=class extends Error{static{__name(this,"ApiRequestError")}status;method;path;detail;constructor(method,path49,status,detail){super(`API ${method} ${path49} failed: ${status} ${detail}`),this.name="ApiRequestError",this.method=method,this.path=path49,this.status=status,this.detail=detail}},UnauthorizedError=class extends Error{static{__name(this,"UnauthorizedError")}apiUrl;status;constructor(apiUrl,status,message){super(message??`Session for ${apiUrl} expired or invalid (HTTP ${status}).`),this.name="UnauthorizedError",this.apiUrl=apiUrl,this.status=status}},PermissionDeniedError=class extends Error{static{__name(this,"PermissionDeniedError")}apiUrl;required;constructor(apiUrl,required=[],message){let detail=required.length?` Missing permission: ${required.join(", ")}.`:"";super(message??`You don't have permission to do this on ${apiUrl}.${detail}`),this.name="PermissionDeniedError",this.apiUrl=apiUrl,this.required=required}};__name(throwUnauthorized,"throwUnauthorized");__name(throwPermissionDenied,"throwPermissionDenied");CLI_VERSION_HEADER="X-Fimo-CLI-Version",CLI_LATEST_HEADER="X-Fimo-CLI-Latest",CLI_AUTO_UPGRADE_HEADER="X-Fimo-CLI-Auto-Upgrade",FIMO_ENV_HEADER="X-Fimo-Env";__name(fimoFetch,"fimoFetch");__name(formatZodIssues,"formatZodIssues");FimoApiClient=class _FimoApiClient{constructor(cfg=loadConfig()){this.cfg=cfg}static{__name(this,"FimoApiClient")}env;withEnv(env){let next2=new _FimoApiClient(this.cfg);return next2.env=env,next2}async formatError(response){let text3=await response.text();if(!text3)return String(response.status);try{let parsed=JSON.parse(text3);if(typeof parsed.message=="string"&&parsed.message.length>0)return parsed.message;if(typeof parsed.error=="string"&&parsed.error.length>0)return parsed.error;if(parsed.error&&typeof parsed.error=="object"&&"message"in parsed.error&&typeof parsed.error.message=="string")return parsed.error.message;let zodIssues=formatZodIssues(parsed);if(zodIssues)return zodIssues}catch{}return text3}resolveAuthToken(){return process.env.FIMO_API_TOKEN?.trim()||requireToken(this.cfg)}async request(path49,init={},opts={}){let token=this.resolveAuthToken(),headers=new Headers(init.headers);headers.set("Authorization",`Bearer ${token}`),init.body&&!headers.has("Content-Type")&&headers.set("Content-Type","application/json"),this.env&&!headers.has(FIMO_ENV_HEADER)&&headers.set(FIMO_ENV_HEADER,this.env);let response=await fimoFetch(`${this.cfg.apiUrl}${path49}`,{...init,headers});if(response.status===401&&throwUnauthorized(this.cfg,response.status),response.status===403&&!opts.allow403&&await throwPermissionDenied(this.cfg,response),!response.ok){let error=await this.formatError(response);throw new ApiRequestError(init.method??"GET",path49,response.status,error)}if(response.status!==204)return await response.json()}async rawRequest(path49,init={}){let token=this.resolveAuthToken(),headers=new Headers(init.headers);headers.set("Authorization",`Bearer ${token}`),this.env&&!headers.has(FIMO_ENV_HEADER)&&headers.set(FIMO_ENV_HEADER,this.env);let response=await fimoFetch(`${this.cfg.apiUrl}${path49}`,{...init,headers});if(response.status===401&&throwUnauthorized(this.cfg,response.status),response.status===403&&await throwPermissionDenied(this.cfg,response),!response.ok){let error=await this.formatError(response);throw new Error(`API ${init.method??"GET"} ${path49} failed: ${response.status} ${error}`)}return response}tenantPath(projectId,route){if(!this.env)throw new Error("FimoApiClient: tenant-scoped call requires an env. Use `client.withEnv(env)` before calling tenant CRUD methods.");return`/api/tenant/${projectId}/envs/${encodeURIComponent(this.env)}${route}`}projectEnvManagementPath(projectId,route){if(!this.env)throw new Error("FimoApiClient: env-scoped management call requires an env. Use `client.withEnv(env)` before calling env CRUD methods.");return`/api/management/projects/${projectId}/envs/${encodeURIComponent(this.env)}${route}`}async listModels(projectId,query={}){let params=new URLSearchParams;query.modality&&params.set("modality",query.modality);for(let t2 of query.tag??[])params.append("tag",t2);query.q&&params.set("q",query.q),query.category&&params.set("category",query.category);let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models${qs?`?${qs}`:""}`)).data}async getModel(projectId,key){try{return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models/${key}`)).data}catch(err){if(err instanceof ApiRequestError&&err.status===404)return null;throw err}}async estimateModel(projectId,key,options){return(await this.request(`/api/management/projects/${projectId}/integrations/fal/models/estimate`,{method:"POST",body:JSON.stringify({model:key,options})})).data}async estimateGenerationTask(projectId,key,options){return(await this.request(this.tenantPath(projectId,"/assets/generate/estimate"),{method:"POST",body:JSON.stringify({task:key,options})})).data}async listOrganizations(){return(await this.request("/api/management/organizations")).data}async listOrganizationMembers(organizationId){return(await this.request(`/api/auth/organization/get-full-organization?organizationId=${encodeURIComponent(organizationId)}`))?.members??[]}async inviteOrganizationMember(input){return this.request("/api/auth/organization/invite-member",{method:"POST",body:JSON.stringify(input)})}async getCurrentSession(){return this.request("/api/auth/get-session")}async submitSupportIssue(input){return(await this.request("/api/support/issues",{method:"POST",body:JSON.stringify(input)})).data}async getReferralSummary(userId){return(await this.request(`/api/users/${encodeURIComponent(userId)}/referrals/summary`)).data}async listProjects(organizationId){return(await this.request(`/api/management/organizations/${encodeURIComponent(organizationId)}/projects`)).data}async publishProject(projectId){await this.request(`/api/management/projects/${projectId}/publish`,{method:"POST"})}async unpublishProject(projectId){await this.request(`/api/management/projects/${projectId}/unpublish`,{method:"POST"})}async createProject(input){return(await this.request("/api/management/projects",{method:"POST",body:JSON.stringify({...input,source:"cli"})})).data}async getProject(projectId){return(await this.request(`/api/management/projects/${projectId}`)).data}async getProjectCredits(projectId){return(await this.request(`/api/management/projects/${projectId}/billing/credits`)).data}async listProjectSecretEntries(projectId,opts={}){let qs=opts.kind?`?kind=${encodeURIComponent(opts.kind)}`:"";return(await this.request(`/api/management/projects/${projectId}/secrets${qs}`)).data}async setProjectSecretEntry(input){return(await this.request(`/api/management/projects/${input.projectId}/secrets/${encodeURIComponent(input.key)}`,{method:"PUT",body:JSON.stringify({kind:input.kind,value:input.value})})).data}async deleteProjectSecretEntry(projectId,key,kind){let qs=`?kind=${encodeURIComponent(kind)}`;await this.request(`/api/management/projects/${projectId}/secrets/${encodeURIComponent(key)}${qs}`,{method:"DELETE"})}async listProjectIntegrations(projectId){return(await this.request(`/api/management/projects/${projectId}/integrations`)).data}async getProjectIntegrationInfo(projectId,integrationKey){return(await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}/info`)).data}async getProjectIntegrationStatus(projectId,integrationKey){return(await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}/status`)).data}async enableProjectIntegration(input){let payload={...input.authMode?{authMode:input.authMode}:{},...input.connectionAlias?{connectionAlias:input.connectionAlias}:{}};return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}`,{method:"PUT",body:JSON.stringify(payload)})).data}async connectOrganizationIntegrationWithToken(input){return(await this.request(`/api/management/organizations/${encodeURIComponent(input.organizationId)}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST",body:JSON.stringify({...input.alias?{alias:input.alias}:{},token:input.token})})).data}async startOrganizationIntegrationConnect(input){return(await this.request(`/api/management/organizations/${encodeURIComponent(input.organizationId)}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST",body:JSON.stringify({})})).data}async switchProjectIntegrationAuth(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/auth`,{method:"PATCH",body:JSON.stringify({authMode:input.authMode})})).data}async disableProjectIntegration(projectId,integrationKey){await this.request(`/api/management/projects/${projectId}/integrations/${encodeURIComponent(integrationKey)}`,{method:"DELETE"})}async setProjectIntegrationCredential(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/credentials/${encodeURIComponent(input.credentialId)}`,{method:"PUT",body:JSON.stringify({value:input.value})})).data}async clearProjectIntegrationCredential(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/credentials/${encodeURIComponent(input.credentialId)}`,{method:"DELETE"})).data}async runProjectIntegrationTool(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/run`,{method:"POST",body:JSON.stringify(input.request)})).data}async startProjectIntegrationConnect(input){return(await this.request(`/api/management/projects/${input.projectId}/integrations/${encodeURIComponent(input.integrationKey)}/connect`,{method:"POST"})).data}async bindProjectChannel(projectId,request){return(await this.request(`/api/management/projects/${projectId}/channels/bind`,{method:"POST",body:JSON.stringify(request)})).data}async createSchedule(projectId,request){return(await this.request(`/api/management/projects/${projectId}/schedules`,{method:"POST",body:JSON.stringify(request)})).data}async listSchedules(projectId){return(await this.request(`/api/management/projects/${projectId}/schedules`)).data}async runSchedule(projectId,name){return(await this.request(`/api/management/projects/${projectId}/schedules/${encodeURIComponent(name)}/run`,{method:"POST"})).data}async deleteSchedule(projectId,name){await this.request(`/api/management/projects/${projectId}/schedules/${encodeURIComponent(name)}`,{method:"DELETE"})}async listEnvs(projectId,opts={}){let qs=opts.includeDeleted?"?includeDeleted=true":"";return(await this.request(`/api/management/projects/${projectId}/envs${qs}`)).data}async getEnv(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}`)).data}async createEnv(projectId,input){return(await this.request(`/api/management/projects/${projectId}/envs`,{method:"POST",body:JSON.stringify(input)})).data}async syncEnv(projectId,env,input={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sync`,{method:"POST",body:JSON.stringify(input)})).data}async deleteEnv(projectId,env){await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}`,{method:"DELETE"})}async getEnvDiff(projectId,env,opts={}){let params=new URLSearchParams;opts.against&&params.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&&params.set("surfaces",opts.surfaces.join(","));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff${qs?`?${qs}`:""}`)).data}async getEnvStatus(projectId,env,opts={}){let params=new URLSearchParams;opts.against&&params.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&&params.set("surfaces",opts.surfaces.join(","));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/status${qs?`?${qs}`:""}`)).data}async getCodeFileDiff(projectId,env,path49,opts={}){let qs=lazyFetchQs(opts.against,{path:path49});return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/code/file?${qs}`)).data}async getCodeConflictDetail(projectId,env,fromEnv,filePath){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/conflict/code?path=${encodeURIComponent(filePath)}`)).data}async getContentRowDiff(projectId,env,collection,rowId,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/content/${encodeURIComponent(collection)}/${encodeURIComponent(rowId)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getSchemaTypeDiff(projectId,env,typeName,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/schemas/${encodeURIComponent(typeName)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getAssetDiff(projectId,env,assetId,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/assets/${encodeURIComponent(assetId)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getTranslationRowDiff(projectId,env,locale,key,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/translations/${encodeURIComponent(locale)}/${encodeURIComponent(key)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getFormSchemaDiff(projectId,env,formName,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/forms/${encodeURIComponent(formName)}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async getActivationDiff(projectId,env,agentName,triggerIndex,opts={}){let qs=lazyFetchQs(opts.against),path49=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/activations/${encodeURIComponent(agentName)}/${triggerIndex}`;return(await this.request(qs?`${path49}?${qs}`:path49)).data}async mergeEnv(projectId,env,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge`,{method:"POST",body:JSON.stringify(body)})).data}async resolveMerge(projectId,env,fromEnv,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve`,{method:"POST",body:JSON.stringify(body)})).data}async cancelMerge(projectId,env,mergeId){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/cancel`,{method:"POST",body:JSON.stringify({mergeId})})).data}async getMergeConflicts(projectId,env,fromEnv){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/conflicts`)).data}async putResolveDraft(projectId,env,fromEnv,body){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve/draft`,{method:"PUT",body:JSON.stringify(body)})).data}async deleteResolveDraft(projectId,env,fromEnv){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/merge/${encodeURIComponent(fromEnv)}/resolve/draft`,{method:"DELETE"})).data}async publishRelease(projectId,body){return(await this.request(`/api/management/projects/${projectId}/releases`,{method:"POST",body:JSON.stringify(body)})).data}async activateAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/activations`,{method:"POST",body:JSON.stringify(body)})).data}async deactivateAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/activations`,{method:"DELETE",body:JSON.stringify(body)})).data}async runAgent(projectId,env,agentName,body={}){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/agents/${encodeURIComponent(agentName)}/run`,{method:"POST",body:JSON.stringify(body)})).data}async listAgentSessions(projectId,opts={}){let params=new URLSearchParams;opts.agentName&&params.set("agent_name",opts.agentName),opts.env&&params.set("env",opts.env),opts.status&&params.set("status",opts.status),opts.limit!==void 0&&params.set("limit",String(opts.limit));let qs=params.toString();return(await this.request(`/api/management/projects/${projectId}/agents/sessions${qs?`?${qs}`:""}`)).data}async getAgentSession(projectId,sessionId){return(await this.request(`/api/management/projects/${projectId}/agents/sessions/${encodeURIComponent(sessionId)}`)).data.session}async getFeatures(){return this.request("/api/features")}async inviteProjectUser(input){return{id:(await this.request(`/api/management/projects/${input.projectId}/invites`,{method:"POST",body:JSON.stringify({email:input.email,roleKey:input.roleKey})})).data.id}}async updateProjectSettings(projectId,settings){return(await this.request(`/api/management/projects/${projectId}/settings`,{method:"PUT",body:JSON.stringify(settings)})).data}async deleteProject(projectId){await this.request(`/api/management/projects/${projectId}`,{method:"DELETE",body:JSON.stringify({})})}async getGitRemote(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/git-remote`,{},{allow403:!0})).data}async getGitCredential(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/git-credential`,{},{allow403:!0})).data}async getPreviewUrl(projectId,env){return(await this.request(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sandbox`)).data}async sandboxPull(projectId,onProgress,env,options={}){let query=options.noRestart?"?noRestart=true":"",response=await this.rawRequest(`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/sandbox/pull${query}`,{method:"POST",headers:{Accept:"text/event-stream"}});if(!response.body)throw new Error("Sandbox pull failed: empty response stream");let reader=response.body.getReader(),decoder=new TextDecoder,buffer="",errorMessage3=null,completed=!1;try{for(;;){let{value,done}=await reader.read();if(done)break;buffer+=decoder.decode(value,{stream:!0});let separatorIndex=buffer.indexOf(`
293
290
 
294
291
  `);for(;separatorIndex!==-1;){let rawEvent=buffer.slice(0,separatorIndex);buffer=buffer.slice(separatorIndex+2),separatorIndex=buffer.indexOf(`
295
292
 
@@ -435,7 +432,7 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
435
432
  `)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
436
433
  `,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent2){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let prev2=getPrevProps(parent2),start=getFirstKeyStartProps(prev2);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev2=getPrevProps(parent2),start=getFirstKeyStartProps(prev2);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){return this.type!=="comment"||this.indent<=indent?!1:start.every(st2=>st2.type==="newline"||st2.type==="space")}*documentEnd(docEnd){this.type!=="doc-mode"&&(docEnd.end?docEnd.end.push(this.sourceToken):docEnd.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:token.end?token.end.push(this.sourceToken):token.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};exports2.Parser=Parser2}});var require_public_api2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/public-api.js"(exports2){"use strict";var composer=require_composer2(),Document2=require_Document2(),errors=require_errors2(),log=require_log2(),identity2=require_identity2(),lineCounter=require_line_counter2(),parser=require_parser3();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}__name(parseOptions,"parseOptions");function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc of docs)doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2));return docs.length>0?docs:Object.assign([],{empty:!0},composer$1.streamInfo())}__name(parseAllDocuments,"parseAllDocuments");function parseDocument2(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc)doc=_doc;else if(doc.options.logLevel!=="silent"){doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return prettyErrors&&lineCounter2&&(doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2))),doc}__name(parseDocument2,"parseDocument");function parse12(src,reviver,options){let _reviver;typeof reviver=="function"?_reviver=reviver:options===void 0&&reviver&&typeof reviver=="object"&&(options=reviver);let doc=parseDocument2(src,options);if(!doc)return null;if(doc.warnings.forEach(warning=>log.warn(doc.options.logLevel,warning)),doc.errors.length>0){if(doc.options.logLevel!=="silent")throw doc.errors[0];doc.errors=[]}return doc.toJS(Object.assign({reviver:_reviver},options))}__name(parse12,"parse");function stringify4(value,replacer,options){let _replacer=null;if(typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer),typeof options=="string"&&(options=options.length),typeof options=="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}return identity2.isDocument(value)&&!_replacer?value.toString(options):new Document2.Document(value,_replacer,options).toString(options)}__name(stringify4,"stringify");exports2.parse=parse12;exports2.parseAllDocuments=parseAllDocuments;exports2.parseDocument=parseDocument2;exports2.stringify=stringify4}});var require_dist2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/index.js"(exports2){"use strict";var composer=require_composer2(),Document2=require_Document2(),Schema=require_Schema2(),errors=require_errors2(),Alias=require_Alias2(),identity2=require_identity2(),Pair=require_Pair2(),Scalar=require_Scalar2(),YAMLMap=require_YAMLMap2(),YAMLSeq=require_YAMLSeq2(),cst=require_cst2(),lexer=require_lexer2(),lineCounter=require_line_counter2(),parser=require_parser3(),publicApi=require_public_api2(),visit2=require_visit2();exports2.Composer=composer.Composer;exports2.Document=Document2.Document;exports2.Schema=Schema.Schema;exports2.YAMLError=errors.YAMLError;exports2.YAMLParseError=errors.YAMLParseError;exports2.YAMLWarning=errors.YAMLWarning;exports2.Alias=Alias.Alias;exports2.isAlias=identity2.isAlias;exports2.isCollection=identity2.isCollection;exports2.isDocument=identity2.isDocument;exports2.isMap=identity2.isMap;exports2.isNode=identity2.isNode;exports2.isPair=identity2.isPair;exports2.isScalar=identity2.isScalar;exports2.isSeq=identity2.isSeq;exports2.Pair=Pair.Pair;exports2.Scalar=Scalar.Scalar;exports2.YAMLMap=YAMLMap.YAMLMap;exports2.YAMLSeq=YAMLSeq.YAMLSeq;exports2.CST=cst;exports2.Lexer=lexer.Lexer;exports2.LineCounter=lineCounter.LineCounter;exports2.Parser=parser.Parser;exports2.parse=publicApi.parse;exports2.parseAllDocuments=publicApi.parseAllDocuments;exports2.parseDocument=publicApi.parseDocument;exports2.stringify=publicApi.stringify;exports2.visit=visit2.visit;exports2.visitAsync=visit2.visitAsync}});import fs10 from"node:fs";import path11 from"node:path";function loadProjectSettings(cwd){let settingsPath=path11.join(cwd,".fimo.settings.json");if(!fs10.existsSync(settingsPath))throw new Error("You are not in a Fimo project. Run `fimo create` to start one, or cd into a linked project.");return JSON.parse(fs10.readFileSync(settingsPath,"utf-8"))}function findProjectRoot(start){let dir=path11.resolve(start);for(;;){if(fs10.existsSync(path11.join(dir,".fimo.settings.json")))return dir;let parent2=path11.dirname(dir);if(parent2===dir)return null;dir=parent2}}function resolveProjectCwd(cwdOption){let start=path11.resolve(cwdOption??process.cwd());return findProjectRoot(start)??start}var init_project=__esm({"src/cli/utils/project.ts"(){__name(loadProjectSettings,"loadProjectSettings");__name(findProjectRoot,"findProjectRoot");__name(resolveProjectCwd,"resolveProjectCwd")}});function colorEnabled(opts={}){if(opts.forceDisable)return!1;let env=opts.env??process.env;return env.NO_COLOR&&env.NO_COLOR.length>0?!1:env.FORCE_COLOR&&env.FORCE_COLOR!=="0"&&env.FORCE_COLOR!=="false"?!0:(opts.isTTY??process.stdout.isTTY??!1)===!0}function makeColorPalette(opts={}){let on=colorEnabled(opts),wrap2=__name(style=>s=>on?`${ANSI[style]}${s}${ANSI.reset}`:s,"wrap");return{enabled:on,bold:wrap2("bold"),dim:wrap2("dim"),red:wrap2("red"),green:wrap2("green"),yellow:wrap2("yellow"),blue:wrap2("blue"),magenta:wrap2("magenta"),cyan:wrap2("cyan"),gray:wrap2("gray")}}var ANSI,palette,init_color=__esm({"src/cli/utils/format/color.ts"(){ANSI={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",gray:"\x1B[90m"};__name(colorEnabled,"colorEnabled");__name(makeColorPalette,"makeColorPalette");palette=makeColorPalette()}});function isCliAuthError(err){return err instanceof NotAuthenticatedError||err instanceof UnauthorizedError||err instanceof PermissionDeniedError}function rethrowCliAuthError(err,beforeThrow){if(isCliAuthError(err))throw beforeThrow?.(err),err}function retryCommand(args=process.argv.slice(2)){return["fimo",...args].map(formatShellArg).join(" ")}function formatCliAuthError(err,opts={}){let p2=opts.palette??palette,command=retryCommand(opts.args);if(err instanceof PermissionDeniedError)return[`${p2.red("\u2717")} You don't have permission to run this command.`,"",err.required.length?` Missing permission: ${p2.bold(err.required.join(", "))}`:" Your role on this project does not allow this action."," Ask a project admin for access, or use an account with a higher role.","",p2.dim(` Backend: ${err.apiUrl}`)].join(`
437
434
  `);let expired=err instanceof UnauthorizedError,intro=expired?"Your Fimo session is expired or invalid.":"You're not signed in to Fimo.",loginVerb=expired?"refresh your session":"sign in";return[`${p2.red("\u2717")} ${intro}`,"",` Run this to ${loginVerb}:`,` ${p2.bold("fimo login")}`,""," Then retry:",` ${p2.bold(command)}`,"",p2.dim(` Backend: ${err.apiUrl}`)].join(`
438
- `)}function renderCliAuthError(err,opts={}){console.error(formatCliAuthError(err,opts))}function formatShellArg(arg){return/^[A-Za-z0-9_/:=.,@%+-]+$/.test(arg)?arg:`'${arg.replace(/'/g,"'\\''")}'`}var init_auth_errors=__esm({"src/cli/utils/auth-errors.ts"(){init_api();init_auth();init_color();__name(isCliAuthError,"isCliAuthError");__name(rethrowCliAuthError,"rethrowCliAuthError");__name(retryCommand,"retryCommand");__name(formatCliAuthError,"formatCliAuthError");__name(renderCliAuthError,"renderCliAuthError");__name(formatShellArg,"formatShellArg")}});import{z as z7}from"zod";function filterUnknownProperties(data2,schema){if(data2==null)return data2;if(schema instanceof z7.ZodOptional||schema instanceof z7.ZodNullable||schema instanceof z7.ZodDefault)return filterUnknownProperties(data2,schema.unwrap());if(schema instanceof z7.ZodArray){if(!Array.isArray(data2))return data2;let itemSchema=schema.unwrap();return data2.map(item=>filterUnknownProperties(item,itemSchema))}if(schema instanceof z7.ZodDiscriminatedUnion){if(typeof data2!="object"||data2===null)return data2;let unionSchema=schema,discriminator=unionSchema.def.discriminator,discriminatorValue=data2[discriminator],matchingSchema=unionSchema.options.find(option=>{let discriminatorField=option.shape[discriminator];return discriminatorField instanceof z7.ZodLiteral?discriminatorField.def.values.includes(discriminatorValue):!1});return matchingSchema?filterUnknownProperties(data2,matchingSchema):data2}if(schema instanceof z7.ZodObject){if(typeof data2!="object")return data2;let shape=schema.shape,result={};for(let key in shape)if(Object.prototype.hasOwnProperty.call(data2,key)){let fieldSchema=shape[key],fieldValue=data2[key];result[key]=filterUnknownProperties(fieldValue,fieldSchema)}if(schema.def.catchall instanceof z7.ZodUnknown)for(let[key,value]of Object.entries(data2))key in shape||(result[key]=value);return result}return data2}function createObjectDTO(schema){return{schema,from(data2){let filtered=filterUnknownProperties(data2,schema);return schema.parse(filtered)},fromList(data2){return data2.map(item=>this.from(item))},safeParse(data2){let filtered=filterUnknownProperties(data2,schema);return schema.safeParse(filtered)},partial(){let partialSchema=schema.partial();return createObjectDTO(partialSchema)},pick(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),picked=schema.pick(mask);return createObjectDTO(picked)},omit(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),omitted=schema.omit(mask);return createObjectDTO(omitted)}}}function createDiscriminatedUnionDTO(schema){return{schema,from(data2){let filtered=filterUnknownProperties(data2,schema);return schema.parse(filtered)},fromList(data2){return data2.map(item=>this.from(item))},safeParse(data2){let filtered=filterUnknownProperties(data2,schema);return schema.safeParse(filtered)}}}function createDTO(schema){if(schema instanceof z7.ZodObject)return createObjectDTO(schema);if(schema instanceof z7.ZodDiscriminatedUnion)return createDiscriminatedUnionDTO(schema);throw new Error(`Unsupported schema type: ${schema.constructor.name}. createDTO supports ZodObject and ZodDiscriminatedUnion.`)}var init_create_dto=__esm({"../../packages/api-contracts/dist/esm/utils/create-dto.js"(){"use strict";__name(filterUnknownProperties,"filterUnknownProperties");__name(createObjectDTO,"createObjectDTO");__name(createDiscriminatedUnionDTO,"createDiscriminatedUnionDTO");__name(createDTO,"createDTO")}});import{z as z8}from"zod";var createResponseSchema,init_response=__esm({"../../packages/api-contracts/dist/esm/utils/response.js"(){"use strict";createResponseSchema=__name(dataSchema=>z8.object({data:dataSchema}),"createResponseSchema")}});import{z as z9}from"zod";var PaginationQuerySchema,init_pagination=__esm({"../../packages/api-contracts/dist/esm/utils/pagination.js"(){"use strict";PaginationQuerySchema=z9.object({page:z9.coerce.number().int().positive().default(1),limit:z9.coerce.number().int().positive().max(100).default(20)})}});import{z as z10}from"zod";var CommonSchemas,BaseEntitySchema,ProjectRoleKeySchema,ProjectRoleKeyWithSystemSchema,ProjectPrincipalTypeSchema,ProjectVisibilitySchema,ProjectStatusSchema,ProjectInviteStatusSchema,PublicationStatusSchema,OrganizationRoleSchema,AssetTypeSchema,TemplateCodeSchema,FieldTypeSchema,RESERVED_CONTENT_FIELD_NAMES,CONTENT_TYPE_NAME_PATTERN,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION,CONTENT_FIELD_NAME_PATTERN,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION,init_common=__esm({"../../packages/api-contracts/dist/esm/types/common.js"(){"use strict";CommonSchemas={timestamp:z10.coerce.date(),positiveInt:z10.number().int().positive(),nonNegativeInt:z10.number().int().nonnegative()},BaseEntitySchema=z10.object({id:z10.uuid(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),ProjectRoleKeySchema=z10.enum(["full","edit","comment","view"]),ProjectRoleKeyWithSystemSchema=z10.enum(["full","edit","comment","view","agent"]),ProjectPrincipalTypeSchema=z10.enum(["user","org","orgRole","public","email"]),ProjectVisibilitySchema=z10.enum(["public","private"]),ProjectStatusSchema=z10.enum(["creating","forking","start_server","created","failed"]),ProjectInviteStatusSchema=z10.enum(["pending","accepted","revoked","expired"]),PublicationStatusSchema=z10.enum(["idle","publishing","published","failed","unpublished"]),OrganizationRoleSchema=z10.enum(["owner","admin","member"]),AssetTypeSchema=z10.enum(["file","folder"]),TemplateCodeSchema=z10.enum(["Free","Premium"]),FieldTypeSchema=z10.enum(["string","richtext","media","number","boolean","date","json","reference"]),RESERVED_CONTENT_FIELD_NAMES=["id","entryId","documentId","slug","locale","createdAt","updatedAt","__fimo"],CONTENT_TYPE_NAME_PATTERN=/^[A-Za-z]\w*$/,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter",CONTENT_FIELD_NAME_PATTERN=/^[A-Za-z_]\w*$/,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter or underscore"}});var ATTACHMENT_TYPES,ATTACHMENT_MIME_TYPES,ATTACHMENT_IMAGE_MIME_TYPES,ATTACHMENT_DOCUMENT_MIME_TYPES,ATTACHMENT_ACCEPT_EXTENSIONS,ATTACHMENT_ACCEPT_STRING,ATTACHMENT_DROPZONE_ACCEPT,init_attachments=__esm({"../../packages/api-contracts/dist/esm/types/attachments.js"(){"use strict";ATTACHMENT_TYPES=[{mime:"image/png",extensions:[".png"],category:"image"},{mime:"image/jpeg",extensions:[".jpg",".jpeg"],category:"image"},{mime:"image/webp",extensions:[".webp"],category:"image"},{mime:"image/avif",extensions:[".avif"],category:"image"},{mime:"application/pdf",extensions:[".pdf"],category:"document",maxSizeBytes:5242880},{mime:"text/csv",extensions:[".csv"],category:"document",maxSizeBytes:5242880},{mime:"text/plain",extensions:[".txt"],category:"document",maxSizeBytes:5242880}],ATTACHMENT_MIME_TYPES=ATTACHMENT_TYPES.map(t2=>t2.mime),ATTACHMENT_IMAGE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="image").map(t2=>t2.mime),ATTACHMENT_DOCUMENT_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="document").map(t2=>t2.mime),ATTACHMENT_ACCEPT_EXTENSIONS=ATTACHMENT_TYPES.flatMap(t2=>t2.extensions),ATTACHMENT_ACCEPT_STRING=[...ATTACHMENT_ACCEPT_EXTENSIONS,...ATTACHMENT_MIME_TYPES].join(","),ATTACHMENT_DROPZONE_ACCEPT=Object.fromEntries(ATTACHMENT_TYPES.map(t2=>[t2.mime,t2.extensions]))}});import{z as z11}from"zod";function isValidEnv(env){return typeof env!="string"||env.length===0||env.length>MAX_ENV_LENGTH||env.startsWith("-")||env.startsWith(".")||env.includes("//")||env.split("/").some(segment=>segment==="..")?!1:ENV_ID_REGEX.test(env)}function isProductionEnv(env){return env===PRODUCTION_ENV}var ENV_ID_REGEX,MAX_ENV_LENGTH,EnvSchema,DEFAULT_ENV,PRODUCTION_ENV,init_env=__esm({"../../packages/api-contracts/dist/esm/types/env.js"(){"use strict";ENV_ID_REGEX=/^[a-zA-Z0-9._/-]+$/,MAX_ENV_LENGTH=255;__name(isValidEnv,"isValidEnv");EnvSchema=z11.string().min(1,"env must not be empty").max(MAX_ENV_LENGTH,`env must be at most ${MAX_ENV_LENGTH} characters`).refine(isValidEnv,{error:"env must match /^[a-zA-Z0-9._/-]+$/ and must not start with `-`"}),DEFAULT_ENV="main",PRODUCTION_ENV="prod";__name(isProductionEnv,"isProductionEnv")}});var init_realtime=__esm({"../../packages/api-contracts/dist/esm/types/realtime.js"(){"use strict"}});import{z as z12}from"zod";function referenceDocumentId(value){if(typeof value=="string")return value;if(value&&typeof value=="object"){let reference=value,hasId=Object.prototype.hasOwnProperty.call(reference,"id"),hasDocumentId=Object.prototype.hasOwnProperty.call(reference,"documentId"),id=reference.id,documentId=reference.documentId;if(hasId&&typeof id!="string"||hasDocumentId&&typeof documentId!="string"||typeof id=="string"&&typeof documentId=="string"&&id!==documentId)return null;if(typeof id=="string")return id;if(typeof documentId=="string")return documentId}return null}function toReferenceValue(value){let documentId=referenceDocumentId(value);return documentId?{documentId}:null}function referenceContentType(value){if(value&&typeof value=="object"&&"contentType"in value){let contentType=value.contentType;return typeof contentType=="string"&&contentType.length>0?contentType:null}return null}function toPolymorphicReferenceValue(value){let documentId=referenceDocumentId(value),contentType=referenceContentType(value);return documentId&&contentType?{contentType,documentId}:null}var ReferenceValueSchema,PolymorphicReferenceValueSchema,init_references=__esm({"../../packages/api-contracts/dist/esm/types/references.js"(){"use strict";__name(referenceDocumentId,"referenceDocumentId");__name(toReferenceValue,"toReferenceValue");ReferenceValueSchema=z12.preprocess(value=>{let reference=toReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},z12.object({documentId:z12.uuid()}));__name(referenceContentType,"referenceContentType");__name(toPolymorphicReferenceValue,"toPolymorphicReferenceValue");PolymorphicReferenceValueSchema=z12.preprocess(value=>{let reference=toPolymorphicReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},z12.object({contentType:z12.string().min(1),documentId:z12.uuid()}))}});import{z as z13}from"zod";var AUDIT_ACTIONS,AuditActionSchema,AUDIT_OUTCOMES,AuditOutcomeSchema,AUDIT_ACTOR_KINDS,AuditActorKindSchema,init_audit_log=__esm({"../../packages/api-contracts/dist/esm/types/audit-log.js"(){"use strict";AUDIT_ACTIONS=["env_create","env_delete","env_sync","capability_check","shell_exec","git_push","git_tag","git_merge","fimo_deploy","merge_decision","session_start","session_end","cost_breach","trigger_fire","cutover_step","agent_delegate","ops_access_change","ops_service_token_change","ops_project_search","ops_project_inspect","ops_project_chat_read","ops_project_snapshot","ops_support_thread_read","ops_support_report_read","ops_support_report_change","ops_customer_registry_change","ops_investigation_change","ops_known_issue_change","ops_validation_record","ops_notification_preview","ops_notification_approve","ops_notification_send"],AuditActionSchema=z13.enum(AUDIT_ACTIONS),AUDIT_OUTCOMES=["success","denied","error"],AuditOutcomeSchema=z13.enum(AUDIT_OUTCOMES),AUDIT_ACTOR_KINDS=["user","agent","system"],AuditActorKindSchema=z13.enum(AUDIT_ACTOR_KINDS)}});import{z as z14}from"zod";var OPS_BACKEND_PROFILES,OpsBackendProfileSchema,OPS_PERMISSIONS,OpsPermissionSchema,OPS_PERMISSION_PRESETS,OPS_SERVICE_PERMISSION_PRESETS,OpsAccessGrantInputSchema,OpsServiceTokenInputSchema,OpsCustomerProjectInputSchema,OPS_INVESTIGATION_STATUSES,OpsInvestigationStatusSchema,OpsInvestigationCreateInputSchema,OpsInvestigationUpdateInputSchema,OPS_KNOWN_ISSUE_STATUSES,OpsKnownIssueStatusSchema,OpsKnownIssueCreateInputSchema,OpsKnownIssueUpdateInputSchema,OPS_VALIDATION_OUTCOMES,OpsValidationOutcomeSchema,OpsValidationRunInputSchema,OpsNotificationPreviewInputSchema,init_ops=__esm({"../../packages/api-contracts/dist/esm/types/ops.js"(){"use strict";OPS_BACKEND_PROFILES=["local","staging","prod"],OpsBackendProfileSchema=z14.enum(OPS_BACKEND_PROFILES),OPS_PERMISSIONS=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:sentry:read","ops:logs:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview","ops:notification:approve","ops:notification:send"],OpsPermissionSchema=z14.enum(OPS_PERMISSIONS),OPS_PERMISSION_PRESETS={support:["ops:project:read","ops:project:chat:read","ops:support:read","ops:support:write","ops:customers:read","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:validations:read","ops:notification:preview"],engineer:["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:sentry:read","ops:logs:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview"],full:[...OPS_PERMISSIONS]},OPS_SERVICE_PERMISSION_PRESETS={support:OPS_PERMISSION_PRESETS.support,engineer:OPS_PERMISSION_PRESETS.engineer,full:OPS_PERMISSION_PRESETS.full.filter(permission=>permission!=="ops:notification:approve")},OpsAccessGrantInputSchema=z14.object({permissions:z14.array(OpsPermissionSchema).min(1),backendProfiles:z14.array(OpsBackendProfileSchema).min(1),enabled:z14.boolean().default(!0)}),OpsServiceTokenInputSchema=z14.object({name:z14.string().trim().min(1).max(120),permissions:z14.array(OpsPermissionSchema).min(1),backendProfiles:z14.array(OpsBackendProfileSchema).min(1),expiresAt:z14.coerce.date()}).refine(input=>!input.permissions.includes("ops:notification:approve"),{path:["permissions"],message:"Service credentials cannot approve customer notifications"}).refine(input=>input.expiresAt.getTime()>Date.now(),{path:["expiresAt"],message:"Service credential expiry must be in the future"}),OpsCustomerProjectInputSchema=z14.object({importanceReason:z14.string().trim().min(1).max(1e3),ownerUserId:z14.string().trim().min(1).nullable().optional(),framework:z14.string().trim().max(120).nullable().optional(),packageManager:z14.enum(["npm","pnpm","yarn","bun"]).nullable().optional(),notes:z14.string().trim().max(5e3).nullable().optional()}),OPS_INVESTIGATION_STATUSES=["open","investigating","awaiting_approval","resolved","monitoring","closed"],OpsInvestigationStatusSchema=z14.enum(OPS_INVESTIGATION_STATUSES),OpsInvestigationCreateInputSchema=z14.object({projectId:z14.uuid(),title:z14.string().trim().min(1).max(240),userReport:z14.string().trim().max(1e4).nullable().optional()}),OpsInvestigationUpdateInputSchema=z14.object({status:OpsInvestigationStatusSchema.optional(),hypothesis:z14.string().trim().max(1e4).nullable().optional(),outcome:z14.string().trim().max(1e4).nullable().optional(),evidence:z14.array(z14.record(z14.string(),z14.unknown())).max(100).optional()}).refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_KNOWN_ISSUE_STATUSES=["open","monitoring","resolved"],OpsKnownIssueStatusSchema=z14.enum(OPS_KNOWN_ISSUE_STATUSES),OpsKnownIssueCreateInputSchema=z14.object({fingerprint:z14.string().trim().min(1).max(240),title:z14.string().trim().min(1).max(240),description:z14.string().trim().min(1).max(1e4),affectedVersions:z14.array(z14.string().trim().min(1).max(120)).max(100).default([]),detectionQueries:z14.array(z14.string().trim().min(1).max(2e3)).max(50).default([]),fixedVersion:z14.string().trim().min(1).max(64).nullable().optional(),workaround:z14.string().trim().min(1).max(1e4).nullable().optional(),status:OpsKnownIssueStatusSchema.default("open")}),OpsKnownIssueUpdateInputSchema=OpsKnownIssueCreateInputSchema.omit({fingerprint:!0}).extend({affectedVersions:z14.array(z14.string().trim().min(1).max(120)).max(100),detectionQueries:z14.array(z14.string().trim().min(1).max(2e3)).max(50),status:OpsKnownIssueStatusSchema}).partial().refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_VALIDATION_OUTCOMES=["passed","failed","inconclusive"],OpsValidationOutcomeSchema=z14.enum(OPS_VALIDATION_OUTCOMES),OpsValidationRunInputSchema=z14.object({changeReference:z14.string().trim().min(1).max(500),outcome:OpsValidationOutcomeSchema,summary:z14.string().trim().min(1).max(1e4),evidence:z14.array(z14.record(z14.string(),z14.unknown())).max(100).default([])}),OpsNotificationPreviewInputSchema=z14.object({recipientEmail:z14.email().optional(),subject:z14.string().trim().min(1).max(200).default("An update from Fimo"),message:z14.string().trim().min(1).max(5e3),locale:z14.string().trim().min(2).max(20),reason:z14.string().trim().min(1).max(1e3),acknowledgePolicy:z14.literal(!0)})}});import{z as z15}from"zod";var ProjectDTOSchema,ProjectDTO,ProjectWithPlanDTOSchema,ProjectWithPlanDTO,ProjectSummaryDTOSchema,ProjectSummaryDTO,ProjectUserDTOSchema,ProjectUserDTO,ProjectFileDTOSchema,ProjectFileDTO,ProjectChatMessageRole,ProjectMessageBaseSchema,MessageUserMetadataSchema,QuestionAnswerMetadataSchema,ProjectMessagePublicDTOSchema,ProjectMessagePublicDTO,ProjectMessageDTOSchema,ProjectVersionDTOSchema,ProjectVersionDTO,ProjectDocumentContentDTOSchema,ProjectDocumentContentDTO,ProjectListResponseSchema,ProjectVersionListResponseSchema,ProjectVersionResponseSchema,VersionMutationResponseSchema,ProjectPublicationStateDTOSchema,ProjectPublicationStateDTO,PublicationMutationDTOSchema,PublicationMutationDTO,ProjectPublicationStateResponseSchema,PublicationMutationResponseSchema,ProjectResponseSchema,ProjectWithPlanResponseSchema,init_project_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project.dto.js"(){"use strict";init_common();init_create_dto();init_response();ProjectDTOSchema=BaseEntitySchema.extend({name:z15.string(),displayName:z15.string().nullable(),subdomain:z15.string().nullable().optional(),subdomainUpdatedAt:z15.date().nullable().optional(),organizationId:z15.string().nullable(),createdBy:z15.string().nullable(),visibility:ProjectVisibilitySchema,previewEnabled:z15.boolean().default(!0),status:ProjectStatusSchema,creationStatus:z15.string(),thumbnailUrl:z15.string().nullable(),publishedThumbnailUrl:z15.string().nullable(),category:z15.string().nullable(),appUrl:z15.string().nullable(),lastPublishedAt:z15.coerce.date()}),ProjectDTO=createDTO(ProjectDTOSchema),ProjectWithPlanDTOSchema=ProjectDTOSchema.extend({planTier:z15.string().nullable()}),ProjectWithPlanDTO=createDTO(ProjectWithPlanDTOSchema),ProjectSummaryDTOSchema=z15.object({id:z15.uuid(),name:z15.string(),displayName:z15.string().nullable(),thumbnailUrl:z15.string().nullable(),visibility:ProjectVisibilitySchema,category:z15.string().nullable()}),ProjectSummaryDTO=createDTO(ProjectSummaryDTOSchema),ProjectUserDTOSchema=z15.object({id:z15.string(),name:z15.string(),avatar:z15.string().nullable(),color:z15.object({bg:z15.string(),text:z15.string()})}),ProjectUserDTO=createDTO(ProjectUserDTOSchema),ProjectFileDTOSchema=z15.object({path:z15.string(),content:z15.string()}),ProjectFileDTO=createDTO(ProjectFileDTOSchema),ProjectChatMessageRole=z15.enum(["user","assistant","system"]),ProjectMessageBaseSchema=z15.object({id:z15.string(),messageId:z15.string(),versionId:z15.string().nullable(),role:ProjectChatMessageRole,parts:z15.array(z15.any()),createdAt:z15.coerce.date()}),MessageUserMetadataSchema=z15.object({id:z15.string(),name:z15.string().nullable().optional(),image:z15.string().nullable().optional()}).nullable().optional(),QuestionAnswerMetadataSchema=z15.object({shortTitle:z15.string().optional(),questions:z15.array(z15.object({header:z15.string(),question:z15.string(),answer:z15.string(),selectedLabels:z15.array(z15.string()),freeText:z15.string(),skipped:z15.boolean()}))}).optional(),ProjectMessagePublicDTOSchema=ProjectMessageBaseSchema.extend({credits:z15.number(),metadata:z15.object({user:MessageUserMetadataSchema,changeManifest:z15.array(z15.any()).optional(),questionAnswer:QuestionAnswerMetadataSchema}).nullable().optional()}),ProjectMessagePublicDTO=createDTO(ProjectMessagePublicDTOSchema),ProjectMessageDTOSchema=ProjectMessagePublicDTOSchema,ProjectVersionDTOSchema=z15.object({id:z15.uuid(),versionId:z15.string(),projectId:z15.uuid(),commitHash:z15.string(),name:z15.string(),description:z15.string().nullable(),thumbnailUrl:z15.string().nullable(),createdAt:CommonSchemas.timestamp}),ProjectVersionDTO=createDTO(ProjectVersionDTOSchema),ProjectDocumentContentDTOSchema=z15.object({content:z15.string()}),ProjectDocumentContentDTO=createDTO(ProjectDocumentContentDTOSchema),ProjectListResponseSchema=createResponseSchema(z15.array(ProjectDTOSchema)),ProjectVersionListResponseSchema=createResponseSchema(z15.array(ProjectVersionDTOSchema)),ProjectVersionResponseSchema=createResponseSchema(ProjectVersionDTOSchema),VersionMutationResponseSchema=createResponseSchema(z15.object({success:z15.boolean(),message:z15.string().optional()})),ProjectPublicationStateDTOSchema=z15.object({isPublished:z15.boolean(),publishedAt:CommonSchemas.timestamp.nullable(),publishedVersion:z15.string().nullable()}),ProjectPublicationStateDTO=createDTO(ProjectPublicationStateDTOSchema),PublicationMutationDTOSchema=z15.object({success:z15.boolean(),message:z15.string().optional(),publishedAt:CommonSchemas.timestamp.optional()}),PublicationMutationDTO=createDTO(PublicationMutationDTOSchema),ProjectPublicationStateResponseSchema=createResponseSchema(ProjectPublicationStateDTOSchema),PublicationMutationResponseSchema=createResponseSchema(PublicationMutationDTOSchema),ProjectResponseSchema=createResponseSchema(ProjectDTOSchema),ProjectWithPlanResponseSchema=createResponseSchema(ProjectWithPlanDTOSchema)}});import{z as z16}from"zod";var ProjectEnvStatusSchema,ProjectEnvDTOSchema,ProjectEnvDTO,CreateProjectEnvRequestSchema,SyncProjectEnvRequestSchema,ProjectEnvResponseSchema,ProjectEnvsListResponseSchema,EnvSurfaceDiffSchema,EnvDiffResultSchema,EnvDiffResultDTO,init_project_env_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-env.dto.js"(){"use strict";init_common();init_env();init_create_dto();init_response();ProjectEnvStatusSchema=z16.enum(["provisioning","active","deleted"]),ProjectEnvDTOSchema=BaseEntitySchema.extend({projectId:z16.uuid(),env:EnvSchema,status:ProjectEnvStatusSchema,previewUrl:z16.string().nullable(),parentEnv:EnvSchema.nullable(),createdBy:z16.string().nullable(),deletedAt:z16.coerce.date().nullable()}),ProjectEnvDTO=createDTO(ProjectEnvDTOSchema),CreateProjectEnvRequestSchema=z16.object({env:EnvSchema,parentEnv:EnvSchema.optional()}),SyncProjectEnvRequestSchema=z16.object({from:EnvSchema.optional()}),ProjectEnvResponseSchema=createResponseSchema(ProjectEnvDTOSchema),ProjectEnvsListResponseSchema=createResponseSchema(z16.array(ProjectEnvDTOSchema)),EnvSurfaceDiffSchema=z16.object({surface:z16.enum(["code","schemas","content","translations","assets","forms","activations"]),status:z16.enum(["unchanged","changed","conflicting","missing-on-target"]),changedCount:z16.number().int().nonnegative(),conflictCount:z16.number().int().nonnegative()}),EnvDiffResultSchema=z16.object({fromEnv:EnvSchema,toEnv:EnvSchema,generatedAt:z16.coerce.date(),surfaces:z16.array(EnvSurfaceDiffSchema)}),EnvDiffResultDTO=createDTO(EnvDiffResultSchema)}});import{z as z17}from"zod";var ExportProjectResponseDTOSchema,ExportProjectResponseDTO,ImportProjectResultDTOSchema,ImportProjectResultDTO,ImportPreviewCountsDTOSchema,ImportPreviewSurfaceDTOSchema,ImportPreviewDTOSchema,ImportPreviewDTO,ImportPreviewResponseDTOSchema,ImportPreviewResponseDTO,init_project_import_export_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-import-export.dto.js"(){"use strict";init_create_dto();ExportProjectResponseDTOSchema=z17.object({success:z17.literal(!0),downloadUrl:z17.string(),expiresAt:z17.string(),fileSize:z17.number(),duration:z17.number()}),ExportProjectResponseDTO=createDTO(ExportProjectResponseDTOSchema),ImportProjectResultDTOSchema=z17.object({success:z17.literal(!0),projectId:z17.string(),projectName:z17.string(),displayName:z17.string(),projectUrl:z17.string(),duration:z17.number()}),ImportProjectResultDTO=createDTO(ImportProjectResultDTOSchema),ImportPreviewCountsDTOSchema=z17.object({contentTypes:z17.number(),entries:z17.number(),assets:z17.number(),translations:z17.number(),forms:z17.number(),codeFiles:z17.number(),assetFiles:z17.number()}),ImportPreviewSurfaceDTOSchema=z17.object({name:z17.string(),included:z17.boolean(),count:z17.number().optional(),note:z17.string().optional()}),ImportPreviewDTOSchema=z17.object({projectName:z17.string(),displayName:z17.string().nullable(),visibility:z17.string().nullable(),category:z17.string().nullable(),exportedAt:z17.string(),version:z17.string(),envScope:z17.enum(["main","tree"]),counts:ImportPreviewCountsDTOSchema,surfaces:z17.array(ImportPreviewSurfaceDTOSchema),fileSize:z17.number(),fileName:z17.string()}),ImportPreviewDTO=createDTO(ImportPreviewDTOSchema),ImportPreviewResponseDTOSchema=z17.object({success:z17.literal(!0),preview:ImportPreviewDTOSchema}),ImportPreviewResponseDTO=createDTO(ImportPreviewResponseDTOSchema)}});import{z as z18}from"zod";var TriggerKindSchema,ManualTriggerSchema2,ScheduleTriggerSchema,WebhookTriggerSchema2,TriggerSchema2,init_agent_trigger_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-trigger.dto.js"(){"use strict";TriggerKindSchema=z18.enum(["manual","schedule","webhook"]),ManualTriggerSchema2=z18.object({type:z18.literal("manual")}),ScheduleTriggerSchema=z18.object({type:z18.literal("schedule"),cron:z18.string().min(1,"cron expression required").regex(/^\s*\S+\s+\S+\s+\S+\s+\S+\s+\S+\s*$/,"cron must be a 5-field expression"),tz:z18.string().optional()}),WebhookTriggerSchema2=z18.object({type:z18.literal("webhook"),path:z18.string().min(1).max(120).regex(/^[a-z0-9][a-z0-9_/-]*$/i,"webhook path must be lowercase alphanumeric with optional / - _")}),TriggerSchema2=z18.discriminatedUnion("type",[ManualTriggerSchema2,ScheduleTriggerSchema,WebhookTriggerSchema2])}});import{z as z19}from"zod";var ActivateRequestSchema,DeactivateRequestSchema,AgentActivationDTOSchema,AgentActivationDTO,AgentActivationsListResponseSchema,AgentActivationResponseSchema,WebhookPathTakenErrorSchema,ManualRunRequestSchema,DispatchSkippedSchema,DispatchAcceptedSchema,ManualRunResponseSchema,init_agent_activation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-activation.dto.js"(){"use strict";init_env();init_create_dto();init_response();init_agent_trigger_dto();ActivateRequestSchema=z19.object({triggerIndices:z19.array(z19.number().int().nonnegative()).optional()}),DeactivateRequestSchema=z19.object({triggerIndices:z19.array(z19.number().int().nonnegative()).optional()}),AgentActivationDTOSchema=z19.object({projectId:z19.uuid(),env:EnvSchema,agentName:z19.string().min(1),triggerIndex:z19.number().int().nonnegative(),triggerKind:TriggerKindSchema,trigger:TriggerSchema2,enabled:z19.boolean(),lastFiredAt:z19.coerce.date().nullable(),webhookPath:z19.string().nullable(),createdAt:z19.coerce.date(),updatedAt:z19.coerce.date()}),AgentActivationDTO=createDTO(AgentActivationDTOSchema),AgentActivationsListResponseSchema=createResponseSchema(z19.array(AgentActivationDTOSchema)),AgentActivationResponseSchema=createResponseSchema(AgentActivationDTOSchema),WebhookPathTakenErrorSchema=z19.object({error:z19.literal("webhook_path_taken"),conflictAgent:z19.string(),path:z19.string()}),ManualRunRequestSchema=z19.object({args:z19.unknown().optional(),requestId:z19.string().min(1).max(128).optional()}),DispatchSkippedSchema=z19.object({skipped:z19.enum(["duplicate","no-activation","agent-not-cloud","bundle-missing","trigger-stale"])}),DispatchAcceptedSchema=z19.object({sessionId:z19.string().min(1)}),ManualRunResponseSchema=createResponseSchema(z19.union([DispatchAcceptedSchema,DispatchSkippedSchema]))}});import{z as z20}from"zod";var CapabilityRiskTierSchema,CapabilitySummaryEntrySchema,AgentSubAgentSummarySchema,AgentInstallSummaryDTOSchema,AgentInstallSummaryDTO,AgentInstallSummaryResponseSchema,init_agent_install_summary_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-install-summary.dto.js"(){"use strict";init_create_dto();init_response();CapabilityRiskTierSchema=z20.enum(["low","medium","high","critical"]),CapabilitySummaryEntrySchema=z20.object({token:z20.string().min(1),risk:CapabilityRiskTierSchema,description:z20.string()}),AgentSubAgentSummarySchema=z20.object({name:z20.string().min(1),grant:z20.enum(["inherit","explicit"]),effectiveCaps:z20.array(z20.string().min(1))}),AgentInstallSummaryDTOSchema=z20.object({agentName:z20.string().min(1),env:z20.string().min(1),declaredCapabilities:z20.array(CapabilitySummaryEntrySchema),transitiveCapabilities:z20.array(CapabilitySummaryEntrySchema),highRiskCapabilities:z20.array(CapabilitySummaryEntrySchema),criticalCapabilities:z20.array(CapabilitySummaryEntrySchema),subAgents:z20.array(AgentSubAgentSummarySchema),declaresDelegate:z20.boolean(),cycle:z20.array(z20.string()).nullable(),missingSubAgents:z20.array(z20.string()),warnings:z20.array(z20.string())}),AgentInstallSummaryDTO=createDTO(AgentInstallSummaryDTOSchema),AgentInstallSummaryResponseSchema=createResponseSchema(AgentInstallSummaryDTOSchema)}});import{z as z21}from"zod";var AgentListItemTriggerSchema,AgentListItemActivationSchema,AgentListItemDTOSchema,AgentListItemDTO,AgentListResponseSchema,init_agent_list_item_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-list-item.dto.js"(){"use strict";init_create_dto();init_response();init_agent_install_summary_dto();init_agent_trigger_dto();AgentListItemTriggerSchema=z21.object({kind:TriggerKindSchema,summary:z21.string()}),AgentListItemActivationSchema=z21.object({triggerIndex:z21.number().int().nonnegative(),triggerKind:TriggerKindSchema,env:z21.string().min(1),active:z21.boolean()}),AgentListItemDTOSchema=z21.object({name:z21.string().min(1),description:z21.string().nullable(),goalFirstLine:z21.string().nullable(),declaredCapabilities:z21.array(CapabilitySummaryEntrySchema),triggers:z21.array(AgentListItemTriggerSchema),activations:z21.array(AgentListItemActivationSchema)}),AgentListItemDTO=createDTO(AgentListItemDTOSchema),AgentListResponseSchema=createResponseSchema(z21.array(AgentListItemDTOSchema))}});import{z as z22}from"zod";var AgentSessionStatusSchema,SessionMetricsSchema,AgentSessionDTOSchema,AgentSessionDTO,AgentSessionCheckpointDTOSchema,AgentSessionCheckpointDTO,AgentSessionResponseSchema,AgentSessionsListResponseSchema,AgentSessionCheckpointsListResponseSchema,AgentSessionWithCheckpointsResponseSchema,SessionErrorCodeSchema,CancelSessionRequestSchema,init_agent_session_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-session.dto.js"(){"use strict";init_env();init_create_dto();init_response();init_agent_trigger_dto();AgentSessionStatusSchema=z22.enum(["planned","running","finished","cancelled","errored"]),SessionMetricsSchema=z22.object({cpuMs:z22.number().nonnegative().default(0),netBytes:z22.number().nonnegative().default(0),walltimeMs:z22.number().nonnegative().default(0),llmTokensIn:z22.number().nonnegative().optional(),llmTokensOut:z22.number().nonnegative().optional()}),AgentSessionDTOSchema=z22.object({id:z22.uuid(),projectId:z22.uuid(),env:EnvSchema,agentName:z22.string().min(1),triggerKind:TriggerKindSchema,triggerPayload:z22.unknown().optional(),capabilities:z22.array(z22.string()).optional(),dataSources:z22.array(z22.string()).optional(),status:AgentSessionStatusSchema,sandboxId:z22.string().nullable(),startedAt:z22.coerce.date().nullable(),finishedAt:z22.coerce.date().nullable(),cancelledAt:z22.coerce.date().nullable(),costUsd:z22.number().nonnegative(),costCeilingUsd:z22.number().positive(),metrics:SessionMetricsSchema.nullable(),longRunning:z22.boolean(),lastCheckpointId:z22.uuid().nullable(),branchEnvId:z22.uuid().nullable(),parentSessionId:z22.uuid().nullable(),terminalReason:z22.string().nullable(),errorMessage:z22.string().nullable(),report:z22.string().nullable(),createdAt:z22.coerce.date(),updatedAt:z22.coerce.date()}),AgentSessionDTO=createDTO(AgentSessionDTOSchema),AgentSessionCheckpointDTOSchema=z22.object({id:z22.uuid(),sessionId:z22.uuid(),checkpointIdx:z22.number().int().nonnegative(),payloadRef:z22.string(),payloadSizeBytes:z22.number().int().nonnegative(),checksum:z22.string().length(64),createdAt:z22.coerce.date()}),AgentSessionCheckpointDTO=createDTO(AgentSessionCheckpointDTOSchema),AgentSessionResponseSchema=createResponseSchema(AgentSessionDTOSchema),AgentSessionsListResponseSchema=createResponseSchema(z22.array(AgentSessionDTOSchema)),AgentSessionCheckpointsListResponseSchema=createResponseSchema(z22.array(AgentSessionCheckpointDTOSchema)),AgentSessionWithCheckpointsResponseSchema=createResponseSchema(z22.object({session:AgentSessionDTOSchema,checkpoints:z22.array(AgentSessionCheckpointDTOSchema)})),SessionErrorCodeSchema=z22.enum(["invalid_session_transition","session_not_found","capability_snapshot_invalid","checkpoint_restore_failed","cost_ceiling_invalid","too_many_agent_envs","env_provisioning_failed"]),CancelSessionRequestSchema=z22.object({reason:z22.string().min(1).max(120).optional()})}});import{z as z23}from"zod";var AgentBranchClassificationSchema,AgentBranchDecidedPathSchema,AgentBranchProposalDTOSchema,AgentBranchProposalDTO,DecideProposalRequestSchema,AgentBranchProposalResponseSchema,AgentBranchProposalsListResponseSchema,DecideProposalConflictResponseSchema,init_agent_proposal_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-proposal.dto.js"(){"use strict";init_create_dto();init_response();AgentBranchClassificationSchema=z23.enum(["trivial","structural"]),AgentBranchDecidedPathSchema=z23.enum(["auto-merge","review-merged","review-discarded"]),AgentBranchProposalDTOSchema=z23.object({id:z23.uuid(),envId:z23.uuid(),sessionId:z23.uuid().nullable(),skillName:z23.string().min(1),classification:AgentBranchClassificationSchema,rationale:z23.string().nullable(),summary:z23.string().nullable(),surfaceDeltas:z23.record(z23.string(),z23.unknown()),createdAt:z23.coerce.date(),decidedAt:z23.coerce.date().nullable(),decidedPath:AgentBranchDecidedPathSchema.nullable(),decidedBy:z23.string().nullable()}),AgentBranchProposalDTO=createDTO(AgentBranchProposalDTOSchema),DecideProposalRequestSchema=z23.object({path:z23.enum(["review-merged","review-discarded"])}),AgentBranchProposalResponseSchema=createResponseSchema(AgentBranchProposalDTOSchema),AgentBranchProposalsListResponseSchema=createResponseSchema(z23.array(AgentBranchProposalDTOSchema)),DecideProposalConflictResponseSchema=z23.object({code:z23.literal("merge_conflict"),message:z23.string(),conflicts:z23.record(z23.string(),z23.number().int().nonnegative())})}});import{z as z24}from"zod";var IntegrationAuthModeSchema,IntegrationAuthKindSchema,IntegrationCredentialInputSchema,IntegrationCredentialUsageSchema,ProjectIntegrationCredentialStatusSchema,IntegrationAuthModeDTOSchema,IntegrationCredentialDefinitionDTOSchema,IntegrationToolDefinitionDTOSchema,IntegrationRecipeDTOSchema,IntegrationInfoDTOSchema,IntegrationInfoDTO,ProjectIntegrationStatusDTOSchema,ProjectIntegrationStatusDTO,ProjectIntegrationInstallationDTOSchema,ProjectIntegrationInstallationDTO,EnableProjectIntegrationRequestSchema,SwitchProjectIntegrationAuthRequestSchema,SetProjectIntegrationCredentialRequestSchema,OrganizationIntegrationConnectionStatusSchema,OrganizationIntegrationConnectionDTOSchema,OrganizationIntegrationConnectionDTO,ConnectOrganizationIntegrationRequestSchema,StartProjectIntegrationConnectResponseSchema,StartProjectIntegrationConnectResponseDTO,BindProjectChannelRequestSchema,ProjectChannelBindingDTOSchema,ProjectChannelBindingDTO,FirecrawlScrapeFormatsSchema,FirecrawlScrapeToolInputSchema,FirecrawlSearchToolInputSchema,FirecrawlMapToolInputSchema,FirecrawlCrawlToolInputSchema,FirecrawlMonitorScheduleInputSchema,FirecrawlMonitorTargetInputSchema,FirecrawlMonitorCreateToolInputSchema,FirecrawlMonitorIdToolInputSchema,FirecrawlMonitorCheckToolInputSchema,RunProjectIntegrationToolOptionsSchema,RunProjectIntegrationToolRequestSchema,ProjectIntegrationToolRunUsageSchema,ProjectIntegrationToolRunBillingSchema,FirecrawlScrapeToolOutputSchema,FirecrawlSearchToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlMonitorScheduleOutputSchema,FirecrawlMonitorTargetOutputSchema,FirecrawlMonitorOutputSchema,FirecrawlMonitorCheckOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema,FirecrawlToolKeySchema,FirecrawlToolOutputSchema,ProjectIntegrationToolRunBaseSchema,ProjectIntegrationToolRunDTOSchema,ProjectIntegrationToolRunDTO,IntegrationsListResponseSchema,IntegrationInfoResponseSchema,ProjectIntegrationStatusResponseSchema,ProjectIntegrationInstallationResponseSchema,ProjectIntegrationToolRunResponseSchema,StartProjectIntegrationConnectResponseResponseSchema,OrganizationIntegrationConnectionResponseSchema,ProjectChannelBindingResponseSchema,init_integration_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/integration.dto.js"(){"use strict";init_create_dto();init_response();IntegrationAuthModeSchema=z24.enum(["fimo","personal","oauth"]),IntegrationAuthKindSchema=z24.enum(["oauth","api_key","bot_token","basic"]),IntegrationCredentialInputSchema=z24.enum(["secret_text"]),IntegrationCredentialUsageSchema=z24.enum(["http_bearer","api_key"]),ProjectIntegrationCredentialStatusSchema=z24.enum(["not_required","missing","configured"]),IntegrationAuthModeDTOSchema=z24.object({mode:IntegrationAuthModeSchema,label:z24.string().min(1),description:z24.string().min(1)}),IntegrationCredentialDefinitionDTOSchema=z24.object({id:z24.string().min(1),label:z24.string().min(1),input:IntegrationCredentialInputSchema,usage:IntegrationCredentialUsageSchema,required:z24.boolean()}),IntegrationToolDefinitionDTOSchema=z24.object({key:z24.string().min(1),name:z24.string().min(1),description:z24.string().min(1)}),IntegrationRecipeDTOSchema=z24.object({title:z24.string().min(1),description:z24.string().min(1),command:z24.string().min(1).optional()}),IntegrationInfoDTOSchema=z24.object({key:z24.string().min(1),name:z24.string().min(1),summary:z24.string().min(1),defaultAuthMode:IntegrationAuthModeSchema.nullable().optional(),authModes:z24.array(IntegrationAuthModeDTOSchema),credentials:z24.array(IntegrationCredentialDefinitionDTOSchema),tools:z24.array(IntegrationToolDefinitionDTOSchema),recipes:z24.array(IntegrationRecipeDTOSchema)}),IntegrationInfoDTO=createDTO(IntegrationInfoDTOSchema),ProjectIntegrationStatusDTOSchema=z24.object({projectId:z24.uuid(),integrationKey:z24.string().min(1),installed:z24.boolean(),enabled:z24.boolean(),authMode:IntegrationAuthModeSchema.nullable(),authModeLabel:z24.string().nullable(),connectionId:z24.uuid().nullable().optional(),connectionAlias:z24.string().min(1).nullable().optional(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z24.array(z24.string()),installedAt:z24.coerce.date().nullable(),updatedAt:z24.coerce.date().nullable()}),ProjectIntegrationStatusDTO=createDTO(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationDTOSchema=z24.object({id:z24.uuid(),projectId:z24.uuid(),integrationKey:z24.string().min(1),enabled:z24.boolean(),authMode:IntegrationAuthModeSchema,authModeLabel:z24.string(),connectionId:z24.uuid().nullable().optional(),connectionAlias:z24.string().min(1).nullable().optional(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z24.array(z24.string()),createdAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),ProjectIntegrationInstallationDTO=createDTO(ProjectIntegrationInstallationDTOSchema),EnableProjectIntegrationRequestSchema=z24.object({authMode:IntegrationAuthModeSchema.optional(),connectionAlias:z24.string().min(1).optional()}),SwitchProjectIntegrationAuthRequestSchema=z24.object({authMode:IntegrationAuthModeSchema}),SetProjectIntegrationCredentialRequestSchema=z24.object({value:z24.string().min(1)}),OrganizationIntegrationConnectionStatusSchema=z24.enum(["active","revoked"]),OrganizationIntegrationConnectionDTOSchema=z24.object({id:z24.uuid(),organizationId:z24.string().min(1),integrationKey:z24.string().min(1),alias:z24.string().min(1),authKind:IntegrationAuthKindSchema,externalAccountId:z24.string().min(1),externalAccountName:z24.string().nullable(),externalBotUserId:z24.string().nullable(),status:OrganizationIntegrationConnectionStatusSchema,scopes:z24.array(z24.string()),connectedAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),OrganizationIntegrationConnectionDTO=createDTO(OrganizationIntegrationConnectionDTOSchema),ConnectOrganizationIntegrationRequestSchema=z24.object({alias:z24.string().min(1).max(120).optional(),token:z24.string().min(1).optional()}),StartProjectIntegrationConnectResponseSchema=z24.object({integrationKey:z24.string().min(1),connectUrl:z24.string().url(),expiresAt:z24.coerce.date()}),StartProjectIntegrationConnectResponseDTO=createDTO(StartProjectIntegrationConnectResponseSchema),BindProjectChannelRequestSchema=z24.object({ref:z24.string().min(1),connectionAlias:z24.string().min(1).optional(),agentName:z24.string().min(1).max(160).nullable().optional(),force:z24.boolean().optional()}),ProjectChannelBindingDTOSchema=z24.object({id:z24.uuid(),projectId:z24.uuid(),integrationKey:z24.string().min(1),connectionId:z24.uuid(),externalWorkspaceId:z24.string().min(1),externalChannelId:z24.string().min(1),externalChannelName:z24.string().nullable(),agentName:z24.string().nullable(),enabled:z24.boolean(),createdAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),ProjectChannelBindingDTO=createDTO(ProjectChannelBindingDTOSchema),FirecrawlScrapeFormatsSchema=z24.object({markdown:z24.boolean().optional(),summary:z24.boolean().optional(),links:z24.boolean().optional(),images:z24.boolean().optional(),html:z24.union([z24.literal("cleaned"),z24.literal("raw"),z24.boolean()]).optional()}).default({markdown:!0}),FirecrawlScrapeToolInputSchema=z24.object({url:z24.string().url(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional(),waitForMs:z24.number().int().min(0).max(3e4).optional()}),FirecrawlSearchToolInputSchema=z24.object({query:z24.string().min(1),maxResults:z24.number().int().positive().max(20).optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlMapToolInputSchema=z24.object({url:z24.string().url(),search:z24.string().min(1).optional(),limit:z24.number().int().positive().max(200).optional(),includeSubdomains:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlCrawlToolInputSchema=z24.object({url:z24.string().url(),limit:z24.number().int().positive().max(20).optional(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlMonitorScheduleInputSchema=z24.object({text:z24.string().min(1).max(200).optional(),cron:z24.string().min(1).max(120).optional(),timezone:z24.string().min(1).max(80).optional()}).refine(value=>!!(value.text||value.cron),"Firecrawl monitor schedule needs text or cron."),FirecrawlMonitorTargetInputSchema=z24.object({type:z24.enum(["scrape","crawl"]).default("scrape"),urls:z24.array(z24.string().url()).min(1).max(50),scrapeOptions:z24.object({formats:FirecrawlScrapeFormatsSchema.optional(),onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional(),waitForMs:z24.number().int().min(0).max(3e4).optional()}).optional()}),FirecrawlMonitorCreateToolInputSchema=z24.object({name:z24.string().min(1).max(256),schedule:FirecrawlMonitorScheduleInputSchema,targets:z24.array(FirecrawlMonitorTargetInputSchema).min(1).max(50),goal:z24.string().min(1).max(2e3).optional(),judgeEnabled:z24.boolean().optional(),retentionDays:z24.number().int().min(1).max(365).optional(),notification:z24.object({email:z24.object({enabled:z24.boolean().default(!0),recipients:z24.array(z24.string().email()).min(1).max(20),includeDiffs:z24.boolean().optional()}).optional()}).optional()}),FirecrawlMonitorIdToolInputSchema=z24.object({monitorId:z24.string().uuid()}),FirecrawlMonitorCheckToolInputSchema=FirecrawlMonitorIdToolInputSchema.extend({checkId:z24.string().uuid()}),RunProjectIntegrationToolOptionsSchema=z24.object({connectionAlias:z24.string().min(1).optional()}),RunProjectIntegrationToolRequestSchema=z24.discriminatedUnion("tool",[RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("search"),input:FirecrawlSearchToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("scrape"),input:FirecrawlScrapeToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("map"),input:FirecrawlMapToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("crawl"),input:FirecrawlCrawlToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.create"),input:FirecrawlMonitorCreateToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.list"),input:z24.object({}).default({})}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.get"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.pause"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.resume"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.delete"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.run"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.checks"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.check"),input:FirecrawlMonitorCheckToolInputSchema})]),ProjectIntegrationToolRunUsageSchema=z24.object({provider:z24.string().min(1),providerCredits:z24.number().nonnegative().optional(),providerCostUsd:z24.number().nonnegative().optional(),requests:z24.number().int().nonnegative().optional()}),ProjectIntegrationToolRunBillingSchema=z24.object({credits:z24.number().int().nonnegative()}),FirecrawlScrapeToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),title:z24.string().optional(),statusCode:z24.number().optional(),markdown:z24.string().optional(),summary:z24.string().optional(),links:z24.array(z24.string()).optional(),images:z24.array(z24.string()).optional(),html:z24.string().optional(),warning:z24.string().optional()}),FirecrawlSearchToolOutputSchema=z24.object({query:z24.string(),provider:z24.literal("firecrawl"),results:z24.array(z24.object({title:z24.string(),url:z24.string(),snippet:z24.string().optional(),content:z24.string().optional(),score:z24.number().optional(),publishedAt:z24.string().optional()}))}),FirecrawlMapToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),count:z24.number(),links:z24.array(z24.object({url:z24.string(),title:z24.string().optional(),description:z24.string().optional()}))}),FirecrawlCrawlToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),total:z24.number(),pages:z24.array(z24.object({url:z24.string(),title:z24.string().optional(),statusCode:z24.number().optional(),markdown:z24.string().optional(),summary:z24.string().optional(),links:z24.array(z24.string()).optional(),images:z24.array(z24.string()).optional(),html:z24.string().optional(),warning:z24.string().optional()})),warning:z24.string().optional()}),FirecrawlMonitorScheduleOutputSchema=z24.object({cron:z24.string().optional(),text:z24.string().optional(),timezone:z24.string().optional()}).passthrough(),FirecrawlMonitorTargetOutputSchema=z24.object({id:z24.string().optional(),urls:z24.array(z24.string()).optional(),scrapeOptions:z24.record(z24.string(),z24.unknown()).optional()}).passthrough(),FirecrawlMonitorOutputSchema=z24.object({id:z24.string(),name:z24.string(),status:z24.string().optional(),schedule:FirecrawlMonitorScheduleOutputSchema.optional(),nextRunAt:z24.string().nullable().optional(),lastRunAt:z24.string().nullable().optional(),currentCheckId:z24.string().nullable().optional(),targets:z24.array(FirecrawlMonitorTargetOutputSchema).optional(),goal:z24.string().nullable().optional(),judgeEnabled:z24.boolean().optional(),estimatedCreditsPerMonth:z24.number().optional(),createdAt:z24.string().optional(),updatedAt:z24.string().optional()}).passthrough(),FirecrawlMonitorCheckOutputSchema=z24.object({id:z24.string(),monitorId:z24.string(),scheduledFor:z24.string().nullable().optional(),startedAt:z24.string().nullable().optional(),finishedAt:z24.string().nullable().optional(),estimatedCredits:z24.number().optional(),reservedCredits:z24.number().optional(),actualCredits:z24.number().optional(),billingStatus:z24.string().nullable().optional(),summary:z24.object({totalPages:z24.number().optional(),same:z24.number().optional(),changed:z24.number().optional(),new:z24.number().optional(),removed:z24.number().optional(),error:z24.number().optional()}).passthrough().optional(),error:z24.string().nullable().optional(),createdAt:z24.string().optional(),updatedAt:z24.string().optional()}).passthrough(),FirecrawlMonitorListToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitors:z24.array(FirecrawlMonitorOutputSchema)}),FirecrawlMonitorDetailToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitor:FirecrawlMonitorOutputSchema}),FirecrawlMonitorDeleteToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),deleted:z24.boolean()}),FirecrawlMonitorChecksToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),checks:z24.array(FirecrawlMonitorCheckOutputSchema)}),FirecrawlMonitorCheckDetailToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),check:FirecrawlMonitorCheckOutputSchema,next:z24.string().optional()}),FirecrawlToolKeySchema=z24.enum(["search","scrape","map","crawl","monitor.create","monitor.list","monitor.get","monitor.pause","monitor.resume","monitor.delete","monitor.run","monitor.checks","monitor.check"]),FirecrawlToolOutputSchema=z24.union([FirecrawlSearchToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlScrapeToolOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema]),ProjectIntegrationToolRunBaseSchema=z24.object({projectId:z24.uuid(),integrationKey:z24.string().min(1),tool:FirecrawlToolKeySchema,connectionAlias:z24.string().min(1).nullable().optional(),output:FirecrawlToolOutputSchema,executedAt:z24.coerce.date()}),ProjectIntegrationToolRunDTOSchema=z24.discriminatedUnion("authMode",[ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("fimo"),billing:ProjectIntegrationToolRunBillingSchema,usage:z24.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("personal"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z24.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("oauth"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z24.undefined().optional()})]),ProjectIntegrationToolRunDTO=createDTO(ProjectIntegrationToolRunDTOSchema),IntegrationsListResponseSchema=createResponseSchema(z24.array(ProjectIntegrationStatusDTOSchema)),IntegrationInfoResponseSchema=createResponseSchema(IntegrationInfoDTOSchema),ProjectIntegrationStatusResponseSchema=createResponseSchema(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationResponseSchema=createResponseSchema(ProjectIntegrationInstallationDTOSchema),ProjectIntegrationToolRunResponseSchema=createResponseSchema(ProjectIntegrationToolRunDTOSchema),StartProjectIntegrationConnectResponseResponseSchema=createResponseSchema(StartProjectIntegrationConnectResponseSchema),OrganizationIntegrationConnectionResponseSchema=createResponseSchema(OrganizationIntegrationConnectionDTOSchema),ProjectChannelBindingResponseSchema=createResponseSchema(ProjectChannelBindingDTOSchema)}});import{z as z25}from"zod";var ProjectScheduleStatusSchema,ProjectScheduleDTOSchema,ProjectScheduleDTO,CreateProjectScheduleRequestSchema,ProjectScheduleResponseSchema,ProjectSchedulesListResponseSchema,init_schedule_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/schedule.dto.js"(){"use strict";init_create_dto();init_response();ProjectScheduleStatusSchema=z25.enum(["ok","failed"]),ProjectScheduleDTOSchema=z25.object({id:z25.uuid(),projectId:z25.uuid(),env:z25.string().min(1),name:z25.string().min(1),cron:z25.string().min(1),command:z25.string().min(1),enabled:z25.boolean(),lastRunAt:z25.coerce.date().nullable(),lastStatus:ProjectScheduleStatusSchema.nullable(),lastError:z25.string().nullable(),createdAt:z25.coerce.date(),updatedAt:z25.coerce.date()}),ProjectScheduleDTO=createDTO(ProjectScheduleDTOSchema),CreateProjectScheduleRequestSchema=z25.object({name:z25.string().min(1).max(120),cron:z25.string().min(1).max(120),command:z25.string().min(1).max(500)}),ProjectScheduleResponseSchema=createResponseSchema(ProjectScheduleDTOSchema),ProjectSchedulesListResponseSchema=createResponseSchema(z25.array(ProjectScheduleDTOSchema))}});import{z as z26}from"zod";var AuditLogRowDTOSchema,AuditLogRowDTO,AuditLogListResponseSchema,AuditLogQuerySchema,init_audit_log_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/audit-log.dto.js"(){"use strict";init_audit_log();init_create_dto();init_response();AuditLogRowDTOSchema=z26.object({id:z26.uuid(),occurredAt:z26.coerce.date(),projectId:z26.uuid().nullable(),env:z26.string().nullable(),actor:z26.string().nullable(),actorKind:AuditActorKindSchema.nullable().optional(),action:AuditActionSchema,resource:z26.string().nullable().optional(),outcome:AuditOutcomeSchema,metadata:z26.unknown().optional(),ipAddress:z26.string().nullable().optional(),userAgent:z26.string().nullable().optional(),error:z26.string().nullable().optional()}),AuditLogRowDTO=createDTO(AuditLogRowDTOSchema),AuditLogListResponseSchema=createResponseSchema(z26.object({rows:z26.array(AuditLogRowDTOSchema),nextCursor:z26.string().nullable()})),AuditLogQuerySchema=z26.object({env:z26.string().optional(),action:AuditActionSchema.optional(),actor:z26.string().optional(),from:z26.coerce.date().optional(),to:z26.coerce.date().optional(),limit:z26.coerce.number().int().min(1).max(200).optional(),cursor:z26.string().optional()})}});import{z as z27}from"zod";var SurfaceNameSchema,SURFACE_NAMES,SurfaceDeltaVerbSchema,SurfaceItemOriginSchema,SurfaceDeltaItemSchema,PerSurfaceDeltaSchema,CrossSurfaceFindingSchema,StatusReportSchema,StatusReportDTO,StatusReportResponseSchema,DiffReportSchema,DiffReportDTO,DiffReportResponseSchema,CodeFileDiffSchema,CodeFileDiffDTO,CodeFileDiffResponseSchema,CodeConflictBlobSchema,CodeConflictDetailSchema,CodeConflictDetailDTO,CodeConflictDetailResponseSchema,ContentEntrySnapshotSchema,ContentRowDiffSchema,ContentRowDiffDTO,ContentRowDiffResponseSchema,SchemaTypeSnapshotSchema,SchemaTypeDiffSchema,SchemaTypeDiffDTO,SchemaTypeDiffResponseSchema,AssetSnapshotSchema,AssetDiffSchema,AssetDiffDTO,AssetDiffResponseSchema,TranslationRowDiffSchema,TranslationRowDiffDTO,TranslationRowDiffResponseSchema,FormSchemaSnapshotSchema,FormSchemaDiffSchema,FormSchemaDiffDTO,FormSchemaDiffResponseSchema,ActivationSnapshotSchema,ActivationDiffSchema,ActivationDiffDTO,ActivationDiffResponseSchema,ConflictSchema,FieldPickSchema,ConflictResolutionSchema,MergeResultSchema,MergeResultDTO,MergeResultResponseSchema,EngineStrategySchema,VendorStrategySchema,MergeStrategySchema,ResolvedStrategySchema,MergeRequestSchema,MergeInitiateResultSchema,MergeInitiateResultDTO,MergeInitiateResponseSchema,MergeConflictsHydrationSchema,MergeConflictsHydrationDTO,MergeConflictsHydrationResponseSchema,MergeResolveDraftRequestSchema,MergeResolveDraftResultSchema,MergeResolveDraftResultDTO,MergeResolveRequestSchema,MergeCancelRequestSchema,PublishReleaseRequestSchema,PublishReleaseResultSchema,PublishReleaseResultDTO,PublishReleaseResponseSchema,init_env_status_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-status.dto.js"(){"use strict";init_env();init_create_dto();init_response();SurfaceNameSchema=z27.enum(["code","schemas","content","translations","assets","forms","activations"]),SURFACE_NAMES=["code","schemas","content","translations","assets","forms","activations"],SurfaceDeltaVerbSchema=z27.enum(["added","removed","changed","conflict"]),SurfaceItemOriginSchema=z27.enum(["committed-ahead","local-uncommitted"]),SurfaceDeltaItemSchema=z27.object({verb:SurfaceDeltaVerbSchema,key:z27.string(),detail:z27.string().optional(),origin:SurfaceItemOriginSchema.optional(),meta:z27.record(z27.string(),z27.unknown()).optional()}),PerSurfaceDeltaSchema=z27.object({surface:SurfaceNameSchema,status:z27.enum(["ok","timed_out","failed","unchanged"]),durationMs:z27.number().int().nonnegative().optional(),changedCount:z27.number().int().nonnegative(),conflictCount:z27.number().int().nonnegative(),items:z27.array(SurfaceDeltaItemSchema).max(1e3).optional(),truncated:z27.boolean().optional(),error:z27.string().optional()}),CrossSurfaceFindingSchema=z27.object({id:z27.string(),kind:z27.string(),description:z27.string(),severity:z27.enum(["warning","error"]),source:z27.object({surface:SurfaceNameSchema,key:z27.string()}),target:z27.object({surface:SurfaceNameSchema,key:z27.string()}),actions:z27.array(z27.enum(["restore-target","fix-source","ignore"])).min(1)}),StatusReportSchema=z27.object({env:EnvSchema,vs:EnvSchema,syncState:z27.enum(["in-sync","ahead","behind","diverged","unknown"]),generatedAt:z27.coerce.date(),surfaces:z27.array(PerSurfaceDeltaSchema),agents:z27.array(z27.object({id:z27.string(),name:z27.string(),status:z27.enum(["active","paused","failed"]),lastRunAt:z27.coerce.date().nullable()})).optional(),crossSurface:z27.array(CrossSurfaceFindingSchema).optional()}),StatusReportDTO=createDTO(StatusReportSchema),StatusReportResponseSchema=createResponseSchema(StatusReportSchema),DiffReportSchema=z27.object({fromEnv:EnvSchema,toEnv:EnvSchema,generatedAt:z27.coerce.date(),surfaces:z27.array(PerSurfaceDeltaSchema),crossSurface:z27.array(CrossSurfaceFindingSchema).optional(),fingerprint:z27.string()}),DiffReportDTO=createDTO(DiffReportSchema),DiffReportResponseSchema=createResponseSchema(DiffReportSchema),CodeFileDiffSchema=z27.object({path:z27.string(),state:z27.enum(["added","modified","deleted","renamed","copied","type_changed","unmerged","unknown"]),raw:z27.string(),additions:z27.number().int().nonnegative(),deletions:z27.number().int().nonnegative()}),CodeFileDiffDTO=createDTO(CodeFileDiffSchema),CodeFileDiffResponseSchema=createResponseSchema(CodeFileDiffSchema),CodeConflictBlobSchema=z27.object({oid:z27.string().optional(),content:z27.string().optional(),truncated:z27.boolean(),binary:z27.boolean()}),CodeConflictDetailSchema=z27.object({path:z27.string(),base:CodeConflictBlobSchema,ours:CodeConflictBlobSchema,theirs:CodeConflictBlobSchema,result:CodeConflictBlobSchema,sourceTipSha:z27.string(),targetTipSha:z27.string(),mergeBaseSha:z27.string().optional()}),CodeConflictDetailDTO=createDTO(CodeConflictDetailSchema),CodeConflictDetailResponseSchema=createResponseSchema(CodeConflictDetailSchema),ContentEntrySnapshotSchema=z27.object({id:z27.string(),slug:z27.string(),contentType:z27.string(),data:z27.record(z27.string(),z27.unknown()),updatedAt:z27.coerce.date()}),ContentRowDiffSchema=z27.object({collection:z27.string(),rowId:z27.string(),parent:ContentEntrySnapshotSchema.nullable(),child:ContentEntrySnapshotSchema.nullable()}),ContentRowDiffDTO=createDTO(ContentRowDiffSchema),ContentRowDiffResponseSchema=createResponseSchema(ContentRowDiffSchema),SchemaTypeSnapshotSchema=z27.object({name:z27.string(),label:z27.string(),isSingleton:z27.boolean(),fields:z27.record(z27.string(),z27.unknown())}),SchemaTypeDiffSchema=z27.object({typeName:z27.string(),parent:SchemaTypeSnapshotSchema.nullable(),child:SchemaTypeSnapshotSchema.nullable()}),SchemaTypeDiffDTO=createDTO(SchemaTypeDiffSchema),SchemaTypeDiffResponseSchema=createResponseSchema(SchemaTypeDiffSchema),AssetSnapshotSchema=z27.object({id:z27.string(),name:z27.string(),type:z27.enum(["file","folder"]),mimeType:z27.string().nullable(),storageKey:z27.string().nullable(),url:z27.string().nullable(),fileSize:z27.number().nullable(),width:z27.number().nullable(),height:z27.number().nullable(),altText:z27.string().nullable(),caption:z27.string().nullable(),createdAt:z27.coerce.date(),updatedAt:z27.coerce.date()}),AssetDiffSchema=z27.object({assetId:z27.string(),parent:AssetSnapshotSchema.nullable(),child:AssetSnapshotSchema.nullable()}),AssetDiffDTO=createDTO(AssetDiffSchema),AssetDiffResponseSchema=createResponseSchema(AssetDiffSchema),TranslationRowDiffSchema=z27.object({locale:z27.string(),key:z27.string(),parent:z27.string().nullable(),child:z27.string().nullable()}),TranslationRowDiffDTO=createDTO(TranslationRowDiffSchema),TranslationRowDiffResponseSchema=createResponseSchema(TranslationRowDiffSchema),FormSchemaSnapshotSchema=z27.object({formName:z27.string(),label:z27.string().nullable(),schemaFingerprint:z27.string(),fields:z27.record(z27.string(),z27.unknown()),settings:z27.record(z27.string(),z27.unknown()).optional()}),FormSchemaDiffSchema=z27.object({formName:z27.string(),parent:FormSchemaSnapshotSchema.nullable(),child:FormSchemaSnapshotSchema.nullable()}),FormSchemaDiffDTO=createDTO(FormSchemaDiffSchema),FormSchemaDiffResponseSchema=createResponseSchema(FormSchemaDiffSchema),ActivationSnapshotSchema=z27.object({agentName:z27.string(),triggerIndex:z27.number().int().nonnegative(),triggerKind:z27.string(),triggerSpec:z27.record(z27.string(),z27.unknown()),enabled:z27.boolean(),emailRecipients:z27.array(z27.string()).nullable(),qstashScheduleId:z27.string().nullable()}),ActivationDiffSchema=z27.object({agentName:z27.string(),triggerIndex:z27.number().int().nonnegative(),parent:ActivationSnapshotSchema.nullable(),child:ActivationSnapshotSchema.nullable()}),ActivationDiffDTO=createDTO(ActivationDiffSchema),ActivationDiffResponseSchema=createResponseSchema(ActivationDiffSchema),ConflictSchema=z27.object({surface:SurfaceNameSchema,key:z27.string(),kind:z27.enum(["merge-conflict","requires-manual-strategy","cross-surface-integrity"]).optional(),description:z27.string(),parentValue:z27.unknown().optional(),childValue:z27.unknown().optional(),conflictingFields:z27.array(z27.string()).optional(),code:z27.object({path:z27.string(),unresolvable:z27.boolean().optional(),reason:z27.string().optional()}).optional()}),FieldPickSchema=z27.object({field:z27.string(),choice:z27.enum(["parent","child","pick","ai-pick"]),pickedValue:z27.unknown().optional(),aiSessionId:z27.string().optional()}),ConflictResolutionSchema=z27.object({surface:SurfaceNameSchema,key:z27.string(),choice:z27.enum(["parent","child","pick"]),pickedValue:z27.unknown().optional(),fieldPicks:z27.array(FieldPickSchema).optional()}),MergeResultSchema=z27.object({ok:z27.boolean(),mergeId:z27.string().uuid(),fromEnv:EnvSchema,toEnv:EnvSchema,applied:z27.array(z27.object({surface:SurfaceNameSchema,count:z27.number().int().nonnegative()})),conflicts:z27.array(ConflictSchema).optional(),summary:z27.string().optional()}),MergeResultDTO=createDTO(MergeResultSchema),MergeResultResponseSchema=createResponseSchema(MergeResultSchema),EngineStrategySchema=z27.enum(["ff-only","auto","theirs","ours","manual"]),VendorStrategySchema=z27.enum(["ff_only","ff_prefer","merge"]),MergeStrategySchema=z27.object({engine:EngineStrategySchema.optional(),vendor:VendorStrategySchema.optional(),squash:z27.boolean().optional()}),ResolvedStrategySchema=z27.object({engine:EngineStrategySchema,vendor:VendorStrategySchema,squash:z27.boolean()}),MergeRequestSchema=z27.object({from:EnvSchema,allowDirectMerge:z27.boolean().optional(),strategy:MergeStrategySchema.optional()}),MergeInitiateResultSchema=z27.object({mergeId:z27.string().uuid(),streamUrl:z27.string(),strategy:ResolvedStrategySchema,acceptedAt:z27.coerce.date()}),MergeInitiateResultDTO=createDTO(MergeInitiateResultSchema),MergeInitiateResponseSchema=createResponseSchema(MergeInitiateResultSchema),MergeConflictsHydrationSchema=z27.object({mergeId:z27.string().uuid(),fromEnv:EnvSchema,toEnv:EnvSchema,status:z27.enum(["in_progress","complete","failed","rolled_back","conflicts"]),strategy:ResolvedStrategySchema,conflicts:z27.array(ConflictSchema),draftResolutions:z27.array(ConflictResolutionSchema),lastEditedBy:z27.string().nullable(),lastEditedAt:z27.coerce.date().nullable(),initiator:z27.object({userId:z27.string().nullable(),role:z27.string().nullable(),agentName:z27.string().nullable()})}),MergeConflictsHydrationDTO=createDTO(MergeConflictsHydrationSchema),MergeConflictsHydrationResponseSchema=createResponseSchema(MergeConflictsHydrationSchema),MergeResolveDraftRequestSchema=z27.object({resolutions:z27.array(ConflictResolutionSchema)}),MergeResolveDraftResultSchema=z27.object({mergeId:z27.string().uuid(),draftResolutions:z27.array(ConflictResolutionSchema),lastEditedAt:z27.coerce.date(),lastEditedBy:z27.string()}),MergeResolveDraftResultDTO=createDTO(MergeResolveDraftResultSchema),MergeResolveRequestSchema=z27.object({mergeId:z27.string().uuid(),resolutions:z27.array(ConflictResolutionSchema)}),MergeCancelRequestSchema=z27.object({mergeId:z27.string().uuid()}),PublishReleaseRequestSchema=z27.object({version:z27.string().regex(/^v?\d+\.\d+\.\d+(-[\w.]+)?$/,"Use semver (v1.4.2 / 1.4.2 / 1.4.2-rc.1)"),notes:z27.string().max(2e4).optional()}),PublishReleaseResultSchema=z27.object({releaseTag:z27.string(),sha:z27.string(),publishedAt:z27.coerce.date()}),PublishReleaseResultDTO=createDTO(PublishReleaseResultSchema),PublishReleaseResponseSchema=createResponseSchema(PublishReleaseResultSchema)}});import{z as z28}from"zod";var DiffRefSchema,InlineSchema,SummaryBlockSchema,EnvDiffSummarySchema,EnvDiffSummaryResultSchema,EnvDiffSummaryResultDTO,EnvDiffSummaryResponseSchema,init_env_diff_summary_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-diff-summary.dto.js"(){"use strict";init_create_dto();init_response();init_env_status_dto();DiffRefSchema=z28.object({surface:SurfaceNameSchema,key:z28.string(),label:z28.string()}),InlineSchema=z28.object({text:z28.string(),ref:DiffRefSchema.optional()}),SummaryBlockSchema=z28.discriminatedUnion("type",[z28.object({type:z28.literal("paragraph"),content:z28.array(InlineSchema).max(24)}),z28.object({type:z28.literal("preview"),ref:DiffRefSchema,caption:z28.string().optional()}),z28.object({type:z28.literal("code"),code:z28.string(),lang:z28.string().optional(),caption:z28.string().optional()}),z28.object({type:z28.literal("risk"),level:z28.enum(["warning","error"]),content:z28.array(InlineSchema).max(24)}),z28.object({type:z28.literal("list"),items:z28.array(z28.array(InlineSchema).max(24)).max(8)})]),EnvDiffSummarySchema=z28.object({headline:z28.string(),blocks:z28.array(SummaryBlockSchema).max(15)}),EnvDiffSummaryResultSchema=z28.object({summary:EnvDiffSummarySchema,fingerprint:z28.string(),generatedAt:z28.coerce.date(),cached:z28.boolean().optional(),credits:z28.number().int().nonnegative().optional()}),EnvDiffSummaryResultDTO=createDTO(EnvDiffSummaryResultSchema),EnvDiffSummaryResponseSchema=createResponseSchema(EnvDiffSummaryResultSchema)}});import{z as z29}from"zod";var PROJECT_ANALYTICS_PRESETS,PROJECT_ANALYTICS_GROUP_BY_OPTIONS,ProjectDailyVisitorsDTOSchema,ProjectAnalyticsBreakdownItemDTOSchema,ProjectAnalyticsPageBreakdownItemDTOSchema,ProjectAnalyticsRangeDTOSchema,ProjectAnalyticsAnnotationDTOSchema,ProjectPageviewAnalyticsDTOSchema,ProjectPageviewAnalyticsDTO,ProjectAnalyticsAnnotationDTO,init_project_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-analytics.dto.js"(){"use strict";init_create_dto();PROJECT_ANALYTICS_PRESETS=["today","yesterday","this_week","this_month","last_7_days","last_30_days","last_90_days","last_week","last_month","last_quarter","last_year","custom"],PROJECT_ANALYTICS_GROUP_BY_OPTIONS=["day","week","month","quarter"],ProjectDailyVisitorsDTOSchema=z29.object({date:z29.string(),visitors:z29.number().int().nonnegative()}),ProjectAnalyticsBreakdownItemDTOSchema=z29.object({key:z29.string(),visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative()}),ProjectAnalyticsPageBreakdownItemDTOSchema=z29.object({path:z29.string(),pageName:z29.string().nullable().optional(),visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative()}),ProjectAnalyticsRangeDTOSchema=z29.object({preset:z29.enum(PROJECT_ANALYTICS_PRESETS),requestedFrom:z29.string(),requestedTo:z29.string(),effectiveFrom:z29.string(),effectiveTo:z29.string(),isRetentionLimited:z29.boolean(),groupBy:z29.enum(PROJECT_ANALYTICS_GROUP_BY_OPTIONS)}),ProjectAnalyticsAnnotationDTOSchema=z29.object({date:z29.string(),content:z29.string(),updatedAt:z29.string(),updatedByUserId:z29.string()}),ProjectPageviewAnalyticsDTOSchema=z29.object({range:ProjectAnalyticsRangeDTOSchema,visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative(),bounceRate:z29.number().min(0).max(100),viewsPerVisit:z29.number().nonnegative(),averageVisitDurationSeconds:z29.number().nonnegative(),visitorsSeries:z29.array(ProjectDailyVisitorsDTOSchema),topPages:z29.array(ProjectAnalyticsPageBreakdownItemDTOSchema),topBrowsers:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topDevices:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topCountries:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topSources:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),annotations:z29.array(ProjectAnalyticsAnnotationDTOSchema)}),ProjectPageviewAnalyticsDTO=createDTO(ProjectPageviewAnalyticsDTOSchema),ProjectAnalyticsAnnotationDTO=createDTO(ProjectAnalyticsAnnotationDTOSchema)}});import{z as z30}from"zod";var ProjectInviteDTOSchema,ProjectInviteDTO,CreatedProjectInviteDTOSchema,CreatedProjectInviteDTO,AcceptedProjectInviteDTOSchema,AcceptedProjectInviteDTO,init_project_invite_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-invite.dto.js"(){"use strict";init_common();init_create_dto();ProjectInviteDTOSchema=z30.object({id:z30.string(),email:z30.email(),roleKey:ProjectRoleKeySchema,status:ProjectInviteStatusSchema,expiresAt:z30.coerce.date(),createdAt:z30.coerce.date(),inviterUserId:z30.string()}),ProjectInviteDTO=createDTO(ProjectInviteDTOSchema),CreatedProjectInviteDTOSchema=z30.object({id:z30.string(),token:z30.string()}),CreatedProjectInviteDTO=createDTO(CreatedProjectInviteDTOSchema),AcceptedProjectInviteDTOSchema=z30.object({success:z30.boolean(),projectId:z30.string().optional()}),AcceptedProjectInviteDTO=createDTO(AcceptedProjectInviteDTOSchema)}});import{z as z31}from"zod";var PublicUserDTOSchema,PublicUserDTO,ReferralCountCTOSchema,ReferralCountCTO,ReferralSummaryCTOSchema,ReferralSummaryCTO,AuthenticatedUserDTOSchema,AuthenticatedUserDTO,AuthenticatedUserResponseSchema,ReferralCountResponseSchema,ReferralSummaryResponseSchema,init_user_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/user.dto.js"(){"use strict";init_create_dto();init_response();PublicUserDTOSchema=z31.object({id:z31.string(),name:z31.string(),image:z31.string().nullable()}),PublicUserDTO=createDTO(PublicUserDTOSchema),ReferralCountCTOSchema=z31.object({count:z31.int()}),ReferralCountCTO=createDTO(ReferralCountCTOSchema),ReferralSummaryCTOSchema=z31.object({counts:z31.object({signed_up:z31.int(),activated:z31.int()}),credits:z31.object({total:z31.int()})}),ReferralSummaryCTO=createDTO(ReferralSummaryCTOSchema),AuthenticatedUserDTOSchema=PublicUserDTOSchema.extend({email:z31.email(),emailVerified:z31.boolean(),createdAt:z31.coerce.date(),updatedAt:z31.coerce.date()}),AuthenticatedUserDTO=createDTO(AuthenticatedUserDTOSchema),AuthenticatedUserResponseSchema=createResponseSchema(AuthenticatedUserDTOSchema),ReferralCountResponseSchema=createResponseSchema(ReferralCountCTOSchema),ReferralSummaryResponseSchema=createResponseSchema(ReferralSummaryCTOSchema)}});import{z as z32}from"zod";var ProjectAccessItemDTOSchema,ProjectAccessItemDTO,ProjectPermissionsDTOSchema,ProjectPermissionsDTO,ProjectAccessDTOSchema,ProjectAccessDTO,AccessMutationResponseSchema,InviteAcceptResponseSchema,init_project_access_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-access.dto.js"(){"use strict";init_common();init_create_dto();init_response();init_project_invite_dto();init_user_dto();ProjectAccessItemDTOSchema=z32.object({id:z32.string(),principalType:ProjectPrincipalTypeSchema,principalId:z32.string().nullable(),roleKey:ProjectRoleKeySchema,createdAt:z32.coerce.date(),expiresAt:z32.coerce.date().nullable(),user:PublicUserDTOSchema.nullable()}),ProjectAccessItemDTO=createDTO(ProjectAccessItemDTOSchema),ProjectPermissionsDTOSchema=z32.object({role:ProjectRoleKeyWithSystemSchema.nullable(),permissions:z32.record(z32.string(),z32.boolean())}),ProjectPermissionsDTO=createDTO(ProjectPermissionsDTOSchema),ProjectAccessDTOSchema=z32.object({access:z32.array(ProjectAccessItemDTOSchema),invites:z32.array(ProjectInviteDTOSchema),organization:z32.object({name:z32.string().nullable(),logo:z32.string().nullable()}).nullable()}),ProjectAccessDTO=createDTO(ProjectAccessDTOSchema),AccessMutationResponseSchema=createResponseSchema(z32.object({success:z32.boolean()})),InviteAcceptResponseSchema=createResponseSchema(z32.object({success:z32.boolean(),projectId:z32.uuid()}))}});import{z as z33}from"zod";var PublicationStateDTOSchema,PublicationStateDTO,init_publication_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/publication.dto.js"(){"use strict";init_common();init_create_dto();PublicationStateDTOSchema=z33.object({publicationStatus:PublicationStatusSchema,appUrl:z33.string().nullable(),lastPublishedAt:z33.string().nullable()}),PublicationStateDTO=createDTO(PublicationStateDTOSchema)}});import{z as z34}from"zod";var SandboxSessionDTOSchema,SandboxSessionDTO,SandboxSessionResponseSchema,PreviewBootstrapDTOSchema,PreviewBootstrapDTO,PreviewBootstrapResponseSchema,init_sandbox_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/sandbox.dto.js"(){"use strict";init_create_dto();init_response();SandboxSessionDTOSchema=z34.object({url:z34.url(),expiresAt:z34.iso.datetime()}),SandboxSessionDTO=createDTO(SandboxSessionDTOSchema),SandboxSessionResponseSchema=createResponseSchema(SandboxSessionDTOSchema),PreviewBootstrapDTOSchema=z34.discriminatedUnion("source",[z34.object({source:z34.literal("artifact"),artifact:SandboxSessionDTOSchema,dev:z34.null()}),z34.object({source:z34.literal("dev"),artifact:z34.null(),dev:SandboxSessionDTOSchema})]),PreviewBootstrapDTO=createDTO(PreviewBootstrapDTOSchema),PreviewBootstrapResponseSchema=createResponseSchema(PreviewBootstrapDTOSchema)}});import{z as z35}from"zod";var OrganizationDTOSchema,OrganizationDTO,MemberUserDTOSchema,OrganizationMemberDTOSchema,OrganizationMemberDTO,init_organization_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/organization.dto.js"(){"use strict";init_common();init_create_dto();OrganizationDTOSchema=BaseEntitySchema.extend({name:z35.string(),slug:z35.string().nullable(),logo:z35.string().nullable(),metadata:z35.record(z35.string(),z35.unknown()).nullable()}),OrganizationDTO=createDTO(OrganizationDTOSchema),MemberUserDTOSchema=z35.object({id:z35.string(),name:z35.string(),email:z35.email(),image:z35.string().nullable()}),OrganizationMemberDTOSchema=z35.object({id:z35.string(),userId:z35.string(),organizationId:z35.string(),role:OrganizationRoleSchema,user:MemberUserDTOSchema,createdAt:z35.coerce.date()}),OrganizationMemberDTO=createDTO(OrganizationMemberDTOSchema)}});import{z as z36}from"zod";var CancellationReasonCodeSchema,CancellationFeedbackDTOSchema,CancellationFeedbackDTO,AiCreditsEntitlementSchema,EntitlementsDTOSchema,SubscriptionDTOSchema,SubscriptionDTO,DailyCreditsStatusSchema,CreditBalanceDTOSchema,CreditBalanceDTO,MinimalCreditBalanceDTOSchema,MinimalCreditBalanceDTO,ProjectCreditBucketsDTOSchema,ProjectDailyCreditAllowanceDTOSchema,ProjectCreditBalanceDTOSchema,ProjectCreditBalanceDTO,SuccessfulPurchaseDTOSchema,SuccessfulPurchaseDTO,PortalDTOSchema,PortalDTO,CreditBalanceResponseSchema,MinimalCreditBalanceResponseSchema,ProjectCreditBalanceResponseSchema,SuccessfulPurchaseResponseSchema,SubscriptionResponseSchema,EntitlementsResponseSchema,PortalResponseSchema,init_billing_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/billing.dto.js"(){"use strict";init_common();init_create_dto();init_response();CancellationReasonCodeSchema=z36.enum(["just_testing","too_expensive","not_using_enough","missing_features","bug_or_technical_issue","switching_to_another_tool","closing_or_pausing_business","other"]),CancellationFeedbackDTOSchema=z36.object({reason:CancellationReasonCodeSchema,details:z36.string().trim().max(1e3).nullable().optional().transform(value=>value||null)}).superRefine((value,ctx)=>{value.reason==="other"&&!value.details&&ctx.addIssue({code:z36.ZodIssueCode.custom,message:"Details are required when selecting other.",path:["details"]})}),CancellationFeedbackDTO=createDTO(CancellationFeedbackDTOSchema),AiCreditsEntitlementSchema=z36.object({included:z36.number().optional(),unitPrice:z36.number().optional(),dailyCap:z36.number().nullable().optional()}),EntitlementsDTOSchema=z36.object({ai_credits:AiCreditsEntitlementSchema.optional(),analytics:z36.object({retentionDays:z36.number().int().positive(),canUseExtendedDateRanges:z36.boolean()}).optional(),members:z36.object({canInvite:z36.boolean(),maxMembers:z36.number().int().positive().nullable()}).optional(),projects:z36.object({canCreatePrivateProjects:z36.boolean(),maxPrivateProjects:z36.number().int().positive().nullable()}).optional(),domains:z36.object({canUseCustomDomains:z36.boolean(),maxDomains:z36.number().int().nonnegative().nullable()}).optional()}),SubscriptionDTOSchema=z36.object({id:z36.string(),external_id:z36.string(),customerId:z36.string(),planId:z36.string(),planCode:TemplateCodeSchema,currentPeriod:z36.object({start:z36.string(),end:z36.string().nullable()}),cancelAt:z36.string().nullable(),entitlements:EntitlementsDTOSchema,currency:z36.string(),nextPaymentAt:z36.string().nullable(),baseAmount:z36.number()}),SubscriptionDTO=createDTO(SubscriptionDTOSchema),DailyCreditsStatusSchema=z36.object({totalCap:z36.number(),dailyCap:z36.number(),usedTotal:z36.number()}),CreditBalanceDTOSchema=z36.object({total:z36.number(),base:z36.number(),dailyBase:z36.number(),purchases:z36.number(),awards:z36.number(),daily:DailyCreditsStatusSchema.optional()}),CreditBalanceDTO=createDTO(CreditBalanceDTOSchema),MinimalCreditBalanceDTOSchema=z36.object({total:z36.number(),nearLimit:z36.boolean(),canChat:z36.boolean(),daily:DailyCreditsStatusSchema.optional()}),MinimalCreditBalanceDTO=createDTO(MinimalCreditBalanceDTOSchema),ProjectCreditBucketsDTOSchema=z36.object({dailyFreeAvailable:z36.number(),monthlyAvailable:z36.number(),purchasedAvailable:z36.number(),awardedAvailable:z36.number()}),ProjectDailyCreditAllowanceDTOSchema=z36.object({periodCap:z36.number(),dailyGrant:z36.number(),usedThisPeriod:z36.number(),remainingThisPeriod:z36.number()}),ProjectCreditBalanceDTOSchema=z36.object({projectId:z36.uuid(),organizationId:z36.string(),balance:z36.object({totalAvailable:z36.number(),nearLimit:z36.boolean(),canUseAi:z36.boolean(),buckets:ProjectCreditBucketsDTOSchema}),allowances:z36.object({dailyCredits:ProjectDailyCreditAllowanceDTOSchema.nullable()})}),ProjectCreditBalanceDTO=createDTO(ProjectCreditBalanceDTOSchema),SuccessfulPurchaseDTOSchema=z36.object({invoiceId:z36.string(),newBalance:z36.int(),creditCount:z36.int(),amountUsd:z36.number()}),SuccessfulPurchaseDTO=createDTO(SuccessfulPurchaseDTOSchema),PortalDTOSchema=z36.object({url:z36.string()}),PortalDTO=createDTO(PortalDTOSchema),CreditBalanceResponseSchema=createResponseSchema(CreditBalanceDTOSchema),MinimalCreditBalanceResponseSchema=createResponseSchema(MinimalCreditBalanceDTOSchema),ProjectCreditBalanceResponseSchema=createResponseSchema(ProjectCreditBalanceDTOSchema),SuccessfulPurchaseResponseSchema=createResponseSchema(SuccessfulPurchaseDTOSchema),SubscriptionResponseSchema=createResponseSchema(SubscriptionDTOSchema),EntitlementsResponseSchema=createResponseSchema(EntitlementsDTOSchema),PortalResponseSchema=createResponseSchema(PortalDTOSchema)}});import{z as z37}from"zod";var PaymentMethodDTOSchema,PaymentMethodDTO,init_payment_method_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/payment-method.dto.js"(){"use strict";init_create_dto();PaymentMethodDTOSchema=z37.object({brand:z37.string(),last4:z37.string(),exp:z37.string(),isDefault:z37.boolean()}),PaymentMethodDTO=createDTO(PaymentMethodDTOSchema)}});import{z as z38}from"zod";var FieldDefinitionSchema,ContentTypeI18nSchema,ContentTypeDTOSchema,ContentTypeDTO,SchemaDTOSchema,SchemaDTO,EntryDTOSchema,EntryDTO,PaginatedEntriesDTOSchema,PaginatedEntriesDTO,EntryCountDTOSchema,EntryCountDTO,EntryCountsDTOSchema,EntryCountsDTO,ContentTypeResponseSchema,ContentTypeListResponseSchema,SchemaResponseSchema,EntryResponseSchema,EntryListResponseSchema,init_content_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/content.dto.js"(){"use strict";init_common();init_create_dto();init_response();FieldDefinitionSchema=z38.object({type:FieldTypeSchema,editable:z38.boolean().optional()}),ContentTypeI18nSchema=z38.object({enabled:z38.boolean()}).strict(),ContentTypeDTOSchema=z38.object({id:z38.string(),name:z38.string(),label:z38.string(),isSingleton:z38.boolean(),i18n:ContentTypeI18nSchema,fields:z38.record(z38.string(),z38.looseObject(FieldDefinitionSchema.shape)),createdAt:z38.string(),updatedAt:z38.string()}),ContentTypeDTO=createDTO(ContentTypeDTOSchema),SchemaDTOSchema=z38.object({contentTypes:z38.array(ContentTypeDTOSchema)}),SchemaDTO=createDTO(SchemaDTOSchema),EntryDTOSchema=z38.object({id:z38.string(),entryId:z38.string(),documentId:z38.string(),slug:z38.string(),locale:z38.string().optional(),createdAt:z38.string(),updatedAt:z38.string(),__fimo:z38.object({contentType:z38.string()})}).passthrough(),EntryDTO=createDTO(EntryDTOSchema),PaginatedEntriesDTOSchema=z38.object({data:z38.array(EntryDTOSchema),meta:z38.object({limit:z38.number(),offset:z38.number(),total:z38.number(),hasMore:z38.boolean()})}),PaginatedEntriesDTO=createDTO(PaginatedEntriesDTOSchema),EntryCountDTOSchema=z38.object({contentType:z38.string(),count:z38.number()}),EntryCountDTO=createDTO(EntryCountDTOSchema),EntryCountsDTOSchema=z38.object({counts:z38.array(EntryCountDTOSchema)}),EntryCountsDTO=createDTO(EntryCountsDTOSchema),ContentTypeResponseSchema=createResponseSchema(ContentTypeDTOSchema),ContentTypeListResponseSchema=createResponseSchema(z38.array(ContentTypeDTOSchema)),SchemaResponseSchema=createResponseSchema(SchemaDTOSchema),EntryResponseSchema=createResponseSchema(EntryDTOSchema),EntryListResponseSchema=createResponseSchema(z38.array(EntryDTOSchema))}});import{z as z39}from"zod";var CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH,CmsContentTypeNameSchema,CmsFieldNameSchema,CmsCollectionOrderSchema,CmsFieldOrderSchema,CmsListSortSchema,CmsDisplayDefaultsDTOSchema,CmsDisplayDefaultsDTO,CmsCollectionOrderRequestSchema,CmsFieldOrderRequestSchema,CmsDisplayDefaultsResponseSchema,init_cms_display_defaults_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/cms-display-defaults.dto.js"(){"use strict";init_common();init_create_dto();init_response();CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS=200,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH=255,CmsContentTypeNameSchema=z39.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_TYPE_NAME_PATTERN),CmsFieldNameSchema=z39.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_FIELD_NAME_PATTERN),CmsCollectionOrderSchema=z39.array(CmsContentTypeNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsFieldOrderSchema=z39.array(CmsFieldNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsListSortSchema=z39.object({field:CmsFieldNameSchema,direction:z39.enum(["asc","desc"])}),CmsDisplayDefaultsDTOSchema=z39.object({collectionOrder:CmsCollectionOrderSchema.nullable(),fieldOrders:z39.record(CmsContentTypeNameSchema,CmsFieldOrderSchema),listSorts:z39.record(CmsContentTypeNameSchema,CmsListSortSchema)}),CmsDisplayDefaultsDTO=createDTO(CmsDisplayDefaultsDTOSchema),CmsCollectionOrderRequestSchema=z39.object({order:CmsCollectionOrderSchema}),CmsFieldOrderRequestSchema=z39.object({order:CmsFieldOrderSchema}),CmsDisplayDefaultsResponseSchema=createResponseSchema(CmsDisplayDefaultsDTOSchema)}});import{z as z40}from"zod";var AssetPathItemSchema,AssetDTOSchema,AssetDTO,AssetTreeNodeDTOSchema,AssetTreeNodeDTO,AssetResponseSchema,AssetListResponseSchema,init_asset_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset.dto.js"(){"use strict";init_common();init_create_dto();init_response();AssetPathItemSchema=z40.object({id:z40.string(),name:z40.string()}),AssetDTOSchema=z40.object({id:z40.string(),name:z40.string(),type:AssetTypeSchema,originalFileName:z40.string().nullable(),parentId:z40.string().nullable(),mimeType:z40.string().nullable(),fileSize:z40.number().nullable(),url:z40.string().nullable(),storageKey:z40.string().nullable(),createdAt:z40.string(),updatedAt:z40.string(),altText:z40.string().nullable().optional(),caption:z40.string().nullable().optional(),aiCaption:z40.string().nullable().optional(),aiAltText:z40.string().nullable().optional(),aiTags:z40.array(z40.string()).nullable().optional(),aiPrimaryColor:z40.string().nullable().optional(),aiProcessingStatus:z40.string().nullable().optional(),width:z40.number().nullable().optional(),height:z40.number().nullable().optional(),path:z40.array(AssetPathItemSchema).optional(),hasChildren:z40.boolean().optional()}),AssetDTO=createDTO(AssetDTOSchema),AssetTreeNodeDTOSchema=AssetDTOSchema.extend({children:z40.lazy(()=>z40.array(AssetTreeNodeDTOSchema)).optional()}),AssetTreeNodeDTO=createDTO(AssetTreeNodeDTOSchema),AssetResponseSchema=createResponseSchema(AssetDTOSchema),AssetListResponseSchema=createResponseSchema(z40.array(AssetDTOSchema))}});import{z as z41}from"zod";var TranslationDTOSchema,TranslationDTO,init_translation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/translation.dto.js"(){"use strict";init_create_dto();TranslationDTOSchema=z41.object({key:z41.string(),value:z41.string().optional(),defaultValue:z41.string(),locale:z41.string()}),TranslationDTO=createDTO(TranslationDTOSchema)}});import{z as z42}from"zod";var DocumentNodeDTOSchema,DocumentTreeDTOSchema,DocumentPathDTOSchema,DocumentPathDTO,DocumentTreeResponseSchema,DocumentPathResponseSchema,init_document_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/document.dto.js"(){"use strict";init_create_dto();init_response();DocumentNodeDTOSchema=z42.object({id:z42.string(),name:z42.string(),type:z42.enum(["file","folder"]),path:z42.string(),children:z42.lazy(()=>z42.array(DocumentNodeDTOSchema)).optional()}),DocumentTreeDTOSchema=z42.array(DocumentNodeDTOSchema),DocumentPathDTOSchema=z42.object({path:z42.string(),exists:z42.boolean(),type:z42.enum(["file","folder"]).optional()}),DocumentPathDTO=createDTO(DocumentPathDTOSchema),DocumentTreeResponseSchema=createResponseSchema(DocumentTreeDTOSchema),DocumentPathResponseSchema=createResponseSchema(DocumentPathDTOSchema)}});import{z as z43}from"zod";var ChatMessageListDTOSchema,ChatMessagesPageDTOSchema,ChatDeletionDTOSchema,ChatDeletionDTO,ChatMessageListResponseSchema,ChatMessagesPageResponseSchema,ChatDeletionResponseSchema,init_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat.dto.js"(){"use strict";init_create_dto();init_response();init_project_dto();ChatMessageListDTOSchema=z43.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z43.object({items:z43.array(ProjectMessagePublicDTOSchema),nextCursor:z43.string().nullable()}),ChatDeletionDTOSchema=z43.object({success:z43.boolean(),deletedCount:z43.number()}),ChatDeletionDTO=createDTO(ChatDeletionDTOSchema),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema),ChatDeletionResponseSchema=createResponseSchema(ChatDeletionDTOSchema)}});import{z as z44}from"zod";var UploadResultDTOSchema,UploadResultDTO,UploadResultResponseSchema,init_upload_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/upload.dto.js"(){"use strict";init_common();init_create_dto();init_response();UploadResultDTOSchema=z44.object({url:z44.string().url(),key:z44.string(),size:z44.number(),contentType:z44.string(),uploadedAt:CommonSchemas.timestamp}),UploadResultDTO=createDTO(UploadResultDTOSchema),UploadResultResponseSchema=createResponseSchema(UploadResultDTOSchema)}});import{z as z45}from"zod";var ServicePermissionsDTOSchema,ServicePermissionsDTO,ServicePermissionsResponseSchema,init_service_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/service.dto.js"(){"use strict";init_create_dto();init_response();ServicePermissionsDTOSchema=z45.object({canAccess:z45.boolean(),permissions:z45.record(z45.string(),z45.boolean()),role:z45.string().nullable()}),ServicePermissionsDTO=createDTO(ServicePermissionsDTOSchema),ServicePermissionsResponseSchema=createResponseSchema(ServicePermissionsDTOSchema)}});import{z as z46}from"zod";var OrganizationProjectsSearchQuerySchema,init_search_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/search.dto.js"(){"use strict";init_pagination();OrganizationProjectsSearchQuerySchema=PaginationQuerySchema.extend({q:z46.string().trim().default(""),sort:z46.enum(["recent","name","relevance"]).default("recent"),category:z46.string().optional(),visibility:z46.enum(["public","private"]).optional()})}});import{z as z47}from"zod";var DomainStatusSchema,DomainSourceSchema,PaymentStatusSchema,DomainDTOSchema,DomainDTO,DomainSearchResultDTOSchema,DomainSearchResultDTO,DomainPricingDTOSchema,DomainPricingDTO,DomainContactSchema,DomainContactDTO,UpdateDomainContactsRequestSchema,SearchDomainsRequestSchema,CheckAvailabilityRequestSchema,DOMAIN_NAME_REGEX,DomainNameSchema,PurchaseDomainRequestSchema,UpdateDomainSettingsRequestSchema,RenewDomainRequestSchema,DomainResponseSchema,DomainListResponseSchema,DomainSearchResultListResponseSchema,DomainPricingResponseSchema,DomainContactResponseSchema,ContactVerificationStatusSchema,ContactVerificationStatusResponseSchema,init_registered_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/registered-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();DomainStatusSchema=z47.enum(["pending_payment","registering","owned","registration_failed","payment_failed","expiring","expired"]),DomainSourceSchema=z47.enum(["fimo","external"]),PaymentStatusSchema=z47.enum(["pending","paid","failed","refunded"]),DomainDTOSchema=z47.object({id:z47.string().uuid(),domain:z47.string(),status:DomainStatusSchema,source:DomainSourceSchema,registrationDate:CommonSchemas.timestamp.nullable(),expirationDate:CommonSchemas.timestamp.nullable(),autoRenew:z47.boolean(),price:z47.number().int().nullable(),renewalPrice:z47.number().int().nullable(),paymentStatus:PaymentStatusSchema.nullable(),checkoutUrl:z47.string().nullable(),failureReason:z47.string().nullable(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),DomainDTO=createDTO(DomainDTOSchema),DomainSearchResultDTOSchema=z47.object({domain:z47.string(),available:z47.boolean(),premium:z47.boolean(),price:z47.number().nullable(),renewalPrice:z47.number().nullable(),purchaseType:z47.string().nullable()}),DomainSearchResultDTO=createDTO(DomainSearchResultDTOSchema),DomainPricingDTOSchema=z47.object({domain:z47.string(),price:z47.number().nullable(),renewalPrice:z47.number().nullable(),premium:z47.boolean(),allowedYears:z47.array(z47.number().int().positive())}),DomainPricingDTO=createDTO(DomainPricingDTOSchema),DomainContactSchema=z47.object({firstName:z47.string().max(100),lastName:z47.string().max(100),companyName:z47.string().max(100).optional(),address1:z47.string().max(255),address2:z47.string().max(255).optional(),city:z47.string().max(100),state:z47.string().max(100),zip:z47.string().max(20),country:z47.string().max(2),phone:z47.string().max(30),email:z47.union([z47.string().email().max(255),z47.literal("")])}),DomainContactDTO=createDTO(DomainContactSchema),UpdateDomainContactsRequestSchema=z47.object({firstName:z47.string().min(1).max(100),lastName:z47.string().min(1).max(100),companyName:z47.string().max(100).optional(),address1:z47.string().min(1).max(255),address2:z47.string().max(255).optional(),city:z47.string().min(1).max(100),state:z47.string().min(1).max(100),zip:z47.string().min(1).max(20),country:z47.string().min(1).max(2),phone:z47.string().min(1).max(30),email:z47.string().email().max(255)}),SearchDomainsRequestSchema=z47.object({keyword:z47.string().min(1).max(100),tldFilter:z47.array(z47.string()).optional()}),CheckAvailabilityRequestSchema=z47.object({domains:z47.array(z47.string()).min(1).max(50)}),DOMAIN_NAME_REGEX=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,DomainNameSchema=z47.string().min(1).max(255).regex(DOMAIN_NAME_REGEX,{message:"Invalid domain name"}),PurchaseDomainRequestSchema=z47.object({domain:DomainNameSchema,years:z47.number().int().min(1).max(10).optional().default(3),autoRenew:z47.boolean().optional().default(!0)}),UpdateDomainSettingsRequestSchema=z47.object({autoRenew:z47.boolean().optional()}),RenewDomainRequestSchema=z47.object({years:z47.number().int().min(1).max(10).optional().default(1),autoRenew:z47.boolean().optional().default(!0)}),DomainResponseSchema=createResponseSchema(DomainDTOSchema),DomainListResponseSchema=createResponseSchema(z47.array(DomainDTOSchema)),DomainSearchResultListResponseSchema=createResponseSchema(z47.array(DomainSearchResultDTOSchema)),DomainPricingResponseSchema=createResponseSchema(DomainPricingDTOSchema),DomainContactResponseSchema=createResponseSchema(DomainContactSchema.nullable()),ContactVerificationStatusSchema=z47.object({verified:z47.boolean(),email:z47.string().nullable(),verifyBy:z47.string().nullable()}),ContactVerificationStatusResponseSchema=createResponseSchema(ContactVerificationStatusSchema)}});import{z as z48}from"zod";var ProjectDomainStatusSchema,SSLStatusSchema,SSLValidationRecordSchema,SSLValidationErrorSchema,OwnershipVerificationSchema,ProjectDomainSSLDTOSchema,DomainProviderSchema,DomainTypeSchema,RedirectConfigSchema,ProjectDomainDTOSchema,ProjectDomainDTO,ProjectDomainListResponseSchema,ProjectDomainResponseSchema,AddProjectDomainRequestSchema,CheckProjectDomainHostnameReasonSchema,CheckProjectDomainHostnameResponseSchema,DeleteProjectDomainResponseSchema,init_project_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();ProjectDomainStatusSchema=z48.enum(["pending","active","pending_validation","active_redeploying","moved","deleted","pending_deletion","pending_migration","pending_provisioned","test_pending","test_active","test_active_apex","test_blocked","test_failed","provisioned","blocked"]),SSLStatusSchema=z48.enum(["initializing","pending_validation","pending_issuance","pending_deployment","pending_expiration","expired","active","deleted","pending_cleanup","staging_deployment","staging_active","deactivating","inactive","backup_issued","holding_deployment"]),SSLValidationRecordSchema=z48.object({txtName:z48.string().nullable().optional(),txtValue:z48.string().nullable().optional(),httpUrl:z48.string().nullable().optional(),httpBody:z48.string().nullable().optional(),cname:z48.string().nullable().optional(),cnameTarget:z48.string().nullable().optional()}),SSLValidationErrorSchema=z48.object({message:z48.string()}),OwnershipVerificationSchema=z48.object({type:z48.string(),name:z48.string(),value:z48.string()}),ProjectDomainSSLDTOSchema=z48.object({status:z48.string(),method:z48.string().nullable(),type:z48.string().nullable(),validationRecords:z48.array(SSLValidationRecordSchema).nullable().optional(),validationErrors:z48.array(SSLValidationErrorSchema).nullable().optional()}),DomainProviderSchema=z48.enum(["cloudflare","saas_custom_domains"]),DomainTypeSchema=z48.enum(["subdomain","apex"]),RedirectConfigSchema=z48.object({type:z48.literal("apex_to_www"),linkedDomainId:z48.string()}).nullable().optional(),ProjectDomainDTOSchema=z48.object({id:z48.string(),hostname:z48.string(),status:z48.string(),ssl:ProjectDomainSSLDTOSchema,ownershipVerification:z48.array(OwnershipVerificationSchema).nullable().optional(),cnameTarget:z48.string(),scdCnameTarget:z48.string().optional(),apexTargets:z48.array(z48.string()),dnsAutoConfigured:z48.boolean(),createdAt:CommonSchemas.timestamp,provider:DomainProviderSchema,domainType:DomainTypeSchema,redirectConfig:RedirectConfigSchema,migrationStatus:z48.string().nullable().optional()}),ProjectDomainDTO=createDTO(ProjectDomainDTOSchema),ProjectDomainListResponseSchema=createResponseSchema(z48.array(ProjectDomainDTOSchema)),ProjectDomainResponseSchema=createResponseSchema(ProjectDomainDTOSchema),AddProjectDomainRequestSchema=z48.object({hostname:z48.hostname().regex(/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,{error:"Invalid hostname"}).refine(value=>!/\.fimo\.site$/i.test(value),{error:"This is a Fimo-owned domain. Edit your built-in URL instead."}),redirectToWww:z48.boolean().optional()}),CheckProjectDomainHostnameReasonSchema=z48.enum(["invalid_hostname","fimo_owned_hostname","reserved","taken_by_another_project","taken_by_this_project"]),CheckProjectDomainHostnameResponseSchema=createResponseSchema(z48.object({available:z48.boolean(),reason:CheckProjectDomainHostnameReasonSchema.optional()})),DeleteProjectDomainResponseSchema=createResponseSchema(z48.object({success:z48.boolean(),hostname:z48.string()}))}});import{z as z49}from"zod";var SUBDOMAIN_REGEX,SubdomainCheckReasonSchema,CheckProjectSubdomainResponseSchema,UpdateProjectSubdomainRequestSchema,UpdateProjectSubdomainErrorReasonSchema,UpdateProjectSubdomainResponseSchema,SubdomainSuggestionsQuerySchema,SubdomainSuggestionsResponseSchema,init_project_subdomain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-subdomain.dto.js"(){"use strict";init_response();SUBDOMAIN_REGEX=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/,SubdomainCheckReasonSchema=z49.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain"]),CheckProjectSubdomainResponseSchema=createResponseSchema(z49.object({available:z49.boolean(),reason:SubdomainCheckReasonSchema.optional()})),UpdateProjectSubdomainRequestSchema=z49.object({slug:z49.string().min(1).max(63).regex(SUBDOMAIN_REGEX,{error:"Invalid subdomain shape"})}),UpdateProjectSubdomainErrorReasonSchema=z49.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain","kv_sync_failed"]),UpdateProjectSubdomainResponseSchema=createResponseSchema(z49.object({subdomain:z49.string(),subdomainUpdatedAt:z49.coerce.date()})),SubdomainSuggestionsQuerySchema=z49.object({base:z49.string().max(100).optional(),max:z49.coerce.number().int().min(1).max(10).optional()}),SubdomainSuggestionsResponseSchema=createResponseSchema(z49.object({suggestions:z49.array(z49.string())}))}});import{z as z50}from"zod";function flag(key,description,options={}){return{name:key.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),key,description,type:options.type??"string",required:options.required??!1,...options.defaultValue!==void 0?{defaultValue:options.defaultValue}:{},...options.enumValues?{enumValues:[...options.enumValues]}:{},isArray:options.isArray??!1}}var GENERATION_QUALITIES,GENERATION_ASPECT_RATIOS,GENERATION_TASK_IDS,GenerationQualitySchema,GenerationTaskIdSchema,GENERATION_TASK_MANIFESTS,GenerationTaskEstimateDTOSchema,GenerationTaskEstimateDTO,init_generation_task_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation-task.dto.js"(){"use strict";init_create_dto();GENERATION_QUALITIES=["draft","standard","premium"],GENERATION_ASPECT_RATIOS=["1:1","16:9","9:16","4:3","3:4"],GENERATION_TASK_IDS=["image.generate","image.edit","image.remove-background","image.upscale","video.generate","video.animate","video.replace"],GenerationQualitySchema=z50.enum(GENERATION_QUALITIES),GenerationTaskIdSchema=z50.enum(GENERATION_TASK_IDS);__name(flag,"flag");GENERATION_TASK_MANIFESTS=[{id:"image.generate",modality:"image",operation:"generate",displayName:"Generate image",description:"Create an image from a prompt. Quality selects the appropriate generation route.",flags:[flag("prompt","Generation prompt",{required:!0}),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.edit",modality:"image",operation:"edit",displayName:"Edit image",description:"Transform up to five source images using a natural-language instruction.",flags:[flag("prompt","Editing instruction",{required:!0}),flag("images","Source asset id or absolute URL; repeatable up to five times",{required:!0,isArray:!0}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.remove-background",modality:"image",operation:"remove-background",displayName:"Remove image background",description:"Remove the background from one image and return a transparent cutout.",flags:[flag("image","Source asset id or absolute URL",{required:!0})]},{id:"image.upscale",modality:"image",operation:"upscale",displayName:"Upscale image",description:"Increase image resolution while preserving and optionally enhancing detail.",flags:[flag("image","Source asset id or absolute URL",{required:!0}),flag("targetMegapixels","Target resolution in megapixels",{type:"integer",defaultValue:4}),flag("outputFormat","Output image format",{type:"enum",defaultValue:"png",enumValues:["webp","jpg","png"]}),flag("enhanceDetails","Improve fine detail during upscaling",{type:"boolean",defaultValue:!0}),flag("enhanceRealism","Favor photorealistic detail reconstruction",{type:"boolean",defaultValue:!1})]},{id:"video.generate",modality:"video",operation:"generate",displayName:"Generate video",description:"Create a video from text or animate one source image. Loop closes the final frame back to the first.",flags:[flag("prompt","Generation and motion prompt",{required:!0}),flag("image","Optional source asset id or absolute URL"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"16:9",enumValues:GENERATION_ASPECT_RATIOS}),flag("duration","Duration in seconds; loops support 3 to 20 seconds",{type:"integer",defaultValue:5}),flag("includeAudio","Generate audio with the video",{type:"boolean",defaultValue:!1}),flag("loop","Make the final frame return to the source image",{type:"boolean",defaultValue:!1})]},{id:"video.animate",modality:"video",operation:"animate",displayName:"Animate image from video",description:"Apply the motion and camera movement from a source video to a reference image.",flags:[flag("video","Motion source asset id or absolute URL",{required:!0}),flag("image","Subject reference asset id or absolute URL",{required:!0}),flag("prompt","Optional instruction for the animation"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]},{id:"video.replace",modality:"video",operation:"replace",displayName:"Replace subjects in video",description:"Replace people in a source video with one to three reference identities while preserving motion.",flags:[flag("video","Source video asset id or absolute URL",{required:!0}),flag("images","Identity reference asset id or URL; repeatable up to three times",{required:!0,isArray:!0}),flag("prompt","Optional placement instruction"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]}],GenerationTaskEstimateDTOSchema=z50.object({task:GenerationTaskIdSchema,quality:GenerationQualitySchema.optional(),costUsd:z50.number(),credits:z50.number().optional(),billingMode:z50.enum(["fimo-credits","provider-account"]).optional(),confidence:z50.enum(["exact","estimated","metered"]),basis:z50.string()}),GenerationTaskEstimateDTO=createDTO(GenerationTaskEstimateDTOSchema)}});import{z as z51}from"zod";var GenerateRequestBaseSchema,GenerateRequestDTOSchema,GenerateRequestDTO,GenerateResponseDataSchema,GenerateResponseDTO,GenerateResponseSchema,GenerateErrorSchema,init_generation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation.dto.js"(){"use strict";init_create_dto();init_response();init_asset_dto();init_generation_task_dto();GenerateRequestBaseSchema=z51.object({options:z51.record(z51.string(),z51.unknown()),name:z51.string().optional(),parentId:z51.string().nullable().optional(),altText:z51.string().optional(),caption:z51.string().optional()}),GenerateRequestDTOSchema=GenerateRequestBaseSchema.extend({task:z51.string().min(1).optional(),model:z51.string().min(1).optional()}).superRefine((value,context)=>{!!value.task==!!value.model&&context.addIssue({code:"custom",message:"Provide exactly one of task or model",path:["task"]})}),GenerateRequestDTO=createDTO(GenerateRequestDTOSchema),GenerateResponseDataSchema=z51.object({jobId:z51.string(),status:z51.enum(["queued","running","completed","failed"]),asset:AssetDTOSchema.optional(),error:z51.string().nullable().optional(),credits:z51.number().optional(),costUsd:z51.number().optional(),billingMode:z51.enum(["fimo-credits","provider-account"]).optional(),task:GenerationTaskIdSchema.optional(),quality:GenerationQualitySchema.optional()}),GenerateResponseDTO=createDTO(GenerateResponseDataSchema),GenerateResponseSchema=createResponseSchema(GenerateResponseDataSchema),GenerateErrorSchema=z51.object({error:z51.string(),code:z51.enum(["unknown-task","unknown-model","options-invalid","source-invalid","task-routing-failed","generation-failed","provider-error","cost-limit-exceeded","cost-estimate-unavailable","unsupported-modality"]),availableTasks:z51.array(GenerationTaskIdSchema).optional(),availableModels:z51.array(z51.string()).optional(),issues:z51.array(z51.unknown()).optional()})}});import{z as z52}from"zod";var FlagTypeSchema,FlagSpecSchema,AssetModelPriceSchema,AssetModelDTOSchema,AssetModelDTO,AssetModelEstimateDTOSchema,AssetModelEstimateDTO,init_asset_model_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset-model.dto.js"(){"use strict";init_create_dto();FlagTypeSchema=z52.enum(["string","number","integer","boolean","enum","array","unknown"]),FlagSpecSchema=z52.object({name:z52.string(),key:z52.string(),description:z52.string(),type:FlagTypeSchema,required:z52.boolean(),defaultValue:z52.unknown().optional(),enumValues:z52.array(z52.string()).optional(),isArray:z52.boolean()}),AssetModelPriceSchema=z52.object({unitPrice:z52.number(),unit:z52.string(),confidence:z52.enum(["exact","estimated","metered"])}),AssetModelDTOSchema=z52.object({id:z52.string(),shortName:z52.string(),provider:z52.string(),source:z52.string(),modality:z52.enum(["image","video","audio"]),tags:z52.array(z52.string()),displayName:z52.string(),description:z52.string(),flags:z52.array(FlagSpecSchema),price:AssetModelPriceSchema.nullable()}),AssetModelDTO=createDTO(AssetModelDTOSchema),AssetModelEstimateDTOSchema=z52.object({model:z52.string(),costUsd:z52.number(),credits:z52.number(),billingMode:z52.enum(["fimo-credits","provider-account"]),confidence:z52.enum(["exact","estimated","metered"]),basis:z52.string()}),AssetModelEstimateDTO=createDTO(AssetModelEstimateDTOSchema)}});import{z as z53}from"zod";var UserTourDTOSchema,UserTourDTO,UserTourResponseSchema,UserTourListResponseSchema,init_tour_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/tour.dto.js"(){"use strict";init_create_dto();init_response();UserTourDTOSchema=z53.object({tourId:z53.string(),version:z53.string(),status:z53.string(),completedAt:z53.coerce.date()}),UserTourDTO=createDTO(UserTourDTOSchema),UserTourResponseSchema=createResponseSchema(UserTourDTOSchema),UserTourListResponseSchema=createResponseSchema(z53.array(UserTourDTOSchema))}});import{z as z54}from"zod";var SUPPORT_REPORT_CATEGORIES,SupportReportCategorySchema,SUPPORT_REPORT_STATUSES,SupportReportStatusSchema,SupportReportSourceSchema,SupportReportDeliveryStatusSchema,SUPPORT_REPORT_LINK_KINDS,SupportReportLinkKindSchema,SupportReportEventKindSchema,SupportReportActorKindSchema,SupportReportTagSchema,SupportReportHttpUrlSchema,SupportReportContextInputSchema,CreateSupportReportInputSchema,SupportReportListQuerySchema,UpdateSupportReportInputSchema,CreateSupportReportMessageInputSchema,CreateSupportReportLinkInputSchema,SupportReportActorDTOSchema,SupportReportLinkDTOSchema,SupportReportLinkDTO,SupportReportEventDTOSchema,SupportReportEventDTO,SupportReportSummaryDTOSchema,SupportReportSummaryDTO,SupportReportDetailDTOSchema,SupportReportDetailDTO,SupportReportListDTOSchema,SupportReportListDTO,CreateSupportReportResultDTOSchema,CreateSupportReportResultDTO,init_support_report_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/support-report.dto.js"(){"use strict";init_create_dto();SUPPORT_REPORT_CATEGORIES=[{value:"account_billing",label:"Account & billing"},{value:"project_issues",label:"Project issues"},{value:"ai_prompt_output_quality",label:"AI prompt & output quality"},{value:"roles_access_collaboration",label:"Roles, access & collaboration"},{value:"code_technical_questions",label:"Code & technical questions"},{value:"others",label:"Other"}],SupportReportCategorySchema=z54.enum(SUPPORT_REPORT_CATEGORIES.map(category=>category.value)),SUPPORT_REPORT_STATUSES=["new","in_progress","waiting","resolved","duplicate","irrelevant","ignored"],SupportReportStatusSchema=z54.enum(SUPPORT_REPORT_STATUSES),SupportReportSourceSchema=z54.enum(["app","cli","agent"]),SupportReportDeliveryStatusSchema=z54.enum(["pending","delivered","failed"]),SUPPORT_REPORT_LINK_KINDS=["linear","pylon","project","sentry","grafana","other"],SupportReportLinkKindSchema=z54.enum(SUPPORT_REPORT_LINK_KINDS),SupportReportEventKindSchema=z54.enum(["report_created","report_updated","message","link_added","link_removed","delivery"]),SupportReportActorKindSchema=z54.enum(["user","agent","system"]),SupportReportTagSchema=z54.string().trim().min(1).max(50),SupportReportHttpUrlSchema=z54.url({protocol:/^https?$/}).max(2e3),SupportReportContextInputSchema=z54.object({organization:z54.object({id:z54.string().trim().min(1).max(255),name:z54.string().trim().max(240).optional()}),project:z54.object({id:z54.uuid(),name:z54.string().trim().max(240).optional(),createdAt:z54.coerce.date().optional()}).optional(),environment:z54.string().trim().max(255).optional(),clientVersion:z54.string().trim().max(64).optional()}),CreateSupportReportInputSchema=z54.object({message:z54.string().trim().min(1).max(2e4),category:SupportReportCategorySchema,source:SupportReportSourceSchema.default("app"),context:SupportReportContextInputSchema}),SupportReportListQuerySchema=z54.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:SupportReportTagSchema.optional(),query:z54.string().trim().max(200).optional(),limit:z54.coerce.number().int().min(1).max(100).default(50),offset:z54.coerce.number().int().min(0).default(0)}),UpdateSupportReportInputSchema=z54.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z54.array(SupportReportTagSchema).max(20).optional(),duplicateOfReportId:z54.uuid().nullable().optional(),note:z54.string().trim().min(1).max(2e4).optional()}).refine(input=>Object.values(input).some(value=>value!==void 0),{message:"At least one report change is required"}),CreateSupportReportMessageInputSchema=z54.object({message:z54.string().trim().min(1).max(2e4)}),CreateSupportReportLinkInputSchema=z54.object({kind:SupportReportLinkKindSchema,label:z54.string().trim().min(1).max(240),url:SupportReportHttpUrlSchema,externalId:z54.string().trim().max(240).optional()}),SupportReportActorDTOSchema=z54.object({kind:SupportReportActorKindSchema,id:z54.string().nullable(),name:z54.string().nullable()}),SupportReportLinkDTOSchema=z54.object({id:z54.uuid(),kind:SupportReportLinkKindSchema,label:z54.string(),url:SupportReportHttpUrlSchema,externalId:z54.string().nullable(),addedBy:SupportReportActorDTOSchema,createdAt:z54.coerce.date()}),SupportReportLinkDTO=createDTO(SupportReportLinkDTOSchema),SupportReportEventDTOSchema=z54.object({id:z54.uuid(),kind:SupportReportEventKindSchema,body:z54.string().nullable(),metadata:z54.record(z54.string(),z54.unknown()),actor:SupportReportActorDTOSchema,createdAt:z54.coerce.date()}),SupportReportEventDTO=createDTO(SupportReportEventDTOSchema),SupportReportSummaryDTOSchema=z54.object({id:z54.uuid(),status:SupportReportStatusSchema,category:SupportReportCategorySchema,tags:z54.array(z54.string()),source:SupportReportSourceSchema,message:z54.string(),reporter:z54.object({id:z54.string().nullable(),name:z54.string().nullable(),email:z54.string().nullable()}),organization:z54.object({id:z54.string().nullable(),name:z54.string()}),project:z54.object({id:z54.uuid().nullable(),name:z54.string()}).nullable(),assignee:SupportReportActorDTOSchema.nullable(),delivery:z54.object({status:SupportReportDeliveryStatusSchema,pylonIssueId:z54.string().nullable(),pylonIssueUrl:SupportReportHttpUrlSchema.nullable(),error:z54.string().nullable(),deliveredAt:z54.coerce.date().nullable()}),duplicateOfReportId:z54.uuid().nullable(),resolvedAt:z54.coerce.date().nullable(),createdAt:z54.coerce.date(),updatedAt:z54.coerce.date()}),SupportReportSummaryDTO=createDTO(SupportReportSummaryDTOSchema),SupportReportDetailDTOSchema=SupportReportSummaryDTOSchema.extend({environment:z54.string().nullable(),clientVersion:z54.string().nullable(),links:z54.array(SupportReportLinkDTOSchema),events:z54.array(SupportReportEventDTOSchema)}),SupportReportDetailDTO=createDTO(SupportReportDetailDTOSchema),SupportReportListDTOSchema=z54.object({reports:z54.array(SupportReportSummaryDTOSchema),total:z54.number().int().nonnegative(),statusCounts:z54.object({new:z54.number().int().nonnegative(),in_progress:z54.number().int().nonnegative(),waiting:z54.number().int().nonnegative(),resolved:z54.number().int().nonnegative(),duplicate:z54.number().int().nonnegative(),irrelevant:z54.number().int().nonnegative(),ignored:z54.number().int().nonnegative()}),deliveryFailedCount:z54.number().int().nonnegative(),limit:z54.number().int().positive(),offset:z54.number().int().nonnegative()}),SupportReportListDTO=createDTO(SupportReportListDTOSchema),CreateSupportReportResultDTOSchema=z54.object({id:z54.uuid(),deliveryStatus:SupportReportDeliveryStatusSchema,message:z54.string()}),CreateSupportReportResultDTO=createDTO(CreateSupportReportResultDTOSchema)}});import{z as z55}from"zod";var SubscriptionStatusSchema,CreditBalanceBreakdownDTOSchema,CreditBalanceBreakdownDTO,SubscriptionPlanDTOSchema,SubscriptionPlanDTO,SubscriptionPaymentMethodDTOSchema,SubscriptionPaymentMethodDTO,SubscriptionPricingDTOSchema,SubscriptionPricingDTO,SubscriptionDetailsDTOSchema,SubscriptionDetailsDTO,CreditAlertDTOSchema,CreditAlertDTO,PlanAllocationDTOSchema,PlanAllocationDTO,LatestCancellationDTOSchema,LatestCancellationDTO,OrganizationSubscriptionDTOSchema,OrganizationSubscriptionDTO,BaseCreditTopupRequestSchema,FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema,CreditTopupRequestDTOSchema,CreditTopupRequestDTO,CreditTopupResponseDTOSchema,CreditTopupResponseDTO,init_subscription_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/subscription.dto.js"(){"use strict";init_common();init_create_dto();init_billing_dto();SubscriptionStatusSchema=z55.enum(["active","cancelled","draft","errored","paused","pending","voided"]),CreditBalanceBreakdownDTOSchema=z55.object({total:z55.number(),base:z55.number(),purchases:z55.number(),awards:z55.number()}),CreditBalanceBreakdownDTO=createDTO(CreditBalanceBreakdownDTOSchema),SubscriptionPlanDTOSchema=z55.object({id:z55.string(),name:z55.string()}),SubscriptionPlanDTO=createDTO(SubscriptionPlanDTOSchema),SubscriptionPaymentMethodDTOSchema=z55.object({type:z55.string(),brand:z55.string().nullable(),last4:z55.string().nullable(),expirationDate:z55.string().nullable()}),SubscriptionPaymentMethodDTO=createDTO(SubscriptionPaymentMethodDTOSchema),SubscriptionPricingDTOSchema=z55.object({currency:z55.string(),nextPaymentAmount:z55.number().nullable(),nextPaymentAt:z55.string().nullable(),billingInterval:z55.string().nullable(),totalAmount:z55.number().nullable(),discountAmount:z55.number().nullable()}),SubscriptionPricingDTO=createDTO(SubscriptionPricingDTOSchema),SubscriptionDetailsDTOSchema=z55.object({id:z55.string(),status:SubscriptionStatusSchema,plan:SubscriptionPlanDTOSchema.nullable(),currentPeriodStartedAt:z55.string().nullable(),currentPeriodEndsAt:z55.string().nullable(),renewsAt:z55.string().nullable(),cancelAt:z55.string().nullable(),renewAutomatically:z55.boolean(),pricing:SubscriptionPricingDTOSchema.nullable(),paymentMethod:SubscriptionPaymentMethodDTOSchema.nullable()}),SubscriptionDetailsDTO=createDTO(SubscriptionDetailsDTOSchema),CreditAlertDTOSchema=z55.object({type:z55.enum(["low_balance","critical_balance","approaching_limit"]),message:z55.string(),estimatedPromptsRemaining:z55.number().nullable(),avgCostPerPrompt:z55.number().nullable()}),CreditAlertDTO=createDTO(CreditAlertDTOSchema),PlanAllocationDTOSchema=z55.object({monthlyCredits:z55.number().nullable(),usedThisPeriod:z55.number(),remainingThisPeriod:z55.number()}),PlanAllocationDTO=createDTO(PlanAllocationDTOSchema),LatestCancellationDTOSchema=z55.object({organizationId:z55.string(),planCode:TemplateCodeSchema,reason:CancellationReasonCodeSchema,details:z55.string().nullable(),tenureDays:z55.number().int().nonnegative(),capturedAt:z55.string()}),LatestCancellationDTO=createDTO(LatestCancellationDTOSchema),OrganizationSubscriptionDTOSchema=z55.object({hasSubscription:z55.boolean(),subscription:SubscriptionDetailsDTOSchema.nullable(),credits:CreditBalanceBreakdownDTOSchema,planAllocation:PlanAllocationDTOSchema.nullable(),lowBalanceThreshold:z55.number().nullable(),alerts:z55.array(CreditAlertDTOSchema),portalUrl:z55.string().nullable(),latestCancellation:LatestCancellationDTOSchema.nullable()}),OrganizationSubscriptionDTO=createDTO(OrganizationSubscriptionDTOSchema),BaseCreditTopupRequestSchema=z55.object({creditCount:z55.number().int().positive(),expiresAt:z55.string().datetime().nullable().optional(),message:z55.string().nullable().optional()}),FreeCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z55.literal("free"),amountCents:z55.number().int().positive().nullable().optional()}),PurchaseCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z55.literal("purchase"),amountCents:z55.number().int().positive()}),CreditTopupRequestDTOSchema=z55.discriminatedUnion("type",[FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema]),CreditTopupRequestDTO=createDTO(CreditTopupRequestDTOSchema),CreditTopupResponseDTOSchema=z55.object({success:z55.boolean(),transactionId:z55.string().nullable(),newBalance:z55.number(),creditCount:z55.number(),type:z55.enum(["free","purchase"]),invoiceId:z55.string().nullable()}),CreditTopupResponseDTO=createDTO(CreditTopupResponseDTOSchema)}});import{z as z56}from"zod";var UsageSummaryDTOSchema,UsageSummaryDTO,UsageByProjectDTOSchema,UsageByProjectDTO,UsageByUserDTOSchema,UsageByUserDTO,UsageTimelineItemDTOSchema,UsageTimelineItemDTO,UsageByUserForProjectDTOSchema,UsageByUserForProjectDTO,ProjectUsageDetailDTOSchema,ProjectUsageDetailDTO,OrganizationUsageDTOSchema,OrganizationUsageDTO,init_usage_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage.dto.js"(){"use strict";init_create_dto();UsageSummaryDTOSchema=z56.object({totalCredits:z56.number(),totalCostUsd:z56.number(),totalMessages:z56.number(),avgCostPerMessage:z56.number(),periodStart:z56.string().nullable(),periodEnd:z56.string().nullable()}),UsageSummaryDTO=createDTO(UsageSummaryDTOSchema),UsageByProjectDTOSchema=z56.object({projectId:z56.string(),projectName:z56.string(),projectDisplayName:z56.string().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByProjectDTO=createDTO(UsageByProjectDTOSchema),UsageByUserDTOSchema=z56.object({userId:z56.string(),userName:z56.string().nullable(),userEmail:z56.string().email().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByUserDTO=createDTO(UsageByUserDTOSchema),UsageTimelineItemDTOSchema=z56.object({date:z56.string(),credits:z56.number(),costUsd:z56.number(),messages:z56.number()}),UsageTimelineItemDTO=createDTO(UsageTimelineItemDTOSchema),UsageByUserForProjectDTOSchema=z56.object({userId:z56.string(),userName:z56.string().nullable(),userEmail:z56.string().email().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByUserForProjectDTO=createDTO(UsageByUserForProjectDTOSchema),ProjectUsageDetailDTOSchema=z56.object({projectId:z56.string(),projectName:z56.string(),projectDisplayName:z56.string().nullable(),summary:UsageSummaryDTOSchema,byUser:z56.array(UsageByUserForProjectDTOSchema),timeline:z56.array(UsageTimelineItemDTOSchema)}),ProjectUsageDetailDTO=createDTO(ProjectUsageDetailDTOSchema),OrganizationUsageDTOSchema=z56.object({summary:UsageSummaryDTOSchema,byProject:z56.array(UsageByProjectDTOSchema),byUser:z56.array(UsageByUserDTOSchema),timeline:z56.array(UsageTimelineItemDTOSchema)}),OrganizationUsageDTO=createDTO(OrganizationUsageDTOSchema)}});import{z as z57}from"zod";var TimeRangePresetSchema,SortOrderSchema,UsageAnalyticsQuerySchema,UsageOverviewSummaryDTOSchema,UsageOverviewSummaryDTO,UsageTimelinePointDTOSchema,UsageTimelinePointDTO,OrganizationUsageRowDTOSchema,OrganizationUsageRowDTO,UserUsageRowDTOSchema,UserUsageRowDTO,ProjectUsageRowDTOSchema,ProjectUsageRowDTO,UsageDistributionItemDTOSchema,UsageDistributionItemDTO,UsageHeatmapPointDTOSchema,UsageHeatmapPointDTO,UsageOverviewResponseDTOSchema,UsageOverviewResponseDTO,UsagePaginationDTOSchema,UsagePaginationDTO,UsageByOrganizationResponseDTOSchema,UsageByOrganizationResponseDTO,ExtendedUserUsageRowDTOSchema,ExtendedUserUsageRowDTO,UsageByUserResponseDTOSchema,UsageByUserResponseDTO,ExtendedProjectUsageRowDTOSchema,ExtendedProjectUsageRowDTO,UsageByProjectResponseDTOSchema,UsageByProjectResponseDTO,ExportFormatSchema,UsageExportQuerySchema,PeekUsageMetricsDTOSchema,PeekUsageMetricsDTO,OrganizationPeekDTOSchema,OrganizationPeekDTO,UserPeekDTOSchema,UserPeekDTO,ProjectPeekDTOSchema,ProjectPeekDTO,init_usage_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage-analytics.dto.js"(){"use strict";init_create_dto();TimeRangePresetSchema=z57.enum(["today","1d","7d","14d","30d","60d","90d"]),SortOrderSchema=z57.enum(["asc","desc"]),UsageAnalyticsQuerySchema=z57.object({startDate:z57.string().optional(),endDate:z57.string().optional(),preset:TimeRangePresetSchema.optional().default("30d"),page:z57.coerce.number().int().positive().default(1),limit:z57.coerce.number().int().positive().max(100).default(20),sortBy:z57.string().optional(),sortOrder:SortOrderSchema.optional().default("desc"),search:z57.string().optional()}),UsageOverviewSummaryDTOSchema=z57.object({totalCredits:z57.number(),totalCostUsd:z57.number(),totalMessages:z57.number(),avgCostPerMessage:z57.number(),avgCreditsPerMessage:z57.number(),periodStart:z57.string(),periodEnd:z57.string(),creditsChange:z57.number().nullable(),costChange:z57.number().nullable(),messagesChange:z57.number().nullable()}),UsageOverviewSummaryDTO=createDTO(UsageOverviewSummaryDTOSchema),UsageTimelinePointDTOSchema=z57.object({date:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number()}),UsageTimelinePointDTO=createDTO(UsageTimelinePointDTOSchema),OrganizationUsageRowDTOSchema=z57.object({organizationId:z57.string(),organizationName:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),userCount:z57.number(),projectCount:z57.number()}),OrganizationUsageRowDTO=createDTO(OrganizationUsageRowDTOSchema),UserUsageRowDTOSchema=z57.object({userId:z57.string(),userName:z57.string().nullable(),userEmail:z57.string().nullable(),userImage:z57.string().nullable(),organizationId:z57.string().nullable(),organizationName:z57.string().nullable(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),projectCount:z57.number()}),UserUsageRowDTO=createDTO(UserUsageRowDTOSchema),ProjectUsageRowDTOSchema=z57.object({projectId:z57.string(),projectName:z57.string(),projectDisplayName:z57.string().nullable(),organizationId:z57.string(),organizationName:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),userCount:z57.number()}),ProjectUsageRowDTO=createDTO(ProjectUsageRowDTOSchema),UsageDistributionItemDTOSchema=z57.object({id:z57.string(),name:z57.string(),value:z57.number(),percentage:z57.number()}),UsageDistributionItemDTO=createDTO(UsageDistributionItemDTOSchema),UsageHeatmapPointDTOSchema=z57.object({day:z57.number(),hour:z57.number(),value:z57.number()}),UsageHeatmapPointDTO=createDTO(UsageHeatmapPointDTOSchema),UsageOverviewResponseDTOSchema=z57.object({summary:UsageOverviewSummaryDTOSchema,timeline:z57.array(UsageTimelinePointDTOSchema),topOrganizations:z57.array(OrganizationUsageRowDTOSchema),topUsers:z57.array(UserUsageRowDTOSchema),topProjects:z57.array(ProjectUsageRowDTOSchema),creditDistribution:z57.array(UsageDistributionItemDTOSchema),heatmap:z57.array(UsageHeatmapPointDTOSchema)}),UsageOverviewResponseDTO=createDTO(UsageOverviewResponseDTOSchema),UsagePaginationDTOSchema=z57.object({page:z57.number(),limit:z57.number(),totalItems:z57.number(),totalPages:z57.number(),hasMore:z57.boolean()}),UsagePaginationDTO=createDTO(UsagePaginationDTOSchema),UsageByOrganizationResponseDTOSchema=z57.object({organizations:z57.array(OrganizationUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByOrganizationResponseDTO=createDTO(UsageByOrganizationResponseDTOSchema),ExtendedUserUsageRowDTOSchema=UserUsageRowDTOSchema.extend({organizationCount:z57.number()}),ExtendedUserUsageRowDTO=createDTO(ExtendedUserUsageRowDTOSchema),UsageByUserResponseDTOSchema=z57.object({users:z57.array(ExtendedUserUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByUserResponseDTO=createDTO(UsageByUserResponseDTOSchema),ExtendedProjectUsageRowDTOSchema=ProjectUsageRowDTOSchema.extend({ownerId:z57.string(),ownerName:z57.string().nullable(),ownerEmail:z57.string().nullable()}),ExtendedProjectUsageRowDTO=createDTO(ExtendedProjectUsageRowDTOSchema),UsageByProjectResponseDTOSchema=z57.object({projects:z57.array(ExtendedProjectUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByProjectResponseDTO=createDTO(UsageByProjectResponseDTOSchema),ExportFormatSchema=z57.enum(["csv","json"]),UsageExportQuerySchema=UsageAnalyticsQuerySchema.extend({format:ExportFormatSchema.default("csv"),type:z57.enum(["overview","organizations","users","projects"]).default("overview")}),PeekUsageMetricsDTOSchema=z57.object({credits:z57.number(),costUsd:z57.number(),messages:z57.number()}),PeekUsageMetricsDTO=createDTO(PeekUsageMetricsDTOSchema),OrganizationPeekDTOSchema=z57.object({id:z57.string(),name:z57.string(),createdAt:z57.string(),memberCount:z57.number(),projectCount:z57.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),OrganizationPeekDTO=createDTO(OrganizationPeekDTOSchema),UserPeekDTOSchema=z57.object({id:z57.string(),name:z57.string().nullable(),email:z57.string(),image:z57.string().nullable(),createdAt:z57.string(),organizationCount:z57.number(),projectCount:z57.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),UserPeekDTO=createDTO(UserPeekDTOSchema),ProjectPeekDTOSchema=z57.object({id:z57.string(),name:z57.string(),displayName:z57.string().nullable(),createdAt:z57.string(),organizationId:z57.string(),organizationName:z57.string(),ownerId:z57.string(),ownerName:z57.string().nullable(),ownerEmail:z57.string().nullable(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),ProjectPeekDTO=createDTO(ProjectPeekDTOSchema)}});import{z as z58}from"zod";var SandboxProcessStatusSchema,PresetSandboxCommandSchema,ExecuteSandboxCommandRequestDTOSchema,ExecuteSandboxCommandRequestDTO,SandboxProcessInfoDTOSchema,SandboxProcessInfoDTO,SandboxProcessInfoResponseSchema,SandboxProcessListDTOSchema,SandboxProcessListDTO,SandboxProcessListResponseSchema,ExecuteSandboxCommandResponseDTOSchema,ExecuteSandboxCommandResponseDTO,PresetCommandResponseDTOSchema,PresetCommandResponseDTO,PresetCommandResponseSchema,init_sandbox_command_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/sandbox-command.dto.js"(){"use strict";init_env();init_create_dto();init_response();SandboxProcessStatusSchema=z58.enum(["running","completed","failed","stopped"]),PresetSandboxCommandSchema=z58.enum(["restart-dev-server","stop-dev-server","install-dependencies","reinstall-dependencies","build","typecheck"]),ExecuteSandboxCommandRequestDTOSchema=z58.object({command:z58.string().min(1).max(1e4),cwd:z58.string().optional(),projectEnv:EnvSchema.optional(),env:z58.record(z58.string(),z58.string()).optional(),name:z58.string().optional(),waitForCompletion:z58.boolean().optional().default(!1)}),ExecuteSandboxCommandRequestDTO=createDTO(ExecuteSandboxCommandRequestDTOSchema),SandboxProcessInfoDTOSchema=z58.object({identifier:z58.string(),status:SandboxProcessStatusSchema,command:z58.string().optional(),startedAt:z58.string().optional(),exitCode:z58.number().optional()}),SandboxProcessInfoDTO=createDTO(SandboxProcessInfoDTOSchema),SandboxProcessInfoResponseSchema=createResponseSchema(SandboxProcessInfoDTOSchema),SandboxProcessListDTOSchema=z58.object({processes:z58.array(SandboxProcessInfoDTOSchema)}),SandboxProcessListDTO=createDTO(SandboxProcessListDTOSchema),SandboxProcessListResponseSchema=createResponseSchema(SandboxProcessListDTOSchema),ExecuteSandboxCommandResponseDTOSchema=z58.object({processId:z58.string(),status:SandboxProcessStatusSchema}),ExecuteSandboxCommandResponseDTO=createDTO(ExecuteSandboxCommandResponseDTOSchema),PresetCommandResponseDTOSchema=z58.object({success:z58.boolean(),message:z58.string().optional()}),PresetCommandResponseDTO=createDTO(PresetCommandResponseDTOSchema),PresetCommandResponseSchema=createResponseSchema(PresetCommandResponseDTOSchema)}});import{z as z59}from"zod";var init_esm=__esm({"../../packages/api-contracts/dist/esm/index.js"(){"use strict";init_create_dto();init_response();init_pagination();init_common();init_attachments();init_env();init_realtime();init_references();init_audit_log();init_ops();init_project_dto();init_project_env_dto();init_project_import_export_dto();init_agent_trigger_dto();init_agent_activation_dto();init_agent_list_item_dto();init_agent_session_dto();init_agent_proposal_dto();init_agent_install_summary_dto();init_integration_dto();init_schedule_dto();init_audit_log_dto();init_env_status_dto();init_env_diff_summary_dto();init_project_analytics_dto();init_project_access_dto();init_project_invite_dto();init_publication_dto();init_sandbox_dto();init_organization_dto();init_billing_dto();init_payment_method_dto();init_user_dto();init_content_dto();init_cms_display_defaults_dto();init_asset_dto();init_translation_dto();init_document_dto();init_chat_dto();init_upload_dto();init_service_dto();init_search_dto();init_registered_domain_dto();init_project_domain_dto();init_project_subdomain_dto();init_generation_dto();init_generation_task_dto();init_asset_model_dto();init_tour_dto();init_support_report_dto();init_subscription_dto();init_usage_dto();init_usage_analytics_dto();init_sandbox_command_dto()}});import{execFile as execFile2}from"node:child_process";import{promisify as promisify2}from"node:util";async function runGit2(args,cwd){let{stdout}=await execFileAsync2("git",args,{cwd});return stdout.trim()}async function isGitRepo(cwd){try{return await runGit2(["rev-parse","--is-inside-work-tree"],cwd),!0}catch{return!1}}async function hasUncommittedChanges(cwd){return(await runGit2(["status","--porcelain"],cwd)).length>0}async function cloneRepo2(args){await execFileAsync2("git",["clone","--branch",args.branch,"--single-branch",args.url,args.targetDir])}function isMissingRemoteBranch(error){let stderr=extractStderr(error).toLowerCase();return stderr.includes("remote branch")&&stderr.includes("not found")}async function remoteHasBranch(remoteUrl,branch){let{stdout}=await execFileAsync2("git",["ls-remote","--heads",remoteUrl,branch]);return stdout.trim().length>0}async function currentBranch(cwd){return runGit2(["rev-parse","--abbrev-ref","HEAD"],cwd)}async function currentTagOrNull(cwd){try{return await runGit2(["describe","--tags","--exact-match","HEAD"],cwd)||null}catch{return null}}function isReleaseTag(tag){return tag?/^release\/.+/.test(tag):!1}function classifyPushError(error){let stderr=extractStderr(error),lower=stderr.toLowerCase();return lower.includes("invalid or expired token")||lower.includes("expired token")||lower.includes("invalid token")||lower.includes("could not obtain git credentials")||lower.includes("not signed in")?{kind:"auth",stderr}:lower.includes("remote rejected")||lower.includes("protected")||lower.includes("no-push")||lower.includes("push declined")||lower.includes("not allowed to push")||lower.includes("permission to push")||lower.includes("forbidden")||lower.includes("403")?{kind:"protected",stderr}:lower.includes("non-fast-forward")||lower.includes("rejected")||lower.includes("fetch first")||lower.includes("updates were rejected")?{kind:"non-fast-forward",stderr}:lower.includes("authentication")||lower.includes("permission denied")?{kind:"auth",stderr}:lower.includes("could not resolve host")||lower.includes("timed out")||lower.includes("connection")?{kind:"network",stderr}:{kind:"unknown",stderr}}function extractStderr(error){if(error&&typeof error=="object"&&"stderr"in error){let value=error.stderr;if(typeof value=="string")return value;if(Buffer.isBuffer(value))return value.toString("utf8")}return error instanceof Error?error.message:String(error)}var execFileAsync2,init_git=__esm({"src/cli/utils/git.ts"(){execFileAsync2=promisify2(execFile2);__name(runGit2,"runGit");__name(isGitRepo,"isGitRepo");__name(hasUncommittedChanges,"hasUncommittedChanges");__name(cloneRepo2,"cloneRepo");__name(isMissingRemoteBranch,"isMissingRemoteBranch");__name(remoteHasBranch,"remoteHasBranch");__name(currentBranch,"currentBranch");__name(currentTagOrNull,"currentTagOrNull");__name(isReleaseTag,"isReleaseTag");__name(classifyPushError,"classifyPushError");__name(extractStderr,"extractStderr")}});function projectSettingsFromEnv(){let projectId=process.env.FIMO_PROJECT_ID?.trim();return projectId?{projectId,organizationId:process.env.FIMO_ORGANIZATION_ID?.trim()??"",name:process.env.FIMO_PROJECT_NAME?.trim()??projectId,apiUrl:process.env.FIMO_API_URL?.trim()??loadConfig().apiUrl}:null}async function resolveEnvFromGit(cwd){if(!await isGitRepo(cwd))return null;try{let tag=await currentTagOrNull(cwd);if(isReleaseTag(tag))return{env:"prod",source:"tag",readOnly:!0};let branch=await currentBranch(cwd);return!branch||branch==="HEAD"||!isValidEnv(branch)?null:{env:branch,source:"branch"}}catch{return null}}async function getProjectContext(opts={}){let cwd=resolveProjectCwd(opts.cwd),settings;try{settings=loadProjectSettings(cwd)}catch{let fromEnv=projectSettingsFromEnv();if(!fromEnv)throw new NotInProjectError;settings=fromEnv}let env,source,readOnly=!1;if(opts.envOverride!==void 0){if(!isValidEnv(opts.envOverride))throw new InvalidEnvOverrideError(opts.envOverride);env=opts.envOverride,source="flag"}else{let fromGit=await resolveEnvFromGit(cwd);if(fromGit)env=fromGit.env,source=fromGit.source,readOnly=fromGit.readOnly===!0;else{if(opts.requireBranch)throw await isGitRepo(cwd)?new GitBranchUndetectedError:new NotInProjectError;env=DEFAULT_ENV,source="fallback"}}if(opts.api&&env!=="prod")try{let names=(await opts.api.listEnvs(settings.projectId)).map(e=>e.env);if(!names.includes(env)&&source==="flag")throw new EnvNotFoundError(env,names)}catch(err){if(err instanceof EnvNotFoundError)throw err}return{projectId:settings.projectId,organizationId:settings.organizationId,name:settings.name,apiUrl:settings.apiUrl,env,source,readOnly:readOnly||void 0}}function envSourceBanner(ctx){let sourceHint=ctx.source==="flag"?"--env":ctx.source==="branch"?"git branch":ctx.source==="tag"?"git tag":"default",ro=ctx.readOnly?" \xB7 read-only":"";return`\u2192 env: ${ctx.env} (from ${sourceHint}${ro})`}function envOverrideFromCommand(cmd){let cur=cmd??void 0;for(;cur;){let env=cur.opts().env;if(typeof env=="string"&&env.length>0)return env;cur=cur.parent??null}}async function bootstrapProjectCommand(options={},cmd,bootstrapOpts={}){let envOverride2=envOverrideFromCommand(cmd),baseApi=new FimoApiClient(loadConfig()),ctx=await getProjectContext({cwd:options.cwd,envOverride:envOverride2,requireBranch:bootstrapOpts.requireBranch,api:baseApi});if(!bootstrapOpts.quiet){let{currentMode:currentMode2}=await Promise.resolve().then(()=>(init_dist(),dist_exports));currentMode2().format==="pretty"&&process.stderr.write(`${envSourceBanner(ctx)}
435
+ `)}function renderCliAuthError(err,opts={}){console.error(formatCliAuthError(err,opts))}function formatShellArg(arg){return/^[A-Za-z0-9_/:=.,@%+-]+$/.test(arg)?arg:`'${arg.replace(/'/g,"'\\''")}'`}var init_auth_errors=__esm({"src/cli/utils/auth-errors.ts"(){init_api();init_auth();init_color();__name(isCliAuthError,"isCliAuthError");__name(rethrowCliAuthError,"rethrowCliAuthError");__name(retryCommand,"retryCommand");__name(formatCliAuthError,"formatCliAuthError");__name(renderCliAuthError,"renderCliAuthError");__name(formatShellArg,"formatShellArg")}});import{z as z7}from"zod";function filterUnknownProperties(data2,schema){if(data2==null)return data2;if(schema instanceof z7.ZodOptional||schema instanceof z7.ZodNullable||schema instanceof z7.ZodDefault)return filterUnknownProperties(data2,schema.unwrap());if(schema instanceof z7.ZodArray){if(!Array.isArray(data2))return data2;let itemSchema=schema.unwrap();return data2.map(item=>filterUnknownProperties(item,itemSchema))}if(schema instanceof z7.ZodDiscriminatedUnion){if(typeof data2!="object"||data2===null)return data2;let unionSchema=schema,discriminator=unionSchema.def.discriminator,discriminatorValue=data2[discriminator],matchingSchema=unionSchema.options.find(option=>{let discriminatorField=option.shape[discriminator];return discriminatorField instanceof z7.ZodLiteral?discriminatorField.def.values.includes(discriminatorValue):!1});return matchingSchema?filterUnknownProperties(data2,matchingSchema):data2}if(schema instanceof z7.ZodObject){if(typeof data2!="object")return data2;let shape=schema.shape,result={};for(let key in shape)if(Object.prototype.hasOwnProperty.call(data2,key)){let fieldSchema=shape[key],fieldValue=data2[key];result[key]=filterUnknownProperties(fieldValue,fieldSchema)}if(schema.def.catchall instanceof z7.ZodUnknown)for(let[key,value]of Object.entries(data2))key in shape||(result[key]=value);return result}return data2}function createObjectDTO(schema){return{schema,from(data2){let filtered=filterUnknownProperties(data2,schema);return schema.parse(filtered)},fromList(data2){return data2.map(item=>this.from(item))},safeParse(data2){let filtered=filterUnknownProperties(data2,schema);return schema.safeParse(filtered)},partial(){let partialSchema=schema.partial();return createObjectDTO(partialSchema)},pick(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),picked=schema.pick(mask);return createObjectDTO(picked)},omit(keys){let mask=keys.reduce((acc,key)=>({...acc,[key]:!0}),{}),omitted=schema.omit(mask);return createObjectDTO(omitted)}}}function createDiscriminatedUnionDTO(schema){return{schema,from(data2){let filtered=filterUnknownProperties(data2,schema);return schema.parse(filtered)},fromList(data2){return data2.map(item=>this.from(item))},safeParse(data2){let filtered=filterUnknownProperties(data2,schema);return schema.safeParse(filtered)}}}function createDTO(schema){if(schema instanceof z7.ZodObject)return createObjectDTO(schema);if(schema instanceof z7.ZodDiscriminatedUnion)return createDiscriminatedUnionDTO(schema);throw new Error(`Unsupported schema type: ${schema.constructor.name}. createDTO supports ZodObject and ZodDiscriminatedUnion.`)}var init_create_dto=__esm({"../../packages/api-contracts/dist/esm/utils/create-dto.js"(){"use strict";__name(filterUnknownProperties,"filterUnknownProperties");__name(createObjectDTO,"createObjectDTO");__name(createDiscriminatedUnionDTO,"createDiscriminatedUnionDTO");__name(createDTO,"createDTO")}});import{z as z8}from"zod";var createResponseSchema,init_response=__esm({"../../packages/api-contracts/dist/esm/utils/response.js"(){"use strict";createResponseSchema=__name(dataSchema=>z8.object({data:dataSchema}),"createResponseSchema")}});import{z as z9}from"zod";var PaginationQuerySchema,init_pagination=__esm({"../../packages/api-contracts/dist/esm/utils/pagination.js"(){"use strict";PaginationQuerySchema=z9.object({page:z9.coerce.number().int().positive().default(1),limit:z9.coerce.number().int().positive().max(100).default(20)})}});import{z as z10}from"zod";var CommonSchemas,BaseEntitySchema,ProjectRoleKeySchema,ProjectRoleKeyWithSystemSchema,ProjectPrincipalTypeSchema,ProjectVisibilitySchema,ProjectStatusSchema,ProjectInviteStatusSchema,PublicationStatusSchema,OrganizationRoleSchema,AssetTypeSchema,TemplateCodeSchema,FieldTypeSchema,RESERVED_CONTENT_FIELD_NAMES,CONTENT_TYPE_NAME_PATTERN,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION,CONTENT_FIELD_NAME_PATTERN,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION,init_common=__esm({"../../packages/api-contracts/dist/esm/types/common.js"(){"use strict";CommonSchemas={timestamp:z10.coerce.date(),positiveInt:z10.number().int().positive(),nonNegativeInt:z10.number().int().nonnegative()},BaseEntitySchema=z10.object({id:z10.uuid(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),ProjectRoleKeySchema=z10.enum(["full","edit","comment","view"]),ProjectRoleKeyWithSystemSchema=z10.enum(["full","edit","comment","view","agent"]),ProjectPrincipalTypeSchema=z10.enum(["user","org","orgRole","public","email"]),ProjectVisibilitySchema=z10.enum(["public","private"]),ProjectStatusSchema=z10.enum(["creating","forking","start_server","created","failed"]),ProjectInviteStatusSchema=z10.enum(["pending","accepted","revoked","expired"]),PublicationStatusSchema=z10.enum(["idle","publishing","published","failed","unpublished"]),OrganizationRoleSchema=z10.enum(["owner","admin","member"]),AssetTypeSchema=z10.enum(["file","folder"]),TemplateCodeSchema=z10.enum(["Free","Premium"]),FieldTypeSchema=z10.enum(["string","richtext","media","number","boolean","date","json","reference"]),RESERVED_CONTENT_FIELD_NAMES=["id","entryId","documentId","slug","locale","createdAt","updatedAt","__fimo"],CONTENT_TYPE_NAME_PATTERN=/^[A-Za-z]\w*$/,CONTENT_TYPE_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter",CONTENT_FIELD_NAME_PATTERN=/^[A-Za-z_]\w*$/,CONTENT_FIELD_NAME_PATTERN_DESCRIPTION="letters, numbers, and underscores, starting with a letter or underscore"}});var ATTACHMENT_TYPES,ATTACHMENT_MIME_TYPES,ATTACHMENT_IMAGE_MIME_TYPES,ATTACHMENT_DOCUMENT_MIME_TYPES,ATTACHMENT_ACCEPT_EXTENSIONS,ATTACHMENT_ACCEPT_STRING,ATTACHMENT_DROPZONE_ACCEPT,init_attachments=__esm({"../../packages/api-contracts/dist/esm/types/attachments.js"(){"use strict";ATTACHMENT_TYPES=[{mime:"image/png",extensions:[".png"],category:"image"},{mime:"image/jpeg",extensions:[".jpg",".jpeg"],category:"image"},{mime:"image/webp",extensions:[".webp"],category:"image"},{mime:"image/avif",extensions:[".avif"],category:"image"},{mime:"application/pdf",extensions:[".pdf"],category:"document",maxSizeBytes:5242880},{mime:"text/csv",extensions:[".csv"],category:"document",maxSizeBytes:5242880},{mime:"text/plain",extensions:[".txt"],category:"document",maxSizeBytes:5242880}],ATTACHMENT_MIME_TYPES=ATTACHMENT_TYPES.map(t2=>t2.mime),ATTACHMENT_IMAGE_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="image").map(t2=>t2.mime),ATTACHMENT_DOCUMENT_MIME_TYPES=ATTACHMENT_TYPES.filter(t2=>t2.category==="document").map(t2=>t2.mime),ATTACHMENT_ACCEPT_EXTENSIONS=ATTACHMENT_TYPES.flatMap(t2=>t2.extensions),ATTACHMENT_ACCEPT_STRING=[...ATTACHMENT_ACCEPT_EXTENSIONS,...ATTACHMENT_MIME_TYPES].join(","),ATTACHMENT_DROPZONE_ACCEPT=Object.fromEntries(ATTACHMENT_TYPES.map(t2=>[t2.mime,t2.extensions]))}});import{z as z11}from"zod";function isValidEnv(env){return typeof env!="string"||env.length===0||env.length>MAX_ENV_LENGTH||env.startsWith("-")||env.startsWith(".")||env.includes("//")||env.split("/").some(segment=>segment==="..")?!1:ENV_ID_REGEX.test(env)}function isProductionEnv(env){return env===PRODUCTION_ENV}var ENV_ID_REGEX,MAX_ENV_LENGTH,EnvSchema,DEFAULT_ENV,PRODUCTION_ENV,init_env=__esm({"../../packages/api-contracts/dist/esm/types/env.js"(){"use strict";ENV_ID_REGEX=/^[a-zA-Z0-9._/-]+$/,MAX_ENV_LENGTH=255;__name(isValidEnv,"isValidEnv");EnvSchema=z11.string().min(1,"env must not be empty").max(MAX_ENV_LENGTH,`env must be at most ${MAX_ENV_LENGTH} characters`).refine(isValidEnv,{error:"env must match /^[a-zA-Z0-9._/-]+$/ and must not start with `-`"}),DEFAULT_ENV="main",PRODUCTION_ENV="prod";__name(isProductionEnv,"isProductionEnv")}});var init_realtime=__esm({"../../packages/api-contracts/dist/esm/types/realtime.js"(){"use strict"}});import{z as z12}from"zod";function referenceDocumentId(value){if(typeof value=="string")return value;if(value&&typeof value=="object"){let reference=value,hasId=Object.prototype.hasOwnProperty.call(reference,"id"),hasDocumentId=Object.prototype.hasOwnProperty.call(reference,"documentId"),id=reference.id,documentId=reference.documentId;if(hasId&&typeof id!="string"||hasDocumentId&&typeof documentId!="string"||typeof id=="string"&&typeof documentId=="string"&&id!==documentId)return null;if(typeof id=="string")return id;if(typeof documentId=="string")return documentId}return null}function toReferenceValue(value){let documentId=referenceDocumentId(value);return documentId?{documentId}:null}function referenceContentType(value){if(value&&typeof value=="object"&&"contentType"in value){let contentType=value.contentType;return typeof contentType=="string"&&contentType.length>0?contentType:null}return null}function toPolymorphicReferenceValue(value){let documentId=referenceDocumentId(value),contentType=referenceContentType(value);return documentId&&contentType?{contentType,documentId}:null}var ReferenceValueSchema,PolymorphicReferenceValueSchema,init_references=__esm({"../../packages/api-contracts/dist/esm/types/references.js"(){"use strict";__name(referenceDocumentId,"referenceDocumentId");__name(toReferenceValue,"toReferenceValue");ReferenceValueSchema=z12.preprocess(value=>{let reference=toReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},z12.object({documentId:z12.uuid()}));__name(referenceContentType,"referenceContentType");__name(toPolymorphicReferenceValue,"toPolymorphicReferenceValue");PolymorphicReferenceValueSchema=z12.preprocess(value=>{let reference=toPolymorphicReferenceValue(value);return reference||(value&&typeof value=="object"&&("id"in value||"documentId"in value)?null:value)},z12.object({contentType:z12.string().min(1),documentId:z12.uuid()}))}});import{z as z13}from"zod";var AUDIT_ACTIONS,AuditActionSchema,AUDIT_OUTCOMES,AuditOutcomeSchema,AUDIT_ACTOR_KINDS,AuditActorKindSchema,init_audit_log=__esm({"../../packages/api-contracts/dist/esm/types/audit-log.js"(){"use strict";AUDIT_ACTIONS=["env_create","env_delete","env_sync","capability_check","shell_exec","git_push","git_tag","git_merge","fimo_deploy","merge_decision","session_start","session_end","cost_breach","trigger_fire","cutover_step","agent_delegate","ops_access_change","ops_service_token_change","ops_project_search","ops_project_inspect","ops_project_chat_read","ops_project_snapshot","ops_support_thread_read","ops_support_report_read","ops_support_report_change","ops_customer_registry_change","ops_investigation_change","ops_known_issue_change","ops_validation_record","ops_notification_preview","ops_notification_approve","ops_notification_send"],AuditActionSchema=z13.enum(AUDIT_ACTIONS),AUDIT_OUTCOMES=["success","denied","error"],AuditOutcomeSchema=z13.enum(AUDIT_OUTCOMES),AUDIT_ACTOR_KINDS=["user","agent","system"],AuditActorKindSchema=z13.enum(AUDIT_ACTOR_KINDS)}});import{z as z14}from"zod";var OPS_BACKEND_PROFILES,OpsBackendProfileSchema,OPS_PERMISSIONS,OpsPermissionSchema,OPS_PERMISSION_PRESETS,OPS_SERVICE_PERMISSION_PRESETS,OpsAccessGrantInputSchema,OpsServiceTokenInputSchema,OpsCustomerProjectInputSchema,OPS_INVESTIGATION_STATUSES,OpsInvestigationStatusSchema,OpsInvestigationCreateInputSchema,OpsInvestigationUpdateInputSchema,OPS_KNOWN_ISSUE_STATUSES,OpsKnownIssueStatusSchema,OpsKnownIssueCreateInputSchema,OpsKnownIssueUpdateInputSchema,OPS_VALIDATION_OUTCOMES,OpsValidationOutcomeSchema,OpsValidationRunInputSchema,OpsNotificationPreviewInputSchema,init_ops=__esm({"../../packages/api-contracts/dist/esm/types/ops.js"(){"use strict";OPS_BACKEND_PROFILES=["local","staging","prod"],OpsBackendProfileSchema=z14.enum(OPS_BACKEND_PROFILES),OPS_PERMISSIONS=["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:sentry:read","ops:logs:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview","ops:notification:approve","ops:notification:send"],OpsPermissionSchema=z14.enum(OPS_PERMISSIONS),OPS_PERMISSION_PRESETS={support:["ops:project:read","ops:project:chat:read","ops:support:read","ops:support:write","ops:customers:read","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:validations:read","ops:notification:preview"],engineer:["ops:project:read","ops:project:chat:read","ops:project:snapshot","ops:sentry:read","ops:logs:read","ops:support:read","ops:support:write","ops:customers:read","ops:customers:write","ops:investigations:read","ops:investigations:write","ops:known-issues:read","ops:known-issues:write","ops:validations:read","ops:validations:write","ops:audit:read","ops:notification:preview"],full:[...OPS_PERMISSIONS]},OPS_SERVICE_PERMISSION_PRESETS={support:OPS_PERMISSION_PRESETS.support,engineer:OPS_PERMISSION_PRESETS.engineer,full:OPS_PERMISSION_PRESETS.full.filter(permission=>permission!=="ops:notification:approve")},OpsAccessGrantInputSchema=z14.object({permissions:z14.array(OpsPermissionSchema).min(1),backendProfiles:z14.array(OpsBackendProfileSchema).min(1),enabled:z14.boolean().default(!0)}),OpsServiceTokenInputSchema=z14.object({name:z14.string().trim().min(1).max(120),permissions:z14.array(OpsPermissionSchema).min(1),backendProfiles:z14.array(OpsBackendProfileSchema).min(1),expiresAt:z14.coerce.date()}).refine(input=>!input.permissions.includes("ops:notification:approve"),{path:["permissions"],message:"Service credentials cannot approve customer notifications"}).refine(input=>input.expiresAt.getTime()>Date.now(),{path:["expiresAt"],message:"Service credential expiry must be in the future"}),OpsCustomerProjectInputSchema=z14.object({importanceReason:z14.string().trim().min(1).max(1e3),ownerUserId:z14.string().trim().min(1).nullable().optional(),framework:z14.string().trim().max(120).nullable().optional(),packageManager:z14.enum(["npm","pnpm","yarn","bun"]).nullable().optional(),notes:z14.string().trim().max(5e3).nullable().optional()}),OPS_INVESTIGATION_STATUSES=["open","investigating","awaiting_approval","resolved","monitoring","closed"],OpsInvestigationStatusSchema=z14.enum(OPS_INVESTIGATION_STATUSES),OpsInvestigationCreateInputSchema=z14.object({projectId:z14.uuid(),title:z14.string().trim().min(1).max(240),userReport:z14.string().trim().max(1e4).nullable().optional()}),OpsInvestigationUpdateInputSchema=z14.object({status:OpsInvestigationStatusSchema.optional(),hypothesis:z14.string().trim().max(1e4).nullable().optional(),outcome:z14.string().trim().max(1e4).nullable().optional(),evidence:z14.array(z14.record(z14.string(),z14.unknown())).max(100).optional()}).refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_KNOWN_ISSUE_STATUSES=["open","monitoring","resolved"],OpsKnownIssueStatusSchema=z14.enum(OPS_KNOWN_ISSUE_STATUSES),OpsKnownIssueCreateInputSchema=z14.object({fingerprint:z14.string().trim().min(1).max(240),title:z14.string().trim().min(1).max(240),description:z14.string().trim().min(1).max(1e4),affectedVersions:z14.array(z14.string().trim().min(1).max(120)).max(100).default([]),detectionQueries:z14.array(z14.string().trim().min(1).max(2e3)).max(50).default([]),fixedVersion:z14.string().trim().min(1).max(64).nullable().optional(),workaround:z14.string().trim().min(1).max(1e4).nullable().optional(),status:OpsKnownIssueStatusSchema.default("open")}),OpsKnownIssueUpdateInputSchema=OpsKnownIssueCreateInputSchema.omit({fingerprint:!0}).extend({affectedVersions:z14.array(z14.string().trim().min(1).max(120)).max(100),detectionQueries:z14.array(z14.string().trim().min(1).max(2e3)).max(50),status:OpsKnownIssueStatusSchema}).partial().refine(input=>Object.keys(input).length>0,"At least one field is required"),OPS_VALIDATION_OUTCOMES=["passed","failed","inconclusive"],OpsValidationOutcomeSchema=z14.enum(OPS_VALIDATION_OUTCOMES),OpsValidationRunInputSchema=z14.object({changeReference:z14.string().trim().min(1).max(500),outcome:OpsValidationOutcomeSchema,summary:z14.string().trim().min(1).max(1e4),evidence:z14.array(z14.record(z14.string(),z14.unknown())).max(100).default([])}),OpsNotificationPreviewInputSchema=z14.object({recipientEmail:z14.email().optional(),subject:z14.string().trim().min(1).max(200).default("An update from Fimo"),message:z14.string().trim().min(1).max(5e3),locale:z14.string().trim().min(2).max(20),reason:z14.string().trim().min(1).max(1e3),acknowledgePolicy:z14.literal(!0)})}});import{z as z15}from"zod";var ProjectDTOSchema,ProjectDTO,ProjectWithPlanDTOSchema,ProjectWithPlanDTO,ProjectSummaryDTOSchema,ProjectSummaryDTO,ProjectUserDTOSchema,ProjectUserDTO,ProjectFileDTOSchema,ProjectFileDTO,ProjectChatMessageRole,ProjectMessageBaseSchema,MessageUserMetadataSchema,QuestionAnswerMetadataSchema,ProjectMessagePublicDTOSchema,ProjectMessagePublicDTO,ProjectMessageDTOSchema,ProjectVersionDTOSchema,ProjectVersionDTO,ProjectDocumentContentDTOSchema,ProjectDocumentContentDTO,ProjectListResponseSchema,ProjectVersionListResponseSchema,ProjectVersionResponseSchema,VersionMutationResponseSchema,ProjectPublicationStateDTOSchema,ProjectPublicationStateDTO,PublicationMutationDTOSchema,PublicationMutationDTO,ProjectPublicationStateResponseSchema,PublicationMutationResponseSchema,ProjectResponseSchema,ProjectWithPlanResponseSchema,init_project_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project.dto.js"(){"use strict";init_common();init_create_dto();init_response();ProjectDTOSchema=BaseEntitySchema.extend({name:z15.string(),displayName:z15.string().nullable(),subdomain:z15.string().nullable().optional(),subdomainUpdatedAt:z15.date().nullable().optional(),organizationId:z15.string().nullable(),createdBy:z15.string().nullable(),visibility:ProjectVisibilitySchema,previewEnabled:z15.boolean().default(!0),status:ProjectStatusSchema,creationStatus:z15.string(),thumbnailUrl:z15.string().nullable(),publishedThumbnailUrl:z15.string().nullable(),category:z15.string().nullable(),appUrl:z15.string().nullable(),lastPublishedAt:z15.coerce.date()}),ProjectDTO=createDTO(ProjectDTOSchema),ProjectWithPlanDTOSchema=ProjectDTOSchema.extend({planTier:z15.string().nullable()}),ProjectWithPlanDTO=createDTO(ProjectWithPlanDTOSchema),ProjectSummaryDTOSchema=z15.object({id:z15.uuid(),name:z15.string(),displayName:z15.string().nullable(),thumbnailUrl:z15.string().nullable(),visibility:ProjectVisibilitySchema,category:z15.string().nullable()}),ProjectSummaryDTO=createDTO(ProjectSummaryDTOSchema),ProjectUserDTOSchema=z15.object({id:z15.string(),name:z15.string(),avatar:z15.string().nullable(),color:z15.object({bg:z15.string(),text:z15.string()})}),ProjectUserDTO=createDTO(ProjectUserDTOSchema),ProjectFileDTOSchema=z15.object({path:z15.string(),content:z15.string()}),ProjectFileDTO=createDTO(ProjectFileDTOSchema),ProjectChatMessageRole=z15.enum(["user","assistant","system"]),ProjectMessageBaseSchema=z15.object({id:z15.string(),messageId:z15.string(),versionId:z15.string().nullable(),role:ProjectChatMessageRole,parts:z15.array(z15.any()),createdAt:z15.coerce.date()}),MessageUserMetadataSchema=z15.object({id:z15.string(),name:z15.string().nullable().optional(),image:z15.string().nullable().optional()}).nullable().optional(),QuestionAnswerMetadataSchema=z15.object({shortTitle:z15.string().optional(),questions:z15.array(z15.object({header:z15.string(),question:z15.string(),answer:z15.string(),selectedLabels:z15.array(z15.string()),freeText:z15.string(),skipped:z15.boolean()}))}).optional(),ProjectMessagePublicDTOSchema=ProjectMessageBaseSchema.extend({credits:z15.number(),metadata:z15.object({user:MessageUserMetadataSchema,changeManifest:z15.array(z15.any()).optional(),questionAnswer:QuestionAnswerMetadataSchema}).nullable().optional()}),ProjectMessagePublicDTO=createDTO(ProjectMessagePublicDTOSchema),ProjectMessageDTOSchema=ProjectMessagePublicDTOSchema,ProjectVersionDTOSchema=z15.object({id:z15.uuid(),versionId:z15.string(),projectId:z15.uuid(),commitHash:z15.string(),name:z15.string(),description:z15.string().nullable(),thumbnailUrl:z15.string().nullable(),createdAt:CommonSchemas.timestamp}),ProjectVersionDTO=createDTO(ProjectVersionDTOSchema),ProjectDocumentContentDTOSchema=z15.object({content:z15.string()}),ProjectDocumentContentDTO=createDTO(ProjectDocumentContentDTOSchema),ProjectListResponseSchema=createResponseSchema(z15.array(ProjectDTOSchema)),ProjectVersionListResponseSchema=createResponseSchema(z15.array(ProjectVersionDTOSchema)),ProjectVersionResponseSchema=createResponseSchema(ProjectVersionDTOSchema),VersionMutationResponseSchema=createResponseSchema(z15.object({success:z15.boolean(),message:z15.string().optional()})),ProjectPublicationStateDTOSchema=z15.object({isPublished:z15.boolean(),publishedAt:CommonSchemas.timestamp.nullable(),publishedVersion:z15.string().nullable()}),ProjectPublicationStateDTO=createDTO(ProjectPublicationStateDTOSchema),PublicationMutationDTOSchema=z15.object({success:z15.boolean(),message:z15.string().optional(),publishedAt:CommonSchemas.timestamp.optional()}),PublicationMutationDTO=createDTO(PublicationMutationDTOSchema),ProjectPublicationStateResponseSchema=createResponseSchema(ProjectPublicationStateDTOSchema),PublicationMutationResponseSchema=createResponseSchema(PublicationMutationDTOSchema),ProjectResponseSchema=createResponseSchema(ProjectDTOSchema),ProjectWithPlanResponseSchema=createResponseSchema(ProjectWithPlanDTOSchema)}});import{z as z16}from"zod";var ProjectEnvStatusSchema,ProjectEnvDTOSchema,ProjectEnvDTO,CreateProjectEnvRequestSchema,SyncProjectEnvRequestSchema,ProjectEnvResponseSchema,ProjectEnvsListResponseSchema,EnvSurfaceDiffSchema,EnvDiffResultSchema,EnvDiffResultDTO,init_project_env_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-env.dto.js"(){"use strict";init_common();init_env();init_create_dto();init_response();ProjectEnvStatusSchema=z16.enum(["provisioning","active","deleted"]),ProjectEnvDTOSchema=BaseEntitySchema.extend({projectId:z16.uuid(),env:EnvSchema,status:ProjectEnvStatusSchema,previewUrl:z16.string().nullable(),parentEnv:EnvSchema.nullable(),createdBy:z16.string().nullable(),deletedAt:z16.coerce.date().nullable()}),ProjectEnvDTO=createDTO(ProjectEnvDTOSchema),CreateProjectEnvRequestSchema=z16.object({env:EnvSchema,parentEnv:EnvSchema.optional()}),SyncProjectEnvRequestSchema=z16.object({from:EnvSchema.optional()}),ProjectEnvResponseSchema=createResponseSchema(ProjectEnvDTOSchema),ProjectEnvsListResponseSchema=createResponseSchema(z16.array(ProjectEnvDTOSchema)),EnvSurfaceDiffSchema=z16.object({surface:z16.enum(["code","schemas","content","translations","assets","forms","activations"]),status:z16.enum(["unchanged","changed","conflicting","missing-on-target"]),changedCount:z16.number().int().nonnegative(),conflictCount:z16.number().int().nonnegative()}),EnvDiffResultSchema=z16.object({fromEnv:EnvSchema,toEnv:EnvSchema,generatedAt:z16.coerce.date(),surfaces:z16.array(EnvSurfaceDiffSchema)}),EnvDiffResultDTO=createDTO(EnvDiffResultSchema)}});import{z as z17}from"zod";var ExportProjectResponseDTOSchema,ExportProjectResponseDTO,ImportProjectResultDTOSchema,ImportProjectResultDTO,ImportPreviewCountsDTOSchema,ImportPreviewSurfaceDTOSchema,ImportPreviewDTOSchema,ImportPreviewDTO,ImportPreviewResponseDTOSchema,ImportPreviewResponseDTO,init_project_import_export_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-import-export.dto.js"(){"use strict";init_create_dto();ExportProjectResponseDTOSchema=z17.object({success:z17.literal(!0),downloadUrl:z17.string(),expiresAt:z17.string(),fileSize:z17.number(),duration:z17.number()}),ExportProjectResponseDTO=createDTO(ExportProjectResponseDTOSchema),ImportProjectResultDTOSchema=z17.object({success:z17.literal(!0),projectId:z17.string(),projectName:z17.string(),displayName:z17.string(),projectUrl:z17.string(),duration:z17.number()}),ImportProjectResultDTO=createDTO(ImportProjectResultDTOSchema),ImportPreviewCountsDTOSchema=z17.object({contentTypes:z17.number(),entries:z17.number(),assets:z17.number(),translations:z17.number(),forms:z17.number(),codeFiles:z17.number(),assetFiles:z17.number()}),ImportPreviewSurfaceDTOSchema=z17.object({name:z17.string(),included:z17.boolean(),count:z17.number().optional(),note:z17.string().optional()}),ImportPreviewDTOSchema=z17.object({projectName:z17.string(),displayName:z17.string().nullable(),visibility:z17.string().nullable(),category:z17.string().nullable(),exportedAt:z17.string(),version:z17.string(),envScope:z17.enum(["main","tree"]),counts:ImportPreviewCountsDTOSchema,surfaces:z17.array(ImportPreviewSurfaceDTOSchema),fileSize:z17.number(),fileName:z17.string()}),ImportPreviewDTO=createDTO(ImportPreviewDTOSchema),ImportPreviewResponseDTOSchema=z17.object({success:z17.literal(!0),preview:ImportPreviewDTOSchema}),ImportPreviewResponseDTO=createDTO(ImportPreviewResponseDTOSchema)}});import{z as z18}from"zod";var TriggerKindSchema,ManualTriggerSchema2,ScheduleTriggerSchema,WebhookTriggerSchema2,TriggerSchema2,init_agent_trigger_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-trigger.dto.js"(){"use strict";TriggerKindSchema=z18.enum(["manual","schedule","webhook"]),ManualTriggerSchema2=z18.object({type:z18.literal("manual")}),ScheduleTriggerSchema=z18.object({type:z18.literal("schedule"),cron:z18.string().min(1,"cron expression required").regex(/^\s*\S+\s+\S+\s+\S+\s+\S+\s+\S+\s*$/,"cron must be a 5-field expression"),tz:z18.string().optional()}),WebhookTriggerSchema2=z18.object({type:z18.literal("webhook"),path:z18.string().min(1).max(120).regex(/^[a-z0-9][a-z0-9_/-]*$/i,"webhook path must be lowercase alphanumeric with optional / - _")}),TriggerSchema2=z18.discriminatedUnion("type",[ManualTriggerSchema2,ScheduleTriggerSchema,WebhookTriggerSchema2])}});import{z as z19}from"zod";var ActivateRequestSchema,DeactivateRequestSchema,AgentActivationDTOSchema,AgentActivationDTO,AgentActivationsListResponseSchema,AgentActivationResponseSchema,WebhookPathTakenErrorSchema,ManualRunRequestSchema,DispatchSkippedSchema,DispatchAcceptedSchema,ManualRunResponseSchema,init_agent_activation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-activation.dto.js"(){"use strict";init_env();init_create_dto();init_response();init_agent_trigger_dto();ActivateRequestSchema=z19.object({triggerIndices:z19.array(z19.number().int().nonnegative()).optional()}),DeactivateRequestSchema=z19.object({triggerIndices:z19.array(z19.number().int().nonnegative()).optional()}),AgentActivationDTOSchema=z19.object({projectId:z19.uuid(),env:EnvSchema,agentName:z19.string().min(1),triggerIndex:z19.number().int().nonnegative(),triggerKind:TriggerKindSchema,trigger:TriggerSchema2,enabled:z19.boolean(),lastFiredAt:z19.coerce.date().nullable(),webhookPath:z19.string().nullable(),createdAt:z19.coerce.date(),updatedAt:z19.coerce.date()}),AgentActivationDTO=createDTO(AgentActivationDTOSchema),AgentActivationsListResponseSchema=createResponseSchema(z19.array(AgentActivationDTOSchema)),AgentActivationResponseSchema=createResponseSchema(AgentActivationDTOSchema),WebhookPathTakenErrorSchema=z19.object({error:z19.literal("webhook_path_taken"),conflictAgent:z19.string(),path:z19.string()}),ManualRunRequestSchema=z19.object({args:z19.unknown().optional(),requestId:z19.string().min(1).max(128).optional()}),DispatchSkippedSchema=z19.object({skipped:z19.enum(["duplicate","no-activation","agent-not-cloud","bundle-missing","trigger-stale"])}),DispatchAcceptedSchema=z19.object({sessionId:z19.string().min(1)}),ManualRunResponseSchema=createResponseSchema(z19.union([DispatchAcceptedSchema,DispatchSkippedSchema]))}});import{z as z20}from"zod";var CapabilityRiskTierSchema,CapabilitySummaryEntrySchema,AgentSubAgentSummarySchema,AgentInstallSummaryDTOSchema,AgentInstallSummaryDTO,AgentInstallSummaryResponseSchema,init_agent_install_summary_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-install-summary.dto.js"(){"use strict";init_create_dto();init_response();CapabilityRiskTierSchema=z20.enum(["low","medium","high","critical"]),CapabilitySummaryEntrySchema=z20.object({token:z20.string().min(1),risk:CapabilityRiskTierSchema,description:z20.string()}),AgentSubAgentSummarySchema=z20.object({name:z20.string().min(1),grant:z20.enum(["inherit","explicit"]),effectiveCaps:z20.array(z20.string().min(1))}),AgentInstallSummaryDTOSchema=z20.object({agentName:z20.string().min(1),env:z20.string().min(1),declaredCapabilities:z20.array(CapabilitySummaryEntrySchema),transitiveCapabilities:z20.array(CapabilitySummaryEntrySchema),highRiskCapabilities:z20.array(CapabilitySummaryEntrySchema),criticalCapabilities:z20.array(CapabilitySummaryEntrySchema),subAgents:z20.array(AgentSubAgentSummarySchema),declaresDelegate:z20.boolean(),cycle:z20.array(z20.string()).nullable(),missingSubAgents:z20.array(z20.string()),warnings:z20.array(z20.string())}),AgentInstallSummaryDTO=createDTO(AgentInstallSummaryDTOSchema),AgentInstallSummaryResponseSchema=createResponseSchema(AgentInstallSummaryDTOSchema)}});import{z as z21}from"zod";var AgentListItemTriggerSchema,AgentListItemActivationSchema,AgentListItemDTOSchema,AgentListItemDTO,AgentListResponseSchema,init_agent_list_item_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-list-item.dto.js"(){"use strict";init_create_dto();init_response();init_agent_install_summary_dto();init_agent_trigger_dto();AgentListItemTriggerSchema=z21.object({kind:TriggerKindSchema,summary:z21.string()}),AgentListItemActivationSchema=z21.object({triggerIndex:z21.number().int().nonnegative(),triggerKind:TriggerKindSchema,env:z21.string().min(1),active:z21.boolean()}),AgentListItemDTOSchema=z21.object({name:z21.string().min(1),description:z21.string().nullable(),goalFirstLine:z21.string().nullable(),declaredCapabilities:z21.array(CapabilitySummaryEntrySchema),triggers:z21.array(AgentListItemTriggerSchema),activations:z21.array(AgentListItemActivationSchema)}),AgentListItemDTO=createDTO(AgentListItemDTOSchema),AgentListResponseSchema=createResponseSchema(z21.array(AgentListItemDTOSchema))}});import{z as z22}from"zod";var AgentSessionStatusSchema,SessionMetricsSchema,AgentSessionDTOSchema,AgentSessionDTO,AgentSessionCheckpointDTOSchema,AgentSessionCheckpointDTO,AgentSessionResponseSchema,AgentSessionsListResponseSchema,AgentSessionCheckpointsListResponseSchema,AgentSessionWithCheckpointsResponseSchema,SessionErrorCodeSchema,CancelSessionRequestSchema,init_agent_session_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-session.dto.js"(){"use strict";init_env();init_create_dto();init_response();init_agent_trigger_dto();AgentSessionStatusSchema=z22.enum(["planned","running","finished","cancelled","errored"]),SessionMetricsSchema=z22.object({cpuMs:z22.number().nonnegative().default(0),netBytes:z22.number().nonnegative().default(0),walltimeMs:z22.number().nonnegative().default(0),llmTokensIn:z22.number().nonnegative().optional(),llmTokensOut:z22.number().nonnegative().optional()}),AgentSessionDTOSchema=z22.object({id:z22.uuid(),projectId:z22.uuid(),env:EnvSchema,agentName:z22.string().min(1),triggerKind:TriggerKindSchema,triggerPayload:z22.unknown().optional(),capabilities:z22.array(z22.string()).optional(),dataSources:z22.array(z22.string()).optional(),status:AgentSessionStatusSchema,sandboxId:z22.string().nullable(),startedAt:z22.coerce.date().nullable(),finishedAt:z22.coerce.date().nullable(),cancelledAt:z22.coerce.date().nullable(),costUsd:z22.number().nonnegative(),costCeilingUsd:z22.number().positive(),metrics:SessionMetricsSchema.nullable(),longRunning:z22.boolean(),lastCheckpointId:z22.uuid().nullable(),branchEnvId:z22.uuid().nullable(),parentSessionId:z22.uuid().nullable(),terminalReason:z22.string().nullable(),errorMessage:z22.string().nullable(),report:z22.string().nullable(),createdAt:z22.coerce.date(),updatedAt:z22.coerce.date()}),AgentSessionDTO=createDTO(AgentSessionDTOSchema),AgentSessionCheckpointDTOSchema=z22.object({id:z22.uuid(),sessionId:z22.uuid(),checkpointIdx:z22.number().int().nonnegative(),payloadRef:z22.string(),payloadSizeBytes:z22.number().int().nonnegative(),checksum:z22.string().length(64),createdAt:z22.coerce.date()}),AgentSessionCheckpointDTO=createDTO(AgentSessionCheckpointDTOSchema),AgentSessionResponseSchema=createResponseSchema(AgentSessionDTOSchema),AgentSessionsListResponseSchema=createResponseSchema(z22.array(AgentSessionDTOSchema)),AgentSessionCheckpointsListResponseSchema=createResponseSchema(z22.array(AgentSessionCheckpointDTOSchema)),AgentSessionWithCheckpointsResponseSchema=createResponseSchema(z22.object({session:AgentSessionDTOSchema,checkpoints:z22.array(AgentSessionCheckpointDTOSchema)})),SessionErrorCodeSchema=z22.enum(["invalid_session_transition","session_not_found","capability_snapshot_invalid","checkpoint_restore_failed","cost_ceiling_invalid","too_many_agent_envs","env_provisioning_failed"]),CancelSessionRequestSchema=z22.object({reason:z22.string().min(1).max(120).optional()})}});import{z as z23}from"zod";var AgentBranchClassificationSchema,AgentBranchDecidedPathSchema,AgentBranchProposalDTOSchema,AgentBranchProposalDTO,DecideProposalRequestSchema,AgentBranchProposalResponseSchema,AgentBranchProposalsListResponseSchema,DecideProposalConflictResponseSchema,init_agent_proposal_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/agent-proposal.dto.js"(){"use strict";init_create_dto();init_response();AgentBranchClassificationSchema=z23.enum(["trivial","structural"]),AgentBranchDecidedPathSchema=z23.enum(["auto-merge","review-merged","review-discarded"]),AgentBranchProposalDTOSchema=z23.object({id:z23.uuid(),envId:z23.uuid(),sessionId:z23.uuid().nullable(),skillName:z23.string().min(1),classification:AgentBranchClassificationSchema,rationale:z23.string().nullable(),summary:z23.string().nullable(),surfaceDeltas:z23.record(z23.string(),z23.unknown()),createdAt:z23.coerce.date(),decidedAt:z23.coerce.date().nullable(),decidedPath:AgentBranchDecidedPathSchema.nullable(),decidedBy:z23.string().nullable()}),AgentBranchProposalDTO=createDTO(AgentBranchProposalDTOSchema),DecideProposalRequestSchema=z23.object({path:z23.enum(["review-merged","review-discarded"])}),AgentBranchProposalResponseSchema=createResponseSchema(AgentBranchProposalDTOSchema),AgentBranchProposalsListResponseSchema=createResponseSchema(z23.array(AgentBranchProposalDTOSchema)),DecideProposalConflictResponseSchema=z23.object({code:z23.literal("merge_conflict"),message:z23.string(),conflicts:z23.record(z23.string(),z23.number().int().nonnegative())})}});import{z as z24}from"zod";var IntegrationAuthModeSchema,IntegrationAuthKindSchema,IntegrationCredentialInputSchema,IntegrationCredentialUsageSchema,ProjectIntegrationCredentialStatusSchema,IntegrationAuthModeDTOSchema,IntegrationCredentialDefinitionDTOSchema,IntegrationToolDefinitionDTOSchema,IntegrationRecipeDTOSchema,IntegrationInfoDTOSchema,IntegrationInfoDTO,ProjectIntegrationStatusDTOSchema,ProjectIntegrationStatusDTO,ProjectIntegrationInstallationDTOSchema,ProjectIntegrationInstallationDTO,EnableProjectIntegrationRequestSchema,SwitchProjectIntegrationAuthRequestSchema,SetProjectIntegrationCredentialRequestSchema,OrganizationIntegrationConnectionStatusSchema,OrganizationIntegrationConnectionDTOSchema,OrganizationIntegrationConnectionDTO,ConnectOrganizationIntegrationRequestSchema,StartProjectIntegrationConnectResponseSchema,StartProjectIntegrationConnectResponseDTO,BindProjectChannelRequestSchema,ProjectChannelBindingDTOSchema,ProjectChannelBindingDTO,FirecrawlScrapeFormatsSchema,FirecrawlScrapeToolInputSchema,FirecrawlSearchToolInputSchema,FirecrawlMapToolInputSchema,FirecrawlCrawlToolInputSchema,FirecrawlMonitorScheduleInputSchema,FirecrawlMonitorTargetInputSchema,FirecrawlMonitorCreateToolInputSchema,FirecrawlMonitorIdToolInputSchema,FirecrawlMonitorCheckToolInputSchema,RunProjectIntegrationToolOptionsSchema,RunProjectIntegrationToolRequestSchema,ProjectIntegrationToolRunUsageSchema,ProjectIntegrationToolRunBillingSchema,FirecrawlScrapeToolOutputSchema,FirecrawlSearchToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlMonitorScheduleOutputSchema,FirecrawlMonitorTargetOutputSchema,FirecrawlMonitorOutputSchema,FirecrawlMonitorCheckOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema,FirecrawlToolKeySchema,FirecrawlToolOutputSchema,ProjectIntegrationToolRunBaseSchema,ProjectIntegrationToolRunDTOSchema,ProjectIntegrationToolRunDTO,IntegrationsListResponseSchema,IntegrationInfoResponseSchema,ProjectIntegrationStatusResponseSchema,ProjectIntegrationInstallationResponseSchema,ProjectIntegrationToolRunResponseSchema,StartProjectIntegrationConnectResponseResponseSchema,OrganizationIntegrationConnectionResponseSchema,ProjectChannelBindingResponseSchema,init_integration_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/integration.dto.js"(){"use strict";init_create_dto();init_response();IntegrationAuthModeSchema=z24.enum(["fimo","personal","oauth"]),IntegrationAuthKindSchema=z24.enum(["oauth","api_key","bot_token","basic"]),IntegrationCredentialInputSchema=z24.enum(["secret_text"]),IntegrationCredentialUsageSchema=z24.enum(["http_bearer","api_key"]),ProjectIntegrationCredentialStatusSchema=z24.enum(["not_required","missing","configured"]),IntegrationAuthModeDTOSchema=z24.object({mode:IntegrationAuthModeSchema,label:z24.string().min(1),description:z24.string().min(1)}),IntegrationCredentialDefinitionDTOSchema=z24.object({id:z24.string().min(1),label:z24.string().min(1),input:IntegrationCredentialInputSchema,usage:IntegrationCredentialUsageSchema,required:z24.boolean()}),IntegrationToolDefinitionDTOSchema=z24.object({key:z24.string().min(1),name:z24.string().min(1),description:z24.string().min(1)}),IntegrationRecipeDTOSchema=z24.object({title:z24.string().min(1),description:z24.string().min(1),command:z24.string().min(1).optional()}),IntegrationInfoDTOSchema=z24.object({key:z24.string().min(1),name:z24.string().min(1),summary:z24.string().min(1),defaultAuthMode:IntegrationAuthModeSchema.nullable().optional(),authModes:z24.array(IntegrationAuthModeDTOSchema),credentials:z24.array(IntegrationCredentialDefinitionDTOSchema),tools:z24.array(IntegrationToolDefinitionDTOSchema),recipes:z24.array(IntegrationRecipeDTOSchema)}),IntegrationInfoDTO=createDTO(IntegrationInfoDTOSchema),ProjectIntegrationStatusDTOSchema=z24.object({projectId:z24.uuid(),integrationKey:z24.string().min(1),installed:z24.boolean(),enabled:z24.boolean(),authMode:IntegrationAuthModeSchema.nullable(),authModeLabel:z24.string().nullable(),connectionId:z24.uuid().nullable().optional(),connectionAlias:z24.string().min(1).nullable().optional(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z24.array(z24.string()),installedAt:z24.coerce.date().nullable(),updatedAt:z24.coerce.date().nullable()}),ProjectIntegrationStatusDTO=createDTO(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationDTOSchema=z24.object({id:z24.uuid(),projectId:z24.uuid(),integrationKey:z24.string().min(1),enabled:z24.boolean(),authMode:IntegrationAuthModeSchema,authModeLabel:z24.string(),connectionId:z24.uuid().nullable().optional(),connectionAlias:z24.string().min(1).nullable().optional(),credentialStatus:ProjectIntegrationCredentialStatusSchema,configuredCredentials:z24.array(z24.string()),createdAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),ProjectIntegrationInstallationDTO=createDTO(ProjectIntegrationInstallationDTOSchema),EnableProjectIntegrationRequestSchema=z24.object({authMode:IntegrationAuthModeSchema.optional(),connectionAlias:z24.string().min(1).optional()}),SwitchProjectIntegrationAuthRequestSchema=z24.object({authMode:IntegrationAuthModeSchema}),SetProjectIntegrationCredentialRequestSchema=z24.object({value:z24.string().min(1)}),OrganizationIntegrationConnectionStatusSchema=z24.enum(["active","revoked"]),OrganizationIntegrationConnectionDTOSchema=z24.object({id:z24.uuid(),organizationId:z24.string().min(1),integrationKey:z24.string().min(1),alias:z24.string().min(1),authKind:IntegrationAuthKindSchema,externalAccountId:z24.string().min(1),externalAccountName:z24.string().nullable(),externalBotUserId:z24.string().nullable(),status:OrganizationIntegrationConnectionStatusSchema,scopes:z24.array(z24.string()),connectedAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),OrganizationIntegrationConnectionDTO=createDTO(OrganizationIntegrationConnectionDTOSchema),ConnectOrganizationIntegrationRequestSchema=z24.object({alias:z24.string().min(1).max(120).optional(),token:z24.string().min(1).optional()}),StartProjectIntegrationConnectResponseSchema=z24.object({integrationKey:z24.string().min(1),connectUrl:z24.string().url(),expiresAt:z24.coerce.date()}),StartProjectIntegrationConnectResponseDTO=createDTO(StartProjectIntegrationConnectResponseSchema),BindProjectChannelRequestSchema=z24.object({ref:z24.string().min(1),connectionAlias:z24.string().min(1).optional(),agentName:z24.string().min(1).max(160).nullable().optional(),force:z24.boolean().optional()}),ProjectChannelBindingDTOSchema=z24.object({id:z24.uuid(),projectId:z24.uuid(),integrationKey:z24.string().min(1),connectionId:z24.uuid(),externalWorkspaceId:z24.string().min(1),externalChannelId:z24.string().min(1),externalChannelName:z24.string().nullable(),agentName:z24.string().nullable(),enabled:z24.boolean(),createdAt:z24.coerce.date(),updatedAt:z24.coerce.date()}),ProjectChannelBindingDTO=createDTO(ProjectChannelBindingDTOSchema),FirecrawlScrapeFormatsSchema=z24.object({markdown:z24.boolean().optional(),summary:z24.boolean().optional(),links:z24.boolean().optional(),images:z24.boolean().optional(),html:z24.union([z24.literal("cleaned"),z24.literal("raw"),z24.boolean()]).optional()}).default({markdown:!0}),FirecrawlScrapeToolInputSchema=z24.object({url:z24.string().url(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional(),waitForMs:z24.number().int().min(0).max(3e4).optional()}),FirecrawlSearchToolInputSchema=z24.object({query:z24.string().min(1),maxResults:z24.number().int().positive().max(20).optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlMapToolInputSchema=z24.object({url:z24.string().url(),search:z24.string().min(1).optional(),limit:z24.number().int().positive().max(200).optional(),includeSubdomains:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlCrawlToolInputSchema=z24.object({url:z24.string().url(),limit:z24.number().int().positive().max(20).optional(),formats:FirecrawlScrapeFormatsSchema,onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional()}),FirecrawlMonitorScheduleInputSchema=z24.object({text:z24.string().min(1).max(200).optional(),cron:z24.string().min(1).max(120).optional(),timezone:z24.string().min(1).max(80).optional()}).refine(value=>!!(value.text||value.cron),"Firecrawl monitor schedule needs text or cron."),FirecrawlMonitorTargetInputSchema=z24.object({type:z24.enum(["scrape","crawl"]).default("scrape"),urls:z24.array(z24.string().url()).min(1).max(50),scrapeOptions:z24.object({formats:FirecrawlScrapeFormatsSchema.optional(),onlyMainContent:z24.boolean().optional(),timeoutMs:z24.number().int().positive().max(12e4).optional(),waitForMs:z24.number().int().min(0).max(3e4).optional()}).optional()}),FirecrawlMonitorCreateToolInputSchema=z24.object({name:z24.string().min(1).max(256),schedule:FirecrawlMonitorScheduleInputSchema,targets:z24.array(FirecrawlMonitorTargetInputSchema).min(1).max(50),goal:z24.string().min(1).max(2e3).optional(),judgeEnabled:z24.boolean().optional(),retentionDays:z24.number().int().min(1).max(365).optional(),notification:z24.object({email:z24.object({enabled:z24.boolean().default(!0),recipients:z24.array(z24.string().email()).min(1).max(20),includeDiffs:z24.boolean().optional()}).optional()}).optional()}),FirecrawlMonitorIdToolInputSchema=z24.object({monitorId:z24.string().uuid()}),FirecrawlMonitorCheckToolInputSchema=FirecrawlMonitorIdToolInputSchema.extend({checkId:z24.string().uuid()}),RunProjectIntegrationToolOptionsSchema=z24.object({connectionAlias:z24.string().min(1).optional()}),RunProjectIntegrationToolRequestSchema=z24.discriminatedUnion("tool",[RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("search"),input:FirecrawlSearchToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("scrape"),input:FirecrawlScrapeToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("map"),input:FirecrawlMapToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("crawl"),input:FirecrawlCrawlToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.create"),input:FirecrawlMonitorCreateToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.list"),input:z24.object({}).default({})}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.get"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.pause"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.resume"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.delete"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.run"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.checks"),input:FirecrawlMonitorIdToolInputSchema}),RunProjectIntegrationToolOptionsSchema.extend({tool:z24.literal("monitor.check"),input:FirecrawlMonitorCheckToolInputSchema})]),ProjectIntegrationToolRunUsageSchema=z24.object({provider:z24.string().min(1),providerCredits:z24.number().nonnegative().optional(),providerCostUsd:z24.number().nonnegative().optional(),requests:z24.number().int().nonnegative().optional()}),ProjectIntegrationToolRunBillingSchema=z24.object({credits:z24.number().int().nonnegative()}),FirecrawlScrapeToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),title:z24.string().optional(),statusCode:z24.number().optional(),markdown:z24.string().optional(),summary:z24.string().optional(),links:z24.array(z24.string()).optional(),images:z24.array(z24.string()).optional(),html:z24.string().optional(),warning:z24.string().optional()}),FirecrawlSearchToolOutputSchema=z24.object({query:z24.string(),provider:z24.literal("firecrawl"),results:z24.array(z24.object({title:z24.string(),url:z24.string(),snippet:z24.string().optional(),content:z24.string().optional(),score:z24.number().optional(),publishedAt:z24.string().optional()}))}),FirecrawlMapToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),count:z24.number(),links:z24.array(z24.object({url:z24.string(),title:z24.string().optional(),description:z24.string().optional()}))}),FirecrawlCrawlToolOutputSchema=z24.object({url:z24.string(),provider:z24.literal("firecrawl"),total:z24.number(),pages:z24.array(z24.object({url:z24.string(),title:z24.string().optional(),statusCode:z24.number().optional(),markdown:z24.string().optional(),summary:z24.string().optional(),links:z24.array(z24.string()).optional(),images:z24.array(z24.string()).optional(),html:z24.string().optional(),warning:z24.string().optional()})),warning:z24.string().optional()}),FirecrawlMonitorScheduleOutputSchema=z24.object({cron:z24.string().optional(),text:z24.string().optional(),timezone:z24.string().optional()}).passthrough(),FirecrawlMonitorTargetOutputSchema=z24.object({id:z24.string().optional(),urls:z24.array(z24.string()).optional(),scrapeOptions:z24.record(z24.string(),z24.unknown()).optional()}).passthrough(),FirecrawlMonitorOutputSchema=z24.object({id:z24.string(),name:z24.string(),status:z24.string().optional(),schedule:FirecrawlMonitorScheduleOutputSchema.optional(),nextRunAt:z24.string().nullable().optional(),lastRunAt:z24.string().nullable().optional(),currentCheckId:z24.string().nullable().optional(),targets:z24.array(FirecrawlMonitorTargetOutputSchema).optional(),goal:z24.string().nullable().optional(),judgeEnabled:z24.boolean().optional(),estimatedCreditsPerMonth:z24.number().optional(),createdAt:z24.string().optional(),updatedAt:z24.string().optional()}).passthrough(),FirecrawlMonitorCheckOutputSchema=z24.object({id:z24.string(),monitorId:z24.string(),scheduledFor:z24.string().nullable().optional(),startedAt:z24.string().nullable().optional(),finishedAt:z24.string().nullable().optional(),estimatedCredits:z24.number().optional(),reservedCredits:z24.number().optional(),actualCredits:z24.number().optional(),billingStatus:z24.string().nullable().optional(),summary:z24.object({totalPages:z24.number().optional(),same:z24.number().optional(),changed:z24.number().optional(),new:z24.number().optional(),removed:z24.number().optional(),error:z24.number().optional()}).passthrough().optional(),error:z24.string().nullable().optional(),createdAt:z24.string().optional(),updatedAt:z24.string().optional()}).passthrough(),FirecrawlMonitorListToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitors:z24.array(FirecrawlMonitorOutputSchema)}),FirecrawlMonitorDetailToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitor:FirecrawlMonitorOutputSchema}),FirecrawlMonitorDeleteToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),deleted:z24.boolean()}),FirecrawlMonitorChecksToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),checks:z24.array(FirecrawlMonitorCheckOutputSchema)}),FirecrawlMonitorCheckDetailToolOutputSchema=z24.object({provider:z24.literal("firecrawl"),monitorId:z24.string(),check:FirecrawlMonitorCheckOutputSchema,next:z24.string().optional()}),FirecrawlToolKeySchema=z24.enum(["search","scrape","map","crawl","monitor.create","monitor.list","monitor.get","monitor.pause","monitor.resume","monitor.delete","monitor.run","monitor.checks","monitor.check"]),FirecrawlToolOutputSchema=z24.union([FirecrawlSearchToolOutputSchema,FirecrawlMapToolOutputSchema,FirecrawlCrawlToolOutputSchema,FirecrawlScrapeToolOutputSchema,FirecrawlMonitorListToolOutputSchema,FirecrawlMonitorDetailToolOutputSchema,FirecrawlMonitorDeleteToolOutputSchema,FirecrawlMonitorChecksToolOutputSchema,FirecrawlMonitorCheckDetailToolOutputSchema]),ProjectIntegrationToolRunBaseSchema=z24.object({projectId:z24.uuid(),integrationKey:z24.string().min(1),tool:FirecrawlToolKeySchema,connectionAlias:z24.string().min(1).nullable().optional(),output:FirecrawlToolOutputSchema,executedAt:z24.coerce.date()}),ProjectIntegrationToolRunDTOSchema=z24.discriminatedUnion("authMode",[ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("fimo"),billing:ProjectIntegrationToolRunBillingSchema,usage:z24.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("personal"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z24.undefined().optional()}),ProjectIntegrationToolRunBaseSchema.extend({authMode:z24.literal("oauth"),usage:ProjectIntegrationToolRunUsageSchema.optional(),billing:z24.undefined().optional()})]),ProjectIntegrationToolRunDTO=createDTO(ProjectIntegrationToolRunDTOSchema),IntegrationsListResponseSchema=createResponseSchema(z24.array(ProjectIntegrationStatusDTOSchema)),IntegrationInfoResponseSchema=createResponseSchema(IntegrationInfoDTOSchema),ProjectIntegrationStatusResponseSchema=createResponseSchema(ProjectIntegrationStatusDTOSchema),ProjectIntegrationInstallationResponseSchema=createResponseSchema(ProjectIntegrationInstallationDTOSchema),ProjectIntegrationToolRunResponseSchema=createResponseSchema(ProjectIntegrationToolRunDTOSchema),StartProjectIntegrationConnectResponseResponseSchema=createResponseSchema(StartProjectIntegrationConnectResponseSchema),OrganizationIntegrationConnectionResponseSchema=createResponseSchema(OrganizationIntegrationConnectionDTOSchema),ProjectChannelBindingResponseSchema=createResponseSchema(ProjectChannelBindingDTOSchema)}});import{z as z25}from"zod";var ProjectScheduleStatusSchema,ProjectScheduleDTOSchema,ProjectScheduleDTO,CreateProjectScheduleRequestSchema,ProjectScheduleResponseSchema,ProjectSchedulesListResponseSchema,init_schedule_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/schedule.dto.js"(){"use strict";init_create_dto();init_response();ProjectScheduleStatusSchema=z25.enum(["ok","failed"]),ProjectScheduleDTOSchema=z25.object({id:z25.uuid(),projectId:z25.uuid(),env:z25.string().min(1),name:z25.string().min(1),cron:z25.string().min(1),command:z25.string().min(1),enabled:z25.boolean(),lastRunAt:z25.coerce.date().nullable(),lastStatus:ProjectScheduleStatusSchema.nullable(),lastError:z25.string().nullable(),createdAt:z25.coerce.date(),updatedAt:z25.coerce.date()}),ProjectScheduleDTO=createDTO(ProjectScheduleDTOSchema),CreateProjectScheduleRequestSchema=z25.object({name:z25.string().min(1).max(120),cron:z25.string().min(1).max(120),command:z25.string().min(1).max(500)}),ProjectScheduleResponseSchema=createResponseSchema(ProjectScheduleDTOSchema),ProjectSchedulesListResponseSchema=createResponseSchema(z25.array(ProjectScheduleDTOSchema))}});import{z as z26}from"zod";var AuditLogRowDTOSchema,AuditLogRowDTO,AuditLogListResponseSchema,AuditLogQuerySchema,init_audit_log_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/audit-log.dto.js"(){"use strict";init_audit_log();init_create_dto();init_response();AuditLogRowDTOSchema=z26.object({id:z26.uuid(),occurredAt:z26.coerce.date(),projectId:z26.uuid().nullable(),env:z26.string().nullable(),actor:z26.string().nullable(),actorKind:AuditActorKindSchema.nullable().optional(),action:AuditActionSchema,resource:z26.string().nullable().optional(),outcome:AuditOutcomeSchema,metadata:z26.unknown().optional(),ipAddress:z26.string().nullable().optional(),userAgent:z26.string().nullable().optional(),error:z26.string().nullable().optional()}),AuditLogRowDTO=createDTO(AuditLogRowDTOSchema),AuditLogListResponseSchema=createResponseSchema(z26.object({rows:z26.array(AuditLogRowDTOSchema),nextCursor:z26.string().nullable()})),AuditLogQuerySchema=z26.object({env:z26.string().optional(),action:AuditActionSchema.optional(),actor:z26.string().optional(),from:z26.coerce.date().optional(),to:z26.coerce.date().optional(),limit:z26.coerce.number().int().min(1).max(200).optional(),cursor:z26.string().optional()})}});import{z as z27}from"zod";var SurfaceNameSchema,SURFACE_NAMES,SurfaceDeltaVerbSchema,SurfaceItemOriginSchema,SurfaceDeltaItemSchema,PerSurfaceDeltaSchema,CrossSurfaceFindingSchema,StatusReportSchema,StatusReportDTO,StatusReportResponseSchema,DiffReportSchema,DiffReportDTO,DiffReportResponseSchema,CodeFileDiffSchema,CodeFileDiffDTO,CodeFileDiffResponseSchema,CodeConflictBlobSchema,CodeConflictDetailSchema,CodeConflictDetailDTO,CodeConflictDetailResponseSchema,ContentEntrySnapshotSchema,ContentRowDiffSchema,ContentRowDiffDTO,ContentRowDiffResponseSchema,SchemaTypeSnapshotSchema,SchemaTypeDiffSchema,SchemaTypeDiffDTO,SchemaTypeDiffResponseSchema,AssetSnapshotSchema,AssetDiffSchema,AssetDiffDTO,AssetDiffResponseSchema,TranslationRowDiffSchema,TranslationRowDiffDTO,TranslationRowDiffResponseSchema,FormSchemaSnapshotSchema,FormSchemaDiffSchema,FormSchemaDiffDTO,FormSchemaDiffResponseSchema,ActivationSnapshotSchema,ActivationDiffSchema,ActivationDiffDTO,ActivationDiffResponseSchema,ConflictSchema,FieldPickSchema,ConflictResolutionSchema,MergeResultSchema,MergeResultDTO,MergeResultResponseSchema,EngineStrategySchema,VendorStrategySchema,MergeStrategySchema,ResolvedStrategySchema,MergeRequestSchema,MergeInitiateResultSchema,MergeInitiateResultDTO,MergeInitiateResponseSchema,MergeConflictsHydrationSchema,MergeConflictsHydrationDTO,MergeConflictsHydrationResponseSchema,MergeResolveDraftRequestSchema,MergeResolveDraftResultSchema,MergeResolveDraftResultDTO,MergeResolveRequestSchema,MergeCancelRequestSchema,PublishReleaseRequestSchema,PublishReleaseResultSchema,PublishReleaseResultDTO,PublishReleaseResponseSchema,init_env_status_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-status.dto.js"(){"use strict";init_env();init_create_dto();init_response();SurfaceNameSchema=z27.enum(["code","schemas","content","translations","assets","forms","activations"]),SURFACE_NAMES=["code","schemas","content","translations","assets","forms","activations"],SurfaceDeltaVerbSchema=z27.enum(["added","removed","changed","conflict"]),SurfaceItemOriginSchema=z27.enum(["committed-ahead","local-uncommitted"]),SurfaceDeltaItemSchema=z27.object({verb:SurfaceDeltaVerbSchema,key:z27.string(),detail:z27.string().optional(),origin:SurfaceItemOriginSchema.optional(),meta:z27.record(z27.string(),z27.unknown()).optional()}),PerSurfaceDeltaSchema=z27.object({surface:SurfaceNameSchema,status:z27.enum(["ok","timed_out","failed","unchanged"]),durationMs:z27.number().int().nonnegative().optional(),changedCount:z27.number().int().nonnegative(),conflictCount:z27.number().int().nonnegative(),items:z27.array(SurfaceDeltaItemSchema).max(1e3).optional(),truncated:z27.boolean().optional(),error:z27.string().optional()}),CrossSurfaceFindingSchema=z27.object({id:z27.string(),kind:z27.string(),description:z27.string(),severity:z27.enum(["warning","error"]),source:z27.object({surface:SurfaceNameSchema,key:z27.string()}),target:z27.object({surface:SurfaceNameSchema,key:z27.string()}),actions:z27.array(z27.enum(["restore-target","fix-source","ignore"])).min(1)}),StatusReportSchema=z27.object({env:EnvSchema,vs:EnvSchema,syncState:z27.enum(["in-sync","ahead","behind","diverged","unknown"]),generatedAt:z27.coerce.date(),surfaces:z27.array(PerSurfaceDeltaSchema),agents:z27.array(z27.object({id:z27.string(),name:z27.string(),status:z27.enum(["active","paused","failed"]),lastRunAt:z27.coerce.date().nullable()})).optional(),crossSurface:z27.array(CrossSurfaceFindingSchema).optional()}),StatusReportDTO=createDTO(StatusReportSchema),StatusReportResponseSchema=createResponseSchema(StatusReportSchema),DiffReportSchema=z27.object({fromEnv:EnvSchema,toEnv:EnvSchema,generatedAt:z27.coerce.date(),surfaces:z27.array(PerSurfaceDeltaSchema),crossSurface:z27.array(CrossSurfaceFindingSchema).optional(),fingerprint:z27.string()}),DiffReportDTO=createDTO(DiffReportSchema),DiffReportResponseSchema=createResponseSchema(DiffReportSchema),CodeFileDiffSchema=z27.object({path:z27.string(),state:z27.enum(["added","modified","deleted","renamed","copied","type_changed","unmerged","unknown"]),raw:z27.string(),additions:z27.number().int().nonnegative(),deletions:z27.number().int().nonnegative()}),CodeFileDiffDTO=createDTO(CodeFileDiffSchema),CodeFileDiffResponseSchema=createResponseSchema(CodeFileDiffSchema),CodeConflictBlobSchema=z27.object({oid:z27.string().optional(),content:z27.string().optional(),truncated:z27.boolean(),binary:z27.boolean()}),CodeConflictDetailSchema=z27.object({path:z27.string(),base:CodeConflictBlobSchema,ours:CodeConflictBlobSchema,theirs:CodeConflictBlobSchema,result:CodeConflictBlobSchema,sourceTipSha:z27.string(),targetTipSha:z27.string(),mergeBaseSha:z27.string().optional()}),CodeConflictDetailDTO=createDTO(CodeConflictDetailSchema),CodeConflictDetailResponseSchema=createResponseSchema(CodeConflictDetailSchema),ContentEntrySnapshotSchema=z27.object({id:z27.string(),slug:z27.string(),contentType:z27.string(),data:z27.record(z27.string(),z27.unknown()),updatedAt:z27.coerce.date()}),ContentRowDiffSchema=z27.object({collection:z27.string(),rowId:z27.string(),parent:ContentEntrySnapshotSchema.nullable(),child:ContentEntrySnapshotSchema.nullable()}),ContentRowDiffDTO=createDTO(ContentRowDiffSchema),ContentRowDiffResponseSchema=createResponseSchema(ContentRowDiffSchema),SchemaTypeSnapshotSchema=z27.object({name:z27.string(),label:z27.string(),isSingleton:z27.boolean(),fields:z27.record(z27.string(),z27.unknown())}),SchemaTypeDiffSchema=z27.object({typeName:z27.string(),parent:SchemaTypeSnapshotSchema.nullable(),child:SchemaTypeSnapshotSchema.nullable()}),SchemaTypeDiffDTO=createDTO(SchemaTypeDiffSchema),SchemaTypeDiffResponseSchema=createResponseSchema(SchemaTypeDiffSchema),AssetSnapshotSchema=z27.object({id:z27.string(),name:z27.string(),type:z27.enum(["file","folder"]),mimeType:z27.string().nullable(),storageKey:z27.string().nullable(),url:z27.string().nullable(),fileSize:z27.number().nullable(),width:z27.number().nullable(),height:z27.number().nullable(),altText:z27.string().nullable(),caption:z27.string().nullable(),createdAt:z27.coerce.date(),updatedAt:z27.coerce.date()}),AssetDiffSchema=z27.object({assetId:z27.string(),parent:AssetSnapshotSchema.nullable(),child:AssetSnapshotSchema.nullable()}),AssetDiffDTO=createDTO(AssetDiffSchema),AssetDiffResponseSchema=createResponseSchema(AssetDiffSchema),TranslationRowDiffSchema=z27.object({locale:z27.string(),key:z27.string(),parent:z27.string().nullable(),child:z27.string().nullable()}),TranslationRowDiffDTO=createDTO(TranslationRowDiffSchema),TranslationRowDiffResponseSchema=createResponseSchema(TranslationRowDiffSchema),FormSchemaSnapshotSchema=z27.object({formName:z27.string(),label:z27.string().nullable(),schemaFingerprint:z27.string(),fields:z27.record(z27.string(),z27.unknown()),settings:z27.record(z27.string(),z27.unknown()).optional()}),FormSchemaDiffSchema=z27.object({formName:z27.string(),parent:FormSchemaSnapshotSchema.nullable(),child:FormSchemaSnapshotSchema.nullable()}),FormSchemaDiffDTO=createDTO(FormSchemaDiffSchema),FormSchemaDiffResponseSchema=createResponseSchema(FormSchemaDiffSchema),ActivationSnapshotSchema=z27.object({agentName:z27.string(),triggerIndex:z27.number().int().nonnegative(),triggerKind:z27.string(),triggerSpec:z27.record(z27.string(),z27.unknown()),enabled:z27.boolean(),emailRecipients:z27.array(z27.string()).nullable(),qstashScheduleId:z27.string().nullable()}),ActivationDiffSchema=z27.object({agentName:z27.string(),triggerIndex:z27.number().int().nonnegative(),parent:ActivationSnapshotSchema.nullable(),child:ActivationSnapshotSchema.nullable()}),ActivationDiffDTO=createDTO(ActivationDiffSchema),ActivationDiffResponseSchema=createResponseSchema(ActivationDiffSchema),ConflictSchema=z27.object({surface:SurfaceNameSchema,key:z27.string(),kind:z27.enum(["merge-conflict","requires-manual-strategy","cross-surface-integrity"]).optional(),description:z27.string(),parentValue:z27.unknown().optional(),childValue:z27.unknown().optional(),conflictingFields:z27.array(z27.string()).optional(),code:z27.object({path:z27.string(),unresolvable:z27.boolean().optional(),reason:z27.string().optional()}).optional()}),FieldPickSchema=z27.object({field:z27.string(),choice:z27.enum(["parent","child","pick","ai-pick"]),pickedValue:z27.unknown().optional(),aiSessionId:z27.string().optional()}),ConflictResolutionSchema=z27.object({surface:SurfaceNameSchema,key:z27.string(),choice:z27.enum(["parent","child","pick"]),pickedValue:z27.unknown().optional(),fieldPicks:z27.array(FieldPickSchema).optional()}),MergeResultSchema=z27.object({ok:z27.boolean(),mergeId:z27.string().uuid(),fromEnv:EnvSchema,toEnv:EnvSchema,applied:z27.array(z27.object({surface:SurfaceNameSchema,count:z27.number().int().nonnegative()})),conflicts:z27.array(ConflictSchema).optional(),summary:z27.string().optional()}),MergeResultDTO=createDTO(MergeResultSchema),MergeResultResponseSchema=createResponseSchema(MergeResultSchema),EngineStrategySchema=z27.enum(["ff-only","auto","theirs","ours","manual"]),VendorStrategySchema=z27.enum(["ff_only","ff_prefer","merge"]),MergeStrategySchema=z27.object({engine:EngineStrategySchema.optional(),vendor:VendorStrategySchema.optional(),squash:z27.boolean().optional()}),ResolvedStrategySchema=z27.object({engine:EngineStrategySchema,vendor:VendorStrategySchema,squash:z27.boolean()}),MergeRequestSchema=z27.object({from:EnvSchema,allowDirectMerge:z27.boolean().optional(),strategy:MergeStrategySchema.optional()}),MergeInitiateResultSchema=z27.object({mergeId:z27.string().uuid(),streamUrl:z27.string(),strategy:ResolvedStrategySchema,acceptedAt:z27.coerce.date()}),MergeInitiateResultDTO=createDTO(MergeInitiateResultSchema),MergeInitiateResponseSchema=createResponseSchema(MergeInitiateResultSchema),MergeConflictsHydrationSchema=z27.object({mergeId:z27.string().uuid(),fromEnv:EnvSchema,toEnv:EnvSchema,status:z27.enum(["in_progress","complete","failed","rolled_back","conflicts"]),strategy:ResolvedStrategySchema,conflicts:z27.array(ConflictSchema),draftResolutions:z27.array(ConflictResolutionSchema),lastEditedBy:z27.string().nullable(),lastEditedAt:z27.coerce.date().nullable(),initiator:z27.object({userId:z27.string().nullable(),role:z27.string().nullable(),agentName:z27.string().nullable()})}),MergeConflictsHydrationDTO=createDTO(MergeConflictsHydrationSchema),MergeConflictsHydrationResponseSchema=createResponseSchema(MergeConflictsHydrationSchema),MergeResolveDraftRequestSchema=z27.object({resolutions:z27.array(ConflictResolutionSchema)}),MergeResolveDraftResultSchema=z27.object({mergeId:z27.string().uuid(),draftResolutions:z27.array(ConflictResolutionSchema),lastEditedAt:z27.coerce.date(),lastEditedBy:z27.string()}),MergeResolveDraftResultDTO=createDTO(MergeResolveDraftResultSchema),MergeResolveRequestSchema=z27.object({mergeId:z27.string().uuid(),resolutions:z27.array(ConflictResolutionSchema)}),MergeCancelRequestSchema=z27.object({mergeId:z27.string().uuid()}),PublishReleaseRequestSchema=z27.object({version:z27.string().regex(/^v?\d+\.\d+\.\d+(-[\w.]+)?$/,"Use semver (v1.4.2 / 1.4.2 / 1.4.2-rc.1)"),notes:z27.string().max(2e4).optional()}),PublishReleaseResultSchema=z27.object({releaseTag:z27.string(),sha:z27.string(),publishedAt:z27.coerce.date()}),PublishReleaseResultDTO=createDTO(PublishReleaseResultSchema),PublishReleaseResponseSchema=createResponseSchema(PublishReleaseResultSchema)}});import{z as z28}from"zod";var DiffRefSchema,InlineSchema,SummaryBlockSchema,EnvDiffSummarySchema,EnvDiffSummaryResultSchema,EnvDiffSummaryResultDTO,EnvDiffSummaryResponseSchema,init_env_diff_summary_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/env-diff-summary.dto.js"(){"use strict";init_create_dto();init_response();init_env_status_dto();DiffRefSchema=z28.object({surface:SurfaceNameSchema,key:z28.string(),label:z28.string()}),InlineSchema=z28.object({text:z28.string(),ref:DiffRefSchema.optional()}),SummaryBlockSchema=z28.discriminatedUnion("type",[z28.object({type:z28.literal("paragraph"),content:z28.array(InlineSchema).max(24)}),z28.object({type:z28.literal("preview"),ref:DiffRefSchema,caption:z28.string().optional()}),z28.object({type:z28.literal("code"),code:z28.string(),lang:z28.string().optional(),caption:z28.string().optional()}),z28.object({type:z28.literal("risk"),level:z28.enum(["warning","error"]),content:z28.array(InlineSchema).max(24)}),z28.object({type:z28.literal("list"),items:z28.array(z28.array(InlineSchema).max(24)).max(8)})]),EnvDiffSummarySchema=z28.object({headline:z28.string(),blocks:z28.array(SummaryBlockSchema).max(15)}),EnvDiffSummaryResultSchema=z28.object({summary:EnvDiffSummarySchema,fingerprint:z28.string(),generatedAt:z28.coerce.date(),cached:z28.boolean().optional(),credits:z28.number().int().nonnegative().optional()}),EnvDiffSummaryResultDTO=createDTO(EnvDiffSummaryResultSchema),EnvDiffSummaryResponseSchema=createResponseSchema(EnvDiffSummaryResultSchema)}});import{z as z29}from"zod";var PROJECT_ANALYTICS_PRESETS,PROJECT_ANALYTICS_GROUP_BY_OPTIONS,ProjectDailyVisitorsDTOSchema,ProjectAnalyticsBreakdownItemDTOSchema,ProjectAnalyticsPageBreakdownItemDTOSchema,ProjectAnalyticsRangeDTOSchema,ProjectAnalyticsAnnotationDTOSchema,ProjectPageviewAnalyticsDTOSchema,ProjectPageviewAnalyticsDTO,ProjectAnalyticsAnnotationDTO,init_project_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-analytics.dto.js"(){"use strict";init_create_dto();PROJECT_ANALYTICS_PRESETS=["today","yesterday","this_week","this_month","last_7_days","last_30_days","last_90_days","last_week","last_month","last_quarter","last_year","custom"],PROJECT_ANALYTICS_GROUP_BY_OPTIONS=["day","week","month","quarter"],ProjectDailyVisitorsDTOSchema=z29.object({date:z29.string(),visitors:z29.number().int().nonnegative()}),ProjectAnalyticsBreakdownItemDTOSchema=z29.object({key:z29.string(),visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative()}),ProjectAnalyticsPageBreakdownItemDTOSchema=z29.object({path:z29.string(),pageName:z29.string().nullable().optional(),visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative()}),ProjectAnalyticsRangeDTOSchema=z29.object({preset:z29.enum(PROJECT_ANALYTICS_PRESETS),requestedFrom:z29.string(),requestedTo:z29.string(),effectiveFrom:z29.string(),effectiveTo:z29.string(),isRetentionLimited:z29.boolean(),groupBy:z29.enum(PROJECT_ANALYTICS_GROUP_BY_OPTIONS)}),ProjectAnalyticsAnnotationDTOSchema=z29.object({date:z29.string(),content:z29.string(),updatedAt:z29.string(),updatedByUserId:z29.string()}),ProjectPageviewAnalyticsDTOSchema=z29.object({range:ProjectAnalyticsRangeDTOSchema,visitors:z29.number().int().nonnegative(),pageviews:z29.number().int().nonnegative(),bounceRate:z29.number().min(0).max(100),viewsPerVisit:z29.number().nonnegative(),averageVisitDurationSeconds:z29.number().nonnegative(),visitorsSeries:z29.array(ProjectDailyVisitorsDTOSchema),topPages:z29.array(ProjectAnalyticsPageBreakdownItemDTOSchema),topBrowsers:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topDevices:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topCountries:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),topSources:z29.array(ProjectAnalyticsBreakdownItemDTOSchema),annotations:z29.array(ProjectAnalyticsAnnotationDTOSchema)}),ProjectPageviewAnalyticsDTO=createDTO(ProjectPageviewAnalyticsDTOSchema),ProjectAnalyticsAnnotationDTO=createDTO(ProjectAnalyticsAnnotationDTOSchema)}});import{z as z30}from"zod";var ProjectInviteDTOSchema,ProjectInviteDTO,CreatedProjectInviteDTOSchema,CreatedProjectInviteDTO,AcceptedProjectInviteDTOSchema,AcceptedProjectInviteDTO,init_project_invite_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-invite.dto.js"(){"use strict";init_common();init_create_dto();ProjectInviteDTOSchema=z30.object({id:z30.string(),email:z30.email(),roleKey:ProjectRoleKeySchema,status:ProjectInviteStatusSchema,expiresAt:z30.coerce.date(),createdAt:z30.coerce.date(),inviterUserId:z30.string()}),ProjectInviteDTO=createDTO(ProjectInviteDTOSchema),CreatedProjectInviteDTOSchema=z30.object({id:z30.string(),token:z30.string()}),CreatedProjectInviteDTO=createDTO(CreatedProjectInviteDTOSchema),AcceptedProjectInviteDTOSchema=z30.object({success:z30.boolean(),projectId:z30.string().optional()}),AcceptedProjectInviteDTO=createDTO(AcceptedProjectInviteDTOSchema)}});import{z as z31}from"zod";var PublicUserDTOSchema,PublicUserDTO,ReferralCountCTOSchema,ReferralCountCTO,ReferralSummaryCTOSchema,ReferralSummaryCTO,AuthenticatedUserDTOSchema,AuthenticatedUserDTO,AuthenticatedUserResponseSchema,ReferralCountResponseSchema,ReferralSummaryResponseSchema,init_user_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/user.dto.js"(){"use strict";init_create_dto();init_response();PublicUserDTOSchema=z31.object({id:z31.string(),name:z31.string(),image:z31.string().nullable()}),PublicUserDTO=createDTO(PublicUserDTOSchema),ReferralCountCTOSchema=z31.object({count:z31.int()}),ReferralCountCTO=createDTO(ReferralCountCTOSchema),ReferralSummaryCTOSchema=z31.object({counts:z31.object({signed_up:z31.int(),activated:z31.int()}),credits:z31.object({total:z31.int()})}),ReferralSummaryCTO=createDTO(ReferralSummaryCTOSchema),AuthenticatedUserDTOSchema=PublicUserDTOSchema.extend({email:z31.email(),emailVerified:z31.boolean(),createdAt:z31.coerce.date(),updatedAt:z31.coerce.date()}),AuthenticatedUserDTO=createDTO(AuthenticatedUserDTOSchema),AuthenticatedUserResponseSchema=createResponseSchema(AuthenticatedUserDTOSchema),ReferralCountResponseSchema=createResponseSchema(ReferralCountCTOSchema),ReferralSummaryResponseSchema=createResponseSchema(ReferralSummaryCTOSchema)}});import{z as z32}from"zod";var ProjectAccessItemDTOSchema,ProjectAccessItemDTO,ProjectPermissionsDTOSchema,ProjectPermissionsDTO,ProjectAccessDTOSchema,ProjectAccessDTO,AccessMutationResponseSchema,InviteAcceptResponseSchema,init_project_access_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-access.dto.js"(){"use strict";init_common();init_create_dto();init_response();init_project_invite_dto();init_user_dto();ProjectAccessItemDTOSchema=z32.object({id:z32.string(),principalType:ProjectPrincipalTypeSchema,principalId:z32.string().nullable(),roleKey:ProjectRoleKeySchema,createdAt:z32.coerce.date(),expiresAt:z32.coerce.date().nullable(),user:PublicUserDTOSchema.nullable()}),ProjectAccessItemDTO=createDTO(ProjectAccessItemDTOSchema),ProjectPermissionsDTOSchema=z32.object({role:ProjectRoleKeyWithSystemSchema.nullable(),permissions:z32.record(z32.string(),z32.boolean())}),ProjectPermissionsDTO=createDTO(ProjectPermissionsDTOSchema),ProjectAccessDTOSchema=z32.object({access:z32.array(ProjectAccessItemDTOSchema),invites:z32.array(ProjectInviteDTOSchema),organization:z32.object({name:z32.string().nullable(),logo:z32.string().nullable()}).nullable()}),ProjectAccessDTO=createDTO(ProjectAccessDTOSchema),AccessMutationResponseSchema=createResponseSchema(z32.object({success:z32.boolean()})),InviteAcceptResponseSchema=createResponseSchema(z32.object({success:z32.boolean(),projectId:z32.uuid()}))}});import{z as z33}from"zod";var PublicationStateDTOSchema,PublicationStateDTO,init_publication_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/publication.dto.js"(){"use strict";init_common();init_create_dto();PublicationStateDTOSchema=z33.object({publicationStatus:PublicationStatusSchema,appUrl:z33.string().nullable(),lastPublishedAt:z33.string().nullable()}),PublicationStateDTO=createDTO(PublicationStateDTOSchema)}});import{z as z34}from"zod";var SandboxSessionDTOSchema,SandboxSessionDTO,SandboxSessionResponseSchema,PreviewBootstrapDTOSchema,PreviewBootstrapDTO,PreviewBootstrapResponseSchema,init_sandbox_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/sandbox.dto.js"(){"use strict";init_create_dto();init_response();SandboxSessionDTOSchema=z34.object({url:z34.url(),expiresAt:z34.iso.datetime()}),SandboxSessionDTO=createDTO(SandboxSessionDTOSchema),SandboxSessionResponseSchema=createResponseSchema(SandboxSessionDTOSchema),PreviewBootstrapDTOSchema=z34.discriminatedUnion("source",[z34.object({source:z34.literal("artifact"),artifact:SandboxSessionDTOSchema,dev:z34.null()}),z34.object({source:z34.literal("dev"),artifact:z34.null(),dev:SandboxSessionDTOSchema})]),PreviewBootstrapDTO=createDTO(PreviewBootstrapDTOSchema),PreviewBootstrapResponseSchema=createResponseSchema(PreviewBootstrapDTOSchema)}});import{z as z35}from"zod";var OrganizationDTOSchema,OrganizationDTO,MemberUserDTOSchema,OrganizationMemberDTOSchema,OrganizationMemberDTO,init_organization_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/organization.dto.js"(){"use strict";init_common();init_create_dto();OrganizationDTOSchema=BaseEntitySchema.extend({name:z35.string(),slug:z35.string().nullable(),logo:z35.string().nullable(),metadata:z35.record(z35.string(),z35.unknown()).nullable()}),OrganizationDTO=createDTO(OrganizationDTOSchema),MemberUserDTOSchema=z35.object({id:z35.string(),name:z35.string(),email:z35.email(),image:z35.string().nullable()}),OrganizationMemberDTOSchema=z35.object({id:z35.string(),userId:z35.string(),organizationId:z35.string(),role:OrganizationRoleSchema,user:MemberUserDTOSchema,createdAt:z35.coerce.date()}),OrganizationMemberDTO=createDTO(OrganizationMemberDTOSchema)}});import{z as z36}from"zod";var CancellationReasonCodeSchema,CancellationFeedbackDTOSchema,CancellationFeedbackDTO,AiCreditsEntitlementSchema,EntitlementsDTOSchema,SubscriptionDTOSchema,SubscriptionDTO,DailyCreditsStatusSchema,CreditBalanceDTOSchema,CreditBalanceDTO,MinimalCreditBalanceDTOSchema,MinimalCreditBalanceDTO,ProjectCreditBucketsDTOSchema,ProjectDailyCreditAllowanceDTOSchema,ProjectCreditBalanceDTOSchema,ProjectCreditBalanceDTO,SuccessfulPurchaseDTOSchema,SuccessfulPurchaseDTO,PortalDTOSchema,PortalDTO,CreditBalanceResponseSchema,MinimalCreditBalanceResponseSchema,ProjectCreditBalanceResponseSchema,SuccessfulPurchaseResponseSchema,SubscriptionResponseSchema,EntitlementsResponseSchema,PortalResponseSchema,init_billing_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/billing.dto.js"(){"use strict";init_common();init_create_dto();init_response();CancellationReasonCodeSchema=z36.enum(["just_testing","too_expensive","not_using_enough","missing_features","bug_or_technical_issue","switching_to_another_tool","closing_or_pausing_business","other"]),CancellationFeedbackDTOSchema=z36.object({reason:CancellationReasonCodeSchema,details:z36.string().trim().max(1e3).nullable().optional().transform(value=>value||null)}).superRefine((value,ctx)=>{value.reason==="other"&&!value.details&&ctx.addIssue({code:z36.ZodIssueCode.custom,message:"Details are required when selecting other.",path:["details"]})}),CancellationFeedbackDTO=createDTO(CancellationFeedbackDTOSchema),AiCreditsEntitlementSchema=z36.object({included:z36.number().optional(),unitPrice:z36.number().optional(),dailyCap:z36.number().nullable().optional()}),EntitlementsDTOSchema=z36.object({ai_credits:AiCreditsEntitlementSchema.optional(),analytics:z36.object({retentionDays:z36.number().int().positive(),canUseExtendedDateRanges:z36.boolean()}).optional(),members:z36.object({canInvite:z36.boolean(),maxMembers:z36.number().int().positive().nullable()}).optional(),projects:z36.object({canCreatePrivateProjects:z36.boolean(),maxPrivateProjects:z36.number().int().positive().nullable()}).optional(),domains:z36.object({canUseCustomDomains:z36.boolean(),maxDomains:z36.number().int().nonnegative().nullable()}).optional()}),SubscriptionDTOSchema=z36.object({id:z36.string(),external_id:z36.string(),customerId:z36.string(),planId:z36.string(),planCode:TemplateCodeSchema,currentPeriod:z36.object({start:z36.string(),end:z36.string().nullable()}),cancelAt:z36.string().nullable(),entitlements:EntitlementsDTOSchema,currency:z36.string(),nextPaymentAt:z36.string().nullable(),baseAmount:z36.number()}),SubscriptionDTO=createDTO(SubscriptionDTOSchema),DailyCreditsStatusSchema=z36.object({totalCap:z36.number(),dailyCap:z36.number(),usedTotal:z36.number()}),CreditBalanceDTOSchema=z36.object({total:z36.number(),base:z36.number(),dailyBase:z36.number(),purchases:z36.number(),awards:z36.number(),daily:DailyCreditsStatusSchema.optional()}),CreditBalanceDTO=createDTO(CreditBalanceDTOSchema),MinimalCreditBalanceDTOSchema=z36.object({total:z36.number(),nearLimit:z36.boolean(),canChat:z36.boolean(),daily:DailyCreditsStatusSchema.optional()}),MinimalCreditBalanceDTO=createDTO(MinimalCreditBalanceDTOSchema),ProjectCreditBucketsDTOSchema=z36.object({dailyFreeAvailable:z36.number(),monthlyAvailable:z36.number(),purchasedAvailable:z36.number(),awardedAvailable:z36.number()}),ProjectDailyCreditAllowanceDTOSchema=z36.object({periodCap:z36.number(),dailyGrant:z36.number(),usedThisPeriod:z36.number(),remainingThisPeriod:z36.number()}),ProjectCreditBalanceDTOSchema=z36.object({projectId:z36.uuid(),organizationId:z36.string(),balance:z36.object({totalAvailable:z36.number(),nearLimit:z36.boolean(),canUseAi:z36.boolean(),buckets:ProjectCreditBucketsDTOSchema}),allowances:z36.object({dailyCredits:ProjectDailyCreditAllowanceDTOSchema.nullable()})}),ProjectCreditBalanceDTO=createDTO(ProjectCreditBalanceDTOSchema),SuccessfulPurchaseDTOSchema=z36.object({invoiceId:z36.string(),newBalance:z36.int(),creditCount:z36.int(),amountUsd:z36.number()}),SuccessfulPurchaseDTO=createDTO(SuccessfulPurchaseDTOSchema),PortalDTOSchema=z36.object({url:z36.string()}),PortalDTO=createDTO(PortalDTOSchema),CreditBalanceResponseSchema=createResponseSchema(CreditBalanceDTOSchema),MinimalCreditBalanceResponseSchema=createResponseSchema(MinimalCreditBalanceDTOSchema),ProjectCreditBalanceResponseSchema=createResponseSchema(ProjectCreditBalanceDTOSchema),SuccessfulPurchaseResponseSchema=createResponseSchema(SuccessfulPurchaseDTOSchema),SubscriptionResponseSchema=createResponseSchema(SubscriptionDTOSchema),EntitlementsResponseSchema=createResponseSchema(EntitlementsDTOSchema),PortalResponseSchema=createResponseSchema(PortalDTOSchema)}});import{z as z37}from"zod";var PaymentMethodDTOSchema,PaymentMethodDTO,init_payment_method_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/payment-method.dto.js"(){"use strict";init_create_dto();PaymentMethodDTOSchema=z37.object({brand:z37.string(),last4:z37.string(),exp:z37.string(),isDefault:z37.boolean()}),PaymentMethodDTO=createDTO(PaymentMethodDTOSchema)}});import{z as z38}from"zod";var FieldDefinitionSchema,ContentTypeI18nSchema,ContentTypeDTOSchema,ContentTypeDTO,SchemaDTOSchema,SchemaDTO,EntryDTOSchema,EntryDTO,PaginatedEntriesDTOSchema,PaginatedEntriesDTO,EntryCountDTOSchema,EntryCountDTO,EntryCountsDTOSchema,EntryCountsDTO,ContentTypeResponseSchema,ContentTypeListResponseSchema,SchemaResponseSchema,EntryResponseSchema,EntryListResponseSchema,init_content_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/content.dto.js"(){"use strict";init_common();init_create_dto();init_response();FieldDefinitionSchema=z38.object({type:FieldTypeSchema,editable:z38.boolean().optional()}),ContentTypeI18nSchema=z38.object({enabled:z38.boolean()}).strict(),ContentTypeDTOSchema=z38.object({id:z38.string(),name:z38.string(),label:z38.string(),isSingleton:z38.boolean(),i18n:ContentTypeI18nSchema,fields:z38.record(z38.string(),z38.looseObject(FieldDefinitionSchema.shape)),createdAt:z38.string(),updatedAt:z38.string()}),ContentTypeDTO=createDTO(ContentTypeDTOSchema),SchemaDTOSchema=z38.object({contentTypes:z38.array(ContentTypeDTOSchema)}),SchemaDTO=createDTO(SchemaDTOSchema),EntryDTOSchema=z38.object({id:z38.string(),entryId:z38.string(),documentId:z38.string(),slug:z38.string(),locale:z38.string().optional(),createdAt:z38.string(),updatedAt:z38.string(),__fimo:z38.object({contentType:z38.string()})}).passthrough(),EntryDTO=createDTO(EntryDTOSchema),PaginatedEntriesDTOSchema=z38.object({data:z38.array(EntryDTOSchema),meta:z38.object({limit:z38.number(),offset:z38.number(),total:z38.number(),hasMore:z38.boolean()})}),PaginatedEntriesDTO=createDTO(PaginatedEntriesDTOSchema),EntryCountDTOSchema=z38.object({contentType:z38.string(),count:z38.number()}),EntryCountDTO=createDTO(EntryCountDTOSchema),EntryCountsDTOSchema=z38.object({counts:z38.array(EntryCountDTOSchema)}),EntryCountsDTO=createDTO(EntryCountsDTOSchema),ContentTypeResponseSchema=createResponseSchema(ContentTypeDTOSchema),ContentTypeListResponseSchema=createResponseSchema(z38.array(ContentTypeDTOSchema)),SchemaResponseSchema=createResponseSchema(SchemaDTOSchema),EntryResponseSchema=createResponseSchema(EntryDTOSchema),EntryListResponseSchema=createResponseSchema(z38.array(EntryDTOSchema))}});import{z as z39}from"zod";var CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH,CmsContentTypeNameSchema,CmsFieldNameSchema,CmsCollectionOrderSchema,CmsFieldOrderSchema,CmsListSortSchema,CmsDisplayDefaultsDTOSchema,CmsDisplayDefaultsDTO,CmsCollectionOrderRequestSchema,CmsFieldOrderRequestSchema,CmsDisplayDefaultsResponseSchema,init_cms_display_defaults_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/cms-display-defaults.dto.js"(){"use strict";init_common();init_create_dto();init_response();CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS=200,CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH=255,CmsContentTypeNameSchema=z39.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_TYPE_NAME_PATTERN),CmsFieldNameSchema=z39.string().max(CMS_DISPLAY_DEFAULTS_MAX_IDENTIFIER_LENGTH).regex(CONTENT_FIELD_NAME_PATTERN),CmsCollectionOrderSchema=z39.array(CmsContentTypeNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsFieldOrderSchema=z39.array(CmsFieldNameSchema).max(CMS_DISPLAY_DEFAULTS_MAX_ORDER_ITEMS),CmsListSortSchema=z39.object({field:CmsFieldNameSchema,direction:z39.enum(["asc","desc"])}),CmsDisplayDefaultsDTOSchema=z39.object({collectionOrder:CmsCollectionOrderSchema.nullable(),fieldOrders:z39.record(CmsContentTypeNameSchema,CmsFieldOrderSchema),listSorts:z39.record(CmsContentTypeNameSchema,CmsListSortSchema)}),CmsDisplayDefaultsDTO=createDTO(CmsDisplayDefaultsDTOSchema),CmsCollectionOrderRequestSchema=z39.object({order:CmsCollectionOrderSchema}),CmsFieldOrderRequestSchema=z39.object({order:CmsFieldOrderSchema}),CmsDisplayDefaultsResponseSchema=createResponseSchema(CmsDisplayDefaultsDTOSchema)}});import{z as z40}from"zod";var AssetPathItemSchema,AssetDTOSchema,AssetDTO,AssetTreeNodeDTOSchema,AssetTreeNodeDTO,AssetResponseSchema,AssetListResponseSchema,init_asset_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset.dto.js"(){"use strict";init_common();init_create_dto();init_response();AssetPathItemSchema=z40.object({id:z40.string(),name:z40.string()}),AssetDTOSchema=z40.object({id:z40.string(),name:z40.string(),type:AssetTypeSchema,originalFileName:z40.string().nullable(),parentId:z40.string().nullable(),mimeType:z40.string().nullable(),fileSize:z40.number().nullable(),url:z40.string().nullable(),storageKey:z40.string().nullable(),createdAt:z40.string(),updatedAt:z40.string(),altText:z40.string().nullable().optional(),caption:z40.string().nullable().optional(),aiCaption:z40.string().nullable().optional(),aiAltText:z40.string().nullable().optional(),aiTags:z40.array(z40.string()).nullable().optional(),aiPrimaryColor:z40.string().nullable().optional(),aiProcessingStatus:z40.string().nullable().optional(),width:z40.number().nullable().optional(),height:z40.number().nullable().optional(),path:z40.array(AssetPathItemSchema).optional(),hasChildren:z40.boolean().optional()}),AssetDTO=createDTO(AssetDTOSchema),AssetTreeNodeDTOSchema=AssetDTOSchema.extend({children:z40.lazy(()=>z40.array(AssetTreeNodeDTOSchema)).optional()}),AssetTreeNodeDTO=createDTO(AssetTreeNodeDTOSchema),AssetResponseSchema=createResponseSchema(AssetDTOSchema),AssetListResponseSchema=createResponseSchema(z40.array(AssetDTOSchema))}});import{z as z41}from"zod";var TranslationDTOSchema,TranslationDTO,init_translation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/translation.dto.js"(){"use strict";init_create_dto();TranslationDTOSchema=z41.object({key:z41.string(),value:z41.string().optional(),defaultValue:z41.string(),locale:z41.string()}),TranslationDTO=createDTO(TranslationDTOSchema)}});import{z as z42}from"zod";var DocumentNodeDTOSchema,DocumentTreeDTOSchema,DocumentPathDTOSchema,DocumentPathDTO,DocumentTreeResponseSchema,DocumentPathResponseSchema,init_document_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/document.dto.js"(){"use strict";init_create_dto();init_response();DocumentNodeDTOSchema=z42.object({id:z42.string(),name:z42.string(),type:z42.enum(["file","folder"]),path:z42.string(),children:z42.lazy(()=>z42.array(DocumentNodeDTOSchema)).optional()}),DocumentTreeDTOSchema=z42.array(DocumentNodeDTOSchema),DocumentPathDTOSchema=z42.object({path:z42.string(),exists:z42.boolean(),type:z42.enum(["file","folder"]).optional()}),DocumentPathDTO=createDTO(DocumentPathDTOSchema),DocumentTreeResponseSchema=createResponseSchema(DocumentTreeDTOSchema),DocumentPathResponseSchema=createResponseSchema(DocumentPathDTOSchema)}});import{z as z43}from"zod";var ChatMessageListDTOSchema,ChatMessagesPageDTOSchema,ChatDeletionDTOSchema,ChatDeletionDTO,ChatMessageListResponseSchema,ChatMessagesPageResponseSchema,ChatDeletionResponseSchema,init_chat_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/chat.dto.js"(){"use strict";init_create_dto();init_response();init_project_dto();ChatMessageListDTOSchema=z43.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z43.object({items:z43.array(ProjectMessagePublicDTOSchema),nextCursor:z43.string().nullable()}),ChatDeletionDTOSchema=z43.object({success:z43.boolean(),deletedCount:z43.number()}),ChatDeletionDTO=createDTO(ChatDeletionDTOSchema),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema),ChatDeletionResponseSchema=createResponseSchema(ChatDeletionDTOSchema)}});import{z as z44}from"zod";var UploadResultDTOSchema,UploadResultDTO,UploadResultResponseSchema,init_upload_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/upload.dto.js"(){"use strict";init_common();init_create_dto();init_response();UploadResultDTOSchema=z44.object({url:z44.string().url(),key:z44.string(),size:z44.number(),contentType:z44.string(),uploadedAt:CommonSchemas.timestamp}),UploadResultDTO=createDTO(UploadResultDTOSchema),UploadResultResponseSchema=createResponseSchema(UploadResultDTOSchema)}});import{z as z45}from"zod";var ServicePermissionsDTOSchema,ServicePermissionsDTO,ServicePermissionsResponseSchema,init_service_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/service.dto.js"(){"use strict";init_create_dto();init_response();ServicePermissionsDTOSchema=z45.object({canAccess:z45.boolean(),permissions:z45.record(z45.string(),z45.boolean()),role:z45.string().nullable()}),ServicePermissionsDTO=createDTO(ServicePermissionsDTOSchema),ServicePermissionsResponseSchema=createResponseSchema(ServicePermissionsDTOSchema)}});import{z as z46}from"zod";var OrganizationProjectsSearchQuerySchema,init_search_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/search.dto.js"(){"use strict";init_pagination();OrganizationProjectsSearchQuerySchema=PaginationQuerySchema.extend({q:z46.string().trim().default(""),sort:z46.enum(["recent","name","relevance"]).default("recent"),category:z46.string().optional(),visibility:z46.enum(["public","private"]).optional()})}});import{z as z47}from"zod";var DomainStatusSchema,DomainSourceSchema,PaymentStatusSchema,DomainDTOSchema,DomainDTO,DomainSearchResultDTOSchema,DomainSearchResultDTO,DomainPricingDTOSchema,DomainPricingDTO,DomainContactSchema,DomainContactDTO,UpdateDomainContactsRequestSchema,SearchDomainsRequestSchema,CheckAvailabilityRequestSchema,DOMAIN_NAME_REGEX,DomainNameSchema,PurchaseDomainRequestSchema,UpdateDomainSettingsRequestSchema,RenewDomainRequestSchema,DomainResponseSchema,DomainListResponseSchema,DomainSearchResultListResponseSchema,DomainPricingResponseSchema,DomainContactResponseSchema,ContactVerificationStatusSchema,ContactVerificationStatusResponseSchema,init_registered_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/registered-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();DomainStatusSchema=z47.enum(["pending_payment","registering","owned","registration_failed","payment_failed","expiring","expired"]),DomainSourceSchema=z47.enum(["fimo","external"]),PaymentStatusSchema=z47.enum(["pending","paid","failed","refunded"]),DomainDTOSchema=z47.object({id:z47.string().uuid(),domain:z47.string(),status:DomainStatusSchema,source:DomainSourceSchema,registrationDate:CommonSchemas.timestamp.nullable(),expirationDate:CommonSchemas.timestamp.nullable(),autoRenew:z47.boolean(),price:z47.number().int().nullable(),renewalPrice:z47.number().int().nullable(),paymentStatus:PaymentStatusSchema.nullable(),checkoutUrl:z47.string().nullable(),failureReason:z47.string().nullable(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),DomainDTO=createDTO(DomainDTOSchema),DomainSearchResultDTOSchema=z47.object({domain:z47.string(),available:z47.boolean(),premium:z47.boolean(),price:z47.number().nullable(),renewalPrice:z47.number().nullable(),purchaseType:z47.string().nullable()}),DomainSearchResultDTO=createDTO(DomainSearchResultDTOSchema),DomainPricingDTOSchema=z47.object({domain:z47.string(),price:z47.number().nullable(),renewalPrice:z47.number().nullable(),premium:z47.boolean(),allowedYears:z47.array(z47.number().int().positive())}),DomainPricingDTO=createDTO(DomainPricingDTOSchema),DomainContactSchema=z47.object({firstName:z47.string().max(100),lastName:z47.string().max(100),companyName:z47.string().max(100).optional(),address1:z47.string().max(255),address2:z47.string().max(255).optional(),city:z47.string().max(100),state:z47.string().max(100),zip:z47.string().max(20),country:z47.string().max(2),phone:z47.string().max(30),email:z47.union([z47.string().email().max(255),z47.literal("")])}),DomainContactDTO=createDTO(DomainContactSchema),UpdateDomainContactsRequestSchema=z47.object({firstName:z47.string().min(1).max(100),lastName:z47.string().min(1).max(100),companyName:z47.string().max(100).optional(),address1:z47.string().min(1).max(255),address2:z47.string().max(255).optional(),city:z47.string().min(1).max(100),state:z47.string().min(1).max(100),zip:z47.string().min(1).max(20),country:z47.string().min(1).max(2),phone:z47.string().min(1).max(30),email:z47.string().email().max(255)}),SearchDomainsRequestSchema=z47.object({keyword:z47.string().min(1).max(100),tldFilter:z47.array(z47.string()).optional()}),CheckAvailabilityRequestSchema=z47.object({domains:z47.array(z47.string()).min(1).max(50)}),DOMAIN_NAME_REGEX=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,DomainNameSchema=z47.string().min(1).max(255).regex(DOMAIN_NAME_REGEX,{message:"Invalid domain name"}),PurchaseDomainRequestSchema=z47.object({domain:DomainNameSchema,years:z47.number().int().min(1).max(10).optional().default(3),autoRenew:z47.boolean().optional().default(!0)}),UpdateDomainSettingsRequestSchema=z47.object({autoRenew:z47.boolean().optional()}),RenewDomainRequestSchema=z47.object({years:z47.number().int().min(1).max(10).optional().default(1),autoRenew:z47.boolean().optional().default(!0)}),DomainResponseSchema=createResponseSchema(DomainDTOSchema),DomainListResponseSchema=createResponseSchema(z47.array(DomainDTOSchema)),DomainSearchResultListResponseSchema=createResponseSchema(z47.array(DomainSearchResultDTOSchema)),DomainPricingResponseSchema=createResponseSchema(DomainPricingDTOSchema),DomainContactResponseSchema=createResponseSchema(DomainContactSchema.nullable()),ContactVerificationStatusSchema=z47.object({verified:z47.boolean(),email:z47.string().nullable(),verifyBy:z47.string().nullable()}),ContactVerificationStatusResponseSchema=createResponseSchema(ContactVerificationStatusSchema)}});import{z as z48}from"zod";var ProjectDomainStatusSchema,SSLStatusSchema,SSLValidationRecordSchema,SSLValidationErrorSchema,OwnershipVerificationSchema,ProjectDomainSSLDTOSchema,DomainProviderSchema,DomainTypeSchema,RedirectConfigSchema,ProjectDomainDTOSchema,ProjectDomainDTO,ProjectDomainListResponseSchema,ProjectDomainResponseSchema,AddProjectDomainRequestSchema,CheckProjectDomainHostnameReasonSchema,CheckProjectDomainHostnameResponseSchema,DeleteProjectDomainResponseSchema,init_project_domain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-domain.dto.js"(){"use strict";init_common();init_create_dto();init_response();ProjectDomainStatusSchema=z48.enum(["pending","active","pending_validation","active_redeploying","moved","deleted","pending_deletion","pending_migration","pending_provisioned","test_pending","test_active","test_active_apex","test_blocked","test_failed","provisioned","blocked"]),SSLStatusSchema=z48.enum(["initializing","pending_validation","pending_issuance","pending_deployment","pending_expiration","expired","active","deleted","pending_cleanup","staging_deployment","staging_active","deactivating","inactive","backup_issued","holding_deployment"]),SSLValidationRecordSchema=z48.object({txtName:z48.string().nullable().optional(),txtValue:z48.string().nullable().optional(),httpUrl:z48.string().nullable().optional(),httpBody:z48.string().nullable().optional(),cname:z48.string().nullable().optional(),cnameTarget:z48.string().nullable().optional()}),SSLValidationErrorSchema=z48.object({message:z48.string()}),OwnershipVerificationSchema=z48.object({type:z48.string(),name:z48.string(),value:z48.string()}),ProjectDomainSSLDTOSchema=z48.object({status:z48.string(),method:z48.string().nullable(),type:z48.string().nullable(),validationRecords:z48.array(SSLValidationRecordSchema).nullable().optional(),validationErrors:z48.array(SSLValidationErrorSchema).nullable().optional()}),DomainProviderSchema=z48.enum(["cloudflare","saas_custom_domains"]),DomainTypeSchema=z48.enum(["subdomain","apex"]),RedirectConfigSchema=z48.object({type:z48.literal("apex_to_www"),linkedDomainId:z48.string()}).nullable().optional(),ProjectDomainDTOSchema=z48.object({id:z48.string(),hostname:z48.string(),status:z48.string(),ssl:ProjectDomainSSLDTOSchema,ownershipVerification:z48.array(OwnershipVerificationSchema).nullable().optional(),cnameTarget:z48.string(),scdCnameTarget:z48.string().optional(),apexTargets:z48.array(z48.string()),dnsAutoConfigured:z48.boolean(),createdAt:CommonSchemas.timestamp,provider:DomainProviderSchema,domainType:DomainTypeSchema,redirectConfig:RedirectConfigSchema,migrationStatus:z48.string().nullable().optional()}),ProjectDomainDTO=createDTO(ProjectDomainDTOSchema),ProjectDomainListResponseSchema=createResponseSchema(z48.array(ProjectDomainDTOSchema)),ProjectDomainResponseSchema=createResponseSchema(ProjectDomainDTOSchema),AddProjectDomainRequestSchema=z48.object({hostname:z48.hostname().regex(/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,{error:"Invalid hostname"}).refine(value=>!/\.fimo\.site$/i.test(value),{error:"This is a Fimo-owned domain. Edit your built-in URL instead."}),redirectToWww:z48.boolean().optional()}),CheckProjectDomainHostnameReasonSchema=z48.enum(["invalid_hostname","fimo_owned_hostname","reserved","taken_by_another_project","taken_by_this_project"]),CheckProjectDomainHostnameResponseSchema=createResponseSchema(z48.object({available:z48.boolean(),reason:CheckProjectDomainHostnameReasonSchema.optional()})),DeleteProjectDomainResponseSchema=createResponseSchema(z48.object({success:z48.boolean(),hostname:z48.string()}))}});import{z as z49}from"zod";var SUBDOMAIN_REGEX,SubdomainCheckReasonSchema,CheckProjectSubdomainResponseSchema,UpdateProjectSubdomainRequestSchema,UpdateProjectSubdomainErrorReasonSchema,UpdateProjectSubdomainResponseSchema,SubdomainSuggestionsQuerySchema,SubdomainSuggestionsResponseSchema,init_project_subdomain_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/project-subdomain.dto.js"(){"use strict";init_response();SUBDOMAIN_REGEX=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/,SubdomainCheckReasonSchema=z49.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain"]),CheckProjectSubdomainResponseSchema=createResponseSchema(z49.object({available:z49.boolean(),reason:SubdomainCheckReasonSchema.optional()})),UpdateProjectSubdomainRequestSchema=z49.object({slug:z49.string().min(1).max(63).regex(SUBDOMAIN_REGEX,{error:"Invalid subdomain shape"})}),UpdateProjectSubdomainErrorReasonSchema=z49.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain","kv_sync_failed","hosting_sync_failed"]),UpdateProjectSubdomainResponseSchema=createResponseSchema(z49.object({subdomain:z49.string(),subdomainUpdatedAt:z49.coerce.date()})),SubdomainSuggestionsQuerySchema=z49.object({base:z49.string().max(100).optional(),max:z49.coerce.number().int().min(1).max(10).optional()}),SubdomainSuggestionsResponseSchema=createResponseSchema(z49.object({suggestions:z49.array(z49.string())}))}});import{z as z50}from"zod";function flag(key,description,options={}){return{name:key.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),key,description,type:options.type??"string",required:options.required??!1,...options.defaultValue!==void 0?{defaultValue:options.defaultValue}:{},...options.enumValues?{enumValues:[...options.enumValues]}:{},isArray:options.isArray??!1}}var GENERATION_QUALITIES,GENERATION_ASPECT_RATIOS,GENERATION_TASK_IDS,GenerationQualitySchema,GenerationTaskIdSchema,GENERATION_TASK_MANIFESTS,GenerationTaskEstimateDTOSchema,GenerationTaskEstimateDTO,init_generation_task_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation-task.dto.js"(){"use strict";init_create_dto();GENERATION_QUALITIES=["draft","standard","premium"],GENERATION_ASPECT_RATIOS=["1:1","16:9","9:16","4:3","3:4"],GENERATION_TASK_IDS=["image.generate","image.edit","image.remove-background","image.upscale","video.generate","video.animate","video.replace"],GenerationQualitySchema=z50.enum(GENERATION_QUALITIES),GenerationTaskIdSchema=z50.enum(GENERATION_TASK_IDS);__name(flag,"flag");GENERATION_TASK_MANIFESTS=[{id:"image.generate",modality:"image",operation:"generate",displayName:"Generate image",description:"Create an image from a prompt. Quality selects the appropriate generation route.",flags:[flag("prompt","Generation prompt",{required:!0}),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.edit",modality:"image",operation:"edit",displayName:"Edit image",description:"Transform up to five source images using a natural-language instruction.",flags:[flag("prompt","Editing instruction",{required:!0}),flag("images","Source asset id or absolute URL; repeatable up to five times",{required:!0,isArray:!0}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"1:1",enumValues:GENERATION_ASPECT_RATIOS})]},{id:"image.remove-background",modality:"image",operation:"remove-background",displayName:"Remove image background",description:"Remove the background from one image and return a transparent cutout.",flags:[flag("image","Source asset id or absolute URL",{required:!0})]},{id:"image.upscale",modality:"image",operation:"upscale",displayName:"Upscale image",description:"Increase image resolution while preserving and optionally enhancing detail.",flags:[flag("image","Source asset id or absolute URL",{required:!0}),flag("targetMegapixels","Target resolution in megapixels",{type:"integer",defaultValue:4}),flag("outputFormat","Output image format",{type:"enum",defaultValue:"png",enumValues:["webp","jpg","png"]}),flag("enhanceDetails","Improve fine detail during upscaling",{type:"boolean",defaultValue:!0}),flag("enhanceRealism","Favor photorealistic detail reconstruction",{type:"boolean",defaultValue:!1})]},{id:"video.generate",modality:"video",operation:"generate",displayName:"Generate video",description:"Create a video from text or animate one source image. Loop closes the final frame back to the first.",flags:[flag("prompt","Generation and motion prompt",{required:!0}),flag("image","Optional source asset id or absolute URL"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("aspectRatio","Output aspect ratio",{type:"enum",defaultValue:"16:9",enumValues:GENERATION_ASPECT_RATIOS}),flag("duration","Duration in seconds; loops support 3 to 20 seconds",{type:"integer",defaultValue:5}),flag("includeAudio","Generate audio with the video",{type:"boolean",defaultValue:!1}),flag("loop","Make the final frame return to the source image",{type:"boolean",defaultValue:!1})]},{id:"video.animate",modality:"video",operation:"animate",displayName:"Animate image from video",description:"Apply the motion and camera movement from a source video to a reference image.",flags:[flag("video","Motion source asset id or absolute URL",{required:!0}),flag("image","Subject reference asset id or absolute URL",{required:!0}),flag("prompt","Optional instruction for the animation"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]},{id:"video.replace",modality:"video",operation:"replace",displayName:"Replace subjects in video",description:"Replace people in a source video with one to three reference identities while preserving motion.",flags:[flag("video","Source video asset id or absolute URL",{required:!0}),flag("images","Identity reference asset id or URL; repeatable up to three times",{required:!0,isArray:!0}),flag("prompt","Optional placement instruction"),flag("quality","Quality and cost tier",{type:"enum",defaultValue:"standard",enumValues:GENERATION_QUALITIES}),flag("duration","Source duration in seconds for cost calculation",{type:"integer",defaultValue:5}),flag("includeAudio","Keep audio in the generated video",{type:"boolean",defaultValue:!0})]}],GenerationTaskEstimateDTOSchema=z50.object({task:GenerationTaskIdSchema,quality:GenerationQualitySchema.optional(),costUsd:z50.number(),credits:z50.number().optional(),billingMode:z50.enum(["fimo-credits","provider-account"]).optional(),confidence:z50.enum(["exact","estimated","metered"]),basis:z50.string()}),GenerationTaskEstimateDTO=createDTO(GenerationTaskEstimateDTOSchema)}});import{z as z51}from"zod";var GenerateRequestBaseSchema,GenerateRequestDTOSchema,GenerateRequestDTO,GenerateResponseDataSchema,GenerateResponseDTO,GenerateResponseSchema,GenerateErrorSchema,init_generation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/generation.dto.js"(){"use strict";init_create_dto();init_response();init_asset_dto();init_generation_task_dto();GenerateRequestBaseSchema=z51.object({options:z51.record(z51.string(),z51.unknown()),name:z51.string().optional(),parentId:z51.string().nullable().optional(),altText:z51.string().optional(),caption:z51.string().optional()}),GenerateRequestDTOSchema=GenerateRequestBaseSchema.extend({task:z51.string().min(1).optional(),model:z51.string().min(1).optional()}).superRefine((value,context)=>{!!value.task==!!value.model&&context.addIssue({code:"custom",message:"Provide exactly one of task or model",path:["task"]})}),GenerateRequestDTO=createDTO(GenerateRequestDTOSchema),GenerateResponseDataSchema=z51.object({jobId:z51.string(),status:z51.enum(["queued","running","completed","failed"]),asset:AssetDTOSchema.optional(),error:z51.string().nullable().optional(),credits:z51.number().optional(),costUsd:z51.number().optional(),billingMode:z51.enum(["fimo-credits","provider-account"]).optional(),task:GenerationTaskIdSchema.optional(),quality:GenerationQualitySchema.optional()}),GenerateResponseDTO=createDTO(GenerateResponseDataSchema),GenerateResponseSchema=createResponseSchema(GenerateResponseDataSchema),GenerateErrorSchema=z51.object({error:z51.string(),code:z51.enum(["unknown-task","unknown-model","options-invalid","source-invalid","task-routing-failed","generation-failed","provider-error","cost-limit-exceeded","cost-estimate-unavailable","unsupported-modality"]),availableTasks:z51.array(GenerationTaskIdSchema).optional(),availableModels:z51.array(z51.string()).optional(),issues:z51.array(z51.unknown()).optional()})}});import{z as z52}from"zod";var FlagTypeSchema,FlagSpecSchema,AssetModelPriceSchema,AssetModelDTOSchema,AssetModelDTO,AssetModelEstimateDTOSchema,AssetModelEstimateDTO,init_asset_model_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/asset-model.dto.js"(){"use strict";init_create_dto();FlagTypeSchema=z52.enum(["string","number","integer","boolean","enum","array","unknown"]),FlagSpecSchema=z52.object({name:z52.string(),key:z52.string(),description:z52.string(),type:FlagTypeSchema,required:z52.boolean(),defaultValue:z52.unknown().optional(),enumValues:z52.array(z52.string()).optional(),isArray:z52.boolean()}),AssetModelPriceSchema=z52.object({unitPrice:z52.number(),unit:z52.string(),confidence:z52.enum(["exact","estimated","metered"])}),AssetModelDTOSchema=z52.object({id:z52.string(),shortName:z52.string(),provider:z52.string(),source:z52.string(),modality:z52.enum(["image","video","audio"]),tags:z52.array(z52.string()),displayName:z52.string(),description:z52.string(),flags:z52.array(FlagSpecSchema),price:AssetModelPriceSchema.nullable()}),AssetModelDTO=createDTO(AssetModelDTOSchema),AssetModelEstimateDTOSchema=z52.object({model:z52.string(),costUsd:z52.number(),credits:z52.number(),billingMode:z52.enum(["fimo-credits","provider-account"]),confidence:z52.enum(["exact","estimated","metered"]),basis:z52.string()}),AssetModelEstimateDTO=createDTO(AssetModelEstimateDTOSchema)}});import{z as z53}from"zod";var UserTourDTOSchema,UserTourDTO,UserTourResponseSchema,UserTourListResponseSchema,init_tour_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/tour.dto.js"(){"use strict";init_create_dto();init_response();UserTourDTOSchema=z53.object({tourId:z53.string(),version:z53.string(),status:z53.string(),completedAt:z53.coerce.date()}),UserTourDTO=createDTO(UserTourDTOSchema),UserTourResponseSchema=createResponseSchema(UserTourDTOSchema),UserTourListResponseSchema=createResponseSchema(z53.array(UserTourDTOSchema))}});import{z as z54}from"zod";var SUPPORT_REPORT_CATEGORIES,SupportReportCategorySchema,SUPPORT_REPORT_STATUSES,SupportReportStatusSchema,SupportReportSourceSchema,SupportReportDeliveryStatusSchema,SUPPORT_REPORT_LINK_KINDS,SupportReportLinkKindSchema,SupportReportEventKindSchema,SupportReportActorKindSchema,SupportReportTagSchema,SupportReportHttpUrlSchema,SupportReportContextInputSchema,CreateSupportReportInputSchema,SupportReportListQuerySchema,UpdateSupportReportInputSchema,CreateSupportReportMessageInputSchema,CreateSupportReportLinkInputSchema,SupportReportActorDTOSchema,SupportReportLinkDTOSchema,SupportReportLinkDTO,SupportReportEventDTOSchema,SupportReportEventDTO,SupportReportSummaryDTOSchema,SupportReportSummaryDTO,SupportReportDetailDTOSchema,SupportReportDetailDTO,SupportReportListDTOSchema,SupportReportListDTO,CreateSupportReportResultDTOSchema,CreateSupportReportResultDTO,init_support_report_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/support-report.dto.js"(){"use strict";init_create_dto();SUPPORT_REPORT_CATEGORIES=[{value:"account_billing",label:"Account & billing"},{value:"project_issues",label:"Project issues"},{value:"ai_prompt_output_quality",label:"AI prompt & output quality"},{value:"roles_access_collaboration",label:"Roles, access & collaboration"},{value:"code_technical_questions",label:"Code & technical questions"},{value:"others",label:"Other"}],SupportReportCategorySchema=z54.enum(SUPPORT_REPORT_CATEGORIES.map(category=>category.value)),SUPPORT_REPORT_STATUSES=["new","in_progress","waiting","resolved","duplicate","irrelevant","ignored"],SupportReportStatusSchema=z54.enum(SUPPORT_REPORT_STATUSES),SupportReportSourceSchema=z54.enum(["app","cli","agent"]),SupportReportDeliveryStatusSchema=z54.enum(["pending","delivered","failed"]),SUPPORT_REPORT_LINK_KINDS=["linear","pylon","project","sentry","grafana","other"],SupportReportLinkKindSchema=z54.enum(SUPPORT_REPORT_LINK_KINDS),SupportReportEventKindSchema=z54.enum(["report_created","report_updated","message","link_added","link_removed","delivery"]),SupportReportActorKindSchema=z54.enum(["user","agent","system"]),SupportReportTagSchema=z54.string().trim().min(1).max(50),SupportReportHttpUrlSchema=z54.url({protocol:/^https?$/}).max(2e3),SupportReportContextInputSchema=z54.object({organization:z54.object({id:z54.string().trim().min(1).max(255),name:z54.string().trim().max(240).optional()}),project:z54.object({id:z54.uuid(),name:z54.string().trim().max(240).optional(),createdAt:z54.coerce.date().optional()}).optional(),environment:z54.string().trim().max(255).optional(),clientVersion:z54.string().trim().max(64).optional()}),CreateSupportReportInputSchema=z54.object({message:z54.string().trim().min(1).max(2e4),category:SupportReportCategorySchema,source:SupportReportSourceSchema.default("app"),context:SupportReportContextInputSchema}),SupportReportListQuerySchema=z54.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:SupportReportTagSchema.optional(),query:z54.string().trim().max(200).optional(),limit:z54.coerce.number().int().min(1).max(100).default(50),offset:z54.coerce.number().int().min(0).default(0)}),UpdateSupportReportInputSchema=z54.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z54.array(SupportReportTagSchema).max(20).optional(),duplicateOfReportId:z54.uuid().nullable().optional(),note:z54.string().trim().min(1).max(2e4).optional()}).refine(input=>Object.values(input).some(value=>value!==void 0),{message:"At least one report change is required"}),CreateSupportReportMessageInputSchema=z54.object({message:z54.string().trim().min(1).max(2e4)}),CreateSupportReportLinkInputSchema=z54.object({kind:SupportReportLinkKindSchema,label:z54.string().trim().min(1).max(240),url:SupportReportHttpUrlSchema,externalId:z54.string().trim().max(240).optional()}),SupportReportActorDTOSchema=z54.object({kind:SupportReportActorKindSchema,id:z54.string().nullable(),name:z54.string().nullable()}),SupportReportLinkDTOSchema=z54.object({id:z54.uuid(),kind:SupportReportLinkKindSchema,label:z54.string(),url:SupportReportHttpUrlSchema,externalId:z54.string().nullable(),addedBy:SupportReportActorDTOSchema,createdAt:z54.coerce.date()}),SupportReportLinkDTO=createDTO(SupportReportLinkDTOSchema),SupportReportEventDTOSchema=z54.object({id:z54.uuid(),kind:SupportReportEventKindSchema,body:z54.string().nullable(),metadata:z54.record(z54.string(),z54.unknown()),actor:SupportReportActorDTOSchema,createdAt:z54.coerce.date()}),SupportReportEventDTO=createDTO(SupportReportEventDTOSchema),SupportReportSummaryDTOSchema=z54.object({id:z54.uuid(),status:SupportReportStatusSchema,category:SupportReportCategorySchema,tags:z54.array(z54.string()),source:SupportReportSourceSchema,message:z54.string(),reporter:z54.object({id:z54.string().nullable(),name:z54.string().nullable(),email:z54.string().nullable()}),organization:z54.object({id:z54.string().nullable(),name:z54.string()}),project:z54.object({id:z54.uuid().nullable(),name:z54.string()}).nullable(),assignee:SupportReportActorDTOSchema.nullable(),delivery:z54.object({status:SupportReportDeliveryStatusSchema,pylonIssueId:z54.string().nullable(),pylonIssueUrl:SupportReportHttpUrlSchema.nullable(),error:z54.string().nullable(),deliveredAt:z54.coerce.date().nullable()}),duplicateOfReportId:z54.uuid().nullable(),resolvedAt:z54.coerce.date().nullable(),createdAt:z54.coerce.date(),updatedAt:z54.coerce.date()}),SupportReportSummaryDTO=createDTO(SupportReportSummaryDTOSchema),SupportReportDetailDTOSchema=SupportReportSummaryDTOSchema.extend({environment:z54.string().nullable(),clientVersion:z54.string().nullable(),links:z54.array(SupportReportLinkDTOSchema),events:z54.array(SupportReportEventDTOSchema)}),SupportReportDetailDTO=createDTO(SupportReportDetailDTOSchema),SupportReportListDTOSchema=z54.object({reports:z54.array(SupportReportSummaryDTOSchema),total:z54.number().int().nonnegative(),statusCounts:z54.object({new:z54.number().int().nonnegative(),in_progress:z54.number().int().nonnegative(),waiting:z54.number().int().nonnegative(),resolved:z54.number().int().nonnegative(),duplicate:z54.number().int().nonnegative(),irrelevant:z54.number().int().nonnegative(),ignored:z54.number().int().nonnegative()}),deliveryFailedCount:z54.number().int().nonnegative(),limit:z54.number().int().positive(),offset:z54.number().int().nonnegative()}),SupportReportListDTO=createDTO(SupportReportListDTOSchema),CreateSupportReportResultDTOSchema=z54.object({id:z54.uuid(),deliveryStatus:SupportReportDeliveryStatusSchema,message:z54.string()}),CreateSupportReportResultDTO=createDTO(CreateSupportReportResultDTOSchema)}});import{z as z55}from"zod";var SubscriptionStatusSchema,CreditBalanceBreakdownDTOSchema,CreditBalanceBreakdownDTO,SubscriptionPlanDTOSchema,SubscriptionPlanDTO,SubscriptionPaymentMethodDTOSchema,SubscriptionPaymentMethodDTO,SubscriptionPricingDTOSchema,SubscriptionPricingDTO,SubscriptionDetailsDTOSchema,SubscriptionDetailsDTO,CreditAlertDTOSchema,CreditAlertDTO,PlanAllocationDTOSchema,PlanAllocationDTO,LatestCancellationDTOSchema,LatestCancellationDTO,OrganizationSubscriptionDTOSchema,OrganizationSubscriptionDTO,BaseCreditTopupRequestSchema,FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema,CreditTopupRequestDTOSchema,CreditTopupRequestDTO,CreditTopupResponseDTOSchema,CreditTopupResponseDTO,init_subscription_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/subscription.dto.js"(){"use strict";init_common();init_create_dto();init_billing_dto();SubscriptionStatusSchema=z55.enum(["active","cancelled","draft","errored","paused","pending","voided"]),CreditBalanceBreakdownDTOSchema=z55.object({total:z55.number(),base:z55.number(),purchases:z55.number(),awards:z55.number()}),CreditBalanceBreakdownDTO=createDTO(CreditBalanceBreakdownDTOSchema),SubscriptionPlanDTOSchema=z55.object({id:z55.string(),name:z55.string()}),SubscriptionPlanDTO=createDTO(SubscriptionPlanDTOSchema),SubscriptionPaymentMethodDTOSchema=z55.object({type:z55.string(),brand:z55.string().nullable(),last4:z55.string().nullable(),expirationDate:z55.string().nullable()}),SubscriptionPaymentMethodDTO=createDTO(SubscriptionPaymentMethodDTOSchema),SubscriptionPricingDTOSchema=z55.object({currency:z55.string(),nextPaymentAmount:z55.number().nullable(),nextPaymentAt:z55.string().nullable(),billingInterval:z55.string().nullable(),totalAmount:z55.number().nullable(),discountAmount:z55.number().nullable()}),SubscriptionPricingDTO=createDTO(SubscriptionPricingDTOSchema),SubscriptionDetailsDTOSchema=z55.object({id:z55.string(),status:SubscriptionStatusSchema,plan:SubscriptionPlanDTOSchema.nullable(),currentPeriodStartedAt:z55.string().nullable(),currentPeriodEndsAt:z55.string().nullable(),renewsAt:z55.string().nullable(),cancelAt:z55.string().nullable(),renewAutomatically:z55.boolean(),pricing:SubscriptionPricingDTOSchema.nullable(),paymentMethod:SubscriptionPaymentMethodDTOSchema.nullable()}),SubscriptionDetailsDTO=createDTO(SubscriptionDetailsDTOSchema),CreditAlertDTOSchema=z55.object({type:z55.enum(["low_balance","critical_balance","approaching_limit"]),message:z55.string(),estimatedPromptsRemaining:z55.number().nullable(),avgCostPerPrompt:z55.number().nullable()}),CreditAlertDTO=createDTO(CreditAlertDTOSchema),PlanAllocationDTOSchema=z55.object({monthlyCredits:z55.number().nullable(),usedThisPeriod:z55.number(),remainingThisPeriod:z55.number()}),PlanAllocationDTO=createDTO(PlanAllocationDTOSchema),LatestCancellationDTOSchema=z55.object({organizationId:z55.string(),planCode:TemplateCodeSchema,reason:CancellationReasonCodeSchema,details:z55.string().nullable(),tenureDays:z55.number().int().nonnegative(),capturedAt:z55.string()}),LatestCancellationDTO=createDTO(LatestCancellationDTOSchema),OrganizationSubscriptionDTOSchema=z55.object({hasSubscription:z55.boolean(),subscription:SubscriptionDetailsDTOSchema.nullable(),credits:CreditBalanceBreakdownDTOSchema,planAllocation:PlanAllocationDTOSchema.nullable(),lowBalanceThreshold:z55.number().nullable(),alerts:z55.array(CreditAlertDTOSchema),portalUrl:z55.string().nullable(),latestCancellation:LatestCancellationDTOSchema.nullable()}),OrganizationSubscriptionDTO=createDTO(OrganizationSubscriptionDTOSchema),BaseCreditTopupRequestSchema=z55.object({creditCount:z55.number().int().positive(),expiresAt:z55.string().datetime().nullable().optional(),message:z55.string().nullable().optional()}),FreeCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z55.literal("free"),amountCents:z55.number().int().positive().nullable().optional()}),PurchaseCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z55.literal("purchase"),amountCents:z55.number().int().positive()}),CreditTopupRequestDTOSchema=z55.discriminatedUnion("type",[FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema]),CreditTopupRequestDTO=createDTO(CreditTopupRequestDTOSchema),CreditTopupResponseDTOSchema=z55.object({success:z55.boolean(),transactionId:z55.string().nullable(),newBalance:z55.number(),creditCount:z55.number(),type:z55.enum(["free","purchase"]),invoiceId:z55.string().nullable()}),CreditTopupResponseDTO=createDTO(CreditTopupResponseDTOSchema)}});import{z as z56}from"zod";var UsageSummaryDTOSchema,UsageSummaryDTO,UsageByProjectDTOSchema,UsageByProjectDTO,UsageByUserDTOSchema,UsageByUserDTO,UsageTimelineItemDTOSchema,UsageTimelineItemDTO,UsageByUserForProjectDTOSchema,UsageByUserForProjectDTO,ProjectUsageDetailDTOSchema,ProjectUsageDetailDTO,OrganizationUsageDTOSchema,OrganizationUsageDTO,init_usage_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage.dto.js"(){"use strict";init_create_dto();UsageSummaryDTOSchema=z56.object({totalCredits:z56.number(),totalCostUsd:z56.number(),totalMessages:z56.number(),avgCostPerMessage:z56.number(),periodStart:z56.string().nullable(),periodEnd:z56.string().nullable()}),UsageSummaryDTO=createDTO(UsageSummaryDTOSchema),UsageByProjectDTOSchema=z56.object({projectId:z56.string(),projectName:z56.string(),projectDisplayName:z56.string().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByProjectDTO=createDTO(UsageByProjectDTOSchema),UsageByUserDTOSchema=z56.object({userId:z56.string(),userName:z56.string().nullable(),userEmail:z56.string().email().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByUserDTO=createDTO(UsageByUserDTOSchema),UsageTimelineItemDTOSchema=z56.object({date:z56.string(),credits:z56.number(),costUsd:z56.number(),messages:z56.number()}),UsageTimelineItemDTO=createDTO(UsageTimelineItemDTOSchema),UsageByUserForProjectDTOSchema=z56.object({userId:z56.string(),userName:z56.string().nullable(),userEmail:z56.string().email().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number()}),UsageByUserForProjectDTO=createDTO(UsageByUserForProjectDTOSchema),ProjectUsageDetailDTOSchema=z56.object({projectId:z56.string(),projectName:z56.string(),projectDisplayName:z56.string().nullable(),summary:UsageSummaryDTOSchema,byUser:z56.array(UsageByUserForProjectDTOSchema),timeline:z56.array(UsageTimelineItemDTOSchema)}),ProjectUsageDetailDTO=createDTO(ProjectUsageDetailDTOSchema),OrganizationUsageDTOSchema=z56.object({summary:UsageSummaryDTOSchema,byProject:z56.array(UsageByProjectDTOSchema),byUser:z56.array(UsageByUserDTOSchema),timeline:z56.array(UsageTimelineItemDTOSchema)}),OrganizationUsageDTO=createDTO(OrganizationUsageDTOSchema)}});import{z as z57}from"zod";var TimeRangePresetSchema,SortOrderSchema,UsageAnalyticsQuerySchema,UsageOverviewSummaryDTOSchema,UsageOverviewSummaryDTO,UsageTimelinePointDTOSchema,UsageTimelinePointDTO,OrganizationUsageRowDTOSchema,OrganizationUsageRowDTO,UserUsageRowDTOSchema,UserUsageRowDTO,ProjectUsageRowDTOSchema,ProjectUsageRowDTO,UsageDistributionItemDTOSchema,UsageDistributionItemDTO,UsageHeatmapPointDTOSchema,UsageHeatmapPointDTO,UsageOverviewResponseDTOSchema,UsageOverviewResponseDTO,UsagePaginationDTOSchema,UsagePaginationDTO,UsageByOrganizationResponseDTOSchema,UsageByOrganizationResponseDTO,ExtendedUserUsageRowDTOSchema,ExtendedUserUsageRowDTO,UsageByUserResponseDTOSchema,UsageByUserResponseDTO,ExtendedProjectUsageRowDTOSchema,ExtendedProjectUsageRowDTO,UsageByProjectResponseDTOSchema,UsageByProjectResponseDTO,ExportFormatSchema,UsageExportQuerySchema,PeekUsageMetricsDTOSchema,PeekUsageMetricsDTO,OrganizationPeekDTOSchema,OrganizationPeekDTO,UserPeekDTOSchema,UserPeekDTO,ProjectPeekDTOSchema,ProjectPeekDTO,init_usage_analytics_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/usage-analytics.dto.js"(){"use strict";init_create_dto();TimeRangePresetSchema=z57.enum(["today","1d","7d","14d","30d","60d","90d"]),SortOrderSchema=z57.enum(["asc","desc"]),UsageAnalyticsQuerySchema=z57.object({startDate:z57.string().optional(),endDate:z57.string().optional(),preset:TimeRangePresetSchema.optional().default("30d"),page:z57.coerce.number().int().positive().default(1),limit:z57.coerce.number().int().positive().max(100).default(20),sortBy:z57.string().optional(),sortOrder:SortOrderSchema.optional().default("desc"),search:z57.string().optional()}),UsageOverviewSummaryDTOSchema=z57.object({totalCredits:z57.number(),totalCostUsd:z57.number(),totalMessages:z57.number(),avgCostPerMessage:z57.number(),avgCreditsPerMessage:z57.number(),periodStart:z57.string(),periodEnd:z57.string(),creditsChange:z57.number().nullable(),costChange:z57.number().nullable(),messagesChange:z57.number().nullable()}),UsageOverviewSummaryDTO=createDTO(UsageOverviewSummaryDTOSchema),UsageTimelinePointDTOSchema=z57.object({date:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number()}),UsageTimelinePointDTO=createDTO(UsageTimelinePointDTOSchema),OrganizationUsageRowDTOSchema=z57.object({organizationId:z57.string(),organizationName:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),userCount:z57.number(),projectCount:z57.number()}),OrganizationUsageRowDTO=createDTO(OrganizationUsageRowDTOSchema),UserUsageRowDTOSchema=z57.object({userId:z57.string(),userName:z57.string().nullable(),userEmail:z57.string().nullable(),userImage:z57.string().nullable(),organizationId:z57.string().nullable(),organizationName:z57.string().nullable(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),projectCount:z57.number()}),UserUsageRowDTO=createDTO(UserUsageRowDTOSchema),ProjectUsageRowDTOSchema=z57.object({projectId:z57.string(),projectName:z57.string(),projectDisplayName:z57.string().nullable(),organizationId:z57.string(),organizationName:z57.string(),credits:z57.number(),costUsd:z57.number(),messages:z57.number(),percentage:z57.number(),userCount:z57.number()}),ProjectUsageRowDTO=createDTO(ProjectUsageRowDTOSchema),UsageDistributionItemDTOSchema=z57.object({id:z57.string(),name:z57.string(),value:z57.number(),percentage:z57.number()}),UsageDistributionItemDTO=createDTO(UsageDistributionItemDTOSchema),UsageHeatmapPointDTOSchema=z57.object({day:z57.number(),hour:z57.number(),value:z57.number()}),UsageHeatmapPointDTO=createDTO(UsageHeatmapPointDTOSchema),UsageOverviewResponseDTOSchema=z57.object({summary:UsageOverviewSummaryDTOSchema,timeline:z57.array(UsageTimelinePointDTOSchema),topOrganizations:z57.array(OrganizationUsageRowDTOSchema),topUsers:z57.array(UserUsageRowDTOSchema),topProjects:z57.array(ProjectUsageRowDTOSchema),creditDistribution:z57.array(UsageDistributionItemDTOSchema),heatmap:z57.array(UsageHeatmapPointDTOSchema)}),UsageOverviewResponseDTO=createDTO(UsageOverviewResponseDTOSchema),UsagePaginationDTOSchema=z57.object({page:z57.number(),limit:z57.number(),totalItems:z57.number(),totalPages:z57.number(),hasMore:z57.boolean()}),UsagePaginationDTO=createDTO(UsagePaginationDTOSchema),UsageByOrganizationResponseDTOSchema=z57.object({organizations:z57.array(OrganizationUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByOrganizationResponseDTO=createDTO(UsageByOrganizationResponseDTOSchema),ExtendedUserUsageRowDTOSchema=UserUsageRowDTOSchema.extend({organizationCount:z57.number()}),ExtendedUserUsageRowDTO=createDTO(ExtendedUserUsageRowDTOSchema),UsageByUserResponseDTOSchema=z57.object({users:z57.array(ExtendedUserUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByUserResponseDTO=createDTO(UsageByUserResponseDTOSchema),ExtendedProjectUsageRowDTOSchema=ProjectUsageRowDTOSchema.extend({ownerId:z57.string(),ownerName:z57.string().nullable(),ownerEmail:z57.string().nullable()}),ExtendedProjectUsageRowDTO=createDTO(ExtendedProjectUsageRowDTOSchema),UsageByProjectResponseDTOSchema=z57.object({projects:z57.array(ExtendedProjectUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByProjectResponseDTO=createDTO(UsageByProjectResponseDTOSchema),ExportFormatSchema=z57.enum(["csv","json"]),UsageExportQuerySchema=UsageAnalyticsQuerySchema.extend({format:ExportFormatSchema.default("csv"),type:z57.enum(["overview","organizations","users","projects"]).default("overview")}),PeekUsageMetricsDTOSchema=z57.object({credits:z57.number(),costUsd:z57.number(),messages:z57.number()}),PeekUsageMetricsDTO=createDTO(PeekUsageMetricsDTOSchema),OrganizationPeekDTOSchema=z57.object({id:z57.string(),name:z57.string(),createdAt:z57.string(),memberCount:z57.number(),projectCount:z57.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),OrganizationPeekDTO=createDTO(OrganizationPeekDTOSchema),UserPeekDTOSchema=z57.object({id:z57.string(),name:z57.string().nullable(),email:z57.string(),image:z57.string().nullable(),createdAt:z57.string(),organizationCount:z57.number(),projectCount:z57.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),UserPeekDTO=createDTO(UserPeekDTOSchema),ProjectPeekDTOSchema=z57.object({id:z57.string(),name:z57.string(),displayName:z57.string().nullable(),createdAt:z57.string(),organizationId:z57.string(),organizationName:z57.string(),ownerId:z57.string(),ownerName:z57.string().nullable(),ownerEmail:z57.string().nullable(),usage:PeekUsageMetricsDTOSchema,recentActivity:z57.array(UsageTimelinePointDTOSchema)}),ProjectPeekDTO=createDTO(ProjectPeekDTOSchema)}});import{z as z58}from"zod";var SandboxProcessStatusSchema,PresetSandboxCommandSchema,ExecuteSandboxCommandRequestDTOSchema,ExecuteSandboxCommandRequestDTO,SandboxProcessInfoDTOSchema,SandboxProcessInfoDTO,SandboxProcessInfoResponseSchema,SandboxProcessListDTOSchema,SandboxProcessListDTO,SandboxProcessListResponseSchema,ExecuteSandboxCommandResponseDTOSchema,ExecuteSandboxCommandResponseDTO,PresetCommandResponseDTOSchema,PresetCommandResponseDTO,PresetCommandResponseSchema,init_sandbox_command_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/admin/sandbox-command.dto.js"(){"use strict";init_env();init_create_dto();init_response();SandboxProcessStatusSchema=z58.enum(["running","completed","failed","stopped"]),PresetSandboxCommandSchema=z58.enum(["restart-dev-server","stop-dev-server","install-dependencies","reinstall-dependencies","build","typecheck"]),ExecuteSandboxCommandRequestDTOSchema=z58.object({command:z58.string().min(1).max(1e4),cwd:z58.string().optional(),projectEnv:EnvSchema.optional(),env:z58.record(z58.string(),z58.string()).optional(),name:z58.string().optional(),waitForCompletion:z58.boolean().optional().default(!1)}),ExecuteSandboxCommandRequestDTO=createDTO(ExecuteSandboxCommandRequestDTOSchema),SandboxProcessInfoDTOSchema=z58.object({identifier:z58.string(),status:SandboxProcessStatusSchema,command:z58.string().optional(),startedAt:z58.string().optional(),exitCode:z58.number().optional()}),SandboxProcessInfoDTO=createDTO(SandboxProcessInfoDTOSchema),SandboxProcessInfoResponseSchema=createResponseSchema(SandboxProcessInfoDTOSchema),SandboxProcessListDTOSchema=z58.object({processes:z58.array(SandboxProcessInfoDTOSchema)}),SandboxProcessListDTO=createDTO(SandboxProcessListDTOSchema),SandboxProcessListResponseSchema=createResponseSchema(SandboxProcessListDTOSchema),ExecuteSandboxCommandResponseDTOSchema=z58.object({processId:z58.string(),status:SandboxProcessStatusSchema}),ExecuteSandboxCommandResponseDTO=createDTO(ExecuteSandboxCommandResponseDTOSchema),PresetCommandResponseDTOSchema=z58.object({success:z58.boolean(),message:z58.string().optional()}),PresetCommandResponseDTO=createDTO(PresetCommandResponseDTOSchema),PresetCommandResponseSchema=createResponseSchema(PresetCommandResponseDTOSchema)}});import{z as z59}from"zod";var init_esm=__esm({"../../packages/api-contracts/dist/esm/index.js"(){"use strict";init_create_dto();init_response();init_pagination();init_common();init_attachments();init_env();init_realtime();init_references();init_audit_log();init_ops();init_project_dto();init_project_env_dto();init_project_import_export_dto();init_agent_trigger_dto();init_agent_activation_dto();init_agent_list_item_dto();init_agent_session_dto();init_agent_proposal_dto();init_agent_install_summary_dto();init_integration_dto();init_schedule_dto();init_audit_log_dto();init_env_status_dto();init_env_diff_summary_dto();init_project_analytics_dto();init_project_access_dto();init_project_invite_dto();init_publication_dto();init_sandbox_dto();init_organization_dto();init_billing_dto();init_payment_method_dto();init_user_dto();init_content_dto();init_cms_display_defaults_dto();init_asset_dto();init_translation_dto();init_document_dto();init_chat_dto();init_upload_dto();init_service_dto();init_search_dto();init_registered_domain_dto();init_project_domain_dto();init_project_subdomain_dto();init_generation_dto();init_generation_task_dto();init_asset_model_dto();init_tour_dto();init_support_report_dto();init_subscription_dto();init_usage_dto();init_usage_analytics_dto();init_sandbox_command_dto()}});import{execFile as execFile2}from"node:child_process";import{promisify as promisify2}from"node:util";async function runGit2(args,cwd){let{stdout}=await execFileAsync2("git",args,{cwd});return stdout.trim()}async function isGitRepo(cwd){try{return await runGit2(["rev-parse","--is-inside-work-tree"],cwd),!0}catch{return!1}}async function hasUncommittedChanges(cwd){return(await runGit2(["status","--porcelain"],cwd)).length>0}async function cloneRepo2(args){await execFileAsync2("git",["clone","--branch",args.branch,"--single-branch",args.url,args.targetDir])}function isMissingRemoteBranch(error){let stderr=extractStderr(error).toLowerCase();return stderr.includes("remote branch")&&stderr.includes("not found")}async function remoteHasBranch(remoteUrl,branch){let{stdout}=await execFileAsync2("git",["ls-remote","--heads",remoteUrl,branch]);return stdout.trim().length>0}async function currentBranch(cwd){return runGit2(["rev-parse","--abbrev-ref","HEAD"],cwd)}async function currentTagOrNull(cwd){try{return await runGit2(["describe","--tags","--exact-match","HEAD"],cwd)||null}catch{return null}}function isReleaseTag(tag){return tag?/^release\/.+/.test(tag):!1}function classifyPushError(error){let stderr=extractStderr(error),lower=stderr.toLowerCase();return lower.includes("invalid or expired token")||lower.includes("expired token")||lower.includes("invalid token")||lower.includes("could not obtain git credentials")||lower.includes("not signed in")?{kind:"auth",stderr}:lower.includes("remote rejected")||lower.includes("protected")||lower.includes("no-push")||lower.includes("push declined")||lower.includes("not allowed to push")||lower.includes("permission to push")||lower.includes("forbidden")||lower.includes("403")?{kind:"protected",stderr}:lower.includes("non-fast-forward")||lower.includes("rejected")||lower.includes("fetch first")||lower.includes("updates were rejected")?{kind:"non-fast-forward",stderr}:lower.includes("authentication")||lower.includes("permission denied")?{kind:"auth",stderr}:lower.includes("could not resolve host")||lower.includes("timed out")||lower.includes("connection")?{kind:"network",stderr}:{kind:"unknown",stderr}}function extractStderr(error){if(error&&typeof error=="object"&&"stderr"in error){let value=error.stderr;if(typeof value=="string")return value;if(Buffer.isBuffer(value))return value.toString("utf8")}return error instanceof Error?error.message:String(error)}var execFileAsync2,init_git=__esm({"src/cli/utils/git.ts"(){execFileAsync2=promisify2(execFile2);__name(runGit2,"runGit");__name(isGitRepo,"isGitRepo");__name(hasUncommittedChanges,"hasUncommittedChanges");__name(cloneRepo2,"cloneRepo");__name(isMissingRemoteBranch,"isMissingRemoteBranch");__name(remoteHasBranch,"remoteHasBranch");__name(currentBranch,"currentBranch");__name(currentTagOrNull,"currentTagOrNull");__name(isReleaseTag,"isReleaseTag");__name(classifyPushError,"classifyPushError");__name(extractStderr,"extractStderr")}});function projectSettingsFromEnv(){let projectId=process.env.FIMO_PROJECT_ID?.trim();return projectId?{projectId,organizationId:process.env.FIMO_ORGANIZATION_ID?.trim()??"",name:process.env.FIMO_PROJECT_NAME?.trim()??projectId,apiUrl:process.env.FIMO_API_URL?.trim()??loadConfig().apiUrl}:null}async function resolveEnvFromGit(cwd){if(!await isGitRepo(cwd))return null;try{let tag=await currentTagOrNull(cwd);if(isReleaseTag(tag))return{env:"prod",source:"tag",readOnly:!0};let branch=await currentBranch(cwd);return!branch||branch==="HEAD"||!isValidEnv(branch)?null:{env:branch,source:"branch"}}catch{return null}}async function getProjectContext(opts={}){let cwd=resolveProjectCwd(opts.cwd),settings;try{settings=loadProjectSettings(cwd)}catch{let fromEnv=projectSettingsFromEnv();if(!fromEnv)throw new NotInProjectError;settings=fromEnv}let env,source,readOnly=!1;if(opts.envOverride!==void 0){if(!isValidEnv(opts.envOverride))throw new InvalidEnvOverrideError(opts.envOverride);env=opts.envOverride,source="flag"}else{let fromGit=await resolveEnvFromGit(cwd);if(fromGit)env=fromGit.env,source=fromGit.source,readOnly=fromGit.readOnly===!0;else{if(opts.requireBranch)throw await isGitRepo(cwd)?new GitBranchUndetectedError:new NotInProjectError;env=DEFAULT_ENV,source="fallback"}}if(opts.api&&env!=="prod")try{let names=(await opts.api.listEnvs(settings.projectId)).map(e=>e.env);if(!names.includes(env)&&source==="flag")throw new EnvNotFoundError(env,names)}catch(err){if(err instanceof EnvNotFoundError)throw err}return{projectId:settings.projectId,organizationId:settings.organizationId,name:settings.name,apiUrl:settings.apiUrl,env,source,readOnly:readOnly||void 0}}function envSourceBanner(ctx){let sourceHint=ctx.source==="flag"?"--env":ctx.source==="branch"?"git branch":ctx.source==="tag"?"git tag":"default",ro=ctx.readOnly?" \xB7 read-only":"";return`\u2192 env: ${ctx.env} (from ${sourceHint}${ro})`}function envOverrideFromCommand(cmd){let cur=cmd??void 0;for(;cur;){let env=cur.opts().env;if(typeof env=="string"&&env.length>0)return env;cur=cur.parent??null}}async function bootstrapProjectCommand(options={},cmd,bootstrapOpts={}){let envOverride2=envOverrideFromCommand(cmd),baseApi=new FimoApiClient(loadConfig()),ctx=await getProjectContext({cwd:options.cwd,envOverride:envOverride2,requireBranch:bootstrapOpts.requireBranch,api:baseApi});if(!bootstrapOpts.quiet){let{currentMode:currentMode2}=await Promise.resolve().then(()=>(init_dist(),dist_exports));currentMode2().format==="pretty"&&process.stderr.write(`${envSourceBanner(ctx)}
439
436
  `)}if(bootstrapOpts.refuseReadOnly&&ctx.readOnly)throw new Error(`Refusing to run a mutating command against read-only env '${ctx.env}'. Switch off the release/* tag or pass --env <writable-env>.`);return{ctx,api:baseApi.withEnv(ctx.env)}}var NotInProjectError,InvalidEnvOverrideError,EnvNotFoundError,GitBranchUndetectedError,init_project_context=__esm({"src/cli/utils/project-context.ts"(){init_esm();init_api();init_config();init_git();init_project();NotInProjectError=class extends Error{static{__name(this,"NotInProjectError")}constructor(){super("You are not in a Fimo project. Run `fimo create` to start one, or cd into a linked project."),this.name="NotInProjectError"}};__name(projectSettingsFromEnv,"projectSettingsFromEnv");InvalidEnvOverrideError=class extends Error{static{__name(this,"InvalidEnvOverrideError")}value;constructor(value){super(`--env value '${value}' is invalid. Env names must match /^[a-zA-Z0-9._/-]+$/, not start with '-', and be \u2264255 chars.`),this.name="InvalidEnvOverrideError",this.value=value}},EnvNotFoundError=class extends Error{static{__name(this,"EnvNotFoundError")}env;knownEnvs;constructor(env,knownEnvs){super(`Env '${env}' not found on the server. Known envs: ${knownEnvs.length>0?knownEnvs.join(", "):"(none yet)"}.`),this.name="EnvNotFoundError",this.env=env,this.knownEnvs=knownEnvs}},GitBranchUndetectedError=class extends Error{static{__name(this,"GitBranchUndetectedError")}constructor(){super("In a git repository but no branch could be detected (detached HEAD or empty repo). Pass --env <name> to target an env explicitly."),this.name="GitBranchUndetectedError"}};__name(resolveEnvFromGit,"resolveEnvFromGit");__name(getProjectContext,"getProjectContext");__name(envSourceBanner,"envSourceBanner");__name(envOverrideFromCommand,"envOverrideFromCommand");__name(bootstrapProjectCommand,"bootstrapProjectCommand")}});function planRemoteConfig(remoteUrl){let u2=new URL(remoteUrl),cleanUrl=`${u2.protocol}//${u2.host}${u2.pathname}`,credentialKey=`credential.${u2.protocol}//${u2.host}`;return{cleanUrl,credentialKey}}function shellQuote(value){return`'${value.replace(/'/g,"'\\''")}'`}function credentialHelperCommand(argv=process.argv){let entry=argv[1];return entry?`!${shellQuote(process.execPath)} ${shellQuote(entry)} git-credential`:"!fimo git-credential"}async function ensureFimoRemote(cwd,remoteUrl){let{cleanUrl,credentialKey}=planRemoteConfig(remoteUrl);await runGit2(["remote","set-url","fimo",cleanUrl],cwd).catch(async()=>{await runGit2(["remote","add","fimo",cleanUrl],cwd)}),await runGit2(["config","--unset-all",`${credentialKey}.helper`],cwd).catch(()=>{}),await runGit2(["config","--add",`${credentialKey}.helper`,""],cwd),await runGit2(["config","--add",`${credentialKey}.helper`,credentialHelperCommand()],cwd),await runGit2(["config",`${credentialKey}.useHttpPath`,"true"],cwd),await runGit2(["config",`${credentialKey}.username`,"t"],cwd)}var init_git_credential_setup=__esm({"src/cli/utils/git-credential-setup.ts"(){init_git();__name(planRemoteConfig,"planRemoteConfig");__name(shellQuote,"shellQuote");__name(credentialHelperCommand,"credentialHelperCommand");__name(ensureFimoRemote,"ensureFimoRemote")}});function isInteractive(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function assertInteractive(hint,command="fimo"){currentMode().format==="json"&&(ui.error({command,code:"NON_INTERACTIVE_REFUSAL",message:"Cannot prompt in --json mode.",hint}),process.exit(1)),!isInteractive()&&(ui.error({command,code:"NON_INTERACTIVE_REFUSAL",message:"Cannot prompt in a non-interactive shell.",hint}),process.exit(1))}var init_interactive=__esm({"src/cli/utils/interactive.ts"(){init_dist();__name(isInteractive,"isInteractive");__name(assertInteractive,"assertInteractive")}});import fs17 from"node:fs";import path21 from"node:path";function writeLocalProjectFiles(args){let{targetDir,project,apiUrl,tenantApiUrl}=args,fimoJson={projectId:project.id,organizationId:project.organizationId,name:project.name,apiUrl};fs17.writeFileSync(path21.join(targetDir,".fimo.settings.json"),`${JSON.stringify(fimoJson,null,2)}
440
437
  `);let initialSiteName=project.displayName?.trim()||project.name,configPath=path21.join(targetDir,"fimo-config.json");if(fs17.existsSync(configPath))try{let config=JSON.parse(fs17.readFileSync(configPath,"utf-8")),seo=config.seo??{};config.seo={...seo,siteName:initialSiteName},fs17.writeFileSync(configPath,`${JSON.stringify(config,null,2)}
441
438
  `)}catch{}let envPath=path21.join(targetDir,".env"),envBlock=`VITE_API_URL=${tenantApiUrl}
@@ -477,13 +474,16 @@ return __eta.res;
477
474
  `):type==="e"&&(returnStr+=content2+`
478
475
  `)}}return returnStr}function trimWS(str,config,wsLeft,wsRight){let leftTrim,rightTrim;return Array.isArray(config.autoTrim)?(leftTrim=config.autoTrim[1],rightTrim=config.autoTrim[0]):leftTrim=rightTrim=config.autoTrim,(wsLeft||wsLeft===!1)&&(leftTrim=wsLeft),(wsRight||wsRight===!1)&&(rightTrim=wsRight),!rightTrim&&!leftTrim?str:leftTrim==="slurp"&&rightTrim==="slurp"?str.trim():(leftTrim==="_"||leftTrim==="slurp"?str=str.trimStart():(leftTrim==="-"||leftTrim==="nl")&&(str=str.replace(/^(?:\r\n|\n|\r)/,"")),rightTrim==="_"||rightTrim==="slurp"?str=str.trimEnd():(rightTrim==="-"||rightTrim==="nl")&&(str=str.replace(/(?:\r\n|\n|\r)$/,"")),str)}function replaceChar(s){return escMap[s]}function XMLEscape(str){let newStr=String(str);return/[&<>"']/.test(newStr)?newStr.replace(/[&<>"']/g,replaceChar):newStr}function escapeRegExp2(string){return string.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&")}function getLineNo(str,index2){return str.slice(0,index2).split(`
479
476
  `).length}function parse8(str){let config=this.config,buffer=[],trimLeftOfNextStr=!1,lastIndex=0,parseOptions=config.parse;if(config.plugins)for(let i=0;i<config.plugins.length;i++){let plugin=config.plugins[i];plugin.processTemplate&&(str=plugin.processTemplate(str,config))}config.rmWhitespace&&(str=str.replace(/[\r\n]+/g,`
480
- `).replace(/^\s+|\s+$/gm,"")),templateLitReg.lastIndex=0,singleQuoteReg.lastIndex=0,doubleQuoteReg.lastIndex=0;function pushString(strng,shouldTrimRightOfString){strng&&(strng=trimWS(strng,config,trimLeftOfNextStr,shouldTrimRightOfString),strng&&(strng=strng.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),buffer.push(strng)))}__name(pushString,"pushString");let prefixes=[parseOptions.exec,parseOptions.interpolate,parseOptions.raw].reduce(function(accumulator,prefix){return accumulator&&prefix?accumulator+"|"+escapeRegExp2(prefix):prefix?escapeRegExp2(prefix):accumulator},""),parseOpenReg=new RegExp(escapeRegExp2(config.tags[0])+"(-|_)?\\s*("+prefixes+")?\\s*","g"),parseCloseReg=new RegExp("'|\"|`|\\/\\*|(\\s*(-|_)?"+escapeRegExp2(config.tags[1])+")","g"),m;for(;m=parseOpenReg.exec(str);){let precedingString=str.slice(lastIndex,m.index);lastIndex=m[0].length+m.index;let wsLeft=m[1],prefix=m[2]||"";pushString(precedingString,wsLeft),parseCloseReg.lastIndex=lastIndex;let closeTag,currentObj=!1;for(;closeTag=parseCloseReg.exec(str);)if(closeTag[1]){let content2=str.slice(lastIndex,closeTag.index);parseOpenReg.lastIndex=lastIndex=parseCloseReg.lastIndex,trimLeftOfNextStr=closeTag[2],currentObj={t:prefix===parseOptions.exec?"e":prefix===parseOptions.raw?"r":prefix===parseOptions.interpolate?"i":"",val:content2};break}else{let char=closeTag[0];if(char==="/*"){let commentCloseInd=str.indexOf("*/",parseCloseReg.lastIndex);commentCloseInd===-1&&ParseErr("unclosed comment",str,closeTag.index),parseCloseReg.lastIndex=commentCloseInd}else char==="'"?(singleQuoteReg.lastIndex=closeTag.index,singleQuoteReg.exec(str)?parseCloseReg.lastIndex=singleQuoteReg.lastIndex:ParseErr("unclosed string",str,closeTag.index)):char==='"'?(doubleQuoteReg.lastIndex=closeTag.index,doubleQuoteReg.exec(str)?parseCloseReg.lastIndex=doubleQuoteReg.lastIndex:ParseErr("unclosed string",str,closeTag.index)):char==="`"&&(templateLitReg.lastIndex=closeTag.index,templateLitReg.exec(str)?parseCloseReg.lastIndex=templateLitReg.lastIndex:ParseErr("unclosed string",str,closeTag.index))}currentObj?(config.debug&&(currentObj.lineNo=getLineNo(str,m.index)),buffer.push(currentObj)):ParseErr("unclosed tag",str,m.index)}if(pushString(str.slice(lastIndex,str.length),!1),config.plugins)for(let i=0;i<config.plugins.length;i++){let plugin=config.plugins[i];plugin.processAST&&(buffer=plugin.processAST(buffer,config))}return buffer}function handleCache(template,options){let templateStore=options&&options.async?this.templatesAsync:this.templatesSync;if(this.resolvePath&&this.readFile&&!template.startsWith("@")){let templatePath=options.filepath,cachedTemplate=templateStore.get(templatePath);if(this.config.cache&&cachedTemplate)return cachedTemplate;{let templateString=this.readFile(templatePath),templateFn=this.compile(templateString,options);return this.config.cache&&templateStore.define(templatePath,templateFn),templateFn}}else{let cachedTemplate=templateStore.get(template);if(cachedTemplate)return cachedTemplate;throw new EtaNameResolutionError("Failed to get template '"+template+"'")}}function render(template,data2,meta){let templateFn,options={...meta,async:!1};return typeof template=="string"?(this.resolvePath&&this.readFile&&!template.startsWith("@")&&(options.filepath=this.resolvePath(template,options)),templateFn=handleCache.call(this,template,options)):templateFn=template,templateFn.call(this,data2,options)}function renderAsync(template,data2,meta){let templateFn,options={...meta,async:!0};typeof template=="string"?(this.resolvePath&&this.readFile&&!template.startsWith("@")&&(options.filepath=this.resolvePath(template,options)),templateFn=handleCache.call(this,template,options)):templateFn=template;let res=templateFn.call(this,data2,options);return Promise.resolve(res)}function renderString(template,data2){let templateFn=this.compile(template,{async:!1});return render.call(this,templateFn,data2)}function renderStringAsync(template,data2){let templateFn=this.compile(template,{async:!0});return renderAsync.call(this,templateFn,data2)}function readFile2(path49){let res="";try{res=fs20.readFileSync(path49,"utf8")}catch(err){throw err?.code==="ENOENT"?new EtaFileResolutionError(`Could not find template: ${path49}`):err}return res}function resolvePath2(templatePath,options){let resolvedFilePath="",views=this.config.views;if(!views)throw new EtaFileResolutionError("Views directory is not defined");let baseFilePath=options&&options.filepath,defaultExtension=this.config.defaultExtension===void 0?".eta":this.config.defaultExtension,cacheIndex=JSON.stringify({filename:baseFilePath,path:templatePath,views:this.config.views});if(templatePath+=path24.extname(templatePath)?"":defaultExtension,baseFilePath){if(this.config.cacheFilepaths&&this.filepathCache[cacheIndex])return this.filepathCache[cacheIndex];let absolutePathTest=absolutePathRegExp.exec(templatePath);if(absolutePathTest&&absolutePathTest.length){let formattedPath=templatePath.replace(/^\/*|^\\*/,"");resolvedFilePath=path24.join(views,formattedPath)}else resolvedFilePath=path24.join(path24.dirname(baseFilePath),templatePath)}else resolvedFilePath=path24.join(views,templatePath);if(dirIsChild(views,resolvedFilePath))return baseFilePath&&this.config.cacheFilepaths&&(this.filepathCache[cacheIndex]=resolvedFilePath),resolvedFilePath;throw new EtaFileResolutionError(`Template '${templatePath}' is not in the views directory`)}function dirIsChild(parent2,dir){let relative3=path24.relative(parent2,dir);return relative3&&!relative3.startsWith("..")&&!path24.isAbsolute(relative3)}var Cacher,EtaError,EtaParseError,EtaRuntimeError,EtaFileResolutionError,EtaNameResolutionError,AsyncFunction,escMap,defaultConfig2,templateLitReg,singleQuoteReg,doubleQuoteReg,Eta$1,absolutePathRegExp,Eta,init_eta_module=__esm({"../../node_modules/.pnpm/eta@3.5.0/node_modules/eta/dist/eta.module.mjs"(){Cacher=class{static{__name(this,"Cacher")}constructor(cache){this.cache=void 0,this.cache=cache}define(key,val2){this.cache[key]=val2}get(key){return this.cache[key]}remove(key){delete this.cache[key]}reset(){this.cache={}}load(cacheObj){this.cache={...this.cache,...cacheObj}}},EtaError=class extends Error{static{__name(this,"EtaError")}constructor(message){super(message),this.name="Eta Error"}},EtaParseError=class extends EtaError{static{__name(this,"EtaParseError")}constructor(message){super(message),this.name="EtaParser Error"}},EtaRuntimeError=class extends EtaError{static{__name(this,"EtaRuntimeError")}constructor(message){super(message),this.name="EtaRuntime Error"}},EtaFileResolutionError=class extends EtaError{static{__name(this,"EtaFileResolutionError")}constructor(message){super(message),this.name="EtaFileResolution Error"}},EtaNameResolutionError=class extends EtaError{static{__name(this,"EtaNameResolutionError")}constructor(message){super(message),this.name="EtaNameResolution Error"}};__name(ParseErr,"ParseErr");__name(RuntimeErr,"RuntimeErr");AsyncFunction=async function(){}.constructor;__name(compile,"compile");__name(compileToString,"compileToString");__name(compileBody,"compileBody");__name(trimWS,"trimWS");escMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};__name(replaceChar,"replaceChar");__name(XMLEscape,"XMLEscape");defaultConfig2={autoEscape:!0,autoFilter:!1,autoTrim:[!1,"nl"],cache:!1,cacheFilepaths:!0,debug:!1,escapeFunction:XMLEscape,filterFunction:__name(val2=>String(val2),"filterFunction"),functionHeader:"",parse:{exec:"",interpolate:"=",raw:"~"},plugins:[],rmWhitespace:!1,tags:["<%","%>"],useWith:!1,varName:"it",defaultExtension:".eta"},templateLitReg=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,singleQuoteReg=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,doubleQuoteReg=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g;__name(escapeRegExp2,"escapeRegExp");__name(getLineNo,"getLineNo");__name(parse8,"parse");__name(handleCache,"handleCache");__name(render,"render");__name(renderAsync,"renderAsync");__name(renderString,"renderString");__name(renderStringAsync,"renderStringAsync");Eta$1=class{static{__name(this,"Eta$1")}constructor(customConfig){this.config=void 0,this.RuntimeErr=RuntimeErr,this.compile=compile,this.compileToString=compileToString,this.compileBody=compileBody,this.parse=parse8,this.render=render,this.renderAsync=renderAsync,this.renderString=renderString,this.renderStringAsync=renderStringAsync,this.filepathCache={},this.templatesSync=new Cacher({}),this.templatesAsync=new Cacher({}),this.resolvePath=null,this.readFile=null,customConfig?this.config={...defaultConfig2,...customConfig}:this.config={...defaultConfig2}}configure(customConfig){this.config={...this.config,...customConfig}}withConfig(customConfig){return{...this,config:{...this.config,...customConfig}}}loadTemplate(name,template,options){if(typeof template=="string")(options&&options.async?this.templatesAsync:this.templatesSync).define(name,this.compile(template,options));else{let templates=this.templatesSync;(template.constructor.name==="AsyncFunction"||options&&options.async)&&(templates=this.templatesAsync),templates.define(name,template)}}};__name(readFile2,"readFile");__name(resolvePath2,"resolvePath");__name(dirIsChild,"dirIsChild");absolutePathRegExp=/^\\|^\//,Eta=class extends Eta$1{static{__name(this,"Eta")}constructor(...args){super(...args),this.readFile=readFile2,this.resolvePath=resolvePath2}}}});import{existsSync as existsSync4}from"node:fs";import{dirname as dirname5,resolve as resolve3}from"node:path";import{fileURLToPath as fileURLToPath5}from"node:url";function assetPath(...segments){return resolve3(PACKAGE_ROOT2,"assets",...segments)}var HERE,IS_BUNDLED,PACKAGE_ROOT2,init_assets=__esm({"src/scripts/utils/assets.ts"(){HERE=dirname5(fileURLToPath5(import.meta.url)),IS_BUNDLED=existsSync4(resolve3(HERE,"bundle.json")),PACKAGE_ROOT2=IS_BUNDLED?resolve3(HERE,"..",".."):resolve3(HERE,"..","..","..");__name(assetPath,"assetPath")}});import{existsSync as existsSync5,mkdirSync as mkdirSync3,readFileSync as readFileSync5,readdirSync as readdirSync2,unlinkSync,writeFileSync as writeFileSync4}from"node:fs";import{dirname as dirname6,join as join7,resolve as resolve4}from"node:path";function getFormFiles(formsDir){return existsSync5(formsDir)?readdirSync2(formsDir).filter(f=>f.endsWith(".json")).map(f=>join7(formsDir,f)):[]}function readForm(path49){try{return JSON.parse(readFileSync5(path49,"utf-8"))}catch{return null}}function generateIndexContent(forms3){let lines=["// AUTO-GENERATED \u26A0\uFE0F \u2014 do not edit by hand",""];for(let form of forms3){let pascal=pascalCase(form.name),varName=pascal.charAt(0).toLowerCase()+pascal.slice(1);lines.push(`export { ${pascal}Schema, submit${pascal}, FORM_ID as ${varName}FormId } from "./${form.name}";`),lines.push(`export type { ${pascal}Data } from "./${form.name}";`)}return lines.push(""),lines.join(`
481
- `)}function syncForms(options={}){let cwd=options.cwd??process.cwd(),log=__name(msg=>{options.verbose!==!1&&console.log(msg)},"log"),formsDir=resolve4(cwd,FORMS_REL),templatePath=assetPath("content-templates","form-template.eta"),templateSource=readFileSync5(templatePath,"utf-8"),eta=new Eta({views:void 0,useWith:!0,varName:"it",autoEscape:!1}),formFiles=getFormFiles(formsDir),expectedTsFiles=new Set,allForms=[],created=0,updated=0,deleted=0;for(let jsonPath of formFiles){let form=readForm(jsonPath);if(!form){console.error(`Failed to parse form: ${jsonPath}`);continue}form.name||(form.name=jsonPath.split("/").pop().replace(/\.json$/,"")),allForms.push(form);let tsPath=join7(formsDir,`${form.name}.ts`);expectedTsFiles.add(tsPath);try{let content2=eta.renderString(templateSource,{form:{...form,pascal:pascalCase(form.name)}}),dir=dirname6(tsPath);if(existsSync5(dir)||mkdirSync3(dir,{recursive:!0}),!existsSync5(tsPath)){writeFileSync4(tsPath,content2,"utf-8"),created++,log(`Created: ${tsPath}`);continue}readFileSync5(tsPath,"utf-8")!==content2&&(writeFileSync4(tsPath,content2,"utf-8"),updated++,log(`Updated: ${tsPath}`))}catch(error){console.error(`Failed to generate ${tsPath}:`,error)}}if(allForms.length>0){let indexPath=join7(formsDir,"index.ts");expectedTsFiles.add(indexPath);let indexContent=generateIndexContent(allForms);(!existsSync5(indexPath)||readFileSync5(indexPath,"utf-8")!==indexContent)&&(writeFileSync4(indexPath,indexContent,"utf-8"),log(`Updated: ${indexPath}`))}if(existsSync5(formsDir)){let allTsFiles=readdirSync2(formsDir).filter(f=>f.endsWith(".ts")).map(f=>join7(formsDir,f));for(let tsFile of allTsFiles)if(!expectedTsFiles.has(tsFile))try{unlinkSync(tsFile),deleted++,log(`Deleted orphaned: ${tsFile}`)}catch(error){console.error(`Failed to delete orphaned ${tsFile}:`,error)}}return(created>0||updated>0||deleted>0)&&options.verbose!==!1&&log(`Sync forms: ${created} created, ${updated} updated, ${deleted} deleted`),{created,updated,deleted}}var FORMS_REL,init_sync_forms=__esm({"src/scripts/sync-forms.ts"(){init_dist7();init_eta_module();init_assets();FORMS_REL="src/forms";__name(getFormFiles,"getFormFiles");__name(readForm,"readForm");__name(generateIndexContent,"generateIndexContent");__name(syncForms,"syncForms")}});import{existsSync as existsSync6,mkdirSync as mkdirSync4,readFileSync as readFileSync6,readdirSync as readdirSync3,unlinkSync as unlinkSync2,writeFileSync as writeFileSync5}from"node:fs";import{dirname as dirname7,join as join8,resolve as resolve5}from"node:path";function getSchemaFiles(schemasDir){return existsSync6(schemasDir)?readdirSync3(schemasDir).filter(f=>f.endsWith(".json")).map(f=>join8(schemasDir,f)):[]}function readSchema(path49){try{return JSON.parse(readFileSync6(path49,"utf-8"))}catch{return null}}function normalizeFields(fields){return Object.fromEntries(Object.entries(fields).map(([key,value])=>{if(!value||typeof value!="object"||Array.isArray(value))return[key,{type:void 0}];let field=value,target=typeof field.target=="string"?field.target:void 0,targets=Array.isArray(field.targets)?field.targets.filter(candidate=>typeof candidate=="string"):void 0;return[key,{...field,type:typeof field.type=="string"?field.type:void 0,target,targetPascal:target?pascalCase(target):void 0,targets:targets&&targets.length>0?targets:void 0,targetRefs:targets&&targets.length>0?targets.map(candidate=>({uid:candidate,pascal:pascalCase(candidate)})):void 0,many:typeof field.many=="boolean"?field.many:void 0,multiple:typeof field.multiple=="boolean"?field.multiple:void 0}]}))}function referenceImportsFor(schema,fields){let imports=new Map;for(let field of Object.values(fields)){if(field.type!=="reference")continue;let targets=field.targets??(field.target?[field.target]:[]);for(let target of targets)target!==schema.uid&&imports.set(target,{uid:target,pascal:pascalCase(target)})}return[...imports.values()].sort((a,b)=>a.pascal.localeCompare(b.pascal))}function schemaToModel(schema,localizedByUid){let fields=normalizeFields(schema.fields??{});return{uid:schema.uid,pascal:pascalCase(schema.uid),isSingleton:schema.isSingleton??!1,localized:schema.i18n?.enabled!==!1,localizedReferenceFields:Object.entries(fields).filter(([,field])=>field.type!=="reference"?!1:(field.targets??(field.target?[field.target]:[])).some(target=>localizedByUid.get(target)!==!1)).map(([fieldName])=>fieldName),fields,referenceImports:referenceImportsFor(schema,fields)}}function syncSchemas(options={}){let cwd=options.cwd??process.cwd(),log=__name(msg=>{options.verbose!==!1&&console.log(msg)},"log"),schemasDir=resolve5(cwd,SCHEMAS_REL),templates=[{suffix:".types.ts",path:assetPath("content-templates","types-template.eta")},{suffix:".ts",path:assetPath("content-templates","hooks-template.eta")}].map(template=>({...template,source:readFileSync6(template.path,"utf-8")})),eta=new Eta({views:void 0,useWith:!0,varName:"it",autoEscape:!1}),schemaFiles=getSchemaFiles(schemasDir),schemasByPath=new Map(schemaFiles.flatMap(schemaPath=>{let schema=readSchema(schemaPath);return schema?[[schemaPath,schema]]:[]})),localizedByUid=new Map([...schemasByPath.values()].map(schema=>[schema.uid,schema.i18n?.enabled!==!1])),expectedTsFiles=new Set,created=0,updated=0,deleted=0;for(let jsonPath of schemaFiles){let uid=jsonPath.split("/").pop().replace(/\.json$/,""),pascal=pascalCase(uid),schema=schemasByPath.get(jsonPath);if(!schema){console.error(`Failed to parse schema: ${jsonPath}`);continue}schema.uid||(schema.uid=uid);let model=schemaToModel(schema,localizedByUid);for(let template of templates){let tsPath=join8(schemasDir,`${pascal}${template.suffix}`);expectedTsFiles.add(tsPath);try{let content2=eta.renderString(template.source,{model}),dir=dirname7(tsPath);if(existsSync6(dir)||mkdirSync4(dir,{recursive:!0}),!existsSync6(tsPath)){writeFileSync5(tsPath,content2,"utf-8"),created++,log(`Created: ${tsPath}`);continue}readFileSync6(tsPath,"utf-8")!==content2&&(writeFileSync5(tsPath,content2,"utf-8"),updated++,log(`Updated: ${tsPath}`))}catch(error){console.error(`Failed to generate ${tsPath}:`,error)}}}if(existsSync6(schemasDir)){let allTsFiles=readdirSync3(schemasDir).filter(f=>f.endsWith(".ts")&&f!=="index.ts").map(f=>join8(schemasDir,f));for(let tsFile of allTsFiles)if(!expectedTsFiles.has(tsFile))try{unlinkSync2(tsFile),deleted++,log(`Deleted orphaned: ${tsFile}`)}catch(error){console.error(`Failed to delete orphaned ${tsFile}:`,error)}}return(created>0||updated>0||deleted>0)&&options.verbose!==!1&&log(`Sync schemas: ${created} created, ${updated} updated, ${deleted} deleted`),{created,updated,deleted}}var SCHEMAS_REL,init_sync_schemas=__esm({"src/scripts/sync-schemas.ts"(){init_dist7();init_eta_module();init_assets();SCHEMAS_REL="src/schemas";__name(getSchemaFiles,"getSchemaFiles");__name(readSchema,"readSchema");__name(normalizeFields,"normalizeFields");__name(referenceImportsFor,"referenceImportsFor");__name(schemaToModel,"schemaToModel");__name(syncSchemas,"syncSchemas")}});function renderCrossSurface(findings,p2,opts={}){let lines=[];lines.push(p2.bold("CROSS-SURFACE INTEGRITY")),lines.push(p2.dim(" references that span surfaces"));let errorGlyph=opts.ascii?"!!":"\u203C",arrow=opts.ascii?"->":"\u2192",sep2=opts.ascii?"|":"\xB7";for(let f of findings){let glyph=f.severity==="error"?p2.red("!"):p2.yellow(errorGlyph);lines.push(` ${glyph} ${f.description}`);let trail=`${f.source.surface}:${f.source.key} ${arrow} ${f.target.surface}:${f.target.key}`;lines.push(p2.dim(` ${trail}`)),f.actions.length>0&&lines.push(p2.dim(` actions: ${f.actions.join(` ${sep2} `)}`))}return lines.join(`
477
+ `).replace(/^\s+|\s+$/gm,"")),templateLitReg.lastIndex=0,singleQuoteReg.lastIndex=0,doubleQuoteReg.lastIndex=0;function pushString(strng,shouldTrimRightOfString){strng&&(strng=trimWS(strng,config,trimLeftOfNextStr,shouldTrimRightOfString),strng&&(strng=strng.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),buffer.push(strng)))}__name(pushString,"pushString");let prefixes=[parseOptions.exec,parseOptions.interpolate,parseOptions.raw].reduce(function(accumulator,prefix){return accumulator&&prefix?accumulator+"|"+escapeRegExp2(prefix):prefix?escapeRegExp2(prefix):accumulator},""),parseOpenReg=new RegExp(escapeRegExp2(config.tags[0])+"(-|_)?\\s*("+prefixes+")?\\s*","g"),parseCloseReg=new RegExp("'|\"|`|\\/\\*|(\\s*(-|_)?"+escapeRegExp2(config.tags[1])+")","g"),m;for(;m=parseOpenReg.exec(str);){let precedingString=str.slice(lastIndex,m.index);lastIndex=m[0].length+m.index;let wsLeft=m[1],prefix=m[2]||"";pushString(precedingString,wsLeft),parseCloseReg.lastIndex=lastIndex;let closeTag,currentObj=!1;for(;closeTag=parseCloseReg.exec(str);)if(closeTag[1]){let content2=str.slice(lastIndex,closeTag.index);parseOpenReg.lastIndex=lastIndex=parseCloseReg.lastIndex,trimLeftOfNextStr=closeTag[2],currentObj={t:prefix===parseOptions.exec?"e":prefix===parseOptions.raw?"r":prefix===parseOptions.interpolate?"i":"",val:content2};break}else{let char=closeTag[0];if(char==="/*"){let commentCloseInd=str.indexOf("*/",parseCloseReg.lastIndex);commentCloseInd===-1&&ParseErr("unclosed comment",str,closeTag.index),parseCloseReg.lastIndex=commentCloseInd}else char==="'"?(singleQuoteReg.lastIndex=closeTag.index,singleQuoteReg.exec(str)?parseCloseReg.lastIndex=singleQuoteReg.lastIndex:ParseErr("unclosed string",str,closeTag.index)):char==='"'?(doubleQuoteReg.lastIndex=closeTag.index,doubleQuoteReg.exec(str)?parseCloseReg.lastIndex=doubleQuoteReg.lastIndex:ParseErr("unclosed string",str,closeTag.index)):char==="`"&&(templateLitReg.lastIndex=closeTag.index,templateLitReg.exec(str)?parseCloseReg.lastIndex=templateLitReg.lastIndex:ParseErr("unclosed string",str,closeTag.index))}currentObj?(config.debug&&(currentObj.lineNo=getLineNo(str,m.index)),buffer.push(currentObj)):ParseErr("unclosed tag",str,m.index)}if(pushString(str.slice(lastIndex,str.length),!1),config.plugins)for(let i=0;i<config.plugins.length;i++){let plugin=config.plugins[i];plugin.processAST&&(buffer=plugin.processAST(buffer,config))}return buffer}function handleCache(template,options){let templateStore=options&&options.async?this.templatesAsync:this.templatesSync;if(this.resolvePath&&this.readFile&&!template.startsWith("@")){let templatePath2=options.filepath,cachedTemplate=templateStore.get(templatePath2);if(this.config.cache&&cachedTemplate)return cachedTemplate;{let templateString=this.readFile(templatePath2),templateFn=this.compile(templateString,options);return this.config.cache&&templateStore.define(templatePath2,templateFn),templateFn}}else{let cachedTemplate=templateStore.get(template);if(cachedTemplate)return cachedTemplate;throw new EtaNameResolutionError("Failed to get template '"+template+"'")}}function render(template,data2,meta){let templateFn,options={...meta,async:!1};return typeof template=="string"?(this.resolvePath&&this.readFile&&!template.startsWith("@")&&(options.filepath=this.resolvePath(template,options)),templateFn=handleCache.call(this,template,options)):templateFn=template,templateFn.call(this,data2,options)}function renderAsync(template,data2,meta){let templateFn,options={...meta,async:!0};typeof template=="string"?(this.resolvePath&&this.readFile&&!template.startsWith("@")&&(options.filepath=this.resolvePath(template,options)),templateFn=handleCache.call(this,template,options)):templateFn=template;let res=templateFn.call(this,data2,options);return Promise.resolve(res)}function renderString(template,data2){let templateFn=this.compile(template,{async:!1});return render.call(this,templateFn,data2)}function renderStringAsync(template,data2){let templateFn=this.compile(template,{async:!0});return renderAsync.call(this,templateFn,data2)}function readFile2(path49){let res="";try{res=fs20.readFileSync(path49,"utf8")}catch(err){throw err?.code==="ENOENT"?new EtaFileResolutionError(`Could not find template: ${path49}`):err}return res}function resolvePath2(templatePath2,options){let resolvedFilePath="",views=this.config.views;if(!views)throw new EtaFileResolutionError("Views directory is not defined");let baseFilePath=options&&options.filepath,defaultExtension=this.config.defaultExtension===void 0?".eta":this.config.defaultExtension,cacheIndex=JSON.stringify({filename:baseFilePath,path:templatePath2,views:this.config.views});if(templatePath2+=path24.extname(templatePath2)?"":defaultExtension,baseFilePath){if(this.config.cacheFilepaths&&this.filepathCache[cacheIndex])return this.filepathCache[cacheIndex];let absolutePathTest=absolutePathRegExp.exec(templatePath2);if(absolutePathTest&&absolutePathTest.length){let formattedPath=templatePath2.replace(/^\/*|^\\*/,"");resolvedFilePath=path24.join(views,formattedPath)}else resolvedFilePath=path24.join(path24.dirname(baseFilePath),templatePath2)}else resolvedFilePath=path24.join(views,templatePath2);if(dirIsChild(views,resolvedFilePath))return baseFilePath&&this.config.cacheFilepaths&&(this.filepathCache[cacheIndex]=resolvedFilePath),resolvedFilePath;throw new EtaFileResolutionError(`Template '${templatePath2}' is not in the views directory`)}function dirIsChild(parent2,dir){let relative3=path24.relative(parent2,dir);return relative3&&!relative3.startsWith("..")&&!path24.isAbsolute(relative3)}var Cacher,EtaError,EtaParseError,EtaRuntimeError,EtaFileResolutionError,EtaNameResolutionError,AsyncFunction,escMap,defaultConfig2,templateLitReg,singleQuoteReg,doubleQuoteReg,Eta$1,absolutePathRegExp,Eta,init_eta_module=__esm({"../../node_modules/.pnpm/eta@3.5.0/node_modules/eta/dist/eta.module.mjs"(){Cacher=class{static{__name(this,"Cacher")}constructor(cache){this.cache=void 0,this.cache=cache}define(key,val2){this.cache[key]=val2}get(key){return this.cache[key]}remove(key){delete this.cache[key]}reset(){this.cache={}}load(cacheObj){this.cache={...this.cache,...cacheObj}}},EtaError=class extends Error{static{__name(this,"EtaError")}constructor(message){super(message),this.name="Eta Error"}},EtaParseError=class extends EtaError{static{__name(this,"EtaParseError")}constructor(message){super(message),this.name="EtaParser Error"}},EtaRuntimeError=class extends EtaError{static{__name(this,"EtaRuntimeError")}constructor(message){super(message),this.name="EtaRuntime Error"}},EtaFileResolutionError=class extends EtaError{static{__name(this,"EtaFileResolutionError")}constructor(message){super(message),this.name="EtaFileResolution Error"}},EtaNameResolutionError=class extends EtaError{static{__name(this,"EtaNameResolutionError")}constructor(message){super(message),this.name="EtaNameResolution Error"}};__name(ParseErr,"ParseErr");__name(RuntimeErr,"RuntimeErr");AsyncFunction=async function(){}.constructor;__name(compile,"compile");__name(compileToString,"compileToString");__name(compileBody,"compileBody");__name(trimWS,"trimWS");escMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};__name(replaceChar,"replaceChar");__name(XMLEscape,"XMLEscape");defaultConfig2={autoEscape:!0,autoFilter:!1,autoTrim:[!1,"nl"],cache:!1,cacheFilepaths:!0,debug:!1,escapeFunction:XMLEscape,filterFunction:__name(val2=>String(val2),"filterFunction"),functionHeader:"",parse:{exec:"",interpolate:"=",raw:"~"},plugins:[],rmWhitespace:!1,tags:["<%","%>"],useWith:!1,varName:"it",defaultExtension:".eta"},templateLitReg=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,singleQuoteReg=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,doubleQuoteReg=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g;__name(escapeRegExp2,"escapeRegExp");__name(getLineNo,"getLineNo");__name(parse8,"parse");__name(handleCache,"handleCache");__name(render,"render");__name(renderAsync,"renderAsync");__name(renderString,"renderString");__name(renderStringAsync,"renderStringAsync");Eta$1=class{static{__name(this,"Eta$1")}constructor(customConfig){this.config=void 0,this.RuntimeErr=RuntimeErr,this.compile=compile,this.compileToString=compileToString,this.compileBody=compileBody,this.parse=parse8,this.render=render,this.renderAsync=renderAsync,this.renderString=renderString,this.renderStringAsync=renderStringAsync,this.filepathCache={},this.templatesSync=new Cacher({}),this.templatesAsync=new Cacher({}),this.resolvePath=null,this.readFile=null,customConfig?this.config={...defaultConfig2,...customConfig}:this.config={...defaultConfig2}}configure(customConfig){this.config={...this.config,...customConfig}}withConfig(customConfig){return{...this,config:{...this.config,...customConfig}}}loadTemplate(name,template,options){if(typeof template=="string")(options&&options.async?this.templatesAsync:this.templatesSync).define(name,this.compile(template,options));else{let templates=this.templatesSync;(template.constructor.name==="AsyncFunction"||options&&options.async)&&(templates=this.templatesAsync),templates.define(name,template)}}};__name(readFile2,"readFile");__name(resolvePath2,"resolvePath");__name(dirIsChild,"dirIsChild");absolutePathRegExp=/^\\|^\//,Eta=class extends Eta$1{static{__name(this,"Eta")}constructor(...args){super(...args),this.readFile=readFile2,this.resolvePath=resolvePath2}}}});import{existsSync as existsSync4}from"node:fs";import{dirname as dirname5,resolve as resolve3}from"node:path";import{fileURLToPath as fileURLToPath5}from"node:url";function assetPath(...segments){return resolve3(PACKAGE_ROOT2,"assets",...segments)}var HERE,IS_BUNDLED,PACKAGE_ROOT2,init_assets=__esm({"src/scripts/utils/assets.ts"(){HERE=dirname5(fileURLToPath5(import.meta.url)),IS_BUNDLED=existsSync4(resolve3(HERE,"bundle.json")),PACKAGE_ROOT2=IS_BUNDLED?resolve3(HERE,"..",".."):resolve3(HERE,"..","..","..");__name(assetPath,"assetPath")}});import{existsSync as existsSync5,mkdirSync as mkdirSync3,readFileSync as readFileSync5,readdirSync as readdirSync2,unlinkSync,writeFileSync as writeFileSync4}from"node:fs";import{dirname as dirname6,join as join7,resolve as resolve4}from"node:path";function getFormFiles(formsDir){return existsSync5(formsDir)?readdirSync2(formsDir).filter(f=>f.endsWith(".json")).map(f=>join7(formsDir,f)):[]}function readForm(path49){try{return JSON.parse(readFileSync5(path49,"utf-8"))}catch{return null}}function generateIndexContent(forms3){let lines=["// AUTO-GENERATED \u26A0\uFE0F \u2014 do not edit by hand",""];for(let form of forms3){let pascal=pascalCase(form.name),varName=pascal.charAt(0).toLowerCase()+pascal.slice(1);lines.push(`export { ${pascal}Schema, submit${pascal}, FORM_ID as ${varName}FormId } from "./${form.name}";`),lines.push(`export type { ${pascal}Data } from "./${form.name}";`)}return lines.push(""),lines.join(`
478
+ `)}function syncForms(options={}){let cwd=options.cwd??process.cwd(),log=__name(msg=>{options.verbose!==!1&&console.log(msg)},"log"),formsDir=resolve4(cwd,FORMS_REL),templatePath2=assetPath("content-templates","form-template.eta"),templateSource=readFileSync5(templatePath2,"utf-8"),eta=new Eta({views:void 0,useWith:!0,varName:"it",autoEscape:!1}),formFiles=getFormFiles(formsDir),expectedTsFiles=new Set,allForms=[],created=0,updated=0,deleted=0;for(let jsonPath of formFiles){let form=readForm(jsonPath);if(!form){console.error(`Failed to parse form: ${jsonPath}`);continue}form.name||(form.name=jsonPath.split("/").pop().replace(/\.json$/,"")),allForms.push(form);let tsPath=join7(formsDir,`${form.name}.ts`);expectedTsFiles.add(tsPath);try{let content2=eta.renderString(templateSource,{form:{...form,pascal:pascalCase(form.name)}}),dir=dirname6(tsPath);if(existsSync5(dir)||mkdirSync3(dir,{recursive:!0}),!existsSync5(tsPath)){writeFileSync4(tsPath,content2,"utf-8"),created++,log(`Created: ${tsPath}`);continue}readFileSync5(tsPath,"utf-8")!==content2&&(writeFileSync4(tsPath,content2,"utf-8"),updated++,log(`Updated: ${tsPath}`))}catch(error){console.error(`Failed to generate ${tsPath}:`,error)}}if(allForms.length>0){let indexPath=join7(formsDir,"index.ts");expectedTsFiles.add(indexPath);let indexContent=generateIndexContent(allForms);(!existsSync5(indexPath)||readFileSync5(indexPath,"utf-8")!==indexContent)&&(writeFileSync4(indexPath,indexContent,"utf-8"),log(`Updated: ${indexPath}`))}if(existsSync5(formsDir)){let allTsFiles=readdirSync2(formsDir).filter(f=>f.endsWith(".ts")).map(f=>join7(formsDir,f));for(let tsFile of allTsFiles)if(!expectedTsFiles.has(tsFile))try{unlinkSync(tsFile),deleted++,log(`Deleted orphaned: ${tsFile}`)}catch(error){console.error(`Failed to delete orphaned ${tsFile}:`,error)}}return(created>0||updated>0||deleted>0)&&options.verbose!==!1&&log(`Sync forms: ${created} created, ${updated} updated, ${deleted} deleted`),{created,updated,deleted}}var FORMS_REL,init_sync_forms=__esm({"src/scripts/sync-forms.ts"(){init_dist7();init_eta_module();init_assets();FORMS_REL="src/forms";__name(getFormFiles,"getFormFiles");__name(readForm,"readForm");__name(generateIndexContent,"generateIndexContent");__name(syncForms,"syncForms")}});import{existsSync as existsSync6,mkdirSync as mkdirSync4,readFileSync as readFileSync6,readdirSync as readdirSync3,unlinkSync as unlinkSync2,writeFileSync as writeFileSync5}from"node:fs";import{basename as basename2,dirname as dirname7,join as join8,resolve as resolve5}from"node:path";import{z as z60}from"zod";function getSchemaFiles(schemasDir){return existsSync6(schemasDir)?readdirSync3(schemasDir).filter(f=>f.endsWith(".json")).map(f=>join8(schemasDir,f)):[]}function getGeneratedFiles(schemasDir){return existsSync6(schemasDir)?readdirSync3(schemasDir).filter(f=>f.endsWith(".ts")&&f!=="index.ts").map(f=>join8(schemasDir,f)):[]}function parseVersion(version){let match=/^(\d+)\.(\d+)\.(\d+)(?:-([^+]+))?(?:\+.*)?$/.exec(version);return match?{parts:[Number(match[1]),Number(match[2]),Number(match[3])],prerelease:match[4]!==void 0}:null}function isVersionAtLeast(version,minimum){let parsed=parseVersion(version),parsedMinimum=parseVersion(minimum);if(!parsed||!parsedMinimum)return!1;for(let index2=0;index2<parsed.parts.length;index2++)if(parsed.parts[index2]!==parsedMinimum.parts[index2])return parsed.parts[index2]>parsedMinimum.parts[index2];return!parsed.prerelease||parsedMinimum.prerelease}function resolveProjectRuntime(cwd){let packagePath=join8(cwd,"node_modules","fimo","package.json");if(!existsSync6(packagePath))throw new Error(`Cannot generate schema clients because the project-local fimo package could not be resolved from ${cwd}. Run \`${CONTENT_CLIENT_RUNTIME_UPGRADE_COMMAND}\` in the project, then run \`npx fimo@latest validate\` again. No generated files were changed.`);let version;try{version=JSON.parse(readFileSync6(packagePath,"utf-8")).version}catch{version=null}if(typeof version!="string"||!parseVersion(version))throw new Error(`Cannot generate schema clients with project-local fimo@${typeof version=="string"?version:"unknown"}. Run \`${CONTENT_CLIENT_RUNTIME_UPGRADE_COMMAND}\` in the project, then run \`npx fimo@latest validate\` again. No generated files were changed.`);return{packageRoot:dirname7(packagePath),version}}function templatePath(runtime,fileName){return runtime&&!isVersionAtLeast(runtime.version,MINIMUM_THIN_CONTENT_CLIENT_RUNTIME_VERSION)?join8(runtime.packageRoot,"assets","content-templates",fileName):assetPath("content-templates",fileName)}function loadSchemas(schemaFiles){let errors=[],schemas3=[],outputOwners=new Map;for(let path49 of schemaFiles){let fileUid=basename2(path49,".json"),pascal=pascalCase(fileUid),existingOwner=outputOwners.get(pascal);existingOwner&&existingOwner!==fileUid?errors.push(`${basename2(path49)} and ${existingOwner}.json both generate ${pascal}.ts. Rename one schema to keep generated module names unique.`):outputOwners.set(pascal,fileUid);let parsed;try{parsed=JSON.parse(readFileSync6(path49,"utf-8"))}catch(error){errors.push(`${basename2(path49)} is invalid JSON: ${error instanceof Error?error.message:String(error)}`);continue}if(typeof parsed!="object"||parsed===null||Array.isArray(parsed)){errors.push(`${basename2(path49)} must contain a JSON object.`);continue}let candidate=parsed;if(typeof candidate.uid!="string"||candidate.uid.length===0){errors.push(`${basename2(path49)} is missing "uid". Set it to "${fileUid}".`);continue}if(candidate.uid!==fileUid){errors.push(`${basename2(path49)} declares uid "${candidate.uid}". It must match the file name "${fileUid}".`);continue}let validation=SCHEMA_DEFINITION_SCHEMA.safeParse(candidate);if(!validation.success){let details=validation.error.issues.map(issue=>`${issue.path.join(".")||"schema"}: ${issue.message}`).join("; ");errors.push(`${basename2(path49)} has an invalid schema shape: ${details}`);continue}schemas3.push({pascal,schema:validation.data})}if(errors.length>0)throw new Error(`Cannot generate schema clients:
479
+ - ${errors.join(`
480
+ - `)}
481
+ No generated files were changed.`);return schemas3}function normalizeFields(fields){return Object.fromEntries(Object.entries(fields).map(([key,value])=>{if(!value||typeof value!="object"||Array.isArray(value))return[key,{type:void 0}];let field=value,target=typeof field.target=="string"?field.target:void 0,targets=Array.isArray(field.targets)?field.targets.filter(candidate=>typeof candidate=="string"):void 0;return[key,{...field,type:typeof field.type=="string"?field.type:void 0,target,targetPascal:target?pascalCase(target):void 0,targets:targets&&targets.length>0?targets:void 0,targetRefs:targets&&targets.length>0?targets.map(candidate=>({uid:candidate,pascal:pascalCase(candidate)})):void 0,many:typeof field.many=="boolean"?field.many:void 0,multiple:typeof field.multiple=="boolean"?field.multiple:void 0}]}))}function referenceImportsFor(schema,fields){let imports=new Map;for(let field of Object.values(fields)){if(field.type!=="reference")continue;let targets=field.targets??(field.target?[field.target]:[]);for(let target of targets)target!==schema.uid&&imports.set(target,{uid:target,pascal:pascalCase(target)})}return[...imports.values()].sort((a,b)=>a.pascal.localeCompare(b.pascal))}function schemaToModel(schema,localizedByUid){let fields=normalizeFields(schema.fields??{});return{uid:schema.uid,pascal:pascalCase(schema.uid),isSingleton:schema.isSingleton??!1,localized:schema.i18n?.enabled!==!1,localizedReferenceFields:Object.entries(fields).filter(([,field])=>field.type!=="reference"?!1:(field.targets??(field.target?[field.target]:[])).some(target=>localizedByUid.get(target)!==!1)).map(([fieldName])=>fieldName),fields,referenceImports:referenceImportsFor(schema,fields)}}function syncSchemas(options={}){let cwd=options.cwd??process.cwd(),log=__name(msg=>{options.verbose!==!1&&console.log(msg)},"log"),schemasDir=resolve5(cwd,SCHEMAS_REL),schemaFiles=getSchemaFiles(schemasDir),schemas3=loadSchemas(schemaFiles),generatedFilesOnDisk=getGeneratedFiles(schemasDir),runtime=schemas3.length>0||generatedFilesOnDisk.length>0?resolveProjectRuntime(cwd):null,templates=[{suffix:".types.ts",path:templatePath(runtime,"types-template.eta")},{suffix:".ts",path:templatePath(runtime,"hooks-template.eta")}].map(template=>({...template,source:readFileSync6(template.path,"utf-8")})),eta=new Eta({views:void 0,useWith:!0,varName:"it",autoEscape:!1}),localizedByUid=new Map(schemas3.map(({schema})=>[schema.uid,schema.i18n?.enabled!==!1])),expectedTsFiles=new Set,generatedFiles=new Map,created=0,updated=0,deleted=0;for(let{pascal,schema}of schemas3){let model=schemaToModel(schema,localizedByUid);for(let template of templates){let tsPath=join8(schemasDir,`${pascal}${template.suffix}`);expectedTsFiles.add(tsPath),generatedFiles.set(tsPath,eta.renderString(template.source,{model}))}}for(let[tsPath,content2]of generatedFiles){let dir=dirname7(tsPath);if(existsSync6(dir)||mkdirSync4(dir,{recursive:!0}),!existsSync6(tsPath)){writeFileSync5(tsPath,content2,"utf-8"),created++,log(`Created: ${tsPath}`);continue}readFileSync6(tsPath,"utf-8")!==content2&&(writeFileSync5(tsPath,content2,"utf-8"),updated++,log(`Updated: ${tsPath}`))}for(let tsFile of generatedFilesOnDisk)if(!expectedTsFiles.has(tsFile))try{unlinkSync2(tsFile),deleted++,log(`Deleted orphaned: ${tsFile}`)}catch(error){console.error(`Failed to delete orphaned ${tsFile}:`,error)}return(created>0||updated>0||deleted>0)&&options.verbose!==!1&&log(`Sync schemas: ${created} created, ${updated} updated, ${deleted} deleted`),{created,updated,deleted}}var SCHEMAS_REL,MINIMUM_THIN_CONTENT_CLIENT_RUNTIME_VERSION,CONTENT_CLIENT_RUNTIME_UPGRADE_COMMAND,SCHEMA_DEFINITION_SCHEMA,init_sync_schemas=__esm({"src/scripts/sync-schemas.ts"(){init_dist7();init_eta_module();init_assets();SCHEMAS_REL="src/schemas",MINIMUM_THIN_CONTENT_CLIENT_RUNTIME_VERSION="0.7.0",CONTENT_CLIENT_RUNTIME_UPGRADE_COMMAND="npm install fimo@latest",SCHEMA_DEFINITION_SCHEMA=z60.object({uid:z60.string().min(1),isSingleton:z60.boolean().optional(),i18n:z60.object({enabled:z60.boolean().optional()}).optional(),fields:z60.record(z60.string(),z60.unknown()).optional()});__name(getSchemaFiles,"getSchemaFiles");__name(getGeneratedFiles,"getGeneratedFiles");__name(parseVersion,"parseVersion");__name(isVersionAtLeast,"isVersionAtLeast");__name(resolveProjectRuntime,"resolveProjectRuntime");__name(templatePath,"templatePath");__name(loadSchemas,"loadSchemas");__name(normalizeFields,"normalizeFields");__name(referenceImportsFor,"referenceImportsFor");__name(schemaToModel,"schemaToModel");__name(syncSchemas,"syncSchemas")}});function renderCrossSurface(findings,p2,opts={}){let lines=[];lines.push(p2.bold("CROSS-SURFACE INTEGRITY")),lines.push(p2.dim(" references that span surfaces"));let errorGlyph=opts.ascii?"!!":"\u203C",arrow=opts.ascii?"->":"\u2192",sep2=opts.ascii?"|":"\xB7";for(let f of findings){let glyph=f.severity==="error"?p2.red("!"):p2.yellow(errorGlyph);lines.push(` ${glyph} ${f.description}`);let trail=`${f.source.surface}:${f.source.key} ${arrow} ${f.target.surface}:${f.target.key}`;lines.push(p2.dim(` ${trail}`)),f.actions.length>0&&lines.push(p2.dim(` actions: ${f.actions.join(` ${sep2} `)}`))}return lines.join(`
482
482
  `)}var init_cross_surface=__esm({"src/cli/utils/format/cross-surface.ts"(){__name(renderCrossSurface,"renderCrossSurface")}});function getTerminalWidth(){let w3=process.stdout.columns;return typeof w3=="number"&&w3>0?w3:100}function layoutKeyDetail(args){let{indent,key,keyLength,detail,detailLength=0,width}=args;if(!detail)return`${indent}${key}`;let minGap=args.minGap??2,used=indent.length+keyLength+minGap+detailLength;if(width<80||used>=width)return`${indent}${key}${" ".repeat(minGap)}${detail}`;let padding=width-indent.length-keyLength-detailLength;return`${indent}${key}${" ".repeat(padding)}${detail}`}var init_columns=__esm({"src/cli/utils/format/columns.ts"(){__name(getTerminalWidth,"getTerminalWidth");__name(layoutKeyDetail,"layoutKeyDetail")}});var activations,init_activations=__esm({"src/cli/utils/format/surface-presenters/activations.ts"(){activations={label:"AGENTS",hint:"declared \xB7 active",emptyCopy:" (no agents activated)",groupBy:__name(item=>item.detail??"(no agent)","groupBy"),keyFormatter:__name(item=>{let idx=item.key.indexOf(":");return idx>0?`trigger ${item.key.slice(idx+1)}`:item.key},"keyFormatter"),detailFormatter:__name(()=>{},"detailFormatter")}}});function shortId(id){return id.length>12?`${id.slice(0,8)}\u2026`:id}var assets,init_assets2=__esm({"src/cli/utils/format/surface-presenters/assets.ts"(){assets={label:"ASSETS",hint:"media library",emptyCopy:" (no asset changes)",keyFormatter:__name(item=>item.detail??item.key,"keyFormatter"),detailFormatter:__name(item=>{if(item.detail&&item.key!==item.detail)return shortId(item.key)},"detailFormatter")};__name(shortId,"shortId")}});var code,init_code=__esm({"src/cli/utils/format/surface-presenters/code.ts"(){code={label:"CODE",hint:"git workspace vs HEAD",emptyCopy:" (clean)"}}});var content,init_content=__esm({"src/cli/utils/format/surface-presenters/content.ts"(){content={label:"CONTENT",hint:"entries per collection",emptyCopy:" (no content changes)",groupBy:__name(item=>item.detail??"(unknown)","groupBy"),keyFormatter:__name(item=>{let idx=item.key.indexOf(":");return idx>0?item.key.slice(idx+1):item.key},"keyFormatter"),detailFormatter:__name(()=>{},"detailFormatter")}}});var forms,init_forms=__esm({"src/cli/utils/format/surface-presenters/forms.ts"(){forms={label:"FORMS",hint:"schema changes",emptyCopy:" (no form changes)"}}});var schemas,init_schemas=__esm({"src/cli/utils/format/surface-presenters/schemas.ts"(){schemas={label:"SCHEMAS",hint:"content types",emptyCopy:" (no schema changes)",groupBy:__name(item=>{let idx=item.key.indexOf(".");return idx>0?item.key.slice(0,idx):""},"groupBy"),keyFormatter:__name(item=>{let idx=item.key.indexOf(".");return idx>0?item.key.slice(idx+1):item.key},"keyFormatter")}}});var translations,init_translations=__esm({"src/cli/utils/format/surface-presenters/translations.ts"(){translations={label:"TRANSLATIONS",hint:"per locale",emptyCopy:" (no translation changes)",groupBy:__name(item=>item.detail??"(no locale)","groupBy"),keyFormatter:__name(item=>{let idx=item.key.indexOf(":");return idx>0?item.key.slice(idx+1):item.key},"keyFormatter"),detailFormatter:__name(()=>{},"detailFormatter")}}});var SURFACE_PRESENTERS,init_surface_presenters=__esm({"src/cli/utils/format/surface-presenters/index.ts"(){init_activations();init_assets2();init_code();init_content();init_forms();init_schemas();init_translations();SURFACE_PRESENTERS={code,schemas,content,translations,assets,forms,activations}}});function renderItem(item,p2,opts={}){let glyph=VERB_GLYPHS[item.verb]??"?",colored=item.verb==="added"?p2.green(glyph):item.verb==="removed"?p2.red(glyph):item.verb==="conflict"?p2.yellow(glyph):p2.blue(glyph),indent=opts.indent??" ",displayKey=opts.presenter?.keyFormatter?opts.presenter.keyFormatter(item):item.key,displayDetail=opts.presenter?.detailFormatter?opts.presenter.detailFormatter(item):item.detail,width=opts.width;if(item.origin===void 0)return layoutCore({indent,marker:"",markerLen:0,colored,displayKey,displayDetail,width,p:p2});let marker=item.origin==="local-uncommitted"?p2.yellow("*"):" ";return layoutCore({indent,marker,markerLen:1,colored,displayKey,displayDetail,width,p:p2})}function layoutCore(args){let{indent,marker,markerLen,colored,displayKey,displayDetail,width,p:p2}=args,prefix=`${marker}${colored} ${displayKey}`,prefixLen=markerLen+1+1+displayKey.length;return displayDetail?width===void 0?`${indent}${prefix}${p2.dim(` ${displayDetail}`)}`:layoutKeyDetail({indent,key:prefix,keyLength:prefixLen,detail:p2.dim(displayDetail),detailLength:displayDetail.length,width}):`${indent}${prefix}`}function renderSurface(delta,p2,opts={}){let display=SURFACE_DISPLAY[delta.surface],presenter=SURFACE_PRESENTERS[delta.surface],lines=[],includeHeader=opts.includeHeader??!0,maxItems=opts.maxItems??50,width=opts.width??getTerminalWidth();if(includeHeader&&(lines.push(p2.bold(display.label)),lines.push(p2.dim(` ${display.hint}`))),delta.status==="timed_out")return lines.push(p2.yellow(" (surface check timed out)")),lines.join(`
483
483
  `);if(delta.status==="failed")return lines.push(p2.red(` (surface check failed: ${delta.error??"unknown"})`)),lines.join(`
484
484
  `);if(delta.status==="unchanged"||delta.changedCount===0&&delta.conflictCount===0)return lines.push(p2.dim(display.emptyCopy)),lines.join(`
485
485
  `);let items=delta.items??[],hasLocal=items.some(it2=>it2.origin==="local-uncommitted"),hasAhead=items.some(it2=>it2.origin==="committed-ahead");if(includeHeader&&hasLocal&&hasAhead){let legendSep=opts.ascii?"|":"\xB7";lines.push(p2.dim(` ${p2.yellow("*")} = local uncommitted ${legendSep} (no marker) = committed-ahead of ${delta.surface==="code"?"base":"target"}`))}let visible=items.slice(0,maxItems),groupGlyph=presenter.groupGlyph??(opts.ascii?">":"\u25B8");if(presenter.groupBy){let grouped=groupItems(visible,presenter.groupBy);for(let[group,gItems]of grouped)if(group){lines.push(p2.dim(` ${groupGlyph} ${group}`));for(let item of gItems)lines.push(renderItem(item,p2,{width,indent:" ",presenter}))}else for(let item of gItems)lines.push(renderItem(item,p2,{width,presenter}))}else for(let item of visible)lines.push(renderItem(item,p2,{width,presenter}));let truncatedByWire=delta.truncated===!0&&delta.changedCount>items.length,truncatedByMax=items.length>maxItems;if(opts.truncationCopy!==!1&&(truncatedByWire||truncatedByMax)){let shown=Math.min(items.length,maxItems),total=truncatedByWire?delta.changedCount:items.length,ellipsis=opts.ascii?"...":"\u2026",dash=opts.ascii?"-":"\u2014",copy=opts.truncationCopy??`${ellipsis} ${total-shown} more ${dash} use \`fimo diff --surface ${delta.surface} --all\` for the full list`;lines.push(p2.dim(` ${copy}`))}let summary2=summarise(delta,{ascii:opts.ascii});return summary2&&lines.push(p2.dim(` ${summary2}`)),lines.join(`
486
- `)}function groupItems(items,keyFn){let out=new Map;for(let it2 of items){let key=keyFn(it2),bucket=out.get(key);bucket?bucket.push(it2):out.set(key,[it2])}return out}function summarise(delta,opts={}){let parts=[],items=delta.items??[],counts={added:0,removed:0,changed:0,conflict:0};for(let it2 of items)counts[it2.verb]=(counts[it2.verb]??0)+1;counts.added>0&&parts.push(`${counts.added} added`),counts.removed>0&&parts.push(`${counts.removed} removed`),counts.changed>0&&parts.push(`${counts.changed} changed`),counts.conflict>0&&parts.push(`${counts.conflict} conflict${counts.conflict===1?"":"s"}`),parts.length===0&&(delta.changedCount>0&&parts.push(`${delta.changedCount} changed`),delta.conflictCount>0&&parts.push(`${delta.conflictCount} conflict${delta.conflictCount===1?"":"s"}`));let sep2=opts.ascii?", ":" \xB7 ";return parts.length>0?`(${parts.join(sep2)})`:""}var SURFACE_DISPLAY,VERB_GLYPHS,init_surface=__esm({"src/cli/utils/format/surface.ts"(){init_columns();init_surface_presenters();SURFACE_DISPLAY={code:{label:SURFACE_PRESENTERS.code.label,hint:SURFACE_PRESENTERS.code.hint,emptyCopy:SURFACE_PRESENTERS.code.emptyCopy},schemas:{label:SURFACE_PRESENTERS.schemas.label,hint:SURFACE_PRESENTERS.schemas.hint,emptyCopy:SURFACE_PRESENTERS.schemas.emptyCopy},content:{label:SURFACE_PRESENTERS.content.label,hint:SURFACE_PRESENTERS.content.hint,emptyCopy:SURFACE_PRESENTERS.content.emptyCopy},translations:{label:SURFACE_PRESENTERS.translations.label,hint:SURFACE_PRESENTERS.translations.hint,emptyCopy:SURFACE_PRESENTERS.translations.emptyCopy},assets:{label:SURFACE_PRESENTERS.assets.label,hint:SURFACE_PRESENTERS.assets.hint,emptyCopy:SURFACE_PRESENTERS.assets.emptyCopy},forms:{label:SURFACE_PRESENTERS.forms.label,hint:SURFACE_PRESENTERS.forms.hint,emptyCopy:SURFACE_PRESENTERS.forms.emptyCopy},activations:{label:SURFACE_PRESENTERS.activations.label,hint:SURFACE_PRESENTERS.activations.hint,emptyCopy:SURFACE_PRESENTERS.activations.emptyCopy}},VERB_GLYPHS={added:"+",removed:"-",changed:"~",conflict:"!"};__name(renderItem,"renderItem");__name(layoutCore,"layoutCore");__name(renderSurface,"renderSurface");__name(groupItems,"groupItems");__name(summarise,"summarise")}});import fs27 from"node:fs";function hasDockerEnv(){try{return fs27.statSync("/.dockerenv"),!0}catch{return!1}}function hasDockerCGroup(){try{return fs27.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function isDocker(){return isDockerCached===void 0&&(isDockerCached=hasDockerEnv()||hasDockerCGroup()),isDockerCached}var isDockerCached,init_is_docker=__esm({"../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js"(){__name(hasDockerEnv,"hasDockerEnv");__name(hasDockerCGroup,"hasDockerCGroup");__name(isDocker,"isDocker")}});import fs28 from"node:fs";function isInsideContainer(){return cachedResult===void 0&&(cachedResult=hasContainerEnv()||isDocker()),cachedResult}var cachedResult,hasContainerEnv,init_is_inside_container=__esm({"../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js"(){init_is_docker();hasContainerEnv=__name(()=>{try{return fs28.statSync("/run/.containerenv"),!0}catch{return!1}},"hasContainerEnv");__name(isInsideContainer,"isInsideContainer")}});import process2 from"node:process";import os3 from"node:os";import fs29 from"node:fs";var isWsl,is_wsl_default,init_is_wsl=__esm({"../../node_modules/.pnpm/is-wsl@3.1.1/node_modules/is-wsl/index.js"(){init_is_inside_container();isWsl=__name(()=>{if(process2.platform!=="linux")return!1;if(os3.release().toLowerCase().includes("microsoft"))return!isInsideContainer();try{if(fs29.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!isInsideContainer()}catch{}return fs29.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||fs29.existsSync("/run/WSL")?!isInsideContainer():!1},"isWsl"),is_wsl_default=process2.env.__IS_WSL_TEST__?isWsl:isWsl()}});import process3 from"node:process";import fs30,{constants as fsConstants}from"node:fs/promises";var wslDrivesMountPoint,powerShellPathFromWsl,powerShellPath,init_wsl_utils=__esm({"../../node_modules/.pnpm/wsl-utils@0.1.0/node_modules/wsl-utils/index.js"(){init_is_wsl();init_is_wsl();wslDrivesMountPoint=(()=>{let defaultMountPoint="/mnt/",mountPoint;return async function(){if(mountPoint)return mountPoint;let configFilePath="/etc/wsl.conf",isConfigFileExists=!1;try{await fs30.access(configFilePath,fsConstants.F_OK),isConfigFileExists=!0}catch{}if(!isConfigFileExists)return defaultMountPoint;let configContent=await fs30.readFile(configFilePath,{encoding:"utf8"}),configMountPoint=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(configContent);return configMountPoint?(mountPoint=configMountPoint.groups.mountPoint.trim(),mountPoint=mountPoint.endsWith("/")?mountPoint:`${mountPoint}/`,mountPoint):defaultMountPoint}})(),powerShellPathFromWsl=__name(async()=>`${await wslDrivesMountPoint()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,"powerShellPathFromWsl"),powerShellPath=__name(async()=>is_wsl_default?powerShellPathFromWsl():`${process3.env.SYSTEMROOT||process3.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,"powerShellPath")}});function defineLazyProperty(object,propertyName,valueGetter){let define=__name(value=>Object.defineProperty(object,propertyName,{value,enumerable:!0,writable:!0}),"define");return Object.defineProperty(object,propertyName,{configurable:!0,enumerable:!0,get(){let result=valueGetter();return define(result),result},set(value){define(value)}}),object}var init_define_lazy_prop=__esm({"../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js"(){__name(defineLazyProperty,"defineLazyProperty")}});import{promisify as promisify3}from"node:util";import process4 from"node:process";import{execFile as execFile3}from"node:child_process";async function defaultBrowserId(){if(process4.platform!=="darwin")throw new Error("macOS only");let{stdout}=await execFileAsync3("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),browserId=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout)?.groups.id??"com.apple.Safari";return browserId==="com.apple.safari"?"com.apple.Safari":browserId}var execFileAsync3,init_default_browser_id=__esm({"../../node_modules/.pnpm/default-browser-id@5.0.1/node_modules/default-browser-id/index.js"(){execFileAsync3=promisify3(execFile3);__name(defaultBrowserId,"defaultBrowserId")}});import process5 from"node:process";import{promisify as promisify4}from"node:util";import{execFile as execFile4,execFileSync}from"node:child_process";async function runAppleScript(script,{humanReadableOutput=!0,signal}={}){if(process5.platform!=="darwin")throw new Error("macOS only");let outputArguments=humanReadableOutput?[]:["-ss"],execOptions={};signal&&(execOptions.signal=signal);let{stdout}=await execFileAsync4("osascript",["-e",script,outputArguments],execOptions);return stdout.trim()}var execFileAsync4,init_run_applescript=__esm({"../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js"(){execFileAsync4=promisify4(execFile4);__name(runAppleScript,"runAppleScript")}});async function bundleName(bundleId){return runAppleScript(`tell application "Finder" to set app_path to application file id "${bundleId}" as string
486
+ `)}function groupItems(items,keyFn){let out=new Map;for(let it2 of items){let key=keyFn(it2),bucket=out.get(key);bucket?bucket.push(it2):out.set(key,[it2])}return out}function summarise(delta,opts={}){let parts=[],items=delta.items??[],counts={added:0,removed:0,changed:0,conflict:0};for(let it2 of items)counts[it2.verb]=(counts[it2.verb]??0)+1;counts.added>0&&parts.push(`${counts.added} added`),counts.removed>0&&parts.push(`${counts.removed} removed`),counts.changed>0&&parts.push(`${counts.changed} changed`),counts.conflict>0&&parts.push(`${counts.conflict} conflict${counts.conflict===1?"":"s"}`),parts.length===0&&(delta.changedCount>0&&parts.push(`${delta.changedCount} changed`),delta.conflictCount>0&&parts.push(`${delta.conflictCount} conflict${delta.conflictCount===1?"":"s"}`));let sep2=opts.ascii?", ":" \xB7 ";return parts.length>0?`(${parts.join(sep2)})`:""}var SURFACE_DISPLAY,VERB_GLYPHS,init_surface=__esm({"src/cli/utils/format/surface.ts"(){init_columns();init_surface_presenters();SURFACE_DISPLAY={code:{label:SURFACE_PRESENTERS.code.label,hint:SURFACE_PRESENTERS.code.hint,emptyCopy:SURFACE_PRESENTERS.code.emptyCopy},schemas:{label:SURFACE_PRESENTERS.schemas.label,hint:SURFACE_PRESENTERS.schemas.hint,emptyCopy:SURFACE_PRESENTERS.schemas.emptyCopy},content:{label:SURFACE_PRESENTERS.content.label,hint:SURFACE_PRESENTERS.content.hint,emptyCopy:SURFACE_PRESENTERS.content.emptyCopy},translations:{label:SURFACE_PRESENTERS.translations.label,hint:SURFACE_PRESENTERS.translations.hint,emptyCopy:SURFACE_PRESENTERS.translations.emptyCopy},assets:{label:SURFACE_PRESENTERS.assets.label,hint:SURFACE_PRESENTERS.assets.hint,emptyCopy:SURFACE_PRESENTERS.assets.emptyCopy},forms:{label:SURFACE_PRESENTERS.forms.label,hint:SURFACE_PRESENTERS.forms.hint,emptyCopy:SURFACE_PRESENTERS.forms.emptyCopy},activations:{label:SURFACE_PRESENTERS.activations.label,hint:SURFACE_PRESENTERS.activations.hint,emptyCopy:SURFACE_PRESENTERS.activations.emptyCopy}},VERB_GLYPHS={added:"+",removed:"-",changed:"~",conflict:"!"};__name(renderItem,"renderItem");__name(layoutCore,"layoutCore");__name(renderSurface,"renderSurface");__name(groupItems,"groupItems");__name(summarise,"summarise")}});import fs27 from"node:fs";function hasDockerEnv(){try{return fs27.statSync("/.dockerenv"),!0}catch{return!1}}function hasDockerCGroup(){try{return fs27.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function isDocker(){return isDockerCached===void 0&&(isDockerCached=hasDockerEnv()||hasDockerCGroup()),isDockerCached}var isDockerCached,init_is_docker=__esm({"../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js"(){__name(hasDockerEnv,"hasDockerEnv");__name(hasDockerCGroup,"hasDockerCGroup");__name(isDocker,"isDocker")}});import fs28 from"node:fs";function isInsideContainer(){return cachedResult===void 0&&(cachedResult=hasContainerEnv()||isDocker()),cachedResult}var cachedResult,hasContainerEnv,init_is_inside_container=__esm({"../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js"(){init_is_docker();hasContainerEnv=__name(()=>{try{return fs28.statSync("/run/.containerenv"),!0}catch{return!1}},"hasContainerEnv");__name(isInsideContainer,"isInsideContainer")}});import process2 from"node:process";import os2 from"node:os";import fs29 from"node:fs";var isWsl,is_wsl_default,init_is_wsl=__esm({"../../node_modules/.pnpm/is-wsl@3.1.1/node_modules/is-wsl/index.js"(){init_is_inside_container();isWsl=__name(()=>{if(process2.platform!=="linux")return!1;if(os2.release().toLowerCase().includes("microsoft"))return!isInsideContainer();try{if(fs29.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!isInsideContainer()}catch{}return fs29.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||fs29.existsSync("/run/WSL")?!isInsideContainer():!1},"isWsl"),is_wsl_default=process2.env.__IS_WSL_TEST__?isWsl:isWsl()}});import process3 from"node:process";import fs30,{constants as fsConstants}from"node:fs/promises";var wslDrivesMountPoint,powerShellPathFromWsl,powerShellPath,init_wsl_utils=__esm({"../../node_modules/.pnpm/wsl-utils@0.1.0/node_modules/wsl-utils/index.js"(){init_is_wsl();init_is_wsl();wslDrivesMountPoint=(()=>{let defaultMountPoint="/mnt/",mountPoint;return async function(){if(mountPoint)return mountPoint;let configFilePath="/etc/wsl.conf",isConfigFileExists=!1;try{await fs30.access(configFilePath,fsConstants.F_OK),isConfigFileExists=!0}catch{}if(!isConfigFileExists)return defaultMountPoint;let configContent=await fs30.readFile(configFilePath,{encoding:"utf8"}),configMountPoint=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(configContent);return configMountPoint?(mountPoint=configMountPoint.groups.mountPoint.trim(),mountPoint=mountPoint.endsWith("/")?mountPoint:`${mountPoint}/`,mountPoint):defaultMountPoint}})(),powerShellPathFromWsl=__name(async()=>`${await wslDrivesMountPoint()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,"powerShellPathFromWsl"),powerShellPath=__name(async()=>is_wsl_default?powerShellPathFromWsl():`${process3.env.SYSTEMROOT||process3.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,"powerShellPath")}});function defineLazyProperty(object,propertyName,valueGetter){let define=__name(value=>Object.defineProperty(object,propertyName,{value,enumerable:!0,writable:!0}),"define");return Object.defineProperty(object,propertyName,{configurable:!0,enumerable:!0,get(){let result=valueGetter();return define(result),result},set(value){define(value)}}),object}var init_define_lazy_prop=__esm({"../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js"(){__name(defineLazyProperty,"defineLazyProperty")}});import{promisify as promisify3}from"node:util";import process4 from"node:process";import{execFile as execFile3}from"node:child_process";async function defaultBrowserId(){if(process4.platform!=="darwin")throw new Error("macOS only");let{stdout}=await execFileAsync3("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),browserId=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout)?.groups.id??"com.apple.Safari";return browserId==="com.apple.safari"?"com.apple.Safari":browserId}var execFileAsync3,init_default_browser_id=__esm({"../../node_modules/.pnpm/default-browser-id@5.0.1/node_modules/default-browser-id/index.js"(){execFileAsync3=promisify3(execFile3);__name(defaultBrowserId,"defaultBrowserId")}});import process5 from"node:process";import{promisify as promisify4}from"node:util";import{execFile as execFile4,execFileSync}from"node:child_process";async function runAppleScript(script,{humanReadableOutput=!0,signal}={}){if(process5.platform!=="darwin")throw new Error("macOS only");let outputArguments=humanReadableOutput?[]:["-ss"],execOptions={};signal&&(execOptions.signal=signal);let{stdout}=await execFileAsync4("osascript",["-e",script,outputArguments],execOptions);return stdout.trim()}var execFileAsync4,init_run_applescript=__esm({"../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js"(){execFileAsync4=promisify4(execFile4);__name(runAppleScript,"runAppleScript")}});async function bundleName(bundleId){return runAppleScript(`tell application "Finder" to set app_path to application file id "${bundleId}" as string
487
487
  tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var init_bundle_name=__esm({"../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js"(){init_run_applescript();__name(bundleName,"bundleName")}});import{promisify as promisify5}from"node:util";import{execFile as execFile5}from"node:child_process";async function defaultBrowser(_execFileAsync=execFileAsync5){let{stdout}=await _execFileAsync("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),match=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(stdout);if(!match)throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);let{id}=match.groups,dotIndex=id.lastIndexOf("."),hyphenIndex=id.lastIndexOf("-"),baseIdByDot=dotIndex===-1?void 0:id.slice(0,dotIndex),baseIdByHyphen=hyphenIndex===-1?void 0:id.slice(0,hyphenIndex);return windowsBrowserProgIds[id]??windowsBrowserProgIds[baseIdByDot]??windowsBrowserProgIds[baseIdByHyphen]??{name:id,id}}var execFileAsync5,windowsBrowserProgIds,_windowsBrowserProgIdMap,UnknownBrowserError,init_windows=__esm({"../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/windows.js"(){execFileAsync5=promisify5(execFile5),windowsBrowserProgIds={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},_windowsBrowserProgIdMap=new Map(Object.entries(windowsBrowserProgIds)),UnknownBrowserError=class extends Error{static{__name(this,"UnknownBrowserError")}};__name(defaultBrowser,"defaultBrowser")}});import{promisify as promisify6}from"node:util";import process6 from"node:process";import{execFile as execFile6}from"node:child_process";async function defaultBrowser2(){if(process6.platform==="darwin"){let id=await defaultBrowserId();return{name:await bundleName(id),id}}if(process6.platform==="linux"){let{stdout}=await execFileAsync6("xdg-mime",["query","default","x-scheme-handler/http"]),id=stdout.trim();return{name:titleize(id.replace(/.desktop$/,"").replace("-"," ")),id}}if(process6.platform==="win32")return defaultBrowser();throw new Error("Only macOS, Linux, and Windows are supported")}var execFileAsync6,titleize,init_default_browser=__esm({"../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/index.js"(){init_default_browser_id();init_bundle_name();init_windows();execFileAsync6=promisify6(execFile6),titleize=__name(string=>string.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,x=>x.toUpperCase()),"titleize");__name(defaultBrowser2,"defaultBrowser")}});import process7 from"node:process";import{Buffer as Buffer2}from"node:buffer";import path32 from"node:path";import{fileURLToPath as fileURLToPath6}from"node:url";import{promisify as promisify7}from"node:util";import childProcess from"node:child_process";import fs31,{constants as fsConstants2}from"node:fs/promises";async function getWindowsDefaultBrowserFromWsl(){let powershellPath=await powerShellPath(),rawCommand=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,encodedCommand=Buffer2.from(rawCommand,"utf16le").toString("base64"),{stdout}=await execFile7(powershellPath,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",encodedCommand],{encoding:"utf8"}),progId=stdout.trim(),browserMap={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return browserMap[progId]?{id:browserMap[progId]}:{}}function detectArchBinary(binary){if(typeof binary=="string"||Array.isArray(binary))return binary;let{[arch]:archBinary}=binary;if(!archBinary)throw new Error(`${arch} is not supported`);return archBinary}function detectPlatformBinary({[platform3]:platformBinary},{wsl}){if(wsl&&is_wsl_default)return detectArchBinary(wsl);if(!platformBinary)throw new Error(`${platform3} is not supported`);return detectArchBinary(platformBinary)}var execFile7,__dirname,localXdgOpenPath,platform3,arch,pTryEach,baseOpen,open,apps,open_default,init_open=__esm({"../../node_modules/.pnpm/open@10.2.0/node_modules/open/index.js"(){init_wsl_utils();init_define_lazy_prop();init_default_browser();init_is_inside_container();execFile7=promisify7(childProcess.execFile),__dirname=path32.dirname(fileURLToPath6(import.meta.url)),localXdgOpenPath=path32.join(__dirname,"xdg-open"),{platform:platform3,arch}=process7;__name(getWindowsDefaultBrowserFromWsl,"getWindowsDefaultBrowserFromWsl");pTryEach=__name(async(array,mapper)=>{let latestError;for(let item of array)try{return await mapper(item)}catch(error){latestError=error}throw latestError},"pTryEach"),baseOpen=__name(async options=>{if(options={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...options},Array.isArray(options.app))return pTryEach(options.app,singleApp=>baseOpen({...options,app:singleApp}));let{name:app,arguments:appArguments=[]}=options.app??{};if(appArguments=[...appArguments],Array.isArray(app))return pTryEach(app,appName=>baseOpen({...options,app:{name:appName,arguments:appArguments}}));if(app==="browser"||app==="browserPrivate"){let ids={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},flags={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},browser=is_wsl_default?await getWindowsDefaultBrowserFromWsl():await defaultBrowser2();if(browser.id in ids){let browserName=ids[browser.id];return app==="browserPrivate"&&appArguments.push(flags[browserName]),baseOpen({...options,app:{name:apps[browserName],arguments:appArguments}})}throw new Error(`${browser.name} is not supported as a default browser`)}let command,cliArguments=[],childProcessOptions={};if(platform3==="darwin")command="open",options.wait&&cliArguments.push("--wait-apps"),options.background&&cliArguments.push("--background"),options.newInstance&&cliArguments.push("--new"),app&&cliArguments.push("-a",app);else if(platform3==="win32"||is_wsl_default&&!isInsideContainer()&&!app){command=await powerShellPath(),cliArguments.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),is_wsl_default||(childProcessOptions.windowsVerbatimArguments=!0);let encodedArguments=["Start"];options.wait&&encodedArguments.push("-Wait"),app?(encodedArguments.push(`"\`"${app}\`""`),options.target&&appArguments.push(options.target)):options.target&&encodedArguments.push(`"${options.target}"`),appArguments.length>0&&(appArguments=appArguments.map(argument=>`"\`"${argument}\`""`),encodedArguments.push("-ArgumentList",appArguments.join(","))),options.target=Buffer2.from(encodedArguments.join(" "),"utf16le").toString("base64")}else{if(app)command=app;else{let isBundled=!__dirname||__dirname==="/",exeLocalXdgOpen=!1;try{await fs31.access(localXdgOpenPath,fsConstants2.X_OK),exeLocalXdgOpen=!0}catch{}command=process7.versions.electron??(platform3==="android"||isBundled||!exeLocalXdgOpen)?"xdg-open":localXdgOpenPath}appArguments.length>0&&cliArguments.push(...appArguments),options.wait||(childProcessOptions.stdio="ignore",childProcessOptions.detached=!0)}platform3==="darwin"&&appArguments.length>0&&cliArguments.push("--args",...appArguments),options.target&&cliArguments.push(options.target);let subprocess=childProcess.spawn(command,cliArguments,childProcessOptions);return options.wait?new Promise((resolve8,reject)=>{subprocess.once("error",reject),subprocess.once("close",exitCode=>{if(!options.allowNonzeroExitCode&&exitCode>0){reject(new Error(`Exited with code ${exitCode}`));return}resolve8(subprocess)})}):(subprocess.unref(),subprocess)},"baseOpen"),open=__name((target,options)=>{if(typeof target!="string")throw new TypeError("Expected a `target`");return baseOpen({...options,target})},"open");__name(detectArchBinary,"detectArchBinary");__name(detectPlatformBinary,"detectPlatformBinary");apps={};defineLazyProperty(apps,"chrome",()=>detectPlatformBinary({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));defineLazyProperty(apps,"brave",()=>detectPlatformBinary({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));defineLazyProperty(apps,"firefox",()=>detectPlatformBinary({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));defineLazyProperty(apps,"edge",()=>detectPlatformBinary({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));defineLazyProperty(apps,"browser",()=>"browser");defineLazyProperty(apps,"browserPrivate",()=>"browserPrivate");open_default=open}});import{randomBytes}from"node:crypto";import{createServer as createHttpServer}from"node:http";async function performBrowserLogin(cfg=loadConfig()){let state=randomBytes(16).toString("hex"),isPretty2=currentMode().format==="pretty",{server,port}=await startCallbackServer(),callbackUrl=`http://127.0.0.1:${port}/callback`,authUrl=new URL("/auth/cli",cfg.webUrl);authUrl.searchParams.set("callback",callbackUrl),authUrl.searchParams.set("state",state),isPretty2&&(process.stderr.write(`Opening ${authUrl.toString()}
488
488
  `),process.stderr.write(`If your browser does not open, copy the URL above.
489
489
  `)),await open_default(authUrl.toString()).catch(()=>{});let waitSp=spinner("Waiting for browser sign-in"),result;try{result=await waitForCallback(server,CALLBACK_TIMEOUT_MS),waitSp.succeed("Received one-time token")}catch(error){throw waitSp.fail(),server.close(),new LoginError("LOGIN_CALLBACK_FAILED",`Login timed out or failed: ${error.message}`)}if(result.state!==state)throw new LoginError("LOGIN_STATE_MISMATCH","State mismatch \u2014 aborting.");let verifySp=spinner("Verifying session"),response=await fetch(`${cfg.apiUrl}/api/auth/one-time-token/verify`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:result.token})});if(!response.ok){let detail=`${response.status} ${await response.text()}`;throw verifySp.fail(`Verify failed: ${detail}`),new LoginError("LOGIN_VERIFY_FAILED",`Verify failed: ${detail}`)}let body=await response.json(),user={id:body.user.id,email:body.user.email,name:body.user.name??""};writeCredentials({access_token:body.session.token,user},cfg),verifySp.succeed(`Signed in as ${body.user.name||body.user.email}`);let orgSp=spinner("Selecting active organization"),activeOrganization=null,multipleOrgs=!1,orgError=null;try{let orgs2=await new FimoApiClient(cfg).listOrganizations(),sessionOrgId=body.session.activeOrganizationId??null,active=(sessionOrgId?orgs2.find(org=>org.id===sessionOrgId):void 0)??orgs2[0];active?(activeOrganization={id:active.id,name:active.name,slug:active.slug},writeCredentials({access_token:body.session.token,user,activeOrganization},cfg),multipleOrgs=orgs2.length>1,orgSp.succeed(`Active organization: ${active.name}`)):orgSp.fail("No organization found for this account")}catch(error){orgError=error instanceof Error?error.message:String(error),orgSp.fail(`Could not fetch organizations: ${orgError}`)}return{token:body.session.token,user:{id:user.id,email:user.email,name:body.user.name??null},activeOrganization,multipleOrgs,orgError}}async function loginCommand(){let cfg=loadConfig(),result;try{result=await performBrowserLogin(cfg)}catch(error){if(error instanceof LoginError){ui.error({command:"login",code:error.code,message:error.message});return}throw error}ui.ok({command:"login",headline:`Signed in as ${result.user.name||result.user.email}`,details:{user_id:result.user.id,email:result.user.email,name:result.user.name,active_organization_id:result.activeOrganization?.id??null,active_organization_name:result.activeOrganization?.name??null,active_organization_slug:result.activeOrganization?.slug??null,multiple_organizations:result.multipleOrgs,organization_error:result.orgError},hint:result.multipleOrgs?"Run `fimo switch` to pick a different organization.":void 0})}async function startCallbackServer(){return new Promise((resolve8,reject)=>{let server=createHttpServer();server.on("error",reject),server.listen(0,"127.0.0.1",()=>{let address=server.address();if(!address){reject(new Error("Failed to bind callback server"));return}resolve8({server,port:address.port})})})}function waitForCallback(server,timeoutMs){return new Promise((resolve8,reject)=>{let timeout=setTimeout(()=>{cleanup(),reject(new Error("Timed out waiting for browser callback"))},timeoutMs),handler=__name((req,res)=>{if(!req.url){respond(res,400,"Bad request");return}let reqUrl=new URL(req.url,"http://127.0.0.1");if(reqUrl.pathname!=="/callback"){respond(res,404,"Not found");return}let token=reqUrl.searchParams.get("token"),state=reqUrl.searchParams.get("state");if(!token||!state){respond(res,400,"Missing token or state");return}respond(res,200,renderSignedInPage(),"text/html"),cleanup(),resolve8({token,state})},"handler");server.on("request",handler);function cleanup(){clearTimeout(timeout),server.off("request",handler),server.close(),server.closeAllConnections()}__name(cleanup,"cleanup")})}function respond(res,status,body,contentType="text/plain"){res.writeHead(status,{"Content-Type":contentType,Connection:"close"}),res.end(body)}function renderSignedInPage(){return`<!doctype html>
@@ -593,7 +593,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
593
593
  </main>
594
594
  <script>setTimeout(function(){window.close();},800);</script>
595
595
  </body>
596
- </html>`}var CALLBACK_TIMEOUT_MS,LoginError,FIMO_LOGO_SVG,init_login=__esm({"src/cli/commands/login.ts"(){init_dist();init_open();init_api();init_auth();init_config();CALLBACK_TIMEOUT_MS=300*1e3,LoginError=class extends Error{static{__name(this,"LoginError")}code;constructor(code2,message){super(message),this.name="LoginError",this.code=code2}};__name(performBrowserLogin,"performBrowserLogin");__name(loginCommand,"loginCommand");__name(startCallbackServer,"startCallbackServer");__name(waitForCallback,"waitForCallback");__name(respond,"respond");FIMO_LOGO_SVG='<svg viewBox="0 0 2017 420" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M1424.99 4.51883C1407.48 -1.17117 1389.04 -1.49117 1371.66 3.57883C1352.68 9.11883 1336.33 20.7488 1324.37 37.2188L1107.47 335.759C1104.64 339.659 1100.88 340.879 1096.29 339.389C1091.71 337.899 1089.38 334.699 1089.38 329.879V90.1188C1089.38 69.7688 1082.99 50.7488 1070.89 35.1088C1059.81 20.7888 1044.7 10.2188 1027.19 4.52883C1009.68 -1.16117 991.239 -1.48117 973.859 3.58883C954.879 9.12883 938.529 20.7588 926.569 37.2288L709.669 335.769C706.839 339.669 703.069 340.889 698.489 339.399C693.899 337.909 691.579 334.709 691.579 329.889V210.009C691.579 187.919 673.669 170.009 651.579 170.009C629.489 170.009 611.579 187.919 611.579 210.009V329.889C611.579 350.239 617.969 369.259 630.069 384.899C641.149 399.219 656.259 409.789 673.769 415.479C683.039 418.489 692.569 419.999 702.069 419.999C710.509 419.999 718.919 418.809 727.099 416.419C746.079 410.879 762.429 399.249 774.389 382.779L991.289 84.2388C994.119 80.3388 997.879 79.1188 1002.47 80.6088C1007.05 82.0988 1009.38 85.2988 1009.38 90.1188V329.879C1009.38 350.229 1015.77 369.249 1027.87 384.889C1038.95 399.209 1054.06 409.779 1071.57 415.469C1089.08 421.159 1107.52 421.489 1124.9 416.409C1143.88 410.869 1160.23 399.239 1172.19 382.769L1389.09 84.2288C1391.92 80.3288 1395.69 79.1088 1400.27 80.5988C1404.85 82.0888 1407.18 85.2888 1407.18 90.1088V379.959C1407.18 402.049 1425.09 419.959 1447.18 419.959C1469.27 419.959 1487.18 402.049 1487.18 379.959V90.1188C1487.18 69.7688 1480.79 50.7488 1468.69 35.1088C1457.61 20.7888 1442.5 10.2188 1424.99 4.52883V4.51883ZM363.419 80.0188H517.429C539.519 80.0188 557.429 62.1088 557.429 40.0188C557.429 17.9288 539.519 0.018832 517.429 0.018832H363.419C302.799 0.018832 245.339 29.2988 209.709 78.3388L7.63908 356.459C-5.34092 374.329 -1.38092 399.349 16.4891 412.329C23.5891 417.489 31.8191 419.969 39.9691 419.969C52.3391 419.969 64.5391 414.249 72.3591 403.479L150.949 295.299C171.579 266.929 204.839 249.989 239.919 249.989H517.419C539.509 249.989 557.419 232.079 557.419 209.989C557.419 187.899 539.509 169.989 517.419 169.989H241.999L274.429 125.359C295.059 96.9688 328.329 80.0188 363.419 80.0188ZM1826.52 0.018832H1731.33C1626.56 0.018832 1541.33 85.2488 1541.33 190.019V229.969C1541.33 334.739 1626.56 419.969 1731.33 419.969H1826.52C1931.29 419.969 2016.52 334.739 2016.52 229.969V190.019C2016.52 85.2488 1931.28 0.018832 1826.52 0.018832ZM1936.52 229.969C1936.52 290.619 1887.17 339.969 1826.52 339.969H1731.33C1670.68 339.969 1621.33 290.619 1621.33 229.969V190.019C1621.33 129.369 1670.68 80.0188 1731.33 80.0188H1826.52C1887.17 80.0188 1936.52 129.369 1936.52 190.019V229.969ZM651.579 80.0188C673.669 80.0188 691.579 62.1088 691.579 40.0188C691.579 17.9288 673.669 0.018832 651.579 0.018832C629.489 0.018832 611.579 17.9288 611.579 40.0188C611.579 62.1088 629.489 80.0188 651.579 80.0188Z" fill="currentColor"/></svg>';__name(renderSignedInPage,"renderSignedInPage")}});import{execFile as execFile8,spawnSync}from"node:child_process";import path34 from"node:path";import{promisify as promisify8}from"node:util";function explainCreateProjectError(error){return error instanceof ApiRequestError&&error.detail.includes('insert into "projects"')&&(error.detail.includes('"subdomain"')||error.detail.includes('"subdomain_updated_at"'))?["Project creation failed because the local API database schema looks out of date.","The server is trying to write the `projects.subdomain` fields, but your database likely has not applied the latest migration yet.","Run `cd apps/api && pnpm db:migrate`, restart the API if needed, then retry."].join(`
596
+ </html>`}var CALLBACK_TIMEOUT_MS,LoginError,FIMO_LOGO_SVG,init_login=__esm({"src/cli/commands/login.ts"(){init_dist();init_open();init_api();init_auth();init_config();CALLBACK_TIMEOUT_MS=300*1e3,LoginError=class extends Error{static{__name(this,"LoginError")}code;constructor(code2,message){super(message),this.name="LoginError",this.code=code2}};__name(performBrowserLogin,"performBrowserLogin");__name(loginCommand,"loginCommand");__name(startCallbackServer,"startCallbackServer");__name(waitForCallback,"waitForCallback");__name(respond,"respond");FIMO_LOGO_SVG='<svg viewBox="0 0 2017 420" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M1424.99 4.51883C1407.48 -1.17117 1389.04 -1.49117 1371.66 3.57883C1352.68 9.11883 1336.33 20.7488 1324.37 37.2188L1107.47 335.759C1104.64 339.659 1100.88 340.879 1096.29 339.389C1091.71 337.899 1089.38 334.699 1089.38 329.879V90.1188C1089.38 69.7688 1082.99 50.7488 1070.89 35.1088C1059.81 20.7888 1044.7 10.2188 1027.19 4.52883C1009.68 -1.16117 991.239 -1.48117 973.859 3.58883C954.879 9.12883 938.529 20.7588 926.569 37.2288L709.669 335.769C706.839 339.669 703.069 340.889 698.489 339.399C693.899 337.909 691.579 334.709 691.579 329.889V210.009C691.579 187.919 673.669 170.009 651.579 170.009C629.489 170.009 611.579 187.919 611.579 210.009V329.889C611.579 350.239 617.969 369.259 630.069 384.899C641.149 399.219 656.259 409.789 673.769 415.479C683.039 418.489 692.569 419.999 702.069 419.999C710.509 419.999 718.919 418.809 727.099 416.419C746.079 410.879 762.429 399.249 774.389 382.779L991.289 84.2388C994.119 80.3388 997.879 79.1188 1002.47 80.6088C1007.05 82.0988 1009.38 85.2988 1009.38 90.1188V329.879C1009.38 350.229 1015.77 369.249 1027.87 384.889C1038.95 399.209 1054.06 409.779 1071.57 415.469C1089.08 421.159 1107.52 421.489 1124.9 416.409C1143.88 410.869 1160.23 399.239 1172.19 382.769L1389.09 84.2288C1391.92 80.3288 1395.69 79.1088 1400.27 80.5988C1404.85 82.0888 1407.18 85.2888 1407.18 90.1088V379.959C1407.18 402.049 1425.09 419.959 1447.18 419.959C1469.27 419.959 1487.18 402.049 1487.18 379.959V90.1188C1487.18 69.7688 1480.79 50.7488 1468.69 35.1088C1457.61 20.7888 1442.5 10.2188 1424.99 4.52883V4.51883ZM363.419 80.0188H517.429C539.519 80.0188 557.429 62.1088 557.429 40.0188C557.429 17.9288 539.519 0.018832 517.429 0.018832H363.419C302.799 0.018832 245.339 29.2988 209.709 78.3388L7.63908 356.459C-5.34092 374.329 -1.38092 399.349 16.4891 412.329C23.5891 417.489 31.8191 419.969 39.9691 419.969C52.3391 419.969 64.5391 414.249 72.3591 403.479L150.949 295.299C171.579 266.929 204.839 249.989 239.919 249.989H517.419C539.509 249.989 557.419 232.079 557.419 209.989C557.419 187.899 539.509 169.989 517.419 169.989H241.999L274.429 125.359C295.059 96.9688 328.329 80.0188 363.419 80.0188ZM1826.52 0.018832H1731.33C1626.56 0.018832 1541.33 85.2488 1541.33 190.019V229.969C1541.33 334.739 1626.56 419.969 1731.33 419.969H1826.52C1931.29 419.969 2016.52 334.739 2016.52 229.969V190.019C2016.52 85.2488 1931.28 0.018832 1826.52 0.018832ZM1936.52 229.969C1936.52 290.619 1887.17 339.969 1826.52 339.969H1731.33C1670.68 339.969 1621.33 290.619 1621.33 229.969V190.019C1621.33 129.369 1670.68 80.0188 1731.33 80.0188H1826.52C1887.17 80.0188 1936.52 129.369 1936.52 190.019V229.969ZM651.579 80.0188C673.669 80.0188 691.579 62.1088 691.579 40.0188C691.579 17.9288 673.669 0.018832 651.579 0.018832C629.489 0.018832 611.579 17.9288 611.579 40.0188C611.579 62.1088 629.489 80.0188 651.579 80.0188Z" fill="currentColor"/></svg>';__name(renderSignedInPage,"renderSignedInPage")}});import{execFile as execFile8,spawnSync as spawnSync2}from"node:child_process";import path34 from"node:path";import{promisify as promisify8}from"node:util";function explainCreateProjectError(error){return error instanceof ApiRequestError&&error.detail.includes('insert into "projects"')&&(error.detail.includes('"subdomain"')||error.detail.includes('"subdomain_updated_at"'))?["Project creation failed because the local API database schema looks out of date.","The server is trying to write the `projects.subdomain` fields, but your database likely has not applied the latest migration yet.","Run `cd apps/api && pnpm db:migrate`, restart the API if needed, then retry."].join(`
597
597
  `):error instanceof Error?error.message:String(error)}async function scaffoldNewProject(args){let{api,cfg,targetDir,displayName,options}=args,organizationId=await resolveOrganization(api,options.org),createSpinner=spinner("Creating Fimo project"),project;try{project=await api.createProject({organizationId,displayName:displayName??path34.basename(targetDir)})}catch(error){throw createSpinner.fail("Project creation failed"),new ScaffoldError("PROJECT_CREATE_FAILED",explainCreateProjectError(error))}createSpinner.succeed(`Project ${project.displayName??project.name} created (${project.id})`);let releaseAbortHandler=installAbortHandler(api,project.id,project.name);try{return await scaffoldIntoProject({project,api,cfg,targetDir,options})}finally{releaseAbortHandler()}}async function scaffoldIntoProject(args){let{project,api,cfg,targetDir,options}=args,remoteSp=spinner("Fetching git remote"),remote=await api.getGitRemote(project.id,MAIN_BRANCH);remoteSp.succeed("Remote ready");let selectedAgents;try{selectedAgents=await selectAgents(options,{promptMessage:"Which agents do you want to set up?",detectFn:detectAgentsWithFimoSkills})}catch(err){throw new ScaffoldError("AGENT_SELECTION_FAILED",err instanceof Error?err.message:String(err))}let installMode;try{installMode=parseModeFlag(options)??"symlink"}catch(err){throw new ScaffoldError("MODE_FLAG_INVALID",err instanceof Error?err.message:String(err))}let scaffoldSp=spinner("Scaffolding template"),templateRoot=options.templateRoot?path34.resolve(options.templateRoot):process.env.FIMO_TEMPLATE_ROOT?path34.resolve(process.env.FIMO_TEMPLATE_ROOT):resolveTemplateRoot();await copyTemplate(templateRoot,targetDir),writeLocalProjectFiles({targetDir,project,apiUrl:cfg.apiUrl,tenantApiUrl:remote.tenantApiUrl});let fanOut=writeAgentsMd(targetDir,selectedAgents),skillResult=await installProjectFimoSkillForAgents(targetDir,selectedAgents,installMode);for(let failure of skillResult.failures)O2.warn(`Could not install fimo skill for ${failure.agent}: ${failure.error}`);let fanOutSummary=selectedAgents.length===0?"AGENTS.md only (no per-agent variants)":`AGENTS.md + ${fanOut.perAgentVariants.join(", ")||"no extra variants"}`+(skillResult.agents.length>0?` + fimo skill (${skillResult.agents.join(", ")})`:"");scaffoldSp.succeed(`Template scaffolded (${fanOutSummary})`);let gitSp=spinner("Initializing git repository");await runGit2(["init","-b",MAIN_BRANCH],targetDir),await ensureFimoRemote(targetDir,remote.url),await runGit2(["add","-A"],targetDir),await runGit2(["commit","-m","chore: scaffold Fimo project"],targetDir).catch(()=>{}),gitSp.succeed("Git initialized with `fimo` remote");let pushSp=spinner("Pushing initial commit to Fimo"),pushedInitial=!0;try{await runGit2(["push","fimo",`HEAD:${MAIN_BRANCH}`],targetDir),pushSp.succeed("Initial commit pushed")}catch(error){pushedInitial=!1,pushSp.fail("Initial push failed");let failure=classifyPushError(error),retryHint=failure.kind==="auth"?"Sign in with `fimo login`, then run `fimo deploy` to push it.":"Run `fimo deploy` later to retry.";O2.error(`Could not push the initial commit. ${retryHint}
598
598
  ${failure.stderr||""}`.trim())}let relativeTarget=path34.relative(process.cwd(),targetDir)||".";return{project,targetDir,relativeTarget,selectedAgents,installMode,fanOutSummary,pushedInitial,tenantApiUrl:remote.tenantApiUrl}}function installAbortHandler(api,projectId,projectName){let cleaningUp=!1,handler=__name(()=>{cleaningUp&&(process.stderr.write(`
599
599
  Force-exiting. Project may not have been fully cleaned up.
@@ -601,7 +601,7 @@ Force-exiting. Project may not have been fully cleaned up.
601
601
  Aborted. Deleting project ${projectName}\u2026
602
602
  `),api.deleteProject(projectId).then(()=>{process.stderr.write(`Deleted project ${projectName}.
603
603
  `)}).catch(error=>{process.stderr.write(`Failed to delete project: ${error instanceof Error?error.message:String(error)}
604
- `)}).finally(()=>{process.exit(130)})},"handler");return process.on("SIGINT",handler),()=>{process.off("SIGINT",handler)}}function installArgsForPackageManager(packageManager){return packageManager==="pnpm"?["install","--config.dangerouslyAllowAllBuilds=true"]:["install"]}function formatPackageManagerCommand(packageManager,args){return[packageManager,...args].join(" ")}async function installDependencies(packageManager,targetDir){let args=installArgsForPackageManager(packageManager),command=formatPackageManagerCommand(packageManager,args),installSp=spinner(`Installing dependencies (${command})`);try{return await execFileAsync7(packageManager,args,{cwd:targetDir}),installSp.succeed("Dependencies installed"),{installed:!0,command,error:null}}catch(error){let message=error instanceof Error?error.message:String(error);return installSp.fail(`Failed to install dependencies: ${message}`),{installed:!1,command,error:message}}}function detectPackageManager2(){return isCommandAvailable("pnpm")?"pnpm":isCommandAvailable("bun")?"bun":isCommandAvailable("yarn")?"yarn":"npm"}function isCommandAvailable(command){let probe=process.platform==="win32"?"where":"which";return spawnSync(probe,[command],{stdio:"ignore"}).status===0}async function resolveOrganization(api,explicit,options={}){if(explicit)return explicit;let activeOrganizationId=readCredentials()?.activeOrganization?.id,nonInteractive2=options.nonInteractive??(currentMode().format==="json"||!isInteractive());if(nonInteractive2&&activeOrganizationId)return activeOrganizationId;let orgs2;try{orgs2=await api.listOrganizations()}catch(error){throw rethrowCliAuthError(error),new ScaffoldError("LIST_ORGS_FAILED",`Failed to list organizations: ${error instanceof Error?error.message:String(error)}`)}if(orgs2.length===0)throw new ScaffoldError("NO_ORGANIZATIONS","No organization found for this account.");if(orgs2.length===1)return orgs2[0].id;if(nonInteractive2)throw new ScaffoldError("ORGANIZATION_REQUIRED","Several organizations are available and no active organization is configured.","Pass --org <organizationId>, or run `fimo orgs switch --org <id-or-slug>` first.");let currentId=orgs2.some(organization=>organization.id===activeOrganizationId)?activeOrganizationId:void 0,selected=await _t({message:"Select an organization for this project",initialValue:currentId,options:orgs2.map(organization=>({value:organization.id,label:organization.name,hint:organization.id===currentId?"current":organization.slug}))});if(q(selected))throw new ScaffoldError("ORGANIZATION_SELECTION_CANCELLED","Organization selection cancelled.");return selected}var execFileAsync7,MAIN_BRANCH,ScaffoldError,init_scaffold_project=__esm({"src/cli/commands/scaffold-project.ts"(){init_dist5();init_dist();init_api();init_auth();init_project_skill();init_agents();init_auth_errors();init_git_credential_setup();init_git();init_interactive();init_local_project_files();init_scaffold();init_skills();execFileAsync7=promisify8(execFile8),MAIN_BRANCH="main",ScaffoldError=class extends Error{static{__name(this,"ScaffoldError")}code;hint;constructor(code2,message,hint){super(message),this.name="ScaffoldError",this.code=code2,this.hint=hint}};__name(explainCreateProjectError,"explainCreateProjectError");__name(scaffoldNewProject,"scaffoldNewProject");__name(scaffoldIntoProject,"scaffoldIntoProject");__name(installAbortHandler,"installAbortHandler");__name(installArgsForPackageManager,"installArgsForPackageManager");__name(formatPackageManagerCommand,"formatPackageManagerCommand");__name(installDependencies,"installDependencies");__name(detectPackageManager2,"detectPackageManager");__name(isCommandAvailable,"isCommandAvailable");__name(resolveOrganization,"resolveOrganization")}});import fs33 from"node:fs";import path35 from"node:path";function isPretty(){return currentMode().format==="pretty"}function nonInteractive(options){return options.yes===!0||currentMode().format==="json"||!isInteractive()}async function initCommand(dirArg,options){let cfg=loadConfig();if(isPretty()&&mt("Set up your Fimo project"),options.packageManager&&!PACKAGE_MANAGERS.includes(options.packageManager.toLowerCase())){ui.error({command:"init",code:"PACKAGE_MANAGER_INVALID",message:`Unknown package manager "${options.packageManager}".`,hint:`Use one of: ${PACKAGE_MANAGERS.join(", ")}.`});return}if(!await ensureAuthenticated(cfg,nonInteractive(options)))return;let api=new FimoApiClient(cfg),creds=readCredentials(cfg),useExisting=await resolveUseExisting(options),plan=await planInit({api,creds,useExisting,dirArg,options});if(!plan)return;let result=useExisting?await runExisting({api,cfg,projectId:plan.projectId,dirArg,options:plan.options}):await runNew({api,cfg,targetDir:plan.targetDir,displayName:plan.displayName,options:plan.options});if(!result)return;let{checkout}=result,scaffoldSummary=result.summary,scaffoldedAgents=result.selectedAgents,pushedInitial=result.pushedInitial,depResult=await maybeInstallDependencies(checkout.targetDir,plan.packageManager),skills2=await maybeInstallSkills(checkout.targetDir,plan.options,scaffoldedAgents),warnings=[];pushedInitial||warnings.push("Initial commit was not pushed \u2014 the project's remote is empty. Sign in (`fimo login`), then run `fimo deploy` from the project to push it."),depResult.error&&warnings.push(`Dependency install failed: ${depResult.error}`),skills2.error&&warnings.push(skills2.error),ui.result({command:"init",data:{ok:!0,project_id:checkout.projectId,project_name:checkout.projectName,mode:useExisting?"existing":"new",target_dir:checkout.targetDir,relative_dir:checkout.relativeTarget,scaffold:scaffoldSummary,installed_deps:depResult.installed,package_manager:depResult.packageManager,install_error:depResult.error,skills_set_up:skills2.setUp,skills_error:skills2.error,pushed_initial:pushedInitial},render:__name(ctx=>renderInitSuccess(ctx,{projectName:checkout.projectName,relativeDir:checkout.relativeTarget,isNew:!useExisting,installedDeps:depResult.installed,packageManager:depResult.packageManager,pushedInitial}),"render"),warnings:warnings.length>0?warnings:void 0})}function renderInitSuccess(ctx,args){let p2=ctx.color?palette:makeColorPalette({forceDisable:!0});if(!args.pushedInitial)return renderInitPushFailed(p2,ctx.ascii,args);let check=ctx.ascii?"[ok]":"\u2705",pm=args.packageManager??"pnpm",dev=args.installedDeps?`${pm} dev`:`${pm} install`,devTail=args.installedDeps?"to launch your project's development server":`then ${p2.cyan(`${pm} dev`)} to launch it`,commands=[["npx fimo deploy","to push a preview of your site"],["npx fimo deploy --publish","to push your site live"],["npx fimo skills install","to set up Fimo skills for your AI tools"],["npx fimo --help","to explore the CLI"]],width=Math.max(...commands.map(([c2])=>c2.length)),lines=[];lines.push(`${check} ${p2.bold(`Success! Your project ${args.projectName} ${args.isNew?"has been created":"is linked"}.`)}`),lines.push(""),lines.push(`${p2.dim("(cd")} ${p2.cyan(args.relativeDir)} ${p2.dim("to navigate to your project directory)")}`),lines.push(""),lines.push(`Get started by running ${p2.cyan(dev)} ${devTail}`),lines.push(""),lines.push(""),lines.push(p2.bold("Other helpful commands:"));for(let[cmd,desc]of commands)lines.push(`${p2.cyan(cmd.padEnd(width))} ${p2.dim(desc)}`);return lines.join(`
604
+ `)}).finally(()=>{process.exit(130)})},"handler");return process.on("SIGINT",handler),()=>{process.off("SIGINT",handler)}}function installArgsForPackageManager(packageManager){return packageManager==="pnpm"?["install","--config.dangerouslyAllowAllBuilds=true"]:["install"]}function formatPackageManagerCommand(packageManager,args){return[packageManager,...args].join(" ")}async function installDependencies(packageManager,targetDir){let args=installArgsForPackageManager(packageManager),command=formatPackageManagerCommand(packageManager,args),installSp=spinner(`Installing dependencies (${command})`);try{return await execFileAsync7(packageManager,args,{cwd:targetDir}),installSp.succeed("Dependencies installed"),{installed:!0,command,error:null}}catch(error){let message=error instanceof Error?error.message:String(error);return installSp.fail(`Failed to install dependencies: ${message}`),{installed:!1,command,error:message}}}function detectPackageManager2(){return isCommandAvailable("pnpm")?"pnpm":isCommandAvailable("bun")?"bun":isCommandAvailable("yarn")?"yarn":"npm"}function isCommandAvailable(command){let probe=process.platform==="win32"?"where":"which";return spawnSync2(probe,[command],{stdio:"ignore"}).status===0}async function resolveOrganization(api,explicit,options={}){if(explicit)return explicit;let activeOrganizationId=readCredentials()?.activeOrganization?.id,nonInteractive2=options.nonInteractive??(currentMode().format==="json"||!isInteractive());if(nonInteractive2&&activeOrganizationId)return activeOrganizationId;let orgs2;try{orgs2=await api.listOrganizations()}catch(error){throw rethrowCliAuthError(error),new ScaffoldError("LIST_ORGS_FAILED",`Failed to list organizations: ${error instanceof Error?error.message:String(error)}`)}if(orgs2.length===0)throw new ScaffoldError("NO_ORGANIZATIONS","No organization found for this account.");if(orgs2.length===1)return orgs2[0].id;if(nonInteractive2)throw new ScaffoldError("ORGANIZATION_REQUIRED","Several organizations are available and no active organization is configured.","Pass --org <organizationId>, or run `fimo orgs switch --org <id-or-slug>` first.");let currentId=orgs2.some(organization=>organization.id===activeOrganizationId)?activeOrganizationId:void 0,selected=await _t({message:"Select an organization for this project",initialValue:currentId,options:orgs2.map(organization=>({value:organization.id,label:organization.name,hint:organization.id===currentId?"current":organization.slug}))});if(q(selected))throw new ScaffoldError("ORGANIZATION_SELECTION_CANCELLED","Organization selection cancelled.");return selected}var execFileAsync7,MAIN_BRANCH,ScaffoldError,init_scaffold_project=__esm({"src/cli/commands/scaffold-project.ts"(){init_dist5();init_dist();init_api();init_auth();init_project_skill();init_agents();init_auth_errors();init_git_credential_setup();init_git();init_interactive();init_local_project_files();init_scaffold();init_skills();execFileAsync7=promisify8(execFile8),MAIN_BRANCH="main",ScaffoldError=class extends Error{static{__name(this,"ScaffoldError")}code;hint;constructor(code2,message,hint){super(message),this.name="ScaffoldError",this.code=code2,this.hint=hint}};__name(explainCreateProjectError,"explainCreateProjectError");__name(scaffoldNewProject,"scaffoldNewProject");__name(scaffoldIntoProject,"scaffoldIntoProject");__name(installAbortHandler,"installAbortHandler");__name(installArgsForPackageManager,"installArgsForPackageManager");__name(formatPackageManagerCommand,"formatPackageManagerCommand");__name(installDependencies,"installDependencies");__name(detectPackageManager2,"detectPackageManager");__name(isCommandAvailable,"isCommandAvailable");__name(resolveOrganization,"resolveOrganization")}});import fs33 from"node:fs";import path35 from"node:path";function isPretty(){return currentMode().format==="pretty"}function nonInteractive(options){return options.yes===!0||currentMode().format==="json"||!isInteractive()}async function initCommand(dirArg,options){let cfg=loadConfig();if(isPretty()&&mt("Set up your Fimo project"),options.packageManager&&!PACKAGE_MANAGERS.includes(options.packageManager.toLowerCase())){ui.error({command:"init",code:"PACKAGE_MANAGER_INVALID",message:`Unknown package manager "${options.packageManager}".`,hint:`Use one of: ${PACKAGE_MANAGERS.join(", ")}.`});return}if(!await ensureAuthenticated(cfg,nonInteractive(options)))return;let api=new FimoApiClient(cfg),creds=readCredentials(cfg),useExisting=await resolveUseExisting(options),plan=await planInit({api,creds,useExisting,dirArg,options});if(!plan)return;let result=useExisting?await runExisting({api,cfg,projectId:plan.projectId,dirArg,options:plan.options}):await runNew({api,cfg,targetDir:plan.targetDir,displayName:plan.displayName,options:plan.options});if(!result)return;let{checkout}=result,scaffoldSummary=result.summary,scaffoldedAgents=result.selectedAgents,pushedInitial=result.pushedInitial,depResult=await maybeInstallDependencies(checkout.targetDir,plan.packageManager),skills2=await maybeInstallSkills(checkout.targetDir,plan.options,scaffoldedAgents),warnings=[];pushedInitial||warnings.push("Initial commit was not pushed \u2014 the project's remote is empty. Sign in (`fimo login`), then run `fimo deploy` from the project to push it."),depResult.error&&warnings.push(`Dependency install failed: ${depResult.error}`),skills2.error&&warnings.push(skills2.error),ui.result({command:"init",data:{ok:!0,project_id:checkout.projectId,project_name:checkout.projectName,mode:useExisting?"existing":"new",target_dir:checkout.targetDir,relative_dir:checkout.relativeTarget,scaffold:scaffoldSummary,installed_deps:depResult.installed,package_manager:depResult.packageManager,install_error:depResult.error,skills_set_up:skills2.setUp,skills_error:skills2.error,pushed_initial:pushedInitial},render:__name(ctx=>renderInitSuccess(ctx,{projectName:checkout.projectName,relativeDir:checkout.relativeTarget,isNew:!useExisting,installedDeps:depResult.installed,packageManager:depResult.packageManager,pushedInitial}),"render"),warnings:warnings.length>0?warnings:void 0})}function renderInitSuccess(ctx,args){let p2=ctx.color?palette:makeColorPalette({forceDisable:!0});if(!args.pushedInitial)return renderInitPushFailed(p2,ctx.ascii,args);let check=ctx.ascii?"[ok]":"\u2705",pm=args.packageManager??"pnpm",dev=args.installedDeps?`${pm} dev`:`${pm} install`,devTail=args.installedDeps?"to launch your project's development server":`then ${p2.cyan(`${pm} dev`)} to launch it`,commands=[["npx fimo deploy","to push a preview of your site"],["npx fimo deploy --publish","to push your site live"],["npx fimo skills install","to set up Fimo skills for your AI tools"],["npx fimo --help","to explore the CLI"]],width=Math.max(...commands.map(([c2])=>c2.length)),lines=[];lines.push(`${check} ${p2.bold(`Success! Your project ${args.projectName} ${args.isNew?"has been created":"is linked"}.`)}`),lines.push(""),lines.push(`${p2.dim("(cd")} ${p2.cyan(args.relativeDir)} ${p2.dim("to navigate to your project directory)")}`),lines.push(""),lines.push(`Get started by running ${p2.cyan(dev)} ${devTail}`),lines.push(""),lines.push(""),lines.push(p2.bold("Other helpful commands:"));for(let[cmd,desc]of commands)lines.push(`${p2.cyan(cmd.padEnd(width))} ${p2.dim(desc)}`);return lines.join(`
605
605
  `)}function renderInitPushFailed(p2,ascii,args){let warn=ascii?"[!]":"\u26A0\uFE0F",steps=[["npx fimo login","to sign in (if you are not already)"],["npx fimo deploy","to push the first commit and finish setup"]],width=Math.max(...steps.map(([c2])=>c2.length)),lines=[];lines.push(`${warn} ${p2.bold(`Your project ${args.projectName} was created, but its first commit was not pushed.`)}`),lines.push(""),lines.push(p2.dim("The remote is empty until you push, so it can't be cloned or deployed yet.")),lines.push(""),lines.push(`${p2.dim("(cd")} ${p2.cyan(args.relativeDir)} ${p2.dim("then finish setup:)")}`);for(let[cmd,desc]of steps)lines.push(`${p2.cyan(cmd.padEnd(width))} ${p2.dim(desc)}`);return lines.join(`
606
606
  `)}async function ensureAuthenticated(cfg,noPrompt){if(readCredentials(cfg)?.access_token)return!0;if(noPrompt)return ui.error({command:"init",code:"NOT_AUTHENTICATED",message:"You are not signed in to Fimo.",hint:"Run `fimo login` first, then re-run `fimo init`."}),!1;isPretty()&&O2.step("You are not signed in yet \u2014 opening your browser to sign in.");try{return await performBrowserLogin(cfg),!0}catch(error){if(error instanceof LoginError)return ui.error({command:"init",code:error.code,message:error.message}),!1;throw error}}async function resolveUseExisting(options){if(options.projectId)return!0;if(nonInteractive(options))return!1;let choice=await _t({message:"What do you want to do?",options:[{value:"new",label:"Create a new project"},{value:"existing",label:"Link an existing project"}]});return q(choice)?(ui.info({command:"init",message:"Cancelled."}),!1):choice==="existing"}async function planInit(args){let{api,creds,useExisting,dirArg,options}=args,projectId,targetDir,displayName,derived={...options};if(useExisting){if(projectId=options.projectId??await selectProjectId({api,activeOrganizationId:creds?.activeOrganization?.id??null,command:"init",message:"Select a project to link"})??void 0,!projectId)return null}else{let resolved=await resolveTargetDir(dirArg,nonInteractive(options));if(!resolved)return null;if(targetDir=resolved.targetDir,displayName=resolved.displayName,fs33.existsSync(targetDir)&&fs33.readdirSync(targetDir).length>0){let name=path35.basename(targetDir);return ui.error({command:"init",code:"DIRECTORY_NOT_EMPTY",message:`The folder "${name}" already exists and isn't empty.`,hint:`Pick a different directory (e.g. \`fimo init <dir>\`), or empty "${name}" first.`}),null}try{derived.org=await resolveOrganization(api,options.org,{nonInteractive:nonInteractive(options)})}catch(error){if(error instanceof ScaffoldError&&error.code==="ORGANIZATION_SELECTION_CANCELLED")return ui.info({command:"init",message:"Cancelled."}),null;if(error instanceof ScaffoldError)return ui.error({command:"init",code:error.code,message:error.message,hint:error.hint}),null;throw error}}if(!nonInteractive(options)&&(!useExisting||options.skills!==!1)){let agents;try{agents=await selectAgents(options,{promptMessage:"Which agents do you want to set up?",detectFn:detectAgentsWithFimoSkills})}catch(err){return ui.error({command:"init",code:"AGENT_SELECTION_FAILED",message:err instanceof Error?err.message:String(err)}),null}derived.agents=agents.length>0?agents.join(","):"none"}else useExisting&&options.skills===!1&&!derived.agents&&(derived.agents="none");let packageManager=options.install===!1?null:await resolvePackageManager(derived);return{projectId,targetDir,displayName,packageManager,options:derived}}async function runExisting(args){let{api,cfg,projectId,dirArg,options}=args;try{let result=await cloneProject({api,cfg,projectId,dir:dirArg,env:options.env});return{checkout:{projectId:result.project.id,projectName:result.project.displayName??result.project.name,targetDir:result.targetDir,relativeTarget:result.relativeTarget},summary:null,selectedAgents:null,pushedInitial:!0}}catch(error){if(error instanceof CloneError&&error.code==="EMPTY_REMOTE"&&error.emptyRemote)return adoptEmptyRemote({api,cfg,ctx:error.emptyRemote,options});if(error instanceof CloneError)return ui.error({command:"init",code:error.code,message:error.message,hint:error.hint}),null;throw error}}async function adoptEmptyRemote(args){let{api,cfg,ctx,options}=args;isPretty()&&O2.step("This project has no content yet \u2014 scaffolding a starter site and pushing the first commit.");try{let result=await scaffoldIntoProject({project:ctx.project,api,cfg,targetDir:ctx.targetDir,options});return{checkout:{projectId:result.project.id,projectName:result.project.displayName??result.project.name,targetDir:result.targetDir,relativeTarget:result.relativeTarget},summary:result.fanOutSummary,selectedAgents:result.selectedAgents,pushedInitial:result.pushedInitial}}catch(error){if(error instanceof ScaffoldError)return ui.error({command:"init",code:error.code,message:error.message,hint:error.hint}),null;throw error}}async function runNew(args){let{api,cfg,targetDir,displayName,options}=args;try{let result=await scaffoldNewProject({api,cfg,targetDir,displayName,options});return{checkout:{projectId:result.project.id,projectName:result.project.displayName??result.project.name,targetDir:result.targetDir,relativeTarget:result.relativeTarget},summary:result.fanOutSummary,selectedAgents:result.selectedAgents,pushedInitial:result.pushedInitial}}catch(error){if(error instanceof ScaffoldError)return ui.error({command:"init",code:error.code,message:error.message,hint:error.hint}),null;throw error}}async function resolveTargetDir(dirArg,noPrompt){if(dirArg)return{targetDir:path35.resolve(dirArg)};if(noPrompt)return ui.error({command:"init",code:"DIRECTORY_REQUIRED",message:"A target directory is required to create a new project.",hint:"Pass [dir] (e.g. `fimo init my-site`), or `--project-id <id>` to link an existing project."}),null;let input=await Ot({message:"Project name",placeholder:"My Fimo Site",validate:__name(value=>value&&value.trim().length>0?void 0:"project name required","validate")});if(q(input))return ui.info({command:"init",message:"Cancelled."}),null;let displayName=String(input).trim(),folder=slugifyName(displayName)||"fimo-project";return{targetDir:path35.resolve(folder),displayName}}async function maybeInstallDependencies(targetDir,packageManager){if(!packageManager)return{installed:!1,packageManager:null,error:null};let result=await installDependencies(packageManager,targetDir);return{installed:result.installed,packageManager,error:result.error}}async function resolvePackageManager(options){if(options.packageManager)return options.packageManager.toLowerCase();let detected=detectPackageManager2();if(nonInteractive(options))return detected;let selected=await _t({message:"Install dependencies with which package manager?",initialValue:detected,options:[...PACKAGE_MANAGERS.map(pm=>({value:pm,label:pm})),{value:MANUAL_INSTALL,label:"Manual \u2014 I'll install dependencies myself"}]});return q(selected)||selected===MANUAL_INSTALL?null:selected}async function maybeInstallSkills(targetDir,options,scaffoldedAgents){if(options.skills===!1)return{setUp:!1,error:null};if(options.skills!==!0&&nonInteractive(options))return{setUp:!1,error:null};let agentsFlag=options.agents;if(scaffoldedAgents!==null){if(scaffoldedAgents.length===0)return{setUp:!1,error:null};agentsFlag=scaffoldedAgents.join(",")}else if(nonInteractive(options)&&!agentsFlag)return{setUp:!1,error:null};let prevCwd=process.cwd(),outcome;try{process.chdir(targetDir),outcome=await runSkillsInstall({agents:agentsFlag,agent:scaffoldedAgents!==null?void 0:options.agent,mode:options.mode??"symlink",yes:!0})}finally{process.chdir(prevCwd)}return outcome.status==="error"&&outcome.code==="NO_AGENTS_SELECTED"?{setUp:!1,error:null}:outcome.status==="ok"?{setUp:!0,error:outcome.data.ok?null:"Some skills failed to install."}:outcome.status==="cancelled"?{setUp:!1,error:null}:{setUp:!1,error:outcome.message}}var PACKAGE_MANAGERS,MANUAL_INSTALL,init_init=__esm({"src/cli/commands/init.ts"(){init_dist5();init_dist();init_api();init_auth();init_config();init_agents();init_color();init_interactive();init_slug();init_clone();init_login();init_scaffold_project();init_skills();PACKAGE_MANAGERS=["npm","pnpm","yarn","bun"],MANUAL_INSTALL="manual";__name(isPretty,"isPretty");__name(nonInteractive,"nonInteractive");__name(initCommand,"initCommand");__name(renderInitSuccess,"renderInitSuccess");__name(renderInitPushFailed,"renderInitPushFailed");__name(ensureAuthenticated,"ensureAuthenticated");__name(resolveUseExisting,"resolveUseExisting");__name(planInit,"planInit");__name(runExisting,"runExisting");__name(adoptEmptyRemote,"adoptEmptyRemote");__name(runNew,"runNew");__name(resolveTargetDir,"resolveTargetDir");__name(maybeInstallDependencies,"maybeInstallDependencies");__name(resolvePackageManager,"resolvePackageManager");__name(maybeInstallSkills,"maybeInstallSkills")}});function flattenOptions(options,baseOptions){if(!options)return baseOptions??defaultOpts;let opts={_useHtmlParser2:!!options.xmlMode,...baseOptions,...options};return options.xml?(opts._useHtmlParser2=!0,opts.xmlMode=!0,options.xml!==!0&&Object.assign(opts,options.xml)):options.xmlMode&&(opts._useHtmlParser2=!0),opts}var defaultOpts,init_options=__esm({"../../node_modules/.pnpm/cheerio@1.2.0/node_modules/cheerio/dist/esm/options.js"(){defaultOpts={_useHtmlParser2:!1};__name(flattenOptions,"flattenOptions")}});var esm_exports={};__export(esm_exports,{CDATA:()=>CDATA,Comment:()=>Comment,Directive:()=>Directive,Doctype:()=>Doctype,ElementType:()=>ElementType,Root:()=>Root,Script:()=>Script,Style:()=>Style,Tag:()=>Tag,Text:()=>Text,isTag:()=>isTag});function isTag(elem){return elem.type===ElementType.Tag||elem.type===ElementType.Script||elem.type===ElementType.Style}var ElementType,Root,Text,Directive,Comment,Script,Style,Tag,CDATA,Doctype,init_esm2=__esm({"../../node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js"(){(function(ElementType2){ElementType2.Root="root",ElementType2.Text="text",ElementType2.Directive="directive",ElementType2.Comment="comment",ElementType2.Script="script",ElementType2.Style="style",ElementType2.Tag="tag",ElementType2.CDATA="cdata",ElementType2.Doctype="doctype"})(ElementType||(ElementType={}));__name(isTag,"isTag");Root=ElementType.Root,Text=ElementType.Text,Directive=ElementType.Directive,Comment=ElementType.Comment,Script=ElementType.Script,Style=ElementType.Style,Tag=ElementType.Tag,CDATA=ElementType.CDATA,Doctype=ElementType.Doctype}});function isTag2(node){return isTag(node)}function isCDATA(node){return node.type===ElementType.CDATA}function isText(node){return node.type===ElementType.Text}function isComment(node){return node.type===ElementType.Comment}function isDirective(node){return node.type===ElementType.Directive}function isDocument(node){return node.type===ElementType.Root}function hasChildren(node){return Object.prototype.hasOwnProperty.call(node,"children")}function cloneNode(node,recursive=!1){let result;if(isText(node))result=new Text2(node.data);else if(isComment(node))result=new Comment2(node.data);else if(isTag2(node)){let children2=recursive?cloneChildren(node.children):[],clone2=new Element(node.name,{...node.attribs},children2);children2.forEach(child=>child.parent=clone2),node.namespace!=null&&(clone2.namespace=node.namespace),node["x-attribsNamespace"]&&(clone2["x-attribsNamespace"]={...node["x-attribsNamespace"]}),node["x-attribsPrefix"]&&(clone2["x-attribsPrefix"]={...node["x-attribsPrefix"]}),result=clone2}else if(isCDATA(node)){let children2=recursive?cloneChildren(node.children):[],clone2=new CDATA2(children2);children2.forEach(child=>child.parent=clone2),result=clone2}else if(isDocument(node)){let children2=recursive?cloneChildren(node.children):[],clone2=new Document(children2);children2.forEach(child=>child.parent=clone2),node["x-mode"]&&(clone2["x-mode"]=node["x-mode"]),result=clone2}else if(isDirective(node)){let instruction=new ProcessingInstruction(node.name,node.data);node["x-name"]!=null&&(instruction["x-name"]=node["x-name"],instruction["x-publicId"]=node["x-publicId"],instruction["x-systemId"]=node["x-systemId"]),result=instruction}else throw new Error(`Not implemented yet: ${node.type}`);return result.startIndex=node.startIndex,result.endIndex=node.endIndex,node.sourceCodeLocation!=null&&(result.sourceCodeLocation=node.sourceCodeLocation),result}function cloneChildren(childs){let children2=childs.map(child=>cloneNode(child,!0));for(let i=1;i<children2.length;i++)children2[i].prev=children2[i-1],children2[i-1].next=children2[i];return children2}var Node,DataNode,Text2,Comment2,ProcessingInstruction,NodeWithChildren,CDATA2,Document,Element,init_node=__esm({"../../node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js"(){init_esm2();Node=class{static{__name(this,"Node")}constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(parent2){this.parent=parent2}get previousSibling(){return this.prev}set previousSibling(prev2){this.prev=prev2}get nextSibling(){return this.next}set nextSibling(next2){this.next=next2}cloneNode(recursive=!1){return cloneNode(this,recursive)}},DataNode=class extends Node{static{__name(this,"DataNode")}constructor(data2){super(),this.data=data2}get nodeValue(){return this.data}set nodeValue(data2){this.data=data2}},Text2=class extends DataNode{static{__name(this,"Text")}constructor(){super(...arguments),this.type=ElementType.Text}get nodeType(){return 3}},Comment2=class extends DataNode{static{__name(this,"Comment")}constructor(){super(...arguments),this.type=ElementType.Comment}get nodeType(){return 8}},ProcessingInstruction=class extends DataNode{static{__name(this,"ProcessingInstruction")}constructor(name,data2){super(data2),this.name=name,this.type=ElementType.Directive}get nodeType(){return 1}},NodeWithChildren=class extends Node{static{__name(this,"NodeWithChildren")}constructor(children2){super(),this.children=children2}get firstChild(){var _a4;return(_a4=this.children[0])!==null&&_a4!==void 0?_a4:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(children2){this.children=children2}},CDATA2=class extends NodeWithChildren{static{__name(this,"CDATA")}constructor(){super(...arguments),this.type=ElementType.CDATA}get nodeType(){return 4}},Document=class extends NodeWithChildren{static{__name(this,"Document")}constructor(){super(...arguments),this.type=ElementType.Root}get nodeType(){return 9}},Element=class extends NodeWithChildren{static{__name(this,"Element")}constructor(name,attribs,children2=[],type=name==="script"?ElementType.Script:name==="style"?ElementType.Style:ElementType.Tag){super(children2),this.name=name,this.attribs=attribs,this.type=type}get nodeType(){return 1}get tagName(){return this.name}set tagName(name){this.name=name}get attributes(){return Object.keys(this.attribs).map(name=>{var _a4,_b;return{name,value:this.attribs[name],namespace:(_a4=this["x-attribsNamespace"])===null||_a4===void 0?void 0:_a4[name],prefix:(_b=this["x-attribsPrefix"])===null||_b===void 0?void 0:_b[name]}})}};__name(isTag2,"isTag");__name(isCDATA,"isCDATA");__name(isText,"isText");__name(isComment,"isComment");__name(isDirective,"isDirective");__name(isDocument,"isDocument");__name(hasChildren,"hasChildren");__name(cloneNode,"cloneNode");__name(cloneChildren,"cloneChildren")}});var defaultOpts2,DomHandler,init_esm3=__esm({"../../node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js"(){init_esm2();init_node();init_node();defaultOpts2={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},DomHandler=class{static{__name(this,"DomHandler")}constructor(callback,options,elementCB){this.dom=[],this.root=new Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof options=="function"&&(elementCB=options,options=defaultOpts2),typeof callback=="object"&&(options=callback,callback=void 0),this.callback=callback??null,this.options=options??defaultOpts2,this.elementCB=elementCB??null}onparserinit(parser){this.parser=parser}onreset(){this.dom=[],this.root=new Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(error){this.handleCallback(error)}onclosetag(){this.lastNode=null;let elem=this.tagStack.pop();this.options.withEndIndices&&(elem.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(elem)}onopentag(name,attribs){let type=this.options.xmlMode?ElementType.Tag:void 0,element=new Element(name,attribs,void 0,type);this.addNode(element),this.tagStack.push(element)}ontext(data2){let{lastNode}=this;if(lastNode&&lastNode.type===ElementType.Text)lastNode.data+=data2,this.options.withEndIndices&&(lastNode.endIndex=this.parser.endIndex);else{let node=new Text2(data2);this.addNode(node),this.lastNode=node}}oncomment(data2){if(this.lastNode&&this.lastNode.type===ElementType.Comment){this.lastNode.data+=data2;return}let node=new Comment2(data2);this.addNode(node),this.lastNode=node}oncommentend(){this.lastNode=null}oncdatastart(){let text3=new Text2(""),node=new CDATA2([text3]);this.addNode(node),text3.parent=node,this.lastNode=text3}oncdataend(){this.lastNode=null}onprocessinginstruction(name,data2){let node=new ProcessingInstruction(name,data2);this.addNode(node)}handleCallback(error){if(typeof this.callback=="function")this.callback(error,this.dom);else if(error)throw error}addNode(node){let parent2=this.tagStack[this.tagStack.length-1],previousSibling=parent2.children[parent2.children.length-1];this.options.withStartIndices&&(node.startIndex=this.parser.startIndex),this.options.withEndIndices&&(node.endIndex=this.parser.endIndex),parent2.children.push(node),previousSibling&&(node.prev=previousSibling,previousSibling.next=node),node.parent=parent2,this.lastNode=null}}}});var decode_data_html_default,init_decode_data_html=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js"(){decode_data_html_default=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(c2=>c2.charCodeAt(0)))}});var decode_data_xml_default,init_decode_data_xml=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js"(){decode_data_xml_default=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(c2=>c2.charCodeAt(0)))}});function replaceCodePoint(codePoint){var _a4;return codePoint>=55296&&codePoint<=57343||codePoint>1114111?65533:(_a4=decodeMap.get(codePoint))!==null&&_a4!==void 0?_a4:codePoint}var _a,decodeMap,fromCodePoint,init_decode_codepoint=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js"(){decodeMap=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),fromCodePoint=(_a=String.fromCodePoint)!==null&&_a!==void 0?_a:function(codePoint){let output="";return codePoint>65535&&(codePoint-=65536,output+=String.fromCharCode(codePoint>>>10&1023|55296),codePoint=56320|codePoint&1023),output+=String.fromCharCode(codePoint),output};__name(replaceCodePoint,"replaceCodePoint")}});function isNumber(code2){return code2>=CharCodes.ZERO&&code2<=CharCodes.NINE}function isHexadecimalCharacter(code2){return code2>=CharCodes.UPPER_A&&code2<=CharCodes.UPPER_F||code2>=CharCodes.LOWER_A&&code2<=CharCodes.LOWER_F}function isAsciiAlphaNumeric(code2){return code2>=CharCodes.UPPER_A&&code2<=CharCodes.UPPER_Z||code2>=CharCodes.LOWER_A&&code2<=CharCodes.LOWER_Z||isNumber(code2)}function isEntityInAttributeInvalidEnd(code2){return code2===CharCodes.EQUALS||isAsciiAlphaNumeric(code2)}function getDecoder(decodeTree){let ret="",decoder=new EntityDecoder(decodeTree,str=>ret+=fromCodePoint(str));return __name(function(str,decodeMode){let lastIndex=0,offset=0;for(;(offset=str.indexOf("&",offset))>=0;){ret+=str.slice(lastIndex,offset),decoder.startEntity(decodeMode);let len=decoder.write(str,offset+1);if(len<0){lastIndex=offset+decoder.end();break}lastIndex=offset+len,offset=len===0?lastIndex+1:lastIndex}let result=ret+str.slice(lastIndex);return ret="",result},"decodeWithTrie")}function determineBranch(decodeTree,current,nodeIdx,char){let branchCount=(current&BinTrieFlags.BRANCH_LENGTH)>>7,jumpOffset=current&BinTrieFlags.JUMP_TABLE;if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIdx:-1;if(jumpOffset){let value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIdx+value]-1}let lo=nodeIdx,hi=lo+branchCount-1;for(;lo<=hi;){let mid=lo+hi>>>1,midVal=decodeTree[mid];if(midVal<char)lo=mid+1;else if(midVal>char)hi=mid-1;else return decodeTree[mid+branchCount]}return-1}var CharCodes,TO_LOWER_BIT,BinTrieFlags,EntityDecoderState,DecodingMode,EntityDecoder,htmlDecoder,xmlDecoder,init_decode=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js"(){init_decode_data_html();init_decode_data_xml();init_decode_codepoint();init_decode_codepoint();(function(CharCodes4){CharCodes4[CharCodes4.NUM=35]="NUM",CharCodes4[CharCodes4.SEMI=59]="SEMI",CharCodes4[CharCodes4.EQUALS=61]="EQUALS",CharCodes4[CharCodes4.ZERO=48]="ZERO",CharCodes4[CharCodes4.NINE=57]="NINE",CharCodes4[CharCodes4.LOWER_A=97]="LOWER_A",CharCodes4[CharCodes4.LOWER_F=102]="LOWER_F",CharCodes4[CharCodes4.LOWER_X=120]="LOWER_X",CharCodes4[CharCodes4.LOWER_Z=122]="LOWER_Z",CharCodes4[CharCodes4.UPPER_A=65]="UPPER_A",CharCodes4[CharCodes4.UPPER_F=70]="UPPER_F",CharCodes4[CharCodes4.UPPER_Z=90]="UPPER_Z"})(CharCodes||(CharCodes={}));TO_LOWER_BIT=32;(function(BinTrieFlags3){BinTrieFlags3[BinTrieFlags3.VALUE_LENGTH=49152]="VALUE_LENGTH",BinTrieFlags3[BinTrieFlags3.BRANCH_LENGTH=16256]="BRANCH_LENGTH",BinTrieFlags3[BinTrieFlags3.JUMP_TABLE=127]="JUMP_TABLE"})(BinTrieFlags||(BinTrieFlags={}));__name(isNumber,"isNumber");__name(isHexadecimalCharacter,"isHexadecimalCharacter");__name(isAsciiAlphaNumeric,"isAsciiAlphaNumeric");__name(isEntityInAttributeInvalidEnd,"isEntityInAttributeInvalidEnd");(function(EntityDecoderState3){EntityDecoderState3[EntityDecoderState3.EntityStart=0]="EntityStart",EntityDecoderState3[EntityDecoderState3.NumericStart=1]="NumericStart",EntityDecoderState3[EntityDecoderState3.NumericDecimal=2]="NumericDecimal",EntityDecoderState3[EntityDecoderState3.NumericHex=3]="NumericHex",EntityDecoderState3[EntityDecoderState3.NamedEntity=4]="NamedEntity"})(EntityDecoderState||(EntityDecoderState={}));(function(DecodingMode3){DecodingMode3[DecodingMode3.Legacy=0]="Legacy",DecodingMode3[DecodingMode3.Strict=1]="Strict",DecodingMode3[DecodingMode3.Attribute=2]="Attribute"})(DecodingMode||(DecodingMode={}));EntityDecoder=class{static{__name(this,"EntityDecoder")}constructor(decodeTree,emitCodePoint,errors){this.decodeTree=decodeTree,this.emitCodePoint=emitCodePoint,this.errors=errors,this.state=EntityDecoderState.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DecodingMode.Strict}startEntity(decodeMode){this.decodeMode=decodeMode,this.state=EntityDecoderState.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(str,offset){switch(this.state){case EntityDecoderState.EntityStart:return str.charCodeAt(offset)===CharCodes.NUM?(this.state=EntityDecoderState.NumericStart,this.consumed+=1,this.stateNumericStart(str,offset+1)):(this.state=EntityDecoderState.NamedEntity,this.stateNamedEntity(str,offset));case EntityDecoderState.NumericStart:return this.stateNumericStart(str,offset);case EntityDecoderState.NumericDecimal:return this.stateNumericDecimal(str,offset);case EntityDecoderState.NumericHex:return this.stateNumericHex(str,offset);case EntityDecoderState.NamedEntity:return this.stateNamedEntity(str,offset)}}stateNumericStart(str,offset){return offset>=str.length?-1:(str.charCodeAt(offset)|TO_LOWER_BIT)===CharCodes.LOWER_X?(this.state=EntityDecoderState.NumericHex,this.consumed+=1,this.stateNumericHex(str,offset+1)):(this.state=EntityDecoderState.NumericDecimal,this.stateNumericDecimal(str,offset))}addToNumericResult(str,start,end2,base){if(start!==end2){let digitCount=end2-start;this.result=this.result*Math.pow(base,digitCount)+parseInt(str.substr(start,digitCount),base),this.consumed+=digitCount}}stateNumericHex(str,offset){let startIdx=offset;for(;offset<str.length;){let char=str.charCodeAt(offset);if(isNumber(char)||isHexadecimalCharacter(char))offset+=1;else return this.addToNumericResult(str,startIdx,offset,16),this.emitNumericEntity(char,3)}return this.addToNumericResult(str,startIdx,offset,16),-1}stateNumericDecimal(str,offset){let startIdx=offset;for(;offset<str.length;){let char=str.charCodeAt(offset);if(isNumber(char))offset+=1;else return this.addToNumericResult(str,startIdx,offset,10),this.emitNumericEntity(char,2)}return this.addToNumericResult(str,startIdx,offset,10),-1}emitNumericEntity(lastCp,expectedLength){var _a4;if(this.consumed<=expectedLength)return(_a4=this.errors)===null||_a4===void 0||_a4.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(lastCp===CharCodes.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode.Strict)return 0;return this.emitCodePoint(replaceCodePoint(this.result),this.consumed),this.errors&&(lastCp!==CharCodes.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(str,offset){let{decodeTree}=this,current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;for(;offset<str.length;offset++,this.excess++){let char=str.charCodeAt(offset);if(this.treeIndex=determineBranch(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char),this.treeIndex<0)return this.result===0||this.decodeMode===DecodingMode.Attribute&&(valueLength===0||isEntityInAttributeInvalidEnd(char))?0:this.emitNotTerminatedNamedEntity();if(current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14,valueLength!==0){if(char===CharCodes.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);this.decodeMode!==DecodingMode.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var _a4;let{result,decodeTree}=this,valueLength=(decodeTree[result]&BinTrieFlags.VALUE_LENGTH)>>14;return this.emitNamedEntityData(result,valueLength,this.consumed),(_a4=this.errors)===null||_a4===void 0||_a4.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(result,valueLength,consumed){let{decodeTree}=this;return this.emitCodePoint(valueLength===1?decodeTree[result]&~BinTrieFlags.VALUE_LENGTH:decodeTree[result+1],consumed),valueLength===3&&this.emitCodePoint(decodeTree[result+2],consumed),consumed}end(){var _a4;switch(this.state){case EntityDecoderState.NamedEntity:return this.result!==0&&(this.decodeMode!==DecodingMode.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case EntityDecoderState.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState.NumericStart:return(_a4=this.errors)===null||_a4===void 0||_a4.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case EntityDecoderState.EntityStart:return 0}}};__name(getDecoder,"getDecoder");__name(determineBranch,"determineBranch");htmlDecoder=getDecoder(decode_data_html_default),xmlDecoder=getDecoder(decode_data_xml_default)}});function restoreDiff(arr){for(let i=1;i<arr.length;i++)arr[i][0]+=arr[i-1][0]+1;return arr}var encode_html_default,init_encode_html=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js"(){__name(restoreDiff,"restoreDiff");encode_html_default=new Map(restoreDiff([[9,"&Tab;"],[0,"&NewLine;"],[22,"&excl;"],[0,"&quot;"],[0,"&num;"],[0,"&dollar;"],[0,"&percnt;"],[0,"&amp;"],[0,"&apos;"],[0,"&lpar;"],[0,"&rpar;"],[0,"&ast;"],[0,"&plus;"],[0,"&comma;"],[1,"&period;"],[0,"&sol;"],[10,"&colon;"],[0,"&semi;"],[0,{v:"&lt;",n:8402,o:"&nvlt;"}],[0,{v:"&equals;",n:8421,o:"&bne;"}],[0,{v:"&gt;",n:8402,o:"&nvgt;"}],[0,"&quest;"],[0,"&commat;"],[26,"&lbrack;"],[0,"&bsol;"],[0,"&rbrack;"],[0,"&Hat;"],[0,"&lowbar;"],[0,"&DiacriticalGrave;"],[5,{n:106,o:"&fjlig;"}],[20,"&lbrace;"],[0,"&verbar;"],[0,"&rbrace;"],[34,"&nbsp;"],[0,"&iexcl;"],[0,"&cent;"],[0,"&pound;"],[0,"&curren;"],[0,"&yen;"],[0,"&brvbar;"],[0,"&sect;"],[0,"&die;"],[0,"&copy;"],[0,"&ordf;"],[0,"&laquo;"],[0,"&not;"],[0,"&shy;"],[0,"&circledR;"],[0,"&macr;"],[0,"&deg;"],[0,"&PlusMinus;"],[0,"&sup2;"],[0,"&sup3;"],[0,"&acute;"],[0,"&micro;"],[0,"&para;"],[0,"&centerdot;"],[0,"&cedil;"],[0,"&sup1;"],[0,"&ordm;"],[0,"&raquo;"],[0,"&frac14;"],[0,"&frac12;"],[0,"&frac34;"],[0,"&iquest;"],[0,"&Agrave;"],[0,"&Aacute;"],[0,"&Acirc;"],[0,"&Atilde;"],[0,"&Auml;"],[0,"&angst;"],[0,"&AElig;"],[0,"&Ccedil;"],[0,"&Egrave;"],[0,"&Eacute;"],[0,"&Ecirc;"],[0,"&Euml;"],[0,"&Igrave;"],[0,"&Iacute;"],[0,"&Icirc;"],[0,"&Iuml;"],[0,"&ETH;"],[0,"&Ntilde;"],[0,"&Ograve;"],[0,"&Oacute;"],[0,"&Ocirc;"],[0,"&Otilde;"],[0,"&Ouml;"],[0,"&times;"],[0,"&Oslash;"],[0,"&Ugrave;"],[0,"&Uacute;"],[0,"&Ucirc;"],[0,"&Uuml;"],[0,"&Yacute;"],[0,"&THORN;"],[0,"&szlig;"],[0,"&agrave;"],[0,"&aacute;"],[0,"&acirc;"],[0,"&atilde;"],[0,"&auml;"],[0,"&aring;"],[0,"&aelig;"],[0,"&ccedil;"],[0,"&egrave;"],[0,"&eacute;"],[0,"&ecirc;"],[0,"&euml;"],[0,"&igrave;"],[0,"&iacute;"],[0,"&icirc;"],[0,"&iuml;"],[0,"&eth;"],[0,"&ntilde;"],[0,"&ograve;"],[0,"&oacute;"],[0,"&ocirc;"],[0,"&otilde;"],[0,"&ouml;"],[0,"&div;"],[0,"&oslash;"],[0,"&ugrave;"],[0,"&uacute;"],[0,"&ucirc;"],[0,"&uuml;"],[0,"&yacute;"],[0,"&thorn;"],[0,"&yuml;"],[0,"&Amacr;"],[0,"&amacr;"],[0,"&Abreve;"],[0,"&abreve;"],[0,"&Aogon;"],[0,"&aogon;"],[0,"&Cacute;"],[0,"&cacute;"],[0,"&Ccirc;"],[0,"&ccirc;"],[0,"&Cdot;"],[0,"&cdot;"],[0,"&Ccaron;"],[0,"&ccaron;"],[0,"&Dcaron;"],[0,"&dcaron;"],[0,"&Dstrok;"],[0,"&dstrok;"],[0,"&Emacr;"],[0,"&emacr;"],[2,"&Edot;"],[0,"&edot;"],[0,"&Eogon;"],[0,"&eogon;"],[0,"&Ecaron;"],[0,"&ecaron;"],[0,"&Gcirc;"],[0,"&gcirc;"],[0,"&Gbreve;"],[0,"&gbreve;"],[0,"&Gdot;"],[0,"&gdot;"],[0,"&Gcedil;"],[1,"&Hcirc;"],[0,"&hcirc;"],[0,"&Hstrok;"],[0,"&hstrok;"],[0,"&Itilde;"],[0,"&itilde;"],[0,"&Imacr;"],[0,"&imacr;"],[2,"&Iogon;"],[0,"&iogon;"],[0,"&Idot;"],[0,"&imath;"],[0,"&IJlig;"],[0,"&ijlig;"],[0,"&Jcirc;"],[0,"&jcirc;"],[0,"&Kcedil;"],[0,"&kcedil;"],[0,"&kgreen;"],[0,"&Lacute;"],[0,"&lacute;"],[0,"&Lcedil;"],[0,"&lcedil;"],[0,"&Lcaron;"],[0,"&lcaron;"],[0,"&Lmidot;"],[0,"&lmidot;"],[0,"&Lstrok;"],[0,"&lstrok;"],[0,"&Nacute;"],[0,"&nacute;"],[0,"&Ncedil;"],[0,"&ncedil;"],[0,"&Ncaron;"],[0,"&ncaron;"],[0,"&napos;"],[0,"&ENG;"],[0,"&eng;"],[0,"&Omacr;"],[0,"&omacr;"],[2,"&Odblac;"],[0,"&odblac;"],[0,"&OElig;"],[0,"&oelig;"],[0,"&Racute;"],[0,"&racute;"],[0,"&Rcedil;"],[0,"&rcedil;"],[0,"&Rcaron;"],[0,"&rcaron;"],[0,"&Sacute;"],[0,"&sacute;"],[0,"&Scirc;"],[0,"&scirc;"],[0,"&Scedil;"],[0,"&scedil;"],[0,"&Scaron;"],[0,"&scaron;"],[0,"&Tcedil;"],[0,"&tcedil;"],[0,"&Tcaron;"],[0,"&tcaron;"],[0,"&Tstrok;"],[0,"&tstrok;"],[0,"&Utilde;"],[0,"&utilde;"],[0,"&Umacr;"],[0,"&umacr;"],[0,"&Ubreve;"],[0,"&ubreve;"],[0,"&Uring;"],[0,"&uring;"],[0,"&Udblac;"],[0,"&udblac;"],[0,"&Uogon;"],[0,"&uogon;"],[0,"&Wcirc;"],[0,"&wcirc;"],[0,"&Ycirc;"],[0,"&ycirc;"],[0,"&Yuml;"],[0,"&Zacute;"],[0,"&zacute;"],[0,"&Zdot;"],[0,"&zdot;"],[0,"&Zcaron;"],[0,"&zcaron;"],[19,"&fnof;"],[34,"&imped;"],[63,"&gacute;"],[65,"&jmath;"],[142,"&circ;"],[0,"&caron;"],[16,"&breve;"],[0,"&DiacriticalDot;"],[0,"&ring;"],[0,"&ogon;"],[0,"&DiacriticalTilde;"],[0,"&dblac;"],[51,"&DownBreve;"],[127,"&Alpha;"],[0,"&Beta;"],[0,"&Gamma;"],[0,"&Delta;"],[0,"&Epsilon;"],[0,"&Zeta;"],[0,"&Eta;"],[0,"&Theta;"],[0,"&Iota;"],[0,"&Kappa;"],[0,"&Lambda;"],[0,"&Mu;"],[0,"&Nu;"],[0,"&Xi;"],[0,"&Omicron;"],[0,"&Pi;"],[0,"&Rho;"],[1,"&Sigma;"],[0,"&Tau;"],[0,"&Upsilon;"],[0,"&Phi;"],[0,"&Chi;"],[0,"&Psi;"],[0,"&ohm;"],[7,"&alpha;"],[0,"&beta;"],[0,"&gamma;"],[0,"&delta;"],[0,"&epsi;"],[0,"&zeta;"],[0,"&eta;"],[0,"&theta;"],[0,"&iota;"],[0,"&kappa;"],[0,"&lambda;"],[0,"&mu;"],[0,"&nu;"],[0,"&xi;"],[0,"&omicron;"],[0,"&pi;"],[0,"&rho;"],[0,"&sigmaf;"],[0,"&sigma;"],[0,"&tau;"],[0,"&upsi;"],[0,"&phi;"],[0,"&chi;"],[0,"&psi;"],[0,"&omega;"],[7,"&thetasym;"],[0,"&Upsi;"],[2,"&phiv;"],[0,"&piv;"],[5,"&Gammad;"],[0,"&digamma;"],[18,"&kappav;"],[0,"&rhov;"],[3,"&epsiv;"],[0,"&backepsilon;"],[10,"&IOcy;"],[0,"&DJcy;"],[0,"&GJcy;"],[0,"&Jukcy;"],[0,"&DScy;"],[0,"&Iukcy;"],[0,"&YIcy;"],[0,"&Jsercy;"],[0,"&LJcy;"],[0,"&NJcy;"],[0,"&TSHcy;"],[0,"&KJcy;"],[1,"&Ubrcy;"],[0,"&DZcy;"],[0,"&Acy;"],[0,"&Bcy;"],[0,"&Vcy;"],[0,"&Gcy;"],[0,"&Dcy;"],[0,"&IEcy;"],[0,"&ZHcy;"],[0,"&Zcy;"],[0,"&Icy;"],[0,"&Jcy;"],[0,"&Kcy;"],[0,"&Lcy;"],[0,"&Mcy;"],[0,"&Ncy;"],[0,"&Ocy;"],[0,"&Pcy;"],[0,"&Rcy;"],[0,"&Scy;"],[0,"&Tcy;"],[0,"&Ucy;"],[0,"&Fcy;"],[0,"&KHcy;"],[0,"&TScy;"],[0,"&CHcy;"],[0,"&SHcy;"],[0,"&SHCHcy;"],[0,"&HARDcy;"],[0,"&Ycy;"],[0,"&SOFTcy;"],[0,"&Ecy;"],[0,"&YUcy;"],[0,"&YAcy;"],[0,"&acy;"],[0,"&bcy;"],[0,"&vcy;"],[0,"&gcy;"],[0,"&dcy;"],[0,"&iecy;"],[0,"&zhcy;"],[0,"&zcy;"],[0,"&icy;"],[0,"&jcy;"],[0,"&kcy;"],[0,"&lcy;"],[0,"&mcy;"],[0,"&ncy;"],[0,"&ocy;"],[0,"&pcy;"],[0,"&rcy;"],[0,"&scy;"],[0,"&tcy;"],[0,"&ucy;"],[0,"&fcy;"],[0,"&khcy;"],[0,"&tscy;"],[0,"&chcy;"],[0,"&shcy;"],[0,"&shchcy;"],[0,"&hardcy;"],[0,"&ycy;"],[0,"&softcy;"],[0,"&ecy;"],[0,"&yucy;"],[0,"&yacy;"],[1,"&iocy;"],[0,"&djcy;"],[0,"&gjcy;"],[0,"&jukcy;"],[0,"&dscy;"],[0,"&iukcy;"],[0,"&yicy;"],[0,"&jsercy;"],[0,"&ljcy;"],[0,"&njcy;"],[0,"&tshcy;"],[0,"&kjcy;"],[1,"&ubrcy;"],[0,"&dzcy;"],[7074,"&ensp;"],[0,"&emsp;"],[0,"&emsp13;"],[0,"&emsp14;"],[1,"&numsp;"],[0,"&puncsp;"],[0,"&ThinSpace;"],[0,"&hairsp;"],[0,"&NegativeMediumSpace;"],[0,"&zwnj;"],[0,"&zwj;"],[0,"&lrm;"],[0,"&rlm;"],[0,"&dash;"],[2,"&ndash;"],[0,"&mdash;"],[0,"&horbar;"],[0,"&Verbar;"],[1,"&lsquo;"],[0,"&CloseCurlyQuote;"],[0,"&lsquor;"],[1,"&ldquo;"],[0,"&CloseCurlyDoubleQuote;"],[0,"&bdquo;"],[1,"&dagger;"],[0,"&Dagger;"],[0,"&bull;"],[2,"&nldr;"],[0,"&hellip;"],[9,"&permil;"],[0,"&pertenk;"],[0,"&prime;"],[0,"&Prime;"],[0,"&tprime;"],[0,"&backprime;"],[3,"&lsaquo;"],[0,"&rsaquo;"],[3,"&oline;"],[2,"&caret;"],[1,"&hybull;"],[0,"&frasl;"],[10,"&bsemi;"],[7,"&qprime;"],[7,{v:"&MediumSpace;",n:8202,o:"&ThickSpace;"}],[0,"&NoBreak;"],[0,"&af;"],[0,"&InvisibleTimes;"],[0,"&ic;"],[72,"&euro;"],[46,"&tdot;"],[0,"&DotDot;"],[37,"&complexes;"],[2,"&incare;"],[4,"&gscr;"],[0,"&hamilt;"],[0,"&Hfr;"],[0,"&Hopf;"],[0,"&planckh;"],[0,"&hbar;"],[0,"&imagline;"],[0,"&Ifr;"],[0,"&lagran;"],[0,"&ell;"],[1,"&naturals;"],[0,"&numero;"],[0,"&copysr;"],[0,"&weierp;"],[0,"&Popf;"],[0,"&Qopf;"],[0,"&realine;"],[0,"&real;"],[0,"&reals;"],[0,"&rx;"],[3,"&trade;"],[1,"&integers;"],[2,"&mho;"],[0,"&zeetrf;"],[0,"&iiota;"],[2,"&bernou;"],[0,"&Cayleys;"],[1,"&escr;"],[0,"&Escr;"],[0,"&Fouriertrf;"],[1,"&Mellintrf;"],[0,"&order;"],[0,"&alefsym;"],[0,"&beth;"],[0,"&gimel;"],[0,"&daleth;"],[12,"&CapitalDifferentialD;"],[0,"&dd;"],[0,"&ee;"],[0,"&ii;"],[10,"&frac13;"],[0,"&frac23;"],[0,"&frac15;"],[0,"&frac25;"],[0,"&frac35;"],[0,"&frac45;"],[0,"&frac16;"],[0,"&frac56;"],[0,"&frac18;"],[0,"&frac38;"],[0,"&frac58;"],[0,"&frac78;"],[49,"&larr;"],[0,"&ShortUpArrow;"],[0,"&rarr;"],[0,"&darr;"],[0,"&harr;"],[0,"&updownarrow;"],[0,"&nwarr;"],[0,"&nearr;"],[0,"&LowerRightArrow;"],[0,"&LowerLeftArrow;"],[0,"&nlarr;"],[0,"&nrarr;"],[1,{v:"&rarrw;",n:824,o:"&nrarrw;"}],[0,"&Larr;"],[0,"&Uarr;"],[0,"&Rarr;"],[0,"&Darr;"],[0,"&larrtl;"],[0,"&rarrtl;"],[0,"&LeftTeeArrow;"],[0,"&mapstoup;"],[0,"&map;"],[0,"&DownTeeArrow;"],[1,"&hookleftarrow;"],[0,"&hookrightarrow;"],[0,"&larrlp;"],[0,"&looparrowright;"],[0,"&harrw;"],[0,"&nharr;"],[1,"&lsh;"],[0,"&rsh;"],[0,"&ldsh;"],[0,"&rdsh;"],[1,"&crarr;"],[0,"&cularr;"],[0,"&curarr;"],[2,"&circlearrowleft;"],[0,"&circlearrowright;"],[0,"&leftharpoonup;"],[0,"&DownLeftVector;"],[0,"&RightUpVector;"],[0,"&LeftUpVector;"],[0,"&rharu;"],[0,"&DownRightVector;"],[0,"&dharr;"],[0,"&dharl;"],[0,"&RightArrowLeftArrow;"],[0,"&udarr;"],[0,"&LeftArrowRightArrow;"],[0,"&leftleftarrows;"],[0,"&upuparrows;"],[0,"&rightrightarrows;"],[0,"&ddarr;"],[0,"&leftrightharpoons;"],[0,"&Equilibrium;"],[0,"&nlArr;"],[0,"&nhArr;"],[0,"&nrArr;"],[0,"&DoubleLeftArrow;"],[0,"&DoubleUpArrow;"],[0,"&DoubleRightArrow;"],[0,"&dArr;"],[0,"&DoubleLeftRightArrow;"],[0,"&DoubleUpDownArrow;"],[0,"&nwArr;"],[0,"&neArr;"],[0,"&seArr;"],[0,"&swArr;"],[0,"&lAarr;"],[0,"&rAarr;"],[1,"&zigrarr;"],[6,"&larrb;"],[0,"&rarrb;"],[15,"&DownArrowUpArrow;"],[7,"&loarr;"],[0,"&roarr;"],[0,"&hoarr;"],[0,"&forall;"],[0,"&comp;"],[0,{v:"&part;",n:824,o:"&npart;"}],[0,"&exist;"],[0,"&nexist;"],[0,"&empty;"],[1,"&Del;"],[0,"&Element;"],[0,"&NotElement;"],[1,"&ni;"],[0,"&notni;"],[2,"&prod;"],[0,"&coprod;"],[0,"&sum;"],[0,"&minus;"],[0,"&MinusPlus;"],[0,"&dotplus;"],[1,"&Backslash;"],[0,"&lowast;"],[0,"&compfn;"],[1,"&radic;"],[2,"&prop;"],[0,"&infin;"],[0,"&angrt;"],[0,{v:"&ang;",n:8402,o:"&nang;"}],[0,"&angmsd;"],[0,"&angsph;"],[0,"&mid;"],[0,"&nmid;"],[0,"&DoubleVerticalBar;"],[0,"&NotDoubleVerticalBar;"],[0,"&and;"],[0,"&or;"],[0,{v:"&cap;",n:65024,o:"&caps;"}],[0,{v:"&cup;",n:65024,o:"&cups;"}],[0,"&int;"],[0,"&Int;"],[0,"&iiint;"],[0,"&conint;"],[0,"&Conint;"],[0,"&Cconint;"],[0,"&cwint;"],[0,"&ClockwiseContourIntegral;"],[0,"&awconint;"],[0,"&there4;"],[0,"&becaus;"],[0,"&ratio;"],[0,"&Colon;"],[0,"&dotminus;"],[1,"&mDDot;"],[0,"&homtht;"],[0,{v:"&sim;",n:8402,o:"&nvsim;"}],[0,{v:"&backsim;",n:817,o:"&race;"}],[0,{v:"&ac;",n:819,o:"&acE;"}],[0,"&acd;"],[0,"&VerticalTilde;"],[0,"&NotTilde;"],[0,{v:"&eqsim;",n:824,o:"&nesim;"}],[0,"&sime;"],[0,"&NotTildeEqual;"],[0,"&cong;"],[0,"&simne;"],[0,"&ncong;"],[0,"&ap;"],[0,"&nap;"],[0,"&ape;"],[0,{v:"&apid;",n:824,o:"&napid;"}],[0,"&backcong;"],[0,{v:"&asympeq;",n:8402,o:"&nvap;"}],[0,{v:"&bump;",n:824,o:"&nbump;"}],[0,{v:"&bumpe;",n:824,o:"&nbumpe;"}],[0,{v:"&doteq;",n:824,o:"&nedot;"}],[0,"&doteqdot;"],[0,"&efDot;"],[0,"&erDot;"],[0,"&Assign;"],[0,"&ecolon;"],[0,"&ecir;"],[0,"&circeq;"],[1,"&wedgeq;"],[0,"&veeeq;"],[1,"&triangleq;"],[2,"&equest;"],[0,"&ne;"],[0,{v:"&Congruent;",n:8421,o:"&bnequiv;"}],[0,"&nequiv;"],[1,{v:"&le;",n:8402,o:"&nvle;"}],[0,{v:"&ge;",n:8402,o:"&nvge;"}],[0,{v:"&lE;",n:824,o:"&nlE;"}],[0,{v:"&gE;",n:824,o:"&ngE;"}],[0,{v:"&lnE;",n:65024,o:"&lvertneqq;"}],[0,{v:"&gnE;",n:65024,o:"&gvertneqq;"}],[0,{v:"&ll;",n:new Map(restoreDiff([[824,"&nLtv;"],[7577,"&nLt;"]]))}],[0,{v:"&gg;",n:new Map(restoreDiff([[824,"&nGtv;"],[7577,"&nGt;"]]))}],[0,"&between;"],[0,"&NotCupCap;"],[0,"&nless;"],[0,"&ngt;"],[0,"&nle;"],[0,"&nge;"],[0,"&lesssim;"],[0,"&GreaterTilde;"],[0,"&nlsim;"],[0,"&ngsim;"],[0,"&LessGreater;"],[0,"&gl;"],[0,"&NotLessGreater;"],[0,"&NotGreaterLess;"],[0,"&pr;"],[0,"&sc;"],[0,"&prcue;"],[0,"&sccue;"],[0,"&PrecedesTilde;"],[0,{v:"&scsim;",n:824,o:"&NotSucceedsTilde;"}],[0,"&NotPrecedes;"],[0,"&NotSucceeds;"],[0,{v:"&sub;",n:8402,o:"&NotSubset;"}],[0,{v:"&sup;",n:8402,o:"&NotSuperset;"}],[0,"&nsub;"],[0,"&nsup;"],[0,"&sube;"],[0,"&supe;"],[0,"&NotSubsetEqual;"],[0,"&NotSupersetEqual;"],[0,{v:"&subne;",n:65024,o:"&varsubsetneq;"}],[0,{v:"&supne;",n:65024,o:"&varsupsetneq;"}],[1,"&cupdot;"],[0,"&UnionPlus;"],[0,{v:"&sqsub;",n:824,o:"&NotSquareSubset;"}],[0,{v:"&sqsup;",n:824,o:"&NotSquareSuperset;"}],[0,"&sqsube;"],[0,"&sqsupe;"],[0,{v:"&sqcap;",n:65024,o:"&sqcaps;"}],[0,{v:"&sqcup;",n:65024,o:"&sqcups;"}],[0,"&CirclePlus;"],[0,"&CircleMinus;"],[0,"&CircleTimes;"],[0,"&osol;"],[0,"&CircleDot;"],[0,"&circledcirc;"],[0,"&circledast;"],[1,"&circleddash;"],[0,"&boxplus;"],[0,"&boxminus;"],[0,"&boxtimes;"],[0,"&dotsquare;"],[0,"&RightTee;"],[0,"&dashv;"],[0,"&DownTee;"],[0,"&bot;"],[1,"&models;"],[0,"&DoubleRightTee;"],[0,"&Vdash;"],[0,"&Vvdash;"],[0,"&VDash;"],[0,"&nvdash;"],[0,"&nvDash;"],[0,"&nVdash;"],[0,"&nVDash;"],[0,"&prurel;"],[1,"&LeftTriangle;"],[0,"&RightTriangle;"],[0,{v:"&LeftTriangleEqual;",n:8402,o:"&nvltrie;"}],[0,{v:"&RightTriangleEqual;",n:8402,o:"&nvrtrie;"}],[0,"&origof;"],[0,"&imof;"],[0,"&multimap;"],[0,"&hercon;"],[0,"&intcal;"],[0,"&veebar;"],[1,"&barvee;"],[0,"&angrtvb;"],[0,"&lrtri;"],[0,"&bigwedge;"],[0,"&bigvee;"],[0,"&bigcap;"],[0,"&bigcup;"],[0,"&diam;"],[0,"&sdot;"],[0,"&sstarf;"],[0,"&divideontimes;"],[0,"&bowtie;"],[0,"&ltimes;"],[0,"&rtimes;"],[0,"&leftthreetimes;"],[0,"&rightthreetimes;"],[0,"&backsimeq;"],[0,"&curlyvee;"],[0,"&curlywedge;"],[0,"&Sub;"],[0,"&Sup;"],[0,"&Cap;"],[0,"&Cup;"],[0,"&fork;"],[0,"&epar;"],[0,"&lessdot;"],[0,"&gtdot;"],[0,{v:"&Ll;",n:824,o:"&nLl;"}],[0,{v:"&Gg;",n:824,o:"&nGg;"}],[0,{v:"&leg;",n:65024,o:"&lesg;"}],[0,{v:"&gel;",n:65024,o:"&gesl;"}],[2,"&cuepr;"],[0,"&cuesc;"],[0,"&NotPrecedesSlantEqual;"],[0,"&NotSucceedsSlantEqual;"],[0,"&NotSquareSubsetEqual;"],[0,"&NotSquareSupersetEqual;"],[2,"&lnsim;"],[0,"&gnsim;"],[0,"&precnsim;"],[0,"&scnsim;"],[0,"&nltri;"],[0,"&NotRightTriangle;"],[0,"&nltrie;"],[0,"&NotRightTriangleEqual;"],[0,"&vellip;"],[0,"&ctdot;"],[0,"&utdot;"],[0,"&dtdot;"],[0,"&disin;"],[0,"&isinsv;"],[0,"&isins;"],[0,{v:"&isindot;",n:824,o:"&notindot;"}],[0,"&notinvc;"],[0,"&notinvb;"],[1,{v:"&isinE;",n:824,o:"&notinE;"}],[0,"&nisd;"],[0,"&xnis;"],[0,"&nis;"],[0,"&notnivc;"],[0,"&notnivb;"],[6,"&barwed;"],[0,"&Barwed;"],[1,"&lceil;"],[0,"&rceil;"],[0,"&LeftFloor;"],[0,"&rfloor;"],[0,"&drcrop;"],[0,"&dlcrop;"],[0,"&urcrop;"],[0,"&ulcrop;"],[0,"&bnot;"],[1,"&profline;"],[0,"&profsurf;"],[1,"&telrec;"],[0,"&target;"],[5,"&ulcorn;"],[0,"&urcorn;"],[0,"&dlcorn;"],[0,"&drcorn;"],[2,"&frown;"],[0,"&smile;"],[9,"&cylcty;"],[0,"&profalar;"],[7,"&topbot;"],[6,"&ovbar;"],[1,"&solbar;"],[60,"&angzarr;"],[51,"&lmoustache;"],[0,"&rmoustache;"],[2,"&OverBracket;"],[0,"&bbrk;"],[0,"&bbrktbrk;"],[37,"&OverParenthesis;"],[0,"&UnderParenthesis;"],[0,"&OverBrace;"],[0,"&UnderBrace;"],[2,"&trpezium;"],[4,"&elinters;"],[59,"&blank;"],[164,"&circledS;"],[55,"&boxh;"],[1,"&boxv;"],[9,"&boxdr;"],[3,"&boxdl;"],[3,"&boxur;"],[3,"&boxul;"],[3,"&boxvr;"],[7,"&boxvl;"],[7,"&boxhd;"],[7,"&boxhu;"],[7,"&boxvh;"],[19,"&boxH;"],[0,"&boxV;"],[0,"&boxdR;"],[0,"&boxDr;"],[0,"&boxDR;"],[0,"&boxdL;"],[0,"&boxDl;"],[0,"&boxDL;"],[0,"&boxuR;"],[0,"&boxUr;"],[0,"&boxUR;"],[0,"&boxuL;"],[0,"&boxUl;"],[0,"&boxUL;"],[0,"&boxvR;"],[0,"&boxVr;"],[0,"&boxVR;"],[0,"&boxvL;"],[0,"&boxVl;"],[0,"&boxVL;"],[0,"&boxHd;"],[0,"&boxhD;"],[0,"&boxHD;"],[0,"&boxHu;"],[0,"&boxhU;"],[0,"&boxHU;"],[0,"&boxvH;"],[0,"&boxVh;"],[0,"&boxVH;"],[19,"&uhblk;"],[3,"&lhblk;"],[3,"&block;"],[8,"&blk14;"],[0,"&blk12;"],[0,"&blk34;"],[13,"&square;"],[8,"&blacksquare;"],[0,"&EmptyVerySmallSquare;"],[1,"&rect;"],[0,"&marker;"],[2,"&fltns;"],[1,"&bigtriangleup;"],[0,"&blacktriangle;"],[0,"&triangle;"],[2,"&blacktriangleright;"],[0,"&rtri;"],[3,"&bigtriangledown;"],[0,"&blacktriangledown;"],[0,"&dtri;"],[2,"&blacktriangleleft;"],[0,"&ltri;"],[6,"&loz;"],[0,"&cir;"],[32,"&tridot;"],[2,"&bigcirc;"],[8,"&ultri;"],[0,"&urtri;"],[0,"&lltri;"],[0,"&EmptySmallSquare;"],[0,"&FilledSmallSquare;"],[8,"&bigstar;"],[0,"&star;"],[7,"&phone;"],[49,"&female;"],[1,"&male;"],[29,"&spades;"],[2,"&clubs;"],[1,"&hearts;"],[0,"&diamondsuit;"],[3,"&sung;"],[2,"&flat;"],[0,"&natural;"],[0,"&sharp;"],[163,"&check;"],[3,"&cross;"],[8,"&malt;"],[21,"&sext;"],[33,"&VerticalSeparator;"],[25,"&lbbrk;"],[0,"&rbbrk;"],[84,"&bsolhsub;"],[0,"&suphsol;"],[28,"&LeftDoubleBracket;"],[0,"&RightDoubleBracket;"],[0,"&lang;"],[0,"&rang;"],[0,"&Lang;"],[0,"&Rang;"],[0,"&loang;"],[0,"&roang;"],[7,"&longleftarrow;"],[0,"&longrightarrow;"],[0,"&longleftrightarrow;"],[0,"&DoubleLongLeftArrow;"],[0,"&DoubleLongRightArrow;"],[0,"&DoubleLongLeftRightArrow;"],[1,"&longmapsto;"],[2,"&dzigrarr;"],[258,"&nvlArr;"],[0,"&nvrArr;"],[0,"&nvHarr;"],[0,"&Map;"],[6,"&lbarr;"],[0,"&bkarow;"],[0,"&lBarr;"],[0,"&dbkarow;"],[0,"&drbkarow;"],[0,"&DDotrahd;"],[0,"&UpArrowBar;"],[0,"&DownArrowBar;"],[2,"&Rarrtl;"],[2,"&latail;"],[0,"&ratail;"],[0,"&lAtail;"],[0,"&rAtail;"],[0,"&larrfs;"],[0,"&rarrfs;"],[0,"&larrbfs;"],[0,"&rarrbfs;"],[2,"&nwarhk;"],[0,"&nearhk;"],[0,"&hksearow;"],[0,"&hkswarow;"],[0,"&nwnear;"],[0,"&nesear;"],[0,"&seswar;"],[0,"&swnwar;"],[8,{v:"&rarrc;",n:824,o:"&nrarrc;"}],[1,"&cudarrr;"],[0,"&ldca;"],[0,"&rdca;"],[0,"&cudarrl;"],[0,"&larrpl;"],[2,"&curarrm;"],[0,"&cularrp;"],[7,"&rarrpl;"],[2,"&harrcir;"],[0,"&Uarrocir;"],[0,"&lurdshar;"],[0,"&ldrushar;"],[2,"&LeftRightVector;"],[0,"&RightUpDownVector;"],[0,"&DownLeftRightVector;"],[0,"&LeftUpDownVector;"],[0,"&LeftVectorBar;"],[0,"&RightVectorBar;"],[0,"&RightUpVectorBar;"],[0,"&RightDownVectorBar;"],[0,"&DownLeftVectorBar;"],[0,"&DownRightVectorBar;"],[0,"&LeftUpVectorBar;"],[0,"&LeftDownVectorBar;"],[0,"&LeftTeeVector;"],[0,"&RightTeeVector;"],[0,"&RightUpTeeVector;"],[0,"&RightDownTeeVector;"],[0,"&DownLeftTeeVector;"],[0,"&DownRightTeeVector;"],[0,"&LeftUpTeeVector;"],[0,"&LeftDownTeeVector;"],[0,"&lHar;"],[0,"&uHar;"],[0,"&rHar;"],[0,"&dHar;"],[0,"&luruhar;"],[0,"&ldrdhar;"],[0,"&ruluhar;"],[0,"&rdldhar;"],[0,"&lharul;"],[0,"&llhard;"],[0,"&rharul;"],[0,"&lrhard;"],[0,"&udhar;"],[0,"&duhar;"],[0,"&RoundImplies;"],[0,"&erarr;"],[0,"&simrarr;"],[0,"&larrsim;"],[0,"&rarrsim;"],[0,"&rarrap;"],[0,"&ltlarr;"],[1,"&gtrarr;"],[0,"&subrarr;"],[1,"&suplarr;"],[0,"&lfisht;"],[0,"&rfisht;"],[0,"&ufisht;"],[0,"&dfisht;"],[5,"&lopar;"],[0,"&ropar;"],[4,"&lbrke;"],[0,"&rbrke;"],[0,"&lbrkslu;"],[0,"&rbrksld;"],[0,"&lbrksld;"],[0,"&rbrkslu;"],[0,"&langd;"],[0,"&rangd;"],[0,"&lparlt;"],[0,"&rpargt;"],[0,"&gtlPar;"],[0,"&ltrPar;"],[3,"&vzigzag;"],[1,"&vangrt;"],[0,"&angrtvbd;"],[6,"&ange;"],[0,"&range;"],[0,"&dwangle;"],[0,"&uwangle;"],[0,"&angmsdaa;"],[0,"&angmsdab;"],[0,"&angmsdac;"],[0,"&angmsdad;"],[0,"&angmsdae;"],[0,"&angmsdaf;"],[0,"&angmsdag;"],[0,"&angmsdah;"],[0,"&bemptyv;"],[0,"&demptyv;"],[0,"&cemptyv;"],[0,"&raemptyv;"],[0,"&laemptyv;"],[0,"&ohbar;"],[0,"&omid;"],[0,"&opar;"],[1,"&operp;"],[1,"&olcross;"],[0,"&odsold;"],[1,"&olcir;"],[0,"&ofcir;"],[0,"&olt;"],[0,"&ogt;"],[0,"&cirscir;"],[0,"&cirE;"],[0,"&solb;"],[0,"&bsolb;"],[3,"&boxbox;"],[3,"&trisb;"],[0,"&rtriltri;"],[0,{v:"&LeftTriangleBar;",n:824,o:"&NotLeftTriangleBar;"}],[0,{v:"&RightTriangleBar;",n:824,o:"&NotRightTriangleBar;"}],[11,"&iinfin;"],[0,"&infintie;"],[0,"&nvinfin;"],[4,"&eparsl;"],[0,"&smeparsl;"],[0,"&eqvparsl;"],[5,"&blacklozenge;"],[8,"&RuleDelayed;"],[1,"&dsol;"],[9,"&bigodot;"],[0,"&bigoplus;"],[0,"&bigotimes;"],[1,"&biguplus;"],[1,"&bigsqcup;"],[5,"&iiiint;"],[0,"&fpartint;"],[2,"&cirfnint;"],[0,"&awint;"],[0,"&rppolint;"],[0,"&scpolint;"],[0,"&npolint;"],[0,"&pointint;"],[0,"&quatint;"],[0,"&intlarhk;"],[10,"&pluscir;"],[0,"&plusacir;"],[0,"&simplus;"],[0,"&plusdu;"],[0,"&plussim;"],[0,"&plustwo;"],[1,"&mcomma;"],[0,"&minusdu;"],[2,"&loplus;"],[0,"&roplus;"],[0,"&Cross;"],[0,"&timesd;"],[0,"&timesbar;"],[1,"&smashp;"],[0,"&lotimes;"],[0,"&rotimes;"],[0,"&otimesas;"],[0,"&Otimes;"],[0,"&odiv;"],[0,"&triplus;"],[0,"&triminus;"],[0,"&tritime;"],[0,"&intprod;"],[2,"&amalg;"],[0,"&capdot;"],[1,"&ncup;"],[0,"&ncap;"],[0,"&capand;"],[0,"&cupor;"],[0,"&cupcap;"],[0,"&capcup;"],[0,"&cupbrcap;"],[0,"&capbrcup;"],[0,"&cupcup;"],[0,"&capcap;"],[0,"&ccups;"],[0,"&ccaps;"],[2,"&ccupssm;"],[2,"&And;"],[0,"&Or;"],[0,"&andand;"],[0,"&oror;"],[0,"&orslope;"],[0,"&andslope;"],[1,"&andv;"],[0,"&orv;"],[0,"&andd;"],[0,"&ord;"],[1,"&wedbar;"],[6,"&sdote;"],[3,"&simdot;"],[2,{v:"&congdot;",n:824,o:"&ncongdot;"}],[0,"&easter;"],[0,"&apacir;"],[0,{v:"&apE;",n:824,o:"&napE;"}],[0,"&eplus;"],[0,"&pluse;"],[0,"&Esim;"],[0,"&Colone;"],[0,"&Equal;"],[1,"&ddotseq;"],[0,"&equivDD;"],[0,"&ltcir;"],[0,"&gtcir;"],[0,"&ltquest;"],[0,"&gtquest;"],[0,{v:"&leqslant;",n:824,o:"&nleqslant;"}],[0,{v:"&geqslant;",n:824,o:"&ngeqslant;"}],[0,"&lesdot;"],[0,"&gesdot;"],[0,"&lesdoto;"],[0,"&gesdoto;"],[0,"&lesdotor;"],[0,"&gesdotol;"],[0,"&lap;"],[0,"&gap;"],[0,"&lne;"],[0,"&gne;"],[0,"&lnap;"],[0,"&gnap;"],[0,"&lEg;"],[0,"&gEl;"],[0,"&lsime;"],[0,"&gsime;"],[0,"&lsimg;"],[0,"&gsiml;"],[0,"&lgE;"],[0,"&glE;"],[0,"&lesges;"],[0,"&gesles;"],[0,"&els;"],[0,"&egs;"],[0,"&elsdot;"],[0,"&egsdot;"],[0,"&el;"],[0,"&eg;"],[2,"&siml;"],[0,"&simg;"],[0,"&simlE;"],[0,"&simgE;"],[0,{v:"&LessLess;",n:824,o:"&NotNestedLessLess;"}],[0,{v:"&GreaterGreater;",n:824,o:"&NotNestedGreaterGreater;"}],[1,"&glj;"],[0,"&gla;"],[0,"&ltcc;"],[0,"&gtcc;"],[0,"&lescc;"],[0,"&gescc;"],[0,"&smt;"],[0,"&lat;"],[0,{v:"&smte;",n:65024,o:"&smtes;"}],[0,{v:"&late;",n:65024,o:"&lates;"}],[0,"&bumpE;"],[0,{v:"&PrecedesEqual;",n:824,o:"&NotPrecedesEqual;"}],[0,{v:"&sce;",n:824,o:"&NotSucceedsEqual;"}],[2,"&prE;"],[0,"&scE;"],[0,"&precneqq;"],[0,"&scnE;"],[0,"&prap;"],[0,"&scap;"],[0,"&precnapprox;"],[0,"&scnap;"],[0,"&Pr;"],[0,"&Sc;"],[0,"&subdot;"],[0,"&supdot;"],[0,"&subplus;"],[0,"&supplus;"],[0,"&submult;"],[0,"&supmult;"],[0,"&subedot;"],[0,"&supedot;"],[0,{v:"&subE;",n:824,o:"&nsubE;"}],[0,{v:"&supE;",n:824,o:"&nsupE;"}],[0,"&subsim;"],[0,"&supsim;"],[2,{v:"&subnE;",n:65024,o:"&varsubsetneqq;"}],[0,{v:"&supnE;",n:65024,o:"&varsupsetneqq;"}],[2,"&csub;"],[0,"&csup;"],[0,"&csube;"],[0,"&csupe;"],[0,"&subsup;"],[0,"&supsub;"],[0,"&subsub;"],[0,"&supsup;"],[0,"&suphsub;"],[0,"&supdsub;"],[0,"&forkv;"],[0,"&topfork;"],[0,"&mlcp;"],[8,"&Dashv;"],[1,"&Vdashl;"],[0,"&Barv;"],[0,"&vBar;"],[0,"&vBarv;"],[1,"&Vbar;"],[0,"&Not;"],[0,"&bNot;"],[0,"&rnmid;"],[0,"&cirmid;"],[0,"&midcir;"],[0,"&topcir;"],[0,"&nhpar;"],[0,"&parsim;"],[9,{v:"&parsl;",n:8421,o:"&nparsl;"}],[44343,{n:new Map(restoreDiff([[56476,"&Ascr;"],[1,"&Cscr;"],[0,"&Dscr;"],[2,"&Gscr;"],[2,"&Jscr;"],[0,"&Kscr;"],[2,"&Nscr;"],[0,"&Oscr;"],[0,"&Pscr;"],[0,"&Qscr;"],[1,"&Sscr;"],[0,"&Tscr;"],[0,"&Uscr;"],[0,"&Vscr;"],[0,"&Wscr;"],[0,"&Xscr;"],[0,"&Yscr;"],[0,"&Zscr;"],[0,"&ascr;"],[0,"&bscr;"],[0,"&cscr;"],[0,"&dscr;"],[1,"&fscr;"],[1,"&hscr;"],[0,"&iscr;"],[0,"&jscr;"],[0,"&kscr;"],[0,"&lscr;"],[0,"&mscr;"],[0,"&nscr;"],[1,"&pscr;"],[0,"&qscr;"],[0,"&rscr;"],[0,"&sscr;"],[0,"&tscr;"],[0,"&uscr;"],[0,"&vscr;"],[0,"&wscr;"],[0,"&xscr;"],[0,"&yscr;"],[0,"&zscr;"],[52,"&Afr;"],[0,"&Bfr;"],[1,"&Dfr;"],[0,"&Efr;"],[0,"&Ffr;"],[0,"&Gfr;"],[2,"&Jfr;"],[0,"&Kfr;"],[0,"&Lfr;"],[0,"&Mfr;"],[0,"&Nfr;"],[0,"&Ofr;"],[0,"&Pfr;"],[0,"&Qfr;"],[1,"&Sfr;"],[0,"&Tfr;"],[0,"&Ufr;"],[0,"&Vfr;"],[0,"&Wfr;"],[0,"&Xfr;"],[0,"&Yfr;"],[1,"&afr;"],[0,"&bfr;"],[0,"&cfr;"],[0,"&dfr;"],[0,"&efr;"],[0,"&ffr;"],[0,"&gfr;"],[0,"&hfr;"],[0,"&ifr;"],[0,"&jfr;"],[0,"&kfr;"],[0,"&lfr;"],[0,"&mfr;"],[0,"&nfr;"],[0,"&ofr;"],[0,"&pfr;"],[0,"&qfr;"],[0,"&rfr;"],[0,"&sfr;"],[0,"&tfr;"],[0,"&ufr;"],[0,"&vfr;"],[0,"&wfr;"],[0,"&xfr;"],[0,"&yfr;"],[0,"&zfr;"],[0,"&Aopf;"],[0,"&Bopf;"],[1,"&Dopf;"],[0,"&Eopf;"],[0,"&Fopf;"],[0,"&Gopf;"],[1,"&Iopf;"],[0,"&Jopf;"],[0,"&Kopf;"],[0,"&Lopf;"],[0,"&Mopf;"],[1,"&Oopf;"],[3,"&Sopf;"],[0,"&Topf;"],[0,"&Uopf;"],[0,"&Vopf;"],[0,"&Wopf;"],[0,"&Xopf;"],[0,"&Yopf;"],[1,"&aopf;"],[0,"&bopf;"],[0,"&copf;"],[0,"&dopf;"],[0,"&eopf;"],[0,"&fopf;"],[0,"&gopf;"],[0,"&hopf;"],[0,"&iopf;"],[0,"&jopf;"],[0,"&kopf;"],[0,"&lopf;"],[0,"&mopf;"],[0,"&nopf;"],[0,"&oopf;"],[0,"&popf;"],[0,"&qopf;"],[0,"&ropf;"],[0,"&sopf;"],[0,"&topf;"],[0,"&uopf;"],[0,"&vopf;"],[0,"&wopf;"],[0,"&xopf;"],[0,"&yopf;"],[0,"&zopf;"]]))}],[8906,"&fflig;"],[0,"&filig;"],[0,"&fllig;"],[0,"&ffilig;"],[0,"&ffllig;"]]))}});function encodeXML(str){let ret="",lastIdx=0,match;for(;(match=xmlReplacer.exec(str))!==null;){let i=match.index,char=str.charCodeAt(i),next2=xmlCodeMap.get(char);next2!==void 0?(ret+=str.substring(lastIdx,i)+next2,lastIdx=i+1):(ret+=`${str.substring(lastIdx,i)}&#x${getCodePoint(str,i).toString(16)};`,lastIdx=xmlReplacer.lastIndex+=+((char&64512)===55296))}return ret+str.substr(lastIdx)}function getEscaper(regex,map2){return __name(function(data2){let match,lastIdx=0,result="";for(;match=regex.exec(data2);)lastIdx!==match.index&&(result+=data2.substring(lastIdx,match.index)),result+=map2.get(match[0].charCodeAt(0)),lastIdx=match.index+1;return result+data2.substring(lastIdx)},"escape")}var xmlReplacer,xmlCodeMap,getCodePoint,escapeUTF8,escapeAttribute,escapeText,init_escape=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js"(){xmlReplacer=/["&'<>$\x80-\uFFFF]/g,xmlCodeMap=new Map([[34,"&quot;"],[38,"&amp;"],[39,"&apos;"],[60,"&lt;"],[62,"&gt;"]]),getCodePoint=String.prototype.codePointAt!=null?(str,index2)=>str.codePointAt(index2):(c2,index2)=>(c2.charCodeAt(index2)&64512)===55296?(c2.charCodeAt(index2)-55296)*1024+c2.charCodeAt(index2+1)-56320+65536:c2.charCodeAt(index2);__name(encodeXML,"encodeXML");__name(getEscaper,"getEscaper");escapeUTF8=getEscaper(/[&<>'"]/g,xmlCodeMap),escapeAttribute=getEscaper(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),escapeText=getEscaper(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]))}});var init_encode=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/encode.js"(){init_encode_html();init_escape()}});var EntityLevel,EncodingMode,init_esm4=__esm({"../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js"(){init_decode();init_encode();init_escape();init_escape();init_encode();init_decode();(function(EntityLevel2){EntityLevel2[EntityLevel2.XML=0]="XML",EntityLevel2[EntityLevel2.HTML=1]="HTML"})(EntityLevel||(EntityLevel={}));(function(EncodingMode2){EncodingMode2[EncodingMode2.UTF8=0]="UTF8",EncodingMode2[EncodingMode2.ASCII=1]="ASCII",EncodingMode2[EncodingMode2.Extensive=2]="Extensive",EncodingMode2[EncodingMode2.Attribute=3]="Attribute",EncodingMode2[EncodingMode2.Text=4]="Text"})(EncodingMode||(EncodingMode={}))}});var elementNames,attributeNames,init_foreignNames=__esm({"../../node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js"(){elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(val2=>[val2.toLowerCase(),val2])),attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(val2=>[val2.toLowerCase(),val2]))}});function replaceQuotes(value){return value.replace(/"/g,"&quot;")}function formatAttributes(attributes2,opts){var _a4;if(!attributes2)return;let encode=((_a4=opts.encodeEntities)!==null&&_a4!==void 0?_a4:opts.decodeEntities)===!1?replaceQuotes:opts.xmlMode||opts.encodeEntities!=="utf8"?encodeXML:escapeAttribute;return Object.keys(attributes2).map(key=>{var _a5,_b;let value=(_a5=attributes2[key])!==null&&_a5!==void 0?_a5:"";return opts.xmlMode==="foreign"&&(key=(_b=attributeNames.get(key))!==null&&_b!==void 0?_b:key),!opts.emptyAttrs&&!opts.xmlMode&&value===""?key:`${key}="${encode(value)}"`}).join(" ")}function render2(node,options={}){let nodes="length"in node?node:[node],output="";for(let i=0;i<nodes.length;i++)output+=renderNode(nodes[i],options);return output}function renderNode(node,options){switch(node.type){case Root:return render2(node.children,options);case Doctype:case Directive:return renderDirective(node);case Comment:return renderComment(node);case CDATA:return renderCdata(node);case Script:case Style:case Tag:return renderTag(node,options);case Text:return renderText(node,options)}}function renderTag(elem,opts){var _a4;opts.xmlMode==="foreign"&&(elem.name=(_a4=elementNames.get(elem.name))!==null&&_a4!==void 0?_a4:elem.name,elem.parent&&foreignModeIntegrationPoints.has(elem.parent.name)&&(opts={...opts,xmlMode:!1})),!opts.xmlMode&&foreignElements.has(elem.name)&&(opts={...opts,xmlMode:"foreign"});let tag=`<${elem.name}`,attribs=formatAttributes(elem.attribs,opts);return attribs&&(tag+=` ${attribs}`),elem.children.length===0&&(opts.xmlMode?opts.selfClosingTags!==!1:opts.selfClosingTags&&singleTag.has(elem.name))?(opts.xmlMode||(tag+=" "),tag+="/>"):(tag+=">",elem.children.length>0&&(tag+=render2(elem.children,opts)),(opts.xmlMode||!singleTag.has(elem.name))&&(tag+=`</${elem.name}>`)),tag}function renderDirective(elem){return`<${elem.data}>`}function renderText(elem,opts){var _a4;let data2=elem.data||"";return((_a4=opts.encodeEntities)!==null&&_a4!==void 0?_a4:opts.decodeEntities)!==!1&&!(!opts.xmlMode&&elem.parent&&unencodedElements.has(elem.parent.name))&&(data2=opts.xmlMode||opts.encodeEntities!=="utf8"?encodeXML(data2):escapeText(data2)),data2}function renderCdata(elem){return`<![CDATA[${elem.children[0].data}]]>`}function renderComment(elem){return`<!--${elem.data}-->`}var unencodedElements,singleTag,esm_default,foreignModeIntegrationPoints,foreignElements,init_esm5=__esm({"../../node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js"(){init_esm2();init_esm4();init_foreignNames();unencodedElements=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);__name(replaceQuotes,"replaceQuotes");__name(formatAttributes,"formatAttributes");singleTag=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);__name(render2,"render");esm_default=render2;__name(renderNode,"renderNode");foreignModeIntegrationPoints=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),foreignElements=new Set(["svg","math"]);__name(renderTag,"renderTag");__name(renderDirective,"renderDirective");__name(renderText,"renderText");__name(renderCdata,"renderCdata");__name(renderComment,"renderComment")}});function getOuterHTML(node,options){return esm_default(node,options)}function getInnerHTML(node,options){return hasChildren(node)?node.children.map(node2=>getOuterHTML(node2,options)).join(""):""}function getText(node){return Array.isArray(node)?node.map(getText).join(""):isTag2(node)?node.name==="br"?`
607
607
  `:getText(node.children):isCDATA(node)?getText(node.children):isText(node)?node.data:""}function textContent(node){return Array.isArray(node)?node.map(textContent).join(""):hasChildren(node)&&!isComment(node)?textContent(node.children):isText(node)?node.data:""}function innerText(node){return Array.isArray(node)?node.map(innerText).join(""):hasChildren(node)&&(node.type===ElementType.Tag||isCDATA(node))?innerText(node.children):isText(node)?node.data:""}var init_stringify=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/stringify.js"(){init_esm3();init_esm5();init_esm2();__name(getOuterHTML,"getOuterHTML");__name(getInnerHTML,"getInnerHTML");__name(getText,"getText");__name(textContent,"textContent");__name(innerText,"innerText")}});function getChildren(elem){return hasChildren(elem)?elem.children:[]}function getParent(elem){return elem.parent||null}function getSiblings(elem){let parent2=getParent(elem);if(parent2!=null)return getChildren(parent2);let siblings2=[elem],{prev:prev2,next:next2}=elem;for(;prev2!=null;)siblings2.unshift(prev2),{prev:prev2}=prev2;for(;next2!=null;)siblings2.push(next2),{next:next2}=next2;return siblings2}function getAttributeValue(elem,name){var _a4;return(_a4=elem.attribs)===null||_a4===void 0?void 0:_a4[name]}function hasAttrib(elem,name){return elem.attribs!=null&&Object.prototype.hasOwnProperty.call(elem.attribs,name)&&elem.attribs[name]!=null}function getName(elem){return elem.name}function nextElementSibling(elem){let{next:next2}=elem;for(;next2!==null&&!isTag2(next2);)({next:next2}=next2);return next2}function prevElementSibling(elem){let{prev:prev2}=elem;for(;prev2!==null&&!isTag2(prev2);)({prev:prev2}=prev2);return prev2}var init_traversal=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/traversal.js"(){init_esm3();__name(getChildren,"getChildren");__name(getParent,"getParent");__name(getSiblings,"getSiblings");__name(getAttributeValue,"getAttributeValue");__name(hasAttrib,"hasAttrib");__name(getName,"getName");__name(nextElementSibling,"nextElementSibling");__name(prevElementSibling,"prevElementSibling")}});function removeElement(elem){if(elem.prev&&(elem.prev.next=elem.next),elem.next&&(elem.next.prev=elem.prev),elem.parent){let childs=elem.parent.children,childsIndex=childs.lastIndexOf(elem);childsIndex>=0&&childs.splice(childsIndex,1)}elem.next=null,elem.prev=null,elem.parent=null}function replaceElement(elem,replacement){let prev2=replacement.prev=elem.prev;prev2&&(prev2.next=replacement);let next2=replacement.next=elem.next;next2&&(next2.prev=replacement);let parent2=replacement.parent=elem.parent;if(parent2){let childs=parent2.children;childs[childs.lastIndexOf(elem)]=replacement,elem.parent=null}}function appendChild(parent2,child){if(removeElement(child),child.next=null,child.parent=parent2,parent2.children.push(child)>1){let sibling=parent2.children[parent2.children.length-2];sibling.next=child,child.prev=sibling}else child.prev=null}function append(elem,next2){removeElement(next2);let{parent:parent2}=elem,currNext=elem.next;if(next2.next=currNext,next2.prev=elem,elem.next=next2,next2.parent=parent2,currNext){if(currNext.prev=next2,parent2){let childs=parent2.children;childs.splice(childs.lastIndexOf(currNext),0,next2)}}else parent2&&parent2.children.push(next2)}function prependChild(parent2,child){if(removeElement(child),child.parent=parent2,child.prev=null,parent2.children.unshift(child)!==1){let sibling=parent2.children[1];sibling.prev=child,child.next=sibling}else child.next=null}function prepend(elem,prev2){removeElement(prev2);let{parent:parent2}=elem;if(parent2){let childs=parent2.children;childs.splice(childs.indexOf(elem),0,prev2)}elem.prev&&(elem.prev.next=prev2),prev2.parent=parent2,prev2.prev=elem.prev,prev2.next=elem,elem.prev=prev2}var init_manipulation=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/manipulation.js"(){__name(removeElement,"removeElement");__name(replaceElement,"replaceElement");__name(appendChild,"appendChild");__name(append,"append");__name(prependChild,"prependChild");__name(prepend,"prepend")}});function filter(test,node,recurse=!0,limit=1/0){return find(test,Array.isArray(node)?node:[node],recurse,limit)}function find(test,nodes,recurse,limit){let result=[],nodeStack=[Array.isArray(nodes)?nodes:[nodes]],indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(indexStack.length===1)return result;nodeStack.shift(),indexStack.shift();continue}let elem=nodeStack[0][indexStack[0]++];if(test(elem)&&(result.push(elem),--limit<=0))return result;recurse&&hasChildren(elem)&&elem.children.length>0&&(indexStack.unshift(0),nodeStack.unshift(elem.children))}}function findOneChild(test,nodes){return nodes.find(test)}function findOne(test,nodes,recurse=!0){let searchedNodes=Array.isArray(nodes)?nodes:[nodes];for(let i=0;i<searchedNodes.length;i++){let node=searchedNodes[i];if(isTag2(node)&&test(node))return node;if(recurse&&hasChildren(node)&&node.children.length>0){let found=findOne(test,node.children,!0);if(found)return found}}return null}function existsOne(test,nodes){return(Array.isArray(nodes)?nodes:[nodes]).some(node=>isTag2(node)&&test(node)||hasChildren(node)&&existsOne(test,node.children))}function findAll(test,nodes){let result=[],nodeStack=[Array.isArray(nodes)?nodes:[nodes]],indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(nodeStack.length===1)return result;nodeStack.shift(),indexStack.shift();continue}let elem=nodeStack[0][indexStack[0]++];isTag2(elem)&&test(elem)&&result.push(elem),hasChildren(elem)&&elem.children.length>0&&(indexStack.unshift(0),nodeStack.unshift(elem.children))}}var init_querying=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/querying.js"(){init_esm3();__name(filter,"filter");__name(find,"find");__name(findOneChild,"findOneChild");__name(findOne,"findOne");__name(existsOne,"existsOne");__name(findAll,"findAll")}});function getAttribCheck(attrib,value){return typeof value=="function"?elem=>isTag2(elem)&&value(elem.attribs[attrib]):elem=>isTag2(elem)&&elem.attribs[attrib]===value}function combineFuncs(a,b){return elem=>a(elem)||b(elem)}function compileTest(options){let funcs=Object.keys(options).map(key=>{let value=options[key];return Object.prototype.hasOwnProperty.call(Checks,key)?Checks[key](value):getAttribCheck(key,value)});return funcs.length===0?null:funcs.reduce(combineFuncs)}function testElement(options,node){let test=compileTest(options);return test?test(node):!0}function getElements(options,nodes,recurse,limit=1/0){let test=compileTest(options);return test?filter(test,nodes,recurse,limit):[]}function getElementById(id,nodes,recurse=!0){return Array.isArray(nodes)||(nodes=[nodes]),findOne(getAttribCheck("id",id),nodes,recurse)}function getElementsByTagName(tagName,nodes,recurse=!0,limit=1/0){return filter(Checks.tag_name(tagName),nodes,recurse,limit)}function getElementsByClassName(className,nodes,recurse=!0,limit=1/0){return filter(getAttribCheck("class",className),nodes,recurse,limit)}function getElementsByTagType(type,nodes,recurse=!0,limit=1/0){return filter(Checks.tag_type(type),nodes,recurse,limit)}var Checks,init_legacy=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/legacy.js"(){init_esm3();init_querying();Checks={tag_name(name){return typeof name=="function"?elem=>isTag2(elem)&&name(elem.name):name==="*"?isTag2:elem=>isTag2(elem)&&elem.name===name},tag_type(type){return typeof type=="function"?elem=>type(elem.type):elem=>elem.type===type},tag_contains(data2){return typeof data2=="function"?elem=>isText(elem)&&data2(elem.data):elem=>isText(elem)&&elem.data===data2}};__name(getAttribCheck,"getAttribCheck");__name(combineFuncs,"combineFuncs");__name(compileTest,"compileTest");__name(testElement,"testElement");__name(getElements,"getElements");__name(getElementById,"getElementById");__name(getElementsByTagName,"getElementsByTagName");__name(getElementsByClassName,"getElementsByClassName");__name(getElementsByTagType,"getElementsByTagType")}});function removeSubsets(nodes){let idx=nodes.length;for(;--idx>=0;){let node=nodes[idx];if(idx>0&&nodes.lastIndexOf(node,idx-1)>=0){nodes.splice(idx,1);continue}for(let ancestor=node.parent;ancestor;ancestor=ancestor.parent)if(nodes.includes(ancestor)){nodes.splice(idx,1);break}}return nodes}function compareDocumentPosition(nodeA,nodeB){let aParents=[],bParents=[];if(nodeA===nodeB)return 0;let current=hasChildren(nodeA)?nodeA:nodeA.parent;for(;current;)aParents.unshift(current),current=current.parent;for(current=hasChildren(nodeB)?nodeB:nodeB.parent;current;)bParents.unshift(current),current=current.parent;let maxIdx=Math.min(aParents.length,bParents.length),idx=0;for(;idx<maxIdx&&aParents[idx]===bParents[idx];)idx++;if(idx===0)return DocumentPosition.DISCONNECTED;let sharedParent=aParents[idx-1],siblings2=sharedParent.children,aSibling=aParents[idx],bSibling=bParents[idx];return siblings2.indexOf(aSibling)>siblings2.indexOf(bSibling)?sharedParent===nodeB?DocumentPosition.FOLLOWING|DocumentPosition.CONTAINED_BY:DocumentPosition.FOLLOWING:sharedParent===nodeA?DocumentPosition.PRECEDING|DocumentPosition.CONTAINS:DocumentPosition.PRECEDING}function uniqueSort(nodes){return nodes=nodes.filter((node,i,arr)=>!arr.includes(node,i+1)),nodes.sort((a,b)=>{let relative3=compareDocumentPosition(a,b);return relative3&DocumentPosition.PRECEDING?-1:relative3&DocumentPosition.FOLLOWING?1:0}),nodes}var DocumentPosition,init_helpers=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.js"(){init_esm3();__name(removeSubsets,"removeSubsets");(function(DocumentPosition2){DocumentPosition2[DocumentPosition2.DISCONNECTED=1]="DISCONNECTED",DocumentPosition2[DocumentPosition2.PRECEDING=2]="PRECEDING",DocumentPosition2[DocumentPosition2.FOLLOWING=4]="FOLLOWING",DocumentPosition2[DocumentPosition2.CONTAINS=8]="CONTAINS",DocumentPosition2[DocumentPosition2.CONTAINED_BY=16]="CONTAINED_BY"})(DocumentPosition||(DocumentPosition={}));__name(compareDocumentPosition,"compareDocumentPosition");__name(uniqueSort,"uniqueSort")}});function getFeed(doc){let feedRoot=getOneElement(isValidFeed,doc);return feedRoot?feedRoot.name==="feed"?getAtomFeed(feedRoot):getRssFeed(feedRoot):null}function getAtomFeed(feedRoot){var _a4;let childs=feedRoot.children,feed={type:"atom",items:getElementsByTagName("entry",childs).map(item=>{var _a5;let{children:children2}=item,entry={media:getMediaElements(children2)};addConditionally(entry,"id","id",children2),addConditionally(entry,"title","title",children2);let href2=(_a5=getOneElement("link",children2))===null||_a5===void 0?void 0:_a5.attribs.href;href2&&(entry.link=href2);let description=fetch2("summary",children2)||fetch2("content",children2);description&&(entry.description=description);let pubDate=fetch2("updated",children2);return pubDate&&(entry.pubDate=new Date(pubDate)),entry})};addConditionally(feed,"id","id",childs),addConditionally(feed,"title","title",childs);let href=(_a4=getOneElement("link",childs))===null||_a4===void 0?void 0:_a4.attribs.href;href&&(feed.link=href),addConditionally(feed,"description","subtitle",childs);let updated=fetch2("updated",childs);return updated&&(feed.updated=new Date(updated)),addConditionally(feed,"author","email",childs,!0),feed}function getRssFeed(feedRoot){var _a4,_b;let childs=(_b=(_a4=getOneElement("channel",feedRoot.children))===null||_a4===void 0?void 0:_a4.children)!==null&&_b!==void 0?_b:[],feed={type:feedRoot.name.substr(0,3),id:"",items:getElementsByTagName("item",feedRoot.children).map(item=>{let{children:children2}=item,entry={media:getMediaElements(children2)};addConditionally(entry,"id","guid",children2),addConditionally(entry,"title","title",children2),addConditionally(entry,"link","link",children2),addConditionally(entry,"description","description",children2);let pubDate=fetch2("pubDate",children2)||fetch2("dc:date",children2);return pubDate&&(entry.pubDate=new Date(pubDate)),entry})};addConditionally(feed,"title","title",childs),addConditionally(feed,"link","link",childs),addConditionally(feed,"description","description",childs);let updated=fetch2("lastBuildDate",childs);return updated&&(feed.updated=new Date(updated)),addConditionally(feed,"author","managingEditor",childs,!0),feed}function getMediaElements(where){return getElementsByTagName("media:content",where).map(elem=>{let{attribs}=elem,media={medium:attribs.medium,isDefault:!!attribs.isDefault};for(let attrib of MEDIA_KEYS_STRING)attribs[attrib]&&(media[attrib]=attribs[attrib]);for(let attrib of MEDIA_KEYS_INT)attribs[attrib]&&(media[attrib]=parseInt(attribs[attrib],10));return attribs.expression&&(media.expression=attribs.expression),media})}function getOneElement(tagName,node){return getElementsByTagName(tagName,node,!0,1)[0]}function fetch2(tagName,where,recurse=!1){return textContent(getElementsByTagName(tagName,where,recurse,1)).trim()}function addConditionally(obj,prop2,tagName,where,recurse=!1){let val2=fetch2(tagName,where,recurse);val2&&(obj[prop2]=val2)}function isValidFeed(value){return value==="rss"||value==="feed"||value==="rdf:RDF"}var MEDIA_KEYS_STRING,MEDIA_KEYS_INT,init_feeds=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/feeds.js"(){init_stringify();init_legacy();__name(getFeed,"getFeed");__name(getAtomFeed,"getAtomFeed");__name(getRssFeed,"getRssFeed");MEDIA_KEYS_STRING=["url","type","lang"],MEDIA_KEYS_INT=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];__name(getMediaElements,"getMediaElements");__name(getOneElement,"getOneElement");__name(fetch2,"fetch");__name(addConditionally,"addConditionally");__name(isValidFeed,"isValidFeed")}});var esm_exports2={};__export(esm_exports2,{DocumentPosition:()=>DocumentPosition,append:()=>append,appendChild:()=>appendChild,compareDocumentPosition:()=>compareDocumentPosition,existsOne:()=>existsOne,filter:()=>filter,find:()=>find,findAll:()=>findAll,findOne:()=>findOne,findOneChild:()=>findOneChild,getAttributeValue:()=>getAttributeValue,getChildren:()=>getChildren,getElementById:()=>getElementById,getElements:()=>getElements,getElementsByClassName:()=>getElementsByClassName,getElementsByTagName:()=>getElementsByTagName,getElementsByTagType:()=>getElementsByTagType,getFeed:()=>getFeed,getInnerHTML:()=>getInnerHTML,getName:()=>getName,getOuterHTML:()=>getOuterHTML,getParent:()=>getParent,getSiblings:()=>getSiblings,getText:()=>getText,hasAttrib:()=>hasAttrib,hasChildren:()=>hasChildren,innerText:()=>innerText,isCDATA:()=>isCDATA,isComment:()=>isComment,isDocument:()=>isDocument,isTag:()=>isTag2,isText:()=>isText,nextElementSibling:()=>nextElementSibling,prepend:()=>prepend,prependChild:()=>prependChild,prevElementSibling:()=>prevElementSibling,removeElement:()=>removeElement,removeSubsets:()=>removeSubsets,replaceElement:()=>replaceElement,testElement:()=>testElement,textContent:()=>textContent,uniqueSort:()=>uniqueSort});var init_esm6=__esm({"../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/index.js"(){init_stringify();init_traversal();init_manipulation();init_querying();init_legacy();init_helpers();init_feeds();init_esm3()}});var static_exports={};__export(static_exports,{contains:()=>contains,extract:()=>extract,html:()=>html,merge:()=>merge,parseHTML:()=>parseHTML,root:()=>root,text:()=>text,xml:()=>xml});function render3(that,dom,options){return that?that(dom??that._root.children,null,void 0,options).toString():""}function isOptions(dom,options){return!options&&typeof dom=="object"&&dom!=null&&!("length"in dom)&&!("type"in dom)}function html(dom,options){let toRender=isOptions(dom)?(options=dom,void 0):dom,opts={...this===null||this===void 0?void 0:this._options,...flattenOptions(options)};return render3(this,toRender,opts)}function xml(dom){let options={...this._options,xmlMode:!0};return render3(this,dom,options)}function text(elements){let elems=elements??(this?this.root():[]),ret="";for(let i=0;i<elems.length;i++)ret+=textContent(elems[i]);return ret}function parseHTML(data2,context,keepScripts=typeof context=="boolean"?context:!1){if(!data2||typeof data2!="string")return null;typeof context=="boolean"&&(keepScripts=context);let parsed=this.load(data2,this._options,!1);return keepScripts||parsed("script").remove(),[...parsed.root()[0].children]}function root(){return this(this._root)}function contains(container,contained){if(contained===container)return!1;let next2=contained;for(;next2&&next2!==next2.parent;)if(next2=next2.parent,next2===container)return!0;return!1}function extract(map2){return this.root().extract(map2)}function merge(arr1,arr2){if(!isArrayLike(arr1)||!isArrayLike(arr2))return;let newLength=arr1.length,len=+arr2.length;for(let i=0;i<len;i++)arr1[newLength++]=arr2[i];return arr1.length=newLength,arr1}function isArrayLike(item){if(Array.isArray(item))return!0;if(typeof item!="object"||item===null||!("length"in item)||typeof item.length!="number"||item.length<0)return!1;for(let i=0;i<item.length;i++)if(!(i in item))return!1;return!0}var init_static=__esm({"../../node_modules/.pnpm/cheerio@1.2.0/node_modules/cheerio/dist/esm/static.js"(){init_esm6();init_options();__name(render3,"render");__name(isOptions,"isOptions");__name(html,"html");__name(xml,"xml");__name(text,"text");__name(parseHTML,"parseHTML");__name(root,"root");__name(contains,"contains");__name(extract,"extract");__name(merge,"merge");__name(isArrayLike,"isArrayLike")}});function isCheerio(maybeCheerio){return maybeCheerio.cheerio!=null}function camelCase(str){return str.replace(/[._-](\w|$)/g,(_2,x)=>x.toUpperCase())}function cssCase(str){return str.replace(/[A-Z]/g,"-$&").toLowerCase()}function domEach(array,fn){let len=array.length;for(let i=0;i<len;i++)fn(array[i],i);return array}function isHtml(str){if(typeof str!="string")return!1;let tagStart=str.indexOf("<");if(tagStart===-1||tagStart>str.length-3)return!1;let tagChar=str.charCodeAt(tagStart+1);return(tagChar>=CharacterCode.LowerA&&tagChar<=CharacterCode.LowerZ||tagChar>=CharacterCode.UpperA&&tagChar<=CharacterCode.UpperZ||tagChar===CharacterCode.Exclamation)&&str.includes(">",tagStart+2)}var CharacterCode,init_utils2=__esm({"../../node_modules/.pnpm/cheerio@1.2.0/node_modules/cheerio/dist/esm/utils.js"(){__name(isCheerio,"isCheerio");__name(camelCase,"camelCase");__name(cssCase,"cssCase");__name(domEach,"domEach");(function(CharacterCode2){CharacterCode2[CharacterCode2.LowerA=97]="LowerA",CharacterCode2[CharacterCode2.LowerZ=122]="LowerZ",CharacterCode2[CharacterCode2.UpperA=65]="UpperA",CharacterCode2[CharacterCode2.UpperZ=90]="UpperZ",CharacterCode2[CharacterCode2.Exclamation=33]="Exclamation"})(CharacterCode||(CharacterCode={}));__name(isHtml,"isHtml")}});function replaceCodePoint2(codePoint){var _a4;return codePoint>=55296&&codePoint<=57343||codePoint>1114111?65533:(_a4=decodeMap2.get(codePoint))!==null&&_a4!==void 0?_a4:codePoint}var _a2,decodeMap2,fromCodePoint2,init_decode_codepoint2=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode-codepoint.js"(){decodeMap2=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),fromCodePoint2=(_a2=String.fromCodePoint)!==null&&_a2!==void 0?_a2:(codePoint=>{let output="";return codePoint>65535&&(codePoint-=65536,output+=String.fromCharCode(codePoint>>>10&1023|55296),codePoint=56320|codePoint&1023),output+=String.fromCharCode(codePoint),output});__name(replaceCodePoint2,"replaceCodePoint")}});function decodeBase64(input){let binary=typeof atob=="function"?atob(input):typeof Buffer.from=="function"?Buffer.from(input,"base64").toString("binary"):new Buffer(input,"base64").toString("binary"),evenLength=binary.length&-2,out=new Uint16Array(evenLength/2);for(let index2=0,outIndex=0;index2<evenLength;index2+=2){let lo=binary.charCodeAt(index2),hi=binary.charCodeAt(index2+1);out[outIndex++]=lo|hi<<8}return out}var init_decode_shared=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/decode-shared.js"(){__name(decodeBase64,"decodeBase64")}});var htmlDecodeTree,init_decode_data_html2=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js"(){init_decode_shared();htmlDecodeTree=decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")}});var xmlDecodeTree,init_decode_data_xml2=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.js"(){init_decode_shared();xmlDecodeTree=decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg")}});var BinTrieFlags2,init_bin_trie_flags=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/internal/bin-trie-flags.js"(){(function(BinTrieFlags3){BinTrieFlags3[BinTrieFlags3.VALUE_LENGTH=49152]="VALUE_LENGTH",BinTrieFlags3[BinTrieFlags3.FLAG13=8192]="FLAG13",BinTrieFlags3[BinTrieFlags3.BRANCH_LENGTH=8064]="BRANCH_LENGTH",BinTrieFlags3[BinTrieFlags3.JUMP_TABLE=127]="JUMP_TABLE"})(BinTrieFlags2||(BinTrieFlags2={}))}});function isNumber2(code2){return code2>=CharCodes2.ZERO&&code2<=CharCodes2.NINE}function isHexadecimalCharacter2(code2){return code2>=CharCodes2.UPPER_A&&code2<=CharCodes2.UPPER_F||code2>=CharCodes2.LOWER_A&&code2<=CharCodes2.LOWER_F}function isAsciiAlphaNumeric2(code2){return code2>=CharCodes2.UPPER_A&&code2<=CharCodes2.UPPER_Z||code2>=CharCodes2.LOWER_A&&code2<=CharCodes2.LOWER_Z||isNumber2(code2)}function isEntityInAttributeInvalidEnd2(code2){return code2===CharCodes2.EQUALS||isAsciiAlphaNumeric2(code2)}function determineBranch2(decodeTree,current,nodeIndex,char){let branchCount=(current&BinTrieFlags2.BRANCH_LENGTH)>>7,jumpOffset=current&BinTrieFlags2.JUMP_TABLE;if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIndex:-1;if(jumpOffset){let value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIndex+value]-1}let packedKeySlots=branchCount+1>>1,lo=0,hi=branchCount-1;for(;lo<=hi;){let mid=lo+hi>>>1,slot=mid>>1,midKey=decodeTree[nodeIndex+slot]>>(mid&1)*8&255;if(midKey<char)lo=mid+1;else if(midKey>char)hi=mid-1;else return decodeTree[nodeIndex+packedKeySlots+mid]}return-1}var CharCodes2,TO_LOWER_BIT2,EntityDecoderState2,DecodingMode2,EntityDecoder2,init_decode2=__esm({"../../node_modules/.pnpm/entities@7.0.1/node_modules/entities/dist/esm/decode.js"(){init_decode_codepoint2();init_decode_data_html2();init_decode_data_xml2();init_bin_trie_flags();init_decode_codepoint2();init_decode_data_html2();init_decode_data_xml2();(function(CharCodes4){CharCodes4[CharCodes4.NUM=35]="NUM",CharCodes4[CharCodes4.SEMI=59]="SEMI",CharCodes4[CharCodes4.EQUALS=61]="EQUALS",CharCodes4[CharCodes4.ZERO=48]="ZERO",CharCodes4[CharCodes4.NINE=57]="NINE",CharCodes4[CharCodes4.LOWER_A=97]="LOWER_A",CharCodes4[CharCodes4.LOWER_F=102]="LOWER_F",CharCodes4[CharCodes4.LOWER_X=120]="LOWER_X",CharCodes4[CharCodes4.LOWER_Z=122]="LOWER_Z",CharCodes4[CharCodes4.UPPER_A=65]="UPPER_A",CharCodes4[CharCodes4.UPPER_F=70]="UPPER_F",CharCodes4[CharCodes4.UPPER_Z=90]="UPPER_Z"})(CharCodes2||(CharCodes2={}));TO_LOWER_BIT2=32;__name(isNumber2,"isNumber");__name(isHexadecimalCharacter2,"isHexadecimalCharacter");__name(isAsciiAlphaNumeric2,"isAsciiAlphaNumeric");__name(isEntityInAttributeInvalidEnd2,"isEntityInAttributeInvalidEnd");(function(EntityDecoderState3){EntityDecoderState3[EntityDecoderState3.EntityStart=0]="EntityStart",EntityDecoderState3[EntityDecoderState3.NumericStart=1]="NumericStart",EntityDecoderState3[EntityDecoderState3.NumericDecimal=2]="NumericDecimal",EntityDecoderState3[EntityDecoderState3.NumericHex=3]="NumericHex",EntityDecoderState3[EntityDecoderState3.NamedEntity=4]="NamedEntity"})(EntityDecoderState2||(EntityDecoderState2={}));(function(DecodingMode3){DecodingMode3[DecodingMode3.Legacy=0]="Legacy",DecodingMode3[DecodingMode3.Strict=1]="Strict",DecodingMode3[DecodingMode3.Attribute=2]="Attribute"})(DecodingMode2||(DecodingMode2={}));EntityDecoder2=class{static{__name(this,"EntityDecoder")}constructor(decodeTree,emitCodePoint,errors){this.decodeTree=decodeTree,this.emitCodePoint=emitCodePoint,this.errors=errors,this.state=EntityDecoderState2.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DecodingMode2.Strict,this.runConsumed=0}startEntity(decodeMode){this.decodeMode=decodeMode,this.state=EntityDecoderState2.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(input,offset){switch(this.state){case EntityDecoderState2.EntityStart:return input.charCodeAt(offset)===CharCodes2.NUM?(this.state=EntityDecoderState2.NumericStart,this.consumed+=1,this.stateNumericStart(input,offset+1)):(this.state=EntityDecoderState2.NamedEntity,this.stateNamedEntity(input,offset));case EntityDecoderState2.NumericStart:return this.stateNumericStart(input,offset);case EntityDecoderState2.NumericDecimal:return this.stateNumericDecimal(input,offset);case EntityDecoderState2.NumericHex:return this.stateNumericHex(input,offset);case EntityDecoderState2.NamedEntity:return this.stateNamedEntity(input,offset)}}stateNumericStart(input,offset){return offset>=input.length?-1:(input.charCodeAt(offset)|TO_LOWER_BIT2)===CharCodes2.LOWER_X?(this.state=EntityDecoderState2.NumericHex,this.consumed+=1,this.stateNumericHex(input,offset+1)):(this.state=EntityDecoderState2.NumericDecimal,this.stateNumericDecimal(input,offset))}stateNumericHex(input,offset){for(;offset<input.length;){let char=input.charCodeAt(offset);if(isNumber2(char)||isHexadecimalCharacter2(char)){let digit=char<=CharCodes2.NINE?char-CharCodes2.ZERO:(char|TO_LOWER_BIT2)-CharCodes2.LOWER_A+10;this.result=this.result*16+digit,this.consumed++,offset++}else return this.emitNumericEntity(char,3)}return-1}stateNumericDecimal(input,offset){for(;offset<input.length;){let char=input.charCodeAt(offset);if(isNumber2(char))this.result=this.result*10+(char-CharCodes2.ZERO),this.consumed++,offset++;else return this.emitNumericEntity(char,2)}return-1}emitNumericEntity(lastCp,expectedLength){var _a4;if(this.consumed<=expectedLength)return(_a4=this.errors)===null||_a4===void 0||_a4.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(lastCp===CharCodes2.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode2.Strict)return 0;return this.emitCodePoint(replaceCodePoint2(this.result),this.consumed),this.errors&&(lastCp!==CharCodes2.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(input,offset){let{decodeTree}=this,current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags2.VALUE_LENGTH)>>14;for(;offset<input.length;){if(valueLength===0&&(current&BinTrieFlags2.FLAG13)!==0){let runLength=(current&BinTrieFlags2.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let firstChar=current&BinTrieFlags2.JUMP_TABLE;if(input.charCodeAt(offset)!==firstChar)return this.result===0?0:this.emitNotTerminatedNamedEntity();offset++,this.excess++,this.runConsumed++}for(;this.runConsumed<runLength;){if(offset>=input.length)return-1;let charIndexInPacked=this.runConsumed-1,packedWord=decodeTree[this.treeIndex+1+(charIndexInPacked>>1)],expectedChar=charIndexInPacked%2===0?packedWord&255:packedWord>>8&255;if(input.charCodeAt(offset)!==expectedChar)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();offset++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(runLength>>1),current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags2.VALUE_LENGTH)>>14}if(offset>=input.length)break;let char=input.charCodeAt(offset);if(char===CharCodes2.SEMI&&valueLength!==0&&(current&BinTrieFlags2.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);if(this.treeIndex=determineBranch2(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char),this.treeIndex<0)return this.result===0||this.decodeMode===DecodingMode2.Attribute&&(valueLength===0||isEntityInAttributeInvalidEnd2(char))?0:this.emitNotTerminatedNamedEntity();if(current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags2.VALUE_LENGTH)>>14,valueLength!==0){if(char===CharCodes2.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);this.decodeMode!==DecodingMode2.Strict&&(current&BinTrieFlags2.FLAG13)===0&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}offset++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var _a4;let{result,decodeTree}=this,valueLength=(decodeTree[result]&BinTrieFlags2.VALUE_LENGTH)>>14;return this.emitNamedEntityData(result,valueLength,this.consumed),(_a4=this.errors)===null||_a4===void 0||_a4.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(result,valueLength,consumed){let{decodeTree}=this;return this.emitCodePoint(valueLength===1?decodeTree[result]&~(BinTrieFlags2.VALUE_LENGTH|BinTrieFlags2.FLAG13):decodeTree[result+1],consumed),valueLength===3&&this.emitCodePoint(decodeTree[result+2],consumed),consumed}end(){var _a4;switch(this.state){case EntityDecoderState2.NamedEntity:return this.result!==0&&(this.decodeMode!==DecodingMode2.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case EntityDecoderState2.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState2.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState2.NumericStart:return(_a4=this.errors)===null||_a4===void 0||_a4.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case EntityDecoderState2.EntityStart:return 0}}};__name(determineBranch2,"determineBranch")}});function isWhitespace(c2){return c2===CharCodes3.Space||c2===CharCodes3.NewLine||c2===CharCodes3.Tab||c2===CharCodes3.FormFeed||c2===CharCodes3.CarriageReturn}function isEndOfTagSection(c2){return c2===CharCodes3.Slash||c2===CharCodes3.Gt||isWhitespace(c2)}function isASCIIAlpha(c2){return c2>=CharCodes3.LowerA&&c2<=CharCodes3.LowerZ||c2>=CharCodes3.UpperA&&c2<=CharCodes3.UpperZ}var CharCodes3,State,QuoteType,Sequences,Tokenizer,init_Tokenizer=__esm({"../../node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js"(){init_decode2();(function(CharCodes4){CharCodes4[CharCodes4.Tab=9]="Tab",CharCodes4[CharCodes4.NewLine=10]="NewLine",CharCodes4[CharCodes4.FormFeed=12]="FormFeed",CharCodes4[CharCodes4.CarriageReturn=13]="CarriageReturn",CharCodes4[CharCodes4.Space=32]="Space",CharCodes4[CharCodes4.ExclamationMark=33]="ExclamationMark",CharCodes4[CharCodes4.Number=35]="Number",CharCodes4[CharCodes4.Amp=38]="Amp",CharCodes4[CharCodes4.SingleQuote=39]="SingleQuote",CharCodes4[CharCodes4.DoubleQuote=34]="DoubleQuote",CharCodes4[CharCodes4.Dash=45]="Dash",CharCodes4[CharCodes4.Slash=47]="Slash",CharCodes4[CharCodes4.Zero=48]="Zero",CharCodes4[CharCodes4.Nine=57]="Nine",CharCodes4[CharCodes4.Semi=59]="Semi",CharCodes4[CharCodes4.Lt=60]="Lt",CharCodes4[CharCodes4.Eq=61]="Eq",CharCodes4[CharCodes4.Gt=62]="Gt",CharCodes4[CharCodes4.Questionmark=63]="Questionmark",CharCodes4[CharCodes4.UpperA=65]="UpperA",CharCodes4[CharCodes4.LowerA=97]="LowerA",CharCodes4[CharCodes4.UpperF=70]="UpperF",CharCodes4[CharCodes4.LowerF=102]="LowerF",CharCodes4[CharCodes4.UpperZ=90]="UpperZ",CharCodes4[CharCodes4.LowerZ=122]="LowerZ",CharCodes4[CharCodes4.LowerX=120]="LowerX",CharCodes4[CharCodes4.OpeningSquareBracket=91]="OpeningSquareBracket"})(CharCodes3||(CharCodes3={}));(function(State2){State2[State2.Text=1]="Text",State2[State2.BeforeTagName=2]="BeforeTagName",State2[State2.InTagName=3]="InTagName",State2[State2.InSelfClosingTag=4]="InSelfClosingTag",State2[State2.BeforeClosingTagName=5]="BeforeClosingTagName",State2[State2.InClosingTagName=6]="InClosingTagName",State2[State2.AfterClosingTagName=7]="AfterClosingTagName",State2[State2.BeforeAttributeName=8]="BeforeAttributeName",State2[State2.InAttributeName=9]="InAttributeName",State2[State2.AfterAttributeName=10]="AfterAttributeName",State2[State2.BeforeAttributeValue=11]="BeforeAttributeValue",State2[State2.InAttributeValueDq=12]="InAttributeValueDq",State2[State2.InAttributeValueSq=13]="InAttributeValueSq",State2[State2.InAttributeValueNq=14]="InAttributeValueNq",State2[State2.BeforeDeclaration=15]="BeforeDeclaration",State2[State2.InDeclaration=16]="InDeclaration",State2[State2.InProcessingInstruction=17]="InProcessingInstruction",State2[State2.BeforeComment=18]="BeforeComment",State2[State2.CDATASequence=19]="CDATASequence",State2[State2.InSpecialComment=20]="InSpecialComment",State2[State2.InCommentLike=21]="InCommentLike",State2[State2.BeforeSpecialS=22]="BeforeSpecialS",State2[State2.BeforeSpecialT=23]="BeforeSpecialT",State2[State2.SpecialStartSequence=24]="SpecialStartSequence",State2[State2.InSpecialTag=25]="InSpecialTag",State2[State2.InEntity=26]="InEntity"})(State||(State={}));__name(isWhitespace,"isWhitespace");__name(isEndOfTagSection,"isEndOfTagSection");__name(isASCIIAlpha,"isASCIIAlpha");(function(QuoteType2){QuoteType2[QuoteType2.NoValue=0]="NoValue",QuoteType2[QuoteType2.Unquoted=1]="Unquoted",QuoteType2[QuoteType2.Single=2]="Single",QuoteType2[QuoteType2.Double=3]="Double"})(QuoteType||(QuoteType={}));Sequences={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97]),XmpEnd:new Uint8Array([60,47,120,109,112])},Tokenizer=class{static{__name(this,"Tokenizer")}constructor({xmlMode=!1,decodeEntities=!0},cbs){this.cbs=cbs,this.state=State.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=State.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=xmlMode,this.decodeEntities=decodeEntities,this.entityDecoder=new EntityDecoder2(xmlMode?xmlDecodeTree:htmlDecodeTree,(cp2,consumed)=>this.emitCodePoint(cp2,consumed))}reset(){this.state=State.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=State.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(chunk){this.offset+=this.buffer.length,this.buffer=chunk,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}stateText(c2){c2===CharCodes3.Lt||!this.decodeEntities&&this.fastForwardTo(CharCodes3.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=State.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&c2===CharCodes3.Amp&&this.startEntity()}stateSpecialStartSequence(c2){let isEnd=this.sequenceIndex===this.currentSequence.length;if(!(isEnd?isEndOfTagSection(c2):(c2|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!isEnd){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=State.InTagName,this.stateInTagName(c2)}stateInSpecialTag(c2){if(this.sequenceIndex===this.currentSequence.length){if(c2===CharCodes3.Gt||isWhitespace(c2)){let endOfText=this.index-this.currentSequence.length;if(this.sectionStart<endOfText){let actualIndex=this.index;this.index=endOfText,this.cbs.ontext(this.sectionStart,endOfText),this.index=actualIndex}this.isSpecial=!1,this.sectionStart=endOfText+2,this.stateInClosingTagName(c2);return}this.sequenceIndex=0}(c2|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===Sequences.TitleEnd?this.decodeEntities&&c2===CharCodes3.Amp&&this.startEntity():this.fastForwardTo(CharCodes3.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(c2===CharCodes3.Lt)}stateCDATASequence(c2){c2===Sequences.Cdata[this.sequenceIndex]?++this.sequenceIndex===Sequences.Cdata.length&&(this.state=State.InCommentLike,this.currentSequence=Sequences.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=State.InDeclaration,this.stateInDeclaration(c2))}fastForwardTo(c2){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===c2)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(c2){c2===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===Sequences.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=State.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):c2!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(c2){return this.xmlMode?!isEndOfTagSection(c2):isASCIIAlpha(c2)}startSpecial(sequence,offset){this.isSpecial=!0,this.currentSequence=sequence,this.sequenceIndex=offset,this.state=State.SpecialStartSequence}stateBeforeTagName(c2){if(c2===CharCodes3.ExclamationMark)this.state=State.BeforeDeclaration,this.sectionStart=this.index+1;else if(c2===CharCodes3.Questionmark)this.state=State.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(c2)){let lower=c2|32;this.sectionStart=this.index,this.xmlMode?this.state=State.InTagName:lower===Sequences.ScriptEnd[2]?this.state=State.BeforeSpecialS:lower===Sequences.TitleEnd[2]||lower===Sequences.XmpEnd[2]?this.state=State.BeforeSpecialT:this.state=State.InTagName}else c2===CharCodes3.Slash?this.state=State.BeforeClosingTagName:(this.state=State.Text,this.stateText(c2))}stateInTagName(c2){isEndOfTagSection(c2)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c2))}stateBeforeClosingTagName(c2){isWhitespace(c2)||(c2===CharCodes3.Gt?this.state=State.Text:(this.state=this.isTagStartChar(c2)?State.InClosingTagName:State.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(c2){(c2===CharCodes3.Gt||isWhitespace(c2))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=State.AfterClosingTagName,this.stateAfterClosingTagName(c2))}stateAfterClosingTagName(c2){(c2===CharCodes3.Gt||this.fastForwardTo(CharCodes3.Gt))&&(this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(c2){c2===CharCodes3.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=State.InSpecialTag,this.sequenceIndex=0):this.state=State.Text,this.sectionStart=this.index+1):c2===CharCodes3.Slash?this.state=State.InSelfClosingTag:isWhitespace(c2)||(this.state=State.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(c2){c2===CharCodes3.Gt?(this.cbs.onselfclosingtag(this.index),this.state=State.Text,this.sectionStart=this.index+1,this.isSpecial=!1):isWhitespace(c2)||(this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c2))}stateInAttributeName(c2){(c2===CharCodes3.Eq||isEndOfTagSection(c2))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=State.AfterAttributeName,this.stateAfterAttributeName(c2))}stateAfterAttributeName(c2){c2===CharCodes3.Eq?this.state=State.BeforeAttributeValue:c2===CharCodes3.Slash||c2===CharCodes3.Gt?(this.cbs.onattribend(QuoteType.NoValue,this.sectionStart),this.sectionStart=-1,this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c2)):isWhitespace(c2)||(this.cbs.onattribend(QuoteType.NoValue,this.sectionStart),this.state=State.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(c2){c2===CharCodes3.DoubleQuote?(this.state=State.InAttributeValueDq,this.sectionStart=this.index+1):c2===CharCodes3.SingleQuote?(this.state=State.InAttributeValueSq,this.sectionStart=this.index+1):isWhitespace(c2)||(this.sectionStart=this.index,this.state=State.InAttributeValueNq,this.stateInAttributeValueNoQuotes(c2))}handleInAttributeValue(c2,quote2){c2===quote2||!this.decodeEntities&&this.fastForwardTo(quote2)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(quote2===CharCodes3.DoubleQuote?QuoteType.Double:QuoteType.Single,this.index+1),this.state=State.BeforeAttributeName):this.decodeEntities&&c2===CharCodes3.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(c2){this.handleInAttributeValue(c2,CharCodes3.DoubleQuote)}stateInAttributeValueSingleQuotes(c2){this.handleInAttributeValue(c2,CharCodes3.SingleQuote)}stateInAttributeValueNoQuotes(c2){isWhitespace(c2)||c2===CharCodes3.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(QuoteType.Unquoted,this.index),this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c2)):this.decodeEntities&&c2===CharCodes3.Amp&&this.startEntity()}stateBeforeDeclaration(c2){c2===CharCodes3.OpeningSquareBracket?(this.state=State.CDATASequence,this.sequenceIndex=0):this.state=c2===CharCodes3.Dash?State.BeforeComment:State.InDeclaration}stateInDeclaration(c2){(c2===CharCodes3.Gt||this.fastForwardTo(CharCodes3.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=State.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(c2){(c2===CharCodes3.Gt||this.fastForwardTo(CharCodes3.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeComment(c2){c2===CharCodes3.Dash?(this.state=State.InCommentLike,this.currentSequence=Sequences.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=State.InDeclaration}stateInSpecialComment(c2){(c2===CharCodes3.Gt||this.fastForwardTo(CharCodes3.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(c2){let lower=c2|32;lower===Sequences.ScriptEnd[3]?this.startSpecial(Sequences.ScriptEnd,4):lower===Sequences.StyleEnd[3]?this.startSpecial(Sequences.StyleEnd,4):(this.state=State.InTagName,this.stateInTagName(c2))}stateBeforeSpecialT(c2){switch(c2|32){case Sequences.TitleEnd[3]:{this.startSpecial(Sequences.TitleEnd,4);break}case Sequences.TextareaEnd[3]:{this.startSpecial(Sequences.TextareaEnd,4);break}case Sequences.XmpEnd[3]:{this.startSpecial(Sequences.XmpEnd,4);break}default:this.state=State.InTagName,this.stateInTagName(c2)}}startEntity(){this.baseState=this.state,this.state=State.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?DecodingMode2.Strict:this.baseState===State.Text||this.baseState===State.InSpecialTag?DecodingMode2.Legacy:DecodingMode2.Attribute)}stateInEntity(){let indexInBuffer=this.index-this.offset,length=this.entityDecoder.write(this.buffer,indexInBuffer);if(length>=0)this.state=this.baseState,length===0&&(this.index-=1);else{if(indexInBuffer<this.buffer.length&&this.buffer.charCodeAt(indexInBuffer)===CharCodes3.Amp){this.state=this.baseState,this.index-=1;return}this.index=this.offset+this.buffer.length-1}}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===State.Text||this.state===State.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===State.InAttributeValueDq||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){let c2=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case State.Text:{this.stateText(c2);break}case State.SpecialStartSequence:{this.stateSpecialStartSequence(c2);break}case State.InSpecialTag:{this.stateInSpecialTag(c2);break}case State.CDATASequence:{this.stateCDATASequence(c2);break}case State.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(c2);break}case State.InAttributeName:{this.stateInAttributeName(c2);break}case State.InCommentLike:{this.stateInCommentLike(c2);break}case State.InSpecialComment:{this.stateInSpecialComment(c2);break}case State.BeforeAttributeName:{this.stateBeforeAttributeName(c2);break}case State.InTagName:{this.stateInTagName(c2);break}case State.InClosingTagName:{this.stateInClosingTagName(c2);break}case State.BeforeTagName:{this.stateBeforeTagName(c2);break}case State.AfterAttributeName:{this.stateAfterAttributeName(c2);break}case State.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(c2);break}case State.BeforeAttributeValue:{this.stateBeforeAttributeValue(c2);break}case State.BeforeClosingTagName:{this.stateBeforeClosingTagName(c2);break}case State.AfterClosingTagName:{this.stateAfterClosingTagName(c2);break}case State.BeforeSpecialS:{this.stateBeforeSpecialS(c2);break}case State.BeforeSpecialT:{this.stateBeforeSpecialT(c2);break}case State.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(c2);break}case State.InSelfClosingTag:{this.stateInSelfClosingTag(c2);break}case State.InDeclaration:{this.stateInDeclaration(c2);break}case State.BeforeDeclaration:{this.stateBeforeDeclaration(c2);break}case State.BeforeComment:{this.stateBeforeComment(c2);break}case State.InProcessingInstruction:{this.stateInProcessingInstruction(c2);break}case State.InEntity:{this.stateInEntity();break}}this.index++}this.cleanup()}finish(){this.state===State.InEntity&&(this.entityDecoder.end(),this.state=this.baseState),this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let endIndex=this.buffer.length+this.offset;this.sectionStart>=endIndex||(this.state===State.InCommentLike?this.currentSequence===Sequences.CdataEnd?this.cbs.oncdata(this.sectionStart,endIndex,0):this.cbs.oncomment(this.sectionStart,endIndex,0):this.state===State.InTagName||this.state===State.BeforeAttributeName||this.state===State.BeforeAttributeValue||this.state===State.AfterAttributeName||this.state===State.InAttributeName||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueDq||this.state===State.InAttributeValueNq||this.state===State.InClosingTagName||this.cbs.ontext(this.sectionStart,endIndex))}emitCodePoint(cp2,consumed){this.baseState!==State.Text&&this.baseState!==State.InSpecialTag?(this.sectionStart<this.entityStart&&this.cbs.onattribdata(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+consumed,this.index=this.sectionStart-1,this.cbs.onattribentity(cp2)):(this.sectionStart<this.entityStart&&this.cbs.ontext(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+consumed,this.index=this.sectionStart-1,this.cbs.ontextentity(cp2,this.sectionStart))}}}});var formTags,pTag,tableSectionTags,ddtTags,rtpTags,openImpliesClose,voidElements,foreignContextElements,htmlIntegrationElements,reNameEnd,Parser,init_Parser=__esm({"../../node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Parser.js"(){init_Tokenizer();init_decode2();formTags=new Set(["input","option","optgroup","select","button","datalist","textarea"]),pTag=new Set(["p"]),tableSectionTags=new Set(["thead","tbody"]),ddtTags=new Set(["dd","dt"]),rtpTags=new Set(["rt","rp"]),openImpliesClose=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",pTag],["h1",pTag],["h2",pTag],["h3",pTag],["h4",pTag],["h5",pTag],["h6",pTag],["select",formTags],["input",formTags],["output",formTags],["button",formTags],["datalist",formTags],["textarea",formTags],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",ddtTags],["dt",ddtTags],["address",pTag],["article",pTag],["aside",pTag],["blockquote",pTag],["details",pTag],["div",pTag],["dl",pTag],["fieldset",pTag],["figcaption",pTag],["figure",pTag],["footer",pTag],["form",pTag],["header",pTag],["hr",pTag],["main",pTag],["nav",pTag],["ol",pTag],["pre",pTag],["section",pTag],["table",pTag],["ul",pTag],["rt",rtpTags],["rp",rtpTags],["tbody",tableSectionTags],["tfoot",tableSectionTags]]),voidElements=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),foreignContextElements=new Set(["math","svg"]),htmlIntegrationElements=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),reNameEnd=/\s|\//,Parser=class{static{__name(this,"Parser")}constructor(cbs,options={}){var _a4,_b,_c,_d,_e2,_f;this.options=options,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=cbs??{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=(_a4=options.lowerCaseTags)!==null&&_a4!==void 0?_a4:this.htmlMode,this.lowerCaseAttributeNames=(_b=options.lowerCaseAttributeNames)!==null&&_b!==void 0?_b:this.htmlMode,this.recognizeSelfClosing=(_c=options.recognizeSelfClosing)!==null&&_c!==void 0?_c:!this.htmlMode,this.tokenizer=new((_d=options.Tokenizer)!==null&&_d!==void 0?_d:Tokenizer)(this.options,this),this.foreignContext=[!this.htmlMode],(_f=(_e2=this.cbs).onparserinit)===null||_f===void 0||_f.call(_e2,this)}ontext(start,endIndex){var _a4,_b;let data2=this.getSlice(start,endIndex);this.endIndex=endIndex-1,(_b=(_a4=this.cbs).ontext)===null||_b===void 0||_b.call(_a4,data2),this.startIndex=endIndex}ontextentity(cp2,endIndex){var _a4,_b;this.endIndex=endIndex-1,(_b=(_a4=this.cbs).ontext)===null||_b===void 0||_b.call(_a4,fromCodePoint2(cp2)),this.startIndex=endIndex}isVoidElement(name){return this.htmlMode&&voidElements.has(name)}onopentagname(start,endIndex){this.endIndex=endIndex;let name=this.getSlice(start,endIndex);this.lowerCaseTagNames&&(name=name.toLowerCase()),this.emitOpenTag(name)}emitOpenTag(name){var _a4,_b,_c,_d;this.openTagStart=this.startIndex,this.tagname=name;let impliesClose=this.htmlMode&&openImpliesClose.get(name);if(impliesClose)for(;this.stack.length>0&&impliesClose.has(this.stack[0]);){let element=this.stack.shift();(_b=(_a4=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a4,element,!0)}this.isVoidElement(name)||(this.stack.unshift(name),this.htmlMode&&(foreignContextElements.has(name)?this.foreignContext.unshift(!0):htmlIntegrationElements.has(name)&&this.foreignContext.unshift(!1))),(_d=(_c=this.cbs).onopentagname)===null||_d===void 0||_d.call(_c,name),this.cbs.onopentag&&(this.attribs={})}endOpenTag(isImplied){var _a4,_b;this.startIndex=this.openTagStart,this.attribs&&((_b=(_a4=this.cbs).onopentag)===null||_b===void 0||_b.call(_a4,this.tagname,this.attribs,isImplied),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(endIndex){this.endIndex=endIndex,this.endOpenTag(!1),this.startIndex=endIndex+1}onclosetag(start,endIndex){var _a4,_b,_c,_d,_e2,_f,_g,_h;this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames&&(name=name.toLowerCase()),this.htmlMode&&(foreignContextElements.has(name)||htmlIntegrationElements.has(name))&&this.foreignContext.shift(),this.isVoidElement(name))this.htmlMode&&name==="br"&&((_d=(_c=this.cbs).onopentagname)===null||_d===void 0||_d.call(_c,"br"),(_f=(_e2=this.cbs).onopentag)===null||_f===void 0||_f.call(_e2,"br",{},!0),(_h=(_g=this.cbs).onclosetag)===null||_h===void 0||_h.call(_g,"br",!1));else{let pos=this.stack.indexOf(name);if(pos!==-1)for(let index2=0;index2<=pos;index2++){let element=this.stack.shift();(_b=(_a4=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a4,element,index2!==pos)}else this.htmlMode&&name==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=endIndex+1}onselfclosingtag(endIndex){this.endIndex=endIndex,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=endIndex+1):this.onopentagend(endIndex)}closeCurrentTag(isOpenImplied){var _a4,_b;let name=this.tagname;this.endOpenTag(isOpenImplied),this.stack[0]===name&&((_b=(_a4=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a4,name,!isOpenImplied),this.stack.shift())}onattribname(start,endIndex){this.startIndex=start;let name=this.getSlice(start,endIndex);this.attribname=this.lowerCaseAttributeNames?name.toLowerCase():name}onattribdata(start,endIndex){this.attribvalue+=this.getSlice(start,endIndex)}onattribentity(cp2){this.attribvalue+=fromCodePoint2(cp2)}onattribend(quote2,endIndex){var _a4,_b;this.endIndex=endIndex,(_b=(_a4=this.cbs).onattribute)===null||_b===void 0||_b.call(_a4,this.attribname,this.attribvalue,quote2===QuoteType.Double?'"':quote2===QuoteType.Single?"'":quote2===QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(value){let index2=value.search(reNameEnd),name=index2<0?value:value.substr(0,index2);return this.lowerCaseTagNames&&(name=name.toLowerCase()),name}ondeclaration(start,endIndex){this.endIndex=endIndex;let value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){let name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`!${name}`,`!${value}`)}this.startIndex=endIndex+1}onprocessinginstruction(start,endIndex){this.endIndex=endIndex;let value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){let name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`?${name}`,`?${value}`)}this.startIndex=endIndex+1}oncomment(start,endIndex,offset){var _a4,_b,_c,_d;this.endIndex=endIndex,(_b=(_a4=this.cbs).oncomment)===null||_b===void 0||_b.call(_a4,this.getSlice(start,endIndex-offset)),(_d=(_c=this.cbs).oncommentend)===null||_d===void 0||_d.call(_c),this.startIndex=endIndex+1}oncdata(start,endIndex,offset){var _a4,_b,_c,_d,_e2,_f,_g,_h,_j,_k;this.endIndex=endIndex;let value=this.getSlice(start,endIndex-offset);!this.htmlMode||this.options.recognizeCDATA?((_b=(_a4=this.cbs).oncdatastart)===null||_b===void 0||_b.call(_a4),(_d=(_c=this.cbs).ontext)===null||_d===void 0||_d.call(_c,value),(_f=(_e2=this.cbs).oncdataend)===null||_f===void 0||_f.call(_e2)):((_h=(_g=this.cbs).oncomment)===null||_h===void 0||_h.call(_g,`[CDATA[${value}]]`),(_k=(_j=this.cbs).oncommentend)===null||_k===void 0||_k.call(_j)),this.startIndex=endIndex+1}onend(){var _a4,_b;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let index2=0;index2<this.stack.length;index2++)this.cbs.onclosetag(this.stack[index2],!0)}(_b=(_a4=this.cbs).onend)===null||_b===void 0||_b.call(_a4)}reset(){var _a4,_b,_c,_d;(_b=(_a4=this.cbs).onreset)===null||_b===void 0||_b.call(_a4),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(_d=(_c=this.cbs).onparserinit)===null||_d===void 0||_d.call(_c,this),this.buffers.length=0,this.foreignContext.length=0,this.foreignContext.unshift(!this.htmlMode),this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(data2){this.reset(),this.end(data2)}getSlice(start,end2){for(;start-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let slice2=this.buffers[0].slice(start-this.bufferOffset,end2-this.bufferOffset);for(;end2-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),slice2+=this.buffers[0].slice(0,end2-this.bufferOffset);return slice2}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(chunk){var _a4,_b;if(this.ended){(_b=(_a4=this.cbs).onerror)===null||_b===void 0||_b.call(_a4,new Error(".write() after done!"));return}this.buffers.push(chunk),this.tokenizer.running&&(this.tokenizer.write(chunk),this.writeIndex++)}end(chunk){var _a4,_b;if(this.ended){(_b=(_a4=this.cbs).onerror)===null||_b===void 0||_b.call(_a4,new Error(".end() after done!"));return}chunk&&this.write(chunk),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(chunk){this.write(chunk)}done(chunk){this.end(chunk)}}}});function parseDocument(data2,options){let handler=new DomHandler(void 0,options);return new Parser(handler,options).end(data2),handler.root}var init_esm7=__esm({"../../node_modules/.pnpm/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/index.js"(){init_Parser();init_Parser();init_esm3();init_esm3();init_Tokenizer();init_esm2();init_esm6();init_esm6();init_esm6();__name(parseDocument,"parseDocument")}});var attributes_exports={};__export(attributes_exports,{addClass:()=>addClass,attr:()=>attr,data:()=>data,hasClass:()=>hasClass,prop:()=>prop,removeAttr:()=>removeAttr,removeClass:()=>removeClass,toggleClass:()=>toggleClass,val:()=>val});function getAttr(elem,name,xmlMode){var _a4;if(!(!elem||!isTag2(elem))){if((_a4=elem.attribs)!==null&&_a4!==void 0||(elem.attribs={}),!name)return elem.attribs;if(hasOwn(elem.attribs,name))return!xmlMode&&rboolean.test(name)?name:elem.attribs[name];if(elem.name==="option"&&name==="value")return text(elem.children);if(elem.name==="input"&&(elem.attribs.type==="radio"||elem.attribs.type==="checkbox")&&name==="value")return"on"}}function setAttr(el,name,value){value===null?removeAttribute(el,name):el.attribs[name]=`${value}`}function attr(name,value){if(typeof name=="object"||value!==void 0){if(typeof value=="function"){if(typeof name!="string")throw new Error("Bad combination of arguments.");return domEach(this,(el,i)=>{isTag2(el)&&setAttr(el,name,value.call(el,i,el.attribs[name]))})}return domEach(this,el=>{if(isTag2(el))if(typeof name=="object")for(let objName of Object.keys(name)){let objValue=name[objName];setAttr(el,objName,objValue)}else setAttr(el,name,value)})}return arguments.length>1?this:getAttr(this[0],name,this.options.xmlMode)}function getProp(el,name,xmlMode){return name in el?el[name]:!xmlMode&&rboolean.test(name)?getAttr(el,name,!1)!==void 0:getAttr(el,name,xmlMode)}function setProp(el,name,value,xmlMode){name in el?el[name]=value:setAttr(el,name,!xmlMode&&rboolean.test(name)?value?"":null:`${value}`)}function prop(name,value){var _a4;if(typeof name=="string"&&value===void 0){let el=this[0];if(!el)return;switch(name){case"style":{let property=this.css(),keys=Object.keys(property);for(let i=0;i<keys.length;i++)property[i]=keys[i];return property.length=keys.length,property}case"tagName":case"nodeName":return isTag2(el)?el.name.toUpperCase():void 0;case"href":case"src":{if(!isTag2(el))return;let prop2=(_a4=el.attribs)===null||_a4===void 0?void 0:_a4[name];return typeof URL<"u"&&(name==="href"&&(el.tagName==="a"||el.tagName==="link")||name==="src"&&(el.tagName==="img"||el.tagName==="iframe"||el.tagName==="audio"||el.tagName==="video"||el.tagName==="source"))&&prop2!==void 0&&this.options.baseURI?new URL(prop2,this.options.baseURI).href:prop2}case"innerText":return innerText(el);case"textContent":return textContent(el);case"outerHTML":return el.type===esm_exports.Root?this.html():this.clone().wrap("<container />").parent().html();case"innerHTML":return this.html();default:return isTag2(el)?getProp(el,name,this.options.xmlMode):void 0}}if(typeof name=="object"||value!==void 0){if(typeof value=="function"){if(typeof name=="object")throw new TypeError("Bad combination of arguments.");return domEach(this,(el,i)=>{isTag2(el)&&setProp(el,name,value.call(el,i,getProp(el,name,this.options.xmlMode)),this.options.xmlMode)})}return domEach(this,el=>{if(isTag2(el))if(typeof name=="object")for(let key of Object.keys(name)){let val2=name[key];setProp(el,key,val2,this.options.xmlMode)}else setProp(el,name,value,this.options.xmlMode)})}}function setData(elem,name,value){var _a4;(_a4=elem.data)!==null&&_a4!==void 0||(elem.data={}),typeof name=="object"?Object.assign(elem.data,name):typeof name=="string"&&value!==void 0&&(elem.data[name]=value)}function readAllData(el){for(let domName of Object.keys(el.attribs)){if(!domName.startsWith(dataAttrPrefix))continue;let jsName=camelCase(domName.slice(dataAttrPrefix.length));hasOwn(el.data,jsName)||(el.data[jsName]=parseDataValue(el.attribs[domName]))}return el.data}function readData(el,name){let domName=dataAttrPrefix+cssCase(name),data2=el.data;if(hasOwn(data2,name))return data2[name];if(hasOwn(el.attribs,domName))return data2[name]=parseDataValue(el.attribs[domName])}function parseDataValue(value){if(value==="null")return null;if(value==="true")return!0;if(value==="false")return!1;let num=Number(value);if(value===String(num))return num;if(rbrace.test(value))try{return JSON.parse(value)}catch{}return value}function data(name,value){var _a4;let elem=this[0];if(!elem||!isTag2(elem))return;let dataEl=elem;return(_a4=dataEl.data)!==null&&_a4!==void 0||(dataEl.data={}),name==null?readAllData(dataEl):typeof name=="object"||value!==void 0?(domEach(this,el=>{isTag2(el)&&(typeof name=="object"?setData(el,name):setData(el,name,value))}),this):readData(dataEl,name)}function val(value){let querying=arguments.length===0,element=this[0];if(!element||!isTag2(element))return querying?void 0:this;switch(element.name){case"textarea":return this.text(value);case"select":{let option=this.find("option:selected");if(!querying){if(this.attr("multiple")==null&&typeof value=="object")return this;this.find("option").removeAttr("selected");let values=typeof value=="object"?value:[value];for(let val2 of values)this.find(`option[value="${val2}"]`).attr("selected","");return this}return this.attr("multiple")?option.toArray().map(el=>text(el.children)):option.attr("value")}case"button":case"input":case"option":return querying?this.attr("value"):this.attr("value",value)}}function removeAttribute(elem,name){!elem.attribs||!hasOwn(elem.attribs,name)||delete elem.attribs[name]}function splitNames(names){return names?names.trim().split(rspace):[]}function removeAttr(name){let attrNames=splitNames(name);for(let attrName of attrNames)domEach(this,elem=>{isTag2(elem)&&removeAttribute(elem,attrName)});return this}function hasClass(className){return this.toArray().some(elem=>{let clazz=isTag2(elem)&&elem.attribs.class,idx=-1;if(clazz&&className.length>0)for(;(idx=clazz.indexOf(className,idx+1))>-1;){let end2=idx+className.length;if((idx===0||rspace.test(clazz[idx-1]))&&(end2===clazz.length||rspace.test(clazz[end2])))return!0}return!1})}function addClass(value){if(typeof value=="function")return domEach(this,(el,i)=>{if(isTag2(el)){let className=el.attribs.class||"";addClass.call([el],value.call(el,i,className))}});if(!value||typeof value!="string")return this;let classNames=value.split(rspace),numElements=this.length;for(let i=0;i<numElements;i++){let el=this[i];if(!isTag2(el))continue;let className=getAttr(el,"class",!1);if(className){let setClass=` ${className} `;for(let cn of classNames){let appendClass=`${cn} `;setClass.includes(` ${appendClass}`)||(setClass+=appendClass)}setAttr(el,"class",setClass.trim())}else setAttr(el,"class",classNames.join(" ").trim())}return this}function removeClass(name){if(typeof name=="function")return domEach(this,(el,i)=>{isTag2(el)&&removeClass.call([el],name.call(el,i,el.attribs.class||""))});let classes=splitNames(name),numClasses=classes.length,removeAll=arguments.length===0;return domEach(this,el=>{if(isTag2(el))if(removeAll)el.attribs.class="";else{let elClasses=splitNames(el.attribs.class),changed=!1;for(let j2=0;j2<numClasses;j2++){let index2=elClasses.indexOf(classes[j2]);index2!==-1&&(elClasses.splice(index2,1),changed=!0,j2--)}changed&&(el.attribs.class=elClasses.join(" "))}})}function toggleClass(value,stateVal){if(typeof value=="function")return domEach(this,(el,i)=>{isTag2(el)&&toggleClass.call([el],value.call(el,i,el.attribs.class||"",stateVal),stateVal)});if(!value||typeof value!="string")return this;let classNames=value.split(rspace),numClasses=classNames.length,state=typeof stateVal=="boolean"?stateVal?1:-1:0,numElements=this.length;for(let i=0;i<numElements;i++){let el=this[i];if(!isTag2(el))continue;let elementClasses=splitNames(el.attribs.class);for(let j2=0;j2<numClasses;j2++){let index2=elementClasses.indexOf(classNames[j2]);state>=0&&index2===-1?elementClasses.push(classNames[j2]):state<=0&&index2!==-1&&elementClasses.splice(index2,1)}el.attribs.class=elementClasses.join(" ")}return this}var _a3,hasOwn,rspace,dataAttrPrefix,rboolean,rbrace,init_attributes=__esm({"../../node_modules/.pnpm/cheerio@1.2.0/node_modules/cheerio/dist/esm/api/attributes.js"(){init_static();init_utils2();init_esm3();init_esm6();init_esm7();hasOwn=(_a3=Object.hasOwn)!==null&&_a3!==void 0?_a3:((object,prop2)=>Object.prototype.hasOwnProperty.call(object,prop2)),rspace=/\s+/,dataAttrPrefix="data-",rboolean=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,rbrace=/^{[^]*}$|^\[[^]*]$/;__name(getAttr,"getAttr");__name(setAttr,"setAttr");__name(attr,"attr");__name(getProp,"getProp");__name(setProp,"setProp");__name(prop,"prop");__name(setData,"setData");__name(readAllData,"readAllData");__name(readData,"readData");__name(parseDataValue,"parseDataValue");__name(data,"data");__name(val,"val");__name(removeAttribute,"removeAttribute");__name(splitNames,"splitNames");__name(removeAttr,"removeAttr");__name(hasClass,"hasClass");__name(addClass,"addClass");__name(removeClass,"removeClass");__name(toggleClass,"toggleClass")}});var SelectorType,AttributeAction,init_types2=__esm({"../../node_modules/.pnpm/css-what@6.2.2/node_modules/css-what/lib/es/types.js"(){(function(SelectorType2){SelectorType2.Attribute="attribute",SelectorType2.Pseudo="pseudo",SelectorType2.PseudoElement="pseudo-element",SelectorType2.Tag="tag",SelectorType2.Universal="universal",SelectorType2.Adjacent="adjacent",SelectorType2.Child="child",SelectorType2.Descendant="descendant",SelectorType2.Parent="parent",SelectorType2.Sibling="sibling",SelectorType2.ColumnCombinator="column-combinator"})(SelectorType||(SelectorType={}));(function(AttributeAction2){AttributeAction2.Any="any",AttributeAction2.Element="element",AttributeAction2.End="end",AttributeAction2.Equals="equals",AttributeAction2.Exists="exists",AttributeAction2.Hyphen="hyphen",AttributeAction2.Not="not",AttributeAction2.Start="start"})(AttributeAction||(AttributeAction={}))}});function isTraversal(selector){switch(selector.type){case SelectorType.Adjacent:case SelectorType.Child:case SelectorType.Descendant:case SelectorType.Parent:case SelectorType.Sibling:case SelectorType.ColumnCombinator:return!0;default:return!1}}function funescape(_2,escaped,escapedWhitespace){let high=parseInt(escaped,16)-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,high&1023|56320)}function unescapeCSS(str){return str.replace(reEscape,funescape)}function isQuote(c2){return c2===39||c2===34}function isWhitespace2(c2){return c2===32||c2===9||c2===10||c2===12||c2===13}function parse9(selector){let subselects2=[],endIndex=parseSelector(subselects2,`${selector}`,0);if(endIndex<selector.length)throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);return subselects2}function parseSelector(subselects2,selector,selectorIndex){let tokens=[];function getName2(offset){let match=selector.slice(selectorIndex+offset).match(reName);if(!match)throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);let[name]=match;return selectorIndex+=offset+name.length,unescapeCSS(name)}__name(getName2,"getName");function stripWhitespace(offset){for(selectorIndex+=offset;selectorIndex<selector.length&&isWhitespace2(selector.charCodeAt(selectorIndex));)selectorIndex++}__name(stripWhitespace,"stripWhitespace");function readValueWithParenthesis(){selectorIndex+=1;let start=selectorIndex,counter=1;for(;counter>0&&selectorIndex<selector.length;selectorIndex++)selector.charCodeAt(selectorIndex)===40&&!isEscaped(selectorIndex)?counter++:selector.charCodeAt(selectorIndex)===41&&!isEscaped(selectorIndex)&&counter--;if(counter)throw new Error("Parenthesis not matched");return unescapeCSS(selector.slice(start,selectorIndex-1))}__name(readValueWithParenthesis,"readValueWithParenthesis");function isEscaped(pos){let slashCount=0;for(;selector.charCodeAt(--pos)===92;)slashCount++;return(slashCount&1)===1}__name(isEscaped,"isEscaped");function ensureNotTraversal(){if(tokens.length>0&&isTraversal(tokens[tokens.length-1]))throw new Error("Did not expect successive traversals.")}__name(ensureNotTraversal,"ensureNotTraversal");function addTraversal(type){if(tokens.length>0&&tokens[tokens.length-1].type===SelectorType.Descendant){tokens[tokens.length-1].type=type;return}ensureNotTraversal(),tokens.push({type})}__name(addTraversal,"addTraversal");function addSpecialAttribute(name,action){tokens.push({type:SelectorType.Attribute,name,action,value:getName2(1),namespace:null,ignoreCase:"quirks"})}__name(addSpecialAttribute,"addSpecialAttribute");function finalizeSubselector(){if(tokens.length&&tokens[tokens.length-1].type===SelectorType.Descendant&&tokens.pop(),tokens.length===0)throw new Error("Empty sub-selector");subselects2.push(tokens)}if(__name(finalizeSubselector,"finalizeSubselector"),stripWhitespace(0),selector.length===selectorIndex)return selectorIndex;loop:for(;selectorIndex<selector.length;){let firstChar=selector.charCodeAt(selectorIndex);switch(firstChar){case 32:case 9:case 10:case 12:case 13:{(tokens.length===0||tokens[0].type!==SelectorType.Descendant)&&(ensureNotTraversal(),tokens.push({type:SelectorType.Descendant})),stripWhitespace(1);break}case 62:{addTraversal(SelectorType.Child),stripWhitespace(1);break}case 60:{addTraversal(SelectorType.Parent),stripWhitespace(1);break}case 126:{addTraversal(SelectorType.Sibling),stripWhitespace(1);break}case 43:{addTraversal(SelectorType.Adjacent),stripWhitespace(1);break}case 46:{addSpecialAttribute("class",AttributeAction.Element);break}case 35:{addSpecialAttribute("id",AttributeAction.Equals);break}case 91:{stripWhitespace(1);let name,namespace=null;selector.charCodeAt(selectorIndex)===124?name=getName2(1):selector.startsWith("*|",selectorIndex)?(namespace="*",name=getName2(2)):(name=getName2(0),selector.charCodeAt(selectorIndex)===124&&selector.charCodeAt(selectorIndex+1)!==61&&(namespace=name,name=getName2(1))),stripWhitespace(0);let action=AttributeAction.Exists,possibleAction=actionTypes.get(selector.charCodeAt(selectorIndex));if(possibleAction){if(action=possibleAction,selector.charCodeAt(selectorIndex+1)!==61)throw new Error("Expected `=`");stripWhitespace(2)}else selector.charCodeAt(selectorIndex)===61&&(action=AttributeAction.Equals,stripWhitespace(1));let value="",ignoreCase=null;if(action!=="exists"){if(isQuote(selector.charCodeAt(selectorIndex))){let quote2=selector.charCodeAt(selectorIndex),sectionEnd=selectorIndex+1;for(;sectionEnd<selector.length&&(selector.charCodeAt(sectionEnd)!==quote2||isEscaped(sectionEnd));)sectionEnd+=1;if(selector.charCodeAt(sectionEnd)!==quote2)throw new Error("Attribute value didn't end");value=unescapeCSS(selector.slice(selectorIndex+1,sectionEnd)),selectorIndex=sectionEnd+1}else{let valueStart=selectorIndex;for(;selectorIndex<selector.length&&(!isWhitespace2(selector.charCodeAt(selectorIndex))&&selector.charCodeAt(selectorIndex)!==93||isEscaped(selectorIndex));)selectorIndex+=1;value=unescapeCSS(selector.slice(valueStart,selectorIndex))}stripWhitespace(0);let forceIgnore=selector.charCodeAt(selectorIndex)|32;forceIgnore===115?(ignoreCase=!1,stripWhitespace(1)):forceIgnore===105&&(ignoreCase=!0,stripWhitespace(1))}if(selector.charCodeAt(selectorIndex)!==93)throw new Error("Attribute selector didn't terminate");selectorIndex+=1;let attributeSelector={type:SelectorType.Attribute,name,action,value,namespace,ignoreCase};tokens.push(attributeSelector);break}case 58:{if(selector.charCodeAt(selectorIndex+1)===58){tokens.push({type:SelectorType.PseudoElement,name:getName2(2).toLowerCase(),data:selector.charCodeAt(selectorIndex)===40?readValueWithParenthesis():null});continue}let name=getName2(1).toLowerCase(),data2=null;if(selector.charCodeAt(selectorIndex)===40)if(unpackPseudos.has(name)){if(isQuote(selector.charCodeAt(selectorIndex+1)))throw new Error(`Pseudo-selector ${name} cannot be quoted`);if(data2=[],selectorIndex=parseSelector(data2,selector,selectorIndex+1),selector.charCodeAt(selectorIndex)!==41)throw new Error(`Missing closing parenthesis in :${name} (${selector})`);selectorIndex+=1}else{if(data2=readValueWithParenthesis(),stripQuotesFromPseudos.has(name)){let quot=data2.charCodeAt(0);quot===data2.charCodeAt(data2.length-1)&&isQuote(quot)&&(data2=data2.slice(1,-1))}data2=unescapeCSS(data2)}tokens.push({type:SelectorType.Pseudo,name,data:data2});break}case 44:{finalizeSubselector(),tokens=[],stripWhitespace(1);break}default:{if(selector.startsWith("/*",selectorIndex)){let endIndex=selector.indexOf("*/",selectorIndex+2);if(endIndex<0)throw new Error("Comment was not terminated");selectorIndex=endIndex+2,tokens.length===0&&stripWhitespace(0);break}let namespace=null,name;if(firstChar===42)selectorIndex+=1,name="*";else if(firstChar===124){if(name="",selector.charCodeAt(selectorIndex+1)===124){addTraversal(SelectorType.ColumnCombinator),stripWhitespace(2);break}}else if(reName.test(selector.slice(selectorIndex)))name=getName2(0);else break loop;selector.charCodeAt(selectorIndex)===124&&selector.charCodeAt(selectorIndex+1)!==124&&(namespace=name,selector.charCodeAt(selectorIndex+1)===42?(name="*",selectorIndex+=2):name=getName2(1)),tokens.push(name==="*"?{type:SelectorType.Universal,namespace}:{type:SelectorType.Tag,name,namespace})}}}return finalizeSubselector(),selectorIndex}var reName,reEscape,actionTypes,unpackPseudos,stripQuotesFromPseudos,init_parse=__esm({"../../node_modules/.pnpm/css-what@6.2.2/node_modules/css-what/lib/es/parse.js"(){init_types2();reName=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,reEscape=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,actionTypes=new Map([[126,AttributeAction.Element],[94,AttributeAction.Start],[36,AttributeAction.End],[42,AttributeAction.Any],[33,AttributeAction.Not],[124,AttributeAction.Hyphen]]),unpackPseudos=new Set(["has","not","matches","is","where","host","host-context"]);__name(isTraversal,"isTraversal");stripQuotesFromPseudos=new Set(["contains","icontains"]);__name(funescape,"funescape");__name(unescapeCSS,"unescapeCSS");__name(isQuote,"isQuote");__name(isWhitespace2,"isWhitespace");__name(parse9,"parse");__name(parseSelector,"parseSelector")}});var init_es=__esm({"../../node_modules/.pnpm/css-what@6.2.2/node_modules/css-what/lib/es/index.js"(){init_types2();init_parse()}});var require_boolbase=__commonJS({"../../node_modules/.pnpm/boolbase@1.0.0/node_modules/boolbase/index.js"(exports2,module2){module2.exports={trueFunc:__name(function(){return!0},"trueFunc"),falseFunc:__name(function(){return!1},"falseFunc")}}});function isTraversal2(token){return!procedure.has(token.type)}function sortByProcedure(arr){let procs=arr.map(getProcedure);for(let i=1;i<arr.length;i++){let procNew=procs[i];if(!(procNew<0))for(let j2=i-1;j2>=0&&procNew<procs[j2];j2--){let token=arr[j2+1];arr[j2+1]=arr[j2],arr[j2]=token,procs[j2+1]=procs[j2],procs[j2]=procNew}}}function getProcedure(token){var _a4,_b;let proc=(_a4=procedure.get(token.type))!==null&&_a4!==void 0?_a4:-1;return token.type===SelectorType.Attribute?(proc=(_b=attributes.get(token.action))!==null&&_b!==void 0?_b:4,token.action===AttributeAction.Equals&&token.name==="id"&&(proc=9),token.ignoreCase&&(proc>>=1)):token.type===SelectorType.Pseudo&&(token.data?token.name==="has"||token.name==="contains"?proc=0:Array.isArray(token.data)?(proc=Math.min(...token.data.map(d3=>Math.min(...d3.map(getProcedure)))),proc<0&&(proc=0)):proc=2:proc=3),proc}var procedure,attributes,init_sort=__esm({"../../node_modules/.pnpm/css-select@5.2.2/node_modules/css-select/lib/esm/sort.js"(){init_es();procedure=new Map([[SelectorType.Universal,50],[SelectorType.Tag,30],[SelectorType.Attribute,1],[SelectorType.Pseudo,0]]);__name(isTraversal2,"isTraversal");attributes=new Map([[AttributeAction.Exists,10],[AttributeAction.Equals,8],[AttributeAction.Not,7],[AttributeAction.Start,6],[AttributeAction.End,6],[AttributeAction.Any,5]]);__name(sortByProcedure,"sortByProcedure");__name(getProcedure,"getProcedure")}});function escapeRegex2(value){return value.replace(reChars,"\\$&")}function shouldIgnoreCase(selector,options){return typeof selector.ignoreCase=="boolean"?selector.ignoreCase:selector.ignoreCase==="quirks"?!!options.quirksMode:!options.xmlMode&&caseInsensitiveAttributes.has(selector.name)}var import_boolbase,reChars,caseInsensitiveAttributes,attributeRules,init_attributes2=__esm({"../../node_modules/.pnpm/css-select@5.2.2/node_modules/css-select/lib/esm/attributes.js"(){import_boolbase=__toESM(require_boolbase(),1),reChars=/[-[\]{}()*+?.,\\^$|#\s]/g;__name(escapeRegex2,"escapeRegex");caseInsensitiveAttributes=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);__name(shouldIgnoreCase,"shouldIgnoreCase");attributeRules={equals(next2,data2,options){let{adapter}=options,{name}=data2,{value}=data2;return shouldIgnoreCase(data2,options)?(value=value.toLowerCase(),elem=>{let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&attr2.length===value.length&&attr2.toLowerCase()===value&&next2(elem)}):elem=>adapter.getAttributeValue(elem,name)===value&&next2(elem)},hyphen(next2,data2,options){let{adapter}=options,{name}=data2,{value}=data2,len=value.length;return shouldIgnoreCase(data2,options)?(value=value.toLowerCase(),__name(function(elem){let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&(attr2.length===len||attr2.charAt(len)==="-")&&attr2.substr(0,len).toLowerCase()===value&&next2(elem)},"hyphenIC")):__name(function(elem){let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&(attr2.length===len||attr2.charAt(len)==="-")&&attr2.substr(0,len)===value&&next2(elem)},"hyphen")},element(next2,data2,options){let{adapter}=options,{name,value}=data2;if(/\s/.test(value))return import_boolbase.default.falseFunc;let regex=new RegExp(`(?:^|\\s)${escapeRegex2(value)}(?:$|\\s)`,shouldIgnoreCase(data2,options)?"i":"");return __name(function(elem){let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&attr2.length>=value.length&&regex.test(attr2)&&next2(elem)},"element")},exists(next2,{name},{adapter}){return elem=>adapter.hasAttrib(elem,name)&&next2(elem)},start(next2,data2,options){let{adapter}=options,{name}=data2,{value}=data2,len=value.length;return len===0?import_boolbase.default.falseFunc:shouldIgnoreCase(data2,options)?(value=value.toLowerCase(),elem=>{let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&attr2.length>=len&&attr2.substr(0,len).toLowerCase()===value&&next2(elem)}):elem=>{var _a4;return!!(!((_a4=adapter.getAttributeValue(elem,name))===null||_a4===void 0)&&_a4.startsWith(value))&&next2(elem)}},end(next2,data2,options){let{adapter}=options,{name}=data2,{value}=data2,len=-value.length;return len===0?import_boolbase.default.falseFunc:shouldIgnoreCase(data2,options)?(value=value.toLowerCase(),elem=>{var _a4;return((_a4=adapter.getAttributeValue(elem,name))===null||_a4===void 0?void 0:_a4.substr(len).toLowerCase())===value&&next2(elem)}):elem=>{var _a4;return!!(!((_a4=adapter.getAttributeValue(elem,name))===null||_a4===void 0)&&_a4.endsWith(value))&&next2(elem)}},any(next2,data2,options){let{adapter}=options,{name,value}=data2;if(value==="")return import_boolbase.default.falseFunc;if(shouldIgnoreCase(data2,options)){let regex=new RegExp(escapeRegex2(value),"i");return __name(function(elem){let attr2=adapter.getAttributeValue(elem,name);return attr2!=null&&attr2.length>=value.length&&regex.test(attr2)&&next2(elem)},"anyIC")}return elem=>{var _a4;return!!(!((_a4=adapter.getAttributeValue(elem,name))===null||_a4===void 0)&&_a4.includes(value))&&next2(elem)}},not(next2,data2,options){let{adapter}=options,{name}=data2,{value}=data2;return value===""?elem=>!!adapter.getAttributeValue(elem,name)&&next2(elem):shouldIgnoreCase(data2,options)?(value=value.toLowerCase(),elem=>{let attr2=adapter.getAttributeValue(elem,name);return(attr2==null||attr2.length!==value.length||attr2.toLowerCase()!==value)&&next2(elem)}):elem=>adapter.getAttributeValue(elem,name)!==value&&next2(elem)}}}});function parse10(formula){if(formula=formula.trim().toLowerCase(),formula==="even")return[2,0];if(formula==="odd")return[2,1];let idx=0,a=0,sign=readSign(),number=readNumber();if(idx<formula.length&&formula.charAt(idx)==="n"&&(idx++,a=sign*(number??1),skipWhitespace(),idx<formula.length?(sign=readSign(),skipWhitespace(),number=readNumber()):sign=number=0),number===null||idx<formula.length)throw new Error(`n-th rule couldn't be parsed ('${formula}')`);return[a,sign*number];function readSign(){return formula.charAt(idx)==="-"?(idx++,-1):(formula.charAt(idx)==="+"&&idx++,1)}function readNumber(){let start=idx,value=0;for(;idx<formula.length&&formula.charCodeAt(idx)>=ZERO&&formula.charCodeAt(idx)<=NINE;)value=value*10+(formula.charCodeAt(idx)-ZERO),idx++;return idx===start?null:value}function skipWhitespace(){for(;idx<formula.length&&whitespace.has(formula.charCodeAt(idx));)idx++}}var whitespace,ZERO,NINE,init_parse2=__esm({"../../node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/parse.js"(){whitespace=new Set([9,10,12,13,32]),ZERO=48,NINE=57;__name(parse10,"parse")}});function compile2(parsed){let a=parsed[0],b=parsed[1]-1;if(b<0&&a<=0)return import_boolbase2.default.falseFunc;if(a===-1)return index2=>index2<=b;if(a===0)return index2=>index2===b;if(a===1)return b<0?import_boolbase2.default.trueFunc:index2=>index2>=b;let absA=Math.abs(a),bMod=(b%absA+absA)%absA;return a>1?index2=>index2>=b&&index2%absA===bMod:index2=>index2<=b&&index2%absA===bMod}var import_boolbase2,init_compile=__esm({"../../node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/compile.js"(){import_boolbase2=__toESM(require_boolbase(),1);__name(compile2,"compile")}});function nthCheck(formula){return compile2(parse10(formula))}var init_esm8=__esm({"../../node_modules/.pnpm/nth-check@2.1.1/node_modules/nth-check/lib/esm/index.js"(){init_parse2();init_compile();__name(nthCheck,"nthCheck")}});function getChildFunc(next2,adapter){return elem=>{let parent2=adapter.getParent(elem);return parent2!=null&&adapter.isTag(parent2)&&next2(elem)}}function dynamicStatePseudo(name){return __name(function(next2,_rule,{adapter}){let func=adapter[name];return typeof func!="function"?import_boolbase3.default.falseFunc:__name(function(elem){return func(elem)&&next2(elem)},"active")},"dynamicPseudo")}var import_boolbase3,filters,init_filters=__esm({"../../node_modules/.pnpm/css-select@5.2.2/node_modules/css-select/lib/esm/pseudo-selectors/filters.js"(){init_esm8();import_boolbase3=__toESM(require_boolbase(),1);__name(getChildFunc,"getChildFunc");filters={contains(next2,text3,{adapter}){return __name(function(elem){return next2(elem)&&adapter.getText(elem).includes(text3)},"contains")},icontains(next2,text3,{adapter}){let itext=text3.toLowerCase();return __name(function(elem){return next2(elem)&&adapter.getText(elem).toLowerCase().includes(itext)},"icontains")},"nth-child"(next2,rule,{adapter,equals}){let func=nthCheck(rule);return func===import_boolbase3.default.falseFunc?import_boolbase3.default.falseFunc:func===import_boolbase3.default.trueFunc?getChildFunc(next2,adapter):__name(function(elem){let siblings2=adapter.getSiblings(elem),pos=0;for(let i=0;i<siblings2.length&&!equals(elem,siblings2[i]);i++)adapter.isTag(siblings2[i])&&pos++;return func(pos)&&next2(elem)},"nthChild")},"nth-last-child"(next2,rule,{adapter,equals}){let func=nthCheck(rule);return func===import_boolbase3.default.falseFunc?import_boolbase3.default.falseFunc:func===import_boolbase3.default.trueFunc?getChildFunc(next2,adapter):__name(function(elem){let siblings2=adapter.getSiblings(elem),pos=0;for(let i=siblings2.length-1;i>=0&&!equals(elem,siblings2[i]);i--)adapter.isTag(siblings2[i])&&pos++;return func(pos)&&next2(elem)},"nthLastChild")},"nth-of-type"(next2,rule,{adapter,equals}){let func=nthCheck(rule);return func===import_boolbase3.default.falseFunc?import_boolbase3.default.falseFunc:func===import_boolbase3.default.trueFunc?getChildFunc(next2,adapter):__name(function(elem){let siblings2=adapter.getSiblings(elem),pos=0;for(let i=0;i<siblings2.length;i++){let currentSibling=siblings2[i];if(equals(elem,currentSibling))break;adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem)&&pos++}return func(pos)&&next2(elem)},"nthOfType")},"nth-last-of-type"(next2,rule,{adapter,equals}){let func=nthCheck(rule);return func===import_boolbase3.default.falseFunc?import_boolbase3.default.falseFunc:func===import_boolbase3.default.trueFunc?getChildFunc(next2,adapter):__name(function(elem){let siblings2=adapter.getSiblings(elem),pos=0;for(let i=siblings2.length-1;i>=0;i--){let currentSibling=siblings2[i];if(equals(elem,currentSibling))break;adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===adapter.getName(elem)&&pos++}return func(pos)&&next2(elem)},"nthLastOfType")},root(next2,_rule,{adapter}){return elem=>{let parent2=adapter.getParent(elem);return(parent2==null||!adapter.isTag(parent2))&&next2(elem)}},scope(next2,rule,options,context){let{equals}=options;return!context||context.length===0?filters.root(next2,rule,options):context.length===1?elem=>equals(context[0],elem)&&next2(elem):elem=>context.includes(elem)&&next2(elem)},hover:dynamicStatePseudo("isHovered"),visited:dynamicStatePseudo("isVisited"),active:dynamicStatePseudo("isActive")};__name(dynamicStatePseudo,"dynamicStatePseudo")}});function verifyPseudoArgs(func,name,subselect,argIndex){if(subselect===null){if(func.length>argIndex)throw new Error(`Pseudo-class :${name} requires an argument`)}else if(func.length===argIndex)throw new Error(`Pseudo-class :${name} doesn't have any arguments`)}var pseudos,init_pseudos=__esm({"../../node_modules/.pnpm/css-select@5.2.2/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js"(){pseudos={empty(elem,{adapter}){return!adapter.getChildren(elem).some(elem2=>adapter.isTag(elem2)||adapter.getText(elem2)!=="")},"first-child"(elem,{adapter,equals}){if(adapter.prevElementSibling)return adapter.prevElementSibling(elem)==null;let firstChild=adapter.getSiblings(elem).find(elem2=>adapter.isTag(elem2));return firstChild!=null&&equals(elem,firstChild)},"last-child"(elem,{adapter,equals}){let siblings2=adapter.getSiblings(elem);for(let i=siblings2.length-1;i>=0;i--){if(equals(elem,siblings2[i]))return!0;if(adapter.isTag(siblings2[i]))break}return!1},"first-of-type"(elem,{adapter,equals}){let siblings2=adapter.getSiblings(elem),elemName=adapter.getName(elem);for(let i=0;i<siblings2.length;i++){let currentSibling=siblings2[i];if(equals(elem,currentSibling))return!0;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return!1},"last-of-type"(elem,{adapter,equals}){let siblings2=adapter.getSiblings(elem),elemName=adapter.getName(elem);for(let i=siblings2.length-1;i>=0;i--){let currentSibling=siblings2[i];if(equals(elem,currentSibling))return!0;if(adapter.isTag(currentSibling)&&adapter.getName(currentSibling)===elemName)break}return!1},"only-of-type"(elem,{adapter,equals}){let elemName=adapter.getName(elem);return adapter.getSiblings(elem).every(sibling=>equals(elem,sibling)||!adapter.isTag(sibling)||adapter.getName(sibling)!==elemName)},"only-child"(elem,{adapter,equals}){return adapter.getSiblings(elem).every(sibling=>equals(elem,sibling)||!adapter.isTag(sibling))}};__name(verifyPseudoArgs,"verifyPseudoArgs")}});var aliases,init_aliases=__esm({"../../node_modules/.pnpm/css-select@5.2.2/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js"(){aliases={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is(
@@ -1063,14 +1063,14 @@ ${fontImport}@import 'tailwindcss';
1063
1063
  max-width: 78rem;
1064
1064
  }
1065
1065
  `}function buildDesignDoc(manifest,theme,siteName){return[`${GENERATED_MARKER}`,`# ${siteName} design`,"","This file was generated by `fimo migrate apply` from the migration manifest.","","## Direction",`- Source platform: ${manifest.source.platform}`,`- Recommendation: ${manifest.recommendation.mode} - ${manifest.recommendation.reason}`,"","## Theme tokens",`- Background: \`${theme.background}\``,`- Foreground: \`${theme.foreground}\``,`- Primary: \`${theme.primary}\``,`- Accent: \`${theme.accent}\``,`- Secondary: \`${theme.secondary}\``,`- Radius: \`${theme.radius}\``,`- Display font: \`${theme.displayFont}\``,`- Body font: \`${theme.bodyFont}\``,"","## Extracted notes",...manifest.design.notes.length>0?manifest.design.notes.map(note=>`- ${note}`):["- No extra notes captured"],"","## Use this design file for","- refining the generated pages","- choosing final imagery","- tuning spacing and hierarchy","- aligning later CMS-driven components with the migrated visual system"].join(`
1066
- `)}function planPages(pages){let seenRoutes=new Set,seenNames=new Set,planned=[];for(let page of pages){if(seenRoutes.has(page.route)||LEGAL_PAGE_MAP.has(page.route))continue;seenRoutes.add(page.route);let componentName=pageComponentName(page.route),suffix=2;for(;seenNames.has(componentName);)componentName=`${pageComponentName(page.route)}${suffix}`,suffix+=1;seenNames.add(componentName),planned.push({page,componentName,modulePath:path40.join(GENERATED_PAGES_DIR,`${componentName}.tsx`)})}return planned.some(item=>item.page.route==="/")||planned.unshift({page:{route:"/",url:manifestLikeUrl(pages[0]?.url??"https://example.com","/"),title:"Home",kind:"marketing",seo:{title:"Home",description:null},headings:[],sections:[{id:"hero",label:"Hero",kind:"hero"},{id:"overview",label:"Overview",kind:"content-section"}],forms:[],imageCount:0,artifacts:{html:""},confidence:.3},componentName:"HomePage",modulePath:path40.join(GENERATED_PAGES_DIR,"HomePage.tsx")}),planned.sort((a,b)=>a.page.route==="/"?-1:b.page.route==="/"?1:a.page.route.localeCompare(b.page.route))}function selectNavPages(pages){let topLevel=pages.filter(page=>page.route==="/"?!0:LEGAL_PAGE_MAP.has(page.route)||page.kind==="blog-post"?!1:page.route.split("/").filter(Boolean).length<=1);return(topLevel.length>0?topLevel:pages.filter(page=>page.route==="/"||page.kind!=="blog-post")).sort((a,b)=>a.route==="/"?-1:b.route==="/"?1:a.route.localeCompare(b.route)).slice(0,6)}function selectLegalRoutes(pages){let found=pages.map(page=>page.route).filter(routePath=>LEGAL_PAGE_MAP.has(routePath)),privacy=found.find(routePath=>routePath.includes("privacy"))??"/privacy",terms=found.find(routePath=>routePath.includes("terms"))??"/terms";return[privacy,terms]}function buildEntrySeed(cwd,page,collection){let data2={slug:page.route.split("/").filter(Boolean).pop()??"entry",title:page.title},extracted=extractPageSeedContent(cwd,page);if(collection.fields.includes("excerpt")){let excerpt=page.seo.description??extracted.paragraphs[0];excerpt&&(data2.excerpt=excerpt)}if(collection.fields.includes("body")&&(data2.body=buildRichTextFromPage(page,extracted)),collection.fields.includes("publishedAt")&&(data2.publishedAt=new Date().toISOString().slice(0,10)),collection.fields.includes("coverImage")){let coverImage=page.images?.[0]??extracted.images[0];coverImage&&(data2.coverImage={sourceUrl:coverImage.src,alt:coverImage.alt??page.title})}return data2}function extractPageSeedContent(cwd,page){let fallback={headings:page.headings,paragraphs:page.paragraphs??[],images:page.images??[]},htmlPath=page.artifacts.html?path40.resolve(cwd,page.artifacts.html):"";if(!htmlPath||!fs36.existsSync(htmlPath))return fallback;try{let $2=load(fs36.readFileSync(htmlPath,"utf8")),headings=unique($2("h1, h2, h3").toArray().map(element=>cleanText($2(element).text())).filter(Boolean).slice(0,12)),paragraphs=unique($2("p").toArray().map(element=>cleanText($2(element).text())).filter(value=>value.length>=24).slice(0,20)),images=uniqueImageObjects($2("img[src]").toArray().map(element=>({src:absolutizeUrl($2(element).attr("src")??"",page.url),alt:cleanText($2(element).attr("alt")??"")||null})).filter(image=>!!image.src));return{headings:headings.length>0?headings:fallback.headings,paragraphs:paragraphs.length>0?paragraphs:fallback.paragraphs,images:images.length>0?images:fallback.images}}catch{return fallback}}function buildRichTextFromPage(page,extracted){let content2=[...extracted.headings.slice(0,4).map(heading=>({type:"heading",attrs:{level:2},content:[{type:"text",text:heading}]})),...extracted.paragraphs.slice(0,10).map(paragraph=>({type:"paragraph",content:[{type:"text",text:paragraph}]}))];return content2.length===0&&content2.push(...page.sections.map((section,index2)=>({type:index2===0?"heading":"paragraph",...index2===0?{attrs:{level:2}}:{},content:[{type:"text",text:index2===0?section.label:`Refine the ${section.label.toLowerCase()} content for ${page.title} using the source snapshot at ${page.artifacts.html}.`}]}))),{type:"doc",content:content2}}function buildSectionBody(page,section){return section.kind==="hero"?`Recreate the main promise of ${page.title} here. Use the source snapshot as reference, then replace this provisional copy with final messaging and media.`:section.kind==="testimonials"?`Use this block to restore the original proof points and social validation from ${page.title}.`:section.kind==="pricing"?`Translate the original offer structure from ${page.title} into clearer pricing or plan language inside Fimo.`:section.kind==="contact"?`This section mirrors the original contact journey from ${page.title}. Replace the builder backend with a live Fimo form before publishing.`:`This section rebuilds the original ${section.label.toLowerCase()} narrative from ${page.title} inside Fimo. Refine the final copy, layout, and media here.`}function buildFormBody(form){return`A draft Fimo form config was generated for this route with ${form.fields.length} field${form.fields.length===1?"":"s"}. Push it before wiring a live form component.`}function buildCallToActionTitle(page){return page.kind==="blog-post"?"Turn this article structure into a repeatable content system":page.kind==="contact"?"Replace the builder workflow with a live Fimo submission flow":"Refine the migrated structure into a polished Fimo experience"}function buildCallToActionBody(page,siteName){return page.kind==="blog-post"?`This article route was restored from the source site for ${siteName}. The next step is connecting it to real CMS entries and richer editorial content.`:`The route structure, theme, and provisional content for ${page.title} are now in place. Replace the scaffold text with final brand copy, assets, and CMS-backed content.`}function defaultSectionsForPage(page){return[{id:"overview",label:`${page.title} overview`,kind:"content-section"},{id:"highlights",label:`${page.title} highlights`,kind:"feature-grid"}]}function pageDescription(page,siteName){return page.seo.description??`This page recreates the original ${page.title} experience from the source site for ${siteName} and is ready for deeper Fimo customization.`}function pageEyebrow(page){return page.kind==="blog-post"?"Migrated article":page.kind==="contact"?"Contact route":page.kind==="legal"?"Legal page":page.route==="/"?"Migrated homepage":"Migrated page"}function navLabel(page){return page.route==="/"?"Home":page.title||titleize2(page.route.split("/").filter(Boolean).pop()??"Page")}function routeId(routePath){return slugify(routePath==="/"?"home":routePath.replace(/^\//,"").replace(/\//g,"-"))||"page"}function routeToKey(routePath){return routePath==="/"?"home":routePath.replace(/^\//,"").split("/").filter(Boolean).map(part=>slugify(part)).join(".")}function pageComponentName(routePath){if(routePath==="/")return"HomePage";let normalized=`${routePath.replace(/^\//,"").split("/").filter(Boolean).map(part=>titleize2(part).replace(/\s+/g,"")).join("")||"Page"}Page`;return/^[A-Za-z_$]/.test(normalized)?normalized:`Route${normalized}`}function sectionKeyFromLabel(label,index2){return slugify(label)||`section-${index2+1}`}function pluralLabelForSchema(collection){let singular=titleize2(collection.suggestedSchema.replace(/([a-z0-9])([A-Z])/g,"$1 $2"));return singular.endsWith("s")?singular:`${singular}s`}function fieldTypeForSchemaField(fieldName){let lower=fieldName.toLowerCase();return lower==="body"||lower==="content"||lower==="description"?"richtext":lower==="coverimage"||lower==="heroimage"||lower.endsWith("image")?"media":"string"}function normalizeFormFieldType(kind){let lower=kind.toLowerCase();return lower==="email"?"email":lower==="textarea"?"textarea":lower==="number"?"number":lower==="phone"||lower==="tel"||lower==="telephone"?"phone":lower==="url"?"url":lower==="checkbox"?"checkbox":lower==="date"?"date":lower==="hidden"?"hidden":lower==="file"?"file":lower==="select"||lower==="radio"?"select":"text"}function deriveSiteName(manifest){let homeTitle=manifest.pages.find(page=>page.route==="/")?.seo.title||manifest.pages[0]?.seo.title;if(homeTitle){let trimmed=homeTitle.split(/[-|:]/)[0]?.trim();if(trimmed)return trimmed}return titleize2(manifest.project.name.replace(/[-_]+/g," "))}function pickBodyFont(manifest){return manifest.design.tokens.fonts.find(font=>font.role==="body")?.family||manifest.design.tokens.fonts[0]?.family||"Manrope"}function pickDisplayFont(manifest,bodyFont){return manifest.design.tokens.fonts.find(font=>font.role==="heading")?.family||manifest.design.tokens.fonts.find(font=>font.family!==bodyFont)?.family||bodyFont}function buildGoogleFontImport(families){return`@import url('https://fonts.googleapis.com/css2?${families.map(family=>`family=${encodeURIComponent(family).replace(/%20/g,"+")}:wght@400;500;600;700`).join("&")}&display=swap');`}function shouldImportFont(family){return family.length>0&&!GENERIC_FONTS.has(family.toLowerCase())}function quote(value){return JSON.stringify(value)}function quoteCssFontStack(family,serifFallback){let wrapped=family.includes(" ")?`'${family}'`:family;return serifFallback?`${wrapped}, ui-serif, Georgia, Cambria, 'Times New Roman', serif`:`${wrapped}, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif`}function titleize2(value){return value.replace(/[-_]+/g," ").split(/\s+/).filter(Boolean).map(part=>part.charAt(0).toUpperCase()+part.slice(1)).join(" ")}function slugify(value){return value.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function normalizeColorToken(value){let trimmed=value.trim();if(/^#[0-9a-fA-F]{3,8}$/.test(trimmed))return trimmed;let rgb=trimmed.match(/^rgba?\(([^)]+)\)$/i);if(rgb){let parts=rgb[1].split(",").map(part=>Number.parseFloat(part.trim())).filter(part=>Number.isFinite(part));if(parts.length>=3)return`rgb(${Math.round(parts[0])} ${Math.round(parts[1])} ${Math.round(parts[2])})`}return null}function withAlpha(color,alpha){let rgb=toRgb(color);return rgb?`rgb(${rgb.r} ${rgb.g} ${rgb.b} / ${alpha})`:color}function getLuminance(color){let rgb=toRgb(color);if(!rgb)return null;let channels=[rgb.r,rgb.g,rgb.b].map(channel=>{let normalized=channel/255;return normalized<=.03928?normalized/12.92:((normalized+.055)/1.055)**2.4});return .2126*channels[0]+.7152*channels[1]+.0722*channels[2]}function toRgb(color){let hex=color.match(/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i);if(hex){let value=hex[1];return value.length===3&&(value=value.split("").map(part=>`${part}${part}`).join("")),value.length===8&&(value=value.slice(0,6)),{r:Number.parseInt(value.slice(0,2),16),g:Number.parseInt(value.slice(2,4),16),b:Number.parseInt(value.slice(4,6),16)}}let rgb=color.match(/^rgb\(([^)]+)\)$/i);if(rgb){let parts=rgb[1].trim().split(/\s+/).map(part=>Number.parseFloat(part)).filter(part=>Number.isFinite(part));if(parts.length>=3)return{r:Math.round(parts[0]),g:Math.round(parts[1]),b:Math.round(parts[2])}}return null}function readArtifactIndex(cwd){let artifactPath=path40.join(cwd,GENERATED_ROOT,"artifacts.json");if(!fs36.existsSync(artifactPath))return null;try{return JSON.parse(fs36.readFileSync(artifactPath,"utf8"))}catch{return null}}function cleanupPreviousArtifacts(cwd,index2){if(index2)for(let relativePath of[...index2.schemaFiles,...index2.formFiles,...index2.pageFiles,...index2.componentFiles,...index2.generatedFiles])deleteIfExists(path40.join(cwd,relativePath))}function writeFile2(cwd,relativePath,content2,written){let absolutePath=path40.join(cwd,relativePath);ensureDir(path40.dirname(absolutePath)),fs36.writeFileSync(absolutePath,content2,"utf8"),written.push(absolutePath)}function ensureDir(dir){fs36.mkdirSync(dir,{recursive:!0})}function resetDir(dir){fs36.rmSync(dir,{recursive:!0,force:!0}),fs36.mkdirSync(dir,{recursive:!0})}function deleteIfExists(filePath){fs36.existsSync(filePath)&&fs36.rmSync(filePath,{recursive:!0,force:!0})}function unique(values){return[...new Set(values)]}function uniqueImageObjects(images){let seen=new Set,results=[];for(let image of images)seen.has(image.src)||(seen.add(image.src),results.push(image));return results}function cleanText(value){return value.replace(/\s+/g," ").trim()}function absolutizeUrl(value,base){if(!value)return null;try{return new URL(value,base).toString()}catch{return null}}function toPosix(value){return value.split(path40.sep).join("/")}function manifestLikeUrl(seedUrl,routePath){try{let url=new URL(seedUrl);return url.pathname=routePath,url.toString()}catch{return`https://example.com${routePath}`}}var GENERATED_MARKER,MIGRATION_DIR,GENERATED_ROOT,GENERATED_PAGES_DIR,GENERATED_COMPONENTS_DIR,SCHEMAS_DIR,FORMS_DIR,GENERIC_FONTS,LEGAL_PAGE_MAP,init_migrate_apply=__esm({"src/cli/commands/migrate-apply.ts"(){init_slim();init_sync_forms();init_sync_schemas();GENERATED_MARKER="/* AUTO-GENERATED by fimo migrate apply */",MIGRATION_DIR=path40.join(".fimo","migrations","current"),GENERATED_ROOT=path40.join(MIGRATION_DIR,"generated"),GENERATED_PAGES_DIR=path40.join("src","pages","migrated"),GENERATED_COMPONENTS_DIR=path40.join("src","components","migration"),SCHEMAS_DIR=path40.join("src","schemas"),FORMS_DIR=path40.join("src","forms"),GENERIC_FONTS=new Set(["arial","georgia","helvetica","monospace","sans-serif","serif","system-ui","times new roman","ui-sans-serif","ui-serif"]),LEGAL_PAGE_MAP=new Map([["/privacy","./pages/Privacy.tsx"],["/privacy-policy","./pages/Privacy.tsx"],["/terms","./pages/Terms.tsx"],["/terms-of-service","./pages/Terms.tsx"]]);__name(applyMigrationManifest,"applyMigrationManifest");__name(pickThemePalette,"pickThemePalette");__name(buildSchemaDefinition,"buildSchemaDefinition");__name(buildFormDefinition,"buildFormDefinition");__name(writeSchemas,"writeSchemas");__name(writeForms,"writeForms");__name(writeCollectionSeeds,"writeCollectionSeeds");__name(writeGeneratedNotes,"writeGeneratedNotes");__name(buildMigrationShellComponent,"buildMigrationShellComponent");__name(buildMigrationPageTemplateComponent,"buildMigrationPageTemplateComponent");__name(buildPageModule,"buildPageModule");__name(buildRoutesFile,"buildRoutesFile");__name(buildFimoConfig,"buildFimoConfig");__name(buildThemeCss,"buildThemeCss");__name(buildDesignDoc,"buildDesignDoc");__name(planPages,"planPages");__name(selectNavPages,"selectNavPages");__name(selectLegalRoutes,"selectLegalRoutes");__name(buildEntrySeed,"buildEntrySeed");__name(extractPageSeedContent,"extractPageSeedContent");__name(buildRichTextFromPage,"buildRichTextFromPage");__name(buildSectionBody,"buildSectionBody");__name(buildFormBody,"buildFormBody");__name(buildCallToActionTitle,"buildCallToActionTitle");__name(buildCallToActionBody,"buildCallToActionBody");__name(defaultSectionsForPage,"defaultSectionsForPage");__name(pageDescription,"pageDescription");__name(pageEyebrow,"pageEyebrow");__name(navLabel,"navLabel");__name(routeId,"routeId");__name(routeToKey,"routeToKey");__name(pageComponentName,"pageComponentName");__name(sectionKeyFromLabel,"sectionKeyFromLabel");__name(pluralLabelForSchema,"pluralLabelForSchema");__name(fieldTypeForSchemaField,"fieldTypeForSchemaField");__name(normalizeFormFieldType,"normalizeFormFieldType");__name(deriveSiteName,"deriveSiteName");__name(pickBodyFont,"pickBodyFont");__name(pickDisplayFont,"pickDisplayFont");__name(buildGoogleFontImport,"buildGoogleFontImport");__name(shouldImportFont,"shouldImportFont");__name(quote,"quote");__name(quoteCssFontStack,"quoteCssFontStack");__name(titleize2,"titleize");__name(slugify,"slugify");__name(normalizeColorToken,"normalizeColorToken");__name(withAlpha,"withAlpha");__name(getLuminance,"getLuminance");__name(toRgb,"toRgb");__name(readArtifactIndex,"readArtifactIndex");__name(cleanupPreviousArtifacts,"cleanupPreviousArtifacts");__name(writeFile2,"writeFile");__name(ensureDir,"ensureDir");__name(resetDir,"resetDir");__name(deleteIfExists,"deleteIfExists");__name(unique,"unique");__name(uniqueImageObjects,"uniqueImageObjects");__name(cleanText,"cleanText");__name(absolutizeUrl,"absolutizeUrl");__name(toPosix,"toPosix");__name(manifestLikeUrl,"manifestLikeUrl")}});import{spawnSync as spawnSync3}from"node:child_process";import fs37 from"node:fs";import path41 from"node:path";import{fileURLToPath as fileURLToPath7}from"node:url";async function migrateInitCommand(sourceUrlArg,dirArg,options){let projectRoot=await ensureMigrationProject(dirArg,options);if(!projectRoot){process.exitCode=1;return}let project=loadProjectMetadata(projectRoot),maxPages=parseMaxPages(options.maxPages),maxAssets=parseMaxAssets(options.maxAssets),sourceUrl=normalizeSourceUrl(sourceUrlArg),spinner2=fe();spinner2.start(`Scanning ${sourceUrl}`);try{let manifest=await buildMigrationArtifacts({project,sourceUrl,maxPages,maxAssets,downloadMedia:options.downloadMedia!==!1});if(spinner2.stop(`Migration artifacts written to ${path41.join(projectRoot,MIGRATION_DIR2)}`),options.json){console.log(JSON.stringify(manifest,null,2));return}printManifestSummary(manifest),console.log(`
1066
+ `)}function planPages(pages){let seenRoutes=new Set,seenNames=new Set,planned=[];for(let page of pages){if(seenRoutes.has(page.route)||LEGAL_PAGE_MAP.has(page.route))continue;seenRoutes.add(page.route);let componentName=pageComponentName(page.route),suffix=2;for(;seenNames.has(componentName);)componentName=`${pageComponentName(page.route)}${suffix}`,suffix+=1;seenNames.add(componentName),planned.push({page,componentName,modulePath:path40.join(GENERATED_PAGES_DIR,`${componentName}.tsx`)})}return planned.some(item=>item.page.route==="/")||planned.unshift({page:{route:"/",url:manifestLikeUrl(pages[0]?.url??"https://example.com","/"),title:"Home",kind:"marketing",seo:{title:"Home",description:null},headings:[],sections:[{id:"hero",label:"Hero",kind:"hero"},{id:"overview",label:"Overview",kind:"content-section"}],forms:[],imageCount:0,artifacts:{html:""},confidence:.3},componentName:"HomePage",modulePath:path40.join(GENERATED_PAGES_DIR,"HomePage.tsx")}),planned.sort((a,b)=>a.page.route==="/"?-1:b.page.route==="/"?1:a.page.route.localeCompare(b.page.route))}function selectNavPages(pages){let topLevel=pages.filter(page=>page.route==="/"?!0:LEGAL_PAGE_MAP.has(page.route)||page.kind==="blog-post"?!1:page.route.split("/").filter(Boolean).length<=1);return(topLevel.length>0?topLevel:pages.filter(page=>page.route==="/"||page.kind!=="blog-post")).sort((a,b)=>a.route==="/"?-1:b.route==="/"?1:a.route.localeCompare(b.route)).slice(0,6)}function selectLegalRoutes(pages){let found=pages.map(page=>page.route).filter(routePath=>LEGAL_PAGE_MAP.has(routePath)),privacy=found.find(routePath=>routePath.includes("privacy"))??"/privacy",terms=found.find(routePath=>routePath.includes("terms"))??"/terms";return[privacy,terms]}function buildEntrySeed(cwd,page,collection){let data2={slug:page.route.split("/").filter(Boolean).pop()??"entry",title:page.title},extracted=extractPageSeedContent(cwd,page);if(collection.fields.includes("excerpt")){let excerpt=page.seo.description??extracted.paragraphs[0];excerpt&&(data2.excerpt=excerpt)}if(collection.fields.includes("body")&&(data2.body=buildRichTextFromPage(page,extracted)),collection.fields.includes("publishedAt")&&(data2.publishedAt=new Date().toISOString().slice(0,10)),collection.fields.includes("coverImage")){let coverImage=page.images?.[0]??extracted.images[0];coverImage&&(data2.coverImage={sourceUrl:coverImage.src,alt:coverImage.alt??page.title})}return data2}function extractPageSeedContent(cwd,page){let fallback={headings:page.headings,paragraphs:page.paragraphs??[],images:page.images??[]},htmlPath=page.artifacts.html?path40.resolve(cwd,page.artifacts.html):"";if(!htmlPath||!fs36.existsSync(htmlPath))return fallback;try{let $2=load(fs36.readFileSync(htmlPath,"utf8")),headings=unique($2("h1, h2, h3").toArray().map(element=>cleanText($2(element).text())).filter(Boolean).slice(0,12)),paragraphs=unique($2("p").toArray().map(element=>cleanText($2(element).text())).filter(value=>value.length>=24).slice(0,20)),images=uniqueImageObjects($2("img[src]").toArray().map(element=>({src:absolutizeUrl($2(element).attr("src")??"",page.url),alt:cleanText($2(element).attr("alt")??"")||null})).filter(image=>!!image.src));return{headings:headings.length>0?headings:fallback.headings,paragraphs:paragraphs.length>0?paragraphs:fallback.paragraphs,images:images.length>0?images:fallback.images}}catch{return fallback}}function buildRichTextFromPage(page,extracted){let content2=[...extracted.headings.slice(0,4).map(heading=>({type:"heading",attrs:{level:2},content:[{type:"text",text:heading}]})),...extracted.paragraphs.slice(0,10).map(paragraph=>({type:"paragraph",content:[{type:"text",text:paragraph}]}))];return content2.length===0&&content2.push(...page.sections.map((section,index2)=>({type:index2===0?"heading":"paragraph",...index2===0?{attrs:{level:2}}:{},content:[{type:"text",text:index2===0?section.label:`Refine the ${section.label.toLowerCase()} content for ${page.title} using the source snapshot at ${page.artifacts.html}.`}]}))),{type:"doc",content:content2}}function buildSectionBody(page,section){return section.kind==="hero"?`Recreate the main promise of ${page.title} here. Use the source snapshot as reference, then replace this provisional copy with final messaging and media.`:section.kind==="testimonials"?`Use this block to restore the original proof points and social validation from ${page.title}.`:section.kind==="pricing"?`Translate the original offer structure from ${page.title} into clearer pricing or plan language inside Fimo.`:section.kind==="contact"?`This section mirrors the original contact journey from ${page.title}. Replace the builder backend with a live Fimo form before publishing.`:`This section rebuilds the original ${section.label.toLowerCase()} narrative from ${page.title} inside Fimo. Refine the final copy, layout, and media here.`}function buildFormBody(form){return`A draft Fimo form config was generated for this route with ${form.fields.length} field${form.fields.length===1?"":"s"}. Push it before wiring a live form component.`}function buildCallToActionTitle(page){return page.kind==="blog-post"?"Turn this article structure into a repeatable content system":page.kind==="contact"?"Replace the builder workflow with a live Fimo submission flow":"Refine the migrated structure into a polished Fimo experience"}function buildCallToActionBody(page,siteName){return page.kind==="blog-post"?`This article route was restored from the source site for ${siteName}. The next step is connecting it to real CMS entries and richer editorial content.`:`The route structure, theme, and provisional content for ${page.title} are now in place. Replace the scaffold text with final brand copy, assets, and CMS-backed content.`}function defaultSectionsForPage(page){return[{id:"overview",label:`${page.title} overview`,kind:"content-section"},{id:"highlights",label:`${page.title} highlights`,kind:"feature-grid"}]}function pageDescription(page,siteName){return page.seo.description??`This page recreates the original ${page.title} experience from the source site for ${siteName} and is ready for deeper Fimo customization.`}function pageEyebrow(page){return page.kind==="blog-post"?"Migrated article":page.kind==="contact"?"Contact route":page.kind==="legal"?"Legal page":page.route==="/"?"Migrated homepage":"Migrated page"}function navLabel(page){return page.route==="/"?"Home":page.title||titleize2(page.route.split("/").filter(Boolean).pop()??"Page")}function routeId(routePath){return slugify(routePath==="/"?"home":routePath.replace(/^\//,"").replace(/\//g,"-"))||"page"}function routeToKey(routePath){return routePath==="/"?"home":routePath.replace(/^\//,"").split("/").filter(Boolean).map(part=>slugify(part)).join(".")}function pageComponentName(routePath){if(routePath==="/")return"HomePage";let normalized=`${routePath.replace(/^\//,"").split("/").filter(Boolean).map(part=>titleize2(part).replace(/\s+/g,"")).join("")||"Page"}Page`;return/^[A-Za-z_$]/.test(normalized)?normalized:`Route${normalized}`}function sectionKeyFromLabel(label,index2){return slugify(label)||`section-${index2+1}`}function pluralLabelForSchema(collection){let singular=titleize2(collection.suggestedSchema.replace(/([a-z0-9])([A-Z])/g,"$1 $2"));return singular.endsWith("s")?singular:`${singular}s`}function fieldTypeForSchemaField(fieldName){let lower=fieldName.toLowerCase();return lower==="body"||lower==="content"||lower==="description"?"richtext":lower==="coverimage"||lower==="heroimage"||lower.endsWith("image")?"media":"string"}function normalizeFormFieldType(kind){let lower=kind.toLowerCase();return lower==="email"?"email":lower==="textarea"?"textarea":lower==="number"?"number":lower==="phone"||lower==="tel"||lower==="telephone"?"phone":lower==="url"?"url":lower==="checkbox"?"checkbox":lower==="date"?"date":lower==="hidden"?"hidden":lower==="file"?"file":lower==="select"||lower==="radio"?"select":"text"}function deriveSiteName(manifest){let homeTitle=manifest.pages.find(page=>page.route==="/")?.seo.title||manifest.pages[0]?.seo.title;if(homeTitle){let trimmed=homeTitle.split(/[-|:]/)[0]?.trim();if(trimmed)return trimmed}return titleize2(manifest.project.name.replace(/[-_]+/g," "))}function pickBodyFont(manifest){return manifest.design.tokens.fonts.find(font=>font.role==="body")?.family||manifest.design.tokens.fonts[0]?.family||"Manrope"}function pickDisplayFont(manifest,bodyFont){return manifest.design.tokens.fonts.find(font=>font.role==="heading")?.family||manifest.design.tokens.fonts.find(font=>font.family!==bodyFont)?.family||bodyFont}function buildGoogleFontImport(families){return`@import url('https://fonts.googleapis.com/css2?${families.map(family=>`family=${encodeURIComponent(family).replace(/%20/g,"+")}:wght@400;500;600;700`).join("&")}&display=swap');`}function shouldImportFont(family){return family.length>0&&!GENERIC_FONTS.has(family.toLowerCase())}function quote(value){return JSON.stringify(value)}function quoteCssFontStack(family,serifFallback){let wrapped=family.includes(" ")?`'${family}'`:family;return serifFallback?`${wrapped}, ui-serif, Georgia, Cambria, 'Times New Roman', serif`:`${wrapped}, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif`}function titleize2(value){return value.replace(/[-_]+/g," ").split(/\s+/).filter(Boolean).map(part=>part.charAt(0).toUpperCase()+part.slice(1)).join(" ")}function slugify(value){return value.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function normalizeColorToken(value){let trimmed=value.trim();if(/^#[0-9a-fA-F]{3,8}$/.test(trimmed))return trimmed;let rgb=trimmed.match(/^rgba?\(([^)]+)\)$/i);if(rgb){let parts=rgb[1].split(",").map(part=>Number.parseFloat(part.trim())).filter(part=>Number.isFinite(part));if(parts.length>=3)return`rgb(${Math.round(parts[0])} ${Math.round(parts[1])} ${Math.round(parts[2])})`}return null}function withAlpha(color,alpha){let rgb=toRgb(color);return rgb?`rgb(${rgb.r} ${rgb.g} ${rgb.b} / ${alpha})`:color}function getLuminance(color){let rgb=toRgb(color);if(!rgb)return null;let channels=[rgb.r,rgb.g,rgb.b].map(channel=>{let normalized=channel/255;return normalized<=.03928?normalized/12.92:((normalized+.055)/1.055)**2.4});return .2126*channels[0]+.7152*channels[1]+.0722*channels[2]}function toRgb(color){let hex=color.match(/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i);if(hex){let value=hex[1];return value.length===3&&(value=value.split("").map(part=>`${part}${part}`).join("")),value.length===8&&(value=value.slice(0,6)),{r:Number.parseInt(value.slice(0,2),16),g:Number.parseInt(value.slice(2,4),16),b:Number.parseInt(value.slice(4,6),16)}}let rgb=color.match(/^rgb\(([^)]+)\)$/i);if(rgb){let parts=rgb[1].trim().split(/\s+/).map(part=>Number.parseFloat(part)).filter(part=>Number.isFinite(part));if(parts.length>=3)return{r:Math.round(parts[0]),g:Math.round(parts[1]),b:Math.round(parts[2])}}return null}function readArtifactIndex(cwd){let artifactPath=path40.join(cwd,GENERATED_ROOT,"artifacts.json");if(!fs36.existsSync(artifactPath))return null;try{return JSON.parse(fs36.readFileSync(artifactPath,"utf8"))}catch{return null}}function cleanupPreviousArtifacts(cwd,index2){if(index2)for(let relativePath of[...index2.schemaFiles,...index2.formFiles,...index2.pageFiles,...index2.componentFiles,...index2.generatedFiles])deleteIfExists(path40.join(cwd,relativePath))}function writeFile2(cwd,relativePath,content2,written){let absolutePath=path40.join(cwd,relativePath);ensureDir(path40.dirname(absolutePath)),fs36.writeFileSync(absolutePath,content2,"utf8"),written.push(absolutePath)}function ensureDir(dir){fs36.mkdirSync(dir,{recursive:!0})}function resetDir(dir){fs36.rmSync(dir,{recursive:!0,force:!0}),fs36.mkdirSync(dir,{recursive:!0})}function deleteIfExists(filePath){fs36.existsSync(filePath)&&fs36.rmSync(filePath,{recursive:!0,force:!0})}function unique(values){return[...new Set(values)]}function uniqueImageObjects(images){let seen=new Set,results=[];for(let image of images)seen.has(image.src)||(seen.add(image.src),results.push(image));return results}function cleanText(value){return value.replace(/\s+/g," ").trim()}function absolutizeUrl(value,base){if(!value)return null;try{return new URL(value,base).toString()}catch{return null}}function toPosix(value){return value.split(path40.sep).join("/")}function manifestLikeUrl(seedUrl,routePath){try{let url=new URL(seedUrl);return url.pathname=routePath,url.toString()}catch{return`https://example.com${routePath}`}}var GENERATED_MARKER,MIGRATION_DIR,GENERATED_ROOT,GENERATED_PAGES_DIR,GENERATED_COMPONENTS_DIR,SCHEMAS_DIR,FORMS_DIR,GENERIC_FONTS,LEGAL_PAGE_MAP,init_migrate_apply=__esm({"src/cli/commands/migrate-apply.ts"(){init_slim();init_sync_forms();init_sync_schemas();GENERATED_MARKER="/* AUTO-GENERATED by fimo migrate apply */",MIGRATION_DIR=path40.join(".fimo","migrations","current"),GENERATED_ROOT=path40.join(MIGRATION_DIR,"generated"),GENERATED_PAGES_DIR=path40.join("src","pages","migrated"),GENERATED_COMPONENTS_DIR=path40.join("src","components","migration"),SCHEMAS_DIR=path40.join("src","schemas"),FORMS_DIR=path40.join("src","forms"),GENERIC_FONTS=new Set(["arial","georgia","helvetica","monospace","sans-serif","serif","system-ui","times new roman","ui-sans-serif","ui-serif"]),LEGAL_PAGE_MAP=new Map([["/privacy","./pages/Privacy.tsx"],["/privacy-policy","./pages/Privacy.tsx"],["/terms","./pages/Terms.tsx"],["/terms-of-service","./pages/Terms.tsx"]]);__name(applyMigrationManifest,"applyMigrationManifest");__name(pickThemePalette,"pickThemePalette");__name(buildSchemaDefinition,"buildSchemaDefinition");__name(buildFormDefinition,"buildFormDefinition");__name(writeSchemas,"writeSchemas");__name(writeForms,"writeForms");__name(writeCollectionSeeds,"writeCollectionSeeds");__name(writeGeneratedNotes,"writeGeneratedNotes");__name(buildMigrationShellComponent,"buildMigrationShellComponent");__name(buildMigrationPageTemplateComponent,"buildMigrationPageTemplateComponent");__name(buildPageModule,"buildPageModule");__name(buildRoutesFile,"buildRoutesFile");__name(buildFimoConfig,"buildFimoConfig");__name(buildThemeCss,"buildThemeCss");__name(buildDesignDoc,"buildDesignDoc");__name(planPages,"planPages");__name(selectNavPages,"selectNavPages");__name(selectLegalRoutes,"selectLegalRoutes");__name(buildEntrySeed,"buildEntrySeed");__name(extractPageSeedContent,"extractPageSeedContent");__name(buildRichTextFromPage,"buildRichTextFromPage");__name(buildSectionBody,"buildSectionBody");__name(buildFormBody,"buildFormBody");__name(buildCallToActionTitle,"buildCallToActionTitle");__name(buildCallToActionBody,"buildCallToActionBody");__name(defaultSectionsForPage,"defaultSectionsForPage");__name(pageDescription,"pageDescription");__name(pageEyebrow,"pageEyebrow");__name(navLabel,"navLabel");__name(routeId,"routeId");__name(routeToKey,"routeToKey");__name(pageComponentName,"pageComponentName");__name(sectionKeyFromLabel,"sectionKeyFromLabel");__name(pluralLabelForSchema,"pluralLabelForSchema");__name(fieldTypeForSchemaField,"fieldTypeForSchemaField");__name(normalizeFormFieldType,"normalizeFormFieldType");__name(deriveSiteName,"deriveSiteName");__name(pickBodyFont,"pickBodyFont");__name(pickDisplayFont,"pickDisplayFont");__name(buildGoogleFontImport,"buildGoogleFontImport");__name(shouldImportFont,"shouldImportFont");__name(quote,"quote");__name(quoteCssFontStack,"quoteCssFontStack");__name(titleize2,"titleize");__name(slugify,"slugify");__name(normalizeColorToken,"normalizeColorToken");__name(withAlpha,"withAlpha");__name(getLuminance,"getLuminance");__name(toRgb,"toRgb");__name(readArtifactIndex,"readArtifactIndex");__name(cleanupPreviousArtifacts,"cleanupPreviousArtifacts");__name(writeFile2,"writeFile");__name(ensureDir,"ensureDir");__name(resetDir,"resetDir");__name(deleteIfExists,"deleteIfExists");__name(unique,"unique");__name(uniqueImageObjects,"uniqueImageObjects");__name(cleanText,"cleanText");__name(absolutizeUrl,"absolutizeUrl");__name(toPosix,"toPosix");__name(manifestLikeUrl,"manifestLikeUrl")}});import{spawnSync as spawnSync4}from"node:child_process";import fs37 from"node:fs";import path41 from"node:path";import{fileURLToPath as fileURLToPath7}from"node:url";async function migrateInitCommand(sourceUrlArg,dirArg,options){let projectRoot=await ensureMigrationProject(dirArg,options);if(!projectRoot){process.exitCode=1;return}let project=loadProjectMetadata(projectRoot),maxPages=parseMaxPages(options.maxPages),maxAssets=parseMaxAssets(options.maxAssets),sourceUrl=normalizeSourceUrl(sourceUrlArg),spinner2=fe();spinner2.start(`Scanning ${sourceUrl}`);try{let manifest=await buildMigrationArtifacts({project,sourceUrl,maxPages,maxAssets,downloadMedia:options.downloadMedia!==!1});if(spinner2.stop(`Migration artifacts written to ${path41.join(projectRoot,MIGRATION_DIR2)}`),options.json){console.log(JSON.stringify(manifest,null,2));return}printManifestSummary(manifest),console.log(`
1067
1067
  Next step: read ${path41.join(projectRoot,MIGRATION_DIR2,"brief.md")}`)}catch(error){spinner2.stop(`Migration bootstrap failed: ${error instanceof Error?error.message:String(error)}`),process.exitCode=1}}async function migratePullCommand(options){let projectRoot=requireProjectRoot(options.cwd);if(!projectRoot){process.exitCode=1;return}let manifestPath=path41.join(projectRoot,MIGRATION_DIR2,"manifest.json");if(!fs37.existsSync(manifestPath)){console.error("No migration manifest found. Run `fimo migrate init <url>` first."),process.exitCode=1;return}let previous=JSON.parse(fs37.readFileSync(manifestPath,"utf8")),project=loadProjectMetadata(projectRoot),maxPages=parseMaxPages(options.maxPages,previous.crawl.maxPages),maxAssets=parseMaxAssets(options.maxAssets),spinner2=fe();spinner2.start(`Refreshing ${previous.source.url}`);try{let manifest=await buildMigrationArtifacts({project,sourceUrl:previous.source.url,maxPages,maxAssets,downloadMedia:options.downloadMedia!==!1});if(spinner2.stop(`Migration artifacts refreshed in ${path41.join(projectRoot,MIGRATION_DIR2)}`),options.json){console.log(JSON.stringify(manifest,null,2));return}printManifestSummary(manifest)}catch(error){spinner2.stop(`Migration refresh failed: ${error instanceof Error?error.message:String(error)}`),process.exitCode=1}}async function migrateRunCommand(sourceUrlArg,dirArg,options){if(process.exitCode=void 0,console.log("Step 1/4: initialize migration"),await migrateInitCommand(sourceUrlArg,dirArg,options),hasFailed())return;let projectRoot=resolveProjectCwd(dirArg?path41.resolve(dirArg):options.cwd);if(console.log(`
1068
1068
  Step 2/4: inspect migration manifest`),migrateInspectCommand({cwd:projectRoot}),hasFailed()||(console.log(`
1069
1069
  Step 3/4: apply agent-ready Fimo scaffold`),migrateApplyCommand({cwd:projectRoot}),hasFailed()))return;console.log(`
1070
1070
  Step 4/4: prepare visual refinement handoff`);let{migrateRefineCommand:migrateRefineCommand2}=await Promise.resolve().then(()=>(init_migrate_refine(),migrate_refine_exports));migrateRefineCommand2({cwd:projectRoot,route:options.route}),!hasFailed()&&(console.log(`
1071
1071
  Agent-ready migration draft prepared for ${projectRoot}`),console.log("This is not the final visual rebuild yet. The CLI extracted the source, generated a scaffold, and wrote an agent handoff pack."),console.log(`Next step: ask your coding agent to follow ${path41.join(projectRoot,MIGRATION_DIR2,"refine","agent-prompt.md")}`))}function migrateInspectCommand(options){let projectRoot=requireProjectRoot(readStringOption(options,"cwd"));if(!projectRoot){process.exitCode=1;return}let manifestPath=path41.join(projectRoot,MIGRATION_DIR2,"manifest.json");if(!fs37.existsSync(manifestPath)){console.error("No migration manifest found. Run `fimo migrate init <url>` first."),process.exitCode=1;return}let manifest=JSON.parse(fs37.readFileSync(manifestPath,"utf8"));if(options.json){console.log(JSON.stringify(manifest,null,2));return}printManifestSummary(manifest)}function hasFailed(){return process.exitCode!==void 0&&Number(process.exitCode)!==0}function migrateApplyCommand(options){let projectRoot=requireProjectRoot(readStringOption(options,"cwd"));if(!projectRoot){process.exitCode=1;return}let manifest=readMigrationManifest(projectRoot);if(!manifest){process.exitCode=1;return}let spinner2=fe();spinner2.start("Generating Fimo migration scaffold");try{let result=applyMigrationManifest({cwd:projectRoot,manifest});if(spinner2.stop("Migration scaffold written"),options.json){console.log(JSON.stringify(result,null,2));return}if(console.log(`Project: ${projectRoot}`),console.log(`Pages written: ${result.pagesWritten}`),console.log(`Schemas: ${result.schemasWritten}`),console.log(`Forms: ${result.formsWritten}`),console.log(`Files written: ${result.written.length}`),console.log(`Translations: +${result.translations.created} ~${result.translations.updated} -${result.translations.deleted}`),console.log(`Codegen: schemas +${result.codegen.schemas.created}/~${result.codegen.schemas.updated}, forms +${result.codegen.forms.created}/~${result.codegen.forms.updated}`),result.warnings.length>0){console.log(`
1072
1072
  Warnings`);for(let warning of result.warnings)console.log(`- ${warning}`)}console.log(`
1073
- Next step: run \`fimo migrate refine -C ${projectRoot}\` or read ${path41.join(projectRoot,MIGRATION_DIR2,"generated","next-steps.md")}`)}catch(error){spinner2.stop(`Migration apply failed: ${error instanceof Error?error.message:String(error)}`),process.exitCode=1}}function migrateImportCommand(options){let projectRoot=requireProjectRoot(readStringOption(options,"cwd"));if(!projectRoot){process.exitCode=1;return}let mediaMapPath=path41.join(projectRoot,MIGRATION_DIR2,MEDIA_DIR,"map.json"),entriesDir=path41.join(projectRoot,MIGRATION_DIR2,"generated","entries"),schemasDir=path41.join(projectRoot,"src","schemas"),formsDir=path41.join(projectRoot,"src","forms"),media=fs37.existsSync(mediaMapPath)?readDownloadedMedia(mediaMapPath):[],schemas3=fs37.existsSync(schemasDir)?fs37.readdirSync(schemasDir).filter(name=>name.endsWith(".json")):[],forms3=fs37.existsSync(formsDir)?fs37.readdirSync(formsDir).filter(name=>name.endsWith(".json")):[],entryFiles=fs37.existsSync(entriesDir)?fs37.readdirSync(entriesDir).filter(name=>name.endsWith(".json")):[],entryCommands=entryFiles.map(file=>{let typeName=path41.basename(file,".json");return`Review ${path41.join(MIGRATION_DIR2,"generated","entries",file)}, then run fimo entries create ${typeName} --body '<entry-json>' -C ${projectRoot} for each approved entry`}),result={media:media.length,schemas:schemas3.length,forms:forms3.length,entryFiles:entryFiles.length,commands:[...media.map(asset=>`fimo assets upload ${asset.localPath} -C ${projectRoot}`),...schemas3.map(file=>`fimo schemas push ${path41.basename(file,".json")} -C ${projectRoot}`),...forms3.map(file=>`fimo forms push ${path41.basename(file,".json")} -C ${projectRoot}`),...entryCommands]};if(options.json){console.log(JSON.stringify(result,null,2));return}if(console.log("Migration import is handled by the regular Fimo CLI commands."),console.log("Review the generated files, then run the relevant commands below:"),result.commands.length===0)console.log("- No generated media, schemas, forms, or entry suggestions were found.");else for(let command of result.commands)console.log(`- ${command}`)}function migrateManifestCommand(options){let args=[resolveProjectCwd(readStringOption(options,"cwd"))];options.output&&args.push("--output",options.output),options.fresh&&args.push("--fresh"),runBundledMigrationScript("build-canonical-manifest.mjs",args)}function migrateReportCommand(options){let args=[resolveProjectCwd(readStringOption(options,"cwd"))];options.manifest&&args.push("--manifest",options.manifest),options.output&&args.push("--output",options.output),options.updateManifest===!1&&args.push("--no-update-manifest"),runBundledMigrationScript("write-migration-report.mjs",args)}function runBundledMigrationScript(scriptName,args){let scriptPath=path41.join(MIGRATION_SKILL_SCRIPTS_DIR,scriptName);if(!fs37.existsSync(scriptPath)){console.error(`Migration helper script not found: ${scriptPath}`),process.exitCode=1;return}let result=spawnSync3(process.execPath,[scriptPath,...args],{stdio:"inherit"});if(result.error){console.error(`Migration helper failed to start: ${result.error.message}`),process.exitCode=1;return}typeof result.status=="number"&&result.status!==0&&(process.exitCode=result.status)}function readStringOption(options,name){let value=options[name];if(typeof value=="string")return value;let longName=`--${name.replace(/[A-Z]/g,char=>`-${char.toLowerCase()}`)}`,shortName=name==="cwd"?"-C":null,rawArgs=process.argv.slice(2);for(let i=0;i<rawArgs.length;i+=1){let arg=rawArgs[i];if(arg===longName||shortName&&arg===shortName)return rawArgs[i+1];if(arg.startsWith(`${longName}=`))return arg.slice(longName.length+1)}}function readDownloadedMedia(mediaMapPath){return JSON.parse(fs37.readFileSync(mediaMapPath,"utf8")).filter(asset=>asset.status==="downloaded"&&asset.localPath)}async function ensureMigrationProject(dirArg,options){if(!dirArg)return requireProjectRoot(options.cwd);let explicitDir=path41.resolve(dirArg),resolvedRoot=resolveProjectCwd(explicitDir);if(fs37.existsSync(path41.join(resolvedRoot,".fimo.settings.json")))return resolvedRoot;if(fs37.existsSync(explicitDir)&&fs37.readdirSync(explicitDir).length>0)return console.error(`Refusing to initialize a migration in non-empty directory ${explicitDir}. Pass a Fimo project directory or an empty/new directory.`),null;await initCommand(explicitDir,{...options,skills:!1});let createdRoot=resolveProjectCwd(explicitDir);return fs37.existsSync(path41.join(createdRoot,".fimo.settings.json"))?createdRoot:(console.error("Project creation did not complete. Re-run `fimo init` or try again with explicit flags."),null)}function requireProjectRoot(cwdOption){let root2=resolveProjectCwd(cwdOption);return fs37.existsSync(path41.join(root2,".fimo.settings.json"))?root2:(console.error("You are not in a Fimo project. Run `fimo init` first or pass a project directory to `fimo migrate init`."),null)}function readMigrationManifest(projectRoot){let manifestPath=path41.join(projectRoot,MIGRATION_DIR2,"manifest.json");return fs37.existsSync(manifestPath)?JSON.parse(fs37.readFileSync(manifestPath,"utf8")):(console.error("No migration manifest found. Run `fimo migrate init <url>` first."),null)}function loadProjectMetadata(projectRoot){let settings=loadProjectSettings(projectRoot);return{root:projectRoot,projectId:settings.projectId,organizationId:settings.organizationId,name:settings.name,apiUrl:settings.apiUrl}}function parseMaxPages(value,fallback=DEFAULT_MAX_PAGES){let parsed=Number.parseInt(value??`${fallback}`,10);return!Number.isFinite(parsed)||parsed<1?fallback:Math.min(parsed,30)}function parseMaxAssets(value,fallback=DEFAULT_MAX_ASSETS){let parsed=Number.parseInt(value??`${fallback}`,10);return!Number.isFinite(parsed)||parsed<0?fallback:Math.min(parsed,200)}async function buildMigrationArtifacts(args){let{project,sourceUrl,maxPages,maxAssets}=args,migrationRoot=path41.join(project.root,MIGRATION_DIR2),pagesRoot=path41.join(migrationRoot,SOURCE_PAGES_DIR),extractedRoot=path41.join(migrationRoot,EXTRACTED_DIR),mediaRoot=path41.join(migrationRoot,MEDIA_DIR);fs37.rmSync(migrationRoot,{recursive:!0,force:!0}),fs37.mkdirSync(pagesRoot,{recursive:!0}),fs37.mkdirSync(extractedRoot,{recursive:!0}),fs37.mkdirSync(mediaRoot,{recursive:!0});let crawl=await crawlSite({sourceUrl,maxPages,pagesRoot}),platform4=detectPlatformFromHtml(crawl.pages.map(page=>page.html).join(`
1073
+ Next step: run \`fimo migrate refine -C ${projectRoot}\` or read ${path41.join(projectRoot,MIGRATION_DIR2,"generated","next-steps.md")}`)}catch(error){spinner2.stop(`Migration apply failed: ${error instanceof Error?error.message:String(error)}`),process.exitCode=1}}function migrateImportCommand(options){let projectRoot=requireProjectRoot(readStringOption(options,"cwd"));if(!projectRoot){process.exitCode=1;return}let mediaMapPath=path41.join(projectRoot,MIGRATION_DIR2,MEDIA_DIR,"map.json"),entriesDir=path41.join(projectRoot,MIGRATION_DIR2,"generated","entries"),schemasDir=path41.join(projectRoot,"src","schemas"),formsDir=path41.join(projectRoot,"src","forms"),media=fs37.existsSync(mediaMapPath)?readDownloadedMedia(mediaMapPath):[],schemas3=fs37.existsSync(schemasDir)?fs37.readdirSync(schemasDir).filter(name=>name.endsWith(".json")):[],forms3=fs37.existsSync(formsDir)?fs37.readdirSync(formsDir).filter(name=>name.endsWith(".json")):[],entryFiles=fs37.existsSync(entriesDir)?fs37.readdirSync(entriesDir).filter(name=>name.endsWith(".json")):[],entryCommands=entryFiles.map(file=>{let typeName=path41.basename(file,".json");return`Review ${path41.join(MIGRATION_DIR2,"generated","entries",file)}, then run fimo entries create ${typeName} --body '<entry-json>' -C ${projectRoot} for each approved entry`}),result={media:media.length,schemas:schemas3.length,forms:forms3.length,entryFiles:entryFiles.length,commands:[...media.map(asset=>`fimo assets upload ${asset.localPath} -C ${projectRoot}`),...schemas3.map(file=>`fimo schemas push ${path41.basename(file,".json")} -C ${projectRoot}`),...forms3.map(file=>`fimo forms push ${path41.basename(file,".json")} -C ${projectRoot}`),...entryCommands]};if(options.json){console.log(JSON.stringify(result,null,2));return}if(console.log("Migration import is handled by the regular Fimo CLI commands."),console.log("Review the generated files, then run the relevant commands below:"),result.commands.length===0)console.log("- No generated media, schemas, forms, or entry suggestions were found.");else for(let command of result.commands)console.log(`- ${command}`)}function migrateManifestCommand(options){let args=[resolveProjectCwd(readStringOption(options,"cwd"))];options.output&&args.push("--output",options.output),options.fresh&&args.push("--fresh"),runBundledMigrationScript("build-canonical-manifest.mjs",args)}function migrateReportCommand(options){let args=[resolveProjectCwd(readStringOption(options,"cwd"))];options.manifest&&args.push("--manifest",options.manifest),options.output&&args.push("--output",options.output),options.updateManifest===!1&&args.push("--no-update-manifest"),runBundledMigrationScript("write-migration-report.mjs",args)}function runBundledMigrationScript(scriptName,args){let scriptPath=path41.join(MIGRATION_SKILL_SCRIPTS_DIR,scriptName);if(!fs37.existsSync(scriptPath)){console.error(`Migration helper script not found: ${scriptPath}`),process.exitCode=1;return}let result=spawnSync4(process.execPath,[scriptPath,...args],{stdio:"inherit"});if(result.error){console.error(`Migration helper failed to start: ${result.error.message}`),process.exitCode=1;return}typeof result.status=="number"&&result.status!==0&&(process.exitCode=result.status)}function readStringOption(options,name){let value=options[name];if(typeof value=="string")return value;let longName=`--${name.replace(/[A-Z]/g,char=>`-${char.toLowerCase()}`)}`,shortName=name==="cwd"?"-C":null,rawArgs=process.argv.slice(2);for(let i=0;i<rawArgs.length;i+=1){let arg=rawArgs[i];if(arg===longName||shortName&&arg===shortName)return rawArgs[i+1];if(arg.startsWith(`${longName}=`))return arg.slice(longName.length+1)}}function readDownloadedMedia(mediaMapPath){return JSON.parse(fs37.readFileSync(mediaMapPath,"utf8")).filter(asset=>asset.status==="downloaded"&&asset.localPath)}async function ensureMigrationProject(dirArg,options){if(!dirArg)return requireProjectRoot(options.cwd);let explicitDir=path41.resolve(dirArg),resolvedRoot=resolveProjectCwd(explicitDir);if(fs37.existsSync(path41.join(resolvedRoot,".fimo.settings.json")))return resolvedRoot;if(fs37.existsSync(explicitDir)&&fs37.readdirSync(explicitDir).length>0)return console.error(`Refusing to initialize a migration in non-empty directory ${explicitDir}. Pass a Fimo project directory or an empty/new directory.`),null;await initCommand(explicitDir,{...options,skills:!1});let createdRoot=resolveProjectCwd(explicitDir);return fs37.existsSync(path41.join(createdRoot,".fimo.settings.json"))?createdRoot:(console.error("Project creation did not complete. Re-run `fimo init` or try again with explicit flags."),null)}function requireProjectRoot(cwdOption){let root2=resolveProjectCwd(cwdOption);return fs37.existsSync(path41.join(root2,".fimo.settings.json"))?root2:(console.error("You are not in a Fimo project. Run `fimo init` first or pass a project directory to `fimo migrate init`."),null)}function readMigrationManifest(projectRoot){let manifestPath=path41.join(projectRoot,MIGRATION_DIR2,"manifest.json");return fs37.existsSync(manifestPath)?JSON.parse(fs37.readFileSync(manifestPath,"utf8")):(console.error("No migration manifest found. Run `fimo migrate init <url>` first."),null)}function loadProjectMetadata(projectRoot){let settings=loadProjectSettings(projectRoot);return{root:projectRoot,projectId:settings.projectId,organizationId:settings.organizationId,name:settings.name,apiUrl:settings.apiUrl}}function parseMaxPages(value,fallback=DEFAULT_MAX_PAGES){let parsed=Number.parseInt(value??`${fallback}`,10);return!Number.isFinite(parsed)||parsed<1?fallback:Math.min(parsed,30)}function parseMaxAssets(value,fallback=DEFAULT_MAX_ASSETS){let parsed=Number.parseInt(value??`${fallback}`,10);return!Number.isFinite(parsed)||parsed<0?fallback:Math.min(parsed,200)}async function buildMigrationArtifacts(args){let{project,sourceUrl,maxPages,maxAssets}=args,migrationRoot=path41.join(project.root,MIGRATION_DIR2),pagesRoot=path41.join(migrationRoot,SOURCE_PAGES_DIR),extractedRoot=path41.join(migrationRoot,EXTRACTED_DIR),mediaRoot=path41.join(migrationRoot,MEDIA_DIR);fs37.rmSync(migrationRoot,{recursive:!0,force:!0}),fs37.mkdirSync(pagesRoot,{recursive:!0}),fs37.mkdirSync(extractedRoot,{recursive:!0}),fs37.mkdirSync(mediaRoot,{recursive:!0});let crawl=await crawlSite({sourceUrl,maxPages,pagesRoot}),platform4=detectPlatformFromHtml(crawl.pages.map(page=>page.html).join(`
1074
1074
  `),sourceUrl),designTokens=extractDesignTokens(crawl.pages.map(page=>page.html)),forms3=dedupeForms(crawl.pages.flatMap(page=>page.forms)),pages=crawl.pages.map(page=>{let artifactPath=toPosix2(path41.relative(project.root,path41.join(pagesRoot,routeToFileName(page.route))));return{route:page.route,url:page.url,title:page.title,kind:page.kind,seo:{title:page.title,description:page.description},headings:page.headings,paragraphs:page.paragraphs,sections:page.sections,forms:page.forms,images:page.images,imageCount:page.imageUrls.length,artifacts:{html:artifactPath,screenshots:page.screenshots},confidence:page.confidence}}),collections=deriveCollections(pages),allStylesheets=unique2(crawl.pages.flatMap(page=>page.stylesheetUrls)),allScripts=unique2(crawl.pages.flatMap(page=>page.scriptUrls)),allImages=unique2(crawl.pages.flatMap(page=>[...page.imageUrls,...page.backgroundImageUrls])),mediaAssets=args.downloadMedia?await downloadMediaAssets({urls:allImages,projectRoot:project.root,mediaRoot,maxAssets}):[],unresolved=deriveUnresolved({platform:platform4,pagesFetched:pages.length,maxPages,forms:forms3,failures:crawl.failures,scriptUrls:allScripts}),recommendation=buildRecommendation({platform:platform4,unresolved,forms:forms3,collections}),manifest={version:1,source:{url:sourceUrl,platform:platform4,fetchedAt:new Date().toISOString()},project:{...project,migrationDir:toPosix2(MIGRATION_DIR2)},design:{tokens:designTokens,notes:buildDesignNotes(designTokens,platform4)},pages,collections,forms:forms3,assets:{images:allImages.length,stylesheets:allStylesheets.length,scripts:allScripts.length,downloaded:mediaAssets.filter(asset=>asset.status==="downloaded").length,failed:mediaAssets.filter(asset=>asset.status==="failed").length,manifest:mediaAssets.length>0?toPosix2(path41.relative(project.root,path41.join(mediaRoot,"map.json"))):void 0,externalHosts:unique2([...allImages,...allStylesheets,...allScripts].map(value=>safeHostname(value)).filter(value=>!!value))},crawl:{engine:crawl.engine,maxPages,pagesFetched:pages.length,failures:crawl.failures},nextActions:buildNextActions({hasMedia:mediaAssets.some(asset=>asset.status==="downloaded"),hasCollections:collections.length>0,hasForms:forms3.length>0}),unresolved,recommendation};return fs37.writeFileSync(path41.join(migrationRoot,"manifest.json"),JSON.stringify(manifest,null,2)+`
1075
1075
  `,"utf8"),fs37.writeFileSync(path41.join(extractedRoot,"pages.json"),JSON.stringify(pages,null,2)+`
1076
1076
  `,"utf8"),fs37.writeFileSync(path41.join(extractedRoot,"forms.json"),JSON.stringify(forms3,null,2)+`
@@ -1126,7 +1126,7 @@ Fix: add the route to src/routes.ts. Example: route('${route.path.replace(/^\//,
1126
1126
  Fix: create the file at src/${file}.`);continue}if(route.paramNames.length>0)if(!route.params)errors.push(`Dynamic route "${route.id}" (${route.path}) needs \`params\` metadata to generate prerender URLs.
1127
1127
  Fix: add to the route in fimo-config.json: \`"params": { "${route.paramNames[0]||"param"}": { "schema": "SchemaName", "queryField": "${route.paramNames[0]||"slug"}", "displayField": "title" } }\``);else for(let paramName of route.paramNames){let paramInfo=route.params[paramName];!paramInfo||typeof paramInfo!="object"?errors.push(`Dynamic route "${route.id}" (${route.path}): param "${paramName}" must be an object with "schema" and "queryField".
1128
1128
  Fix: \`"params": { "${paramName}": { "schema": "SchemaName", "queryField": "${paramName}" } }\``):(!paramInfo.schema||!paramInfo.queryField)&&errors.push(`Dynamic route "${route.id}" (${route.path}): param "${paramName}" is missing ${paramInfo.schema?'"queryField"':'"schema"'}.
1129
- Fix: \`"${paramName}": { "schema": "SchemaName", "queryField": "${paramName}" }\``)}if(route.seo){let GLOBAL_VARIABLES=new Set(["siteName","label"]),seoFields=[{name:"title",value:route.seo.title},{name:"description",value:route.seo.description}];for(let field of seoFields){if(typeof field.value!="string")continue;let templatePattern=/\{\{([^}]+)\}\}/g,match;for(;(match=templatePattern.exec(field.value))!==null;){let variable=match[1].trim();if(!GLOBAL_VARIABLES.has(variable))if(variable.includes(".")){let paramKey=variable.split(".")[0];if(!route.params||!route.params[paramKey]){let availableParams=route.params?Object.keys(route.params).join(", "):"none";errors.push(`Route "${route.id}" (${route.path}): SEO ${field.name} references "{{${variable}}}" but "${paramKey}" is not a declared param. Available params: ${availableParams}.`)}}else{let availableParams=route.params?Object.keys(route.params).join(", "):"none";errors.push(`Route "${route.id}" (${route.path}): SEO ${field.name} references "{{${variable}}}" which is not a global variable (siteName, label) and not a dotted param reference (e.g., "{{param.field}}"). Available params: ${availableParams}.`)}}}}}return{errors,routesChecked:configRoutes.length}}__name(validateRouteMetadata,"validateRouteMetadata");function validateI18nConfig(config){let rawI18n=isRecord(config.i18n)?config.i18n:{},errors=[],rawDefaultLocale=typeof rawI18n.defaultLocale=="string"?rawI18n.defaultLocale:"en",defaultLocale=normalizeFimoLocale(rawDefaultLocale);defaultLocale||errors.push(`Invalid i18n.defaultLocale "${rawDefaultLocale}". Use a structurally valid locale tag, for example "en", "es", or "pt-BR".`);let rawLocales=Array.isArray(rawI18n.locales)?rawI18n.locales:defaultLocale?[defaultLocale]:[];rawI18n.locales!==void 0&&!Array.isArray(rawI18n.locales)&&errors.push("i18n.locales must be an array of locale strings.");let locales=[],seenLocales=new Set;for(let rawLocale of rawLocales){if(typeof rawLocale!="string"){errors.push(`Invalid i18n.locales entry ${JSON.stringify(rawLocale)}. Locale entries must be strings.`);continue}let locale=normalizeFimoLocale(rawLocale);if(!locale){errors.push(`Invalid i18n.locales entry "${rawLocale}". Use a structurally valid locale tag, for example "en", "es", or "pt-BR".`);continue}seenLocales.has(locale)||(seenLocales.add(locale),locales.push(locale))}let effectiveDefaultLocale=defaultLocale??"en";seenLocales.has(effectiveDefaultLocale)||(errors.push(`i18n.locales must include i18n.defaultLocale "${effectiveDefaultLocale}".`),locales.unshift(effectiveDefaultLocale));let rawRouting=isRecord(rawI18n.routing)?rawI18n.routing:{},routingStrategy=typeof rawRouting.strategy=="string"?rawRouting.strategy:"path-prefix";return routingStrategy!=="path-prefix"&&errors.push(`Unsupported i18n.routing.strategy "${routingStrategy}". Supported now: "path-prefix".`),{defaultLocale:effectiveDefaultLocale,locales,routingStrategy,prefixDefaultLocale:rawRouting.prefixDefaultLocale===!0,errors}}__name(validateI18nConfig,"validateI18nConfig");function validateLocaleRouteCollisions(args){let errors=[],reservedPrefixes=new Set(args.i18n.locales.map(locale=>locale.toLowerCase()));for(let route of args.configRoutes){let first2=firstPathSegment(route.path);first2&&reservedPrefixes.has(first2.toLowerCase())&&errors.push(`Route "${route.id}" (${route.path}) uses reserved locale prefix "${first2}". Keep fimo-config.json routes canonical and unlocalized, for example "/pricing"; let fimoRoutes() or custom locale routing produce "/${first2}/...".`)}if(!args.routesSourceUsesFimoRoutes)for(let route of args.fileRoutes){if(!route.path||route.isLayout)continue;let first2=firstPathSegment(route.path);(first2?.startsWith(":")||first2==="*")&&errors.push(`Route "${route.path}" is a top-level dynamic route in a multi-locale path-prefix project. It can capture locale URLs like "/${args.i18n.locales[0]}". Use fimoRoutes(routes) from "fimo/react-router/routes" or implement explicit custom locale routing.`)}return errors}__name(validateLocaleRouteCollisions,"validateLocaleRouteCollisions");function sourceUsesFimoRoutes(fileRoutes,routesFilePath){return fileRoutes.length===0||!fs21.existsSync(routesFilePath)?!1:fs21.readFileSync(routesFilePath,"utf-8").includes("fimoRoutes(")}__name(sourceUsesFimoRoutes,"sourceUsesFimoRoutes");function firstPathSegment(routePath){return routePath.split("/").filter(Boolean)[0]??null}__name(firstPathSegment,"firstPathSegment");function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}__name(isRecord,"isRecord");function normalizeFimoLocale(locale){let trimmed=locale?.trim();if(!trimmed)return null;let candidate=trimmed.replace(/_/g,"-");try{return Intl.getCanonicalLocales(candidate)[0]??null}catch{return null}}__name(normalizeFimoLocale,"normalizeFimoLocale");init_esm();import{existsSync as existsSync7,readFileSync as readFileSync7,readdirSync as readdirSync4}from"node:fs";import{basename as basename2,join as join9,resolve as resolve6}from"node:path";var SCHEMAS_REL2="src/schemas",FIELD_TYPES=new Set(FieldTypeSchema.options),RESERVED_FIELD_NAMES=new Set(RESERVED_CONTENT_FIELD_NAMES);function validateSchemas(options={}){let cwd=resolve6(options.cwd??process.cwd()),schemasDir=join9(cwd,SCHEMAS_REL2);if(!existsSync7(schemasDir))return{errors:[],schemasChecked:0};let files=readdirSync4(schemasDir).filter(f=>f.endsWith(".json")).sort(),errors=[],schemaUids=new Set;for(let fileName of files){let schema=readSchemaObject(join9(schemasDir,fileName));schema&&typeof schema.uid=="string"&&schemaUids.add(schema.uid)}for(let fileName of files){let file=join9(SCHEMAS_REL2,fileName);errors.push(...validateSchemaFile(join9(schemasDir,fileName),file,schemaUids))}return{errors,schemasChecked:files.length}}__name(validateSchemas,"validateSchemas");function readSchemaObject(absolutePath){let schema;try{schema=JSON.parse(readFileSync7(absolutePath,"utf-8"))}catch{return null}return typeof schema=="object"&&schema!==null&&!Array.isArray(schema)?schema:null}__name(readSchemaObject,"readSchemaObject");function validateSchemaFile(absolutePath,file,schemaUids=new Set){let schema;try{schema=JSON.parse(readFileSync7(absolutePath,"utf-8"))}catch(error){return[{rule:"schemas/parse",message:`Invalid JSON: ${error instanceof Error?error.message:String(error)}`,file}]}if(typeof schema!="object"||schema===null||Array.isArray(schema))return[{rule:"schemas/shape",message:"Schema must be a JSON object.",file}];let errors=[],{uid,name,fields,i18n,isSingleton}=schema,expectedUid=basename2(file,".json");if(typeof uid!="string"||uid.length===0?errors.push({rule:"schemas/uid",message:`Missing "uid". Set it to the file name: "${expectedUid}".`,file}):uid!==expectedUid?errors.push({rule:"schemas/uid",message:`"uid" is "${uid}" but the file is ${expectedUid}.json \u2014 they must match.`,file}):CONTENT_TYPE_NAME_PATTERN.test(uid)||errors.push({rule:"schemas/type-name",message:`"uid" must use ${CONTENT_TYPE_NAME_PATTERN_DESCRIPTION}.`,file}),(typeof name!="string"||name.length===0)&&errors.push({rule:"schemas/name",message:'Missing "name" (the human-readable label).',file}),isSingleton!==void 0&&typeof isSingleton!="boolean"&&errors.push({rule:"schemas/singleton",message:'"isSingleton" must be a boolean when provided.',file}),i18n!==void 0)if(typeof i18n!="object"||i18n===null||Array.isArray(i18n))errors.push({rule:"schemas/i18n",message:'"i18n" must be an object like { "enabled": false }.',file});else{let keys=Object.keys(i18n);(keys.length!==1||keys[0]!=="enabled"||typeof i18n.enabled!="boolean")&&errors.push({rule:"schemas/i18n",message:'"i18n" only supports one boolean option: { "enabled": true | false }.',file})}if(typeof fields!="object"||fields===null||Array.isArray(fields))return errors.push({rule:"schemas/fields",message:'Missing "fields" object.',file}),errors;for(let[fieldName,definition]of Object.entries(fields)){if(!CONTENT_FIELD_NAME_PATTERN.test(fieldName)){errors.push({rule:"schemas/field-name",message:`Field "${fieldName}" must use ${CONTENT_FIELD_NAME_PATTERN_DESCRIPTION}.`,file});continue}if(RESERVED_FIELD_NAMES.has(fieldName)){errors.push({rule:"schemas/reserved-field",message:`Field "${fieldName}" is reserved entry metadata \u2014 the platform manages it automatically. Remove it from the schema${fieldName==="slug"?" (set slug inside entry data on create instead)":""}.`,file});continue}if(typeof definition!="object"||definition===null||Array.isArray(definition)){errors.push({rule:"schemas/field-shape",message:`Field "${fieldName}" must be an object like { "type": "string" }.`,file});continue}let{type}=definition;if((typeof type!="string"||!FIELD_TYPES.has(type))&&errors.push({rule:"schemas/field-type",message:`Field "${fieldName}" has unsupported type "${String(type)}". Allowed: ${[...FIELD_TYPES].join(", ")}.`,file}),"i18n"in definition||"localized"in definition){let key="i18n"in definition?"i18n":"localized";errors.push({rule:"schemas/field-i18n",message:`Field "${fieldName}": field-level locale settings ("${key}") are not supported.`,file})}if(type==="reference"){let{target,targets,many}=definition;if(targets!==void 0&&target!==void 0)errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" declares both "target" and "targets" \u2014 a field is fixed or polymorphic, never both.`,file});else if(targets!==void 0){let targetList=Array.isArray(targets)?targets:null;if(!targetList||targetList.length===0||new Set(targetList).size!==targetList.length)errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" must declare "targets" as a non-empty array of unique content types.`,file});else for(let candidate of targetList)typeof candidate!="string"||!CONTENT_TYPE_NAME_PATTERN.test(candidate)?errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" has an invalid entry in "targets".`,file}):schemaUids.size>0&&!schemaUids.has(candidate)&&errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" targets unknown schema "${candidate}".`,file})}else typeof target!="string"||!CONTENT_TYPE_NAME_PATTERN.test(target)?errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" must declare a valid "target" content type (or "targets" for a polymorphic field).`,file}):schemaUids.size>0&&!schemaUids.has(target)&&errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" targets unknown schema "${target}".`,file});many!==void 0&&typeof many!="boolean"&&errors.push({rule:"schemas/reference-many",message:`Reference field "${fieldName}" must use a boolean "many" value.`,file})}else for(let referenceOnlyKey of["target","targets","many"])referenceOnlyKey in definition&&errors.push({rule:"schemas/reference-shape",message:`Field "${fieldName}": "${referenceOnlyKey}" is only supported on reference fields.`,file})}return errors}__name(validateSchemaFile,"validateSchemaFile");init_api();init_config();init_auth_errors();import fs22 from"node:fs";import path26 from"node:path";var MIN_DB_LABELS_FIMO_VERSION="0.2.5",MIN_DB_LABELS_TEMPLATE_VERSION=4;function getDbLabelsRuntimeWarning(cwd){if(readExplicitConfigVersion(cwd)<MIN_DB_LABELS_TEMPLATE_VERSION)return null;let projectPackage=readPackageJson(path26.join(cwd,"package.json")),fimoSpec=findFimoSpec(projectPackage);if(!fimoSpec)return buildWarning("package.json has no fimo dependency");let source=findRuntimeVersion(cwd,fimoSpec);return!source||!isVersionOlder(source.version,MIN_DB_LABELS_FIMO_VERSION)?null:buildWarning(`${source.label} is fimo@${source.version}`)}__name(getDbLabelsRuntimeWarning,"getDbLabelsRuntimeWarning");function readExplicitConfigVersion(cwd){try{let raw=JSON.parse(fs22.readFileSync(path26.join(cwd,"fimo-config.json"),"utf8")),parsed=Number.parseInt(String(raw.version),10);return Number.isFinite(parsed)&&parsed>0?parsed:0}catch{return 0}}__name(readExplicitConfigVersion,"readExplicitConfigVersion");function buildWarning(subject){return[`CRITICAL: ${subject}, but DB-owned labels require fimo >= ${MIN_DB_LABELS_FIMO_VERSION}.`,"Labels changed with `fimo labels` or Fimo Studio may not render in this project until the app runtime is upgraded.","Run `npm install fimo@latest` (or your package manager equivalent), then run `fimo validate` again."].join(" ")}__name(buildWarning,"buildWarning");function findRuntimeVersion(cwd,fimoSpec){let installed=readPackageJson(path26.join(cwd,"node_modules","fimo","package.json"));if(typeof installed?.version=="string")return{label:"installed node_modules/fimo",version:installed.version};let packageLockVersion=readPackageLockVersion(cwd);if(packageLockVersion)return{label:"package-lock.json",version:packageLockVersion};let exactSpecVersion=parseVersion(fimoSpec);if(exactSpecVersion)return{label:"package.json dependency",version:exactSpecVersion.normalized};if(fimoSpec.startsWith("file:")){let fileVersion=readFileDependencyVersion(cwd,fimoSpec);if(fileVersion)return{label:"package.json file dependency target",version:fileVersion}}return null}__name(findRuntimeVersion,"findRuntimeVersion");function findFimoSpec(pkg){let dependenciesSpec=pkg?.dependencies?.fimo;if(typeof dependenciesSpec=="string"&&dependenciesSpec.trim())return dependenciesSpec.trim();let devDependenciesSpec=pkg?.devDependencies?.fimo;return typeof devDependenciesSpec=="string"&&devDependenciesSpec.trim()?devDependenciesSpec.trim():null}__name(findFimoSpec,"findFimoSpec");function readFileDependencyVersion(cwd,spec){let rawPath=spec.slice(5),packageRoot=path26.isAbsolute(rawPath)?rawPath:path26.resolve(cwd,rawPath),pkg=readPackageJson(path26.join(packageRoot,"package.json"));return typeof pkg?.version=="string"?pkg.version:null}__name(readFileDependencyVersion,"readFileDependencyVersion");function readPackageLockVersion(cwd){try{let lock=JSON.parse(fs22.readFileSync(path26.join(cwd,"package-lock.json"),"utf8")),packagesVersion=lock.packages?.["node_modules/fimo"]?.version;if(typeof packagesVersion=="string")return packagesVersion;let dependencyVersion=lock.dependencies?.fimo?.version;return typeof dependencyVersion=="string"?dependencyVersion:null}catch{return null}}__name(readPackageLockVersion,"readPackageLockVersion");function readPackageJson(filePath){try{return JSON.parse(fs22.readFileSync(filePath,"utf8"))}catch{return null}}__name(readPackageJson,"readPackageJson");function isVersionOlder(version,minimum){let parsed=parseVersion(version),parsedMinimum=parseVersion(minimum);if(!parsed||!parsedMinimum)return!1;for(let key of["major","minor","patch"]){if(parsed[key]<parsedMinimum[key])return!0;if(parsed[key]>parsedMinimum[key])return!1}return!1}__name(isVersionOlder,"isVersionOlder");function parseVersion(version){let match=version.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/);return match?{major:Number(match[1]),minor:Number(match[2]),patch:Number(match[3]),normalized:`${Number(match[1])}.${Number(match[2])}.${Number(match[3])}`}:null}__name(parseVersion,"parseVersion");init_project_context();init_project();init_dist();import{existsSync as existsSync9,readFileSync as readFileSync9,readdirSync as readdirSync6,statSync as statSync3}from"node:fs";import{join as join11,resolve as resolve7}from"node:path";import fs23 from"node:fs/promises";import path27 from"node:path";async function pathExists(targetPath){try{return await fs23.access(targetPath),!0}catch{return!1}}__name(pathExists,"pathExists");async function removeDataFiles(dir){let entries2=await fs23.readdir(dir,{withFileTypes:!0});for(let entry of entries2){let fullPath=path27.join(dir,entry.name);entry.isDirectory()?await removeDataFiles(fullPath):entry.name.endsWith(".data")&&await fs23.rm(fullPath)}}__name(removeDataFiles,"removeDataFiles");async function exportStatic(options={}){let cwd=options.cwd??process.cwd(),clientDir=path27.resolve(cwd,"dist/client"),serverDir=path27.resolve(cwd,"dist/server");if(!await pathExists(clientDir))throw new Error("Missing dist/client output. Run `react-router build` first.");await pathExists(serverDir)&&await fs23.rm(serverDir,{recursive:!0,force:!0}),await removeDataFiles(clientDir),console.log("Static export complete.")}__name(exportStatic,"exportStatic");import{existsSync as existsSync8,readFileSync as readFileSync8,readdirSync as readdirSync5,statSync as statSync2}from"fs";import{join as join10}from"path";import{parseSync as parseSync2}from"oxc-parser";var SRC_DIR="src";function getLineAndColumn(code2,offset){let lines=code2.slice(0,offset).split(`
1129
+ Fix: \`"${paramName}": { "schema": "SchemaName", "queryField": "${paramName}" }\``)}if(route.seo){let GLOBAL_VARIABLES=new Set(["siteName","label"]),seoFields=[{name:"title",value:route.seo.title},{name:"description",value:route.seo.description}];for(let field of seoFields){if(typeof field.value!="string")continue;let templatePattern=/\{\{([^}]+)\}\}/g,match;for(;(match=templatePattern.exec(field.value))!==null;){let variable=match[1].trim();if(!GLOBAL_VARIABLES.has(variable))if(variable.includes(".")){let paramKey=variable.split(".")[0];if(!route.params||!route.params[paramKey]){let availableParams=route.params?Object.keys(route.params).join(", "):"none";errors.push(`Route "${route.id}" (${route.path}): SEO ${field.name} references "{{${variable}}}" but "${paramKey}" is not a declared param. Available params: ${availableParams}.`)}}else{let availableParams=route.params?Object.keys(route.params).join(", "):"none";errors.push(`Route "${route.id}" (${route.path}): SEO ${field.name} references "{{${variable}}}" which is not a global variable (siteName, label) and not a dotted param reference (e.g., "{{param.field}}"). Available params: ${availableParams}.`)}}}}}return{errors,routesChecked:configRoutes.length}}__name(validateRouteMetadata,"validateRouteMetadata");function validateI18nConfig(config){let rawI18n=isRecord(config.i18n)?config.i18n:{},errors=[],rawDefaultLocale=typeof rawI18n.defaultLocale=="string"?rawI18n.defaultLocale:"en",defaultLocale=normalizeFimoLocale(rawDefaultLocale);defaultLocale||errors.push(`Invalid i18n.defaultLocale "${rawDefaultLocale}". Use a structurally valid locale tag, for example "en", "es", or "pt-BR".`);let rawLocales=Array.isArray(rawI18n.locales)?rawI18n.locales:defaultLocale?[defaultLocale]:[];rawI18n.locales!==void 0&&!Array.isArray(rawI18n.locales)&&errors.push("i18n.locales must be an array of locale strings.");let locales=[],seenLocales=new Set;for(let rawLocale of rawLocales){if(typeof rawLocale!="string"){errors.push(`Invalid i18n.locales entry ${JSON.stringify(rawLocale)}. Locale entries must be strings.`);continue}let locale=normalizeFimoLocale(rawLocale);if(!locale){errors.push(`Invalid i18n.locales entry "${rawLocale}". Use a structurally valid locale tag, for example "en", "es", or "pt-BR".`);continue}seenLocales.has(locale)||(seenLocales.add(locale),locales.push(locale))}let effectiveDefaultLocale=defaultLocale??"en";seenLocales.has(effectiveDefaultLocale)||(errors.push(`i18n.locales must include i18n.defaultLocale "${effectiveDefaultLocale}".`),locales.unshift(effectiveDefaultLocale));let rawRouting=isRecord(rawI18n.routing)?rawI18n.routing:{},routingStrategy=typeof rawRouting.strategy=="string"?rawRouting.strategy:"path-prefix";return routingStrategy!=="path-prefix"&&errors.push(`Unsupported i18n.routing.strategy "${routingStrategy}". Supported now: "path-prefix".`),{defaultLocale:effectiveDefaultLocale,locales,routingStrategy,prefixDefaultLocale:rawRouting.prefixDefaultLocale===!0,errors}}__name(validateI18nConfig,"validateI18nConfig");function validateLocaleRouteCollisions(args){let errors=[],reservedPrefixes=new Set(args.i18n.locales.map(locale=>locale.toLowerCase()));for(let route of args.configRoutes){let first2=firstPathSegment(route.path);first2&&reservedPrefixes.has(first2.toLowerCase())&&errors.push(`Route "${route.id}" (${route.path}) uses reserved locale prefix "${first2}". Keep fimo-config.json routes canonical and unlocalized, for example "/pricing"; let fimoRoutes() or custom locale routing produce "/${first2}/...".`)}if(!args.routesSourceUsesFimoRoutes)for(let route of args.fileRoutes){if(!route.path||route.isLayout)continue;let first2=firstPathSegment(route.path);(first2?.startsWith(":")||first2==="*")&&errors.push(`Route "${route.path}" is a top-level dynamic route in a multi-locale path-prefix project. It can capture locale URLs like "/${args.i18n.locales[0]}". Use fimoRoutes(routes) from "fimo/react-router/routes" or implement explicit custom locale routing.`)}return errors}__name(validateLocaleRouteCollisions,"validateLocaleRouteCollisions");function sourceUsesFimoRoutes(fileRoutes,routesFilePath){return fileRoutes.length===0||!fs21.existsSync(routesFilePath)?!1:fs21.readFileSync(routesFilePath,"utf-8").includes("fimoRoutes(")}__name(sourceUsesFimoRoutes,"sourceUsesFimoRoutes");function firstPathSegment(routePath){return routePath.split("/").filter(Boolean)[0]??null}__name(firstPathSegment,"firstPathSegment");function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}__name(isRecord,"isRecord");function normalizeFimoLocale(locale){let trimmed=locale?.trim();if(!trimmed)return null;let candidate=trimmed.replace(/_/g,"-");try{return Intl.getCanonicalLocales(candidate)[0]??null}catch{return null}}__name(normalizeFimoLocale,"normalizeFimoLocale");init_esm();import{existsSync as existsSync7,readFileSync as readFileSync7,readdirSync as readdirSync4}from"node:fs";import{basename as basename3,join as join9,resolve as resolve6}from"node:path";var SCHEMAS_REL2="src/schemas",FIELD_TYPES=new Set(FieldTypeSchema.options),RESERVED_FIELD_NAMES=new Set(RESERVED_CONTENT_FIELD_NAMES);function validateSchemas(options={}){let cwd=resolve6(options.cwd??process.cwd()),schemasDir=join9(cwd,SCHEMAS_REL2);if(!existsSync7(schemasDir))return{errors:[],schemasChecked:0};let files=readdirSync4(schemasDir).filter(f=>f.endsWith(".json")).sort(),errors=[],schemaUids=new Set;for(let fileName of files){let schema=readSchemaObject(join9(schemasDir,fileName));schema&&typeof schema.uid=="string"&&schemaUids.add(schema.uid)}for(let fileName of files){let file=join9(SCHEMAS_REL2,fileName);errors.push(...validateSchemaFile(join9(schemasDir,fileName),file,schemaUids))}return{errors,schemasChecked:files.length}}__name(validateSchemas,"validateSchemas");function readSchemaObject(absolutePath){let schema;try{schema=JSON.parse(readFileSync7(absolutePath,"utf-8"))}catch{return null}return typeof schema=="object"&&schema!==null&&!Array.isArray(schema)?schema:null}__name(readSchemaObject,"readSchemaObject");function validateSchemaFile(absolutePath,file,schemaUids=new Set){let schema;try{schema=JSON.parse(readFileSync7(absolutePath,"utf-8"))}catch(error){return[{rule:"schemas/parse",message:`Invalid JSON: ${error instanceof Error?error.message:String(error)}`,file}]}if(typeof schema!="object"||schema===null||Array.isArray(schema))return[{rule:"schemas/shape",message:"Schema must be a JSON object.",file}];let errors=[],{uid,name,fields,i18n,isSingleton}=schema,expectedUid=basename3(file,".json");if(typeof uid!="string"||uid.length===0?errors.push({rule:"schemas/uid",message:`Missing "uid". Set it to the file name: "${expectedUid}".`,file}):uid!==expectedUid?errors.push({rule:"schemas/uid",message:`"uid" is "${uid}" but the file is ${expectedUid}.json \u2014 they must match.`,file}):CONTENT_TYPE_NAME_PATTERN.test(uid)||errors.push({rule:"schemas/type-name",message:`"uid" must use ${CONTENT_TYPE_NAME_PATTERN_DESCRIPTION}.`,file}),(typeof name!="string"||name.length===0)&&errors.push({rule:"schemas/name",message:'Missing "name" (the human-readable label).',file}),isSingleton!==void 0&&typeof isSingleton!="boolean"&&errors.push({rule:"schemas/singleton",message:'"isSingleton" must be a boolean when provided.',file}),i18n!==void 0)if(typeof i18n!="object"||i18n===null||Array.isArray(i18n))errors.push({rule:"schemas/i18n",message:'"i18n" must be an object like { "enabled": false }.',file});else{let keys=Object.keys(i18n);(keys.length!==1||keys[0]!=="enabled"||typeof i18n.enabled!="boolean")&&errors.push({rule:"schemas/i18n",message:'"i18n" only supports one boolean option: { "enabled": true | false }.',file})}if(typeof fields!="object"||fields===null||Array.isArray(fields))return errors.push({rule:"schemas/fields",message:'Missing "fields" object.',file}),errors;for(let[fieldName,definition]of Object.entries(fields)){if(!CONTENT_FIELD_NAME_PATTERN.test(fieldName)){errors.push({rule:"schemas/field-name",message:`Field "${fieldName}" must use ${CONTENT_FIELD_NAME_PATTERN_DESCRIPTION}.`,file});continue}if(RESERVED_FIELD_NAMES.has(fieldName)){errors.push({rule:"schemas/reserved-field",message:`Field "${fieldName}" is reserved entry metadata \u2014 the platform manages it automatically. Remove it from the schema${fieldName==="slug"?" (set slug inside entry data on create instead)":""}.`,file});continue}if(typeof definition!="object"||definition===null||Array.isArray(definition)){errors.push({rule:"schemas/field-shape",message:`Field "${fieldName}" must be an object like { "type": "string" }.`,file});continue}let{type}=definition;if((typeof type!="string"||!FIELD_TYPES.has(type))&&errors.push({rule:"schemas/field-type",message:`Field "${fieldName}" has unsupported type "${String(type)}". Allowed: ${[...FIELD_TYPES].join(", ")}.`,file}),"i18n"in definition||"localized"in definition){let key="i18n"in definition?"i18n":"localized";errors.push({rule:"schemas/field-i18n",message:`Field "${fieldName}": field-level locale settings ("${key}") are not supported.`,file})}if(type==="reference"){let{target,targets,many}=definition;if(targets!==void 0&&target!==void 0)errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" declares both "target" and "targets" \u2014 a field is fixed or polymorphic, never both.`,file});else if(targets!==void 0){let targetList=Array.isArray(targets)?targets:null;if(!targetList||targetList.length===0||new Set(targetList).size!==targetList.length)errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" must declare "targets" as a non-empty array of unique content types.`,file});else for(let candidate of targetList)typeof candidate!="string"||!CONTENT_TYPE_NAME_PATTERN.test(candidate)?errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" has an invalid entry in "targets".`,file}):schemaUids.size>0&&!schemaUids.has(candidate)&&errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" targets unknown schema "${candidate}".`,file})}else typeof target!="string"||!CONTENT_TYPE_NAME_PATTERN.test(target)?errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" must declare a valid "target" content type (or "targets" for a polymorphic field).`,file}):schemaUids.size>0&&!schemaUids.has(target)&&errors.push({rule:"schemas/reference-target",message:`Reference field "${fieldName}" targets unknown schema "${target}".`,file});many!==void 0&&typeof many!="boolean"&&errors.push({rule:"schemas/reference-many",message:`Reference field "${fieldName}" must use a boolean "many" value.`,file})}else for(let referenceOnlyKey of["target","targets","many"])referenceOnlyKey in definition&&errors.push({rule:"schemas/reference-shape",message:`Field "${fieldName}": "${referenceOnlyKey}" is only supported on reference fields.`,file})}return errors}__name(validateSchemaFile,"validateSchemaFile");init_api();init_config();init_auth_errors();import fs22 from"node:fs";import path26 from"node:path";var MIN_DB_LABELS_FIMO_VERSION="0.2.5",MIN_DB_LABELS_TEMPLATE_VERSION=4;function getDbLabelsRuntimeWarning(cwd){if(readExplicitConfigVersion(cwd)<MIN_DB_LABELS_TEMPLATE_VERSION)return null;let projectPackage=readPackageJson(path26.join(cwd,"package.json")),fimoSpec=findFimoSpec(projectPackage);if(!fimoSpec)return buildWarning("package.json has no fimo dependency");let source=findRuntimeVersion(cwd,fimoSpec);return!source||!isVersionOlder(source.version,MIN_DB_LABELS_FIMO_VERSION)?null:buildWarning(`${source.label} is fimo@${source.version}`)}__name(getDbLabelsRuntimeWarning,"getDbLabelsRuntimeWarning");function readExplicitConfigVersion(cwd){try{let raw=JSON.parse(fs22.readFileSync(path26.join(cwd,"fimo-config.json"),"utf8")),parsed=Number.parseInt(String(raw.version),10);return Number.isFinite(parsed)&&parsed>0?parsed:0}catch{return 0}}__name(readExplicitConfigVersion,"readExplicitConfigVersion");function buildWarning(subject){return[`CRITICAL: ${subject}, but DB-owned labels require fimo >= ${MIN_DB_LABELS_FIMO_VERSION}.`,"Labels changed with `fimo labels` or Fimo Studio may not render in this project until the app runtime is upgraded.","Run `npm install fimo@latest` (or your package manager equivalent), then run `fimo validate` again."].join(" ")}__name(buildWarning,"buildWarning");function findRuntimeVersion(cwd,fimoSpec){let installed=readPackageJson(path26.join(cwd,"node_modules","fimo","package.json"));if(typeof installed?.version=="string")return{label:"installed node_modules/fimo",version:installed.version};let packageLockVersion=readPackageLockVersion(cwd);if(packageLockVersion)return{label:"package-lock.json",version:packageLockVersion};let exactSpecVersion=parseVersion2(fimoSpec);if(exactSpecVersion)return{label:"package.json dependency",version:exactSpecVersion.normalized};if(fimoSpec.startsWith("file:")){let fileVersion=readFileDependencyVersion(cwd,fimoSpec);if(fileVersion)return{label:"package.json file dependency target",version:fileVersion}}return null}__name(findRuntimeVersion,"findRuntimeVersion");function findFimoSpec(pkg){let dependenciesSpec=pkg?.dependencies?.fimo;if(typeof dependenciesSpec=="string"&&dependenciesSpec.trim())return dependenciesSpec.trim();let devDependenciesSpec=pkg?.devDependencies?.fimo;return typeof devDependenciesSpec=="string"&&devDependenciesSpec.trim()?devDependenciesSpec.trim():null}__name(findFimoSpec,"findFimoSpec");function readFileDependencyVersion(cwd,spec){let rawPath=spec.slice(5),packageRoot=path26.isAbsolute(rawPath)?rawPath:path26.resolve(cwd,rawPath),pkg=readPackageJson(path26.join(packageRoot,"package.json"));return typeof pkg?.version=="string"?pkg.version:null}__name(readFileDependencyVersion,"readFileDependencyVersion");function readPackageLockVersion(cwd){try{let lock=JSON.parse(fs22.readFileSync(path26.join(cwd,"package-lock.json"),"utf8")),packagesVersion=lock.packages?.["node_modules/fimo"]?.version;if(typeof packagesVersion=="string")return packagesVersion;let dependencyVersion=lock.dependencies?.fimo?.version;return typeof dependencyVersion=="string"?dependencyVersion:null}catch{return null}}__name(readPackageLockVersion,"readPackageLockVersion");function readPackageJson(filePath){try{return JSON.parse(fs22.readFileSync(filePath,"utf8"))}catch{return null}}__name(readPackageJson,"readPackageJson");function isVersionOlder(version,minimum){let parsed=parseVersion2(version),parsedMinimum=parseVersion2(minimum);if(!parsed||!parsedMinimum)return!1;for(let key of["major","minor","patch"]){if(parsed[key]<parsedMinimum[key])return!0;if(parsed[key]>parsedMinimum[key])return!1}return!1}__name(isVersionOlder,"isVersionOlder");function parseVersion2(version){let match=version.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/);return match?{major:Number(match[1]),minor:Number(match[2]),patch:Number(match[3]),normalized:`${Number(match[1])}.${Number(match[2])}.${Number(match[3])}`}:null}__name(parseVersion2,"parseVersion");init_project_context();init_project();init_dist();import{existsSync as existsSync9,readFileSync as readFileSync9,readdirSync as readdirSync6,statSync as statSync3}from"node:fs";import{join as join11,resolve as resolve7}from"node:path";import fs23 from"node:fs/promises";import path27 from"node:path";async function pathExists(targetPath){try{return await fs23.access(targetPath),!0}catch{return!1}}__name(pathExists,"pathExists");async function removeDataFiles(dir){let entries2=await fs23.readdir(dir,{withFileTypes:!0});for(let entry of entries2){let fullPath=path27.join(dir,entry.name);entry.isDirectory()?await removeDataFiles(fullPath):entry.name.endsWith(".data")&&await fs23.rm(fullPath)}}__name(removeDataFiles,"removeDataFiles");async function exportStatic(options={}){let cwd=options.cwd??process.cwd(),clientDir=path27.resolve(cwd,"dist/client"),serverDir=path27.resolve(cwd,"dist/server");if(!await pathExists(clientDir))throw new Error("Missing dist/client output. Run `react-router build` first.");await pathExists(serverDir)&&await fs23.rm(serverDir,{recursive:!0,force:!0}),await removeDataFiles(clientDir),console.log("Static export complete.")}__name(exportStatic,"exportStatic");import{existsSync as existsSync8,readFileSync as readFileSync8,readdirSync as readdirSync5,statSync as statSync2}from"fs";import{join as join10}from"path";import{parseSync as parseSync2}from"oxc-parser";var SRC_DIR="src";function getLineAndColumn(code2,offset){let lines=code2.slice(0,offset).split(`
1130
1130
  `);return{line:lines.length,column:lines[lines.length-1].length+1}}__name(getLineAndColumn,"getLineAndColumn");function isStringLiteral(node){return node?node.type==="Literal"&&typeof node.value=="string"||node.type==="TemplateLiteral"&&(!node.expressions||node.expressions.length===0):!1}__name(isStringLiteral,"isStringLiteral");var DYNAMIC_KEY_MESSAGE=`Dynamic translation key detected. The first argument to t() must be a string literal, not a variable or expression.
1131
1131
 
1132
1132
  This breaks source tracking for inline editing. Translation keys must be statically analyzable.
@@ -1183,7 +1183,7 @@ ${failure.stderr}`});break}}__name(emitPushFailure,"emitPushFailure");function e
1183
1183
  `),padding=" ";return[JSON.stringify(first2),...rest.map(l=>`${padding}${JSON.stringify(l)}`)].join(`
1184
1184
  `)}return JSON.stringify(v)}__name(formatValue,"formatValue");function classifyStatus(diff){return diff.parent===null&&diff.child===null?"missing on both":diff.parent===null?"added on source":diff.child===null?"removed on source":diff.parent===diff.child?"unchanged":"changed"}__name(classifyStatus,"classifyStatus");function renderActivationDiff(diff,p2,opts={}){let lines=[];if(!opts.bare){lines.push(p2.bold(`${diff.agentName} \xB7 trigger ${diff.triggerIndex}`));let status=diff.parent?diff.child?"changed":"removed on source":"added on source";lines.push(p2.dim(` ${status}`)),lines.push("")}return lines.push(...fieldRow("enabled",diff.parent?.enabled,diff.child?.enabled,p2)),lines.push(...fieldRow("triggerKind",diff.parent?.triggerKind,diff.child?.triggerKind,p2)),lines.push(...fieldRow("emailRecipients",diff.parent?.emailRecipients,diff.child?.emailRecipients,p2)),lines.push(...fieldRow("qstashScheduleId",diff.parent?.qstashScheduleId,diff.child?.qstashScheduleId,p2)),lines.push(...fieldRow("triggerSpec",summarizeSpec(diff.parent),summarizeSpec(diff.child),p2)),lines.join(`
1185
1185
  `)}__name(renderActivationDiff,"renderActivationDiff");function summarizeSpec(side){if(!side)return;let keys=Object.keys(side.triggerSpec);if(keys.length===0)return"{}";let head=keys.slice(0,2).join(", "),more=keys.length>2?`, +${keys.length-2} more`:"";return`{ ${head}${more} }`}__name(summarizeSpec,"summarizeSpec");init_esm();init_cross_surface();init_surface();function renderDiff(report,p2,opts={}){let lines=[],arrow=opts.ascii?"->":"\u2192";lines.push(p2.bold(`${report.fromEnv} ${arrow} ${report.toEnv}`)),lines.push("");let surfaceOpts={ascii:opts.ascii,...opts.all?{maxItems:Number.MAX_SAFE_INTEGER}:{}};for(let name of SURFACE_NAMES){if(opts.surface&&opts.surface!==name)continue;let delta=report.surfaces.find(s=>s.surface===name);delta&&(lines.push(renderSurface(delta,p2,surfaceOpts)),lines.push(""))}return!opts.surface&&report.crossSurface&&report.crossSurface.length>0&&(lines.push(renderCrossSurface(report.crossSurface,p2,{ascii:opts.ascii})),lines.push("")),lines.join(`
1186
- `).replace(/\n+$/,"")}__name(renderDiff,"renderDiff");init_git();init_project_context();init_project();async function diffCommand(a,b,options,cmd){let program2=cmd?.parent??cmd,envOverride2=envOverrideFromCommand(program2),ctx=await getProjectContext({cwd:options.cwd,envOverride:envOverride2}),api=new FimoApiClient().withEnv(ctx.env),cwd=resolveProjectCwd(options.cwd),fromEnv=a??ctx.env,toEnv=b??DEFAULT_ENV;if(!b)try{toEnv=(await api.getEnv(ctx.projectId,fromEnv)).parentEnv??DEFAULT_ENV}catch{toEnv=DEFAULT_ENV}let surface=options.surface?SurfaceNameSchema.parse(options.surface):void 0;if(surface&&options.key){await runDrillIn({api,projectId:ctx.projectId,fromEnv,toEnv,surface,key:options.key});return}if(surface==="code"){if(!await isGitRepo(cwd)){ui.error({command:"diff",code:"NOT_A_GIT_REPO",message:"Not a git repository \u2014 cannot diff the code surface locally."});return}try{let patch=await runGit2(["diff",`${fromEnv}..${toEnv}`],cwd);ui.result({command:"diff",data:{from:fromEnv,to:toEnv,surface:"code",patch},render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return patch||p2.dim("(no code differences)")},"render")})}catch(err){ui.error({command:"diff",code:"GIT_DIFF_FAILED",message:`git diff failed: ${err.message}`})}return}let report=await api.getEnvDiff(ctx.projectId,fromEnv,{against:toEnv,surfaces:surface?[surface]:void 0});ui.result({command:"diff",data:report,render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return renderDiff(report,p2,{surface,all:options.all,ascii:rctx.ascii})},"render")})}__name(diffCommand,"diffCommand");async function runDrillIn(args){let{api,projectId,fromEnv,toEnv,surface,key}=args;try{switch(surface){case"code":{let payload=await api.getCodeFileDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderCodeFileDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"content":{let[collection,rowId]=splitOnce(key,":");if(!collection||!rowId)return invalidKey("content","<collection>:<rowId>");let payload=await api.getContentRowDiff(projectId,fromEnv,collection,rowId,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderContentRowDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"translations":{let[locale,i18nKey]=splitOnce(key,":");if(!locale||!i18nKey)return invalidKey("translations","<locale>:<i18nKey>");let payload=await api.getTranslationRowDiff(projectId,fromEnv,locale,i18nKey,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderTranslationRowDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"activations":{let[agentName,idxStr]=splitOnce(key,":");if(!agentName||!idxStr)return invalidKey("activations","<agentName>:<triggerIndex>");let triggerIndex=Number.parseInt(idxStr,10);if(Number.isNaN(triggerIndex))return invalidKey("activations","<agentName>:<triggerIndex>");let payload=await api.getActivationDiff(projectId,fromEnv,agentName,triggerIndex,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderActivationDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"schemas":{let payload=await api.getSchemaTypeDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderSchemaTypeDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"forms":{let payload=await api.getFormSchemaDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderFormSchemaDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"assets":{let payload=await api.getAssetDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderAssetDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}}}catch(err){let message=err instanceof Error?err.message:String(err);ui.error({command:"diff",code:"DRILL_FETCH_FAILED",message:`Failed to fetch ${surface} ${key}: ${message}`})}}__name(runDrillIn,"runDrillIn");function splitOnce(s,sep2){let idx=s.indexOf(sep2);return idx<0?[s,""]:[s.slice(0,idx),s.slice(idx+1)]}__name(splitOnce,"splitOnce");function invalidKey(surface,expected){ui.error({command:"diff",code:"DRILL_INVALID_KEY",message:`--key for surface '${surface}' must be in the form '${expected}'`})}__name(invalidKey,"invalidKey");init_dist5();init_dist();init_open();init_api();init_config();init_auth_errors();init_interactive();init_project();function resolveProject(options){if(options.project)return{projectId:options.project};let settings=loadProjectSettings(resolveProjectCwd(options.cwd));return{projectId:settings.projectId,organizationId:settings.organizationId}}__name(resolveProject,"resolveProject");function derivePublicDomain(project,fallback){if(project?.appUrl)try{let parts=new URL(project.appUrl).hostname.split(".");if(parts.length>=2)return parts.slice(1).join(".")}catch{}return fallback}__name(derivePublicDomain,"derivePublicDomain");async function loadPublicDomain(api,project){if(project?.appUrl)return derivePublicDomain(project,"fimo.site");try{let features=await api.getFeatures();return derivePublicDomain(project,features.publicationDomain)}catch{return derivePublicDomain(project,"fimo.site")}}__name(loadPublicDomain,"loadPublicDomain");function paywallHint(organizationId){return`Custom domains require a Premium plan. Upgrade at ${organizationId?`https://fimo.ai/billing/${organizationId}`:"https://fimo.ai/billing"}`}__name(paywallHint,"paywallHint");function isPaywall(err){return err instanceof ApiRequestError&&err.status===403}__name(isPaywall,"isPaywall");function updateErrorToMessage(reason){switch(reason){case"invalid_shape":return"Invalid URL. Use lowercase letters, numbers, and hyphens (max 63 chars).";case"reserved":case"taken_by_project":case"taken_by_legacy_custom_domain":return"This URL is not available.";case"kv_sync_failed":return"Couldn't sync the URL. Try again in a moment.";default:return"Failed to update URL."}}__name(updateErrorToMessage,"updateErrorToMessage");function pad(value,width){return value.length>=width?value:value+" ".repeat(width-value.length)}__name(pad,"pad");function statusLabel2(domain){return domain.status==="active"&&domain.ssl.status==="active"?"verified":domain.ssl.status==="failed"||(domain.ssl.validationErrors?.length??0)>0?"failed":"pending"}__name(statusLabel2,"statusLabel");function renderDnsInstructions(domain){if(domain.dnsAutoConfigured)return"DNS auto-configured by Fimo \u2014 nothing to do.";let rows=[];rows.push({type:"CNAME",name:domain.hostname,value:domain.cnameTarget});for(let record of domain.ownershipVerification??[])rows.push({type:record.type??"TXT",name:record.name,value:record.value});for(let record of domain.ssl.validationRecords??[])record.txtName&&record.txtValue?rows.push({type:"TXT",name:record.txtName,value:record.txtValue}):record.cname&&record.cnameTarget&&rows.push({type:"CNAME",name:record.cname,value:record.cnameTarget});let typeW=Math.max(4,...rows.map(r=>r.type.length)),nameW=Math.max(4,...rows.map(r=>r.name.length)),lines=["","DNS records to add at your registrar:",""];lines.push(` ${pad("TYPE",typeW)} ${pad("NAME",nameW)} VALUE`);for(let r of rows)lines.push(` ${pad(r.type,typeW)} ${pad(r.name,nameW)} ${r.value}`);return lines.join(`
1186
+ `).replace(/\n+$/,"")}__name(renderDiff,"renderDiff");init_git();init_project_context();init_project();async function diffCommand(a,b,options,cmd){let program2=cmd?.parent??cmd,envOverride2=envOverrideFromCommand(program2),ctx=await getProjectContext({cwd:options.cwd,envOverride:envOverride2}),api=new FimoApiClient().withEnv(ctx.env),cwd=resolveProjectCwd(options.cwd),fromEnv=a??ctx.env,toEnv=b??DEFAULT_ENV;if(!b)try{toEnv=(await api.getEnv(ctx.projectId,fromEnv)).parentEnv??DEFAULT_ENV}catch{toEnv=DEFAULT_ENV}let surface=options.surface?SurfaceNameSchema.parse(options.surface):void 0;if(surface&&options.key){await runDrillIn({api,projectId:ctx.projectId,fromEnv,toEnv,surface,key:options.key});return}if(surface==="code"){if(!await isGitRepo(cwd)){ui.error({command:"diff",code:"NOT_A_GIT_REPO",message:"Not a git repository \u2014 cannot diff the code surface locally."});return}try{let patch=await runGit2(["diff",`${fromEnv}..${toEnv}`],cwd);ui.result({command:"diff",data:{from:fromEnv,to:toEnv,surface:"code",patch},render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return patch||p2.dim("(no code differences)")},"render")})}catch(err){ui.error({command:"diff",code:"GIT_DIFF_FAILED",message:`git diff failed: ${err.message}`})}return}let report=await api.getEnvDiff(ctx.projectId,fromEnv,{against:toEnv,surfaces:surface?[surface]:void 0});ui.result({command:"diff",data:report,render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return renderDiff(report,p2,{surface,all:options.all,ascii:rctx.ascii})},"render")})}__name(diffCommand,"diffCommand");async function runDrillIn(args){let{api,projectId,fromEnv,toEnv,surface,key}=args;try{switch(surface){case"code":{let payload=await api.getCodeFileDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderCodeFileDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"content":{let[collection,rowId]=splitOnce(key,":");if(!collection||!rowId)return invalidKey("content","<collection>:<rowId>");let payload=await api.getContentRowDiff(projectId,fromEnv,collection,rowId,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderContentRowDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"translations":{let[locale,i18nKey]=splitOnce(key,":");if(!locale||!i18nKey)return invalidKey("translations","<locale>:<i18nKey>");let payload=await api.getTranslationRowDiff(projectId,fromEnv,locale,i18nKey,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderTranslationRowDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"activations":{let[agentName,idxStr]=splitOnce(key,":");if(!agentName||!idxStr)return invalidKey("activations","<agentName>:<triggerIndex>");let triggerIndex=Number.parseInt(idxStr,10);if(Number.isNaN(triggerIndex))return invalidKey("activations","<agentName>:<triggerIndex>");let payload=await api.getActivationDiff(projectId,fromEnv,agentName,triggerIndex,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderActivationDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"schemas":{let payload=await api.getSchemaTypeDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderSchemaTypeDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"forms":{let payload=await api.getFormSchemaDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderFormSchemaDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}case"assets":{let payload=await api.getAssetDiff(projectId,fromEnv,key,{against:toEnv});ui.result({command:"diff",data:payload,render:__name(rctx=>renderAssetDiff(payload,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}}}catch(err){let message=err instanceof Error?err.message:String(err);ui.error({command:"diff",code:"DRILL_FETCH_FAILED",message:`Failed to fetch ${surface} ${key}: ${message}`})}}__name(runDrillIn,"runDrillIn");function splitOnce(s,sep2){let idx=s.indexOf(sep2);return idx<0?[s,""]:[s.slice(0,idx),s.slice(idx+1)]}__name(splitOnce,"splitOnce");function invalidKey(surface,expected){ui.error({command:"diff",code:"DRILL_INVALID_KEY",message:`--key for surface '${surface}' must be in the form '${expected}'`})}__name(invalidKey,"invalidKey");init_dist5();init_dist();init_open();init_api();init_config();init_auth_errors();init_interactive();init_project();function resolveProject(options){if(options.project)return{projectId:options.project};let settings=loadProjectSettings(resolveProjectCwd(options.cwd));return{projectId:settings.projectId,organizationId:settings.organizationId}}__name(resolveProject,"resolveProject");function derivePublicDomain(project,fallback){if(project?.appUrl)try{let parts=new URL(project.appUrl).hostname.split(".");if(parts.length>=2)return parts.slice(1).join(".")}catch{}return fallback}__name(derivePublicDomain,"derivePublicDomain");async function loadPublicDomain(api,project){if(project?.appUrl)return derivePublicDomain(project,"fimo.site");try{let features=await api.getFeatures();return derivePublicDomain(project,features.publicationDomain)}catch{return derivePublicDomain(project,"fimo.site")}}__name(loadPublicDomain,"loadPublicDomain");function paywallHint(organizationId){return`Custom domains require a Premium plan. Upgrade at ${organizationId?`https://fimo.ai/billing/${organizationId}`:"https://fimo.ai/billing"}`}__name(paywallHint,"paywallHint");function isPaywall(err){return err instanceof ApiRequestError&&err.status===403}__name(isPaywall,"isPaywall");function updateErrorToMessage(reason){switch(reason){case"invalid_shape":return"Invalid URL. Use lowercase letters, numbers, and hyphens (max 63 chars).";case"reserved":case"taken_by_project":case"taken_by_legacy_custom_domain":return"This URL is not available.";case"hosting_sync_failed":case"kv_sync_failed":return"Couldn't sync the URL. Try again in a moment.";default:return"Failed to update URL."}}__name(updateErrorToMessage,"updateErrorToMessage");function pad(value,width){return value.length>=width?value:value+" ".repeat(width-value.length)}__name(pad,"pad");function statusLabel2(domain){return domain.status==="active"&&domain.ssl.status==="active"?"verified":domain.ssl.status==="failed"||(domain.ssl.validationErrors?.length??0)>0?"failed":"pending"}__name(statusLabel2,"statusLabel");function renderDnsInstructions(domain){if(domain.dnsAutoConfigured)return"DNS auto-configured by Fimo \u2014 nothing to do.";let rows=[];rows.push({type:"CNAME",name:domain.hostname,value:domain.cnameTarget});for(let record of domain.ownershipVerification??[])rows.push({type:record.type??"TXT",name:record.name,value:record.value});for(let record of domain.ssl.validationRecords??[])record.txtName&&record.txtValue?rows.push({type:"TXT",name:record.txtName,value:record.txtValue}):record.cname&&record.cnameTarget&&rows.push({type:"CNAME",name:record.cname,value:record.cnameTarget});let typeW=Math.max(4,...rows.map(r=>r.type.length)),nameW=Math.max(4,...rows.map(r=>r.name.length)),lines=["","DNS records to add at your registrar:",""];lines.push(` ${pad("TYPE",typeW)} ${pad("NAME",nameW)} VALUE`);for(let r of rows)lines.push(` ${pad(r.type,typeW)} ${pad(r.name,nameW)} ${r.value}`);return lines.join(`
1187
1187
  `)}__name(renderDnsInstructions,"renderDnsInstructions");function parseWait(opts,defaultEnabled){if(opts.noWait)return{enabled:!1,timeoutMs:0};if(opts.wait===void 0||opts.wait===null)return{enabled:defaultEnabled,timeoutMs:300*1e3};if(opts.wait===!0)return{enabled:!0,timeoutMs:300*1e3};let match=String(opts.wait).trim().toLowerCase().match(/^(\d+)(s|m)?$/);if(!match)return{enabled:!0,timeoutMs:300*1e3};let n=parseInt(match[1],10);return{enabled:!0,timeoutMs:(match[2]??"s")==="m"?n*6e4:n*1e3}}__name(parseWait,"parseWait");async function pollUntilVerified(api,projectId,initial,timeoutMs,organizationId){let start=Date.now(),sp=spinner(`Waiting for ${initial.hostname} (SSL: ${initial.ssl.status})`),current=initial;for(;Date.now()-start<timeoutMs;){if(current.status==="active"&&current.ssl.status==="active")return sp.succeed(`Verified \u2014 ${current.hostname} is live with SSL.`),current;if(current.ssl.status==="failed"||(current.ssl.validationErrors?.length??0)>0)return sp.fail(`SSL validation failed for ${current.hostname}.`),current;await new Promise(resolve8=>setTimeout(resolve8,5e3));try{current=await api.refreshProjectDomain(projectId,initial.id),sp.update(`Waiting for ${current.hostname} (SSL: ${current.ssl.status})`)}catch(err){return rethrowCliAuthError(err,()=>sp.fail("Authentication required")),isPaywall(err)?(sp.fail(paywallHint(organizationId)),current):(sp.fail(`Refresh failed: ${err instanceof Error?err.message:String(err)}`),current)}}return sp.fail(`Timed out after ${Math.round(timeoutMs/1e3)}s waiting for ${initial.hostname}.`),current}__name(pollUntilVerified,"pollUntilVerified");async function findDomainByIdOrHostname(api,projectId,needle){let domains2=await api.listProjectDomains(projectId),lower=needle.toLowerCase();return domains2.find(d3=>d3.id===needle||d3.hostname.toLowerCase()===lower)??null}__name(findDomainByIdOrHostname,"findDomainByIdOrHostname");async function domainsListCommand(options){let cfg=loadConfig(),api=new FimoApiClient(cfg),{projectId,organizationId}=resolveProject(options),project=await api.getProject(projectId),publicDomain=await loadPublicDomain(api,project),domains2=[],domainsBlocked=!1;try{domains2=await api.listProjectDomains(projectId)}catch(err){if(rethrowCliAuthError(err),isPaywall(err))domainsBlocked=!0;else throw err}let subdomain=project.subdomain??project.name,data2={defaultUrl:{subdomain,url:`${subdomain}.${publicDomain}`},customDomains:domains2,customDomainsBlocked:domainsBlocked};ui.result({command:"domains list",data:data2,render:__name(()=>{let lines=[];if(lines.push("Default URL"),lines.push(` ${subdomain}.${publicDomain}`),lines.push(""),lines.push("Custom domains"),domainsBlocked)return lines.push(` (${paywallHint(organizationId??project.organizationId??void 0)})`),lines.join(`
1188
1188
  `);if(domains2.length===0)return lines.push(" (none)"),lines.join(`
1189
1189
  `);let hostW=Math.max(8,...domains2.map(d3=>d3.hostname.length)),statusW=Math.max(8,...domains2.map(d3=>statusLabel2(d3).length));lines.push(` ${pad("HOSTNAME",hostW)} ${pad("STATUS",statusW)} ID`);for(let d3 of domains2)lines.push(` ${pad(d3.hostname,hostW)} ${pad(statusLabel2(d3),statusW)} ${d3.id}`);return lines.join(`
@@ -1197,7 +1197,7 @@ ${failure.stderr}`});break}}__name(emitPushFailure,"emitPushFailure");function e
1197
1197
  `)},"render")}),options.open&&purchased.checkoutUrl&&await open_default(purchased.checkoutUrl).catch(()=>{});let{enabled:waitEnabled,timeoutMs}=parseWait(options,!1);waitEnabled&&await pollPurchasePayment(api,organizationId,purchased,timeoutMs)}__name(domainsBuyCommand,"domainsBuyCommand");async function pollPurchasePayment(api,organizationId,initial,timeoutMs){let start=Date.now(),sp=spinner(`Waiting for payment (status: ${initial.status})`),current=initial;for(;Date.now()-start<timeoutMs;){if(current.status==="owned")return sp.succeed(`Registered \u2014 ${current.domain} is now yours.`),current;if(current.status==="registration_failed"||current.status==="payment_failed")return sp.fail(`${current.status==="payment_failed"?"Payment":"Registration"} failed for ${current.domain}.`),current;await new Promise(resolve8=>setTimeout(resolve8,5e3));try{current=await api.refreshRegisteredDomainPayment(organizationId,current.id),sp.update(`Waiting (status: ${current.status})`)}catch(err){return rethrowCliAuthError(err,()=>sp.fail("Authentication required")),sp.fail(`Refresh failed: ${err instanceof Error?err.message:String(err)}`),current}}return sp.fail("Timed out. Run `fimo domains owned` later to check status."),current}__name(pollPurchasePayment,"pollPurchasePayment");async function domainsOwnedCommand(options){let cfg=loadConfig(),api=new FimoApiClient(cfg),organizationId=resolveOrgId(options),domains2;try{domains2=await api.listOwnedRegisteredDomains(organizationId)}catch(err){rethrowCliAuthError(err);let featureMsg=featureDisabledMessage(err);if(featureMsg){ui.error({command:"domains owned",code:"DOMAIN_PURCHASE_DISABLED",message:featureMsg});return}if(err instanceof ApiRequestError&&err.status===403){ui.error({command:"domains owned",code:"OWNED_DOMAINS_FORBIDDEN",message:"You don't have access to this organization's domains.",hint:"Org admins only."});return}throw err}let statusFilter=options.status?.split(",").map(s=>s.trim().toLowerCase()).filter(s=>s.length>0),limit=options.limit?parseInt(options.limit,10):null,filtered=domains2;if(statusFilter&&statusFilter.length>0&&(filtered=filtered.filter(d3=>statusFilter.includes(d3.status.toLowerCase()))),limit!==null&&Number.isFinite(limit)&&limit>0&&(filtered=filtered.slice(0,limit)),filtered.length===0){ui.info({command:"domains owned",message:"No domains registered through Fimo yet.",hint:"Try `fimo domains search <keyword>`."});return}ui.result({command:"domains owned",data:{domains:filtered,total:filtered.length},render:__name(()=>{let nameW=Math.max(8,...filtered.map(d3=>d3.domain.length)),statusW=Math.max(8,...filtered.map(d3=>d3.status.length)),lines=[];lines.push(` ${pad("DOMAIN",nameW)} ${pad("STATUS",statusW)} EXPIRES`);for(let d3 of filtered){let expires=d3.expirationDate?new Date(d3.expirationDate).toISOString().slice(0,10):"\u2014";lines.push(` ${pad(d3.domain,nameW)} ${pad(d3.status,statusW)} ${expires}`)}return lines.join(`
1198
1198
  `)},"render")})}__name(domainsOwnedCommand,"domainsOwnedCommand");init_dist();init_project_context();function renderPrettyJson5(data2){return JSON.stringify(data2,null,2)}__name(renderPrettyJson5,"renderPrettyJson");function parseJsonObject(value){let parsed=JSON.parse(value);if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error("Expected a JSON object");return parsed}__name(parseJsonObject,"parseJsonObject");function addDefinedMetadata(body,metadata){for(let[key,value]of Object.entries(metadata))value!==void 0&&(body[key]=value);return body}__name(addDefinedMetadata,"addDefinedMetadata");async function entriesListCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("cms.list",{projectId:ctx.projectId,env:ctx.env});let params={};options.limit&&(params.limit=options.limit),options.offset&&(params.offset=options.offset),options.search&&(params.search=options.search),options.sort&&(params.sort=options.sort),!options.sort&&options.sortBy&&(params.sortBy=options.sortBy),!options.sort&&options.sortDirection&&(params.sortDirection=options.sortDirection),options.where&&(JSON.parse(options.where),params.where=options.where),options.fields&&(params.fields=options.fields),options.populate&&(params.populate=options.populate),options.locale&&(params.locale=options.locale);let result=await api.listEntries(ctx.projectId,typeName,Object.keys(params).length>0?params:void 0);ui.result({command:"entries list",data:result,render:__name(()=>renderPrettyJson5(result),"render")})}__name(entriesListCommand,"entriesListCommand");async function entriesGetCommand(typeName,id,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("cms.get",{projectId:ctx.projectId,env:ctx.env});let result=await api.getEntry(ctx.projectId,typeName,id,options.locale);ui.result({command:"entries get",data:result,render:__name(()=>renderPrettyJson5(result),"render")})}__name(entriesGetCommand,"entriesGetCommand");async function entriesCreateCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.create",{projectId:ctx.projectId,env:ctx.env});let data2=addDefinedMetadata(parseJsonObject(options.body),{locale:options.locale,documentId:options.documentId}),result=await api.createEntry(ctx.projectId,typeName,data2);ui.result({command:"entries create",data:result,render:__name(()=>renderPrettyJson5(result),"render")})}__name(entriesCreateCommand,"entriesCreateCommand");async function entriesUpdateCommand(typeName,id,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.update",{projectId:ctx.projectId,env:ctx.env});let data2=parseJsonObject(options.body),result=await api.updateEntry(ctx.projectId,typeName,id,options.locale,data2);ui.result({command:"entries update",data:result,render:__name(()=>renderPrettyJson5(result),"render")})}__name(entriesUpdateCommand,"entriesUpdateCommand");async function entriesDeleteCommand(typeName,id,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.delete",{projectId:ctx.projectId,env:ctx.env});let result=await api.deleteEntry(ctx.projectId,typeName,id,options.locale);ui.result({command:"entries delete",data:result,render:__name(()=>renderPrettyJson5(result),"render")})}__name(entriesDeleteCommand,"entriesDeleteCommand");init_dist();init_project_context();var UUID_RE=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function resolveFormId(api,projectId,formIdOrName){if(UUID_RE.test(formIdOrName))return formIdOrName;let forms3=await api.listForms(projectId),matches=(Array.isArray(forms3)?forms3:[]).filter(f=>f&&f.name===formIdOrName);if(matches.length===0)throw new Error(`No form named '${formIdOrName}'. Run \`fimo forms list\` to see options.`);if(matches.length>1)throw new Error(`Multiple forms named '${formIdOrName}' (${matches.length}). Pass the form ID instead.`);return matches[0].id}__name(resolveFormId,"resolveFormId");async function formsSubmissionsListCommand(formIdOrName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("forms.list",{projectId:ctx.projectId,env:ctx.env});let formId=await resolveFormId(api,ctx.projectId,formIdOrName),params={};if(options.limit!==void 0){let n=Number(options.limit);if(!Number.isFinite(n)||n<1)throw new Error(`Invalid --limit value: ${options.limit}`);params.limit=n}if(options.offset!==void 0){let n=Number(options.offset);if(!Number.isFinite(n)||n<0)throw new Error(`Invalid --offset value: ${options.offset}`);params.offset=n}if(options.search&&(params.searchQuery=options.search),options.sort){if(options.sort!=="asc"&&options.sort!=="desc")throw new Error(`Invalid --sort value: ${options.sort}. Expected 'asc' or 'desc'.`);params.sortDirection=options.sort}let result=await api.listFormSubmissions(ctx.projectId,formId,params);ui.result({command:"forms submissions list",data:result,render:__name(()=>JSON.stringify(result,null,2),"render")})}__name(formsSubmissionsListCommand,"formsSubmissionsListCommand");async function formsSubmissionsGetCommand(formIdOrName,submissionId,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("forms.get",{projectId:ctx.projectId,env:ctx.env});let formId=await resolveFormId(api,ctx.projectId,formIdOrName),result=await api.getFormSubmission(ctx.projectId,formId,submissionId);ui.result({command:"forms submissions get",data:result,render:__name(()=>JSON.stringify(result,null,2),"render")})}__name(formsSubmissionsGetCommand,"formsSubmissionsGetCommand");async function formsSubmissionsStatsCommand(formIdOrName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("forms.get",{projectId:ctx.projectId,env:ctx.env});let formId=await resolveFormId(api,ctx.projectId,formIdOrName),result=await api.getFormSubmissionStats(ctx.projectId,formId);ui.result({command:"forms submissions stats",data:result,render:__name(()=>JSON.stringify(result,null,2),"render")})}__name(formsSubmissionsStatsCommand,"formsSubmissionsStatsCommand");init_dist();import fs32 from"node:fs";import path33 from"node:path";init_project_context();init_project();function renderPrettyJson6(data2){return JSON.stringify(data2,null,2)}__name(renderPrettyJson6,"renderPrettyJson");async function formsListCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("forms.list",{projectId:ctx.projectId,env:ctx.env});let result=await api.listForms(ctx.projectId);ui.result({command:"forms list",data:result,render:__name(()=>renderPrettyJson6(result),"render")})}__name(formsListCommand,"formsListCommand");async function formsGetCommand(id,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("forms.get",{projectId:ctx.projectId,env:ctx.env});let result=await api.getForm(ctx.projectId,id);ui.result({command:"forms get",data:result,render:__name(()=>renderPrettyJson6(result),"render")})}__name(formsGetCommand,"formsGetCommand");async function formsPushCommand(formName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("forms.push",{projectId:ctx.projectId,env:ctx.env});let cwd=resolveProjectCwd(options.cwd),formsDir=path33.join(cwd,"src/forms"),files=formName?[`${formName}.json`]:fs32.readdirSync(formsDir).filter(f=>f.endsWith(".json")),results=[];for(let file of files){let filePath=path33.join(formsDir,file);if(!fs32.existsSync(filePath))throw new Error(`Form file not found: ${filePath}`);let form=JSON.parse(fs32.readFileSync(filePath,"utf-8")),{id,...payload2}=form;if(id){let result=await api.updateForm(ctx.projectId,id,payload2);results.push(result)}else{let result=await api.createForm(ctx.projectId,payload2);form.id=result.id,fs32.writeFileSync(filePath,`${JSON.stringify(form,null,2)}
1199
1199
  `),results.push(result)}}let payload=results.length===1?results[0]:results;ui.result({command:"forms push",data:payload,render:__name(()=>renderPrettyJson6(payload),"render")})}__name(formsPushCommand,"formsPushCommand");async function formsDeleteCommand(id,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("forms.delete",{projectId:ctx.projectId,env:ctx.env});let result=await api.deleteForm(ctx.projectId,id);ui.result({command:"forms delete",data:result,render:__name(()=>renderPrettyJson6(result),"render")})}__name(formsDeleteCommand,"formsDeleteCommand");init_dist();init_project_context();init_dist();function coerceScalar(type,raw){switch(type){case"number":return Number.parseFloat(raw);case"integer":return Number.parseInt(raw,10);case"boolean":return raw==="true"||raw==="1";case"unknown":try{return JSON.parse(raw)}catch{return raw}default:return raw}}__name(coerceScalar,"coerceScalar");function tokenizeFlags(tokens,knownNames,booleanNames,shortAliases={}){let values=new Map,bools=new Map,unknown=[];for(let i=0;i<tokens.length;i++){let tok=tokens[i],name,inlineVal;if(tok.startsWith("--")){name=tok.slice(2);let eq2=name.indexOf("=");eq2!==-1&&(inlineVal=name.slice(eq2+1),name=name.slice(0,eq2))}else if(tok.length===2&&tok.startsWith("-")&&shortAliases[tok])name=shortAliases[tok];else continue;let negated=!1;if(name.startsWith("no-")&&(negated=!0,name=name.slice(3)),!knownNames.has(name)){unknown.push(`--${name}`);continue}if(booleanNames.has(name)){bools.set(name,!negated);continue}let val2=inlineVal;if(val2===void 0){let next2=tokens[i+1];if(next2===void 0||next2.startsWith("-")){unknown.push(`--${name} (missing value)`);continue}val2=next2,i++}let arr=values.get(name);arr?arr.push(val2):values.set(name,[val2])}return{values,bools,unknown}}__name(tokenizeFlags,"tokenizeFlags");function buildOptions(flags,values,bools){let options={},missing=[];for(let flag2 of flags){if(flag2.type==="boolean"){bools.has(flag2.name)?options[flag2.key]=bools.get(flag2.name):flag2.required&&missing.push(`--${flag2.name}`);continue}let vals=values.get(flag2.name);if(!vals||vals.length===0){flag2.required&&missing.push(`--${flag2.name}`);continue}options[flag2.key]=flag2.isArray?vals.map(v=>coerceScalar(flag2.type,v)):coerceScalar(flag2.type,vals[vals.length-1])}return{options,missing}}__name(buildOptions,"buildOptions");init_auth_errors();var UNIVERSAL_NAMES=new Set(["name","parent","cwd","json","dry-run","help"]),UNIVERSAL_BOOLEANS=new Set(["json","dry-run","help"]),SHORT_ALIASES={"-C":"cwd","-h":"help"};function cwdFromTokens(tokens){for(let index2=0;index2<tokens.length;index2++){let token=tokens[index2];if(token.startsWith("--cwd="))return token.slice(6);if((token==="--cwd"||token==="-C")&&tokens[index2+1])return tokens[index2+1]}}__name(cwdFromTokens,"cwdFromTokens");function parseGenerationFlags({commandName:commandName2,subject,helpCommand,flags,tokens}){let knownNames=new Set([...flags.map(flag2=>flag2.name),...UNIVERSAL_NAMES]),booleanNames=new Set([...flags.filter(flag2=>flag2.type==="boolean").map(flag2=>flag2.name),...UNIVERSAL_BOOLEANS]),{values,bools,unknown}=tokenizeFlags(tokens,knownNames,booleanNames,SHORT_ALIASES);unknown.length>0&&(ui.error({command:commandName2,code:"UNKNOWN_FLAGS",message:`Unknown flag(s) for ${subject}: ${unknown.join(", ")}`,hint:`Run \`${helpCommand}\` to see valid flags.`}),process.exit(78));let{options,missing}=buildOptions(flags,values,bools);return missing.length>0&&(ui.error({command:commandName2,code:"MISSING_REQUIRED_FLAGS",message:`Missing required flag(s) for ${subject}: ${missing.join(", ")}`,hint:`Run \`${helpCommand}\` to see required flags.`}),process.exit(78)),{values,bools,options}}__name(parseGenerationFlags,"parseGenerationFlags");function renderGenerationHelp({usage,description,flags,footer}){let lines=[usage,` ${description}`,""];for(let flag2 of flags){let type=flag2.enumValues?.length?flag2.enumValues.join("|"):flag2.type,value=flag2.type==="boolean"?"":` <${type}>`,metadata=[flag2.required?"required":"optional",flag2.isArray?"repeatable":""].filter(Boolean).join(", ");lines.push(` --${flag2.name}${value} (${metadata})`)}return lines.push(""),lines.push(" --name <string> (optional asset name)"),lines.push(" --parent <id> (optional media-library folder)"),lines.push(" --dry-run (validate and estimate without generating)"),footer&&(lines.push(""),lines.push(footer)),lines.join(`
1200
- `)}__name(renderGenerationHelp,"renderGenerationHelp");async function submitGeneration({commandName:commandName2,ctx,api,body}){await requireOperation("assets.generate",{projectId:ctx.projectId,env:ctx.env});try{let result=await api.generate(ctx.projectId,body),asset=result.asset;ui.result({command:commandName2,data:result,render:__name(()=>`\u2713 Generated ${asset?.name??"(no name)"} \u2014 ${asset?.id??result.jobId}`,"render")})}catch(error){rethrowCliAuthError(error),ui.error({command:commandName2,code:"GENERATION_FAILED",message:error instanceof Error?error.message:"Generation failed"}),process.exit(1)}}__name(submitGeneration,"submitGeneration");function parseGenerateArgv(argv=process.argv.slice(2)){let gi=argv.indexOf("generate");if(gi===-1)return{tokens:[]};let rest=argv.slice(gi+1),namespacedModelIndex=rest.findIndex(token=>/^[a-z][a-z0-9-]*\/\S+$/i.test(token)),mi=namespacedModelIndex>=0?namespacedModelIndex:rest[0]&&!rest[0].startsWith("-")?0:-1;return mi===-1?{tokens:rest}:{model:rest[mi],tokens:[...rest.slice(0,mi),...rest.slice(mi+1)]}}__name(parseGenerateArgv,"parseGenerateArgv");function renderModelHelp(model){return renderGenerationHelp({usage:`fimo generate ${model.id} [flags]`,description:`${model.description.split(". ")[0]}.`,flags:model.flags,footer:`Full detail + examples: fimo models show ${model.id}`})}__name(renderModelHelp,"renderModelHelp");async function runGenerate(command){let{model,tokens}=parseGenerateArgv();if(!model){ui.info({command:"generate",message:"Usage: fimo generate fal/<endpoint-id> [--flag value ...]",hint:"Enable the Fal integration, then run `fimo models list`."});return}model.startsWith("fal/")||(ui.error({command:"generate",code:"BUILT_IN_MODEL_HIDDEN",message:"Direct generation is available only for models from the enabled Fal integration.",hint:"Use a task command, or run `fimo integrations enable fal` for the catalog escape hatch."}),process.exit(78));let wantsHelp=tokens.includes("--help")||tokens.includes("-h"),isJson=currentMode().format==="json",{ctx,api}=await bootstrapProjectCommand({cwd:cwdFromTokens(tokens)},command,{quiet:isJson}),dto=await api.getModel(ctx.projectId,model);if(dto||(ui.error({command:"generate",code:"UNKNOWN_MODEL",message:`Unknown model: "${model}".`,hint:"Run `fimo models list` to see available models."}),process.exit(78)),wantsHelp){ui.result({command:"generate",data:{model:dto},render:__name(()=>renderModelHelp(dto),"render")});return}let{values,bools,options}=parseGenerationFlags({commandName:"generate",subject:dto.id,helpCommand:`fimo models show ${dto.id}`,flags:dto.flags,tokens}),universal={name:values.get("name")?.[0],parent:values.get("parent")?.[0]??null,cwd:values.get("cwd")?.[0],dryRun:bools.get("dry-run")??!1},body={model:dto.id,options,name:universal.name,parentId:universal.parent};if(universal.dryRun){let estimate=await api.estimateModel(ctx.projectId,dto.id,options);ui.result({command:"generate",data:{...body,estimate},render:__name(()=>JSON.stringify({...body,estimate},null,2),"render")});return}await submitGeneration({commandName:"generate",ctx,api,body})}__name(runGenerate,"runGenerate");function registerGenerate(program2){let command=new Command("generate").description("Generate media through an enabled Fal integration endpoint").argument("[model]","Namespaced endpoint id from `fimo models list`").allowUnknownOption(!0).allowExcessArguments(!0).helpOption(!1).addHelpText("after","\nEnable Fal, then run `fimo models list` or `fimo models show <model>`.").action(async(_model,_opts,command2)=>{await runGenerate(command2)});program2.addCommand(command,{hidden:!0})}__name(registerGenerate,"registerGenerate");init_api();init_project_context();function parseCredentialInput(raw){let out={};for(let line of raw.split(`
1200
+ `)}__name(renderGenerationHelp,"renderGenerationHelp");async function submitGeneration({commandName:commandName2,ctx,api,body}){await requireOperation("assets.generate",{projectId:ctx.projectId,env:ctx.env});try{let result=await api.generate(ctx.projectId,body),asset=result.asset;ui.result({command:commandName2,data:result,render:__name(()=>`\u2713 Generated ${asset?.name??"(no name)"} \u2014 ${asset?.id??result.jobId}`,"render")})}catch(error){rethrowCliAuthError(error),ui.error({command:commandName2,code:"GENERATION_FAILED",message:error instanceof Error?error.message:"Generation failed"}),process.exit(1)}}__name(submitGeneration,"submitGeneration");function parseGenerateArgv(argv=process.argv.slice(2)){let gi=argv.indexOf("generate");if(gi===-1)return{tokens:[]};let rest=argv.slice(gi+1),namespacedModelIndex=rest.findIndex(token=>/^[a-z][a-z0-9-]*\/\S+$/i.test(token)),mi=namespacedModelIndex>=0?namespacedModelIndex:rest[0]&&!rest[0].startsWith("-")?0:-1;return mi===-1?{tokens:rest}:{model:rest[mi],tokens:[...rest.slice(0,mi),...rest.slice(mi+1)]}}__name(parseGenerateArgv,"parseGenerateArgv");function renderModelHelp(model){return renderGenerationHelp({usage:`fimo generate ${model.id} [flags]`,description:`${model.description.split(". ")[0]}.`,flags:model.flags,footer:`Full detail + examples: fimo models show ${model.id}`})}__name(renderModelHelp,"renderModelHelp");async function runGenerate(command){let{model,tokens}=parseGenerateArgv();if(!model){ui.info({command:"generate",message:"Usage: fimo generate fal/<endpoint-id> [--flag value ...]",hint:"Enable the Fal integration, then run `fimo models list`."});return}model.startsWith("fal/")||(ui.error({command:"generate",code:"BUILT_IN_MODEL_HIDDEN",message:"Direct generation is available only for models from the enabled Fal integration.",hint:'For images, run `fimo image generate --prompt "\u2026" --quality premium --aspect-ratio 1:1`; enable Fal only for direct `fal/...` catalog IDs.'}),process.exit(78));let wantsHelp=tokens.includes("--help")||tokens.includes("-h"),isJson=currentMode().format==="json",{ctx,api}=await bootstrapProjectCommand({cwd:cwdFromTokens(tokens)},command,{quiet:isJson}),dto=await api.getModel(ctx.projectId,model);if(dto||(ui.error({command:"generate",code:"UNKNOWN_MODEL",message:`Unknown model: "${model}".`,hint:"Run `fimo models list` to see available models."}),process.exit(78)),wantsHelp){ui.result({command:"generate",data:{model:dto},render:__name(()=>renderModelHelp(dto),"render")});return}let{values,bools,options}=parseGenerationFlags({commandName:"generate",subject:dto.id,helpCommand:`fimo models show ${dto.id}`,flags:dto.flags,tokens}),universal={name:values.get("name")?.[0],parent:values.get("parent")?.[0]??null,cwd:values.get("cwd")?.[0],dryRun:bools.get("dry-run")??!1},body={model:dto.id,options,name:universal.name,parentId:universal.parent};if(universal.dryRun){let estimate=await api.estimateModel(ctx.projectId,dto.id,options);ui.result({command:"generate",data:{...body,estimate},render:__name(()=>JSON.stringify({...body,estimate},null,2),"render")});return}await submitGeneration({commandName:"generate",ctx,api,body})}__name(runGenerate,"runGenerate");function registerGenerate(program2){let command=new Command("generate").description("Generate media through an enabled Fal integration endpoint").argument("[model]","Namespaced endpoint id from `fimo models list`").allowUnknownOption(!0).allowExcessArguments(!0).helpOption(!1).addHelpText("after","\nEnable Fal, then run `fimo models list` or `fimo models show <model>`.").action(async(_model,_opts,command2)=>{await runGenerate(command2)});program2.addCommand(command,{hidden:!0})}__name(registerGenerate,"registerGenerate");init_api();init_project_context();function parseCredentialInput(raw){let out={};for(let line of raw.split(`
1201
1201
  `)){if(line==="")break;let eq2=line.indexOf("=");eq2>0&&(out[line.slice(0,eq2)]=line.slice(eq2+1))}return out}__name(parseCredentialInput,"parseCredentialInput");function buildCredentialOutput(input,cred){if(input.protocol!=="https"||input.host!==cred.host||input.path&&input.path.replace(/^\//,"").replace(/\.git$/,"")!==cred.repo)return null;let out=`protocol=https
1202
1202
  host=${cred.host}
1203
1203
  username=${cred.username}
@@ -1240,10 +1240,10 @@ Run \`fimo integrations <command> --help\` for command-specific help.
1240
1240
  `)}__name(renderMonitorToolRun,"renderMonitorToolRun");function pushMonitorSummary(lines,monitor){if(lines.push(""),lines.push(monitor.name),lines.push(`ID: ${monitor.id}`),monitor.status&&lines.push(`Status: ${monitor.status}`),monitor.schedule){let schedule=monitor.schedule.text??monitor.schedule.cron;schedule&&lines.push(`Schedule: ${schedule}${monitor.schedule.timezone?` (${monitor.schedule.timezone})`:""}`)}monitor.nextRunAt&&lines.push(`Next run: ${monitor.nextRunAt}`),typeof monitor.estimatedCreditsPerMonth=="number"&&lines.push(`Estimated Firecrawl credits/month: ${monitor.estimatedCreditsPerMonth}`)}__name(pushMonitorSummary,"pushMonitorSummary");function formatMonitorCheckSummary(summary2){return Object.entries(summary2).filter(([,value])=>typeof value=="number").map(([key,value])=>`${key}=${value}`).join(", ")}__name(formatMonitorCheckSummary,"formatMonitorCheckSummary");function baseRunLines(run){let lines=[`${run.integrationKey} ${run.tool}`];return pushRunMetadata(lines,run),lines}__name(baseRunLines,"baseRunLines");function pushRunMetadata(lines,run){if(run.connectionAlias&&lines.push(`Connection: ${run.connectionAlias}`),run.billing&&lines.push(`Fimo credits: ${run.billing.credits}`),run.usage){let usage=[typeof run.usage.providerCredits=="number"?`${run.usage.providerCredits} ${run.usage.provider} credits`:null,typeof run.usage.requests=="number"?`${run.usage.requests} request`:null].filter(value=>!!value);usage.length>0&&lines.push(`Provider usage: ${usage.join(", ")}`)}}__name(pushRunMetadata,"pushRunMetadata");function credentialStatusLabel(status){return status==="not_required"?"not required":status}__name(credentialStatusLabel,"credentialStatusLabel");function parseAuthMode(value){if(value==="api-key"||value==="token")return"personal";if(value==="fimo"||value==="personal"||value==="oauth")return value;throw new Error(`Unknown auth mode '${value}'. Use 'fimo', 'api-key', or 'oauth'.`)}__name(parseAuthMode,"parseAuthMode");function authKindCliLabel(kind){return kind.replace("_","-")}__name(authKindCliLabel,"authKindCliLabel");function buildRunRequest(tool,opts){let withConnection=__name(request=>{let connectionAlias=opts.connection?.trim();return connectionAlias?{...request,connectionAlias}:request},"withConnection");switch(tool){case"search":if(!opts.query)throw new Error("Pass --query to search the web.");return withConnection({tool:"search",input:{query:opts.query,maxResults:parseOptionalInt(opts.maxResults,"--max-results",1),timeoutMs:parseOptionalInt(opts.timeoutMs,"--timeout-ms",1)}});case"scrape":if(!opts.url)throw new Error("Pass --url to scrape a page.");return withConnection({tool:"scrape",input:{url:opts.url,formats:parseFirecrawlFormats(opts.formats),onlyMainContent:opts.allContent?!1:void 0,timeoutMs:parseOptionalInt(opts.timeoutMs,"--timeout-ms",1),waitForMs:parseOptionalInt(opts.waitForMs,"--wait-for-ms",0)}});case"map":if(!opts.url)throw new Error("Pass --url to map a site.");return withConnection({tool:"map",input:{url:opts.url,search:opts.search,limit:parseOptionalInt(opts.limit,"--limit",1),includeSubdomains:opts.includeSubdomains,timeoutMs:parseOptionalInt(opts.timeoutMs,"--timeout-ms",1)}});case"crawl":if(!opts.url)throw new Error("Pass --url to crawl a site.");return withConnection({tool:"crawl",input:{url:opts.url,limit:parseOptionalInt(opts.limit,"--limit",1),formats:parseFirecrawlFormats(opts.formats),onlyMainContent:opts.allContent?!1:void 0,timeoutMs:parseOptionalInt(opts.timeoutMs,"--timeout-ms",1)}});case"monitor.create":{if(!opts.name)throw new Error("Pass --name to create a Firecrawl monitor.");if(!opts.url)throw new Error("Pass --url to create a Firecrawl monitor.");if(!opts.schedule)throw new Error("Pass --schedule to create a Firecrawl monitor.");let retentionDays=parseOptionalInt(opts.retentionDays,"--retention-days",1);if(retentionDays!==void 0&&retentionDays>365)throw new Error("--retention-days must be less than or equal to 365.");return withConnection({tool:"monitor.create",input:{name:opts.name,schedule:{text:opts.schedule,...opts.timezone?{timezone:opts.timezone}:{}},targets:[{type:parseFirecrawlMonitorTarget(opts.target),urls:parseCsvList(opts.url),scrapeOptions:{formats:parseFirecrawlFormats(opts.formats),onlyMainContent:opts.allContent?!1:void 0,timeoutMs:parseOptionalInt(opts.timeoutMs,"--timeout-ms",1),waitForMs:parseOptionalInt(opts.waitForMs,"--wait-for-ms",0)}}],...opts.goal?{goal:opts.goal}:{},...opts.judge?{judgeEnabled:!0}:{},...retentionDays!==void 0?{retentionDays}:{},...opts.emails?{notification:{email:{enabled:!0,recipients:parseCsvList(opts.emails),includeDiffs:!0}}}:{}}})}case"monitor.list":return withConnection({tool:"monitor.list",input:{}});case"monitor.get":case"monitor.pause":case"monitor.resume":case"monitor.delete":case"monitor.run":case"monitor.checks":{if(!opts.monitorId)throw new Error(`Pass --monitor-id to run ${tool}.`);return withConnection({tool,input:{monitorId:opts.monitorId}})}case"monitor.check":{if(!opts.monitorId)throw new Error("Pass --monitor-id to run monitor.check.");if(!opts.checkId)throw new Error("Pass --check-id to run monitor.check.");return withConnection({tool:"monitor.check",input:{monitorId:opts.monitorId,checkId:opts.checkId}})}default:throw new Error(`Unknown integration tool '${tool}'. Firecrawl supports search, scrape, map, crawl, and monitor.* tools.`)}}__name(buildRunRequest,"buildRunRequest");function parseFirecrawlMonitorTarget(value){if(value===void 0||value==="scrape")return"scrape";if(value==="crawl")return"crawl";throw new Error("--target must be 'scrape' or 'crawl'.")}__name(parseFirecrawlMonitorTarget,"parseFirecrawlMonitorTarget");function parseCsvList(value){let parts=value.split(",").map(part=>part.trim()).filter(part=>part.length>0);if(parts.length===0)throw new Error("Expected at least one comma-separated value.");return parts}__name(parseCsvList,"parseCsvList");function parseFirecrawlFormats(value){let result={},parts=(value??"markdown").split(",").map(part=>part.trim().toLowerCase()).filter(part=>part.length>0);for(let part of parts)switch(part){case"markdown":result.markdown=!0;break;case"summary":result.summary=!0;break;case"links":result.links=!0;break;case"images":result.images=!0;break;case"html":result.html="cleaned";break;case"raw-html":case"rawhtml":result.html="raw";break;default:throw new Error(`Unknown Firecrawl scrape format '${part}'. Use markdown, summary, links, images, html, or raw-html.`)}if(!Object.values(result).some(enabled=>!!enabled))throw new Error("Choose at least one Firecrawl scrape format.");return result}__name(parseFirecrawlFormats,"parseFirecrawlFormats");function parseOptionalInt(value,option,min){if(value===void 0)return;let parsed=Number(value);if(!Number.isInteger(parsed)||parsed<min)throw new Error(`${option} must be an integer greater than or equal to ${min}.`);return parsed}__name(parseOptionalInt,"parseOptionalInt");function trimContent(content2,maxLength){return content2.length<=maxLength?content2:`${content2.slice(0,maxLength).trimEnd()}
1241
1241
  ...`}__name(trimContent,"trimContent");function resolveProjectId3(opts){if(opts.project)return opts.project;let cwd=resolveProjectCwd(opts.cwd);return loadProjectSettings(cwd).projectId}__name(resolveProjectId3,"resolveProjectId");function resolveOrganizationId(opts){if(opts.org)return opts.org;try{let cwd=resolveProjectCwd(opts.cwd),settings=loadProjectSettings(cwd);if(settings.organizationId)return settings.organizationId}catch{}let active=readCredentials()?.activeOrganization?.id;if(active)return active;throw new Error("No organization found. Run inside a Fimo project, pass --org <id>, or run `fimo switch`.")}__name(resolveOrganizationId,"resolveOrganizationId");async function resolveConnectionToken(opts){if(opts.token)return opts.token;if(opts.tokenStdin)return readStdinValue();assertInteractive("Pass --token-stdin or --token <value>.","integrations connect");let value=await bt({message:"Integration API token",validate:__name(input=>input?.trim().length?void 0:"token required","validate")});if(q(value))throw new Error("Cancelled.");return String(value)}__name(resolveConnectionToken,"resolveConnectionToken");async function readStdinValue(){if(process.stdin.isTTY)throw new Error("Pass a value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue,"readStdinValue");init_dist5();init_dist();init_api();init_auth();init_config();init_auth_errors();init_project();import fs34 from"node:fs";import path37 from"node:path";var EMAIL_RE=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,ORGANIZATION_ROLE_OPTIONS=[{value:"member",label:"Member",hint:"Can create projects and view members"},{value:"admin",label:"Admin",hint:"Can manage members, settings, and projects"},{value:"owner",label:"Owner",hint:"Full control over the organization"}],PROJECT_ROLE_OPTIONS=[{value:"view",label:"Can view",hint:"Read-only access to the project"},{value:"comment",label:"Can comment",hint:"Can view and leave comments"},{value:"edit",label:"Can edit",hint:"Can edit code, content, assets, and use AI chat"},{value:"full",label:"Full access",hint:"Can manage settings, sharing, and publishing"}];async function inviteCommand(options){let cfg=loadConfig();requireCredentials(cfg);let isPretty2=currentMode().format==="pretty";isPretty2&&mt("Invite a user to Fimo");let api=new FimoApiClient(cfg),target=await resolveInviteTarget(options.target);if(!target)return;if(target==="project"&&options.resend){ui.error({command:"invite",code:"RESEND_PROJECT_UNSUPPORTED",message:"`--resend` is only supported for organization invites."});return}let email=await resolveSingleEmail(options.email);if(!email)return;if(target==="organization"){let organization=await resolveOrganization2(api,options.org);if(!organization)return;let role2=await resolveOrganizationRole(options.role);if(!role2||(isPretty2&&wt(["Target: organization",`Organization: ${organization.name} (${organization.id})`,`Email: ${email}`,`Role: ${role2}`,options.resend?"Resend existing invite: yes":null].filter(Boolean).join(`
1242
1242
  `),"Review invite"),!await confirmInvite(options.yes)))return;let sp2=spinner(options.resend?"Resending invitation":"Sending invitation");try{await api.inviteOrganizationMember({organizationId:organization.id,email,role:role2,resend:options.resend}),sp2.succeed(options.resend?"Invitation resent":"Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp2.fail("Authentication required")),sp2.fail(options.resend?"Failed to resend invitation":"Failed to send invitation"),error}ui.ok({command:"invite",headline:`${options.resend?"Resent":"Sent"} organization invite to ${email} for ${organization.name} as ${role2}.`,details:{target:"organization",organization_id:organization.id,organization_name:organization.name,email,role:role2,resent:options.resend===!0}});return}let project=await resolveProject2(api,options);if(!project)return;let role=await resolveProjectRole(options.role);if(!role||(isPretty2&&wt(["Target: project",`Project: ${formatProjectLabel(project)} (${project.id})`,`Email: ${email}`,`Access: ${role}`].join(`
1243
- `),"Review invite"),!await confirmInvite(options.yes)))return;let sp=spinner("Sending invitation");try{await api.inviteProjectUser({projectId:project.id,email,roleKey:role}),sp.succeed("Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp.fail("Authentication required")),sp.fail("Failed to send invitation"),error}ui.ok({command:"invite",headline:`Sent project invite to ${email} for ${formatProjectLabel(project)} as ${role}.`,details:{target:"project",project_id:project.id,project_name:project.name,email,role}})}__name(inviteCommand,"inviteCommand");async function resolveInviteTarget(targetArg){if(targetArg){let normalized=normalizeTarget(targetArg);return normalized||(ui.error({command:"invite",code:"INVALID_TARGET",message:`Unsupported target "${targetArg}".`,hint:'Use "organization" or "project".'}),null)}let selected=await _t({message:"Where do you want to invite this user?",initialValue:"project",options:[{value:"project",label:"Project",hint:"Invite someone to collaborate on a single project"},{value:"organization",label:"Organization",hint:"Invite someone to join the organization"}]});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeTarget(String(selected))}__name(resolveInviteTarget,"resolveInviteTarget");async function resolveSingleEmail(emailArg){let initialValue=emailArg?.trim();if(initialValue){let normalized=normalizeEmail(initialValue);return normalized||(ui.error({command:"invite",code:"INVALID_EMAIL",message:"Enter a single valid email address."}),null)}let email=await Ot({message:"Who do you want to invite?",placeholder:"jane@acme.com",validate:__name(value=>validateEmailInput(String(value??"")),"validate")});return q(email)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeEmail(String(email))}__name(resolveSingleEmail,"resolveSingleEmail");async function resolveOrganization2(api,explicitOrganizationId){if(explicitOrganizationId){let organization=(await api.listOrganizations()).find(org=>org.id===explicitOrganizationId);return organization||(ui.error({command:"invite",code:"ORGANIZATION_NOT_FOUND",message:`Organization ${explicitOrganizationId} was not found in your account.`}),null)}let creds=readCredentials(loadConfig());if(creds?.activeOrganization)return creds.activeOrganization;let orgs2=await api.listOrganizations();if(orgs2.length===0)return ui.error({command:"invite",code:"NO_ORGANIZATIONS",message:"No organization found for this account."}),null;if(orgs2.length===1)return orgs2[0];let selected=await _t({message:"Select an organization",options:orgs2.map(org=>({value:org.id,label:org.name,hint:org.slug}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):orgs2.find(org=>org.id===selected)??null}__name(resolveOrganization2,"resolveOrganization");async function resolveOrganizationRole(roleArg){if(roleArg){let normalized=normalizeOrganizationRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported organization role "${roleArg}".`,hint:"Use member, admin, or owner."}),null)}let selected=await _t({message:"Select the organization role",initialValue:"member",options:ORGANIZATION_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeOrganizationRole(String(selected))}__name(resolveOrganizationRole,"resolveOrganizationRole");async function resolveProjectRole(roleArg){if(roleArg){let normalized=normalizeProjectRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported project access "${roleArg}".`,hint:"Use view, comment, edit, or full."}),null)}let selected=await _t({message:"Select the project access level",initialValue:"edit",options:PROJECT_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeProjectRole(String(selected))}__name(resolveProjectRole,"resolveProjectRole");async function resolveProject2(api,options){if(options.project)return api.getProject(options.project);if(!options.org){let local=tryLoadLocalProject(options.cwd);if(local?.projectId)return api.getProject(local.projectId)}let organization=await resolveOrganization2(api,options.org);if(!organization)return null;let projects2=await api.listProjects(organization.id);if(projects2.length===0)return ui.error({command:"invite",code:"NO_PROJECTS_IN_ORGANIZATION",message:`No projects found in ${organization.name}.`}),null;if(projects2.length===1)return projects2[0];let selected=await _t({message:"Select a project",options:projects2.map(project=>({value:project.id,label:formatProjectLabel(project),hint:project.id}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):projects2.find(project=>project.id===selected)??null}__name(resolveProject2,"resolveProject");async function confirmInvite(skipPrompt){if(skipPrompt)return!0;let confirmed=await ot2({message:"Send this invitation now?",initialValue:!0});return q(confirmed)||!confirmed?(ui.info({command:"invite",message:"Cancelled."}),!1):!0}__name(confirmInvite,"confirmInvite");function tryLoadLocalProject(cwdOption){let cwd=resolveProjectCwd(cwdOption),settingsPath=path37.join(cwd,".fimo.settings.json");return fs34.existsSync(settingsPath)?loadProjectSettings(cwd):null}__name(tryLoadLocalProject,"tryLoadLocalProject");function normalizeTarget(value){let normalized=value.trim().toLowerCase();return normalized==="organization"||normalized==="org"?"organization":normalized==="project"?"project":null}__name(normalizeTarget,"normalizeTarget");function normalizeOrganizationRole(value){let normalized=value.trim().toLowerCase();return ORGANIZATION_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeOrganizationRole,"normalizeOrganizationRole");function normalizeProjectRole(value){let normalized=value.trim().toLowerCase();return PROJECT_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeProjectRole,"normalizeProjectRole");function validateEmailInput(value){if(!normalizeEmail(value))return"Enter a single valid email address"}__name(validateEmailInput,"validateEmailInput");function normalizeEmail(value){let tokens=value.trim().split(/[,\s]+/).filter(Boolean);if(tokens.length!==1)return null;let[email]=tokens,normalized=email.toLowerCase();return EMAIL_RE.test(normalized)?normalized:null}__name(normalizeEmail,"normalizeEmail");function formatProjectLabel(project){return project.displayName?.trim()||project.name}__name(formatProjectLabel,"formatProjectLabel");init_dist();import fs35 from"node:fs";import path38 from"node:path";init_project_context();init_project();function renderPrettyJson7(data2){return JSON.stringify(data2,null,2)}__name(renderPrettyJson7,"renderPrettyJson");function dbLabelsRuntimeWarnings(cwd){let warning=getDbLabelsRuntimeWarning(resolveProjectCwd(cwd));return warning?[warning]:void 0}__name(dbLabelsRuntimeWarnings,"dbLabelsRuntimeWarnings");function defaultLocaleForProject(cwd){return getConfigServer(resolveProjectCwd(cwd)).i18n?.defaultLocale??"en"}__name(defaultLocaleForProject,"defaultLocaleForProject");async function labelsListCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("i18n.list",{projectId:ctx.projectId,env:ctx.env});let result=await api.listLabels(ctx.projectId,options.locale);ui.result({command:"labels list",data:result,render:__name(()=>renderPrettyJson7(result),"render")})}__name(labelsListCommand,"labelsListCommand");async function labelsSetCommand(key,valueArg,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,env:ctx.env});let value=options.stdin?await readStdinValue2():options.value??valueArg??await readStdinValue2(),locale=options.locale??defaultLocaleForProject(options.cwd),result=await api.setLabel(ctx.projectId,{key,value,locale});ui.result({command:"labels set",data:result,render:__name(()=>`Set ${key} (${locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetCommand,"labelsSetCommand");async function labelsSetManyCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,env:ctx.env});let fallbackLocale=options.locale??defaultLocaleForProject(options.cwd),records=readLabelRecords(options).map(({key,value,locale})=>({key,value,locale:locale??fallbackLocale})),locales=[...new Set(records.map(record=>record.locale))],result=await api.setLabels(ctx.projectId,records);ui.result({command:"labels set-many",data:{...result,locale:fallbackLocale,locales,labels:records.length},render:__name(()=>`Set ${records.length} label${records.length===1?"":"s"} (${locales.join(", ")})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetManyCommand,"labelsSetManyCommand");async function labelsDeleteCommand(key,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.delete",{projectId:ctx.projectId,env:ctx.env});let locale=options.locale??defaultLocaleForProject(options.cwd),result=await api.deleteLabel(ctx.projectId,locale,key);ui.result({command:"labels delete",data:result,render:__name(()=>`Deleted ${key} (${locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsDeleteCommand,"labelsDeleteCommand");function readLabelRecords(options){if(options.file&&options.data)throw new Error("Pass either --file or --data, not both.");if(!options.file&&!options.data)throw new Error("Pass --file <path> or --data <json>.");let raw=options.data??readLabelFile(options),parsed=JSON.parse(raw);if(Array.isArray(parsed))return parsed.map(item=>{if(!item||typeof item!="object")throw new Error("Label arrays must contain objects with key and value fields.");let record=item;if(typeof record.key!="string")throw new Error("Each label record must include a string key.");let value=record.value??record.defaultValue;if(typeof value!="string")throw new Error(`Label ${record.key} must include a string value.`);let locale;if(record.locale!==void 0){if(typeof record.locale!="string")throw new Error(`Label ${record.key} has a non-string locale.`);locale=record.locale}return{key:record.key,value,locale}});if(!parsed||typeof parsed!="object")throw new Error("Labels JSON must be an object map or an array of { key, value } records.");return Object.entries(parsed).map(([key,value])=>{if(typeof value!="string")throw new Error(`Label ${key} must be a string.`);return{key,value}})}__name(readLabelRecords,"readLabelRecords");function readLabelFile(options){let projectRoot=resolveProjectCwd(options.cwd),filePath=path38.resolve(projectRoot,options.file);return fs35.readFileSync(filePath,"utf8")}__name(readLabelFile,"readLabelFile");async function readStdinValue2(){if(process.stdin.isTTY)throw new Error("Pass a label value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue2,"readStdinValue");init_login();init_dist();init_auth();init_config();async function logoutCommand(){let cfg=loadConfig(),creds=readCredentials(cfg);if(!creds?.access_token){ui.info({command:"logout",message:"Already signed out."});return}clearCredentials(cfg),ui.ok({command:"logout",headline:`Signed out${creds.user?.email?` (${creds.user.email})`:""}.`,details:creds.user?.email?{email:creds.user.email}:void 0})}__name(logoutCommand,"logoutCommand");init_esm();init_dist();init_project_context();function taskTokens(task){let argv=process.argv.slice(2),namespaceIndex=argv.indexOf(task.modality);if(namespaceIndex===-1)return[];let verbIndex=argv.indexOf(task.operation,namespaceIndex+1);return verbIndex===-1?[]:argv.slice(verbIndex+1)}__name(taskTokens,"taskTokens");function renderTaskHelp(task){return renderGenerationHelp({usage:`fimo ${task.modality} ${task.operation} [flags]`,description:task.description,flags:task.flags})}__name(renderTaskHelp,"renderTaskHelp");async function runTask(task,command){let tokens=taskTokens(task),wantsHelp=tokens.includes("--help")||tokens.includes("-h"),commandName2=`${task.modality} ${task.operation}`;if(wantsHelp){ui.result({command:commandName2,data:{task},render:__name(()=>renderTaskHelp(task),"render")});return}let{values,bools,options}=parseGenerationFlags({commandName:commandName2,subject:task.id,helpCommand:`fimo ${commandName2} --help`,flags:task.flags,tokens}),body={task:task.id,options,name:values.get("name")?.[0],parentId:values.get("parent")?.[0]??null},isJson=currentMode().format==="json",{ctx,api}=await bootstrapProjectCommand({cwd:values.get("cwd")?.[0]},command,{refuseReadOnly:!0,quiet:isJson});if(bools.get("dry-run")===!0){let estimate=await api.estimateGenerationTask(ctx.projectId,task.id,options),data2={...body,estimate};ui.result({command:commandName2,data:data2,render:__name(()=>JSON.stringify(data2,null,2),"render")});return}await submitGeneration({commandName:commandName2,ctx,api,body})}__name(runTask,"runTask");function registerTaskCommand(parent2,task){parent2.command(task.operation).description(task.description).allowUnknownOption(!0).allowExcessArguments(!0).helpOption(!1).action(async(_options,command)=>{await runTask(task,command)})}__name(registerTaskCommand,"registerTaskCommand");function registerMediaTaskCommands(program2){let image=program2.command("image").description("Generate and transform images"),video=program2.command("video").description("Generate and transform videos");for(let task of GENERATION_TASK_MANIFESTS)registerTaskCommand(task.modality==="image"?image:video,task)}__name(registerMediaTaskCommands,"registerMediaTaskCommands");init_dist5();init_dist();init_api();init_auth_errors();init_color();import{execSync,spawnSync as spawnSync2}from"node:child_process";import{mkdtempSync,readFileSync as readFileSync10,writeFileSync as writeFileSync6}from"node:fs";import{tmpdir as tmpdir3}from"node:os";import path39 from"node:path";function renderMergeSuccess(result,p2){let lines=[];if(lines.push(p2.green(`\u2713 Merged ${result.fromEnv} \u2192 ${result.toEnv}`)),result.summary&&lines.push(p2.dim(` ${result.summary}`)),result.applied.length>0){lines.push(""),lines.push(p2.bold("Applied:"));for(let a of result.applied)lines.push(p2.dim(` ${a.surface.padEnd(14)} ${a.count} item${a.count===1?"":"s"}`))}return lines.join(`
1243
+ `),"Review invite"),!await confirmInvite(options.yes)))return;let sp=spinner("Sending invitation");try{await api.inviteProjectUser({projectId:project.id,email,roleKey:role}),sp.succeed("Invitation sent")}catch(error){throw rethrowCliAuthError(error,()=>sp.fail("Authentication required")),sp.fail("Failed to send invitation"),error}ui.ok({command:"invite",headline:`Sent project invite to ${email} for ${formatProjectLabel(project)} as ${role}.`,details:{target:"project",project_id:project.id,project_name:project.name,email,role}})}__name(inviteCommand,"inviteCommand");async function resolveInviteTarget(targetArg){if(targetArg){let normalized=normalizeTarget(targetArg);return normalized||(ui.error({command:"invite",code:"INVALID_TARGET",message:`Unsupported target "${targetArg}".`,hint:'Use "organization" or "project".'}),null)}let selected=await _t({message:"Where do you want to invite this user?",initialValue:"project",options:[{value:"project",label:"Project",hint:"Invite someone to collaborate on a single project"},{value:"organization",label:"Organization",hint:"Invite someone to join the organization"}]});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeTarget(String(selected))}__name(resolveInviteTarget,"resolveInviteTarget");async function resolveSingleEmail(emailArg){let initialValue=emailArg?.trim();if(initialValue){let normalized=normalizeEmail(initialValue);return normalized||(ui.error({command:"invite",code:"INVALID_EMAIL",message:"Enter a single valid email address."}),null)}let email=await Ot({message:"Who do you want to invite?",placeholder:"jane@acme.com",validate:__name(value=>validateEmailInput(String(value??"")),"validate")});return q(email)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeEmail(String(email))}__name(resolveSingleEmail,"resolveSingleEmail");async function resolveOrganization2(api,explicitOrganizationId){if(explicitOrganizationId){let organization=(await api.listOrganizations()).find(org=>org.id===explicitOrganizationId);return organization||(ui.error({command:"invite",code:"ORGANIZATION_NOT_FOUND",message:`Organization ${explicitOrganizationId} was not found in your account.`}),null)}let creds=readCredentials(loadConfig());if(creds?.activeOrganization)return creds.activeOrganization;let orgs2=await api.listOrganizations();if(orgs2.length===0)return ui.error({command:"invite",code:"NO_ORGANIZATIONS",message:"No organization found for this account."}),null;if(orgs2.length===1)return orgs2[0];let selected=await _t({message:"Select an organization",options:orgs2.map(org=>({value:org.id,label:org.name,hint:org.slug}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):orgs2.find(org=>org.id===selected)??null}__name(resolveOrganization2,"resolveOrganization");async function resolveOrganizationRole(roleArg){if(roleArg){let normalized=normalizeOrganizationRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported organization role "${roleArg}".`,hint:"Use member, admin, or owner."}),null)}let selected=await _t({message:"Select the organization role",initialValue:"member",options:ORGANIZATION_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeOrganizationRole(String(selected))}__name(resolveOrganizationRole,"resolveOrganizationRole");async function resolveProjectRole(roleArg){if(roleArg){let normalized=normalizeProjectRole(roleArg);return normalized||(ui.error({command:"invite",code:"INVALID_ROLE",message:`Unsupported project access "${roleArg}".`,hint:"Use view, comment, edit, or full."}),null)}let selected=await _t({message:"Select the project access level",initialValue:"edit",options:PROJECT_ROLE_OPTIONS});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):normalizeProjectRole(String(selected))}__name(resolveProjectRole,"resolveProjectRole");async function resolveProject2(api,options){if(options.project)return api.getProject(options.project);if(!options.org){let local=tryLoadLocalProject(options.cwd);if(local?.projectId)return api.getProject(local.projectId)}let organization=await resolveOrganization2(api,options.org);if(!organization)return null;let projects2=await api.listProjects(organization.id);if(projects2.length===0)return ui.error({command:"invite",code:"NO_PROJECTS_IN_ORGANIZATION",message:`No projects found in ${organization.name}.`}),null;if(projects2.length===1)return projects2[0];let selected=await _t({message:"Select a project",options:projects2.map(project=>({value:project.id,label:formatProjectLabel(project),hint:project.id}))});return q(selected)?(ui.info({command:"invite",message:"Cancelled."}),null):projects2.find(project=>project.id===selected)??null}__name(resolveProject2,"resolveProject");async function confirmInvite(skipPrompt){if(skipPrompt)return!0;let confirmed=await ot2({message:"Send this invitation now?",initialValue:!0});return q(confirmed)||!confirmed?(ui.info({command:"invite",message:"Cancelled."}),!1):!0}__name(confirmInvite,"confirmInvite");function tryLoadLocalProject(cwdOption){let cwd=resolveProjectCwd(cwdOption),settingsPath=path37.join(cwd,".fimo.settings.json");return fs34.existsSync(settingsPath)?loadProjectSettings(cwd):null}__name(tryLoadLocalProject,"tryLoadLocalProject");function normalizeTarget(value){let normalized=value.trim().toLowerCase();return normalized==="organization"||normalized==="org"?"organization":normalized==="project"?"project":null}__name(normalizeTarget,"normalizeTarget");function normalizeOrganizationRole(value){let normalized=value.trim().toLowerCase();return ORGANIZATION_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeOrganizationRole,"normalizeOrganizationRole");function normalizeProjectRole(value){let normalized=value.trim().toLowerCase();return PROJECT_ROLE_OPTIONS.find(option=>option.value===normalized)?.value??null}__name(normalizeProjectRole,"normalizeProjectRole");function validateEmailInput(value){if(!normalizeEmail(value))return"Enter a single valid email address"}__name(validateEmailInput,"validateEmailInput");function normalizeEmail(value){let tokens=value.trim().split(/[,\s]+/).filter(Boolean);if(tokens.length!==1)return null;let[email]=tokens,normalized=email.toLowerCase();return EMAIL_RE.test(normalized)?normalized:null}__name(normalizeEmail,"normalizeEmail");function formatProjectLabel(project){return project.displayName?.trim()||project.name}__name(formatProjectLabel,"formatProjectLabel");init_dist();import fs35 from"node:fs";import path38 from"node:path";init_project_context();init_project();function renderPrettyJson7(data2){return JSON.stringify(data2,null,2)}__name(renderPrettyJson7,"renderPrettyJson");function dbLabelsRuntimeWarnings(cwd){let warning=getDbLabelsRuntimeWarning(resolveProjectCwd(cwd));return warning?[warning]:void 0}__name(dbLabelsRuntimeWarnings,"dbLabelsRuntimeWarnings");function defaultLocaleForProject(cwd){return getConfigServer(resolveProjectCwd(cwd)).i18n?.defaultLocale??"en"}__name(defaultLocaleForProject,"defaultLocaleForProject");async function labelsListCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("i18n.list",{projectId:ctx.projectId,env:ctx.env});let result=await api.listLabels(ctx.projectId,options.locale);ui.result({command:"labels list",data:result,render:__name(()=>renderPrettyJson7(result),"render")})}__name(labelsListCommand,"labelsListCommand");async function labelsSetCommand(key,valueArg,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,env:ctx.env});let value=options.stdin?await readStdinValue2():options.value??valueArg??await readStdinValue2(),locale=options.locale??defaultLocaleForProject(options.cwd),result=await api.setLabel(ctx.projectId,{key,value,locale});ui.result({command:"labels set",data:result,render:__name(()=>`Set ${key} (${locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetCommand,"labelsSetCommand");async function labelsSetManyCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.update",{projectId:ctx.projectId,env:ctx.env});let fallbackLocale=options.locale??defaultLocaleForProject(options.cwd),records=readLabelRecords(options).map(({key,value,locale})=>({key,value,locale:locale??fallbackLocale})),locales=[...new Set(records.map(record=>record.locale))],result=await api.setLabels(ctx.projectId,records);ui.result({command:"labels set-many",data:{...result,locale:fallbackLocale,locales,labels:records.length},render:__name(()=>`Set ${records.length} label${records.length===1?"":"s"} (${locales.join(", ")})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsSetManyCommand,"labelsSetManyCommand");async function labelsDeleteCommand(key,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("i18n.delete",{projectId:ctx.projectId,env:ctx.env});let locale=options.locale??defaultLocaleForProject(options.cwd),result=await api.deleteLabel(ctx.projectId,locale,key);ui.result({command:"labels delete",data:result,render:__name(()=>`Deleted ${key} (${locale})`,"render"),warnings:dbLabelsRuntimeWarnings(options.cwd)})}__name(labelsDeleteCommand,"labelsDeleteCommand");function readLabelRecords(options){if(options.file&&options.data)throw new Error("Pass either --file or --data, not both.");if(!options.file&&!options.data)throw new Error("Pass --file <path> or --data <json>.");let raw=options.data??readLabelFile(options),parsed=JSON.parse(raw);if(Array.isArray(parsed))return parsed.map(item=>{if(!item||typeof item!="object")throw new Error("Label arrays must contain objects with key and value fields.");let record=item;if(typeof record.key!="string")throw new Error("Each label record must include a string key.");let value=record.value??record.defaultValue;if(typeof value!="string")throw new Error(`Label ${record.key} must include a string value.`);let locale;if(record.locale!==void 0){if(typeof record.locale!="string")throw new Error(`Label ${record.key} has a non-string locale.`);locale=record.locale}return{key:record.key,value,locale}});if(!parsed||typeof parsed!="object")throw new Error("Labels JSON must be an object map or an array of { key, value } records.");return Object.entries(parsed).map(([key,value])=>{if(typeof value!="string")throw new Error(`Label ${key} must be a string.`);return{key,value}})}__name(readLabelRecords,"readLabelRecords");function readLabelFile(options){let projectRoot=resolveProjectCwd(options.cwd),filePath=path38.resolve(projectRoot,options.file);return fs35.readFileSync(filePath,"utf8")}__name(readLabelFile,"readLabelFile");async function readStdinValue2(){if(process.stdin.isTTY)throw new Error("Pass a label value or pipe one with --stdin.");let chunks=[];for await(let chunk of process.stdin)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/,"")}__name(readStdinValue2,"readStdinValue");init_login();init_dist();init_auth();init_config();async function logoutCommand(){let cfg=loadConfig(),creds=readCredentials(cfg);if(!creds?.access_token){ui.info({command:"logout",message:"Already signed out."});return}clearCredentials(cfg),ui.ok({command:"logout",headline:`Signed out${creds.user?.email?` (${creds.user.email})`:""}.`,details:creds.user?.email?{email:creds.user.email}:void 0})}__name(logoutCommand,"logoutCommand");init_esm();init_dist();init_project_context();function taskTokens(task){let argv=process.argv.slice(2),namespaceIndex=argv.indexOf(task.modality);if(namespaceIndex===-1)return[];let verbIndex=argv.indexOf(task.operation,namespaceIndex+1);return verbIndex===-1?[]:argv.slice(verbIndex+1)}__name(taskTokens,"taskTokens");function renderTaskHelp(task){return renderGenerationHelp({usage:`fimo ${task.modality} ${task.operation} [flags]`,description:task.description,flags:task.flags})}__name(renderTaskHelp,"renderTaskHelp");async function runTask(task,command){let tokens=taskTokens(task),wantsHelp=tokens.includes("--help")||tokens.includes("-h"),commandName2=`${task.modality} ${task.operation}`;if(wantsHelp){ui.result({command:commandName2,data:{task},render:__name(()=>renderTaskHelp(task),"render")});return}let{values,bools,options}=parseGenerationFlags({commandName:commandName2,subject:task.id,helpCommand:`fimo ${commandName2} --help`,flags:task.flags,tokens}),body={task:task.id,options,name:values.get("name")?.[0],parentId:values.get("parent")?.[0]??null},isJson=currentMode().format==="json",{ctx,api}=await bootstrapProjectCommand({cwd:values.get("cwd")?.[0]},command,{refuseReadOnly:!0,quiet:isJson});if(bools.get("dry-run")===!0){let estimate=await api.estimateGenerationTask(ctx.projectId,task.id,options),data2={...body,estimate};ui.result({command:commandName2,data:data2,render:__name(()=>JSON.stringify(data2,null,2),"render")});return}await submitGeneration({commandName:commandName2,ctx,api,body})}__name(runTask,"runTask");function registerTaskCommand(parent2,task){parent2.command(task.operation).description(task.description).allowUnknownOption(!0).allowExcessArguments(!0).helpOption(!1).action(async(_options,command)=>{await runTask(task,command)})}__name(registerTaskCommand,"registerTaskCommand");function registerMediaTaskCommands(program2){let image=program2.command("image").description("Generate and transform images"),video=program2.command("video").description("Generate and transform videos");for(let task of GENERATION_TASK_MANIFESTS)registerTaskCommand(task.modality==="image"?image:video,task)}__name(registerMediaTaskCommands,"registerMediaTaskCommands");init_dist5();init_dist();init_api();init_auth_errors();init_color();import{execSync,spawnSync as spawnSync3}from"node:child_process";import{mkdtempSync,readFileSync as readFileSync10,writeFileSync as writeFileSync6}from"node:fs";import{tmpdir as tmpdir3}from"node:os";import path39 from"node:path";function renderMergeSuccess(result,p2){let lines=[];if(lines.push(p2.green(`\u2713 Merged ${result.fromEnv} \u2192 ${result.toEnv}`)),result.summary&&lines.push(p2.dim(` ${result.summary}`)),result.applied.length>0){lines.push(""),lines.push(p2.bold("Applied:"));for(let a of result.applied)lines.push(p2.dim(` ${a.surface.padEnd(14)} ${a.count} item${a.count===1?"":"s"}`))}return lines.join(`
1244
1244
  `)}__name(renderMergeSuccess,"renderMergeSuccess");function renderConflict(conflict,p2){let lines=[];return lines.push(`${p2.yellow("!")} ${p2.bold(`${conflict.surface}: ${conflict.key}`)}`),lines.push(p2.dim(` ${conflict.description}`)),conflict.parentValue!==void 0&&lines.push(p2.dim(" parent: ")+summariseValue(conflict.parentValue)),conflict.childValue!==void 0&&lines.push(p2.dim(" child: ")+summariseValue(conflict.childValue)),lines.join(`
1245
1245
  `)}__name(renderConflict,"renderConflict");function renderResolverHeader(conflicts,p2){let surfaceCounts=conflicts.reduce((acc,c2)=>(acc[c2.surface]=(acc[c2.surface]??0)+1,acc),{}),parts=Object.entries(surfaceCounts).map(([s,n])=>`${n} ${s}`);return p2.yellow(`! ${conflicts.length} conflict${conflicts.length===1?"":"s"} (${parts.join(", ")}) \u2014 resolve below.`)}__name(renderResolverHeader,"renderResolverHeader");function summariseValue(v){if(v===null)return"null";if(typeof v=="string")return v.length>60?v.slice(0,57)+"...":v;if(typeof v=="number"||typeof v=="boolean")return String(v);try{let s=JSON.stringify(v);return s.length>60?s.slice(0,57)+"...":s}catch{return"[unserialisable]"}}__name(summariseValue,"summariseValue");init_project_context();init_esm();var ProtectedFlowError=class extends Error{static{__name(this,"ProtectedFlowError")}env;constructor(env){super(`Refusing to run this mutating command against the protected env '${env}'. Use the PR/review flow or pass --allow-direct-merge to override.`),this.name="ProtectedFlowError",this.env=env}};function assertNotOnMain(env,opts={}){let protectedEnvs=opts.protectedEnvs??[DEFAULT_ENV];if(!opts.allowDirectMerge&&protectedEnvs.includes(env))throw new ProtectedFlowError(env)}__name(assertNotOnMain,"assertNotOnMain");async function fetchDrillContext(args){let{api,ctx,fromEnv,conflict,p:p2}=args,surface=conflict.surface;try{switch(surface){case"code":{let payload=await api.getCodeFileDiff(ctx.projectId,fromEnv,conflict.key,{against:ctx.env});return renderCodeFileDiff(payload,p2,{bare:!1})}case"content":{let[collection,rowId]=splitOnce2(conflict.key,":");if(!collection||!rowId)return null;let payload=await api.getContentRowDiff(ctx.projectId,fromEnv,collection,rowId,{against:ctx.env});return renderContentRowDiff(payload,p2,{bare:!1})}case"translations":{let[locale,key]=splitOnce2(conflict.key,":");if(!locale||!key)return null;let payload=await api.getTranslationRowDiff(ctx.projectId,fromEnv,locale,key,{against:ctx.env});return renderTranslationRowDiff(payload,p2,{bare:!1})}case"activations":{let[agentName,idxStr]=splitOnce2(conflict.key,":");if(!agentName||!idxStr)return null;let triggerIndex=Number.parseInt(idxStr,10);if(Number.isNaN(triggerIndex))return null;let payload=await api.getActivationDiff(ctx.projectId,fromEnv,agentName,triggerIndex,{against:ctx.env});return renderActivationDiff(payload,p2,{bare:!1})}case"schemas":{let payload=await api.getSchemaTypeDiff(ctx.projectId,fromEnv,conflict.key,{against:ctx.env});return renderSchemaTypeDiff(payload,p2,{bare:!1})}case"forms":{let payload=await api.getFormSchemaDiff(ctx.projectId,fromEnv,conflict.key,{against:ctx.env});return renderFormSchemaDiff(payload,p2,{bare:!1})}case"assets":{let payload=await api.getAssetDiff(ctx.projectId,fromEnv,conflict.key,{against:ctx.env});return renderAssetDiff(payload,p2,{bare:!1})}}}catch{return null}return null}__name(fetchDrillContext,"fetchDrillContext");function splitOnce2(s,sep2){let idx=s.indexOf(sep2);return idx<0?[s,""]:[s.slice(0,idx),s.slice(idx+1)]}__name(splitOnce2,"splitOnce");var DRAFT_DEBOUNCE_MS=1500;async function mergeCommand(from,options,cmd){let program2=cmd?.parent??cmd,envOverride2=envOverrideFromCommand(program2),ctx=await getProjectContext({cwd:options.cwd,envOverride:envOverride2}),api=new FimoApiClient().withEnv(ctx.env);try{assertNotOnMain(ctx.env,{allowDirectMerge:options.allowDirectMerge})}catch(err){if(err instanceof ProtectedFlowError){ui.error({command:"merge",code:"PROTECTED_FLOW",message:err.message,hint:"See: https://fimo.ai/docs/envs#pr-flow"});return}throw err}let isJson=currentMode().format==="json",p2=options.noColor?makeColorPalette({forceDisable:!0}):palette;if(options.resume){if(isJson){ui.error({command:"merge",code:"NON_INTERACTIVE_REFUSAL",message:"--resume requires interactive mode"});return}return resumeMerge({api,ctx,from,options,p:p2})}isJson||mt(p2.bold(`Merging ${from} \u2192 ${ctx.env}`));let result;try{result=await api.mergeEnv(ctx.projectId,ctx.env,{from,allowDirectMerge:options.allowDirectMerge})}catch(err){rethrowCliAuthError(err),ui.error({command:"merge",code:"MERGE_REQUEST_FAILED",message:`Merge failed: ${err.message}`});return}if(result.ok){ui.result({command:"merge",data:result,render:__name(rctx=>renderMergeSuccess(result,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")});return}let conflicts=result.conflicts??[];if(conflicts.length===0){ui.error({command:"merge",code:"MERGE_EMPTY_CONFLICTS",message:"Merge returned ok=false but produced no conflicts. Aborting."});return}if(isJson){ui.result({command:"merge",data:result,render:__name(()=>"","render")});return}O2.warn(renderResolverHeader(conflicts,p2));let resolutions=await resolveConflictsInteractive({api,ctx,from,mergeId:result.mergeId,conflicts,drafted:[],p:p2,acceptDefaults:options.yes===!0});if(resolutions===null){await api.cancelMerge(ctx.projectId,ctx.env,result.mergeId).catch(()=>{}),ui.error({command:"merge",code:"MERGE_CANCELLED",message:"Merge cancelled; compensating actions triggered server-side."});return}await commitResolutions({api,ctx,from,mergeId:result.mergeId,resolutions})}__name(mergeCommand,"mergeCommand");async function resolveConflictsInteractive(args){let draftedMap=new Map;for(let d3 of args.drafted)draftedMap.set(`${d3.surface}:${d3.key}`,d3);let resolutions=[...args.drafted],pendingSave=null,flush=__name(async()=>{pendingSave&&(clearTimeout(pendingSave),pendingSave=null);try{await args.api.putResolveDraft(args.ctx.projectId,args.ctx.env,args.from,{mergeId:args.mergeId,resolutions})}catch{}},"flush"),scheduleSave=__name(()=>{pendingSave&&clearTimeout(pendingSave),pendingSave=setTimeout(()=>{flush().catch(()=>{})},DRAFT_DEBOUNCE_MS)},"scheduleSave");for(let conflict of args.conflicts){let key=`${conflict.surface}:${conflict.key}`;if(draftedMap.has(key))continue;if(await printConflictWithContext(args.api,args.ctx,args.from,conflict,args.p),args.acceptDefaults){resolutions.push({surface:conflict.surface,key:conflict.key,choice:"parent"}),scheduleSave();continue}let isCode=conflict.surface==="code",choice=await _t({message:"How should this conflict be resolved?",options:[{value:"parent",label:isCode?`parent \u2014 keep ${args.ctx.env}'s file`:"parent \u2014 keep target value"},{value:"child",label:isCode?`child \u2014 take ${args.from}'s file`:"child \u2014 take source value"},{value:"pick",label:isCode?"pick \u2014 resolve conflict markers in $EDITOR":"pick \u2014 edit a custom value in $EDITOR"},{value:"abort",label:"abort \u2014 cancel the merge"}]});if(q(choice)||choice==="abort")return await flush(),null;if(choice==="pick"){let picked=isCode?await openEditorForCodePick(args.api,args.ctx,args.from,conflict):openEditorForPick(conflict);if(picked===null)return O2.warn("Empty buffer \u2014 treating as abort. Re-run with --resume to continue."),await flush(),null;resolutions.push({surface:conflict.surface,key:conflict.key,choice:"pick",pickedValue:picked})}else resolutions.push({surface:conflict.surface,key:conflict.key,choice});scheduleSave()}return await flush(),resolutions}__name(resolveConflictsInteractive,"resolveConflictsInteractive");async function printConflictWithContext(api,ctx,fromEnv,conflict,p2){console.log(renderConflict(conflict,p2));try{let drill=await fetchDrillContext({api,ctx,fromEnv,conflict,p:p2});drill&&console.log(drill)}catch{}}__name(printConflictWithContext,"printConflictWithContext");async function commitResolutions(args){let resolved;try{resolved=await args.api.resolveMerge(args.ctx.projectId,args.ctx.env,args.from,{mergeId:args.mergeId,resolutions:args.resolutions})}catch(err){rethrowCliAuthError(err),ui.error({command:"merge",code:"MERGE_RESOLVE_FAILED",message:`Resolve failed: ${err.message}`});return}if(!resolved.ok){ui.error({command:"merge",code:"MERGE_RESOLUTION_REJECTED",message:"Server rejected the resolution batch. Run `fimo diff` and try again."});return}ui.result({command:"merge",data:resolved,render:__name(rctx=>renderMergeSuccess(resolved,rctx.color?palette:makeColorPalette({forceDisable:!0})),"render")})}__name(commitResolutions,"commitResolutions");async function resumeMerge(args){let hydration;try{hydration=await args.api.getMergeConflicts(args.ctx.projectId,args.ctx.env,args.from)}catch(err){rethrowCliAuthError(err),ui.error({command:"merge",code:"MERGE_RESUME_FAILED",message:`Failed to load in-progress merge: ${err.message}`});return}if(hydration.status!=="in_progress"&&hydration.status!=="conflicts"){ui.error({command:"merge",code:"MERGE_NOT_RESUMABLE",message:`Merge ${hydration.mergeId} is ${hydration.status}; nothing to resume.`});return}if(hydration.conflicts.length===0){ui.info({command:"merge",message:"No conflicts to resolve \u2014 submitting empty batch."}),await commitResolutions({api:args.api,ctx:args.ctx,from:args.from,mergeId:hydration.mergeId,resolutions:[]});return}mt(args.p.bold(`Resuming merge ${args.from} \u2192 ${args.ctx.env}`)),O2.info(`${hydration.draftResolutions.length} of ${hydration.conflicts.length} conflict${hydration.conflicts.length===1?"":"s"} already drafted`);let resolutions=await resolveConflictsInteractive({api:args.api,ctx:args.ctx,from:args.from,mergeId:hydration.mergeId,conflicts:hydration.conflicts,drafted:hydration.draftResolutions,p:args.p,acceptDefaults:args.options.yes===!0});if(resolutions===null){ui.info({command:"merge",message:"Cancelled \u2014 draft kept. Run --resume again to continue."});return}await commitResolutions({api:args.api,ctx:args.ctx,from:args.from,mergeId:hydration.mergeId,resolutions})}__name(resumeMerge,"resumeMerge");function openEditorForPick(conflict){let editor=process.env.EDITOR??process.env.VISUAL??"nano",tmp=mkdtempSync(path39.join(tmpdir3(),"fimo-merge-")),file=path39.join(tmp,`${conflict.surface}-${sanitiseKey(conflict.key)}.json`),seed=conflict.childValue!==void 0?JSON.stringify(conflict.childValue,null,2):`// Replace this comment with the resolved value as JSON
1246
- ""`;writeFileSync6(file,seed,"utf8"),spawnSync2(editor,[file],{stdio:"inherit"});let raw=readFileSync10(file,"utf8").trim();if(raw===""||raw===seed.trim())return null;try{return JSON.parse(raw)}catch{return raw}}__name(openEditorForPick,"openEditorForPick");async function openEditorForCodePick(api,ctx,fromEnv,conflict){let filePath=conflict.code?.path??conflict.key,seed="",seedLoaded=!1;try{seed=(await api.getCodeConflictDetail(ctx.projectId,ctx.env,fromEnv,filePath)).result.content??"",seedLoaded=!0}catch{O2.warn(`Could not load the 3-way merge for ${filePath}; leaving it unresolved. Re-run with --resume.`)}let editor=process.env.EDITOR??process.env.VISUAL??"nano",tmp=mkdtempSync(path39.join(tmpdir3(),"fimo-merge-")),ext=path39.extname(filePath)||".txt",file=path39.join(tmp,`${sanitiseKey(filePath)}${ext}`);writeFileSync6(file,seed,"utf8"),spawnSync2(editor,[file],{stdio:"inherit"});let raw=readFileSync10(file,"utf8");return raw.trim()===""&&(seed.trim()!==""||!seedLoaded)?null:((raw.includes("<<<<<<<")||raw.includes(">>>>>>>"))&&O2.warn("Conflict markers remain \u2014 they will be committed as-is. Re-run with --resume to fix."),raw)}__name(openEditorForCodePick,"openEditorForCodePick");function sanitiseKey(key){return key.replace(/[^A-Za-z0-9._-]/g,"_").slice(0,60)}__name(sanitiseKey,"sanitiseKey");init_migrate_refine();init_migrate();init_dist();init_api();init_config();init_project_context();function padRight(s,width){return s.length>=width?s:s+" ".repeat(width-s.length)}__name(padRight,"padRight");function fmtUsd(n){let trimmed=n.toFixed(4).replace(/0+$/,"").replace(/\.$/,"");return trimmed.includes(".")?trimmed:`${trimmed}.00`}__name(fmtUsd,"fmtUsd");function priceRate(price){let unit=price.unit.replace(/s$/,"");return`${price.confidence==="metered"?"~":""}$${fmtUsd(price.unitPrice)} / ${unit}`}__name(priceRate,"priceRate");function bestFor(description){let start=description.indexOf("Best for:");if(start===-1)return`${description.split(". ")[0]}.`;let rest=description.slice(start),notFor=rest.indexOf("Not for:");return(notFor===-1?rest:rest.slice(0,notFor)).replace(/^Best for:\s*/,"").trim()}__name(bestFor,"bestFor");function flagSignature(flag2){if(flag2.type==="boolean")return`--${flag2.name}`;let type=flag2.enumValues?.length?flag2.enumValues.join("|"):flag2.type;return`--${flag2.name} <${type}>`}__name(flagSignature,"flagSignature");function flagMeta(flag2){let parts=[flag2.required?"required":"optional"];return flag2.isArray&&parts.push("repeatable"),flag2.defaultValue!==void 0&&parts.push(`default ${JSON.stringify(flag2.defaultValue)}`),parts.join(", ")}__name(flagMeta,"flagMeta");function flagExample(flag2){let name=`--${flag2.name}`;if(flag2.type==="boolean")return flag2.defaultValue===!0?`--no-${flag2.name}`:name;let value;return flag2.enumValues?.length?value=String(flag2.enumValues[0]):/url|image/i.test(flag2.name)?value="<url>":flag2.type==="integer"||flag2.type==="number"?value=flag2.defaultValue!==void 0?String(flag2.defaultValue):"<n>":value='"\u2026"',flag2.isArray?`${name} ${value} ${name} ${value}`:`${name} ${value}`}__name(flagExample,"flagExample");function apiClient(){return new FimoApiClient(loadConfig())}__name(apiClient,"apiClient");async function modelsListCommand(opts){let context=await getProjectContext({cwd:opts.cwd}),models=await apiClient().listModels(context.projectId,{modality:opts.modality,tag:opts.tag,q:opts.search,category:opts.category});if(models.length===0){ui.info({command:"models list",message:"No models match the filter."});return}ui.result({command:"models list",data:{models},render:__name(()=>renderModelsListHuman(models,opts.extended===!0),"render")})}__name(modelsListCommand,"modelsListCommand");function renderModelsListHuman(models,extended){let groups=new Map;for(let m of models){let arr=groups.get(m.modality)??[];arr.push(m),groups.set(m.modality,arr)}let modalityOrder=["image","video","audio"],sortedModalities=Array.from(groups.keys()).sort((a,b)=>modalityOrder.indexOf(a)-modalityOrder.indexOf(b)),out=[],first2=!0;for(let modality of sortedModalities){first2||out.push(""),first2=!1;let group=groups.get(modality)??[];if(out.push(modality.toUpperCase()),extended){for(let m of group)out.push(renderExtendedEntry(m));continue}let nameWidth=Math.max(...group.map(m=>m.id.length));for(let m of group){let headline=m.description.split(". ")[0],tags=m.tags.length>0?`[${m.tags.join(", ")}]`:"",price=m.price?` ${priceRate(m.price)}`:"";out.push(` ${padRight(m.id,nameWidth)} ${tags}${price}`),out.push(` ${padRight("",nameWidth)} ${headline}.`)}}return out.join(`
1246
+ ""`;writeFileSync6(file,seed,"utf8"),spawnSync3(editor,[file],{stdio:"inherit"});let raw=readFileSync10(file,"utf8").trim();if(raw===""||raw===seed.trim())return null;try{return JSON.parse(raw)}catch{return raw}}__name(openEditorForPick,"openEditorForPick");async function openEditorForCodePick(api,ctx,fromEnv,conflict){let filePath=conflict.code?.path??conflict.key,seed="",seedLoaded=!1;try{seed=(await api.getCodeConflictDetail(ctx.projectId,ctx.env,fromEnv,filePath)).result.content??"",seedLoaded=!0}catch{O2.warn(`Could not load the 3-way merge for ${filePath}; leaving it unresolved. Re-run with --resume.`)}let editor=process.env.EDITOR??process.env.VISUAL??"nano",tmp=mkdtempSync(path39.join(tmpdir3(),"fimo-merge-")),ext=path39.extname(filePath)||".txt",file=path39.join(tmp,`${sanitiseKey(filePath)}${ext}`);writeFileSync6(file,seed,"utf8"),spawnSync3(editor,[file],{stdio:"inherit"});let raw=readFileSync10(file,"utf8");return raw.trim()===""&&(seed.trim()!==""||!seedLoaded)?null:((raw.includes("<<<<<<<")||raw.includes(">>>>>>>"))&&O2.warn("Conflict markers remain \u2014 they will be committed as-is. Re-run with --resume to fix."),raw)}__name(openEditorForCodePick,"openEditorForCodePick");function sanitiseKey(key){return key.replace(/[^A-Za-z0-9._-]/g,"_").slice(0,60)}__name(sanitiseKey,"sanitiseKey");init_migrate_refine();init_migrate();init_dist();init_api();init_config();init_project_context();function padRight(s,width){return s.length>=width?s:s+" ".repeat(width-s.length)}__name(padRight,"padRight");function fmtUsd(n){let trimmed=n.toFixed(4).replace(/0+$/,"").replace(/\.$/,"");return trimmed.includes(".")?trimmed:`${trimmed}.00`}__name(fmtUsd,"fmtUsd");function priceRate(price){let unit=price.unit.replace(/s$/,"");return`${price.confidence==="metered"?"~":""}$${fmtUsd(price.unitPrice)} / ${unit}`}__name(priceRate,"priceRate");function bestFor(description){let start=description.indexOf("Best for:");if(start===-1)return`${description.split(". ")[0]}.`;let rest=description.slice(start),notFor=rest.indexOf("Not for:");return(notFor===-1?rest:rest.slice(0,notFor)).replace(/^Best for:\s*/,"").trim()}__name(bestFor,"bestFor");function flagSignature(flag2){if(flag2.type==="boolean")return`--${flag2.name}`;let type=flag2.enumValues?.length?flag2.enumValues.join("|"):flag2.type;return`--${flag2.name} <${type}>`}__name(flagSignature,"flagSignature");function flagMeta(flag2){let parts=[flag2.required?"required":"optional"];return flag2.isArray&&parts.push("repeatable"),flag2.defaultValue!==void 0&&parts.push(`default ${JSON.stringify(flag2.defaultValue)}`),parts.join(", ")}__name(flagMeta,"flagMeta");function flagExample(flag2){let name=`--${flag2.name}`;if(flag2.type==="boolean")return flag2.defaultValue===!0?`--no-${flag2.name}`:name;let value;return flag2.enumValues?.length?value=String(flag2.enumValues[0]):/url|image/i.test(flag2.name)?value="<url>":flag2.type==="integer"||flag2.type==="number"?value=flag2.defaultValue!==void 0?String(flag2.defaultValue):"<n>":value='"\u2026"',flag2.isArray?`${name} ${value} ${name} ${value}`:`${name} ${value}`}__name(flagExample,"flagExample");function apiClient(){return new FimoApiClient(loadConfig())}__name(apiClient,"apiClient");async function modelsListCommand(opts){let context=await getProjectContext({cwd:opts.cwd}),models=await apiClient().listModels(context.projectId,{modality:opts.modality,tag:opts.tag,q:opts.search,category:opts.category});if(models.length===0){ui.info({command:"models list",message:"No models match the filter."});return}ui.result({command:"models list",data:{models},render:__name(()=>renderModelsListHuman(models,opts.extended===!0),"render")})}__name(modelsListCommand,"modelsListCommand");function renderModelsListHuman(models,extended){let groups=new Map;for(let m of models){let arr=groups.get(m.modality)??[];arr.push(m),groups.set(m.modality,arr)}let modalityOrder=["image","video","audio"],sortedModalities=Array.from(groups.keys()).sort((a,b)=>modalityOrder.indexOf(a)-modalityOrder.indexOf(b)),out=[],first2=!0;for(let modality of sortedModalities){first2||out.push(""),first2=!1;let group=groups.get(modality)??[];if(out.push(modality.toUpperCase()),extended){for(let m of group)out.push(renderExtendedEntry(m));continue}let nameWidth=Math.max(...group.map(m=>m.id.length));for(let m of group){let headline=m.description.split(". ")[0],tags=m.tags.length>0?`[${m.tags.join(", ")}]`:"",price=m.price?` ${priceRate(m.price)}`:"";out.push(` ${padRight(m.id,nameWidth)} ${tags}${price}`),out.push(` ${padRight("",nameWidth)} ${headline}.`)}}return out.join(`
1247
1247
  `)}__name(renderModelsListHuman,"renderModelsListHuman");function renderExtendedEntry(m){let required=m.flags.filter(f=>f.required).map(f=>`--${f.name}`),optionalCount=m.flags.length-required.length,lines=[],row2=__name((label,value)=>{lines.push(` ${`${label}:`.padEnd(10)}${value}`)},"row"),flagsValue=m.flags.length===0?"none":`${required.length?`${required.join(", ")} (required)`:"none required"}${optionalCount?`, ${optionalCount} more`:""} \u2014 fimo models show ${m.id}`;return lines.push(` ${m.id} (${m.provider})`),row2("tags",m.tags.join(", ")||"\u2014"),m.price&&row2("price",priceRate(m.price)),row2("best for",bestFor(m.description)),row2("flags",flagsValue),lines.join(`
1248
1248
  `)}__name(renderExtendedEntry,"renderExtendedEntry");async function modelsShowCommand(modelKey,opts){let context=await getProjectContext({cwd:opts.cwd}),model=await apiClient().getModel(context.projectId,modelKey);model||(ui.error({command:"models show",code:"UNKNOWN_MODEL",message:`Unknown model: "${modelKey}".`,hint:"Run `fimo models list` to see available names."}),process.exit(78)),ui.result({command:"models show",data:model,render:__name(()=>renderModelHuman(model),"render")})}__name(modelsShowCommand,"modelsShowCommand");function renderModelHuman(model){let lines=[];if(lines.push(model.displayName),lines.push(` id: ${model.id}`),lines.push(` provider: ${model.provider}`),lines.push(` source: ${model.source}`),lines.push(` modality: ${model.modality}`),lines.push(` tags: ${model.tags.join(", ")||"\u2014"}`),lines.push(""),lines.push(` ${model.description}`),model.price&&(lines.push(""),lines.push(" PRICING"),lines.push(` ${priceRate(model.price)}`),model.price.confidence==="metered"?lines.push(" (metered \u2014 final bill set by provider usage)"):model.price.confidence==="estimated"&&lines.push(" (estimated \u2014 exact quantity not known until the call runs)")),lines.push(""),lines.push(" OPTIONS"),model.flags.length===0)return lines.push(" (none)"),lines.join(`
1249
1249
  `);for(let flag2 of model.flags){lines.push(""),lines.push(` ${flagSignature(flag2)} ${flagMeta(flag2)}`),flag2.description&&lines.push(` ${flag2.description}`);let repeatNote=flag2.isArray?" (repeat the flag for each value)":"";lines.push(` e.g. ${flagExample(flag2)}${repeatNote}`)}return lines.join(`
@@ -1283,7 +1283,7 @@ Environment: ${reportContext.environment}`,"render")})}catch(error){rethrowCliAu
1283
1283
  `)}__name(buildSupportMessage,"buildSupportMessage");init_dist5();init_dist();init_api();init_auth();init_config();init_interactive();async function switchCommand(options={}){let cfg=loadConfig(),creds=requireCredentials(cfg),orgs2=await new FimoApiClient(cfg).listOrganizations();if(orgs2.length===0){ui.error({command:"orgs switch",code:"NO_ORGANIZATIONS",message:"No organization found for this account."});return}if(options.org){let target2=orgs2.find(org=>org.id===options.org)??orgs2.find(org=>org.slug===options.org);if(!target2){ui.error({command:"orgs switch",code:"ORGANIZATION_NOT_FOUND",message:`No organization matched "${options.org}".`,hint:"Run `fimo orgs list` to see available orgs."});return}setActiveOrganization({id:target2.id,name:target2.name,slug:target2.slug},cfg),ui.ok({command:"orgs switch",headline:`Active organization: ${target2.name}`,details:{id:target2.id,name:target2.name,slug:target2.slug}});return}assertInteractive("Pass --org <id-or-slug>.","orgs switch"),mt("Switch active organization");let currentId=creds.activeOrganization?.id,selected=await _t({message:"Select an organization",initialValue:currentId,options:orgs2.map(org=>({value:org.id,label:org.name,hint:org.id===currentId?"current":org.slug}))});if(q(selected)){ui.info({command:"orgs switch",message:"Cancelled."});return}let target=orgs2.find(org=>org.id===selected);if(!target){ui.error({command:"orgs switch",code:"ORGANIZATION_NOT_FOUND",message:"Selected organization not found."});return}setActiveOrganization({id:target.id,name:target.name,slug:target.slug},cfg),ui.ok({command:"orgs switch",headline:`Active organization: ${target.name}`,details:{id:target.id,name:target.name,slug:target.slug}})}__name(switchCommand,"switchCommand");init_dist();init_auth();async function whoamiCommand(){let creds=requireCredentials();if(!creds.user){ui.error({command:"whoami",code:"NOT_AUTHENTICATED",message:"Could not resolve the current user from local credentials.",hint:"Run `fimo login` again."});return}let displayName=creds.user.name||creds.user.email,activeOrganization=creds.activeOrganization?.name??null;ui.kv({command:"whoami",headline:`Signed in as ${displayName} (${creds.user.email})`,fields:{user:displayName,email:creds.user.email,active_organization:activeOrganization},hint:activeOrganization===null?"Run `fimo switch` to pick an active organization.":void 0})}__name(whoamiCommand,"whoamiCommand");init_config();var TOP_LEVEL_HELP_GROUPS=[{title:"Account",commands:["login","logout","whoami"]},{title:"Project lifecycle",commands:["create","migrate","deploy","validate","describe"]},{title:"Projects & teams",commands:["projects","orgs","invite","credits","referral","rename","delete","unpublish"]},{title:"Environments & releases",commands:["status","branch","checkout","switch","pull","diff","merge","publish","preview"]},{title:"Content & media",commands:["schemas","entries","forms","translations","assets","generate","models"]},{title:"Domains & analytics",commands:["domains","analytics"]},{title:"Agents & integrations",commands:["agents","skills","rules","integrations","channels"]},{title:"Configuration",commands:["vars","secrets"]},{title:"Help",commands:["support","help"]}];function configureGroupedHelp(program2){program2.configureHelp({...program2.configureHelp(),formatHelp:__name((cmd,helper)=>formatHelpWithGroupedCommands(cmd,helper,TOP_LEVEL_HELP_GROUPS),"formatHelp")})}__name(configureGroupedHelp,"configureGroupedHelp");function formatHelpWithGroupedCommands(cmd,helper,groups){let termWidth=helper.padWidth(cmd,helper),helpWidth=helper.helpWidth??80,formatItem=__name((term,description)=>helper.formatItem(term,termWidth,description,helper),"formatItem"),output=[`${helper.styleTitle("Usage:")} ${helper.styleUsage(helper.commandUsage(cmd))}`,""],commandDescription=helper.commandDescription(cmd);commandDescription.length>0&&(output=output.concat([helper.boxWrap(helper.styleCommandDescription(commandDescription),helpWidth),""]));let argumentList=helper.visibleArguments(cmd).map(argument=>formatItem(helper.styleArgumentTerm(helper.argumentTerm(argument)),helper.styleArgumentDescription(helper.argumentDescription(argument))));argumentList.length>0&&(output=output.concat([helper.styleTitle("Arguments:"),...argumentList,""]));let optionList=helper.visibleOptions(cmd).map(option=>formatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));if(optionList.length>0&&(output=output.concat([helper.styleTitle("Options:"),...optionList,""])),helper.showGlobalOptions){let globalOptionList=helper.visibleGlobalOptions(cmd).map(option=>formatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));globalOptionList.length>0&&(output=output.concat([helper.styleTitle("Global Options:"),...globalOptionList,""]))}let commandSections=formatGroupedCommandSections(cmd,helper,groups,termWidth);return commandSections.length>0&&(output=output.concat([helper.styleTitle("Commands:"),...commandSections,""])),output.join(`
1284
1284
  `)}__name(formatHelpWithGroupedCommands,"formatHelpWithGroupedCommands");function formatGroupedCommandSections(cmd,helper,groups,termWidth){let visibleCommands=helper.visibleCommands(cmd);if(visibleCommands.length===0)return[];let commandByName=new Map(visibleCommands.map(command=>[command.name(),command])),renderedNames=new Set,sections=[];for(let group of groups){let rows=group.commands.map(name=>commandByName.get(name)).filter(command=>command!==void 0).map(command=>(renderedNames.add(command.name()),indentBlock(helper.formatItem(helper.styleSubcommandTerm(helper.subcommandTerm(command)),termWidth,helper.styleSubcommandDescription(helper.subcommandDescription(command)),helper))));rows.length>0&&(sections.length>0&&sections.push(""),sections.push(` ${group.title}:`,...rows))}let ungroupedRows=visibleCommands.filter(command=>!renderedNames.has(command.name())).map(command=>indentBlock(helper.formatItem(helper.styleSubcommandTerm(helper.subcommandTerm(command)),termWidth,helper.styleSubcommandDescription(helper.subcommandDescription(command)),helper)));return ungroupedRows.length>0&&(sections.length>0&&sections.push(""),sections.push(" Other commands:",...ungroupedRows)),sections}__name(formatGroupedCommandSections,"formatGroupedCommandSections");function indentBlock(value){return value.split(`
1285
1285
  `).map(line=>` ${line}`).join(`
1286
- `)}__name(indentBlock,"indentBlock");init_agents();init_auth_errors();init_project_context();init_version_check();init_version();function computeVersionString(){let pkgVersion="0.0.0";try{let pkg=JSON.parse(fs43.readFileSync(path48.join(CLI_ROOT,"package.json"),"utf8"));typeof pkg.version=="string"&&pkg.version.length>0&&(pkgVersion=pkg.version)}catch{}let releaseId;try{let release=JSON.parse(fs43.readFileSync(path48.join(CLI_ROOT,"release.json"),"utf8"));typeof release.id=="string"&&release.id.length>0&&(releaseId=release.id)}catch{}let{apiUrl}=loadConfig(),detailParts=[];return releaseId&&detailParts.push(`release ${releaseId}`),detailParts.push(apiUrl),`fimo ${pkgVersion} (${detailParts.join(", ")})`}__name(computeVersionString,"computeVersionString");program.name("fimo").description("Fimo CLI").version(computeVersionString()).option("--env <name>","Override the env this command targets (defaults to the current git branch, falling back to `main`)").option("--json","Emit one structured JSON envelope per command (for tools / agents). FIMO_OUTPUT=json env also enables this.").option("--no-color","Disable colour in pretty mode (NO_COLOR env var also honoured)").option("--ascii","Use ASCII fallbacks for unicode glyphs (\u2713 \u2192 [ok], etc.) - for legacy terminals").hook("preAction",thisCommand=>{let opts=thisCommand.optsWithGlobals();initUi({json:opts.json===!0,noColor:opts.color===!1,ascii:opts.ascii===!0,jsonEnvVar:"FIMO_OUTPUT",asciiEnvVar:"FIMO_ASCII"})});program.command("login").description("Sign in through your browser").action(loginCommand);program.command("logout").description("Revoke the current session and clear local credentials").action(logoutCommand);program.command("whoami").description("Show the current signed-in user").action(whoamiCommand);registerProjectSecretsCommands(program);registerIntegrationsCommands(program);registerChannelsCommands(program);registerSchedulesCommands(program);registerSupportCommands(program);program.command("invite").description("Invite a user to an organization or project").option("--target <target>","Invite target: organization or project").option("--org <organizationId>","Organization ID (defaults to active when needed)").option("--project <projectId>","Project ID (defaults to the current project when available)").option("--email <email>","Email address of the user to invite").option("--role <role>","Role or access level to grant").option("-C, --cwd <dir>","Project directory used to resolve the current project").option("-y, --yes","Skip the confirmation prompt").option("--resend","Resend an existing pending organization invite").action(inviteCommand);program.command("clone").description("Clone an existing Fimo project locally").argument("[projectId]","Project ID to clone").argument("[dir]","Target directory (defaults to the project name)").option("--env <name>","Env to clone (defaults to main)").action(cloneCommand);program.command("init").description("Set up a Fimo project locally: sign in, create or link a project, install deps and skills").argument("[dir]","Target directory").option("--project-id <id>","Link an existing project instead of creating a new one").option("--org <organizationId>","Target organization ID when creating (recommended for agents and CI)").option("--env <name>","Env to check out when linking an existing project (defaults to main)").option("--template-root <path>","Override template directory when creating").option("--package-manager <pm>","Install dependencies with: npm | pnpm | yarn | bun").option("--install","Install dependencies after checkout").option("--no-install","Skip dependency installation after checkout").option("--skills","Set up Fimo skills for your AI coding agents").option("--no-skills","Skip setting up Fimo skills").option("--agents <list>",'Comma-separated list of AI agents to set up project rules for (e.g. claude-code,cursor). Pass "none" to skip per-agent variants.').option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method: symlink | copy (default: symlink)").option("-y, --yes","Run non-interactively using defaults (no prompts)").action(initCommand);var migrate=program.command("migrate").description("Prepare agent-ready migrations from existing websites into Fimo").argument("[url]","Published source site URL for the agent-ready migration draft").argument("[dir]","Target Fimo project directory (creates one if empty/missing)").option("-C, --cwd <dir>","Existing project directory when omitting [dir]").option("--org <organizationId>","Target organization ID when creating a new project").option("--template-root <path>","Override template directory when creating a new project").option("--install","Install dependencies after scaffolding a new project").option("--no-install","Skip dependency installation after scaffolding a new project").option("--agents <list>","Comma-separated list of AI agents to set up when creating a new project (e.g. claude-code,cursor)").option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method for newly created projects: symlink | copy").option("--max-pages <n>","Maximum number of HTML pages to crawl (default 12)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--route <path>",'Limit the refinement pack to one route (for example "/contact")').action((url,dir,options)=>{if(!url){migrate.help();return}return migrateRunCommand(url,dir,options)});migrate.command("init").description("Create or reuse a Fimo project, crawl a live site, and write migration artifacts").argument("<url>","Published source site URL").argument("[dir]","Target Fimo project directory (creates one if empty/missing)").option("-C, --cwd <dir>","Existing project directory when omitting [dir]").option("--org <organizationId>","Target organization ID when creating a new project").option("--template-root <path>","Override template directory when creating a new project").option("--install","Install dependencies after scaffolding a new project").option("--no-install","Skip dependency installation after scaffolding a new project").option("--agents <list>","Comma-separated list of AI agents to set up when creating a new project (e.g. claude-code,cursor)").option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method for newly created projects: symlink | copy").option("--max-pages <n>","Maximum number of HTML pages to crawl (default 12)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--json","Output the resulting manifest as JSON").action(migrateInitCommand);migrate.command("pull").description("Refresh the current migration artifacts from the source URL stored in manifest.json").option("-C, --cwd <dir>","Project directory").option("--max-pages <n>","Maximum number of HTML pages to crawl (default uses previous manifest)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--json","Output the refreshed manifest as JSON").action(migratePullCommand);migrate.command("inspect").description("Print a summary of the current migration manifest").option("-C, --cwd <dir>","Project directory").option("--json","Output the manifest as JSON").action(migrateInspectCommand);migrate.command("apply").description("Generate an agent-ready Fimo scaffold from the current migration manifest").option("-C, --cwd <dir>","Project directory").option("--json","Output the apply result as JSON").action(migrateApplyCommand);migrate.command("refine").description("Prepare a high-context agent handoff to refine the generated migration toward the source site").option("-C, --cwd <dir>","Project directory").option("--route <path>",'Limit the refinement pack to one route (for example "/contact")').option("--json","Output the refine result as JSON").action(migrateRefineCommand);migrate.command("import").description("Print regular Fimo CLI commands for importing reviewed migration artifacts").option("-C, --cwd <dir>","Project directory").option("--json","Output suggested commands as JSON").action(migrateImportCommand);migrate.command("manifest").description("Build or refresh the canonical migration manifest at .fimo/migration/manifest.json").option("-C, --cwd <dir>","Project directory").option("--output <path>","Manifest output path relative to the project directory").option("--fresh","Discard previous canonical manifest progress while rebuilding").action(migrateManifestCommand);migrate.command("report").description("Write the migration QA report from the canonical manifest").option("-C, --cwd <dir>","Project directory").option("--manifest <path>","Canonical manifest path relative to the project directory").option("--output <path>","Report output path relative to the project directory").option("--no-update-manifest","Do not write qa.status and qa.checks back to the manifest").action(migrateReportCommand);program.command("deploy").description("Push main to Fimo and deploy to preview (use --publish to also go live)").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--publish","Also publish the new version after deploying to preview").option("-m, --message <msg>","Commit message for any uncommitted changes").option("--no-restart","Don't restart the sandbox dev server after pull \u2014 rely on Vite HMR. Use when only HMR-safe files changed (components/pages/styles/content). See the `fimo` skill for when to use this.").option("--force","Deploy even if validation fails (escape hatch; may still fail later in the sandbox)").action(deployCommand);program.command("validate").description("Run all checks and sync local state with the Fimo backend").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--json","Emit structured JSON output (for CI / agents)").action(validateCommand);program.command("describe [path]").description("Print a structured snapshot of the current Fimo project (read-only)").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--depth <n>","Tree depth (default 3). Ignored when --full is set.").option("--full","Disable depth and width truncation (still respects the 10k-entry cap)").option("--json","Emit structured JSON output (for CI / agents)").action(describeCommand);program.command("credits").description("Show the current project credit balance").option("-C, --cwd <dir>","Project directory").option("--project <projectId>","Project ID (defaults to the current project)").option("--json","Emit structured JSON output").action(creditsCommand);program.command("delete").description("Delete the current project (reads .fimo.settings.json)").option("-C, --cwd <dir>","Project directory").option("-y, --yes","Skip confirmation prompt").action(options=>projectsDeleteCommand(void 0,options));program.command("unpublish").description("Unpublish the current project").option("-C, --cwd <dir>","Project directory").action(options=>projectsUnpublishCommand(void 0,options));program.command("rename").description("Set the display name of the current project").argument("<name>",'New display name (e.g. "Acme Blog")').option("-C, --cwd <dir>","Project directory").action((name,options)=>projectsRenameCommand(name,void 0,options));var orgs=program.command("orgs").description("Manage organizations");orgs.command("list").description("List organizations you belong to").action(orgsListCommand);orgs.command("switch").description("Switch the active organization used by `fimo init`").option("--org <id-or-slug>","Switch to this organization without prompting").action(switchCommand);orgs.command("members").description("List members of an organization (defaults to the active org)").option("--org <organizationId>","Organization ID (defaults to active)").action(orgsMembersCommand);var referral=program.command("referral").description("Share and inspect your referral program tools");referral.command("link").description("Print your referral link").action(referralLinkCommand);referral.command("stats").description("Show your referral stats").action(referralStatsCommand);var projects=program.command("projects").description("Manage projects across an organization");projects.command("list").description("List projects in an organization (defaults to the active org)").option("--org <organizationId>","Organization ID (defaults to active)").action(projectsListCommand);projects.command("create").description("Scaffold a new project (alias of `fimo init`)").argument("[dir]","Target directory").option("--org <organizationId>","Target organization ID (auto if you belong to one)").option("--template-root <path>","Override template directory").option("--package-manager <pm>","Install dependencies with: npm | pnpm | yarn | bun").option("--install","Install dependencies after scaffolding").option("--no-install","Skip dependency installation after scaffolding").action(initCommand);projects.command("clone").description("Clone an existing Fimo project locally").argument("[projectId]","Project ID to clone").argument("[dir]","Target directory (defaults to the project name)").option("--env <name>","Env to clone (defaults to main)").action(cloneCommand);projects.command("delete").description("Delete a project (defaults to the current project from .fimo.settings.json)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").option("-y, --yes","Skip confirmation prompt").action(projectsDeleteCommand);projects.command("publish").description("Publish a project (defaults to the current project)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsPublishCommand);projects.command("unpublish").description("Unpublish a project (defaults to the current project)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsUnpublishCommand);projects.command("rename").description("Set the display name of a project (defaults to the current project)").argument("<name>",'New display name (e.g. "Acme Blog")').argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsRenameCommand);var domains=program.command("domains").description("Manage your default URL and custom domains");domains.command("list").alias("ls").description("Show the default URL and any custom domains").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON").action(domainsListCommand);domains.command("rename-default").description("Rename your default URL (the <slug>.fimo.site subdomain Fimo provides)").argument("<slug>",'New slug (e.g. "acme-coffee")').option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON").action(domainsRenameDefaultCommand);domains.command("suggest-default").description("Suggest available default URLs; pick one to claim (or list with --json)").option("--base <text>","Override the base text used to generate suggestions (defaults to your project display name)").option("--max <n>","Number of suggestions to fetch (1\u201310, default 5)").option("--pick <slug-or-index>","Non-interactive: claim this suggestion by slug or numeric index").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON (no prompt, no claim)").action(domainsSuggestDefaultCommand);domains.command("add").description("Attach a custom domain to your project (Premium plan required)").argument("<hostname>",'The hostname to attach (e.g. "blog.example.com")').option("--redirect-www","Also configure an apex \u2192 www redirect").option("--wait [duration]","Poll until DNS is verified (e.g. --wait, --wait 10m)").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output the resulting domain record as JSON after instructions").action(domainsAddCommand);domains.command("remove").alias("rm").description("Detach a custom domain by hostname or ID").argument("<hostname-or-id>","Hostname or domain ID").option("-y, --yes","Skip the confirmation prompt").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").action(domainsRemoveCommand);domains.command("refresh").description("Re-check DNS and SSL status for a custom domain").argument("<hostname-or-id>","Hostname or domain ID").option("--wait [duration]","Poll until SSL is active (default; pass --no-wait to print one snapshot)").option("--no-wait","Print the refreshed status once and exit").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output the resulting domain record as JSON").action(domainsRefreshCommand);domains.command("search").description("Search for available domain names to buy through Fimo").argument("<keyword>",'Search keyword (e.g. "acme coffee")').option("--tld <list>",'Restrict TLDs (comma-separated, e.g. "com,io,dev")').option("--max-price <amount>","Filter results to this purchase price ceiling (in dollars)").option("--limit <n>","Truncate to the first N results (default 20)").option("--json","Output as JSON").action(domainsSearchCommand);domains.command("pricing").description("Show the price for a specific domain (purchase + renewal)").argument("<domain>",'Domain name (e.g. "example.com")').option("--years <n>","Multiply purchase price by this many years (default 1)").option("--json","Output as JSON").action(domainsPricingCommand);domains.command("buy").description("Buy a domain through Fimo. Creates a checkout invoice; no charge until you pay it in the browser.").argument("<domain>",'Domain name to register (e.g. "example.com")').option("--years <n>","Years to register for (default uses the TLD minimum)").option("--auto-renew","Enable auto-renewal (default)").option("--no-auto-renew","Disable auto-renewal \u2014 domain will not renew automatically").option("-y, --yes","Skip the interactive confirmation prompt").option("--open","Open the checkout URL in your browser after creating the invoice").option("--wait [duration]","Poll until payment completes and registration succeeds").option("--org <organizationId>","Organization ID (defaults to the current project's org)").option("-C, --cwd <dir>","Project directory used to resolve the org").option("--json","Output the resulting invoice record as JSON").action(domainsBuyCommand);domains.command("owned").description("List domains your organization has registered through Fimo").option("--org <organizationId>","Organization ID (defaults to the current project's org)").option("--status <list>",'Filter by status (comma-separated, e.g. "owned,pending_payment")').option("--limit <n>","Truncate to the first N results").option("-C, --cwd <dir>","Project directory used to resolve the org").option("--json","Output as JSON").action(domainsOwnedCommand);var scripts=program.command("scripts",{hidden:!0}).description("Internal/advanced primitives. Most users want `fimo validate`.");scripts.command("sync-schemas").description("Regenerate TypeScript clients for src/schemas/*.json").option("-C, --cwd <dir>","Project directory").action(syncSchemasCommand);scripts.command("sync-forms").description("Regenerate TypeScript clients for src/forms/*.json").option("-C, --cwd <dir>","Project directory").action(syncFormsCommand);scripts.command("validate-route-metadata").description("Cross-validate src/routes.ts against fimo-config.json#routes (v4)").option("-C, --cwd <dir>","Project directory").action(validateRouteMetadataCommand);scripts.command("extract-translations").description("Legacy local helper: scan src/ for literal t() label keys").option("-C, --cwd <dir>","Project directory").action(extractTranslationsCommand);scripts.command("lint").description("Lint project files (translation keys + oxlint)").argument("[path]","Single file to lint (omit for whole project)").option("-C, --cwd <dir>","Project directory").action(lintCommand);program.command("export-static",{hidden:!0}).description("Post-build: clean dist/server and *.data files (after react-router build)").option("-C, --cwd <dir>","Project directory").action(exportStaticCommand);program.command("resolve-routes",{hidden:!0}).description("Map changed files back to affected preview routes").argument("[files...]","Changed files to resolve").option("-C, --cwd <dir>","Project directory").action(resolveRoutesCommand);var branchCmd=program.command("branch").description("List, create, or delete envs (multi-surface env = git branch + per-env Neon DB + sandbox)").argument("[name]","Env name (omit to list)").option("-v, --verbose","Show preview URLs + deleted envs").option("-d, --delete","Delete the named env (drops sandbox + Neon branch + R2 prefix)").option("--from <env>","Parent env to fork from when creating (defaults to current)").action(async(name,_options,command)=>{if(!name){await branchListCommand(command);return}if(command.opts().delete){await branchDeleteCommand(name,command);return}await branchCreateCommand(name,command)});program.command("checkout").description("Switch to an env (or create + switch with -b)").argument("<name>","Env name").option("-b, --create","Create the env if it does not exist").option("--from <env>","Parent env (only with -b)").action(checkoutCommand);program.command("switch").description("Alias for `fimo checkout` (switch envs)").argument("<name>","Env name").action(checkoutCommand);program.command("pull").description("Sync the current env's data plane from its parent").option("--from <env>","Sync from an explicit ancestor (defaults to declared parent)").action(pullCommand);program.command("diff").description("Two-env diff across all surfaces").argument("[from]","From env (defaults to current env)").argument("[to]","To env (defaults to main)").option("-C, --cwd <dir>","Project directory").option("--surface <name>","Limit to a single surface (code | schemas | content | ...)").option("--key <key>","Drill into one item within --surface (W2 \u2014 per-item before/after)").option("--all","Render the full item list, bypassing the per-surface cap").option("--json","Emit raw JSON instead of the rendered report").option("--no-color","Disable ANSI colour output").action(diffCommand);program.command("merge").description("Merge another env into the current one (multi-surface, atomic, with conflict resolver)").argument("<from>","Source env").option("-C, --cwd <dir>","Project directory").option("--allow-direct-merge","Override the main-branch protected-flow gate").option("-y, --yes","Accept parent-wins for every conflict (non-interactive)").option("--resume","Resume an in-flight merge from its persisted draft (W3.6)").option("--json","Emit raw JSON instead of the rendered report").option("--no-color","Disable ANSI colour output").action(mergeCommand);program.command("publish").description("Tag main@HEAD as release/<version> + trigger prod swap").option("-C, --cwd <dir>","Project directory").option("--version <ver>","Semver version for the release (e.g. 1.4.2)").option("--notes <text>","Optional release notes (markdown)").option("--skip-validate","Skip the lint + codegen + smoke pre-checks (operator override)").action(publishCommand);program.command("status").description("Multi-surface env status \u2014 the showcase command").option("-C, --cwd <dir>","Project directory").option("--short","One-line summary per surface (no bodies)").option("--json","Emit raw JSON instead of the rendered report").option("--vs <env>","Comparison target (defaults to the parent env or main)").option("--no-color","Disable ANSI colour output").option("--code","Limit to the code surface").option("--content","Limit to the content surface").option("--i18n","Limit to the translations surface").option("--agents","Limit to the agents/activations surface").option("--assets","Limit to the assets surface").option("--forms","Limit to the forms surface").option("--all","Render the full item list, bypassing the per-surface cap").action(statusCommand2);registerAgentsCommands(program);registerPreviewCommands(program);program.addCommand(new Command("git-credential").argument("<operation>","get | store | erase (git credential protocol)").description("Internal git credential helper (invoked by git)").action(gitCredentialCommand),{hidden:!0});registerGenerate(program);registerMediaTaskCommands(program);var schemas2=program.command("schemas").description("Manage content-type schemas");schemas2.command("list").description("List all registered schemas").option("-C, --cwd <dir>","Project directory").action(schemaListCommand);schemas2.command("get").description("Get a schema by type name").argument("<typeName>","Content type name (e.g. BlogPost)").option("-C, --cwd <dir>","Project directory").action(schemaGetCommand);schemas2.command("push").description("Push schema JSON files to the API (create or update)").argument("[typeName]","Schema name to push (omit to push all)").option("-C, --cwd <dir>","Project directory").action(schemaPushCommand);schemas2.command("delete").description("Delete a schema by type name").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").action(schemaDeleteCommand);var entries=program.command("entries").description("Manage content entries");entries.command("list").description("List entries of a content type").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").option("--limit <n>","Max entries to return").option("--offset <n>","Offset for pagination").option("--search <query>","Search query").option("--where <json>",`JSON filter object, e.g. '{"featured":true}'`).option("--sort <field>","Sort field, prefix with - for descending").option("--fields <fields>","Comma-separated fields to return, e.g. slug,title,excerpt").option("--populate <fields>","Comma-separated reference fields to populate, e.g. author,contributors").option("--locale <locale>","Locale to list (default en)").option("--sort-by <field>","Sort field").option("--sort-direction <dir>","Sort direction (asc|desc)").action(entriesListCommand);entries.command("get").description("Get a single entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesGetCommand);entries.command("create").description("Create a new entry").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").requiredOption("--body <json>","Entry JSON body (slug + data)").option("--locale <locale>","Entry locale (default en)").option("--document-id <id>","Document ID shared by localized variants").action(entriesCreateCommand);entries.command("update").description("Update an existing entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").requiredOption("--body <json>","Updated entry JSON body").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesUpdateCommand);entries.command("delete").description("Delete an entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesDeleteCommand);var assets2=program.command("assets").description("Manage media assets");assets2.command("list").description("List assets").option("-C, --cwd <dir>","Project directory").option("--parent-id <id>","Filter by parent folder").option("--search <query>","Search across name, alt text, caption, and AI-generated alt / caption (case-insensitive)").option("--type <type>","Filter by entry type (file|folder)").option("--image","Filter to image MIME types (shortcut for --mime-prefix image/)").option("--video","Filter to video MIME types (shortcut for --mime-prefix video/)").option("--audio","Filter to audio MIME types (shortcut for --mime-prefix audio/)").option("--mime-prefix <prefix>",'Filter by MIME type prefix (e.g. "image/png")').option("--sort-by <field>","Sort field").option("--limit <n>","Max results").option("--offset <n>","Offset").action(assetsListCommand);assets2.command("upload").description("Upload a file to the media library").argument("<file>","Path to the file to upload").option("-C, --cwd <dir>","Project directory").option("--name <name>","Asset display name").option("--parent-id <id>","Target folder ID").option("--folder-path <path>","Target folder path, creating missing folders").action(assetsUploadCommand);var modelsCmd=new Command("models").description("Browse available media generation models");program.addCommand(modelsCmd,{hidden:!0});modelsCmd.command("list").description("List Fal models enabled for this project").option("-C, --cwd <dir>","Project directory").option("--modality <m>","Filter by modality (image | video | audio)").option("--search <query>","Search names and descriptions").option("--category <category>","Filter by Fal media category").option("--tag <t>","Filter by tag (repeatable; AND semantics \u2014 model must have every tag)",(value,previous)=>[...previous,value],[]).option("--extended","Per-model card: alias, provider, tags, price, best-for, flags").option("--json","Machine-readable JSON output").action(modelsListCommand);modelsCmd.command("show").description("Show a Fal model and its available flags").argument("<key>","Namespaced model id from `fimo models list`").option("-C, --cwd <dir>","Project directory").option("--json","Machine-readable JSON output (includes the per-model flag list)").action(modelsShowCommand);assets2.command("create-folder").description("Create a folder in the media library").argument("<name>","Folder name").option("-C, --cwd <dir>","Project directory").option("--parent-id <id>","Parent folder ID").action(assetsCreateFolderCommand);assets2.command("move").description("Move an asset to a different folder").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").requiredOption("--parent-id <id>",'Target folder ID (use "null" for root)').action(assetsMoveCommand);assets2.command("delete").description("Delete an asset").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").action(assetsDeleteCommand);assets2.command("open").description("Fetch asset metadata; optionally download locally or open in default viewer").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").option("--download","Download the asset bytes to a local file and print the path").option("--browser","Open the asset URL in the OS default viewer (open / xdg-open / start)").option("--path <path>","Override download destination (default: <tmpdir>/fimo-assets/<id>.<ext>). Implies --download.").action((id,options,cmd)=>(options.path&&!options.download&&(options.download=!0),assetsOpenCommand(id,options,cmd)));var forms2=program.command("forms").description("Manage forms");forms2.command("list").description("List all forms").option("-C, --cwd <dir>","Project directory").action(formsListCommand);forms2.command("get").description("Get a form by ID").argument("<id>","Form ID").option("-C, --cwd <dir>","Project directory").action(formsGetCommand);forms2.command("push").description("Push form JSON files to the API (create or update, patches id back)").argument("[formName]","Form name to push (omit to push all)").option("-C, --cwd <dir>","Project directory").action(formsPushCommand);forms2.command("delete").description("Delete a form").argument("<id>","Form ID").option("-C, --cwd <dir>","Project directory").action(formsDeleteCommand);var supportedAgentsHelp=`
1286
+ `)}__name(indentBlock,"indentBlock");init_agents();init_auth_errors();init_project_context();init_version();function computeVersionString(){let pkgVersion="0.0.0";try{let pkg=JSON.parse(fs43.readFileSync(path48.join(CLI_ROOT,"package.json"),"utf8"));typeof pkg.version=="string"&&pkg.version.length>0&&(pkgVersion=pkg.version)}catch{}let releaseId;try{let release=JSON.parse(fs43.readFileSync(path48.join(CLI_ROOT,"release.json"),"utf8"));typeof release.id=="string"&&release.id.length>0&&(releaseId=release.id)}catch{}let{apiUrl}=loadConfig(),detailParts=[];return releaseId&&detailParts.push(`release ${releaseId}`),detailParts.push(apiUrl),`fimo ${pkgVersion} (${detailParts.join(", ")})`}__name(computeVersionString,"computeVersionString");program.name("fimo").description("Fimo CLI").version(computeVersionString()).option("--env <name>","Override the env this command targets (defaults to the current git branch, falling back to `main`)").option("--json","Emit one structured JSON envelope per command (for tools / agents). FIMO_OUTPUT=json env also enables this.").option("--no-color","Disable colour in pretty mode (NO_COLOR env var also honoured)").option("--ascii","Use ASCII fallbacks for unicode glyphs (\u2713 \u2192 [ok], etc.) - for legacy terminals").hook("preAction",thisCommand=>{let opts=thisCommand.optsWithGlobals();initUi({json:opts.json===!0,noColor:opts.color===!1,ascii:opts.ascii===!0,jsonEnvVar:"FIMO_OUTPUT",asciiEnvVar:"FIMO_ASCII"})});program.command("login").description("Sign in through your browser").action(loginCommand);program.command("logout").description("Revoke the current session and clear local credentials").action(logoutCommand);program.command("whoami").description("Show the current signed-in user").action(whoamiCommand);registerProjectSecretsCommands(program);registerIntegrationsCommands(program);registerChannelsCommands(program);registerSchedulesCommands(program);registerSupportCommands(program);program.command("invite").description("Invite a user to an organization or project").option("--target <target>","Invite target: organization or project").option("--org <organizationId>","Organization ID (defaults to active when needed)").option("--project <projectId>","Project ID (defaults to the current project when available)").option("--email <email>","Email address of the user to invite").option("--role <role>","Role or access level to grant").option("-C, --cwd <dir>","Project directory used to resolve the current project").option("-y, --yes","Skip the confirmation prompt").option("--resend","Resend an existing pending organization invite").action(inviteCommand);program.command("clone").description("Clone an existing Fimo project locally").argument("[projectId]","Project ID to clone").argument("[dir]","Target directory (defaults to the project name)").option("--env <name>","Env to clone (defaults to main)").action(cloneCommand);program.command("init").description("Set up a Fimo project locally: sign in, create or link a project, install deps and skills").argument("[dir]","Target directory").option("--project-id <id>","Link an existing project instead of creating a new one").option("--org <organizationId>","Target organization ID when creating (recommended for agents and CI)").option("--env <name>","Env to check out when linking an existing project (defaults to main)").option("--template-root <path>","Override template directory when creating").option("--package-manager <pm>","Install dependencies with: npm | pnpm | yarn | bun").option("--install","Install dependencies after checkout").option("--no-install","Skip dependency installation after checkout").option("--skills","Set up Fimo skills for your AI coding agents").option("--no-skills","Skip setting up Fimo skills").option("--agents <list>",'Comma-separated list of AI agents to set up project rules for (e.g. claude-code,cursor). Pass "none" to skip per-agent variants.').option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method: symlink | copy (default: symlink)").option("-y, --yes","Run non-interactively using defaults (no prompts)").action(initCommand);var migrate=program.command("migrate").description("Prepare agent-ready migrations from existing websites into Fimo").argument("[url]","Published source site URL for the agent-ready migration draft").argument("[dir]","Target Fimo project directory (creates one if empty/missing)").option("-C, --cwd <dir>","Existing project directory when omitting [dir]").option("--org <organizationId>","Target organization ID when creating a new project").option("--template-root <path>","Override template directory when creating a new project").option("--install","Install dependencies after scaffolding a new project").option("--no-install","Skip dependency installation after scaffolding a new project").option("--agents <list>","Comma-separated list of AI agents to set up when creating a new project (e.g. claude-code,cursor)").option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method for newly created projects: symlink | copy").option("--max-pages <n>","Maximum number of HTML pages to crawl (default 12)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--route <path>",'Limit the refinement pack to one route (for example "/contact")').action((url,dir,options)=>{if(!url){migrate.help();return}return migrateRunCommand(url,dir,options)});migrate.command("init").description("Create or reuse a Fimo project, crawl a live site, and write migration artifacts").argument("<url>","Published source site URL").argument("[dir]","Target Fimo project directory (creates one if empty/missing)").option("-C, --cwd <dir>","Existing project directory when omitting [dir]").option("--org <organizationId>","Target organization ID when creating a new project").option("--template-root <path>","Override template directory when creating a new project").option("--install","Install dependencies after scaffolding a new project").option("--no-install","Skip dependency installation after scaffolding a new project").option("--agents <list>","Comma-separated list of AI agents to set up when creating a new project (e.g. claude-code,cursor)").option("-a, --agent <id>","Repeatable: pass once per agent (-a claude-code -a cursor)",(value,prev2=[])=>[...prev2,value]).option("--mode <mode>","Project skill install method for newly created projects: symlink | copy").option("--max-pages <n>","Maximum number of HTML pages to crawl (default 12)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--json","Output the resulting manifest as JSON").action(migrateInitCommand);migrate.command("pull").description("Refresh the current migration artifacts from the source URL stored in manifest.json").option("-C, --cwd <dir>","Project directory").option("--max-pages <n>","Maximum number of HTML pages to crawl (default uses previous manifest)").option("--max-assets <n>","Maximum media assets to download into the migration pack (default 40)").option("--download-media","Download detected media assets into the migration pack").option("--no-download-media","Skip downloading detected media assets").option("--json","Output the refreshed manifest as JSON").action(migratePullCommand);migrate.command("inspect").description("Print a summary of the current migration manifest").option("-C, --cwd <dir>","Project directory").option("--json","Output the manifest as JSON").action(migrateInspectCommand);migrate.command("apply").description("Generate an agent-ready Fimo scaffold from the current migration manifest").option("-C, --cwd <dir>","Project directory").option("--json","Output the apply result as JSON").action(migrateApplyCommand);migrate.command("refine").description("Prepare a high-context agent handoff to refine the generated migration toward the source site").option("-C, --cwd <dir>","Project directory").option("--route <path>",'Limit the refinement pack to one route (for example "/contact")').option("--json","Output the refine result as JSON").action(migrateRefineCommand);migrate.command("import").description("Print regular Fimo CLI commands for importing reviewed migration artifacts").option("-C, --cwd <dir>","Project directory").option("--json","Output suggested commands as JSON").action(migrateImportCommand);migrate.command("manifest").description("Build or refresh the canonical migration manifest at .fimo/migration/manifest.json").option("-C, --cwd <dir>","Project directory").option("--output <path>","Manifest output path relative to the project directory").option("--fresh","Discard previous canonical manifest progress while rebuilding").action(migrateManifestCommand);migrate.command("report").description("Write the migration QA report from the canonical manifest").option("-C, --cwd <dir>","Project directory").option("--manifest <path>","Canonical manifest path relative to the project directory").option("--output <path>","Report output path relative to the project directory").option("--no-update-manifest","Do not write qa.status and qa.checks back to the manifest").action(migrateReportCommand);program.command("deploy").description("Push main to Fimo and deploy to preview (use --publish to also go live)").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--publish","Also publish the new version after deploying to preview").option("-m, --message <msg>","Commit message for any uncommitted changes").option("--no-restart","Don't restart the sandbox dev server after pull \u2014 rely on Vite HMR. Use when only HMR-safe files changed (components/pages/styles/content). See the `fimo` skill for when to use this.").option("--force","Deploy even if validation fails (escape hatch; may still fail later in the sandbox)").action(deployCommand);program.command("validate").description("Run all checks and sync local state with the Fimo backend").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--json","Emit structured JSON output (for CI / agents)").action(validateCommand);program.command("describe [path]").description("Print a structured snapshot of the current Fimo project (read-only)").option("-C, --cwd <dir>","Run against this directory instead of cwd").option("--depth <n>","Tree depth (default 3). Ignored when --full is set.").option("--full","Disable depth and width truncation (still respects the 10k-entry cap)").option("--json","Emit structured JSON output (for CI / agents)").action(describeCommand);program.command("credits").description("Show the current project credit balance").option("-C, --cwd <dir>","Project directory").option("--project <projectId>","Project ID (defaults to the current project)").option("--json","Emit structured JSON output").action(creditsCommand);program.command("delete").description("Delete the current project (reads .fimo.settings.json)").option("-C, --cwd <dir>","Project directory").option("-y, --yes","Skip confirmation prompt").action(options=>projectsDeleteCommand(void 0,options));program.command("unpublish").description("Unpublish the current project").option("-C, --cwd <dir>","Project directory").action(options=>projectsUnpublishCommand(void 0,options));program.command("rename").description("Set the display name of the current project").argument("<name>",'New display name (e.g. "Acme Blog")').option("-C, --cwd <dir>","Project directory").action((name,options)=>projectsRenameCommand(name,void 0,options));var orgs=program.command("orgs").description("Manage organizations");orgs.command("list").description("List organizations you belong to").action(orgsListCommand);orgs.command("switch").description("Switch the active organization used by `fimo init`").option("--org <id-or-slug>","Switch to this organization without prompting").action(switchCommand);orgs.command("members").description("List members of an organization (defaults to the active org)").option("--org <organizationId>","Organization ID (defaults to active)").action(orgsMembersCommand);var referral=program.command("referral").description("Share and inspect your referral program tools");referral.command("link").description("Print your referral link").action(referralLinkCommand);referral.command("stats").description("Show your referral stats").action(referralStatsCommand);var projects=program.command("projects").description("Manage projects across an organization");projects.command("list").description("List projects in an organization (defaults to the active org)").option("--org <organizationId>","Organization ID (defaults to active)").action(projectsListCommand);projects.command("create").description("Scaffold a new project (alias of `fimo init`)").argument("[dir]","Target directory").option("--org <organizationId>","Target organization ID (auto if you belong to one)").option("--template-root <path>","Override template directory").option("--package-manager <pm>","Install dependencies with: npm | pnpm | yarn | bun").option("--install","Install dependencies after scaffolding").option("--no-install","Skip dependency installation after scaffolding").action(initCommand);projects.command("clone").description("Clone an existing Fimo project locally").argument("[projectId]","Project ID to clone").argument("[dir]","Target directory (defaults to the project name)").option("--env <name>","Env to clone (defaults to main)").action(cloneCommand);projects.command("delete").description("Delete a project (defaults to the current project from .fimo.settings.json)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").option("-y, --yes","Skip confirmation prompt").action(projectsDeleteCommand);projects.command("publish").description("Publish a project (defaults to the current project)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsPublishCommand);projects.command("unpublish").description("Unpublish a project (defaults to the current project)").argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsUnpublishCommand);projects.command("rename").description("Set the display name of a project (defaults to the current project)").argument("<name>",'New display name (e.g. "Acme Blog")').argument("[projectId]","Explicit project ID").option("-C, --cwd <dir>","Project directory").action(projectsRenameCommand);var domains=program.command("domains").description("Manage your default URL and custom domains");domains.command("list").alias("ls").description("Show the default URL and any custom domains").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON").action(domainsListCommand);domains.command("rename-default").description("Rename your default URL (the <slug>.fimo.site subdomain Fimo provides)").argument("<slug>",'New slug (e.g. "acme-coffee")').option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON").action(domainsRenameDefaultCommand);domains.command("suggest-default").description("Suggest available default URLs; pick one to claim (or list with --json)").option("--base <text>","Override the base text used to generate suggestions (defaults to your project display name)").option("--max <n>","Number of suggestions to fetch (1\u201310, default 5)").option("--pick <slug-or-index>","Non-interactive: claim this suggestion by slug or numeric index").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output as JSON (no prompt, no claim)").action(domainsSuggestDefaultCommand);domains.command("add").description("Attach a custom domain to your project (Premium plan required)").argument("<hostname>",'The hostname to attach (e.g. "blog.example.com")').option("--redirect-www","Also configure an apex \u2192 www redirect").option("--wait [duration]","Poll until DNS is verified (e.g. --wait, --wait 10m)").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output the resulting domain record as JSON after instructions").action(domainsAddCommand);domains.command("remove").alias("rm").description("Detach a custom domain by hostname or ID").argument("<hostname-or-id>","Hostname or domain ID").option("-y, --yes","Skip the confirmation prompt").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").action(domainsRemoveCommand);domains.command("refresh").description("Re-check DNS and SSL status for a custom domain").argument("<hostname-or-id>","Hostname or domain ID").option("--wait [duration]","Poll until SSL is active (default; pass --no-wait to print one snapshot)").option("--no-wait","Print the refreshed status once and exit").option("--project <projectId>","Project ID (defaults to the current project)").option("-C, --cwd <dir>","Project directory").option("--json","Output the resulting domain record as JSON").action(domainsRefreshCommand);domains.command("search").description("Search for available domain names to buy through Fimo").argument("<keyword>",'Search keyword (e.g. "acme coffee")').option("--tld <list>",'Restrict TLDs (comma-separated, e.g. "com,io,dev")').option("--max-price <amount>","Filter results to this purchase price ceiling (in dollars)").option("--limit <n>","Truncate to the first N results (default 20)").option("--json","Output as JSON").action(domainsSearchCommand);domains.command("pricing").description("Show the price for a specific domain (purchase + renewal)").argument("<domain>",'Domain name (e.g. "example.com")').option("--years <n>","Multiply purchase price by this many years (default 1)").option("--json","Output as JSON").action(domainsPricingCommand);domains.command("buy").description("Buy a domain through Fimo. Creates a checkout invoice; no charge until you pay it in the browser.").argument("<domain>",'Domain name to register (e.g. "example.com")').option("--years <n>","Years to register for (default uses the TLD minimum)").option("--auto-renew","Enable auto-renewal (default)").option("--no-auto-renew","Disable auto-renewal \u2014 domain will not renew automatically").option("-y, --yes","Skip the interactive confirmation prompt").option("--open","Open the checkout URL in your browser after creating the invoice").option("--wait [duration]","Poll until payment completes and registration succeeds").option("--org <organizationId>","Organization ID (defaults to the current project's org)").option("-C, --cwd <dir>","Project directory used to resolve the org").option("--json","Output the resulting invoice record as JSON").action(domainsBuyCommand);domains.command("owned").description("List domains your organization has registered through Fimo").option("--org <organizationId>","Organization ID (defaults to the current project's org)").option("--status <list>",'Filter by status (comma-separated, e.g. "owned,pending_payment")').option("--limit <n>","Truncate to the first N results").option("-C, --cwd <dir>","Project directory used to resolve the org").option("--json","Output as JSON").action(domainsOwnedCommand);var scripts=program.command("scripts",{hidden:!0}).description("Internal/advanced primitives. Most users want `fimo validate`.");scripts.command("sync-schemas").description("Regenerate TypeScript clients for src/schemas/*.json").option("-C, --cwd <dir>","Project directory").action(syncSchemasCommand);scripts.command("sync-forms").description("Regenerate TypeScript clients for src/forms/*.json").option("-C, --cwd <dir>","Project directory").action(syncFormsCommand);scripts.command("validate-route-metadata").description("Cross-validate src/routes.ts against fimo-config.json#routes (v4)").option("-C, --cwd <dir>","Project directory").action(validateRouteMetadataCommand);scripts.command("extract-translations").description("Legacy local helper: scan src/ for literal t() label keys").option("-C, --cwd <dir>","Project directory").action(extractTranslationsCommand);scripts.command("lint").description("Lint project files (translation keys + oxlint)").argument("[path]","Single file to lint (omit for whole project)").option("-C, --cwd <dir>","Project directory").action(lintCommand);program.command("export-static",{hidden:!0}).description("Post-build: clean dist/server and *.data files (after react-router build)").option("-C, --cwd <dir>","Project directory").action(exportStaticCommand);program.command("resolve-routes",{hidden:!0}).description("Map changed files back to affected preview routes").argument("[files...]","Changed files to resolve").option("-C, --cwd <dir>","Project directory").action(resolveRoutesCommand);var branchCmd=program.command("branch").description("List, create, or delete envs (multi-surface env = git branch + per-env Neon DB + sandbox)").argument("[name]","Env name (omit to list)").option("-v, --verbose","Show preview URLs + deleted envs").option("-d, --delete","Delete the named env (drops sandbox + Neon branch + R2 prefix)").option("--from <env>","Parent env to fork from when creating (defaults to current)").action(async(name,_options,command)=>{if(!name){await branchListCommand(command);return}if(command.opts().delete){await branchDeleteCommand(name,command);return}await branchCreateCommand(name,command)});program.command("checkout").description("Switch to an env (or create + switch with -b)").argument("<name>","Env name").option("-b, --create","Create the env if it does not exist").option("--from <env>","Parent env (only with -b)").action(checkoutCommand);program.command("switch").description("Alias for `fimo checkout` (switch envs)").argument("<name>","Env name").action(checkoutCommand);program.command("pull").description("Sync the current env's data plane from its parent").option("--from <env>","Sync from an explicit ancestor (defaults to declared parent)").action(pullCommand);program.command("diff").description("Two-env diff across all surfaces").argument("[from]","From env (defaults to current env)").argument("[to]","To env (defaults to main)").option("-C, --cwd <dir>","Project directory").option("--surface <name>","Limit to a single surface (code | schemas | content | ...)").option("--key <key>","Drill into one item within --surface (W2 \u2014 per-item before/after)").option("--all","Render the full item list, bypassing the per-surface cap").option("--json","Emit raw JSON instead of the rendered report").option("--no-color","Disable ANSI colour output").action(diffCommand);program.command("merge").description("Merge another env into the current one (multi-surface, atomic, with conflict resolver)").argument("<from>","Source env").option("-C, --cwd <dir>","Project directory").option("--allow-direct-merge","Override the main-branch protected-flow gate").option("-y, --yes","Accept parent-wins for every conflict (non-interactive)").option("--resume","Resume an in-flight merge from its persisted draft (W3.6)").option("--json","Emit raw JSON instead of the rendered report").option("--no-color","Disable ANSI colour output").action(mergeCommand);program.command("publish").description("Tag main@HEAD as release/<version> + trigger prod swap").option("-C, --cwd <dir>","Project directory").option("--version <ver>","Semver version for the release (e.g. 1.4.2)").option("--notes <text>","Optional release notes (markdown)").option("--skip-validate","Skip the lint + codegen + smoke pre-checks (operator override)").action(publishCommand);program.command("status").description("Multi-surface env status \u2014 the showcase command").option("-C, --cwd <dir>","Project directory").option("--short","One-line summary per surface (no bodies)").option("--json","Emit raw JSON instead of the rendered report").option("--vs <env>","Comparison target (defaults to the parent env or main)").option("--no-color","Disable ANSI colour output").option("--code","Limit to the code surface").option("--content","Limit to the content surface").option("--i18n","Limit to the translations surface").option("--agents","Limit to the agents/activations surface").option("--assets","Limit to the assets surface").option("--forms","Limit to the forms surface").option("--all","Render the full item list, bypassing the per-surface cap").action(statusCommand2);registerAgentsCommands(program);registerPreviewCommands(program);program.addCommand(new Command("git-credential").argument("<operation>","get | store | erase (git credential protocol)").description("Internal git credential helper (invoked by git)").action(gitCredentialCommand),{hidden:!0});registerGenerate(program);registerMediaTaskCommands(program);var schemas2=program.command("schemas").description("Manage content-type schemas");schemas2.command("list").description("List all registered schemas").option("-C, --cwd <dir>","Project directory").action(schemaListCommand);schemas2.command("get").description("Get a schema by type name").argument("<typeName>","Content type name (e.g. BlogPost)").option("-C, --cwd <dir>","Project directory").action(schemaGetCommand);schemas2.command("push").description("Push schema JSON files to the API (create or update)").argument("[typeName]","Schema name to push (omit to push all)").option("-C, --cwd <dir>","Project directory").action(schemaPushCommand);schemas2.command("delete").description("Delete a schema by type name").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").action(schemaDeleteCommand);var entries=program.command("entries").description("Manage content entries");entries.command("list").description("List entries of a content type").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").option("--limit <n>","Max entries to return").option("--offset <n>","Offset for pagination").option("--search <query>","Search query").option("--where <json>",`JSON filter object, e.g. '{"featured":true}'`).option("--sort <field>","Sort field, prefix with - for descending").option("--fields <fields>","Comma-separated fields to return, e.g. slug,title,excerpt").option("--populate <fields>","Comma-separated reference fields to populate, e.g. author,contributors").option("--locale <locale>","Locale to list (default en)").option("--sort-by <field>","Sort field").option("--sort-direction <dir>","Sort direction (asc|desc)").action(entriesListCommand);entries.command("get").description("Get a single entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesGetCommand);entries.command("create").description("Create a new entry").argument("<typeName>","Content type name").option("-C, --cwd <dir>","Project directory").requiredOption("--body <json>","Entry JSON body (slug + data)").option("--locale <locale>","Entry locale (default en)").option("--document-id <id>","Document ID shared by localized variants").action(entriesCreateCommand);entries.command("update").description("Update an existing entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").requiredOption("--body <json>","Updated entry JSON body").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesUpdateCommand);entries.command("delete").description("Delete an entry").argument("<typeName>","Content type name").argument("<id>","Entry ID").option("-C, --cwd <dir>","Project directory").option("--locale <locale>","Entry locale (defaults to the project locale)").action(entriesDeleteCommand);var assets2=program.command("assets").description("Manage media assets");assets2.command("list").description("List assets").option("-C, --cwd <dir>","Project directory").option("--parent-id <id>","Filter by parent folder").option("--search <query>","Search across name, alt text, caption, and AI-generated alt / caption (case-insensitive)").option("--type <type>","Filter by entry type (file|folder)").option("--image","Filter to image MIME types (shortcut for --mime-prefix image/)").option("--video","Filter to video MIME types (shortcut for --mime-prefix video/)").option("--audio","Filter to audio MIME types (shortcut for --mime-prefix audio/)").option("--mime-prefix <prefix>",'Filter by MIME type prefix (e.g. "image/png")').option("--sort-by <field>","Sort field").option("--limit <n>","Max results").option("--offset <n>","Offset").action(assetsListCommand);assets2.command("upload").description("Upload a file to the media library").argument("<file>","Path to the file to upload").option("-C, --cwd <dir>","Project directory").option("--name <name>","Asset display name").option("--parent-id <id>","Target folder ID").option("--folder-path <path>","Target folder path, creating missing folders").action(assetsUploadCommand);var modelsCmd=new Command("models").description("Browse available media generation models");program.addCommand(modelsCmd,{hidden:!0});modelsCmd.command("list").description("List Fal models enabled for this project").option("-C, --cwd <dir>","Project directory").option("--modality <m>","Filter by modality (image | video | audio)").option("--search <query>","Search names and descriptions").option("--category <category>","Filter by Fal media category").option("--tag <t>","Filter by tag (repeatable; AND semantics \u2014 model must have every tag)",(value,previous)=>[...previous,value],[]).option("--extended","Per-model card: alias, provider, tags, price, best-for, flags").option("--json","Machine-readable JSON output").action(modelsListCommand);modelsCmd.command("show").description("Show a Fal model and its available flags").argument("<key>","Namespaced model id from `fimo models list`").option("-C, --cwd <dir>","Project directory").option("--json","Machine-readable JSON output (includes the per-model flag list)").action(modelsShowCommand);assets2.command("create-folder").description("Create a folder in the media library").argument("<name>","Folder name").option("-C, --cwd <dir>","Project directory").option("--parent-id <id>","Parent folder ID").action(assetsCreateFolderCommand);assets2.command("move").description("Move an asset to a different folder").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").requiredOption("--parent-id <id>",'Target folder ID (use "null" for root)').action(assetsMoveCommand);assets2.command("delete").description("Delete an asset").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").action(assetsDeleteCommand);assets2.command("open").description("Fetch asset metadata; optionally download locally or open in default viewer").argument("<id>","Asset ID").option("-C, --cwd <dir>","Project directory").option("--download","Download the asset bytes to a local file and print the path").option("--browser","Open the asset URL in the OS default viewer (open / xdg-open / start)").option("--path <path>","Override download destination (default: <tmpdir>/fimo-assets/<id>.<ext>). Implies --download.").action((id,options,cmd)=>(options.path&&!options.download&&(options.download=!0),assetsOpenCommand(id,options,cmd)));var forms2=program.command("forms").description("Manage forms");forms2.command("list").description("List all forms").option("-C, --cwd <dir>","Project directory").action(formsListCommand);forms2.command("get").description("Get a form by ID").argument("<id>","Form ID").option("-C, --cwd <dir>","Project directory").action(formsGetCommand);forms2.command("push").description("Push form JSON files to the API (create or update, patches id back)").argument("[formName]","Form name to push (omit to push all)").option("-C, --cwd <dir>","Project directory").action(formsPushCommand);forms2.command("delete").description("Delete a form").argument("<id>","Form ID").option("-C, --cwd <dir>","Project directory").action(formsDeleteCommand);var supportedAgentsHelp=`
1287
1287
  Supported agents:
1288
1288
  Universal (always covered via AGENTS.md, no per-agent file needed):
1289
1289
  Codex, OpenCode, Aider, and other AGENTS.md-native tools
@@ -1303,7 +1303,7 @@ Examples:
1303
1303
  fimo skills Browse available AI agent skills
1304
1304
 
1305
1305
  Run \`fimo <command> --help\` for command-specific help.
1306
- `);process.argv[2]!=="git-credential"&&(await refreshSkillsIfVersionChanged().catch(()=>{}),await runVersionCheck().catch(()=>{}));process.argv.slice(2).length===0&&process.stdout.write(`
1306
+ `);process.argv[2]!=="git-credential"&&await refreshSkillsIfVersionChanged().catch(()=>{});process.argv.slice(2).length===0&&process.stdout.write(`
1307
1307
  Get started:
1308
1308
  fimo init Sign in, create or link a project, install deps + skills
1309
1309
  `);program.parseAsync(process.argv).catch(err=>{let command=process.argv[2]??"fimo";if(isCliAuthError(err)){if(currentMode().format==="json")if(err instanceof PermissionDeniedError)ui.error({command,code:"PERMISSION_DENIED",message:err.message,hint:err.required.length?`Your role lacks \`${err.required.join(", ")}\` on this project \u2014 ask a project admin for access.`:"Your role does not allow this action on this project \u2014 ask a project admin for access."});else{let isExpired=err instanceof UnauthorizedError;ui.error({command,code:isExpired?"SESSION_EXPIRED":"NOT_AUTHENTICATED",message:err.message,hint:isExpired?"Run `fimo login` to refresh.":"Run `fimo login` to sign in."})}else renderCliAuthError(err);process.exit(1)}err instanceof NotInProjectError&&(ui.error({command,code:"NOT_IN_PROJECT",message:err.message,hint:"Run `fimo init <dir>` or `cd` into a directory that contains `.fimo.settings.json`."}),process.exit(1)),err instanceof GitBranchUndetectedError&&(ui.error({command,code:"GIT_BRANCH_UNDETECTED",message:err.message,hint:"Pass `--env <name>` explicitly, or check out a branch (e.g. `git checkout main`)."}),process.exit(1)),err instanceof InvalidEnvOverrideError&&(ui.error({command,code:"INVALID_ENV_OVERRIDE",message:err.message,hint:"Env names must match /^[a-zA-Z0-9._/-]+$/ \u2014 e.g. `main`, `feat/seo`, `release/v1`."}),process.exit(1)),err instanceof EnvNotFoundError&&(ui.error({command,code:"ENV_NOT_FOUND",message:err.message,hint:"Run `fimo branch` to list envs, or `fimo branch <name>` to create the one you want."}),process.exit(1)),ui.error({command,code:"COMMAND_FAILED",message:err instanceof Error?err.message:String(err)}),process.exit(1)});