@arkenv/cli 0.0.6 → 0.0.7

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/index.cjs CHANGED
@@ -64,7 +64,7 @@ ${a}${e}
64
64
  `}case`submit`:{let e=a?` ${(0,l.styleText)(`dim`,a)}`:``;return`${n}${t?(0,l.styleText)(`gray`,W):``}${e}`}case`cancel`:{let e=a?` ${(0,l.styleText)([`strikethrough`,`dim`],a)}`:``,r=t?(0,l.styleText)(`gray`,W):``;return`${n}${r}${e}${a.trim()?`
65
65
  ${r}`:``}`}default:return`${n}${t?`${(0,l.styleText)(`cyan`,W)} `:``}${i}
66
66
  ${t?(0,l.styleText)(`cyan`,G):``}
67
- `}}}).prompt();var Q=c(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),Ye=class{constructor(e){this.options=e,this.originalStdoutWrite=process.stdout.write}format(e){return this.options.isQuiet?e.replace(/\x1B\[[0-9;]*[JKmsu]/g,``):e}write(e,t=`stdout`){let n=this.format(e);this.options.isJson||t===`stderr`?process.stderr.write(`${n}\n`):process.stdout.write(`${n}\n`)}info(e){this.write(Q.default.blue(`ℹ ${e}`))}warn(e){this.write(Q.default.yellow(`⚠ ${e}`),`stderr`)}error(e){this.write(Q.default.red(`✘ ${e}`),`stderr`)}success(e){this.write(Q.default.green(`✔ ${e}`))}step(e){this.write(`○ ${e}`)}note(e,t){this.options.isQuiet||this.options.isJson?this.write(Q.default.dim(`○ ${t?`${t}: `:``}${e}`)):Ue(e,t)}log(e){this.write(e)}spinner(){return this.options.isQuiet||this.options.isJson?{start:e=>this.write(Q.default.dim(`○ ${e}...`)),stop:e=>this.write(Q.default.green(`✔ ${e}`)),message:e=>this.write(Q.default.dim(`○ ${e}...`))}:Ge()}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}get stdio(){return this.options.isJson?[process.stdin,process.stderr,process.stderr]:`inherit`}interactiveStdout(e){!this.options.isJson||this.options.isYes||(e?process.stdout.write=process.stderr.write.bind(process.stderr):process.stdout.write=this.originalStdoutWrite)}cancel(e){this.options.isJson?this.json({status:`error`,message:e}):Y(e),process.exit(0)}fatal(e,t){this.options.isJson?this.json({status:`error`,details:{message:e,error:t instanceof Error?t.message:t?String(t):void 0}}):(this.error(e),t&&this.log(Q.default.red(t instanceof Error?t.stack:String(t)))),process.exit(1)}finish(e,t){this.options.isJson?this.json({status:`success`,message:e,details:t}):Be(e)}},Xe=class{constructor(e){this.args=e.slice(2),this.command=this.args[0],this.isYes=this.args.includes(`--yes`)||this.args.includes(`-y`),this.isQuiet=this.args.includes(`--quiet`)||this.args.includes(`-q`),this.isJson=this.args.includes(`--json`)||this.args.includes(`-j`),this.isAgent=this.args.includes(`--agent`)||this.args.includes(`-a`),this.helpRequested=this.args.includes(`--help`)||this.args.includes(`-h`),this.isAgent&&(this.isYes=!0,this.isQuiet=!0,this.isJson=!0),this.logger=new Ye({isQuiet:this.isQuiet,isJson:this.isJson,isYes:this.isYes})}},Ze=`0.0.6`,Qe=class{constructor(e){this.cli=e}async run(){let{logger:e}=this.cli;e.log(`ArkEnv CLI v${Ze}`),e.log(`\n${Q.default.bold(`Usage:`)}`),e.log(` arkenv init Set up ArkEnv in your project`),e.log(`\n${Q.default.bold(`Options:`)}`),e.log(` --yes, -y Skip prompts and use defaults (also passed to skill processes)`),e.log(` --agent, -a Agent mode: --yes --quiet --json`),e.log(` --quiet, -q Quiet mode: Suppress output, capture logs on failure`),e.log(` --json, -j Output structured JSON to stdout`),e.log(` --help, -h Show this help message`)}};async function $e(e){let t=process.cwd();for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}return null}async function et(){return $e([`vite.config.ts`,`vite.config.js`,`vite.config.mts`,`vite.config.mjs`])}async function tt(){return $e([`bunfig.toml`,`bun.setup.ts`,`bun.setup.js`])}async function nt(e,t){try{let n=await(0,v.loadFile)(e),r=(0,v.generateCode)(n).code,i=n.exports.default;if(i&&typeof i==`object`&&`$type`in i&&i.$type===`function-call`&&(i.$callee||i.$name||JSON.stringify(i))===`defineConfig`&&(i=i.$args[0]),!i||typeof i!=`object`)return{success:!1,error:`Could not find default export in Vite config`};if(i.plugins||=[],Array.isArray(i.plugins))if(!(r.includes(`arkenvVitePlugin`)||r.includes(`arkenvPlugin`)))n.imports.$add({from:`@arkenv/vite-plugin`,local:`arkenvVitePlugin`,imported:`default`}),t&&n.imports.$add({from:t,imported:`Env`}),i.plugins.push(`__ARK_PLUGIN_PLACEHOLDER__`);else return{success:!0};else return{success:!1,error:`The 'plugins' property in ${m.default.basename(e)} is not an array.`};let a=(0,v.generateCode)(n,{format:(0,v.detectCodeFormat)(r)}).code,o=t?`arkenvVitePlugin(Env)`:`arkenvVitePlugin()`;return a=a.replace(/['"]__ARK_PLUGIN_PLACEHOLDER__['"]/g,o),await _.default.writeFile(e,a,`utf-8`),{success:!0}}catch(t){let n=t instanceof Error?t.message:String(t);return{success:!1,error:`Failed to parse ${m.default.basename(e)}: ${n}`}}}async function rt(e){return e?.endsWith(`bunfig.toml`)?{success:!0,instructions:g.default`
67
+ `}}}).prompt();var Q=c(o(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1),Ye=class{constructor(e){this.options=e,this.originalStdoutWrite=process.stdout.write}format(e){return this.options.isQuiet?e.replace(/\x1B\[[0-9;]*[JKmsu]/g,``):e}write(e,t=`stdout`){let n=this.format(e);this.options.isJson||t===`stderr`?process.stderr.write(`${n}\n`):process.stdout.write(`${n}\n`)}info(e){this.write(Q.default.blue(`ℹ ${e}`))}warn(e){this.write(Q.default.yellow(`⚠ ${e}`),`stderr`)}error(e){this.write(Q.default.red(`✘ ${e}`),`stderr`)}success(e){this.write(Q.default.green(`✔ ${e}`))}step(e){this.write(`○ ${e}`)}note(e,t){this.options.isQuiet||this.options.isJson?this.write(Q.default.dim(`○ ${t?`${t}: `:``}${e}`)):Ue(e,t)}log(e){this.write(e)}spinner(){return this.options.isQuiet||this.options.isJson?{start:e=>this.write(Q.default.dim(`○ ${e}...`)),stop:e=>this.write(Q.default.green(`✔ ${e}`)),message:e=>this.write(Q.default.dim(`○ ${e}...`))}:Ge()}json(e){process.stdout.write(`${JSON.stringify(e,null,2)}\n`)}get stdio(){return this.options.isJson?[process.stdin,process.stderr,process.stderr]:`inherit`}interactiveStdout(e){!this.options.isJson||this.options.isYes||(e?process.stdout.write=process.stderr.write.bind(process.stderr):process.stdout.write=this.originalStdoutWrite)}cancel(e){this.options.isJson?this.json({status:`error`,message:e}):Y(e),process.exit(0)}fatal(e,t){this.options.isJson?this.json({status:`error`,details:{message:e,error:t instanceof Error?t.message:t?String(t):void 0}}):(this.error(e),t&&this.log(Q.default.red(t instanceof Error?t.stack:String(t)))),process.exit(1)}finish(e,t){this.options.isJson?this.json({status:`success`,message:e,details:t}):Be(e)}},Xe=class{constructor(e){this.args=e.slice(2),this.command=this.args[0],this.isYes=this.args.includes(`--yes`)||this.args.includes(`-y`),this.isQuiet=this.args.includes(`--quiet`)||this.args.includes(`-q`),this.isJson=this.args.includes(`--json`)||this.args.includes(`-j`),this.isAgent=this.args.includes(`--agent`)||this.args.includes(`-a`),this.helpRequested=this.args.includes(`--help`)||this.args.includes(`-h`),this.isAgent&&(this.isYes=!0,this.isQuiet=!0,this.isJson=!0),this.logger=new Ye({isQuiet:this.isQuiet,isJson:this.isJson,isYes:this.isYes})}},Ze=`0.0.7`,Qe=class{constructor(e){this.cli=e}async run(){let{logger:e}=this.cli;e.log(`ArkEnv CLI v${Ze}`),e.log(`\n${Q.default.bold(`Usage:`)}`),e.log(` arkenv init Set up ArkEnv in your project`),e.log(`\n${Q.default.bold(`Options:`)}`),e.log(` --yes, -y Skip prompts and use defaults (also passed to skill processes)`),e.log(` --agent, -a Agent mode: --yes --quiet --json`),e.log(` --quiet, -q Quiet mode: Suppress output, capture logs on failure`),e.log(` --json, -j Output structured JSON to stdout`),e.log(` --help, -h Show this help message`)}};async function $e(e){let t=process.cwd();for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}return null}async function et(){return $e([`vite.config.ts`,`vite.config.js`,`vite.config.mts`,`vite.config.mjs`])}async function tt(){return $e([`bunfig.toml`,`bun.setup.ts`,`bun.setup.js`])}async function nt(e,t){try{let n=await(0,v.loadFile)(e),r=(0,v.generateCode)(n).code,i=n.exports.default;if(i&&typeof i==`object`&&`$type`in i&&i.$type===`function-call`&&(i.$callee||i.$name||JSON.stringify(i))===`defineConfig`&&(i=i.$args[0]),!i||typeof i!=`object`)return{success:!1,updated:!1,error:`Could not find default export in Vite config`};if(i.plugins||=[],Array.isArray(i.plugins))if(!(r.includes(`arkenvVitePlugin`)||r.includes(`arkenvPlugin`)))n.imports.$add({from:`@arkenv/vite-plugin`,local:`arkenvVitePlugin`,imported:`default`}),t&&n.imports.$add({from:t,imported:`Env`}),i.plugins.push(`__ARK_PLUGIN_PLACEHOLDER__`);else return{success:!0,updated:!1};else return{success:!1,updated:!1,error:`The 'plugins' property in ${m.default.basename(e)} is not an array.`};let a=(0,v.generateCode)(n,{format:(0,v.detectCodeFormat)(r)}).code,o=t?`arkenvVitePlugin(Env)`:`arkenvVitePlugin()`;return a=a.replace(/['"]__ARK_PLUGIN_PLACEHOLDER__['"]/g,o),await _.default.writeFile(e,a,`utf-8`),{success:!0,updated:!0}}catch(t){let n=t instanceof Error?t.message:String(t);return{success:!1,updated:!1,error:`Failed to parse ${m.default.basename(e)}: ${n}`}}}async function rt(e){return e?.endsWith(`bunfig.toml`)?{success:!0,instructions:g.default`
68
68
  [preload]
