@marwes-ui/cli 0.1.0 → 0.2.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/command-runner.ts","../src/package-manager.ts","../src/recipes.ts","../src/doctor.ts","../src/patchers.ts","../src/init.ts","../src/create.ts","../src/index.ts","../src/cli.ts"],"names":["resolve","installCommand","join","exitCode","access","readFile"],"mappings":"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","file":"cli.js","sourcesContent":["import { spawn } from \"node:child_process\"\nimport type { ShellCommand } from \"./package-manager\"\n\nexport type CommandRunner = (\n command: ShellCommand,\n options: {\n cwd: string\n },\n) => Promise<number>\n\nexport const defaultCommandRunner: CommandRunner = (command, options) => {\n return new Promise((resolve, reject) => {\n const child = spawn(command.command, command.args, {\n cwd: options.cwd,\n stdio: \"inherit\",\n shell: process.platform === \"win32\",\n })\n\n child.on(\"error\", reject)\n child.on(\"exit\", (code) => resolve(code ?? 1))\n })\n}\n","import { access } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport type { PackageManager } from \"./recipes\"\n\nexport type ShellCommand = {\n command: string\n args: string[]\n}\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nexport async function detectPackageManager(cwd: string): Promise<PackageManager> {\n if (await exists(join(cwd, \"pnpm-lock.yaml\"))) {\n return \"pnpm\"\n }\n\n if ((await exists(join(cwd, \"bun.lockb\"))) || (await exists(join(cwd, \"bun.lock\")))) {\n return \"bun\"\n }\n\n if (await exists(join(cwd, \"yarn.lock\"))) {\n return \"yarn\"\n }\n\n if (await exists(join(cwd, \"package-lock.json\"))) {\n return \"npm\"\n }\n\n return \"pnpm\"\n}\n\nexport function installCommand(\n packageManager: PackageManager,\n packages: readonly string[],\n): ShellCommand {\n if (packageManager === \"npm\") {\n return { command: \"npm\", args: [\"install\", ...packages] }\n }\n\n return { command: packageManager, args: [\"add\", ...packages] }\n}\n\nexport function runScriptCommand(packageManager: PackageManager, scriptName: string): ShellCommand {\n if (packageManager === \"npm\" || packageManager === \"pnpm\" || packageManager === \"bun\") {\n return { command: packageManager, args: [\"run\", scriptName] }\n }\n\n return { command: \"yarn\", args: [scriptName] }\n}\n\nexport function createViteCommand(\n packageManager: PackageManager,\n projectName: string,\n viteTemplate: string,\n): ShellCommand {\n if (packageManager === \"pnpm\") {\n return {\n command: \"pnpm\",\n args: [\"create\", \"vite@latest\", projectName, \"--\", \"--template\", viteTemplate],\n }\n }\n\n if (packageManager === \"npm\") {\n return {\n command: \"npm\",\n args: [\"create\", \"vite@latest\", projectName, \"--\", \"--template\", viteTemplate],\n }\n }\n\n if (packageManager === \"bun\") {\n return {\n command: \"bun\",\n args: [\"create\", \"vite\", projectName, \"--template\", viteTemplate],\n }\n }\n\n return {\n command: \"yarn\",\n args: [\"create\", \"vite\", projectName, \"--template\", viteTemplate],\n }\n}\n\nexport function formatShellCommand(command: ShellCommand): string {\n return [command.command, ...command.args].join(\" \")\n}\n","export const adapters = [\"react\", \"vue\", \"svelte\"] as const\nexport type Adapter = (typeof adapters)[number]\n\nexport const packageManagers = [\"pnpm\", \"npm\", \"yarn\", \"bun\"] as const\nexport type PackageManager = (typeof packageManagers)[number]\n\nexport const marwesTemplates = [\"react-ts\", \"vue-ts\", \"svelte-ts\"] as const\nexport type MarwesTemplate = (typeof marwesTemplates)[number]\n\nexport type AdapterRecipe = {\n adapter: Adapter\n displayName: string\n packageName: string\n installPackages: readonly string[]\n providerImport: string\n viteTemplate: MarwesTemplate\n rootFiles: readonly string[]\n}\n\nconst adapterRecipes: Record<Adapter, AdapterRecipe> = {\n react: {\n adapter: \"react\",\n displayName: \"React\",\n packageName: \"@marwes-ui/react\",\n installPackages: [\"@marwes-ui/react\", \"react\", \"react-dom\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"react-ts\",\n rootFiles: [\"src/main.tsx\", \"src/main.jsx\"],\n },\n vue: {\n adapter: \"vue\",\n displayName: \"Vue\",\n packageName: \"@marwes-ui/vue\",\n installPackages: [\"@marwes-ui/vue\", \"vue\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"vue-ts\",\n rootFiles: [\"src/App.vue\", \"src/main.ts\"],\n },\n svelte: {\n adapter: \"svelte\",\n displayName: \"Svelte\",\n packageName: \"@marwes-ui/svelte\",\n installPackages: [\"@marwes-ui/svelte\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"svelte-ts\",\n rootFiles: [\"src/App.svelte\"],\n },\n}\n\nexport function isAdapter(value: string | undefined): value is Adapter {\n return adapters.includes(value as Adapter)\n}\n\nexport function isPackageManager(value: string | undefined): value is PackageManager {\n return packageManagers.includes(value as PackageManager)\n}\n\nexport function isMarwesTemplate(value: string | undefined): value is MarwesTemplate {\n return marwesTemplates.includes(value as MarwesTemplate)\n}\n\nexport function getAdapterRecipe(adapter: Adapter): AdapterRecipe {\n return adapterRecipes[adapter]\n}\n\nexport function adapterFromTemplate(template: MarwesTemplate): Adapter {\n if (template === \"react-ts\") {\n return \"react\"\n }\n\n if (template === \"vue-ts\") {\n return \"vue\"\n }\n\n return \"svelte\"\n}\n\nexport function templateFromAdapter(adapter: Adapter): MarwesTemplate {\n return getAdapterRecipe(adapter).viteTemplate\n}\n\nexport function packageRunnerCommand(\n packageManager: PackageManager,\n packageName = \"@marwes-ui/cli\",\n): string {\n if (packageManager === \"pnpm\") {\n return `pnpm dlx ${packageName}`\n }\n\n if (packageManager === \"npm\") {\n return `npx ${packageName}`\n }\n\n if (packageManager === \"yarn\") {\n return `yarn dlx ${packageName}`\n }\n\n return `bunx ${packageName}`\n}\n\nexport function createAgenticInitCommand(adapter: Adapter, packageManager: PackageManager): string {\n return `${packageRunnerCommand(packageManager)} init --adapter ${adapter} --agentic`\n}\n\nexport function createAiPrompt(adapter: Adapter, packageManager: PackageManager): string {\n const recipe = getAdapterRecipe(adapter)\n const installCommand = createAgenticInitCommand(adapter, packageManager)\n\n return [\n `Install and wire Marwes UI for a ${recipe.displayName} app using ${packageManager}.`,\n `Run: ${installCommand}.`,\n \"Follow the CLI output exactly.\",\n `If automatic patching is skipped, wrap the app root with ${recipe.providerImport} from ${recipe.packageName}.`,\n `Import Marwes components, enums, hooks/helpers, and theme tokens only from ${recipe.packageName}.`,\n \"Do not install @marwes-ui/core or @marwes-ui/presets directly.\",\n `Do not add a separate Marwes stylesheet import; the ${recipe.displayName} adapter loads the default styles automatically.`,\n \"Add a small smoke render, for example a Marwes Button, after the installer completes.\",\n ].join(\"\\n\")\n}\n\nexport function supportedAdaptersLabel(): string {\n return adapters.join(\"|\")\n}\n\nexport function supportedPackageManagersLabel(): string {\n return packageManagers.join(\"|\")\n}\n\nexport function supportedTemplatesLabel(): string {\n return marwesTemplates.join(\"|\")\n}\n","import { readFile, readdir } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { detectPackageManager, formatShellCommand, runScriptCommand } from \"./package-manager\"\nimport { type Adapter, type PackageManager, adapters, getAdapterRecipe, isAdapter } from \"./recipes\"\n\nexport type DoctorLevel = \"pass\" | \"warn\" | \"fail\"\n\nexport type DoctorItem = {\n level: DoctorLevel\n message: string\n fix?: string\n}\n\nexport type DoctorOptions = {\n adapter?: Adapter\n cwd?: string\n packageManager?: PackageManager\n runBuild?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type DoctorResult = {\n adapter?: Adapter\n items: DoctorItem[]\n exitCode: number\n}\n\ntype PackageJson = {\n scripts?: Record<string, string>\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\n\nconst sourceExtensions = new Set([\".ts\", \".tsx\", \".js\", \".jsx\", \".vue\", \".svelte\", \".css\"])\n\nfunction dependencyVersion(packageJson: PackageJson, packageName: string): string | undefined {\n return (\n packageJson.dependencies?.[packageName] ??\n packageJson.devDependencies?.[packageName] ??\n packageJson.peerDependencies?.[packageName] ??\n packageJson.optionalDependencies?.[packageName]\n )\n}\n\nasync function readPackageJson(cwd: string): Promise<PackageJson> {\n const source = await readFile(join(cwd, \"package.json\"), \"utf8\")\n return JSON.parse(source) as PackageJson\n}\n\nasync function collectSourceFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true }).catch(() => [])\n const files: string[] = []\n\n for (const entry of entries) {\n const path = join(directory, entry.name)\n\n if (entry.isDirectory()) {\n if (entry.name === \"node_modules\" || entry.name === \"dist\" || entry.name === \".git\") {\n continue\n }\n\n files.push(...(await collectSourceFiles(path)))\n continue\n }\n\n const extension = entry.name.slice(entry.name.lastIndexOf(\".\"))\n if (sourceExtensions.has(extension)) {\n files.push(path)\n }\n }\n\n return files\n}\n\nfunction detectInstalledAdapter(packageJson: PackageJson): Adapter | undefined {\n return adapters.find((adapter) =>\n dependencyVersion(packageJson, getAdapterRecipe(adapter).packageName),\n )\n}\n\nasync function sourceContains(cwd: string, needle: string): Promise<boolean> {\n const sourceFiles = await collectSourceFiles(join(cwd, \"src\"))\n\n for (const file of sourceFiles) {\n const source = await readFile(file, \"utf8\")\n if (source.includes(needle)) {\n return true\n }\n }\n\n return false\n}\n\nfunction formatItem(item: DoctorItem): string {\n const prefix = item.level === \"pass\" ? \"[pass]\" : item.level === \"warn\" ? \"[warn]\" : \"[fail]\"\n return item.fix\n ? `${prefix} ${item.message}\\n fix: ${item.fix}`\n : `${prefix} ${item.message}`\n}\n\nexport async function runDoctor(options: DoctorOptions = {}): Promise<DoctorResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n const packageJson = await readPackageJson(cwd)\n const adapter = options.adapter ?? detectInstalledAdapter(packageJson)\n const items: DoctorItem[] = []\n\n if (!adapter) {\n items.push({\n level: \"fail\",\n message: \"No Marwes adapter dependency found.\",\n fix: \"Run marwes init --adapter react, marwes init --adapter vue, or marwes init --adapter svelte.\",\n })\n } else {\n const recipe = getAdapterRecipe(adapter)\n\n for (const packageName of recipe.installPackages) {\n if (dependencyVersion(packageJson, packageName)) {\n items.push({ level: \"pass\", message: `${packageName} is installed.` })\n } else {\n items.push({\n level: \"fail\",\n message: `${packageName} is missing.`,\n fix: `${options.packageManager ?? (await detectPackageManager(cwd))} add ${recipe.installPackages.join(\" \")}`,\n })\n }\n }\n\n const hasProvider = await sourceContains(cwd, \"MarwesProvider\")\n items.push(\n hasProvider\n ? { level: \"pass\", message: \"MarwesProvider is referenced in app source.\" }\n : {\n level: \"warn\",\n message: \"MarwesProvider was not found in app source.\",\n fix: `Wrap the app root with MarwesProvider from ${recipe.packageName}.`,\n },\n )\n }\n\n for (const internalPackage of [\"@marwes-ui/core\", \"@marwes-ui/presets\"]) {\n if (dependencyVersion(packageJson, internalPackage)) {\n items.push({\n level: \"warn\",\n message: `${internalPackage} is installed directly.`,\n fix: \"App projects should import from the public adapter package instead.\",\n })\n }\n }\n\n if (await sourceContains(cwd, \"@marwes-ui/presets/firstEdition/styles.css\")) {\n items.push({\n level: \"warn\",\n message: \"Manual Marwes preset stylesheet import found.\",\n fix: \"Remove the stylesheet import; adapter packages load the default styles automatically.\",\n })\n }\n\n if (options.runBuild) {\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n const scriptName = packageJson.scripts?.typecheck\n ? \"typecheck\"\n : packageJson.scripts?.build\n ? \"build\"\n : undefined\n\n if (!scriptName) {\n items.push({ level: \"warn\", message: \"No typecheck or build script found to run.\" })\n } else {\n const command = runScriptCommand(packageManager, scriptName)\n write(`Running ${formatShellCommand(command)}`)\n const exitCode = await runner(command, { cwd })\n items.push(\n exitCode === 0\n ? { level: \"pass\", message: `${scriptName} completed successfully.` }\n : { level: \"fail\", message: `${scriptName} failed.` },\n )\n }\n }\n\n for (const item of items) {\n write(formatItem(item))\n }\n\n const exitCode = items.some((item) => item.level === \"fail\") ? 1 : 0\n return { ...(adapter ? { adapter } : {}), items, exitCode }\n}\n\nexport function adapterFromString(value: string | undefined): Adapter | undefined {\n return isAdapter(value) ? value : undefined\n}\n","import { access, readFile, writeFile } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport type { Adapter } from \"./recipes\"\n\nexport type PatchResult = {\n adapter: Adapter\n changed: boolean\n dryRun: boolean\n file?: string\n message: string\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nfunction insertImport(source: string, importLine: string): string {\n if (source.includes(importLine)) {\n return source\n }\n\n const lines = source.split(\"\\n\")\n let lastImportIndex = -1\n\n for (let index = 0; index < lines.length; index += 1) {\n if (lines[index]?.startsWith(\"import \")) {\n lastImportIndex = index\n }\n }\n\n if (lastImportIndex === -1) {\n return `${importLine}\\n${source}`\n }\n\n lines.splice(lastImportIndex + 1, 0, importLine)\n return lines.join(\"\\n\")\n}\n\nfunction indentBlock(source: string, indentation: string): string {\n return source\n .split(\"\\n\")\n .map((line) => (line.trim().length === 0 ? \"\" : `${indentation}${line}`))\n .join(\"\\n\")\n}\n\nasync function writeIfNeeded(path: string, source: string, dryRun: boolean): Promise<boolean> {\n const current = await readFile(path, \"utf8\")\n if (current === source) {\n return false\n }\n\n if (!dryRun) {\n await writeFile(path, source)\n }\n\n return true\n}\n\nasync function patchReact(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const candidates = [\"src/main.tsx\", \"src/main.jsx\"]\n let relativeFile: string | undefined\n\n for (const candidate of candidates) {\n if (await fileExists(join(cwd, candidate))) {\n relativeFile = candidate\n break\n }\n }\n\n if (!relativeFile) {\n return {\n adapter: \"react\",\n changed: false,\n dryRun,\n message: \"No React Vite entrypoint found. Expected src/main.tsx or src/main.jsx.\",\n }\n }\n\n const file = join(cwd, relativeFile)\n const source = await readFile(file, \"utf8\")\n\n if (source.includes(\"MarwesProvider\")) {\n return {\n adapter: \"react\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"React entrypoint already references MarwesProvider.\",\n }\n }\n\n if (!source.includes(\"<App />\")) {\n return {\n adapter: \"react\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"React entrypoint did not contain the standard <App /> starter render.\",\n }\n }\n\n const withImport = insertImport(source, 'import { MarwesProvider } from \"@marwes-ui/react\"')\n const next = withImport.replace(\n \"<App />\",\n [\"<MarwesProvider>\", \" <App />\", \" </MarwesProvider>\"].join(\"\\n\"),\n )\n const changed = await writeIfNeeded(file, next, dryRun)\n\n return {\n adapter: \"react\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the React root render with MarwesProvider.\"\n : \"React entrypoint already matched the expected MarwesProvider setup.\",\n }\n}\n\nfunction ensureVueScript(source: string): string {\n if (source.includes('MarwesProvider } from \"@marwes-ui/vue\"')) {\n return source\n }\n\n const importLine = 'import { MarwesProvider } from \"@marwes-ui/vue\"'\n const scriptSetupMatch = source.match(/<script\\s+setup[^>]*>/)\n\n if (!scriptSetupMatch?.index && scriptSetupMatch?.index !== 0) {\n return `<script setup lang=\"ts\">\\n${importLine}\\n</script>\\n\\n${source}`\n }\n\n const insertAt = scriptSetupMatch.index + scriptSetupMatch[0].length\n return `${source.slice(0, insertAt)}\\n${importLine}${source.slice(insertAt)}`\n}\n\nasync function patchVue(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const relativeFile = \"src/App.vue\"\n const file = join(cwd, relativeFile)\n\n if (!(await fileExists(file))) {\n return {\n adapter: \"vue\",\n changed: false,\n dryRun,\n message: \"No Vue starter component found. Expected src/App.vue.\",\n }\n }\n\n const source = await readFile(file, \"utf8\")\n if (source.includes(\"<MarwesProvider\")) {\n return {\n adapter: \"vue\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter component already contains MarwesProvider.\",\n }\n }\n\n const templateMatch = source.match(/<template>([\\s\\S]*?)<\\/template>/)\n if (!templateMatch) {\n return {\n adapter: \"vue\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter component did not contain a standard <template> block.\",\n }\n }\n\n const innerTemplate = templateMatch[1]?.trim()\n if (!innerTemplate) {\n return {\n adapter: \"vue\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter template was empty.\",\n }\n }\n\n const wrappedTemplate = [\n \"<template>\",\n \" <MarwesProvider>\",\n indentBlock(innerTemplate, \" \"),\n \" </MarwesProvider>\",\n \"</template>\",\n ].join(\"\\n\")\n const withProviderTemplate = source.replace(templateMatch[0], wrappedTemplate)\n const next = ensureVueScript(withProviderTemplate)\n const changed = await writeIfNeeded(file, next, dryRun)\n\n return {\n adapter: \"vue\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the Vue starter template with MarwesProvider.\"\n : \"Vue starter component already matched the expected MarwesProvider setup.\",\n }\n}\n\nfunction blockMatches(source: string, tagName: \"script\" | \"style\"): string[] {\n return source.match(new RegExp(`<${tagName}[^>]*>[\\\\s\\\\S]*?<\\\\/${tagName}>`, \"g\")) ?? []\n}\n\nfunction removeBlocks(source: string, blocks: readonly string[]): string {\n return blocks.reduce((next, block) => next.replace(block, \"\"), source)\n}\n\nfunction ensureSvelteScript(scriptBlocks: readonly string[]): string {\n const importLine = ' import { MarwesProvider } from \"@marwes-ui/svelte\"'\n const script = scriptBlocks[0]\n\n if (!script) {\n return `<script lang=\"ts\">\\n${importLine}\\n</script>`\n }\n\n if (script.includes(\"MarwesProvider\")) {\n return script\n }\n\n return script.replace(/<script([^>]*)>/i, `<script$1>\\n${importLine}`)\n}\n\nasync function patchSvelte(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const relativeFile = \"src/App.svelte\"\n const file = join(cwd, relativeFile)\n\n if (!(await fileExists(file))) {\n return {\n adapter: \"svelte\",\n changed: false,\n dryRun,\n message: \"No Svelte starter component found. Expected src/App.svelte.\",\n }\n }\n\n const source = await readFile(file, \"utf8\")\n if (source.includes(\"<MarwesProvider\")) {\n return {\n adapter: \"svelte\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Svelte starter component already contains MarwesProvider.\",\n }\n }\n\n const scriptBlocks = blockMatches(source, \"script\")\n const styleBlocks = blockMatches(source, \"style\")\n const body = removeBlocks(source, [...scriptBlocks, ...styleBlocks]).trim()\n\n if (!body) {\n return {\n adapter: \"svelte\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Svelte starter component had no markup to wrap.\",\n }\n }\n\n const script = ensureSvelteScript(scriptBlocks)\n const styles = styleBlocks.join(\"\\n\\n\")\n const next = [\n script,\n \"\",\n \"<MarwesProvider>\",\n indentBlock(body, \" \"),\n \"</MarwesProvider>\",\n styles ? `\\n${styles}` : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\")\n const changed = await writeIfNeeded(file, `${next.trimEnd()}\\n`, dryRun)\n\n return {\n adapter: \"svelte\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the Svelte starter markup with MarwesProvider.\"\n : \"Svelte starter component already matched the expected MarwesProvider setup.\",\n }\n}\n\nexport async function patchProject(\n cwd: string,\n adapter: Adapter,\n dryRun: boolean,\n): Promise<PatchResult> {\n if (adapter === \"react\") {\n return patchReact(cwd, dryRun)\n }\n\n if (adapter === \"vue\") {\n return patchVue(cwd, dryRun)\n }\n\n return patchSvelte(cwd, dryRun)\n}\n","import type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { type DoctorResult, runDoctor } from \"./doctor\"\nimport { detectPackageManager, formatShellCommand, installCommand } from \"./package-manager\"\nimport { type PatchResult, patchProject } from \"./patchers\"\nimport { type Adapter, type PackageManager, getAdapterRecipe } from \"./recipes\"\n\nexport type InitOptions = {\n adapter: Adapter\n cwd?: string\n packageManager?: PackageManager\n dryRun?: boolean\n agentic?: boolean\n yes?: boolean\n noInstall?: boolean\n noPatch?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type InitResult = {\n adapter: Adapter\n packageManager: PackageManager\n installCommand: string\n installSkipped: boolean\n patchSkipped: boolean\n patch?: PatchResult\n doctor?: DoctorResult\n exitCode: number\n}\n\nfunction providerGuidance(adapter: Adapter): string {\n const recipe = getAdapterRecipe(adapter)\n return `Manual follow-up: wrap the app root with ${recipe.providerImport} from ${recipe.packageName}.`\n}\n\nfunction shouldPrintProviderGuidance(patch: PatchResult | undefined): boolean {\n if (!patch || patch.changed) {\n return false\n }\n\n return !patch.message.toLowerCase().includes(\"already\")\n}\n\nfunction writeAgenticBoundaryRules(adapter: Adapter, write: (message: string) => void): void {\n const recipe = getAdapterRecipe(adapter)\n write(\"Agentic rules:\")\n write(`- Import Marwes APIs only from ${recipe.packageName}.`)\n write(\"- Do not install @marwes-ui/core or @marwes-ui/presets directly.\")\n write(\"- Do not add a separate Marwes stylesheet import.\")\n}\n\nexport async function runInit(options: InitOptions): Promise<InitResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n const recipe = getAdapterRecipe(options.adapter)\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n const command = installCommand(packageManager, recipe.installPackages)\n const commandLabel = formatShellCommand(command)\n const dryRun = options.dryRun === true\n const agentic = options.agentic === true\n const noInstall = options.noInstall === true\n const noPatch = options.noPatch === true\n\n write(`Marwes init: ${recipe.displayName}`)\n write(`Package manager: ${packageManager}`)\n if (agentic) {\n write(\"Mode: agentic\")\n }\n\n let exitCode = 0\n\n if (noInstall) {\n write(`Install skipped. Run manually: ${commandLabel}`)\n } else if (dryRun) {\n write(`[dry-run] ${commandLabel}`)\n } else {\n exitCode = await runner(command, { cwd })\n if (exitCode !== 0) {\n return {\n adapter: options.adapter,\n packageManager,\n installCommand: commandLabel,\n installSkipped: false,\n patchSkipped: noPatch,\n exitCode,\n }\n }\n }\n\n let patch: PatchResult | undefined\n if (noPatch) {\n write(\"Patch skipped.\")\n } else {\n patch = await patchProject(cwd, options.adapter, dryRun)\n const patchLabel = patch.file ? `${patch.file}: ${patch.message}` : patch.message\n write(dryRun && patch.changed ? `[dry-run] ${patchLabel}` : patchLabel)\n }\n\n let doctor: DoctorResult | undefined\n if (agentic) {\n if (shouldPrintProviderGuidance(patch) || noPatch) {\n write(providerGuidance(options.adapter))\n }\n\n writeAgenticBoundaryRules(options.adapter, write)\n\n if (dryRun) {\n write(`[dry-run] marwes doctor --adapter ${options.adapter}`)\n } else {\n write(\"Marwes doctor:\")\n doctor = await runDoctor({\n adapter: options.adapter,\n cwd,\n packageManager,\n runner,\n write,\n })\n exitCode = doctor.exitCode\n }\n }\n\n write(\"Marwes init complete.\")\n\n return {\n adapter: options.adapter,\n packageManager,\n installCommand: commandLabel,\n installSkipped: noInstall || dryRun,\n patchSkipped: noPatch,\n ...(patch ? { patch } : {}),\n ...(doctor ? { doctor } : {}),\n exitCode,\n }\n}\n","import { resolve } from \"node:path\"\nimport type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { runInit } from \"./init\"\nimport { createViteCommand, detectPackageManager, formatShellCommand } from \"./package-manager\"\nimport { type MarwesTemplate, type PackageManager, adapterFromTemplate } from \"./recipes\"\n\nexport type CreateOptions = {\n projectName: string\n template: MarwesTemplate\n cwd?: string\n packageManager?: PackageManager\n dryRun?: boolean\n noInstall?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type CreateResult = {\n projectName: string\n template: MarwesTemplate\n exitCode: number\n}\n\nexport async function runCreate(options: CreateOptions): Promise<CreateResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n const command = createViteCommand(packageManager, options.projectName, options.template)\n const adapter = adapterFromTemplate(options.template)\n const targetCwd = resolve(cwd, options.projectName)\n\n write(`Create Marwes app: ${options.projectName}`)\n write(`Template: ${options.template}`)\n\n if (options.dryRun) {\n write(`[dry-run] ${formatShellCommand(command)}`)\n write(`[dry-run] marwes init --adapter ${adapter}`)\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: 0,\n }\n }\n\n const createExitCode = await runner(command, { cwd })\n if (createExitCode !== 0) {\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: createExitCode,\n }\n }\n\n const initResult = await runInit({\n adapter,\n cwd: targetCwd,\n packageManager,\n noInstall: options.noInstall === true,\n runner,\n write,\n })\n\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: initResult.exitCode,\n }\n}\n","import { parseArgs } from \"node:util\"\nimport { type CreateOptions, runCreate } from \"./create\"\nimport { type DoctorOptions, adapterFromString, runDoctor } from \"./doctor\"\nimport { type InitOptions, runInit } from \"./init\"\nimport {\n type PackageManager,\n createAiPrompt,\n isMarwesTemplate,\n isPackageManager,\n supportedAdaptersLabel,\n supportedPackageManagersLabel,\n supportedTemplatesLabel,\n} from \"./recipes\"\n\nexport { runCreate, type CreateOptions, type CreateResult } from \"./create\"\nexport { runDoctor, type DoctorItem, type DoctorOptions, type DoctorResult } from \"./doctor\"\nexport { runInit, type InitOptions, type InitResult } from \"./init\"\nexport {\n adapters,\n createAgenticInitCommand,\n createAiPrompt,\n getAdapterRecipe,\n marwesTemplates,\n packageRunnerCommand,\n packageManagers,\n type Adapter,\n type AdapterRecipe,\n type MarwesTemplate,\n type PackageManager,\n} from \"./recipes\"\n\ntype CliOptions = {\n cwd?: string\n write?: (message: string) => void\n}\n\nfunction writeHelp(write: (message: string) => void): void {\n write(`Marwes CLI\n\nCommands:\n marwes init --adapter <${supportedAdaptersLabel()}> [--agentic]\n marwes doctor [--adapter <${supportedAdaptersLabel()}]\n marwes ai-prompt --adapter <${supportedAdaptersLabel()}>\n marwes create <name> --template <${supportedTemplatesLabel()}>\n\nOptions:\n --pm <${supportedPackageManagersLabel()}>\n --agentic\n --dry-run\n --no-install\n --no-patch\n`)\n}\n\nfunction parsePackageManager(value: unknown): PackageManager | undefined {\n return typeof value === \"string\" && isPackageManager(value) ? value : undefined\n}\n\nexport async function runMarwesCli(argv: string[], options: CliOptions = {}): Promise<number> {\n const write = options.write ?? ((message: string) => console.log(message))\n const [command, ...args] = argv\n\n if (!command || command === \"help\" || command === \"--help\" || command === \"-h\") {\n writeHelp(write)\n return 0\n }\n\n if (command === \"init\") {\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n agentic: { type: \"boolean\" },\n \"dry-run\": { type: \"boolean\" },\n yes: { type: \"boolean\" },\n \"no-install\": { type: \"boolean\" },\n \"no-patch\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n\n if (!adapter) {\n write(`Missing or invalid --adapter. Expected one of: ${supportedAdaptersLabel()}`)\n return 1\n }\n\n const packageManager = parsePackageManager(parsed.values.pm)\n const initOptions: InitOptions = {\n adapter,\n agentic: parsed.values.agentic === true,\n dryRun: parsed.values[\"dry-run\"] === true,\n yes: parsed.values.yes === true,\n noInstall: parsed.values[\"no-install\"] === true,\n noPatch: parsed.values[\"no-patch\"] === true,\n write,\n }\n\n if (options.cwd) {\n initOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n initOptions.packageManager = packageManager\n }\n\n const result = await runInit(initOptions)\n return result.exitCode\n }\n\n if (command === \"doctor\") {\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n \"run-build\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n const packageManager = parsePackageManager(parsed.values.pm)\n const doctorOptions: DoctorOptions = {\n runBuild: parsed.values[\"run-build\"] === true,\n write,\n }\n\n if (adapter) {\n doctorOptions.adapter = adapter\n }\n\n if (options.cwd) {\n doctorOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n doctorOptions.packageManager = packageManager\n }\n\n const result = await runDoctor(doctorOptions)\n return result.exitCode\n }\n\n if (command === \"ai-prompt\") {\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n\n if (!adapter) {\n write(`Missing or invalid --adapter. Expected one of: ${supportedAdaptersLabel()}`)\n return 1\n }\n\n write(createAiPrompt(adapter, parsePackageManager(parsed.values.pm) ?? \"pnpm\"))\n return 0\n }\n\n if (command === \"create\") {\n return runCreateMarwesCli(args, options)\n }\n\n write(`Unknown command: ${command}`)\n writeHelp(write)\n return 1\n}\n\nexport async function runCreateMarwesCli(\n argv: string[],\n options: CliOptions = {},\n): Promise<number> {\n const write = options.write ?? ((message: string) => console.log(message))\n const parsed = parseArgs({\n args: argv,\n options: {\n template: { type: \"string\" },\n pm: { type: \"string\" },\n \"dry-run\": { type: \"boolean\" },\n \"no-install\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const projectName = parsed.positionals[0]\n const template = String(parsed.values.template ?? \"react-ts\")\n\n if (!projectName) {\n write(\"Missing project name.\")\n return 1\n }\n\n if (!isMarwesTemplate(template)) {\n write(`Invalid --template. Expected one of: ${supportedTemplatesLabel()}`)\n return 1\n }\n\n const packageManager = parsePackageManager(parsed.values.pm)\n const createOptions: CreateOptions = {\n projectName,\n template,\n dryRun: parsed.values[\"dry-run\"] === true,\n noInstall: parsed.values[\"no-install\"] === true,\n write,\n }\n\n if (options.cwd) {\n createOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n createOptions.packageManager = packageManager\n }\n\n const result = await runCreate(createOptions)\n\n return result.exitCode\n}\n","#!/usr/bin/env node\nimport { runMarwesCli } from \"./index\"\n\nconst exitCode = await runMarwesCli(process.argv.slice(2))\nprocess.exitCode = exitCode\n"]}
1
+ {"version":3,"sources":["../src/command-runner.ts","../src/package-manager.ts","../src/provider-detection.ts","../src/recipes.ts","../src/doctor.ts","../src/patchers.ts","../src/setup-guidance.ts","../src/init.ts","../src/create.ts","../src/index.ts","../src/cli.ts"],"names":["resolve","installCommand","join","escapeRegExp","exitCode","access","readFile","writeFile"],"mappings":"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","file":"cli.js","sourcesContent":["import { spawn } from \"node:child_process\"\nimport type { ShellCommand } from \"./package-manager\"\n\nexport type CommandRunner = (\n command: ShellCommand,\n options: {\n cwd: string\n },\n) => Promise<number>\n\nexport const defaultCommandRunner: CommandRunner = (command, options) => {\n return new Promise((resolve, reject) => {\n const child = spawn(command.command, command.args, {\n cwd: options.cwd,\n stdio: \"inherit\",\n shell: process.platform === \"win32\",\n })\n\n child.on(\"error\", reject)\n child.on(\"exit\", (code) => resolve(code ?? 1))\n })\n}\n","import { access } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport type { PackageManager } from \"./recipes\"\n\nexport type ShellCommand = {\n command: string\n args: string[]\n}\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nexport async function detectPackageManager(cwd: string): Promise<PackageManager> {\n if (await exists(join(cwd, \"pnpm-lock.yaml\"))) {\n return \"pnpm\"\n }\n\n if ((await exists(join(cwd, \"bun.lockb\"))) || (await exists(join(cwd, \"bun.lock\")))) {\n return \"bun\"\n }\n\n if (await exists(join(cwd, \"yarn.lock\"))) {\n return \"yarn\"\n }\n\n if (await exists(join(cwd, \"package-lock.json\"))) {\n return \"npm\"\n }\n\n return \"pnpm\"\n}\n\nexport function installCommand(\n packageManager: PackageManager,\n packages: readonly string[],\n): ShellCommand {\n if (packageManager === \"npm\") {\n return { command: \"npm\", args: [\"install\", ...packages] }\n }\n\n return { command: packageManager, args: [\"add\", ...packages] }\n}\n\nexport function runScriptCommand(packageManager: PackageManager, scriptName: string): ShellCommand {\n if (packageManager === \"npm\" || packageManager === \"pnpm\" || packageManager === \"bun\") {\n return { command: packageManager, args: [\"run\", scriptName] }\n }\n\n return { command: \"yarn\", args: [scriptName] }\n}\n\nexport function createViteCommand(\n packageManager: PackageManager,\n projectName: string,\n viteTemplate: string,\n): ShellCommand {\n if (packageManager === \"pnpm\") {\n return {\n command: \"pnpm\",\n args: [\"create\", \"vite@latest\", projectName, \"--\", \"--template\", viteTemplate],\n }\n }\n\n if (packageManager === \"npm\") {\n return {\n command: \"npm\",\n args: [\"create\", \"vite@latest\", projectName, \"--\", \"--template\", viteTemplate],\n }\n }\n\n if (packageManager === \"bun\") {\n return {\n command: \"bun\",\n args: [\"create\", \"vite\", projectName, \"--template\", viteTemplate],\n }\n }\n\n return {\n command: \"yarn\",\n args: [\"create\", \"vite\", projectName, \"--template\", viteTemplate],\n }\n}\n\nexport function formatShellCommand(command: ShellCommand): string {\n return [command.command, ...command.args].join(\" \")\n}\n","import type { Adapter } from \"./recipes\"\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\n// Keep offsets stable so imports can be read from the original source while\n// comments and string examples cannot count as rendered application code.\nfunction maskNonCode(source: string, maskStrings = true): string {\n return source.replace(\n /<!--[\\s\\S]*?-->|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\r\\n]*|\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"|'(?:\\\\[\\s\\S]|[^'\\\\])*'|`(?:\\\\[\\s\\S]|[^`\\\\])*`/g,\n (match) => {\n const isString = ['\"', \"'\", \"`\"].includes(match[0] ?? \"\")\n return !maskStrings && isString ? match : match.replace(/[^\\r\\n]/g, \" \")\n },\n )\n}\n\nfunction runtimeBindings(source: string, code: string, packageName: string, exported: string) {\n const names: string[] = []\n const namespaces: string[] = []\n const importSource = maskNonCode(source, false)\n const pattern = /^import\\s+([^;]*?)\\s+from\\s*([\"'])([^\"']+)\\2/\n for (const position of code.matchAll(/\\bimport\\b/g)) {\n const match = importSource.slice(position.index).match(pattern)\n if (!match || match[3] !== packageName) continue\n const bindings = maskNonCode(match[1] ?? \"\").trim()\n if (/^type\\b/.test(bindings)) continue\n const namespace = bindings.match(/\\*\\s+as\\s+([A-Za-z_$][\\w$]*)/)\n if (namespace?.[1]) namespaces.push(namespace[1])\n for (const binding of (bindings.match(/\\{([^}]*)\\}/)?.[1] ?? \"\").split(\",\")) {\n const named = binding\n .trim()\n .match(new RegExp(`^${escapeRegExp(exported)}(?:\\\\s+as\\\\s+([A-Za-z_$][\\\\w$]*))?$`))\n if (named) names.push(named[1] ?? exported)\n }\n if (packageName === \"react\") {\n const defaultBinding = bindings.match(/^([A-Za-z_$][\\w$]*)\\s*(?:,|$)/)\n if (defaultBinding?.[1]) namespaces.push(defaultBinding[1])\n }\n }\n return [...names, ...namespaces.map((name) => `${name}.${exported}`)]\n}\n\n/** Recognize common static provider wiring, not arbitrary runtime component factories. */\nexport function hasConfiguredProvider(source: string, adapter: Adapter): boolean {\n const code = maskNonCode(source)\n const providers = runtimeBindings(source, code, `@marwes-ui/${adapter}`, \"MarwesProvider\")\n const renderers =\n adapter === \"react\"\n ? runtimeBindings(source, code, \"react\", \"createElement\")\n : adapter === \"vue\"\n ? runtimeBindings(source, code, \"vue\", \"h\")\n : []\n return providers.some((provider) => {\n const tags = [provider]\n if (adapter === \"vue\" && !provider.includes(\".\")) {\n tags.push(provider.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase())\n }\n if (tags.some((name) => new RegExp(`<\\\\s*${escapeRegExp(name)}(?:\\\\s|/?>)`).test(code))) {\n return true\n }\n return renderers.some((renderer) =>\n new RegExp(\n `(?:^|[^\\\\w$.])${escapeRegExp(renderer)}\\\\s*\\\\(\\\\s*${escapeRegExp(provider)}\\\\s*[,)]`,\n ).test(code),\n )\n })\n}\n","export const adapters = [\"react\", \"vue\", \"svelte\"] as const\nexport type Adapter = (typeof adapters)[number]\n\nexport const packageManagers = [\"pnpm\", \"npm\", \"yarn\", \"bun\"] as const\nexport type PackageManager = (typeof packageManagers)[number]\n\nexport const marwesTemplates = [\"react-ts\", \"vue-ts\", \"svelte-ts\"] as const\nexport type MarwesTemplate = (typeof marwesTemplates)[number]\n\nexport type AdapterRecipe = {\n adapter: Adapter\n displayName: string\n packageName: string\n installPackages: readonly string[]\n providerImport: string\n viteTemplate: MarwesTemplate\n rootFiles: readonly string[]\n}\n\nconst adapterRecipes: Record<Adapter, AdapterRecipe> = {\n react: {\n adapter: \"react\",\n displayName: \"React\",\n packageName: \"@marwes-ui/react\",\n installPackages: [\"@marwes-ui/react\", \"react\", \"react-dom\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"react-ts\",\n rootFiles: [\"src/main.tsx\", \"src/main.jsx\"],\n },\n vue: {\n adapter: \"vue\",\n displayName: \"Vue\",\n packageName: \"@marwes-ui/vue\",\n installPackages: [\"@marwes-ui/vue\", \"vue\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"vue-ts\",\n rootFiles: [\"src/App.vue\", \"src/main.ts\"],\n },\n svelte: {\n adapter: \"svelte\",\n displayName: \"Svelte\",\n packageName: \"@marwes-ui/svelte\",\n installPackages: [\"@marwes-ui/svelte\"],\n providerImport: \"MarwesProvider\",\n viteTemplate: \"svelte-ts\",\n rootFiles: [\"src/App.svelte\"],\n },\n}\n\nexport function isAdapter(value: string | undefined): value is Adapter {\n return adapters.includes(value as Adapter)\n}\n\nexport function isPackageManager(value: string | undefined): value is PackageManager {\n return packageManagers.includes(value as PackageManager)\n}\n\nexport function isMarwesTemplate(value: string | undefined): value is MarwesTemplate {\n return marwesTemplates.includes(value as MarwesTemplate)\n}\n\nexport function getAdapterRecipe(adapter: Adapter): AdapterRecipe {\n return adapterRecipes[adapter]\n}\n\nexport function adapterFromTemplate(template: MarwesTemplate): Adapter {\n if (template === \"react-ts\") {\n return \"react\"\n }\n\n if (template === \"vue-ts\") {\n return \"vue\"\n }\n\n return \"svelte\"\n}\n\nexport function templateFromAdapter(adapter: Adapter): MarwesTemplate {\n return getAdapterRecipe(adapter).viteTemplate\n}\n\nexport function packageRunnerCommand(\n packageManager: PackageManager,\n packageName = \"@marwes-ui/cli\",\n): string {\n if (packageManager === \"pnpm\") {\n return `pnpm dlx ${packageName}`\n }\n\n if (packageManager === \"npm\") {\n return `npx ${packageName}`\n }\n\n if (packageManager === \"yarn\") {\n return `yarn dlx ${packageName}`\n }\n\n return `bunx ${packageName}`\n}\n\nexport function createAgenticInitCommand(adapter: Adapter, packageManager: PackageManager): string {\n return `${packageRunnerCommand(packageManager)} init --adapter ${adapter} --agentic`\n}\n\nexport function createAiPrompt(adapter: Adapter, packageManager: PackageManager): string {\n const recipe = getAdapterRecipe(adapter)\n const installCommand = createAgenticInitCommand(adapter, packageManager)\n\n return [\n `Install and wire Marwes UI for a ${recipe.displayName} app using ${packageManager}.`,\n `Run: ${installCommand}.`,\n \"Follow the CLI output exactly.\",\n `If automatic patching is skipped, wrap the app root with ${recipe.providerImport} from ${recipe.packageName}.`,\n `Import Marwes components, enums, hooks/helpers, and theme tokens only from ${recipe.packageName}.`,\n \"Do not install @marwes-ui/core or @marwes-ui/presets directly.\",\n `Do not add a separate Marwes stylesheet import; the ${recipe.displayName} adapter loads the default styles automatically.`,\n \"Add a small smoke render, for example a Marwes Button, after the installer completes.\",\n ].join(\"\\n\")\n}\n\nexport function supportedAdaptersLabel(): string {\n return adapters.join(\"|\")\n}\n\nexport function supportedPackageManagersLabel(): string {\n return packageManagers.join(\"|\")\n}\n\nexport function supportedTemplatesLabel(): string {\n return marwesTemplates.join(\"|\")\n}\n","import { readFile, readdir } from \"node:fs/promises\"\nimport { basename, extname, join } from \"node:path\"\nimport type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { detectPackageManager, formatShellCommand, runScriptCommand } from \"./package-manager\"\nimport { hasConfiguredProvider } from \"./provider-detection\"\nimport { type Adapter, type PackageManager, adapters, getAdapterRecipe, isAdapter } from \"./recipes\"\n\nexport type DoctorLevel = \"pass\" | \"warn\" | \"fail\"\n\nexport type DoctorItem = {\n level: DoctorLevel\n message: string\n fix?: string\n}\n\nexport type DoctorOptions = {\n adapter?: Adapter\n cwd?: string\n packageManager?: PackageManager\n runBuild?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type DoctorResult = {\n adapter?: Adapter\n items: DoctorItem[]\n exitCode: number\n}\n\ntype PackageJson = {\n scripts?: Record<string, string>\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\n\ntype SourceFile = {\n path: string\n source: string\n}\n\nconst sourceExtensions = new Set([\".ts\", \".tsx\", \".js\", \".jsx\", \".vue\", \".svelte\", \".css\"])\nconst sourceDirectories = [\"src\", \"app\", \"pages\"]\nconst knownRootFile = /^(?:main|app|layout|index|root)\\.(?:ts|tsx|js|jsx|vue|svelte)$/i\n\nfunction dependencyVersion(packageJson: PackageJson, packageName: string): string | undefined {\n return (\n packageJson.dependencies?.[packageName] ??\n packageJson.devDependencies?.[packageName] ??\n packageJson.peerDependencies?.[packageName] ??\n packageJson.optionalDependencies?.[packageName]\n )\n}\n\nasync function readPackageJson(cwd: string): Promise<PackageJson> {\n const source = await readFile(join(cwd, \"package.json\"), \"utf8\")\n return JSON.parse(source) as PackageJson\n}\n\nasync function collectSourceFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true }).catch(() => [])\n const files: string[] = []\n\n for (const entry of entries) {\n const path = join(directory, entry.name)\n\n if (entry.isDirectory()) {\n if ([\"node_modules\", \"dist\", \".git\", \".next\", \".svelte-kit\"].includes(entry.name)) {\n continue\n }\n\n files.push(...(await collectSourceFiles(path)))\n continue\n }\n\n if (sourceExtensions.has(extname(entry.name))) {\n files.push(path)\n }\n }\n\n return files\n}\n\nasync function readProjectSources(cwd: string): Promise<SourceFile[]> {\n const paths = new Set<string>()\n\n for (const directory of sourceDirectories) {\n for (const file of await collectSourceFiles(join(cwd, directory))) {\n paths.add(file)\n }\n }\n\n const rootEntries = await readdir(cwd, { withFileTypes: true }).catch(() => [])\n for (const entry of rootEntries) {\n if (entry.isFile() && knownRootFile.test(entry.name)) {\n paths.add(join(cwd, entry.name))\n }\n }\n\n return Promise.all(\n [...paths].map(async (path) => ({ path, source: await readFile(path, \"utf8\") })),\n )\n}\n\nfunction detectInstalledAdapter(packageJson: PackageJson): Adapter | undefined {\n return adapters.find((adapter) =>\n dependencyVersion(packageJson, getAdapterRecipe(adapter).packageName),\n )\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\nfunction providerSetupFile(\n sources: readonly SourceFile[],\n adapter: Adapter,\n): SourceFile | undefined {\n return sources.find((file) => hasConfiguredProvider(file.source, adapter))\n}\n\nfunction sourceContains(sources: readonly SourceFile[], needle: string): boolean {\n return sources.some((file) => file.source.includes(needle))\n}\n\nfunction sourceMatches(sources: readonly SourceFile[], pattern: RegExp): boolean {\n return sources.some((file) => pattern.test(file.source))\n}\n\nfunction formatItem(item: DoctorItem): string {\n const prefix = item.level === \"pass\" ? \"[pass]\" : item.level === \"warn\" ? \"[warn]\" : \"[fail]\"\n return item.fix\n ? `${prefix} ${item.message}\\n fix: ${item.fix}`\n : `${prefix} ${item.message}`\n}\n\nexport async function runDoctor(options: DoctorOptions = {}): Promise<DoctorResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n const packageJson = await readPackageJson(cwd)\n const adapter = options.adapter ?? detectInstalledAdapter(packageJson)\n const sources = await readProjectSources(cwd)\n const items: DoctorItem[] = []\n let commandFailureCode: number | undefined\n\n if (!adapter) {\n items.push({\n level: \"fail\",\n message: \"No Marwes adapter dependency found.\",\n fix: \"Run marwes init --adapter react, marwes init --adapter vue, or marwes init --adapter svelte.\",\n })\n } else {\n const recipe = getAdapterRecipe(adapter)\n\n for (const packageName of recipe.installPackages) {\n if (dependencyVersion(packageJson, packageName)) {\n items.push({ level: \"pass\", message: `${packageName} is installed.` })\n } else {\n items.push({\n level: \"fail\",\n message: `${packageName} is missing.`,\n fix: `${options.packageManager ?? (await detectPackageManager(cwd))} add ${recipe.installPackages.join(\" \")}`,\n })\n }\n }\n\n const providerFile = providerSetupFile(sources, adapter)\n const providerMentioned = sourceContains(sources, \"MarwesProvider\")\n items.push(\n providerFile\n ? {\n level: \"pass\",\n message: `MarwesProvider is imported from ${recipe.packageName} and rendered in ${basename(providerFile.path)}.`,\n }\n : {\n level: \"fail\",\n message: providerMentioned\n ? `MarwesProvider is not both imported from ${recipe.packageName} and rendered in the same app entry file.`\n : \"MarwesProvider was not rendered in app source.\",\n fix: `Wrap the app root with MarwesProvider from ${recipe.packageName}. Checked src/, app/, pages/, and known root entry files.`,\n },\n )\n }\n\n for (const internalPackage of [\"@marwes-ui/core\", \"@marwes-ui/presets\"]) {\n if (dependencyVersion(packageJson, internalPackage)) {\n items.push({\n level: \"warn\",\n message: `${internalPackage} is installed directly.`,\n fix: \"App projects should import from the public adapter package instead.\",\n })\n }\n\n const escapedPackage = escapeRegExp(internalPackage)\n if (\n sourceMatches(sources, new RegExp(`(?:from\\\\s*|import\\\\s*)[\"']${escapedPackage}(?:[\"'/])`))\n ) {\n items.push({\n level: \"warn\",\n message: `Direct source import from ${internalPackage} found.`,\n fix: \"Import consumer APIs from the framework adapter package instead.\",\n })\n }\n }\n\n if (sourceMatches(sources, /[\"']@marwes-ui\\/presets\\/[^\"']*styles\\.css[\"']/)) {\n items.push({\n level: \"warn\",\n message: \"Manual Marwes preset stylesheet import found.\",\n fix: \"Remove the stylesheet import; adapter packages load the default styles automatically.\",\n })\n }\n\n if (options.runBuild) {\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n if (!packageJson.scripts?.build) {\n items.push({\n level: \"fail\",\n message: \"No build script found to run.\",\n fix: \"Add a production build script to package.json, then rerun marwes doctor --run-build.\",\n })\n }\n const scripts = [\n ...(packageJson.scripts?.typecheck ? [\"typecheck\"] : []),\n ...(packageJson.scripts?.build ? [\"build\"] : []),\n ]\n for (const scriptName of scripts) {\n const command = runScriptCommand(packageManager, scriptName)\n write(`Running ${formatShellCommand(command)}`)\n const exitCode = await runner(command, { cwd })\n if (exitCode !== 0) {\n commandFailureCode = exitCode\n }\n items.push(\n exitCode === 0\n ? { level: \"pass\", message: `${scriptName} completed successfully.` }\n : { level: \"fail\", message: `${scriptName} failed with exit code ${exitCode}.` },\n )\n if (exitCode !== 0) break\n }\n }\n\n for (const item of items) {\n write(formatItem(item))\n }\n\n const exitCode = commandFailureCode ?? (items.some((item) => item.level === \"fail\") ? 1 : 0)\n return { ...(adapter ? { adapter } : {}), items, exitCode }\n}\n\nexport function adapterFromString(value: string | undefined): Adapter | undefined {\n return isAdapter(value) ? value : undefined\n}\n","import { access, readFile, writeFile } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport { hasConfiguredProvider } from \"./provider-detection\"\nimport type { Adapter } from \"./recipes\"\n\nexport type PatchResult = {\n adapter: Adapter\n status: \"applied\" | \"already-configured\" | \"manual-action-required\"\n changed: boolean\n dryRun: boolean\n file?: string\n searchedFiles?: string[]\n message: string\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nfunction insertImport(source: string, importLine: string): string {\n if (source.includes(importLine)) {\n return source\n }\n\n const lines = source.split(\"\\n\")\n let lastImportIndex = -1\n\n for (let index = 0; index < lines.length; index += 1) {\n if (lines[index]?.startsWith(\"import \")) {\n lastImportIndex = index\n }\n }\n\n if (lastImportIndex === -1) {\n return `${importLine}\\n${source}`\n }\n\n lines.splice(lastImportIndex + 1, 0, importLine)\n return lines.join(\"\\n\")\n}\n\nfunction indentBlock(source: string, indentation: string): string {\n return source\n .split(\"\\n\")\n .map((line) => (line.trim().length === 0 ? \"\" : `${indentation}${line}`))\n .join(\"\\n\")\n}\n\nasync function writeIfNeeded(path: string, source: string, dryRun: boolean): Promise<boolean> {\n const current = await readFile(path, \"utf8\")\n if (current === source) {\n return false\n }\n\n if (!dryRun) {\n await writeFile(path, source)\n }\n\n return true\n}\n\nasync function patchReact(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const candidates = [\"src/main.tsx\", \"src/main.jsx\"]\n let relativeFile: string | undefined\n\n for (const candidate of candidates) {\n if (await fileExists(join(cwd, candidate))) {\n relativeFile = candidate\n break\n }\n }\n\n if (!relativeFile) {\n return {\n adapter: \"react\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n searchedFiles: candidates,\n message: \"No React Vite entrypoint found. Expected src/main.tsx or src/main.jsx.\",\n }\n }\n\n const file = join(cwd, relativeFile)\n const source = await readFile(file, \"utf8\")\n\n if (hasConfiguredProvider(source, \"react\")) {\n return {\n adapter: \"react\",\n status: \"already-configured\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"React entrypoint already references MarwesProvider.\",\n }\n }\n\n if (source.includes(\"MarwesProvider\")) {\n return {\n adapter: \"react\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message:\n \"React entrypoint references MarwesProvider but not with a verified @marwes-ui/react import and render.\",\n }\n }\n\n if (!source.includes(\"<App />\")) {\n return {\n adapter: \"react\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"React entrypoint did not contain the standard <App /> starter render.\",\n }\n }\n\n const withImport = insertImport(source, 'import { MarwesProvider } from \"@marwes-ui/react\"')\n const next = withImport.replace(\n \"<App />\",\n [\"<MarwesProvider>\", \" <App />\", \" </MarwesProvider>\"].join(\"\\n\"),\n )\n const changed = await writeIfNeeded(file, next, dryRun)\n\n return {\n adapter: \"react\",\n status: changed ? \"applied\" : \"already-configured\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the React root render with MarwesProvider.\"\n : \"React entrypoint already matched the expected MarwesProvider setup.\",\n }\n}\n\nfunction ensureVueScript(source: string): string {\n if (source.includes('MarwesProvider } from \"@marwes-ui/vue\"')) {\n return source\n }\n\n const importLine = 'import { MarwesProvider } from \"@marwes-ui/vue\"'\n const scriptSetupMatch = source.match(/<script\\s+setup[^>]*>/)\n\n if (!scriptSetupMatch?.index && scriptSetupMatch?.index !== 0) {\n return `<script setup lang=\"ts\">\\n${importLine}\\n</script>\\n\\n${source}`\n }\n\n const insertAt = scriptSetupMatch.index + scriptSetupMatch[0].length\n return `${source.slice(0, insertAt)}\\n${importLine}${source.slice(insertAt)}`\n}\n\nasync function patchVue(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const relativeFile = \"src/App.vue\"\n const file = join(cwd, relativeFile)\n\n if (!(await fileExists(file))) {\n return {\n adapter: \"vue\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n searchedFiles: [relativeFile],\n message: \"No Vue starter component found. Expected src/App.vue.\",\n }\n }\n\n const source = await readFile(file, \"utf8\")\n if (hasConfiguredProvider(source, \"vue\")) {\n return {\n adapter: \"vue\",\n status: \"already-configured\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter component already contains MarwesProvider.\",\n }\n }\n\n if (source.includes(\"MarwesProvider\")) {\n return {\n adapter: \"vue\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message:\n \"Vue starter references MarwesProvider but not with a verified @marwes-ui/vue import and render.\",\n }\n }\n\n const templateMatch = source.match(/<template>([\\s\\S]*?)<\\/template>/)\n if (!templateMatch) {\n return {\n adapter: \"vue\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter component did not contain a standard <template> block.\",\n }\n }\n\n const innerTemplate = templateMatch[1]?.trim()\n if (!innerTemplate) {\n return {\n adapter: \"vue\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Vue starter template was empty.\",\n }\n }\n\n const wrappedTemplate = [\n \"<template>\",\n \" <MarwesProvider>\",\n indentBlock(innerTemplate, \" \"),\n \" </MarwesProvider>\",\n \"</template>\",\n ].join(\"\\n\")\n const withProviderTemplate = source.replace(templateMatch[0], wrappedTemplate)\n const next = ensureVueScript(withProviderTemplate)\n const changed = await writeIfNeeded(file, next, dryRun)\n\n return {\n adapter: \"vue\",\n status: changed ? \"applied\" : \"already-configured\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the Vue starter template with MarwesProvider.\"\n : \"Vue starter component already matched the expected MarwesProvider setup.\",\n }\n}\n\nfunction blockMatches(source: string, tagName: \"script\" | \"style\"): string[] {\n return source.match(new RegExp(`<${tagName}[^>]*>[\\\\s\\\\S]*?<\\\\/${tagName}>`, \"g\")) ?? []\n}\n\nfunction removeBlocks(source: string, blocks: readonly string[]): string {\n return blocks.reduce((next, block) => next.replace(block, \"\"), source)\n}\n\nfunction ensureSvelteScript(scriptBlocks: readonly string[]): string {\n const importLine = ' import { MarwesProvider } from \"@marwes-ui/svelte\"'\n const script = scriptBlocks[0]\n\n if (!script) {\n return `<script lang=\"ts\">\\n${importLine}\\n</script>`\n }\n\n if (script.includes(\"MarwesProvider\")) {\n return script\n }\n\n return script.replace(/<script([^>]*)>/i, `<script$1>\\n${importLine}`)\n}\n\nasync function patchSvelte(cwd: string, dryRun: boolean): Promise<PatchResult> {\n const relativeFile = \"src/App.svelte\"\n const file = join(cwd, relativeFile)\n\n if (!(await fileExists(file))) {\n return {\n adapter: \"svelte\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n searchedFiles: [relativeFile],\n message: \"No Svelte starter component found. Expected src/App.svelte.\",\n }\n }\n\n const source = await readFile(file, \"utf8\")\n if (hasConfiguredProvider(source, \"svelte\")) {\n return {\n adapter: \"svelte\",\n status: \"already-configured\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Svelte starter component already contains MarwesProvider.\",\n }\n }\n\n if (source.includes(\"MarwesProvider\")) {\n return {\n adapter: \"svelte\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message:\n \"Svelte starter references MarwesProvider but not with a verified @marwes-ui/svelte import and render.\",\n }\n }\n\n const scriptBlocks = blockMatches(source, \"script\")\n const styleBlocks = blockMatches(source, \"style\")\n const body = removeBlocks(source, [...scriptBlocks, ...styleBlocks]).trim()\n\n if (!body) {\n return {\n adapter: \"svelte\",\n status: \"manual-action-required\",\n changed: false,\n dryRun,\n file: relativeFile,\n message: \"Svelte starter component had no markup to wrap.\",\n }\n }\n\n const script = ensureSvelteScript(scriptBlocks)\n const styles = styleBlocks.join(\"\\n\\n\")\n const next = [\n script,\n \"\",\n \"<MarwesProvider>\",\n indentBlock(body, \" \"),\n \"</MarwesProvider>\",\n styles ? `\\n${styles}` : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\")\n const changed = await writeIfNeeded(file, `${next.trimEnd()}\\n`, dryRun)\n\n return {\n adapter: \"svelte\",\n status: changed ? \"applied\" : \"already-configured\",\n changed,\n dryRun,\n file: relativeFile,\n message: changed\n ? \"Wrapped the Svelte starter markup with MarwesProvider.\"\n : \"Svelte starter component already matched the expected MarwesProvider setup.\",\n }\n}\n\nexport async function patchProject(\n cwd: string,\n adapter: Adapter,\n dryRun: boolean,\n): Promise<PatchResult> {\n if (adapter === \"react\") {\n return patchReact(cwd, dryRun)\n }\n\n if (adapter === \"vue\") {\n return patchVue(cwd, dryRun)\n }\n\n return patchSvelte(cwd, dryRun)\n}\n","import { type Adapter, getAdapterRecipe } from \"./recipes\"\n\nfunction providerExample(adapter: Adapter): string {\n const packageName = getAdapterRecipe(adapter).packageName\n const providerImport = `import { MarwesProvider, type ThemeInput } from \"${packageName}\"`\n const theme = 'const brandTheme = { color: { primary: \"#2457FF\" } } satisfies ThemeInput'\n\n if (adapter === \"react\") {\n return [\n 'import { createRoot } from \"react-dom/client\"',\n providerImport,\n 'import App from \"./App\"',\n \"\",\n theme,\n \"\",\n 'createRoot(document.getElementById(\"root\")!).render(',\n \" <MarwesProvider theme={brandTheme}>\",\n \" <App />\",\n \" </MarwesProvider>,\",\n \")\",\n ].join(\"\\n\")\n }\n\n return [\n adapter === \"vue\" ? '<script setup lang=\"ts\">' : '<script lang=\"ts\">',\n ` ${providerImport}`,\n ` ${theme}`,\n \"</script>\",\n \"\",\n ...(adapter === \"vue\"\n ? [\n \"<template>\",\n ' <MarwesProvider :theme=\"brandTheme\">',\n \" <main>Your app</main>\",\n \" </MarwesProvider>\",\n \"</template>\",\n ]\n : [\"<MarwesProvider theme={brandTheme}>\", \" <main>Your app</main>\", \"</MarwesProvider>\"]),\n ].join(\"\\n\")\n}\n\nexport function setupGuidance(adapter: Adapter, fullExample: boolean): string[] {\n const recipe = getAdapterRecipe(adapter)\n const ssrIntegration = { react: \"next\", vue: \"nuxt\", svelte: \"sveltekit\" }[adapter]\n const hookGuidance = {\n react:\n \"useTheme() returns resolved concrete values: const theme = useTheme(); read theme.color.primary.base.\",\n vue: \"useTheme() returns a resolved snapshot directly, not a ref: const theme = useTheme(); read theme.color.primary.base (no .value).\",\n svelte:\n \"useTheme() returns a .theme getter: const themeState = useTheme(); read themeState.theme.color.primary.base. Keep the getter object; destructuring .theme takes a snapshot.\",\n }[adapter]\n\n return [\n \"Marwes setup guidance:\",\n `- Import Marwes APIs only from ${recipe.packageName}.`,\n \"- Do not install or import @marwes-ui/core or @marwes-ui/presets directly.\",\n \"- Default preset CSS loads automatically from the adapter; do not add a separate Marwes stylesheet import.\",\n \"- Wrap the app once with MarwesProvider; pass a small typed ThemeInput override. Unspecified values retain defaults.\",\n \"- --mw-* CSS variables are scoped to the provider and its descendants, not :root. Keep app styles and runtime consumers below the provider.\",\n \"- Use mwThemeVars for CSS var(...) references, not concrete JavaScript values. Call useTheme() only in a child component below MarwesProvider.\",\n `- ${hookGuidance}`,\n ...(fullExample\n ? [\n `Complete ${recipe.displayName} provider example:`,\n providerExample(adapter),\n `Component example: import { PrimaryButton } from \"${recipe.packageName}\"; render <PrimaryButton>Save</PrimaryButton> below the provider. Use public components, not invented mw-* replacement classes.`,\n `Token example: import { mwThemeVars } from \"${recipe.packageName}\"; use mwThemeVars.color.text and mwThemeVars.spacing.sp24 in app-owned styles below the provider.`,\n \"For SSR, follow the framework guide for matching style/script helpers and provider options before hydration; changing html classes alone is not no-flash setup.\",\n ]\n : []),\n `Setup guide: https://marwes.io/docs/get-started/${adapter}/`,\n \"Theming guide: https://marwes.io/docs/theming/\",\n `SSR guide: https://marwes.io/docs/integrations/${ssrIntegration}/`,\n ...(fullExample\n ? [\n \"AI discovery: https://marwes.io/llms.txt\",\n `AI framework guide: https://marwes.io/ai/${adapter}.md`,\n \"Public export inventory: https://marwes.io/ai/v1/public-api.json\",\n ]\n : []),\n ]\n}\n","import type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { type DoctorResult, runDoctor } from \"./doctor\"\nimport { detectPackageManager, formatShellCommand, installCommand } from \"./package-manager\"\nimport { type PatchResult, patchProject } from \"./patchers\"\nimport { type Adapter, type PackageManager, getAdapterRecipe } from \"./recipes\"\nimport { setupGuidance } from \"./setup-guidance\"\n\nexport type InitOptions = {\n adapter: Adapter\n cwd?: string\n packageManager?: PackageManager\n dryRun?: boolean\n agentic?: boolean\n yes?: boolean\n noInstall?: boolean\n noPatch?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type InitResult = {\n status: \"complete\" | \"manual-action-required\" | \"failed\"\n adapter: Adapter\n packageManager: PackageManager\n installCommand: string\n installSkipped: boolean\n patchSkipped: boolean\n patch?: PatchResult\n doctor?: DoctorResult\n exitCode: number\n}\n\nfunction shouldPrintProviderGuidance(patch: PatchResult | undefined): boolean {\n return patch?.status === \"manual-action-required\"\n}\n\nexport async function runInit(options: InitOptions): Promise<InitResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n const recipe = getAdapterRecipe(options.adapter)\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n const command = installCommand(packageManager, recipe.installPackages)\n const commandLabel = formatShellCommand(command)\n const dryRun = options.dryRun === true\n const agentic = options.agentic === true\n const noInstall = options.noInstall === true\n const noPatch = options.noPatch === true\n\n write(`Marwes init: ${recipe.displayName}`)\n write(`Package manager: ${packageManager}`)\n if (agentic) {\n write(\"Mode: agentic\")\n }\n\n let exitCode = 0\n\n if (noInstall) {\n write(`Install skipped. Run manually: ${commandLabel}`)\n } else if (dryRun) {\n write(`[dry-run] ${commandLabel}`)\n } else {\n exitCode = await runner(command, { cwd })\n if (exitCode !== 0) {\n write(\"Marwes init status: failed.\")\n write(\n `Marwes init failed: installation command exited with code ${exitCode}. Provider patching and doctor were not run.`,\n )\n return {\n status: \"failed\",\n adapter: options.adapter,\n packageManager,\n installCommand: commandLabel,\n installSkipped: false,\n patchSkipped: noPatch,\n exitCode,\n }\n }\n }\n\n let patch: PatchResult | undefined\n if (noPatch) {\n write(\"Patch skipped.\")\n } else {\n patch = await patchProject(cwd, options.adapter, dryRun)\n const patchLabel = patch.file ? `${patch.file}: ${patch.message}` : patch.message\n write(dryRun && patch.changed ? `[dry-run] ${patchLabel}` : patchLabel)\n if (patch.searchedFiles?.length) {\n write(`Files searched: ${patch.searchedFiles.join(\", \")}`)\n }\n }\n\n let doctor: DoctorResult | undefined\n if (dryRun) {\n write(`[dry-run] marwes doctor --adapter ${options.adapter}`)\n } else {\n write(\"Marwes doctor:\")\n doctor = await runDoctor({\n adapter: options.adapter,\n cwd,\n packageManager,\n runner,\n write,\n })\n }\n\n const providerFailure =\n doctor?.items.some(\n (item) => item.level === \"fail\" && item.message.startsWith(\"MarwesProvider\"),\n ) === true\n const otherFailure =\n doctor?.items.some(\n (item) => item.level === \"fail\" && !item.message.startsWith(\"MarwesProvider\"),\n ) === true\n const needsManualAction = providerFailure && (shouldPrintProviderGuidance(patch) || noPatch)\n const status: InitResult[\"status\"] = otherFailure\n ? \"failed\"\n : needsManualAction\n ? \"manual-action-required\"\n : doctor && doctor.exitCode !== 0\n ? \"failed\"\n : \"complete\"\n\n if (needsManualAction) {\n write(\n `Manual follow-up: wrap the app root with ${recipe.providerImport} from ${recipe.packageName}.`,\n )\n write(\"Automatic patching currently supports the standard Vite app layout.\")\n }\n if (agentic || needsManualAction || status === \"complete\") {\n for (const line of setupGuidance(options.adapter, agentic || needsManualAction)) write(line)\n }\n\n exitCode =\n status === \"manual-action-required\" ? 2 : status === \"failed\" ? (doctor?.exitCode ?? 1) : 0\n write(dryRun ? `[dry-run] Planned init status: ${status}.` : `Marwes init status: ${status}.`)\n write(\n dryRun\n ? \"[dry-run] Marwes init plan complete. No installation, file changes, or doctor checks performed.\"\n : status === \"complete\"\n ? \"Marwes init complete.\"\n : status === \"manual-action-required\"\n ? \"Marwes provider wiring requires manual action (exit code 2).\"\n : \"Marwes init failed.\",\n )\n\n return {\n status,\n adapter: options.adapter,\n packageManager,\n installCommand: commandLabel,\n installSkipped: noInstall || dryRun,\n patchSkipped: noPatch,\n ...(patch ? { patch } : {}),\n ...(doctor ? { doctor } : {}),\n exitCode,\n }\n}\n","import { readFile, writeFile } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport type { CommandRunner } from \"./command-runner\"\nimport { defaultCommandRunner } from \"./command-runner\"\nimport { runInit } from \"./init\"\nimport { createViteCommand, detectPackageManager, formatShellCommand } from \"./package-manager\"\nimport {\n type Adapter,\n type MarwesTemplate,\n type PackageManager,\n adapterFromTemplate,\n getAdapterRecipe,\n} from \"./recipes\"\n\nexport type CreateOptions = {\n projectName: string\n template: MarwesTemplate\n cwd?: string\n packageManager?: PackageManager\n dryRun?: boolean\n noInstall?: boolean\n runner?: CommandRunner\n write?: (message: string) => void\n}\n\nexport type CreateResult = {\n projectName: string\n template: MarwesTemplate\n exitCode: number\n}\n\nconst safeProjectPathPattern = /^[a-zA-Z0-9][a-zA-Z0-9._-]*(?:\\/[a-zA-Z0-9][a-zA-Z0-9._-]*)*$/\n\nexport function isSafeProjectPath(projectName: string): boolean {\n return safeProjectPathPattern.test(projectName)\n}\n\nasync function stageAdapterDependency(cwd: string, adapter: Adapter): Promise<void> {\n const packageJsonPath = resolve(cwd, \"package.json\")\n const packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"))\n const packageName = getAdapterRecipe(adapter).packageName\n const dependencies = packageJson.dependencies ?? {}\n\n if (!(packageName in dependencies) && !(packageName in (packageJson.devDependencies ?? {}))) {\n packageJson.dependencies = { ...dependencies, [packageName]: \"latest\" }\n await writeFile(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`)\n }\n}\n\nexport async function runCreate(options: CreateOptions): Promise<CreateResult> {\n const cwd = options.cwd ?? process.cwd()\n const write = options.write ?? ((message: string) => console.log(message))\n const runner = options.runner ?? defaultCommandRunner\n\n if (!isSafeProjectPath(options.projectName)) {\n write(\n \"Invalid project name. Use a relative path made from letters, numbers, dots, dashes, underscores, and forward slashes.\",\n )\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: 1,\n }\n }\n\n const packageManager = options.packageManager ?? (await detectPackageManager(cwd))\n const command = createViteCommand(packageManager, options.projectName, options.template)\n const adapter = adapterFromTemplate(options.template)\n const targetCwd = resolve(cwd, options.projectName)\n\n write(`Create Marwes app: ${options.projectName}`)\n write(`Template: ${options.template}`)\n\n if (options.dryRun) {\n write(`[dry-run] ${formatShellCommand(command)}`)\n write(`[dry-run] marwes init --adapter ${adapter}`)\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: 0,\n }\n }\n\n const createExitCode = await runner(command, { cwd })\n if (createExitCode !== 0) {\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: createExitCode,\n }\n }\n\n if (options.noInstall) {\n await stageAdapterDependency(targetCwd, adapter)\n write(\n `Recorded ${getAdapterRecipe(adapter).packageName} in package.json. Run ${packageManager} install before starting the app.`,\n )\n }\n\n const initResult = await runInit({\n adapter,\n cwd: targetCwd,\n packageManager,\n noInstall: options.noInstall === true,\n runner,\n write,\n })\n\n return {\n projectName: options.projectName,\n template: options.template,\n exitCode: initResult.exitCode,\n }\n}\n","import { parseArgs } from \"node:util\"\nimport { type CreateOptions, runCreate } from \"./create\"\nimport { type DoctorOptions, adapterFromString, runDoctor } from \"./doctor\"\nimport { type InitOptions, runInit } from \"./init\"\nimport {\n type PackageManager,\n createAiPrompt,\n isMarwesTemplate,\n isPackageManager,\n supportedAdaptersLabel,\n supportedPackageManagersLabel,\n supportedTemplatesLabel,\n} from \"./recipes\"\n\nexport { runCreate, type CreateOptions, type CreateResult } from \"./create\"\nexport { runDoctor, type DoctorItem, type DoctorOptions, type DoctorResult } from \"./doctor\"\nexport { runInit, type InitOptions, type InitResult } from \"./init\"\nexport type { PatchResult } from \"./patchers\"\nexport {\n adapters,\n createAgenticInitCommand,\n createAiPrompt,\n getAdapterRecipe,\n marwesTemplates,\n packageRunnerCommand,\n packageManagers,\n type Adapter,\n type AdapterRecipe,\n type MarwesTemplate,\n type PackageManager,\n} from \"./recipes\"\n\ntype CliOptions = {\n cwd?: string\n write?: (message: string) => void\n}\n\nfunction writeHelp(write: (message: string) => void): void {\n write(`Marwes CLI\n\nCommands:\n marwes init --adapter <${supportedAdaptersLabel()}> [--agentic]\n marwes doctor [--adapter <${supportedAdaptersLabel()}]\n marwes ai-prompt --adapter <${supportedAdaptersLabel()}>\n marwes create <name> --template <${supportedTemplatesLabel()}>\n\nOptions:\n --pm <${supportedPackageManagersLabel()}>\n --agentic\n --dry-run\n --no-install Record dependencies but skip installation\n --no-patch\n`)\n}\n\nfunction wantsHelp(args: readonly string[]): boolean {\n return args.includes(\"--help\") || args.includes(\"-h\") || args[0] === \"help\"\n}\n\nfunction writeInitHelp(write: (message: string) => void): void {\n write(`marwes init --adapter <${supportedAdaptersLabel()}>\n\nInstall a framework adapter, wire MarwesProvider into a standard Vite app, then run doctor.\n\nOptions:\n --adapter <${supportedAdaptersLabel()}> Required framework adapter\n --pm <${supportedPackageManagersLabel()}> Package manager override\n --agentic Print AI-agent boundary rules\n --dry-run Show changes without writing or installing\n --no-install Skip dependency installation\n --no-patch Skip automatic provider wiring\n --yes Accept defaults\n --help Show this help\n`)\n}\n\nfunction writeDoctorHelp(write: (message: string) => void): void {\n write(`marwes doctor [--adapter <${supportedAdaptersLabel()}>] [--run-build]\n\nVerify dependencies, adapter imports, provider rendering, and optional project compilation.\n\nOptions:\n --adapter <${supportedAdaptersLabel()}> Framework adapter override\n --pm <${supportedPackageManagersLabel()}> Package manager override\n --run-build Run optional typecheck, then the required production build\n --help Show this help\n`)\n}\n\nfunction writeAiPromptHelp(write: (message: string) => void): void {\n write(`marwes ai-prompt --adapter <${supportedAdaptersLabel()}>\n\nPrint a framework-specific setup prompt for an AI coding agent.\n\nOptions:\n --adapter <${supportedAdaptersLabel()}> Required framework adapter\n --pm <${supportedPackageManagersLabel()}> Package manager used in the prompt\n --help Show this help\n`)\n}\n\nfunction writeCreateHelp(write: (message: string) => void): void {\n write(`create-marwes <name> --template <${supportedTemplatesLabel()}>\n\nCreate a new Vite app and configure its Marwes adapter.\n\nOptions:\n --template <${supportedTemplatesLabel()}>\n --pm <${supportedPackageManagersLabel()}>\n --dry-run\n --no-install\n --help\n`)\n}\n\nfunction parsePackageManager(value: unknown): PackageManager | undefined {\n return typeof value === \"string\" && isPackageManager(value) ? value : undefined\n}\n\nexport async function runMarwesCli(argv: string[], options: CliOptions = {}): Promise<number> {\n const write = options.write ?? ((message: string) => console.log(message))\n const [command, ...args] = argv\n\n if (!command || command === \"help\" || command === \"--help\" || command === \"-h\") {\n writeHelp(write)\n return 0\n }\n\n if (command === \"init\") {\n if (wantsHelp(args)) {\n writeInitHelp(write)\n return 0\n }\n\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n agentic: { type: \"boolean\" },\n \"dry-run\": { type: \"boolean\" },\n yes: { type: \"boolean\" },\n \"no-install\": { type: \"boolean\" },\n \"no-patch\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n\n if (!adapter) {\n write(`Missing or invalid --adapter. Expected one of: ${supportedAdaptersLabel()}`)\n return 1\n }\n\n const packageManager = parsePackageManager(parsed.values.pm)\n const initOptions: InitOptions = {\n adapter,\n agentic: parsed.values.agentic === true,\n dryRun: parsed.values[\"dry-run\"] === true,\n yes: parsed.values.yes === true,\n noInstall: parsed.values[\"no-install\"] === true,\n noPatch: parsed.values[\"no-patch\"] === true,\n write,\n }\n\n if (options.cwd) {\n initOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n initOptions.packageManager = packageManager\n }\n\n const result = await runInit(initOptions)\n return result.exitCode\n }\n\n if (command === \"doctor\") {\n if (wantsHelp(args)) {\n writeDoctorHelp(write)\n return 0\n }\n\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n \"run-build\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n const packageManager = parsePackageManager(parsed.values.pm)\n const doctorOptions: DoctorOptions = {\n runBuild: parsed.values[\"run-build\"] === true,\n write,\n }\n\n if (adapter) {\n doctorOptions.adapter = adapter\n }\n\n if (options.cwd) {\n doctorOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n doctorOptions.packageManager = packageManager\n }\n\n const result = await runDoctor(doctorOptions)\n return result.exitCode\n }\n\n if (command === \"ai-prompt\") {\n if (wantsHelp(args)) {\n writeAiPromptHelp(write)\n return 0\n }\n\n const parsed = parseArgs({\n args,\n options: {\n adapter: { type: \"string\" },\n pm: { type: \"string\" },\n },\n allowPositionals: true,\n })\n const adapter = adapterFromString(String(parsed.values.adapter ?? \"\"))\n\n if (!adapter) {\n write(`Missing or invalid --adapter. Expected one of: ${supportedAdaptersLabel()}`)\n return 1\n }\n\n write(createAiPrompt(adapter, parsePackageManager(parsed.values.pm) ?? \"pnpm\"))\n return 0\n }\n\n if (command === \"create\") {\n return runCreateMarwesCli(args, options)\n }\n\n write(`Unknown command: ${command}`)\n writeHelp(write)\n return 1\n}\n\nexport async function runCreateMarwesCli(\n argv: string[],\n options: CliOptions = {},\n): Promise<number> {\n const write = options.write ?? ((message: string) => console.log(message))\n if (wantsHelp(argv)) {\n writeCreateHelp(write)\n return 0\n }\n\n const parsed = parseArgs({\n args: argv,\n options: {\n template: { type: \"string\" },\n pm: { type: \"string\" },\n \"dry-run\": { type: \"boolean\" },\n \"no-install\": { type: \"boolean\" },\n },\n allowPositionals: true,\n })\n const projectName = parsed.positionals[0]\n const template = String(parsed.values.template ?? \"react-ts\")\n\n if (!projectName) {\n write(\"Missing project name.\")\n return 1\n }\n\n if (!isMarwesTemplate(template)) {\n write(`Invalid --template. Expected one of: ${supportedTemplatesLabel()}`)\n return 1\n }\n\n const packageManager = parsePackageManager(parsed.values.pm)\n const createOptions: CreateOptions = {\n projectName,\n template,\n dryRun: parsed.values[\"dry-run\"] === true,\n noInstall: parsed.values[\"no-install\"] === true,\n write,\n }\n\n if (options.cwd) {\n createOptions.cwd = options.cwd\n }\n\n if (packageManager) {\n createOptions.packageManager = packageManager\n }\n\n const result = await runCreate(createOptions)\n\n return result.exitCode\n}\n","#!/usr/bin/env node\nimport { runMarwesCli } from \"./index\"\n\nconst exitCode = await runMarwesCli(process.argv.slice(2))\nprocess.exitCode = exitCode\n"]}
package/dist/index.d.ts CHANGED
@@ -67,9 +67,11 @@ declare function runDoctor(options?: DoctorOptions): Promise<DoctorResult>;
67
67
 
