epicshop 6.46.0 → 6.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/cli.js CHANGED
@@ -246,8 +246,13 @@ const cli = yargs(args)
246
246
  process.exit(1);
247
247
  }
248
248
  })
249
- .command('config', 'View or update workshop configuration', (yargs) => {
249
+ .command('config [subcommand]', 'View or update workshop configuration', (yargs) => {
250
250
  return yargs
251
+ .positional('subcommand', {
252
+ describe: 'Config subcommand (reset)',
253
+ type: 'string',
254
+ choices: ['reset'],
255
+ })
251
256
  .option('repos-dir', {
252
257
  type: 'string',
253
258
  description: 'Set the default directory for workshop repos',
@@ -259,10 +264,12 @@ const cli = yargs(args)
259
264
  default: false,
260
265
  })
261
266
  .example('$0 config', 'View current configuration')
267
+ .example('$0 config reset', 'Delete config file and reset to defaults')
262
268
  .example('$0 config --repos-dir ~/epicweb', 'Set the repos directory');
263
269
  }, async (argv) => {
264
270
  const { config } = await import('./commands/workshops.js');
265
271
  const result = await config({
272
+ subcommand: argv.subcommand === 'reset' ? 'reset' : undefined,
266
273
  reposDir: argv.reposDir,
267
274
  silent: argv.silent,
268
275
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport '@epic-web/workshop-utils/init-env'\nimport chalk from 'chalk'\nimport { matchSorter } from 'match-sorter'\nimport yargs, { type ArgumentsCamelCase, type Argv } from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\n// Check for --help on start command before yargs parses\n// (yargs exits before command handler when help is requested)\nconst args = hideBin(process.argv)\nif (\n\t(args.includes('--help') || args.includes('-h')) &&\n\t(args.length === 0 || args[0] === 'start')\n) {\n\tconst { displayHelp } = await import('./commands/start.js')\n\tdisplayHelp()\n\tprocess.exit(0)\n}\n\n// Helper function to colorize help output\nfunction formatHelp(helpText: string): string {\n\treturn helpText\n\t\t.replace(/^(Commands:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^(Options:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^(Examples:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^\\s{2}(\\S+)\\s{2,}/gm, (match, cmd) => {\n\t\t\treturn match.replace(cmd, chalk.green(cmd))\n\t\t})\n\t\t.replace(/--[\\w-]+/g, (match) => chalk.yellow(match))\n\t\t.replace(/-\\w(?=\\s|,)/g, (match) => chalk.yellow(match))\n}\n\n// Set up yargs CLI\nconst cli = yargs(args)\n\t.scriptName('epicshop')\n\t.usage(chalk.bold('$0 <command> [options]'))\n\t.help('help')\n\t.alias('h', 'help')\n\t.version(false)\n\t.showHelpOnFail(true)\n\t.command(\n\t\t'start [workshop]',\n\t\t'Start a workshop (auto-detects if inside a workshop directory)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe: 'Workshop name to start (optional if inside a workshop)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('verbose', {\n\t\t\t\t\talias: 'v',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Show verbose output',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.option('app-location', {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription: 'Path to the workshop app directory',\n\t\t\t\t})\n\t\t\t\t.example('$0 start', 'Start the current workshop or select one')\n\t\t\t\t.example('$0 start full-stack-foundations', 'Start a specific workshop')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 start --app-location /path/to/workshop-app',\n\t\t\t\t\t'Start with custom app location',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tverbose?: boolean\n\t\t\t\tsilent?: boolean\n\t\t\t\tappLocation?: string\n\t\t\t}>,\n\t\t) => {\n\t\t\t// If a specific workshop is requested, start it from managed workshops\n\t\t\tif (argv.workshop) {\n\t\t\t\tconst { startWorkshop } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await startWorkshop({\n\t\t\t\t\tworkshop: argv.workshop,\n\t\t\t\t\tsilent: argv.silent,\n\t\t\t\t})\n\t\t\t\tif (!result.success) {\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Check if we're inside any workshop directory (walk up to find package.json with epicshop)\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// We're inside a workshop directory, start from that root\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\t// run migrations before starting\n\t\t\t\t\tawait import('./commands/migrate.js')\n\t\t\t\t\t\t.then(({ migrate }) => migrate())\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.yellow('⚠️ Migration failed:'), error)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\t// kick off a warmup while we start the server\n\t\t\t\t\timport('./commands/warm.js')\n\t\t\t\t\t\t.then(({ warm }) => warm({ silent: true }))\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.yellow('⚠️ Warmup failed:'), error)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\tconst { start } = await import('./commands/start.js')\n\t\t\t\t\tconst result = await start({\n\t\t\t\t\t\tappLocation: argv.appLocation,\n\t\t\t\t\t\tverbose: argv.verbose,\n\t\t\t\t\t\tsilent: argv.silent,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to start workshop application'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, show selection from managed workshops\n\t\t\t\tconst { startWorkshop } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await startWorkshop({ silent: argv.silent })\n\t\t\t\tif (!result.success) {\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'init',\n\t\t'Initialize epicshop and start the tutorial (first-time setup)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs.example('$0 init', 'Run the first-time setup wizard')\n\t\t},\n\t\tasync () => {\n\t\t\tconst { onboarding } = await import('./commands/workshops.js')\n\t\t\tconst result = await onboarding()\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'add [repo-name]',\n\t\t'Add a workshop by cloning from epicweb-dev GitHub org',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('repo-name', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Repository name from epicweb-dev org (optional, shows list if omitted)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('directory', {\n\t\t\t\t\talias: 'd',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Directory to clone into (defaults to configured repos directory)',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 add', 'Show available workshops to add')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 add full-stack-foundations',\n\t\t\t\t\t'Clone and set up the full-stack-foundations workshop',\n\t\t\t\t)\n\t\t\t\t.example(\n\t\t\t\t\t'$0 add web-forms --directory ~/my-workshops',\n\t\t\t\t\t'Clone workshop to a custom directory',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\trepoName?: string\n\t\t\t\tdirectory?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { add } = await import('./commands/workshops.js')\n\t\t\tconst result = await add({\n\t\t\t\trepoName: argv.repoName,\n\t\t\t\tdirectory: argv.directory,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'list',\n\t\t'List all added workshops',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 list', 'List all added workshops')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\tconst { list } = await import('./commands/workshops.js')\n\t\t\tconst result = await list({ silent: argv.silent })\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'remove [workshop]',\n\t\t'Remove a workshop (deletes the directory)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Workshop to remove (auto-detects if inside a workshop directory)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 remove', 'Remove current workshop or select one')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 remove full-stack-foundations',\n\t\t\t\t\t'Remove a specific workshop',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { findWorkshopRoot, remove } = await import(\n\t\t\t\t'./commands/workshops.js'\n\t\t\t)\n\n\t\t\tlet workshopToRemove = argv.workshop\n\n\t\t\t// If no workshop specified, check if we're inside a workshop directory\n\t\t\tif (!workshopToRemove) {\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tif (workshopRoot) {\n\t\t\t\t\t// Pass the path directly - remove will handle it\n\t\t\t\t\tworkshopToRemove = workshopRoot\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await remove({\n\t\t\t\tworkshop: workshopToRemove,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'open [workshop]',\n\t\t'Open a workshop in your editor',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Workshop to open (auto-detects if inside a workshop directory)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 open', 'Open current workshop or select one')\n\t\t\t\t.example('$0 open full-stack-foundations', 'Open a specific workshop')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { findWorkshopRoot, openWorkshop } = await import(\n\t\t\t\t'./commands/workshops.js'\n\t\t\t)\n\n\t\t\tlet workshopToOpen = argv.workshop\n\n\t\t\t// If no workshop specified, check if we're inside a workshop directory\n\t\t\tif (!workshopToOpen) {\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tif (workshopRoot) {\n\t\t\t\t\t// Pass the path directly - openWorkshop will handle it\n\t\t\t\t\tworkshopToOpen = workshopRoot\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await openWorkshop({\n\t\t\t\tworkshop: workshopToOpen,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'config',\n\t\t'View or update workshop configuration',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('repos-dir', {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription: 'Set the default directory for workshop repos',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 config', 'View current configuration')\n\t\t\t\t.example('$0 config --repos-dir ~/epicweb', 'Set the repos directory')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\treposDir?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { config } = await import('./commands/workshops.js')\n\t\t\tconst result = await config({\n\t\t\t\treposDir: argv.reposDir,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t['update', 'upgrade'],\n\t\t'Update the current workshop or select one to update',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 update', 'Update workshop to latest version')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 update --silent',\n\t\t\t\t\t'Update workshop to latest version silently',\n\t\t\t\t)\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\t// Check if we're inside any workshop directory\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// Inside a workshop, run update on it\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\tconst result = await update({ silent: argv.silent })\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to update workshop'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.error(chalk.red('❌ Update failed:'), error)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, prompt user to select one\n\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t)\n\t\t\t\tconst workshops = await listWorkshops()\n\n\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst allChoices = workshops.map(\n\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to update:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) {\n\t\t\t\t\t\t\t\treturn allChoices\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn matchSorter(allChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst workshop = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!workshop) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(`❌ Workshop \"${selectedWorkshop}\" not found`),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Change to workshop directory and run update\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(workshop.path)\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({ silent: argv.silent })\n\t\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to update workshop'}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'warm',\n\t\t'Warm up the workshop application caches (apps, diffs)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 warm', 'Warm up workshop caches')\n\t\t\t\t.example('$0 warm --silent', 'Warm up workshop caches silently')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\t// Check if we're inside any workshop directory\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// Inside a workshop, warm it\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\tconst result = await warm({ silent: argv.silent })\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to warm up workshop'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.error(chalk.red('❌ Warmup failed:'), error)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, prompt user to select one\n\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t)\n\t\t\t\tconst workshops = await listWorkshops()\n\n\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst allChoices = workshops.map(\n\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to warm:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) {\n\t\t\t\t\t\t\t\treturn allChoices\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn matchSorter(allChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst workshop = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!workshop) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(`❌ Workshop \"${selectedWorkshop}\" not found`),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Change to workshop directory and run warm\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(workshop.path)\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({ silent: argv.silent })\n\t\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to warm up workshop'}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'migrate',\n\t\t'Run any necessary migrations for workshop data',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 migrate', 'Run necessary migrations')\n\t\t\t\t.example('$0 migrate --silent', 'Run migrations silently')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\ttry {\n\t\t\t\tconst { migrate } = await import('./commands/migrate.js')\n\t\t\t\tconst result = await migrate()\n\t\t\t\tif (argv.silent) return\n\t\t\t\tif (result === null) {\n\t\t\t\t\tconsole.log(chalk.green('✅ No migrations needed'))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (result.success) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\tchalk.green(\n\t\t\t\t\t\t\tresult.message || '✅ Migrations completed successfully',\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.red(`❌ ${result.message || 'Failed to run migrations'}`),\n\t\t\t\t\t)\n\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (!argv.silent) {\n\t\t\t\t\tconsole.error(chalk.red('❌ Migration failed:'), error)\n\t\t\t\t}\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'auth [subcommand] [domain]',\n\t\t'Manage authentication for Epic domains (epicweb.dev, epicreact.dev, epicai.pro)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('subcommand', {\n\t\t\t\t\tdescribe: 'Auth subcommand (status, login, logout)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tchoices: ['status', 'login', 'logout'],\n\t\t\t\t})\n\t\t\t\t.positional('domain', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Domain to authenticate with (e.g., epicweb.dev, epicreact, epicai)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 auth', 'Show auth subcommand menu')\n\t\t\t\t.example('$0 auth status', 'Show login status for all domains')\n\t\t\t\t.example('$0 auth login', 'Login to a domain (interactive)')\n\t\t\t\t.example('$0 auth login epicweb.dev', 'Login to EpicWeb.dev')\n\t\t\t\t.example('$0 auth logout epicreact', 'Logout from EpicReact.dev')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tsubcommand?: string\n\t\t\t\tdomain?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { status, login, logout } = await import('./commands/auth.js')\n\n\t\t\tlet subcommand = argv.subcommand\n\n\t\t\tif (!subcommand) {\n\t\t\t\tif (argv.silent) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t'❌ Subcommand required in silent mode (status, login, logout)',\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst authChoices = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('status')} - Show login status`,\n\t\t\t\t\t\tvalue: 'status' as const,\n\t\t\t\t\t\tdescription: 'Show login status for all Epic domains',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('login')} - Log in to a domain`,\n\t\t\t\t\t\tvalue: 'login' as const,\n\t\t\t\t\t\tdescription: 'Log in to EpicWeb.dev, EpicReact.dev, or EpicAI.pro',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('logout')} - Log out from a domain`,\n\t\t\t\t\t\tvalue: 'logout' as const,\n\t\t\t\t\t\tdescription: 'Log out from an Epic domain',\n\t\t\t\t\t},\n\t\t\t\t]\n\n\t\t\t\ttry {\n\t\t\t\t\tsubcommand = await search({\n\t\t\t\t\t\tmessage: 'What would you like to do?',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return authChoices\n\t\t\t\t\t\t\treturn matchSorter(authChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet result: { success: boolean }\n\n\t\t\tswitch (subcommand) {\n\t\t\t\tcase 'status':\n\t\t\t\t\tresult = await status({ silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'login':\n\t\t\t\t\tresult = await login({ domain: argv.domain, silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'logout':\n\t\t\t\t\tresult = await logout({ domain: argv.domain, silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error(chalk.red(`❌ Unknown auth subcommand: ${subcommand}`))\n\t\t\t\t\tprocess.exit(1)\n\t\t\t}\n\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.epilogue(\n\t\t`For more information, visit: ${chalk.cyan('https://github.com/epicweb-dev/epicshop')}`,\n\t)\n\t.strict()\n\t.demandCommand(0, 1, '', 'Too many commands specified')\n\n// Parse and execute - show command chooser if no command provided\ntry {\n\tawait cli.parse()\n\n\t// If no command was provided, show command chooser\n\t// Only trigger when args is truly empty - any arg means a command was attempted\n\tif (args.length === 0) {\n\t\t// Check if we're inside a workshop first\n\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t// Get workshop title if we're inside one\n\t\tlet workshopTitle: string | null = null\n\t\tif (workshopRoot) {\n\t\t\ttry {\n\t\t\t\tconst fs = await import('node:fs')\n\t\t\t\tconst path = await import('node:path')\n\t\t\t\tconst pkgPath = path.join(workshopRoot, 'package.json')\n\t\t\t\tconst pkg = JSON.parse(\n\t\t\t\t\tawait fs.promises.readFile(pkgPath, 'utf-8'),\n\t\t\t\t) as {\n\t\t\t\t\tepicshop?: { title?: string }\n\t\t\t\t}\n\t\t\t\tworkshopTitle = pkg.epicshop?.title || path.basename(workshopRoot)\n\t\t\t} catch {\n\t\t\t\t// Use path.basename for cross-platform compatibility (Windows uses backslashes)\n\t\t\t\tconst path = await import('node:path')\n\t\t\t\tworkshopTitle = path.basename(workshopRoot) || 'current workshop'\n\t\t\t}\n\t\t}\n\n\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\tconst baseChoices = [\n\t\t\t{\n\t\t\t\tname: `${chalk.green('start')} - Start a workshop`,\n\t\t\t\tvalue: 'start' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Start ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to start',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('open')} - Open a workshop in editor`,\n\t\t\t\tvalue: 'open' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Open ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to open',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('list')} - List all workshops`,\n\t\t\t\tvalue: 'list' as const,\n\t\t\t\tdescription: 'List all added workshops',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('add')} - Add a workshop`,\n\t\t\t\tvalue: 'add' as const,\n\t\t\t\tdescription: 'Clone a workshop from epicweb-dev GitHub org',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('remove')} - Remove a workshop`,\n\t\t\t\tvalue: 'remove' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Remove ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to remove',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('update')} - Update workshop`,\n\t\t\t\tvalue: 'update' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Update ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to update',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('warm')} - Warm caches`,\n\t\t\t\tvalue: 'warm' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Warm the cache for ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to warm the cache for',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('config')} - View/update configuration`,\n\t\t\t\tvalue: 'config' as const,\n\t\t\t\tdescription: 'View or update workshop configuration',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('init')} - First-time setup`,\n\t\t\t\tvalue: 'init' as const,\n\t\t\t\tdescription: 'Initialize epicshop and start the tutorial',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('auth')} - Manage authentication`,\n\t\t\t\tvalue: 'auth' as const,\n\t\t\t\tdescription: 'Login/logout from EpicWeb.dev, EpicReact.dev, EpicAI.pro',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('help')} - Show help`,\n\t\t\t\tvalue: 'help' as const,\n\t\t\t\tdescription: 'Display CLI help information',\n\t\t\t},\n\t\t]\n\n\t\tconst subcommand = await search({\n\t\t\tmessage: workshopTitle\n\t\t\t\t? `What would you like to do? ${chalk.gray(`(in ${workshopTitle})`)}`\n\t\t\t\t: 'What would you like to do?',\n\t\t\tsource: async (input) => {\n\t\t\t\tif (!input) {\n\t\t\t\t\treturn baseChoices\n\t\t\t\t}\n\t\t\t\treturn matchSorter(baseChoices, input, {\n\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\t\tswitch (subcommand) {\n\t\t\tcase 'start': {\n\t\t\t\tconst { findWorkshopRoot, startWorkshop } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\t// Inside a workshop, start it directly\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait import('./commands/migrate.js')\n\t\t\t\t\t\t\t.then(({ migrate }) => migrate())\n\t\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\timport('./commands/warm.js')\n\t\t\t\t\t\t\t.then(({ warm }) => warm({ silent: true }))\n\t\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\tconst { start } = await import('./commands/start.js')\n\t\t\t\t\t\tconst result = await start({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst result = await startWorkshop({})\n\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tconst { findWorkshopRoot, openWorkshop } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tconst result = await openWorkshop({\n\t\t\t\t\tworkshop: workshopRoot || undefined,\n\t\t\t\t})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'list': {\n\t\t\t\tconst { list } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await list({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'add': {\n\t\t\t\tconst { add } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await add({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'remove': {\n\t\t\t\tconst { findWorkshopRoot, remove } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tconst result = await remove({\n\t\t\t\t\tworkshop: workshopRoot || undefined,\n\t\t\t\t})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'update': {\n\t\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Need to select a workshop\n\t\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t\t)\n\t\t\t\t\tconst workshops = await listWorkshops()\n\t\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst workshopChoices = workshops.map(\n\t\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to update:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return workshopChoices\n\t\t\t\t\t\t\treturn matchSorter(workshopChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tconst ws = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!ws) {\n\t\t\t\t\t\tconsole.error(chalk.red(`❌ Workshop not found`))\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(ws.path)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'warm': {\n\t\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Need to select a workshop\n\t\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t\t)\n\t\t\t\t\tconst workshops = await listWorkshops()\n\t\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst workshopChoices = workshops.map(\n\t\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to warm:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return workshopChoices\n\t\t\t\t\t\t\treturn matchSorter(workshopChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tconst ws = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!ws) {\n\t\t\t\t\t\tconsole.error(chalk.red(`❌ Workshop not found`))\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(ws.path)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'config': {\n\t\t\t\tconst { config } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await config({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'init': {\n\t\t\t\tconst { onboarding } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await onboarding()\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'auth': {\n\t\t\t\tconst { status, login, logout } = await import('./commands/auth.js')\n\t\t\t\tconst { search: authSearch } = await import('@inquirer/prompts')\n\n\t\t\t\tconst authChoices = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('status')} - Show login status`,\n\t\t\t\t\t\tvalue: 'status' as const,\n\t\t\t\t\t\tdescription: 'Show login status for all Epic domains',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('login')} - Log in to a domain`,\n\t\t\t\t\t\tvalue: 'login' as const,\n\t\t\t\t\t\tdescription: 'Log in to EpicWeb.dev, EpicReact.dev, or EpicAI.pro',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('logout')} - Log out from a domain`,\n\t\t\t\t\t\tvalue: 'logout' as const,\n\t\t\t\t\t\tdescription: 'Log out from an Epic domain',\n\t\t\t\t\t},\n\t\t\t\t]\n\n\t\t\t\tconst authSubcommand = await authSearch({\n\t\t\t\t\tmessage: 'What would you like to do?',\n\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\tif (!input) return authChoices\n\t\t\t\t\t\treturn matchSorter(authChoices, input, {\n\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tlet authResult: { success: boolean }\n\t\t\t\tswitch (authSubcommand) {\n\t\t\t\t\tcase 'status':\n\t\t\t\t\t\tauthResult = await status({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'login':\n\t\t\t\t\t\tauthResult = await login({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'logout':\n\t\t\t\t\t\tauthResult = await logout({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t\tif (!authResult.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'help': {\n\t\t\t\tcli.showHelp((helpText) => {\n\t\t\t\t\tconsole.log(formatHelp(helpText))\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n} catch (error) {\n\tif ((error as Error).message === 'USER_QUIT') {\n\t\tprocess.exit(0)\n\t}\n\tconsole.error(chalk.red('❌ Error:'), error)\n\tprocess.exit(1)\n}\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport '@epic-web/workshop-utils/init-env'\nimport chalk from 'chalk'\nimport { matchSorter } from 'match-sorter'\nimport yargs, { type ArgumentsCamelCase, type Argv } from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\n// Check for --help on start command before yargs parses\n// (yargs exits before command handler when help is requested)\nconst args = hideBin(process.argv)\nif (\n\t(args.includes('--help') || args.includes('-h')) &&\n\t(args.length === 0 || args[0] === 'start')\n) {\n\tconst { displayHelp } = await import('./commands/start.js')\n\tdisplayHelp()\n\tprocess.exit(0)\n}\n\n// Helper function to colorize help output\nfunction formatHelp(helpText: string): string {\n\treturn helpText\n\t\t.replace(/^(Commands:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^(Options:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^(Examples:)/gm, chalk.cyan.bold('$1'))\n\t\t.replace(/^\\s{2}(\\S+)\\s{2,}/gm, (match, cmd) => {\n\t\t\treturn match.replace(cmd, chalk.green(cmd))\n\t\t})\n\t\t.replace(/--[\\w-]+/g, (match) => chalk.yellow(match))\n\t\t.replace(/-\\w(?=\\s|,)/g, (match) => chalk.yellow(match))\n}\n\n// Set up yargs CLI\nconst cli = yargs(args)\n\t.scriptName('epicshop')\n\t.usage(chalk.bold('$0 <command> [options]'))\n\t.help('help')\n\t.alias('h', 'help')\n\t.version(false)\n\t.showHelpOnFail(true)\n\t.command(\n\t\t'start [workshop]',\n\t\t'Start a workshop (auto-detects if inside a workshop directory)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe: 'Workshop name to start (optional if inside a workshop)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('verbose', {\n\t\t\t\t\talias: 'v',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Show verbose output',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.option('app-location', {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription: 'Path to the workshop app directory',\n\t\t\t\t})\n\t\t\t\t.example('$0 start', 'Start the current workshop or select one')\n\t\t\t\t.example('$0 start full-stack-foundations', 'Start a specific workshop')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 start --app-location /path/to/workshop-app',\n\t\t\t\t\t'Start with custom app location',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tverbose?: boolean\n\t\t\t\tsilent?: boolean\n\t\t\t\tappLocation?: string\n\t\t\t}>,\n\t\t) => {\n\t\t\t// If a specific workshop is requested, start it from managed workshops\n\t\t\tif (argv.workshop) {\n\t\t\t\tconst { startWorkshop } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await startWorkshop({\n\t\t\t\t\tworkshop: argv.workshop,\n\t\t\t\t\tsilent: argv.silent,\n\t\t\t\t})\n\t\t\t\tif (!result.success) {\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Check if we're inside any workshop directory (walk up to find package.json with epicshop)\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// We're inside a workshop directory, start from that root\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\t// run migrations before starting\n\t\t\t\t\tawait import('./commands/migrate.js')\n\t\t\t\t\t\t.then(({ migrate }) => migrate())\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.yellow('⚠️ Migration failed:'), error)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\t// kick off a warmup while we start the server\n\t\t\t\t\timport('./commands/warm.js')\n\t\t\t\t\t\t.then(({ warm }) => warm({ silent: true }))\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.yellow('⚠️ Warmup failed:'), error)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\tconst { start } = await import('./commands/start.js')\n\t\t\t\t\tconst result = await start({\n\t\t\t\t\t\tappLocation: argv.appLocation,\n\t\t\t\t\t\tverbose: argv.verbose,\n\t\t\t\t\t\tsilent: argv.silent,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to start workshop application'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, show selection from managed workshops\n\t\t\t\tconst { startWorkshop } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await startWorkshop({ silent: argv.silent })\n\t\t\t\tif (!result.success) {\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'init',\n\t\t'Initialize epicshop and start the tutorial (first-time setup)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs.example('$0 init', 'Run the first-time setup wizard')\n\t\t},\n\t\tasync () => {\n\t\t\tconst { onboarding } = await import('./commands/workshops.js')\n\t\t\tconst result = await onboarding()\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'add [repo-name]',\n\t\t'Add a workshop by cloning from epicweb-dev GitHub org',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('repo-name', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Repository name from epicweb-dev org (optional, shows list if omitted)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('directory', {\n\t\t\t\t\talias: 'd',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Directory to clone into (defaults to configured repos directory)',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 add', 'Show available workshops to add')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 add full-stack-foundations',\n\t\t\t\t\t'Clone and set up the full-stack-foundations workshop',\n\t\t\t\t)\n\t\t\t\t.example(\n\t\t\t\t\t'$0 add web-forms --directory ~/my-workshops',\n\t\t\t\t\t'Clone workshop to a custom directory',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\trepoName?: string\n\t\t\t\tdirectory?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { add } = await import('./commands/workshops.js')\n\t\t\tconst result = await add({\n\t\t\t\trepoName: argv.repoName,\n\t\t\t\tdirectory: argv.directory,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'list',\n\t\t'List all added workshops',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 list', 'List all added workshops')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\tconst { list } = await import('./commands/workshops.js')\n\t\t\tconst result = await list({ silent: argv.silent })\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'remove [workshop]',\n\t\t'Remove a workshop (deletes the directory)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Workshop to remove (auto-detects if inside a workshop directory)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 remove', 'Remove current workshop or select one')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 remove full-stack-foundations',\n\t\t\t\t\t'Remove a specific workshop',\n\t\t\t\t)\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { findWorkshopRoot, remove } = await import(\n\t\t\t\t'./commands/workshops.js'\n\t\t\t)\n\n\t\t\tlet workshopToRemove = argv.workshop\n\n\t\t\t// If no workshop specified, check if we're inside a workshop directory\n\t\t\tif (!workshopToRemove) {\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tif (workshopRoot) {\n\t\t\t\t\t// Pass the path directly - remove will handle it\n\t\t\t\t\tworkshopToRemove = workshopRoot\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await remove({\n\t\t\t\tworkshop: workshopToRemove,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'open [workshop]',\n\t\t'Open a workshop in your editor',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('workshop', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Workshop to open (auto-detects if inside a workshop directory)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 open', 'Open current workshop or select one')\n\t\t\t\t.example('$0 open full-stack-foundations', 'Open a specific workshop')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tworkshop?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { findWorkshopRoot, openWorkshop } = await import(\n\t\t\t\t'./commands/workshops.js'\n\t\t\t)\n\n\t\t\tlet workshopToOpen = argv.workshop\n\n\t\t\t// If no workshop specified, check if we're inside a workshop directory\n\t\t\tif (!workshopToOpen) {\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tif (workshopRoot) {\n\t\t\t\t\t// Pass the path directly - openWorkshop will handle it\n\t\t\t\t\tworkshopToOpen = workshopRoot\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await openWorkshop({\n\t\t\t\tworkshop: workshopToOpen,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'config [subcommand]',\n\t\t'View or update workshop configuration',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('subcommand', {\n\t\t\t\t\tdescribe: 'Config subcommand (reset)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tchoices: ['reset'],\n\t\t\t\t})\n\t\t\t\t.option('repos-dir', {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdescription: 'Set the default directory for workshop repos',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 config', 'View current configuration')\n\t\t\t\t.example('$0 config reset', 'Delete config file and reset to defaults')\n\t\t\t\t.example('$0 config --repos-dir ~/epicweb', 'Set the repos directory')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tsubcommand?: string\n\t\t\t\treposDir?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { config } = await import('./commands/workshops.js')\n\t\t\tconst result = await config({\n\t\t\t\tsubcommand:\n\t\t\t\t\targv.subcommand === 'reset' ? 'reset' : undefined,\n\t\t\t\treposDir: argv.reposDir,\n\t\t\t\tsilent: argv.silent,\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t['update', 'upgrade'],\n\t\t'Update the current workshop or select one to update',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 update', 'Update workshop to latest version')\n\t\t\t\t.example(\n\t\t\t\t\t'$0 update --silent',\n\t\t\t\t\t'Update workshop to latest version silently',\n\t\t\t\t)\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\t// Check if we're inside any workshop directory\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// Inside a workshop, run update on it\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\tconst result = await update({ silent: argv.silent })\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to update workshop'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.error(chalk.red('❌ Update failed:'), error)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, prompt user to select one\n\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t)\n\t\t\t\tconst workshops = await listWorkshops()\n\n\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst allChoices = workshops.map(\n\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to update:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) {\n\t\t\t\t\t\t\t\treturn allChoices\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn matchSorter(allChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst workshop = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!workshop) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(`❌ Workshop \"${selectedWorkshop}\" not found`),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Change to workshop directory and run update\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(workshop.path)\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({ silent: argv.silent })\n\t\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to update workshop'}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'warm',\n\t\t'Warm up the workshop application caches (apps, diffs)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 warm', 'Warm up workshop caches')\n\t\t\t\t.example('$0 warm --silent', 'Warm up workshop caches silently')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\t// Check if we're inside any workshop directory\n\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t\tif (workshopRoot) {\n\t\t\t\t// Inside a workshop, warm it\n\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\tprocess.chdir(workshopRoot)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\tconst result = await warm({ silent: argv.silent })\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to warm up workshop'}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.error(chalk.red('❌ Warmup failed:'), error)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t} finally {\n\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Not inside a workshop, prompt user to select one\n\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t)\n\t\t\t\tconst workshops = await listWorkshops()\n\n\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst allChoices = workshops.map(\n\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t}),\n\t\t\t\t)\n\n\t\t\t\ttry {\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to warm:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) {\n\t\t\t\t\t\t\t\treturn allChoices\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn matchSorter(allChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tconst workshop = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!workshop) {\n\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\tchalk.red(`❌ Workshop \"${selectedWorkshop}\" not found`),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Change to workshop directory and run warm\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(workshop.path)\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({ silent: argv.silent })\n\t\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\t\tif (!argv.silent) {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t\t\t`❌ ${result.message || 'Failed to warm up workshop'}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'migrate',\n\t\t'Run any necessary migrations for workshop data',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 migrate', 'Run necessary migrations')\n\t\t\t\t.example('$0 migrate --silent', 'Run migrations silently')\n\t\t},\n\t\tasync (argv: ArgumentsCamelCase<{ silent?: boolean }>) => {\n\t\t\ttry {\n\t\t\t\tconst { migrate } = await import('./commands/migrate.js')\n\t\t\t\tconst result = await migrate()\n\t\t\t\tif (argv.silent) return\n\t\t\t\tif (result === null) {\n\t\t\t\t\tconsole.log(chalk.green('✅ No migrations needed'))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (result.success) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\tchalk.green(\n\t\t\t\t\t\t\tresult.message || '✅ Migrations completed successfully',\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.red(`❌ ${result.message || 'Failed to run migrations'}`),\n\t\t\t\t\t)\n\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\tconsole.error(chalk.red(result.error.message))\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (!argv.silent) {\n\t\t\t\t\tconsole.error(chalk.red('❌ Migration failed:'), error)\n\t\t\t\t}\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.command(\n\t\t'auth [subcommand] [domain]',\n\t\t'Manage authentication for Epic domains (epicweb.dev, epicreact.dev, epicai.pro)',\n\t\t(yargs: Argv) => {\n\t\t\treturn yargs\n\t\t\t\t.positional('subcommand', {\n\t\t\t\t\tdescribe: 'Auth subcommand (status, login, logout)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tchoices: ['status', 'login', 'logout'],\n\t\t\t\t})\n\t\t\t\t.positional('domain', {\n\t\t\t\t\tdescribe:\n\t\t\t\t\t\t'Domain to authenticate with (e.g., epicweb.dev, epicreact, epicai)',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t})\n\t\t\t\t.option('silent', {\n\t\t\t\t\talias: 's',\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdescription: 'Run without output logs',\n\t\t\t\t\tdefault: false,\n\t\t\t\t})\n\t\t\t\t.example('$0 auth', 'Show auth subcommand menu')\n\t\t\t\t.example('$0 auth status', 'Show login status for all domains')\n\t\t\t\t.example('$0 auth login', 'Login to a domain (interactive)')\n\t\t\t\t.example('$0 auth login epicweb.dev', 'Login to EpicWeb.dev')\n\t\t\t\t.example('$0 auth logout epicreact', 'Logout from EpicReact.dev')\n\t\t},\n\t\tasync (\n\t\t\targv: ArgumentsCamelCase<{\n\t\t\t\tsubcommand?: string\n\t\t\t\tdomain?: string\n\t\t\t\tsilent?: boolean\n\t\t\t}>,\n\t\t) => {\n\t\t\tconst { status, login, logout } = await import('./commands/auth.js')\n\n\t\t\tlet subcommand = argv.subcommand\n\n\t\t\tif (!subcommand) {\n\t\t\t\tif (argv.silent) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t'❌ Subcommand required in silent mode (status, login, logout)',\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\n\t\t\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\t\t\tconst authChoices = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('status')} - Show login status`,\n\t\t\t\t\t\tvalue: 'status' as const,\n\t\t\t\t\t\tdescription: 'Show login status for all Epic domains',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('login')} - Log in to a domain`,\n\t\t\t\t\t\tvalue: 'login' as const,\n\t\t\t\t\t\tdescription: 'Log in to EpicWeb.dev, EpicReact.dev, or EpicAI.pro',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('logout')} - Log out from a domain`,\n\t\t\t\t\t\tvalue: 'logout' as const,\n\t\t\t\t\t\tdescription: 'Log out from an Epic domain',\n\t\t\t\t\t},\n\t\t\t\t]\n\n\t\t\t\ttry {\n\t\t\t\t\tsubcommand = await search({\n\t\t\t\t\t\tmessage: 'What would you like to do?',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return authChoices\n\t\t\t\t\t\t\treturn matchSorter(authChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as Error).message === 'USER_QUIT') {\n\t\t\t\t\t\tprocess.exit(0)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet result: { success: boolean }\n\n\t\t\tswitch (subcommand) {\n\t\t\t\tcase 'status':\n\t\t\t\t\tresult = await status({ silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'login':\n\t\t\t\t\tresult = await login({ domain: argv.domain, silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'logout':\n\t\t\t\t\tresult = await logout({ domain: argv.domain, silent: argv.silent })\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error(chalk.red(`❌ Unknown auth subcommand: ${subcommand}`))\n\t\t\t\t\tprocess.exit(1)\n\t\t\t}\n\n\t\t\tif (!result.success) {\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\t\t},\n\t)\n\t.epilogue(\n\t\t`For more information, visit: ${chalk.cyan('https://github.com/epicweb-dev/epicshop')}`,\n\t)\n\t.strict()\n\t.demandCommand(0, 1, '', 'Too many commands specified')\n\n// Parse and execute - show command chooser if no command provided\ntry {\n\tawait cli.parse()\n\n\t// If no command was provided, show command chooser\n\t// Only trigger when args is truly empty - any arg means a command was attempted\n\tif (args.length === 0) {\n\t\t// Check if we're inside a workshop first\n\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\tconst workshopRoot = await findWorkshopRoot()\n\n\t\t// Get workshop title if we're inside one\n\t\tlet workshopTitle: string | null = null\n\t\tif (workshopRoot) {\n\t\t\ttry {\n\t\t\t\tconst fs = await import('node:fs')\n\t\t\t\tconst path = await import('node:path')\n\t\t\t\tconst pkgPath = path.join(workshopRoot, 'package.json')\n\t\t\t\tconst pkg = JSON.parse(\n\t\t\t\t\tawait fs.promises.readFile(pkgPath, 'utf-8'),\n\t\t\t\t) as {\n\t\t\t\t\tepicshop?: { title?: string }\n\t\t\t\t}\n\t\t\t\tworkshopTitle = pkg.epicshop?.title || path.basename(workshopRoot)\n\t\t\t} catch {\n\t\t\t\t// Use path.basename for cross-platform compatibility (Windows uses backslashes)\n\t\t\t\tconst path = await import('node:path')\n\t\t\t\tworkshopTitle = path.basename(workshopRoot) || 'current workshop'\n\t\t\t}\n\t\t}\n\n\t\tconst { search } = await import('@inquirer/prompts')\n\n\t\tconst baseChoices = [\n\t\t\t{\n\t\t\t\tname: `${chalk.green('start')} - Start a workshop`,\n\t\t\t\tvalue: 'start' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Start ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to start',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('open')} - Open a workshop in editor`,\n\t\t\t\tvalue: 'open' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Open ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to open',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('list')} - List all workshops`,\n\t\t\t\tvalue: 'list' as const,\n\t\t\t\tdescription: 'List all added workshops',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('add')} - Add a workshop`,\n\t\t\t\tvalue: 'add' as const,\n\t\t\t\tdescription: 'Clone a workshop from epicweb-dev GitHub org',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('remove')} - Remove a workshop`,\n\t\t\t\tvalue: 'remove' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Remove ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to remove',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('update')} - Update workshop`,\n\t\t\t\tvalue: 'update' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Update ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to update',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('warm')} - Warm caches`,\n\t\t\t\tvalue: 'warm' as const,\n\t\t\t\tdescription: workshopTitle\n\t\t\t\t\t? `Warm the cache for ${workshopTitle}`\n\t\t\t\t\t: 'Select a workshop to warm the cache for',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('config')} - View/update configuration`,\n\t\t\t\tvalue: 'config' as const,\n\t\t\t\tdescription: 'View or update workshop configuration',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('init')} - First-time setup`,\n\t\t\t\tvalue: 'init' as const,\n\t\t\t\tdescription: 'Initialize epicshop and start the tutorial',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('auth')} - Manage authentication`,\n\t\t\t\tvalue: 'auth' as const,\n\t\t\t\tdescription: 'Login/logout from EpicWeb.dev, EpicReact.dev, EpicAI.pro',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: `${chalk.green('help')} - Show help`,\n\t\t\t\tvalue: 'help' as const,\n\t\t\t\tdescription: 'Display CLI help information',\n\t\t\t},\n\t\t]\n\n\t\tconst subcommand = await search({\n\t\t\tmessage: workshopTitle\n\t\t\t\t? `What would you like to do? ${chalk.gray(`(in ${workshopTitle})`)}`\n\t\t\t\t: 'What would you like to do?',\n\t\t\tsource: async (input) => {\n\t\t\t\tif (!input) {\n\t\t\t\t\treturn baseChoices\n\t\t\t\t}\n\t\t\t\treturn matchSorter(baseChoices, input, {\n\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\t\tswitch (subcommand) {\n\t\t\tcase 'start': {\n\t\t\t\tconst { findWorkshopRoot, startWorkshop } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\t// Inside a workshop, start it directly\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait import('./commands/migrate.js')\n\t\t\t\t\t\t\t.then(({ migrate }) => migrate())\n\t\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\timport('./commands/warm.js')\n\t\t\t\t\t\t\t.then(({ warm }) => warm({ silent: true }))\n\t\t\t\t\t\t\t.catch(() => {})\n\t\t\t\t\t\tconst { start } = await import('./commands/start.js')\n\t\t\t\t\t\tconst result = await start({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst result = await startWorkshop({})\n\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tconst { findWorkshopRoot, openWorkshop } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tconst result = await openWorkshop({\n\t\t\t\t\tworkshop: workshopRoot || undefined,\n\t\t\t\t})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'list': {\n\t\t\t\tconst { list } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await list({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'add': {\n\t\t\t\tconst { add } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await add({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'remove': {\n\t\t\t\tconst { findWorkshopRoot, remove } = await import(\n\t\t\t\t\t'./commands/workshops.js'\n\t\t\t\t)\n\t\t\t\tconst workshopRoot = await findWorkshopRoot()\n\t\t\t\tconst result = await remove({\n\t\t\t\t\tworkshop: workshopRoot || undefined,\n\t\t\t\t})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'update': {\n\t\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Need to select a workshop\n\t\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t\t)\n\t\t\t\t\tconst workshops = await listWorkshops()\n\t\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst workshopChoices = workshops.map(\n\t\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to update:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return workshopChoices\n\t\t\t\t\t\t\treturn matchSorter(workshopChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tconst ws = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!ws) {\n\t\t\t\t\t\tconsole.error(chalk.red(`❌ Workshop not found`))\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(ws.path)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { update } = await import('./commands/update.js')\n\t\t\t\t\t\tconst result = await update({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'warm': {\n\t\t\t\tconst { findWorkshopRoot } = await import('./commands/workshops.js')\n\t\t\t\tconst wsRoot = await findWorkshopRoot()\n\t\t\t\tif (wsRoot) {\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(wsRoot)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Need to select a workshop\n\t\t\t\t\tconst { listWorkshops, getWorkshop } = await import(\n\t\t\t\t\t\t'@epic-web/workshop-utils/workshops.server'\n\t\t\t\t\t)\n\t\t\t\t\tconst workshops = await listWorkshops()\n\t\t\t\t\tif (workshops.length === 0) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t\t`No workshops found. Use 'epicshop add <repo-name>' to add one.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst workshopChoices = workshops.map(\n\t\t\t\t\t\t(w: { title: string; repoName: string; path: string }) => ({\n\t\t\t\t\t\t\tname: `${w.title} (${w.repoName})`,\n\t\t\t\t\t\t\tvalue: w.repoName,\n\t\t\t\t\t\t\tdescription: w.path,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\tconst selectedWorkshop = await search({\n\t\t\t\t\t\tmessage: 'Select a workshop to warm:',\n\t\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\t\tif (!input) return workshopChoices\n\t\t\t\t\t\t\treturn matchSorter(workshopChoices, input, {\n\t\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\tconst ws = await getWorkshop(selectedWorkshop)\n\t\t\t\t\tif (!ws) {\n\t\t\t\t\t\tconsole.error(chalk.red(`❌ Workshop not found`))\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst originalCwd = process.cwd()\n\t\t\t\t\tprocess.chdir(ws.path)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst { warm } = await import('./commands/warm.js')\n\t\t\t\t\t\tconst result = await warm({})\n\t\t\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tprocess.chdir(originalCwd)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'config': {\n\t\t\t\tconst { config } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await config({})\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'init': {\n\t\t\t\tconst { onboarding } = await import('./commands/workshops.js')\n\t\t\t\tconst result = await onboarding()\n\t\t\t\tif (!result.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'auth': {\n\t\t\t\tconst { status, login, logout } = await import('./commands/auth.js')\n\t\t\t\tconst { search: authSearch } = await import('@inquirer/prompts')\n\n\t\t\t\tconst authChoices = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('status')} - Show login status`,\n\t\t\t\t\t\tvalue: 'status' as const,\n\t\t\t\t\t\tdescription: 'Show login status for all Epic domains',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('login')} - Log in to a domain`,\n\t\t\t\t\t\tvalue: 'login' as const,\n\t\t\t\t\t\tdescription: 'Log in to EpicWeb.dev, EpicReact.dev, or EpicAI.pro',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: `${chalk.green('logout')} - Log out from a domain`,\n\t\t\t\t\t\tvalue: 'logout' as const,\n\t\t\t\t\t\tdescription: 'Log out from an Epic domain',\n\t\t\t\t\t},\n\t\t\t\t]\n\n\t\t\t\tconst authSubcommand = await authSearch({\n\t\t\t\t\tmessage: 'What would you like to do?',\n\t\t\t\t\tsource: async (input) => {\n\t\t\t\t\t\tif (!input) return authChoices\n\t\t\t\t\t\treturn matchSorter(authChoices, input, {\n\t\t\t\t\t\t\tkeys: ['name', 'value', 'description'],\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tlet authResult: { success: boolean }\n\t\t\t\tswitch (authSubcommand) {\n\t\t\t\t\tcase 'status':\n\t\t\t\t\t\tauthResult = await status({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'login':\n\t\t\t\t\t\tauthResult = await login({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'logout':\n\t\t\t\t\t\tauthResult = await logout({})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t\tif (!authResult.success) process.exit(1)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'help': {\n\t\t\t\tcli.showHelp((helpText) => {\n\t\t\t\t\tconsole.log(formatHelp(helpText))\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n} catch (error) {\n\tif ((error as Error).message === 'USER_QUIT') {\n\t\tprocess.exit(0)\n\t}\n\tconsole.error(chalk.red('❌ Error:'), error)\n\tprocess.exit(1)\n}\n"]}
@@ -27,6 +27,7 @@ export type StartOptions = {
27
27
  export type ConfigOptions = {
28
28
  reposDir?: string;
29
29
  silent?: boolean;
30
+ subcommand?: 'reset' | 'delete';
30
31
  };
31
32
  /**
32
33
  * Add a workshop by cloning from epicweb-dev GitHub org and running setup
@@ -1 +1 @@
1
- {"version":3,"file":"workshops.d.ts","sourceRoot":"","sources":["../../../src/commands/workshops.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAA;AAkB1C;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4B/D;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AA6MD,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CA+QvE;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,EAC1B,MAAc,GACd,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA4HtD;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,EAC5B,QAAQ,EACR,MAAc,GACd,EAAE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuI3B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,eAAe,CAAC,CA6G1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CACjC,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,eAAe,CAAC,CA+I1B;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC3B,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,eAAe,CAAC,CAwK1B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CA+F3D;AA8KD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAKrD"}
1
+ {"version":3,"file":"workshops.d.ts","sourceRoot":"","sources":["../../../src/commands/workshops.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAA;AA0C1C;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4B/D;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AA6MD,MAAM,MAAM,YAAY,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC/B,CAAA;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CA+QvE;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,EAC1B,MAAc,GACd,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA4HtD;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,EAC5B,QAAQ,EACR,MAAc,GACd,EAAE;IACF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuI3B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,eAAe,CAAC,CA6G1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CACjC,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,eAAe,CAAC,CA+I1B;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC3B,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,eAAe,CAAC,CAgO1B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAYzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAqG3D;AA8cD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAKrD"}