69
69
  preload = ["./bun.setup.ts"]
70
70
  `}:e?.endsWith(`bun.setup.ts`)||e?.endsWith(`bun.setup.js`)?{success:!0,instructions:g.default`
@@ -88,7 +88,7 @@ ${t?(0,l.styleText)(`cyan`,G):``}
88
88
 
89
89
  [preload]
90
90
  preload = ["./bun.setup.ts"]
91
- `}}function it(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function at(){let e=m.default.join(process.cwd(),`.env.example`);try{let t=it(await _.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const $=e=>Q.default.cyan(e),ot=Q.default.blue(`⛯`);async function st(e,t=!1,n=!1){let r=await at();if(t){let t=e?.framework||`node`,n;if(t===`vite`||t===`bun`){let e=t===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.dirname(m.default.resolve(process.cwd(),`./src/env.ts`)),i=m.default.join(r,e);n=p.default.existsSync(i)?`append`:`overwrite`}return{path:`./src/env.ts`,validator:`arktype`,framework:t,language:`ts`,overwriteEnvSchemaFile:!0,envDtsHandling:n,installTypeDefinitions:t!==`node`,envKeys:r||void 0,installSkill:!1}}let i=await ze({overwriteEnvSchemaFile:async()=>{let e=`./src/env.ts`;if(p.default.existsSync(m.default.resolve(process.cwd(),e))){let t=await q({message:Q.default.yellow(`An existing ArkEnv configuration was found at ${$(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return I(t)&&(Y(`Operation cancelled.`),process.exit(0)),t||(Y(`Operation cancelled.`),process.exit(0)),t}return!0},framework:()=>Ke({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]}),useDefaultPath:()=>q({message:`Use default config path (./src/env.ts)?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`}),path:async({results:e})=>e.useDefaultPath?`./src/env.ts`:Je({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`}),installTypeDefinitions:async({results:e})=>{if(e.framework===`vite`||e.framework===`bun`){let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);return p.default.existsSync(r)?!0:q({message:`Establish ${$(t)} for typesafe environment variables?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}return!0},envDtsHandling:async({results:e})=>{if(!e.installTypeDefinitions||e.framework!==`vite`&&e.framework!==`bun`)return`skip`;let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);if(p.default.existsSync(r)){let e=await Ke({message:`Found existing ${$(t)}. How should we handle ArkEnv types?`,options:[{value:`append`,label:`Append types safely`,hint:`Recommended`},{value:`overwrite`,label:`Overwrite entirely`,hint:`Destructive`},{value:`skip`,label:`Skip`}]});return I(e)&&(Y(`Operation cancelled.`),process.exit(0)),e}return`overwrite`},validator:()=>Ke({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]}),useEnvExample:async()=>r?q({message:`Detected ${Q.default.cyan(`.env.example`)} with ${r.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0}):!1,installSkill:()=>{if(!n)return q({message:`Would you like to install the ArkEnv agent skill?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}},{onCancel:()=>{Y(`Operation cancelled.`),process.exit(0)}});return I(i)&&(Y(`Operation cancelled.`),process.exit(0)),{path:i.path||`./src/env.ts`,validator:i.validator,framework:i.framework,language:`ts`,overwriteEnvSchemaFile:i.overwriteEnvSchemaFile,envDtsHandling:i.envDtsHandling,installTypeDefinitions:i.installTypeDefinitions,envKeys:i.useEnvExample?r:void 0,installSkill:i.installSkill}}const ct=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string = ''",`).join(`
91
+ `}}function it(e){let t=[],n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.match(/^([A-Z_][A-Z0-9_]*)\s*=/i);r?.[1]&&t.push(r[1])}return Array.from(new Set(t))}async function at(){let e=m.default.join(process.cwd(),`.env.example`);try{let t=it(await _.default.readFile(e,`utf-8`));return t.length>0?t:null}catch{return null}}const $=e=>Q.default.cyan(e),ot=Q.default.blue(`⛯`);async function st(e,t=!1,n=!1){let r=await at();if(t){let t=e?.framework||`node`,n;if(t===`vite`||t===`bun`){let e=t===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.dirname(m.default.resolve(process.cwd(),`./src/env.ts`)),i=m.default.join(r,e);n=p.default.existsSync(i)?`append`:`overwrite`}return{path:`./src/env.ts`,validator:`arktype`,framework:t,language:`ts`,overwriteEnvSchemaFile:!0,envDtsHandling:n,installTypeDefinitions:t!==`node`,envKeys:r||void 0,installSkill:!1}}let i=await ze({overwriteEnvSchemaFile:async()=>{let e=`./src/env.ts`;if(p.default.existsSync(m.default.resolve(process.cwd(),e))){let t=await q({message:Q.default.yellow(`An existing ArkEnv configuration was found at ${$(e)}. Do you want to overwrite it?`),initialValue:!1,active:`Yes (override my configuration)`,inactive:`No (abort)`});return I(t)&&(Y(`Operation cancelled.`),process.exit(0)),t||(Y(`Operation cancelled.`),process.exit(0)),t}return!0},framework:()=>Ke({message:`Select your framework or runtime:`,initialValue:e?.framework,options:[{value:`vite`,label:`Vite${e?.framework===`vite`?` (Detected)`:``}`},{value:`bun`,label:`Bun${e?.framework===`bun`?` (Detected)`:``}`},{value:`node`,label:`Node.js${e?.framework===`node`?` (Detected)`:``}`}]}),useDefaultPath:()=>q({message:`Use default config path (./src/env.ts)?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No, let me customize it`}),path:async({results:e})=>e.useDefaultPath?`./src/env.ts`:Je({message:`Where should we create the ArkEnv config?`,placeholder:`./src/env.ts`,initialValue:`./src/env.ts`}),installTypeDefinitions:async({results:e})=>{if(e.framework===`vite`||e.framework===`bun`){let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);return p.default.existsSync(r)?!0:q({message:`Establish ${$(t)} for typesafe environment variables?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}return!0},envDtsHandling:async({results:e})=>{if(!e.installTypeDefinitions||e.framework!==`vite`&&e.framework!==`bun`)return`skip`;let t=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,n=m.default.dirname(m.default.resolve(process.cwd(),e.path||`./src/env.ts`)),r=m.default.join(n,t);if(p.default.existsSync(r)){let e=await Ke({message:`Found existing ${$(t)}. How should we handle ArkEnv types?`,options:[{value:`append`,label:`Append types safely (if needed)`,hint:`Recommended`},{value:`overwrite`,label:`Overwrite entirely`,hint:`Destructive`},{value:`skip`,label:`Skip`}]});return I(e)&&(Y(`Operation cancelled.`),process.exit(0)),e}return`overwrite`},validator:()=>Ke({message:`Select your preferred validator library:`,options:[{value:`arktype`,label:`ArkType (Recommended)`,hint:`TypeScript's 1:1 validator, optimized from editor to runtime`},{value:`zod`,label:`Zod`,hint:`TypeScript-first schema validation with static type inference`},{value:`valibot`,label:`Valibot`,hint:`The modular and type safe schema library`}]}),useEnvExample:async()=>r?q({message:`Detected ${Q.default.cyan(`.env.example`)} with ${r.length} keys. Use them for your schema?`,active:`Yes (Recommended)`,initialValue:!0}):!1,installSkill:()=>{if(!n)return q({message:`Would you like to install the ArkEnv agent skill?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`})}},{onCancel:()=>{Y(`Operation cancelled.`),process.exit(0)}});return I(i)&&(Y(`Operation cancelled.`),process.exit(0)),{path:i.path||`./src/env.ts`,validator:i.validator,framework:i.framework,language:`ts`,overwriteEnvSchemaFile:i.overwriteEnvSchemaFile,envDtsHandling:i.envDtsHandling,installTypeDefinitions:i.installTypeDefinitions,envKeys:i.useEnvExample?r:void 0,installSkill:i.installSkill}}const ct=(e,t)=>{let n=e?.length?e.map(e=>`\t\t${e}: "string = ''",`).join(`
92
92
  `):` NODE_ENV: "'development' | 'production' | 'test' = 'development'",
93
93
  PORT: "number.port = 3000",`;return t===`vite`?g.default`
94
94
  import { type } from "arkenv";
@@ -209,7 +209,7 @@ ${n}
209
209
  });
210
210
 
211
211
  export const env = arkenv(Env);
212
- `};function pt(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return`${ct(n,r)}\n`;case`zod`:return`${ft(n,r)}\n`;case`valibot`:return`${dt(n,r)}\n`;default:throw Error(`Unsupported validator: ${t}`)}}async function mt(e){let t=m.default.resolve(process.cwd(),e.path),n=m.default.dirname(t);await _.default.mkdir(n,{recursive:!0});let r=await xt(),i=[`arkenv`,e.validator];e.framework===`vite`&&i.push(`@arkenv/vite-plugin`),e.framework===`bun`&&i.push(`@arkenv/bun-plugin`);let a=St(r,i),o=pt(e);if((0,p.existsSync)(t)){if(e.overwriteEnvSchemaFile===!1)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}};if(e.overwriteEnvSchemaFile===void 0){let e=await q({message:`File ${m.default.basename(t)} already exists. Overwrite?`,initialValue:!1});if(I(e)&&(Y(`Operation cancelled.`),process.exit(0)),!e)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}}}await _.default.writeFile(t,o,`utf-8`)}else await _.default.writeFile(t,o,`utf-8`);let s={status:`already_strict`};e.shouldUpdateTsConfig&&(s=await yt());let c={status:`none`};return(e.framework===`vite`||e.framework===`bun`)&&e.installTypeDefinitions!==!1&&(c=await ht(e,n)),{tsConfigResult:s,installCmd:a,packageManager:r,typeDefinitionResult:c}}async function ht(e,t){let n=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.join(t,n),i=m.default.resolve(process.cwd(),e.path);if(e.envDtsHandling===`skip`)return{status:`skipped`,file:n};if(e.envDtsHandling===`append`||!e.envDtsHandling&&(0,p.existsSync)(r)){let{safeAppend:t}=await Promise.resolve().then(()=>require(`./injection-IfQN68XB.cjs`));return{status:await t(r,i,e.framework)?`appended`:`skipped`,file:n}}let a=e.framework===`vite`?lt(e.path):ut(e.path),o=(0,p.existsSync)(r);return await _.default.writeFile(r,a,`utf-8`),{status:o?`overwritten`:`created`,file:n}}function gt(e){switch(e){case`pnpm`:return`pnpm dlx`;case`yarn`:return`yarn dlx`;case`bun`:return`bunx`;default:return`npx`}}async function _t(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==m.default.parse(t).root;){for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}t=m.default.dirname(t)}return null}async function vt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{return(0,y.parse)(await _.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function yt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{let n=await _.default.readFile(e,`utf-8`);if((0,y.parse)(n)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:t};let r=(0,y.applyEdits)(n,(0,y.modify)(n,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await _.default.writeFile(e,r,`utf-8`),{status:`updated`,file:t}}catch{return{status:`error`,file:t}}}async function bt(){try{let e=m.default.join(process.cwd(),`package.json`),t=await _.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function xt(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==m.default.parse(t).root;){try{let e=m.default.join(t,`package.json`),n=await _.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=await _.default.readdir(t);if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=m.default.dirname(t)}return`npm`}function St(e,t){switch(e){case`pnpm`:return`pnpm add ${t.join(` `)}`;case`yarn`:return`yarn add ${t.join(` `)}`;case`bun`:return`bun add ${t.join(` `)}`;default:return`npm install ${t.join(` `)}`}}var Ct=class{constructor(e){this.cli=e}async run(){let{logger:e,isYes:t}=this.cli;e.interactiveStdout(!0);let n=!1,r=null;try{let i=await vt();if(i.status===`not_strict`)if(t)n=!0;else{e.warn(`TypeScript strict mode is not enabled in your ${$(i.file)}.`);let t=await q({message:`ArkEnv requires ${Q.default.dim(`strict`)} mode in your ${$(i.file)}. Would you like to enable it now?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});I(t)&&e.cancel(`Operation cancelled.`),t&&(n=!0)}r=await st({framework:await bt()},t,this.cli.isAgent)}finally{e.interactiveStdout(!1)}if(!r){e.cancel(`Operation cancelled.`);return}let i=e.spinner();i.start(`Scaffolding ArkEnv configuration...`);try{let{tsConfigResult:t,installCmd:a,packageManager:o,typeDefinitionResult:s}=await mt({...r,shouldUpdateTsConfig:n});i.stop(`Configuration scaffolded!`),a&&process.env.SKIP_INSTALL!==`true`&&(e.step(`Installing dependencies with ${o}...`),await this.execute(a)),t.status===`updated`?e.info(`Enforced strict: true in your ${$(t.file)}`):t.status===`error`&&e.warn(`Could not automatically update ${$(t.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`),s.status===`created`?e.info(`Created ${$(s.file)} for typesafe environment variables.`):s.status===`overwritten`?e.info(`Updated ${$(s.file)} for typesafe environment variables.`):s.status===`appended`&&e.info(`Appended ArkEnv types to ${$(s.file)}.`);let c=m.default.relative(process.cwd(),m.default.resolve(r.path)),l=c.startsWith(`.`)?c:`./${c}`,u=l.replace(/\.(ts|js|tsx|jsx)$/,``);if(r.framework===`vite`){let t=await et();if(t){e.step(`Bootstrapping Vite plugin...`);let n=await nt(t,u);n.success?e.info(`Updated ${$(m.default.basename(t))}`):(e.warn(`Could not automatically update ${$(m.default.basename(t))}: ${n.error}`),e.info(`Please add '@arkenv/vite-plugin' manually.`))}else e.info(`No Vite config found — please add '@arkenv/vite-plugin' to your Vite config manually.`)}else if(r.framework===`bun`){let t=await rt(await tt());t.success&&t.instructions?e.info(t.instructions):t.success||e.error(t.error||`Bun bootstrap failed`)}let d=gt(o),f=this.cli.isYes?` --yes`:``,p=!1;if(r.installSkill&&process.env.SKIP_INSTALL!==`true`){e.step(`Installing ArkEnv agent skill...`);try{await this.execute(`${d} skills add yamcodes/arkenv${f}`),p=!0}catch(t){e.warn(`Failed to install ArkEnv AI skill: ${t.message}`)}}let h=`2. Import and use: ${$(`import { env } from "${u}"`)}`;r.framework===`vite`?h=`2. Access via ${$(`import.meta.env.YOUR_VAR`)}`:r.framework===`bun`&&(h=`2. Access via ${$(`process.env.YOUR_VAR`)}`),p?e.note(g.default`
212
+ `};function pt(e){let{validator:t,envKeys:n,framework:r}=e;switch(t){case`arktype`:return`${ct(n,r)}\n`;case`zod`:return`${ft(n,r)}\n`;case`valibot`:return`${dt(n,r)}\n`;default:throw Error(`Unsupported validator: ${t}`)}}async function mt(e){let t=m.default.resolve(process.cwd(),e.path),n=m.default.dirname(t);await _.default.mkdir(n,{recursive:!0});let r=await xt(),i=[`arkenv`,e.validator];e.framework===`vite`&&i.push(`@arkenv/vite-plugin`),e.framework===`bun`&&i.push(`@arkenv/bun-plugin`);let a=St(r,i),o=pt(e);if((0,p.existsSync)(t)){if(e.overwriteEnvSchemaFile===!1)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}};if(e.overwriteEnvSchemaFile===void 0){let e=await q({message:`File ${m.default.basename(t)} already exists. Overwrite?`,initialValue:!1});if(I(e)&&(Y(`Operation cancelled.`),process.exit(0)),!e)return{tsConfigResult:{status:`already_strict`},packageManager:r,installCmd:void 0,typeDefinitionResult:{status:`none`}}}await _.default.writeFile(t,o,`utf-8`)}else await _.default.writeFile(t,o,`utf-8`);let s={status:`already_strict`};e.shouldUpdateTsConfig&&(s=await yt());let c={status:`none`};return(e.framework===`vite`||e.framework===`bun`)&&e.installTypeDefinitions!==!1&&(c=await ht(e,n)),{tsConfigResult:s,installCmd:a,packageManager:r,typeDefinitionResult:c}}async function ht(e,t){let n=e.framework===`vite`?`vite-env.d.ts`:`bun-env.d.ts`,r=m.default.join(t,n),i=m.default.resolve(process.cwd(),e.path);if(e.envDtsHandling===`skip`)return{status:`skipped`,file:n};if(e.envDtsHandling===`append`||!e.envDtsHandling&&(0,p.existsSync)(r)){let{safeAppend:t}=await Promise.resolve().then(()=>require(`./injection-DY0QfjVh.cjs`));return{status:await t(r,i,e.framework)?`appended`:`skipped`,file:n}}let a=e.framework===`vite`?lt(e.path):ut(e.path),o=(0,p.existsSync)(r);return await _.default.writeFile(r,a,`utf-8`),{status:o?`overwritten`:`created`,file:n}}function gt(e){switch(e){case`pnpm`:return`pnpm dlx`;case`yarn`:return`yarn dlx`;case`bun`:return`bunx`;default:return`npx`}}async function _t(){let e=[`tsconfig.app.json`,`tsconfig.json`,`tsconfig.base.json`,`tsconfig.node.json`],t=process.cwd();for(;t!==m.default.parse(t).root;){for(let n of e){let e=m.default.join(t,n);try{return await _.default.access(e),e}catch{}}t=m.default.dirname(t)}return null}async function vt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{return(0,y.parse)(await _.default.readFile(e,`utf-8`))?.compilerOptions?.strict===!0?{status:`strict`,file:t}:{status:`not_strict`,file:t}}catch{return{status:`not_found`}}}async function yt(){let e=await _t();if(!e)return{status:`not_found`};let t=m.default.basename(e);try{let n=await _.default.readFile(e,`utf-8`);if((0,y.parse)(n)?.compilerOptions?.strict===!0)return{status:`already_strict`,file:t};let r=(0,y.applyEdits)(n,(0,y.modify)(n,[`compilerOptions`,`strict`],!0,{formattingOptions:{insertSpaces:!0,tabSize:2}}));return await _.default.writeFile(e,r,`utf-8`),{status:`updated`,file:t}}catch{return{status:`error`,file:t}}}async function bt(){try{let e=m.default.join(process.cwd(),`package.json`),t=await _.default.readFile(e,`utf-8`),n=JSON.parse(t),r={...n.dependencies,...n.devDependencies};if(r.vite)return`vite`;if(r[`@types/bun`]||r.bun)return`bun`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.ts`)),`vite`}catch{}try{return await _.default.access(m.default.join(process.cwd(),`vite.config.js`)),`vite`}catch{}return`bun`in process.versions?`bun`:`node`}async function xt(){let e=process.env.npm_config_user_agent?.toString()||``;if(e.includes(`pnpm`))return`pnpm`;if(e.includes(`yarn`))return`yarn`;if(e.includes(`bun`))return`bun`;if(e.includes(`npm`))return`npm`;let t=process.cwd();for(;t!==m.default.parse(t).root;){try{let e=m.default.join(t,`package.json`),n=await _.default.readFile(e,`utf-8`),r=JSON.parse(n);if(r.packageManager){if(r.packageManager.startsWith(`pnpm`))return`pnpm`;if(r.packageManager.startsWith(`yarn`))return`yarn`;if(r.packageManager.startsWith(`bun`))return`bun`}}catch{}let e=await _.default.readdir(t);if(e.includes(`pnpm-lock.yaml`))return`pnpm`;if(e.includes(`yarn.lock`))return`yarn`;if(e.includes(`bun.lockb`))return`bun`;if(e.includes(`package-lock.json`))return`npm`;t=m.default.dirname(t)}return`npm`}function St(e,t){switch(e){case`pnpm`:return`pnpm add ${t.join(` `)}`;case`yarn`:return`yarn add ${t.join(` `)}`;case`bun`:return`bun add ${t.join(` `)}`;default:return`npm install ${t.join(` `)}`}}var Ct=class{constructor(e){this.cli=e}async run(){let{logger:e,isYes:t}=this.cli;e.interactiveStdout(!0);let n=!1,r=null;try{let i=await vt();if(i.status===`not_strict`)if(t)n=!0;else{e.warn(`TypeScript strict mode is not enabled in your ${$(i.file)}.`);let t=await q({message:`ArkEnv requires ${Q.default.dim(`strict`)} mode in your ${$(i.file)}. Would you like to enable it now?`,initialValue:!0,active:`Yes (Recommended)`,inactive:`No`});I(t)&&e.cancel(`Operation cancelled.`),t&&(n=!0)}r=await st({framework:await bt()},t,this.cli.isAgent)}finally{e.interactiveStdout(!1)}if(!r){e.cancel(`Operation cancelled.`);return}let i=e.spinner();i.start(`Scaffolding ArkEnv configuration...`);try{let{tsConfigResult:t,installCmd:a,packageManager:o,typeDefinitionResult:s}=await mt({...r,shouldUpdateTsConfig:n});i.stop(`Configuration scaffolded!`),a&&process.env.SKIP_INSTALL!==`true`&&(e.step(`Installing dependencies with ${o}...`),await this.execute(a)),t.status===`updated`?e.info(`Enforced strict: true in your ${$(t.file)}`):t.status===`error`&&e.warn(`Could not automatically update ${$(t.file||`tsconfig.json`)}. Please ensure 'strict: true' is set manually.`),s.status===`created`?e.info(`Created ${$(s.file)} for typesafe environment variables.`):s.status===`overwritten`?e.info(`Updated ${$(s.file)} for typesafe environment variables.`):s.status===`appended`?e.info(`Appended ArkEnv types to ${$(s.file)}.`):s.status===`skipped`&&r.envDtsHandling===`append`&&e.info(`${$(s.file)} already contains ArkEnv types.`);let c=m.default.relative(process.cwd(),m.default.resolve(r.path)),l=c.startsWith(`.`)?c:`./${c}`,u=l.replace(/\.(ts|js|tsx|jsx)$/,``);if(r.framework===`vite`){let t=await et();if(t){e.step(`Bootstrapping Vite plugin...`);let n=await nt(t,u);n.success?n.updated&&e.info(`Updated ${$(m.default.basename(t))}`):(e.warn(`Could not automatically update ${$(m.default.basename(t))}: ${n.error}`),e.info(`Please add '@arkenv/vite-plugin' manually.`))}else e.info(`No Vite config found — please add '@arkenv/vite-plugin' to your Vite config manually.`)}else if(r.framework===`bun`){let t=await rt(await tt());t.success&&t.instructions?e.info(t.instructions):t.success||e.error(t.error||`Bun bootstrap failed`)}let d=gt(o),f=this.cli.isYes?` --yes`:``,p=!1;if(r.installSkill&&process.env.SKIP_INSTALL!==`true`){e.step(`Installing ArkEnv agent skill...`);try{await this.execute(`${d} skills add yamcodes/arkenv${f}`),p=!0}catch(t){e.warn(`Failed to install ArkEnv AI skill: ${t.message}`)}}let h=`2. Import and use: ${$(`import { env } from "${u}"`)}`;r.framework===`vite`?h=`2. Access via ${$(`import.meta.env.YOUR_VAR`)}`:r.framework===`bun`&&(h=`2. Access via ${$(`process.env.YOUR_VAR`)}`),p?e.note(g.default`
213
213
  Inside your AI assistant (e.g. Claude Code), use:
214
214
  ${Q.default.cyan(`/arkenv`)} - automatically refine your schema and configure integrations.
215
215
  `,`Next steps`):e.note(g.default`
@@ -1,6 +1,6 @@
1
- const e=require(`./index.cjs`);let t=require(`node:path`);t=e.t(t,1);let n=require(`dedent`);n=e.t(n,1);let r=require(`node:fs/promises`);r=e.t(r,1);const i=`// @arkenv-types`;async function a(e,n,a){try{let c=await r.default.readFile(e,`utf-8`);if(c.includes(i))return!1;let l=t.default.dirname(e),u=t.default.relative(l,n).replace(/\.(ts|js|tsx|jsx)$/,``).split(t.default.sep).join(`/`),d=u.startsWith(`.`)?u:`./${u}`,f=a===`vite`?o(d):s(d),p=c.endsWith(`
1
+ const e=require(`./index.cjs`);let t=require(`node:path`);t=e.t(t,1);let n=require(`dedent`);n=e.t(n,1);let r=require(`node:fs/promises`);r=e.t(r,1);const i=`// @arkenv-types`;async function a(e,n,a){try{let c=await r.default.readFile(e,`utf-8`),l=a===`vite`?`ImportMetaEnvAugmented`:`ProcessEnvAugmented`;if(c.includes(i)||c.includes(l))return!1;let u=t.default.dirname(e),d=t.default.relative(u,n).replace(/\.(ts|js|tsx|jsx)$/,``).split(t.default.sep).join(`/`),f=d.startsWith(`.`)?d:`./${d}`,p=a===`vite`?o(f):s(f),m=c.endsWith(`
2
2
  `)?``:`
3
- `;return await r.default.appendFile(e,`${p}\n${i}\n${f}\n`,`utf-8`),!0}catch(t){return console.error(`Failed to append to ${e}:`,t),!1}}function o(e){return n.default`
3
+ `;return await r.default.appendFile(e,`${m}\n${i}\n${p}\n`,`utf-8`),!0}catch(t){return console.error(`Failed to append to ${e}:`,t),!1}}function o(e){return n.default`
4
4
  type ImportMetaEnvAugmented = import("@arkenv/vite-plugin").ImportMetaEnvAugmented<
5
5
  typeof import("${e}").Env
6
6
  >;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arkenv/cli",
3
3
  "type": "module",
4
- "version": "0.0.6",
4
+ "version": "0.0.7",
5
5
  "description": "Interactive CLI for scaffolding ArkEnv projects",
6
6
  "bin": {
7
7
  "arkenv": "./dist/index.cjs"