68
68
  type PatchResult = {
69
69
  adapter: Adapter;
70
+ status: "applied" | "already-configured" | "manual-action-required";
70
71
  changed: boolean;
71
72
  dryRun: boolean;
72
73
  file?: string;
74
+ searchedFiles?: string[];
73
75
  message: string;
74
76
  };
75
77
 
@@ -86,6 +88,7 @@ type InitOptions = {
86
88
  write?: (message: string) => void;
87
89
  };
88
90
  type InitResult = {
91
+ status: "complete" | "manual-action-required" | "failed";
89
92
  adapter: Adapter;
90
93
  packageManager: PackageManager;
91
94
  installCommand: string;
@@ -104,4 +107,4 @@ type CliOptions = {
104
107
  declare function runMarwesCli(argv: string[], options?: CliOptions): Promise<number>;
105
108
  declare function runCreateMarwesCli(argv: string[], options?: CliOptions): Promise<number>;
106
109
 
107
- export { type Adapter, type AdapterRecipe, type CreateOptions, type CreateResult, type DoctorItem, type DoctorOptions, type DoctorResult, type InitOptions, type InitResult, type MarwesTemplate, type PackageManager, adapters, createAgenticInitCommand, createAiPrompt, getAdapterRecipe, marwesTemplates, packageManagers, packageRunnerCommand, runCreate, runCreateMarwesCli, runDoctor, runInit, runMarwesCli };
110
+ export { type Adapter, type AdapterRecipe, type CreateOptions, type CreateResult, type DoctorItem, type DoctorOptions, type DoctorResult, type InitOptions, type InitResult, type MarwesTemplate, type PackageManager, type PatchResult, adapters, createAgenticInitCommand, createAiPrompt, getAdapterRecipe, marwesTemplates, packageManagers, packageRunnerCommand, runCreate, runCreateMarwesCli, runDoctor, runInit, runMarwesCli };