@onexapis/cli 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/logger.ts","../src/utils/file-helpers.ts","../src/utils/validators.ts","../src/commands/init.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/validate.ts","../src/commands/build.ts","../src/commands/package.ts","../src/commands/deploy.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/cli.ts"],"names":["chalk","ora","fs","ejs","path","execSync","inquirer","answers","manifestPath","spawn","runCommand","archiver","FormData","fetch","S3Client","PutObjectCommand","os","getS3Client","getBucketName","GetObjectCommand","AdmZip","streamToString","streamToBuffer","resolveLatestVersion","dotenv","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nfunction getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n const themesDir = path.join(root, \"themes\");\n if (fs.existsSync(themesDir)) {\n return themesDir;\n }\n // Fallback to legacy src/themes\n return path.join(root, \"src/themes\");\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files\n await copyTemplate(template, projectPath, data);\n\n // Create src directories\n const srcPath = path.join(projectPath, \"src\");\n fs.mkdirSync(srcPath, { recursive: true });\n\n // Create manifest file\n const manifestContent = generateManifest(data);\n await writeFile(path.join(srcPath, \"manifest.ts\"), manifestContent);\n\n // Create theme config\n const configContent = generateThemeConfig(data);\n await writeFile(path.join(srcPath, \"config.ts\"), configContent);\n\n // Create theme layout\n const layoutContent = generateThemeLayout(data);\n await writeFile(path.join(srcPath, \"layout.ts\"), layoutContent);\n\n // Create index file\n const indexContent = generateThemeIndex(data);\n await writeFile(path.join(srcPath, \"index.ts\"), indexContent);\n\n // Create sections directory with example\n const sectionsPath = path.join(srcPath, \"sections\");\n fs.mkdirSync(sectionsPath, { recursive: true });\n await writeFile(\n path.join(sectionsPath, \"README.md\"),\n `# ${displayName} Sections\\n\\nAdd your theme-specific sections here.\\n`\n );\n\n // Create blocks directory\n const blocksPath = path.join(srcPath, \"blocks\");\n fs.mkdirSync(blocksPath, { recursive: true });\n await writeFile(\n path.join(blocksPath, \"README.md\"),\n `# ${displayName} Blocks\\n\\nAdd your theme-specific blocks here.\\n`\n );\n\n // Create pages directory\n const pagesPath = path.join(srcPath, \"pages\");\n fs.mkdirSync(pagesPath, { recursive: true });\n const homePageContent = generateHomePage(data);\n await writeFile(path.join(pagesPath, \"home.ts\"), homePageContent);\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onex init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" src/manifest.ts - Theme manifest and exports\");\n logger.log(\n \" src/config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" src/layout.ts - Header and footer configuration\");\n logger.log(\" src/sections/ - Custom sections for your theme\");\n logger.log(\" src/blocks/ - Reusable blocks\");\n logger.log(\" src/pages/ - Page configurations\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./theme.config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./theme.layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeName}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeName}Config } from \"./theme.config\";\nexport { themeLayout as ${data.themeName}Layout } from \"./theme.layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@duongthiu/onex-core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n themeExists,\n} from \"../utils/file-helpers\";\n\ninterface ValidateOptions {\n theme?: string;\n fix?: boolean;\n}\n\ninterface ValidationIssue {\n type: \"error\" | \"warning\";\n file: string;\n message: string;\n}\n\nexport async function validateCommand(options: ValidateOptions): Promise<void> {\n logger.header(\"Validate Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const issues: ValidationIssue[] = [];\n let themeToValidate: string | undefined;\n\n // If theme specified, validate that theme\n if (options.theme) {\n if (!themeExists(options.theme)) {\n logger.error(`Theme \"${options.theme}\" not found.`);\n process.exit(1);\n }\n themeToValidate = options.theme;\n } else {\n // Check if we're in a theme directory\n const manifestPath = path.join(process.cwd(), \"manifest.ts\");\n if (fs.existsSync(manifestPath)) {\n // We're in a theme directory\n themeToValidate = path.basename(process.cwd());\n logger.info(`Validating current theme: ${themeToValidate}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const themePath = path.join(getThemesDir(), themeToValidate);\n\n logger.startSpinner(\"Running validation checks...\");\n\n // Check 1: Manifest file exists\n const manifestPath = path.join(themePath, \"manifest.ts\");\n if (!fs.existsSync(manifestPath)) {\n issues.push({\n type: \"error\",\n file: \"manifest.ts\",\n message: \"Manifest file not found\",\n });\n } else {\n // Check manifest structure - just verify it has some exports\n const manifestContent = fs.readFileSync(manifestPath, \"utf-8\");\n if (\n !manifestContent.includes(\"export const\") &&\n !manifestContent.includes(\"export default\") &&\n !manifestContent.includes(\"export interface\")\n ) {\n issues.push({\n type: \"error\",\n file: \"manifest.ts\",\n message: \"Must have at least one export\",\n });\n }\n }\n\n // Check 2: Theme config exists\n const configPath = path.join(themePath, \"theme.config.ts\");\n if (!fs.existsSync(configPath)) {\n issues.push({\n type: \"warning\",\n file: \"theme.config.ts\",\n message: \"Theme config file not found (recommended)\",\n });\n }\n\n // Check 3: Index file exists\n const indexPath = path.join(themePath, \"index.ts\");\n if (!fs.existsSync(indexPath)) {\n issues.push({\n type: \"warning\",\n file: \"index.ts\",\n message: \"Index file not found (recommended)\",\n });\n }\n\n // Check 4: Sections directory\n const sectionsDir = path.join(themePath, \"sections\");\n if (!fs.existsSync(sectionsDir)) {\n issues.push({\n type: \"warning\",\n file: \"sections/\",\n message: \"Sections directory not found\",\n });\n } else {\n // Validate each section\n const sections = fs\n .readdirSync(sectionsDir)\n .filter((name) =>\n fs.statSync(path.join(sectionsDir, name)).isDirectory()\n );\n\n for (const sectionName of sections) {\n const sectionPath = path.join(sectionsDir, sectionName);\n\n // Check for required files\n const schemaFile = path.join(sectionPath, `${sectionName}.schema.ts`);\n const defaultTemplate = path.join(\n sectionPath,\n `${sectionName}-default.tsx`\n );\n const indexFile = path.join(sectionPath, \"index.ts\");\n\n if (!fs.existsSync(schemaFile)) {\n issues.push({\n type: \"error\",\n file: `sections/${sectionName}/${sectionName}.schema.ts`,\n message: \"Section schema file missing\",\n });\n }\n\n if (!fs.existsSync(indexFile)) {\n issues.push({\n type: \"error\",\n file: `sections/${sectionName}/index.ts`,\n message: \"Section index file missing\",\n });\n }\n\n if (!fs.existsSync(defaultTemplate)) {\n issues.push({\n type: \"warning\",\n file: `sections/${sectionName}/${sectionName}-default.tsx`,\n message: \"Default template not found (recommended)\",\n });\n }\n }\n }\n\n // Check 5: Blocks directory\n const blocksDir = path.join(themePath, \"blocks\");\n if (fs.existsSync(blocksDir)) {\n const blocks = fs\n .readdirSync(blocksDir)\n .filter((name) => fs.statSync(path.join(blocksDir, name)).isDirectory());\n\n for (const blockName of blocks) {\n const blockPath = path.join(blocksDir, blockName);\n\n // Check for required files\n const schemaFile = path.join(blockPath, `${blockName}.schema.ts`);\n const componentFile = path.join(blockPath, `${blockName}.tsx`);\n const indexFile = path.join(blockPath, \"index.ts\");\n\n if (!fs.existsSync(schemaFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/${blockName}.schema.ts`,\n message: \"Block schema file missing\",\n });\n }\n\n if (!fs.existsSync(componentFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/${blockName}.tsx`,\n message: \"Block component file missing\",\n });\n }\n\n if (!fs.existsSync(indexFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/index.ts`,\n message: \"Block index file missing\",\n });\n }\n }\n }\n\n logger.stopSpinner(true, \"Validation complete\");\n\n // Report results\n const errors = issues.filter((i) => i.type === \"error\");\n const warnings = issues.filter((i) => i.type === \"warning\");\n\n logger.newLine();\n\n if (errors.length === 0 && warnings.length === 0) {\n logger.success(\"✓ Theme is valid!\");\n logger.newLine();\n logger.info(`Theme: ${themeToValidate}`);\n logger.log(\" No issues found\");\n } else {\n if (errors.length > 0) {\n logger.error(`✗ Found ${errors.length} error(s):`);\n logger.newLine();\n errors.forEach((issue) => {\n logger.log(` ${issue.file}`);\n logger.log(` ${issue.message}`);\n });\n logger.newLine();\n }\n\n if (warnings.length > 0) {\n logger.warning(`⚠ Found ${warnings.length} warning(s):`);\n logger.newLine();\n warnings.forEach((issue) => {\n logger.log(` ${issue.file}`);\n logger.log(` ${issue.message}`);\n });\n logger.newLine();\n }\n\n if (errors.length > 0) {\n logger.error(\"Validation failed. Please fix the errors above.\");\n process.exit(1);\n } else {\n logger.warning(\n \"Validation passed with warnings. Consider addressing them.\"\n );\n }\n }\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject, getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const manifestPath = path.join(process.cwd(), \"manifest.ts\");\n if (fs.existsSync(manifestPath)) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n const buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: \"pipe\",\n shell: true,\n });\n\n let hasError = false;\n\n proc.stderr.on(\"data\", (data) => {\n const message = data.toString();\n // Don't treat warnings as errors\n if (\n message.includes(\"error\") ||\n message.includes(\"Error\") ||\n message.includes(\"ERROR\")\n ) {\n hasError = true;\n }\n });\n\n proc.on(\"close\", (code) => {\n resolve(code === 0 && !hasError);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject, getThemesDir } from \"../utils/file-helpers\";\n\ninterface PackageOptions {\n theme?: string;\n output?: string;\n name?: string;\n minify?: boolean;\n skipBuild?: boolean;\n}\n\nexport async function packageCommand(options: PackageOptions): Promise<void> {\n logger.header(\"Package Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to package\n if (options.theme) {\n themeName = options.theme;\n themePath = path.join(getThemesDir(), themeName);\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const manifestPath = path.join(process.cwd(), \"manifest.ts\");\n if (fs.existsSync(manifestPath)) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Packaging current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n // Read version from package.json\n const packageJsonPath = path.join(themePath, \"package.json\");\n let version = \"1.0.0\";\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = await fs.readJson(packageJsonPath);\n version = packageJson.version || \"1.0.0\";\n }\n\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n logger.info(`Version: ${version}`);\n logger.newLine();\n\n // Step 1: Build/compile theme (unless skipped)\n const compiledThemePath = path.join(\n process.cwd(),\n \"apps\",\n \"api-server\",\n \"compiled-themes\",\n `${themeName}@${version}`\n );\n\n if (!options.skipBuild) {\n logger.section(\"Step 1: Compile Theme\");\n logger.startSpinner(\"Compiling theme with esbuild...\");\n\n const compileArgs = [\"tsx\", \"scripts/compile-theme.ts\", themeName];\n if (options.minify) {\n compileArgs.push(\"--minify\");\n }\n\n const compileSuccess = await runCommand(\n compileArgs[0],\n compileArgs.slice(1)\n );\n\n if (!compileSuccess) {\n logger.stopSpinner(false, \"Compilation failed\");\n logger.error(\"Fix compilation errors before packaging.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Theme compiled\");\n } else {\n logger.info(\"Skipping build (--skip-build flag)\");\n }\n\n // Check if compiled theme exists\n if (!fs.existsSync(compiledThemePath)) {\n logger.error(`Compiled theme not found at: ${compiledThemePath}`);\n logger.info(\"Run without --skip-build to compile first.\");\n process.exit(1);\n }\n\n // Step 2: Package compiled theme\n logger.newLine();\n logger.section(\"Step 2: Create Package\");\n\n // Determine output file name and path\n const packageName = options.name || `${themeName}-${version}`;\n const outputDir = options.output || path.join(process.cwd(), \"dist\");\n const outputPath = path.join(outputDir, `${packageName}.zip`);\n\n // Ensure output directory exists\n await fs.ensureDir(outputDir);\n\n // Create zip archive\n logger.startSpinner(\"Creating zip archive...\");\n\n try {\n await createZipArchive(compiledThemePath, outputPath);\n\n logger.stopSpinner(true, \"Package created\");\n\n // Get file size\n const stats = await fs.stat(outputPath);\n const sizeMB = (stats.size / 1024 / 1024).toFixed(2);\n\n // Show package info\n logger.newLine();\n logger.success(\"✓ Theme packaged successfully!\");\n logger.newLine();\n logger.info(`Package: ${packageName}.zip`);\n logger.log(`Size: ${sizeMB} MB`);\n logger.log(`Location: ${path.relative(process.cwd(), outputPath)}`);\n\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` onex deploy --package ${path.relative(process.cwd(), outputPath)}`\n );\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create package\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(command: string, args: string[]): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd: process.cwd(),\n stdio: \"pipe\",\n shell: true,\n });\n\n let hasError = false;\n\n proc.stderr.on(\"data\", (data) => {\n const message = data.toString();\n if (\n message.includes(\"error\") ||\n message.includes(\"Error\") ||\n message.includes(\"ERROR\")\n ) {\n hasError = true;\n }\n });\n\n proc.on(\"close\", (code) => {\n resolve(code === 0 && !hasError);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n\n/**\n * Create a zip archive of the compiled theme\n */\nasync function createZipArchive(\n compiledThemePath: string,\n outputPath: string\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", {\n zlib: { level: 9 }, // Maximum compression\n });\n\n output.on(\"close\", () => {\n resolve();\n });\n\n archive.on(\"error\", (err) => {\n reject(err);\n });\n\n archive.pipe(output);\n\n // Add all files from the compiled theme directory\n // This includes: bundle.js, chunks/, assets/, manifest.json, bundle-analysis.json\n archive.directory(compiledThemePath, false);\n\n archive.finalize();\n });\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport FormData from \"form-data\";\nimport fetch from \"node-fetch\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject } from \"../utils/file-helpers\";\n\ninterface DeployOptions {\n theme?: string;\n package?: string;\n apiUrl?: string;\n apiKey?: string;\n environment?: \"production\" | \"staging\" | \"development\";\n}\n\nexport async function deployCommand(options: DeployOptions): Promise<void> {\n logger.header(\"Deploy Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Determine package file to upload\n let packagePath: string;\n\n if (options.package) {\n // Use specified package file\n packagePath = path.resolve(options.package);\n } else if (options.theme) {\n // Look for package in dist/\n const distDir = path.join(process.cwd(), \"dist\");\n\n if (!fs.existsSync(distDir)) {\n logger.error(\"No dist/ directory found. Run 'onex package' first.\");\n process.exit(1);\n }\n\n const files = fs.readdirSync(distDir);\n const packageFiles = files.filter(\n (f) => f.startsWith(options.theme!) && f.endsWith(\".zip\")\n );\n\n if (packageFiles.length === 0) {\n logger.error(`No package found for theme \"${options.theme}\".`);\n logger.info(\"Run: onex package --theme \" + options.theme);\n process.exit(1);\n }\n\n // Use most recent package\n packageFiles.sort().reverse();\n packagePath = path.join(distDir, packageFiles[0]);\n } else {\n logger.error(\"Either --package or --theme must be specified.\");\n logger.info(\"Examples:\");\n logger.log(\" onex deploy --package dist/tinan-1.0.0.zip\");\n logger.log(\" onex deploy --theme tinan\");\n process.exit(1);\n }\n\n // Verify package exists\n if (!fs.existsSync(packagePath)) {\n logger.error(`Package not found: ${packagePath}`);\n process.exit(1);\n }\n\n // Get package info\n const stats = await fs.stat(packagePath);\n const sizeMB = (stats.size / 1024 / 1024).toFixed(2);\n const fileName = path.basename(packagePath);\n\n logger.newLine();\n logger.info(`Package: ${fileName}`);\n logger.log(`Size: ${sizeMB} MB`);\n logger.log(`Path: ${path.relative(process.cwd(), packagePath)}`);\n logger.newLine();\n\n // Determine API URL\n const apiUrl =\n options.apiUrl || process.env.ONEX_API_URL || \"http://localhost:3001\";\n\n const uploadEndpoint = `${apiUrl}/api/themes/upload`;\n\n logger.section(\"Uploading to API Server\");\n logger.info(`Endpoint: ${uploadEndpoint}`);\n logger.newLine();\n\n // Upload package\n logger.startSpinner(\"Uploading theme package...\");\n\n try {\n const formData = new FormData();\n formData.append(\"theme\", fs.createReadStream(packagePath), {\n filename: fileName,\n contentType: \"application/zip\",\n });\n\n // Add metadata\n if (options.apiKey) {\n formData.append(\"apiKey\", options.apiKey);\n }\n if (options.environment) {\n formData.append(\"environment\", options.environment);\n }\n\n const response = await fetch(uploadEndpoint, {\n method: \"POST\",\n body: formData,\n headers: formData.getHeaders(),\n });\n\n const result = (await response.json()) as {\n error?: string;\n message?: string;\n packageId?: string;\n themeId?: string;\n version?: string;\n url?: string;\n };\n\n if (!response.ok) {\n logger.stopSpinner(false, \"Upload failed\");\n logger.error(\n `Server returned ${response.status}: ${response.statusText}`\n );\n if (result.error) {\n logger.log(`Error: ${result.error}`);\n }\n process.exit(1);\n }\n\n logger.stopSpinner(true, \"Upload complete\");\n\n // Show deployment info\n logger.newLine();\n logger.success(\"✓ Theme deployed successfully!\");\n logger.newLine();\n\n if (result.themeId) {\n logger.info(`Theme ID: ${result.themeId}`);\n }\n if (result.version) {\n logger.info(`Version: ${result.version}`);\n }\n if (result.url) {\n logger.info(`Preview URL: ${result.url}`);\n }\n\n logger.newLine();\n logger.log(\"Theme is now available on the API server!\");\n } catch (error) {\n logger.stopSpinner(false, \"Upload failed\");\n logger.error(\n `Failed to upload: ${error instanceof Error ? error.message : String(error)}`\n );\n logger.newLine();\n logger.info(\"Make sure the API server is running:\");\n logger.log(\" cd apps/api-server && pnpm dev\");\n process.exit(1);\n }\n}\n","import { S3Client, PutObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport os from \"os\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\n/**\n * Find compiled theme directory\n */\nasync function findCompiledThemeDir(\n themeId: string,\n version: string\n): Promise<string | null> {\n const searchPaths = [\n path.resolve(process.cwd(), \"dist\"),\n path.resolve(\n process.cwd(),\n `../../apps/api-server/compiled-themes/${themeId}@${version}`\n ),\n path.resolve(\n process.cwd(),\n `../api-server/compiled-themes/${themeId}@${version}`\n ),\n ];\n\n for (const dir of searchPaths) {\n if (await fs.pathExists(dir)) {\n const manifestPath = path.join(dir, \"manifest.json\");\n if (await fs.pathExists(manifestPath)) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Read theme manifest\n */\nasync function readManifest(): Promise<ThemeManifest> {\n const manifestTsPath = path.resolve(process.cwd(), \"manifest.ts\");\n if (await fs.pathExists(manifestTsPath)) {\n try {\n const module = await import(manifestTsPath);\n return module.default || module;\n } catch (error) {\n logger.warning(\"Failed to import manifest.ts, trying package.json\");\n }\n }\n\n const packageJsonPath = path.resolve(process.cwd(), \"package.json\");\n if (await fs.pathExists(packageJsonPath)) {\n const pkg = await fs.readJson(packageJsonPath);\n return {\n themeId: pkg.name?.replace(\"@onex-themes/\", \"\") || \"unknown\",\n version: pkg.version || \"1.0.0\",\n };\n }\n\n throw new Error(\n \"No manifest.ts or package.json found. Are you in a theme directory?\"\n );\n}\n\n/**\n * Create a zip archive of a directory\n */\nasync function createZipFromDir(\n sourceDir: string,\n outputPath: string,\n excludePatterns: string[] = []\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", { zlib: { level: 6 } });\n\n output.on(\"close\", () => resolve());\n archive.on(\"error\", (err: Error) => reject(err));\n archive.pipe(output);\n\n archive.glob(\"**/*\", {\n cwd: sourceDir,\n dot: true,\n ignore: excludePatterns,\n });\n\n archive.finalize();\n });\n}\n\n/**\n * Find the theme source directory\n */\nasync function findSourceDir(\n themeId: string,\n explicitDir?: string\n): Promise<string | null> {\n if (explicitDir) {\n if (await fs.pathExists(explicitDir)) return explicitDir;\n return null;\n }\n\n const searchPaths = [\n process.cwd(),\n path.resolve(process.cwd(), `../../themes/${themeId}`),\n path.resolve(process.cwd(), `../themes/${themeId}`),\n ];\n\n const markers = [\"theme.config.ts\", \"bundle-entry.ts\"];\n\n for (const dir of searchPaths) {\n for (const marker of markers) {\n if (await fs.pathExists(path.join(dir, marker))) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Update latest.json pointer\n */\nasync function updateLatestPointer(\n s3Client: S3Client,\n bucket: string,\n themeId: string,\n version: string\n): Promise<void> {\n const latestData = {\n version,\n uploadedAt: new Date().toISOString(),\n };\n\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n Body: JSON.stringify(latestData, null, 2),\n ContentType: \"application/json\",\n })\n );\n}\n\n/**\n * Upload theme to S3 as zip files\n *\n * Creates bundle.zip (compiled output) and source.zip (theme source code),\n * then uploads both to S3. Much faster than uploading 100+ individual files.\n */\nexport async function uploadCommand(options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3\");\n\n const spinner = ora(\"Preparing theme upload...\").start();\n\n try {\n // 1. Determine themeId and version\n let themeId: string;\n let version: string;\n\n if (options.theme) {\n themeId = options.theme;\n version = options.version || \"1.0.0\";\n } else {\n const manifest = await readManifest();\n themeId = manifest.themeId;\n version = options.version || manifest.version || \"1.0.0\";\n }\n\n spinner.text = `Found theme: ${themeId}@${version}`;\n\n // 2. Determine bucket and initialize S3 client\n const bucket = options.bucket || getBucketName(options.environment);\n const s3Client = getS3Client();\n\n // 3. Find compiled theme directory\n const compiledDir = await findCompiledThemeDir(themeId, version);\n if (!compiledDir) {\n spinner.fail(\n chalk.red(\n `Compiled theme not found for ${themeId}@${version}. Run 'onex build' first.`\n )\n );\n logger.info(\n chalk.gray(\n `Expected locations:\\n` +\n ` - ./dist/\\n` +\n ` - ../../apps/api-server/compiled-themes/${themeId}@${version}/`\n )\n );\n process.exit(1);\n }\n\n spinner.succeed(`Found compiled theme at: ${compiledDir}`);\n\n // 4. Create bundle.zip\n spinner.start(\"Creating bundle.zip...\");\n const tmpDir = os.tmpdir();\n const bundleZipPath = path.join(tmpDir, `${themeId}-${version}-bundle.zip`);\n await createZipFromDir(compiledDir, bundleZipPath);\n const bundleZipBuffer = await fs.readFile(bundleZipPath);\n const bundleSizeMB = (bundleZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created bundle.zip (${bundleSizeMB} MB)`);\n\n // 5. Dry run mode — show info and exit\n if (options.dryRun) {\n spinner.info(chalk.yellow(\"Dry run mode — no files will be uploaded\"));\n console.log();\n console.log(chalk.gray(` bundle.zip: ${bundleSizeMB} MB`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/bundle.zip`\n )\n );\n\n if (!options.skipSource) {\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n if (sourceDir) {\n console.log(chalk.gray(` source dir: ${sourceDir}`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/source.zip`\n )\n );\n } else {\n console.log(\n chalk.yellow(\" source dir: not found (source.zip will be skipped)\")\n );\n }\n }\n\n console.log();\n await fs.remove(bundleZipPath);\n return;\n }\n\n // 6. Upload bundle.zip\n spinner.start(\"Uploading bundle.zip to S3...\");\n const bundleS3Key = `themes/${themeId}/${version}/bundle.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: bundleS3Key,\n Body: bundleZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded bundle.zip ${chalk.gray(`→ s3://${bucket}/${bundleS3Key}`)}`\n );\n await fs.remove(bundleZipPath);\n\n // 7. Create + upload source.zip (unless --skip-source)\n let sourceUploaded = false;\n if (!options.skipSource) {\n spinner.start(\"Looking for source directory...\");\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n\n if (sourceDir) {\n spinner.succeed(`Found source at: ${sourceDir}`);\n spinner.start(\"Creating source.zip...\");\n\n const sourceZipPath = path.join(\n tmpDir,\n `${themeId}-${version}-source.zip`\n );\n await createZipFromDir(sourceDir, sourceZipPath, [\n \"node_modules/**\",\n \"dist/**\",\n \".git/**\",\n \"*.zip\",\n \".next/**\",\n \".turbo/**\",\n ]);\n\n const sourceZipBuffer = await fs.readFile(sourceZipPath);\n const sourceSizeMB = (sourceZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created source.zip (${sourceSizeMB} MB)`);\n\n spinner.start(\"Uploading source.zip to S3...\");\n const sourceS3Key = `themes/${themeId}/${version}/source.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: sourceS3Key,\n Body: sourceZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded source.zip ${chalk.gray(`→ s3://${bucket}/${sourceS3Key}`)}`\n );\n\n await fs.remove(sourceZipPath);\n sourceUploaded = true;\n } else {\n spinner.warn(\n chalk.yellow(\"Source directory not found — skipping source.zip\")\n );\n }\n }\n\n // 8. Update latest.json pointer\n spinner.start(\"Updating latest.json pointer...\");\n await updateLatestPointer(s3Client, bucket, themeId, version);\n spinner.succeed(\"Updated latest.json pointer\");\n\n // 9. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme uploaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${version}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(\n chalk.cyan(\" Files: \") +\n chalk.white(\n `bundle.zip${sourceUploaded ? \" + source.zip\" : \"\"}`\n )\n );\n console.log(\n chalk.cyan(\" Path: \") +\n chalk.gray(`s3://${bucket}/themes/${themeId}/${version}/`)\n );\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Upload failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n output?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\n/**\n * Convert stream to string\n */\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\n/**\n * Convert stream to buffer\n */\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n\n const body = await streamToString(response.Body as Readable);\n const data = JSON.parse(body);\n return data.version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Create compatibility files for module resolution\n *\n * Creates sections-registry.js that re-exports from the bundle entry file\n * and a stable bundle-entry.js alias if the entry is content-hashed.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n // If entry is content-hashed (e.g., bundle-entry-2d936738.js),\n // create a stable bundle-entry.js copy for import compatibility\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n // Also copy source map if it exists\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n // Create sections-registry.js pointing to stable bundle-entry.js\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n // Create package.json with \"type\": \"module\" for ESM support\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when download fails\n */\nfunction showDownloadFailureHelp(themeId: string, bucket: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(chalk.gray(\" 1. Theme not uploaded to S3 yet\"));\n console.log(chalk.gray(\" 2. AWS credentials not configured correctly\"));\n console.log(chalk.gray(\" 3. Bucket name or region is incorrect\"));\n console.log(chalk.gray(\" 4. bundle.zip is missing or corrupted\"));\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Compile and upload the theme:\"));\n console.log(chalk.gray(` cd themes/${themeId}`));\n console.log(chalk.gray(\" pnpm build\"));\n console.log(chalk.gray(\" onex upload\"));\n console.log();\n console.log(chalk.white(\"2. Verify AWS credentials are set:\"));\n console.log(\n chalk.gray(\" - Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\")\n );\n console.log(chalk.gray(\" - Or use AWS_PROFILE=your-profile\"));\n console.log(chalk.gray(\" - Set AWS_REGION (e.g., ap-southeast-1)\"));\n console.log();\n console.log(chalk.white(\"3. Check bucket configuration:\"));\n console.log(chalk.gray(` Current bucket: ${bucket}`));\n console.log(\n chalk.gray(\" Set BUCKET_NAME environment variable if different\")\n );\n console.log();\n console.log(chalk.white(\"4. Verify theme exists in S3:\"));\n console.log(\n chalk.gray(\n ` aws s3 ls s3://${bucket}/themes/${themeId}/`\n )\n );\n console.log();\n}\n\n/**\n * Download theme from S3\n *\n * Downloads bundle.zip (single S3 request) and extracts all files locally.\n * Much faster than downloading 100+ individual files.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme from S3\");\n\n const spinner = ora(\"Initializing download...\").start();\n\n try {\n // 1. Get theme ID and version\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const version = options.version || process.env.THEME_VERSION || \"latest\";\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Downloading ${themeId}@${version} from ${bucket}...`;\n\n // 2. Initialize S3 client\n const s3Client = getS3Client();\n\n // 3. Resolve version if \"latest\"\n let resolvedVersion = version;\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n resolvedVersion = await resolveLatestVersion(s3Client, bucket, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n }\n\n // 4. Download bundle.zip\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const s3Key = `themes/${themeId}/${resolvedVersion}/bundle.zip`;\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n\n const zipBuffer = await streamToBuffer(response.Body as Readable);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n // 5. Extract to output directory\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n // 6. Create compatibility files\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n // 7. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") +\n chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") +\n chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId || process.env.NEXT_PUBLIC_THEME_ID || \"unknown\";\n const bucket = options.bucket || getBucketName(options.environment);\n\n showDownloadFailureHelp(themeId, bucket);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport { spawn } from \"child_process\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n install?: boolean;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3 via latest.json pointer\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n const body = await streamToString(response.Body as Readable);\n return JSON.parse(body).version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Clone theme source code from S3\n *\n * Downloads source.zip and extracts it to a local directory.\n * Intended for theme developers who want to fork or customize a theme.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || path.resolve(process.cwd(), themeName);\n const s3Client = getS3Client();\n\n // Check if output directory already exists\n if (await fs.pathExists(outputDir)) {\n spinner.fail(\n chalk.red(`Directory already exists: ${outputDir}`)\n );\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n // Resolve version\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(s3Client, bucket, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n // Download source.zip\n spinner.start(\n `Downloading source.zip for ${themeName}@${version}...`\n );\n const s3Key = `themes/${themeName}/${version}/source.zip`;\n\n let zipBuffer: Buffer;\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n zipBuffer = await streamToBuffer(response.Body as Readable);\n } catch (error: any) {\n spinner.fail(chalk.red(`Source not found: s3://${bucket}/${s3Key}`));\n console.log();\n console.log(\n chalk.yellow(\"The theme source may not have been uploaded yet.\")\n );\n console.log(\n chalk.gray(\n `Upload source with: onex upload --theme ${themeName}`\n )\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n // Extract to output directory\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n // Optionally install dependencies\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n // Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(\n chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`)\n );\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onex build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","#!/usr/bin/env node\n\nimport path from \"path\";\nimport os from \"os\";\nimport dotenv from \"dotenv\";\nimport { getProjectRoot } from \"./utils/file-helpers\";\n\n// Load .env files: project root first, then global fallback (~/.onex/.env)\nconst projectRoot = getProjectRoot();\ndotenv.config({ path: path.join(projectRoot, \".env.local\"), quiet: true } as any);\ndotenv.config({ path: path.join(projectRoot, \".env\"), quiet: true } as any);\ndotenv.config({ path: path.join(os.homedir(), \".onex\", \".env\"), quiet: true } as any);\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { initCommand } from \"./commands/init\";\nimport { createSectionCommand } from \"./commands/create-section\";\nimport { createBlockCommand } from \"./commands/create-block\";\nimport { createComponentCommand } from \"./commands/create-component\";\nimport { listCommand } from \"./commands/list\";\nimport { validateCommand } from \"./commands/validate\";\nimport { buildCommand } from \"./commands/build\";\nimport { packageCommand } from \"./commands/package\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { uploadCommand } from \"./commands/upload\";\nimport { downloadCommand } from \"./commands/download\";\nimport { cloneCommand } from \"./commands/clone\";\n\nconst program = new Command();\n\nprogram\n .name(\"onex\")\n .description(\"CLI tool for OneX theme development\")\n .version(\"0.1.0\");\n\n// Init command\nprogram\n .command(\"init\")\n .description(\"Create a new OneX theme project\")\n .argument(\"[project-name]\", \"Name of the project\")\n .option(\n \"-t, --template <template>\",\n \"Template to use (default, minimal)\",\n \"default\"\n )\n .option(\"--no-install\", \"Skip installing dependencies\")\n .option(\"--git\", \"Initialize git repository\")\n .option(\"-y, --yes\", \"Skip prompts and use defaults\")\n .action(initCommand);\n\n// Create section command\nprogram\n .command(\"create:section\")\n .alias(\"cs\")\n .description(\"Create a new section\")\n .argument(\"<name>\", \"Name of the section (e.g., hero, features)\")\n .option(\"-t, --theme <theme>\", \"Theme to create section in\")\n .option(\n \"-c, --category <category>\",\n \"Section category (headers, content, footers)\"\n )\n .option(\n \"--template <template>\",\n \"Initial template variant (default, minimal)\"\n )\n .action(createSectionCommand);\n\n// Create block command\nprogram\n .command(\"create:block\")\n .alias(\"cb\")\n .description(\"Create a new block\")\n .argument(\n \"<name>\",\n \"Name of the block (e.g., product-card, testimonial-item)\"\n )\n .option(\"-t, --theme <theme>\", \"Theme to create block in (optional)\")\n .action(createBlockCommand);\n\n// Create component command\nprogram\n .command(\"create:component\")\n .alias(\"cc\")\n .description(\"Create a new component\")\n .argument(\"<name>\", \"Name of the component (e.g., button, badge)\")\n .option(\"-t, --type <type>\", \"Component type (ui, layout, form)\")\n .action(createComponentCommand);\n\n// List command\nprogram\n .command(\"list\")\n .description(\"List available themes, sections, blocks, and components\")\n .option(\"-s, --sections\", \"List sections only\")\n .option(\"-b, --blocks\", \"List blocks only\")\n .option(\"-c, --components\", \"List components only\")\n .option(\"-t, --theme <theme>\", \"Filter by theme\")\n .action(listCommand);\n\n// Validate command\nprogram\n .command(\"validate\")\n .description(\"Validate theme structure and files\")\n .option(\"-t, --theme <theme>\", \"Theme to validate\")\n .option(\"-f, --fix\", \"Auto-fix issues if possible (not implemented yet)\")\n .action(validateCommand);\n\n// Build command\nprogram\n .command(\"build\")\n .description(\"Build theme for production\")\n .option(\"-t, --theme <theme>\", \"Theme to build\")\n .option(\"-p, --production\", \"Production build with optimizations\")\n .option(\"-w, --watch\", \"Watch mode for development\")\n .action(buildCommand);\n\n// Package command\nprogram\n .command(\"package\")\n .description(\"Compile and package theme as distributable zip file\")\n .option(\"-t, --theme <theme>\", \"Theme to package\")\n .option(\"-o, --output <dir>\", \"Output directory for package\")\n .option(\"-n, --name <name>\", \"Custom package name\")\n .option(\"-m, --minify\", \"Minify compiled output\")\n .option(\"--skip-build\", \"Skip compilation step (use existing compiled theme)\")\n .action(packageCommand);\n\n// Deploy command\nprogram\n .command(\"deploy\")\n .description(\"Upload theme package to API server\")\n .option(\"-t, --theme <theme>\", \"Theme to deploy (finds latest package)\")\n .option(\"-p, --package <file>\", \"Specific package file to upload\")\n .option(\"--api-url <url>\", \"API server URL (default: http://localhost:3001)\")\n .option(\"-k, --api-key <key>\", \"API key for authentication\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (production, staging, development)\"\n )\n .action(deployCommand);\n\n// Upload command (S3)\nprogram\n .command(\"upload\")\n .description(\"Upload compiled theme to S3 bucket\")\n .option(\"-t, --theme <theme>\", \"Theme to upload\")\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\"-v, --version <version>\", \"Theme version\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"--dry-run\", \"Show what would be uploaded without uploading\")\n .option(\"--skip-source\", \"Skip uploading source.zip\")\n .option(\"--source-dir <dir>\", \"Source directory path\")\n .action(uploadCommand);\n\n// Download command (S3)\nprogram\n .command(\"download\")\n .description(\"Download theme from S3 bucket\")\n .option(\"-t, --theme-id <id>\", \"Theme ID to download\")\n .option(\n \"-v, --version <version>\",\n \"Theme version (default: latest)\",\n \"latest\"\n )\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"-o, --output <dir>\", \"Output directory\", \"./active-theme\")\n .action(downloadCommand);\n\n// Clone command (S3 source)\nprogram\n .command(\"clone\")\n .description(\"Clone theme source code from S3\")\n .argument(\"<theme-name>\", \"Theme to clone\")\n .option(\n \"-v, --version <version>\",\n \"Theme version (default: latest)\",\n \"latest\"\n )\n .option(\"-o, --output <dir>\", \"Output directory\")\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"--no-install\", \"Skip running pnpm install after clone\")\n .action(cloneCommand);\n\n// Error handling\nprogram.configureOutput({\n writeErr: (str) => process.stderr.write(chalk.red(str)),\n});\n\nprogram.parse();\n"]}
1
+ {"version":3,"sources":["../src/utils/logger.ts","../src/utils/compile-theme.ts","../src/utils/file-helpers.ts","../src/commands/init.ts","../src/utils/validators.ts","../src/commands/create-section.ts","../src/commands/create-block.ts","../src/commands/create-component.ts","../src/commands/list.ts","../src/commands/validate.ts","../src/commands/build.ts","../src/commands/package.ts","../src/commands/deploy.ts","../src/commands/upload.ts","../src/commands/download.ts","../src/commands/clone.ts","../src/commands/dev.ts","../src/utils/dev-server.ts","../src/cli.ts"],"names":["chalk","ora","generateManifest","path","fs","build","glob","e","hash","crypto","hashedName","hashedMapName","esbuild","context","ejs","execSync","inquirer","answers","compileStandaloneTheme","spawn","runCommand","archiver","FormData","fetch","S3Client","PutObjectCommand","os","getS3Client","getBucketName","GetObjectCommand","AdmZip","streamToString","streamToBuffer","resolveLatestVersion","http","WebSocketServer","WebSocket","chokidar","fsNode","dotenv","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import chalk from \"chalk\";\nimport ora, { Ora } from \"ora\";\n\nexport class Logger {\n private spinner: Ora | null = null;\n\n success(message: string): void {\n console.log(chalk.green(\"✓\"), message);\n }\n\n error(message: string): void {\n console.log(chalk.red(\"✗\"), message);\n }\n\n warning(message: string): void {\n console.log(chalk.yellow(\"⚠\"), message);\n }\n\n info(message: string): void {\n console.log(chalk.blue(\"ℹ\"), message);\n }\n\n log(message: string): void {\n console.log(message);\n }\n\n startSpinner(message: string): void {\n this.spinner = ora(message).start();\n }\n\n stopSpinner(success: boolean = true, message?: string): void {\n if (!this.spinner) return;\n\n if (success) {\n this.spinner.succeed(message);\n } else {\n this.spinner.fail(message);\n }\n this.spinner = null;\n }\n\n updateSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.text = message;\n }\n }\n\n newLine(): void {\n console.log();\n }\n\n header(message: string): void {\n console.log();\n console.log(chalk.bold.cyan(message));\n console.log(chalk.cyan(\"=\".repeat(message.length)));\n console.log();\n }\n\n section(message: string): void {\n console.log();\n console.log(chalk.bold(message));\n }\n}\n\nexport const logger = new Logger();\n","/**\n * Standalone Theme Compiler\n *\n * Compiles standalone theme source code to ESM bundles using esbuild.\n * Adapted from scripts/compile-theme.ts for use in the CLI.\n *\n * Key differences from the monorepo version:\n * - Core global plugin reads from node_modules/@onexapis/core/dist/ (not packages/core/dist/)\n * - Process shim is inlined (no external file dependency)\n * - Output goes to ./dist/ in the theme directory\n */\n\nimport * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport crypto from \"crypto\";\nimport { glob } from \"glob\";\nimport { logger } from \"./logger\";\n\n/**\n * Inline process shim for browser environments.\n * Equivalent to scripts/process-shim.js but embedded as a string.\n */\nconst PROCESS_SHIM = `\nif (typeof process === \"undefined\") {\n globalThis.process = {\n env: {},\n browser: true,\n };\n}\n`;\n\n/**\n * Plugin to externalize React as window globals.\n * React/ReactDOM are shared via globalThis to prevent duplication.\n */\nconst reactGlobalPlugin: Plugin = {\n name: \"react-global\",\n setup(build) {\n build.onResolve({ filter: /^react$/ }, () => ({\n path: \"react-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react-dom$/ }, () => ({\n path: \"react-dom-external\",\n namespace: \"react-global\",\n }));\n\n build.onResolve({ filter: /^react\\/jsx-runtime$/ }, () => ({\n path: \"react-jsx-runtime-external\",\n namespace: \"react-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"react-global\" }, (args) => {\n if (args.path === \"react-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT__) {\n throw new Error('[Theme Bundle] React not initialized. Ensure globalThis.__ONEX_REACT__ is set before loading theme.');\n}\n\nconst React = globalThis.__ONEX_REACT__;\nexport default React;\n\nexport const {\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useImperativeHandle,\n useLayoutEffect,\n useDebugValue,\n useDeferredValue,\n useTransition,\n useId,\n useSyncExternalStore,\n useInsertionEffect,\n createContext,\n forwardRef,\n lazy,\n memo,\n startTransition,\n createElement,\n cloneElement,\n isValidElement,\n Children,\n Fragment,\n Profiler,\n StrictMode,\n Suspense,\n Component,\n PureComponent,\n useActionState,\n use,\n} = React;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-dom-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_REACT_DOM__) {\n throw new Error('[Theme Bundle] ReactDOM not initialized. Ensure globalThis.__ONEX_REACT_DOM__ is set before loading theme.');\n}\n\nconst ReactDOM = globalThis.__ONEX_REACT_DOM__;\nexport default ReactDOM;\n\nexport const {\n createRoot,\n hydrateRoot,\n flushSync,\n createPortal,\n findDOMNode,\n render,\n hydrate,\n unmountComponentAtNode,\n} = ReactDOM;\n `.trim(),\n loader: \"js\",\n };\n }\n\n if (args.path === \"react-jsx-runtime-external\") {\n return {\n contents: `\nif (!globalThis.__ONEX_JSX_RUNTIME__) {\n throw new Error('[Theme Bundle] React JSX runtime not initialized. Ensure globalThis.__ONEX_JSX_RUNTIME__ is set before loading theme.');\n}\nconst _jsxRuntime = globalThis.__ONEX_JSX_RUNTIME__;\nexport const jsx = _jsxRuntime.jsx;\nexport const jsxs = _jsxRuntime.jsxs;\nexport const Fragment = _jsxRuntime.Fragment;\n `.trim(),\n loader: \"js\",\n };\n }\n\n return null;\n });\n },\n};\n\n/**\n * Resolve a file inside node_modules, searching up the directory tree.\n * Handles monorepo hoisting where deps are in a parent node_modules.\n */\nasync function resolveNodeModulesFile(\n startDir: string,\n relativePath: string\n): Promise<string | null> {\n let dir = startDir;\n while (true) {\n const candidate = path.join(dir, \"node_modules\", relativePath);\n try {\n await fs.access(candidate);\n return candidate;\n } catch {\n const parent = path.dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n }\n return null;\n}\n\n/**\n * Plugin to externalize @onexapis/core as window global.\n * Reads exports from node_modules/@onexapis/core/dist/, searching up the tree.\n */\nfunction createCoreGlobalPlugin(themePath: string): Plugin {\n const exportsBySubpath: Record<string, string[]> = {};\n\n return {\n name: \"core-global\",\n setup(build) {\n build.onResolve({ filter: /^@onexapis\\/core(\\/.*)?$/ }, (args) => ({\n path: args.path,\n namespace: \"core-global\",\n }));\n\n build.onLoad({ filter: /.*/, namespace: \"core-global\" }, async (args) => {\n const match = args.path.match(/^@onexapis\\/core(\\/(.+))?$/);\n const subpath = match?.[2] || \"\";\n const moduleAccess = subpath ? `['${subpath}']` : \"\";\n\n let namedExports: string[] = [];\n const cacheKey = subpath || \"__root__\";\n if (exportsBySubpath[cacheKey]) {\n namedExports = exportsBySubpath[cacheKey];\n } else {\n const distFileName = subpath ? `${subpath}.mjs` : \"index.mjs\";\n // Search node_modules up the directory tree (handles monorepo hoisting)\n const distPath = await resolveNodeModulesFile(\n themePath,\n path.join(\"@onexapis\", \"core\", \"dist\", distFileName)\n );\n try {\n if (!distPath) throw new Error(\"not found\");\n const distContent = await fs.readFile(distPath, \"utf-8\");\n const exportMatches = distContent.matchAll(/export\\s*\\{([^}]+)\\}/g);\n for (const m of exportMatches) {\n const names = m[1]\n .split(\",\")\n .map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return (parts[1] || parts[0]).trim();\n })\n .filter((n) => n.length > 0);\n namedExports.push(...names);\n }\n namedExports = [...new Set(namedExports)];\n } catch {\n // dist file not found - fall back to default-only export\n }\n exportsBySubpath[cacheKey] = namedExports;\n }\n\n const namedExportLines =\n namedExports.length > 0\n ? `\\nexport const {\\n ${namedExports.join(\",\\n \")}\\n} = _module;\\n`\n : \"\";\n\n return {\n contents: `\nif (!globalThis.__ONEX_CORE__) {\n throw new Error('[Theme Bundle] @onexapis/core not initialized. Ensure globalThis.__ONEX_CORE__ is set before loading theme.');\n}\n\nconst _module = globalThis.__ONEX_CORE__${moduleAccess};\nif (!_module) {\n const subpath = ${subpath ? `'${subpath}'` : \"null\"};\n const modulePath = subpath ? '/' + subpath : '';\n const moduleKey = subpath ? '[\"' + subpath + '\"]' : '';\n throw new Error('[Theme Bundle] @onexapis/core' + modulePath + ' not available in globalThis.__ONEX_CORE__' + moduleKey);\n}\n\nexport default _module;\n${namedExportLines}\n `.trim(),\n loader: \"js\",\n };\n });\n },\n };\n}\n\n/**\n * Content-hash the bundle entry point for cache busting.\n * Renames bundle-entry.js -> bundle-entry-{hash}.js\n */\nasync function contentHashEntry(outputDir: string): Promise<void> {\n const entryPath = path.join(outputDir, \"bundle-entry.js\");\n const mapPath = path.join(outputDir, \"bundle-entry.js.map\");\n\n // Clean old hashed entry files\n const oldFiles = await glob(\"bundle-entry-*.js*\", { cwd: outputDir });\n for (const f of oldFiles) {\n await fs.unlink(path.join(outputDir, f));\n }\n\n let entryContent: string;\n try {\n entryContent = await fs.readFile(entryPath, \"utf-8\");\n } catch {\n // bundle-entry.js not found, try index.js\n const indexPath = path.join(outputDir, \"index.js\");\n try {\n entryContent = await fs.readFile(indexPath, \"utf-8\");\n } catch {\n logger.warning(\"No entry file found in output, skipping content hash\");\n return;\n }\n // For index.ts entry, rename index.js -> bundle-entry-{hash}.js\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const indexMapPath = path.join(outputDir, \"index.js.map\");\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=index\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(indexPath);\n\n try {\n await fs.access(indexMapPath);\n await fs.rename(indexMapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n return;\n }\n\n const hash = crypto\n .createHash(\"sha256\")\n .update(entryContent)\n .digest(\"hex\")\n .slice(0, 8);\n\n const hashedName = `bundle-entry-${hash}.js`;\n const hashedMapName = `bundle-entry-${hash}.js.map`;\n\n entryContent = entryContent.replace(\n /\\/\\/# sourceMappingURL=bundle-entry\\.js\\.map/,\n `//# sourceMappingURL=${hashedMapName}`\n );\n\n await fs.writeFile(path.join(outputDir, hashedName), entryContent);\n await fs.unlink(entryPath);\n\n try {\n await fs.access(mapPath);\n await fs.rename(mapPath, path.join(outputDir, hashedMapName));\n } catch {\n // No source map\n }\n\n logger.info(`Entry hashed: ${hashedName}`);\n}\n\n/**\n * Generate manifest.json with theme metadata.\n */\nexport async function generateManifest(\n themeName: string,\n themePath: string,\n outputDir: string\n): Promise<void> {\n // Read version and themeId from package.json\n let version = \"1.0.0\";\n let themeId = themeName;\n try {\n const pkgContent = await fs.readFile(\n path.join(themePath, \"package.json\"),\n \"utf-8\"\n );\n const pkg = JSON.parse(pkgContent);\n version = pkg.version || version;\n // Derive themeId from package name: \"@onex-themes/simple\" → \"simple\"\n if (pkg.name) {\n themeId = pkg.name.replace(/^@onex-themes\\//, \"\");\n }\n } catch {\n // Use defaults\n }\n\n const [sectionFiles, blockFiles, schemaFiles] = await Promise.all([\n glob(\"sections/**/index.ts\", { cwd: themePath }),\n glob(\"blocks/**/index.ts\", { cwd: themePath }),\n glob(\"**/*.schema.ts\", { cwd: themePath }),\n ]);\n\n let hasThemeConfig = false;\n try {\n await fs.access(path.join(themePath, \"theme.config.ts\"));\n hasThemeConfig = true;\n } catch {\n // No theme config\n }\n\n const allFiles = await glob(\"**/*\", { cwd: outputDir, nodir: true });\n const jsFiles = allFiles.filter((f) => f.endsWith(\".js\"));\n const cssFiles = allFiles.filter((f) => f.endsWith(\".css\"));\n\n const entryFile =\n jsFiles.find((f) => f.includes(\"bundle-entry\")) || \"bundle-entry.js\";\n\n const manifest = {\n themeId,\n version,\n name: themeId.charAt(0).toUpperCase() + themeId.slice(1),\n compiledAt: new Date().toISOString(),\n format: \"esm\",\n platform: \"browser\",\n target: \"es2020\",\n\n counts: {\n sections: sectionFiles.length,\n blocks: blockFiles.length,\n schemas: schemaFiles.length,\n },\n\n output: {\n entry: entryFile,\n chunks: jsFiles.filter((f) => f !== entryFile && !f.endsWith(\".map\")),\n assets: allFiles.filter((f) =>\n [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\", \".webp\"].some((ext) =>\n f.endsWith(ext)\n )\n ),\n stylesheets: cssFiles,\n },\n\n external: [\"react\", \"react-dom\", \"@onexapis/core\"],\n\n source: {\n sections: sectionFiles,\n blocks: blockFiles,\n schemas: schemaFiles,\n hasThemeConfig,\n },\n };\n\n await fs.writeFile(\n path.join(outputDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n}\n\n/**\n * Compile a standalone theme using esbuild.\n * Produces ESM bundles with React/core externalized to globals.\n *\n * @returns true if build succeeded\n */\nexport async function compileStandaloneTheme(\n themePath: string,\n themeName: string\n): Promise<boolean> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point: bundle-entry.ts preferred, fallback to index.ts\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim to a temp file (esbuild inject requires a file path)\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n chunkNames: \"[name]-[hash]\",\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [reactGlobalPlugin, createCoreGlobalPlugin(themePath)],\n\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"production\"),\n global: \"globalThis\",\n },\n\n minify: true,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n try {\n const result = await esbuild.build(buildOptions);\n\n // Clean up temp shim file\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n // Content-hash the entry point\n await contentHashEntry(outputDir);\n\n // Generate manifest\n await generateManifest(themeName, themePath, outputDir);\n\n // Log bundle analysis\n if (result.metafile) {\n const outputs = result.metafile.outputs;\n let totalSize = 0;\n for (const output of Object.values(outputs)) {\n totalSize += output.bytes;\n }\n const totalKB = (totalSize / 1024).toFixed(2);\n logger.info(`Bundle size: ${totalKB} KB`);\n }\n\n return true;\n } catch (error) {\n // Clean up temp shim file on failure\n try {\n await fs.unlink(shimPath);\n } catch {\n // Ignore\n }\n\n logger.error(`esbuild compilation failed: ${error}`);\n return false;\n }\n}\n\n/**\n * Compile standalone theme in dev mode with incremental rebuilds.\n * Differences from production compileStandaloneTheme:\n * - Uses esbuild.context() for incremental rebuilds\n * - No minification, no content-hash (stable bundle-entry.js filename)\n * - Returns the build context for subsequent rebuilds\n */\nexport async function compileStandaloneThemeDev(\n themePath: string,\n themeName: string\n): Promise<{ context: esbuild.BuildContext; outputDir: string }> {\n const outputDir = path.join(themePath, \"dist\");\n\n // Detect entry point (same as production build)\n const bundleEntry = path.join(themePath, \"bundle-entry.ts\");\n const indexEntry = path.join(themePath, \"index.ts\");\n let entryPoint = indexEntry;\n try {\n await fs.access(bundleEntry);\n entryPoint = bundleEntry;\n } catch {\n // Use index.ts\n }\n\n // Write process shim\n const shimPath = path.join(outputDir, \".process-shim.js\");\n await fs.mkdir(outputDir, { recursive: true });\n await fs.writeFile(shimPath, PROCESS_SHIM);\n\n const buildOptions: esbuild.BuildOptions = {\n entryPoints: [entryPoint],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outdir: outputDir,\n splitting: false,\n banner: {\n js: '\"use client\";',\n },\n\n plugins: [reactGlobalPlugin, createCoreGlobalPlugin(themePath)],\n external: [],\n\n alias: {\n events: \"events/\",\n buffer: \"buffer/\",\n },\n\n inject: [shimPath],\n\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n\n minify: false,\n sourcemap: true,\n logLevel: \"warning\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n\n loader: {\n \".tsx\": \"tsx\",\n \".ts\": \"ts\",\n \".jpg\": \"file\",\n \".jpeg\": \"file\",\n \".png\": \"file\",\n \".gif\": \"file\",\n \".svg\": \"file\",\n \".webp\": \"file\",\n },\n\n assetNames: \"assets/[name]-[hash]\",\n publicPath: \"./\",\n metafile: true,\n };\n\n const context = await esbuild.context(buildOptions);\n\n // Initial build\n await context.rebuild();\n\n // NOTE: Do NOT delete shimPath here — incremental rebuilds need it.\n // It will be cleaned up when context.dispose() is called.\n\n // Generate manifest (no content-hash step for dev)\n await generateManifest(themeName, themePath, outputDir);\n\n return { context, outputDir };\n}\n\n/**\n * Compile the preview runtime (React + @onexapis/core bundled in).\n * One-time compilation on dev server startup.\n * React and core are bundled INTO the output (not externalized) because\n * the preview runtime IS the host that provides these globals.\n */\nexport async function compilePreviewRuntime(\n themePath: string\n): Promise<string> {\n const outputDir = path.join(themePath, \"dist\");\n await fs.mkdir(outputDir, { recursive: true });\n\n const outputPath = path.join(outputDir, \"preview-runtime.js\");\n\n // Resolve the preview-app.tsx source from CLI package\n // In dev: src/preview/preview-app.tsx\n // In dist: preview/preview-app.tsx (copied by tsup config)\n const locations = [\n path.join(__dirname, \"..\", \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"preview\", \"preview-app.tsx\"),\n path.join(__dirname, \"..\", \"..\", \"src\", \"preview\", \"preview-app.tsx\"),\n ];\n\n let previewEntryPath: string | null = null;\n for (const loc of locations) {\n try {\n await fs.access(loc);\n previewEntryPath = loc;\n break;\n } catch {\n // Try next location\n }\n }\n\n if (!previewEntryPath) {\n throw new Error(\n `Preview app source not found. Searched:\\n${locations.join(\"\\n\")}`\n );\n }\n\n // Plugin to stub out server-only packages that leak from @onexapis/core chunks\n const serverStubPlugin: Plugin = {\n name: \"server-stub\",\n setup(build) {\n // Stub server-only marker package\n build.onResolve({ filter: /^server-only$/ }, () => ({\n path: \"server-only\",\n namespace: \"server-stub\",\n }));\n build.onLoad({ filter: /.*/, namespace: \"server-stub\" }, () => ({\n contents: \"// server-only stub for browser\",\n loader: \"js\",\n }));\n\n // Stub Node.js built-ins that leak from server chunks\n const nodeBuiltins = [\n \"fs\", \"fs/promises\", \"path\", \"os\", \"crypto\", \"stream\", \"url\",\n \"http\", \"https\", \"net\", \"tls\", \"child_process\", \"util\", \"events\",\n \"buffer\", \"querystring\", \"zlib\",\n ];\n for (const mod of nodeBuiltins) {\n build.onResolve({ filter: new RegExp(`^${mod.replace(\"/\", \"\\\\/\")}$`) }, () => ({\n path: mod,\n namespace: \"node-stub\",\n }));\n }\n build.onLoad({ filter: /.*/, namespace: \"node-stub\" }, (args) => {\n // Provide minimal stubs with common named exports for node builtins\n const stubs: Record<string, string> = {\n events: \"export class EventEmitter { on(){return this} off(){return this} emit(){return false} addListener(){return this} removeListener(){return this} } export default { EventEmitter };\",\n path: \"export function join(){return ''} export function resolve(){return ''} export function dirname(){return ''} export function basename(){return ''} export function extname(){return ''} export default {};\",\n fs: \"export const promises = {}; export function readFileSync(){return ''} export function existsSync(){return false} export default {};\",\n };\n return {\n contents: stubs[args.path] || \"export default {};\",\n loader: \"js\",\n };\n });\n\n },\n };\n\n await esbuild.build({\n entryPoints: [previewEntryPath],\n bundle: true,\n platform: \"browser\",\n format: \"esm\",\n outfile: outputPath,\n // Bundle React + core INTO the output (NOT externalized)\n external: [],\n plugins: [serverStubPlugin],\n minify: false,\n sourcemap: true,\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: \"react\",\n define: {\n \"process.env.NODE_ENV\": JSON.stringify(\"development\"),\n global: \"globalThis\",\n },\n loader: { \".tsx\": \"tsx\", \".ts\": \"ts\" },\n // Force CJS resolution to avoid sideEffects:false dropping ESM chunk imports\n conditions: [\"require\", \"default\"],\n mainFields: [\"main\"],\n logOverride: {\n \"ignored-bare-import\": \"silent\",\n },\n });\n\n return outputPath;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ejs from \"ejs\";\nimport { execSync } from \"child_process\";\nimport { logger } from \"./logger\";\n\n/**\n * Render a template file with EJS\n */\nexport async function renderTemplate(\n templatePath: string,\n data: Record<string, unknown>\n): Promise<string> {\n const template = await fs.readFile(templatePath, \"utf-8\");\n return ejs.render(template, data);\n}\n\n/**\n * Write a file with directory creation\n */\nexport async function writeFile(\n filePath: string,\n content: string\n): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\n/**\n * Get the templates directory\n * Works in both development and production (bundled) environments\n */\nfunction getTemplatesDir(): string {\n // Try common locations\n const locations = [\n path.join(__dirname, \"../../templates\"), // Development\n path.join(__dirname, \"../templates\"), // Production (dist/)\n path.join(process.cwd(), \"templates\"), // Fallback\n path.join(process.cwd(), \"packages/cli/templates\"), // Monorepo\n ];\n\n for (const location of locations) {\n if (fs.existsSync(location)) {\n return location;\n }\n }\n\n throw new Error(\"Templates directory not found\");\n}\n\n/**\n * Copy template directory\n */\nexport async function copyTemplate(\n templateName: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n // Get template directory from CLI package\n const templatesDir = getTemplatesDir();\n const templateDir = path.join(templatesDir, templateName);\n\n if (!fs.existsSync(templateDir)) {\n throw new Error(\n `Template \"${templateName}\" not found at ${templateDir}. Available templates: ${fs.readdirSync(templatesDir).join(\", \")}`\n );\n }\n\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n // Recursively copy directories\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Internal helper to copy a template directory recursively\n */\nasync function copyTemplateDir(\n templateDir: string,\n targetDir: string,\n data: Record<string, unknown>\n): Promise<void> {\n await fs.ensureDir(targetDir);\n\n const files = await fs.readdir(templateDir);\n\n for (const file of files) {\n const templatePath = path.join(templateDir, file);\n const targetPath = path.join(targetDir, file);\n\n const stat = await fs.stat(templatePath);\n\n if (stat.isDirectory()) {\n await copyTemplateDir(templatePath, targetPath, data);\n } else if (file.endsWith(\".ejs\")) {\n // Render EJS template\n const content = await renderTemplate(templatePath, data);\n const outputPath = targetPath.replace(/\\.ejs$/, \"\");\n await writeFile(outputPath, content);\n } else {\n // Copy file as-is\n await fs.copy(templatePath, targetPath);\n }\n }\n}\n\n/**\n * Get project root directory\n */\nexport function getProjectRoot(): string {\n let currentDir = process.cwd();\n\n // Look for package.json with workspace config or themes directory\n while (currentDir !== path.parse(currentDir).root) {\n const packageJsonPath = path.join(currentDir, \"package.json\");\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = fs.readJsonSync(packageJsonPath);\n\n // Check if this is the root (has workspaces, src/themes, or themes)\n if (\n packageJson.workspaces ||\n fs.existsSync(path.join(currentDir, \"src/themes\")) ||\n fs.existsSync(path.join(currentDir, \"themes\"))\n ) {\n return currentDir;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return process.cwd();\n}\n\n/**\n * Get themes directory\n */\nexport function getThemesDir(): string {\n const root = getProjectRoot();\n if (fs.existsSync(path.join(root, \"themes\")))\n return path.join(root, \"themes\");\n if (fs.existsSync(path.join(root, \"src/themes\")))\n return path.join(root, \"src/themes\");\n // Standalone theme: parent dir acts as themes dir\n return path.dirname(root);\n}\n\n/**\n * Get features directory\n */\nexport function getFeaturesDir(): string {\n return path.join(getProjectRoot(), \"src/features\");\n}\n\n/**\n * Check if running in OneX project\n */\nexport function isOneXProject(): boolean {\n const root = getProjectRoot();\n return (\n fs.existsSync(path.join(root, \"themes\")) ||\n fs.existsSync(path.join(root, \"src/themes\")) ||\n fs.existsSync(path.join(root, \"theme.config.ts\")) ||\n fs.existsSync(path.join(root, \"bundle-entry.ts\"))\n );\n}\n\n/**\n * Ensure running in OneX project\n */\nexport function ensureOneXProject(): void {\n if (!isOneXProject()) {\n logger.error(\n \"Not in a OneX project. Please run this command from a OneX project root.\"\n );\n process.exit(1);\n }\n}\n\n/**\n * List available themes\n */\nexport function listThemes(): string[] {\n const themesDir = getThemesDir();\n\n if (!fs.existsSync(themesDir)) {\n return [];\n }\n\n return fs.readdirSync(themesDir).filter((name) => {\n const themePath = path.join(themesDir, name);\n return (\n fs.statSync(themePath).isDirectory() &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n });\n}\n\n/**\n * Check if theme exists\n */\nexport function themeExists(themeName: string): boolean {\n const themePath = path.join(getThemesDir(), themeName);\n return (\n fs.existsSync(themePath) &&\n (fs.existsSync(path.join(themePath, \"theme.config.ts\")) ||\n fs.existsSync(path.join(themePath, \"bundle-entry.ts\")) ||\n fs.existsSync(path.join(themePath, \"manifest.ts\")))\n );\n}\n\n/**\n * Detect package manager (npm, yarn, pnpm, bun)\n */\nexport function detectPackageManager(): \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" {\n // Check if running with specific package manager\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n\n // Check for lock files in cwd\n const cwd = process.cwd();\n if (fs.existsSync(path.join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(cwd, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(cwd, \"bun.lockb\"))) return \"bun\";\n\n // Default to npm\n return \"npm\";\n}\n\n/**\n * Install dependencies in a directory\n */\nexport async function installDependencies(\n projectPath: string,\n packageManager: \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" = \"npm\"\n): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const installCmd =\n packageManager === \"yarn\" ? \"yarn\" : `${packageManager} install`;\n\n execSync(installCmd, {\n cwd: projectPath,\n stdio: \"inherit\",\n });\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateThemeName,\n toKebabCase,\n toPascalCase,\n} from \"../utils/validators\";\nimport {\n writeFile,\n copyTemplate,\n detectPackageManager,\n installDependencies,\n} from \"../utils/file-helpers\";\n\ninterface InitOptions {\n template?: string;\n noInstall?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nexport async function initCommand(\n projectName?: string,\n options: InitOptions = {}\n): Promise<void> {\n logger.header(\"Create New OneX Theme Project\");\n\n // Validate project name or prompt for it\n let name: string;\n\n if (!projectName) {\n const { inputName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"inputName\",\n message: \"Project name (kebab-case):\",\n validate: (input: string) => {\n if (!input) return \"Project name is required\";\n const kebabName = toKebabCase(input);\n if (!validateThemeName(kebabName)) {\n return \"Invalid project name. Use lowercase letters, numbers, and hyphens only.\";\n }\n if (fs.existsSync(path.join(process.cwd(), kebabName))) {\n return `Directory \"${kebabName}\" already exists`;\n }\n return true;\n },\n },\n ]);\n name = toKebabCase(inputName);\n } else {\n name = toKebabCase(projectName);\n }\n\n // Check if directory already exists\n const projectPath = path.join(process.cwd(), name);\n if (fs.existsSync(projectPath)) {\n logger.error(`Directory \"${name}\" already exists.`);\n process.exit(1);\n }\n\n // Skip prompts if --yes flag is provided\n let displayName: string;\n let description: string;\n let author: string;\n let template: string;\n\n if (options.yes) {\n displayName = toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim();\n description = \"A custom OneX theme\";\n author = \"\";\n template = options.template || \"default\";\n } else {\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name:\",\n default: toPascalCase(name)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Theme description:\",\n default: \"A custom OneX theme\",\n },\n {\n type: \"input\",\n name: \"author\",\n message: \"Author name:\",\n default: \"\",\n },\n {\n type: \"list\",\n name: \"template\",\n message: \"Template to use:\",\n choices: [\n { name: \"Default (basic theme structure)\", value: \"default\" },\n { name: \"Minimal (bare minimum)\", value: \"minimal\" },\n ],\n default: options.template || \"default\",\n },\n ]);\n\n displayName = answers.displayName;\n description = answers.description;\n author = answers.author;\n template = answers.template;\n }\n\n const data = {\n projectName: name,\n themeName: name,\n themeNamePascal: toPascalCase(name),\n displayName,\n description,\n author,\n template,\n };\n\n logger.startSpinner(\"Creating project structure...\");\n\n try {\n // Create project directory\n fs.mkdirSync(projectPath, { recursive: true });\n\n // Copy template files\n await copyTemplate(template, projectPath, data);\n\n // Create src directories\n const srcPath = path.join(projectPath, \"src\");\n fs.mkdirSync(srcPath, { recursive: true });\n\n // Create manifest file\n const manifestContent = generateManifest(data);\n await writeFile(path.join(srcPath, \"manifest.ts\"), manifestContent);\n\n // Create theme config\n const configContent = generateThemeConfig(data);\n await writeFile(path.join(srcPath, \"config.ts\"), configContent);\n\n // Create theme layout\n const layoutContent = generateThemeLayout(data);\n await writeFile(path.join(srcPath, \"layout.ts\"), layoutContent);\n\n // Create index file\n const indexContent = generateThemeIndex(data);\n await writeFile(path.join(srcPath, \"index.ts\"), indexContent);\n\n // Create sections directory with example\n const sectionsPath = path.join(srcPath, \"sections\");\n fs.mkdirSync(sectionsPath, { recursive: true });\n await writeFile(\n path.join(sectionsPath, \"README.md\"),\n `# ${displayName} Sections\\n\\nAdd your theme-specific sections here.\\n`\n );\n\n // Create blocks directory\n const blocksPath = path.join(srcPath, \"blocks\");\n fs.mkdirSync(blocksPath, { recursive: true });\n await writeFile(\n path.join(blocksPath, \"README.md\"),\n `# ${displayName} Blocks\\n\\nAdd your theme-specific blocks here.\\n`\n );\n\n // Create pages directory\n const pagesPath = path.join(srcPath, \"pages\");\n fs.mkdirSync(pagesPath, { recursive: true });\n const homePageContent = generateHomePage(data);\n await writeFile(path.join(pagesPath, \"home.ts\"), homePageContent);\n\n logger.stopSpinner(true, \"Project structure created!\");\n\n // Initialize git if requested\n if (options.git) {\n logger.startSpinner(\"Initializing git repository...\");\n try {\n execSync(\"git init\", { cwd: projectPath, stdio: \"ignore\" });\n execSync(\"git add .\", { cwd: projectPath, stdio: \"ignore\" });\n execSync('git commit -m \"Initial commit from onex init\"', {\n cwd: projectPath,\n stdio: \"ignore\",\n });\n logger.stopSpinner(true, \"Git repository initialized!\");\n } catch {\n logger.stopSpinner(false, \"Failed to initialize git\");\n }\n }\n\n // Install dependencies\n if (!options.noInstall) {\n logger.newLine();\n const packageManager = detectPackageManager();\n logger.startSpinner(`Installing dependencies with ${packageManager}...`);\n try {\n await installDependencies(projectPath, packageManager);\n logger.stopSpinner(true, \"Dependencies installed!\");\n } catch {\n logger.stopSpinner(false, \"Failed to install dependencies\");\n logger.info(\n \"You can install dependencies manually by running: cd \" +\n name +\n \" && npm install\"\n );\n }\n }\n\n // Print success message and next steps\n logger.newLine();\n logger.section(\"Success! 🎉\");\n logger.newLine();\n logger.info(`Created OneX theme project at: ${projectPath}`);\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(` cd ${name}`);\n if (options.noInstall) {\n logger.log(` npm install`);\n }\n logger.log(` npm run build # Build your theme`);\n logger.log(` npm run dev # Start development mode`);\n logger.newLine();\n logger.section(\"Theme structure:\");\n logger.log(\" src/manifest.ts - Theme manifest and exports\");\n logger.log(\n \" src/config.ts - Design tokens (colors, typography, etc.)\"\n );\n logger.log(\" src/layout.ts - Header and footer configuration\");\n logger.log(\" src/sections/ - Custom sections for your theme\");\n logger.log(\" src/blocks/ - Reusable blocks\");\n logger.log(\" src/pages/ - Page configurations\");\n logger.newLine();\n logger.success(`Happy theming! 🎨`);\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create project\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n // Clean up on failure\n if (fs.existsSync(projectPath)) {\n fs.rmSync(projectPath, { recursive: true, force: true });\n }\n process.exit(1);\n }\n}\n\nfunction generateManifest(data: {\n themeName: string;\n displayName: string;\n description: string;\n author: string;\n}): string {\n return `import type { ThemeExport } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Theme Manifest\n * ${data.description}\n */\nexport const manifest: ThemeExport = {\n id: \"${data.themeName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n version: \"1.0.0\",\n author: \"${data.author}\",\n\n // Theme configuration\n config: () => import(\"./theme.config\").then((m) => m.themeConfig),\n\n // Theme layout (header/footer sections)\n layout: () => import(\"./theme.layout\").then((m) => m.themeLayout),\n\n // Available sections in this theme\n sections: {\n // Example: hero: () => import(\"./sections/hero\").then((m) => m.heroSchema),\n },\n\n // Available blocks in this theme\n blocks: {\n // Example: productCard: () => import(\"./blocks/product-card\").then((m) => m.productCardDefinition),\n },\n\n // Default pages\n pages: {\n home: () => import(\"./pages/home\").then((m) => m.homePageConfig),\n },\n\n // Supported page types\n supportedPageTypes: [\"home\", \"about\", \"contact\", \"custom\"],\n\n // Preview image (optional)\n preview: undefined,\n\n // Tags for categorization (optional)\n tags: [\"custom\"],\n};\n\nexport default manifest;\n`;\n}\n\nfunction generateThemeConfig(data: {\n themeName: string;\n displayName: string;\n}): string {\n return `import type { ThemeConfig } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Theme Configuration\n * Design tokens: colors, typography, spacing, etc.\n */\nexport const themeConfig: ThemeConfig = {\n // Color palette\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n },\n accent: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n },\n },\n\n // Typography\n typography: {\n fontFamily: {\n sans: [\"Inter\", \"system-ui\", \"sans-serif\"],\n serif: [\"Georgia\", \"serif\"],\n mono: [\"Monaco\", \"monospace\"],\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n },\n },\n\n // Spacing\n spacing: {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n xl: \"3rem\",\n \"2xl\": \"4rem\",\n \"3xl\": \"6rem\",\n \"4xl\": \"8rem\",\n },\n\n // Border radius\n borderRadius: {\n none: \"0\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n\n // Breakpoints\n breakpoints: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n};\n`;\n}\n\nfunction generateThemeLayout(data: { themeName: string }): string {\n return `import type { ThemeLayoutConfig } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.themeName} Theme Layout\n * Define header and footer sections\n */\nexport const themeLayout: ThemeLayoutConfig = {\n // Header section configuration\n header: undefined,\n // Example:\n // header: {\n // type: \"header\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n\n // Footer section configuration\n footer: undefined,\n // Example:\n // footer: {\n // type: \"footer\",\n // template: \"default\",\n // enabled: true,\n // settings: {},\n // },\n};\n`;\n}\n\nfunction generateThemeIndex(data: {\n themeName: string;\n themeNamePascal: string;\n}): string {\n return `/**\n * ${data.themeNamePascal} Theme\n */\n\nexport { manifest as ${data.themeName}Manifest } from \"./manifest\";\nexport { themeConfig as ${data.themeName}Config } from \"./theme.config\";\nexport { themeLayout as ${data.themeName}Layout } from \"./theme.layout\";\n`;\n}\n\nfunction generateHomePage(data: { displayName: string }): string {\n return `import type { PageConfig } from \"@duongthiu/onex-core\";\n\n/**\n * Home Page Configuration\n */\nexport const homePageConfig: PageConfig = {\n type: \"home\",\n title: \"${data.displayName}\",\n description: \"Welcome to ${data.displayName}\",\n\n // SEO metadata\n seo: {\n title: \"${data.displayName} - Home\",\n description: \"Welcome to ${data.displayName}\",\n keywords: [],\n ogImage: undefined,\n },\n\n // Page sections\n sections: [\n // Add your sections here\n // Example:\n // {\n // id: \"hero-1\",\n // type: \"hero\",\n // template: \"default\",\n // order: 0,\n // enabled: true,\n // settings: {},\n // components: [],\n // blocks: [],\n // },\n ],\n};\n`;\n}\n","/**\n * Validation utilities for CLI inputs\n */\n\n/**\n * Validate component/section/block name\n * Must be kebab-case and alphanumeric\n */\nexport function validateName(name: string): boolean {\n return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(name);\n}\n\n/**\n * Convert string to kebab-case\n */\nexport function toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n\n/**\n * Convert string to PascalCase\n */\nexport function toPascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/**\n * Convert string to camelCase\n */\nexport function toCamelCase(str: string): string {\n const pascal = toPascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Validate theme name\n */\nexport function validateThemeName(name: string): boolean {\n return /^[a-z][a-z0-9-]*$/.test(name);\n}\n\n/**\n * Check if path exists\n */\nexport function pathExists(filePath: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const fs = require(\"fs-extra\");\n return fs.existsSync(filePath);\n}\n\n/**\n * Validate section category\n */\nexport function validateCategory(category: string): boolean {\n const validCategories = [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n return validCategories.includes(category);\n}\n\n/**\n * Get valid categories\n */\nexport function getValidCategories(): string[] {\n return [\n \"headers\",\n \"heroes\",\n \"content\",\n \"features\",\n \"testimonials\",\n \"galleries\",\n \"cta\",\n \"footers\",\n \"ecommerce\",\n \"blog\",\n \"contact\",\n ];\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport {\n validateName,\n toKebabCase,\n toPascalCase,\n getValidCategories,\n} from \"../utils/validators\";\nimport fs from \"fs-extra\";\nimport {\n ensureOneXProject,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateSectionOptions {\n theme?: string;\n category?: string;\n template?: string;\n}\n\nexport async function createSectionCommand(\n name: string,\n options: CreateSectionOptions\n): Promise<void> {\n logger.header(\"Create New Section\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const sectionName = toKebabCase(name);\n if (!validateName(sectionName)) {\n logger.error(\n `Invalid section name: ${sectionName}. Use kebab-case (e.g., hero, featured-products)`\n );\n process.exit(1);\n }\n\n // Prompt for missing options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme should this section belong to?\",\n choices: listThemes(),\n when: !options.theme,\n },\n {\n type: \"list\",\n name: \"category\",\n message: \"What category is this section?\",\n choices: getValidCategories(),\n when: !options.category,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this section:\",\n default: toPascalCase(sectionName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Section description:\",\n default: `${toPascalCase(sectionName)} section`,\n },\n {\n type: \"confirm\",\n name: \"createTemplate\",\n message: \"Create a default template variant?\",\n default: true,\n },\n ]);\n\n const themeName = options.theme || answers.theme;\n const category = options.category || answers.category;\n const displayName = answers.displayName;\n const description = answers.description;\n const createTemplate = answers.createTemplate;\n\n // Validate theme exists\n if (!themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n sectionName,\n sectionNamePascal: toPascalCase(sectionName),\n themeName,\n category,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating section files...\");\n\n try {\n const themePath = path.join(getThemesDir(), themeName);\n const sectionPath = path.join(themePath, \"sections\", sectionName);\n\n // Create section schema file\n const schemaContent = generateSectionSchema(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}.schema.ts`),\n schemaContent\n );\n\n // Create default template if requested\n if (createTemplate) {\n const templateContent = generateSectionTemplate(data);\n await writeFile(\n path.join(sectionPath, `${sectionName}-default.tsx`),\n templateContent\n );\n }\n\n // Create index file\n const indexContent = generateSectionIndex(data, createTemplate);\n await writeFile(path.join(sectionPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Section files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}.schema.ts`))}`\n );\n if (createTemplate) {\n logger.log(\n ` 2. Edit template: ${path.relative(process.cwd(), path.join(sectionPath, `${sectionName}-default.tsx`))}`\n );\n }\n logger.log(\n ` 3. Add to theme manifest: ${path.relative(process.cwd(), path.join(themePath, \"manifest.ts\"))}`\n );\n logger.newLine();\n logger.success(\"Section created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create section\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateSectionSchema(data: {\n sectionName: string;\n sectionNamePascal: string;\n category: string;\n displayName: string;\n description: string;\n}): string {\n return `import type { SectionSchema } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Section Schema\n * ${data.description}\n */\nexport const ${data.sectionName}Schema: SectionSchema = {\n type: \"${data.sectionName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.category}\",\n icon: \"layout\",\n\n // Available template variants\n templates: [\n {\n id: \"default\",\n name: \"Default\",\n description: \"Default ${data.sectionName} layout\",\n isDefault: true,\n },\n ],\n\n // Section-level settings\n settings: [\n {\n id: \"backgroundColor\",\n type: \"color\",\n label: \"Background Color\",\n category: \"style\",\n },\n {\n id: \"padding\",\n type: \"select\",\n label: \"Padding\",\n category: \"style\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default settings values\n defaults: {\n backgroundColor: \"#ffffff\",\n padding: \"md\",\n },\n\n // Allowed blocks (optional)\n allowedBlocks: [],\n\n // Maximum number of instances on a page (optional)\n maxInstances: undefined,\n};\n`;\n}\n\nfunction generateSectionTemplate(data: {\n sectionName: string;\n sectionNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { SectionComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} - Default Template\n */\nexport function ${data.sectionNamePascal}Default({\n section,\n isEditing = false,\n}: SectionComponentProps) {\n const { settings = {} } = section;\n const backgroundColor = settings.backgroundColor as string || \"#ffffff\";\n const padding = settings.padding as string || \"md\";\n\n // Map padding values to Tailwind classes\n const paddingClasses = {\n none: \"\",\n sm: \"py-8\",\n md: \"py-16\",\n lg: \"py-24\",\n };\n\n return (\n <section\n className={\\`${data.sectionName}-section \\${paddingClasses[padding as keyof typeof paddingClasses] || paddingClasses.md}\\`}\n style={{ backgroundColor }}\n data-section-id={section.id}\n data-section-type={section.type}\n >\n <div className=\"container mx-auto px-4\">\n {/* TODO: Implement section content */}\n <div className=\"text-center\">\n <h2 className=\"text-3xl font-bold\">${data.displayName}</h2>\n <p className=\"mt-4 text-gray-600\">\n Start building your section here\n </p>\n </div>\n\n {/* Render blocks if any */}\n {section.blocks && section.blocks.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render blocks */}\n </div>\n )}\n\n {/* Render components if any */}\n {section.components && section.components.length > 0 && (\n <div className=\"mt-8\">\n {/* TODO: Render components */}\n </div>\n )}\n </div>\n </section>\n );\n}\n`;\n}\n\nfunction generateSectionIndex(\n data: { sectionName: string; sectionNamePascal: string },\n hasTemplate: boolean\n): string {\n return `/**\n * ${data.sectionNamePascal} Section\n */\n\nexport { ${data.sectionName}Schema } from \"./${data.sectionName}.schema\";\n${hasTemplate ? `export { ${data.sectionNamePascal}Default } from \"./${data.sectionName}-default\";` : \"\"}\n`;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n getThemesDir,\n listThemes,\n themeExists,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateBlockOptions {\n theme?: string;\n}\n\nexport async function createBlockCommand(\n name: string,\n options: CreateBlockOptions\n): Promise<void> {\n logger.header(\"Create New Block\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Auto-detect theme in standalone theme directory\n if (!options.theme) {\n const isStandaloneTheme = [\"theme.config.ts\", \"bundle-entry.ts\"].some((f) =>\n fs.existsSync(path.join(process.cwd(), f))\n );\n if (isStandaloneTheme) {\n options.theme = path.basename(process.cwd());\n }\n }\n\n // Validate and normalize name\n const blockName = toKebabCase(name);\n if (!validateName(blockName)) {\n logger.error(\n `Invalid block name: ${blockName}. Use kebab-case (e.g., product-card, testimonial-item)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"scope\",\n message: \"Block scope:\",\n choices: [\n { name: \"Shared (available to all themes)\", value: \"shared\" },\n { name: \"Theme-specific\", value: \"theme\" },\n ],\n default: \"shared\",\n },\n {\n type: \"list\",\n name: \"theme\",\n message: \"Which theme?\",\n choices: listThemes(),\n when: (answers) => answers.scope === \"theme\" && !options.theme,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this block:\",\n default: toPascalCase(blockName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Block description:\",\n default: `${toPascalCase(blockName)} block`,\n },\n {\n type: \"confirm\",\n name: \"hasComponents\",\n message: \"Does this block contain components?\",\n default: true,\n },\n {\n type: \"confirm\",\n name: \"hasNestedBlocks\",\n message: \"Does this block support nested blocks?\",\n default: false,\n },\n ]);\n\n const scope = answers.scope;\n const themeName = options.theme || answers.theme;\n const displayName = answers.displayName;\n const description = answers.description;\n const hasComponents = answers.hasComponents;\n const hasNestedBlocks = answers.hasNestedBlocks;\n\n // Validate theme if theme-specific\n if (scope === \"theme\" && !themeExists(themeName)) {\n logger.error(`Theme \"${themeName}\" does not exist.`);\n process.exit(1);\n }\n\n // Prepare data for templates\n const data = {\n blockName,\n blockNamePascal: toPascalCase(blockName),\n displayName,\n description,\n hasComponents,\n hasNestedBlocks,\n scope,\n themeName,\n };\n\n logger.startSpinner(\"Creating block files...\");\n\n try {\n const blockPath =\n scope === \"shared\"\n ? path.join(getFeaturesDir(), \"blocks\", blockName)\n : path.join(getThemesDir(), themeName, \"blocks\", blockName);\n\n // Create block schema file\n const schemaContent = generateBlockSchema(data);\n await writeFile(\n path.join(blockPath, `${blockName}.schema.ts`),\n schemaContent\n );\n\n // Create block component file\n const componentContent = generateBlockComponent(data);\n await writeFile(path.join(blockPath, `${blockName}.tsx`), componentContent);\n\n // Create index file\n const indexContent = generateBlockIndex(data);\n await writeFile(path.join(blockPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Block files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(blockPath, `${blockName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in block registry: src/lib/registry/block-registry.ts`\n );\n logger.newLine();\n logger.success(\"Block created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create block\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateBlockSchema(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n description: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import type { BlockDefinition } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Block Schema\n * ${data.description}\n */\nexport const ${data.blockName}Definition: BlockDefinition = {\n type: \"${data.blockName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n icon: \"square\",\n\n // Block settings\n settings: [\n {\n id: \"title\",\n type: \"text\",\n label: \"Title\",\n category: \"content\",\n },\n {\n id: \"alignment\",\n type: \"select\",\n label: \"Alignment\",\n category: \"style\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"left\",\n },\n ],\n\n // Default settings values\n defaults: {\n title: \"${data.displayName}\",\n alignment: \"left\",\n },\n\n ${data.hasComponents ? `// This block can contain components\\n allowsComponents: true,` : \"\"}\n ${data.hasNestedBlocks ? `// This block can contain nested blocks\\n allowsNestedBlocks: true,` : \"\"}\n};\n`;\n}\n\nfunction generateBlockComponent(data: {\n blockName: string;\n blockNamePascal: string;\n displayName: string;\n hasComponents: boolean;\n hasNestedBlocks: boolean;\n}): string {\n return `import React from \"react\";\nimport type { BlockComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Block Component\n */\nexport function ${data.blockNamePascal}({\n block,\n isEditing = false,\n}: BlockComponentProps) {\n const { settings = {} } = block;\n const title = settings.title as string || \"${data.displayName}\";\n const alignment = settings.alignment as string || \"left\";\n\n const alignmentClasses = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div\n className={\\`${data.blockName}-block \\${alignmentClasses[alignment as keyof typeof alignmentClasses]}\\`}\n data-block-id={block.id}\n data-block-type={block.type}\n >\n {title && <h3 className=\"text-xl font-semibold mb-4\">{title}</h3>}\n\n {/* TODO: Implement block content */}\n <div className=\"block-content\">\n <p className=\"text-gray-600\">Block content goes here</p>\n </div>\n\n ${\n data.hasComponents\n ? `{/* Render components if any */}\n {block.components && block.components.length > 0 && (\n <div className=\"block-components mt-4\">\n {/* TODO: Render components using ComponentRenderer */}\n </div>\n )}`\n : \"\"\n }\n\n ${\n data.hasNestedBlocks\n ? `{/* Render nested blocks if any */}\n {block.blocks && block.blocks.length > 0 && (\n <div className=\"nested-blocks mt-4\">\n {/* TODO: Render nested blocks using BlockRenderer */}\n </div>\n )}`\n : \"\"\n }\n </div>\n );\n}\n`;\n}\n\nfunction generateBlockIndex(data: {\n blockName: string;\n blockNamePascal: string;\n}): string {\n return `/**\n * ${data.blockNamePascal} Block\n */\n\nexport { ${data.blockName}Definition } from \"./${data.blockName}.schema\";\nexport { ${data.blockNamePascal} } from \"./${data.blockName}\";\n`;\n}\n","import path from \"path\";\nimport inquirer from \"inquirer\";\nimport { logger } from \"../utils/logger\";\nimport { validateName, toKebabCase, toPascalCase } from \"../utils/validators\";\nimport {\n ensureOneXProject,\n getFeaturesDir,\n writeFile,\n} from \"../utils/file-helpers\";\n\ninterface CreateComponentOptions {\n type?: string;\n}\n\nexport async function createComponentCommand(\n name: string,\n options: CreateComponentOptions\n): Promise<void> {\n logger.header(\"Create New Component\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Validate and normalize name\n const componentName = toKebabCase(name);\n if (!validateName(componentName)) {\n logger.error(\n `Invalid component name: ${componentName}. Use kebab-case (e.g., button, icon-badge)`\n );\n process.exit(1);\n }\n\n // Prompt for options\n const answers = await inquirer.prompt([\n {\n type: \"list\",\n name: \"componentType\",\n message: \"Component type:\",\n choices: [\n { name: \"UI Component (button, badge, etc.)\", value: \"ui\" },\n { name: \"Form Component (input, select, etc.)\", value: \"form\" },\n { name: \"Layout Component (container, grid, etc.)\", value: \"layout\" },\n {\n name: \"Content Component (heading, paragraph, etc.)\",\n value: \"content\",\n },\n ],\n when: !options.type,\n },\n {\n type: \"input\",\n name: \"displayName\",\n message: \"Display name for this component:\",\n default: toPascalCase(componentName)\n .replace(/([A-Z])/g, \" $1\")\n .trim(),\n },\n {\n type: \"input\",\n name: \"description\",\n message: \"Component description:\",\n default: `${toPascalCase(componentName)} component`,\n },\n ]);\n\n const componentType = options.type || answers.componentType;\n const displayName = answers.displayName;\n const description = answers.description;\n\n // Prepare data for templates\n const data = {\n componentName,\n componentNamePascal: toPascalCase(componentName),\n componentType,\n displayName,\n description,\n };\n\n logger.startSpinner(\"Creating component files...\");\n\n try {\n const componentPath = path.join(\n getFeaturesDir(),\n \"components\",\n componentName\n );\n\n // Create component schema file\n const schemaContent = generateComponentSchema(data);\n await writeFile(\n path.join(componentPath, `${componentName}.schema.ts`),\n schemaContent\n );\n\n // Create component file\n const componentContent = generateComponent(data);\n await writeFile(\n path.join(componentPath, `${componentName}.tsx`),\n componentContent\n );\n\n // Create index file\n const indexContent = generateComponentIndex(data);\n await writeFile(path.join(componentPath, \"index.ts\"), indexContent);\n\n logger.stopSpinner(true, \"Component files created successfully!\");\n\n // Print next steps\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` 1. Edit schema: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.schema.ts`))}`\n );\n logger.log(\n ` 2. Edit component: ${path.relative(process.cwd(), path.join(componentPath, `${componentName}.tsx`))}`\n );\n logger.log(\n ` 3. Register in component registry: src/lib/registry/component-registry.ts`\n );\n logger.newLine();\n logger.success(\"Component created successfully!\");\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create component\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\nfunction generateComponentSchema(data: {\n componentName: string;\n displayName: string;\n description: string;\n componentType: string;\n}): string {\n return `import type { ComponentDefinition } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Component Schema\n * ${data.description}\n */\nexport const ${data.componentName}Definition: ComponentDefinition = {\n type: \"${data.componentName}\",\n name: \"${data.displayName}\",\n description: \"${data.description}\",\n category: \"${data.componentType}\",\n icon: \"square\",\n\n // Content fields (what the component displays)\n contentFields: [\n {\n id: \"text\",\n type: \"text\",\n label: \"Text\",\n defaultValue: \"${data.displayName}\",\n },\n ],\n\n // Style fields (how the component looks)\n styleFields: [\n {\n id: \"variant\",\n type: \"select\",\n label: \"Variant\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Primary\", value: \"primary\" },\n { label: \"Secondary\", value: \"secondary\" },\n ],\n defaultValue: \"default\",\n },\n {\n id: \"size\",\n type: \"select\",\n label: \"Size\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n defaultValue: \"md\",\n },\n ],\n\n // Default content values\n defaultContent: {\n text: \"${data.displayName}\",\n },\n\n // Default style values\n defaultStyle: {\n variant: \"default\",\n size: \"md\",\n },\n};\n`;\n}\n\nfunction generateComponent(data: {\n componentName: string;\n componentNamePascal: string;\n displayName: string;\n}): string {\n return `import React from \"react\";\nimport type { ComponentProps } from \"@duongthiu/onex-core\";\n\n/**\n * ${data.displayName} Component\n */\nexport function ${data.componentNamePascal}({\n component,\n isEditing = false,\n}: ComponentProps) {\n const { content = {}, style = {} } = component;\n const text = content.text as string || \"${data.displayName}\";\n const variant = style.variant as string || \"default\";\n const size = style.size as string || \"md\";\n\n // Variant classes\n const variantClasses = {\n default: \"bg-gray-100 text-gray-900\",\n primary: \"bg-blue-600 text-white\",\n secondary: \"bg-gray-600 text-white\",\n };\n\n // Size classes\n const sizeClasses = {\n sm: \"text-sm px-3 py-1\",\n md: \"text-base px-4 py-2\",\n lg: \"text-lg px-6 py-3\",\n };\n\n return (\n <div\n className={\\`${data.componentName} \\${variantClasses[variant as keyof typeof variantClasses]} \\${sizeClasses[size as keyof typeof sizeClasses]} inline-block rounded\\`}\n data-component-id={component.id}\n data-component-type={component.type}\n >\n {text}\n </div>\n );\n}\n`;\n}\n\nfunction generateComponentIndex(data: {\n componentName: string;\n componentNamePascal: string;\n}): string {\n return `/**\n * ${data.componentNamePascal} Component\n */\n\nexport { ${data.componentName}Definition } from \"./${data.componentName}.schema\";\nexport { ${data.componentNamePascal} } from \"./${data.componentName}\";\n`;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n getFeaturesDir,\n listThemes,\n} from \"../utils/file-helpers\";\n\ninterface ListOptions {\n sections?: boolean;\n blocks?: boolean;\n components?: boolean;\n theme?: string;\n}\n\nexport async function listCommand(options: ListOptions): Promise<void> {\n logger.header(\"OneX Project Inventory\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const showAll = !options.sections && !options.blocks && !options.components;\n\n if (showAll || options.sections) {\n await listSections(options.theme);\n }\n\n if (showAll || options.blocks) {\n await listBlocks(options.theme);\n }\n\n if (showAll || options.components) {\n await listComponents();\n }\n\n if (showAll) {\n await listThemesInfo();\n }\n}\n\nasync function listSections(themeFilter?: string): Promise<void> {\n logger.section(\"📄 Sections\");\n\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n for (const theme of themes) {\n const sectionsDir = path.join(getThemesDir(), theme, \"sections\");\n\n if (!fs.existsSync(sectionsDir)) {\n continue;\n }\n\n const sections = fs.readdirSync(sectionsDir).filter((name) => {\n const sectionPath = path.join(sectionsDir, name);\n return (\n fs.statSync(sectionPath).isDirectory() &&\n fs.existsSync(path.join(sectionPath, \"index.ts\"))\n );\n });\n\n if (sections.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n sections.forEach((section) => {\n logger.log(` • ${section}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listBlocks(themeFilter?: string): Promise<void> {\n logger.section(\"🧱 Blocks\");\n\n // List shared blocks\n const sharedBlocksDir = path.join(getFeaturesDir(), \"blocks\");\n if (fs.existsSync(sharedBlocksDir)) {\n const sharedBlocks = fs.readdirSync(sharedBlocksDir).filter((name) => {\n const blockPath = path.join(sharedBlocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (sharedBlocks.length > 0) {\n logger.log(chalk.cyan(\"\\n Shared:\"));\n sharedBlocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n // List theme-specific blocks\n const themes = themeFilter ? [themeFilter] : listThemes();\n\n for (const theme of themes) {\n const blocksDir = path.join(getThemesDir(), theme, \"blocks\");\n\n if (!fs.existsSync(blocksDir)) {\n continue;\n }\n\n const blocks = fs.readdirSync(blocksDir).filter((name) => {\n const blockPath = path.join(blocksDir, name);\n return (\n fs.statSync(blockPath).isDirectory() &&\n fs.existsSync(path.join(blockPath, \"index.ts\"))\n );\n });\n\n if (blocks.length > 0) {\n logger.log(chalk.cyan(`\\n ${theme}:`));\n blocks.forEach((block) => {\n logger.log(` • ${block}`);\n });\n }\n }\n\n logger.newLine();\n}\n\nasync function listComponents(): Promise<void> {\n logger.section(\"⚙️ Components\");\n\n const componentsDir = path.join(getFeaturesDir(), \"components\");\n\n if (!fs.existsSync(componentsDir)) {\n logger.warning(\"No components directory found\");\n return;\n }\n\n const components = fs.readdirSync(componentsDir).filter((name) => {\n const componentPath = path.join(componentsDir, name);\n return (\n fs.statSync(componentPath).isDirectory() &&\n fs.existsSync(path.join(componentPath, \"index.ts\"))\n );\n });\n\n if (components.length === 0) {\n logger.warning(\"No components found\");\n return;\n }\n\n logger.log(\"\");\n components.forEach((component) => {\n logger.log(` • ${component}`);\n });\n\n logger.newLine();\n}\n\nasync function listThemesInfo(): Promise<void> {\n logger.section(\"🎨 Themes\");\n\n const themes = listThemes();\n\n if (themes.length === 0) {\n logger.warning(\"No themes found\");\n return;\n }\n\n logger.log(\"\");\n\n for (const theme of themes) {\n const themeDir = path.join(getThemesDir(), theme);\n const candidates = [\"theme.config.ts\", \"bundle-entry.ts\", \"manifest.ts\"];\n let manifestContent = \"\";\n for (const candidate of candidates) {\n const candidatePath = path.join(themeDir, candidate);\n if (fs.existsSync(candidatePath)) {\n manifestContent = fs.readFileSync(candidatePath, \"utf-8\");\n break;\n }\n }\n\n // Try to extract theme info from manifest\n const nameMatch = manifestContent.match(/name:\\s*[\"'](.+)[\"']/);\n const versionMatch = manifestContent.match(/version:\\s*[\"'](.+)[\"']/);\n const descMatch = manifestContent.match(/description:\\s*[\"'](.+)[\"']/);\n\n const displayName = nameMatch ? nameMatch[1] : theme;\n const version = versionMatch ? versionMatch[1] : \"unknown\";\n const description = descMatch ? descMatch[1] : \"\";\n\n logger.log(chalk.cyan(` ${displayName}`) + chalk.gray(` (v${version})`));\n if (description) {\n logger.log(chalk.gray(` ${description}`));\n }\n }\n\n logger.newLine();\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport {\n ensureOneXProject,\n getThemesDir,\n themeExists,\n} from \"../utils/file-helpers\";\n\ninterface ValidateOptions {\n theme?: string;\n fix?: boolean;\n}\n\ninterface ValidationIssue {\n type: \"error\" | \"warning\";\n file: string;\n message: string;\n}\n\nexport async function validateCommand(options: ValidateOptions): Promise<void> {\n logger.header(\"Validate Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n const issues: ValidationIssue[] = [];\n let themeToValidate: string | undefined;\n\n // If theme specified, validate that theme\n if (options.theme) {\n if (!themeExists(options.theme)) {\n logger.error(`Theme \"${options.theme}\" not found.`);\n process.exit(1);\n }\n themeToValidate = options.theme;\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n // We're in a theme directory\n themeToValidate = path.basename(process.cwd());\n logger.info(`Validating current theme: ${themeToValidate}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const themePath = path.join(getThemesDir(), themeToValidate);\n\n logger.startSpinner(\"Running validation checks...\");\n\n // Check 1: Theme entry file exists (manifest.ts, theme.config.ts, or bundle-entry.ts)\n const entryFiles = [\"manifest.ts\", \"theme.config.ts\", \"bundle-entry.ts\"];\n const foundEntry = entryFiles.find((f) =>\n fs.existsSync(path.join(themePath, f))\n );\n if (!foundEntry) {\n issues.push({\n type: \"error\",\n file: \"manifest.ts / theme.config.ts / bundle-entry.ts\",\n message:\n \"No theme entry file found (need at least one of: manifest.ts, theme.config.ts, bundle-entry.ts)\",\n });\n } else if (foundEntry === \"manifest.ts\") {\n // Check manifest structure - just verify it has some exports\n const manifestContent = fs.readFileSync(\n path.join(themePath, foundEntry),\n \"utf-8\"\n );\n if (\n !manifestContent.includes(\"export const\") &&\n !manifestContent.includes(\"export default\") &&\n !manifestContent.includes(\"export interface\")\n ) {\n issues.push({\n type: \"error\",\n file: \"manifest.ts\",\n message: \"Must have at least one export\",\n });\n }\n }\n\n // Check 2: Theme config exists\n const configPath = path.join(themePath, \"theme.config.ts\");\n if (!fs.existsSync(configPath)) {\n issues.push({\n type: \"warning\",\n file: \"theme.config.ts\",\n message: \"Theme config file not found (recommended)\",\n });\n }\n\n // Check 3: Index file exists\n const indexPath = path.join(themePath, \"index.ts\");\n if (!fs.existsSync(indexPath)) {\n issues.push({\n type: \"warning\",\n file: \"index.ts\",\n message: \"Index file not found (recommended)\",\n });\n }\n\n // Check 4: Sections directory\n const sectionsDir = path.join(themePath, \"sections\");\n if (!fs.existsSync(sectionsDir)) {\n issues.push({\n type: \"warning\",\n file: \"sections/\",\n message: \"Sections directory not found\",\n });\n } else {\n // Validate each section\n const sections = fs\n .readdirSync(sectionsDir)\n .filter((name) =>\n fs.statSync(path.join(sectionsDir, name)).isDirectory()\n );\n\n for (const sectionName of sections) {\n const sectionPath = path.join(sectionsDir, sectionName);\n\n // Check for required files\n const schemaFile = path.join(sectionPath, `${sectionName}.schema.ts`);\n const defaultTemplate = path.join(\n sectionPath,\n `${sectionName}-default.tsx`\n );\n const indexFile = path.join(sectionPath, \"index.ts\");\n\n if (!fs.existsSync(schemaFile)) {\n issues.push({\n type: \"error\",\n file: `sections/${sectionName}/${sectionName}.schema.ts`,\n message: \"Section schema file missing\",\n });\n }\n\n if (!fs.existsSync(indexFile)) {\n issues.push({\n type: \"error\",\n file: `sections/${sectionName}/index.ts`,\n message: \"Section index file missing\",\n });\n }\n\n if (!fs.existsSync(defaultTemplate)) {\n issues.push({\n type: \"warning\",\n file: `sections/${sectionName}/${sectionName}-default.tsx`,\n message: \"Default template not found (recommended)\",\n });\n }\n }\n }\n\n // Check 5: Blocks directory\n const blocksDir = path.join(themePath, \"blocks\");\n if (fs.existsSync(blocksDir)) {\n const blocks = fs\n .readdirSync(blocksDir)\n .filter((name) => fs.statSync(path.join(blocksDir, name)).isDirectory());\n\n for (const blockName of blocks) {\n const blockPath = path.join(blocksDir, blockName);\n\n // Check for required files\n const schemaFile = path.join(blockPath, `${blockName}.schema.ts`);\n const componentFile = path.join(blockPath, `${blockName}.tsx`);\n const indexFile = path.join(blockPath, \"index.ts\");\n\n if (!fs.existsSync(schemaFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/${blockName}.schema.ts`,\n message: \"Block schema file missing\",\n });\n }\n\n if (!fs.existsSync(componentFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/${blockName}.tsx`,\n message: \"Block component file missing\",\n });\n }\n\n if (!fs.existsSync(indexFile)) {\n issues.push({\n type: \"error\",\n file: `blocks/${blockName}/index.ts`,\n message: \"Block index file missing\",\n });\n }\n }\n }\n\n logger.stopSpinner(true, \"Validation complete\");\n\n // Report results\n const errors = issues.filter((i) => i.type === \"error\");\n const warnings = issues.filter((i) => i.type === \"warning\");\n\n logger.newLine();\n\n if (errors.length === 0 && warnings.length === 0) {\n logger.success(\"✓ Theme is valid!\");\n logger.newLine();\n logger.info(`Theme: ${themeToValidate}`);\n logger.log(\" No issues found\");\n } else {\n if (errors.length > 0) {\n logger.error(`✗ Found ${errors.length} error(s):`);\n logger.newLine();\n errors.forEach((issue) => {\n logger.log(` ${issue.file}`);\n logger.log(` ${issue.message}`);\n });\n logger.newLine();\n }\n\n if (warnings.length > 0) {\n logger.warning(`⚠ Found ${warnings.length} warning(s):`);\n logger.newLine();\n warnings.forEach((issue) => {\n logger.log(` ${issue.file}`);\n logger.log(` ${issue.message}`);\n });\n logger.newLine();\n }\n\n if (errors.length > 0) {\n logger.error(\"Validation failed. Please fix the errors above.\");\n process.exit(1);\n } else {\n logger.warning(\n \"Validation passed with warnings. Consider addressing them.\"\n );\n }\n }\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject, getThemesDir } from \"../utils/file-helpers\";\n\ninterface BuildOptions {\n theme?: string;\n production?: boolean;\n watch?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n logger.header(\"Build Theme\");\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to build\n if (options.theme) {\n themeName = options.theme;\n // Try to find theme in workspace first, otherwise use current directory\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n // Not in a workspace, use current directory\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Building current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n const packageJsonPath = path.join(themePath, \"package.json\");\n const hasPkgJson = fs.existsSync(packageJsonPath);\n\n if (!hasPkgJson) {\n logger.warning(\n \"No package.json found in theme. Skipping build (themes in monorepo are built via turbo).\"\n );\n logger.newLine();\n logger.info(\"To build all packages, run:\");\n logger.log(\" pnpm turbo build\");\n logger.newLine();\n logger.info(\"To build specific theme components:\");\n logger.log(\" pnpm turbo build --filter=./src/themes/*\");\n return;\n }\n\n // Run build steps\n logger.newLine();\n logger.section(\"Build Steps\");\n\n // Step 1: Type Check\n logger.startSpinner(\"Running type check...\");\n const typeCheckSuccess = await runCommand(\"pnpm\", [\"type-check\"], themePath);\n\n if (!typeCheckSuccess) {\n logger.stopSpinner(false, \"Type check failed\");\n logger.error(\"Fix type errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Type check passed\");\n\n // Step 2: Lint\n logger.startSpinner(\"Running linter...\");\n const lintSuccess = await runCommand(\"pnpm\", [\"lint\"], themePath);\n\n if (!lintSuccess) {\n logger.stopSpinner(false, \"Lint failed\");\n logger.error(\"Fix lint errors before building.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Lint passed\");\n\n // Step 3: Build\n // Detect if theme's build script would cause recursion (e.g., \"onex build\")\n const pkgJson = fs.readJsonSync(packageJsonPath);\n const buildScript = pkgJson.scripts?.build || \"\";\n const isRecursive =\n buildScript.includes(\"onex build\") ||\n buildScript.includes(\"onex-cli build\");\n\n logger.startSpinner(\n options.watch ? \"Building (watch mode)...\" : \"Building...\"\n );\n\n let buildSuccess: boolean;\n\n if (isRecursive) {\n // Standalone theme: use embedded esbuild compilation\n const { compileStandaloneTheme } = await import(\"../utils/compile-theme\");\n buildSuccess = await compileStandaloneTheme(themePath, themeName);\n } else {\n // Monorepo: use existing pnpm build\n const buildArgs = options.watch ? [\"build\", \"--watch\"] : [\"build\"];\n buildSuccess = await runCommand(\"pnpm\", buildArgs, themePath);\n }\n\n if (!buildSuccess && !options.watch) {\n logger.stopSpinner(false, \"Build failed\");\n process.exit(1);\n }\n\n if (!options.watch) {\n logger.stopSpinner(true, \"Build complete\");\n\n // Show output location\n logger.newLine();\n logger.success(\"✓ Theme built successfully!\");\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n\n const distPath = path.join(themePath, \"dist\");\n if (fs.existsSync(distPath)) {\n logger.log(`Output: ${path.relative(process.cwd(), distPath)}`);\n\n // Show build stats\n const files = fs.readdirSync(distPath);\n logger.log(`Files: ${files.length}`);\n }\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(\n command: string,\n args: string[],\n cwd: string\n): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd,\n stdio: \"pipe\",\n shell: true,\n });\n\n let hasError = false;\n\n proc.stderr.on(\"data\", (data) => {\n const message = data.toString();\n // Don't treat warnings as errors\n if (\n message.includes(\"error\") ||\n message.includes(\"Error\") ||\n message.includes(\"ERROR\")\n ) {\n hasError = true;\n }\n });\n\n proc.on(\"close\", (code) => {\n resolve(code === 0 && !hasError);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n","import { spawn } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject, getThemesDir } from \"../utils/file-helpers\";\n\ninterface PackageOptions {\n theme?: string;\n output?: string;\n name?: string;\n minify?: boolean;\n skipBuild?: boolean;\n}\n\nexport async function packageCommand(options: PackageOptions): Promise<void> {\n logger.header(\"Package Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n let themePath: string;\n let themeName: string;\n\n // Determine theme to package\n if (options.theme) {\n themeName = options.theme;\n themePath = path.join(getThemesDir(), themeName);\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n // Check if we're in a theme directory\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n logger.info(`Packaging current theme: ${themeName}`);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n // Read version from package.json\n const packageJsonPath = path.join(themePath, \"package.json\");\n let version = \"1.0.0\";\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = await fs.readJson(packageJsonPath);\n version = packageJson.version || \"1.0.0\";\n }\n\n logger.newLine();\n logger.info(`Theme: ${themeName}`);\n logger.info(`Version: ${version}`);\n logger.newLine();\n\n // Step 1: Build/compile theme (unless skipped)\n const compiledThemePath = path.join(\n process.cwd(),\n \"themes\",\n themeName,\n \"dist\"\n );\n\n if (!options.skipBuild) {\n logger.section(\"Step 1: Compile Theme\");\n logger.startSpinner(\"Compiling theme with esbuild...\");\n\n const compileArgs = [\"tsx\", \"scripts/compile-theme.ts\", themeName];\n if (options.minify) {\n compileArgs.push(\"--minify\");\n }\n\n const compileSuccess = await runCommand(\n compileArgs[0],\n compileArgs.slice(1)\n );\n\n if (!compileSuccess) {\n logger.stopSpinner(false, \"Compilation failed\");\n logger.error(\"Fix compilation errors before packaging.\");\n process.exit(1);\n }\n logger.stopSpinner(true, \"Theme compiled\");\n } else {\n logger.info(\"Skipping build (--skip-build flag)\");\n }\n\n // Check if compiled theme exists\n if (!fs.existsSync(compiledThemePath)) {\n logger.error(`Compiled theme not found at: ${compiledThemePath}`);\n logger.info(\"Run without --skip-build to compile first.\");\n process.exit(1);\n }\n\n // Step 2: Package compiled theme\n logger.newLine();\n logger.section(\"Step 2: Create Package\");\n\n // Determine output file name and path\n const packageName = options.name || `${themeName}-${version}`;\n const outputDir = options.output || path.join(process.cwd(), \"dist\");\n const outputPath = path.join(outputDir, `${packageName}.zip`);\n\n // Ensure output directory exists\n await fs.ensureDir(outputDir);\n\n // Create zip archive\n logger.startSpinner(\"Creating zip archive...\");\n\n try {\n await createZipArchive(compiledThemePath, outputPath);\n\n logger.stopSpinner(true, \"Package created\");\n\n // Get file size\n const stats = await fs.stat(outputPath);\n const sizeMB = (stats.size / 1024 / 1024).toFixed(2);\n\n // Show package info\n logger.newLine();\n logger.success(\"✓ Theme packaged successfully!\");\n logger.newLine();\n logger.info(`Package: ${packageName}.zip`);\n logger.log(`Size: ${sizeMB} MB`);\n logger.log(`Location: ${path.relative(process.cwd(), outputPath)}`);\n\n logger.newLine();\n logger.section(\"Next steps:\");\n logger.log(\n ` onex deploy --package ${path.relative(process.cwd(), outputPath)}`\n );\n } catch (error) {\n logger.stopSpinner(false, \"Failed to create package\");\n logger.error(\n error instanceof Error ? error.message : \"Unknown error occurred\"\n );\n process.exit(1);\n }\n}\n\n/**\n * Run a command and return success status\n */\nfunction runCommand(command: string, args: string[]): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(command, args, {\n cwd: process.cwd(),\n stdio: \"pipe\",\n shell: true,\n });\n\n let hasError = false;\n\n proc.stderr.on(\"data\", (data) => {\n const message = data.toString();\n if (\n message.includes(\"error\") ||\n message.includes(\"Error\") ||\n message.includes(\"ERROR\")\n ) {\n hasError = true;\n }\n });\n\n proc.on(\"close\", (code) => {\n resolve(code === 0 && !hasError);\n });\n\n proc.on(\"error\", () => {\n resolve(false);\n });\n });\n}\n\n/**\n * Create a zip archive of the compiled theme\n */\nasync function createZipArchive(\n compiledThemePath: string,\n outputPath: string\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", {\n zlib: { level: 9 }, // Maximum compression\n });\n\n output.on(\"close\", () => {\n resolve();\n });\n\n archive.on(\"error\", (err) => {\n reject(err);\n });\n\n archive.pipe(output);\n\n // Add all files from the compiled theme directory\n // This includes: bundle.js, chunks/, assets/, manifest.json, bundle-analysis.json\n archive.directory(compiledThemePath, false);\n\n archive.finalize();\n });\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport FormData from \"form-data\";\nimport fetch from \"node-fetch\";\nimport { logger } from \"../utils/logger\";\nimport { ensureOneXProject } from \"../utils/file-helpers\";\n\ninterface DeployOptions {\n theme?: string;\n package?: string;\n apiUrl?: string;\n apiKey?: string;\n environment?: \"production\" | \"staging\" | \"development\";\n}\n\nexport async function deployCommand(options: DeployOptions): Promise<void> {\n logger.header(\"Deploy Theme\");\n\n // Ensure we're in a OneX project\n ensureOneXProject();\n\n // Determine package file to upload\n let packagePath: string;\n\n if (options.package) {\n // Use specified package file\n packagePath = path.resolve(options.package);\n } else if (options.theme) {\n // Look for package in dist/\n const distDir = path.join(process.cwd(), \"dist\");\n\n if (!fs.existsSync(distDir)) {\n logger.error(\"No dist/ directory found. Run 'onex package' first.\");\n process.exit(1);\n }\n\n const files = fs.readdirSync(distDir);\n const packageFiles = files.filter(\n (f) => f.startsWith(options.theme!) && f.endsWith(\".zip\")\n );\n\n if (packageFiles.length === 0) {\n logger.error(`No package found for theme \"${options.theme}\".`);\n logger.info(\"Run: onex package --theme \" + options.theme);\n process.exit(1);\n }\n\n // Use most recent package\n packageFiles.sort().reverse();\n packagePath = path.join(distDir, packageFiles[0]);\n } else {\n logger.error(\"Either --package or --theme must be specified.\");\n logger.info(\"Examples:\");\n logger.log(\" onex deploy --package dist/tinan-1.0.0.zip\");\n logger.log(\" onex deploy --theme tinan\");\n process.exit(1);\n }\n\n // Verify package exists\n if (!fs.existsSync(packagePath)) {\n logger.error(`Package not found: ${packagePath}`);\n process.exit(1);\n }\n\n // Get package info\n const stats = await fs.stat(packagePath);\n const sizeMB = (stats.size / 1024 / 1024).toFixed(2);\n const fileName = path.basename(packagePath);\n\n logger.newLine();\n logger.info(`Package: ${fileName}`);\n logger.log(`Size: ${sizeMB} MB`);\n logger.log(`Path: ${path.relative(process.cwd(), packagePath)}`);\n logger.newLine();\n\n // Determine API URL\n const apiUrl =\n options.apiUrl || process.env.ONEX_API_URL || \"http://localhost:3001\";\n\n const uploadEndpoint = `${apiUrl}/api/themes/upload`;\n\n logger.section(\"Uploading to API Server\");\n logger.info(`Endpoint: ${uploadEndpoint}`);\n logger.newLine();\n\n // Upload package\n logger.startSpinner(\"Uploading theme package...\");\n\n try {\n const formData = new FormData();\n formData.append(\"theme\", fs.createReadStream(packagePath), {\n filename: fileName,\n contentType: \"application/zip\",\n });\n\n // Add metadata\n if (options.apiKey) {\n formData.append(\"apiKey\", options.apiKey);\n }\n if (options.environment) {\n formData.append(\"environment\", options.environment);\n }\n\n const response = await fetch(uploadEndpoint, {\n method: \"POST\",\n body: formData,\n headers: formData.getHeaders(),\n });\n\n const result = (await response.json()) as {\n error?: string;\n message?: string;\n packageId?: string;\n themeId?: string;\n version?: string;\n url?: string;\n };\n\n if (!response.ok) {\n logger.stopSpinner(false, \"Upload failed\");\n logger.error(\n `Server returned ${response.status}: ${response.statusText}`\n );\n if (result.error) {\n logger.log(`Error: ${result.error}`);\n }\n process.exit(1);\n }\n\n logger.stopSpinner(true, \"Upload complete\");\n\n // Show deployment info\n logger.newLine();\n logger.success(\"✓ Theme deployed successfully!\");\n logger.newLine();\n\n if (result.themeId) {\n logger.info(`Theme ID: ${result.themeId}`);\n }\n if (result.version) {\n logger.info(`Version: ${result.version}`);\n }\n if (result.url) {\n logger.info(`Preview URL: ${result.url}`);\n }\n\n logger.newLine();\n logger.log(\"Theme is now available on the API server!\");\n } catch (error) {\n logger.stopSpinner(false, \"Upload failed\");\n logger.error(\n `Failed to upload: ${error instanceof Error ? error.message : String(error)}`\n );\n logger.newLine();\n logger.info(\"Make sure the API server is running:\");\n logger.log(\" cd apps/api-server && pnpm dev\");\n process.exit(1);\n }\n}\n","import { S3Client, PutObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport os from \"os\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport archiver from \"archiver\";\nimport { logger } from \"../utils/logger\";\n\ninterface UploadOptions {\n theme?: string;\n bucket?: string;\n version?: string;\n environment?: \"staging\" | \"production\";\n dryRun?: boolean;\n skipSource?: boolean;\n sourceDir?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\n/**\n * Find compiled theme directory\n */\nasync function findCompiledThemeDir(\n themeId: string,\n version: string\n): Promise<string | null> {\n const searchPaths = [path.resolve(process.cwd(), \"dist\")];\n\n for (const dir of searchPaths) {\n if (await fs.pathExists(dir)) {\n // Accept dir with manifest.json (esbuild compiled) or theme entry files (tsc compiled)\n const hasManifest = await fs.pathExists(path.join(dir, \"manifest.json\"));\n const hasThemeEntry =\n (await fs.pathExists(path.join(dir, \"bundle-entry.js\"))) ||\n (await fs.pathExists(path.join(dir, \"theme.config.js\"))) ||\n (await fs.pathExists(path.join(dir, \"index.js\")));\n if (hasManifest || hasThemeEntry) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Read theme manifest\n */\nasync function readManifest(): Promise<ThemeManifest> {\n const manifestTsPath = path.resolve(process.cwd(), \"manifest.ts\");\n if (await fs.pathExists(manifestTsPath)) {\n try {\n const module = await import(manifestTsPath);\n return module.default || module;\n } catch (error) {\n logger.warning(\"Failed to import manifest.ts, trying package.json\");\n }\n }\n\n const packageJsonPath = path.resolve(process.cwd(), \"package.json\");\n if (await fs.pathExists(packageJsonPath)) {\n const pkg = await fs.readJson(packageJsonPath);\n return {\n themeId: pkg.name?.replace(\"@onex-themes/\", \"\") || \"unknown\",\n version: pkg.version || \"1.0.0\",\n };\n }\n\n throw new Error(\n \"No manifest.ts or package.json found. Are you in a theme directory?\"\n );\n}\n\n/**\n * Create a zip archive of a directory\n */\nasync function createZipFromDir(\n sourceDir: string,\n outputPath: string,\n excludePatterns: string[] = []\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const output = fs.createWriteStream(outputPath);\n const archive = archiver(\"zip\", { zlib: { level: 6 } });\n\n output.on(\"close\", () => resolve());\n archive.on(\"error\", (err: Error) => reject(err));\n archive.pipe(output);\n\n archive.glob(\"**/*\", {\n cwd: sourceDir,\n dot: true,\n ignore: excludePatterns,\n });\n\n archive.finalize();\n });\n}\n\n/**\n * Find the theme source directory\n */\nasync function findSourceDir(\n themeId: string,\n explicitDir?: string\n): Promise<string | null> {\n if (explicitDir) {\n if (await fs.pathExists(explicitDir)) return explicitDir;\n return null;\n }\n\n const searchPaths = [\n process.cwd(),\n path.resolve(process.cwd(), `../../themes/${themeId}`),\n path.resolve(process.cwd(), `../themes/${themeId}`),\n ];\n\n const markers = [\"theme.config.ts\", \"bundle-entry.ts\"];\n\n for (const dir of searchPaths) {\n for (const marker of markers) {\n if (await fs.pathExists(path.join(dir, marker))) {\n return dir;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Update latest.json pointer\n */\nasync function updateLatestPointer(\n s3Client: S3Client,\n bucket: string,\n themeId: string,\n version: string\n): Promise<void> {\n const latestData = {\n version,\n uploadedAt: new Date().toISOString(),\n };\n\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n Body: JSON.stringify(latestData, null, 2),\n ContentType: \"application/json\",\n })\n );\n}\n\n/**\n * Upload theme to S3 as zip files\n *\n * Creates bundle.zip (compiled output) and source.zip (theme source code),\n * then uploads both to S3. Much faster than uploading 100+ individual files.\n */\nexport async function uploadCommand(options: UploadOptions): Promise<void> {\n logger.header(\"Upload Theme to S3\");\n\n const spinner = ora(\"Preparing theme upload...\").start();\n\n try {\n // 1. Determine themeId and version\n let themeId: string;\n let version: string;\n\n if (options.theme) {\n themeId = options.theme;\n version = options.version || \"1.0.0\";\n } else {\n const manifest = await readManifest();\n themeId = manifest.themeId;\n version = options.version || manifest.version || \"1.0.0\";\n }\n\n spinner.text = `Found theme: ${themeId}@${version}`;\n\n // 2. Determine bucket and initialize S3 client\n const bucket = options.bucket || getBucketName(options.environment);\n const s3Client = getS3Client();\n\n // 3. Find compiled theme directory\n const compiledDir = await findCompiledThemeDir(themeId, version);\n if (!compiledDir) {\n spinner.fail(\n chalk.red(\n `Compiled theme not found for ${themeId}@${version}. Run 'onex build' first.`\n )\n );\n logger.info(chalk.gray(`Expected location:\\n` + ` - ./dist/`));\n process.exit(1);\n }\n\n spinner.succeed(`Found compiled theme at: ${compiledDir}`);\n\n // 4. Create bundle.zip\n spinner.start(\"Creating bundle.zip...\");\n const tmpDir = os.tmpdir();\n const bundleZipPath = path.join(tmpDir, `${themeId}-${version}-bundle.zip`);\n await createZipFromDir(compiledDir, bundleZipPath);\n const bundleZipBuffer = await fs.readFile(bundleZipPath);\n const bundleSizeMB = (bundleZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created bundle.zip (${bundleSizeMB} MB)`);\n\n // 5. Dry run mode — show info and exit\n if (options.dryRun) {\n spinner.info(chalk.yellow(\"Dry run mode — no files will be uploaded\"));\n console.log();\n console.log(chalk.gray(` bundle.zip: ${bundleSizeMB} MB`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/bundle.zip`\n )\n );\n\n if (!options.skipSource) {\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n if (sourceDir) {\n console.log(chalk.gray(` source dir: ${sourceDir}`));\n console.log(\n chalk.cyan(\n ` S3 path: s3://${bucket}/themes/${themeId}/${version}/source.zip`\n )\n );\n } else {\n console.log(\n chalk.yellow(\" source dir: not found (source.zip will be skipped)\")\n );\n }\n }\n\n console.log();\n await fs.remove(bundleZipPath);\n return;\n }\n\n // 6. Upload bundle.zip\n spinner.start(\"Uploading bundle.zip to S3...\");\n const bundleS3Key = `themes/${themeId}/${version}/bundle.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: bundleS3Key,\n Body: bundleZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded bundle.zip ${chalk.gray(`→ s3://${bucket}/${bundleS3Key}`)}`\n );\n await fs.remove(bundleZipPath);\n\n // 7. Create + upload source.zip (unless --skip-source)\n let sourceUploaded = false;\n if (!options.skipSource) {\n spinner.start(\"Looking for source directory...\");\n const sourceDir = await findSourceDir(themeId, options.sourceDir);\n\n if (sourceDir) {\n spinner.succeed(`Found source at: ${sourceDir}`);\n spinner.start(\"Creating source.zip...\");\n\n const sourceZipPath = path.join(\n tmpDir,\n `${themeId}-${version}-source.zip`\n );\n await createZipFromDir(sourceDir, sourceZipPath, [\n \"node_modules/**\",\n \"dist/**\",\n \".git/**\",\n \"*.zip\",\n \".next/**\",\n \".turbo/**\",\n ]);\n\n const sourceZipBuffer = await fs.readFile(sourceZipPath);\n const sourceSizeMB = (sourceZipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Created source.zip (${sourceSizeMB} MB)`);\n\n spinner.start(\"Uploading source.zip to S3...\");\n const sourceS3Key = `themes/${themeId}/${version}/source.zip`;\n await s3Client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: sourceS3Key,\n Body: sourceZipBuffer,\n ContentType: \"application/zip\",\n })\n );\n spinner.succeed(\n `Uploaded source.zip ${chalk.gray(`→ s3://${bucket}/${sourceS3Key}`)}`\n );\n\n await fs.remove(sourceZipPath);\n sourceUploaded = true;\n } else {\n spinner.warn(\n chalk.yellow(\"Source directory not found — skipping source.zip\")\n );\n }\n }\n\n // 8. Update latest.json pointer\n spinner.start(\"Updating latest.json pointer...\");\n await updateLatestPointer(s3Client, bucket, themeId, version);\n spinner.succeed(\"Updated latest.json pointer\");\n\n // 9. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme uploaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${version}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(\n chalk.cyan(\" Files: \") +\n chalk.white(`bundle.zip${sourceUploaded ? \" + source.zip\" : \"\"}`)\n );\n console.log(\n chalk.cyan(\" Path: \") +\n chalk.gray(`s3://${bucket}/themes/${themeId}/${version}/`)\n );\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Upload failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\n\ninterface DownloadOptions {\n themeId?: string;\n version?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n output?: string;\n}\n\ninterface ThemeManifest {\n themeId: string;\n version: string;\n compiledAt: string;\n counts: {\n sections: number;\n blocks: number;\n schemas: number;\n };\n output: {\n entry: string;\n chunks: string[];\n assets: string[];\n };\n [key: string]: any;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\n/**\n * Convert stream to string\n */\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\n/**\n * Convert stream to buffer\n */\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n\n const body = await streamToString(response.Body as Readable);\n const data = JSON.parse(body);\n return data.version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Create compatibility files for module resolution\n *\n * Creates sections-registry.js that re-exports from the bundle entry file\n * and a stable bundle-entry.js alias if the entry is content-hashed.\n */\nasync function createCompatibilityFiles(\n outputDir: string,\n manifest: ThemeManifest\n): Promise<void> {\n const entryFile = manifest.output?.entry || \"bundle-entry.js\";\n\n // If entry is content-hashed (e.g., bundle-entry-2d936738.js),\n // create a stable bundle-entry.js copy for import compatibility\n if (\n entryFile !== \"bundle-entry.js\" &&\n entryFile.startsWith(\"bundle-entry-\")\n ) {\n const hashedPath = path.join(outputDir, entryFile);\n const stablePath = path.join(outputDir, \"bundle-entry.js\");\n if (await fs.pathExists(hashedPath)) {\n await fs.copy(hashedPath, stablePath);\n // Also copy source map if it exists\n const mapPath = hashedPath + \".map\";\n if (await fs.pathExists(mapPath)) {\n await fs.copy(mapPath, stablePath + \".map\");\n }\n }\n }\n\n // Create sections-registry.js pointing to stable bundle-entry.js\n const sectionsRegistryPath = path.join(outputDir, \"sections-registry.js\");\n const content = `// Re-export all sections from bundle-entry\\n// This file exists to maintain compatibility with the import path\\nexport * from './bundle-entry.js';\\n`;\n await fs.writeFile(sectionsRegistryPath, content, \"utf-8\");\n\n // Create package.json with \"type\": \"module\" for ESM support\n const pkgJsonPath = path.join(outputDir, \"package.json\");\n await fs.writeFile(pkgJsonPath, '{\\n \"type\": \"module\"\\n}\\n', \"utf-8\");\n}\n\n/**\n * Show helpful error message when download fails\n */\nfunction showDownloadFailureHelp(themeId: string, bucket: string): void {\n console.log();\n logger.error(chalk.red.bold(\"Theme download failed\"));\n console.log();\n console.log(chalk.yellow(\"Possible reasons:\"));\n console.log(chalk.gray(\" 1. Theme not uploaded to S3 yet\"));\n console.log(chalk.gray(\" 2. AWS credentials not configured correctly\"));\n console.log(chalk.gray(\" 3. Bucket name or region is incorrect\"));\n console.log(chalk.gray(\" 4. bundle.zip is missing or corrupted\"));\n console.log();\n console.log(chalk.cyan.bold(\"To fix this:\"));\n console.log();\n console.log(chalk.white(\"1. Compile and upload the theme:\"));\n console.log(chalk.gray(` cd themes/${themeId}`));\n console.log(chalk.gray(\" pnpm build\"));\n console.log(chalk.gray(\" onex upload\"));\n console.log();\n console.log(chalk.white(\"2. Verify AWS credentials are set:\"));\n console.log(\n chalk.gray(\" - Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\")\n );\n console.log(chalk.gray(\" - Or use AWS_PROFILE=your-profile\"));\n console.log(chalk.gray(\" - Set AWS_REGION (e.g., ap-southeast-1)\"));\n console.log();\n console.log(chalk.white(\"3. Check bucket configuration:\"));\n console.log(chalk.gray(` Current bucket: ${bucket}`));\n console.log(\n chalk.gray(\" Set BUCKET_NAME environment variable if different\")\n );\n console.log();\n console.log(chalk.white(\"4. Verify theme exists in S3:\"));\n console.log(chalk.gray(` aws s3 ls s3://${bucket}/themes/${themeId}/`));\n console.log();\n}\n\n/**\n * Download theme from S3\n *\n * Downloads bundle.zip (single S3 request) and extracts all files locally.\n * Much faster than downloading 100+ individual files.\n */\nexport async function downloadCommand(options: DownloadOptions): Promise<void> {\n logger.header(\"Download Theme from S3\");\n\n const spinner = ora(\"Initializing download...\").start();\n\n try {\n // 1. Get theme ID and version\n const themeId =\n options.themeId ||\n process.env.NEXT_PUBLIC_THEME_ID ||\n process.env.THEME_ID;\n const version = options.version || process.env.THEME_VERSION || \"latest\";\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || \"./active-theme\";\n\n if (!themeId) {\n spinner.fail(\n chalk.red(\n \"Theme ID not specified. Use --theme-id or set NEXT_PUBLIC_THEME_ID environment variable.\"\n )\n );\n process.exit(1);\n }\n\n spinner.text = `Downloading ${themeId}@${version} from ${bucket}...`;\n\n // 2. Initialize S3 client\n const s3Client = getS3Client();\n\n // 3. Resolve version if \"latest\"\n let resolvedVersion = version;\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n resolvedVersion = await resolveLatestVersion(s3Client, bucket, themeId);\n spinner.succeed(\n `Resolved latest version: ${chalk.cyan(resolvedVersion)}`\n );\n }\n\n // 4. Download bundle.zip\n spinner.start(\n `Downloading bundle.zip for ${themeId}@${resolvedVersion}...`\n );\n const s3Key = `themes/${themeId}/${resolvedVersion}/bundle.zip`;\n\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n\n const zipBuffer = await streamToBuffer(response.Body as Readable);\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded bundle.zip (${sizeMB} MB)`);\n\n // 5. Extract to output directory\n spinner.start(\"Extracting bundle...\");\n await fs.remove(outputDir);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files to ${outputDir}`);\n\n // 6. Create compatibility files\n const manifestPath = path.join(outputDir, \"manifest.json\");\n const manifest: ThemeManifest = await fs.readJson(manifestPath);\n await createCompatibilityFiles(outputDir, manifest);\n\n // 7. Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme downloaded successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Theme: \") + chalk.white(`${themeId}@${resolvedVersion}`)\n );\n console.log(chalk.cyan(\" Bucket: \") + chalk.white(bucket));\n console.log(chalk.cyan(\" Output: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n if (manifest.counts) {\n console.log(\n chalk.cyan(\" Sections:\") + chalk.white(` ${manifest.counts.sections}`)\n );\n }\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(\"Download failed\"));\n logger.error(error.message);\n\n const themeId =\n options.themeId || process.env.NEXT_PUBLIC_THEME_ID || \"unknown\";\n const bucket = options.bucket || getBucketName(options.environment);\n\n showDownloadFailureHelp(themeId, bucket);\n process.exit(1);\n }\n}\n","import { S3Client, GetObjectCommand } from \"@aws-sdk/client-s3\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Readable } from \"stream\";\nimport { spawn } from \"child_process\";\nimport { createRequire } from \"module\";\nimport AdmZip from \"adm-zip\";\nimport { logger } from \"../utils/logger\";\nimport { glob } from \"glob\";\n\ninterface CloneOptions {\n version?: string;\n output?: string;\n bucket?: string;\n environment?: \"staging\" | \"production\";\n install?: boolean;\n name?: string;\n}\n\n/**\n * Initialize S3 client with support for AWS/MinIO/LocalStack\n */\nfunction getS3Client(): S3Client {\n const adapterMode = (process.env.ADAPTER_MODE || \"aws\").trim().toLowerCase();\n\n if (adapterMode === \"vps\") {\n const endpoint = process.env.MINIO_ENDPOINT || \"localhost:9000\";\n const secure = process.env.MINIO_SECURE === \"true\";\n const endpointUrl = endpoint.startsWith(\"http\")\n ? endpoint\n : `${secure ? \"https\" : \"http\"}://${endpoint}`;\n\n return new S3Client({\n endpoint: endpointUrl,\n region: \"us-east-1\",\n credentials: {\n accessKeyId: process.env.MINIO_ACCESS_KEY || \"minioadmin\",\n secretAccessKey: process.env.MINIO_SECRET_KEY || \"minioadmin\",\n },\n forcePathStyle: true,\n });\n }\n\n if (adapterMode === \"local\") {\n return new S3Client({\n endpoint: \"http://localhost:4569\",\n region: \"ap-southeast-1\",\n credentials: {\n accessKeyId: \"S3RVER\",\n secretAccessKey: \"S3RVER\",\n },\n forcePathStyle: true,\n });\n }\n\n return new S3Client({\n region: process.env.AWS_REGION || \"ap-southeast-1\",\n });\n}\n\n/**\n * Get S3 bucket name based on environment\n */\nfunction getBucketName(env?: \"staging\" | \"production\"): string {\n if (process.env.BUCKET_NAME) {\n return process.env.BUCKET_NAME;\n }\n const environment = env || process.env.ENVIRONMENT || \"staging\";\n return environment === \"production\"\n ? \"onex-themes-prod\"\n : \"onex-themes-staging\";\n}\n\nasync function streamToString(stream: Readable): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n}\n\n/**\n * Resolve latest version from S3 via latest.json pointer\n */\nasync function resolveLatestVersion(\n s3Client: S3Client,\n bucket: string,\n themeId: string\n): Promise<string> {\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: `themes/${themeId}/latest.json`,\n })\n );\n const body = await streamToString(response.Body as Readable);\n return JSON.parse(body).version;\n } catch (error: any) {\n throw new Error(\n `Failed to resolve latest version for theme \"${themeId}\": ${error.message}`\n );\n }\n}\n\n/**\n * Run pnpm install in a directory\n */\nfunction runInstall(cwd: string): Promise<boolean> {\n return new Promise((resolve) => {\n const proc = spawn(\"pnpm\", [\"install\"], {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n proc.on(\"close\", (code) => resolve(code === 0));\n proc.on(\"error\", () => resolve(false));\n });\n}\n\n/**\n * Prompt user for new theme name using inquirer\n */\nasync function promptThemeName(originalName: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { themeName } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"themeName\",\n message: \"New theme name (kebab-case):\",\n default: `my-${originalName}`,\n validate: (input: string) => {\n if (!/^[a-z][a-z0-9-]*$/.test(input)) {\n return \"Theme name must be kebab-case (lowercase letters, numbers, hyphens)\";\n }\n if (input === originalName) {\n return `Name must differ from the original theme \"${originalName}\"`;\n }\n return true;\n },\n },\n ]);\n return themeName;\n}\n\n/**\n * Rename all theme references in the cloned source.\n *\n * Updates:\n * - package.json (name, description)\n * - theme.config.ts (id, name)\n * - theme.layout.ts (id, name)\n * - sections schemas (type: \"old-hero\" → \"new-hero\")\n * - pages configs (type references)\n */\nasync function renameTheme(\n themeDir: string,\n oldName: string,\n newName: string\n): Promise<void> {\n const oldPrefix = `${oldName}-`;\n const newPrefix = `${newName}-`;\n const newDisplayName = newName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n // 1. package.json\n const pkgPath = path.join(themeDir, \"package.json\");\n if (await fs.pathExists(pkgPath)) {\n const pkg = await fs.readJson(pkgPath);\n pkg.name = `@onex-themes/${newName}`;\n if (pkg.description) {\n pkg.description = pkg.description.replace(\n new RegExp(oldName, \"gi\"),\n newDisplayName\n );\n }\n pkg.version = \"1.0.0\";\n await fs.writeJson(pkgPath, pkg, { spaces: 2 });\n }\n\n // 2. theme.config.ts\n const configPath = path.join(themeDir, \"theme.config.ts\");\n if (await fs.pathExists(configPath)) {\n let content = await fs.readFile(configPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(configPath, content);\n }\n\n // 3. theme.layout.ts\n const layoutPath = path.join(themeDir, \"theme.layout.ts\");\n if (await fs.pathExists(layoutPath)) {\n let content = await fs.readFile(layoutPath, \"utf-8\");\n content = content.replace(/id:\\s*\"[^\"]*\"/, `id: \"${newName}\"`);\n content = content.replace(\n /name:\\s*\"[^\"]*Theme\"/,\n `name: \"${newDisplayName} Theme\"`\n );\n await fs.writeFile(layoutPath, content);\n }\n\n // 4. All .ts files: replace theme references\n const oldDisplayName = oldName\n .split(\"-\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const tsFiles = await glob(\"**/*.ts\", { cwd: themeDir, nodir: true });\n for (const file of tsFiles) {\n const filePath = path.join(themeDir, file);\n let content = await fs.readFile(filePath, \"utf-8\");\n const original = content;\n\n // Replace section type strings: \"simple-hero\" → \"mytheme-hero\"\n content = content.replace(\n new RegExp(`\"${oldPrefix}`, \"g\"),\n `\"${newPrefix}`\n );\n\n // Replace themeId: \"simple\" → \"mytheme\"\n content = content.replace(\n new RegExp(`themeId:\\\\s*\"${oldName}\"`, \"g\"),\n `themeId: \"${newName}\"`\n );\n\n // Replace display names in titles/comments: \"Simple Theme\" → \"My Theme\"\n content = content.replace(\n new RegExp(`${oldDisplayName} Theme`, \"g\"),\n `${newDisplayName} Theme`\n );\n\n if (content !== original) {\n await fs.writeFile(filePath, content);\n }\n }\n}\n\n/**\n * Clone theme source code from S3\n *\n * Downloads source.zip and extracts it to a local directory.\n * Asks the user for a new theme name to differentiate from the original.\n */\nexport async function cloneCommand(\n themeName: string,\n options: CloneOptions\n): Promise<void> {\n logger.header(\"Clone Theme Source\");\n\n // Prompt for new theme name (unless --name was provided)\n let newName = options.name;\n if (!newName) {\n newName = await promptThemeName(themeName);\n }\n\n const spinner = ora(\"Initializing clone...\").start();\n\n try {\n const bucket = options.bucket || getBucketName(options.environment);\n const outputDir = options.output || path.resolve(process.cwd(), newName);\n const s3Client = getS3Client();\n\n // Check if output directory already exists\n if (await fs.pathExists(outputDir)) {\n spinner.fail(chalk.red(`Directory already exists: ${outputDir}`));\n logger.info(\n chalk.gray(\n \"Use -o to specify a different output directory, or remove the existing directory.\"\n )\n );\n process.exit(1);\n }\n\n // Resolve version\n let version = options.version || \"latest\";\n if (version === \"latest\") {\n spinner.text = \"Resolving latest version...\";\n version = await resolveLatestVersion(s3Client, bucket, themeName);\n spinner.succeed(`Resolved latest version: ${chalk.cyan(version)}`);\n }\n\n // Download source.zip\n spinner.start(`Downloading source.zip for ${themeName}@${version}...`);\n const s3Key = `themes/${themeName}/${version}/source.zip`;\n\n let zipBuffer: Buffer;\n try {\n const response = await s3Client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: s3Key,\n })\n );\n zipBuffer = await streamToBuffer(response.Body as Readable);\n } catch (error: any) {\n spinner.fail(chalk.red(`Source not found: s3://${bucket}/${s3Key}`));\n console.log();\n console.log(\n chalk.yellow(\"The theme source may not have been uploaded yet.\")\n );\n console.log(\n chalk.gray(`Upload source with: onex upload --theme ${themeName}`)\n );\n console.log();\n process.exit(1);\n }\n\n const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(2);\n spinner.succeed(`Downloaded source.zip (${sizeMB} MB)`);\n\n // Extract to output directory\n spinner.start(`Extracting to ${outputDir}...`);\n await fs.ensureDir(outputDir);\n\n const zip = new AdmZip(zipBuffer);\n zip.extractAllTo(outputDir, true);\n\n const entries = zip.getEntries().filter((e) => !e.isDirectory);\n spinner.succeed(`Extracted ${entries.length} files`);\n\n // Rename theme references\n spinner.start(\n `Renaming theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}...`\n );\n await renameTheme(outputDir, themeName, newName);\n spinner.succeed(\n `Renamed theme: ${chalk.gray(themeName)} → ${chalk.cyan(newName)}`\n );\n\n // Optionally install dependencies\n if (options.install !== false) {\n const hasPkgJson = await fs.pathExists(\n path.join(outputDir, \"package.json\")\n );\n if (hasPkgJson) {\n spinner.start(\"Installing dependencies...\");\n const success = await runInstall(outputDir);\n if (success) {\n spinner.succeed(\"Dependencies installed\");\n } else {\n spinner.warn(\n chalk.yellow(\n \"Failed to install dependencies — run 'pnpm install' manually\"\n )\n );\n }\n }\n }\n\n // Success message\n console.log();\n logger.success(chalk.green.bold(\"Theme cloned successfully!\"));\n console.log();\n console.log(\n chalk.cyan(\" Source: \") + chalk.gray(`${themeName}@${version}`)\n );\n console.log(chalk.cyan(\" Theme: \") + chalk.white(newName));\n console.log(chalk.cyan(\" Location: \") + chalk.white(outputDir));\n console.log(chalk.cyan(\" Files: \") + chalk.white(entries.length));\n console.log();\n console.log(chalk.cyan(\"Next steps:\"));\n console.log(chalk.gray(` cd ${path.relative(process.cwd(), outputDir)}`));\n if (options.install === false) {\n console.log(chalk.gray(\" pnpm install\"));\n }\n console.log(chalk.gray(\" onex build\"));\n console.log();\n } catch (error: any) {\n spinner.fail(chalk.red(`Clone failed: ${error.message}`));\n logger.error(error.stack || error.message);\n process.exit(1);\n }\n}\n","import path from \"path\";\nimport fsNode from \"fs/promises\";\nimport fs from \"fs-extra\";\nimport chokidar from \"chokidar\";\nimport { logger } from \"../utils/logger\";\nimport { getThemesDir } from \"../utils/file-helpers\";\nimport {\n compileStandaloneThemeDev,\n compilePreviewRuntime,\n generateManifest,\n} from \"../utils/compile-theme\";\nimport { createDevServer } from \"../utils/dev-server\";\n\ninterface DevOptions {\n theme?: string;\n port?: string;\n open?: boolean;\n}\n\nexport async function devCommand(options: DevOptions): Promise<void> {\n logger.header(\"OneX Dev Server\");\n\n // 1. Resolve theme path (same pattern as build.ts)\n let themePath: string;\n let themeName: string;\n\n if (options.theme) {\n themeName = options.theme;\n try {\n const workspaceThemePath = path.join(getThemesDir(), themeName);\n if (fs.existsSync(workspaceThemePath)) {\n themePath = workspaceThemePath;\n } else {\n themePath = path.join(process.cwd(), themeName);\n }\n } catch {\n themePath = path.join(process.cwd(), themeName);\n }\n\n if (!fs.existsSync(themePath)) {\n logger.error(`Theme \"${themeName}\" not found.`);\n process.exit(1);\n }\n } else {\n const isThemeDir = [\n \"theme.config.ts\",\n \"bundle-entry.ts\",\n \"manifest.ts\",\n ].some((f) => fs.existsSync(path.join(process.cwd(), f)));\n if (isThemeDir) {\n themePath = process.cwd();\n themeName = path.basename(themePath);\n } else {\n logger.error(\n \"Not in a theme directory and no --theme specified. Run from theme root or use --theme flag.\"\n );\n process.exit(1);\n }\n }\n\n // 2. Compile preview runtime (one-time)\n logger.startSpinner(\"Compiling preview runtime...\");\n const previewRuntimePath = await compilePreviewRuntime(themePath);\n logger.stopSpinner(true, \"Preview runtime compiled\");\n\n // 3. Initial theme compile (incremental context)\n logger.startSpinner(\"Compiling theme...\");\n const { context, outputDir } = await compileStandaloneThemeDev(\n themePath,\n themeName\n );\n logger.stopSpinner(true, \"Theme compiled\");\n\n // 4. Start dev server\n const port = Number(options.port) || 3456;\n const server = createDevServer({\n port,\n distDir: outputDir,\n previewRuntimePath,\n themeName,\n });\n\n // 5. Start file watcher\n const watcher = chokidar.watch(\n [\n \"sections\",\n \"blocks\",\n \"components\",\n \"pages\",\n \"theme.config.ts\",\n \"theme.layout.ts\",\n \"bundle-entry.ts\",\n \"sections-registry.ts\",\n ],\n { cwd: themePath, ignoreInitial: true }\n );\n\n let debounceTimer: ReturnType<typeof setTimeout> | undefined;\n\n watcher.on(\"all\", (_event, filePath) => {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(async () => {\n logger.info(`File changed: ${filePath}`);\n try {\n await context.rebuild();\n await generateManifest(themeName, themePath, outputDir);\n server.broadcast({ type: \"reload\", timestamp: Date.now() });\n logger.success(\"Rebuilt successfully\");\n } catch (error) {\n server.broadcast({ type: \"error\", message: String(error) });\n logger.error(`Rebuild failed: ${error}`);\n }\n }, 150);\n });\n\n // 6. Print URLs\n logger.newLine();\n logger.success(`Theme compiled: ${themeName}`);\n logger.info(`Preview: http://localhost:${port}`);\n logger.info(\"Watching for changes...\");\n logger.newLine();\n\n // 7. Open browser\n if (options.open !== false) {\n const open = await import(\"open\");\n open.default(`http://localhost:${port}`);\n }\n\n // 8. Keep alive until Ctrl+C\n process.on(\"SIGINT\", async () => {\n logger.newLine();\n logger.info(\"Shutting down...\");\n watcher.close();\n await context.dispose();\n server.close();\n // Clean up process shim left for incremental rebuilds\n const shimPath = path.join(outputDir, \".process-shim.js\");\n try { await fsNode.unlink(shimPath); } catch {}\n process.exit(0);\n });\n}\n","import http from \"node:http\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { WebSocketServer, WebSocket } from \"ws\";\n\ninterface DevServerOptions {\n port: number;\n distDir: string;\n previewRuntimePath: string;\n themeName: string;\n}\n\nconst MIME_TYPES: Record<string, string> = {\n \".js\": \"application/javascript\",\n \".mjs\": \"application/javascript\",\n \".css\": \"text/css\",\n \".json\": \"application/json\",\n \".html\": \"text/html\",\n \".svg\": \"image/svg+xml\",\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".webp\": \"image/webp\",\n \".gif\": \"image/gif\",\n \".map\": \"application/json\",\n};\n\nexport function createDevServer(options: DevServerOptions) {\n const clients = new Set<WebSocket>();\n\n const server = http.createServer((req, res) => {\n // CORS + no-cache headers on ALL responses\n res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET, OPTIONS\");\n res.setHeader(\"Cache-Control\", \"no-store, no-cache, must-revalidate\");\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(200);\n res.end();\n return;\n }\n\n const url = new URL(req.url || \"/\", `http://localhost:${options.port}`);\n const pathname = url.pathname;\n\n // Route: GET / → preview HTML page\n if (pathname === \"/\" || pathname === \"/index.html\") {\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(generatePreviewHTML(options.themeName, options.port));\n return;\n }\n\n // Route: GET /preview-runtime.js → compiled preview runtime\n if (pathname === \"/preview-runtime.js\") {\n serveFile(res, options.previewRuntimePath);\n return;\n }\n\n // Route: GET /* → serve from dist/ directory\n const filePath = path.join(options.distDir, pathname);\n // Security: prevent path traversal\n if (!filePath.startsWith(options.distDir)) {\n res.writeHead(403);\n res.end(\"Forbidden\");\n return;\n }\n\n serveFile(res, filePath);\n });\n\n // WebSocket server on same HTTP server\n const wss = new WebSocketServer({ server });\n wss.on(\"connection\", (ws) => {\n clients.add(ws);\n ws.on(\"close\", () => clients.delete(ws));\n });\n\n server.listen(options.port);\n\n return {\n broadcast(message: object) {\n const data = JSON.stringify(message);\n for (const client of clients) {\n if (client.readyState === WebSocket.OPEN) {\n client.send(data);\n }\n }\n },\n close() {\n wss.close();\n server.close();\n },\n };\n}\n\nfunction serveFile(res: http.ServerResponse, filePath: string) {\n try {\n if (!fs.existsSync(filePath)) {\n res.writeHead(404);\n res.end(\"Not Found\");\n return;\n }\n\n const ext = path.extname(filePath);\n const contentType = MIME_TYPES[ext] || \"application/octet-stream\";\n const content = fs.readFileSync(filePath);\n\n res.writeHead(200, { \"Content-Type\": contentType });\n res.end(content);\n } catch {\n res.writeHead(500);\n res.end(\"Internal Server Error\");\n }\n}\n\nfunction generatePreviewHTML(themeName: string, port: number): string {\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>OneX Dev — ${themeName}</title>\n <!-- Tailwind CSS Play CDN — JIT compilation in browser for dev preview -->\n <script src=\"https://cdn.tailwindcss.com\"></script>\n <style>\n #onex-dev-toolbar {\n position: fixed; top: 0; left: 0; right: 0; z-index: 9999;\n height: 40px; background: #1a1a2e; color: #e0e0e0;\n display: flex; align-items: center; padding: 0 16px; gap: 16px;\n font-family: system-ui; font-size: 13px;\n border-bottom: 2px solid #16213e;\n }\n #onex-dev-toolbar .status { width: 8px; height: 8px; border-radius: 50%; }\n #onex-dev-toolbar .status.connected { background: #00ff88; }\n #onex-dev-toolbar .status.disconnected { background: #ff4444; }\n #onex-dev-toolbar .status.rebuilding { background: #ffaa00; animation: pulse 0.5s infinite; }\n @keyframes pulse { 50% { opacity: 0.5; } }\n #onex-preview-root { margin-top: 40px; }\n </style>\n</head>\n<body>\n <div id=\"onex-dev-toolbar\">\n <span style=\"font-weight:600;\">OneX Dev</span>\n <span style=\"color:#888;\">|</span>\n <span>${themeName}</span>\n <span style=\"color:#888;\">|</span>\n <span id=\"page-indicator\">Home</span>\n <span style=\"color:#888;\">|</span>\n <span class=\"status connected\" id=\"ws-status\"></span>\n <span id=\"ws-label\">Connected</span>\n </div>\n <div id=\"onex-preview-root\"></div>\n <script type=\"module\" src=\"/preview-runtime.js\"></script>\n</body>\n</html>`;\n}\n","#!/usr/bin/env node\n\nimport path from \"path\";\nimport os from \"os\";\nimport dotenv from \"dotenv\";\nimport { getProjectRoot } from \"./utils/file-helpers\";\n\n// Load .env files: project root first, then global fallback (~/.onex/.env)\ntry {\n const projectRoot = getProjectRoot();\n dotenv.config({\n path: path.join(projectRoot, \".env.local\"),\n quiet: true,\n } as any);\n dotenv.config({ path: path.join(projectRoot, \".env\"), quiet: true } as any);\n} catch {\n // Not in a valid project directory — skip project-level .env\n}\ndotenv.config({\n path: path.join(os.homedir(), \".onex\", \".env\"),\n quiet: true,\n} as any);\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { initCommand } from \"./commands/init\";\nimport { createSectionCommand } from \"./commands/create-section\";\nimport { createBlockCommand } from \"./commands/create-block\";\nimport { createComponentCommand } from \"./commands/create-component\";\nimport { listCommand } from \"./commands/list\";\nimport { validateCommand } from \"./commands/validate\";\nimport { buildCommand } from \"./commands/build\";\nimport { packageCommand } from \"./commands/package\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { uploadCommand } from \"./commands/upload\";\nimport { downloadCommand } from \"./commands/download\";\nimport { cloneCommand } from \"./commands/clone\";\nimport { devCommand } from \"./commands/dev\";\n\nconst program = new Command();\n\nprogram\n .name(\"onex\")\n .description(\"CLI tool for OneX theme development\")\n .version(\"0.1.0\");\n\n// Init command\nprogram\n .command(\"init\")\n .description(\"Create a new OneX theme project\")\n .argument(\"[project-name]\", \"Name of the project\")\n .option(\n \"-t, --template <template>\",\n \"Template to use (default, minimal)\",\n \"default\"\n )\n .option(\"--no-install\", \"Skip installing dependencies\")\n .option(\"--git\", \"Initialize git repository\")\n .option(\"-y, --yes\", \"Skip prompts and use defaults\")\n .action(initCommand);\n\n// Create section command\nprogram\n .command(\"create:section\")\n .alias(\"cs\")\n .description(\"Create a new section\")\n .argument(\"<name>\", \"Name of the section (e.g., hero, features)\")\n .option(\"-t, --theme <theme>\", \"Theme to create section in\")\n .option(\n \"-c, --category <category>\",\n \"Section category (headers, content, footers)\"\n )\n .option(\n \"--template <template>\",\n \"Initial template variant (default, minimal)\"\n )\n .action(createSectionCommand);\n\n// Create block command\nprogram\n .command(\"create:block\")\n .alias(\"cb\")\n .description(\"Create a new block\")\n .argument(\n \"<name>\",\n \"Name of the block (e.g., product-card, testimonial-item)\"\n )\n .option(\"-t, --theme <theme>\", \"Theme to create block in (optional)\")\n .action(createBlockCommand);\n\n// Create component command\nprogram\n .command(\"create:component\")\n .alias(\"cc\")\n .description(\"Create a new component\")\n .argument(\"<name>\", \"Name of the component (e.g., button, badge)\")\n .option(\"-t, --type <type>\", \"Component type (ui, layout, form)\")\n .action(createComponentCommand);\n\n// List command\nprogram\n .command(\"list\")\n .description(\"List available themes, sections, blocks, and components\")\n .option(\"-s, --sections\", \"List sections only\")\n .option(\"-b, --blocks\", \"List blocks only\")\n .option(\"-c, --components\", \"List components only\")\n .option(\"-t, --theme <theme>\", \"Filter by theme\")\n .action(listCommand);\n\n// Validate command\nprogram\n .command(\"validate\")\n .description(\"Validate theme structure and files\")\n .option(\"-t, --theme <theme>\", \"Theme to validate\")\n .option(\"-f, --fix\", \"Auto-fix issues if possible (not implemented yet)\")\n .action(validateCommand);\n\n// Dev command\nprogram\n .command(\"dev\")\n .description(\"Start dev server with live preview and hot reload\")\n .option(\"-t, --theme <theme>\", \"Theme to develop\")\n .option(\"-p, --port <port>\", \"Dev server port\", \"3456\")\n .option(\"--no-open\", \"Don't open browser automatically\")\n .action(devCommand);\n\n// Build command\nprogram\n .command(\"build\")\n .description(\"Build theme for production\")\n .option(\"-t, --theme <theme>\", \"Theme to build\")\n .option(\"-p, --production\", \"Production build with optimizations\")\n .option(\"-w, --watch\", \"Watch mode for development\")\n .action(buildCommand);\n\n// Package command\nprogram\n .command(\"package\")\n .description(\"Compile and package theme as distributable zip file\")\n .option(\"-t, --theme <theme>\", \"Theme to package\")\n .option(\"-o, --output <dir>\", \"Output directory for package\")\n .option(\"-n, --name <name>\", \"Custom package name\")\n .option(\"-m, --minify\", \"Minify compiled output\")\n .option(\"--skip-build\", \"Skip compilation step (use existing compiled theme)\")\n .action(packageCommand);\n\n// Deploy command\nprogram\n .command(\"deploy\")\n .description(\"Upload theme package to API server\")\n .option(\"-t, --theme <theme>\", \"Theme to deploy (finds latest package)\")\n .option(\"-p, --package <file>\", \"Specific package file to upload\")\n .option(\"--api-url <url>\", \"API server URL (default: http://localhost:3001)\")\n .option(\"-k, --api-key <key>\", \"API key for authentication\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (production, staging, development)\"\n )\n .action(deployCommand);\n\n// Upload command (S3)\nprogram\n .command(\"upload\")\n .description(\"Upload compiled theme to S3 bucket\")\n .option(\"-t, --theme <theme>\", \"Theme to upload\")\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\"-v, --version <version>\", \"Theme version\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"--dry-run\", \"Show what would be uploaded without uploading\")\n .option(\"--skip-source\", \"Skip uploading source.zip\")\n .option(\"--source-dir <dir>\", \"Source directory path\")\n .action(uploadCommand);\n\n// Download command (S3)\nprogram\n .command(\"download\")\n .description(\"Download theme from S3 bucket\")\n .option(\"-t, --theme-id <id>\", \"Theme ID to download\")\n .option(\n \"-v, --version <version>\",\n \"Theme version (default: latest)\",\n \"latest\"\n )\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"-o, --output <dir>\", \"Output directory\", \"./active-theme\")\n .action(downloadCommand);\n\n// Clone command (S3 source)\nprogram\n .command(\"clone\")\n .description(\"Clone theme source code from S3\")\n .argument(\"<theme-name>\", \"Theme to clone\")\n .option(\n \"-v, --version <version>\",\n \"Theme version (default: latest)\",\n \"latest\"\n )\n .option(\"-n, --name <name>\", \"New theme name (skips interactive prompt)\")\n .option(\"-o, --output <dir>\", \"Output directory\")\n .option(\"-b, --bucket <name>\", \"S3 bucket name\")\n .option(\n \"-e, --environment <env>\",\n \"Environment (staging|production)\",\n \"staging\"\n )\n .option(\"--no-install\", \"Skip running pnpm install after clone\")\n .action(cloneCommand);\n\n// Error handling\nprogram.configureOutput({\n writeErr: (str) => process.stderr.write(chalk.red(str)),\n});\n\nprogram.parse();\n"]}