fimo 0.7.0-staging.3 → 0.7.0
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
|
@@ -26,18 +26,18 @@ ${itemIndentStr}`)}boxWrap(str,width){if(width<this.minWidthToWrap)return str;le
|
|
|
26
26
|
- too many long flags`):new Error(`${baseError}
|
|
27
27
|
- unrecognised flag format`)}if(shortFlag===void 0&&longFlag===void 0)throw new Error(`option creation failed due to no flags found in '${flags}'.`);return{shortFlag,longFlag}}__name(splitOptionFlags,"splitOptionFlags");exports2.Option=Option2;exports2.DualOptions=DualOptions}});var require_suggestSimilar=__commonJS({"../../node_modules/.pnpm/commander@13.1.0/node_modules/commander/lib/suggestSimilar.js"(exports2){function editDistance(a,b){if(Math.abs(a.length-b.length)>3)return Math.max(a.length,b.length);let d3=[];for(let i=0;i<=a.length;i++)d3[i]=[i];for(let j2=0;j2<=b.length;j2++)d3[0][j2]=j2;for(let j2=1;j2<=b.length;j2++)for(let i=1;i<=a.length;i++){let cost=1;a[i-1]===b[j2-1]?cost=0:cost=1,d3[i][j2]=Math.min(d3[i-1][j2]+1,d3[i][j2-1]+1,d3[i-1][j2-1]+cost),i>1&&j2>1&&a[i-1]===b[j2-2]&&a[i-2]===b[j2-1]&&(d3[i][j2]=Math.min(d3[i][j2],d3[i-2][j2-2]+1))}return d3[a.length][b.length]}__name(editDistance,"editDistance");function suggestSimilar(word,candidates){if(!candidates||candidates.length===0)return"";candidates=Array.from(new Set(candidates));let searchingOptions=word.startsWith("--");searchingOptions&&(word=word.slice(2),candidates=candidates.map(candidate=>candidate.slice(2)));let similar=[],bestDistance=3,minSimilarity=.4;return candidates.forEach(candidate=>{if(candidate.length<=1)return;let distance=editDistance(word,candidate),length=Math.max(word.length,candidate.length);(length-distance)/length>minSimilarity&&(distance<bestDistance?(bestDistance=distance,similar=[candidate]):distance===bestDistance&&similar.push(candidate))}),similar.sort((a,b)=>a.localeCompare(b)),searchingOptions&&(similar=similar.map(candidate=>`--${candidate}`)),similar.length>1?`
|
|
28
28
|
(Did you mean one of ${similar.join(", ")}?)`:similar.length===1?`
|
|
29
|
-
(Did you mean ${similar[0]}?)`:""}__name(suggestSimilar,"suggestSimilar");exports2.suggestSimilar=suggestSimilar}});var require_command=__commonJS({"../../node_modules/.pnpm/commander@13.1.0/node_modules/commander/lib/command.js"(exports2){var EventEmitter=__require("node:events").EventEmitter,childProcess2=__require("node:child_process"),
|
|
29
|
+
(Did you mean ${similar[0]}?)`:""}__name(suggestSimilar,"suggestSimilar");exports2.suggestSimilar=suggestSimilar}});var require_command=__commonJS({"../../node_modules/.pnpm/commander@13.1.0/node_modules/commander/lib/command.js"(exports2){var EventEmitter=__require("node:events").EventEmitter,childProcess2=__require("node:child_process"),path49=__require("node:path"),fs44=__require("node:fs"),process8=__require("node:process"),{Argument:Argument2,humanReadableArgName}=require_argument(),{CommanderError:CommanderError2}=require_error(),{Help:Help2,stripColor}=require_help(),{Option:Option2,DualOptions}=require_option(),{suggestSimilar}=require_suggestSimilar(),Command2=class _Command extends EventEmitter{static{__name(this,"Command")}constructor(name){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=name||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:__name(str=>process8.stdout.write(str),"writeOut"),writeErr:__name(str=>process8.stderr.write(str),"writeErr"),outputError:__name((str,write)=>write(str),"outputError"),getOutHelpWidth:__name(()=>process8.stdout.isTTY?process8.stdout.columns:void 0,"getOutHelpWidth"),getErrHelpWidth:__name(()=>process8.stderr.isTTY?process8.stderr.columns:void 0,"getErrHelpWidth"),getOutHasColors:__name(()=>useColor()??(process8.stdout.isTTY&&process8.stdout.hasColors?.()),"getOutHasColors"),getErrHasColors:__name(()=>useColor()??(process8.stderr.isTTY&&process8.stderr.hasColors?.()),"getErrHasColors"),stripColor:__name(str=>stripColor(str),"stripColor")},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(sourceCommand){return this._outputConfiguration=sourceCommand._outputConfiguration,this._helpOption=sourceCommand._helpOption,this._helpCommand=sourceCommand._helpCommand,this._helpConfiguration=sourceCommand._helpConfiguration,this._exitCallback=sourceCommand._exitCallback,this._storeOptionsAsProperties=sourceCommand._storeOptionsAsProperties,this._combineFlagAndOptionalValue=sourceCommand._combineFlagAndOptionalValue,this._allowExcessArguments=sourceCommand._allowExcessArguments,this._enablePositionalOptions=sourceCommand._enablePositionalOptions,this._showHelpAfterError=sourceCommand._showHelpAfterError,this._showSuggestionAfterError=sourceCommand._showSuggestionAfterError,this}_getCommandAndAncestors(){let result=[];for(let command=this;command;command=command.parent)result.push(command);return result}command(nameAndArgs,actionOptsOrExecDesc,execOpts){let desc=actionOptsOrExecDesc,opts=execOpts;typeof desc=="object"&&desc!==null&&(opts=desc,desc=null),opts=opts||{};let[,name,args]=nameAndArgs.match(/([^ ]+) *(.*)/),cmd=this.createCommand(name);return desc&&(cmd.description(desc),cmd._executableHandler=!0),opts.isDefault&&(this._defaultCommandName=cmd._name),cmd._hidden=!!(opts.noHelp||opts.hidden),cmd._executableFile=opts.executableFile||null,args&&cmd.arguments(args),this._registerCommand(cmd),cmd.parent=this,cmd.copyInheritedSettings(this),desc?this:cmd}createCommand(name){return new _Command(name)}createHelp(){return Object.assign(new Help2,this.configureHelp())}configureHelp(configuration){return configuration===void 0?this._helpConfiguration:(this._helpConfiguration=configuration,this)}configureOutput(configuration){return configuration===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,configuration),this)}showHelpAfterError(displayHelp=!0){return typeof displayHelp!="string"&&(displayHelp=!!displayHelp),this._showHelpAfterError=displayHelp,this}showSuggestionAfterError(displaySuggestion=!0){return this._showSuggestionAfterError=!!displaySuggestion,this}addCommand(cmd,opts){if(!cmd._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
30
30
|
- specify the name in Command constructor or using .name()`);return opts=opts||{},opts.isDefault&&(this._defaultCommandName=cmd._name),(opts.noHelp||opts.hidden)&&(cmd._hidden=!0),this._registerCommand(cmd),cmd.parent=this,cmd._checkForBrokenPassThrough(),this}createArgument(name,description){return new Argument2(name,description)}argument(name,description,fn,defaultValue){let argument=this.createArgument(name,description);return typeof fn=="function"?argument.default(defaultValue).argParser(fn):argument.default(fn),this.addArgument(argument),this}arguments(names){return names.trim().split(/ +/).forEach(detail=>{this.argument(detail)}),this}addArgument(argument){let previousArgument=this.registeredArguments.slice(-1)[0];if(previousArgument&&previousArgument.variadic)throw new Error(`only the last argument can be variadic '${previousArgument.name()}'`);if(argument.required&&argument.defaultValue!==void 0&&argument.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${argument.name()}'`);return this.registeredArguments.push(argument),this}helpCommand(enableOrNameAndArgs,description){if(typeof enableOrNameAndArgs=="boolean")return this._addImplicitHelpCommand=enableOrNameAndArgs,this;enableOrNameAndArgs=enableOrNameAndArgs??"help [command]";let[,helpName,helpArgs]=enableOrNameAndArgs.match(/([^ ]+) *(.*)/),helpDescription=description??"display help for command",helpCommand=this.createCommand(helpName);return helpCommand.helpOption(!1),helpArgs&&helpCommand.arguments(helpArgs),helpDescription&&helpCommand.description(helpDescription),this._addImplicitHelpCommand=!0,this._helpCommand=helpCommand,this}addHelpCommand(helpCommand,deprecatedDescription){return typeof helpCommand!="object"?(this.helpCommand(helpCommand,deprecatedDescription),this):(this._addImplicitHelpCommand=!0,this._helpCommand=helpCommand,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(event,listener){let allowedValues=["preSubcommand","preAction","postAction"];if(!allowedValues.includes(event))throw new Error(`Unexpected value for event passed to hook : '${event}'.
|
|
31
31
|
Expecting one of '${allowedValues.join("', '")}'`);return this._lifeCycleHooks[event]?this._lifeCycleHooks[event].push(listener):this._lifeCycleHooks[event]=[listener],this}exitOverride(fn){return fn?this._exitCallback=fn:this._exitCallback=err=>{if(err.code!=="commander.executeSubCommandAsync")throw err},this}_exit(exitCode,code2,message){this._exitCallback&&this._exitCallback(new CommanderError2(exitCode,code2,message)),process8.exit(exitCode)}action(fn){let listener=__name(args=>{let expectedArgsCount=this.registeredArguments.length,actionArgs=args.slice(0,expectedArgsCount);return this._storeOptionsAsProperties?actionArgs[expectedArgsCount]=this:actionArgs[expectedArgsCount]=this.opts(),actionArgs.push(this),fn.apply(this,actionArgs)},"listener");return this._actionHandler=listener,this}createOption(flags,description){return new Option2(flags,description)}_callParseArg(target,value,previous,invalidArgumentMessage){try{return target.parseArg(value,previous)}catch(err){if(err.code==="commander.invalidArgument"){let message=`${invalidArgumentMessage} ${err.message}`;this.error(message,{exitCode:err.exitCode,code:err.code})}throw err}}_registerOption(option){let matchingOption=option.short&&this._findOption(option.short)||option.long&&this._findOption(option.long);if(matchingOption){let matchingFlag=option.long&&this._findOption(option.long)?option.long:option.short;throw new Error(`Cannot add option '${option.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'
|
|
32
32
|
- already used by option '${matchingOption.flags}'`)}this.options.push(option)}_registerCommand(command){let knownBy=__name(cmd=>[cmd.name()].concat(cmd.aliases()),"knownBy"),alreadyUsed=knownBy(command).find(name=>this._findCommand(name));if(alreadyUsed){let existingCmd=knownBy(this._findCommand(alreadyUsed)).join("|"),newCmd=knownBy(command).join("|");throw new Error(`cannot add command '${newCmd}' as already have command '${existingCmd}'`)}this.commands.push(command)}addOption(option){this._registerOption(option);let oname=option.name(),name=option.attributeName();if(option.negate){let positiveLongFlag=option.long.replace(/^--no-/,"--");this._findOption(positiveLongFlag)||this.setOptionValueWithSource(name,option.defaultValue===void 0?!0:option.defaultValue,"default")}else option.defaultValue!==void 0&&this.setOptionValueWithSource(name,option.defaultValue,"default");let handleOptionValue=__name((val2,invalidValueMessage,valueSource)=>{val2==null&&option.presetArg!==void 0&&(val2=option.presetArg);let oldValue=this.getOptionValue(name);val2!==null&&option.parseArg?val2=this._callParseArg(option,val2,oldValue,invalidValueMessage):val2!==null&&option.variadic&&(val2=option._concatValue(val2,oldValue)),val2==null&&(option.negate?val2=!1:option.isBoolean()||option.optional?val2=!0:val2=""),this.setOptionValueWithSource(name,val2,valueSource)},"handleOptionValue");return this.on("option:"+oname,val2=>{let invalidValueMessage=`error: option '${option.flags}' argument '${val2}' is invalid.`;handleOptionValue(val2,invalidValueMessage,"cli")}),option.envVar&&this.on("optionEnv:"+oname,val2=>{let invalidValueMessage=`error: option '${option.flags}' value '${val2}' from env '${option.envVar}' is invalid.`;handleOptionValue(val2,invalidValueMessage,"env")}),this}_optionEx(config,flags,description,fn,defaultValue){if(typeof flags=="object"&&flags instanceof Option2)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let option=this.createOption(flags,description);if(option.makeOptionMandatory(!!config.mandatory),typeof fn=="function")option.default(defaultValue).argParser(fn);else if(fn instanceof RegExp){let regex=fn;fn=__name((val2,def)=>{let m=regex.exec(val2);return m?m[0]:def},"fn"),option.default(defaultValue).argParser(fn)}else option.default(fn);return this.addOption(option)}option(flags,description,parseArg,defaultValue){return this._optionEx({},flags,description,parseArg,defaultValue)}requiredOption(flags,description,parseArg,defaultValue){return this._optionEx({mandatory:!0},flags,description,parseArg,defaultValue)}combineFlagAndOptionalValue(combine=!0){return this._combineFlagAndOptionalValue=!!combine,this}allowUnknownOption(allowUnknown=!0){return this._allowUnknownOption=!!allowUnknown,this}allowExcessArguments(allowExcess=!0){return this._allowExcessArguments=!!allowExcess,this}enablePositionalOptions(positional=!0){return this._enablePositionalOptions=!!positional,this}passThroughOptions(passThrough=!0){return this._passThroughOptions=!!passThrough,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(storeAsProperties=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!storeAsProperties,this}getOptionValue(key){return this._storeOptionsAsProperties?this[key]:this._optionValues[key]}setOptionValue(key,value){return this.setOptionValueWithSource(key,value,void 0)}setOptionValueWithSource(key,value,source){return this._storeOptionsAsProperties?this[key]=value:this._optionValues[key]=value,this._optionValueSources[key]=source,this}getOptionValueSource(key){return this._optionValueSources[key]}getOptionValueSourceWithGlobals(key){let source;return this._getCommandAndAncestors().forEach(cmd=>{cmd.getOptionValueSource(key)!==void 0&&(source=cmd.getOptionValueSource(key))}),source}_prepareUserArgs(argv,parseOptions){if(argv!==void 0&&!Array.isArray(argv))throw new Error("first parameter to parse must be array or undefined");if(parseOptions=parseOptions||{},argv===void 0&&parseOptions.from===void 0){process8.versions?.electron&&(parseOptions.from="electron");let execArgv=process8.execArgv??[];(execArgv.includes("-e")||execArgv.includes("--eval")||execArgv.includes("-p")||execArgv.includes("--print"))&&(parseOptions.from="eval")}argv===void 0&&(argv=process8.argv),this.rawArgs=argv.slice();let userArgs;switch(parseOptions.from){case void 0:case"node":this._scriptPath=argv[1],userArgs=argv.slice(2);break;case"electron":process8.defaultApp?(this._scriptPath=argv[1],userArgs=argv.slice(2)):userArgs=argv.slice(1);break;case"user":userArgs=argv.slice(0);break;case"eval":userArgs=argv.slice(1);break;default:throw new Error(`unexpected parse option { from: '${parseOptions.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",userArgs}parse(argv,parseOptions){this._prepareForParse();let userArgs=this._prepareUserArgs(argv,parseOptions);return this._parseCommand([],userArgs),this}async parseAsync(argv,parseOptions){this._prepareForParse();let userArgs=this._prepareUserArgs(argv,parseOptions);return await this._parseCommand([],userArgs),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
33
33
|
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(executableFile,executableDir,subcommandName){if(fs44.existsSync(executableFile))return;let executableDirMessage=executableDir?`searched for local subcommand relative to directory '${executableDir}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",executableMissing=`'${executableFile}' does not exist
|
|
34
34
|
- if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
35
35
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
36
|
-
- ${executableDirMessage}`;throw new Error(executableMissing)}_executeSubCommand(subcommand,args){args=args.slice();let launchWithNode=!1,sourceExt=[".js",".ts",".tsx",".mjs",".cjs"];function findFile(baseDir,baseName){let localBin=path48.resolve(baseDir,baseName);if(fs44.existsSync(localBin))return localBin;if(sourceExt.includes(path48.extname(baseName)))return;let foundExt=sourceExt.find(ext=>fs44.existsSync(`${localBin}${ext}`));if(foundExt)return`${localBin}${foundExt}`}__name(findFile,"findFile"),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let executableFile=subcommand._executableFile||`${this._name}-${subcommand._name}`,executableDir=this._executableDir||"";if(this._scriptPath){let resolvedScriptPath;try{resolvedScriptPath=fs44.realpathSync(this._scriptPath)}catch{resolvedScriptPath=this._scriptPath}executableDir=path48.resolve(path48.dirname(resolvedScriptPath),executableDir)}if(executableDir){let localFile=findFile(executableDir,executableFile);if(!localFile&&!subcommand._executableFile&&this._scriptPath){let legacyName=path48.basename(this._scriptPath,path48.extname(this._scriptPath));legacyName!==this._name&&(localFile=findFile(executableDir,`${legacyName}-${subcommand._name}`))}executableFile=localFile||executableFile}launchWithNode=sourceExt.includes(path48.extname(executableFile));let proc;process8.platform!=="win32"?launchWithNode?(args.unshift(executableFile),args=incrementNodeInspectorPort(process8.execArgv).concat(args),proc=childProcess2.spawn(process8.argv[0],args,{stdio:"inherit"})):proc=childProcess2.spawn(executableFile,args,{stdio:"inherit"}):(this._checkForMissingExecutable(executableFile,executableDir,subcommand._name),args.unshift(executableFile),args=incrementNodeInspectorPort(process8.execArgv).concat(args),proc=childProcess2.spawn(process8.execPath,args,{stdio:"inherit"})),proc.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(signal=>{process8.on(signal,()=>{proc.killed===!1&&proc.exitCode===null&&proc.kill(signal)})});let exitCallback=this._exitCallback;proc.on("close",code2=>{code2=code2??1,exitCallback?exitCallback(new CommanderError2(code2,"commander.executeSubCommandAsync","(close)")):process8.exit(code2)}),proc.on("error",err=>{if(err.code==="ENOENT")this._checkForMissingExecutable(executableFile,executableDir,subcommand._name);else if(err.code==="EACCES")throw new Error(`'${executableFile}' not executable`);if(!exitCallback)process8.exit(1);else{let wrappedError=new CommanderError2(1,"commander.executeSubCommandAsync","(error)");wrappedError.nestedError=err,exitCallback(wrappedError)}}),this.runningCommand=proc}_dispatchSubcommand(commandName2,operands,unknown){let subCommand=this._findCommand(commandName2);subCommand||this.help({error:!0}),subCommand._prepareForParse();let promiseChain;return promiseChain=this._chainOrCallSubCommandHook(promiseChain,subCommand,"preSubcommand"),promiseChain=this._chainOrCall(promiseChain,()=>{if(subCommand._executableHandler)this._executeSubCommand(subCommand,operands.concat(unknown));else return subCommand._parseCommand(operands,unknown)}),promiseChain}_dispatchHelpCommand(subcommandName){subcommandName||this.help();let subCommand=this._findCommand(subcommandName);return subCommand&&!subCommand._executableHandler&&subCommand.help(),this._dispatchSubcommand(subcommandName,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((arg,i)=>{arg.required&&this.args[i]==null&&this.missingArgument(arg.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let myParseArg=__name((argument,value,previous)=>{let parsedValue=value;if(value!==null&&argument.parseArg){let invalidValueMessage=`error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;parsedValue=this._callParseArg(argument,value,previous,invalidValueMessage)}return parsedValue},"myParseArg");this._checkNumberOfArguments();let processedArgs=[];this.registeredArguments.forEach((declaredArg,index2)=>{let value=declaredArg.defaultValue;declaredArg.variadic?index2<this.args.length?(value=this.args.slice(index2),declaredArg.parseArg&&(value=value.reduce((processed,v)=>myParseArg(declaredArg,v,processed),declaredArg.defaultValue))):value===void 0&&(value=[]):index2<this.args.length&&(value=this.args[index2],declaredArg.parseArg&&(value=myParseArg(declaredArg,value,declaredArg.defaultValue))),processedArgs[index2]=value}),this.processedArgs=processedArgs}_chainOrCall(promise,fn){return promise&&promise.then&&typeof promise.then=="function"?promise.then(()=>fn()):fn()}_chainOrCallHooks(promise,event){let result=promise,hooks=[];return this._getCommandAndAncestors().reverse().filter(cmd=>cmd._lifeCycleHooks[event]!==void 0).forEach(hookedCommand=>{hookedCommand._lifeCycleHooks[event].forEach(callback=>{hooks.push({hookedCommand,callback})})}),event==="postAction"&&hooks.reverse(),hooks.forEach(hookDetail=>{result=this._chainOrCall(result,()=>hookDetail.callback(hookDetail.hookedCommand,this))}),result}_chainOrCallSubCommandHook(promise,subCommand,event){let result=promise;return this._lifeCycleHooks[event]!==void 0&&this._lifeCycleHooks[event].forEach(hook=>{result=this._chainOrCall(result,()=>hook(this,subCommand))}),result}_parseCommand(operands,unknown){let parsed=this.parseOptions(unknown);if(this._parseOptionsEnv(),this._parseOptionsImplied(),operands=operands.concat(parsed.operands),unknown=parsed.unknown,this.args=operands.concat(unknown),operands&&this._findCommand(operands[0]))return this._dispatchSubcommand(operands[0],operands.slice(1),unknown);if(this._getHelpCommand()&&operands[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(operands[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(unknown),this._dispatchSubcommand(this._defaultCommandName,operands,unknown);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(parsed.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let checkForUnknownOptions=__name(()=>{parsed.unknown.length>0&&this.unknownOption(parsed.unknown[0])},"checkForUnknownOptions"),commandEvent=`command:${this.name()}`;if(this._actionHandler){checkForUnknownOptions(),this._processArguments();let promiseChain;return promiseChain=this._chainOrCallHooks(promiseChain,"preAction"),promiseChain=this._chainOrCall(promiseChain,()=>this._actionHandler(this.processedArgs)),this.parent&&(promiseChain=this._chainOrCall(promiseChain,()=>{this.parent.emit(commandEvent,operands,unknown)})),promiseChain=this._chainOrCallHooks(promiseChain,"postAction"),promiseChain}if(this.parent&&this.parent.listenerCount(commandEvent))checkForUnknownOptions(),this._processArguments(),this.parent.emit(commandEvent,operands,unknown);else if(operands.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",operands,unknown);this.listenerCount("command:*")?this.emit("command:*",operands,unknown):this.commands.length?this.unknownCommand():(checkForUnknownOptions(),this._processArguments())}else this.commands.length?(checkForUnknownOptions(),this.help({error:!0})):(checkForUnknownOptions(),this._processArguments())}_findCommand(name){if(name)return this.commands.find(cmd=>cmd._name===name||cmd._aliases.includes(name))}_findOption(arg){return this.options.find(option=>option.is(arg))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(cmd=>{cmd.options.forEach(anOption=>{anOption.mandatory&&cmd.getOptionValue(anOption.attributeName())===void 0&&cmd.missingMandatoryOptionValue(anOption)})})}_checkForConflictingLocalOptions(){let definedNonDefaultOptions=this.options.filter(option=>{let optionKey=option.attributeName();return this.getOptionValue(optionKey)===void 0?!1:this.getOptionValueSource(optionKey)!=="default"});definedNonDefaultOptions.filter(option=>option.conflictsWith.length>0).forEach(option=>{let conflictingAndDefined=definedNonDefaultOptions.find(defined=>option.conflictsWith.includes(defined.attributeName()));conflictingAndDefined&&this._conflictingOption(option,conflictingAndDefined)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(cmd=>{cmd._checkForConflictingLocalOptions()})}parseOptions(argv){let operands=[],unknown=[],dest=operands,args=argv.slice();function maybeOption(arg){return arg.length>1&&arg[0]==="-"}__name(maybeOption,"maybeOption");let activeVariadicOption=null;for(;args.length;){let arg=args.shift();if(arg==="--"){dest===unknown&&dest.push(arg),dest.push(...args);break}if(activeVariadicOption&&!maybeOption(arg)){this.emit(`option:${activeVariadicOption.name()}`,arg);continue}if(activeVariadicOption=null,maybeOption(arg)){let option=this._findOption(arg);if(option){if(option.required){let value=args.shift();value===void 0&&this.optionMissingArgument(option),this.emit(`option:${option.name()}`,value)}else if(option.optional){let value=null;args.length>0&&!maybeOption(args[0])&&(value=args.shift()),this.emit(`option:${option.name()}`,value)}else this.emit(`option:${option.name()}`);activeVariadicOption=option.variadic?option:null;continue}}if(arg.length>2&&arg[0]==="-"&&arg[1]!=="-"){let option=this._findOption(`-${arg[1]}`);if(option){option.required||option.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${option.name()}`,arg.slice(2)):(this.emit(`option:${option.name()}`),args.unshift(`-${arg.slice(2)}`));continue}}if(/^--[^=]+=/.test(arg)){let index2=arg.indexOf("="),option=this._findOption(arg.slice(0,index2));if(option&&(option.required||option.optional)){this.emit(`option:${option.name()}`,arg.slice(index2+1));continue}}if(maybeOption(arg)&&(dest=unknown),(this._enablePositionalOptions||this._passThroughOptions)&&operands.length===0&&unknown.length===0){if(this._findCommand(arg)){operands.push(arg),args.length>0&&unknown.push(...args);break}else if(this._getHelpCommand()&&arg===this._getHelpCommand().name()){operands.push(arg),args.length>0&&operands.push(...args);break}else if(this._defaultCommandName){unknown.push(arg),args.length>0&&unknown.push(...args);break}}if(this._passThroughOptions){dest.push(arg),args.length>0&&dest.push(...args);break}dest.push(arg)}return{operands,unknown}}opts(){if(this._storeOptionsAsProperties){let result={},len=this.options.length;for(let i=0;i<len;i++){let key=this.options[i].attributeName();result[key]=key===this._versionOptionName?this._version:this[key]}return result}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((combinedOptions,cmd)=>Object.assign(combinedOptions,cmd.opts()),{})}error(message,errorOptions){this._outputConfiguration.outputError(`${message}
|
|
36
|
+
- ${executableDirMessage}`;throw new Error(executableMissing)}_executeSubCommand(subcommand,args){args=args.slice();let launchWithNode=!1,sourceExt=[".js",".ts",".tsx",".mjs",".cjs"];function findFile(baseDir,baseName){let localBin=path49.resolve(baseDir,baseName);if(fs44.existsSync(localBin))return localBin;if(sourceExt.includes(path49.extname(baseName)))return;let foundExt=sourceExt.find(ext=>fs44.existsSync(`${localBin}${ext}`));if(foundExt)return`${localBin}${foundExt}`}__name(findFile,"findFile"),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let executableFile=subcommand._executableFile||`${this._name}-${subcommand._name}`,executableDir=this._executableDir||"";if(this._scriptPath){let resolvedScriptPath;try{resolvedScriptPath=fs44.realpathSync(this._scriptPath)}catch{resolvedScriptPath=this._scriptPath}executableDir=path49.resolve(path49.dirname(resolvedScriptPath),executableDir)}if(executableDir){let localFile=findFile(executableDir,executableFile);if(!localFile&&!subcommand._executableFile&&this._scriptPath){let legacyName=path49.basename(this._scriptPath,path49.extname(this._scriptPath));legacyName!==this._name&&(localFile=findFile(executableDir,`${legacyName}-${subcommand._name}`))}executableFile=localFile||executableFile}launchWithNode=sourceExt.includes(path49.extname(executableFile));let proc;process8.platform!=="win32"?launchWithNode?(args.unshift(executableFile),args=incrementNodeInspectorPort(process8.execArgv).concat(args),proc=childProcess2.spawn(process8.argv[0],args,{stdio:"inherit"})):proc=childProcess2.spawn(executableFile,args,{stdio:"inherit"}):(this._checkForMissingExecutable(executableFile,executableDir,subcommand._name),args.unshift(executableFile),args=incrementNodeInspectorPort(process8.execArgv).concat(args),proc=childProcess2.spawn(process8.execPath,args,{stdio:"inherit"})),proc.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(signal=>{process8.on(signal,()=>{proc.killed===!1&&proc.exitCode===null&&proc.kill(signal)})});let exitCallback=this._exitCallback;proc.on("close",code2=>{code2=code2??1,exitCallback?exitCallback(new CommanderError2(code2,"commander.executeSubCommandAsync","(close)")):process8.exit(code2)}),proc.on("error",err=>{if(err.code==="ENOENT")this._checkForMissingExecutable(executableFile,executableDir,subcommand._name);else if(err.code==="EACCES")throw new Error(`'${executableFile}' not executable`);if(!exitCallback)process8.exit(1);else{let wrappedError=new CommanderError2(1,"commander.executeSubCommandAsync","(error)");wrappedError.nestedError=err,exitCallback(wrappedError)}}),this.runningCommand=proc}_dispatchSubcommand(commandName2,operands,unknown){let subCommand=this._findCommand(commandName2);subCommand||this.help({error:!0}),subCommand._prepareForParse();let promiseChain;return promiseChain=this._chainOrCallSubCommandHook(promiseChain,subCommand,"preSubcommand"),promiseChain=this._chainOrCall(promiseChain,()=>{if(subCommand._executableHandler)this._executeSubCommand(subCommand,operands.concat(unknown));else return subCommand._parseCommand(operands,unknown)}),promiseChain}_dispatchHelpCommand(subcommandName){subcommandName||this.help();let subCommand=this._findCommand(subcommandName);return subCommand&&!subCommand._executableHandler&&subCommand.help(),this._dispatchSubcommand(subcommandName,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((arg,i)=>{arg.required&&this.args[i]==null&&this.missingArgument(arg.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let myParseArg=__name((argument,value,previous)=>{let parsedValue=value;if(value!==null&&argument.parseArg){let invalidValueMessage=`error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;parsedValue=this._callParseArg(argument,value,previous,invalidValueMessage)}return parsedValue},"myParseArg");this._checkNumberOfArguments();let processedArgs=[];this.registeredArguments.forEach((declaredArg,index2)=>{let value=declaredArg.defaultValue;declaredArg.variadic?index2<this.args.length?(value=this.args.slice(index2),declaredArg.parseArg&&(value=value.reduce((processed,v)=>myParseArg(declaredArg,v,processed),declaredArg.defaultValue))):value===void 0&&(value=[]):index2<this.args.length&&(value=this.args[index2],declaredArg.parseArg&&(value=myParseArg(declaredArg,value,declaredArg.defaultValue))),processedArgs[index2]=value}),this.processedArgs=processedArgs}_chainOrCall(promise,fn){return promise&&promise.then&&typeof promise.then=="function"?promise.then(()=>fn()):fn()}_chainOrCallHooks(promise,event){let result=promise,hooks=[];return this._getCommandAndAncestors().reverse().filter(cmd=>cmd._lifeCycleHooks[event]!==void 0).forEach(hookedCommand=>{hookedCommand._lifeCycleHooks[event].forEach(callback=>{hooks.push({hookedCommand,callback})})}),event==="postAction"&&hooks.reverse(),hooks.forEach(hookDetail=>{result=this._chainOrCall(result,()=>hookDetail.callback(hookDetail.hookedCommand,this))}),result}_chainOrCallSubCommandHook(promise,subCommand,event){let result=promise;return this._lifeCycleHooks[event]!==void 0&&this._lifeCycleHooks[event].forEach(hook=>{result=this._chainOrCall(result,()=>hook(this,subCommand))}),result}_parseCommand(operands,unknown){let parsed=this.parseOptions(unknown);if(this._parseOptionsEnv(),this._parseOptionsImplied(),operands=operands.concat(parsed.operands),unknown=parsed.unknown,this.args=operands.concat(unknown),operands&&this._findCommand(operands[0]))return this._dispatchSubcommand(operands[0],operands.slice(1),unknown);if(this._getHelpCommand()&&operands[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(operands[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(unknown),this._dispatchSubcommand(this._defaultCommandName,operands,unknown);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(parsed.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let checkForUnknownOptions=__name(()=>{parsed.unknown.length>0&&this.unknownOption(parsed.unknown[0])},"checkForUnknownOptions"),commandEvent=`command:${this.name()}`;if(this._actionHandler){checkForUnknownOptions(),this._processArguments();let promiseChain;return promiseChain=this._chainOrCallHooks(promiseChain,"preAction"),promiseChain=this._chainOrCall(promiseChain,()=>this._actionHandler(this.processedArgs)),this.parent&&(promiseChain=this._chainOrCall(promiseChain,()=>{this.parent.emit(commandEvent,operands,unknown)})),promiseChain=this._chainOrCallHooks(promiseChain,"postAction"),promiseChain}if(this.parent&&this.parent.listenerCount(commandEvent))checkForUnknownOptions(),this._processArguments(),this.parent.emit(commandEvent,operands,unknown);else if(operands.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",operands,unknown);this.listenerCount("command:*")?this.emit("command:*",operands,unknown):this.commands.length?this.unknownCommand():(checkForUnknownOptions(),this._processArguments())}else this.commands.length?(checkForUnknownOptions(),this.help({error:!0})):(checkForUnknownOptions(),this._processArguments())}_findCommand(name){if(name)return this.commands.find(cmd=>cmd._name===name||cmd._aliases.includes(name))}_findOption(arg){return this.options.find(option=>option.is(arg))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(cmd=>{cmd.options.forEach(anOption=>{anOption.mandatory&&cmd.getOptionValue(anOption.attributeName())===void 0&&cmd.missingMandatoryOptionValue(anOption)})})}_checkForConflictingLocalOptions(){let definedNonDefaultOptions=this.options.filter(option=>{let optionKey=option.attributeName();return this.getOptionValue(optionKey)===void 0?!1:this.getOptionValueSource(optionKey)!=="default"});definedNonDefaultOptions.filter(option=>option.conflictsWith.length>0).forEach(option=>{let conflictingAndDefined=definedNonDefaultOptions.find(defined=>option.conflictsWith.includes(defined.attributeName()));conflictingAndDefined&&this._conflictingOption(option,conflictingAndDefined)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(cmd=>{cmd._checkForConflictingLocalOptions()})}parseOptions(argv){let operands=[],unknown=[],dest=operands,args=argv.slice();function maybeOption(arg){return arg.length>1&&arg[0]==="-"}__name(maybeOption,"maybeOption");let activeVariadicOption=null;for(;args.length;){let arg=args.shift();if(arg==="--"){dest===unknown&&dest.push(arg),dest.push(...args);break}if(activeVariadicOption&&!maybeOption(arg)){this.emit(`option:${activeVariadicOption.name()}`,arg);continue}if(activeVariadicOption=null,maybeOption(arg)){let option=this._findOption(arg);if(option){if(option.required){let value=args.shift();value===void 0&&this.optionMissingArgument(option),this.emit(`option:${option.name()}`,value)}else if(option.optional){let value=null;args.length>0&&!maybeOption(args[0])&&(value=args.shift()),this.emit(`option:${option.name()}`,value)}else this.emit(`option:${option.name()}`);activeVariadicOption=option.variadic?option:null;continue}}if(arg.length>2&&arg[0]==="-"&&arg[1]!=="-"){let option=this._findOption(`-${arg[1]}`);if(option){option.required||option.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${option.name()}`,arg.slice(2)):(this.emit(`option:${option.name()}`),args.unshift(`-${arg.slice(2)}`));continue}}if(/^--[^=]+=/.test(arg)){let index2=arg.indexOf("="),option=this._findOption(arg.slice(0,index2));if(option&&(option.required||option.optional)){this.emit(`option:${option.name()}`,arg.slice(index2+1));continue}}if(maybeOption(arg)&&(dest=unknown),(this._enablePositionalOptions||this._passThroughOptions)&&operands.length===0&&unknown.length===0){if(this._findCommand(arg)){operands.push(arg),args.length>0&&unknown.push(...args);break}else if(this._getHelpCommand()&&arg===this._getHelpCommand().name()){operands.push(arg),args.length>0&&operands.push(...args);break}else if(this._defaultCommandName){unknown.push(arg),args.length>0&&unknown.push(...args);break}}if(this._passThroughOptions){dest.push(arg),args.length>0&&dest.push(...args);break}dest.push(arg)}return{operands,unknown}}opts(){if(this._storeOptionsAsProperties){let result={},len=this.options.length;for(let i=0;i<len;i++){let key=this.options[i].attributeName();result[key]=key===this._versionOptionName?this._version:this[key]}return result}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((combinedOptions,cmd)=>Object.assign(combinedOptions,cmd.opts()),{})}error(message,errorOptions){this._outputConfiguration.outputError(`${message}
|
|
37
37
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
38
38
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
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
|
-
`),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=
|
|
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
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(`
|
|
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(`
|
|
@@ -104,8 +104,8 @@ ${a}${o}
|
|
|
104
104
|
`}case"submit":{let o=n?` ${t("dim",n)}`:"",c2=i?t("gray",d2):"";return`${s}${c2}${o}`}case"cancel":{let o=n?` ${t(["strikethrough","dim"],n)}`:"",c2=i?t("gray",d2):"";return`${s}${c2}${o}${n.trim()?`
|
|
105
105
|
${c2}`:""}`}default:{let o=i?`${t("cyan",d2)} `:"",c2=i?t("cyan",E2):"";return`${s}${o}${u2}
|
|
106
106
|
${c2}
|
|
107
|
-
`}}}}).prompt(),"Ot")}});var init_chunk_pbuEa_1d=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/chunk-pbuEa-1d.js"(){}});var isPlainObject,toErrorMessage,init_to_error_message_Bg0SEUet=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/to-error-message-Bg0SEUet.js"(){isPlainObject=__name(value=>value!==null&&typeof value=="object"&&!Array.isArray(value),"isPlainObject"),toErrorMessage=__name((error,fallback="Unknown error")=>error instanceof Error?error.message:fallback,"toErrorMessage")}});var require_identity=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js"(exports2){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,"isAlias"),isDocument2=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,"isDocument"),isMap=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,"isMap"),isPair=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,"isPair"),isScalar=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,"isScalar"),isSeq=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ,"isSeq");function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}__name(isCollection,"isCollection");function isNode2(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}__name(isNode2,"isNode");var hasAnchor=__name(node=>(isScalar(node)||isCollection(node))&&!!node.anchor,"hasAnchor");exports2.ALIAS=ALIAS;exports2.DOC=DOC;exports2.MAP=MAP;exports2.NODE_TYPE=NODE_TYPE;exports2.PAIR=PAIR;exports2.SCALAR=SCALAR;exports2.SEQ=SEQ;exports2.hasAnchor=hasAnchor;exports2.isAlias=isAlias;exports2.isCollection=isCollection;exports2.isDocument=isDocument2;exports2.isMap=isMap;exports2.isNode=isNode2;exports2.isPair=isPair;exports2.isScalar=isScalar;exports2.isSeq=isSeq}});var require_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.js"(exports2){"use strict";var identity2=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit2(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;function visit_(key,node,visitor,
|
|
108
|
-
`)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports2.Directives=Directives}});var require_anchors=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/anchors.js"(exports2){"use strict";var identity2=require_identity(),visit2=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}__name(anchorIsValid,"anchorIsValid");function anchorNames(root2){let anchors=new Set;return visit2.visit(root2,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}__name(anchorNames,"anchorNames");function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}__name(findNewAnchor,"findNewAnchor");function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:__name(source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},"onAnchor"),setAnchors:__name(()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity2.isScalar(ref.node)||identity2.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},"setAnchors"),sourceObjects}}__name(createNodeAnchors,"createNodeAnchors");exports2.anchorIsValid=anchorIsValid;exports2.anchorNames=anchorNames;exports2.createNodeAnchors=createNodeAnchors;exports2.findNewAnchor=findNewAnchor}});var require_applyReviver=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyReviver.js"(exports2){"use strict";function applyReviver(reviver,obj,key,val2){if(val2&&typeof val2=="object")if(Array.isArray(val2))for(let i=0,len=val2.length;i<len;++i){let v0=val2[i],v1=applyReviver(reviver,val2,String(i),v0);v1===void 0?delete val2[i]:v1!==v0&&(val2[i]=v1)}else if(val2 instanceof Map)for(let k of Array.from(val2.keys())){let v0=val2.get(k),v1=applyReviver(reviver,val2,k,v0);v1===void 0?val2.delete(k):v1!==v0&&val2.set(k,v1)}else if(val2 instanceof Set)for(let v0 of Array.from(val2)){let v1=applyReviver(reviver,val2,v0,v0);v1===void 0?val2.delete(v0):v1!==v0&&(val2.delete(v0),val2.add(v1))}else for(let[k,v0]of Object.entries(val2)){let v1=applyReviver(reviver,val2,k,v0);v1===void 0?delete val2[k]:v1!==v0&&(val2[k]=v1)}return reviver.call(obj,key,val2)}__name(applyReviver,"applyReviver");exports2.applyReviver=applyReviver}});var require_toJS=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/toJS.js"(exports2){"use strict";var identity2=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity2.hasAnchor(value))return value.toJSON(arg,ctx);let data2={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data2),ctx.onCreate=res2=>{data2.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}__name(toJS,"toJS");exports2.toJS=toJS}});var require_Node=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Node.js"(exports2){"use strict";var applyReviver=require_applyReviver(),identity2=require_identity(),toJS=require_toJS(),NodeBase=class{static{__name(this,"NodeBase")}constructor(type){Object.defineProperty(this,identity2.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity2.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports2.NodeBase=NodeBase}});var require_Alias=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Alias.js"(exports2){"use strict";var anchors=require_anchors(),visit2=require_visit(),identity2=require_identity(),Node2=require_Node(),toJS=require_toJS(),Alias=class extends Node2.NodeBase{static{__name(this,"Alias")}constructor(source){super(identity2.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){if(ctx?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit2.visit(doc,{Node:__name((_key,node)=>{(identity2.isAlias(node)||identity2.hasAnchor(node))&&nodes.push(node)},"Node")}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc,maxAliasCount}=ctx,source=this.resolve(doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}let data2=anchors2.get(source);if(data2||(toJS.toJS(source,null,ctx),data2=anchors2.get(source)),data2?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data2.count+=1,data2.aliasCount===0&&(data2.aliasCount=getAliasCount(doc,source,anchors2)),data2.count*data2.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}return data2.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity2.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity2.isCollection(node)){let count=0;for(let item of node.items){let c2=getAliasCount(doc,item,anchors2);c2>count&&(count=c2)}return count}else if(identity2.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}__name(getAliasCount,"getAliasCount");exports2.Alias=Alias}});var require_Scalar=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Scalar.js"(exports2){"use strict";var identity2=require_identity(),Node2=require_Node(),toJS=require_toJS(),isScalarValue=__name(value=>!value||typeof value!="function"&&typeof value!="object","isScalarValue"),Scalar=class extends Node2.NodeBase{static{__name(this,"Scalar")}constructor(value){super(identity2.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports2.Scalar=Scalar;exports2.isScalarValue=isScalarValue}});var require_createNode=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createNode.js"(exports2){"use strict";var Alias=require_Alias(),identity2=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter(t2=>t2.tag===tagName),tagObj=match.find(t2=>!t2.format)??match[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t2=>t2.identify?.(value)&&!t2.format)}__name(findTagObject,"findTagObject");function createNode(value,tagName,ctx){if(identity2.isDocument(value)&&(value=value.contents),identity2.isNode(value))return value;if(identity2.isPair(value)){let map2=ctx.schema[identity2.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity2.MAP]:Symbol.iterator in Object(value)?schema[identity2.SEQ]:schema[identity2.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}__name(createNode,"createNode");exports2.createNode=createNode}});var require_Collection=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Collection.js"(exports2){"use strict";var createNode=require_createNode(),identity2=require_identity(),Node2=require_Node();function collectionFromPath(schema,path48,value){let v=value;for(let i=path48.length-1;i>=0;--i){let k=path48[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:__name(()=>{throw new Error("This should not happen, please report a bug.")},"onAnchor"),schema,sourceObjects:new Map})}__name(collectionFromPath,"collectionFromPath");var isEmptyPath=__name(path48=>path48==null||typeof path48=="object"&&!!path48[Symbol.iterator]().next().done,"isEmptyPath"),Collection=class extends Node2.NodeBase{static{__name(this,"Collection")}constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it2=>identity2.isNode(it2)||identity2.isPair(it2)?it2.clone(schema):it2),this.range&&(copy.range=this.range.slice()),copy}addIn(path48,value){if(isEmptyPath(path48))this.add(value);else{let[key,...rest]=path48,node=this.get(key,!0);if(identity2.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path48){let[key,...rest]=path48;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity2.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path48,keepScalar){let[key,...rest]=path48,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity2.isScalar(node)?node.value:node:identity2.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity2.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity2.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path48){let[key,...rest]=path48;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity2.isCollection(node)?node.hasIn(rest):!1}setIn(path48,value){let[key,...rest]=path48;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity2.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports2.Collection=Collection;exports2.collectionFromPath=collectionFromPath;exports2.isEmptyPath=isEmptyPath}});var require_stringifyComment=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyComment.js"(exports2){"use strict";var stringifyComment=__name(str=>str.replace(/^(?!$)(?: $)?/gm,"#"),"stringifyComment");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}__name(indentComment,"indentComment");var lineComment=__name((str,indent,comment)=>str.endsWith(`
|
|
107
|
+
`}}}}).prompt(),"Ot")}});var init_chunk_pbuEa_1d=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/chunk-pbuEa-1d.js"(){}});var isPlainObject,toErrorMessage,init_to_error_message_Bg0SEUet=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/to-error-message-Bg0SEUet.js"(){isPlainObject=__name(value=>value!==null&&typeof value=="object"&&!Array.isArray(value),"isPlainObject"),toErrorMessage=__name((error,fallback="Unknown error")=>error instanceof Error?error.message:fallback,"toErrorMessage")}});var require_identity=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js"(exports2){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,"isAlias"),isDocument2=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,"isDocument"),isMap=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,"isMap"),isPair=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,"isPair"),isScalar=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,"isScalar"),isSeq=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ,"isSeq");function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}__name(isCollection,"isCollection");function isNode2(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}__name(isNode2,"isNode");var hasAnchor=__name(node=>(isScalar(node)||isCollection(node))&&!!node.anchor,"hasAnchor");exports2.ALIAS=ALIAS;exports2.DOC=DOC;exports2.MAP=MAP;exports2.NODE_TYPE=NODE_TYPE;exports2.PAIR=PAIR;exports2.SCALAR=SCALAR;exports2.SEQ=SEQ;exports2.hasAnchor=hasAnchor;exports2.isAlias=isAlias;exports2.isCollection=isCollection;exports2.isDocument=isDocument2;exports2.isMap=isMap;exports2.isNode=isNode2;exports2.isPair=isPair;exports2.isScalar=isScalar;exports2.isSeq=isSeq}});var require_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.js"(exports2){"use strict";var identity2=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit2(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;function visit_(key,node,visitor,path49){let ctrl=callVisitor(key,node,visitor,path49);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path49,ctrl),visit_(key,ctrl,visitor,path49);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path49=Object.freeze(path49.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path49);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path49=Object.freeze(path49.concat(node));let ck=visit_("key",node.key,visitor,path49);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path49);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visit_,"visit_");async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}__name(visitAsync,"visitAsync");visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path49){let ctrl=await callVisitor(key,node,visitor,path49);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path49,ctrl),visitAsync_(key,ctrl,visitor,path49);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path49=Object.freeze(path49.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path49);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path49=Object.freeze(path49.concat(node));let ck=await visitAsync_("key",node.key,visitor,path49);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path49);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visitAsync_,"visitAsync_");function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}__name(initVisitor,"initVisitor");function callVisitor(key,node,visitor,path49){if(typeof visitor=="function")return visitor(key,node,path49);if(identity2.isMap(node))return visitor.Map?.(key,node,path49);if(identity2.isSeq(node))return visitor.Seq?.(key,node,path49);if(identity2.isPair(node))return visitor.Pair?.(key,node,path49);if(identity2.isScalar(node))return visitor.Scalar?.(key,node,path49);if(identity2.isAlias(node))return visitor.Alias?.(key,node,path49)}__name(callVisitor,"callVisitor");function replaceNode(key,path49,node){let parent2=path49[path49.length-1];if(identity2.isCollection(parent2))parent2.items[key]=node;else if(identity2.isPair(parent2))key==="key"?parent2.key=node:parent2.value=node;else if(identity2.isDocument(parent2))parent2.contents=node;else{let pt2=identity2.isAlias(parent2)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt2} parent`)}}__name(replaceNode,"replaceNode");exports2.visit=visit2;exports2.visitAsync=visitAsync}});var require_directives=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/directives.js"(exports2){"use strict";var identity2=require_identity(),visit2=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=__name(tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),"escapeTagName"),Directives=class _Directives{static{__name(this,"Directives")}constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity2.isNode(doc.contents)){let tags={};visit2.visit(doc.contents,(_key,node)=>{identity2.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
|
|
108
|
+
`)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports2.Directives=Directives}});var require_anchors=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/anchors.js"(exports2){"use strict";var identity2=require_identity(),visit2=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}__name(anchorIsValid,"anchorIsValid");function anchorNames(root2){let anchors=new Set;return visit2.visit(root2,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}__name(anchorNames,"anchorNames");function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}__name(findNewAnchor,"findNewAnchor");function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:__name(source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},"onAnchor"),setAnchors:__name(()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity2.isScalar(ref.node)||identity2.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},"setAnchors"),sourceObjects}}__name(createNodeAnchors,"createNodeAnchors");exports2.anchorIsValid=anchorIsValid;exports2.anchorNames=anchorNames;exports2.createNodeAnchors=createNodeAnchors;exports2.findNewAnchor=findNewAnchor}});var require_applyReviver=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyReviver.js"(exports2){"use strict";function applyReviver(reviver,obj,key,val2){if(val2&&typeof val2=="object")if(Array.isArray(val2))for(let i=0,len=val2.length;i<len;++i){let v0=val2[i],v1=applyReviver(reviver,val2,String(i),v0);v1===void 0?delete val2[i]:v1!==v0&&(val2[i]=v1)}else if(val2 instanceof Map)for(let k of Array.from(val2.keys())){let v0=val2.get(k),v1=applyReviver(reviver,val2,k,v0);v1===void 0?val2.delete(k):v1!==v0&&val2.set(k,v1)}else if(val2 instanceof Set)for(let v0 of Array.from(val2)){let v1=applyReviver(reviver,val2,v0,v0);v1===void 0?val2.delete(v0):v1!==v0&&(val2.delete(v0),val2.add(v1))}else for(let[k,v0]of Object.entries(val2)){let v1=applyReviver(reviver,val2,k,v0);v1===void 0?delete val2[k]:v1!==v0&&(val2[k]=v1)}return reviver.call(obj,key,val2)}__name(applyReviver,"applyReviver");exports2.applyReviver=applyReviver}});var require_toJS=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/toJS.js"(exports2){"use strict";var identity2=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity2.hasAnchor(value))return value.toJSON(arg,ctx);let data2={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data2),ctx.onCreate=res2=>{data2.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}__name(toJS,"toJS");exports2.toJS=toJS}});var require_Node=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Node.js"(exports2){"use strict";var applyReviver=require_applyReviver(),identity2=require_identity(),toJS=require_toJS(),NodeBase=class{static{__name(this,"NodeBase")}constructor(type){Object.defineProperty(this,identity2.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity2.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports2.NodeBase=NodeBase}});var require_Alias=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Alias.js"(exports2){"use strict";var anchors=require_anchors(),visit2=require_visit(),identity2=require_identity(),Node2=require_Node(),toJS=require_toJS(),Alias=class extends Node2.NodeBase{static{__name(this,"Alias")}constructor(source){super(identity2.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){if(ctx?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit2.visit(doc,{Node:__name((_key,node)=>{(identity2.isAlias(node)||identity2.hasAnchor(node))&&nodes.push(node)},"Node")}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc,maxAliasCount}=ctx,source=this.resolve(doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}let data2=anchors2.get(source);if(data2||(toJS.toJS(source,null,ctx),data2=anchors2.get(source)),data2?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data2.count+=1,data2.aliasCount===0&&(data2.aliasCount=getAliasCount(doc,source,anchors2)),data2.count*data2.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}return data2.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity2.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity2.isCollection(node)){let count=0;for(let item of node.items){let c2=getAliasCount(doc,item,anchors2);c2>count&&(count=c2)}return count}else if(identity2.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}__name(getAliasCount,"getAliasCount");exports2.Alias=Alias}});var require_Scalar=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Scalar.js"(exports2){"use strict";var identity2=require_identity(),Node2=require_Node(),toJS=require_toJS(),isScalarValue=__name(value=>!value||typeof value!="function"&&typeof value!="object","isScalarValue"),Scalar=class extends Node2.NodeBase{static{__name(this,"Scalar")}constructor(value){super(identity2.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports2.Scalar=Scalar;exports2.isScalarValue=isScalarValue}});var require_createNode=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createNode.js"(exports2){"use strict";var Alias=require_Alias(),identity2=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter(t2=>t2.tag===tagName),tagObj=match.find(t2=>!t2.format)??match[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t2=>t2.identify?.(value)&&!t2.format)}__name(findTagObject,"findTagObject");function createNode(value,tagName,ctx){if(identity2.isDocument(value)&&(value=value.contents),identity2.isNode(value))return value;if(identity2.isPair(value)){let map2=ctx.schema[identity2.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity2.MAP]:Symbol.iterator in Object(value)?schema[identity2.SEQ]:schema[identity2.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}__name(createNode,"createNode");exports2.createNode=createNode}});var require_Collection=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Collection.js"(exports2){"use strict";var createNode=require_createNode(),identity2=require_identity(),Node2=require_Node();function collectionFromPath(schema,path49,value){let v=value;for(let i=path49.length-1;i>=0;--i){let k=path49[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:__name(()=>{throw new Error("This should not happen, please report a bug.")},"onAnchor"),schema,sourceObjects:new Map})}__name(collectionFromPath,"collectionFromPath");var isEmptyPath=__name(path49=>path49==null||typeof path49=="object"&&!!path49[Symbol.iterator]().next().done,"isEmptyPath"),Collection=class extends Node2.NodeBase{static{__name(this,"Collection")}constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it2=>identity2.isNode(it2)||identity2.isPair(it2)?it2.clone(schema):it2),this.range&&(copy.range=this.range.slice()),copy}addIn(path49,value){if(isEmptyPath(path49))this.add(value);else{let[key,...rest]=path49,node=this.get(key,!0);if(identity2.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path49){let[key,...rest]=path49;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity2.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path49,keepScalar){let[key,...rest]=path49,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity2.isScalar(node)?node.value:node:identity2.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity2.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity2.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path49){let[key,...rest]=path49;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity2.isCollection(node)?node.hasIn(rest):!1}setIn(path49,value){let[key,...rest]=path49;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity2.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports2.Collection=Collection;exports2.collectionFromPath=collectionFromPath;exports2.isEmptyPath=isEmptyPath}});var require_stringifyComment=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyComment.js"(exports2){"use strict";var stringifyComment=__name(str=>str.replace(/^(?!$)(?: $)?/gm,"#"),"stringifyComment");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}__name(indentComment,"indentComment");var lineComment=__name((str,indent,comment)=>str.endsWith(`
|
|
109
109
|
`)?indentComment(comment,indent):comment.includes(`
|
|
110
110
|
`)?`
|
|
111
111
|
`+indentComment(comment,indent):(str.endsWith(" ")?"":" ")+comment,"lineComment");exports2.indentComment=indentComment;exports2.lineComment=lineComment;exports2.stringifyComment=stringifyComment}});var require_foldFlowLines=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports2){"use strict";var FOLD_FLOW="flow",FOLD_BLOCK="block",FOLD_QUOTED="quoted";function foldFlowLines(text3,indent,mode2="flow",{indentAtStart,lineWidth=80,minContentWidth=20,onFold,onOverflow}={}){if(!lineWidth||lineWidth<0)return text3;lineWidth<minContentWidth&&(minContentWidth=0);let endStep=Math.max(1+minContentWidth,1+lineWidth-indent.length);if(text3.length<=endStep)return text3;let folds=[],escapedFolds={},end2=lineWidth-indent.length;typeof indentAtStart=="number"&&(indentAtStart>lineWidth-Math.max(2,minContentWidth)?folds.push(0):end2=lineWidth-indentAtStart);let split2,prev2,overflow=!1,i=-1,escStart=-1,escEnd=-1;mode2===FOLD_BLOCK&&(i=consumeMoreIndentedLines(text3,i,indent.length),i!==-1&&(end2=i+endStep));for(let ch;ch=text3[i+=1];){if(mode2===FOLD_QUOTED&&ch==="\\"){switch(escStart=i,text3[i+1]){case"x":i+=3;break;case"u":i+=5;break;case"U":i+=9;break;default:i+=1}escEnd=i}if(ch===`
|
|
@@ -160,7 +160,7 @@ ${pair.key.commentBefore}`:item.commentBefore),item.comment){let cn=pair.value??
|
|
|
160
160
|
${cn.comment}`:item.comment}item=pair}seq.items[i]=identity2.isPair(item)?item:new Pair.Pair(item)}}else onError("Expected a sequence for this tag");return seq}__name(resolvePairs,"resolvePairs");function createPairs(schema,iterable,ctx){let{replacer}=ctx,pairs2=new YAMLSeq.YAMLSeq(schema);pairs2.tag="tag:yaml.org,2002:pairs";let i=0;if(iterable&&Symbol.iterator in Object(iterable))for(let it2 of iterable){typeof replacer=="function"&&(it2=replacer.call(iterable,String(i++),it2));let key,value;if(Array.isArray(it2))if(it2.length===2)key=it2[0],value=it2[1];else throw new TypeError(`Expected [key, value] tuple: ${it2}`);else if(it2&&it2 instanceof Object){let keys=Object.keys(it2);if(keys.length===1)key=keys[0],value=it2[key];else throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`)}else key=it2;pairs2.items.push(Pair.createPair(key,value,ctx))}return pairs2}__name(createPairs,"createPairs");var pairs={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:resolvePairs,createNode:createPairs};exports2.createPairs=createPairs;exports2.pairs=pairs;exports2.resolvePairs=resolvePairs}});var require_omap=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports2){"use strict";var identity2=require_identity(),toJS=require_toJS(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),pairs=require_pairs(),YAMLOMap=class _YAMLOMap extends YAMLSeq.YAMLSeq{static{__name(this,"YAMLOMap")}constructor(){super(),this.add=YAMLMap.YAMLMap.prototype.add.bind(this),this.delete=YAMLMap.YAMLMap.prototype.delete.bind(this),this.get=YAMLMap.YAMLMap.prototype.get.bind(this),this.has=YAMLMap.YAMLMap.prototype.has.bind(this),this.set=YAMLMap.YAMLMap.prototype.set.bind(this),this.tag=_YAMLOMap.tag}toJSON(_2,ctx){if(!ctx)return super.toJSON(_2);let map2=new Map;ctx?.onCreate&&ctx.onCreate(map2);for(let pair of this.items){let key,value;if(identity2.isPair(pair)?(key=toJS.toJS(pair.key,"",ctx),value=toJS.toJS(pair.value,key,ctx)):key=toJS.toJS(pair,"",ctx),map2.has(key))throw new Error("Ordered maps must not include duplicate keys");map2.set(key,value)}return map2}static from(schema,iterable,ctx){let pairs$1=pairs.createPairs(schema,iterable,ctx),omap2=new this;return omap2.items=pairs$1.items,omap2}};YAMLOMap.tag="tag:yaml.org,2002:omap";var omap={collection:"seq",identify:__name(value=>value instanceof Map,"identify"),nodeClass:YAMLOMap,default:!1,tag:"tag:yaml.org,2002:omap",resolve(seq,onError){let pairs$1=pairs.resolvePairs(seq,onError),seenKeys=[];for(let{key}of pairs$1.items)identity2.isScalar(key)&&(seenKeys.includes(key.value)?onError(`Ordered maps must not include duplicate keys: ${key.value}`):seenKeys.push(key.value));return Object.assign(new YAMLOMap,pairs$1)},createNode:__name((schema,iterable,ctx)=>YAMLOMap.from(schema,iterable,ctx),"createNode")};exports2.YAMLOMap=YAMLOMap;exports2.omap=omap}});var require_bool2=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports2){"use strict";var Scalar=require_Scalar();function boolStringify({value,source},ctx){return source&&(value?trueTag:falseTag).test.test(source)?source:value?ctx.options.trueStr:ctx.options.falseStr}__name(boolStringify,"boolStringify");var trueTag={identify:__name(value=>value===!0,"identify"),default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:__name(()=>new Scalar.Scalar(!0),"resolve"),stringify:boolStringify},falseTag={identify:__name(value=>value===!1,"identify"),default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:__name(()=>new Scalar.Scalar(!1),"resolve"),stringify:boolStringify};exports2.falseTag=falseTag;exports2.trueTag=trueTag}});var require_float2=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports2){"use strict";var Scalar=require_Scalar(),stringifyNumber=require_stringifyNumber(),floatNaN={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:__name(str=>str.slice(-3).toLowerCase()==="nan"?NaN:str[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,"resolve"),stringify:stringifyNumber.stringifyNumber},floatExp={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:__name(str=>parseFloat(str.replace(/_/g,"")),"resolve"),stringify(node){let num=Number(node.value);return isFinite(num)?num.toExponential():stringifyNumber.stringifyNumber(node)}},float={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(str){let node=new Scalar.Scalar(parseFloat(str.replace(/_/g,""))),dot=str.indexOf(".");if(dot!==-1){let f=str.substring(dot+1).replace(/_/g,"");f[f.length-1]==="0"&&(node.minFractionDigits=f.length)}return node},stringify:stringifyNumber.stringifyNumber};exports2.float=float;exports2.floatExp=floatExp;exports2.floatNaN=floatNaN}});var require_int2=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports2){"use strict";var stringifyNumber=require_stringifyNumber(),intIdentify=__name(value=>typeof value=="bigint"||Number.isInteger(value),"intIdentify");function intResolve(str,offset,radix,{intAsBigInt}){let sign=str[0];if((sign==="-"||sign==="+")&&(offset+=1),str=str.substring(offset).replace(/_/g,""),intAsBigInt){switch(radix){case 2:str=`0b${str}`;break;case 8:str=`0o${str}`;break;case 16:str=`0x${str}`;break}let n2=BigInt(str);return sign==="-"?BigInt(-1)*n2:n2}let n=parseInt(str,radix);return sign==="-"?-1*n:n}__name(intResolve,"intResolve");function intStringify(node,radix,prefix){let{value}=node;if(intIdentify(value)){let str=value.toString(radix);return value<0?"-"+prefix+str.substr(1):prefix+str}return stringifyNumber.stringifyNumber(node)}__name(intStringify,"intStringify");var intBin={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,2,2,opt),"resolve"),stringify:__name(node=>intStringify(node,2,"0b"),"stringify")},intOct={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,1,8,opt),"resolve"),stringify:__name(node=>intStringify(node,8,"0"),"stringify")},int={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:__name((str,_onError,opt)=>intResolve(str,0,10,opt),"resolve"),stringify:stringifyNumber.stringifyNumber},intHex={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,2,16,opt),"resolve"),stringify:__name(node=>intStringify(node,16,"0x"),"stringify")};exports2.int=int;exports2.intBin=intBin;exports2.intHex=intHex;exports2.intOct=intOct}});var require_set=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports2){"use strict";var identity2=require_identity(),Pair=require_Pair(),YAMLMap=require_YAMLMap(),YAMLSet=class _YAMLSet extends YAMLMap.YAMLMap{static{__name(this,"YAMLSet")}constructor(schema){super(schema),this.tag=_YAMLSet.tag}add(key){let pair;identity2.isPair(key)?pair=key:key&&typeof key=="object"&&"key"in key&&"value"in key&&key.value===null?pair=new Pair.Pair(key.key,null):pair=new Pair.Pair(key,null),YAMLMap.findPair(this.items,pair.key)||this.items.push(pair)}get(key,keepPair){let pair=YAMLMap.findPair(this.items,key);return!keepPair&&identity2.isPair(pair)?identity2.isScalar(pair.key)?pair.key.value:pair.key:pair}set(key,value){if(typeof value!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);let prev2=YAMLMap.findPair(this.items,key);prev2&&!value?this.items.splice(this.items.indexOf(prev2),1):!prev2&&value&&this.items.push(new Pair.Pair(key))}toJSON(_2,ctx){return super.toJSON(_2,ctx,Set)}toString(ctx,onComment,onChompKeep){if(!ctx)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},ctx,{allNullValues:!0}),onComment,onChompKeep);throw new Error("Set items must all have null values")}static from(schema,iterable,ctx){let{replacer}=ctx,set2=new this(schema);if(iterable&&Symbol.iterator in Object(iterable))for(let value of iterable)typeof replacer=="function"&&(value=replacer.call(iterable,value,value)),set2.items.push(Pair.createPair(value,null,ctx));return set2}};YAMLSet.tag="tag:yaml.org,2002:set";var set={collection:"map",identify:__name(value=>value instanceof Set,"identify"),nodeClass:YAMLSet,default:!1,tag:"tag:yaml.org,2002:set",createNode:__name((schema,iterable,ctx)=>YAMLSet.from(schema,iterable,ctx),"createNode"),resolve(map2,onError){if(identity2.isMap(map2)){if(map2.hasAllNullValues(!0))return Object.assign(new YAMLSet,map2);onError("Set items must all have null values")}else onError("Expected a mapping for this tag");return map2}};exports2.YAMLSet=YAMLSet;exports2.set=set}});var require_timestamp=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports2){"use strict";var stringifyNumber=require_stringifyNumber();function parseSexagesimal(str,asBigInt){let sign=str[0],parts=sign==="-"||sign==="+"?str.substring(1):str,num=__name(n=>asBigInt?BigInt(n):Number(n),"num"),res=parts.replace(/_/g,"").split(":").reduce((res2,p2)=>res2*num(60)+num(p2),num(0));return sign==="-"?num(-1)*res:res}__name(parseSexagesimal,"parseSexagesimal");function stringifySexagesimal(node){let{value}=node,num=__name(n=>n,"num");if(typeof value=="bigint")num=__name(n=>BigInt(n),"num");else if(isNaN(value)||!isFinite(value))return stringifyNumber.stringifyNumber(node);let sign="";value<0&&(sign="-",value*=num(-1));let _60=num(60),parts=[value%_60];return value<60?parts.unshift(0):(value=(value-parts[0])/_60,parts.unshift(value%_60),value>=60&&(value=(value-parts[0])/_60,parts.unshift(value))),sign+parts.map(n=>String(n).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}__name(stringifySexagesimal,"stringifySexagesimal");var intTime={identify:__name(value=>typeof value=="bigint"||Number.isInteger(value),"identify"),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:__name((str,_onError,{intAsBigInt})=>parseSexagesimal(str,intAsBigInt),"resolve"),stringify:stringifySexagesimal},floatTime={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:__name(str=>parseSexagesimal(str,!1),"resolve"),stringify:stringifySexagesimal},timestamp={identify:__name(value=>value instanceof Date,"identify"),default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(str){let match=str.match(timestamp.test);if(!match)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,year,month,day,hour,minute,second]=match.map(Number),millisec=match[7]?Number((match[7]+"00").substr(1,3)):0,date=Date.UTC(year,month-1,day,hour||0,minute||0,second||0,millisec),tz=match[8];if(tz&&tz!=="Z"){let d3=parseSexagesimal(tz,!1);Math.abs(d3)<30&&(d3*=60),date-=6e4*d3}return new Date(date)},stringify:__name(({value})=>value?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??"","stringify")};exports2.floatTime=floatTime;exports2.intTime=intTime;exports2.timestamp=timestamp}});var require_schema3=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports2){"use strict";var map2=require_map(),_null=require_null(),seq=require_seq(),string=require_string(),binary=require_binary(),bool=require_bool2(),float=require_float2(),int=require_int2(),merge2=require_merge(),omap=require_omap(),pairs=require_pairs(),set=require_set(),timestamp=require_timestamp(),schema=[map2.map,seq.seq,string.string,_null.nullTag,bool.trueTag,bool.falseTag,int.intBin,int.intOct,int.int,int.intHex,float.floatNaN,float.floatExp,float.float,binary.binary,merge2.merge,omap.omap,pairs.pairs,set.set,timestamp.intTime,timestamp.floatTime,timestamp.timestamp];exports2.schema=schema}});var require_tags=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/tags.js"(exports2){"use strict";var map2=require_map(),_null=require_null(),seq=require_seq(),string=require_string(),bool=require_bool(),float=require_float(),int=require_int(),schema=require_schema(),schema$1=require_schema2(),binary=require_binary(),merge2=require_merge(),omap=require_omap(),pairs=require_pairs(),schema$2=require_schema3(),set=require_set(),timestamp=require_timestamp(),schemas3=new Map([["core",schema.schema],["failsafe",[map2.map,seq.seq,string.string]],["json",schema$1.schema],["yaml11",schema$2.schema],["yaml-1.1",schema$2.schema]]),tagsByName={binary:binary.binary,bool:bool.boolTag,float:float.float,floatExp:float.floatExp,floatNaN:float.floatNaN,floatTime:timestamp.floatTime,int:int.int,intHex:int.intHex,intOct:int.intOct,intTime:timestamp.intTime,map:map2.map,merge:merge2.merge,null:_null.nullTag,omap:omap.omap,pairs:pairs.pairs,seq:seq.seq,set:set.set,timestamp:timestamp.timestamp},coreKnownTags={"tag:yaml.org,2002:binary":binary.binary,"tag:yaml.org,2002:merge":merge2.merge,"tag:yaml.org,2002:omap":omap.omap,"tag:yaml.org,2002:pairs":pairs.pairs,"tag:yaml.org,2002:set":set.set,"tag:yaml.org,2002:timestamp":timestamp.timestamp};function getTags(customTags,schemaName,addMergeTag){let schemaTags=schemas3.get(schemaName);if(schemaTags&&!customTags)return addMergeTag&&!schemaTags.includes(merge2.merge)?schemaTags.concat(merge2.merge):schemaTags.slice();let tags=schemaTags;if(!tags)if(Array.isArray(customTags))tags=[];else{let keys=Array.from(schemas3.keys()).filter(key=>key!=="yaml11").map(key=>JSON.stringify(key)).join(", ");throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`)}if(Array.isArray(customTags))for(let tag of customTags)tags=tags.concat(tag);else typeof customTags=="function"&&(tags=customTags(tags.slice()));return addMergeTag&&(tags=tags.concat(merge2.merge)),tags.reduce((tags2,tag)=>{let tagObj=typeof tag=="string"?tagsByName[tag]:tag;if(!tagObj){let tagName=JSON.stringify(tag),keys=Object.keys(tagsByName).map(key=>JSON.stringify(key)).join(", ");throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`)}return tags2.includes(tagObj)||tags2.push(tagObj),tags2},[])}__name(getTags,"getTags");exports2.coreKnownTags=coreKnownTags;exports2.getTags=getTags}});var require_Schema=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/Schema.js"(exports2){"use strict";var identity2=require_identity(),map2=require_map(),seq=require_seq(),string=require_string(),tags=require_tags(),sortMapEntriesByKey=__name((a,b)=>a.key<b.key?-1:a.key>b.key?1:0,"sortMapEntriesByKey"),Schema=class _Schema{static{__name(this,"Schema")}constructor({compat,customTags,merge:merge2,resolveKnownTags,schema,sortMapEntries,toStringDefaults}){this.compat=Array.isArray(compat)?tags.getTags(compat,"compat"):compat?tags.getTags(null,compat):null,this.name=typeof schema=="string"&&schema||"core",this.knownTags=resolveKnownTags?tags.coreKnownTags:{},this.tags=tags.getTags(customTags,this.name,merge2),this.toStringOptions=toStringDefaults??null,Object.defineProperty(this,identity2.MAP,{value:map2.map}),Object.defineProperty(this,identity2.SCALAR,{value:string.string}),Object.defineProperty(this,identity2.SEQ,{value:seq.seq}),this.sortMapEntries=typeof sortMapEntries=="function"?sortMapEntries:sortMapEntries===!0?sortMapEntriesByKey:null}clone(){let copy=Object.create(_Schema.prototype,Object.getOwnPropertyDescriptors(this));return copy.tags=this.tags.slice(),copy}};exports2.Schema=Schema}});var require_stringifyDocument=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports2){"use strict";var identity2=require_identity(),stringify4=require_stringify(),stringifyComment=require_stringifyComment();function stringifyDocument(doc,options){let lines=[],hasDirectives=options.directives===!0;if(options.directives!==!1&&doc.directives){let dir=doc.directives.toString(doc);dir?(lines.push(dir),hasDirectives=!0):doc.directives.docStart&&(hasDirectives=!0)}hasDirectives&&lines.push("---");let ctx=stringify4.createStringifyContext(doc,options),{commentString}=ctx.options;if(doc.commentBefore){lines.length!==1&&lines.unshift("");let cs=commentString(doc.commentBefore);lines.unshift(stringifyComment.indentComment(cs,""))}let chompKeep=!1,contentComment=null;if(doc.contents){if(identity2.isNode(doc.contents)){if(doc.contents.spaceBefore&&hasDirectives&&lines.push(""),doc.contents.commentBefore){let cs=commentString(doc.contents.commentBefore);lines.push(stringifyComment.indentComment(cs,""))}ctx.forceBlockIndent=!!doc.comment,contentComment=doc.contents.comment}let onChompKeep=contentComment?void 0:()=>chompKeep=!0,body=stringify4.stringify(doc.contents,ctx,()=>contentComment=null,onChompKeep);contentComment&&(body+=stringifyComment.lineComment(body,"",commentString(contentComment))),(body[0]==="|"||body[0]===">")&&lines[lines.length-1]==="---"?lines[lines.length-1]=`--- ${body}`:lines.push(body)}else lines.push(stringify4.stringify(doc.contents,ctx));if(doc.directives?.docEnd)if(doc.comment){let cs=commentString(doc.comment);cs.includes(`
|
|
161
161
|
`)?(lines.push("..."),lines.push(stringifyComment.indentComment(cs,""))):lines.push(`... ${cs}`)}else lines.push("...");else{let dc=doc.comment;dc&&chompKeep&&(dc=dc.replace(/^\n+/,"")),dc&&((!chompKeep||contentComment)&&lines[lines.length-1]!==""&&lines.push(""),lines.push(stringifyComment.indentComment(commentString(dc),"")))}return lines.join(`
|
|
162
162
|
`)+`
|
|
163
|
-
`}__name(stringifyDocument,"stringifyDocument");exports2.stringifyDocument=stringifyDocument}});var require_Document=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/Document.js"(exports2){"use strict";var Alias=require_Alias(),Collection=require_Collection(),identity2=require_identity(),Pair=require_Pair(),toJS=require_toJS(),Schema=require_Schema(),stringifyDocument=require_stringifyDocument(),anchors=require_anchors(),applyReviver=require_applyReviver(),createNode=require_createNode(),directives=require_directives(),Document2=class _Document{static{__name(this,"Document")}constructor(value,replacer,options){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,identity2.NODE_TYPE,{value:identity2.DOC});let _replacer=null;typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer,replacer=void 0);let opt=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},options);this.options=opt;let{version}=opt;options?._directives?(this.directives=options._directives.atDocument(),this.directives.yaml.explicit&&(version=this.directives.yaml.version)):this.directives=new directives.Directives({version}),this.setSchema(version,options),this.contents=value===void 0?null:this.createNode(value,_replacer,options)}clone(){let copy=Object.create(_Document.prototype,{[identity2.NODE_TYPE]:{value:identity2.DOC}});return copy.commentBefore=this.commentBefore,copy.comment=this.comment,copy.errors=this.errors.slice(),copy.warnings=this.warnings.slice(),copy.options=Object.assign({},this.options),this.directives&&(copy.directives=this.directives.clone()),copy.schema=this.schema.clone(),copy.contents=identity2.isNode(this.contents)?this.contents.clone(copy.schema):this.contents,this.range&&(copy.range=this.range.slice()),copy}add(value){assertCollection(this.contents)&&this.contents.add(value)}addIn(
|
|
163
|
+
`}__name(stringifyDocument,"stringifyDocument");exports2.stringifyDocument=stringifyDocument}});var require_Document=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/Document.js"(exports2){"use strict";var Alias=require_Alias(),Collection=require_Collection(),identity2=require_identity(),Pair=require_Pair(),toJS=require_toJS(),Schema=require_Schema(),stringifyDocument=require_stringifyDocument(),anchors=require_anchors(),applyReviver=require_applyReviver(),createNode=require_createNode(),directives=require_directives(),Document2=class _Document{static{__name(this,"Document")}constructor(value,replacer,options){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,identity2.NODE_TYPE,{value:identity2.DOC});let _replacer=null;typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer,replacer=void 0);let opt=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},options);this.options=opt;let{version}=opt;options?._directives?(this.directives=options._directives.atDocument(),this.directives.yaml.explicit&&(version=this.directives.yaml.version)):this.directives=new directives.Directives({version}),this.setSchema(version,options),this.contents=value===void 0?null:this.createNode(value,_replacer,options)}clone(){let copy=Object.create(_Document.prototype,{[identity2.NODE_TYPE]:{value:identity2.DOC}});return copy.commentBefore=this.commentBefore,copy.comment=this.comment,copy.errors=this.errors.slice(),copy.warnings=this.warnings.slice(),copy.options=Object.assign({},this.options),this.directives&&(copy.directives=this.directives.clone()),copy.schema=this.schema.clone(),copy.contents=identity2.isNode(this.contents)?this.contents.clone(copy.schema):this.contents,this.range&&(copy.range=this.range.slice()),copy}add(value){assertCollection(this.contents)&&this.contents.add(value)}addIn(path49,value){assertCollection(this.contents)&&this.contents.addIn(path49,value)}createAlias(node,name){if(!node.anchor){let prev2=anchors.anchorNames(this);node.anchor=!name||prev2.has(name)?anchors.findNewAnchor(name||"a",prev2):name}return new Alias.Alias(node.anchor)}createNode(value,replacer,options){let _replacer;if(typeof replacer=="function")value=replacer.call({"":value},"",value),_replacer=replacer;else if(Array.isArray(replacer)){let keyToStr=__name(v=>typeof v=="number"||v instanceof String||v instanceof Number,"keyToStr"),asStr=replacer.filter(keyToStr).map(String);asStr.length>0&&(replacer=replacer.concat(asStr)),_replacer=replacer}else options===void 0&&replacer&&(options=replacer,replacer=void 0);let{aliasDuplicateObjects,anchorPrefix,flow,keepUndefined,onTagObj,tag}=options??{},{onAnchor,setAnchors,sourceObjects}=anchors.createNodeAnchors(this,anchorPrefix||"a"),ctx={aliasDuplicateObjects:aliasDuplicateObjects??!0,keepUndefined:keepUndefined??!1,onAnchor,onTagObj,replacer:_replacer,schema:this.schema,sourceObjects},node=createNode.createNode(value,tag,ctx);return flow&&identity2.isCollection(node)&&(node.flow=!0),setAnchors(),node}createPair(key,value,options={}){let k=this.createNode(key,null,options),v=this.createNode(value,null,options);return new Pair.Pair(k,v)}delete(key){return assertCollection(this.contents)?this.contents.delete(key):!1}deleteIn(path49){return Collection.isEmptyPath(path49)?this.contents==null?!1:(this.contents=null,!0):assertCollection(this.contents)?this.contents.deleteIn(path49):!1}get(key,keepScalar){return identity2.isCollection(this.contents)?this.contents.get(key,keepScalar):void 0}getIn(path49,keepScalar){return Collection.isEmptyPath(path49)?!keepScalar&&identity2.isScalar(this.contents)?this.contents.value:this.contents:identity2.isCollection(this.contents)?this.contents.getIn(path49,keepScalar):void 0}has(key){return identity2.isCollection(this.contents)?this.contents.has(key):!1}hasIn(path49){return Collection.isEmptyPath(path49)?this.contents!==void 0:identity2.isCollection(this.contents)?this.contents.hasIn(path49):!1}set(key,value){this.contents==null?this.contents=Collection.collectionFromPath(this.schema,[key],value):assertCollection(this.contents)&&this.contents.set(key,value)}setIn(path49,value){Collection.isEmptyPath(path49)?this.contents=value:this.contents==null?this.contents=Collection.collectionFromPath(this.schema,Array.from(path49),value):assertCollection(this.contents)&&this.contents.setIn(path49,value)}setSchema(version,options={}){typeof version=="number"&&(version=String(version));let opt;switch(version){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new directives.Directives({version:"1.1"}),opt={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=version:this.directives=new directives.Directives({version}),opt={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,opt=null;break;default:{let sv=JSON.stringify(version);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`)}}if(options.schema instanceof Object)this.schema=options.schema;else if(opt)this.schema=new Schema.Schema(Object.assign(opt,options));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json,jsonArg,mapAsMap,maxAliasCount,onAnchor,reviver}={}){let ctx={anchors:new Map,doc:this,keep:!json,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this.contents,jsonArg??"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}toJSON(jsonArg,onAnchor){return this.toJS({json:!0,jsonArg,mapAsMap:!1,onAnchor})}toString(options={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in options&&(!Number.isInteger(options.indent)||Number(options.indent)<=0)){let s=JSON.stringify(options.indent);throw new Error(`"indent" option must be a positive integer, not ${s}`)}return stringifyDocument.stringifyDocument(this,options)}};function assertCollection(contents2){if(identity2.isCollection(contents2))return!0;throw new Error("Expected a YAML collection as document contents")}__name(assertCollection,"assertCollection");exports2.Document=Document2}});var require_errors=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/errors.js"(exports2){"use strict";var YAMLError=class extends Error{static{__name(this,"YAMLError")}constructor(name,pos,code2,message){super(),this.name=name,this.code=code2,this.message=message,this.pos=pos}},YAMLParseError=class extends YAMLError{static{__name(this,"YAMLParseError")}constructor(pos,code2,message){super("YAMLParseError",pos,code2,message)}},YAMLWarning=class extends YAMLError{static{__name(this,"YAMLWarning")}constructor(pos,code2,message){super("YAMLWarning",pos,code2,message)}},prettifyError=__name((src,lc)=>error=>{if(error.pos[0]===-1)return;error.linePos=error.pos.map(pos=>lc.linePos(pos));let{line,col}=error.linePos[0];error.message+=` at line ${line}, column ${col}`;let ci=col-1,lineStr=src.substring(lc.lineStarts[line-1],lc.lineStarts[line]).replace(/[\n\r]+$/,"");if(ci>=60&&lineStr.length>80){let trimStart=Math.min(ci-39,lineStr.length-79);lineStr="\u2026"+lineStr.substring(trimStart),ci-=trimStart-1}if(lineStr.length>80&&(lineStr=lineStr.substring(0,79)+"\u2026"),line>1&&/^ *$/.test(lineStr.substring(0,ci))){let prev2=src.substring(lc.lineStarts[line-2],lc.lineStarts[line-1]);prev2.length>80&&(prev2=prev2.substring(0,79)+`\u2026
|
|
164
164
|
`),lineStr=prev2+lineStr}if(/[^ ]/.test(lineStr)){let count=1,end2=error.linePos[1];end2?.line===line&&end2.col>col&&(count=Math.max(1,Math.min(end2.col-col,80-ci)));let pointer=" ".repeat(ci)+"^".repeat(count);error.message+=`:
|
|
165
165
|
|
|
166
166
|
${lineStr}
|
|
@@ -217,7 +217,7 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
|
|
|
217
217
|
`),head=source.substring(0,he2),body=source.substring(he2+1)+`
|
|
218
218
|
`;if(token.type==="block-scalar"){let header=token.props[0];if(header.type!=="block-scalar-header")throw new Error("Invalid block scalar header");header.source=head,token.source=body}else{let{offset}=token,indent="indent"in token?token.indent:-1,props=[{type:"block-scalar-header",offset,indent,source:head}];addEndtoBlockProps(props,"end"in token?token.end:void 0)||props.push({type:"newline",offset:-1,indent,source:`
|
|
219
219
|
`});for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type:"block-scalar",indent,props,source:body})}}__name(setBlockScalarValue,"setBlockScalarValue");function addEndtoBlockProps(props,end2){if(end2)for(let st2 of end2)switch(st2.type){case"space":case"comment":props.push(st2);break;case"newline":return props.push(st2),!0}return!1}__name(addEndtoBlockProps,"addEndtoBlockProps");function setFlowScalarValue(token,source,type){switch(token.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":token.type=type,token.source=source;break;case"block-scalar":{let end2=token.props.slice(1),oa=source.length;token.props[0].type==="block-scalar-header"&&(oa-=token.props[0].source.length);for(let tok of end2)tok.offset+=oa;delete token.props,Object.assign(token,{type,source,end:end2});break}case"block-map":case"block-seq":{let nl={type:"newline",offset:token.offset+source.length,indent:token.indent,source:`
|
|
220
|
-
`};delete token.items,Object.assign(token,{type,source,end:[nl]});break}default:{let indent="indent"in token?token.indent:-1,end2="end"in token&&Array.isArray(token.end)?token.end.filter(st2=>st2.type==="space"||st2.type==="comment"||st2.type==="newline"):[];for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type,indent,source,end:end2})}}}__name(setFlowScalarValue,"setFlowScalarValue");exports2.createScalarToken=createScalarToken;exports2.resolveAsScalar=resolveAsScalar;exports2.setScalarValue=setScalarValue}});var require_cst_stringify=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.js"(exports2){"use strict";var stringify4=__name(cst=>"type"in cst?stringifyToken(cst):stringifyItem(cst),"stringify");function stringifyToken(token){switch(token.type){case"block-scalar":{let res="";for(let tok of token.props)res+=stringifyToken(tok);return res+token.source}case"block-map":case"block-seq":{let res="";for(let item of token.items)res+=stringifyItem(item);return res}case"flow-collection":{let res=token.start.source;for(let item of token.items)res+=stringifyItem(item);for(let st2 of token.end)res+=st2.source;return res}case"document":{let res=stringifyItem(token);if(token.end)for(let st2 of token.end)res+=st2.source;return res}default:{let res=token.source;if("end"in token&&token.end)for(let st2 of token.end)res+=st2.source;return res}}}__name(stringifyToken,"stringifyToken");function stringifyItem({start,key,sep:sep2,value}){let res="";for(let st2 of start)res+=st2.source;if(key&&(res+=stringifyToken(key)),sep2)for(let st2 of sep2)res+=st2.source;return value&&(res+=stringifyToken(value)),res}__name(stringifyItem,"stringifyItem");exports2.stringify=stringify4}});var require_cst_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.js"(exports2){"use strict";var BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove item");function visit2(cst,visitor){"type"in cst&&cst.type==="document"&&(cst={start:cst.start,value:cst.value}),_visit(Object.freeze([]),cst,visitor)}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;visit2.itemAtPath=(cst,
|
|
220
|
+
`};delete token.items,Object.assign(token,{type,source,end:[nl]});break}default:{let indent="indent"in token?token.indent:-1,end2="end"in token&&Array.isArray(token.end)?token.end.filter(st2=>st2.type==="space"||st2.type==="comment"||st2.type==="newline"):[];for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type,indent,source,end:end2})}}}__name(setFlowScalarValue,"setFlowScalarValue");exports2.createScalarToken=createScalarToken;exports2.resolveAsScalar=resolveAsScalar;exports2.setScalarValue=setScalarValue}});var require_cst_stringify=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.js"(exports2){"use strict";var stringify4=__name(cst=>"type"in cst?stringifyToken(cst):stringifyItem(cst),"stringify");function stringifyToken(token){switch(token.type){case"block-scalar":{let res="";for(let tok of token.props)res+=stringifyToken(tok);return res+token.source}case"block-map":case"block-seq":{let res="";for(let item of token.items)res+=stringifyItem(item);return res}case"flow-collection":{let res=token.start.source;for(let item of token.items)res+=stringifyItem(item);for(let st2 of token.end)res+=st2.source;return res}case"document":{let res=stringifyItem(token);if(token.end)for(let st2 of token.end)res+=st2.source;return res}default:{let res=token.source;if("end"in token&&token.end)for(let st2 of token.end)res+=st2.source;return res}}}__name(stringifyToken,"stringifyToken");function stringifyItem({start,key,sep:sep2,value}){let res="";for(let st2 of start)res+=st2.source;if(key&&(res+=stringifyToken(key)),sep2)for(let st2 of sep2)res+=st2.source;return value&&(res+=stringifyToken(value)),res}__name(stringifyItem,"stringifyItem");exports2.stringify=stringify4}});var require_cst_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.js"(exports2){"use strict";var BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove item");function visit2(cst,visitor){"type"in cst&&cst.type==="document"&&(cst={start:cst.start,value:cst.value}),_visit(Object.freeze([]),cst,visitor)}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;visit2.itemAtPath=(cst,path49)=>{let item=cst;for(let[field,index2]of path49){let tok=item?.[field];if(tok&&"items"in tok)item=tok.items[index2];else return}return item};visit2.parentCollection=(cst,path49)=>{let parent2=visit2.itemAtPath(cst,path49.slice(0,-1)),field=path49[path49.length-1][0],coll=parent2?.[field];if(coll&&"items"in coll)return coll;throw new Error("Parent collection not found")};function _visit(path49,item,visitor){let ctrl=visitor(item,path49);if(typeof ctrl=="symbol")return ctrl;for(let field of["key","value"]){let token=item[field];if(token&&"items"in token){for(let i=0;i<token.items.length;++i){let ci=_visit(Object.freeze(path49.concat([[field,i]])),token.items[i],visitor);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(token.items.splice(i,1),i-=1)}}typeof ctrl=="function"&&field==="key"&&(ctrl=ctrl(item,path49))}}return typeof ctrl=="function"?ctrl(item,path49):ctrl}__name(_visit,"_visit");exports2.visit=visit2}});var require_cst=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst.js"(exports2){"use strict";var cstScalar=require_cst_scalar(),cstStringify=require_cst_stringify(),cstVisit=require_cst_visit(),BOM="\uFEFF",DOCUMENT="",FLOW_END="",SCALAR="",isCollection=__name(token=>!!token&&"items"in token,"isCollection"),isScalar=__name(token=>!!token&&(token.type==="scalar"||token.type==="single-quoted-scalar"||token.type==="double-quoted-scalar"||token.type==="block-scalar"),"isScalar");function prettyToken(token){switch(token){case BOM:return"<BOM>";case DOCUMENT:return"<DOC>";case FLOW_END:return"<FLOW_END>";case SCALAR:return"<SCALAR>";default:return JSON.stringify(token)}}__name(prettyToken,"prettyToken");function tokenType(source){switch(source){case BOM:return"byte-order-mark";case DOCUMENT:return"doc-mode";case FLOW_END:return"flow-error-end";case SCALAR:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
221
221
|
`:case`\r
|
|
222
222
|
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(source[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}__name(tokenType,"tokenType");exports2.createScalarToken=cstScalar.createScalarToken;exports2.resolveAsScalar=cstScalar.resolveAsScalar;exports2.setScalarValue=cstScalar.setScalarValue;exports2.stringify=cstStringify.stringify;exports2.visit=cstVisit.visit;exports2.BOM=BOM;exports2.DOCUMENT=DOCUMENT;exports2.FLOW_END=FLOW_END;exports2.SCALAR=SCALAR;exports2.isCollection=isCollection;exports2.isScalar=isScalar;exports2.prettyToken=prettyToken;exports2.tokenType=tokenType}});var require_lexer=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/lexer.js"(exports2){"use strict";var cst=require_cst();function isEmpty(ch){switch(ch){case void 0:case" ":case`
|
|
223
223
|
`:case"\r":case" ":return!0;default:return!1}}__name(isEmpty,"isEmpty");var hexDigits=new Set("0123456789ABCDEFabcdef"),tagChars=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),flowIndicatorChars=new Set(",[]{}"),invalidAnchorChars=new Set(` ,[]{}
|
|
@@ -242,9 +242,9 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
|
|
|
242
242
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
243
243
|
`,nl)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(map2){let it2=map2.items[map2.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,it2.value){let end2="end"in it2.value?it2.value.end:void 0;(Array.isArray(end2)?end2[end2.length-1]:void 0)?.type==="comment"?end2?.push(this.sourceToken):map2.items.push({start:[this.sourceToken]})}else it2.sep?it2.sep.push(this.sourceToken):it2.start.push(this.sourceToken);return;case"space":case"comment":if(it2.value)map2.items.push({start:[this.sourceToken]});else if(it2.sep)it2.sep.push(this.sourceToken);else{if(this.atIndentedComment(it2.start,map2.indent)){let end2=map2.items[map2.items.length-2]?.value?.end;if(Array.isArray(end2)){arrayPushArray(end2,it2.start),end2.push(this.sourceToken),map2.items.pop();return}}it2.start.push(this.sourceToken)}return}if(this.indent>=map2.indent){let atMapIndent=!this.onKeyLine&&this.indent===map2.indent,atNextItem=atMapIndent&&(it2.sep||it2.explicitKey)&&this.type!=="seq-item-ind",start=[];if(atNextItem&&it2.sep&&!it2.value){let nl=[];for(let i=0;i<it2.sep.length;++i){let st2=it2.sep[i];switch(st2.type){case"newline":nl.push(i);break;case"space":break;case"comment":st2.indent>map2.indent&&(nl.length=0);break;default:nl.length=0}}nl.length>=2&&(start=it2.sep.splice(nl[1]))}switch(this.type){case"anchor":case"tag":atNextItem||it2.value?(start.push(this.sourceToken),map2.items.push({start}),this.onKeyLine=!0):it2.sep?it2.sep.push(this.sourceToken):it2.start.push(this.sourceToken);return;case"explicit-key-ind":!it2.sep&&!it2.explicitKey?(it2.start.push(this.sourceToken),it2.explicitKey=!0):atNextItem||it2.value?(start.push(this.sourceToken),map2.items.push({start,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(it2.explicitKey)if(it2.sep)if(it2.value)map2.items.push({start:[],key:null,sep:[this.sourceToken]});else if(includesToken(it2.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]});else if(isFlowToken(it2.key)&&!includesToken(it2.sep,"newline")){let start2=getFirstKeyStartProps(it2.start),key=it2.key,sep2=it2.sep;sep2.push(this.sourceToken),delete it2.key,delete it2.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key,sep:sep2}]})}else start.length>0?it2.sep=it2.sep.concat(start,this.sourceToken):it2.sep.push(this.sourceToken);else if(includesToken(it2.start,"newline"))Object.assign(it2,{key:null,sep:[this.sourceToken]});else{let start2=getFirstKeyStartProps(it2.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key:null,sep:[this.sourceToken]}]})}else it2.sep?it2.value||atNextItem?map2.items.push({start,key:null,sep:[this.sourceToken]}):includesToken(it2.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):it2.sep.push(this.sourceToken):Object.assign(it2,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs44=this.flowScalar(this.type);atNextItem||it2.value?(map2.items.push({start,key:fs44,sep:[]}),this.onKeyLine=!0):it2.sep?this.stack.push(fs44):(Object.assign(it2,{key:fs44,sep:[]}),this.onKeyLine=!0);return}default:{let bv=this.startBlockValue(map2);if(bv){if(bv.type==="block-seq"){if(!it2.explicitKey&&it2.sep&&!includesToken(it2.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else atMapIndent&&map2.items.push({start});this.stack.push(bv);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(seq){let it2=seq.items[seq.items.length-1];switch(this.type){case"newline":if(it2.value){let end2="end"in it2.value?it2.value.end:void 0;(Array.isArray(end2)?end2[end2.length-1]:void 0)?.type==="comment"?end2?.push(this.sourceToken):seq.items.push({start:[this.sourceToken]})}else it2.start.push(this.sourceToken);return;case"space":case"comment":if(it2.value)seq.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(it2.start,seq.indent)){let end2=seq.items[seq.items.length-2]?.value?.end;if(Array.isArray(end2)){arrayPushArray(end2,it2.start),end2.push(this.sourceToken),seq.items.pop();return}}it2.start.push(this.sourceToken)}return;case"anchor":case"tag":if(it2.value||this.indent<=seq.indent)break;it2.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==seq.indent)break;it2.value||includesToken(it2.start,"seq-item-ind")?seq.items.push({start:[this.sourceToken]}):it2.start.push(this.sourceToken);return}if(this.indent>seq.indent){let bv=this.startBlockValue(seq);if(bv){this.stack.push(bv);return}}yield*this.pop(),yield*this.step()}*flowCollection(fc){let it2=fc.items[fc.items.length-1];if(this.type==="flow-error-end"){let top;do yield*this.pop(),top=this.peek(1);while(top?.type==="flow-collection")}else if(fc.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!it2||it2.sep?fc.items.push({start:[this.sourceToken]}):it2.start.push(this.sourceToken);return;case"map-value-ind":!it2||it2.value?fc.items.push({start:[],key:null,sep:[this.sourceToken]}):it2.sep?it2.sep.push(this.sourceToken):Object.assign(it2,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!it2||it2.value?fc.items.push({start:[this.sourceToken]}):it2.sep?it2.sep.push(this.sourceToken):it2.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs44=this.flowScalar(this.type);!it2||it2.value?fc.items.push({start:[],key:fs44,sep:[]}):it2.sep?this.stack.push(fs44):Object.assign(it2,{key:fs44,sep:[]});return}case"flow-map-end":case"flow-seq-end":fc.end.push(this.sourceToken);return}let bv=this.startBlockValue(fc);bv?this.stack.push(bv):(yield*this.pop(),yield*this.step())}else{let parent2=this.peek(2);if(parent2.type==="block-map"&&(this.type==="map-value-ind"&&parent2.indent===fc.indent||this.type==="newline"&&!parent2.items[parent2.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&parent2.type!=="flow-collection"){let prev2=getPrevProps(parent2),start=getFirstKeyStartProps(prev2);fixFlowSeqItems(fc);let sep2=fc.end.splice(1,fc.end.length);sep2.push(this.sourceToken);let map2={type:"block-map",offset:fc.offset,indent:fc.indent,items:[{start,key:fc,sep:sep2}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=map2}else yield*this.lineEnd(fc)}}flowScalar(type){if(this.onNewLine){let nl=this.source.indexOf(`
|
|
244
244
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
245
|
-
`,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_api=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.js"(exports2){"use strict";var composer=require_composer(),Document2=require_Document(),errors=require_errors(),log=require_log(),identity2=require_identity(),lineCounter=require_line_counter(),parser=require_parser();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_dist=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js"(exports2){"use strict";var composer=require_composer(),Document2=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity2=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit2=require_visit();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{existsSync}from"node:fs";import{homedir as homedir2,platform,tmpdir}from"node:os";import{basename,dirname,isAbsolute,join as join2,normalize,relative,resolve,sep}from"node:path";import{cp,lstat,mkdir,mkdtemp,readFile,readdir,readlink,realpath,rm,stat,symlink,writeFile}from"node:fs/promises";import{spawn}from"node:child_process";var import_yaml,xdgConfigHome,CANONICAL_SKILLS_DIR,SKILL_MANIFEST_FILE,DEFAULT_CLONE_TIMEOUT_MS,DEFAULT_FETCH_TIMEOUT_MS,MS_PER_SECOND,SKIP_DISCOVERY_DIRS,COPY_EXCLUDE_FILES,COPY_EXCLUDE_DIRS,WELL_KNOWN_INDEX_FILE,WELL_KNOWN_PATHS,home,configHome,codexHome,claudeHome,vibeHome,resolveOpenClawGlobalSkillsDir,detectOpenClaw,skillAgents,getSkillAgentConfig,isUniversalSkillAgent,getSkillAgentDir,agentConfigEntries,getSkillAgentTypes,isSkillAgentType,getUniversalSkillAgents,detectInstalledSkillAgents,parseFrontmatter,sanitizeName,fetchSkillManifestFromUrl,isPathSafe,stripTrailingSlash,TEMP_PREFIX,SKILL_NAME_PATTERN,WellKnownTimeoutError,isValidWellKnownEntry,fetchOk,buildIndexCandidates,extractRequestedSkillName,validateIndexEntries,resolveIndex,writeSkillFiles,fetchWellKnownSkills,readJsonObjectIfExists,MARKETPLACE_RELATIVE_PATH,PLUGIN_RELATIVE_PATH,PLUGIN_SKILLS_SUBDIR,isClaudeRelativePath,stringValueOrEmpty,resolvePluginRoot,collectPluginSkillSearchDirs,collectPluginGroupings,getPluginSkillPaths,getPluginGroupings,CLONE_TIMEOUT_ENV_VAR,LEGACY_CLONE_TIMEOUT_ENV_VAR,TEMP_CLONE_PREFIX,GitCloneError,resolveCloneTimeoutMs,runGit,AUTH_ERROR_MARKERS,isAuthErrorMessage,cloneRepo,cleanupTempDir,getCanonicalSkillsDir,getSkillAgentBaseDir,cleanAndCreateDirectory,resolveSymlinkTarget,resolveParentSymlinks,isPathInsideBase,copyDirectory,isLoopError,createSymlink,installByCopy,installBySymlink,installSkillForAgent,OSC_RE,DCS_PM_APC_RE,CSI_RE,SIMPLE_ESC_RE,C1_RE,CONTROL_RE2,stripTerminalEscapes,sanitizeMetadata,PRIORITY_RELATIVE_PATHS,hasSkillManifest,parseSkillManifest,findSkillDirs,discoverSkills,getSkillDisplayName,filterSkillsByName,escapeRegex,sanitizeSubpath,HOST_CONFIGS,HOST_BY_NAME,HOST_BY_DOMAIN,SSH_URL_PATTERN,isLocalPath,isShorthandCandidate,buildHostedSource,buildHostUrlPatterns,HOST_URL_PATTERNS,decodeFragmentValue,looksLikeGitSource,parseFragmentRef,isDirectSkillMdUrl,EXCLUDED_WELL_KNOWN_HOSTS,isWellKnownCandidate,parseHostedShorthand,isHostnameAuthoritative,parseHostUrl,parseSshUrl,parseSkillSource,resolveSource,resolveTargetAgents,resolveSkillFilters,installSkillsFromSource,init_skill_DRd1jW7a=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/skill-DRd1jW7a.js"(){init_chunk_pbuEa_1d();init_to_error_message_Bg0SEUet();import_yaml=__toESM(require_dist(),1),xdgConfigHome=__name(()=>{let explicit=process.env.XDG_CONFIG_HOME?.trim();if(explicit)return explicit;if(platform()==="win32"){let localAppData=process.env.LOCALAPPDATA?.trim();if(localAppData)return localAppData}return join2(homedir2(),".config")},"xdgConfigHome"),CANONICAL_SKILLS_DIR=".agents/skills",SKILL_MANIFEST_FILE="SKILL.md",DEFAULT_CLONE_TIMEOUT_MS=3e5,DEFAULT_FETCH_TIMEOUT_MS=3e4,MS_PER_SECOND=1e3,SKIP_DISCOVERY_DIRS=new Set(["node_modules",".git","dist","build","__pycache__","coverage",".next",".turbo"]),COPY_EXCLUDE_FILES=new Set(["metadata.json"]),COPY_EXCLUDE_DIRS=new Set([".git","__pycache__","__pypackages__"]),WELL_KNOWN_INDEX_FILE="index.json",WELL_KNOWN_PATHS=[".well-known/agent-skills",".well-known/skills"],home=homedir2(),configHome=xdgConfigHome(),codexHome=process.env.CODEX_HOME?.trim()||join2(home,".codex"),claudeHome=process.env.CLAUDE_CONFIG_DIR?.trim()||join2(home,".claude"),vibeHome=process.env.VIBE_HOME?.trim()||join2(home,".vibe"),resolveOpenClawGlobalSkillsDir=__name(()=>existsSync(join2(home,".openclaw"))?join2(home,".openclaw/skills"):existsSync(join2(home,".clawdbot"))?join2(home,".clawdbot/skills"):existsSync(join2(home,".moltbot"))?join2(home,".moltbot/skills"):join2(home,".openclaw/skills"),"resolveOpenClawGlobalSkillsDir"),detectOpenClaw=__name(()=>existsSync(join2(home,".openclaw"))||existsSync(join2(home,".clawdbot"))||existsSync(join2(home,".moltbot")),"detectOpenClaw"),skillAgents={adal:{name:"adal",displayName:"AdaL",skillsDir:".adal/skills",globalSkillsDir:join2(home,".adal/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".adal")),"detectInstalled")},"aider-desk":{name:"aider-desk",displayName:"AiderDesk",skillsDir:".aider-desk/skills",globalSkillsDir:join2(home,".aider-desk/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".aider-desk")),"detectInstalled")},amp:{name:"amp",displayName:"Amp",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"amp")),"detectInstalled"),isUniversal:!0},antigravity:{name:"antigravity",displayName:"Antigravity",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".gemini/antigravity/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".gemini/antigravity")),"detectInstalled"),isUniversal:!0},augment:{name:"augment",displayName:"Augment",skillsDir:".augment/skills",globalSkillsDir:join2(home,".augment/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".augment")),"detectInstalled")},bob:{name:"bob",displayName:"IBM Bob",skillsDir:".bob/skills",globalSkillsDir:join2(home,".bob/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".bob")),"detectInstalled")},"claude-code":{name:"claude-code",displayName:"Claude Code",skillsDir:".claude/skills",globalSkillsDir:join2(claudeHome,"skills"),detectInstalled:__name(async()=>existsSync(claudeHome),"detectInstalled")},cline:{name:"cline",displayName:"Cline",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".cline")),"detectInstalled"),isUniversal:!0},"codearts-agent":{name:"codearts-agent",displayName:"CodeArts Agent",skillsDir:".codeartsdoer/skills",globalSkillsDir:join2(home,".codeartsdoer/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codeartsdoer")),"detectInstalled")},codebuddy:{name:"codebuddy",displayName:"CodeBuddy",skillsDir:".codebuddy/skills",globalSkillsDir:join2(home,".codebuddy/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".codebuddy"))||existsSync(join2(home,".codebuddy")),"detectInstalled")},codemaker:{name:"codemaker",displayName:"Codemaker",skillsDir:".codemaker/skills",globalSkillsDir:join2(home,".codemaker/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codemaker")),"detectInstalled")},codestudio:{name:"codestudio",displayName:"Code Studio",skillsDir:".codestudio/skills",globalSkillsDir:join2(home,".codestudio/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codestudio")),"detectInstalled")},codex:{name:"codex",displayName:"Codex",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(codexHome,"skills"),detectInstalled:__name(async()=>existsSync(codexHome)||existsSync("/etc/codex"),"detectInstalled"),isUniversal:!0},"command-code":{name:"command-code",displayName:"Command Code",skillsDir:".commandcode/skills",globalSkillsDir:join2(home,".commandcode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".commandcode")),"detectInstalled")},continue:{name:"continue",displayName:"Continue",skillsDir:".continue/skills",globalSkillsDir:join2(home,".continue/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".continue"))||existsSync(join2(home,".continue")),"detectInstalled")},cortex:{name:"cortex",displayName:"Cortex Code",skillsDir:".cortex/skills",globalSkillsDir:join2(home,".snowflake/cortex/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".snowflake/cortex")),"detectInstalled")},crush:{name:"crush",displayName:"Crush",skillsDir:".crush/skills",globalSkillsDir:join2(configHome,"crush/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"crush")),"detectInstalled")},cursor:{name:"cursor",displayName:"Cursor",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".cursor/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".cursor")),"detectInstalled"),isUniversal:!0},deepagents:{name:"deepagents",displayName:"Deep Agents",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".deepagents/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".deepagents")),"detectInstalled"),isUniversal:!0},devin:{name:"devin",displayName:"Devin",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"devin/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"devin")),"detectInstalled"),isUniversal:!0},dexto:{name:"dexto",displayName:"Dexto",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".dexto")),"detectInstalled"),isUniversal:!0},droid:{name:"droid",displayName:"Factory Droid",skillsDir:".factory/skills",globalSkillsDir:join2(home,".factory/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".factory")),"detectInstalled")},firebender:{name:"firebender",displayName:"Firebender",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".firebender/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".firebender")),"detectInstalled"),isUniversal:!0},forgecode:{name:"forgecode",displayName:"ForgeCode",skillsDir:".forge/skills",globalSkillsDir:join2(home,".forge/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".forge")),"detectInstalled")},"gemini-cli":{name:"gemini-cli",displayName:"Gemini CLI",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".gemini/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".gemini")),"detectInstalled"),isUniversal:!0},"github-copilot":{name:"github-copilot",displayName:"GitHub Copilot",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".copilot/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".copilot")),"detectInstalled"),isUniversal:!0},goose:{name:"goose",displayName:"Goose",skillsDir:".goose/skills",globalSkillsDir:join2(configHome,"goose/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"goose")),"detectInstalled")},"iflow-cli":{name:"iflow-cli",displayName:"iFlow CLI",skillsDir:".iflow/skills",globalSkillsDir:join2(home,".iflow/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".iflow")),"detectInstalled")},junie:{name:"junie",displayName:"Junie",skillsDir:".junie/skills",globalSkillsDir:join2(home,".junie/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".junie")),"detectInstalled")},kilo:{name:"kilo",displayName:"Kilo Code",skillsDir:".kilocode/skills",globalSkillsDir:join2(home,".kilocode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kilocode")),"detectInstalled")},"kimi-cli":{name:"kimi-cli",displayName:"Kimi Code CLI",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kimi")),"detectInstalled"),isUniversal:!0},"kiro-cli":{name:"kiro-cli",displayName:"Kiro CLI",skillsDir:".kiro/skills",globalSkillsDir:join2(home,".kiro/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kiro")),"detectInstalled")},kode:{name:"kode",displayName:"Kode",skillsDir:".kode/skills",globalSkillsDir:join2(home,".kode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kode")),"detectInstalled")},mcpjam:{name:"mcpjam",displayName:"MCPJam",skillsDir:".mcpjam/skills",globalSkillsDir:join2(home,".mcpjam/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".mcpjam")),"detectInstalled")},"mistral-vibe":{name:"mistral-vibe",displayName:"Mistral Vibe",skillsDir:".vibe/skills",globalSkillsDir:join2(vibeHome,"skills"),detectInstalled:__name(async()=>existsSync(vibeHome),"detectInstalled")},mux:{name:"mux",displayName:"Mux",skillsDir:".mux/skills",globalSkillsDir:join2(home,".mux/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".mux")),"detectInstalled")},neovate:{name:"neovate",displayName:"Neovate",skillsDir:".neovate/skills",globalSkillsDir:join2(home,".neovate/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".neovate")),"detectInstalled")},openclaw:{name:"openclaw",displayName:"OpenClaw",skillsDir:"skills",globalSkillsDir:resolveOpenClawGlobalSkillsDir(),detectInstalled:__name(async()=>detectOpenClaw(),"detectInstalled")},opencode:{name:"opencode",displayName:"OpenCode",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"opencode/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"opencode")),"detectInstalled"),isUniversal:!0},openhands:{name:"openhands",displayName:"OpenHands",skillsDir:".openhands/skills",globalSkillsDir:join2(home,".openhands/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".openhands")),"detectInstalled")},pi:{name:"pi",displayName:"Pi",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".pi/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".pi")),"detectInstalled"),isUniversal:!0},pochi:{name:"pochi",displayName:"Pochi",skillsDir:".pochi/skills",globalSkillsDir:join2(home,".pochi/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".pochi")),"detectInstalled")},qoder:{name:"qoder",displayName:"Qoder",skillsDir:".qoder/skills",globalSkillsDir:join2(home,".qoder/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".qoder")),"detectInstalled")},"qwen-code":{name:"qwen-code",displayName:"Qwen Code",skillsDir:".qwen/skills",globalSkillsDir:join2(home,".qwen/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".qwen")),"detectInstalled")},replit:{name:"replit",displayName:"Replit",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".replit")),"detectInstalled"),isUniversal:!0},roo:{name:"roo",displayName:"Roo Code",skillsDir:".roo/skills",globalSkillsDir:join2(home,".roo/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".roo")),"detectInstalled")},rovodev:{name:"rovodev",displayName:"Rovo Dev",skillsDir:".rovodev/skills",globalSkillsDir:join2(home,".rovodev/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".rovodev")),"detectInstalled")},"tabnine-cli":{name:"tabnine-cli",displayName:"Tabnine CLI",skillsDir:".tabnine/agent/skills",globalSkillsDir:join2(home,".tabnine/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".tabnine")),"detectInstalled")},trae:{name:"trae",displayName:"Trae",skillsDir:".trae/skills",globalSkillsDir:join2(home,".trae/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".trae")),"detectInstalled")},"trae-cn":{name:"trae-cn",displayName:"Trae CN",skillsDir:".trae/skills",globalSkillsDir:join2(home,".trae-cn/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".trae-cn")),"detectInstalled")},universal:{name:"universal",displayName:"Universal",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>!1,"detectInstalled"),isUniversal:!0},warp:{name:"warp",displayName:"Warp",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".warp")),"detectInstalled"),isUniversal:!0},windsurf:{name:"windsurf",displayName:"Windsurf",skillsDir:".windsurf/skills",globalSkillsDir:join2(home,".codeium/windsurf/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codeium/windsurf")),"detectInstalled")},zencoder:{name:"zencoder",displayName:"Zencoder",skillsDir:".zencoder/skills",globalSkillsDir:join2(home,".zencoder/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".zencoder")),"detectInstalled")}},getSkillAgentConfig=__name(agentType=>skillAgents[agentType],"getSkillAgentConfig"),isUniversalSkillAgent=__name(agentType=>!!skillAgents[agentType].isUniversal,"isUniversalSkillAgent"),getSkillAgentDir=__name((agentType,options={})=>{let agent=skillAgents[agentType];return options.global??!1?agent.globalSkillsDir??join2(home,agent.skillsDir):join2(options.cwd??process.cwd(),agent.skillsDir)},"getSkillAgentDir"),agentConfigEntries=__name(()=>Object.values(skillAgents).map(config=>[config.name,config]),"agentConfigEntries"),getSkillAgentTypes=__name(()=>agentConfigEntries().map(([name])=>name),"getSkillAgentTypes"),isSkillAgentType=__name(value=>value in skillAgents,"isSkillAgentType"),getUniversalSkillAgents=__name(()=>agentConfigEntries().filter(([name,config])=>config.isUniversal&&name!=="universal").map(([name])=>name),"getUniversalSkillAgents"),detectInstalledSkillAgents=__name(async()=>(await Promise.all(Object.values(skillAgents).map(async config=>({name:config.name,installed:await config.detectInstalled()})))).filter(entry=>entry.installed).map(entry=>entry.name),"detectInstalledSkillAgents"),parseFrontmatter=__name(raw=>{let match=raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!match)return{data:{},content:raw};let parsed=(0,import_yaml.parse)(match[1]??"");return{data:isPlainObject(parsed)?parsed:{},content:match[2]??""}},"parseFrontmatter"),sanitizeName=__name(name=>name.toLowerCase().replace(/[^a-z0-9._]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").substring(0,255)||"unnamed-skill","sanitizeName"),fetchSkillManifestFromUrl=__name(async url=>{let controller=new AbortController,timer=setTimeout(()=>controller.abort(),DEFAULT_FETCH_TIMEOUT_MS);try{let response=await fetch(url,{signal:controller.signal});if(!response.ok)throw new Error(`Failed to fetch ${url}: HTTP ${response.status}`);let content2=await response.text(),{data:data2}=parseFrontmatter(content2);if(typeof data2.name!="string"||!data2.name)throw new Error(`Fetched SKILL.md has no "name" in its frontmatter: ${url}`);let skillName=sanitizeName(data2.name),baseDir=await mkdtemp(join2(tmpdir(),"agent-install-url-")),skillDir=join2(baseDir,skillName);return await mkdir(dirname(join2(skillDir,SKILL_MANIFEST_FILE)),{recursive:!0}),await writeFile(join2(skillDir,SKILL_MANIFEST_FILE),content2,"utf-8"),baseDir}finally{clearTimeout(timer)}},"fetchSkillManifestFromUrl"),isPathSafe=__name((basePath,targetPath)=>{let normalizedBase=normalize(resolve(basePath)),normalizedTarget=normalize(resolve(targetPath));return normalizedTarget.startsWith(normalizedBase+sep)||normalizedTarget===normalizedBase},"isPathSafe"),stripTrailingSlash=__name(input=>input.endsWith("/")?input.slice(0,-1):input,"stripTrailingSlash"),TEMP_PREFIX="agent-install-well-known-",SKILL_NAME_PATTERN=/^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/,WellKnownTimeoutError=class extends Error{static{__name(this,"WellKnownTimeoutError")}constructor(message){super(message),this.name="WellKnownTimeoutError"}},isValidWellKnownEntry=__name(value=>{if(!isPlainObject(value)||typeof value.name!="string"||!value.name||typeof value.description!="string"||!value.description||!Array.isArray(value.files)||value.files.length===0||value.name.length>1&&!SKILL_NAME_PATTERN.test(value.name)||value.name.length===1&&!/^[a-z0-9]$/.test(value.name))return!1;for(let file of value.files)if(typeof file!="string"||file.startsWith("/")||file.startsWith("\\")||file.includes(".."))return!1;return value.files.some(file=>typeof file=="string"&&file.toLowerCase()==="skill.md")},"isValidWellKnownEntry"),fetchOk=__name(async url=>{try{let response=await fetch(url,{signal:AbortSignal.timeout(DEFAULT_FETCH_TIMEOUT_MS)});return response.ok?response:null}catch(error){if(error instanceof DOMException&&error.name==="TimeoutError")throw new WellKnownTimeoutError(`Request timed out: ${url}`);return null}},"fetchOk"),buildIndexCandidates=__name(inputUrl=>{let parsed=new URL(inputUrl),basePath=stripTrailingSlash(parsed.pathname),candidates=[];for(let wellKnownPath of WELL_KNOWN_PATHS)candidates.push({indexUrl:`${parsed.protocol}//${parsed.host}${basePath}/${wellKnownPath}/${WELL_KNOWN_INDEX_FILE}`,baseUrl:`${parsed.protocol}//${parsed.host}${basePath}`,wellKnownPath}),basePath&&candidates.push({indexUrl:`${parsed.protocol}//${parsed.host}/${wellKnownPath}/${WELL_KNOWN_INDEX_FILE}`,baseUrl:`${parsed.protocol}//${parsed.host}`,wellKnownPath});return candidates},"buildIndexCandidates"),extractRequestedSkillName=__name(inputUrl=>{try{let name=new URL(inputUrl).pathname.match(/\/.well-known\/(?:agent-skills|skills)\/([^/]+)\/?$/)?.[1];return name&&name!=="index.json"?name:void 0}catch{return}},"extractRequestedSkillName"),validateIndexEntries=__name(payload=>{if(!isPlainObject(payload))return null;let{skills:skills2}=payload;return!Array.isArray(skills2)||!skills2.every(isValidWellKnownEntry)?null:skills2},"validateIndexEntries"),resolveIndex=__name(async inputUrl=>{for(let candidate of buildIndexCandidates(inputUrl)){let response=await fetchOk(candidate.indexUrl);if(!response)continue;let payload;try{payload=await response.json()}catch{continue}let entries2=validateIndexEntries(payload);if(entries2)return{entries:entries2,baseUrl:candidate.baseUrl,wellKnownPath:candidate.wellKnownPath,requestedSkillName:extractRequestedSkillName(inputUrl)}}return null},"resolveIndex"),writeSkillFiles=__name(async(resolved,entry,rootDir)=>{let skillDir=join2(rootDir,sanitizeName(entry.name));await mkdir(skillDir,{recursive:!0});let skillBaseUrl=`${stripTrailingSlash(resolved.baseUrl)}/${resolved.wellKnownPath}/${entry.name}`,installedAny=!1;return await Promise.all(entry.files.map(async relativePath=>{let targetPath=join2(skillDir,relativePath);if(!isPathSafe(skillDir,targetPath))return;let response=await fetchOk(`${skillBaseUrl}/${relativePath}`);if(!response)return;let content2=await response.text();await mkdir(dirname(targetPath),{recursive:!0}),await writeFile(targetPath,content2,"utf-8"),installedAny=!0})),installedAny},"writeSkillFiles"),fetchWellKnownSkills=__name(async inputUrl=>{let resolved=await resolveIndex(inputUrl).catch(error=>{throw error instanceof WellKnownTimeoutError?new Error(`Timed out resolving well-known skills index at ${inputUrl}. Set the source's HTTP server to respond faster, or pass a local path.`):error});if(!resolved)throw new Error(`No /.well-known/agent-skills/index.json (or fallback /.well-known/skills/index.json) found at ${inputUrl}`);let entries2=resolved.requestedSkillName?resolved.entries.filter(entry=>entry.name===resolved.requestedSkillName):resolved.entries;if(entries2.length===0)throw new Error(resolved.requestedSkillName?`Skill "${resolved.requestedSkillName}" not found in well-known index at ${inputUrl}`:`Well-known index at ${inputUrl} declares no skills`);let baseDir=await mkdtemp(join2(tmpdir(),TEMP_PREFIX));if(!(await Promise.all(entries2.map(entry=>writeSkillFiles(resolved,entry,baseDir)))).some(Boolean))throw new Error(`Failed to fetch any skill files from well-known index at ${inputUrl}`);return baseDir},"fetchWellKnownSkills"),readJsonObjectIfExists=__name(async path48=>{try{let content2=await readFile(path48,"utf-8"),parsed=JSON.parse(content2);return isPlainObject(parsed)?parsed:null}catch{return null}},"readJsonObjectIfExists"),MARKETPLACE_RELATIVE_PATH=".claude-plugin/marketplace.json",PLUGIN_RELATIVE_PATH=".claude-plugin/plugin.json",PLUGIN_SKILLS_SUBDIR="skills",isClaudeRelativePath=__name(input=>typeof input=="string"&&input.startsWith("./"),"isClaudeRelativePath"),stringValueOrEmpty=__name(input=>typeof input=="string"?input:"","stringValueOrEmpty"),resolvePluginRoot=__name(manifest=>{if(!isPlainObject(manifest.metadata))return"";let rawPluginRoot=manifest.metadata.pluginRoot;return rawPluginRoot===void 0?"":isClaudeRelativePath(rawPluginRoot)?rawPluginRoot:null},"resolvePluginRoot"),collectPluginSkillSearchDirs=__name((basePath,pluginBase,rawSkills,searchDirs)=>{if(isPathSafe(basePath,pluginBase)){if(Array.isArray(rawSkills))for(let entry of rawSkills){if(!isClaudeRelativePath(entry))continue;let skillDir=dirname(join2(pluginBase,entry));isPathSafe(basePath,skillDir)&&searchDirs.push(skillDir)}searchDirs.push(join2(pluginBase,PLUGIN_SKILLS_SUBDIR))}},"collectPluginSkillSearchDirs"),collectPluginGroupings=__name((basePath,pluginBase,pluginName,rawSkills,groupings)=>{if(!(!isPathSafe(basePath,pluginBase)||!Array.isArray(rawSkills)))for(let entry of rawSkills){if(!isClaudeRelativePath(entry))continue;let skillDir=join2(pluginBase,entry);isPathSafe(basePath,skillDir)&&groupings.set(resolve(skillDir),pluginName)}},"collectPluginGroupings"),getPluginSkillPaths=__name(async basePath=>{let searchDirs=[],marketplace=await readJsonObjectIfExists(join2(basePath,MARKETPLACE_RELATIVE_PATH));if(marketplace){let pluginRoot=resolvePluginRoot(marketplace);if(pluginRoot!==null&&Array.isArray(marketplace.plugins))for(let plugin of marketplace.plugins)isPlainObject(plugin)&&(plugin.source!==void 0&&!isClaudeRelativePath(plugin.source)||collectPluginSkillSearchDirs(basePath,join2(basePath,pluginRoot,stringValueOrEmpty(plugin.source)),plugin.skills,searchDirs))}let single=await readJsonObjectIfExists(join2(basePath,PLUGIN_RELATIVE_PATH));return single&&collectPluginSkillSearchDirs(basePath,basePath,single.skills,searchDirs),searchDirs},"getPluginSkillPaths"),getPluginGroupings=__name(async basePath=>{let groupings=new Map,marketplace=await readJsonObjectIfExists(join2(basePath,MARKETPLACE_RELATIVE_PATH));if(marketplace){let pluginRoot=resolvePluginRoot(marketplace);if(pluginRoot!==null&&Array.isArray(marketplace.plugins))for(let plugin of marketplace.plugins)isPlainObject(plugin)&&(typeof plugin.name!="string"||!plugin.name||plugin.source!==void 0&&!isClaudeRelativePath(plugin.source)||collectPluginGroupings(basePath,join2(basePath,pluginRoot,stringValueOrEmpty(plugin.source)),plugin.name,plugin.skills,groupings))}let single=await readJsonObjectIfExists(join2(basePath,PLUGIN_RELATIVE_PATH));return single&&typeof single.name=="string"&&single.name&&collectPluginGroupings(basePath,basePath,single.name,single.skills,groupings),groupings},"getPluginGroupings"),CLONE_TIMEOUT_ENV_VAR="AGENT_INSTALL_CLONE_TIMEOUT_MS",LEGACY_CLONE_TIMEOUT_ENV_VAR="SKILL_INSTALL_CLONE_TIMEOUT_MS",TEMP_CLONE_PREFIX="agent-install-",GitCloneError=class extends Error{static{__name(this,"GitCloneError")}url;kind;constructor(message,url,kind="unknown"){super(message),this.name="GitCloneError",this.url=url,this.kind=kind}get isTimeout(){return this.kind==="timeout"}get isAuthError(){return this.kind==="auth"}},resolveCloneTimeoutMs=__name(()=>{let raw=process.env[CLONE_TIMEOUT_ENV_VAR]??process.env[LEGACY_CLONE_TIMEOUT_ENV_VAR];if(!raw)return DEFAULT_CLONE_TIMEOUT_MS;let parsed=Number.parseInt(raw,10);return Number.isFinite(parsed)&&parsed>0?parsed:DEFAULT_CLONE_TIMEOUT_MS},"resolveCloneTimeoutMs"),runGit=__name((args,timeoutMs)=>new Promise(resolvePromise=>{let child=spawn("git",args,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_LFS_SKIP_SMUDGE:"1"}}),stderr="",timedOut=!1,timer=setTimeout(()=>{timedOut=!0,child.kill("SIGKILL")},timeoutMs);child.stderr.on("data",chunk=>{stderr+=chunk.toString()}),child.on("close",code2=>{clearTimeout(timer),resolvePromise({code:code2??1,stderr,timedOut})}),child.on("error",err=>{clearTimeout(timer),stderr+=err.message,resolvePromise({code:1,stderr,timedOut})})}),"runGit"),AUTH_ERROR_MARKERS=["Authentication failed","could not read Username","Permission denied","Repository not found"],isAuthErrorMessage=__name(stderr=>AUTH_ERROR_MARKERS.some(marker=>stderr.includes(marker)),"isAuthErrorMessage"),cloneRepo=__name(async(url,ref)=>{let tempDir=await mkdtemp(join2(tmpdir(),TEMP_CLONE_PREFIX)),timeoutMs=resolveCloneTimeoutMs(),args=["-c","filter.lfs.required=false","-c","filter.lfs.smudge=","-c","filter.lfs.clean=","-c","filter.lfs.process=","clone","--depth","1"];ref&&args.push("--branch",ref),args.push(url,tempDir);let{code:code2,stderr,timedOut}=await runGit(args,timeoutMs);if(code2===0)return tempDir;throw await rm(tempDir,{recursive:!0,force:!0}).catch(()=>{}),timedOut?new GitCloneError([`Clone timed out after ${Math.round(timeoutMs/MS_PER_SECOND)}s. Common causes:`,` - Large repository: raise the timeout with ${CLONE_TIMEOUT_ENV_VAR}=600000 (10m)`," - Slow network: retry, or clone manually and pass the local path to 'skill add'"," - Private repo without credentials:"," - For SSH: ssh-add -l (to check loaded keys)"," - For HTTPS: gh auth status (if using GitHub CLI)"].join(`
|
|
245
|
+
`,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_api=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.js"(exports2){"use strict";var composer=require_composer(),Document2=require_Document(),errors=require_errors(),log=require_log(),identity2=require_identity(),lineCounter=require_line_counter(),parser=require_parser();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_dist=__commonJS({"../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js"(exports2){"use strict";var composer=require_composer(),Document2=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity2=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit2=require_visit();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{existsSync}from"node:fs";import{homedir as homedir2,platform,tmpdir}from"node:os";import{basename,dirname,isAbsolute,join as join2,normalize,relative,resolve,sep}from"node:path";import{cp,lstat,mkdir,mkdtemp,readFile,readdir,readlink,realpath,rm,stat,symlink,writeFile}from"node:fs/promises";import{spawn}from"node:child_process";var import_yaml,xdgConfigHome,CANONICAL_SKILLS_DIR,SKILL_MANIFEST_FILE,DEFAULT_CLONE_TIMEOUT_MS,DEFAULT_FETCH_TIMEOUT_MS,MS_PER_SECOND,SKIP_DISCOVERY_DIRS,COPY_EXCLUDE_FILES,COPY_EXCLUDE_DIRS,WELL_KNOWN_INDEX_FILE,WELL_KNOWN_PATHS,home,configHome,codexHome,claudeHome,vibeHome,resolveOpenClawGlobalSkillsDir,detectOpenClaw,skillAgents,getSkillAgentConfig,isUniversalSkillAgent,getSkillAgentDir,agentConfigEntries,getSkillAgentTypes,isSkillAgentType,getUniversalSkillAgents,detectInstalledSkillAgents,parseFrontmatter,sanitizeName,fetchSkillManifestFromUrl,isPathSafe,stripTrailingSlash,TEMP_PREFIX,SKILL_NAME_PATTERN,WellKnownTimeoutError,isValidWellKnownEntry,fetchOk,buildIndexCandidates,extractRequestedSkillName,validateIndexEntries,resolveIndex,writeSkillFiles,fetchWellKnownSkills,readJsonObjectIfExists,MARKETPLACE_RELATIVE_PATH,PLUGIN_RELATIVE_PATH,PLUGIN_SKILLS_SUBDIR,isClaudeRelativePath,stringValueOrEmpty,resolvePluginRoot,collectPluginSkillSearchDirs,collectPluginGroupings,getPluginSkillPaths,getPluginGroupings,CLONE_TIMEOUT_ENV_VAR,LEGACY_CLONE_TIMEOUT_ENV_VAR,TEMP_CLONE_PREFIX,GitCloneError,resolveCloneTimeoutMs,runGit,AUTH_ERROR_MARKERS,isAuthErrorMessage,cloneRepo,cleanupTempDir,getCanonicalSkillsDir,getSkillAgentBaseDir,cleanAndCreateDirectory,resolveSymlinkTarget,resolveParentSymlinks,isPathInsideBase,copyDirectory,isLoopError,createSymlink,installByCopy,installBySymlink,installSkillForAgent,OSC_RE,DCS_PM_APC_RE,CSI_RE,SIMPLE_ESC_RE,C1_RE,CONTROL_RE2,stripTerminalEscapes,sanitizeMetadata,PRIORITY_RELATIVE_PATHS,hasSkillManifest,parseSkillManifest,findSkillDirs,discoverSkills,getSkillDisplayName,filterSkillsByName,escapeRegex,sanitizeSubpath,HOST_CONFIGS,HOST_BY_NAME,HOST_BY_DOMAIN,SSH_URL_PATTERN,isLocalPath,isShorthandCandidate,buildHostedSource,buildHostUrlPatterns,HOST_URL_PATTERNS,decodeFragmentValue,looksLikeGitSource,parseFragmentRef,isDirectSkillMdUrl,EXCLUDED_WELL_KNOWN_HOSTS,isWellKnownCandidate,parseHostedShorthand,isHostnameAuthoritative,parseHostUrl,parseSshUrl,parseSkillSource,resolveSource,resolveTargetAgents,resolveSkillFilters,installSkillsFromSource,init_skill_DRd1jW7a=__esm({"../../node_modules/.pnpm/agent-install@0.0.5/node_modules/agent-install/dist/skill-DRd1jW7a.js"(){init_chunk_pbuEa_1d();init_to_error_message_Bg0SEUet();import_yaml=__toESM(require_dist(),1),xdgConfigHome=__name(()=>{let explicit=process.env.XDG_CONFIG_HOME?.trim();if(explicit)return explicit;if(platform()==="win32"){let localAppData=process.env.LOCALAPPDATA?.trim();if(localAppData)return localAppData}return join2(homedir2(),".config")},"xdgConfigHome"),CANONICAL_SKILLS_DIR=".agents/skills",SKILL_MANIFEST_FILE="SKILL.md",DEFAULT_CLONE_TIMEOUT_MS=3e5,DEFAULT_FETCH_TIMEOUT_MS=3e4,MS_PER_SECOND=1e3,SKIP_DISCOVERY_DIRS=new Set(["node_modules",".git","dist","build","__pycache__","coverage",".next",".turbo"]),COPY_EXCLUDE_FILES=new Set(["metadata.json"]),COPY_EXCLUDE_DIRS=new Set([".git","__pycache__","__pypackages__"]),WELL_KNOWN_INDEX_FILE="index.json",WELL_KNOWN_PATHS=[".well-known/agent-skills",".well-known/skills"],home=homedir2(),configHome=xdgConfigHome(),codexHome=process.env.CODEX_HOME?.trim()||join2(home,".codex"),claudeHome=process.env.CLAUDE_CONFIG_DIR?.trim()||join2(home,".claude"),vibeHome=process.env.VIBE_HOME?.trim()||join2(home,".vibe"),resolveOpenClawGlobalSkillsDir=__name(()=>existsSync(join2(home,".openclaw"))?join2(home,".openclaw/skills"):existsSync(join2(home,".clawdbot"))?join2(home,".clawdbot/skills"):existsSync(join2(home,".moltbot"))?join2(home,".moltbot/skills"):join2(home,".openclaw/skills"),"resolveOpenClawGlobalSkillsDir"),detectOpenClaw=__name(()=>existsSync(join2(home,".openclaw"))||existsSync(join2(home,".clawdbot"))||existsSync(join2(home,".moltbot")),"detectOpenClaw"),skillAgents={adal:{name:"adal",displayName:"AdaL",skillsDir:".adal/skills",globalSkillsDir:join2(home,".adal/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".adal")),"detectInstalled")},"aider-desk":{name:"aider-desk",displayName:"AiderDesk",skillsDir:".aider-desk/skills",globalSkillsDir:join2(home,".aider-desk/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".aider-desk")),"detectInstalled")},amp:{name:"amp",displayName:"Amp",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"amp")),"detectInstalled"),isUniversal:!0},antigravity:{name:"antigravity",displayName:"Antigravity",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".gemini/antigravity/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".gemini/antigravity")),"detectInstalled"),isUniversal:!0},augment:{name:"augment",displayName:"Augment",skillsDir:".augment/skills",globalSkillsDir:join2(home,".augment/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".augment")),"detectInstalled")},bob:{name:"bob",displayName:"IBM Bob",skillsDir:".bob/skills",globalSkillsDir:join2(home,".bob/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".bob")),"detectInstalled")},"claude-code":{name:"claude-code",displayName:"Claude Code",skillsDir:".claude/skills",globalSkillsDir:join2(claudeHome,"skills"),detectInstalled:__name(async()=>existsSync(claudeHome),"detectInstalled")},cline:{name:"cline",displayName:"Cline",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".cline")),"detectInstalled"),isUniversal:!0},"codearts-agent":{name:"codearts-agent",displayName:"CodeArts Agent",skillsDir:".codeartsdoer/skills",globalSkillsDir:join2(home,".codeartsdoer/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codeartsdoer")),"detectInstalled")},codebuddy:{name:"codebuddy",displayName:"CodeBuddy",skillsDir:".codebuddy/skills",globalSkillsDir:join2(home,".codebuddy/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".codebuddy"))||existsSync(join2(home,".codebuddy")),"detectInstalled")},codemaker:{name:"codemaker",displayName:"Codemaker",skillsDir:".codemaker/skills",globalSkillsDir:join2(home,".codemaker/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codemaker")),"detectInstalled")},codestudio:{name:"codestudio",displayName:"Code Studio",skillsDir:".codestudio/skills",globalSkillsDir:join2(home,".codestudio/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codestudio")),"detectInstalled")},codex:{name:"codex",displayName:"Codex",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(codexHome,"skills"),detectInstalled:__name(async()=>existsSync(codexHome)||existsSync("/etc/codex"),"detectInstalled"),isUniversal:!0},"command-code":{name:"command-code",displayName:"Command Code",skillsDir:".commandcode/skills",globalSkillsDir:join2(home,".commandcode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".commandcode")),"detectInstalled")},continue:{name:"continue",displayName:"Continue",skillsDir:".continue/skills",globalSkillsDir:join2(home,".continue/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".continue"))||existsSync(join2(home,".continue")),"detectInstalled")},cortex:{name:"cortex",displayName:"Cortex Code",skillsDir:".cortex/skills",globalSkillsDir:join2(home,".snowflake/cortex/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".snowflake/cortex")),"detectInstalled")},crush:{name:"crush",displayName:"Crush",skillsDir:".crush/skills",globalSkillsDir:join2(configHome,"crush/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"crush")),"detectInstalled")},cursor:{name:"cursor",displayName:"Cursor",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".cursor/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".cursor")),"detectInstalled"),isUniversal:!0},deepagents:{name:"deepagents",displayName:"Deep Agents",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".deepagents/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".deepagents")),"detectInstalled"),isUniversal:!0},devin:{name:"devin",displayName:"Devin",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"devin/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"devin")),"detectInstalled"),isUniversal:!0},dexto:{name:"dexto",displayName:"Dexto",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".dexto")),"detectInstalled"),isUniversal:!0},droid:{name:"droid",displayName:"Factory Droid",skillsDir:".factory/skills",globalSkillsDir:join2(home,".factory/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".factory")),"detectInstalled")},firebender:{name:"firebender",displayName:"Firebender",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".firebender/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".firebender")),"detectInstalled"),isUniversal:!0},forgecode:{name:"forgecode",displayName:"ForgeCode",skillsDir:".forge/skills",globalSkillsDir:join2(home,".forge/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".forge")),"detectInstalled")},"gemini-cli":{name:"gemini-cli",displayName:"Gemini CLI",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".gemini/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".gemini")),"detectInstalled"),isUniversal:!0},"github-copilot":{name:"github-copilot",displayName:"GitHub Copilot",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".copilot/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".copilot")),"detectInstalled"),isUniversal:!0},goose:{name:"goose",displayName:"Goose",skillsDir:".goose/skills",globalSkillsDir:join2(configHome,"goose/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"goose")),"detectInstalled")},"iflow-cli":{name:"iflow-cli",displayName:"iFlow CLI",skillsDir:".iflow/skills",globalSkillsDir:join2(home,".iflow/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".iflow")),"detectInstalled")},junie:{name:"junie",displayName:"Junie",skillsDir:".junie/skills",globalSkillsDir:join2(home,".junie/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".junie")),"detectInstalled")},kilo:{name:"kilo",displayName:"Kilo Code",skillsDir:".kilocode/skills",globalSkillsDir:join2(home,".kilocode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kilocode")),"detectInstalled")},"kimi-cli":{name:"kimi-cli",displayName:"Kimi Code CLI",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kimi")),"detectInstalled"),isUniversal:!0},"kiro-cli":{name:"kiro-cli",displayName:"Kiro CLI",skillsDir:".kiro/skills",globalSkillsDir:join2(home,".kiro/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kiro")),"detectInstalled")},kode:{name:"kode",displayName:"Kode",skillsDir:".kode/skills",globalSkillsDir:join2(home,".kode/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".kode")),"detectInstalled")},mcpjam:{name:"mcpjam",displayName:"MCPJam",skillsDir:".mcpjam/skills",globalSkillsDir:join2(home,".mcpjam/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".mcpjam")),"detectInstalled")},"mistral-vibe":{name:"mistral-vibe",displayName:"Mistral Vibe",skillsDir:".vibe/skills",globalSkillsDir:join2(vibeHome,"skills"),detectInstalled:__name(async()=>existsSync(vibeHome),"detectInstalled")},mux:{name:"mux",displayName:"Mux",skillsDir:".mux/skills",globalSkillsDir:join2(home,".mux/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".mux")),"detectInstalled")},neovate:{name:"neovate",displayName:"Neovate",skillsDir:".neovate/skills",globalSkillsDir:join2(home,".neovate/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".neovate")),"detectInstalled")},openclaw:{name:"openclaw",displayName:"OpenClaw",skillsDir:"skills",globalSkillsDir:resolveOpenClawGlobalSkillsDir(),detectInstalled:__name(async()=>detectOpenClaw(),"detectInstalled")},opencode:{name:"opencode",displayName:"OpenCode",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"opencode/skills"),detectInstalled:__name(async()=>existsSync(join2(configHome,"opencode")),"detectInstalled"),isUniversal:!0},openhands:{name:"openhands",displayName:"OpenHands",skillsDir:".openhands/skills",globalSkillsDir:join2(home,".openhands/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".openhands")),"detectInstalled")},pi:{name:"pi",displayName:"Pi",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".pi/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".pi")),"detectInstalled"),isUniversal:!0},pochi:{name:"pochi",displayName:"Pochi",skillsDir:".pochi/skills",globalSkillsDir:join2(home,".pochi/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".pochi")),"detectInstalled")},qoder:{name:"qoder",displayName:"Qoder",skillsDir:".qoder/skills",globalSkillsDir:join2(home,".qoder/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".qoder")),"detectInstalled")},"qwen-code":{name:"qwen-code",displayName:"Qwen Code",skillsDir:".qwen/skills",globalSkillsDir:join2(home,".qwen/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".qwen")),"detectInstalled")},replit:{name:"replit",displayName:"Replit",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(configHome,"agents/skills"),detectInstalled:__name(async()=>existsSync(join2(process.cwd(),".replit")),"detectInstalled"),isUniversal:!0},roo:{name:"roo",displayName:"Roo Code",skillsDir:".roo/skills",globalSkillsDir:join2(home,".roo/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".roo")),"detectInstalled")},rovodev:{name:"rovodev",displayName:"Rovo Dev",skillsDir:".rovodev/skills",globalSkillsDir:join2(home,".rovodev/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".rovodev")),"detectInstalled")},"tabnine-cli":{name:"tabnine-cli",displayName:"Tabnine CLI",skillsDir:".tabnine/agent/skills",globalSkillsDir:join2(home,".tabnine/agent/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".tabnine")),"detectInstalled")},trae:{name:"trae",displayName:"Trae",skillsDir:".trae/skills",globalSkillsDir:join2(home,".trae/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".trae")),"detectInstalled")},"trae-cn":{name:"trae-cn",displayName:"Trae CN",skillsDir:".trae/skills",globalSkillsDir:join2(home,".trae-cn/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".trae-cn")),"detectInstalled")},universal:{name:"universal",displayName:"Universal",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>!1,"detectInstalled"),isUniversal:!0},warp:{name:"warp",displayName:"Warp",skillsDir:CANONICAL_SKILLS_DIR,globalSkillsDir:join2(home,".agents/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".warp")),"detectInstalled"),isUniversal:!0},windsurf:{name:"windsurf",displayName:"Windsurf",skillsDir:".windsurf/skills",globalSkillsDir:join2(home,".codeium/windsurf/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".codeium/windsurf")),"detectInstalled")},zencoder:{name:"zencoder",displayName:"Zencoder",skillsDir:".zencoder/skills",globalSkillsDir:join2(home,".zencoder/skills"),detectInstalled:__name(async()=>existsSync(join2(home,".zencoder")),"detectInstalled")}},getSkillAgentConfig=__name(agentType=>skillAgents[agentType],"getSkillAgentConfig"),isUniversalSkillAgent=__name(agentType=>!!skillAgents[agentType].isUniversal,"isUniversalSkillAgent"),getSkillAgentDir=__name((agentType,options={})=>{let agent=skillAgents[agentType];return options.global??!1?agent.globalSkillsDir??join2(home,agent.skillsDir):join2(options.cwd??process.cwd(),agent.skillsDir)},"getSkillAgentDir"),agentConfigEntries=__name(()=>Object.values(skillAgents).map(config=>[config.name,config]),"agentConfigEntries"),getSkillAgentTypes=__name(()=>agentConfigEntries().map(([name])=>name),"getSkillAgentTypes"),isSkillAgentType=__name(value=>value in skillAgents,"isSkillAgentType"),getUniversalSkillAgents=__name(()=>agentConfigEntries().filter(([name,config])=>config.isUniversal&&name!=="universal").map(([name])=>name),"getUniversalSkillAgents"),detectInstalledSkillAgents=__name(async()=>(await Promise.all(Object.values(skillAgents).map(async config=>({name:config.name,installed:await config.detectInstalled()})))).filter(entry=>entry.installed).map(entry=>entry.name),"detectInstalledSkillAgents"),parseFrontmatter=__name(raw=>{let match=raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!match)return{data:{},content:raw};let parsed=(0,import_yaml.parse)(match[1]??"");return{data:isPlainObject(parsed)?parsed:{},content:match[2]??""}},"parseFrontmatter"),sanitizeName=__name(name=>name.toLowerCase().replace(/[^a-z0-9._]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").substring(0,255)||"unnamed-skill","sanitizeName"),fetchSkillManifestFromUrl=__name(async url=>{let controller=new AbortController,timer=setTimeout(()=>controller.abort(),DEFAULT_FETCH_TIMEOUT_MS);try{let response=await fetch(url,{signal:controller.signal});if(!response.ok)throw new Error(`Failed to fetch ${url}: HTTP ${response.status}`);let content2=await response.text(),{data:data2}=parseFrontmatter(content2);if(typeof data2.name!="string"||!data2.name)throw new Error(`Fetched SKILL.md has no "name" in its frontmatter: ${url}`);let skillName=sanitizeName(data2.name),baseDir=await mkdtemp(join2(tmpdir(),"agent-install-url-")),skillDir=join2(baseDir,skillName);return await mkdir(dirname(join2(skillDir,SKILL_MANIFEST_FILE)),{recursive:!0}),await writeFile(join2(skillDir,SKILL_MANIFEST_FILE),content2,"utf-8"),baseDir}finally{clearTimeout(timer)}},"fetchSkillManifestFromUrl"),isPathSafe=__name((basePath,targetPath)=>{let normalizedBase=normalize(resolve(basePath)),normalizedTarget=normalize(resolve(targetPath));return normalizedTarget.startsWith(normalizedBase+sep)||normalizedTarget===normalizedBase},"isPathSafe"),stripTrailingSlash=__name(input=>input.endsWith("/")?input.slice(0,-1):input,"stripTrailingSlash"),TEMP_PREFIX="agent-install-well-known-",SKILL_NAME_PATTERN=/^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/,WellKnownTimeoutError=class extends Error{static{__name(this,"WellKnownTimeoutError")}constructor(message){super(message),this.name="WellKnownTimeoutError"}},isValidWellKnownEntry=__name(value=>{if(!isPlainObject(value)||typeof value.name!="string"||!value.name||typeof value.description!="string"||!value.description||!Array.isArray(value.files)||value.files.length===0||value.name.length>1&&!SKILL_NAME_PATTERN.test(value.name)||value.name.length===1&&!/^[a-z0-9]$/.test(value.name))return!1;for(let file of value.files)if(typeof file!="string"||file.startsWith("/")||file.startsWith("\\")||file.includes(".."))return!1;return value.files.some(file=>typeof file=="string"&&file.toLowerCase()==="skill.md")},"isValidWellKnownEntry"),fetchOk=__name(async url=>{try{let response=await fetch(url,{signal:AbortSignal.timeout(DEFAULT_FETCH_TIMEOUT_MS)});return response.ok?response:null}catch(error){if(error instanceof DOMException&&error.name==="TimeoutError")throw new WellKnownTimeoutError(`Request timed out: ${url}`);return null}},"fetchOk"),buildIndexCandidates=__name(inputUrl=>{let parsed=new URL(inputUrl),basePath=stripTrailingSlash(parsed.pathname),candidates=[];for(let wellKnownPath of WELL_KNOWN_PATHS)candidates.push({indexUrl:`${parsed.protocol}//${parsed.host}${basePath}/${wellKnownPath}/${WELL_KNOWN_INDEX_FILE}`,baseUrl:`${parsed.protocol}//${parsed.host}${basePath}`,wellKnownPath}),basePath&&candidates.push({indexUrl:`${parsed.protocol}//${parsed.host}/${wellKnownPath}/${WELL_KNOWN_INDEX_FILE}`,baseUrl:`${parsed.protocol}//${parsed.host}`,wellKnownPath});return candidates},"buildIndexCandidates"),extractRequestedSkillName=__name(inputUrl=>{try{let name=new URL(inputUrl).pathname.match(/\/.well-known\/(?:agent-skills|skills)\/([^/]+)\/?$/)?.[1];return name&&name!=="index.json"?name:void 0}catch{return}},"extractRequestedSkillName"),validateIndexEntries=__name(payload=>{if(!isPlainObject(payload))return null;let{skills:skills2}=payload;return!Array.isArray(skills2)||!skills2.every(isValidWellKnownEntry)?null:skills2},"validateIndexEntries"),resolveIndex=__name(async inputUrl=>{for(let candidate of buildIndexCandidates(inputUrl)){let response=await fetchOk(candidate.indexUrl);if(!response)continue;let payload;try{payload=await response.json()}catch{continue}let entries2=validateIndexEntries(payload);if(entries2)return{entries:entries2,baseUrl:candidate.baseUrl,wellKnownPath:candidate.wellKnownPath,requestedSkillName:extractRequestedSkillName(inputUrl)}}return null},"resolveIndex"),writeSkillFiles=__name(async(resolved,entry,rootDir)=>{let skillDir=join2(rootDir,sanitizeName(entry.name));await mkdir(skillDir,{recursive:!0});let skillBaseUrl=`${stripTrailingSlash(resolved.baseUrl)}/${resolved.wellKnownPath}/${entry.name}`,installedAny=!1;return await Promise.all(entry.files.map(async relativePath=>{let targetPath=join2(skillDir,relativePath);if(!isPathSafe(skillDir,targetPath))return;let response=await fetchOk(`${skillBaseUrl}/${relativePath}`);if(!response)return;let content2=await response.text();await mkdir(dirname(targetPath),{recursive:!0}),await writeFile(targetPath,content2,"utf-8"),installedAny=!0})),installedAny},"writeSkillFiles"),fetchWellKnownSkills=__name(async inputUrl=>{let resolved=await resolveIndex(inputUrl).catch(error=>{throw error instanceof WellKnownTimeoutError?new Error(`Timed out resolving well-known skills index at ${inputUrl}. Set the source's HTTP server to respond faster, or pass a local path.`):error});if(!resolved)throw new Error(`No /.well-known/agent-skills/index.json (or fallback /.well-known/skills/index.json) found at ${inputUrl}`);let entries2=resolved.requestedSkillName?resolved.entries.filter(entry=>entry.name===resolved.requestedSkillName):resolved.entries;if(entries2.length===0)throw new Error(resolved.requestedSkillName?`Skill "${resolved.requestedSkillName}" not found in well-known index at ${inputUrl}`:`Well-known index at ${inputUrl} declares no skills`);let baseDir=await mkdtemp(join2(tmpdir(),TEMP_PREFIX));if(!(await Promise.all(entries2.map(entry=>writeSkillFiles(resolved,entry,baseDir)))).some(Boolean))throw new Error(`Failed to fetch any skill files from well-known index at ${inputUrl}`);return baseDir},"fetchWellKnownSkills"),readJsonObjectIfExists=__name(async path49=>{try{let content2=await readFile(path49,"utf-8"),parsed=JSON.parse(content2);return isPlainObject(parsed)?parsed:null}catch{return null}},"readJsonObjectIfExists"),MARKETPLACE_RELATIVE_PATH=".claude-plugin/marketplace.json",PLUGIN_RELATIVE_PATH=".claude-plugin/plugin.json",PLUGIN_SKILLS_SUBDIR="skills",isClaudeRelativePath=__name(input=>typeof input=="string"&&input.startsWith("./"),"isClaudeRelativePath"),stringValueOrEmpty=__name(input=>typeof input=="string"?input:"","stringValueOrEmpty"),resolvePluginRoot=__name(manifest=>{if(!isPlainObject(manifest.metadata))return"";let rawPluginRoot=manifest.metadata.pluginRoot;return rawPluginRoot===void 0?"":isClaudeRelativePath(rawPluginRoot)?rawPluginRoot:null},"resolvePluginRoot"),collectPluginSkillSearchDirs=__name((basePath,pluginBase,rawSkills,searchDirs)=>{if(isPathSafe(basePath,pluginBase)){if(Array.isArray(rawSkills))for(let entry of rawSkills){if(!isClaudeRelativePath(entry))continue;let skillDir=dirname(join2(pluginBase,entry));isPathSafe(basePath,skillDir)&&searchDirs.push(skillDir)}searchDirs.push(join2(pluginBase,PLUGIN_SKILLS_SUBDIR))}},"collectPluginSkillSearchDirs"),collectPluginGroupings=__name((basePath,pluginBase,pluginName,rawSkills,groupings)=>{if(!(!isPathSafe(basePath,pluginBase)||!Array.isArray(rawSkills)))for(let entry of rawSkills){if(!isClaudeRelativePath(entry))continue;let skillDir=join2(pluginBase,entry);isPathSafe(basePath,skillDir)&&groupings.set(resolve(skillDir),pluginName)}},"collectPluginGroupings"),getPluginSkillPaths=__name(async basePath=>{let searchDirs=[],marketplace=await readJsonObjectIfExists(join2(basePath,MARKETPLACE_RELATIVE_PATH));if(marketplace){let pluginRoot=resolvePluginRoot(marketplace);if(pluginRoot!==null&&Array.isArray(marketplace.plugins))for(let plugin of marketplace.plugins)isPlainObject(plugin)&&(plugin.source!==void 0&&!isClaudeRelativePath(plugin.source)||collectPluginSkillSearchDirs(basePath,join2(basePath,pluginRoot,stringValueOrEmpty(plugin.source)),plugin.skills,searchDirs))}let single=await readJsonObjectIfExists(join2(basePath,PLUGIN_RELATIVE_PATH));return single&&collectPluginSkillSearchDirs(basePath,basePath,single.skills,searchDirs),searchDirs},"getPluginSkillPaths"),getPluginGroupings=__name(async basePath=>{let groupings=new Map,marketplace=await readJsonObjectIfExists(join2(basePath,MARKETPLACE_RELATIVE_PATH));if(marketplace){let pluginRoot=resolvePluginRoot(marketplace);if(pluginRoot!==null&&Array.isArray(marketplace.plugins))for(let plugin of marketplace.plugins)isPlainObject(plugin)&&(typeof plugin.name!="string"||!plugin.name||plugin.source!==void 0&&!isClaudeRelativePath(plugin.source)||collectPluginGroupings(basePath,join2(basePath,pluginRoot,stringValueOrEmpty(plugin.source)),plugin.name,plugin.skills,groupings))}let single=await readJsonObjectIfExists(join2(basePath,PLUGIN_RELATIVE_PATH));return single&&typeof single.name=="string"&&single.name&&collectPluginGroupings(basePath,basePath,single.name,single.skills,groupings),groupings},"getPluginGroupings"),CLONE_TIMEOUT_ENV_VAR="AGENT_INSTALL_CLONE_TIMEOUT_MS",LEGACY_CLONE_TIMEOUT_ENV_VAR="SKILL_INSTALL_CLONE_TIMEOUT_MS",TEMP_CLONE_PREFIX="agent-install-",GitCloneError=class extends Error{static{__name(this,"GitCloneError")}url;kind;constructor(message,url,kind="unknown"){super(message),this.name="GitCloneError",this.url=url,this.kind=kind}get isTimeout(){return this.kind==="timeout"}get isAuthError(){return this.kind==="auth"}},resolveCloneTimeoutMs=__name(()=>{let raw=process.env[CLONE_TIMEOUT_ENV_VAR]??process.env[LEGACY_CLONE_TIMEOUT_ENV_VAR];if(!raw)return DEFAULT_CLONE_TIMEOUT_MS;let parsed=Number.parseInt(raw,10);return Number.isFinite(parsed)&&parsed>0?parsed:DEFAULT_CLONE_TIMEOUT_MS},"resolveCloneTimeoutMs"),runGit=__name((args,timeoutMs)=>new Promise(resolvePromise=>{let child=spawn("git",args,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_LFS_SKIP_SMUDGE:"1"}}),stderr="",timedOut=!1,timer=setTimeout(()=>{timedOut=!0,child.kill("SIGKILL")},timeoutMs);child.stderr.on("data",chunk=>{stderr+=chunk.toString()}),child.on("close",code2=>{clearTimeout(timer),resolvePromise({code:code2??1,stderr,timedOut})}),child.on("error",err=>{clearTimeout(timer),stderr+=err.message,resolvePromise({code:1,stderr,timedOut})})}),"runGit"),AUTH_ERROR_MARKERS=["Authentication failed","could not read Username","Permission denied","Repository not found"],isAuthErrorMessage=__name(stderr=>AUTH_ERROR_MARKERS.some(marker=>stderr.includes(marker)),"isAuthErrorMessage"),cloneRepo=__name(async(url,ref)=>{let tempDir=await mkdtemp(join2(tmpdir(),TEMP_CLONE_PREFIX)),timeoutMs=resolveCloneTimeoutMs(),args=["-c","filter.lfs.required=false","-c","filter.lfs.smudge=","-c","filter.lfs.clean=","-c","filter.lfs.process=","clone","--depth","1"];ref&&args.push("--branch",ref),args.push(url,tempDir);let{code:code2,stderr,timedOut}=await runGit(args,timeoutMs);if(code2===0)return tempDir;throw await rm(tempDir,{recursive:!0,force:!0}).catch(()=>{}),timedOut?new GitCloneError([`Clone timed out after ${Math.round(timeoutMs/MS_PER_SECOND)}s. Common causes:`,` - Large repository: raise the timeout with ${CLONE_TIMEOUT_ENV_VAR}=600000 (10m)`," - Slow network: retry, or clone manually and pass the local path to 'skill add'"," - Private repo without credentials:"," - For SSH: ssh-add -l (to check loaded keys)"," - For HTTPS: gh auth status (if using GitHub CLI)"].join(`
|
|
246
246
|
`),url,"timeout"):isAuthErrorMessage(stderr)?new GitCloneError([`Authentication failed for ${url}.`," - For private repos, ensure you have access"," - For SSH: check your keys with 'ssh -T git@github.com'"," - For HTTPS: run 'gh auth login' or configure git credentials"].join(`
|
|
247
|
-
`),url,"auth"):new GitCloneError(`Failed to clone ${url}: ${stderr.trim()||"unknown error"}`,url)},"cloneRepo"),cleanupTempDir=__name(async dir=>{let normalizedDir=normalize(resolve(dir)),normalizedTmpDir=normalize(resolve(tmpdir()));if(!normalizedDir.startsWith(normalizedTmpDir+sep)&&normalizedDir!==normalizedTmpDir)throw new Error("Attempted to clean up directory outside of temp directory");await rm(dir,{recursive:!0,force:!0})},"cleanupTempDir"),getCanonicalSkillsDir=__name((isGlobal,cwd)=>join2(isGlobal?homedir2():cwd||process.cwd(),CANONICAL_SKILLS_DIR),"getCanonicalSkillsDir"),getSkillAgentBaseDir=__name((agentType,isGlobal,cwd)=>{if(isUniversalSkillAgent(agentType))return getCanonicalSkillsDir(isGlobal,cwd);let agent=getSkillAgentConfig(agentType),baseDir=isGlobal?homedir2():cwd||process.cwd();return isGlobal?agent.globalSkillsDir??join2(baseDir,agent.skillsDir):join2(baseDir,agent.skillsDir)},"getSkillAgentBaseDir"),cleanAndCreateDirectory=__name(async path48=>{await rm(path48,{recursive:!0,force:!0}).catch(()=>{}),await mkdir(path48,{recursive:!0})},"cleanAndCreateDirectory"),resolveSymlinkTarget=__name((linkPath,linkTarget)=>resolve(dirname(linkPath),linkTarget),"resolveSymlinkTarget"),resolveParentSymlinks=__name(async path48=>{let resolved=resolve(path48),parentDir=dirname(resolved),name=basename(resolved);try{return join2(await realpath(parentDir),name)}catch{return resolved}},"resolveParentSymlinks"),isPathInsideBase=__name((basePath,targetPath)=>{let normalizedBase=resolve(basePath),normalizedTarget=resolve(targetPath);return normalizedTarget===normalizedBase||normalizedTarget.startsWith(normalizedBase+sep)},"isPathInsideBase"),copyDirectory=__name(async(src,dest,rootSrc=src)=>{await mkdir(dest,{recursive:!0});let entries2=await readdir(src,{withFileTypes:!0});await Promise.all(entries2.filter(entry=>!COPY_EXCLUDE_FILES.has(entry.name)&&!(entry.isDirectory()&©_EXCLUDE_DIRS.has(entry.name))).map(async entry=>{let srcPath=join2(src,entry.name),destPath=join2(dest,entry.name);if(entry.isSymbolicLink()){let linkRealPath=await realpath(srcPath).catch(()=>null);if(!linkRealPath||!isPathInsideBase(rootSrc,linkRealPath))return;await cp(srcPath,destPath,{dereference:!0,recursive:!0});return}if(entry.isDirectory()){await copyDirectory(srcPath,destPath,rootSrc);return}await cp(srcPath,destPath,{dereference:!1,recursive:!0})}))},"copyDirectory"),isLoopError=__name(error=>!!(error&&typeof error=="object"&&"code"in error&&error.code==="ELOOP"),"isLoopError"),createSymlink=__name(async(target,linkPath)=>{try{let resolvedTarget=resolve(target),resolvedLinkPath=resolve(linkPath),[realTarget,realLinkPath]=await Promise.all([realpath(resolvedTarget).catch(()=>resolvedTarget),realpath(resolvedLinkPath).catch(()=>resolvedLinkPath)]);if(realTarget===realLinkPath)return!0;let[realTargetWithParents,realLinkPathWithParents]=await Promise.all([resolveParentSymlinks(target),resolveParentSymlinks(linkPath)]);if(realTargetWithParents===realLinkPathWithParents)return!0;try{if((await lstat(linkPath)).isSymbolicLink()){if(resolveSymlinkTarget(linkPath,await readlink(linkPath))===resolvedTarget)return!0;await rm(linkPath)}else await rm(linkPath,{recursive:!0})}catch(error){isLoopError(error)&&await rm(linkPath,{force:!0}).catch(()=>{})}let linkDir=dirname(linkPath);return await mkdir(linkDir,{recursive:!0}),await symlink(relative(await resolveParentSymlinks(linkDir),target),linkPath,platform()==="win32"?"junction":void 0),!0}catch{return!1}},"createSymlink"),installByCopy=__name(async(skill,destination)=>(await cleanAndCreateDirectory(destination),await copyDirectory(skill.path,destination),{success:!0,path:destination,mode:"copy"}),"installByCopy"),installBySymlink=__name(async(skill,agentType,canonicalDir,agentDir,isGlobal)=>(await cleanAndCreateDirectory(canonicalDir),await copyDirectory(skill.path,canonicalDir),isGlobal&&isUniversalSkillAgent(agentType)?{success:!0,path:canonicalDir,canonicalPath:canonicalDir,mode:"symlink"}:await createSymlink(canonicalDir,agentDir)?{success:!0,path:agentDir,canonicalPath:canonicalDir,mode:"symlink"}:(await cleanAndCreateDirectory(agentDir),await copyDirectory(skill.path,agentDir),{success:!0,path:agentDir,canonicalPath:canonicalDir,mode:"symlink",symlinkFailed:!0})),"installBySymlink"),installSkillForAgent=__name(async(skill,agentType,options={})=>{let agent=skillAgents[agentType],isGlobal=options.global??!1,cwd=options.cwd||process.cwd(),installMode=options.mode??"symlink";if(isGlobal&&agent.globalSkillsDir===void 0)return{success:!1,path:"",mode:installMode,error:`${agent.displayName} does not support global skill installation`};let skillName=sanitizeName(skill.name||basename(skill.path)),canonicalBase=getCanonicalSkillsDir(isGlobal,cwd),canonicalDir=join2(canonicalBase,skillName),agentBase=getSkillAgentBaseDir(agentType,isGlobal,cwd),agentDir=join2(agentBase,skillName);if(!isPathSafe(canonicalBase,canonicalDir)||!isPathSafe(agentBase,agentDir))return{success:!1,path:agentDir,mode:installMode,error:"Invalid skill name: potential path traversal detected"};try{return installMode==="copy"?await installByCopy(skill,agentDir):await installBySymlink(skill,agentType,canonicalDir,agentDir,isGlobal)}catch(error){return{success:!1,path:agentDir,mode:installMode,error:toErrorMessage(error)}}},"installSkillForAgent"),OSC_RE=/\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,DCS_PM_APC_RE=/\x1b[P^_][\s\S]*?(?:\x1b\\)/g,CSI_RE=/\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g,SIMPLE_ESC_RE=/\x1b[\x20-\x7e]/g,C1_RE=/[\x80-\x9f]/g,CONTROL_RE2=/[\x00-\x06\x07\x08\x0b\x0c\x0d-\x1a\x1c-\x1f\x7f]/g,stripTerminalEscapes=__name(input=>input.replace(OSC_RE,"").replace(DCS_PM_APC_RE,"").replace(CSI_RE,"").replace(SIMPLE_ESC_RE,"").replace(C1_RE,"").replace(CONTROL_RE2,""),"stripTerminalEscapes"),sanitizeMetadata=__name(input=>stripTerminalEscapes(input).replace(/[\r\n]+/g," ").trim(),"sanitizeMetadata"),PRIORITY_RELATIVE_PATHS=["","skills","skills/.curated","skills/.experimental","skills/.system",".agents/skills",".aider-desk/skills",".augment/skills",".bob/skills",".claude/skills",".cline/skills",".codeartsdoer/skills",".codebuddy/skills",".codemaker/skills",".codestudio/skills",".codex/skills",".commandcode/skills",".continue/skills",".cortex/skills",".crush/skills",".cursor/skills",".factory/skills",".forge/skills",".gemini/skills",".github/skills",".goose/skills",".iflow/skills",".junie/skills",".kilocode/skills",".kiro/skills",".kode/skills",".mcpjam/skills",".mux/skills",".neovate/skills",".openhands/skills",".pi/skills",".pochi/skills",".qoder/skills",".qwen/skills",".roo/skills",".rovodev/skills",".tabnine/agent/skills",".trae/skills",".vibe/skills",".windsurf/skills",".zencoder/skills"],hasSkillManifest=__name(async dir=>{try{return(await stat(join2(dir,SKILL_MANIFEST_FILE))).isFile()}catch{return!1}},"hasSkillManifest"),parseSkillManifest=__name(async manifestPath=>{try{let content2=await readFile(manifestPath,"utf-8"),{data:data2}=parseFrontmatter(content2);if(typeof data2.name!="string"||typeof data2.description!="string"||!data2.name||!data2.description)return null;let metadata=isPlainObject(data2.metadata)?data2.metadata:void 0;return{name:sanitizeMetadata(data2.name),description:sanitizeMetadata(data2.description),path:dirname(manifestPath),rawContent:content2,metadata}}catch{return null}},"parseSkillManifest"),findSkillDirs=__name(async(dir,depth=0)=>{if(depth>5)return[];try{let[hasManifest,entries2]=await Promise.all([hasSkillManifest(dir),readdir(dir,{withFileTypes:!0}).catch(()=>[])]),currentDir=hasManifest?[dir]:[],subDirResults=await Promise.all(entries2.filter(entry=>entry.isDirectory()&&!SKIP_DISCOVERY_DIRS.has(entry.name)).map(entry=>findSkillDirs(join2(dir,entry.name),depth+1)));return[...currentDir,...subDirResults.flat()]}catch{return[]}},"findSkillDirs"),discoverSkills=__name(async(basePath,subpath,options)=>{if(subpath&&!isPathSafe(basePath,join2(basePath,subpath)))throw new Error(`Invalid subpath: "${subpath}" resolves outside the base directory. Subpath must not contain ".." segments that escape the base path.`);let searchPath=subpath?join2(basePath,subpath):basePath,seenNames=new Set,results=[],pluginGroupings=await getPluginGroupings(searchPath),enhanceSkill=__name(skill=>{let pluginName=pluginGroupings.get(resolve(skill.path));return pluginName?{...skill,pluginName}:skill},"enhanceSkill"),pluginExtraDirs=await getPluginSkillPaths(searchPath);if(await hasSkillManifest(searchPath)){let skill=await parseSkillManifest(join2(searchPath,SKILL_MANIFEST_FILE));if(skill&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name),!options?.fullDepth))return results}let prioritySearchDirs=[...PRIORITY_RELATIVE_PATHS.map(relative3=>relative3?join2(searchPath,relative3):searchPath),...pluginExtraDirs];for(let dir of prioritySearchDirs)try{let entries2=await readdir(dir,{withFileTypes:!0});for(let entry of entries2){if(!entry.isDirectory())continue;let skillDir=join2(dir,entry.name);if(!await hasSkillManifest(skillDir))continue;let skill=await parseSkillManifest(join2(skillDir,SKILL_MANIFEST_FILE));skill&&!seenNames.has(skill.name)&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name))}}catch{}if(results.length===0||options?.fullDepth){let allSkillDirs=await findSkillDirs(searchPath);for(let skillDir of allSkillDirs){let skill=await parseSkillManifest(join2(skillDir,SKILL_MANIFEST_FILE));skill&&!seenNames.has(skill.name)&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name))}}return results},"discoverSkills"),getSkillDisplayName=__name(skill=>skill.name||basename(skill.path),"getSkillDisplayName"),filterSkillsByName=__name((skills2,inputNames)=>{let normalizedInputs=inputNames.map(inputName=>inputName.toLowerCase());return skills2.filter(skill=>{let name=skill.name.toLowerCase(),displayName=getSkillDisplayName(skill).toLowerCase();return normalizedInputs.some(inputName=>inputName===name||inputName===displayName)})},"filterSkillsByName"),escapeRegex=__name(input=>input.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"escapeRegex"),sanitizeSubpath=__name(subpath=>{let segments=subpath.replace(/\\/g,"/").split("/");for(let segment of segments)if(segment==="..")throw new Error(`Unsafe subpath: "${subpath}" contains path traversal segments. Subpaths must not contain ".." components.`);return subpath},"sanitizeSubpath"),HOST_CONFIGS=[{host:"github",domain:"github.com",prefix:"github:",treePrefix:"/tree/",anchorRepo:!1},{host:"gitlab",domain:"gitlab.com",prefix:"gitlab:",treePrefix:"/-/tree/",anchorRepo:!0}],HOST_BY_NAME=new Map(HOST_CONFIGS.map(config=>[config.host,config])),HOST_BY_DOMAIN=new Map(HOST_CONFIGS.map(config=>[config.domain,config])),SSH_URL_PATTERN=/^git@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/,isLocalPath=__name(input=>isAbsolute(input)||input.startsWith("./")||input.startsWith("../")||input==="."||input===".."||/^[a-zA-Z]:[/\\]/.test(input),"isLocalPath"),isShorthandCandidate=__name(input=>!input.includes(":")&&!input.startsWith(".")&&!input.startsWith("/"),"isShorthandCandidate"),buildHostedSource=__name(({host,owner,repo,ref,subpath,skillFilter})=>{let config=HOST_BY_NAME.get(host);if(!config)throw new Error(`Unknown host: ${host}`);let cleanRepo=repo.replace(/\.git$/,""),result={type:host,url:`https://${config.domain}/${owner}/${cleanRepo}.git`};return ref&&(result.ref=ref),subpath&&(result.subpath=sanitizeSubpath(subpath)),skillFilter&&(result.skillFilter=skillFilter),result},"buildHostedSource"),buildHostUrlPatterns=__name(config=>{let domain=escapeRegex(config.domain),treePrefix=escapeRegex(config.treePrefix),repoPattern=config.anchorRepo?`${domain}/([^/]+)/([^/]+?)(?:\\.git)?/?$`:`${domain}/([^/]+)/([^/]+)`;return{treeWithPath:new RegExp(`${domain}/([^/]+)/([^/]+)${treePrefix}([^/]+)/(.+)`),tree:new RegExp(`${domain}/([^/]+)/([^/]+)${treePrefix}([^/]+)$`),repo:new RegExp(repoPattern)}},"buildHostUrlPatterns"),HOST_URL_PATTERNS=new Map(HOST_CONFIGS.map(config=>[config.host,buildHostUrlPatterns(config)])),decodeFragmentValue=__name(value=>{try{return decodeURIComponent(value)}catch{return value}},"decodeFragmentValue"),looksLikeGitSource=__name(input=>{if(input.startsWith("git@")||HOST_CONFIGS.some(config=>input.startsWith(config.prefix)))return!0;if(input.startsWith("http://")||input.startsWith("https://"))try{let parsed=new URL(input),config=HOST_BY_DOMAIN.get(parsed.hostname);if(config){let treePrefix=escapeRegex(config.treePrefix);return new RegExp(`^/[^/]+/[^/]+(?:\\.git)?(?:${treePrefix}[^/]+(?:/.*)?)?/?$`).test(parsed.pathname)}}catch{return!1}return/^https?:\/\/.+\.git(?:$|[/?])/i.test(input)?!0:isShorthandCandidate(input)&&/^([^/]+)\/([^/]+)(?:\/(.+)|@(.+))?$/.test(input)},"looksLikeGitSource"),parseFragmentRef=__name(input=>{let hashIndex=input.indexOf("#");if(hashIndex<0)return{inputWithoutFragment:input};let inputWithoutFragment=input.slice(0,hashIndex),fragment=input.slice(hashIndex+1);if(!fragment||!looksLikeGitSource(inputWithoutFragment))return{inputWithoutFragment:input};let atIndex=fragment.indexOf("@");if(atIndex===-1)return{inputWithoutFragment,ref:decodeFragmentValue(fragment)};let ref=fragment.slice(0,atIndex),skillFilter=fragment.slice(atIndex+1);return{inputWithoutFragment,ref:ref?decodeFragmentValue(ref):void 0,skillFilter:skillFilter?decodeFragmentValue(skillFilter):void 0}},"parseFragmentRef"),isDirectSkillMdUrl=__name(input=>/^https?:\/\//.test(input)&&/\bSKILL\.md(?:$|\?|#)/i.test(input),"isDirectSkillMdUrl"),EXCLUDED_WELL_KNOWN_HOSTS=new Set(["raw.githubusercontent.com"]),isWellKnownCandidate=__name(input=>{if(!/^https?:\/\//.test(input))return!1;let parsed;try{parsed=new URL(input)}catch{return!1}return!(HOST_BY_DOMAIN.has(parsed.hostname)||EXCLUDED_WELL_KNOWN_HOSTS.has(parsed.hostname)||input.endsWith(".git")||isDirectSkillMdUrl(input))},"isWellKnownCandidate"),parseHostedShorthand=__name((rest,host,fragmentRef,fragmentSkillFilter)=>{let atSkillMatch=rest.match(/^([^/]+)\/([^/@]+)@(.+)$/);if(atSkillMatch){let[,owner,repo,skillFilter]=atSkillMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef,skillFilter:fragmentSkillFilter??skillFilter})}let shorthandMatch=rest.match(/^([^/]+)\/([^/]+)(?:\/(.+?))?\/?$/);if(shorthandMatch){let[,owner,repo,subpath]=shorthandMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef,subpath,skillFilter:fragmentSkillFilter})}return null},"parseHostedShorthand"),isHostnameAuthoritative=__name((input,expectedHostname)=>{if(!input.startsWith("http://")&&!input.startsWith("https://"))return!1;try{return new URL(input).hostname===expectedHostname}catch{return!1}},"isHostnameAuthoritative"),parseHostUrl=__name((input,host,fragmentRef)=>{let config=HOST_BY_NAME.get(host);if(!config||!isHostnameAuthoritative(input,config.domain))return null;let patterns=HOST_URL_PATTERNS.get(host);if(!patterns)return null;let treeWithPathMatch=input.match(patterns.treeWithPath);if(treeWithPathMatch){let[,owner,repo,ref,subpath]=treeWithPathMatch;return buildHostedSource({host,owner,repo,ref:ref||fragmentRef,subpath})}let treeMatch=input.match(patterns.tree);if(treeMatch){let[,owner,repo,ref]=treeMatch;return buildHostedSource({host,owner,repo,ref:ref||fragmentRef})}let repoMatch=input.match(patterns.repo);if(repoMatch){let[,owner,repo]=repoMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef})}return null},"parseHostUrl"),parseSshUrl=__name((input,fragmentRef,fragmentSkillFilter)=>{let match=input.match(SSH_URL_PATTERN);if(!match)return null;let[,sshHost]=match,result={type:HOST_BY_DOMAIN.get(sshHost)?.host??"git",url:input};return fragmentRef&&(result.ref=fragmentRef),fragmentSkillFilter&&(result.skillFilter=fragmentSkillFilter),result},"parseSshUrl"),parseSkillSource=__name(input=>{if(!input||input.trim().length===0)throw new Error("Invalid skill source: input is empty. Expected a local path, owner/repo shorthand, or URL.");if(isLocalPath(input)){let resolvedPath=resolve(input);return{type:"local",url:resolvedPath,localPath:resolvedPath}}let{inputWithoutFragment,ref:fragmentRef,skillFilter:fragmentSkillFilter}=parseFragmentRef(input),normalized=inputWithoutFragment;for(let config of HOST_CONFIGS)if(normalized.startsWith(config.prefix)){let result2=parseHostedShorthand(normalized.slice(config.prefix.length),config.host,fragmentRef,fragmentSkillFilter);if(result2)return result2}if(normalized.startsWith("git@")){let sshResult=parseSshUrl(normalized,fragmentRef,fragmentSkillFilter);if(sshResult)return sshResult}for(let config of HOST_CONFIGS){let result2=parseHostUrl(normalized,config.host,fragmentRef);if(result2)return result2}if(isDirectSkillMdUrl(normalized))return{type:"url",url:normalized};if(isShorthandCandidate(normalized)){let result2=parseHostedShorthand(normalized,"github",fragmentRef,fragmentSkillFilter);if(result2)return result2}if(isWellKnownCandidate(normalized)){let wellKnownResult={type:"well-known",url:normalized};return fragmentSkillFilter&&(wellKnownResult.skillFilter=fragmentSkillFilter),wellKnownResult}let result={type:"git",url:normalized};return fragmentRef&&(result.ref=fragmentRef),result},"parseSkillSource"),resolveSource=__name(async parsed=>{if(parsed.type==="local"){if(!parsed.localPath)throw new Error("Local source is missing a resolved path");return{basePath:parsed.localPath}}if(parsed.type==="url"){let baseDir=await fetchSkillManifestFromUrl(parsed.url);return{basePath:baseDir,cleanup:__name(()=>cleanupTempDir(baseDir),"cleanup")}}if(parsed.type==="well-known"){let baseDir=await fetchWellKnownSkills(parsed.url);return{basePath:baseDir,skillFilter:parsed.skillFilter,cleanup:__name(()=>cleanupTempDir(baseDir),"cleanup")}}let cloneDir=await cloneRepo(parsed.url,parsed.ref);return{basePath:cloneDir,subpath:parsed.subpath,skillFilter:parsed.skillFilter,cleanup:__name(()=>cleanupTempDir(cloneDir),"cleanup")}},"resolveSource"),resolveTargetAgents=__name(async requested=>{if(requested&&requested.length>0)return requested;let installed=await detectInstalledSkillAgents();return installed.length>0?installed:getUniversalSkillAgents()},"resolveTargetAgents"),resolveSkillFilters=__name((explicit,fromSource)=>{if(explicit&&explicit.length>0)return explicit;if(fromSource)return[fromSource]},"resolveSkillFilters"),installSkillsFromSource=__name(async options=>{let resolved=await resolveSource(parseSkillSource(options.source));try{let filters2=resolveSkillFilters(options.skills,resolved.skillFilter),discovered=await discoverSkills(resolved.basePath,resolved.subpath),skills2=filters2?filterSkillsByName(discovered,filters2):discovered;if(skills2.length===0)return{installed:[],failed:[],skills:[]};let targetAgents=await resolveTargetAgents(options.agents),installed=[],failed=[];for(let skill of skills2)for(let agent of targetAgents){let result=await installSkillForAgent(skill,agent,{global:options.global,cwd:options.cwd,mode:options.mode});result.success?installed.push({skill:skill.name,agent,path:result.path,canonicalPath:result.canonicalPath,mode:result.mode,symlinkFailed:result.symlinkFailed}):failed.push({skill:skill.name,agent,error:result.error??"Unknown error"})}return{installed,failed,skills:skills2}}finally{await resolved.cleanup?.().catch(()=>{})}},"installSkillsFromSource")}});var CharacterCodes,init_scanner=__esm({"../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js"(){"use strict";(function(CharacterCodes2){CharacterCodes2[CharacterCodes2.lineFeed=10]="lineFeed",CharacterCodes2[CharacterCodes2.carriageReturn=13]="carriageReturn",CharacterCodes2[CharacterCodes2.space=32]="space",CharacterCodes2[CharacterCodes2._0=48]="_0",CharacterCodes2[CharacterCodes2._1=49]="_1",CharacterCodes2[CharacterCodes2._2=50]="_2",CharacterCodes2[CharacterCodes2._3=51]="_3",CharacterCodes2[CharacterCodes2._4=52]="_4",CharacterCodes2[CharacterCodes2._5=53]="_5",CharacterCodes2[CharacterCodes2._6=54]="_6",CharacterCodes2[CharacterCodes2._7=55]="_7",CharacterCodes2[CharacterCodes2._8=56]="_8",CharacterCodes2[CharacterCodes2._9=57]="_9",CharacterCodes2[CharacterCodes2.a=97]="a",CharacterCodes2[CharacterCodes2.b=98]="b",CharacterCodes2[CharacterCodes2.c=99]="c",CharacterCodes2[CharacterCodes2.d=100]="d",CharacterCodes2[CharacterCodes2.e=101]="e",CharacterCodes2[CharacterCodes2.f=102]="f",CharacterCodes2[CharacterCodes2.g=103]="g",CharacterCodes2[CharacterCodes2.h=104]="h",CharacterCodes2[CharacterCodes2.i=105]="i",CharacterCodes2[CharacterCodes2.j=106]="j",CharacterCodes2[CharacterCodes2.k=107]="k",CharacterCodes2[CharacterCodes2.l=108]="l",CharacterCodes2[CharacterCodes2.m=109]="m",CharacterCodes2[CharacterCodes2.n=110]="n",CharacterCodes2[CharacterCodes2.o=111]="o",CharacterCodes2[CharacterCodes2.p=112]="p",CharacterCodes2[CharacterCodes2.q=113]="q",CharacterCodes2[CharacterCodes2.r=114]="r",CharacterCodes2[CharacterCodes2.s=115]="s",CharacterCodes2[CharacterCodes2.t=116]="t",CharacterCodes2[CharacterCodes2.u=117]="u",CharacterCodes2[CharacterCodes2.v=118]="v",CharacterCodes2[CharacterCodes2.w=119]="w",CharacterCodes2[CharacterCodes2.x=120]="x",CharacterCodes2[CharacterCodes2.y=121]="y",CharacterCodes2[CharacterCodes2.z=122]="z",CharacterCodes2[CharacterCodes2.A=65]="A",CharacterCodes2[CharacterCodes2.B=66]="B",CharacterCodes2[CharacterCodes2.C=67]="C",CharacterCodes2[CharacterCodes2.D=68]="D",CharacterCodes2[CharacterCodes2.E=69]="E",CharacterCodes2[CharacterCodes2.F=70]="F",CharacterCodes2[CharacterCodes2.G=71]="G",CharacterCodes2[CharacterCodes2.H=72]="H",CharacterCodes2[CharacterCodes2.I=73]="I",CharacterCodes2[CharacterCodes2.J=74]="J",CharacterCodes2[CharacterCodes2.K=75]="K",CharacterCodes2[CharacterCodes2.L=76]="L",CharacterCodes2[CharacterCodes2.M=77]="M",CharacterCodes2[CharacterCodes2.N=78]="N",CharacterCodes2[CharacterCodes2.O=79]="O",CharacterCodes2[CharacterCodes2.P=80]="P",CharacterCodes2[CharacterCodes2.Q=81]="Q",CharacterCodes2[CharacterCodes2.R=82]="R",CharacterCodes2[CharacterCodes2.S=83]="S",CharacterCodes2[CharacterCodes2.T=84]="T",CharacterCodes2[CharacterCodes2.U=85]="U",CharacterCodes2[CharacterCodes2.V=86]="V",CharacterCodes2[CharacterCodes2.W=87]="W",CharacterCodes2[CharacterCodes2.X=88]="X",CharacterCodes2[CharacterCodes2.Y=89]="Y",CharacterCodes2[CharacterCodes2.Z=90]="Z",CharacterCodes2[CharacterCodes2.asterisk=42]="asterisk",CharacterCodes2[CharacterCodes2.backslash=92]="backslash",CharacterCodes2[CharacterCodes2.closeBrace=125]="closeBrace",CharacterCodes2[CharacterCodes2.closeBracket=93]="closeBracket",CharacterCodes2[CharacterCodes2.colon=58]="colon",CharacterCodes2[CharacterCodes2.comma=44]="comma",CharacterCodes2[CharacterCodes2.dot=46]="dot",CharacterCodes2[CharacterCodes2.doubleQuote=34]="doubleQuote",CharacterCodes2[CharacterCodes2.minus=45]="minus",CharacterCodes2[CharacterCodes2.openBrace=123]="openBrace",CharacterCodes2[CharacterCodes2.openBracket=91]="openBracket",CharacterCodes2[CharacterCodes2.plus=43]="plus",CharacterCodes2[CharacterCodes2.slash=47]="slash",CharacterCodes2[CharacterCodes2.formFeed=12]="formFeed",CharacterCodes2[CharacterCodes2.tab=9]="tab"})(CharacterCodes||(CharacterCodes={}))}});var cachedSpaces,maxCachedValues,cachedBreakLinesWithSpaces,init_string_intern=__esm({"../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js"(){cachedSpaces=new Array(20).fill(0).map((_2,index2)=>" ".repeat(index2)),maxCachedValues=200,cachedBreakLinesWithSpaces={" ":{"\n":new Array(maxCachedValues).fill(0).map((_2,index2)=>`
|
|
247
|
+
`),url,"auth"):new GitCloneError(`Failed to clone ${url}: ${stderr.trim()||"unknown error"}`,url)},"cloneRepo"),cleanupTempDir=__name(async dir=>{let normalizedDir=normalize(resolve(dir)),normalizedTmpDir=normalize(resolve(tmpdir()));if(!normalizedDir.startsWith(normalizedTmpDir+sep)&&normalizedDir!==normalizedTmpDir)throw new Error("Attempted to clean up directory outside of temp directory");await rm(dir,{recursive:!0,force:!0})},"cleanupTempDir"),getCanonicalSkillsDir=__name((isGlobal,cwd)=>join2(isGlobal?homedir2():cwd||process.cwd(),CANONICAL_SKILLS_DIR),"getCanonicalSkillsDir"),getSkillAgentBaseDir=__name((agentType,isGlobal,cwd)=>{if(isUniversalSkillAgent(agentType))return getCanonicalSkillsDir(isGlobal,cwd);let agent=getSkillAgentConfig(agentType),baseDir=isGlobal?homedir2():cwd||process.cwd();return isGlobal?agent.globalSkillsDir??join2(baseDir,agent.skillsDir):join2(baseDir,agent.skillsDir)},"getSkillAgentBaseDir"),cleanAndCreateDirectory=__name(async path49=>{await rm(path49,{recursive:!0,force:!0}).catch(()=>{}),await mkdir(path49,{recursive:!0})},"cleanAndCreateDirectory"),resolveSymlinkTarget=__name((linkPath,linkTarget)=>resolve(dirname(linkPath),linkTarget),"resolveSymlinkTarget"),resolveParentSymlinks=__name(async path49=>{let resolved=resolve(path49),parentDir=dirname(resolved),name=basename(resolved);try{return join2(await realpath(parentDir),name)}catch{return resolved}},"resolveParentSymlinks"),isPathInsideBase=__name((basePath,targetPath)=>{let normalizedBase=resolve(basePath),normalizedTarget=resolve(targetPath);return normalizedTarget===normalizedBase||normalizedTarget.startsWith(normalizedBase+sep)},"isPathInsideBase"),copyDirectory=__name(async(src,dest,rootSrc=src)=>{await mkdir(dest,{recursive:!0});let entries2=await readdir(src,{withFileTypes:!0});await Promise.all(entries2.filter(entry=>!COPY_EXCLUDE_FILES.has(entry.name)&&!(entry.isDirectory()&©_EXCLUDE_DIRS.has(entry.name))).map(async entry=>{let srcPath=join2(src,entry.name),destPath=join2(dest,entry.name);if(entry.isSymbolicLink()){let linkRealPath=await realpath(srcPath).catch(()=>null);if(!linkRealPath||!isPathInsideBase(rootSrc,linkRealPath))return;await cp(srcPath,destPath,{dereference:!0,recursive:!0});return}if(entry.isDirectory()){await copyDirectory(srcPath,destPath,rootSrc);return}await cp(srcPath,destPath,{dereference:!1,recursive:!0})}))},"copyDirectory"),isLoopError=__name(error=>!!(error&&typeof error=="object"&&"code"in error&&error.code==="ELOOP"),"isLoopError"),createSymlink=__name(async(target,linkPath)=>{try{let resolvedTarget=resolve(target),resolvedLinkPath=resolve(linkPath),[realTarget,realLinkPath]=await Promise.all([realpath(resolvedTarget).catch(()=>resolvedTarget),realpath(resolvedLinkPath).catch(()=>resolvedLinkPath)]);if(realTarget===realLinkPath)return!0;let[realTargetWithParents,realLinkPathWithParents]=await Promise.all([resolveParentSymlinks(target),resolveParentSymlinks(linkPath)]);if(realTargetWithParents===realLinkPathWithParents)return!0;try{if((await lstat(linkPath)).isSymbolicLink()){if(resolveSymlinkTarget(linkPath,await readlink(linkPath))===resolvedTarget)return!0;await rm(linkPath)}else await rm(linkPath,{recursive:!0})}catch(error){isLoopError(error)&&await rm(linkPath,{force:!0}).catch(()=>{})}let linkDir=dirname(linkPath);return await mkdir(linkDir,{recursive:!0}),await symlink(relative(await resolveParentSymlinks(linkDir),target),linkPath,platform()==="win32"?"junction":void 0),!0}catch{return!1}},"createSymlink"),installByCopy=__name(async(skill,destination)=>(await cleanAndCreateDirectory(destination),await copyDirectory(skill.path,destination),{success:!0,path:destination,mode:"copy"}),"installByCopy"),installBySymlink=__name(async(skill,agentType,canonicalDir,agentDir,isGlobal)=>(await cleanAndCreateDirectory(canonicalDir),await copyDirectory(skill.path,canonicalDir),isGlobal&&isUniversalSkillAgent(agentType)?{success:!0,path:canonicalDir,canonicalPath:canonicalDir,mode:"symlink"}:await createSymlink(canonicalDir,agentDir)?{success:!0,path:agentDir,canonicalPath:canonicalDir,mode:"symlink"}:(await cleanAndCreateDirectory(agentDir),await copyDirectory(skill.path,agentDir),{success:!0,path:agentDir,canonicalPath:canonicalDir,mode:"symlink",symlinkFailed:!0})),"installBySymlink"),installSkillForAgent=__name(async(skill,agentType,options={})=>{let agent=skillAgents[agentType],isGlobal=options.global??!1,cwd=options.cwd||process.cwd(),installMode=options.mode??"symlink";if(isGlobal&&agent.globalSkillsDir===void 0)return{success:!1,path:"",mode:installMode,error:`${agent.displayName} does not support global skill installation`};let skillName=sanitizeName(skill.name||basename(skill.path)),canonicalBase=getCanonicalSkillsDir(isGlobal,cwd),canonicalDir=join2(canonicalBase,skillName),agentBase=getSkillAgentBaseDir(agentType,isGlobal,cwd),agentDir=join2(agentBase,skillName);if(!isPathSafe(canonicalBase,canonicalDir)||!isPathSafe(agentBase,agentDir))return{success:!1,path:agentDir,mode:installMode,error:"Invalid skill name: potential path traversal detected"};try{return installMode==="copy"?await installByCopy(skill,agentDir):await installBySymlink(skill,agentType,canonicalDir,agentDir,isGlobal)}catch(error){return{success:!1,path:agentDir,mode:installMode,error:toErrorMessage(error)}}},"installSkillForAgent"),OSC_RE=/\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,DCS_PM_APC_RE=/\x1b[P^_][\s\S]*?(?:\x1b\\)/g,CSI_RE=/\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g,SIMPLE_ESC_RE=/\x1b[\x20-\x7e]/g,C1_RE=/[\x80-\x9f]/g,CONTROL_RE2=/[\x00-\x06\x07\x08\x0b\x0c\x0d-\x1a\x1c-\x1f\x7f]/g,stripTerminalEscapes=__name(input=>input.replace(OSC_RE,"").replace(DCS_PM_APC_RE,"").replace(CSI_RE,"").replace(SIMPLE_ESC_RE,"").replace(C1_RE,"").replace(CONTROL_RE2,""),"stripTerminalEscapes"),sanitizeMetadata=__name(input=>stripTerminalEscapes(input).replace(/[\r\n]+/g," ").trim(),"sanitizeMetadata"),PRIORITY_RELATIVE_PATHS=["","skills","skills/.curated","skills/.experimental","skills/.system",".agents/skills",".aider-desk/skills",".augment/skills",".bob/skills",".claude/skills",".cline/skills",".codeartsdoer/skills",".codebuddy/skills",".codemaker/skills",".codestudio/skills",".codex/skills",".commandcode/skills",".continue/skills",".cortex/skills",".crush/skills",".cursor/skills",".factory/skills",".forge/skills",".gemini/skills",".github/skills",".goose/skills",".iflow/skills",".junie/skills",".kilocode/skills",".kiro/skills",".kode/skills",".mcpjam/skills",".mux/skills",".neovate/skills",".openhands/skills",".pi/skills",".pochi/skills",".qoder/skills",".qwen/skills",".roo/skills",".rovodev/skills",".tabnine/agent/skills",".trae/skills",".vibe/skills",".windsurf/skills",".zencoder/skills"],hasSkillManifest=__name(async dir=>{try{return(await stat(join2(dir,SKILL_MANIFEST_FILE))).isFile()}catch{return!1}},"hasSkillManifest"),parseSkillManifest=__name(async manifestPath=>{try{let content2=await readFile(manifestPath,"utf-8"),{data:data2}=parseFrontmatter(content2);if(typeof data2.name!="string"||typeof data2.description!="string"||!data2.name||!data2.description)return null;let metadata=isPlainObject(data2.metadata)?data2.metadata:void 0;return{name:sanitizeMetadata(data2.name),description:sanitizeMetadata(data2.description),path:dirname(manifestPath),rawContent:content2,metadata}}catch{return null}},"parseSkillManifest"),findSkillDirs=__name(async(dir,depth=0)=>{if(depth>5)return[];try{let[hasManifest,entries2]=await Promise.all([hasSkillManifest(dir),readdir(dir,{withFileTypes:!0}).catch(()=>[])]),currentDir=hasManifest?[dir]:[],subDirResults=await Promise.all(entries2.filter(entry=>entry.isDirectory()&&!SKIP_DISCOVERY_DIRS.has(entry.name)).map(entry=>findSkillDirs(join2(dir,entry.name),depth+1)));return[...currentDir,...subDirResults.flat()]}catch{return[]}},"findSkillDirs"),discoverSkills=__name(async(basePath,subpath,options)=>{if(subpath&&!isPathSafe(basePath,join2(basePath,subpath)))throw new Error(`Invalid subpath: "${subpath}" resolves outside the base directory. Subpath must not contain ".." segments that escape the base path.`);let searchPath=subpath?join2(basePath,subpath):basePath,seenNames=new Set,results=[],pluginGroupings=await getPluginGroupings(searchPath),enhanceSkill=__name(skill=>{let pluginName=pluginGroupings.get(resolve(skill.path));return pluginName?{...skill,pluginName}:skill},"enhanceSkill"),pluginExtraDirs=await getPluginSkillPaths(searchPath);if(await hasSkillManifest(searchPath)){let skill=await parseSkillManifest(join2(searchPath,SKILL_MANIFEST_FILE));if(skill&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name),!options?.fullDepth))return results}let prioritySearchDirs=[...PRIORITY_RELATIVE_PATHS.map(relative3=>relative3?join2(searchPath,relative3):searchPath),...pluginExtraDirs];for(let dir of prioritySearchDirs)try{let entries2=await readdir(dir,{withFileTypes:!0});for(let entry of entries2){if(!entry.isDirectory())continue;let skillDir=join2(dir,entry.name);if(!await hasSkillManifest(skillDir))continue;let skill=await parseSkillManifest(join2(skillDir,SKILL_MANIFEST_FILE));skill&&!seenNames.has(skill.name)&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name))}}catch{}if(results.length===0||options?.fullDepth){let allSkillDirs=await findSkillDirs(searchPath);for(let skillDir of allSkillDirs){let skill=await parseSkillManifest(join2(skillDir,SKILL_MANIFEST_FILE));skill&&!seenNames.has(skill.name)&&(results.push(enhanceSkill(skill)),seenNames.add(skill.name))}}return results},"discoverSkills"),getSkillDisplayName=__name(skill=>skill.name||basename(skill.path),"getSkillDisplayName"),filterSkillsByName=__name((skills2,inputNames)=>{let normalizedInputs=inputNames.map(inputName=>inputName.toLowerCase());return skills2.filter(skill=>{let name=skill.name.toLowerCase(),displayName=getSkillDisplayName(skill).toLowerCase();return normalizedInputs.some(inputName=>inputName===name||inputName===displayName)})},"filterSkillsByName"),escapeRegex=__name(input=>input.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"escapeRegex"),sanitizeSubpath=__name(subpath=>{let segments=subpath.replace(/\\/g,"/").split("/");for(let segment of segments)if(segment==="..")throw new Error(`Unsafe subpath: "${subpath}" contains path traversal segments. Subpaths must not contain ".." components.`);return subpath},"sanitizeSubpath"),HOST_CONFIGS=[{host:"github",domain:"github.com",prefix:"github:",treePrefix:"/tree/",anchorRepo:!1},{host:"gitlab",domain:"gitlab.com",prefix:"gitlab:",treePrefix:"/-/tree/",anchorRepo:!0}],HOST_BY_NAME=new Map(HOST_CONFIGS.map(config=>[config.host,config])),HOST_BY_DOMAIN=new Map(HOST_CONFIGS.map(config=>[config.domain,config])),SSH_URL_PATTERN=/^git@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/,isLocalPath=__name(input=>isAbsolute(input)||input.startsWith("./")||input.startsWith("../")||input==="."||input===".."||/^[a-zA-Z]:[/\\]/.test(input),"isLocalPath"),isShorthandCandidate=__name(input=>!input.includes(":")&&!input.startsWith(".")&&!input.startsWith("/"),"isShorthandCandidate"),buildHostedSource=__name(({host,owner,repo,ref,subpath,skillFilter})=>{let config=HOST_BY_NAME.get(host);if(!config)throw new Error(`Unknown host: ${host}`);let cleanRepo=repo.replace(/\.git$/,""),result={type:host,url:`https://${config.domain}/${owner}/${cleanRepo}.git`};return ref&&(result.ref=ref),subpath&&(result.subpath=sanitizeSubpath(subpath)),skillFilter&&(result.skillFilter=skillFilter),result},"buildHostedSource"),buildHostUrlPatterns=__name(config=>{let domain=escapeRegex(config.domain),treePrefix=escapeRegex(config.treePrefix),repoPattern=config.anchorRepo?`${domain}/([^/]+)/([^/]+?)(?:\\.git)?/?$`:`${domain}/([^/]+)/([^/]+)`;return{treeWithPath:new RegExp(`${domain}/([^/]+)/([^/]+)${treePrefix}([^/]+)/(.+)`),tree:new RegExp(`${domain}/([^/]+)/([^/]+)${treePrefix}([^/]+)$`),repo:new RegExp(repoPattern)}},"buildHostUrlPatterns"),HOST_URL_PATTERNS=new Map(HOST_CONFIGS.map(config=>[config.host,buildHostUrlPatterns(config)])),decodeFragmentValue=__name(value=>{try{return decodeURIComponent(value)}catch{return value}},"decodeFragmentValue"),looksLikeGitSource=__name(input=>{if(input.startsWith("git@")||HOST_CONFIGS.some(config=>input.startsWith(config.prefix)))return!0;if(input.startsWith("http://")||input.startsWith("https://"))try{let parsed=new URL(input),config=HOST_BY_DOMAIN.get(parsed.hostname);if(config){let treePrefix=escapeRegex(config.treePrefix);return new RegExp(`^/[^/]+/[^/]+(?:\\.git)?(?:${treePrefix}[^/]+(?:/.*)?)?/?$`).test(parsed.pathname)}}catch{return!1}return/^https?:\/\/.+\.git(?:$|[/?])/i.test(input)?!0:isShorthandCandidate(input)&&/^([^/]+)\/([^/]+)(?:\/(.+)|@(.+))?$/.test(input)},"looksLikeGitSource"),parseFragmentRef=__name(input=>{let hashIndex=input.indexOf("#");if(hashIndex<0)return{inputWithoutFragment:input};let inputWithoutFragment=input.slice(0,hashIndex),fragment=input.slice(hashIndex+1);if(!fragment||!looksLikeGitSource(inputWithoutFragment))return{inputWithoutFragment:input};let atIndex=fragment.indexOf("@");if(atIndex===-1)return{inputWithoutFragment,ref:decodeFragmentValue(fragment)};let ref=fragment.slice(0,atIndex),skillFilter=fragment.slice(atIndex+1);return{inputWithoutFragment,ref:ref?decodeFragmentValue(ref):void 0,skillFilter:skillFilter?decodeFragmentValue(skillFilter):void 0}},"parseFragmentRef"),isDirectSkillMdUrl=__name(input=>/^https?:\/\//.test(input)&&/\bSKILL\.md(?:$|\?|#)/i.test(input),"isDirectSkillMdUrl"),EXCLUDED_WELL_KNOWN_HOSTS=new Set(["raw.githubusercontent.com"]),isWellKnownCandidate=__name(input=>{if(!/^https?:\/\//.test(input))return!1;let parsed;try{parsed=new URL(input)}catch{return!1}return!(HOST_BY_DOMAIN.has(parsed.hostname)||EXCLUDED_WELL_KNOWN_HOSTS.has(parsed.hostname)||input.endsWith(".git")||isDirectSkillMdUrl(input))},"isWellKnownCandidate"),parseHostedShorthand=__name((rest,host,fragmentRef,fragmentSkillFilter)=>{let atSkillMatch=rest.match(/^([^/]+)\/([^/@]+)@(.+)$/);if(atSkillMatch){let[,owner,repo,skillFilter]=atSkillMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef,skillFilter:fragmentSkillFilter??skillFilter})}let shorthandMatch=rest.match(/^([^/]+)\/([^/]+)(?:\/(.+?))?\/?$/);if(shorthandMatch){let[,owner,repo,subpath]=shorthandMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef,subpath,skillFilter:fragmentSkillFilter})}return null},"parseHostedShorthand"),isHostnameAuthoritative=__name((input,expectedHostname)=>{if(!input.startsWith("http://")&&!input.startsWith("https://"))return!1;try{return new URL(input).hostname===expectedHostname}catch{return!1}},"isHostnameAuthoritative"),parseHostUrl=__name((input,host,fragmentRef)=>{let config=HOST_BY_NAME.get(host);if(!config||!isHostnameAuthoritative(input,config.domain))return null;let patterns=HOST_URL_PATTERNS.get(host);if(!patterns)return null;let treeWithPathMatch=input.match(patterns.treeWithPath);if(treeWithPathMatch){let[,owner,repo,ref,subpath]=treeWithPathMatch;return buildHostedSource({host,owner,repo,ref:ref||fragmentRef,subpath})}let treeMatch=input.match(patterns.tree);if(treeMatch){let[,owner,repo,ref]=treeMatch;return buildHostedSource({host,owner,repo,ref:ref||fragmentRef})}let repoMatch=input.match(patterns.repo);if(repoMatch){let[,owner,repo]=repoMatch;return buildHostedSource({host,owner,repo,ref:fragmentRef})}return null},"parseHostUrl"),parseSshUrl=__name((input,fragmentRef,fragmentSkillFilter)=>{let match=input.match(SSH_URL_PATTERN);if(!match)return null;let[,sshHost]=match,result={type:HOST_BY_DOMAIN.get(sshHost)?.host??"git",url:input};return fragmentRef&&(result.ref=fragmentRef),fragmentSkillFilter&&(result.skillFilter=fragmentSkillFilter),result},"parseSshUrl"),parseSkillSource=__name(input=>{if(!input||input.trim().length===0)throw new Error("Invalid skill source: input is empty. Expected a local path, owner/repo shorthand, or URL.");if(isLocalPath(input)){let resolvedPath=resolve(input);return{type:"local",url:resolvedPath,localPath:resolvedPath}}let{inputWithoutFragment,ref:fragmentRef,skillFilter:fragmentSkillFilter}=parseFragmentRef(input),normalized=inputWithoutFragment;for(let config of HOST_CONFIGS)if(normalized.startsWith(config.prefix)){let result2=parseHostedShorthand(normalized.slice(config.prefix.length),config.host,fragmentRef,fragmentSkillFilter);if(result2)return result2}if(normalized.startsWith("git@")){let sshResult=parseSshUrl(normalized,fragmentRef,fragmentSkillFilter);if(sshResult)return sshResult}for(let config of HOST_CONFIGS){let result2=parseHostUrl(normalized,config.host,fragmentRef);if(result2)return result2}if(isDirectSkillMdUrl(normalized))return{type:"url",url:normalized};if(isShorthandCandidate(normalized)){let result2=parseHostedShorthand(normalized,"github",fragmentRef,fragmentSkillFilter);if(result2)return result2}if(isWellKnownCandidate(normalized)){let wellKnownResult={type:"well-known",url:normalized};return fragmentSkillFilter&&(wellKnownResult.skillFilter=fragmentSkillFilter),wellKnownResult}let result={type:"git",url:normalized};return fragmentRef&&(result.ref=fragmentRef),result},"parseSkillSource"),resolveSource=__name(async parsed=>{if(parsed.type==="local"){if(!parsed.localPath)throw new Error("Local source is missing a resolved path");return{basePath:parsed.localPath}}if(parsed.type==="url"){let baseDir=await fetchSkillManifestFromUrl(parsed.url);return{basePath:baseDir,cleanup:__name(()=>cleanupTempDir(baseDir),"cleanup")}}if(parsed.type==="well-known"){let baseDir=await fetchWellKnownSkills(parsed.url);return{basePath:baseDir,skillFilter:parsed.skillFilter,cleanup:__name(()=>cleanupTempDir(baseDir),"cleanup")}}let cloneDir=await cloneRepo(parsed.url,parsed.ref);return{basePath:cloneDir,subpath:parsed.subpath,skillFilter:parsed.skillFilter,cleanup:__name(()=>cleanupTempDir(cloneDir),"cleanup")}},"resolveSource"),resolveTargetAgents=__name(async requested=>{if(requested&&requested.length>0)return requested;let installed=await detectInstalledSkillAgents();return installed.length>0?installed:getUniversalSkillAgents()},"resolveTargetAgents"),resolveSkillFilters=__name((explicit,fromSource)=>{if(explicit&&explicit.length>0)return explicit;if(fromSource)return[fromSource]},"resolveSkillFilters"),installSkillsFromSource=__name(async options=>{let resolved=await resolveSource(parseSkillSource(options.source));try{let filters2=resolveSkillFilters(options.skills,resolved.skillFilter),discovered=await discoverSkills(resolved.basePath,resolved.subpath),skills2=filters2?filterSkillsByName(discovered,filters2):discovered;if(skills2.length===0)return{installed:[],failed:[],skills:[]};let targetAgents=await resolveTargetAgents(options.agents),installed=[],failed=[];for(let skill of skills2)for(let agent of targetAgents){let result=await installSkillForAgent(skill,agent,{global:options.global,cwd:options.cwd,mode:options.mode});result.success?installed.push({skill:skill.name,agent,path:result.path,canonicalPath:result.canonicalPath,mode:result.mode,symlinkFailed:result.symlinkFailed}):failed.push({skill:skill.name,agent,error:result.error??"Unknown error"})}return{installed,failed,skills:skills2}}finally{await resolved.cleanup?.().catch(()=>{})}},"installSkillsFromSource")}});var CharacterCodes,init_scanner=__esm({"../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js"(){"use strict";(function(CharacterCodes2){CharacterCodes2[CharacterCodes2.lineFeed=10]="lineFeed",CharacterCodes2[CharacterCodes2.carriageReturn=13]="carriageReturn",CharacterCodes2[CharacterCodes2.space=32]="space",CharacterCodes2[CharacterCodes2._0=48]="_0",CharacterCodes2[CharacterCodes2._1=49]="_1",CharacterCodes2[CharacterCodes2._2=50]="_2",CharacterCodes2[CharacterCodes2._3=51]="_3",CharacterCodes2[CharacterCodes2._4=52]="_4",CharacterCodes2[CharacterCodes2._5=53]="_5",CharacterCodes2[CharacterCodes2._6=54]="_6",CharacterCodes2[CharacterCodes2._7=55]="_7",CharacterCodes2[CharacterCodes2._8=56]="_8",CharacterCodes2[CharacterCodes2._9=57]="_9",CharacterCodes2[CharacterCodes2.a=97]="a",CharacterCodes2[CharacterCodes2.b=98]="b",CharacterCodes2[CharacterCodes2.c=99]="c",CharacterCodes2[CharacterCodes2.d=100]="d",CharacterCodes2[CharacterCodes2.e=101]="e",CharacterCodes2[CharacterCodes2.f=102]="f",CharacterCodes2[CharacterCodes2.g=103]="g",CharacterCodes2[CharacterCodes2.h=104]="h",CharacterCodes2[CharacterCodes2.i=105]="i",CharacterCodes2[CharacterCodes2.j=106]="j",CharacterCodes2[CharacterCodes2.k=107]="k",CharacterCodes2[CharacterCodes2.l=108]="l",CharacterCodes2[CharacterCodes2.m=109]="m",CharacterCodes2[CharacterCodes2.n=110]="n",CharacterCodes2[CharacterCodes2.o=111]="o",CharacterCodes2[CharacterCodes2.p=112]="p",CharacterCodes2[CharacterCodes2.q=113]="q",CharacterCodes2[CharacterCodes2.r=114]="r",CharacterCodes2[CharacterCodes2.s=115]="s",CharacterCodes2[CharacterCodes2.t=116]="t",CharacterCodes2[CharacterCodes2.u=117]="u",CharacterCodes2[CharacterCodes2.v=118]="v",CharacterCodes2[CharacterCodes2.w=119]="w",CharacterCodes2[CharacterCodes2.x=120]="x",CharacterCodes2[CharacterCodes2.y=121]="y",CharacterCodes2[CharacterCodes2.z=122]="z",CharacterCodes2[CharacterCodes2.A=65]="A",CharacterCodes2[CharacterCodes2.B=66]="B",CharacterCodes2[CharacterCodes2.C=67]="C",CharacterCodes2[CharacterCodes2.D=68]="D",CharacterCodes2[CharacterCodes2.E=69]="E",CharacterCodes2[CharacterCodes2.F=70]="F",CharacterCodes2[CharacterCodes2.G=71]="G",CharacterCodes2[CharacterCodes2.H=72]="H",CharacterCodes2[CharacterCodes2.I=73]="I",CharacterCodes2[CharacterCodes2.J=74]="J",CharacterCodes2[CharacterCodes2.K=75]="K",CharacterCodes2[CharacterCodes2.L=76]="L",CharacterCodes2[CharacterCodes2.M=77]="M",CharacterCodes2[CharacterCodes2.N=78]="N",CharacterCodes2[CharacterCodes2.O=79]="O",CharacterCodes2[CharacterCodes2.P=80]="P",CharacterCodes2[CharacterCodes2.Q=81]="Q",CharacterCodes2[CharacterCodes2.R=82]="R",CharacterCodes2[CharacterCodes2.S=83]="S",CharacterCodes2[CharacterCodes2.T=84]="T",CharacterCodes2[CharacterCodes2.U=85]="U",CharacterCodes2[CharacterCodes2.V=86]="V",CharacterCodes2[CharacterCodes2.W=87]="W",CharacterCodes2[CharacterCodes2.X=88]="X",CharacterCodes2[CharacterCodes2.Y=89]="Y",CharacterCodes2[CharacterCodes2.Z=90]="Z",CharacterCodes2[CharacterCodes2.asterisk=42]="asterisk",CharacterCodes2[CharacterCodes2.backslash=92]="backslash",CharacterCodes2[CharacterCodes2.closeBrace=125]="closeBrace",CharacterCodes2[CharacterCodes2.closeBracket=93]="closeBracket",CharacterCodes2[CharacterCodes2.colon=58]="colon",CharacterCodes2[CharacterCodes2.comma=44]="comma",CharacterCodes2[CharacterCodes2.dot=46]="dot",CharacterCodes2[CharacterCodes2.doubleQuote=34]="doubleQuote",CharacterCodes2[CharacterCodes2.minus=45]="minus",CharacterCodes2[CharacterCodes2.openBrace=123]="openBrace",CharacterCodes2[CharacterCodes2.openBracket=91]="openBracket",CharacterCodes2[CharacterCodes2.plus=43]="plus",CharacterCodes2[CharacterCodes2.slash=47]="slash",CharacterCodes2[CharacterCodes2.formFeed=12]="formFeed",CharacterCodes2[CharacterCodes2.tab=9]="tab"})(CharacterCodes||(CharacterCodes={}))}});var cachedSpaces,maxCachedValues,cachedBreakLinesWithSpaces,init_string_intern=__esm({"../../node_modules/.pnpm/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js"(){cachedSpaces=new Array(20).fill(0).map((_2,index2)=>" ".repeat(index2)),maxCachedValues=200,cachedBreakLinesWithSpaces={" ":{"\n":new Array(maxCachedValues).fill(0).map((_2,index2)=>`
|
|
248
248
|
`+" ".repeat(index2)),"\r":new Array(maxCachedValues).fill(0).map((_2,index2)=>"\r"+" ".repeat(index2)),"\r\n":new Array(maxCachedValues).fill(0).map((_2,index2)=>`\r
|
|
249
249
|
`+" ".repeat(index2))}," ":{"\n":new Array(maxCachedValues).fill(0).map((_2,index2)=>`
|
|
250
250
|
`+" ".repeat(index2)),"\r":new Array(maxCachedValues).fill(0).map((_2,index2)=>"\r"+" ".repeat(index2)),"\r\n":new Array(maxCachedValues).fill(0).map((_2,index2)=>`\r
|
|
@@ -289,14 +289,14 @@ ${removed.map(r=>` ${r.skill} \u2192 ${r.agent}`).join(`
|
|
|
289
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&¤t.minor<latest.minor?{action:"block",latest:latestRaw}:current.major===latest.major&¤t.minor===latest.minor&¤t.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
290
|
[fimo] A newer version is available (${current} \u2192 ${decision.latest}). Tip: run \`npx fimo@latest <command>\` to always use the latest.
|
|
291
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&¶ms.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:path48,message}=issue;return`${Array.isArray(path48)&&path48.length>0?`${path48.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,path48,status,detail){super(`API ${method} ${path48} failed: ${status} ${detail}`),this.name="ApiRequestError",this.method=method,this.path=path48,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(path48,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}${path48}`,{...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",path48,response.status,error)}if(response.status!==204)return await response.json()}async rawRequest(path48,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}${path48}`,{...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"} ${path48} 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&¶ms.set("modality",query.modality);for(let t2 of query.tag??[])params.append("tag",t2);query.q&¶ms.set("q",query.q),query.category&¶ms.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 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&¶ms.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&¶ms.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&¶ms.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&¶ms.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,path48,opts={}){let qs=lazyFetchQs(opts.against,{path:path48});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),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/content/${encodeURIComponent(collection)}/${encodeURIComponent(rowId)}`;return(await this.request(qs?`${path48}?${qs}`:path48)).data}async getSchemaTypeDiff(projectId,env,typeName,opts={}){let qs=lazyFetchQs(opts.against),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/schemas/${encodeURIComponent(typeName)}`;return(await this.request(qs?`${path48}?${qs}`:path48)).data}async getAssetDiff(projectId,env,assetId,opts={}){let qs=lazyFetchQs(opts.against),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/assets/${encodeURIComponent(assetId)}`;return(await this.request(qs?`${path48}?${qs}`:path48)).data}async getTranslationRowDiff(projectId,env,locale,key,opts={}){let qs=lazyFetchQs(opts.against),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/translations/${encodeURIComponent(locale)}/${encodeURIComponent(key)}`;return(await this.request(qs?`${path48}?${qs}`:path48)).data}async getFormSchemaDiff(projectId,env,formName,opts={}){let qs=lazyFetchQs(opts.against),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/forms/${encodeURIComponent(formName)}`;return(await this.request(qs?`${path48}?${qs}`:path48)).data}async getActivationDiff(projectId,env,agentName,triggerIndex,opts={}){let qs=lazyFetchQs(opts.against),path48=`/api/management/projects/${projectId}/envs/${encodeURIComponent(env)}/diff/activations/${encodeURIComponent(agentName)}/${triggerIndex}`;return(await this.request(qs?`${path48}?${qs}`:path48)).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&¶ms.set("agent_name",opts.agentName),opts.env&¶ms.set("env",opts.env),opts.status&¶ms.set("status",opts.status),opts.limit!==void 0&¶ms.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(`
|
|
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&¶ms.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&¶ms.set("modality",query.modality);for(let t2 of query.tag??[])params.append("tag",t2);query.q&¶ms.set("q",query.q),query.category&¶ms.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&¶ms.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&¶ms.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&¶ms.set("against",opts.against),opts.surfaces&&opts.surfaces.length>0&¶ms.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&¶ms.set("agent_name",opts.agentName),opts.env&¶ms.set("env",opts.env),opts.status&¶ms.set("status",opts.status),opts.limit!==void 0&¶ms.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
293
|
|
|
294
294
|
`);for(;separatorIndex!==-1;){let rawEvent=buffer.slice(0,separatorIndex);buffer=buffer.slice(separatorIndex+2),separatorIndex=buffer.indexOf(`
|
|
295
295
|
|
|
296
296
|
`);let eventName="message",dataLines=[];for(let line of rawEvent.split(`
|
|
297
297
|
`))line.startsWith("event:")?eventName=line.slice(6).trim():line.startsWith("data:")&&dataLines.push(line.slice(5).trim());if(dataLines.length===0)continue;let payload=dataLines.join(`
|
|
298
|
-
`);if(eventName==="progress")try{let parsed=JSON.parse(payload);onProgress?.(parsed)}catch{}else if(eventName==="complete")completed=!0;else if(eventName==="error")try{errorMessage3=JSON.parse(payload).message??"Sandbox pull failed"}catch{errorMessage3="Sandbox pull failed"}}}}finally{reader.releaseLock()}if(errorMessage3)throw new Error(errorMessage3);if(!completed)throw new Error("Sandbox pull stream ended before completion")}async checkSubdomain(projectId,slug){return(await this.request(`/api/management/projects/${projectId}/subdomain/check?slug=${encodeURIComponent(slug)}`)).data}async renameSubdomain(projectId,slug){return(await this.request(`/api/management/projects/${projectId}/subdomain`,{method:"PATCH",body:JSON.stringify({slug})})).data}async suggestSubdomains(projectId,opts){let params=new URLSearchParams;opts?.base&¶ms.set("base",opts.base),opts?.max!==void 0&¶ms.set("max",String(opts.max));let query=params.toString();return(await this.request(`/api/management/projects/${projectId}/subdomain/suggestions${query?`?${query}`:""}`)).data.suggestions}async listProjectDomains(projectId){return(await this.request(`/api/management/projects/${projectId}/domains`,{},{allow403:!0})).data}async addProjectDomain(projectId,input){return(await this.request(`/api/management/projects/${projectId}/domains`,{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async refreshProjectDomain(projectId,domainId){return(await this.request(`/api/management/projects/${projectId}/domains/${domainId}/refresh`,{method:"POST"},{allow403:!0})).data}async removeProjectDomain(projectId,domainId){await this.request(`/api/management/projects/${projectId}/domains/${domainId}`,{method:"DELETE"},{allow403:!0})}async searchRegisteredDomains(input){return(await this.request("/api/domains/search",{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async getRegisteredDomainPricing(domain){return(await this.request(`/api/domains/pricing/${encodeURIComponent(domain)}`,{},{allow403:!0})).data}async listOwnedRegisteredDomains(organizationId){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}`,{},{allow403:!0})).data}async purchaseRegisteredDomain(organizationId,input){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}/purchase`,{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async refreshRegisteredDomainPayment(organizationId,domainId){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}/${encodeURIComponent(domainId)}/refresh-payment`,{method:"POST"},{allow403:!0})).data}async listSchemas(projectId){return this.request(this.tenantPath(projectId,"/schema"))}async getSchema(projectId,typeName){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`))).data}async createSchema(projectId,contentType){return(await this.request(this.tenantPath(projectId,"/schema/types"),{method:"POST",body:JSON.stringify({contentType})})).data}async updateSchema(projectId,typeName,contentType){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`),{method:"PUT",body:JSON.stringify({contentType})})).data}async upsertSchemas(projectId,contentTypes){return(await this.request(this.tenantPath(projectId,"/schema/batch"),{method:"POST",body:JSON.stringify({contentTypes})})).data}async deleteSchema(projectId,typeName){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`),{method:"DELETE"})).data}async listEntries(projectId,typeName,params){let query=params?`?${new URLSearchParams(params).toString()}`:"";return this.request(this.tenantPath(projectId,`/entries/${typeName}${query}`))}async getEntry(projectId,typeName,id,locale){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`))).data}async createEntry(projectId,typeName,data2){return(await this.request(this.tenantPath(projectId,`/entries/${typeName}`),{method:"POST",body:JSON.stringify(data2)})).data}async updateEntry(projectId,typeName,id,locale,data2){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`),{method:"PUT",body:JSON.stringify(data2)})).data}async deleteEntry(projectId,typeName,id,locale){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`),{method:"DELETE"})).data}async listAssets(projectId,params){let query=params?`?${new URLSearchParams(params).toString()}`:"";return this.request(this.tenantPath(projectId,`/assets${query}`))}async getAsset(projectId,id){return this.request(this.tenantPath(projectId,`/assets/${id}`))}async uploadAsset(projectId,formData){return(await this.rawRequest(this.tenantPath(projectId,"/assets/upload"),{method:"POST",body:formData})).json()}async generate(projectId,payload){return(await this.request(this.tenantPath(projectId,"/assets/generate"),{method:"POST",body:JSON.stringify(payload)})).data}async createFolder(projectId,name,parentId){return(await this.request(this.tenantPath(projectId,"/assets/folders"),{method:"POST",body:JSON.stringify({name,parentId:parentId??null})})).data}async moveAsset(projectId,id,parentId){return(await this.request(this.tenantPath(projectId,`/assets/${id}/move`),{method:"POST",body:JSON.stringify({parentId})})).data}async deleteAsset(projectId,id){return(await this.request(this.tenantPath(projectId,`/assets/${id}`),{method:"DELETE"})).data}async listForms(projectId){return(await this.request(this.tenantPath(projectId,"/forms"))).data}async getForm(projectId,id){return(await this.request(this.tenantPath(projectId,`/forms/${id}`))).data}async createForm(projectId,data2){return(await this.request(this.tenantPath(projectId,"/forms"),{method:"POST",body:JSON.stringify(data2)})).data}async updateForm(projectId,id,data2){return(await this.request(this.tenantPath(projectId,`/forms/${id}`),{method:"PUT",body:JSON.stringify(data2)})).data}async deleteForm(projectId,id){return(await this.request(this.tenantPath(projectId,`/forms/${id}`),{method:"DELETE"})).data}async listLabels(projectId,locale){let query=locale?`?locale=${encodeURIComponent(locale)}`:"";return(await this.request(this.tenantPath(projectId,`/labels${query}`))).data}async setLabel(projectId,data2){return(await this.request(this.tenantPath(projectId,"/labels"),{method:"POST",body:JSON.stringify(data2)})).data}async setLabels(projectId,records){return(await this.request(this.tenantPath(projectId,"/labels/sync"),{method:"POST",body:JSON.stringify({created:records,updated:[],deleted:[]})})).data}async deleteLabel(projectId,locale,key){return(await this.request(this.tenantPath(projectId,`/labels/${encodeURIComponent(locale)}/${encodeURIComponent(key)}`),{method:"DELETE"})).data}async getProjectAnalytics(projectId,params){let search=new URLSearchParams;params?.preset&&search.set("preset",params.preset),params?.groupBy&&search.set("groupBy",params.groupBy),params?.from&&search.set("from",params.from),params?.to&&search.set("to",params.to),params?.days!==void 0&&search.set("days",String(params.days));let query=search.toString();return(await this.request(this.projectEnvManagementPath(projectId,`/analytics${query?`?${query}`:""}`))).data}async setAnalyticsAnnotation(projectId,date,content2){return(await this.request(this.projectEnvManagementPath(projectId,`/analytics/annotations/${date}`),{method:"PUT",body:JSON.stringify({content:content2})}))?.data??null}async deleteAnalyticsAnnotation(projectId,date){return await this.setAnalyticsAnnotation(projectId,date,""),null}async listFormSubmissions(projectId,formId,params){let search=new URLSearchParams;params?.limit!==void 0&&search.set("limit",String(params.limit)),params?.offset!==void 0&&search.set("offset",String(params.offset)),params?.searchQuery&&search.set("searchQuery",params.searchQuery),params?.sortDirection&&search.set("sortDirection",params.sortDirection);let query=search.toString();return await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions${query?`?${query}`:""}`))}async getFormSubmission(projectId,formId,submissionId){return(await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions/${submissionId}`))).data}async getFormSubmissionStats(projectId,formId){return(await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions/stats`))).data}}}});var require_identity2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/identity.js"(exports2){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,"isAlias"),isDocument2=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,"isDocument"),isMap=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,"isMap"),isPair=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,"isPair"),isScalar=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,"isScalar"),isSeq=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ,"isSeq");function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}__name(isCollection,"isCollection");function isNode2(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}__name(isNode2,"isNode");var hasAnchor=__name(node=>(isScalar(node)||isCollection(node))&&!!node.anchor,"hasAnchor");exports2.ALIAS=ALIAS;exports2.DOC=DOC;exports2.MAP=MAP;exports2.NODE_TYPE=NODE_TYPE;exports2.PAIR=PAIR;exports2.SCALAR=SCALAR;exports2.SEQ=SEQ;exports2.hasAnchor=hasAnchor;exports2.isAlias=isAlias;exports2.isCollection=isCollection;exports2.isDocument=isDocument2;exports2.isMap=isMap;exports2.isNode=isNode2;exports2.isPair=isPair;exports2.isScalar=isScalar;exports2.isSeq=isSeq}});var require_visit2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/visit.js"(exports2){"use strict";var identity2=require_identity2(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit2(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;function visit_(key,node,visitor,path48){let ctrl=callVisitor(key,node,visitor,path48);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path48,ctrl),visit_(key,ctrl,visitor,path48);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path48=Object.freeze(path48.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path48);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path48=Object.freeze(path48.concat(node));let ck=visit_("key",node.key,visitor,path48);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path48);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visit_,"visit_");async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}__name(visitAsync,"visitAsync");visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path48){let ctrl=await callVisitor(key,node,visitor,path48);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path48,ctrl),visitAsync_(key,ctrl,visitor,path48);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path48=Object.freeze(path48.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path48);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path48=Object.freeze(path48.concat(node));let ck=await visitAsync_("key",node.key,visitor,path48);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path48);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visitAsync_,"visitAsync_");function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}__name(initVisitor,"initVisitor");function callVisitor(key,node,visitor,path48){if(typeof visitor=="function")return visitor(key,node,path48);if(identity2.isMap(node))return visitor.Map?.(key,node,path48);if(identity2.isSeq(node))return visitor.Seq?.(key,node,path48);if(identity2.isPair(node))return visitor.Pair?.(key,node,path48);if(identity2.isScalar(node))return visitor.Scalar?.(key,node,path48);if(identity2.isAlias(node))return visitor.Alias?.(key,node,path48)}__name(callVisitor,"callVisitor");function replaceNode(key,path48,node){let parent2=path48[path48.length-1];if(identity2.isCollection(parent2))parent2.items[key]=node;else if(identity2.isPair(parent2))key==="key"?parent2.key=node:parent2.value=node;else if(identity2.isDocument(parent2))parent2.contents=node;else{let pt2=identity2.isAlias(parent2)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt2} parent`)}}__name(replaceNode,"replaceNode");exports2.visit=visit2;exports2.visitAsync=visitAsync}});var require_directives2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/directives.js"(exports2){"use strict";var identity2=require_identity2(),visit2=require_visit2(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=__name(tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),"escapeTagName"),Directives=class _Directives{static{__name(this,"Directives")}constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity2.isNode(doc.contents)){let tags={};visit2.visit(doc.contents,(_key,node)=>{identity2.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
|
|
299
|
-
`)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports2.Directives=Directives}});var require_anchors2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/anchors.js"(exports2){"use strict";var identity2=require_identity2(),visit2=require_visit2();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}__name(anchorIsValid,"anchorIsValid");function anchorNames(root2){let anchors=new Set;return visit2.visit(root2,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}__name(anchorNames,"anchorNames");function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}__name(findNewAnchor,"findNewAnchor");function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:__name(source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},"onAnchor"),setAnchors:__name(()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity2.isScalar(ref.node)||identity2.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},"setAnchors"),sourceObjects}}__name(createNodeAnchors,"createNodeAnchors");exports2.anchorIsValid=anchorIsValid;exports2.anchorNames=anchorNames;exports2.createNodeAnchors=createNodeAnchors;exports2.findNewAnchor=findNewAnchor}});var require_applyReviver2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/applyReviver.js"(exports2){"use strict";function applyReviver(reviver,obj,key,val2){if(val2&&typeof val2=="object")if(Array.isArray(val2))for(let i=0,len=val2.length;i<len;++i){let v0=val2[i],v1=applyReviver(reviver,val2,String(i),v0);v1===void 0?delete val2[i]:v1!==v0&&(val2[i]=v1)}else if(val2 instanceof Map)for(let k of Array.from(val2.keys())){let v0=val2.get(k),v1=applyReviver(reviver,val2,k,v0);v1===void 0?val2.delete(k):v1!==v0&&val2.set(k,v1)}else if(val2 instanceof Set)for(let v0 of Array.from(val2)){let v1=applyReviver(reviver,val2,v0,v0);v1===void 0?val2.delete(v0):v1!==v0&&(val2.delete(v0),val2.add(v1))}else for(let[k,v0]of Object.entries(val2)){let v1=applyReviver(reviver,val2,k,v0);v1===void 0?delete val2[k]:v1!==v0&&(val2[k]=v1)}return reviver.call(obj,key,val2)}__name(applyReviver,"applyReviver");exports2.applyReviver=applyReviver}});var require_toJS2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/toJS.js"(exports2){"use strict";var identity2=require_identity2();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity2.hasAnchor(value))return value.toJSON(arg,ctx);let data2={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data2),ctx.onCreate=res2=>{data2.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}__name(toJS,"toJS");exports2.toJS=toJS}});var require_Node2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Node.js"(exports2){"use strict";var applyReviver=require_applyReviver2(),identity2=require_identity2(),toJS=require_toJS2(),NodeBase=class{static{__name(this,"NodeBase")}constructor(type){Object.defineProperty(this,identity2.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity2.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports2.NodeBase=NodeBase}});var require_Alias2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Alias.js"(exports2){"use strict";var anchors=require_anchors2(),visit2=require_visit2(),identity2=require_identity2(),Node2=require_Node2(),toJS=require_toJS2(),Alias=class extends Node2.NodeBase{static{__name(this,"Alias")}constructor(source){super(identity2.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit2.visit(doc,{Node:__name((_key,node)=>{(identity2.isAlias(node)||identity2.hasAnchor(node))&&nodes.push(node)},"Node")}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc,maxAliasCount}=ctx,source=this.resolve(doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}let data2=anchors2.get(source);if(data2||(toJS.toJS(source,null,ctx),data2=anchors2.get(source)),data2?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data2.count+=1,data2.aliasCount===0&&(data2.aliasCount=getAliasCount(doc,source,anchors2)),data2.count*data2.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}return data2.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity2.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity2.isCollection(node)){let count=0;for(let item of node.items){let c2=getAliasCount(doc,item,anchors2);c2>count&&(count=c2)}return count}else if(identity2.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}__name(getAliasCount,"getAliasCount");exports2.Alias=Alias}});var require_Scalar2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Scalar.js"(exports2){"use strict";var identity2=require_identity2(),Node2=require_Node2(),toJS=require_toJS2(),isScalarValue=__name(value=>!value||typeof value!="function"&&typeof value!="object","isScalarValue"),Scalar=class extends Node2.NodeBase{static{__name(this,"Scalar")}constructor(value){super(identity2.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports2.Scalar=Scalar;exports2.isScalarValue=isScalarValue}});var require_createNode2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/createNode.js"(exports2){"use strict";var Alias=require_Alias2(),identity2=require_identity2(),Scalar=require_Scalar2(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter(t2=>t2.tag===tagName),tagObj=match.find(t2=>!t2.format)??match[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t2=>t2.identify?.(value)&&!t2.format)}__name(findTagObject,"findTagObject");function createNode(value,tagName,ctx){if(identity2.isDocument(value)&&(value=value.contents),identity2.isNode(value))return value;if(identity2.isPair(value)){let map2=ctx.schema[identity2.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity2.MAP]:Symbol.iterator in Object(value)?schema[identity2.SEQ]:schema[identity2.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}__name(createNode,"createNode");exports2.createNode=createNode}});var require_Collection2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Collection.js"(exports2){"use strict";var createNode=require_createNode2(),identity2=require_identity2(),Node2=require_Node2();function collectionFromPath(schema,path48,value){let v=value;for(let i=path48.length-1;i>=0;--i){let k=path48[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:__name(()=>{throw new Error("This should not happen, please report a bug.")},"onAnchor"),schema,sourceObjects:new Map})}__name(collectionFromPath,"collectionFromPath");var isEmptyPath=__name(path48=>path48==null||typeof path48=="object"&&!!path48[Symbol.iterator]().next().done,"isEmptyPath"),Collection=class extends Node2.NodeBase{static{__name(this,"Collection")}constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it2=>identity2.isNode(it2)||identity2.isPair(it2)?it2.clone(schema):it2),this.range&&(copy.range=this.range.slice()),copy}addIn(path48,value){if(isEmptyPath(path48))this.add(value);else{let[key,...rest]=path48,node=this.get(key,!0);if(identity2.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path48){let[key,...rest]=path48;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity2.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path48,keepScalar){let[key,...rest]=path48,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity2.isScalar(node)?node.value:node:identity2.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity2.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity2.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path48){let[key,...rest]=path48;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity2.isCollection(node)?node.hasIn(rest):!1}setIn(path48,value){let[key,...rest]=path48;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity2.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports2.Collection=Collection;exports2.collectionFromPath=collectionFromPath;exports2.isEmptyPath=isEmptyPath}});var require_stringifyComment2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyComment.js"(exports2){"use strict";var stringifyComment=__name(str=>str.replace(/^(?!$)(?: $)?/gm,"#"),"stringifyComment");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}__name(indentComment,"indentComment");var lineComment=__name((str,indent,comment)=>str.endsWith(`
|
|
298
|
+
`);if(eventName==="progress")try{let parsed=JSON.parse(payload);onProgress?.(parsed)}catch{}else if(eventName==="complete")completed=!0;else if(eventName==="error")try{errorMessage3=JSON.parse(payload).message??"Sandbox pull failed"}catch{errorMessage3="Sandbox pull failed"}}}}finally{reader.releaseLock()}if(errorMessage3)throw new Error(errorMessage3);if(!completed)throw new Error("Sandbox pull stream ended before completion")}async checkSubdomain(projectId,slug){return(await this.request(`/api/management/projects/${projectId}/subdomain/check?slug=${encodeURIComponent(slug)}`)).data}async renameSubdomain(projectId,slug){return(await this.request(`/api/management/projects/${projectId}/subdomain`,{method:"PATCH",body:JSON.stringify({slug})})).data}async suggestSubdomains(projectId,opts){let params=new URLSearchParams;opts?.base&¶ms.set("base",opts.base),opts?.max!==void 0&¶ms.set("max",String(opts.max));let query=params.toString();return(await this.request(`/api/management/projects/${projectId}/subdomain/suggestions${query?`?${query}`:""}`)).data.suggestions}async listProjectDomains(projectId){return(await this.request(`/api/management/projects/${projectId}/domains`,{},{allow403:!0})).data}async addProjectDomain(projectId,input){return(await this.request(`/api/management/projects/${projectId}/domains`,{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async refreshProjectDomain(projectId,domainId){return(await this.request(`/api/management/projects/${projectId}/domains/${domainId}/refresh`,{method:"POST"},{allow403:!0})).data}async removeProjectDomain(projectId,domainId){await this.request(`/api/management/projects/${projectId}/domains/${domainId}`,{method:"DELETE"},{allow403:!0})}async searchRegisteredDomains(input){return(await this.request("/api/domains/search",{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async getRegisteredDomainPricing(domain){return(await this.request(`/api/domains/pricing/${encodeURIComponent(domain)}`,{},{allow403:!0})).data}async listOwnedRegisteredDomains(organizationId){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}`,{},{allow403:!0})).data}async purchaseRegisteredDomain(organizationId,input){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}/purchase`,{method:"POST",body:JSON.stringify(input)},{allow403:!0})).data}async refreshRegisteredDomainPayment(organizationId,domainId){return(await this.request(`/api/domains/${encodeURIComponent(organizationId)}/${encodeURIComponent(domainId)}/refresh-payment`,{method:"POST"},{allow403:!0})).data}async listSchemas(projectId){return this.request(this.tenantPath(projectId,"/schema"))}async getSchema(projectId,typeName){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`))).data}async createSchema(projectId,contentType){return(await this.request(this.tenantPath(projectId,"/schema/types"),{method:"POST",body:JSON.stringify({contentType})})).data}async updateSchema(projectId,typeName,contentType){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`),{method:"PUT",body:JSON.stringify({contentType})})).data}async upsertSchemas(projectId,contentTypes){return(await this.request(this.tenantPath(projectId,"/schema/batch"),{method:"POST",body:JSON.stringify({contentTypes})})).data}async deleteSchema(projectId,typeName){return(await this.request(this.tenantPath(projectId,`/schema/types/${typeName}`),{method:"DELETE"})).data}async listEntries(projectId,typeName,params){let query=params?`?${new URLSearchParams(params).toString()}`:"";return this.request(this.tenantPath(projectId,`/entries/${typeName}${query}`))}async getEntry(projectId,typeName,id,locale){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`))).data}async createEntry(projectId,typeName,data2){return(await this.request(this.tenantPath(projectId,`/entries/${typeName}`),{method:"POST",body:JSON.stringify(data2)})).data}async updateEntry(projectId,typeName,id,locale,data2){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`),{method:"PUT",body:JSON.stringify(data2)})).data}async deleteEntry(projectId,typeName,id,locale){let query=locale?`?${new URLSearchParams({locale}).toString()}`:"";return(await this.request(this.tenantPath(projectId,`/entries/${typeName}/${id}${query}`),{method:"DELETE"})).data}async listAssets(projectId,params){let query=params?`?${new URLSearchParams(params).toString()}`:"";return this.request(this.tenantPath(projectId,`/assets${query}`))}async getAsset(projectId,id){return this.request(this.tenantPath(projectId,`/assets/${id}`))}async uploadAsset(projectId,formData){return(await this.rawRequest(this.tenantPath(projectId,"/assets/upload"),{method:"POST",body:formData})).json()}async generate(projectId,payload){return(await this.request(this.tenantPath(projectId,"/assets/generate"),{method:"POST",body:JSON.stringify(payload)})).data}async createFolder(projectId,name,parentId){return(await this.request(this.tenantPath(projectId,"/assets/folders"),{method:"POST",body:JSON.stringify({name,parentId:parentId??null})})).data}async moveAsset(projectId,id,parentId){return(await this.request(this.tenantPath(projectId,`/assets/${id}/move`),{method:"POST",body:JSON.stringify({parentId})})).data}async deleteAsset(projectId,id){return(await this.request(this.tenantPath(projectId,`/assets/${id}`),{method:"DELETE"})).data}async listForms(projectId){return(await this.request(this.tenantPath(projectId,"/forms"))).data}async getForm(projectId,id){return(await this.request(this.tenantPath(projectId,`/forms/${id}`))).data}async createForm(projectId,data2){return(await this.request(this.tenantPath(projectId,"/forms"),{method:"POST",body:JSON.stringify(data2)})).data}async updateForm(projectId,id,data2){return(await this.request(this.tenantPath(projectId,`/forms/${id}`),{method:"PUT",body:JSON.stringify(data2)})).data}async deleteForm(projectId,id){return(await this.request(this.tenantPath(projectId,`/forms/${id}`),{method:"DELETE"})).data}async listLabels(projectId,locale){let query=locale?`?locale=${encodeURIComponent(locale)}`:"";return(await this.request(this.tenantPath(projectId,`/labels${query}`))).data}async setLabel(projectId,data2){return(await this.request(this.tenantPath(projectId,"/labels"),{method:"POST",body:JSON.stringify(data2)})).data}async setLabels(projectId,records){return(await this.request(this.tenantPath(projectId,"/labels/sync"),{method:"POST",body:JSON.stringify({created:records,updated:[],deleted:[]})})).data}async deleteLabel(projectId,locale,key){return(await this.request(this.tenantPath(projectId,`/labels/${encodeURIComponent(locale)}/${encodeURIComponent(key)}`),{method:"DELETE"})).data}async getProjectAnalytics(projectId,params){let search=new URLSearchParams;params?.preset&&search.set("preset",params.preset),params?.groupBy&&search.set("groupBy",params.groupBy),params?.from&&search.set("from",params.from),params?.to&&search.set("to",params.to),params?.days!==void 0&&search.set("days",String(params.days));let query=search.toString();return(await this.request(this.projectEnvManagementPath(projectId,`/analytics${query?`?${query}`:""}`))).data}async setAnalyticsAnnotation(projectId,date,content2){return(await this.request(this.projectEnvManagementPath(projectId,`/analytics/annotations/${date}`),{method:"PUT",body:JSON.stringify({content:content2})}))?.data??null}async deleteAnalyticsAnnotation(projectId,date){return await this.setAnalyticsAnnotation(projectId,date,""),null}async listFormSubmissions(projectId,formId,params){let search=new URLSearchParams;params?.limit!==void 0&&search.set("limit",String(params.limit)),params?.offset!==void 0&&search.set("offset",String(params.offset)),params?.searchQuery&&search.set("searchQuery",params.searchQuery),params?.sortDirection&&search.set("sortDirection",params.sortDirection);let query=search.toString();return await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions${query?`?${query}`:""}`))}async getFormSubmission(projectId,formId,submissionId){return(await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions/${submissionId}`))).data}async getFormSubmissionStats(projectId,formId){return(await this.request(this.tenantPath(projectId,`/forms/${formId}/submissions/stats`))).data}}}});var require_identity2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/identity.js"(exports2){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,"isAlias"),isDocument2=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,"isDocument"),isMap=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,"isMap"),isPair=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,"isPair"),isScalar=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,"isScalar"),isSeq=__name(node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ,"isSeq");function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}__name(isCollection,"isCollection");function isNode2(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}__name(isNode2,"isNode");var hasAnchor=__name(node=>(isScalar(node)||isCollection(node))&&!!node.anchor,"hasAnchor");exports2.ALIAS=ALIAS;exports2.DOC=DOC;exports2.MAP=MAP;exports2.NODE_TYPE=NODE_TYPE;exports2.PAIR=PAIR;exports2.SCALAR=SCALAR;exports2.SEQ=SEQ;exports2.hasAnchor=hasAnchor;exports2.isAlias=isAlias;exports2.isCollection=isCollection;exports2.isDocument=isDocument2;exports2.isMap=isMap;exports2.isNode=isNode2;exports2.isPair=isPair;exports2.isScalar=isScalar;exports2.isSeq=isSeq}});var require_visit2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/visit.js"(exports2){"use strict";var identity2=require_identity2(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit2(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;function visit_(key,node,visitor,path49){let ctrl=callVisitor(key,node,visitor,path49);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path49,ctrl),visit_(key,ctrl,visitor,path49);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path49=Object.freeze(path49.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path49);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path49=Object.freeze(path49.concat(node));let ck=visit_("key",node.key,visitor,path49);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path49);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visit_,"visit_");async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity2.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}__name(visitAsync,"visitAsync");visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path49){let ctrl=await callVisitor(key,node,visitor,path49);if(identity2.isNode(ctrl)||identity2.isPair(ctrl))return replaceNode(key,path49,ctrl),visitAsync_(key,ctrl,visitor,path49);if(typeof ctrl!="symbol"){if(identity2.isCollection(node)){path49=Object.freeze(path49.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path49);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity2.isPair(node)){path49=Object.freeze(path49.concat(node));let ck=await visitAsync_("key",node.key,visitor,path49);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path49);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}__name(visitAsync_,"visitAsync_");function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}__name(initVisitor,"initVisitor");function callVisitor(key,node,visitor,path49){if(typeof visitor=="function")return visitor(key,node,path49);if(identity2.isMap(node))return visitor.Map?.(key,node,path49);if(identity2.isSeq(node))return visitor.Seq?.(key,node,path49);if(identity2.isPair(node))return visitor.Pair?.(key,node,path49);if(identity2.isScalar(node))return visitor.Scalar?.(key,node,path49);if(identity2.isAlias(node))return visitor.Alias?.(key,node,path49)}__name(callVisitor,"callVisitor");function replaceNode(key,path49,node){let parent2=path49[path49.length-1];if(identity2.isCollection(parent2))parent2.items[key]=node;else if(identity2.isPair(parent2))key==="key"?parent2.key=node:parent2.value=node;else if(identity2.isDocument(parent2))parent2.contents=node;else{let pt2=identity2.isAlias(parent2)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt2} parent`)}}__name(replaceNode,"replaceNode");exports2.visit=visit2;exports2.visitAsync=visitAsync}});var require_directives2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/directives.js"(exports2){"use strict";var identity2=require_identity2(),visit2=require_visit2(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=__name(tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),"escapeTagName"),Directives=class _Directives{static{__name(this,"Directives")}constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity2.isNode(doc.contents)){let tags={};visit2.visit(doc.contents,(_key,node)=>{identity2.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
|
|
299
|
+
`)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports2.Directives=Directives}});var require_anchors2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/anchors.js"(exports2){"use strict";var identity2=require_identity2(),visit2=require_visit2();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}__name(anchorIsValid,"anchorIsValid");function anchorNames(root2){let anchors=new Set;return visit2.visit(root2,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}__name(anchorNames,"anchorNames");function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}__name(findNewAnchor,"findNewAnchor");function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:__name(source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},"onAnchor"),setAnchors:__name(()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity2.isScalar(ref.node)||identity2.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},"setAnchors"),sourceObjects}}__name(createNodeAnchors,"createNodeAnchors");exports2.anchorIsValid=anchorIsValid;exports2.anchorNames=anchorNames;exports2.createNodeAnchors=createNodeAnchors;exports2.findNewAnchor=findNewAnchor}});var require_applyReviver2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/applyReviver.js"(exports2){"use strict";function applyReviver(reviver,obj,key,val2){if(val2&&typeof val2=="object")if(Array.isArray(val2))for(let i=0,len=val2.length;i<len;++i){let v0=val2[i],v1=applyReviver(reviver,val2,String(i),v0);v1===void 0?delete val2[i]:v1!==v0&&(val2[i]=v1)}else if(val2 instanceof Map)for(let k of Array.from(val2.keys())){let v0=val2.get(k),v1=applyReviver(reviver,val2,k,v0);v1===void 0?val2.delete(k):v1!==v0&&val2.set(k,v1)}else if(val2 instanceof Set)for(let v0 of Array.from(val2)){let v1=applyReviver(reviver,val2,v0,v0);v1===void 0?val2.delete(v0):v1!==v0&&(val2.delete(v0),val2.add(v1))}else for(let[k,v0]of Object.entries(val2)){let v1=applyReviver(reviver,val2,k,v0);v1===void 0?delete val2[k]:v1!==v0&&(val2[k]=v1)}return reviver.call(obj,key,val2)}__name(applyReviver,"applyReviver");exports2.applyReviver=applyReviver}});var require_toJS2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/toJS.js"(exports2){"use strict";var identity2=require_identity2();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity2.hasAnchor(value))return value.toJSON(arg,ctx);let data2={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data2),ctx.onCreate=res2=>{data2.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}__name(toJS,"toJS");exports2.toJS=toJS}});var require_Node2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Node.js"(exports2){"use strict";var applyReviver=require_applyReviver2(),identity2=require_identity2(),toJS=require_toJS2(),NodeBase=class{static{__name(this,"NodeBase")}constructor(type){Object.defineProperty(this,identity2.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity2.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports2.NodeBase=NodeBase}});var require_Alias2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Alias.js"(exports2){"use strict";var anchors=require_anchors2(),visit2=require_visit2(),identity2=require_identity2(),Node2=require_Node2(),toJS=require_toJS2(),Alias=class extends Node2.NodeBase{static{__name(this,"Alias")}constructor(source){super(identity2.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit2.visit(doc,{Node:__name((_key,node)=>{(identity2.isAlias(node)||identity2.hasAnchor(node))&&nodes.push(node)},"Node")}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc,maxAliasCount}=ctx,source=this.resolve(doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}let data2=anchors2.get(source);if(data2||(toJS.toJS(source,null,ctx),data2=anchors2.get(source)),data2?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data2.count+=1,data2.aliasCount===0&&(data2.aliasCount=getAliasCount(doc,source,anchors2)),data2.count*data2.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}return data2.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity2.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity2.isCollection(node)){let count=0;for(let item of node.items){let c2=getAliasCount(doc,item,anchors2);c2>count&&(count=c2)}return count}else if(identity2.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}__name(getAliasCount,"getAliasCount");exports2.Alias=Alias}});var require_Scalar2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Scalar.js"(exports2){"use strict";var identity2=require_identity2(),Node2=require_Node2(),toJS=require_toJS2(),isScalarValue=__name(value=>!value||typeof value!="function"&&typeof value!="object","isScalarValue"),Scalar=class extends Node2.NodeBase{static{__name(this,"Scalar")}constructor(value){super(identity2.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports2.Scalar=Scalar;exports2.isScalarValue=isScalarValue}});var require_createNode2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/createNode.js"(exports2){"use strict";var Alias=require_Alias2(),identity2=require_identity2(),Scalar=require_Scalar2(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter(t2=>t2.tag===tagName),tagObj=match.find(t2=>!t2.format)??match[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t2=>t2.identify?.(value)&&!t2.format)}__name(findTagObject,"findTagObject");function createNode(value,tagName,ctx){if(identity2.isDocument(value)&&(value=value.contents),identity2.isNode(value))return value;if(identity2.isPair(value)){let map2=ctx.schema[identity2.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity2.MAP]:Symbol.iterator in Object(value)?schema[identity2.SEQ]:schema[identity2.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}__name(createNode,"createNode");exports2.createNode=createNode}});var require_Collection2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Collection.js"(exports2){"use strict";var createNode=require_createNode2(),identity2=require_identity2(),Node2=require_Node2();function collectionFromPath(schema,path49,value){let v=value;for(let i=path49.length-1;i>=0;--i){let k=path49[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:__name(()=>{throw new Error("This should not happen, please report a bug.")},"onAnchor"),schema,sourceObjects:new Map})}__name(collectionFromPath,"collectionFromPath");var isEmptyPath=__name(path49=>path49==null||typeof path49=="object"&&!!path49[Symbol.iterator]().next().done,"isEmptyPath"),Collection=class extends Node2.NodeBase{static{__name(this,"Collection")}constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it2=>identity2.isNode(it2)||identity2.isPair(it2)?it2.clone(schema):it2),this.range&&(copy.range=this.range.slice()),copy}addIn(path49,value){if(isEmptyPath(path49))this.add(value);else{let[key,...rest]=path49,node=this.get(key,!0);if(identity2.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path49){let[key,...rest]=path49;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity2.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path49,keepScalar){let[key,...rest]=path49,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity2.isScalar(node)?node.value:node:identity2.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity2.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity2.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path49){let[key,...rest]=path49;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity2.isCollection(node)?node.hasIn(rest):!1}setIn(path49,value){let[key,...rest]=path49;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity2.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports2.Collection=Collection;exports2.collectionFromPath=collectionFromPath;exports2.isEmptyPath=isEmptyPath}});var require_stringifyComment2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyComment.js"(exports2){"use strict";var stringifyComment=__name(str=>str.replace(/^(?!$)(?: $)?/gm,"#"),"stringifyComment");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}__name(indentComment,"indentComment");var lineComment=__name((str,indent,comment)=>str.endsWith(`
|
|
300
300
|
`)?indentComment(comment,indent):comment.includes(`
|
|
301
301
|
`)?`
|
|
302
302
|
`+indentComment(comment,indent):(str.endsWith(" ")?"":" ")+comment,"lineComment");exports2.indentComment=indentComment;exports2.lineComment=lineComment;exports2.stringifyComment=stringifyComment}});var require_foldFlowLines2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports2){"use strict";var FOLD_FLOW="flow",FOLD_BLOCK="block",FOLD_QUOTED="quoted";function foldFlowLines(text3,indent,mode2="flow",{indentAtStart,lineWidth=80,minContentWidth=20,onFold,onOverflow}={}){if(!lineWidth||lineWidth<0)return text3;lineWidth<minContentWidth&&(minContentWidth=0);let endStep=Math.max(1+minContentWidth,1+lineWidth-indent.length);if(text3.length<=endStep)return text3;let folds=[],escapedFolds={},end2=lineWidth-indent.length;typeof indentAtStart=="number"&&(indentAtStart>lineWidth-Math.max(2,minContentWidth)?folds.push(0):end2=lineWidth-indentAtStart);let split2,prev2,overflow=!1,i=-1,escStart=-1,escEnd=-1;mode2===FOLD_BLOCK&&(i=consumeMoreIndentedLines(text3,i,indent.length),i!==-1&&(end2=i+endStep));for(let ch;ch=text3[i+=1];){if(mode2===FOLD_QUOTED&&ch==="\\"){switch(escStart=i,text3[i+1]){case"x":i+=3;break;case"u":i+=5;break;case"U":i+=9;break;default:i+=1}escEnd=i}if(ch===`
|
|
@@ -351,7 +351,7 @@ ${pair.key.commentBefore}`:item.commentBefore),item.comment){let cn=pair.value??
|
|
|
351
351
|
${cn.comment}`:item.comment}item=pair}seq.items[i]=identity2.isPair(item)?item:new Pair.Pair(item)}}else onError("Expected a sequence for this tag");return seq}__name(resolvePairs,"resolvePairs");function createPairs(schema,iterable,ctx){let{replacer}=ctx,pairs2=new YAMLSeq.YAMLSeq(schema);pairs2.tag="tag:yaml.org,2002:pairs";let i=0;if(iterable&&Symbol.iterator in Object(iterable))for(let it2 of iterable){typeof replacer=="function"&&(it2=replacer.call(iterable,String(i++),it2));let key,value;if(Array.isArray(it2))if(it2.length===2)key=it2[0],value=it2[1];else throw new TypeError(`Expected [key, value] tuple: ${it2}`);else if(it2&&it2 instanceof Object){let keys=Object.keys(it2);if(keys.length===1)key=keys[0],value=it2[key];else throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`)}else key=it2;pairs2.items.push(Pair.createPair(key,value,ctx))}return pairs2}__name(createPairs,"createPairs");var pairs={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:resolvePairs,createNode:createPairs};exports2.createPairs=createPairs;exports2.pairs=pairs;exports2.resolvePairs=resolvePairs}});var require_omap2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports2){"use strict";var identity2=require_identity2(),toJS=require_toJS2(),YAMLMap=require_YAMLMap2(),YAMLSeq=require_YAMLSeq2(),pairs=require_pairs2(),YAMLOMap=class _YAMLOMap extends YAMLSeq.YAMLSeq{static{__name(this,"YAMLOMap")}constructor(){super(),this.add=YAMLMap.YAMLMap.prototype.add.bind(this),this.delete=YAMLMap.YAMLMap.prototype.delete.bind(this),this.get=YAMLMap.YAMLMap.prototype.get.bind(this),this.has=YAMLMap.YAMLMap.prototype.has.bind(this),this.set=YAMLMap.YAMLMap.prototype.set.bind(this),this.tag=_YAMLOMap.tag}toJSON(_2,ctx){if(!ctx)return super.toJSON(_2);let map2=new Map;ctx?.onCreate&&ctx.onCreate(map2);for(let pair of this.items){let key,value;if(identity2.isPair(pair)?(key=toJS.toJS(pair.key,"",ctx),value=toJS.toJS(pair.value,key,ctx)):key=toJS.toJS(pair,"",ctx),map2.has(key))throw new Error("Ordered maps must not include duplicate keys");map2.set(key,value)}return map2}static from(schema,iterable,ctx){let pairs$1=pairs.createPairs(schema,iterable,ctx),omap2=new this;return omap2.items=pairs$1.items,omap2}};YAMLOMap.tag="tag:yaml.org,2002:omap";var omap={collection:"seq",identify:__name(value=>value instanceof Map,"identify"),nodeClass:YAMLOMap,default:!1,tag:"tag:yaml.org,2002:omap",resolve(seq,onError){let pairs$1=pairs.resolvePairs(seq,onError),seenKeys=[];for(let{key}of pairs$1.items)identity2.isScalar(key)&&(seenKeys.includes(key.value)?onError(`Ordered maps must not include duplicate keys: ${key.value}`):seenKeys.push(key.value));return Object.assign(new YAMLOMap,pairs$1)},createNode:__name((schema,iterable,ctx)=>YAMLOMap.from(schema,iterable,ctx),"createNode")};exports2.YAMLOMap=YAMLOMap;exports2.omap=omap}});var require_bool4=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports2){"use strict";var Scalar=require_Scalar2();function boolStringify({value,source},ctx){return source&&(value?trueTag:falseTag).test.test(source)?source:value?ctx.options.trueStr:ctx.options.falseStr}__name(boolStringify,"boolStringify");var trueTag={identify:__name(value=>value===!0,"identify"),default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:__name(()=>new Scalar.Scalar(!0),"resolve"),stringify:boolStringify},falseTag={identify:__name(value=>value===!1,"identify"),default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:__name(()=>new Scalar.Scalar(!1),"resolve"),stringify:boolStringify};exports2.falseTag=falseTag;exports2.trueTag=trueTag}});var require_float4=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports2){"use strict";var Scalar=require_Scalar2(),stringifyNumber=require_stringifyNumber2(),floatNaN={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:__name(str=>str.slice(-3).toLowerCase()==="nan"?NaN:str[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,"resolve"),stringify:stringifyNumber.stringifyNumber},floatExp={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:__name(str=>parseFloat(str.replace(/_/g,"")),"resolve"),stringify(node){let num=Number(node.value);return isFinite(num)?num.toExponential():stringifyNumber.stringifyNumber(node)}},float={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(str){let node=new Scalar.Scalar(parseFloat(str.replace(/_/g,""))),dot=str.indexOf(".");if(dot!==-1){let f=str.substring(dot+1).replace(/_/g,"");f[f.length-1]==="0"&&(node.minFractionDigits=f.length)}return node},stringify:stringifyNumber.stringifyNumber};exports2.float=float;exports2.floatExp=floatExp;exports2.floatNaN=floatNaN}});var require_int4=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports2){"use strict";var stringifyNumber=require_stringifyNumber2(),intIdentify=__name(value=>typeof value=="bigint"||Number.isInteger(value),"intIdentify");function intResolve(str,offset,radix,{intAsBigInt}){let sign=str[0];if((sign==="-"||sign==="+")&&(offset+=1),str=str.substring(offset).replace(/_/g,""),intAsBigInt){switch(radix){case 2:str=`0b${str}`;break;case 8:str=`0o${str}`;break;case 16:str=`0x${str}`;break}let n2=BigInt(str);return sign==="-"?BigInt(-1)*n2:n2}let n=parseInt(str,radix);return sign==="-"?-1*n:n}__name(intResolve,"intResolve");function intStringify(node,radix,prefix){let{value}=node;if(intIdentify(value)){let str=value.toString(radix);return value<0?"-"+prefix+str.substr(1):prefix+str}return stringifyNumber.stringifyNumber(node)}__name(intStringify,"intStringify");var intBin={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,2,2,opt),"resolve"),stringify:__name(node=>intStringify(node,2,"0b"),"stringify")},intOct={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,1,8,opt),"resolve"),stringify:__name(node=>intStringify(node,8,"0"),"stringify")},int={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:__name((str,_onError,opt)=>intResolve(str,0,10,opt),"resolve"),stringify:stringifyNumber.stringifyNumber},intHex={identify:intIdentify,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:__name((str,_onError,opt)=>intResolve(str,2,16,opt),"resolve"),stringify:__name(node=>intStringify(node,16,"0x"),"stringify")};exports2.int=int;exports2.intBin=intBin;exports2.intHex=intHex;exports2.intOct=intOct}});var require_set2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports2){"use strict";var identity2=require_identity2(),Pair=require_Pair2(),YAMLMap=require_YAMLMap2(),YAMLSet=class _YAMLSet extends YAMLMap.YAMLMap{static{__name(this,"YAMLSet")}constructor(schema){super(schema),this.tag=_YAMLSet.tag}add(key){let pair;identity2.isPair(key)?pair=key:key&&typeof key=="object"&&"key"in key&&"value"in key&&key.value===null?pair=new Pair.Pair(key.key,null):pair=new Pair.Pair(key,null),YAMLMap.findPair(this.items,pair.key)||this.items.push(pair)}get(key,keepPair){let pair=YAMLMap.findPair(this.items,key);return!keepPair&&identity2.isPair(pair)?identity2.isScalar(pair.key)?pair.key.value:pair.key:pair}set(key,value){if(typeof value!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);let prev2=YAMLMap.findPair(this.items,key);prev2&&!value?this.items.splice(this.items.indexOf(prev2),1):!prev2&&value&&this.items.push(new Pair.Pair(key))}toJSON(_2,ctx){return super.toJSON(_2,ctx,Set)}toString(ctx,onComment,onChompKeep){if(!ctx)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},ctx,{allNullValues:!0}),onComment,onChompKeep);throw new Error("Set items must all have null values")}static from(schema,iterable,ctx){let{replacer}=ctx,set2=new this(schema);if(iterable&&Symbol.iterator in Object(iterable))for(let value of iterable)typeof replacer=="function"&&(value=replacer.call(iterable,value,value)),set2.items.push(Pair.createPair(value,null,ctx));return set2}};YAMLSet.tag="tag:yaml.org,2002:set";var set={collection:"map",identify:__name(value=>value instanceof Set,"identify"),nodeClass:YAMLSet,default:!1,tag:"tag:yaml.org,2002:set",createNode:__name((schema,iterable,ctx)=>YAMLSet.from(schema,iterable,ctx),"createNode"),resolve(map2,onError){if(identity2.isMap(map2)){if(map2.hasAllNullValues(!0))return Object.assign(new YAMLSet,map2);onError("Set items must all have null values")}else onError("Expected a mapping for this tag");return map2}};exports2.YAMLSet=YAMLSet;exports2.set=set}});var require_timestamp2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports2){"use strict";var stringifyNumber=require_stringifyNumber2();function parseSexagesimal(str,asBigInt){let sign=str[0],parts=sign==="-"||sign==="+"?str.substring(1):str,num=__name(n=>asBigInt?BigInt(n):Number(n),"num"),res=parts.replace(/_/g,"").split(":").reduce((res2,p2)=>res2*num(60)+num(p2),num(0));return sign==="-"?num(-1)*res:res}__name(parseSexagesimal,"parseSexagesimal");function stringifySexagesimal(node){let{value}=node,num=__name(n=>n,"num");if(typeof value=="bigint")num=__name(n=>BigInt(n),"num");else if(isNaN(value)||!isFinite(value))return stringifyNumber.stringifyNumber(node);let sign="";value<0&&(sign="-",value*=num(-1));let _60=num(60),parts=[value%_60];return value<60?parts.unshift(0):(value=(value-parts[0])/_60,parts.unshift(value%_60),value>=60&&(value=(value-parts[0])/_60,parts.unshift(value))),sign+parts.map(n=>String(n).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}__name(stringifySexagesimal,"stringifySexagesimal");var intTime={identify:__name(value=>typeof value=="bigint"||Number.isInteger(value),"identify"),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:__name((str,_onError,{intAsBigInt})=>parseSexagesimal(str,intAsBigInt),"resolve"),stringify:stringifySexagesimal},floatTime={identify:__name(value=>typeof value=="number","identify"),default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:__name(str=>parseSexagesimal(str,!1),"resolve"),stringify:stringifySexagesimal},timestamp={identify:__name(value=>value instanceof Date,"identify"),default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(str){let match=str.match(timestamp.test);if(!match)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,year,month,day,hour,minute,second]=match.map(Number),millisec=match[7]?Number((match[7]+"00").substr(1,3)):0,date=Date.UTC(year,month-1,day,hour||0,minute||0,second||0,millisec),tz=match[8];if(tz&&tz!=="Z"){let d3=parseSexagesimal(tz,!1);Math.abs(d3)<30&&(d3*=60),date-=6e4*d3}return new Date(date)},stringify:__name(({value})=>value?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??"","stringify")};exports2.floatTime=floatTime;exports2.intTime=intTime;exports2.timestamp=timestamp}});var require_schema6=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports2){"use strict";var map2=require_map2(),_null=require_null2(),seq=require_seq2(),string=require_string2(),binary=require_binary2(),bool=require_bool4(),float=require_float4(),int=require_int4(),merge2=require_merge2(),omap=require_omap2(),pairs=require_pairs2(),set=require_set2(),timestamp=require_timestamp2(),schema=[map2.map,seq.seq,string.string,_null.nullTag,bool.trueTag,bool.falseTag,int.intBin,int.intOct,int.int,int.intHex,float.floatNaN,float.floatExp,float.float,binary.binary,merge2.merge,omap.omap,pairs.pairs,set.set,timestamp.intTime,timestamp.floatTime,timestamp.timestamp];exports2.schema=schema}});var require_tags2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/tags.js"(exports2){"use strict";var map2=require_map2(),_null=require_null2(),seq=require_seq2(),string=require_string2(),bool=require_bool3(),float=require_float3(),int=require_int3(),schema=require_schema4(),schema$1=require_schema5(),binary=require_binary2(),merge2=require_merge2(),omap=require_omap2(),pairs=require_pairs2(),schema$2=require_schema6(),set=require_set2(),timestamp=require_timestamp2(),schemas3=new Map([["core",schema.schema],["failsafe",[map2.map,seq.seq,string.string]],["json",schema$1.schema],["yaml11",schema$2.schema],["yaml-1.1",schema$2.schema]]),tagsByName={binary:binary.binary,bool:bool.boolTag,float:float.float,floatExp:float.floatExp,floatNaN:float.floatNaN,floatTime:timestamp.floatTime,int:int.int,intHex:int.intHex,intOct:int.intOct,intTime:timestamp.intTime,map:map2.map,merge:merge2.merge,null:_null.nullTag,omap:omap.omap,pairs:pairs.pairs,seq:seq.seq,set:set.set,timestamp:timestamp.timestamp},coreKnownTags={"tag:yaml.org,2002:binary":binary.binary,"tag:yaml.org,2002:merge":merge2.merge,"tag:yaml.org,2002:omap":omap.omap,"tag:yaml.org,2002:pairs":pairs.pairs,"tag:yaml.org,2002:set":set.set,"tag:yaml.org,2002:timestamp":timestamp.timestamp};function getTags(customTags,schemaName,addMergeTag){let schemaTags=schemas3.get(schemaName);if(schemaTags&&!customTags)return addMergeTag&&!schemaTags.includes(merge2.merge)?schemaTags.concat(merge2.merge):schemaTags.slice();let tags=schemaTags;if(!tags)if(Array.isArray(customTags))tags=[];else{let keys=Array.from(schemas3.keys()).filter(key=>key!=="yaml11").map(key=>JSON.stringify(key)).join(", ");throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`)}if(Array.isArray(customTags))for(let tag of customTags)tags=tags.concat(tag);else typeof customTags=="function"&&(tags=customTags(tags.slice()));return addMergeTag&&(tags=tags.concat(merge2.merge)),tags.reduce((tags2,tag)=>{let tagObj=typeof tag=="string"?tagsByName[tag]:tag;if(!tagObj){let tagName=JSON.stringify(tag),keys=Object.keys(tagsByName).map(key=>JSON.stringify(key)).join(", ");throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`)}return tags2.includes(tagObj)||tags2.push(tagObj),tags2},[])}__name(getTags,"getTags");exports2.coreKnownTags=coreKnownTags;exports2.getTags=getTags}});var require_Schema2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/Schema.js"(exports2){"use strict";var identity2=require_identity2(),map2=require_map2(),seq=require_seq2(),string=require_string2(),tags=require_tags2(),sortMapEntriesByKey=__name((a,b)=>a.key<b.key?-1:a.key>b.key?1:0,"sortMapEntriesByKey"),Schema=class _Schema{static{__name(this,"Schema")}constructor({compat,customTags,merge:merge2,resolveKnownTags,schema,sortMapEntries,toStringDefaults}){this.compat=Array.isArray(compat)?tags.getTags(compat,"compat"):compat?tags.getTags(null,compat):null,this.name=typeof schema=="string"&&schema||"core",this.knownTags=resolveKnownTags?tags.coreKnownTags:{},this.tags=tags.getTags(customTags,this.name,merge2),this.toStringOptions=toStringDefaults??null,Object.defineProperty(this,identity2.MAP,{value:map2.map}),Object.defineProperty(this,identity2.SCALAR,{value:string.string}),Object.defineProperty(this,identity2.SEQ,{value:seq.seq}),this.sortMapEntries=typeof sortMapEntries=="function"?sortMapEntries:sortMapEntries===!0?sortMapEntriesByKey:null}clone(){let copy=Object.create(_Schema.prototype,Object.getOwnPropertyDescriptors(this));return copy.tags=this.tags.slice(),copy}};exports2.Schema=Schema}});var require_stringifyDocument2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports2){"use strict";var identity2=require_identity2(),stringify4=require_stringify3(),stringifyComment=require_stringifyComment2();function stringifyDocument(doc,options){let lines=[],hasDirectives=options.directives===!0;if(options.directives!==!1&&doc.directives){let dir=doc.directives.toString(doc);dir?(lines.push(dir),hasDirectives=!0):doc.directives.docStart&&(hasDirectives=!0)}hasDirectives&&lines.push("---");let ctx=stringify4.createStringifyContext(doc,options),{commentString}=ctx.options;if(doc.commentBefore){lines.length!==1&&lines.unshift("");let cs=commentString(doc.commentBefore);lines.unshift(stringifyComment.indentComment(cs,""))}let chompKeep=!1,contentComment=null;if(doc.contents){if(identity2.isNode(doc.contents)){if(doc.contents.spaceBefore&&hasDirectives&&lines.push(""),doc.contents.commentBefore){let cs=commentString(doc.contents.commentBefore);lines.push(stringifyComment.indentComment(cs,""))}ctx.forceBlockIndent=!!doc.comment,contentComment=doc.contents.comment}let onChompKeep=contentComment?void 0:()=>chompKeep=!0,body=stringify4.stringify(doc.contents,ctx,()=>contentComment=null,onChompKeep);contentComment&&(body+=stringifyComment.lineComment(body,"",commentString(contentComment))),(body[0]==="|"||body[0]===">")&&lines[lines.length-1]==="---"?lines[lines.length-1]=`--- ${body}`:lines.push(body)}else lines.push(stringify4.stringify(doc.contents,ctx));if(doc.directives?.docEnd)if(doc.comment){let cs=commentString(doc.comment);cs.includes(`
|
|
352
352
|
`)?(lines.push("..."),lines.push(stringifyComment.indentComment(cs,""))):lines.push(`... ${cs}`)}else lines.push("...");else{let dc=doc.comment;dc&&chompKeep&&(dc=dc.replace(/^\n+/,"")),dc&&((!chompKeep||contentComment)&&lines[lines.length-1]!==""&&lines.push(""),lines.push(stringifyComment.indentComment(commentString(dc),"")))}return lines.join(`
|
|
353
353
|
`)+`
|
|
354
|
-
`}__name(stringifyDocument,"stringifyDocument");exports2.stringifyDocument=stringifyDocument}});var require_Document2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/Document.js"(exports2){"use strict";var Alias=require_Alias2(),Collection=require_Collection2(),identity2=require_identity2(),Pair=require_Pair2(),toJS=require_toJS2(),Schema=require_Schema2(),stringifyDocument=require_stringifyDocument2(),anchors=require_anchors2(),applyReviver=require_applyReviver2(),createNode=require_createNode2(),directives=require_directives2(),Document2=class _Document{static{__name(this,"Document")}constructor(value,replacer,options){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,identity2.NODE_TYPE,{value:identity2.DOC});let _replacer=null;typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer,replacer=void 0);let opt=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},options);this.options=opt;let{version}=opt;options?._directives?(this.directives=options._directives.atDocument(),this.directives.yaml.explicit&&(version=this.directives.yaml.version)):this.directives=new directives.Directives({version}),this.setSchema(version,options),this.contents=value===void 0?null:this.createNode(value,_replacer,options)}clone(){let copy=Object.create(_Document.prototype,{[identity2.NODE_TYPE]:{value:identity2.DOC}});return copy.commentBefore=this.commentBefore,copy.comment=this.comment,copy.errors=this.errors.slice(),copy.warnings=this.warnings.slice(),copy.options=Object.assign({},this.options),this.directives&&(copy.directives=this.directives.clone()),copy.schema=this.schema.clone(),copy.contents=identity2.isNode(this.contents)?this.contents.clone(copy.schema):this.contents,this.range&&(copy.range=this.range.slice()),copy}add(value){assertCollection(this.contents)&&this.contents.add(value)}addIn(
|
|
354
|
+
`}__name(stringifyDocument,"stringifyDocument");exports2.stringifyDocument=stringifyDocument}});var require_Document2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/Document.js"(exports2){"use strict";var Alias=require_Alias2(),Collection=require_Collection2(),identity2=require_identity2(),Pair=require_Pair2(),toJS=require_toJS2(),Schema=require_Schema2(),stringifyDocument=require_stringifyDocument2(),anchors=require_anchors2(),applyReviver=require_applyReviver2(),createNode=require_createNode2(),directives=require_directives2(),Document2=class _Document{static{__name(this,"Document")}constructor(value,replacer,options){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,identity2.NODE_TYPE,{value:identity2.DOC});let _replacer=null;typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer,replacer=void 0);let opt=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},options);this.options=opt;let{version}=opt;options?._directives?(this.directives=options._directives.atDocument(),this.directives.yaml.explicit&&(version=this.directives.yaml.version)):this.directives=new directives.Directives({version}),this.setSchema(version,options),this.contents=value===void 0?null:this.createNode(value,_replacer,options)}clone(){let copy=Object.create(_Document.prototype,{[identity2.NODE_TYPE]:{value:identity2.DOC}});return copy.commentBefore=this.commentBefore,copy.comment=this.comment,copy.errors=this.errors.slice(),copy.warnings=this.warnings.slice(),copy.options=Object.assign({},this.options),this.directives&&(copy.directives=this.directives.clone()),copy.schema=this.schema.clone(),copy.contents=identity2.isNode(this.contents)?this.contents.clone(copy.schema):this.contents,this.range&&(copy.range=this.range.slice()),copy}add(value){assertCollection(this.contents)&&this.contents.add(value)}addIn(path49,value){assertCollection(this.contents)&&this.contents.addIn(path49,value)}createAlias(node,name){if(!node.anchor){let prev2=anchors.anchorNames(this);node.anchor=!name||prev2.has(name)?anchors.findNewAnchor(name||"a",prev2):name}return new Alias.Alias(node.anchor)}createNode(value,replacer,options){let _replacer;if(typeof replacer=="function")value=replacer.call({"":value},"",value),_replacer=replacer;else if(Array.isArray(replacer)){let keyToStr=__name(v=>typeof v=="number"||v instanceof String||v instanceof Number,"keyToStr"),asStr=replacer.filter(keyToStr).map(String);asStr.length>0&&(replacer=replacer.concat(asStr)),_replacer=replacer}else options===void 0&&replacer&&(options=replacer,replacer=void 0);let{aliasDuplicateObjects,anchorPrefix,flow,keepUndefined,onTagObj,tag}=options??{},{onAnchor,setAnchors,sourceObjects}=anchors.createNodeAnchors(this,anchorPrefix||"a"),ctx={aliasDuplicateObjects:aliasDuplicateObjects??!0,keepUndefined:keepUndefined??!1,onAnchor,onTagObj,replacer:_replacer,schema:this.schema,sourceObjects},node=createNode.createNode(value,tag,ctx);return flow&&identity2.isCollection(node)&&(node.flow=!0),setAnchors(),node}createPair(key,value,options={}){let k=this.createNode(key,null,options),v=this.createNode(value,null,options);return new Pair.Pair(k,v)}delete(key){return assertCollection(this.contents)?this.contents.delete(key):!1}deleteIn(path49){return Collection.isEmptyPath(path49)?this.contents==null?!1:(this.contents=null,!0):assertCollection(this.contents)?this.contents.deleteIn(path49):!1}get(key,keepScalar){return identity2.isCollection(this.contents)?this.contents.get(key,keepScalar):void 0}getIn(path49,keepScalar){return Collection.isEmptyPath(path49)?!keepScalar&&identity2.isScalar(this.contents)?this.contents.value:this.contents:identity2.isCollection(this.contents)?this.contents.getIn(path49,keepScalar):void 0}has(key){return identity2.isCollection(this.contents)?this.contents.has(key):!1}hasIn(path49){return Collection.isEmptyPath(path49)?this.contents!==void 0:identity2.isCollection(this.contents)?this.contents.hasIn(path49):!1}set(key,value){this.contents==null?this.contents=Collection.collectionFromPath(this.schema,[key],value):assertCollection(this.contents)&&this.contents.set(key,value)}setIn(path49,value){Collection.isEmptyPath(path49)?this.contents=value:this.contents==null?this.contents=Collection.collectionFromPath(this.schema,Array.from(path49),value):assertCollection(this.contents)&&this.contents.setIn(path49,value)}setSchema(version,options={}){typeof version=="number"&&(version=String(version));let opt;switch(version){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new directives.Directives({version:"1.1"}),opt={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=version:this.directives=new directives.Directives({version}),opt={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,opt=null;break;default:{let sv=JSON.stringify(version);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`)}}if(options.schema instanceof Object)this.schema=options.schema;else if(opt)this.schema=new Schema.Schema(Object.assign(opt,options));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json,jsonArg,mapAsMap,maxAliasCount,onAnchor,reviver}={}){let ctx={anchors:new Map,doc:this,keep:!json,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this.contents,jsonArg??"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}toJSON(jsonArg,onAnchor){return this.toJS({json:!0,jsonArg,mapAsMap:!1,onAnchor})}toString(options={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in options&&(!Number.isInteger(options.indent)||Number(options.indent)<=0)){let s=JSON.stringify(options.indent);throw new Error(`"indent" option must be a positive integer, not ${s}`)}return stringifyDocument.stringifyDocument(this,options)}};function assertCollection(contents2){if(identity2.isCollection(contents2))return!0;throw new Error("Expected a YAML collection as document contents")}__name(assertCollection,"assertCollection");exports2.Document=Document2}});var require_errors2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/errors.js"(exports2){"use strict";var YAMLError=class extends Error{static{__name(this,"YAMLError")}constructor(name,pos,code2,message){super(),this.name=name,this.code=code2,this.message=message,this.pos=pos}},YAMLParseError=class extends YAMLError{static{__name(this,"YAMLParseError")}constructor(pos,code2,message){super("YAMLParseError",pos,code2,message)}},YAMLWarning=class extends YAMLError{static{__name(this,"YAMLWarning")}constructor(pos,code2,message){super("YAMLWarning",pos,code2,message)}},prettifyError=__name((src,lc)=>error=>{if(error.pos[0]===-1)return;error.linePos=error.pos.map(pos=>lc.linePos(pos));let{line,col}=error.linePos[0];error.message+=` at line ${line}, column ${col}`;let ci=col-1,lineStr=src.substring(lc.lineStarts[line-1],lc.lineStarts[line]).replace(/[\n\r]+$/,"");if(ci>=60&&lineStr.length>80){let trimStart=Math.min(ci-39,lineStr.length-79);lineStr="\u2026"+lineStr.substring(trimStart),ci-=trimStart-1}if(lineStr.length>80&&(lineStr=lineStr.substring(0,79)+"\u2026"),line>1&&/^ *$/.test(lineStr.substring(0,ci))){let prev2=src.substring(lc.lineStarts[line-2],lc.lineStarts[line-1]);prev2.length>80&&(prev2=prev2.substring(0,79)+`\u2026
|
|
355
355
|
`),lineStr=prev2+lineStr}if(/[^ ]/.test(lineStr)){let count=1,end2=error.linePos[1];end2?.line===line&&end2.col>col&&(count=Math.max(1,Math.min(end2.col-col,80-ci)));let pointer=" ".repeat(ci)+"^".repeat(count);error.message+=`:
|
|
356
356
|
|
|
357
357
|
${lineStr}
|
|
@@ -408,7 +408,7 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
|
|
|
408
408
|
`),head=source.substring(0,he2),body=source.substring(he2+1)+`
|
|
409
409
|
`;if(token.type==="block-scalar"){let header=token.props[0];if(header.type!=="block-scalar-header")throw new Error("Invalid block scalar header");header.source=head,token.source=body}else{let{offset}=token,indent="indent"in token?token.indent:-1,props=[{type:"block-scalar-header",offset,indent,source:head}];addEndtoBlockProps(props,"end"in token?token.end:void 0)||props.push({type:"newline",offset:-1,indent,source:`
|
|
410
410
|
`});for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type:"block-scalar",indent,props,source:body})}}__name(setBlockScalarValue,"setBlockScalarValue");function addEndtoBlockProps(props,end2){if(end2)for(let st2 of end2)switch(st2.type){case"space":case"comment":props.push(st2);break;case"newline":return props.push(st2),!0}return!1}__name(addEndtoBlockProps,"addEndtoBlockProps");function setFlowScalarValue(token,source,type){switch(token.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":token.type=type,token.source=source;break;case"block-scalar":{let end2=token.props.slice(1),oa=source.length;token.props[0].type==="block-scalar-header"&&(oa-=token.props[0].source.length);for(let tok of end2)tok.offset+=oa;delete token.props,Object.assign(token,{type,source,end:end2});break}case"block-map":case"block-seq":{let nl={type:"newline",offset:token.offset+source.length,indent:token.indent,source:`
|
|
411
|
-
`};delete token.items,Object.assign(token,{type,source,end:[nl]});break}default:{let indent="indent"in token?token.indent:-1,end2="end"in token&&Array.isArray(token.end)?token.end.filter(st2=>st2.type==="space"||st2.type==="comment"||st2.type==="newline"):[];for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type,indent,source,end:end2})}}}__name(setFlowScalarValue,"setFlowScalarValue");exports2.createScalarToken=createScalarToken;exports2.resolveAsScalar=resolveAsScalar;exports2.setScalarValue=setScalarValue}});var require_cst_stringify2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-stringify.js"(exports2){"use strict";var stringify4=__name(cst=>"type"in cst?stringifyToken(cst):stringifyItem(cst),"stringify");function stringifyToken(token){switch(token.type){case"block-scalar":{let res="";for(let tok of token.props)res+=stringifyToken(tok);return res+token.source}case"block-map":case"block-seq":{let res="";for(let item of token.items)res+=stringifyItem(item);return res}case"flow-collection":{let res=token.start.source;for(let item of token.items)res+=stringifyItem(item);for(let st2 of token.end)res+=st2.source;return res}case"document":{let res=stringifyItem(token);if(token.end)for(let st2 of token.end)res+=st2.source;return res}default:{let res=token.source;if("end"in token&&token.end)for(let st2 of token.end)res+=st2.source;return res}}}__name(stringifyToken,"stringifyToken");function stringifyItem({start,key,sep:sep2,value}){let res="";for(let st2 of start)res+=st2.source;if(key&&(res+=stringifyToken(key)),sep2)for(let st2 of sep2)res+=st2.source;return value&&(res+=stringifyToken(value)),res}__name(stringifyItem,"stringifyItem");exports2.stringify=stringify4}});var require_cst_visit2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-visit.js"(exports2){"use strict";var BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove item");function visit2(cst,visitor){"type"in cst&&cst.type==="document"&&(cst={start:cst.start,value:cst.value}),_visit(Object.freeze([]),cst,visitor)}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;visit2.itemAtPath=(cst,
|
|
411
|
+
`};delete token.items,Object.assign(token,{type,source,end:[nl]});break}default:{let indent="indent"in token?token.indent:-1,end2="end"in token&&Array.isArray(token.end)?token.end.filter(st2=>st2.type==="space"||st2.type==="comment"||st2.type==="newline"):[];for(let key of Object.keys(token))key!=="type"&&key!=="offset"&&delete token[key];Object.assign(token,{type,indent,source,end:end2})}}}__name(setFlowScalarValue,"setFlowScalarValue");exports2.createScalarToken=createScalarToken;exports2.resolveAsScalar=resolveAsScalar;exports2.setScalarValue=setScalarValue}});var require_cst_stringify2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-stringify.js"(exports2){"use strict";var stringify4=__name(cst=>"type"in cst?stringifyToken(cst):stringifyItem(cst),"stringify");function stringifyToken(token){switch(token.type){case"block-scalar":{let res="";for(let tok of token.props)res+=stringifyToken(tok);return res+token.source}case"block-map":case"block-seq":{let res="";for(let item of token.items)res+=stringifyItem(item);return res}case"flow-collection":{let res=token.start.source;for(let item of token.items)res+=stringifyItem(item);for(let st2 of token.end)res+=st2.source;return res}case"document":{let res=stringifyItem(token);if(token.end)for(let st2 of token.end)res+=st2.source;return res}default:{let res=token.source;if("end"in token&&token.end)for(let st2 of token.end)res+=st2.source;return res}}}__name(stringifyToken,"stringifyToken");function stringifyItem({start,key,sep:sep2,value}){let res="";for(let st2 of start)res+=st2.source;if(key&&(res+=stringifyToken(key)),sep2)for(let st2 of sep2)res+=st2.source;return value&&(res+=stringifyToken(value)),res}__name(stringifyItem,"stringifyItem");exports2.stringify=stringify4}});var require_cst_visit2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-visit.js"(exports2){"use strict";var BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove item");function visit2(cst,visitor){"type"in cst&&cst.type==="document"&&(cst={start:cst.start,value:cst.value}),_visit(Object.freeze([]),cst,visitor)}__name(visit2,"visit");visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;visit2.itemAtPath=(cst,path49)=>{let item=cst;for(let[field,index2]of path49){let tok=item?.[field];if(tok&&"items"in tok)item=tok.items[index2];else return}return item};visit2.parentCollection=(cst,path49)=>{let parent2=visit2.itemAtPath(cst,path49.slice(0,-1)),field=path49[path49.length-1][0],coll=parent2?.[field];if(coll&&"items"in coll)return coll;throw new Error("Parent collection not found")};function _visit(path49,item,visitor){let ctrl=visitor(item,path49);if(typeof ctrl=="symbol")return ctrl;for(let field of["key","value"]){let token=item[field];if(token&&"items"in token){for(let i=0;i<token.items.length;++i){let ci=_visit(Object.freeze(path49.concat([[field,i]])),token.items[i],visitor);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(token.items.splice(i,1),i-=1)}}typeof ctrl=="function"&&field==="key"&&(ctrl=ctrl(item,path49))}}return typeof ctrl=="function"?ctrl(item,path49):ctrl}__name(_visit,"_visit");exports2.visit=visit2}});var require_cst2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst.js"(exports2){"use strict";var cstScalar=require_cst_scalar2(),cstStringify=require_cst_stringify2(),cstVisit=require_cst_visit2(),BOM="\uFEFF",DOCUMENT="",FLOW_END="",SCALAR="",isCollection=__name(token=>!!token&&"items"in token,"isCollection"),isScalar=__name(token=>!!token&&(token.type==="scalar"||token.type==="single-quoted-scalar"||token.type==="double-quoted-scalar"||token.type==="block-scalar"),"isScalar");function prettyToken(token){switch(token){case BOM:return"<BOM>";case DOCUMENT:return"<DOC>";case FLOW_END:return"<FLOW_END>";case SCALAR:return"<SCALAR>";default:return JSON.stringify(token)}}__name(prettyToken,"prettyToken");function tokenType(source){switch(source){case BOM:return"byte-order-mark";case DOCUMENT:return"doc-mode";case FLOW_END:return"flow-error-end";case SCALAR:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
412
412
|
`:case`\r
|
|
413
413
|
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(source[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}__name(tokenType,"tokenType");exports2.createScalarToken=cstScalar.createScalarToken;exports2.resolveAsScalar=cstScalar.resolveAsScalar;exports2.setScalarValue=cstScalar.setScalarValue;exports2.stringify=cstStringify.stringify;exports2.visit=cstVisit.visit;exports2.BOM=BOM;exports2.DOCUMENT=DOCUMENT;exports2.FLOW_END=FLOW_END;exports2.SCALAR=SCALAR;exports2.isCollection=isCollection;exports2.isScalar=isScalar;exports2.prettyToken=prettyToken;exports2.tokenType=tokenType}});var require_lexer2=__commonJS({"../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/lexer.js"(exports2){"use strict";var cst=require_cst2();function isEmpty(ch){switch(ch){case void 0:case" ":case`
|
|
414
414
|
`:case"\r":case" ":return!0;default:return!1}}__name(isEmpty,"isEmpty");var hexDigits=new Set("0123456789ABCDEFabcdef"),tagChars=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),flowIndicatorChars=new Set(",[]{}"),invalidAnchorChars=new Set(` ,[]{}
|
|
@@ -435,15 +435,15 @@ ${end2.comment}`:end2.comment}this.doc.range[2]=end2.offset;break}default:this.e
|
|
|
435
435
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
436
436
|
`,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
437
|
`);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_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: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: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: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 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=z39.object({id:z39.string(),name:z39.string()}),AssetDTOSchema=z39.object({id:z39.string(),name:z39.string(),type:AssetTypeSchema,originalFileName:z39.string().nullable(),parentId:z39.string().nullable(),mimeType:z39.string().nullable(),fileSize:z39.number().nullable(),url:z39.string().nullable(),storageKey:z39.string().nullable(),createdAt:z39.string(),updatedAt:z39.string(),altText:z39.string().nullable().optional(),caption:z39.string().nullable().optional(),aiCaption:z39.string().nullable().optional(),aiAltText:z39.string().nullable().optional(),aiTags:z39.array(z39.string()).nullable().optional(),aiPrimaryColor:z39.string().nullable().optional(),aiProcessingStatus:z39.string().nullable().optional(),width:z39.number().nullable().optional(),height:z39.number().nullable().optional(),path:z39.array(AssetPathItemSchema).optional(),hasChildren:z39.boolean().optional()}),AssetDTO=createDTO(AssetDTOSchema),AssetTreeNodeDTOSchema=AssetDTOSchema.extend({children:z39.lazy(()=>z39.array(AssetTreeNodeDTOSchema)).optional()}),AssetTreeNodeDTO=createDTO(AssetTreeNodeDTOSchema),AssetResponseSchema=createResponseSchema(AssetDTOSchema),AssetListResponseSchema=createResponseSchema(z39.array(AssetDTOSchema))}});import{z as z40}from"zod";var TranslationDTOSchema,TranslationDTO,init_translation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/translation.dto.js"(){"use strict";init_create_dto();TranslationDTOSchema=z40.object({key:z40.string(),value:z40.string().optional(),defaultValue:z40.string(),locale:z40.string()}),TranslationDTO=createDTO(TranslationDTOSchema)}});import{z as z41}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=z41.object({id:z41.string(),name:z41.string(),type:z41.enum(["file","folder"]),path:z41.string(),children:z41.lazy(()=>z41.array(DocumentNodeDTOSchema)).optional()}),DocumentTreeDTOSchema=z41.array(DocumentNodeDTOSchema),DocumentPathDTOSchema=z41.object({path:z41.string(),exists:z41.boolean(),type:z41.enum(["file","folder"]).optional()}),DocumentPathDTO=createDTO(DocumentPathDTOSchema),DocumentTreeResponseSchema=createResponseSchema(DocumentTreeDTOSchema),DocumentPathResponseSchema=createResponseSchema(DocumentPathDTOSchema)}});import{z as z42}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=z42.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z42.object({items:z42.array(ProjectMessagePublicDTOSchema),nextCursor:z42.string().nullable()}),ChatDeletionDTOSchema=z42.object({success:z42.boolean(),deletedCount:z42.number()}),ChatDeletionDTO=createDTO(ChatDeletionDTOSchema),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema),ChatDeletionResponseSchema=createResponseSchema(ChatDeletionDTOSchema)}});import{z as z43}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=z43.object({url:z43.string().url(),key:z43.string(),size:z43.number(),contentType:z43.string(),uploadedAt:CommonSchemas.timestamp}),UploadResultDTO=createDTO(UploadResultDTOSchema),UploadResultResponseSchema=createResponseSchema(UploadResultDTOSchema)}});import{z as z44}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=z44.object({canAccess:z44.boolean(),permissions:z44.record(z44.string(),z44.boolean()),role:z44.string().nullable()}),ServicePermissionsDTO=createDTO(ServicePermissionsDTOSchema),ServicePermissionsResponseSchema=createResponseSchema(ServicePermissionsDTOSchema)}});import{z as z45}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:z45.string().trim().default(""),sort:z45.enum(["recent","name","relevance"]).default("recent"),category:z45.string().optional(),visibility:z45.enum(["public","private"]).optional()})}});import{z as z46}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=z46.enum(["pending_payment","registering","owned","registration_failed","payment_failed","expiring","expired"]),DomainSourceSchema=z46.enum(["fimo","external"]),PaymentStatusSchema=z46.enum(["pending","paid","failed","refunded"]),DomainDTOSchema=z46.object({id:z46.string().uuid(),domain:z46.string(),status:DomainStatusSchema,source:DomainSourceSchema,registrationDate:CommonSchemas.timestamp.nullable(),expirationDate:CommonSchemas.timestamp.nullable(),autoRenew:z46.boolean(),price:z46.number().int().nullable(),renewalPrice:z46.number().int().nullable(),paymentStatus:PaymentStatusSchema.nullable(),checkoutUrl:z46.string().nullable(),failureReason:z46.string().nullable(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),DomainDTO=createDTO(DomainDTOSchema),DomainSearchResultDTOSchema=z46.object({domain:z46.string(),available:z46.boolean(),premium:z46.boolean(),price:z46.number().nullable(),renewalPrice:z46.number().nullable(),purchaseType:z46.string().nullable()}),DomainSearchResultDTO=createDTO(DomainSearchResultDTOSchema),DomainPricingDTOSchema=z46.object({domain:z46.string(),price:z46.number().nullable(),renewalPrice:z46.number().nullable(),premium:z46.boolean(),allowedYears:z46.array(z46.number().int().positive())}),DomainPricingDTO=createDTO(DomainPricingDTOSchema),DomainContactSchema=z46.object({firstName:z46.string().max(100),lastName:z46.string().max(100),companyName:z46.string().max(100).optional(),address1:z46.string().max(255),address2:z46.string().max(255).optional(),city:z46.string().max(100),state:z46.string().max(100),zip:z46.string().max(20),country:z46.string().max(2),phone:z46.string().max(30),email:z46.union([z46.string().email().max(255),z46.literal("")])}),DomainContactDTO=createDTO(DomainContactSchema),UpdateDomainContactsRequestSchema=z46.object({firstName:z46.string().min(1).max(100),lastName:z46.string().min(1).max(100),companyName:z46.string().max(100).optional(),address1:z46.string().min(1).max(255),address2:z46.string().max(255).optional(),city:z46.string().min(1).max(100),state:z46.string().min(1).max(100),zip:z46.string().min(1).max(20),country:z46.string().min(1).max(2),phone:z46.string().min(1).max(30),email:z46.string().email().max(255)}),SearchDomainsRequestSchema=z46.object({keyword:z46.string().min(1).max(100),tldFilter:z46.array(z46.string()).optional()}),CheckAvailabilityRequestSchema=z46.object({domains:z46.array(z46.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=z46.string().min(1).max(255).regex(DOMAIN_NAME_REGEX,{message:"Invalid domain name"}),PurchaseDomainRequestSchema=z46.object({domain:DomainNameSchema,years:z46.number().int().min(1).max(10).optional().default(3),autoRenew:z46.boolean().optional().default(!0)}),UpdateDomainSettingsRequestSchema=z46.object({autoRenew:z46.boolean().optional()}),RenewDomainRequestSchema=z46.object({years:z46.number().int().min(1).max(10).optional().default(1),autoRenew:z46.boolean().optional().default(!0)}),DomainResponseSchema=createResponseSchema(DomainDTOSchema),DomainListResponseSchema=createResponseSchema(z46.array(DomainDTOSchema)),DomainSearchResultListResponseSchema=createResponseSchema(z46.array(DomainSearchResultDTOSchema)),DomainPricingResponseSchema=createResponseSchema(DomainPricingDTOSchema),DomainContactResponseSchema=createResponseSchema(DomainContactSchema.nullable()),ContactVerificationStatusSchema=z46.object({verified:z46.boolean(),email:z46.string().nullable(),verifyBy:z46.string().nullable()}),ContactVerificationStatusResponseSchema=createResponseSchema(ContactVerificationStatusSchema)}});import{z as z47}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=z47.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=z47.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=z47.object({txtName:z47.string().nullable().optional(),txtValue:z47.string().nullable().optional(),httpUrl:z47.string().nullable().optional(),httpBody:z47.string().nullable().optional(),cname:z47.string().nullable().optional(),cnameTarget:z47.string().nullable().optional()}),SSLValidationErrorSchema=z47.object({message:z47.string()}),OwnershipVerificationSchema=z47.object({type:z47.string(),name:z47.string(),value:z47.string()}),ProjectDomainSSLDTOSchema=z47.object({status:z47.string(),method:z47.string().nullable(),type:z47.string().nullable(),validationRecords:z47.array(SSLValidationRecordSchema).nullable().optional(),validationErrors:z47.array(SSLValidationErrorSchema).nullable().optional()}),DomainProviderSchema=z47.enum(["cloudflare","saas_custom_domains"]),DomainTypeSchema=z47.enum(["subdomain","apex"]),RedirectConfigSchema=z47.object({type:z47.literal("apex_to_www"),linkedDomainId:z47.string()}).nullable().optional(),ProjectDomainDTOSchema=z47.object({id:z47.string(),hostname:z47.string(),status:z47.string(),ssl:ProjectDomainSSLDTOSchema,ownershipVerification:OwnershipVerificationSchema.nullable().optional(),cnameTarget:z47.string(),scdCnameTarget:z47.string().optional(),dnsAutoConfigured:z47.boolean(),createdAt:CommonSchemas.timestamp,provider:DomainProviderSchema,domainType:DomainTypeSchema,redirectConfig:RedirectConfigSchema,migrationStatus:z47.string().nullable().optional()}),ProjectDomainDTO=createDTO(ProjectDomainDTOSchema),ProjectDomainListResponseSchema=createResponseSchema(z47.array(ProjectDomainDTOSchema)),ProjectDomainResponseSchema=createResponseSchema(ProjectDomainDTOSchema),AddProjectDomainRequestSchema=z47.object({hostname:z47.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:z47.boolean().optional()}),CheckProjectDomainHostnameReasonSchema=z47.enum(["invalid_hostname","fimo_owned_hostname","reserved","taken_by_another_project","taken_by_this_project"]),CheckProjectDomainHostnameResponseSchema=createResponseSchema(z47.object({available:z47.boolean(),reason:CheckProjectDomainHostnameReasonSchema.optional()})),DeleteProjectDomainResponseSchema=createResponseSchema(z47.object({success:z47.boolean(),hostname:z47.string()}))}});import{z as z48}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=z48.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain"]),CheckProjectSubdomainResponseSchema=createResponseSchema(z48.object({available:z48.boolean(),reason:SubdomainCheckReasonSchema.optional()})),UpdateProjectSubdomainRequestSchema=z48.object({slug:z48.string().min(1).max(63).regex(SUBDOMAIN_REGEX,{error:"Invalid subdomain shape"})}),UpdateProjectSubdomainErrorReasonSchema=z48.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain","kv_sync_failed"]),UpdateProjectSubdomainResponseSchema=createResponseSchema(z48.object({subdomain:z48.string(),subdomainUpdatedAt:z48.coerce.date()})),SubdomainSuggestionsQuerySchema=z48.object({base:z48.string().max(100).optional(),max:z48.coerce.number().int().min(1).max(10).optional()}),SubdomainSuggestionsResponseSchema=createResponseSchema(z48.object({suggestions:z48.array(z48.string())}))}});import{z as z49}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=z49.enum(GENERATION_QUALITIES),GenerationTaskIdSchema=z49.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=z49.object({task:GenerationTaskIdSchema,quality:GenerationQualitySchema.optional(),costUsd:z49.number(),credits:z49.number().optional(),billingMode:z49.enum(["fimo-credits","provider-account"]).optional(),confidence:z49.enum(["exact","estimated","metered"]),basis:z49.string()}),GenerationTaskEstimateDTO=createDTO(GenerationTaskEstimateDTOSchema)}});import{z as z50}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=z50.object({options:z50.record(z50.string(),z50.unknown()),name:z50.string().optional(),parentId:z50.string().nullable().optional(),altText:z50.string().optional(),caption:z50.string().optional()}),GenerateRequestDTOSchema=GenerateRequestBaseSchema.extend({task:z50.string().min(1).optional(),model:z50.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=z50.object({jobId:z50.string(),status:z50.enum(["queued","running","completed","failed"]),asset:AssetDTOSchema.optional(),error:z50.string().nullable().optional(),credits:z50.number().optional(),costUsd:z50.number().optional(),billingMode:z50.enum(["fimo-credits","provider-account"]).optional(),task:GenerationTaskIdSchema.optional(),quality:GenerationQualitySchema.optional()}),GenerateResponseDTO=createDTO(GenerateResponseDataSchema),GenerateResponseSchema=createResponseSchema(GenerateResponseDataSchema),GenerateErrorSchema=z50.object({error:z50.string(),code:z50.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:z50.array(GenerationTaskIdSchema).optional(),availableModels:z50.array(z50.string()).optional(),issues:z50.array(z50.unknown()).optional()})}});import{z as z51}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=z51.enum(["string","number","integer","boolean","enum","array","unknown"]),FlagSpecSchema=z51.object({name:z51.string(),key:z51.string(),description:z51.string(),type:FlagTypeSchema,required:z51.boolean(),defaultValue:z51.unknown().optional(),enumValues:z51.array(z51.string()).optional(),isArray:z51.boolean()}),AssetModelPriceSchema=z51.object({unitPrice:z51.number(),unit:z51.string(),confidence:z51.enum(["exact","estimated","metered"])}),AssetModelDTOSchema=z51.object({id:z51.string(),shortName:z51.string(),provider:z51.string(),source:z51.string(),modality:z51.enum(["image","video","audio"]),tags:z51.array(z51.string()),displayName:z51.string(),description:z51.string(),flags:z51.array(FlagSpecSchema),price:AssetModelPriceSchema.nullable()}),AssetModelDTO=createDTO(AssetModelDTOSchema),AssetModelEstimateDTOSchema=z51.object({model:z51.string(),costUsd:z51.number(),credits:z51.number(),billingMode:z51.enum(["fimo-credits","provider-account"]),confidence:z51.enum(["exact","estimated","metered"]),basis:z51.string()}),AssetModelEstimateDTO=createDTO(AssetModelEstimateDTOSchema)}});import{z as z52}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=z52.object({tourId:z52.string(),version:z52.string(),status:z52.string(),completedAt:z52.coerce.date()}),UserTourDTO=createDTO(UserTourDTOSchema),UserTourResponseSchema=createResponseSchema(UserTourDTOSchema),UserTourListResponseSchema=createResponseSchema(z52.array(UserTourDTOSchema))}});import{z as z53}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=z53.enum(["active","cancelled","draft","errored","paused","pending","voided"]),CreditBalanceBreakdownDTOSchema=z53.object({total:z53.number(),base:z53.number(),purchases:z53.number(),awards:z53.number()}),CreditBalanceBreakdownDTO=createDTO(CreditBalanceBreakdownDTOSchema),SubscriptionPlanDTOSchema=z53.object({id:z53.string(),name:z53.string()}),SubscriptionPlanDTO=createDTO(SubscriptionPlanDTOSchema),SubscriptionPaymentMethodDTOSchema=z53.object({type:z53.string(),brand:z53.string().nullable(),last4:z53.string().nullable(),expirationDate:z53.string().nullable()}),SubscriptionPaymentMethodDTO=createDTO(SubscriptionPaymentMethodDTOSchema),SubscriptionPricingDTOSchema=z53.object({currency:z53.string(),nextPaymentAmount:z53.number().nullable(),nextPaymentAt:z53.string().nullable(),billingInterval:z53.string().nullable(),totalAmount:z53.number().nullable(),discountAmount:z53.number().nullable()}),SubscriptionPricingDTO=createDTO(SubscriptionPricingDTOSchema),SubscriptionDetailsDTOSchema=z53.object({id:z53.string(),status:SubscriptionStatusSchema,plan:SubscriptionPlanDTOSchema.nullable(),currentPeriodStartedAt:z53.string().nullable(),currentPeriodEndsAt:z53.string().nullable(),renewsAt:z53.string().nullable(),cancelAt:z53.string().nullable(),renewAutomatically:z53.boolean(),pricing:SubscriptionPricingDTOSchema.nullable(),paymentMethod:SubscriptionPaymentMethodDTOSchema.nullable()}),SubscriptionDetailsDTO=createDTO(SubscriptionDetailsDTOSchema),CreditAlertDTOSchema=z53.object({type:z53.enum(["low_balance","critical_balance","approaching_limit"]),message:z53.string(),estimatedPromptsRemaining:z53.number().nullable(),avgCostPerPrompt:z53.number().nullable()}),CreditAlertDTO=createDTO(CreditAlertDTOSchema),PlanAllocationDTOSchema=z53.object({monthlyCredits:z53.number().nullable(),usedThisPeriod:z53.number(),remainingThisPeriod:z53.number()}),PlanAllocationDTO=createDTO(PlanAllocationDTOSchema),LatestCancellationDTOSchema=z53.object({organizationId:z53.string(),planCode:TemplateCodeSchema,reason:CancellationReasonCodeSchema,details:z53.string().nullable(),tenureDays:z53.number().int().nonnegative(),capturedAt:z53.string()}),LatestCancellationDTO=createDTO(LatestCancellationDTOSchema),OrganizationSubscriptionDTOSchema=z53.object({hasSubscription:z53.boolean(),subscription:SubscriptionDetailsDTOSchema.nullable(),credits:CreditBalanceBreakdownDTOSchema,planAllocation:PlanAllocationDTOSchema.nullable(),lowBalanceThreshold:z53.number().nullable(),alerts:z53.array(CreditAlertDTOSchema),portalUrl:z53.string().nullable(),latestCancellation:LatestCancellationDTOSchema.nullable()}),OrganizationSubscriptionDTO=createDTO(OrganizationSubscriptionDTOSchema),BaseCreditTopupRequestSchema=z53.object({creditCount:z53.number().int().positive(),expiresAt:z53.string().datetime().nullable().optional(),message:z53.string().nullable().optional()}),FreeCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z53.literal("free"),amountCents:z53.number().int().positive().nullable().optional()}),PurchaseCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z53.literal("purchase"),amountCents:z53.number().int().positive()}),CreditTopupRequestDTOSchema=z53.discriminatedUnion("type",[FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema]),CreditTopupRequestDTO=createDTO(CreditTopupRequestDTOSchema),CreditTopupResponseDTOSchema=z53.object({success:z53.boolean(),transactionId:z53.string().nullable(),newBalance:z53.number(),creditCount:z53.number(),type:z53.enum(["free","purchase"]),invoiceId:z53.string().nullable()}),CreditTopupResponseDTO=createDTO(CreditTopupResponseDTOSchema)}});import{z as z54}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=z54.object({totalCredits:z54.number(),totalCostUsd:z54.number(),totalMessages:z54.number(),avgCostPerMessage:z54.number(),periodStart:z54.string().nullable(),periodEnd:z54.string().nullable()}),UsageSummaryDTO=createDTO(UsageSummaryDTOSchema),UsageByProjectDTOSchema=z54.object({projectId:z54.string(),projectName:z54.string(),projectDisplayName:z54.string().nullable(),credits:z54.number(),costUsd:z54.number(),messages:z54.number(),percentage:z54.number()}),UsageByProjectDTO=createDTO(UsageByProjectDTOSchema),UsageByUserDTOSchema=z54.object({userId:z54.string(),userName:z54.string().nullable(),userEmail:z54.string().email().nullable(),credits:z54.number(),costUsd:z54.number(),messages:z54.number(),percentage:z54.number()}),UsageByUserDTO=createDTO(UsageByUserDTOSchema),UsageTimelineItemDTOSchema=z54.object({date:z54.string(),credits:z54.number(),costUsd:z54.number(),messages:z54.number()}),UsageTimelineItemDTO=createDTO(UsageTimelineItemDTOSchema),UsageByUserForProjectDTOSchema=z54.object({userId:z54.string(),userName:z54.string().nullable(),userEmail:z54.string().email().nullable(),credits:z54.number(),costUsd:z54.number(),messages:z54.number(),percentage:z54.number()}),UsageByUserForProjectDTO=createDTO(UsageByUserForProjectDTOSchema),ProjectUsageDetailDTOSchema=z54.object({projectId:z54.string(),projectName:z54.string(),projectDisplayName:z54.string().nullable(),summary:UsageSummaryDTOSchema,byUser:z54.array(UsageByUserForProjectDTOSchema),timeline:z54.array(UsageTimelineItemDTOSchema)}),ProjectUsageDetailDTO=createDTO(ProjectUsageDetailDTOSchema),OrganizationUsageDTOSchema=z54.object({summary:UsageSummaryDTOSchema,byProject:z54.array(UsageByProjectDTOSchema),byUser:z54.array(UsageByUserDTOSchema),timeline:z54.array(UsageTimelineItemDTOSchema)}),OrganizationUsageDTO=createDTO(OrganizationUsageDTOSchema)}});import{z as z55}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=z55.enum(["today","1d","7d","14d","30d","60d","90d"]),SortOrderSchema=z55.enum(["asc","desc"]),UsageAnalyticsQuerySchema=z55.object({startDate:z55.string().optional(),endDate:z55.string().optional(),preset:TimeRangePresetSchema.optional().default("30d"),page:z55.coerce.number().int().positive().default(1),limit:z55.coerce.number().int().positive().max(100).default(20),sortBy:z55.string().optional(),sortOrder:SortOrderSchema.optional().default("desc"),search:z55.string().optional()}),UsageOverviewSummaryDTOSchema=z55.object({totalCredits:z55.number(),totalCostUsd:z55.number(),totalMessages:z55.number(),avgCostPerMessage:z55.number(),avgCreditsPerMessage:z55.number(),periodStart:z55.string(),periodEnd:z55.string(),creditsChange:z55.number().nullable(),costChange:z55.number().nullable(),messagesChange:z55.number().nullable()}),UsageOverviewSummaryDTO=createDTO(UsageOverviewSummaryDTOSchema),UsageTimelinePointDTOSchema=z55.object({date:z55.string(),credits:z55.number(),costUsd:z55.number(),messages:z55.number()}),UsageTimelinePointDTO=createDTO(UsageTimelinePointDTOSchema),OrganizationUsageRowDTOSchema=z55.object({organizationId:z55.string(),organizationName:z55.string(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number(),userCount:z55.number(),projectCount:z55.number()}),OrganizationUsageRowDTO=createDTO(OrganizationUsageRowDTOSchema),UserUsageRowDTOSchema=z55.object({userId:z55.string(),userName:z55.string().nullable(),userEmail:z55.string().nullable(),userImage:z55.string().nullable(),organizationId:z55.string().nullable(),organizationName:z55.string().nullable(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number(),projectCount:z55.number()}),UserUsageRowDTO=createDTO(UserUsageRowDTOSchema),ProjectUsageRowDTOSchema=z55.object({projectId:z55.string(),projectName:z55.string(),projectDisplayName:z55.string().nullable(),organizationId:z55.string(),organizationName:z55.string(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number(),userCount:z55.number()}),ProjectUsageRowDTO=createDTO(ProjectUsageRowDTOSchema),UsageDistributionItemDTOSchema=z55.object({id:z55.string(),name:z55.string(),value:z55.number(),percentage:z55.number()}),UsageDistributionItemDTO=createDTO(UsageDistributionItemDTOSchema),UsageHeatmapPointDTOSchema=z55.object({day:z55.number(),hour:z55.number(),value:z55.number()}),UsageHeatmapPointDTO=createDTO(UsageHeatmapPointDTOSchema),UsageOverviewResponseDTOSchema=z55.object({summary:UsageOverviewSummaryDTOSchema,timeline:z55.array(UsageTimelinePointDTOSchema),topOrganizations:z55.array(OrganizationUsageRowDTOSchema),topUsers:z55.array(UserUsageRowDTOSchema),topProjects:z55.array(ProjectUsageRowDTOSchema),creditDistribution:z55.array(UsageDistributionItemDTOSchema),heatmap:z55.array(UsageHeatmapPointDTOSchema)}),UsageOverviewResponseDTO=createDTO(UsageOverviewResponseDTOSchema),UsagePaginationDTOSchema=z55.object({page:z55.number(),limit:z55.number(),totalItems:z55.number(),totalPages:z55.number(),hasMore:z55.boolean()}),UsagePaginationDTO=createDTO(UsagePaginationDTOSchema),UsageByOrganizationResponseDTOSchema=z55.object({organizations:z55.array(OrganizationUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByOrganizationResponseDTO=createDTO(UsageByOrganizationResponseDTOSchema),ExtendedUserUsageRowDTOSchema=UserUsageRowDTOSchema.extend({organizationCount:z55.number()}),ExtendedUserUsageRowDTO=createDTO(ExtendedUserUsageRowDTOSchema),UsageByUserResponseDTOSchema=z55.object({users:z55.array(ExtendedUserUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByUserResponseDTO=createDTO(UsageByUserResponseDTOSchema),ExtendedProjectUsageRowDTOSchema=ProjectUsageRowDTOSchema.extend({ownerId:z55.string(),ownerName:z55.string().nullable(),ownerEmail:z55.string().nullable()}),ExtendedProjectUsageRowDTO=createDTO(ExtendedProjectUsageRowDTOSchema),UsageByProjectResponseDTOSchema=z55.object({projects:z55.array(ExtendedProjectUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByProjectResponseDTO=createDTO(UsageByProjectResponseDTOSchema),ExportFormatSchema=z55.enum(["csv","json"]),UsageExportQuerySchema=UsageAnalyticsQuerySchema.extend({format:ExportFormatSchema.default("csv"),type:z55.enum(["overview","organizations","users","projects"]).default("overview")}),PeekUsageMetricsDTOSchema=z55.object({credits:z55.number(),costUsd:z55.number(),messages:z55.number()}),PeekUsageMetricsDTO=createDTO(PeekUsageMetricsDTOSchema),OrganizationPeekDTOSchema=z55.object({id:z55.string(),name:z55.string(),createdAt:z55.string(),memberCount:z55.number(),projectCount:z55.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z55.array(UsageTimelinePointDTOSchema)}),OrganizationPeekDTO=createDTO(OrganizationPeekDTOSchema),UserPeekDTOSchema=z55.object({id:z55.string(),name:z55.string().nullable(),email:z55.string(),image:z55.string().nullable(),createdAt:z55.string(),organizationCount:z55.number(),projectCount:z55.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z55.array(UsageTimelinePointDTOSchema)}),UserPeekDTO=createDTO(UserPeekDTOSchema),ProjectPeekDTOSchema=z55.object({id:z55.string(),name:z55.string(),displayName:z55.string().nullable(),createdAt:z55.string(),organizationId:z55.string(),organizationName:z55.string(),ownerId:z55.string(),ownerName:z55.string().nullable(),ownerEmail:z55.string().nullable(),usage:PeekUsageMetricsDTOSchema,recentActivity:z55.array(UsageTimelinePointDTOSchema)}),ProjectPeekDTO=createDTO(ProjectPeekDTOSchema)}});import{z as z56}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=z56.enum(["running","completed","failed","stopped"]),PresetSandboxCommandSchema=z56.enum(["restart-dev-server","stop-dev-server","install-dependencies","reinstall-dependencies","build","typecheck"]),ExecuteSandboxCommandRequestDTOSchema=z56.object({command:z56.string().min(1).max(1e4),cwd:z56.string().optional(),projectEnv:EnvSchema.optional(),env:z56.record(z56.string(),z56.string()).optional(),name:z56.string().optional(),waitForCompletion:z56.boolean().optional().default(!1)}),ExecuteSandboxCommandRequestDTO=createDTO(ExecuteSandboxCommandRequestDTOSchema),SandboxProcessInfoDTOSchema=z56.object({identifier:z56.string(),status:SandboxProcessStatusSchema,command:z56.string().optional(),startedAt:z56.string().optional(),exitCode:z56.number().optional()}),SandboxProcessInfoDTO=createDTO(SandboxProcessInfoDTOSchema),SandboxProcessInfoResponseSchema=createResponseSchema(SandboxProcessInfoDTOSchema),SandboxProcessListDTOSchema=z56.object({processes:z56.array(SandboxProcessInfoDTOSchema)}),SandboxProcessListDTO=createDTO(SandboxProcessListDTOSchema),SandboxProcessListResponseSchema=createResponseSchema(SandboxProcessListDTOSchema),ExecuteSandboxCommandResponseDTOSchema=z56.object({processId:z56.string(),status:SandboxProcessStatusSchema}),ExecuteSandboxCommandResponseDTO=createDTO(ExecuteSandboxCommandResponseDTOSchema),PresetCommandResponseDTOSchema=z56.object({success:z56.boolean(),message:z56.string().optional()}),PresetCommandResponseDTO=createDTO(PresetCommandResponseDTOSchema),PresetCommandResponseSchema=createResponseSchema(PresetCommandResponseDTOSchema)}});import{z as z57}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_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_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)}
|
|
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 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=z39.object({id:z39.string(),name:z39.string()}),AssetDTOSchema=z39.object({id:z39.string(),name:z39.string(),type:AssetTypeSchema,originalFileName:z39.string().nullable(),parentId:z39.string().nullable(),mimeType:z39.string().nullable(),fileSize:z39.number().nullable(),url:z39.string().nullable(),storageKey:z39.string().nullable(),createdAt:z39.string(),updatedAt:z39.string(),altText:z39.string().nullable().optional(),caption:z39.string().nullable().optional(),aiCaption:z39.string().nullable().optional(),aiAltText:z39.string().nullable().optional(),aiTags:z39.array(z39.string()).nullable().optional(),aiPrimaryColor:z39.string().nullable().optional(),aiProcessingStatus:z39.string().nullable().optional(),width:z39.number().nullable().optional(),height:z39.number().nullable().optional(),path:z39.array(AssetPathItemSchema).optional(),hasChildren:z39.boolean().optional()}),AssetDTO=createDTO(AssetDTOSchema),AssetTreeNodeDTOSchema=AssetDTOSchema.extend({children:z39.lazy(()=>z39.array(AssetTreeNodeDTOSchema)).optional()}),AssetTreeNodeDTO=createDTO(AssetTreeNodeDTOSchema),AssetResponseSchema=createResponseSchema(AssetDTOSchema),AssetListResponseSchema=createResponseSchema(z39.array(AssetDTOSchema))}});import{z as z40}from"zod";var TranslationDTOSchema,TranslationDTO,init_translation_dto=__esm({"../../packages/api-contracts/dist/esm/dtos/translation.dto.js"(){"use strict";init_create_dto();TranslationDTOSchema=z40.object({key:z40.string(),value:z40.string().optional(),defaultValue:z40.string(),locale:z40.string()}),TranslationDTO=createDTO(TranslationDTOSchema)}});import{z as z41}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=z41.object({id:z41.string(),name:z41.string(),type:z41.enum(["file","folder"]),path:z41.string(),children:z41.lazy(()=>z41.array(DocumentNodeDTOSchema)).optional()}),DocumentTreeDTOSchema=z41.array(DocumentNodeDTOSchema),DocumentPathDTOSchema=z41.object({path:z41.string(),exists:z41.boolean(),type:z41.enum(["file","folder"]).optional()}),DocumentPathDTO=createDTO(DocumentPathDTOSchema),DocumentTreeResponseSchema=createResponseSchema(DocumentTreeDTOSchema),DocumentPathResponseSchema=createResponseSchema(DocumentPathDTOSchema)}});import{z as z42}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=z42.array(ProjectMessageDTOSchema),ChatMessagesPageDTOSchema=z42.object({items:z42.array(ProjectMessagePublicDTOSchema),nextCursor:z42.string().nullable()}),ChatDeletionDTOSchema=z42.object({success:z42.boolean(),deletedCount:z42.number()}),ChatDeletionDTO=createDTO(ChatDeletionDTOSchema),ChatMessageListResponseSchema=createResponseSchema(ChatMessageListDTOSchema),ChatMessagesPageResponseSchema=createResponseSchema(ChatMessagesPageDTOSchema),ChatDeletionResponseSchema=createResponseSchema(ChatDeletionDTOSchema)}});import{z as z43}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=z43.object({url:z43.string().url(),key:z43.string(),size:z43.number(),contentType:z43.string(),uploadedAt:CommonSchemas.timestamp}),UploadResultDTO=createDTO(UploadResultDTOSchema),UploadResultResponseSchema=createResponseSchema(UploadResultDTOSchema)}});import{z as z44}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=z44.object({canAccess:z44.boolean(),permissions:z44.record(z44.string(),z44.boolean()),role:z44.string().nullable()}),ServicePermissionsDTO=createDTO(ServicePermissionsDTOSchema),ServicePermissionsResponseSchema=createResponseSchema(ServicePermissionsDTOSchema)}});import{z as z45}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:z45.string().trim().default(""),sort:z45.enum(["recent","name","relevance"]).default("recent"),category:z45.string().optional(),visibility:z45.enum(["public","private"]).optional()})}});import{z as z46}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=z46.enum(["pending_payment","registering","owned","registration_failed","payment_failed","expiring","expired"]),DomainSourceSchema=z46.enum(["fimo","external"]),PaymentStatusSchema=z46.enum(["pending","paid","failed","refunded"]),DomainDTOSchema=z46.object({id:z46.string().uuid(),domain:z46.string(),status:DomainStatusSchema,source:DomainSourceSchema,registrationDate:CommonSchemas.timestamp.nullable(),expirationDate:CommonSchemas.timestamp.nullable(),autoRenew:z46.boolean(),price:z46.number().int().nullable(),renewalPrice:z46.number().int().nullable(),paymentStatus:PaymentStatusSchema.nullable(),checkoutUrl:z46.string().nullable(),failureReason:z46.string().nullable(),createdAt:CommonSchemas.timestamp,updatedAt:CommonSchemas.timestamp}),DomainDTO=createDTO(DomainDTOSchema),DomainSearchResultDTOSchema=z46.object({domain:z46.string(),available:z46.boolean(),premium:z46.boolean(),price:z46.number().nullable(),renewalPrice:z46.number().nullable(),purchaseType:z46.string().nullable()}),DomainSearchResultDTO=createDTO(DomainSearchResultDTOSchema),DomainPricingDTOSchema=z46.object({domain:z46.string(),price:z46.number().nullable(),renewalPrice:z46.number().nullable(),premium:z46.boolean(),allowedYears:z46.array(z46.number().int().positive())}),DomainPricingDTO=createDTO(DomainPricingDTOSchema),DomainContactSchema=z46.object({firstName:z46.string().max(100),lastName:z46.string().max(100),companyName:z46.string().max(100).optional(),address1:z46.string().max(255),address2:z46.string().max(255).optional(),city:z46.string().max(100),state:z46.string().max(100),zip:z46.string().max(20),country:z46.string().max(2),phone:z46.string().max(30),email:z46.union([z46.string().email().max(255),z46.literal("")])}),DomainContactDTO=createDTO(DomainContactSchema),UpdateDomainContactsRequestSchema=z46.object({firstName:z46.string().min(1).max(100),lastName:z46.string().min(1).max(100),companyName:z46.string().max(100).optional(),address1:z46.string().min(1).max(255),address2:z46.string().max(255).optional(),city:z46.string().min(1).max(100),state:z46.string().min(1).max(100),zip:z46.string().min(1).max(20),country:z46.string().min(1).max(2),phone:z46.string().min(1).max(30),email:z46.string().email().max(255)}),SearchDomainsRequestSchema=z46.object({keyword:z46.string().min(1).max(100),tldFilter:z46.array(z46.string()).optional()}),CheckAvailabilityRequestSchema=z46.object({domains:z46.array(z46.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=z46.string().min(1).max(255).regex(DOMAIN_NAME_REGEX,{message:"Invalid domain name"}),PurchaseDomainRequestSchema=z46.object({domain:DomainNameSchema,years:z46.number().int().min(1).max(10).optional().default(3),autoRenew:z46.boolean().optional().default(!0)}),UpdateDomainSettingsRequestSchema=z46.object({autoRenew:z46.boolean().optional()}),RenewDomainRequestSchema=z46.object({years:z46.number().int().min(1).max(10).optional().default(1),autoRenew:z46.boolean().optional().default(!0)}),DomainResponseSchema=createResponseSchema(DomainDTOSchema),DomainListResponseSchema=createResponseSchema(z46.array(DomainDTOSchema)),DomainSearchResultListResponseSchema=createResponseSchema(z46.array(DomainSearchResultDTOSchema)),DomainPricingResponseSchema=createResponseSchema(DomainPricingDTOSchema),DomainContactResponseSchema=createResponseSchema(DomainContactSchema.nullable()),ContactVerificationStatusSchema=z46.object({verified:z46.boolean(),email:z46.string().nullable(),verifyBy:z46.string().nullable()}),ContactVerificationStatusResponseSchema=createResponseSchema(ContactVerificationStatusSchema)}});import{z as z47}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=z47.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=z47.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=z47.object({txtName:z47.string().nullable().optional(),txtValue:z47.string().nullable().optional(),httpUrl:z47.string().nullable().optional(),httpBody:z47.string().nullable().optional(),cname:z47.string().nullable().optional(),cnameTarget:z47.string().nullable().optional()}),SSLValidationErrorSchema=z47.object({message:z47.string()}),OwnershipVerificationSchema=z47.object({type:z47.string(),name:z47.string(),value:z47.string()}),ProjectDomainSSLDTOSchema=z47.object({status:z47.string(),method:z47.string().nullable(),type:z47.string().nullable(),validationRecords:z47.array(SSLValidationRecordSchema).nullable().optional(),validationErrors:z47.array(SSLValidationErrorSchema).nullable().optional()}),DomainProviderSchema=z47.enum(["cloudflare","saas_custom_domains"]),DomainTypeSchema=z47.enum(["subdomain","apex"]),RedirectConfigSchema=z47.object({type:z47.literal("apex_to_www"),linkedDomainId:z47.string()}).nullable().optional(),ProjectDomainDTOSchema=z47.object({id:z47.string(),hostname:z47.string(),status:z47.string(),ssl:ProjectDomainSSLDTOSchema,ownershipVerification:OwnershipVerificationSchema.nullable().optional(),cnameTarget:z47.string(),scdCnameTarget:z47.string().optional(),dnsAutoConfigured:z47.boolean(),createdAt:CommonSchemas.timestamp,provider:DomainProviderSchema,domainType:DomainTypeSchema,redirectConfig:RedirectConfigSchema,migrationStatus:z47.string().nullable().optional()}),ProjectDomainDTO=createDTO(ProjectDomainDTOSchema),ProjectDomainListResponseSchema=createResponseSchema(z47.array(ProjectDomainDTOSchema)),ProjectDomainResponseSchema=createResponseSchema(ProjectDomainDTOSchema),AddProjectDomainRequestSchema=z47.object({hostname:z47.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:z47.boolean().optional()}),CheckProjectDomainHostnameReasonSchema=z47.enum(["invalid_hostname","fimo_owned_hostname","reserved","taken_by_another_project","taken_by_this_project"]),CheckProjectDomainHostnameResponseSchema=createResponseSchema(z47.object({available:z47.boolean(),reason:CheckProjectDomainHostnameReasonSchema.optional()})),DeleteProjectDomainResponseSchema=createResponseSchema(z47.object({success:z47.boolean(),hostname:z47.string()}))}});import{z as z48}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=z48.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain"]),CheckProjectSubdomainResponseSchema=createResponseSchema(z48.object({available:z48.boolean(),reason:SubdomainCheckReasonSchema.optional()})),UpdateProjectSubdomainRequestSchema=z48.object({slug:z48.string().min(1).max(63).regex(SUBDOMAIN_REGEX,{error:"Invalid subdomain shape"})}),UpdateProjectSubdomainErrorReasonSchema=z48.enum(["invalid_shape","reserved","taken_by_project","taken_by_legacy_custom_domain","kv_sync_failed"]),UpdateProjectSubdomainResponseSchema=createResponseSchema(z48.object({subdomain:z48.string(),subdomainUpdatedAt:z48.coerce.date()})),SubdomainSuggestionsQuerySchema=z48.object({base:z48.string().max(100).optional(),max:z48.coerce.number().int().min(1).max(10).optional()}),SubdomainSuggestionsResponseSchema=createResponseSchema(z48.object({suggestions:z48.array(z48.string())}))}});import{z as z49}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=z49.enum(GENERATION_QUALITIES),GenerationTaskIdSchema=z49.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=z49.object({task:GenerationTaskIdSchema,quality:GenerationQualitySchema.optional(),costUsd:z49.number(),credits:z49.number().optional(),billingMode:z49.enum(["fimo-credits","provider-account"]).optional(),confidence:z49.enum(["exact","estimated","metered"]),basis:z49.string()}),GenerationTaskEstimateDTO=createDTO(GenerationTaskEstimateDTOSchema)}});import{z as z50}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=z50.object({options:z50.record(z50.string(),z50.unknown()),name:z50.string().optional(),parentId:z50.string().nullable().optional(),altText:z50.string().optional(),caption:z50.string().optional()}),GenerateRequestDTOSchema=GenerateRequestBaseSchema.extend({task:z50.string().min(1).optional(),model:z50.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=z50.object({jobId:z50.string(),status:z50.enum(["queued","running","completed","failed"]),asset:AssetDTOSchema.optional(),error:z50.string().nullable().optional(),credits:z50.number().optional(),costUsd:z50.number().optional(),billingMode:z50.enum(["fimo-credits","provider-account"]).optional(),task:GenerationTaskIdSchema.optional(),quality:GenerationQualitySchema.optional()}),GenerateResponseDTO=createDTO(GenerateResponseDataSchema),GenerateResponseSchema=createResponseSchema(GenerateResponseDataSchema),GenerateErrorSchema=z50.object({error:z50.string(),code:z50.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:z50.array(GenerationTaskIdSchema).optional(),availableModels:z50.array(z50.string()).optional(),issues:z50.array(z50.unknown()).optional()})}});import{z as z51}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=z51.enum(["string","number","integer","boolean","enum","array","unknown"]),FlagSpecSchema=z51.object({name:z51.string(),key:z51.string(),description:z51.string(),type:FlagTypeSchema,required:z51.boolean(),defaultValue:z51.unknown().optional(),enumValues:z51.array(z51.string()).optional(),isArray:z51.boolean()}),AssetModelPriceSchema=z51.object({unitPrice:z51.number(),unit:z51.string(),confidence:z51.enum(["exact","estimated","metered"])}),AssetModelDTOSchema=z51.object({id:z51.string(),shortName:z51.string(),provider:z51.string(),source:z51.string(),modality:z51.enum(["image","video","audio"]),tags:z51.array(z51.string()),displayName:z51.string(),description:z51.string(),flags:z51.array(FlagSpecSchema),price:AssetModelPriceSchema.nullable()}),AssetModelDTO=createDTO(AssetModelDTOSchema),AssetModelEstimateDTOSchema=z51.object({model:z51.string(),costUsd:z51.number(),credits:z51.number(),billingMode:z51.enum(["fimo-credits","provider-account"]),confidence:z51.enum(["exact","estimated","metered"]),basis:z51.string()}),AssetModelEstimateDTO=createDTO(AssetModelEstimateDTOSchema)}});import{z as z52}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=z52.object({tourId:z52.string(),version:z52.string(),status:z52.string(),completedAt:z52.coerce.date()}),UserTourDTO=createDTO(UserTourDTOSchema),UserTourResponseSchema=createResponseSchema(UserTourDTOSchema),UserTourListResponseSchema=createResponseSchema(z52.array(UserTourDTOSchema))}});import{z as z53}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=z53.enum(SUPPORT_REPORT_CATEGORIES.map(category=>category.value)),SUPPORT_REPORT_STATUSES=["new","in_progress","waiting","resolved","duplicate","irrelevant","ignored"],SupportReportStatusSchema=z53.enum(SUPPORT_REPORT_STATUSES),SupportReportSourceSchema=z53.enum(["app","cli","agent"]),SupportReportDeliveryStatusSchema=z53.enum(["pending","delivered","failed"]),SUPPORT_REPORT_LINK_KINDS=["linear","pylon","project","sentry","grafana","other"],SupportReportLinkKindSchema=z53.enum(SUPPORT_REPORT_LINK_KINDS),SupportReportEventKindSchema=z53.enum(["report_created","report_updated","message","link_added","link_removed","delivery"]),SupportReportActorKindSchema=z53.enum(["user","agent","system"]),SupportReportTagSchema=z53.string().trim().min(1).max(50),SupportReportHttpUrlSchema=z53.url({protocol:/^https?$/}).max(2e3),SupportReportContextInputSchema=z53.object({organization:z53.object({id:z53.string().trim().min(1).max(255),name:z53.string().trim().max(240).optional()}),project:z53.object({id:z53.uuid(),name:z53.string().trim().max(240).optional(),createdAt:z53.coerce.date().optional()}).optional(),environment:z53.string().trim().max(255).optional(),clientVersion:z53.string().trim().max(64).optional()}),CreateSupportReportInputSchema=z53.object({message:z53.string().trim().min(1).max(2e4),category:SupportReportCategorySchema,source:SupportReportSourceSchema.default("app"),context:SupportReportContextInputSchema}),SupportReportListQuerySchema=z53.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),source:SupportReportSourceSchema.optional(),tag:SupportReportTagSchema.optional(),query:z53.string().trim().max(200).optional(),limit:z53.coerce.number().int().min(1).max(100).default(50),offset:z53.coerce.number().int().min(0).default(0)}),UpdateSupportReportInputSchema=z53.object({status:SupportReportStatusSchema.optional(),category:SupportReportCategorySchema.optional(),tags:z53.array(SupportReportTagSchema).max(20).optional(),duplicateOfReportId:z53.uuid().nullable().optional(),note:z53.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=z53.object({message:z53.string().trim().min(1).max(2e4)}),CreateSupportReportLinkInputSchema=z53.object({kind:SupportReportLinkKindSchema,label:z53.string().trim().min(1).max(240),url:SupportReportHttpUrlSchema,externalId:z53.string().trim().max(240).optional()}),SupportReportActorDTOSchema=z53.object({kind:SupportReportActorKindSchema,id:z53.string().nullable(),name:z53.string().nullable()}),SupportReportLinkDTOSchema=z53.object({id:z53.uuid(),kind:SupportReportLinkKindSchema,label:z53.string(),url:SupportReportHttpUrlSchema,externalId:z53.string().nullable(),addedBy:SupportReportActorDTOSchema,createdAt:z53.coerce.date()}),SupportReportLinkDTO=createDTO(SupportReportLinkDTOSchema),SupportReportEventDTOSchema=z53.object({id:z53.uuid(),kind:SupportReportEventKindSchema,body:z53.string().nullable(),metadata:z53.record(z53.string(),z53.unknown()),actor:SupportReportActorDTOSchema,createdAt:z53.coerce.date()}),SupportReportEventDTO=createDTO(SupportReportEventDTOSchema),SupportReportSummaryDTOSchema=z53.object({id:z53.uuid(),status:SupportReportStatusSchema,category:SupportReportCategorySchema,tags:z53.array(z53.string()),source:SupportReportSourceSchema,message:z53.string(),reporter:z53.object({id:z53.string().nullable(),name:z53.string().nullable(),email:z53.string().nullable()}),organization:z53.object({id:z53.string().nullable(),name:z53.string()}),project:z53.object({id:z53.uuid().nullable(),name:z53.string()}).nullable(),assignee:SupportReportActorDTOSchema.nullable(),delivery:z53.object({status:SupportReportDeliveryStatusSchema,pylonIssueId:z53.string().nullable(),pylonIssueUrl:SupportReportHttpUrlSchema.nullable(),error:z53.string().nullable(),deliveredAt:z53.coerce.date().nullable()}),duplicateOfReportId:z53.uuid().nullable(),resolvedAt:z53.coerce.date().nullable(),createdAt:z53.coerce.date(),updatedAt:z53.coerce.date()}),SupportReportSummaryDTO=createDTO(SupportReportSummaryDTOSchema),SupportReportDetailDTOSchema=SupportReportSummaryDTOSchema.extend({environment:z53.string().nullable(),clientVersion:z53.string().nullable(),links:z53.array(SupportReportLinkDTOSchema),events:z53.array(SupportReportEventDTOSchema)}),SupportReportDetailDTO=createDTO(SupportReportDetailDTOSchema),SupportReportListDTOSchema=z53.object({reports:z53.array(SupportReportSummaryDTOSchema),total:z53.number().int().nonnegative(),statusCounts:z53.object({new:z53.number().int().nonnegative(),in_progress:z53.number().int().nonnegative(),waiting:z53.number().int().nonnegative(),resolved:z53.number().int().nonnegative(),duplicate:z53.number().int().nonnegative(),irrelevant:z53.number().int().nonnegative(),ignored:z53.number().int().nonnegative()}),deliveryFailedCount:z53.number().int().nonnegative(),limit:z53.number().int().positive(),offset:z53.number().int().nonnegative()}),SupportReportListDTO=createDTO(SupportReportListDTOSchema),CreateSupportReportResultDTOSchema=z53.object({id:z53.uuid(),deliveryStatus:SupportReportDeliveryStatusSchema,message:z53.string()}),CreateSupportReportResultDTO=createDTO(CreateSupportReportResultDTOSchema)}});import{z as z54}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=z54.enum(["active","cancelled","draft","errored","paused","pending","voided"]),CreditBalanceBreakdownDTOSchema=z54.object({total:z54.number(),base:z54.number(),purchases:z54.number(),awards:z54.number()}),CreditBalanceBreakdownDTO=createDTO(CreditBalanceBreakdownDTOSchema),SubscriptionPlanDTOSchema=z54.object({id:z54.string(),name:z54.string()}),SubscriptionPlanDTO=createDTO(SubscriptionPlanDTOSchema),SubscriptionPaymentMethodDTOSchema=z54.object({type:z54.string(),brand:z54.string().nullable(),last4:z54.string().nullable(),expirationDate:z54.string().nullable()}),SubscriptionPaymentMethodDTO=createDTO(SubscriptionPaymentMethodDTOSchema),SubscriptionPricingDTOSchema=z54.object({currency:z54.string(),nextPaymentAmount:z54.number().nullable(),nextPaymentAt:z54.string().nullable(),billingInterval:z54.string().nullable(),totalAmount:z54.number().nullable(),discountAmount:z54.number().nullable()}),SubscriptionPricingDTO=createDTO(SubscriptionPricingDTOSchema),SubscriptionDetailsDTOSchema=z54.object({id:z54.string(),status:SubscriptionStatusSchema,plan:SubscriptionPlanDTOSchema.nullable(),currentPeriodStartedAt:z54.string().nullable(),currentPeriodEndsAt:z54.string().nullable(),renewsAt:z54.string().nullable(),cancelAt:z54.string().nullable(),renewAutomatically:z54.boolean(),pricing:SubscriptionPricingDTOSchema.nullable(),paymentMethod:SubscriptionPaymentMethodDTOSchema.nullable()}),SubscriptionDetailsDTO=createDTO(SubscriptionDetailsDTOSchema),CreditAlertDTOSchema=z54.object({type:z54.enum(["low_balance","critical_balance","approaching_limit"]),message:z54.string(),estimatedPromptsRemaining:z54.number().nullable(),avgCostPerPrompt:z54.number().nullable()}),CreditAlertDTO=createDTO(CreditAlertDTOSchema),PlanAllocationDTOSchema=z54.object({monthlyCredits:z54.number().nullable(),usedThisPeriod:z54.number(),remainingThisPeriod:z54.number()}),PlanAllocationDTO=createDTO(PlanAllocationDTOSchema),LatestCancellationDTOSchema=z54.object({organizationId:z54.string(),planCode:TemplateCodeSchema,reason:CancellationReasonCodeSchema,details:z54.string().nullable(),tenureDays:z54.number().int().nonnegative(),capturedAt:z54.string()}),LatestCancellationDTO=createDTO(LatestCancellationDTOSchema),OrganizationSubscriptionDTOSchema=z54.object({hasSubscription:z54.boolean(),subscription:SubscriptionDetailsDTOSchema.nullable(),credits:CreditBalanceBreakdownDTOSchema,planAllocation:PlanAllocationDTOSchema.nullable(),lowBalanceThreshold:z54.number().nullable(),alerts:z54.array(CreditAlertDTOSchema),portalUrl:z54.string().nullable(),latestCancellation:LatestCancellationDTOSchema.nullable()}),OrganizationSubscriptionDTO=createDTO(OrganizationSubscriptionDTOSchema),BaseCreditTopupRequestSchema=z54.object({creditCount:z54.number().int().positive(),expiresAt:z54.string().datetime().nullable().optional(),message:z54.string().nullable().optional()}),FreeCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z54.literal("free"),amountCents:z54.number().int().positive().nullable().optional()}),PurchaseCreditTopupRequestSchema=BaseCreditTopupRequestSchema.extend({type:z54.literal("purchase"),amountCents:z54.number().int().positive()}),CreditTopupRequestDTOSchema=z54.discriminatedUnion("type",[FreeCreditTopupRequestSchema,PurchaseCreditTopupRequestSchema]),CreditTopupRequestDTO=createDTO(CreditTopupRequestDTOSchema),CreditTopupResponseDTOSchema=z54.object({success:z54.boolean(),transactionId:z54.string().nullable(),newBalance:z54.number(),creditCount:z54.number(),type:z54.enum(["free","purchase"]),invoiceId:z54.string().nullable()}),CreditTopupResponseDTO=createDTO(CreditTopupResponseDTOSchema)}});import{z as z55}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=z55.object({totalCredits:z55.number(),totalCostUsd:z55.number(),totalMessages:z55.number(),avgCostPerMessage:z55.number(),periodStart:z55.string().nullable(),periodEnd:z55.string().nullable()}),UsageSummaryDTO=createDTO(UsageSummaryDTOSchema),UsageByProjectDTOSchema=z55.object({projectId:z55.string(),projectName:z55.string(),projectDisplayName:z55.string().nullable(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number()}),UsageByProjectDTO=createDTO(UsageByProjectDTOSchema),UsageByUserDTOSchema=z55.object({userId:z55.string(),userName:z55.string().nullable(),userEmail:z55.string().email().nullable(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number()}),UsageByUserDTO=createDTO(UsageByUserDTOSchema),UsageTimelineItemDTOSchema=z55.object({date:z55.string(),credits:z55.number(),costUsd:z55.number(),messages:z55.number()}),UsageTimelineItemDTO=createDTO(UsageTimelineItemDTOSchema),UsageByUserForProjectDTOSchema=z55.object({userId:z55.string(),userName:z55.string().nullable(),userEmail:z55.string().email().nullable(),credits:z55.number(),costUsd:z55.number(),messages:z55.number(),percentage:z55.number()}),UsageByUserForProjectDTO=createDTO(UsageByUserForProjectDTOSchema),ProjectUsageDetailDTOSchema=z55.object({projectId:z55.string(),projectName:z55.string(),projectDisplayName:z55.string().nullable(),summary:UsageSummaryDTOSchema,byUser:z55.array(UsageByUserForProjectDTOSchema),timeline:z55.array(UsageTimelineItemDTOSchema)}),ProjectUsageDetailDTO=createDTO(ProjectUsageDetailDTOSchema),OrganizationUsageDTOSchema=z55.object({summary:UsageSummaryDTOSchema,byProject:z55.array(UsageByProjectDTOSchema),byUser:z55.array(UsageByUserDTOSchema),timeline:z55.array(UsageTimelineItemDTOSchema)}),OrganizationUsageDTO=createDTO(OrganizationUsageDTOSchema)}});import{z as z56}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=z56.enum(["today","1d","7d","14d","30d","60d","90d"]),SortOrderSchema=z56.enum(["asc","desc"]),UsageAnalyticsQuerySchema=z56.object({startDate:z56.string().optional(),endDate:z56.string().optional(),preset:TimeRangePresetSchema.optional().default("30d"),page:z56.coerce.number().int().positive().default(1),limit:z56.coerce.number().int().positive().max(100).default(20),sortBy:z56.string().optional(),sortOrder:SortOrderSchema.optional().default("desc"),search:z56.string().optional()}),UsageOverviewSummaryDTOSchema=z56.object({totalCredits:z56.number(),totalCostUsd:z56.number(),totalMessages:z56.number(),avgCostPerMessage:z56.number(),avgCreditsPerMessage:z56.number(),periodStart:z56.string(),periodEnd:z56.string(),creditsChange:z56.number().nullable(),costChange:z56.number().nullable(),messagesChange:z56.number().nullable()}),UsageOverviewSummaryDTO=createDTO(UsageOverviewSummaryDTOSchema),UsageTimelinePointDTOSchema=z56.object({date:z56.string(),credits:z56.number(),costUsd:z56.number(),messages:z56.number()}),UsageTimelinePointDTO=createDTO(UsageTimelinePointDTOSchema),OrganizationUsageRowDTOSchema=z56.object({organizationId:z56.string(),organizationName:z56.string(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number(),userCount:z56.number(),projectCount:z56.number()}),OrganizationUsageRowDTO=createDTO(OrganizationUsageRowDTOSchema),UserUsageRowDTOSchema=z56.object({userId:z56.string(),userName:z56.string().nullable(),userEmail:z56.string().nullable(),userImage:z56.string().nullable(),organizationId:z56.string().nullable(),organizationName:z56.string().nullable(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number(),projectCount:z56.number()}),UserUsageRowDTO=createDTO(UserUsageRowDTOSchema),ProjectUsageRowDTOSchema=z56.object({projectId:z56.string(),projectName:z56.string(),projectDisplayName:z56.string().nullable(),organizationId:z56.string(),organizationName:z56.string(),credits:z56.number(),costUsd:z56.number(),messages:z56.number(),percentage:z56.number(),userCount:z56.number()}),ProjectUsageRowDTO=createDTO(ProjectUsageRowDTOSchema),UsageDistributionItemDTOSchema=z56.object({id:z56.string(),name:z56.string(),value:z56.number(),percentage:z56.number()}),UsageDistributionItemDTO=createDTO(UsageDistributionItemDTOSchema),UsageHeatmapPointDTOSchema=z56.object({day:z56.number(),hour:z56.number(),value:z56.number()}),UsageHeatmapPointDTO=createDTO(UsageHeatmapPointDTOSchema),UsageOverviewResponseDTOSchema=z56.object({summary:UsageOverviewSummaryDTOSchema,timeline:z56.array(UsageTimelinePointDTOSchema),topOrganizations:z56.array(OrganizationUsageRowDTOSchema),topUsers:z56.array(UserUsageRowDTOSchema),topProjects:z56.array(ProjectUsageRowDTOSchema),creditDistribution:z56.array(UsageDistributionItemDTOSchema),heatmap:z56.array(UsageHeatmapPointDTOSchema)}),UsageOverviewResponseDTO=createDTO(UsageOverviewResponseDTOSchema),UsagePaginationDTOSchema=z56.object({page:z56.number(),limit:z56.number(),totalItems:z56.number(),totalPages:z56.number(),hasMore:z56.boolean()}),UsagePaginationDTO=createDTO(UsagePaginationDTOSchema),UsageByOrganizationResponseDTOSchema=z56.object({organizations:z56.array(OrganizationUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByOrganizationResponseDTO=createDTO(UsageByOrganizationResponseDTOSchema),ExtendedUserUsageRowDTOSchema=UserUsageRowDTOSchema.extend({organizationCount:z56.number()}),ExtendedUserUsageRowDTO=createDTO(ExtendedUserUsageRowDTOSchema),UsageByUserResponseDTOSchema=z56.object({users:z56.array(ExtendedUserUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByUserResponseDTO=createDTO(UsageByUserResponseDTOSchema),ExtendedProjectUsageRowDTOSchema=ProjectUsageRowDTOSchema.extend({ownerId:z56.string(),ownerName:z56.string().nullable(),ownerEmail:z56.string().nullable()}),ExtendedProjectUsageRowDTO=createDTO(ExtendedProjectUsageRowDTOSchema),UsageByProjectResponseDTOSchema=z56.object({projects:z56.array(ExtendedProjectUsageRowDTOSchema),summary:UsageOverviewSummaryDTOSchema,pagination:UsagePaginationDTOSchema}),UsageByProjectResponseDTO=createDTO(UsageByProjectResponseDTOSchema),ExportFormatSchema=z56.enum(["csv","json"]),UsageExportQuerySchema=UsageAnalyticsQuerySchema.extend({format:ExportFormatSchema.default("csv"),type:z56.enum(["overview","organizations","users","projects"]).default("overview")}),PeekUsageMetricsDTOSchema=z56.object({credits:z56.number(),costUsd:z56.number(),messages:z56.number()}),PeekUsageMetricsDTO=createDTO(PeekUsageMetricsDTOSchema),OrganizationPeekDTOSchema=z56.object({id:z56.string(),name:z56.string(),createdAt:z56.string(),memberCount:z56.number(),projectCount:z56.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z56.array(UsageTimelinePointDTOSchema)}),OrganizationPeekDTO=createDTO(OrganizationPeekDTOSchema),UserPeekDTOSchema=z56.object({id:z56.string(),name:z56.string().nullable(),email:z56.string(),image:z56.string().nullable(),createdAt:z56.string(),organizationCount:z56.number(),projectCount:z56.number(),usage:PeekUsageMetricsDTOSchema,recentActivity:z56.array(UsageTimelinePointDTOSchema)}),UserPeekDTO=createDTO(UserPeekDTOSchema),ProjectPeekDTOSchema=z56.object({id:z56.string(),name:z56.string(),displayName:z56.string().nullable(),createdAt:z56.string(),organizationId:z56.string(),organizationName:z56.string(),ownerId:z56.string(),ownerName:z56.string().nullable(),ownerEmail:z56.string().nullable(),usage:PeekUsageMetricsDTOSchema,recentActivity:z56.array(UsageTimelinePointDTOSchema)}),ProjectPeekDTO=createDTO(ProjectPeekDTOSchema)}});import{z as z57}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=z57.enum(["running","completed","failed","stopped"]),PresetSandboxCommandSchema=z57.enum(["restart-dev-server","stop-dev-server","install-dependencies","reinstall-dependencies","build","typecheck"]),ExecuteSandboxCommandRequestDTOSchema=z57.object({command:z57.string().min(1).max(1e4),cwd:z57.string().optional(),projectEnv:EnvSchema.optional(),env:z57.record(z57.string(),z57.string()).optional(),name:z57.string().optional(),waitForCompletion:z57.boolean().optional().default(!1)}),ExecuteSandboxCommandRequestDTO=createDTO(ExecuteSandboxCommandRequestDTOSchema),SandboxProcessInfoDTOSchema=z57.object({identifier:z57.string(),status:SandboxProcessStatusSchema,command:z57.string().optional(),startedAt:z57.string().optional(),exitCode:z57.number().optional()}),SandboxProcessInfoDTO=createDTO(SandboxProcessInfoDTOSchema),SandboxProcessInfoResponseSchema=createResponseSchema(SandboxProcessInfoDTOSchema),SandboxProcessListDTOSchema=z57.object({processes:z57.array(SandboxProcessInfoDTOSchema)}),SandboxProcessListDTO=createDTO(SandboxProcessListDTOSchema),SandboxProcessListResponseSchema=createResponseSchema(SandboxProcessListDTOSchema),ExecuteSandboxCommandResponseDTOSchema=z57.object({processId:z57.string(),status:SandboxProcessStatusSchema}),ExecuteSandboxCommandResponseDTO=createDTO(ExecuteSandboxCommandResponseDTOSchema),PresetCommandResponseDTOSchema=z57.object({success:z57.boolean(),message:z57.string().optional()}),PresetCommandResponseDTO=createDTO(PresetCommandResponseDTOSchema),PresetCommandResponseSchema=createResponseSchema(PresetCommandResponseDTOSchema)}});import{z as z58}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_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
439
|
`)}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
440
|
`);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
441
|
`)}catch{}let envPath=path21.join(targetDir,".env"),envBlock=`VITE_API_URL=${tenantApiUrl}
|
|
442
442
|
`;fs17.existsSync(envPath)?fs17.appendFileSync(envPath,envBlock):fs17.writeFileSync(envPath,envBlock)}var init_local_project_files=__esm({"src/cli/utils/local-project-files.ts"(){__name(writeLocalProjectFiles,"writeLocalProjectFiles")}});function slugifyName(input){return input.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}var init_slug=__esm({"src/cli/utils/slug.ts"(){__name(slugifyName,"slugifyName")}});import fs18 from"node:fs";import path22 from"node:path";function defaultDirectoryName(project){let source=project.displayName?.trim()||project.name||project.id;return slugifyName(source)||project.id}function explainCloneRemoteError(error){return error instanceof ApiRequestError&&error.status===403?"Only users with manage access to this project can clone it locally.":error instanceof ApiRequestError&&error.status===404?"Project or env not found.":error instanceof Error?error.message:String(error)}function chooseCloneEnv(envs,requestedEnv){return requestedEnv?envs.find(env=>env.env===requestedEnv)??null:envs.find(env=>env.env===DEFAULT_ENV)??envs[0]??null}function projectFallback(projectId){return{id:projectId,name:projectId,displayName:null,organizationId:null}}function isNotFound(error){return error instanceof ApiRequestError&&error.status===404}async function selectProjectId(args){let command=args.command??"clone";if(assertInteractive("Pass a project ID explicitly, e.g. `fimo clone <projectId>`.",command),!args.activeOrganizationId)return ui.error({command,code:"NO_ORGANIZATION_SPECIFIED",message:"No active organization set.",hint:"Run `fimo orgs switch`, or pass a project ID explicitly."}),null;let listSp=spinner("Loading projects"),projects2;try{projects2=await args.api.listProjects(args.activeOrganizationId),listSp.succeed("Projects loaded")}catch(error){return listSp.fail("Could not load projects"),ui.error({command,code:"PROJECT_LIST_FAILED",message:error instanceof Error?error.message:String(error)}),null}if(projects2.length===0)return ui.info({command,message:"No projects in the active organization yet."}),null;let selected=await _t({message:args.message??"Select a project to clone",options:projects2.map(project=>({value:project.id,label:project.displayName??project.name,hint:project.id}))});return q(selected)?(ui.info({command,message:"Cancelled."}),null):selected}function projectNotFound(projectId,apiUrl){return{ok:!1,code:"PROJECT_NOT_FOUND",message:`Project ${projectId} was not found on ${apiUrl}.`,hint:"Check `fimo projects list`, or set FIMO_API_URL to the backend that owns this project."}}async function resolveRemote(args){let{api,projectId,requestedEnv,apiUrl}=args,firstEnv=requestedEnv??DEFAULT_ENV;try{return{ok:!0,env:firstEnv,remote:await api.withEnv(firstEnv).getGitRemote(projectId,firstEnv)}}catch(firstError){if(requestedEnv||!isNotFound(firstError))throw firstError;let envs;try{envs=await api.listEnvs(projectId)}catch(listError){if(isNotFound(listError))return projectNotFound(projectId,apiUrl);throw firstError}let fallbackEnv=chooseCloneEnv(envs,void 0);if(!fallbackEnv)return{ok:!1,code:"NO_CLONEABLE_ENVS",message:"This project does not have any cloneable envs.",hint:"Create an env before cloning this project."};if(fallbackEnv.env===firstEnv)throw firstError;return{ok:!0,env:fallbackEnv.env,remote:await api.withEnv(fallbackEnv.env).getGitRemote(projectId,fallbackEnv.env)}}}async function cloneProject(args){let{api,cfg,projectId,dir,env:requestedEnv}=args,remoteSp=spinner("Checking access and fetching git remote"),remote,env;try{let resolved=await resolveRemote({api,projectId,requestedEnv,apiUrl:cfg.apiUrl});if(!resolved.ok)throw remoteSp.fail("Could not fetch git remote"),new CloneError(resolved.code,resolved.message,resolved.hint);({remote,env}=resolved),remoteSp.succeed(`Remote ready (branch ${remote.branch})`)}catch(error){throw error instanceof CloneError?error:(remoteSp.fail("Could not fetch git remote"),new CloneError(error instanceof ApiRequestError&&error.status===403?"PROJECT_MANAGE_REQUIRED":"CLONE_FAILED",explainCloneRemoteError(error)))}let project=projectFallback(projectId),projectSp=spinner("Loading project details");try{project=await api.getProject(projectId),projectSp.succeed(`Project loaded (${project.displayName??project.name})`)}catch{projectSp.succeed("Project metadata unavailable; using project ID locally")}let targetDir=path22.resolve(dir??defaultDirectoryName(project));if(fs18.existsSync(targetDir)&&fs18.readdirSync(targetDir).length>0){let name=path22.basename(targetDir);throw new CloneError("DIRECTORY_NOT_EMPTY",`The folder "${name}" already exists and isn't empty.`,`Pick a different directory (e.g. \`fimo clone ${projectId} <dir>\`), or empty "${name}" first.`)}let relativeTarget=path22.relative(process.cwd(),targetDir)||".";if(!await remoteHasBranch(remote.url,remote.branch))throw new CloneError("EMPTY_REMOTE",`The project's repository has no "${remote.branch}" branch yet \u2014 its initial commit was never pushed.`,"Run `fimo init --project-id <id>` to scaffold and push it, or `fimo deploy` from an existing checkout.",{project,remote,env,targetDir,relativeTarget});let cloneSp=spinner(`Cloning ${remote.branch} into ${targetDir}`);try{await cloneRepo2({url:remote.url,branch:remote.branch,targetDir}),cloneSp.succeed("Repository cloned")}catch(error){throw cloneSp.fail("Git clone failed"),isMissingRemoteBranch(error)?new CloneError("EMPTY_REMOTE",`The project's repository has no "${remote.branch}" branch yet \u2014 its initial commit was never pushed.`,"Deploy the project once (`fimo deploy` from the source checkout, or from Fimo), then clone again."):new CloneError("GIT_CLONE_FAILED",error instanceof Error?error.message:String(error))}let linkSp=spinner("Linking local project");try{let{cleanUrl}=planRemoteConfig(remote.url);await runGit2(["remote","set-url","origin",cleanUrl],targetDir).catch(()=>{}),await ensureFimoRemote(targetDir,remote.url),writeLocalProjectFiles({targetDir,project,apiUrl:cfg.apiUrl,tenantApiUrl:remote.tenantApiUrl}),linkSp.succeed("Local project linked")}catch(error){throw linkSp.fail("Local project link failed"),new CloneError("PROJECT_LINK_FAILED",error instanceof Error?error.message:String(error))}return{project,env,branch:remote.branch,targetDir,relativeTarget}}async function cloneCommand(projectIdArg,dirArg,options={}){let cfg=loadConfig(),creds=requireCredentials(cfg),api=new FimoApiClient(cfg),projectId=projectIdArg??await selectProjectId({api,activeOrganizationId:creds?.activeOrganization?.id});if(!projectId)return;currentMode().format==="pretty"&&mt(`Cloning Fimo project ${projectId}`);let result;try{result=await cloneProject({api,cfg,projectId,dir:dirArg,env:options.env})}catch(error){if(error instanceof CloneError){ui.error({command:"clone",code:error.code,message:error.message,hint:error.hint});return}throw error}let{project,env,branch,targetDir,relativeTarget}=result;ui.ok({command:"clone",headline:`Project ${project.displayName??project.name} cloned.`,details:{project_id:project.id,project_name:project.name,display_name:project.displayName,organization_id:project.organizationId,env,branch,target_dir:targetDir,relative_dir:relativeTarget},hint:`cd ${relativeTarget}`})}var CloneError,init_clone=__esm({"src/cli/commands/clone.ts"(){init_dist5();init_esm();init_dist();init_api();init_auth();init_config();init_git_credential_setup();init_git();init_interactive();init_local_project_files();init_slug();CloneError=class extends Error{static{__name(this,"CloneError")}code;hint;emptyRemote;constructor(code2,message,hint,emptyRemote){super(message),this.name="CloneError",this.code=code2,this.hint=hint,this.emptyRemote=emptyRemote}};__name(defaultDirectoryName,"defaultDirectoryName");__name(explainCloneRemoteError,"explainCloneRemoteError");__name(chooseCloneEnv,"chooseCloneEnv");__name(projectFallback,"projectFallback");__name(isNotFound,"isNotFound");__name(selectProjectId,"selectProjectId");__name(projectNotFound,"projectNotFound");__name(resolveRemote,"resolveRemote");__name(cloneProject,"cloneProject");__name(cloneCommand,"cloneCommand")}});function split(value){let result=value.trim();result=result.replace(SPLIT_LOWER_UPPER_RE,SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE,SPLIT_REPLACE_VALUE),result=result.replace(DEFAULT_STRIP_REGEXP,"\0");let start=0,end2=result.length;for(;result.charAt(start)==="\0";)start++;if(start===end2)return[];for(;result.charAt(end2-1)==="\0";)end2--;return result.slice(start,end2).split(/\0/g)}function splitSeparateNumbers(value){let words=split(value);for(let i=0;i<words.length;i++){let word=words[i],match=SPLIT_SEPARATE_NUMBER_RE.exec(word);if(match){let offset=match.index+(match[1]??match[2]).length;words.splice(i,1,word.slice(0,offset),word.slice(offset))}}return words}function pascalCase(input,options){let[prefix,words,suffix]=splitPrefixSuffix(input,options),lower=lowerFactory(options?.locale),upper=upperFactory(options?.locale),transform=options?.mergeAmbiguousCharacters?capitalCaseTransformFactory(lower,upper):pascalCaseTransformFactory(lower,upper);return prefix+words.map(transform).join(options?.delimiter??"")+suffix}function lowerFactory(locale){return locale===!1?input=>input.toLowerCase():input=>input.toLocaleLowerCase(locale)}function upperFactory(locale){return locale===!1?input=>input.toUpperCase():input=>input.toLocaleUpperCase(locale)}function capitalCaseTransformFactory(lower,upper){return word=>`${upper(word[0])}${lower(word.slice(1))}`}function pascalCaseTransformFactory(lower,upper){return(word,index2)=>{let char0=word[0];return(index2>0&&char0>="0"&&char0<="9"?"_"+char0:upper(char0))+lower(word.slice(1))}}function splitPrefixSuffix(input,options={}){let splitFn=options.split??(options.separateNumbers?splitSeparateNumbers:split),prefixCharacters=options.prefixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS,suffixCharacters=options.suffixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS,prefixIndex=0,suffixIndex=input.length;for(;prefixIndex<input.length;){let char=input.charAt(prefixIndex);if(!prefixCharacters.includes(char))break;prefixIndex++}for(;suffixIndex>prefixIndex;){let index2=suffixIndex-1,char=input.charAt(index2);if(!suffixCharacters.includes(char))break;suffixIndex=index2}return[input.slice(0,prefixIndex),splitFn(input.slice(prefixIndex,suffixIndex)),input.slice(suffixIndex)]}var SPLIT_LOWER_UPPER_RE,SPLIT_UPPER_UPPER_RE,SPLIT_SEPARATE_NUMBER_RE,DEFAULT_STRIP_REGEXP,SPLIT_REPLACE_VALUE,DEFAULT_PREFIX_SUFFIX_CHARACTERS,init_dist7=__esm({"../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js"(){SPLIT_LOWER_UPPER_RE=new RegExp("([\\p{Ll}\\d])(\\p{Lu})","gu"),SPLIT_UPPER_UPPER_RE=new RegExp("(\\p{Lu})([\\p{Lu}][\\p{Ll}])","gu"),SPLIT_SEPARATE_NUMBER_RE=new RegExp("(\\d)\\p{Ll}|(\\p{L})\\d","u"),DEFAULT_STRIP_REGEXP=/[^\p{L}\d]+/giu,SPLIT_REPLACE_VALUE="$1\0$2",DEFAULT_PREFIX_SUFFIX_CHARACTERS="";__name(split,"split");__name(splitSeparateNumbers,"splitSeparateNumbers");__name(pascalCase,"pascalCase");__name(lowerFactory,"lowerFactory");__name(upperFactory,"upperFactory");__name(capitalCaseTransformFactory,"capitalCaseTransformFactory");__name(pascalCaseTransformFactory,"pascalCaseTransformFactory");__name(splitPrefixSuffix,"splitPrefixSuffix")}});import*as path24 from"node:path";import*as fs20 from"node:fs";function ParseErr(message,str,indx){let whitespace2=str.slice(0,indx).split(/\n/),lineNo=whitespace2.length,colNo=whitespace2[lineNo-1].length+1;throw message+=" at line "+lineNo+" col "+colNo+`:
|
|
443
443
|
|
|
444
444
|
`+str.split(/\n/)[lineNo-1]+`
|
|
445
|
-
`+Array(colNo).join(" ")+"^",new EtaParseError(message)}function RuntimeErr(originalError,str,lineNo,
|
|
446
|
-
`),start=Math.max(lineNo-3,0),end2=Math.min(lines.length,lineNo+3),filename=
|
|
445
|
+
`+Array(colNo).join(" ")+"^",new EtaParseError(message)}function RuntimeErr(originalError,str,lineNo,path49){let lines=str.split(`
|
|
446
|
+
`),start=Math.max(lineNo-3,0),end2=Math.min(lines.length,lineNo+3),filename=path49,context=lines.slice(start,end2).map(function(line,i){let curr=i+start+1;return(curr==lineNo?" >> ":" ")+curr+"| "+line}).join(`
|
|
447
447
|
`),header=filename?filename+":"+lineNo+`
|
|
448
448
|
`:"line "+lineNo+`
|
|
449
449
|
`,err=new EtaRuntimeError(header+context+`
|
|
@@ -477,8 +477,8 @@ return __eta.res;
|
|
|
477
477
|
`):type==="e"&&(returnStr+=content2+`
|
|
478
478
|
`)}}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
479
|
`).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(path48){let res="";try{res=fs20.readFileSync(path48,"utf8")}catch(err){throw err?.code==="ENOENT"?new EtaFileResolutionError(`Could not find template: ${path48}`):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={"&":"&","<":"<",">":">",'"':""","'":"'"};__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(path48){try{return JSON.parse(readFileSync5(path48,"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(
|
|
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={"&":"&","<":"<",">":">",'"':""","'":"'"};__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(`
|
|
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(`
|
|
@@ -1094,7 +1094,7 @@ Next step: open ${path42.join(projectRoot,result.promptPath)} and paste it to yo
|
|
|
1094
1094
|
`)}function readGeneratedArtifacts(cwd){let artifactsPath=path42.join(cwd,GENERATED_ARTIFACTS_PATH);if(!fs38.existsSync(artifactsPath))return null;try{return JSON.parse(fs38.readFileSync(artifactsPath,"utf8"))}catch{return null}}function readMediaMap(cwd,manifest){let mediaMapPath=manifest.assets.manifest;if(!mediaMapPath)return[];let fullPath=path42.join(cwd,mediaMapPath);if(!fs38.existsSync(fullPath))return[];try{let parsed=JSON.parse(fs38.readFileSync(fullPath,"utf8"));return Array.isArray(parsed)?parsed.filter(isMigrationMediaMapAsset):[]}catch{return[]}}function isMigrationMediaMapAsset(value){return isRecord2(value)&&typeof value.sourceUrl=="string"&&(typeof value.fileName=="string"||value.fileName===void 0)&&(typeof value.localPath=="string"||value.localPath===null)&&typeof value.status=="string"}function isRecord2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function resolveGeneratedPageModule(cwd,routePath,generatedArtifacts){let expected=path42.join(cwd,"src","pages","migrated",`${pageComponentName2(routePath)}.tsx`);if(fs38.existsSync(expected))return expected;let pageFiles=generatedArtifacts?.pageFiles??[],expectedBase=`${pageComponentName2(routePath)}.tsx`,fallback=pageFiles.map(relativePath=>path42.join(cwd,relativePath)).find(filePath=>path42.basename(filePath)===expectedBase);return fallback&&fs38.existsSync(fallback)?fallback:null}function detectCurrentTemplate(targetModule){return!targetModule||!fs38.existsSync(targetModule)?"custom-or-missing":fs38.readFileSync(targetModule,"utf8").includes("MigrationPageTemplate")?"generic-migration-template":"custom-or-missing"}function routeToBriefFile(routePath){return routePath==="/"?"home":slugify3(routePath.replace(/^\//,"").replace(/\//g,"-"))||"page"}function normalizeRoute(routePath){if(!routePath)return"/";let trimmed=routePath.trim();return trimmed==="/"?"/":`/${trimmed.replace(/^\/+/,"").replace(/\/+$/,"")}`}function normalizeUrlForMatch(value){try{let url=new URL(value);return url.hash="",url.toString()}catch{return value}}function cleanText3(value){return value.replace(/\s+/g," ").trim()}function shouldKeepAction(label){return label.length>=2&&label.length<=80}function absolutizeHref(value,baseUrl){if(!value||value.startsWith("#")||value.startsWith("javascript:")||value.startsWith("mailto:"))return value;try{return new URL(value,baseUrl).toString()}catch{return value}}function writeFile3(cwd,relativePath,content2,written){let fullPath=path42.join(cwd,relativePath);fs38.mkdirSync(path42.dirname(fullPath),{recursive:!0}),fs38.writeFileSync(fullPath,content2,"utf8"),written.push(relativePath)}function unique3(values){let seen=new Set,result=[];for(let value of values){let normalized=value.trim();!normalized||seen.has(normalized)||(seen.add(normalized),result.push(normalized))}return result}function uniqueLinkObjects(values){let seen=new Set,result=[];for(let value of values){let key=`${value.label}::${value.href??""}`;seen.has(key)||(seen.add(key),result.push(value))}return result}function uniqueActionObjects(values){let seen=new Set,result=[];for(let value of values){let key=`${value.kind}::${value.label}::${value.href??""}`;seen.has(key)||(seen.add(key),result.push(value))}return result}function uniqueImageObjects3(values){let seen=new Set,result=[];for(let value of values){let key=`${value.src}::${value.alt??""}`;seen.has(key)||(seen.add(key),result.push(value))}return result}function pageComponentName2(routePath){if(routePath==="/")return"HomePage";let normalized=`${routePath.replace(/^\//,"").split("/").filter(Boolean).map(part=>titleize3(part).replace(/\s+/g,"")).join("")||"Page"}Page`;return/^[A-Za-z_$]/.test(normalized)?normalized:`Route${normalized}`}function titleize3(value){return value.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,match=>match.toUpperCase())}function slugify3(value){return value.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function toPosix3(value){return value.split(path42.sep).join("/")}var REFINE_ROOT,PAGE_BRIEFS_DIR,GENERATED_ARTIFACTS_PATH,init_migrate_refine=__esm({"src/cli/commands/migrate-refine.ts"(){init_dist5();init_slim();init_project();init_migrate();REFINE_ROOT=path42.join(MIGRATION_DIR2,"refine"),PAGE_BRIEFS_DIR=path42.join(REFINE_ROOT,"pages"),GENERATED_ARTIFACTS_PATH=path42.join(MIGRATION_DIR2,"generated","artifacts.json");__name(migrateRefineCommand,"migrateRefineCommand");__name(prepareMigrationRefineArtifacts,"prepareMigrationRefineArtifacts");__name(requireProjectRoot2,"requireProjectRoot");__name(selectPagesForRefine,"selectPagesForRefine");__name(writePageBrief,"writePageBrief");__name(analyzeSourceHtml,"analyzeSourceHtml");__name(buildPageBrief,"buildPageBrief");__name(buildAgentPrompt,"buildAgentPrompt");__name(readGeneratedArtifacts,"readGeneratedArtifacts");__name(readMediaMap,"readMediaMap");__name(isMigrationMediaMapAsset,"isMigrationMediaMapAsset");__name(isRecord2,"isRecord");__name(resolveGeneratedPageModule,"resolveGeneratedPageModule");__name(detectCurrentTemplate,"detectCurrentTemplate");__name(routeToBriefFile,"routeToBriefFile");__name(normalizeRoute,"normalizeRoute");__name(normalizeUrlForMatch,"normalizeUrlForMatch");__name(cleanText3,"cleanText");__name(shouldKeepAction,"shouldKeepAction");__name(absolutizeHref,"absolutizeHref");__name(writeFile3,"writeFile");__name(unique3,"unique");__name(uniqueLinkObjects,"uniqueLinkObjects");__name(uniqueActionObjects,"uniqueActionObjects");__name(uniqueImageObjects3,"uniqueImageObjects");__name(pageComponentName2,"pageComponentName");__name(titleize3,"titleize");__name(slugify3,"slugify");__name(toPosix3,"toPosix")}});function syncStateColor(state,p2){switch(state){case"in-sync":return p2.green("in sync");case"ahead":return p2.blue("ahead");case"behind":return p2.yellow("behind");case"diverged":return p2.red("diverged");default:return p2.dim("unknown")}}function renderStatus2(report,p2,opts={}){let lines=[],sep2=opts.ascii?"|":"\xB7",header=`${p2.bold(`env: ${report.env}`)} ${p2.dim(`vs ${report.vs} ${sep2}`)} ${syncStateColor(report.syncState,p2)}`;if(lines.push(header),lines.push(""),opts.short){for(let name of SURFACE_NAMES){if(opts.surface&&opts.surface!==name)continue;let delta=report.surfaces.find(s=>s.surface===name);if(!delta)continue;let innerSep=opts.ascii?"|":"\xB7",counts=`${delta.changedCount} changed${delta.conflictCount>0?` ${innerSep} ${delta.conflictCount} conflicts`:""}`,truncatedHint=delta.truncated&&delta.items&&delta.items.length<delta.changedCount?p2.dim(` ${innerSep} ${delta.items.length} of ${delta.changedCount} shown`):"";lines.push(` ${p2.bold(name.padEnd(14))} ${p2.dim(counts)}${truncatedHint}`)}return lines.join(`
|
|
1095
1095
|
`)}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(""))}if(!opts.surface&&report.crossSurface&&report.crossSurface.length>0&&(lines.push(renderCrossSurface(report.crossSurface,p2,{ascii:opts.ascii})),lines.push("")),report.agents&&report.agents.length>0){lines.push(p2.bold("AGENTS")),lines.push(p2.dim(" declared \xB7 active \xB7 last run"));for(let agent of report.agents){let status=agent.status==="active"?p2.green("active"):agent.status==="paused"?p2.yellow("paused"):p2.red("failed"),lastRun=agent.lastRunAt?p2.dim(new Date(agent.lastRunAt).toISOString().slice(0,19)+"Z"):p2.dim("never");lines.push(` ${agent.name.padEnd(18)} ${status.padEnd(7)} ${lastRun}`)}lines.push("")}return lines.join(`
|
|
1096
1096
|
`).replace(/\n+$/,"")}var init_render_status=__esm({"src/cli/utils/format/render-status.ts"(){init_esm();init_cross_surface();init_surface();__name(syncStateColor,"syncStateColor");__name(renderStatus2,"renderStatus")}});function pickSurfaces(opts){let selected=[["code","code"],["content","content"],["i18n","translations"],["agents","activations"],["assets","assets"],["forms","forms"]].filter(([flag2])=>opts[flag2]===!0).map(([,surface])=>surface);return selected.length>0?selected:void 0}function withSoftTimeout(p2,ms){return new Promise(resolve8=>{let t2=setTimeout(()=>resolve8({kind:"timeout"}),ms);p2.then(value=>{clearTimeout(t2),resolve8({kind:"ok",value})},error=>{clearTimeout(t2),resolve8({kind:"error",error})})})}async function localCodeSurface(cwd){if(!await isGitRepo(cwd))return{surface:"code",status:"unchanged",changedCount:0,conflictCount:0,items:[]};try{let items=(await runGit2(["status","--porcelain"],cwd)).split(`
|
|
1097
|
-
`).filter(Boolean).map(line=>{let code2=line.slice(0,2),path48=line.slice(3).trim();return{verb:code2.startsWith("A")||code2.startsWith("?")?"added":code2.startsWith("D")?"removed":"changed",key:path48,origin:"local-uncommitted"}});return{surface:"code",status:items.length===0?"unchanged":"ok",changedCount:items.length,conflictCount:0,items}}catch{return{surface:"code",status:"unchanged",changedCount:0,conflictCount:0,items:[]}}}function mergeCodeSurfaces(serverCode,local){if(!serverCode)return local;if(serverCode.status==="failed"||serverCode.status==="timed_out")return{...serverCode,items:[...serverCode.items??[],...local.items??[]],changedCount:serverCode.changedCount+local.changedCount};let items=[...serverCode.items??[],...local.items??[]],changedCount=serverCode.changedCount+local.changedCount,conflictCount=serverCode.conflictCount+local.conflictCount;return{surface:"code",status:changedCount>0||conflictCount>0?"ok":"unchanged",durationMs:serverCode.durationMs,changedCount,conflictCount,items}}async function statusCommand2(arg1,maybeCmd){let cmd=maybeCmd??arg1,options=maybeCmd?arg1:cmd.opts(),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),surfaces=pickSurfaces(options),codePromise=localCodeSurface(cwd),serverPromise=withSoftTimeout(api.getEnvStatus(ctx.projectId,ctx.env,{against:options.vs,surfaces}),SOFT_TIMEOUT_MS*15),[local,serverResult]=await Promise.all([codePromise,serverPromise]);if(serverResult.kind==="timeout"){ui.error({command:"status",code:"STATUS_TIMEOUT",message:`Server did not respond within ${SOFT_TIMEOUT_MS*15/1e3}s. Try again, or run \`fimo diff\` to drill in.`});return}if(serverResult.kind==="error"){let err=serverResult.error,message=err instanceof Error?err.message:String(err);ui.error({command:"status",code:"STATUS_REQUEST_FAILED",message:`Failed to fetch status: ${message}`});return}let server=serverResult.value,serverCode=server.surfaces.find(s=>s.surface==="code"),code2=mergeCodeSurfaces(serverCode,local),merged={...server,surfaces:[code2,...server.surfaces.filter(s=>s.surface!=="code")]};ui.result({command:"status",data:merged,render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return renderStatus2(merged,p2,{short:options.short,surface:surfaces?.length===1?surfaces[0]:void 0,all:options.all,ascii:rctx.ascii})},"render")})}var SOFT_TIMEOUT_MS,init_status=__esm({"src/cli/commands/status.ts"(){init_dist();init_api();init_color();init_render_status();init_git();init_project_context();init_project();SOFT_TIMEOUT_MS=2e3;__name(pickSurfaces,"pickSurfaces");__name(withSoftTimeout,"withSoftTimeout");__name(localCodeSurface,"localCodeSurface");__name(mergeCodeSurfaces,"mergeCodeSurfaces");__name(statusCommand2,"statusCommand")}});init_dist();import fs43 from"node:fs";import path47 from"node:path";var import_index=__toESM(require_commander(),1),{program,createCommand,createArgument,createOption,CommanderError,InvalidArgumentError,InvalidOptionArgumentError,Command,Argument,Option,Help}=import_index.default;init_api();import fs12 from"node:fs";import path13 from"node:path";var import_yaml3=__toESM(require_dist2(),1);import{createHash as createHash2}from"node:crypto";import{promises}from"node:fs";import path10 from"node:path";import{z as z3}from"zod";var CapabilityTokenSchema=z3.string().min(1).regex(/^[a-z][a-z0-9_]*:[a-z][a-z0-9_]*(?::[a-z][a-z0-9_]*)?$/,{error:"capability tokens must match verb:noun or verb:noun:qualifier (lowercase + digits + underscores; must start with a letter)"}),CapabilitiesFileSchema=z3.array(CapabilityTokenSchema);import{z as z4}from"zod";var CronTriggerSchema=z4.object({type:z4.literal("schedule"),cron:z4.string().min(1,"cron expression required"),tz:z4.string().optional()}),ManualTriggerSchema=z4.object({type:z4.literal("manual")}),WebhookTriggerSchema=z4.object({type:z4.literal("webhook"),path:z4.string().min(1).regex(/^[a-z0-9][a-z0-9_/-]*$/i,"webhook path must be lowercase alphanumeric with optional / - _")}),TriggerSchema=z4.discriminatedUnion("type",[ManualTriggerSchema,CronTriggerSchema,WebhookTriggerSchema]),SubAgentRefSchema=z4.object({name:z4.string().min(1),capability_grant:z4.enum(["inherit","explicit"]).optional(),explicit_grants:z4.array(z4.string()).optional()}).refine(v=>v.capability_grant!=="explicit"||Array.isArray(v.explicit_grants)&&v.explicit_grants.length>0,{message:"`explicit_grants` is required when `capability_grant: explicit`",path:["explicit_grants"]}),CompositionConfigSchema=z4.object({"sub-agents":z4.array(SubAgentRefSchema)}),RuntimeConfigSchema=z4.object({cloud:z4.boolean().optional(),dev:z4.boolean().optional(),long_running:z4.boolean().optional()}),DataSourceSchema=z4.enum(["main","prod"]),ConfigValueKeySchema=z4.string().min(1).max(255).regex(/^[A-Z_][A-Z0-9_]*$/,"secret keys must be UPPER_SNAKE_CASE and start with a letter or underscore"),PUBLIC_CONFIG_PREFIX=/^(PUBLIC_|VITE_|NEXT_PUBLIC_)/,AgentSecretRequestSchema=z4.preprocess(value=>typeof value=="string"?{key:value}:value,z4.object({key:ConfigValueKeySchema.refine(key=>!PUBLIC_CONFIG_PREFIX.test(key),{message:"agent secrets cannot use public variable prefixes (PUBLIC_, VITE_, NEXT_PUBLIC_)"}),required:z4.boolean().default(!0),delivery:z4.literal("process_env").default("process_env")})),IntegrationKeySchema=z4.string().min(1).max(120).regex(/^[a-z][a-z0-9_-]*$/,"integration keys must be lowercase alphanumeric with optional _ or -"),IntegrationToolKeySchema=z4.string().min(1).max(120).regex(/^[a-z][a-z0-9_-]*(?:\.[a-z][a-z0-9_-]*)*$/,"integration tool keys must be lowercase dot-separated identifiers with optional _ or -"),IntegrationPolicyEntrySchema=z4.preprocess(value=>typeof value=="boolean"?{enabled:value}:value,z4.object({enabled:z4.boolean().default(!0),tools:z4.record(IntegrationToolKeySchema,z4.boolean()).optional()})),IntegrationPolicySchema=z4.record(IntegrationKeySchema,IntegrationPolicyEntrySchema),AgentConfigSchema=z4.object({version:z4.literal(1),description:z4.string().min(1).max(280).optional(),runtime:RuntimeConfigSchema.optional(),triggers:z4.array(TriggerSchema).optional(),composition:CompositionConfigSchema.optional(),data_sources:z4.array(DataSourceSchema).optional(),secrets:z4.array(AgentSecretRequestSchema).optional(),integrations:IntegrationPolicySchema.optional(),integration_policy:IntegrationPolicySchema.optional()}).refine(config=>!(config.integrations&&config.integration_policy),{message:"use either `integrations` or legacy `integration_policy`, not both",path:["integrations"]});function _define_property(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property,"_define_property");var BundleParseError=class extends Error{static{__name(this,"BundleParseError")}constructor(bundlePath,file,message,cause){super(`[${file}] ${message}`),_define_property(this,"bundlePath",void 0),_define_property(this,"file",void 0),_define_property(this,"cause",void 0),this.name="BundleParseError",this.bundlePath=bundlePath,this.file=file,this.cause=cause}};async function fileExists(file){try{return(await promises.stat(file)).isFile()}catch{return!1}}__name(fileExists,"fileExists");async function readFileOrNull(file){try{return await promises.readFile(file,"utf8")}catch(err){if(err.code==="ENOENT")return null;throw err}}__name(readFileOrNull,"readFileOrNull");async function listDir(dir){try{return(await promises.readdir(dir,{withFileTypes:!0,recursive:!0})).filter(e=>e.isFile()).map(e=>{let parentPath=e.parentPath??e.path??dir;return path10.relative(dir,path10.join(parentPath,e.name))}).sort()}catch(err){if(err.code==="ENOENT")return[];throw err}}__name(listDir,"listDir");function parseYamlStrict(text3,file,bundlePath){try{return(0,import_yaml3.parse)(text3)}catch(err){throw new BundleParseError(bundlePath,file,`invalid YAML: ${err.message}`,err)}}__name(parseYamlStrict,"parseYamlStrict");function formatZodIssue(issue){return`${issue.path.length===0?"(root)":issue.path.join(".")}: ${issue.message}`}__name(formatZodIssue,"formatZodIssue");async function parseBundle(bundlePath,opts={}){let name=path10.basename(bundlePath),goalPath=path10.join(bundlePath,"GOAL.md"),goal=await readFileOrNull(goalPath);if(goal===null)throw new BundleParseError(bundlePath,"GOAL.md","GOAL.md is required but missing");if(goal.trim().length===0)throw new BundleParseError(bundlePath,"GOAL.md","GOAL.md is empty");let configPath=path10.join(bundlePath,"config.yaml"),configRaw=await readFileOrNull(configPath),config;if(configRaw===null){if(!opts.defaultConfig)throw new BundleParseError(bundlePath,"config.yaml","config.yaml is required but missing");config={version:1}}else{let yamlData=parseYamlStrict(configRaw,"config.yaml",bundlePath),parsed=AgentConfigSchema.safeParse(yamlData);if(!parsed.success){let issues=parsed.error.issues.map(formatZodIssue).join("; ");throw new BundleParseError(bundlePath,"config.yaml",`schema validation failed: ${issues}`)}config=parsed.data}let soul=await readFileOrNull(path10.join(bundlePath,"SOUL.md")),capsPath=path10.join(bundlePath,"capabilities.yaml"),capsRaw=await readFileOrNull(capsPath),capabilities=[];if(capsRaw!==null){let candidate=parseYamlStrict(capsRaw,"capabilities.yaml",bundlePath)??[],parsed=CapabilitiesFileSchema.safeParse(candidate);if(!parsed.success){let issues=parsed.error.issues.map(formatZodIssue).join("; ");throw new BundleParseError(bundlePath,"capabilities.yaml",`schema validation failed: ${issues} \u2014 file must be a bare YAML list of capability tokens`)}capabilities=parsed.data}let[scripts2,references,assets3]=await Promise.all([listDir(path10.join(bundlePath,"scripts")),listDir(path10.join(bundlePath,"references")),listDir(path10.join(bundlePath,"assets"))]),warnings=[],pluginsDir=path10.join(bundlePath,"plugins");try{(await promises.stat(pluginsDir)).isDirectory()&&warnings.push({pointer:"plugins/",message:"`plugins/` is reserved for v1.x and will be ignored at runtime."})}catch{}let checksum=await computeBundleChecksum(bundlePath,{goal,soul,configRaw,capsRaw,scripts:scripts2,references,assets:assets3});return{name,path:bundlePath,goal,soul,config,capabilities,scripts:scripts2,references,assets:assets3,checksum,warnings}}__name(parseBundle,"parseBundle");async function computeBundleChecksum(bundlePath,parts){let hash=createHash2("sha256");hash.update("GOAL.md\0"),hash.update(parts.goal),hash.update("\0config.yaml\0"),hash.update(parts.configRaw??""),parts.capsRaw!==null&&(hash.update("\0capabilities.yaml\0"),hash.update(parts.capsRaw)),parts.soul!==null&&(hash.update("\0SOUL.md\0"),hash.update(parts.soul));let dirs=[["scripts",parts.scripts],["references",parts.references],["assets",parts.assets]];for(let[dirName,files]of dirs)for(let rel of files){let filePath=path10.join(bundlePath,dirName,rel);try{let buf=await promises.readFile(filePath);hash.update(`\0${dirName}/${rel}\0`),hash.update(buf)}catch{}}return hash.digest("hex")}__name(computeBundleChecksum,"computeBundleChecksum");async function listBundles(agentsDir){let entries2=[];try{entries2=await promises.readdir(agentsDir,{withFileTypes:!0})}catch(err){if(err.code==="ENOENT")return[];throw err}let bundles=[];for(let entry of entries2){if(!entry.isDirectory())continue;let bundlePath=path10.join(agentsDir,entry.name);if(await fileExists(path10.join(bundlePath,"GOAL.md")))try{bundles.push(await parseBundle(bundlePath))}catch{}}return bundles.sort((a,b)=>a.name.localeCompare(b.name))}__name(listBundles,"listBundles");var ENTRIES=[{token:"files:read",risk:"low",description:"Read project files"},{token:"files:write",risk:"medium",description:"Write or delete project files"},{token:"cms:read",risk:"low",description:"Read CMS content"},{token:"cms:write",risk:"medium",description:"Create, update, or delete CMS entries"},{token:"cms:schema:read",risk:"low",description:"Read CMS schemas"},{token:"cms:schema:write",risk:"high",description:"Modify CMS schemas (destructive \u2014 alters all entries of the type)"},{token:"assets:read",risk:"low",description:"Read uploaded media"},{token:"assets:write",risk:"medium",description:"Upload, replace, or delete media"},{token:"i18n:read",risk:"low",description:"Read translation catalogs"},{token:"i18n:write",risk:"medium",description:"Modify translation catalogs via the fimo i18n CLI"},{token:"forms:read",risk:"low",description:"Read form schemas and submissions"},{token:"forms:write",risk:"medium",description:"Modify form schemas or clear submissions"},{token:"git:read",risk:"low",description:"Read git state"},{token:"git:branch",risk:"medium",description:"Create agent-proposed branches off main"},{token:"git:commit",risk:"medium",description:"Commit changes to an agent branch"},{token:"git:push",risk:"high",description:"Push to the project remote (main push is intercepted)"},{token:"git:tag",risk:"high",runtimeOnly:!0,description:"Used by runtime for prod release tags; agents cannot call directly"},{token:"fimo:deploy",risk:"critical",description:"Trigger a production deploy"},{token:"fimo:logs:read",risk:"low",description:"Read production logs"},{token:"fimo:analytics:read",risk:"low",description:"Read analytics data"},{token:"fimo:preview:read",risk:"low",description:"Read a current preview URL for an env (no commit, no deploy)"},{token:"net:fetch",risk:"medium",description:"Make outbound HTTP requests"},{token:"shell:exec",risk:"high",description:"Run arbitrary shell commands inside the sandbox"},{token:"agent:delegate",risk:"medium",description:"Invoke declared sub-agents"},{token:"runtime:long_running",risk:"high",description:"Run autonomously past the default 30 min limit (up to 4h walltime / 12h ceiling)"},{token:"runtime:auto_merge",risk:"critical",description:"Auto-merge trivial proposed branches to main without per-change human review"}],BY_TOKEN=new Map(ENTRIES.map(e=>[e.token,e])),CAPABILITY_VOCABULARY=ENTRIES;function getCapability(token){return BY_TOKEN.get(token)??null}__name(getCapability,"getCapability");function isKnownCapability(token){return BY_TOKEN.has(token)}__name(isKnownCapability,"isKnownCapability");function isHighRisk(token){let def=getCapability(token);return def?.risk==="high"||def?.risk==="critical"}__name(isHighRisk,"isHighRisk");function isRuntimeOnly(token){return getCapability(token)?.runtimeOnly===!0}__name(isRuntimeOnly,"isRuntimeOnly");function validateBundle(bundle,opts={}){let issues=[],available=new Map((opts.availableAgents??[]).map(b=>[b.name,b]));for(let i=0;i<bundle.capabilities.length;i++){let token=bundle.capabilities[i];if(token!==void 0){if(!isKnownCapability(token)){issues.push({pointer:`capabilities.yaml:[${i}]`,message:`unknown capability token: ${token}`,severity:"error"});continue}isRuntimeOnly(token)&&issues.push({pointer:`capabilities.yaml:[${i}]`,message:`${token} is runtime-orchestration-only; agents cannot declare it (the runtime intercepts)`,severity:"error"}),getCapability(token)?.risk==="critical"&&issues.push({pointer:`capabilities.yaml:[${i}]`,message:`${token} is critical-risk; requires project policy + install-time confirmation`,severity:"warning"})}}let subAgents=bundle.config.composition?.["sub-agents"]??[];subAgents.length>0&&!bundle.capabilities.includes("agent:delegate")&&issues.push({pointer:"capabilities.yaml",message:"`composition.sub-agents` is declared but `agent:delegate` capability is missing",severity:"error"});for(let i=0;i<subAgents.length;i++){let sub=subAgents[i];sub&&opts.availableAgents&&!available.has(sub.name)&&issues.push({pointer:`config.yaml:composition.sub-agents[${i}].name`,message:`sub-agent '${sub.name}' is not present in the project's agents directory`,severity:"error"})}if(opts.availableAgents&&subAgents.length>0){let cycle=detectCycle(bundle,available);cycle&&issues.push({pointer:"config.yaml:composition",message:`composition cycle detected: ${cycle.join(" \u2192 ")}`,severity:"error"})}let webhookPaths=new Set,triggers=bundle.config.triggers??[];for(let i=0;i<triggers.length;i++){let t2=triggers[i];t2&&t2.type==="webhook"&&(webhookPaths.has(t2.path)&&issues.push({pointer:`config.yaml:triggers[${i}].path`,message:`duplicate webhook path '${t2.path}' within bundle`,severity:"error"}),webhookPaths.add(t2.path))}return bundle.config.data_sources&&bundle.config.data_sources.length===0&&issues.push({pointer:"config.yaml:data_sources",message:'data_sources is empty; omit the field to default to ["main"]',severity:"warning"}),issues}__name(validateBundle,"validateBundle");function detectCycle(start,available){let color=new Map,parent2=new Map;function visit2(name){color.set(name,1);let children2=available.get(name)?.config.composition?.["sub-agents"]??[];for(let child of children2){if(!child)continue;let c2=color.get(child.name)??0;if(c2===1){let cycle=[child.name],curr=name;for(;curr&&curr!==child.name;)cycle.unshift(curr),curr=parent2.get(curr)??null;return cycle.unshift(child.name),cycle}if(c2===0&&available.has(child.name)){parent2.set(child.name,name);let found=visit2(child.name);if(found)return found}}return color.set(name,2),null}return __name(visit2,"visit"),visit2(start.name)}__name(detectCycle,"detectCycle");function agentIntegrationPolicy(config){return config.integrations??config.integration_policy??{}}__name(agentIntegrationPolicy,"agentIntegrationPolicy");function agentAllowsIntegrationTool(policy,integrationKey,toolKey){let entry=policy[integrationKey];return entry?.enabled?entry.tools?.[toolKey]===!0:!1}__name(agentAllowsIntegrationTool,"agentAllowsIntegrationTool");function enabledAgentIntegrationTools(entry){return entry?.enabled?Object.entries(entry.tools??{}).filter(([,enabled])=>enabled).map(([tool])=>tool).sort((a,b)=>a.localeCompare(b)):[]}__name(enabledAgentIntegrationTools,"enabledAgentIntegrationTools");function _define_property2(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property2,"_define_property");var CapabilityDeniedError=class extends Error{static{__name(this,"CapabilityDeniedError")}constructor(required,granted){let def=getCapability(required),what=def?.description?` (${def.description})`:"";super(`capability '${required}'${what} denied \u2014 granted: [${granted.join(", ")}]`),_define_property2(this,"required",void 0),_define_property2(this,"granted",void 0),this.name="CapabilityDeniedError",this.required=required,this.granted=granted}};function assertCapability(required,granted){if(!granted.includes(required))throw new CapabilityDeniedError(required,granted)}__name(assertCapability,"assertCapability");function resolveSubCallCapabilities(parentGranted,subDeclared,ref){if((ref.capability_grant??"inherit")==="explicit"){let explicit=ref.explicit_grants??[];return subDeclared.filter(t2=>explicit.includes(t2))}return[...subDeclared]}__name(resolveSubCallCapabilities,"resolveSubCallCapabilities");function _define_property3(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property3,"_define_property");var BundleError=class extends Error{static{__name(this,"BundleError")}constructor(message,remediation,bundlePath){super(message),_define_property3(this,"remediation",void 0),_define_property3(this,"bundlePath",void 0),this.name=this.constructor.name,this.remediation=remediation,this.bundlePath=bundlePath}},BundleValidationError=class extends BundleError{static{__name(this,"BundleValidationError")}constructor(message,options={}){super(message,options.remediation??"Fix the file in the bundle and re-run `fimo agents validate`.",options.bundlePath),_define_property3(this,"code","bundle.validation"),_define_property3(this,"file",void 0),_define_property3(this,"cause",void 0),this.file=options.file,this.cause=options.cause}};var BundleInvalidCapabilityError=class extends BundleError{static{__name(this,"BundleInvalidCapabilityError")}constructor(token,reason,options={}){let remediation=reason==="runtime_only"?`'${token}' is reserved for the runtime \u2014 drop it from capabilities.yaml.`:options.suggestion?`Unknown capability '${token}'. Did you mean '${options.suggestion}'?`:`Unknown capability '${token}'. Run \`fimo agents list-capabilities\` to see the vocabulary.`;super(reason==="runtime_only"?`Capability '${token}' is runtime-orchestration-only and cannot be declared.`:`Capability '${token}' is not in the closed vocabulary.`,remediation,options.bundlePath),_define_property3(this,"code","bundle.invalid_capability"),_define_property3(this,"token",void 0),_define_property3(this,"reason",void 0),this.token=token,this.reason=reason}},BundleCompositionCycleError=class extends BundleError{static{__name(this,"BundleCompositionCycleError")}constructor(cycle,options={}){super(`Composition cycle detected: ${cycle.join(" \u2192 ")}`,"Break the cycle by removing one of the sub-agent references in the chain.",options.bundlePath),_define_property3(this,"code","bundle.composition_cycle"),_define_property3(this,"cycle",void 0),this.cycle=[...cycle]}},BundleTemplateNotFoundError=class extends BundleError{static{__name(this,"BundleTemplateNotFoundError")}constructor(templateName,available){super(`Template '${templateName}' not found.`,available.length>0?`Available templates: ${available.join(", ")}. Use \`fimo agents list-templates\` to see all options.`:"No templates are bundled with this CLI. Use the empty default by omitting --template."),_define_property3(this,"code","bundle.template_not_found"),_define_property3(this,"templateName",void 0),_define_property3(this,"available",void 0),this.templateName=templateName,this.available=[...available]}};function isBundleError(err){return err instanceof BundleError}__name(isBundleError,"isBundleError");function detectCompositionCycle(input){let{root:root2,agentMap}=input,WHITE=0,GRAY=1,BLACK=2,color=new Map,parent2=new Map,visit2=__name(name=>{color.set(name,GRAY);let children2=agentMap.get(name)?.config.composition?.["sub-agents"]??[];for(let child of children2){if(!child)continue;let c2=color.get(child.name)??WHITE;if(c2===GRAY){let cycle=[child.name],curr=name;for(;curr&&curr!==child.name;)cycle.unshift(curr),curr=parent2.get(curr)??null;return cycle.unshift(child.name),cycle}if(c2===WHITE&&agentMap.has(child.name)){parent2.set(child.name,name);let found=visit2(child.name);if(found)return found}}return color.set(name,BLACK),null},"visit");return visit2(root2.name)}__name(detectCompositionCycle,"detectCompositionCycle");function validateAgainstVocabulary(tokens,vocab=CAPABILITY_VOCABULARY){let byToken=new Map(vocab.map(v=>[v.token,v])),unknown=[],runtimeOnly=[],highRisk=[];for(let token of tokens){let def=byToken.get(token);if(!def){unknown.push(token);continue}def.runtimeOnly&&runtimeOnly.push(token),(def.risk==="high"||def.risk==="critical")&&highRisk.push(token)}return{ok:unknown.length===0&&runtimeOnly.length===0,unknown,runtimeOnly,highRisk}}__name(validateAgainstVocabulary,"validateAgainstVocabulary");function suggestCapability(token,vocab=CAPABILITY_VOCABULARY){let best=null,bestDistance=1/0;for(let def of vocab){let d3=levenshtein(token,def.token);d3<bestDistance&&(bestDistance=d3,best=def.token)}return bestDistance<=2?best:null}__name(suggestCapability,"suggestCapability");function levenshtein(a,b){if(a===b)return 0;let al=a.length,bl=b.length;if(al===0)return bl;if(bl===0)return al;let prev2=Array.from({length:bl+1},(_2,i)=>i);for(let i=1;i<=al;i++){let curr=new Array(bl+1);curr[0]=i;for(let j2=1;j2<=bl;j2++){let cost=a[i-1]===b[j2-1]?0:1;curr[j2]=Math.min((prev2[j2]??0)+1,(curr[j2-1]??0)+1,(prev2[j2-1]??0)+cost)}prev2=curr}return prev2[bl]??0}__name(levenshtein,"levenshtein");import{z as z5}from"zod";var SurfaceGuardPolicySchema=z5.enum(["block","warn","allow"]),ClassificationSchema=z5.enum(["trivial","low_risk","needs_review"]),SurfaceGuardsSchema=z5.object({code:SurfaceGuardPolicySchema.optional(),content:SurfaceGuardPolicySchema.optional(),translations:SurfaceGuardPolicySchema.optional(),assets:SurfaceGuardPolicySchema.optional()}),AutoMergePolicySchema=z5.object({enabled:z5.boolean(),allowed_skills:z5.array(z5.string().min(1)).default([]),allowed_classifications:z5.array(ClassificationSchema).default([]),surface_guards:SurfaceGuardsSchema.default({})}),NotificationDigestSchema=z5.enum(["off","daily","weekly"]),NotificationFormatSchema=z5.object({markdown:z5.boolean().default(!0),html:z5.boolean().default(!1)}),NotificationsPolicySchema=z5.object({email_recipients:z5.array(z5.string().email("invalid email address")).default([]),format:NotificationFormatSchema.default({markdown:!0,html:!1}),digest:NotificationDigestSchema.default("off")}),FimoAgentsConfigSchema=z5.object({auto_merge:AutoMergePolicySchema.optional(),notifications:NotificationsPolicySchema.optional()}),FimoConfigSchema=z5.object({agents:FimoAgentsConfigSchema.optional()}).passthrough();function parseFimoConfig(jsonOrText,opts={}){let raw;if(typeof jsonOrText=="string")try{raw=JSON.parse(jsonOrText)}catch(err){throw new BundleValidationError(`${opts.path??"fimo.config.json"} is not valid JSON: ${err.message}`,{remediation:"Run the file through `jq .` or your editor JSON validator and fix the syntax.",file:opts.path??"fimo.config.json",cause:err})}else raw=jsonOrText;let parsed=FimoConfigSchema.safeParse(raw);if(!parsed.success){let issues=parsed.error.issues.map(i=>`${i.path.join(".")||"(root)"}: ${i.message}`).join("; ");throw new BundleValidationError(`${opts.path??"fimo.config.json"} schema validation failed: ${issues}`,{remediation:"See `fimo.config.json` shape in the lifecycle docs (`fimo agents docs lifecycle` or visit lifecycle.html#config).",file:opts.path??"fimo.config.json"})}let data2=parsed.data;if(data2.agents?.auto_merge?.enabled===!0&&(data2.agents.auto_merge.allowed_classifications??[]).length===0)throw new BundleValidationError("`agents.auto_merge.enabled: true` but `allowed_classifications` is empty \u2014 nothing would ever auto-merge.",{remediation:'Either set `allowed_classifications: ["trivial"]` (or any subset) or set `enabled: false`.',file:opts.path??"fimo.config.json"});return data2}__name(parseFimoConfig,"parseFimoConfig");function requireCloudActivationNotifications(config){let recipients=config?.agents?.notifications?.email_recipients??[];if(recipients.length===0)throw new BundleValidationError("Activating a cloud-time trigger requires `agents.notifications.email_recipients` to be non-empty.",{remediation:"Add at least one email to `fimo-config.json` \u2192 `agents.notifications.email_recipients`. This is where lifecycle proposal emails are sent (mandatory per ADR-0009).",file:"fimo-config.json"});return recipients}__name(requireCloudActivationNotifications,"requireCloudActivationNotifications");import{z as z6}from"zod";function toSpec(def){return{token:def.token,riskTier:def.risk,description:def.description,...def.runtimeOnly?{runtimeOnly:!0}:{}}}__name(toSpec,"toSpec");var VOCABULARY=Object.freeze(Object.fromEntries(CAPABILITY_VOCABULARY.filter(d3=>!d3.runtimeOnly).map(d3=>[d3.token,toSpec(d3)]))),CapabilityToken=z6.enum(Object.keys(VOCABULARY)),CapabilitiesArraySchema=z6.array(CapabilityToken);function riskTierOf(cap){let def=VOCABULARY[cap];if(!def)throw new Error(`riskTierOf: '${cap}' is not in the vocabulary`);return def.riskTier}__name(riskTierOf,"riskTierOf");function isCapability(token){return Object.prototype.hasOwnProperty.call(VOCABULARY,token)}__name(isCapability,"isCapability");function partitionCapabilities(tokens){let caps=[],unknown=[];for(let t2 of tokens)isCapability(t2)?caps.push(t2):unknown.push(t2);return{caps,unknown}}__name(partitionCapabilities,"partitionCapabilities");function isCritical(cap){return riskTierOf(cap)==="critical"}__name(isCritical,"isCritical");var OPERATION_CAP={"cms.list":"cms:read","cms.get":"cms:read","cms.create":"cms:write","cms.update":"cms:write","cms.delete":"cms:write","cms.schema.list":"cms:schema:read","cms.schema.get":"cms:schema:read","cms.schema.push":"cms:schema:write","cms.schema.delete":"cms:schema:write","assets.list":"assets:read","assets.get":"assets:read","assets.upload":"assets:write","assets.generate":"assets:write","assets.create_folder":"assets:write","assets.move":"assets:write","assets.delete":"assets:write","i18n.list":"i18n:read","i18n.get":"i18n:read","i18n.create":"i18n:write","i18n.update":"i18n:write","i18n.delete":"i18n:write","forms.list":"forms:read","forms.get":"forms:read","forms.push":"forms:write","forms.delete":"forms:write","files.read":"files:read","files.write":"files:write","git.push":"git:push","shell.exec":"shell:exec","fimo.deploy":"fimo:deploy","fimo.logs.read":"fimo:logs:read","fimo.analytics.read":"fimo:analytics:read","fimo.preview.url":"fimo:preview:read","net.fetch":"net:fetch","agent.delegate":"agent:delegate","runtime.long_running":"runtime:long_running","runtime.auto_merge":"runtime:auto_merge"};function capabilityFor(op){return OPERATION_CAP[op]}__name(capabilityFor,"capabilityFor");function hasOperation(op){return Object.prototype.hasOwnProperty.call(OPERATION_CAP,op)}__name(hasOperation,"hasOperation");var import_yaml4=__toESM(require_dist2(),1);function parseCapabilities(yaml){if(yaml==null||yaml.trim().length===0)return{caps:[],errors:[]};let raw;try{raw=(0,import_yaml4.parse)(yaml)}catch(cause){return{caps:[],errors:[{code:"MALFORMED_YAML",message:`invalid YAML: ${cause.message}`,cause}]}}if(raw==null)return{caps:[],errors:[]};if(!Array.isArray(raw))return{caps:[],errors:[{code:"WRONG_SHAPE",message:"capabilities.yaml must be a bare YAML list of capability tokens (not an object)"}]};let caps=[],errors=[];for(let item of raw){if(typeof item!="string"){errors.push({code:"WRONG_SHAPE",message:`expected a string capability token, got ${typeof item}`});continue}if(!isCapability(item)){if(CAPABILITY_VOCABULARY.find(d3=>d3.token===item)?.runtimeOnly){errors.push({code:"RUNTIME_ONLY_CAPABILITY",message:`'${item}' is runtime-orchestration-only \u2014 agents cannot declare it`,token:item});continue}let suggestion=suggestCapability(item)??void 0;errors.push({code:"UNKNOWN_CAPABILITY",message:suggestion?`unknown capability token '${item}' \u2014 did you mean '${suggestion}'?`:`unknown capability token '${item}'`,token:item,...suggestion?{suggestion}:{}});continue}caps.push(item)}return{caps,errors}}__name(parseCapabilities,"parseCapabilities");function _define_property4(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property4,"_define_property");var CapabilityDenied=class extends Error{static{__name(this,"CapabilityDenied")}constructor(detail){let def=getCapability(detail.cap),description=def?.description?` (${def.description})`:"";super(`capability denied: ${detail.cap}${description} \u2014 reason: ${detail.reason}`),_define_property4(this,"cap",void 0),_define_property4(this,"reason",void 0),_define_property4(this,"granted",void 0),_define_property4(this,"sessionId",void 0),_define_property4(this,"fixHint",void 0),this.name="CapabilityDenied",this.cap=detail.cap,this.reason=detail.reason,this.granted=detail.granted??[],this.sessionId=detail.sessionId,this.fixHint=fixHintFor(detail)}};function fixHintFor(detail){switch(detail.reason){case"not-declared":return`Add '${detail.cap}' to the agent's capabilities.yaml and re-activate.`;case"session-not-found":return`Session '${detail.sessionId??"<unknown>"}' does not exist or has expired.`;case"snapshot-stale":return"Session capability snapshot is corrupted. Restart the agent session.";case"runtime-only":return`'${detail.cap}' is reserved for the platform \u2014 drop it from capabilities.yaml.`;case"auto-merge-blocked":return"runtime:auto_merge is declared but blocked by project policy (fimo.config.json \u2192 agents.auto_merge)."}}__name(fixHintFor,"fixHintFor");var configured=null;async function auditCapabilityDecision(event){if(!configured)return;let row2={...event,ts:new Date().toISOString()};if(event.decision==="deny"){try{await configured.transport.write(row2)}catch(err){throw configured.breadcrumb?.({category:"audit",level:"error",message:"audit deny row write failed",data:{cap:event.cap,error:err.message}}),err}configured.breadcrumb?.({category:"audit",level:"warning",message:`capability denied: ${event.cap}`,data:{sessionId:event.sessionId,cap:event.cap,reason:event.reason}});return}configured.transport.write(row2).catch(err=>{configured?.breadcrumb?.({category:"audit",level:"warning",message:"audit allow row write failed (best-effort)",data:{cap:event.cap,error:err.message}})})}__name(auditCapabilityDecision,"auditCapabilityDecision");var composition_exports={};__export(composition_exports,{CompositionError:()=>CompositionError,InvalidExplicitGrantsError:()=>InvalidExplicitGrantsError,MAX_DELEGATION_DEPTH:()=>MAX_DELEGATION_DEPTH,MaxDelegationDepthError:()=>MaxDelegationDepthError,SubAgentInvocationError:()=>SubAgentInvocationError,SubAgentNotInProjectError:()=>SubAgentNotInProjectError,UnknownSubAgentError:()=>UnknownSubAgentError,createDelegateTool:()=>createDelegateTool,delegate:()=>delegate,detectCompositionCycle:()=>detectCompositionCycle,detectCycle:()=>detectCycle2,isCompositionError:()=>isCompositionError,resolveSubCallCapabilities:()=>resolveSubCallCapabilities2,resolveSubCallCapabilitiesLenient:()=>resolveSubCallCapabilities,resolveTransitiveCapabilities:()=>resolveTransitiveCapabilities,validateComposition:()=>validateComposition});function resolveTransitiveCapabilities(bundle,allBundles){let union=new Set,missing=[],visited=new Set,visit2=__name(b=>{if(visited.has(b.name))return;visited.add(b.name);for(let token of b.capabilities)isCapability(token)&&union.add(token);let subAgents=b.config.composition?.["sub-agents"]??[];for(let ref of subAgents){let sub=allBundles.get(ref.name);if(!sub){missing.includes(ref.name)||missing.push(ref.name);continue}visit2(sub)}},"visit");return visit2(bundle),{union:Array.from(union).sort(),missing}}__name(resolveTransitiveCapabilities,"resolveTransitiveCapabilities");function detectCycle2(rootKey,nodes){if(!new Map(nodes.map(n=>[n.key,n])).get(rootKey))return null;let bundleMap=new Map;for(let node of nodes)bundleMap.set(node.key,{name:node.key,capabilities:[],config:{version:1,composition:{"sub-agents":node.subAgentKeys.map(k=>({name:k}))}}});let root2=bundleMap.get(rootKey);return detectCompositionCycle({root:root2,agentMap:bundleMap})}__name(detectCycle2,"detectCycle");function validateComposition(root2,allBundles){let cycle=detectCompositionCycle({root:root2,agentMap:allBundles}),missing=[],invalidGrants=[],capUnion=new Set,visited=new Set,visit2=__name(bundle=>{if(visited.has(bundle.name))return;visited.add(bundle.name);for(let token of bundle.capabilities)isCapability(token)&&capUnion.add(token);let subAgents=bundle.config.composition?.["sub-agents"]??[];for(let ref of subAgents){let sub=allBundles.get(ref.name);if(!sub){missing.includes(ref.name)||missing.push(ref.name);continue}if(ref.capability_grant==="explicit"){let declaredSet=new Set(sub.capabilities),invalid=(ref.explicit_grants??[]).filter(t2=>!declaredSet.has(t2));invalid.length>0&&invalidGrants.push({subAgentName:ref.name,invalid,declared:[...sub.capabilities]})}visit2(sub)}},"visit");if(!cycle)visit2(root2);else for(let token of root2.capabilities)isCapability(token)&&capUnion.add(token);let declaredDelegate=root2.capabilities.includes("agent:delegate");return{cycle,missing,transitiveCapabilities:Array.from(capUnion).sort(),declaredDelegate,invalidGrants}}__name(validateComposition,"validateComposition");function _define_property5(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property5,"_define_property");var CompositionError=class extends Error{static{__name(this,"CompositionError")}},InvalidExplicitGrantsError=class extends CompositionError{static{__name(this,"InvalidExplicitGrantsError")}constructor(subAgentName,invalid,declared){super(`composition.sub-agents[name=${subAgentName}].explicit_grants references capabilities the sub-agent never declared: [${invalid.join(", ")}]. Declared by sub-agent: [${declared.join(", ")}]`),_define_property5(this,"code","composition.invalid_explicit_grants"),_define_property5(this,"subAgentName",void 0),_define_property5(this,"invalid",void 0),_define_property5(this,"declared",void 0),this.name="InvalidExplicitGrantsError",this.subAgentName=subAgentName,this.invalid=invalid,this.declared=declared}},SubAgentInvocationError=class extends CompositionError{static{__name(this,"SubAgentInvocationError")}constructor(subAgentName,cause){super(`sub-agent '${subAgentName}' threw during invocation: ${cause?.message??String(cause)}`),_define_property5(this,"code","composition.sub_agent_invocation_failed"),_define_property5(this,"subAgentName",void 0),this.name="SubAgentInvocationError",this.subAgentName=subAgentName,this.cause=cause}};function isCompositionError(err){return err instanceof CompositionError?!0:err instanceof Error?err.name==="MaxDelegationDepthError"||err.name==="UnknownSubAgentError"||err.name==="SubAgentNotInProjectError":!1}__name(isCompositionError,"isCompositionError");function resolveSubCallCapabilities2(input){let{parentCapabilities,subAgentDeclared,ref}=input;if((ref.capability_grant??"inherit")==="explicit"){let explicitGrants=ref.explicit_grants??[],declaredSet=new Set(subAgentDeclared),invalid=explicitGrants.filter(t2=>!declaredSet.has(t2));if(invalid.length>0)throw new InvalidExplicitGrantsError(ref.name,invalid,subAgentDeclared)}return resolveSubCallCapabilities(parentCapabilities,subAgentDeclared,ref)}__name(resolveSubCallCapabilities2,"resolveSubCallCapabilities");function _define_property6(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property6,"_define_property");var MAX_DELEGATION_DEPTH=5,MaxDelegationDepthError=class extends Error{static{__name(this,"MaxDelegationDepthError")}constructor(depth){super(`max delegation depth ${depth} reached (limit ${MAX_DELEGATION_DEPTH})`),_define_property6(this,"depth",void 0),this.name="MaxDelegationDepthError",this.depth=depth}},UnknownSubAgentError=class extends Error{static{__name(this,"UnknownSubAgentError")}constructor(name){super(`sub-agent '${name}' is not declared in composition.sub-agents`),_define_property6(this,"name_",void 0),this.name="UnknownSubAgentError",this.name_=name}},SubAgentNotInProjectError=class extends Error{static{__name(this,"SubAgentNotInProjectError")}constructor(name){super(`sub-agent '${name}' is declared but not present in agents/ directory`),_define_property6(this,"name_",void 0),this.name="SubAgentNotInProjectError",this.name_=name}};async function delegate(input,ctx,runSubAgent){if(assertCapability("agent:delegate",ctx.parentCapabilities),ctx.depth>=MAX_DELEGATION_DEPTH)throw new MaxDelegationDepthError(ctx.depth);let ref=(ctx.parentBundle.config.composition?.["sub-agents"]??[]).find(r=>r.name===input.name);if(!ref)throw new UnknownSubAgentError(input.name);let sub=ctx.projectBundles.find(b=>b.name===ref.name);if(!sub)throw new SubAgentNotInProjectError(ref.name);let subCallCapabilities=resolveSubCallCapabilities(ctx.parentCapabilities,sub.capabilities,ref);return{result:await runSubAgent(sub,subCallCapabilities,input.args),subCallCapabilities}}__name(delegate,"delegate");function createDelegateTool(opts){return __name(async function(input){let{session,runSubAgent,audit}=opts,started=Date.now(),parentCaps=session.capabilityStack[session.capabilityStack.length-1]??session.parentBundle.capabilities,ctx={parentBundle:session.parentBundle,parentCapabilities:parentCaps,depth:session.depth,projectBundles:session.projectBundles};try{let grantMode=(session.parentBundle.config.composition?.["sub-agents"]??[]).find(r=>r.name===input.name)?.capability_grant??"inherit";session.depth+=1;let result=await delegate(input,ctx,__name(async(sub,capabilities,args)=>{session.capabilityStack.push([...capabilities]);try{return await runSubAgent(sub,capabilities,args)}finally{session.capabilityStack.pop()}},"wrappedRunSubAgent"));return await audit?.emit({subAgentName:input.name,grantMode,resolvedCapabilities:result.subCallCapabilities,args:input.args,durationMs:Date.now()-started,depth:ctx.depth}),result}catch(err){let wrapped=err instanceof SubAgentInvocationError?err:new SubAgentInvocationError(input.name,err);throw await audit?.emit({subAgentName:input.name,grantMode:"inherit",resolvedCapabilities:[],args:input.args,durationMs:Date.now()-started,depth:ctx.depth,error:{name:err.name??"Error",message:err.message??String(err)}}),wrapped}finally{session.depth-=1}},"delegateFn")}__name(createDelegateTool,"createDelegateTool");init_dist();init_api();init_config();init_project();var MAX_TYPE_TO_CONFIRM_ATTEMPTS=3;async function runConsent(input){let{caps,allowShell=!1,quiet=!1,io}=input,{caps:known}=partitionCapabilities(caps);if(renderCapabilityList(known,io),quiet)return known.some(isCritical)?(io.print("! critical-tier capabilities require interactive consent (use --allow-critical only when you understand the risk)"),{decision:"denied",approved:[]}):{decision:"allowed",approved:[...known]};let highRisk=known.filter(isHighRisk);if(highRisk.length===0){let ok=await io.promptYesNo(`? Proceed with install of ${input.agentName}? [y/N]`);return{decision:ok?"allowed":"denied",approved:ok?[...known]:[]}}let approved=known.filter(cap=>!isHighRisk(cap)),denied=[];for(let cap of highRisk.filter(c2=>!isCritical(c2))){if(cap==="shell:exec"&&allowShell){approved.push(cap),io.print(` \u2713 ${cap} (--allow-shell)`);continue}await io.promptYesNo(`? Allow ${cap} for ${input.agentName}? [y/n]`)?approved.push(cap):denied.push(cap)}if(denied.length>0)return io.print(`! aborting install \u2014 denied: ${denied.join(", ")}`),{decision:"denied",approved:[]};for(let cap of highRisk.filter(isCritical)){if(!await typeToConfirm(cap,input.agentName,io))return io.print(`! aborting install \u2014 failed to confirm ${cap}`),{decision:"denied",approved:[]};approved.push(cap)}return{decision:"allowed",approved}}__name(runConsent,"runConsent");async function typeToConfirm(cap,agentName,io){io.print(""),io.print(`! ${agentName} declares the CRITICAL capability '${cap}'`),io.print(" Type the literal token to confirm; anything else aborts.");for(let attempt=1;attempt<=MAX_TYPE_TO_CONFIRM_ATTEMPTS;attempt++){if(await io.promptText(` type '${cap}' (${attempt}/${MAX_TYPE_TO_CONFIRM_ATTEMPTS}): `)===cap)return!0;io.print(" mismatch.")}return!1}__name(typeToConfirm,"typeToConfirm");function renderCapabilityList(caps,io){if(caps.length===0){io.print(" (no capabilities declared \u2014 read-only default trio will apply at runtime)");return}io.print(""),io.print("This agent declares the following capabilities:");let byTier={low:[],medium:[],high:[],critical:[]};for(let cap of caps)byTier[riskTierOf(cap)].push(cap);let ORDER=["low","medium","high","critical"];for(let tier of ORDER){let list=byTier[tier];if(list.length!==0)for(let cap of list.sort())io.print(` \u25CF ${tier.padEnd(8)} ${cap}`)}io.print("")}__name(renderCapabilityList,"renderCapabilityList");function defaultConsentIO(){return{print(line){process.stdout.write(`${line}
|
|
1097
|
+
`).filter(Boolean).map(line=>{let code2=line.slice(0,2),path49=line.slice(3).trim();return{verb:code2.startsWith("A")||code2.startsWith("?")?"added":code2.startsWith("D")?"removed":"changed",key:path49,origin:"local-uncommitted"}});return{surface:"code",status:items.length===0?"unchanged":"ok",changedCount:items.length,conflictCount:0,items}}catch{return{surface:"code",status:"unchanged",changedCount:0,conflictCount:0,items:[]}}}function mergeCodeSurfaces(serverCode,local){if(!serverCode)return local;if(serverCode.status==="failed"||serverCode.status==="timed_out")return{...serverCode,items:[...serverCode.items??[],...local.items??[]],changedCount:serverCode.changedCount+local.changedCount};let items=[...serverCode.items??[],...local.items??[]],changedCount=serverCode.changedCount+local.changedCount,conflictCount=serverCode.conflictCount+local.conflictCount;return{surface:"code",status:changedCount>0||conflictCount>0?"ok":"unchanged",durationMs:serverCode.durationMs,changedCount,conflictCount,items}}async function statusCommand2(arg1,maybeCmd){let cmd=maybeCmd??arg1,options=maybeCmd?arg1:cmd.opts(),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),surfaces=pickSurfaces(options),codePromise=localCodeSurface(cwd),serverPromise=withSoftTimeout(api.getEnvStatus(ctx.projectId,ctx.env,{against:options.vs,surfaces}),SOFT_TIMEOUT_MS*15),[local,serverResult]=await Promise.all([codePromise,serverPromise]);if(serverResult.kind==="timeout"){ui.error({command:"status",code:"STATUS_TIMEOUT",message:`Server did not respond within ${SOFT_TIMEOUT_MS*15/1e3}s. Try again, or run \`fimo diff\` to drill in.`});return}if(serverResult.kind==="error"){let err=serverResult.error,message=err instanceof Error?err.message:String(err);ui.error({command:"status",code:"STATUS_REQUEST_FAILED",message:`Failed to fetch status: ${message}`});return}let server=serverResult.value,serverCode=server.surfaces.find(s=>s.surface==="code"),code2=mergeCodeSurfaces(serverCode,local),merged={...server,surfaces:[code2,...server.surfaces.filter(s=>s.surface!=="code")]};ui.result({command:"status",data:merged,render:__name(rctx=>{let p2=rctx.color?palette:makeColorPalette({forceDisable:!0});return renderStatus2(merged,p2,{short:options.short,surface:surfaces?.length===1?surfaces[0]:void 0,all:options.all,ascii:rctx.ascii})},"render")})}var SOFT_TIMEOUT_MS,init_status=__esm({"src/cli/commands/status.ts"(){init_dist();init_api();init_color();init_render_status();init_git();init_project_context();init_project();SOFT_TIMEOUT_MS=2e3;__name(pickSurfaces,"pickSurfaces");__name(withSoftTimeout,"withSoftTimeout");__name(localCodeSurface,"localCodeSurface");__name(mergeCodeSurfaces,"mergeCodeSurfaces");__name(statusCommand2,"statusCommand")}});init_dist();import fs43 from"node:fs";import path48 from"node:path";var import_index=__toESM(require_commander(),1),{program,createCommand,createArgument,createOption,CommanderError,InvalidArgumentError,InvalidOptionArgumentError,Command,Argument,Option,Help}=import_index.default;init_api();import fs12 from"node:fs";import path13 from"node:path";var import_yaml3=__toESM(require_dist2(),1);import{createHash as createHash2}from"node:crypto";import{promises}from"node:fs";import path10 from"node:path";import{z as z3}from"zod";var CapabilityTokenSchema=z3.string().min(1).regex(/^[a-z][a-z0-9_]*:[a-z][a-z0-9_]*(?::[a-z][a-z0-9_]*)?$/,{error:"capability tokens must match verb:noun or verb:noun:qualifier (lowercase + digits + underscores; must start with a letter)"}),CapabilitiesFileSchema=z3.array(CapabilityTokenSchema);import{z as z4}from"zod";var CronTriggerSchema=z4.object({type:z4.literal("schedule"),cron:z4.string().min(1,"cron expression required"),tz:z4.string().optional()}),ManualTriggerSchema=z4.object({type:z4.literal("manual")}),WebhookTriggerSchema=z4.object({type:z4.literal("webhook"),path:z4.string().min(1).regex(/^[a-z0-9][a-z0-9_/-]*$/i,"webhook path must be lowercase alphanumeric with optional / - _")}),TriggerSchema=z4.discriminatedUnion("type",[ManualTriggerSchema,CronTriggerSchema,WebhookTriggerSchema]),SubAgentRefSchema=z4.object({name:z4.string().min(1),capability_grant:z4.enum(["inherit","explicit"]).optional(),explicit_grants:z4.array(z4.string()).optional()}).refine(v=>v.capability_grant!=="explicit"||Array.isArray(v.explicit_grants)&&v.explicit_grants.length>0,{message:"`explicit_grants` is required when `capability_grant: explicit`",path:["explicit_grants"]}),CompositionConfigSchema=z4.object({"sub-agents":z4.array(SubAgentRefSchema)}),RuntimeConfigSchema=z4.object({cloud:z4.boolean().optional(),dev:z4.boolean().optional(),long_running:z4.boolean().optional()}),DataSourceSchema=z4.enum(["main","prod"]),ConfigValueKeySchema=z4.string().min(1).max(255).regex(/^[A-Z_][A-Z0-9_]*$/,"secret keys must be UPPER_SNAKE_CASE and start with a letter or underscore"),PUBLIC_CONFIG_PREFIX=/^(PUBLIC_|VITE_|NEXT_PUBLIC_)/,AgentSecretRequestSchema=z4.preprocess(value=>typeof value=="string"?{key:value}:value,z4.object({key:ConfigValueKeySchema.refine(key=>!PUBLIC_CONFIG_PREFIX.test(key),{message:"agent secrets cannot use public variable prefixes (PUBLIC_, VITE_, NEXT_PUBLIC_)"}),required:z4.boolean().default(!0),delivery:z4.literal("process_env").default("process_env")})),IntegrationKeySchema=z4.string().min(1).max(120).regex(/^[a-z][a-z0-9_-]*$/,"integration keys must be lowercase alphanumeric with optional _ or -"),IntegrationToolKeySchema=z4.string().min(1).max(120).regex(/^[a-z][a-z0-9_-]*(?:\.[a-z][a-z0-9_-]*)*$/,"integration tool keys must be lowercase dot-separated identifiers with optional _ or -"),IntegrationPolicyEntrySchema=z4.preprocess(value=>typeof value=="boolean"?{enabled:value}:value,z4.object({enabled:z4.boolean().default(!0),tools:z4.record(IntegrationToolKeySchema,z4.boolean()).optional()})),IntegrationPolicySchema=z4.record(IntegrationKeySchema,IntegrationPolicyEntrySchema),AgentConfigSchema=z4.object({version:z4.literal(1),description:z4.string().min(1).max(280).optional(),runtime:RuntimeConfigSchema.optional(),triggers:z4.array(TriggerSchema).optional(),composition:CompositionConfigSchema.optional(),data_sources:z4.array(DataSourceSchema).optional(),secrets:z4.array(AgentSecretRequestSchema).optional(),integrations:IntegrationPolicySchema.optional(),integration_policy:IntegrationPolicySchema.optional()}).refine(config=>!(config.integrations&&config.integration_policy),{message:"use either `integrations` or legacy `integration_policy`, not both",path:["integrations"]});function _define_property(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property,"_define_property");var BundleParseError=class extends Error{static{__name(this,"BundleParseError")}constructor(bundlePath,file,message,cause){super(`[${file}] ${message}`),_define_property(this,"bundlePath",void 0),_define_property(this,"file",void 0),_define_property(this,"cause",void 0),this.name="BundleParseError",this.bundlePath=bundlePath,this.file=file,this.cause=cause}};async function fileExists(file){try{return(await promises.stat(file)).isFile()}catch{return!1}}__name(fileExists,"fileExists");async function readFileOrNull(file){try{return await promises.readFile(file,"utf8")}catch(err){if(err.code==="ENOENT")return null;throw err}}__name(readFileOrNull,"readFileOrNull");async function listDir(dir){try{return(await promises.readdir(dir,{withFileTypes:!0,recursive:!0})).filter(e=>e.isFile()).map(e=>{let parentPath=e.parentPath??e.path??dir;return path10.relative(dir,path10.join(parentPath,e.name))}).sort()}catch(err){if(err.code==="ENOENT")return[];throw err}}__name(listDir,"listDir");function parseYamlStrict(text3,file,bundlePath){try{return(0,import_yaml3.parse)(text3)}catch(err){throw new BundleParseError(bundlePath,file,`invalid YAML: ${err.message}`,err)}}__name(parseYamlStrict,"parseYamlStrict");function formatZodIssue(issue){return`${issue.path.length===0?"(root)":issue.path.join(".")}: ${issue.message}`}__name(formatZodIssue,"formatZodIssue");async function parseBundle(bundlePath,opts={}){let name=path10.basename(bundlePath),goalPath=path10.join(bundlePath,"GOAL.md"),goal=await readFileOrNull(goalPath);if(goal===null)throw new BundleParseError(bundlePath,"GOAL.md","GOAL.md is required but missing");if(goal.trim().length===0)throw new BundleParseError(bundlePath,"GOAL.md","GOAL.md is empty");let configPath=path10.join(bundlePath,"config.yaml"),configRaw=await readFileOrNull(configPath),config;if(configRaw===null){if(!opts.defaultConfig)throw new BundleParseError(bundlePath,"config.yaml","config.yaml is required but missing");config={version:1}}else{let yamlData=parseYamlStrict(configRaw,"config.yaml",bundlePath),parsed=AgentConfigSchema.safeParse(yamlData);if(!parsed.success){let issues=parsed.error.issues.map(formatZodIssue).join("; ");throw new BundleParseError(bundlePath,"config.yaml",`schema validation failed: ${issues}`)}config=parsed.data}let soul=await readFileOrNull(path10.join(bundlePath,"SOUL.md")),capsPath=path10.join(bundlePath,"capabilities.yaml"),capsRaw=await readFileOrNull(capsPath),capabilities=[];if(capsRaw!==null){let candidate=parseYamlStrict(capsRaw,"capabilities.yaml",bundlePath)??[],parsed=CapabilitiesFileSchema.safeParse(candidate);if(!parsed.success){let issues=parsed.error.issues.map(formatZodIssue).join("; ");throw new BundleParseError(bundlePath,"capabilities.yaml",`schema validation failed: ${issues} \u2014 file must be a bare YAML list of capability tokens`)}capabilities=parsed.data}let[scripts2,references,assets3]=await Promise.all([listDir(path10.join(bundlePath,"scripts")),listDir(path10.join(bundlePath,"references")),listDir(path10.join(bundlePath,"assets"))]),warnings=[],pluginsDir=path10.join(bundlePath,"plugins");try{(await promises.stat(pluginsDir)).isDirectory()&&warnings.push({pointer:"plugins/",message:"`plugins/` is reserved for v1.x and will be ignored at runtime."})}catch{}let checksum=await computeBundleChecksum(bundlePath,{goal,soul,configRaw,capsRaw,scripts:scripts2,references,assets:assets3});return{name,path:bundlePath,goal,soul,config,capabilities,scripts:scripts2,references,assets:assets3,checksum,warnings}}__name(parseBundle,"parseBundle");async function computeBundleChecksum(bundlePath,parts){let hash=createHash2("sha256");hash.update("GOAL.md\0"),hash.update(parts.goal),hash.update("\0config.yaml\0"),hash.update(parts.configRaw??""),parts.capsRaw!==null&&(hash.update("\0capabilities.yaml\0"),hash.update(parts.capsRaw)),parts.soul!==null&&(hash.update("\0SOUL.md\0"),hash.update(parts.soul));let dirs=[["scripts",parts.scripts],["references",parts.references],["assets",parts.assets]];for(let[dirName,files]of dirs)for(let rel of files){let filePath=path10.join(bundlePath,dirName,rel);try{let buf=await promises.readFile(filePath);hash.update(`\0${dirName}/${rel}\0`),hash.update(buf)}catch{}}return hash.digest("hex")}__name(computeBundleChecksum,"computeBundleChecksum");async function listBundles(agentsDir){let entries2=[];try{entries2=await promises.readdir(agentsDir,{withFileTypes:!0})}catch(err){if(err.code==="ENOENT")return[];throw err}let bundles=[];for(let entry of entries2){if(!entry.isDirectory())continue;let bundlePath=path10.join(agentsDir,entry.name);if(await fileExists(path10.join(bundlePath,"GOAL.md")))try{bundles.push(await parseBundle(bundlePath))}catch{}}return bundles.sort((a,b)=>a.name.localeCompare(b.name))}__name(listBundles,"listBundles");var ENTRIES=[{token:"files:read",risk:"low",description:"Read project files"},{token:"files:write",risk:"medium",description:"Write or delete project files"},{token:"cms:read",risk:"low",description:"Read CMS content"},{token:"cms:write",risk:"medium",description:"Create, update, or delete CMS entries"},{token:"cms:schema:read",risk:"low",description:"Read CMS schemas"},{token:"cms:schema:write",risk:"high",description:"Modify CMS schemas (destructive \u2014 alters all entries of the type)"},{token:"assets:read",risk:"low",description:"Read uploaded media"},{token:"assets:write",risk:"medium",description:"Upload, replace, or delete media"},{token:"i18n:read",risk:"low",description:"Read translation catalogs"},{token:"i18n:write",risk:"medium",description:"Modify translation catalogs via the fimo i18n CLI"},{token:"forms:read",risk:"low",description:"Read form schemas and submissions"},{token:"forms:write",risk:"medium",description:"Modify form schemas or clear submissions"},{token:"git:read",risk:"low",description:"Read git state"},{token:"git:branch",risk:"medium",description:"Create agent-proposed branches off main"},{token:"git:commit",risk:"medium",description:"Commit changes to an agent branch"},{token:"git:push",risk:"high",description:"Push to the project remote (main push is intercepted)"},{token:"git:tag",risk:"high",runtimeOnly:!0,description:"Used by runtime for prod release tags; agents cannot call directly"},{token:"fimo:deploy",risk:"critical",description:"Trigger a production deploy"},{token:"fimo:logs:read",risk:"low",description:"Read production logs"},{token:"fimo:analytics:read",risk:"low",description:"Read analytics data"},{token:"fimo:preview:read",risk:"low",description:"Read a current preview URL for an env (no commit, no deploy)"},{token:"net:fetch",risk:"medium",description:"Make outbound HTTP requests"},{token:"shell:exec",risk:"high",description:"Run arbitrary shell commands inside the sandbox"},{token:"agent:delegate",risk:"medium",description:"Invoke declared sub-agents"},{token:"runtime:long_running",risk:"high",description:"Run autonomously past the default 30 min limit (up to 4h walltime / 12h ceiling)"},{token:"runtime:auto_merge",risk:"critical",description:"Auto-merge trivial proposed branches to main without per-change human review"}],BY_TOKEN=new Map(ENTRIES.map(e=>[e.token,e])),CAPABILITY_VOCABULARY=ENTRIES;function getCapability(token){return BY_TOKEN.get(token)??null}__name(getCapability,"getCapability");function isKnownCapability(token){return BY_TOKEN.has(token)}__name(isKnownCapability,"isKnownCapability");function isHighRisk(token){let def=getCapability(token);return def?.risk==="high"||def?.risk==="critical"}__name(isHighRisk,"isHighRisk");function isRuntimeOnly(token){return getCapability(token)?.runtimeOnly===!0}__name(isRuntimeOnly,"isRuntimeOnly");function validateBundle(bundle,opts={}){let issues=[],available=new Map((opts.availableAgents??[]).map(b=>[b.name,b]));for(let i=0;i<bundle.capabilities.length;i++){let token=bundle.capabilities[i];if(token!==void 0){if(!isKnownCapability(token)){issues.push({pointer:`capabilities.yaml:[${i}]`,message:`unknown capability token: ${token}`,severity:"error"});continue}isRuntimeOnly(token)&&issues.push({pointer:`capabilities.yaml:[${i}]`,message:`${token} is runtime-orchestration-only; agents cannot declare it (the runtime intercepts)`,severity:"error"}),getCapability(token)?.risk==="critical"&&issues.push({pointer:`capabilities.yaml:[${i}]`,message:`${token} is critical-risk; requires project policy + install-time confirmation`,severity:"warning"})}}let subAgents=bundle.config.composition?.["sub-agents"]??[];subAgents.length>0&&!bundle.capabilities.includes("agent:delegate")&&issues.push({pointer:"capabilities.yaml",message:"`composition.sub-agents` is declared but `agent:delegate` capability is missing",severity:"error"});for(let i=0;i<subAgents.length;i++){let sub=subAgents[i];sub&&opts.availableAgents&&!available.has(sub.name)&&issues.push({pointer:`config.yaml:composition.sub-agents[${i}].name`,message:`sub-agent '${sub.name}' is not present in the project's agents directory`,severity:"error"})}if(opts.availableAgents&&subAgents.length>0){let cycle=detectCycle(bundle,available);cycle&&issues.push({pointer:"config.yaml:composition",message:`composition cycle detected: ${cycle.join(" \u2192 ")}`,severity:"error"})}let webhookPaths=new Set,triggers=bundle.config.triggers??[];for(let i=0;i<triggers.length;i++){let t2=triggers[i];t2&&t2.type==="webhook"&&(webhookPaths.has(t2.path)&&issues.push({pointer:`config.yaml:triggers[${i}].path`,message:`duplicate webhook path '${t2.path}' within bundle`,severity:"error"}),webhookPaths.add(t2.path))}return bundle.config.data_sources&&bundle.config.data_sources.length===0&&issues.push({pointer:"config.yaml:data_sources",message:'data_sources is empty; omit the field to default to ["main"]',severity:"warning"}),issues}__name(validateBundle,"validateBundle");function detectCycle(start,available){let color=new Map,parent2=new Map;function visit2(name){color.set(name,1);let children2=available.get(name)?.config.composition?.["sub-agents"]??[];for(let child of children2){if(!child)continue;let c2=color.get(child.name)??0;if(c2===1){let cycle=[child.name],curr=name;for(;curr&&curr!==child.name;)cycle.unshift(curr),curr=parent2.get(curr)??null;return cycle.unshift(child.name),cycle}if(c2===0&&available.has(child.name)){parent2.set(child.name,name);let found=visit2(child.name);if(found)return found}}return color.set(name,2),null}return __name(visit2,"visit"),visit2(start.name)}__name(detectCycle,"detectCycle");function agentIntegrationPolicy(config){return config.integrations??config.integration_policy??{}}__name(agentIntegrationPolicy,"agentIntegrationPolicy");function agentAllowsIntegrationTool(policy,integrationKey,toolKey){let entry=policy[integrationKey];return entry?.enabled?entry.tools?.[toolKey]===!0:!1}__name(agentAllowsIntegrationTool,"agentAllowsIntegrationTool");function enabledAgentIntegrationTools(entry){return entry?.enabled?Object.entries(entry.tools??{}).filter(([,enabled])=>enabled).map(([tool])=>tool).sort((a,b)=>a.localeCompare(b)):[]}__name(enabledAgentIntegrationTools,"enabledAgentIntegrationTools");function _define_property2(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property2,"_define_property");var CapabilityDeniedError=class extends Error{static{__name(this,"CapabilityDeniedError")}constructor(required,granted){let def=getCapability(required),what=def?.description?` (${def.description})`:"";super(`capability '${required}'${what} denied \u2014 granted: [${granted.join(", ")}]`),_define_property2(this,"required",void 0),_define_property2(this,"granted",void 0),this.name="CapabilityDeniedError",this.required=required,this.granted=granted}};function assertCapability(required,granted){if(!granted.includes(required))throw new CapabilityDeniedError(required,granted)}__name(assertCapability,"assertCapability");function resolveSubCallCapabilities(parentGranted,subDeclared,ref){if((ref.capability_grant??"inherit")==="explicit"){let explicit=ref.explicit_grants??[];return subDeclared.filter(t2=>explicit.includes(t2))}return[...subDeclared]}__name(resolveSubCallCapabilities,"resolveSubCallCapabilities");function _define_property3(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property3,"_define_property");var BundleError=class extends Error{static{__name(this,"BundleError")}constructor(message,remediation,bundlePath){super(message),_define_property3(this,"remediation",void 0),_define_property3(this,"bundlePath",void 0),this.name=this.constructor.name,this.remediation=remediation,this.bundlePath=bundlePath}},BundleValidationError=class extends BundleError{static{__name(this,"BundleValidationError")}constructor(message,options={}){super(message,options.remediation??"Fix the file in the bundle and re-run `fimo agents validate`.",options.bundlePath),_define_property3(this,"code","bundle.validation"),_define_property3(this,"file",void 0),_define_property3(this,"cause",void 0),this.file=options.file,this.cause=options.cause}};var BundleInvalidCapabilityError=class extends BundleError{static{__name(this,"BundleInvalidCapabilityError")}constructor(token,reason,options={}){let remediation=reason==="runtime_only"?`'${token}' is reserved for the runtime \u2014 drop it from capabilities.yaml.`:options.suggestion?`Unknown capability '${token}'. Did you mean '${options.suggestion}'?`:`Unknown capability '${token}'. Run \`fimo agents list-capabilities\` to see the vocabulary.`;super(reason==="runtime_only"?`Capability '${token}' is runtime-orchestration-only and cannot be declared.`:`Capability '${token}' is not in the closed vocabulary.`,remediation,options.bundlePath),_define_property3(this,"code","bundle.invalid_capability"),_define_property3(this,"token",void 0),_define_property3(this,"reason",void 0),this.token=token,this.reason=reason}},BundleCompositionCycleError=class extends BundleError{static{__name(this,"BundleCompositionCycleError")}constructor(cycle,options={}){super(`Composition cycle detected: ${cycle.join(" \u2192 ")}`,"Break the cycle by removing one of the sub-agent references in the chain.",options.bundlePath),_define_property3(this,"code","bundle.composition_cycle"),_define_property3(this,"cycle",void 0),this.cycle=[...cycle]}},BundleTemplateNotFoundError=class extends BundleError{static{__name(this,"BundleTemplateNotFoundError")}constructor(templateName,available){super(`Template '${templateName}' not found.`,available.length>0?`Available templates: ${available.join(", ")}. Use \`fimo agents list-templates\` to see all options.`:"No templates are bundled with this CLI. Use the empty default by omitting --template."),_define_property3(this,"code","bundle.template_not_found"),_define_property3(this,"templateName",void 0),_define_property3(this,"available",void 0),this.templateName=templateName,this.available=[...available]}};function isBundleError(err){return err instanceof BundleError}__name(isBundleError,"isBundleError");function detectCompositionCycle(input){let{root:root2,agentMap}=input,WHITE=0,GRAY=1,BLACK=2,color=new Map,parent2=new Map,visit2=__name(name=>{color.set(name,GRAY);let children2=agentMap.get(name)?.config.composition?.["sub-agents"]??[];for(let child of children2){if(!child)continue;let c2=color.get(child.name)??WHITE;if(c2===GRAY){let cycle=[child.name],curr=name;for(;curr&&curr!==child.name;)cycle.unshift(curr),curr=parent2.get(curr)??null;return cycle.unshift(child.name),cycle}if(c2===WHITE&&agentMap.has(child.name)){parent2.set(child.name,name);let found=visit2(child.name);if(found)return found}}return color.set(name,BLACK),null},"visit");return visit2(root2.name)}__name(detectCompositionCycle,"detectCompositionCycle");function validateAgainstVocabulary(tokens,vocab=CAPABILITY_VOCABULARY){let byToken=new Map(vocab.map(v=>[v.token,v])),unknown=[],runtimeOnly=[],highRisk=[];for(let token of tokens){let def=byToken.get(token);if(!def){unknown.push(token);continue}def.runtimeOnly&&runtimeOnly.push(token),(def.risk==="high"||def.risk==="critical")&&highRisk.push(token)}return{ok:unknown.length===0&&runtimeOnly.length===0,unknown,runtimeOnly,highRisk}}__name(validateAgainstVocabulary,"validateAgainstVocabulary");function suggestCapability(token,vocab=CAPABILITY_VOCABULARY){let best=null,bestDistance=1/0;for(let def of vocab){let d3=levenshtein(token,def.token);d3<bestDistance&&(bestDistance=d3,best=def.token)}return bestDistance<=2?best:null}__name(suggestCapability,"suggestCapability");function levenshtein(a,b){if(a===b)return 0;let al=a.length,bl=b.length;if(al===0)return bl;if(bl===0)return al;let prev2=Array.from({length:bl+1},(_2,i)=>i);for(let i=1;i<=al;i++){let curr=new Array(bl+1);curr[0]=i;for(let j2=1;j2<=bl;j2++){let cost=a[i-1]===b[j2-1]?0:1;curr[j2]=Math.min((prev2[j2]??0)+1,(curr[j2-1]??0)+1,(prev2[j2-1]??0)+cost)}prev2=curr}return prev2[bl]??0}__name(levenshtein,"levenshtein");import{z as z5}from"zod";var SurfaceGuardPolicySchema=z5.enum(["block","warn","allow"]),ClassificationSchema=z5.enum(["trivial","low_risk","needs_review"]),SurfaceGuardsSchema=z5.object({code:SurfaceGuardPolicySchema.optional(),content:SurfaceGuardPolicySchema.optional(),translations:SurfaceGuardPolicySchema.optional(),assets:SurfaceGuardPolicySchema.optional()}),AutoMergePolicySchema=z5.object({enabled:z5.boolean(),allowed_skills:z5.array(z5.string().min(1)).default([]),allowed_classifications:z5.array(ClassificationSchema).default([]),surface_guards:SurfaceGuardsSchema.default({})}),NotificationDigestSchema=z5.enum(["off","daily","weekly"]),NotificationFormatSchema=z5.object({markdown:z5.boolean().default(!0),html:z5.boolean().default(!1)}),NotificationsPolicySchema=z5.object({email_recipients:z5.array(z5.string().email("invalid email address")).default([]),format:NotificationFormatSchema.default({markdown:!0,html:!1}),digest:NotificationDigestSchema.default("off")}),FimoAgentsConfigSchema=z5.object({auto_merge:AutoMergePolicySchema.optional(),notifications:NotificationsPolicySchema.optional()}),FimoConfigSchema=z5.object({agents:FimoAgentsConfigSchema.optional()}).passthrough();function parseFimoConfig(jsonOrText,opts={}){let raw;if(typeof jsonOrText=="string")try{raw=JSON.parse(jsonOrText)}catch(err){throw new BundleValidationError(`${opts.path??"fimo.config.json"} is not valid JSON: ${err.message}`,{remediation:"Run the file through `jq .` or your editor JSON validator and fix the syntax.",file:opts.path??"fimo.config.json",cause:err})}else raw=jsonOrText;let parsed=FimoConfigSchema.safeParse(raw);if(!parsed.success){let issues=parsed.error.issues.map(i=>`${i.path.join(".")||"(root)"}: ${i.message}`).join("; ");throw new BundleValidationError(`${opts.path??"fimo.config.json"} schema validation failed: ${issues}`,{remediation:"See `fimo.config.json` shape in the lifecycle docs (`fimo agents docs lifecycle` or visit lifecycle.html#config).",file:opts.path??"fimo.config.json"})}let data2=parsed.data;if(data2.agents?.auto_merge?.enabled===!0&&(data2.agents.auto_merge.allowed_classifications??[]).length===0)throw new BundleValidationError("`agents.auto_merge.enabled: true` but `allowed_classifications` is empty \u2014 nothing would ever auto-merge.",{remediation:'Either set `allowed_classifications: ["trivial"]` (or any subset) or set `enabled: false`.',file:opts.path??"fimo.config.json"});return data2}__name(parseFimoConfig,"parseFimoConfig");function requireCloudActivationNotifications(config){let recipients=config?.agents?.notifications?.email_recipients??[];if(recipients.length===0)throw new BundleValidationError("Activating a cloud-time trigger requires `agents.notifications.email_recipients` to be non-empty.",{remediation:"Add at least one email to `fimo-config.json` \u2192 `agents.notifications.email_recipients`. This is where lifecycle proposal emails are sent (mandatory per ADR-0009).",file:"fimo-config.json"});return recipients}__name(requireCloudActivationNotifications,"requireCloudActivationNotifications");import{z as z6}from"zod";function toSpec(def){return{token:def.token,riskTier:def.risk,description:def.description,...def.runtimeOnly?{runtimeOnly:!0}:{}}}__name(toSpec,"toSpec");var VOCABULARY=Object.freeze(Object.fromEntries(CAPABILITY_VOCABULARY.filter(d3=>!d3.runtimeOnly).map(d3=>[d3.token,toSpec(d3)]))),CapabilityToken=z6.enum(Object.keys(VOCABULARY)),CapabilitiesArraySchema=z6.array(CapabilityToken);function riskTierOf(cap){let def=VOCABULARY[cap];if(!def)throw new Error(`riskTierOf: '${cap}' is not in the vocabulary`);return def.riskTier}__name(riskTierOf,"riskTierOf");function isCapability(token){return Object.prototype.hasOwnProperty.call(VOCABULARY,token)}__name(isCapability,"isCapability");function partitionCapabilities(tokens){let caps=[],unknown=[];for(let t2 of tokens)isCapability(t2)?caps.push(t2):unknown.push(t2);return{caps,unknown}}__name(partitionCapabilities,"partitionCapabilities");function isCritical(cap){return riskTierOf(cap)==="critical"}__name(isCritical,"isCritical");var OPERATION_CAP={"cms.list":"cms:read","cms.get":"cms:read","cms.create":"cms:write","cms.update":"cms:write","cms.delete":"cms:write","cms.schema.list":"cms:schema:read","cms.schema.get":"cms:schema:read","cms.schema.push":"cms:schema:write","cms.schema.delete":"cms:schema:write","assets.list":"assets:read","assets.get":"assets:read","assets.upload":"assets:write","assets.generate":"assets:write","assets.create_folder":"assets:write","assets.move":"assets:write","assets.delete":"assets:write","i18n.list":"i18n:read","i18n.get":"i18n:read","i18n.create":"i18n:write","i18n.update":"i18n:write","i18n.delete":"i18n:write","forms.list":"forms:read","forms.get":"forms:read","forms.push":"forms:write","forms.delete":"forms:write","files.read":"files:read","files.write":"files:write","git.push":"git:push","shell.exec":"shell:exec","fimo.deploy":"fimo:deploy","fimo.logs.read":"fimo:logs:read","fimo.analytics.read":"fimo:analytics:read","fimo.preview.url":"fimo:preview:read","net.fetch":"net:fetch","agent.delegate":"agent:delegate","runtime.long_running":"runtime:long_running","runtime.auto_merge":"runtime:auto_merge"};function capabilityFor(op){return OPERATION_CAP[op]}__name(capabilityFor,"capabilityFor");function hasOperation(op){return Object.prototype.hasOwnProperty.call(OPERATION_CAP,op)}__name(hasOperation,"hasOperation");var import_yaml4=__toESM(require_dist2(),1);function parseCapabilities(yaml){if(yaml==null||yaml.trim().length===0)return{caps:[],errors:[]};let raw;try{raw=(0,import_yaml4.parse)(yaml)}catch(cause){return{caps:[],errors:[{code:"MALFORMED_YAML",message:`invalid YAML: ${cause.message}`,cause}]}}if(raw==null)return{caps:[],errors:[]};if(!Array.isArray(raw))return{caps:[],errors:[{code:"WRONG_SHAPE",message:"capabilities.yaml must be a bare YAML list of capability tokens (not an object)"}]};let caps=[],errors=[];for(let item of raw){if(typeof item!="string"){errors.push({code:"WRONG_SHAPE",message:`expected a string capability token, got ${typeof item}`});continue}if(!isCapability(item)){if(CAPABILITY_VOCABULARY.find(d3=>d3.token===item)?.runtimeOnly){errors.push({code:"RUNTIME_ONLY_CAPABILITY",message:`'${item}' is runtime-orchestration-only \u2014 agents cannot declare it`,token:item});continue}let suggestion=suggestCapability(item)??void 0;errors.push({code:"UNKNOWN_CAPABILITY",message:suggestion?`unknown capability token '${item}' \u2014 did you mean '${suggestion}'?`:`unknown capability token '${item}'`,token:item,...suggestion?{suggestion}:{}});continue}caps.push(item)}return{caps,errors}}__name(parseCapabilities,"parseCapabilities");function _define_property4(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property4,"_define_property");var CapabilityDenied=class extends Error{static{__name(this,"CapabilityDenied")}constructor(detail){let def=getCapability(detail.cap),description=def?.description?` (${def.description})`:"";super(`capability denied: ${detail.cap}${description} \u2014 reason: ${detail.reason}`),_define_property4(this,"cap",void 0),_define_property4(this,"reason",void 0),_define_property4(this,"granted",void 0),_define_property4(this,"sessionId",void 0),_define_property4(this,"fixHint",void 0),this.name="CapabilityDenied",this.cap=detail.cap,this.reason=detail.reason,this.granted=detail.granted??[],this.sessionId=detail.sessionId,this.fixHint=fixHintFor(detail)}};function fixHintFor(detail){switch(detail.reason){case"not-declared":return`Add '${detail.cap}' to the agent's capabilities.yaml and re-activate.`;case"session-not-found":return`Session '${detail.sessionId??"<unknown>"}' does not exist or has expired.`;case"snapshot-stale":return"Session capability snapshot is corrupted. Restart the agent session.";case"runtime-only":return`'${detail.cap}' is reserved for the platform \u2014 drop it from capabilities.yaml.`;case"auto-merge-blocked":return"runtime:auto_merge is declared but blocked by project policy (fimo.config.json \u2192 agents.auto_merge)."}}__name(fixHintFor,"fixHintFor");var configured=null;async function auditCapabilityDecision(event){if(!configured)return;let row2={...event,ts:new Date().toISOString()};if(event.decision==="deny"){try{await configured.transport.write(row2)}catch(err){throw configured.breadcrumb?.({category:"audit",level:"error",message:"audit deny row write failed",data:{cap:event.cap,error:err.message}}),err}configured.breadcrumb?.({category:"audit",level:"warning",message:`capability denied: ${event.cap}`,data:{sessionId:event.sessionId,cap:event.cap,reason:event.reason}});return}configured.transport.write(row2).catch(err=>{configured?.breadcrumb?.({category:"audit",level:"warning",message:"audit allow row write failed (best-effort)",data:{cap:event.cap,error:err.message}})})}__name(auditCapabilityDecision,"auditCapabilityDecision");var composition_exports={};__export(composition_exports,{CompositionError:()=>CompositionError,InvalidExplicitGrantsError:()=>InvalidExplicitGrantsError,MAX_DELEGATION_DEPTH:()=>MAX_DELEGATION_DEPTH,MaxDelegationDepthError:()=>MaxDelegationDepthError,SubAgentInvocationError:()=>SubAgentInvocationError,SubAgentNotInProjectError:()=>SubAgentNotInProjectError,UnknownSubAgentError:()=>UnknownSubAgentError,createDelegateTool:()=>createDelegateTool,delegate:()=>delegate,detectCompositionCycle:()=>detectCompositionCycle,detectCycle:()=>detectCycle2,isCompositionError:()=>isCompositionError,resolveSubCallCapabilities:()=>resolveSubCallCapabilities2,resolveSubCallCapabilitiesLenient:()=>resolveSubCallCapabilities,resolveTransitiveCapabilities:()=>resolveTransitiveCapabilities,validateComposition:()=>validateComposition});function resolveTransitiveCapabilities(bundle,allBundles){let union=new Set,missing=[],visited=new Set,visit2=__name(b=>{if(visited.has(b.name))return;visited.add(b.name);for(let token of b.capabilities)isCapability(token)&&union.add(token);let subAgents=b.config.composition?.["sub-agents"]??[];for(let ref of subAgents){let sub=allBundles.get(ref.name);if(!sub){missing.includes(ref.name)||missing.push(ref.name);continue}visit2(sub)}},"visit");return visit2(bundle),{union:Array.from(union).sort(),missing}}__name(resolveTransitiveCapabilities,"resolveTransitiveCapabilities");function detectCycle2(rootKey,nodes){if(!new Map(nodes.map(n=>[n.key,n])).get(rootKey))return null;let bundleMap=new Map;for(let node of nodes)bundleMap.set(node.key,{name:node.key,capabilities:[],config:{version:1,composition:{"sub-agents":node.subAgentKeys.map(k=>({name:k}))}}});let root2=bundleMap.get(rootKey);return detectCompositionCycle({root:root2,agentMap:bundleMap})}__name(detectCycle2,"detectCycle");function validateComposition(root2,allBundles){let cycle=detectCompositionCycle({root:root2,agentMap:allBundles}),missing=[],invalidGrants=[],capUnion=new Set,visited=new Set,visit2=__name(bundle=>{if(visited.has(bundle.name))return;visited.add(bundle.name);for(let token of bundle.capabilities)isCapability(token)&&capUnion.add(token);let subAgents=bundle.config.composition?.["sub-agents"]??[];for(let ref of subAgents){let sub=allBundles.get(ref.name);if(!sub){missing.includes(ref.name)||missing.push(ref.name);continue}if(ref.capability_grant==="explicit"){let declaredSet=new Set(sub.capabilities),invalid=(ref.explicit_grants??[]).filter(t2=>!declaredSet.has(t2));invalid.length>0&&invalidGrants.push({subAgentName:ref.name,invalid,declared:[...sub.capabilities]})}visit2(sub)}},"visit");if(!cycle)visit2(root2);else for(let token of root2.capabilities)isCapability(token)&&capUnion.add(token);let declaredDelegate=root2.capabilities.includes("agent:delegate");return{cycle,missing,transitiveCapabilities:Array.from(capUnion).sort(),declaredDelegate,invalidGrants}}__name(validateComposition,"validateComposition");function _define_property5(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property5,"_define_property");var CompositionError=class extends Error{static{__name(this,"CompositionError")}},InvalidExplicitGrantsError=class extends CompositionError{static{__name(this,"InvalidExplicitGrantsError")}constructor(subAgentName,invalid,declared){super(`composition.sub-agents[name=${subAgentName}].explicit_grants references capabilities the sub-agent never declared: [${invalid.join(", ")}]. Declared by sub-agent: [${declared.join(", ")}]`),_define_property5(this,"code","composition.invalid_explicit_grants"),_define_property5(this,"subAgentName",void 0),_define_property5(this,"invalid",void 0),_define_property5(this,"declared",void 0),this.name="InvalidExplicitGrantsError",this.subAgentName=subAgentName,this.invalid=invalid,this.declared=declared}},SubAgentInvocationError=class extends CompositionError{static{__name(this,"SubAgentInvocationError")}constructor(subAgentName,cause){super(`sub-agent '${subAgentName}' threw during invocation: ${cause?.message??String(cause)}`),_define_property5(this,"code","composition.sub_agent_invocation_failed"),_define_property5(this,"subAgentName",void 0),this.name="SubAgentInvocationError",this.subAgentName=subAgentName,this.cause=cause}};function isCompositionError(err){return err instanceof CompositionError?!0:err instanceof Error?err.name==="MaxDelegationDepthError"||err.name==="UnknownSubAgentError"||err.name==="SubAgentNotInProjectError":!1}__name(isCompositionError,"isCompositionError");function resolveSubCallCapabilities2(input){let{parentCapabilities,subAgentDeclared,ref}=input;if((ref.capability_grant??"inherit")==="explicit"){let explicitGrants=ref.explicit_grants??[],declaredSet=new Set(subAgentDeclared),invalid=explicitGrants.filter(t2=>!declaredSet.has(t2));if(invalid.length>0)throw new InvalidExplicitGrantsError(ref.name,invalid,subAgentDeclared)}return resolveSubCallCapabilities(parentCapabilities,subAgentDeclared,ref)}__name(resolveSubCallCapabilities2,"resolveSubCallCapabilities");function _define_property6(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__name(_define_property6,"_define_property");var MAX_DELEGATION_DEPTH=5,MaxDelegationDepthError=class extends Error{static{__name(this,"MaxDelegationDepthError")}constructor(depth){super(`max delegation depth ${depth} reached (limit ${MAX_DELEGATION_DEPTH})`),_define_property6(this,"depth",void 0),this.name="MaxDelegationDepthError",this.depth=depth}},UnknownSubAgentError=class extends Error{static{__name(this,"UnknownSubAgentError")}constructor(name){super(`sub-agent '${name}' is not declared in composition.sub-agents`),_define_property6(this,"name_",void 0),this.name="UnknownSubAgentError",this.name_=name}},SubAgentNotInProjectError=class extends Error{static{__name(this,"SubAgentNotInProjectError")}constructor(name){super(`sub-agent '${name}' is declared but not present in agents/ directory`),_define_property6(this,"name_",void 0),this.name="SubAgentNotInProjectError",this.name_=name}};async function delegate(input,ctx,runSubAgent){if(assertCapability("agent:delegate",ctx.parentCapabilities),ctx.depth>=MAX_DELEGATION_DEPTH)throw new MaxDelegationDepthError(ctx.depth);let ref=(ctx.parentBundle.config.composition?.["sub-agents"]??[]).find(r=>r.name===input.name);if(!ref)throw new UnknownSubAgentError(input.name);let sub=ctx.projectBundles.find(b=>b.name===ref.name);if(!sub)throw new SubAgentNotInProjectError(ref.name);let subCallCapabilities=resolveSubCallCapabilities(ctx.parentCapabilities,sub.capabilities,ref);return{result:await runSubAgent(sub,subCallCapabilities,input.args),subCallCapabilities}}__name(delegate,"delegate");function createDelegateTool(opts){return __name(async function(input){let{session,runSubAgent,audit}=opts,started=Date.now(),parentCaps=session.capabilityStack[session.capabilityStack.length-1]??session.parentBundle.capabilities,ctx={parentBundle:session.parentBundle,parentCapabilities:parentCaps,depth:session.depth,projectBundles:session.projectBundles};try{let grantMode=(session.parentBundle.config.composition?.["sub-agents"]??[]).find(r=>r.name===input.name)?.capability_grant??"inherit";session.depth+=1;let result=await delegate(input,ctx,__name(async(sub,capabilities,args)=>{session.capabilityStack.push([...capabilities]);try{return await runSubAgent(sub,capabilities,args)}finally{session.capabilityStack.pop()}},"wrappedRunSubAgent"));return await audit?.emit({subAgentName:input.name,grantMode,resolvedCapabilities:result.subCallCapabilities,args:input.args,durationMs:Date.now()-started,depth:ctx.depth}),result}catch(err){let wrapped=err instanceof SubAgentInvocationError?err:new SubAgentInvocationError(input.name,err);throw await audit?.emit({subAgentName:input.name,grantMode:"inherit",resolvedCapabilities:[],args:input.args,durationMs:Date.now()-started,depth:ctx.depth,error:{name:err.name??"Error",message:err.message??String(err)}}),wrapped}finally{session.depth-=1}},"delegateFn")}__name(createDelegateTool,"createDelegateTool");init_dist();init_api();init_config();init_project();var MAX_TYPE_TO_CONFIRM_ATTEMPTS=3;async function runConsent(input){let{caps,allowShell=!1,quiet=!1,io}=input,{caps:known}=partitionCapabilities(caps);if(renderCapabilityList(known,io),quiet)return known.some(isCritical)?(io.print("! critical-tier capabilities require interactive consent (use --allow-critical only when you understand the risk)"),{decision:"denied",approved:[]}):{decision:"allowed",approved:[...known]};let highRisk=known.filter(isHighRisk);if(highRisk.length===0){let ok=await io.promptYesNo(`? Proceed with install of ${input.agentName}? [y/N]`);return{decision:ok?"allowed":"denied",approved:ok?[...known]:[]}}let approved=known.filter(cap=>!isHighRisk(cap)),denied=[];for(let cap of highRisk.filter(c2=>!isCritical(c2))){if(cap==="shell:exec"&&allowShell){approved.push(cap),io.print(` \u2713 ${cap} (--allow-shell)`);continue}await io.promptYesNo(`? Allow ${cap} for ${input.agentName}? [y/n]`)?approved.push(cap):denied.push(cap)}if(denied.length>0)return io.print(`! aborting install \u2014 denied: ${denied.join(", ")}`),{decision:"denied",approved:[]};for(let cap of highRisk.filter(isCritical)){if(!await typeToConfirm(cap,input.agentName,io))return io.print(`! aborting install \u2014 failed to confirm ${cap}`),{decision:"denied",approved:[]};approved.push(cap)}return{decision:"allowed",approved}}__name(runConsent,"runConsent");async function typeToConfirm(cap,agentName,io){io.print(""),io.print(`! ${agentName} declares the CRITICAL capability '${cap}'`),io.print(" Type the literal token to confirm; anything else aborts.");for(let attempt=1;attempt<=MAX_TYPE_TO_CONFIRM_ATTEMPTS;attempt++){if(await io.promptText(` type '${cap}' (${attempt}/${MAX_TYPE_TO_CONFIRM_ATTEMPTS}): `)===cap)return!0;io.print(" mismatch.")}return!1}__name(typeToConfirm,"typeToConfirm");function renderCapabilityList(caps,io){if(caps.length===0){io.print(" (no capabilities declared \u2014 read-only default trio will apply at runtime)");return}io.print(""),io.print("This agent declares the following capabilities:");let byTier={low:[],medium:[],high:[],critical:[]};for(let cap of caps)byTier[riskTierOf(cap)].push(cap);let ORDER=["low","medium","high","critical"];for(let tier of ORDER){let list=byTier[tier];if(list.length!==0)for(let cap of list.sort())io.print(` \u25CF ${tier.padEnd(8)} ${cap}`)}io.print("")}__name(renderCapabilityList,"renderCapabilityList");function defaultConsentIO(){return{print(line){process.stdout.write(`${line}
|
|
1098
1098
|
`)},async promptYesNo(question){let answer=(await readLine(`${question} `)).trim().toLowerCase();return answer==="y"||answer==="yes"},async promptText(question){return(await readLine(question)).trim()}}}__name(defaultConsentIO,"defaultConsentIO");async function readLine(prompt){let readline=await import("node:readline");return new Promise(resolve8=>{let rl=readline.createInterface({input:process.stdin,output:process.stdout});rl.question(prompt,answer=>{rl.close(),resolve8(answer)})})}__name(readLine,"readLine");import fs11 from"node:fs";import path12 from"node:path";init_dist();init_auth_errors();var NAME_RE=/^[a-z][a-z0-9-]*$/;function isValidAgentName(name){return name.length===0||name.length>64?!1:NAME_RE.test(name)}__name(isValidAgentName,"isValidAgentName");var InvalidAgentNameError=class extends Error{static{__name(this,"InvalidAgentNameError")}name="InvalidAgentNameError";attempted;constructor(attempted){super(`'${attempted}' is not a valid agent name. Names must be lowercase, start with a letter, and contain only letters/digits/hyphens.`),this.attempted=attempted}};function resolveProjectRoot(cwd=process.cwd()){let dir=path12.resolve(cwd);for(let i=0;i<8;i++){if(fs11.existsSync(path12.join(dir,"fimo.config.json"))||fs11.existsSync(path12.join(dir,"package.json")))return dir;let parent2=path12.dirname(dir);if(parent2===dir)break;dir=parent2}throw new Error(`Could not find a project root (no fimo.config.json or package.json) under ${cwd}. Run \`fimo agents *\` from inside a project.`)}__name(resolveProjectRoot,"resolveProjectRoot");function resolveFimoProject(cwd=process.cwd()){let dir=path12.resolve(cwd);for(let i=0;i<8;i++){let settingsPath=path12.join(dir,".fimo.settings.json");if(fs11.existsSync(settingsPath))try{let settings=JSON.parse(fs11.readFileSync(settingsPath,"utf8"));return{projectRoot:dir,settings}}catch{return null}let parent2=path12.dirname(dir);if(parent2===dir)break;dir=parent2}return null}__name(resolveFimoProject,"resolveFimoProject");function printBundleError(command,err){if(rethrowCliAuthError(err),isBundleError(err)){let e=err,hintParts=[];e.remediation&&hintParts.push(`fix: ${e.remediation}`),e.bundlePath&&hintParts.push(`at: ${e.bundlePath}`),ui.error({command,code:"AGENT_BUNDLE_ERROR",message:e.message,hint:hintParts.length>0?hintParts.join(" \xB7 "):void 0})}else ui.error({command,code:"AGENT_BUNDLE_ERROR",message:err.message??String(err)})}__name(printBundleError,"printBundleError");var CLOUD_TRIGGERS=new Set(["schedule","webhook"]);async function activateAgent(opts){let cwd=opts.cwd??process.cwd(),projectRoot=resolveFimoProject(cwd)?.projectRoot??resolveProjectRoot(cwd),bundle=await parseBundle(path13.join(projectRoot,"agents",opts.name)),policy=readFimoConfig(projectRoot),triggerEntries=(bundle.config.triggers??[]).map((trigger,index2)=>({trigger,index:index2})).filter(entry=>!opts.trigger||entry.trigger.type===opts.trigger);triggerEntries.some(entry=>CLOUD_TRIGGERS.has(entry.trigger.type))&&requireCloudActivationNotifications(policy);let warnings=[],allBundles=await listBundles(path13.join(projectRoot,"agents")),allByName=new Map(allBundles.map(b=>[b.name,b])),transitive=resolveTransitiveCapabilities(bundle,allByName),vocab=validateAgainstVocabulary(transitive.union,CAPABILITY_VOCABULARY);if(vocab.unknown.length>0&&warnings.push(`Transitive caps contain unknown tokens: ${vocab.unknown.join(", ")}. Fix capabilities.yaml first.`),transitive.missing.length>0&&warnings.push(`Sub-agents not found in this project: ${transitive.missing.join(", ")}.`),transitive.union.length>0){let io=opts.consentIO??defaultConsentIO();if((await runConsent({caps:transitive.union,agentName:opts.name,allowShell:opts.allowShell,quiet:opts.quiet,io})).decision!=="allowed")return{activated:[],warnings:[...warnings,"Install consent denied \u2014 no activations created."],consentDenied:!0}}if(triggerEntries.length===0)return warnings.push(opts.trigger?`No triggers of type '${opts.trigger}' declared in bundle.`:"Bundle declares no triggers."),{activated:[],warnings};let env=opts.env??"main",projectId=opts.projectId??readProjectId(projectRoot);if(!projectId)throw new Error("Could not determine project id. Pass --project, or run from a linked project directory (one containing `.fimo.settings.json`).");let cfg=loadConfig(),api=new FimoApiClient(cfg);try{return{activated:(await api.activateAgent(projectId,env,opts.name,{triggerIndices:triggerEntries.map(entry=>entry.index)})).map(row2=>({trigger:row2.triggerKind,env:row2.env})),warnings}}catch(err){throw err instanceof ApiRequestError?new Error(`Failed to activate '${opts.name}' (HTTP ${err.status}): ${err.detail}`):err}}__name(activateAgent,"activateAgent");function readProjectId(projectRoot){try{return loadProjectSettings(projectRoot).projectId}catch{return}}__name(readProjectId,"readProjectId");function readFimoConfig(projectRoot){for(let file of["fimo-config.json","fimo.config.json"]){let p2=path13.join(projectRoot,file);if(fs12.existsSync(p2))return parseFimoConfig(fs12.readFileSync(p2,"utf8"),{path:file})}}__name(readFimoConfig,"readFimoConfig");async function activateAgentCommand(name,options){try{let result=await activateAgent({name,trigger:options.trigger,env:options.env,cwd:options.cwd,projectId:options.project,quiet:options.quiet,allowShell:options.allowShell});if(result.activated.length===0&&result.warnings.length>0){ui.error({command:"agents activate",code:result.consentDenied?"CONSENT_DENIED":"NO_ACTIVATIONS_CREATED",message:result.warnings.join(`
|
|
1099
1099
|
`)});return}let data2={agent:name,activated:result.activated,activated_count:result.activated.length};if(result.activated.length===0){ui.info({command:"agents activate",message:`(no triggers activated for '${name}')`});return}ui.ok({command:"agents activate",headline:`activated ${result.activated.length} trigger${result.activated.length===1?"":"s"} for ${name}`,details:data2,warnings:result.warnings.length>0?result.warnings:void 0})}catch(err){printBundleError("agents activate",err)}}__name(activateAgentCommand,"activateAgentCommand");import fs13 from"node:fs";import path14 from"node:path";init_dist();init_scaffold();async function createAgent(opts){if(!isValidAgentName(opts.name))throw new InvalidAgentNameError(opts.name);let cwd=opts.cwd??process.cwd(),projectRoot;if(opts.requireFimoProject){let resolved=resolveFimoProject(cwd);if(!resolved)return{ok:!1,error:"Not inside a Fimo project (no .fimo.settings.json found). Run from inside a Fimo project, or pass -C <dir>."};projectRoot=resolved.projectRoot}else projectRoot=resolveProjectRoot(cwd);let targetDir=path14.join(projectRoot,"agents",opts.name);if(fs13.existsSync(targetDir))return{ok:!1,error:`agents/${opts.name}/ already exists. Pick a different name or remove the existing directory first.`};let templateName=opts.template??"_default",templateRoot;try{templateRoot=resolveAgentTemplate(templateName)}catch{let available=listAgentTemplates().map(t2=>t2.name);throw new BundleTemplateNotFoundError(templateName,available)}await copyAgentTemplate(templateRoot,targetDir),opts.description!==void 0&&writeDescriptionToConfig(path14.join(targetDir,"config.yaml"),opts.description);let capsPath=path14.join(targetDir,"capabilities.yaml"),capsYaml=fs13.existsSync(capsPath)?fs13.readFileSync(capsPath,"utf8"):"",declared=parseCapabilities(capsYaml).caps;if(declared.length===0)return{ok:!0,agentDir:targetDir};let io=opts.consentIO??defaultConsentIO();return(await runConsent({caps:declared,agentName:opts.name,allowShell:opts.allowShell,quiet:opts.quiet,io})).decision!=="allowed"?{ok:!0,agentDir:targetDir,consentDenied:!0,error:"Install consent denied. The bundle was scaffolded but no activations were created."}:{ok:!0,agentDir:targetDir}}__name(createAgent,"createAgent");function writeDescriptionToConfig(configPath,description){let content2=fs13.readFileSync(configPath,"utf8"),line=`description: ${JSON.stringify(description)}`,next2;/^description:.*$/m.test(content2)?next2=content2.replace(/^description:.*$/m,line):/^version:\s*\d+.*$/m.test(content2)?next2=content2.replace(/^(version:\s*\d+.*)$/m,`$1
|
|
1100
1100
|
${line}`):next2=(content2.endsWith(`
|
|
@@ -1269,10 +1269,21 @@ Examples:
|
|
|
1269
1269
|
|
|
1270
1270
|
Run \`fimo schedules <command> --help\` for command-specific help.
|
|
1271
1271
|
`);schedules.command("create <name>").description("Create a scheduled command").requiredOption("--cron <expr>",'Cron expression, e.g. "0 2 * * *"').requiredOption("--do <command>","Command to run inside the env sandbox").option("--env <env>","Target env (defaults to the current git branch)").option("--project <id>","Project id (defaults to .fimo.settings.json projectId)").option("-C, --cwd <dir>","Project directory").action((name,opts)=>createCommand2(name,opts)),schedules.command("list").description("List schedules for an env").option("--env <env>","Target env (defaults to the current git branch)").option("--project <id>","Project id").option("-C, --cwd <dir>","Project directory").action(opts=>listCommand3(opts)),schedules.command("run <name>").description("Run a schedule now, without waiting for its cron").option("--env <env>","Target env (defaults to the current git branch)").option("--project <id>","Project id").option("-C, --cwd <dir>","Project directory").action((name,opts)=>runCommand2(name,opts)),schedules.command("delete <name>").description("Delete a schedule").option("--env <env>","Target env (defaults to the current git branch)").option("--project <id>","Project id").option("-C, --cwd <dir>","Project directory").action((name,opts)=>deleteCommand(name,opts))}__name(registerSchedulesCommands,"registerSchedulesCommands");async function resolveScope(opts){let baseApi=new FimoApiClient(loadConfig()),env=opts.env;if(!env)try{env=(await getProjectContext({cwd:opts.cwd})).env}catch(err){if(!opts.project)throw err;env=DEFAULT_ENV}if(opts.project)return{projectId:opts.project,api:baseApi.withEnv(env)};let cwd=resolveProjectCwd(opts.cwd);return{projectId:loadProjectSettings(cwd).projectId,api:baseApi.withEnv(env)}}__name(resolveScope,"resolveScope");async function createCommand2(name,opts){let{projectId,api}=await resolveScope(opts),schedule=await api.createSchedule(projectId,{name,cron:opts.cron,command:opts.do});ui.ok({command:"schedules create",headline:`Created schedule ${schedule.name}`,details:{id:schedule.id,env:schedule.env,cron:schedule.cron,command:schedule.command}})}__name(createCommand2,"createCommand");async function listCommand3(opts){let{projectId,api}=await resolveScope(opts),schedules=await api.listSchedules(projectId);ui.table({command:"schedules list",columns:[{key:"name",label:"NAME"},{key:"cron",label:"CRON"},{key:"command",label:"COMMAND"},{key:"status",label:"LAST STATUS"}],rows:schedules.map(schedule=>({name:schedule.name,cron:schedule.cron,command:schedule.command,status:schedule.lastStatus??""}))})}__name(listCommand3,"listCommand");async function runCommand2(name,opts){let{projectId,api}=await resolveScope(opts),result=await api.runSchedule(projectId,name);if(result.status==="failed"){ui.error({command:"schedules run",code:"SCHEDULE_RUN_FAILED",message:`Schedule ${name} failed: ${result.error??"unknown error"}`}),process.exitCode=1;return}ui.ok({command:"schedules run",headline:`Ran schedule ${name}: ${result.status}`,details:{status:result.status,...result.error?{error:result.error}:{}}})}__name(runCommand2,"runCommand");async function deleteCommand(name,opts){let{projectId,api}=await resolveScope(opts);await api.deleteSchedule(projectId,name),ui.ok({command:"schedules delete",headline:`Deleted schedule ${name}`,details:{name}})}__name(deleteCommand,"deleteCommand");init_dist();init_sync_schemas();import fs42 from"node:fs";import path46 from"node:path";init_project_context();init_project();function toApiShape(schema){return{name:schema.uid,label:schema.name,isSingleton:schema.isSingleton??!1,i18n:schema.i18n??{enabled:!0},fields:schema.fields}}__name(toApiShape,"toApiShape");function renderPrettyJson8(data2){return JSON.stringify(data2,null,2)}__name(renderPrettyJson8,"renderPrettyJson");async function schemaListCommand(options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("cms.schema.list",{projectId:ctx.projectId,env:ctx.env});let result=await api.listSchemas(ctx.projectId);ui.result({command:"schemas list",data:result,render:__name(()=>renderPrettyJson8(result),"render")})}__name(schemaListCommand,"schemaListCommand");async function schemaGetCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd);await requireOperation("cms.schema.get",{projectId:ctx.projectId,env:ctx.env});let result=await api.getSchema(ctx.projectId,typeName);ui.result({command:"schemas get",data:result,render:__name(()=>renderPrettyJson8(result),"render")})}__name(schemaGetCommand,"schemaGetCommand");async function schemaPushCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.schema.push",{projectId:ctx.projectId,env:ctx.env});let cwd=resolveProjectCwd(options.cwd),schemasDir=path46.join(cwd,"src/schemas"),allSchemaFiles=fs42.readdirSync(schemasDir).filter(file=>file.endsWith(".json")),files=typeName?[`${typeName}.json`]:allSchemaFiles,schemaUids=new Set(allSchemaFiles.flatMap(file=>{try{let schema=JSON.parse(fs42.readFileSync(path46.join(schemasDir,file),"utf-8"));return typeof schema.uid=="string"?[schema.uid]:[]}catch{return[]}})),schemas3=files.map(file=>{let filePath=path46.join(schemasDir,file);if(!fs42.existsSync(filePath))throw new Error(`Schema file not found: ${filePath}`);let issues=validateSchemaFile(filePath,path46.join("src/schemas",file),schemaUids);if(issues.length>0)throw new Error(issues.map(issue=>`${issue.file}: ${issue.message}`).join(`
|
|
1272
|
-
`));return JSON.parse(fs42.readFileSync(filePath,"utf-8"))});syncSchemas({cwd,verbose:!1});let results=await api.upsertSchemas(ctx.projectId,schemas3.map(schema=>toApiShape(schema))),payload=results.length===1?results[0]:results;ui.result({command:"schemas push",data:payload,render:__name(()=>renderPrettyJson8(payload),"render")})}__name(schemaPushCommand,"schemaPushCommand");async function schemaDeleteCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.schema.delete",{projectId:ctx.projectId,env:ctx.env});let result=await api.deleteSchema(ctx.projectId,typeName);ui.result({command:"schemas delete",data:result,render:__name(()=>renderPrettyJson8(result),"render")})}__name(schemaDeleteCommand,"schemaDeleteCommand");init_skills();init_status();init_dist5();init_dist();init_api();
|
|
1272
|
+
`));return JSON.parse(fs42.readFileSync(filePath,"utf-8"))});syncSchemas({cwd,verbose:!1});let results=await api.upsertSchemas(ctx.projectId,schemas3.map(schema=>toApiShape(schema))),payload=results.length===1?results[0]:results;ui.result({command:"schemas push",data:payload,render:__name(()=>renderPrettyJson8(payload),"render")})}__name(schemaPushCommand,"schemaPushCommand");async function schemaDeleteCommand(typeName,options,cmd){let{ctx,api}=await bootstrapProjectCommand(options,cmd,{refuseReadOnly:!0});await requireOperation("cms.schema.delete",{projectId:ctx.projectId,env:ctx.env});let result=await api.deleteSchema(ctx.projectId,typeName);ui.result({command:"schemas delete",data:result,render:__name(()=>renderPrettyJson8(result),"render")})}__name(schemaDeleteCommand,"schemaDeleteCommand");init_skills();init_status();init_dist5();init_dist();init_api();init_config();init_auth_errors();init_interactive();init_project_context();init_version();import{readFileSync as readFileSync11}from"node:fs";import path47 from"node:path";var MAX_SUPPORT_MESSAGE_LENGTH=5e3;function registerSupportCommands(program2){program2.command("support").description("Contact Fimo support").command("report").description("Report a Fimo problem or high-impact feature request with project and environment context").argument("[message...]","What happened or capability is missing; use --message-file for longer or agent-written reports").option("--message-file <path>","Read the report from a UTF-8 text file").option("-C, --cwd <dir>","Project directory").option("--preview","Print the exact support payload without sending it").option("-y, --yes","Confirm the report has been reviewed and send without prompting").addHelpText("after",`
|
|
1273
|
+
Examples:
|
|
1274
|
+
fimo support report "Preview deployment fails after validation"
|
|
1275
|
+
fimo support report --message-file /tmp/fimo-support-report.md --preview --json
|
|
1276
|
+
fimo support report --message-file /tmp/fimo-support-report.md --yes --json
|
|
1277
|
+
|
|
1278
|
+
Agents must show the report to the user and receive explicit approval before passing --yes.
|
|
1279
|
+
`).action((message,options,command)=>supportReportCommand(message??[],options,command))}__name(registerSupportCommands,"registerSupportCommands");async function supportReportCommand(messageParts,options,command){let message=resolveSupportMessage(messageParts,options.messageFile);if(message===null)return;let cfg=loadConfig(),api=new FimoApiClient(cfg),projectContext=await getProjectContext({cwd:options.cwd,envOverride:envOverrideFromCommand(command)});try{let[project,organizations]=await Promise.all([api.getProject(projectContext.projectId),api.listOrganizations()]),organizationId=project.organizationId??projectContext.organizationId,organization=organizations.find(candidate=>candidate.id===organizationId),reportContext={message,projectId:project.id,projectName:project.displayName??project.name,organizationId,organizationName:organization?.name??organizationId,environment:projectContext.env,cliVersion:getCliVersion()},submittedMessage=buildSupportMessage(reportContext);if(submittedMessage.length>MAX_SUPPORT_MESSAGE_LENGTH){ui.error({command:"support report",code:"SUPPORT_MESSAGE_TOO_LONG",message:`The complete report is ${submittedMessage.length.toLocaleString()} characters; the limit is ${MAX_SUPPORT_MESSAGE_LENGTH.toLocaleString()}.`,hint:"Keep the observed failure or capability gap, impact, and workaround; remove raw logs and unrelated context."});return}if(options.preview){ui.result({command:"support report",data:{submitted:!1,message:submittedMessage,project_id:reportContext.projectId,project_name:reportContext.projectName,environment:reportContext.environment},render:__name(()=>submittedMessage,"render")});return}if(!options.yes){assertInteractive("Review the report, then pass --yes to send it without prompting.","support report"),wt(submittedMessage,"Report preview");let confirmed=await ot2({message:"Send this report to Fimo support?",initialValue:!1});if(q(confirmed)||!confirmed){ui.info({command:"support report",message:"Cancelled."});return}}let result=await api.submitSupportIssue({message:submittedMessage,category:"project_issues",source:"cli",context:{organization:{id:reportContext.organizationId,name:reportContext.organizationName},project:{id:reportContext.projectId,name:reportContext.projectName,createdAt:new Date(project.createdAt)},environment:reportContext.environment,clientVersion:reportContext.cliVersion}});ui.result({command:"support report",data:{submitted:!0,project_id:reportContext.projectId,project_name:reportContext.projectName,environment:reportContext.environment,report_id:result.id,delivery_status:result.deliveryStatus},render:__name(()=>`${result.message}
|
|
1280
|
+
Report: ${result.id}
|
|
1281
|
+
Project: ${reportContext.projectName}
|
|
1282
|
+
Environment: ${reportContext.environment}`,"render")})}catch(error){rethrowCliAuthError(error),ui.error({command:"support report",code:"SUPPORT_REPORT_FAILED",message:error instanceof Error?error.message:"The support report could not be sent.",hint:"Try again later, or contact Fimo support through the app."})}}__name(supportReportCommand,"supportReportCommand");function resolveSupportMessage(messageParts,messageFile){if(messageParts.length>0&&messageFile)return ui.error({command:"support report",code:"SUPPORT_MESSAGE_CONFLICT",message:"Pass the report as text or with --message-file, not both."}),null;let message=messageParts.join(" ").trim();if(messageFile)try{message=readFileSync11(path47.resolve(messageFile),"utf8").trim()}catch(error){return ui.error({command:"support report",code:"SUPPORT_MESSAGE_READ_FAILED",message:error instanceof Error?error.message:"The report file could not be read."}),null}return message||(ui.error({command:"support report",code:"SUPPORT_MESSAGE_REQUIRED",message:"Describe what went wrong or which capability is missing, or pass --message-file <path>."}),null)}__name(resolveSupportMessage,"resolveSupportMessage");function buildSupportMessage(context){return[context.message,"","Fimo CLI context",`Project: ${context.projectName} (${context.projectId})`,`Environment: ${context.environment}`,`Fimo CLI: ${context.cliVersion}`].join(`
|
|
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(`
|
|
1273
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&§ions.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&§ions.push(""),sections.push(" Other commands:",...ungroupedRows)),sections}__name(formatGroupedCommandSections,"formatGroupedCommandSections");function indentBlock(value){return value.split(`
|
|
1274
1285
|
`).map(line=>` ${line}`).join(`
|
|
1275
|
-
`)}__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(path47.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(path47.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);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_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=`
|
|
1276
1287
|
Supported agents:
|
|
1277
1288
|
Universal (always covered via AGENTS.md, no per-agent file needed):
|
|
1278
1289
|
Codex, OpenCode, Aider, and other AGENTS.md-native tools
|