@shortwind/cli 0.1.0-beta.0 → 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","names":["runPreset"],"sources":["../src/cli.ts","../src/bin.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { cac } from \"cac\";\nimport { add } from \"./commands/add.js\";\nimport { build, BuildError } from \"./commands/build.js\";\nimport { dev } from \"./commands/dev.js\";\nimport { remove } from \"./commands/remove.js\";\nimport { preset as runPreset } from \"./commands/preset.js\";\nimport { ls, formatLsText } from \"./commands/ls.js\";\nimport {\n upgrade,\n UpgradeError,\n type TouchedContext,\n type UpgradeChoice,\n} from \"./commands/upgrade.js\";\nimport { verify } from \"./commands/verify.js\";\nimport { lint, formatFindingsText, ALL_RULES, type Rule } from \"./commands/lint.js\";\nimport { init, type InitOptions, DEFAULT_REGISTRY } from \"./init.js\";\nimport { bench, formatBenchTable } from \"./commands/bench.js\";\n\nconst KNOWN_PRESETS = [\"starter\", \"app\", \"content\", \"all\", \"none\"];\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n const cli = cac(\"shortwind\");\n\n cli\n .command(\"init\", \"Bootstrap Shortwind in this project\")\n .option(\"--preset <name>\", \"Preset to install (starter|app|content|all|none)\")\n .option(\"--registry <url>\", \"Registry origin\", { default: DEFAULT_REGISTRY })\n .option(\"--cwd <dir>\", \"Working directory\", { default: process.cwd() })\n .action(async (opts: { preset?: string; registry?: string; cwd?: string }) => {\n const preset = opts.preset ?? (await promptForPreset());\n const options: InitOptions = {\n cwd: opts.cwd ?? process.cwd(),\n preset,\n };\n if (opts.registry !== undefined) options.registry = opts.registry;\n const result = await init(options);\n printInitSummary(result);\n });\n\n cli\n .command(\"add <...families>\", \"Install one or more families\")\n .option(\"--as <name>\", \"Rename the family on install (requires a single family)\")\n .option(\"--all\", \"Install every family in the registry\")\n .option(\"--force\", \"Overwrite existing files\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (\n families: string[],\n opts: { as?: string; all?: boolean; force?: boolean; registry?: string; cwd?: string },\n ) => {\n const addOptions: Parameters<typeof add>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n families,\n };\n if (opts.as !== undefined) addOptions.as = opts.as;\n if (opts.all) addOptions.all = true;\n if (opts.force) addOptions.force = true;\n if (opts.registry !== undefined) addOptions.registry = opts.registry;\n const result = await add(addOptions);\n for (const fam of result.added) p.log.success(`added ${fam}`);\n for (const fam of result.overwritten) p.log.success(`overwrote ${fam}`);\n for (const fam of result.skipped) p.log.warn(`${fam} already exists (use --force)`);\n for (const missing of result.missingDependencies) {\n p.log.warn(\n `${missing.family} references unknown recipes: ${missing.references.join(\", \")}`,\n );\n }\n },\n );\n\n cli\n .command(\"remove <...families>\", \"Remove installed families\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (families: string[], opts: { cwd?: string }) => {\n const result = await remove({ cwd: opts.cwd ?? process.cwd(), families });\n for (const fam of result.removed) p.log.success(`removed ${fam}`);\n for (const fam of result.notFound) p.log.warn(`${fam} is not installed`);\n for (const broken of result.brokenDependents) {\n p.log.warn(\n `${broken.dependent} references removed recipes: ${broken.references.join(\", \")}`,\n );\n }\n });\n\n cli\n .command(\"preset <name>\", \"Install every family in the named preset (additive)\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (name: string, opts: { registry?: string; cwd?: string }) => {\n const presetOptions: Parameters<typeof runPreset>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n name,\n };\n if (opts.registry !== undefined) presetOptions.registry = opts.registry;\n const result = await runPreset(presetOptions);\n p.log.info(`preset ${name}: ${result.added.length} added, ${result.skipped.length} already present`);\n });\n\n cli\n .command(\"ls\", \"List installed and available families\")\n .option(\"--installed\", \"Only installed\")\n .option(\"--available\", \"Only available\")\n .option(\"--json\", \"Emit JSON\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (opts: {\n installed?: boolean;\n available?: boolean;\n json?: boolean;\n registry?: string;\n cwd?: string;\n }) => {\n const lsOptions: Parameters<typeof ls>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n };\n if (opts.installed) lsOptions.installedOnly = true;\n if (opts.available) lsOptions.availableOnly = true;\n if (opts.registry !== undefined) lsOptions.registry = opts.registry;\n const result = await ls(lsOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n process.stdout.write(formatLsText(result) + \"\\n\");\n }\n },\n );\n\n cli\n .command(\"build\", \"Regenerate SKILL.md from ./recipes/\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (opts: { cwd?: string }) => {\n try {\n const result = await build({ cwd: opts.cwd ?? process.cwd() });\n if (result.changed) p.log.success(`regenerated ${result.families.length} families`);\n else p.log.info(`up to date (${result.families.length} families)`);\n } catch (err) {\n if (err instanceof BuildError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(1);\n }\n throw err;\n }\n });\n\n cli\n .command(\"dev\", \"Watch ./recipes/ and regenerate SKILL.md on change\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .option(\"--once\", \"Run build once and exit\")\n .action(async (opts: { cwd?: string; once?: boolean }) => {\n if (opts.once) {\n try {\n await build({ cwd: opts.cwd ?? process.cwd() });\n } catch (err) {\n if (err instanceof BuildError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(1);\n }\n throw err;\n }\n return;\n }\n const controller = new AbortController();\n const onSigint = (): void => controller.abort();\n process.on(\"SIGINT\", onSigint);\n try {\n const { stop } = await dev({\n cwd: opts.cwd ?? process.cwd(),\n signal: controller.signal,\n onStatus: (status) => {\n if (status.kind === \"rebuilt\") {\n const msg = `✓ regenerated ${status.families.length} families${status.changed ? \"\" : \" (no changes)\"}`;\n process.stdout.write(msg + \"\\n\");\n } else if (status.kind === \"ready\") {\n process.stdout.write(`watching ${status.recipesDir}\\n`);\n } else {\n process.stderr.write(status.message + \"\\n\");\n }\n },\n });\n // Block until SIGINT (or otherwise aborted), then close the watcher\n // and exit cleanly — without this the listener stays attached and\n // controller.abort() never returns control to the CLI.\n await new Promise<void>((resolve) => {\n if (controller.signal.aborted) resolve();\n else controller.signal.addEventListener(\"abort\", () => resolve(), { once: true });\n });\n await stop();\n } finally {\n process.off(\"SIGINT\", onSigint);\n }\n process.exit(0);\n });\n\n cli\n .command(\"upgrade [...families]\", \"Pull registry updates into ./recipes\")\n .option(\"--check\", \"Read-only — print drift summary and exit nonzero on updates\")\n .option(\"--force\", \"Skip touched-detection; overwrite local edits\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (\n families: string[],\n opts: { check?: boolean; force?: boolean; registry?: string; cwd?: string },\n ) => {\n try {\n const upgradeOptions: Parameters<typeof upgrade>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n families,\n };\n if (opts.check) upgradeOptions.check = true;\n if (opts.force) upgradeOptions.force = true;\n if (opts.registry !== undefined) upgradeOptions.registry = opts.registry;\n if (!opts.check && !opts.force) {\n upgradeOptions.resolver = makeInteractiveResolver();\n }\n const result = await upgrade(upgradeOptions);\n printUpgradeSummary(result.outcomes);\n if (opts.check) {\n if (result.hasUpdates || result.hasTouched) process.exit(1);\n }\n } catch (err) {\n if (err instanceof UpgradeError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(2);\n }\n throw err;\n }\n },\n );\n\n cli\n .command(\"verify\", \"Check installed recipes against fingerprint headers and lockfile\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (opts: { cwd?: string }) => {\n const result = await verify({ cwd: opts.cwd ?? process.cwd() });\n if (result.ok) {\n p.log.success(`verified ${result.checked.length} families`);\n return;\n }\n for (const issue of result.issues) {\n const desc = describeVerifyIssue(issue);\n process.stderr.write(`${issue.family}: ${desc}\\n`);\n }\n process.exit(1);\n });\n\n cli\n .command(\"lint\", \"Static analysis over source files and recipes\")\n .option(\"--fix\", \"Apply auto-fixes where supported\")\n .option(\"--rule <rule>\", \"Only run the named rule (repeatable)\")\n .option(\"--json\", \"Emit machine-readable JSON\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (opts: { fix?: boolean; rule?: string | string[]; json?: boolean; cwd?: string }) => {\n const requested = opts.rule === undefined ? [] : Array.isArray(opts.rule) ? opts.rule : [opts.rule];\n for (const r of requested) {\n if (!ALL_RULES.includes(r as Rule)) {\n process.stderr.write(`unknown rule: ${r}\\n`);\n process.stderr.write(`available: ${ALL_RULES.join(\", \")}\\n`);\n process.exit(2);\n }\n }\n const lintOptions: Parameters<typeof lint>[0] = { cwd: opts.cwd ?? process.cwd() };\n if (opts.fix) lintOptions.fix = true;\n if (requested.length > 0) lintOptions.rules = requested as Rule[];\n const result = await lint(lintOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n const text = formatFindingsText(result.findings);\n if (text) process.stdout.write(text + \"\\n\");\n for (const f of result.filesFixed) p.log.success(`fixed ${f}`);\n if (result.findings.length === 0) p.log.success(\"no findings\");\n }\n if (!result.ok) process.exit(1);\n },\n );\n\n cli\n .command(\"bench [path]\", \"Benchmark token savings in a corpus or target directory\")\n .option(\"--corpus\", \"Run benchmark on the built-in corpus\")\n .option(\"--json\", \"Emit machine-readable JSON\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (pathArg: string | undefined, opts: { corpus?: boolean; json?: boolean; cwd?: string }) => {\n const benchOptions: Parameters<typeof bench>[0] = { cwd: opts.cwd ?? process.cwd() };\n if (opts.corpus) benchOptions.corpus = true;\n if (opts.json) benchOptions.json = true;\n if (pathArg !== undefined) benchOptions.path = pathArg;\n const result = await bench(benchOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n const text = formatBenchTable(result);\n process.stdout.write(text + \"\\n\");\n }\n });\n\n cli.help();\n cli.version(\"0.0.0\");\n cli.parse(argv);\n}\n\nfunction makeInteractiveResolver() {\n return async (ctx: TouchedContext): Promise<UpgradeChoice> => {\n process.stdout.write(\n pc.yellow(`\\n${ctx.family}: locally modified — incoming ${ctx.incoming.version}\\n`),\n );\n const choice = await p.select({\n message: `Resolve ${ctx.family}`,\n options: [\n { value: \"accept\", label: \"Accept new (discard local edits)\" },\n { value: \"keep\", label: \"Keep yours\" },\n { value: \"skip\", label: \"Skip for now\" },\n ],\n });\n if (p.isCancel(choice)) return \"skip\";\n return choice as UpgradeChoice;\n };\n}\n\nfunction printUpgradeSummary(outcomes: Awaited<ReturnType<typeof upgrade>>[\"outcomes\"]): void {\n for (const o of outcomes) {\n if (o.action === \"updated\") {\n process.stdout.write(pc.green(`✓ ${o.family} ${o.from} → ${o.to}\\n`));\n } else if (o.action === \"would-update\") {\n process.stdout.write(pc.cyan(`→ ${o.family} ${o.from} → ${o.to} (available)\\n`));\n } else if (o.action === \"would-review\") {\n process.stdout.write(pc.yellow(`! ${o.family} ${o.from} → ${o.to} (touched; needs review)\\n`));\n } else if (o.action === \"kept\" && o.reason === \"user-chose-keep\") {\n process.stdout.write(pc.dim(` ${o.family} kept local\\n`));\n } else if (o.action === \"skipped\") {\n process.stdout.write(pc.dim(` ${o.family} skipped (${o.reason})\\n`));\n }\n }\n}\n\nfunction describeVerifyIssue(issue: import(\"./commands/verify.js\").VerifyIssue): string {\n switch (issue.kind) {\n case \"missing-header\":\n return \"no fingerprint header — recipe was hand-stripped\";\n case \"header-tampered\":\n return `header sha ${issue.recorded} but body hashes to ${issue.actual}`;\n case \"lockfile-mismatch\":\n return `lockfile expects ${issue.locked} but body hashes to ${issue.actual}`;\n case \"missing-lock-entry\":\n return \"installed but not recorded in lockfile\";\n case \"missing-file\":\n return \"in lockfile but file is missing\";\n }\n}\n\nasync function promptForPreset(): Promise<string> {\n const choice = await p.select({\n message: \"Pick a preset\",\n options: KNOWN_PRESETS.map((name) => ({ value: name, label: name })),\n });\n if (p.isCancel(choice)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return choice;\n}\n\nfunction printInitSummary(result: Awaited<ReturnType<typeof init>>): void {\n p.note(\n [\n `preset: ${result.preset}`,\n `registry: ${result.registry}`,\n `package manager: ${result.packageManager}`,\n `families copied: ${result.installedFamilies.length}`,\n `families skipped: ${result.skippedFamilies.length}`,\n ``,\n `config: ${result.configPath}`,\n `vscode settings: ${result.vscodePath}`,\n `pre-commit: ${result.huskyPath}`,\n `SKILL.md: ${result.skillPath}`,\n ].join(\"\\n\"),\n \"shortwind init\",\n );\n p.outro(`Next: run \\`${result.packageManager} dev\\` to start watching.`);\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli.js\";\n\nrun().catch((err) => {\n console.error(err instanceof Error ? err.stack ?? err.message : err);\n process.exit(1);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","names":["runPreset"],"sources":["../src/cli.ts","../src/bin.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { cac } from \"cac\";\nimport { add } from \"./commands/add.js\";\nimport { build, BuildError } from \"./commands/build.js\";\nimport { dev } from \"./commands/dev.js\";\nimport { remove } from \"./commands/remove.js\";\nimport { preset as runPreset } from \"./commands/preset.js\";\nimport { ls, formatLsText } from \"./commands/ls.js\";\nimport {\n upgrade,\n UpgradeError,\n type TouchedContext,\n type UpgradeChoice,\n} from \"./commands/upgrade.js\";\nimport { verify } from \"./commands/verify.js\";\nimport { lint, formatFindingsText, ALL_RULES, type Rule } from \"./commands/lint.js\";\nimport { init, type InitOptions, DEFAULT_REGISTRY } from \"./init.js\";\nimport { bench, formatBenchTable } from \"./commands/bench.js\";\nimport { newFamily, NewFamilyError } from \"./commands/new.js\";\n\nconst KNOWN_PRESETS = [\"starter\", \"app\", \"content\", \"all\", \"none\"];\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n const cli = cac(\"shortwind\");\n\n cli\n .command(\"init\", \"Bootstrap Shortwind in this project\")\n .option(\"--preset <name>\", \"Preset to install (starter|app|content|all|none)\")\n .option(\"--registry <url>\", \"Registry origin\", { default: DEFAULT_REGISTRY })\n .option(\"--cwd <dir>\", \"Working directory\", { default: process.cwd() })\n .action(async (opts: { preset?: string; registry?: string; cwd?: string }) => {\n const preset = opts.preset ?? (await promptForPreset());\n const options: InitOptions = {\n cwd: opts.cwd ?? process.cwd(),\n preset,\n };\n if (opts.registry !== undefined) options.registry = opts.registry;\n const result = await init(options);\n printInitSummary(result);\n });\n\n cli\n .command(\"add <...families>\", \"Install one or more families\")\n .option(\"--as <name>\", \"Rename the family on install (requires a single family)\")\n .option(\"--all\", \"Install every family in the registry\")\n .option(\"--force\", \"Overwrite existing files\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (\n families: string[],\n opts: { as?: string; all?: boolean; force?: boolean; registry?: string; cwd?: string },\n ) => {\n const addOptions: Parameters<typeof add>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n families,\n };\n if (opts.as !== undefined) addOptions.as = opts.as;\n if (opts.all) addOptions.all = true;\n if (opts.force) addOptions.force = true;\n if (opts.registry !== undefined) addOptions.registry = opts.registry;\n const result = await add(addOptions);\n for (const fam of result.added) p.log.success(`added ${fam}`);\n for (const fam of result.overwritten) p.log.success(`overwrote ${fam}`);\n for (const fam of result.skipped) p.log.warn(`${fam} already exists (use --force)`);\n for (const missing of result.missingDependencies) {\n p.log.warn(\n `${missing.family} references unknown recipes: ${missing.references.join(\", \")}`,\n );\n }\n },\n );\n\n cli\n .command(\"new <family>\", \"Scaffold a new custom recipe family file\")\n .option(\"--force\", \"Overwrite an existing family file\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (family: string, opts: { force?: boolean; cwd?: string }) => {\n try {\n const result = await newFamily({\n cwd: opts.cwd ?? process.cwd(),\n family,\n ...(opts.force ? { force: true } : {}),\n });\n p.log.success(`created ${result.familyPath}`);\n p.log.info(`regenerated ${result.skillPath} — edit the recipes, then \\`shortwind build\\` to refresh.`);\n } catch (err) {\n if (err instanceof NewFamilyError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(1);\n }\n throw err;\n }\n });\n\n cli\n .command(\"remove <...families>\", \"Remove installed families\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (families: string[], opts: { cwd?: string }) => {\n const result = await remove({ cwd: opts.cwd ?? process.cwd(), families });\n for (const fam of result.removed) p.log.success(`removed ${fam}`);\n for (const fam of result.notFound) p.log.warn(`${fam} is not installed`);\n for (const broken of result.brokenDependents) {\n p.log.warn(\n `${broken.dependent} references removed recipes: ${broken.references.join(\", \")}`,\n );\n }\n });\n\n cli\n .command(\"preset <name>\", \"Install every family in the named preset (additive)\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (name: string, opts: { registry?: string; cwd?: string }) => {\n const presetOptions: Parameters<typeof runPreset>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n name,\n };\n if (opts.registry !== undefined) presetOptions.registry = opts.registry;\n const result = await runPreset(presetOptions);\n p.log.info(`preset ${name}: ${result.added.length} added, ${result.skipped.length} already present`);\n });\n\n cli\n .command(\"ls\", \"List installed and available families\")\n .option(\"--installed\", \"Only installed\")\n .option(\"--available\", \"Only available\")\n .option(\"--json\", \"Emit JSON\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (opts: {\n installed?: boolean;\n available?: boolean;\n json?: boolean;\n registry?: string;\n cwd?: string;\n }) => {\n const lsOptions: Parameters<typeof ls>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n };\n if (opts.installed) lsOptions.installedOnly = true;\n if (opts.available) lsOptions.availableOnly = true;\n if (opts.registry !== undefined) lsOptions.registry = opts.registry;\n const result = await ls(lsOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n process.stdout.write(formatLsText(result) + \"\\n\");\n }\n },\n );\n\n cli\n .command(\"build\", \"Regenerate SKILL.md from ./recipes/\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (opts: { cwd?: string }) => {\n try {\n const result = await build({ cwd: opts.cwd ?? process.cwd() });\n if (result.changed) p.log.success(`regenerated ${result.families.length} families`);\n else p.log.info(`up to date (${result.families.length} families)`);\n } catch (err) {\n if (err instanceof BuildError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(1);\n }\n throw err;\n }\n });\n\n cli\n .command(\"dev\", \"Watch ./recipes/ and regenerate SKILL.md on change\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .option(\"--once\", \"Run build once and exit\")\n .action(async (opts: { cwd?: string; once?: boolean }) => {\n if (opts.once) {\n try {\n await build({ cwd: opts.cwd ?? process.cwd() });\n } catch (err) {\n if (err instanceof BuildError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(1);\n }\n throw err;\n }\n return;\n }\n const controller = new AbortController();\n const onSigint = (): void => controller.abort();\n process.on(\"SIGINT\", onSigint);\n try {\n const { stop } = await dev({\n cwd: opts.cwd ?? process.cwd(),\n signal: controller.signal,\n onStatus: (status) => {\n if (status.kind === \"rebuilt\") {\n const msg = `✓ regenerated ${status.families.length} families${status.changed ? \"\" : \" (no changes)\"}`;\n process.stdout.write(msg + \"\\n\");\n } else if (status.kind === \"ready\") {\n process.stdout.write(`watching ${status.recipesDir}\\n`);\n } else {\n process.stderr.write(status.message + \"\\n\");\n }\n },\n });\n // Block until SIGINT (or otherwise aborted), then close the watcher\n // and exit cleanly — without this the listener stays attached and\n // controller.abort() never returns control to the CLI.\n await new Promise<void>((resolve) => {\n if (controller.signal.aborted) resolve();\n else controller.signal.addEventListener(\"abort\", () => resolve(), { once: true });\n });\n await stop();\n } finally {\n process.off(\"SIGINT\", onSigint);\n }\n process.exit(0);\n });\n\n cli\n .command(\"upgrade [...families]\", \"Pull registry updates into ./recipes\")\n .option(\"--check\", \"Read-only — print drift summary and exit nonzero on updates\")\n .option(\"--force\", \"Skip touched-detection; overwrite local edits\")\n .option(\"--registry <url>\", \"Registry origin\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (\n families: string[],\n opts: { check?: boolean; force?: boolean; registry?: string; cwd?: string },\n ) => {\n try {\n const upgradeOptions: Parameters<typeof upgrade>[0] = {\n cwd: opts.cwd ?? process.cwd(),\n families,\n };\n if (opts.check) upgradeOptions.check = true;\n if (opts.force) upgradeOptions.force = true;\n if (opts.registry !== undefined) upgradeOptions.registry = opts.registry;\n if (!opts.check && !opts.force) {\n upgradeOptions.resolver = makeInteractiveResolver();\n }\n const result = await upgrade(upgradeOptions);\n printUpgradeSummary(result.outcomes);\n if (opts.check) {\n if (result.hasUpdates || result.hasTouched) process.exit(1);\n }\n } catch (err) {\n if (err instanceof UpgradeError) {\n process.stderr.write(err.message + \"\\n\");\n process.exit(2);\n }\n throw err;\n }\n },\n );\n\n cli\n .command(\"verify\", \"Check installed recipes against fingerprint headers and lockfile\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (opts: { cwd?: string }) => {\n const result = await verify({ cwd: opts.cwd ?? process.cwd() });\n if (result.ok) {\n p.log.success(`verified ${result.checked.length} families`);\n return;\n }\n for (const issue of result.issues) {\n const desc = describeVerifyIssue(issue);\n process.stderr.write(`${issue.family}: ${desc}\\n`);\n }\n process.exit(1);\n });\n\n cli\n .command(\"lint\", \"Static analysis over source files and recipes\")\n .option(\"--fix\", \"Apply auto-fixes where supported\")\n .option(\"--rule <rule>\", \"Only run the named rule (repeatable)\")\n .option(\"--json\", \"Emit machine-readable JSON\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(\n async (opts: { fix?: boolean; rule?: string | string[]; json?: boolean; cwd?: string }) => {\n const requested = opts.rule === undefined ? [] : Array.isArray(opts.rule) ? opts.rule : [opts.rule];\n for (const r of requested) {\n if (!ALL_RULES.includes(r as Rule)) {\n process.stderr.write(`unknown rule: ${r}\\n`);\n process.stderr.write(`available: ${ALL_RULES.join(\", \")}\\n`);\n process.exit(2);\n }\n }\n const lintOptions: Parameters<typeof lint>[0] = { cwd: opts.cwd ?? process.cwd() };\n if (opts.fix) lintOptions.fix = true;\n if (requested.length > 0) lintOptions.rules = requested as Rule[];\n const result = await lint(lintOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n const text = formatFindingsText(result.findings);\n if (text) process.stdout.write(text + \"\\n\");\n for (const f of result.filesFixed) p.log.success(`fixed ${f}`);\n if (result.findings.length === 0) p.log.success(\"no findings\");\n }\n if (!result.ok) process.exit(1);\n },\n );\n\n cli\n .command(\"bench [path]\", \"Benchmark token savings in a corpus or target directory\")\n .option(\"--corpus\", \"Run benchmark on the built-in corpus\")\n .option(\"--json\", \"Emit machine-readable JSON\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (pathArg: string | undefined, opts: { corpus?: boolean; json?: boolean; cwd?: string }) => {\n const benchOptions: Parameters<typeof bench>[0] = { cwd: opts.cwd ?? process.cwd() };\n if (opts.corpus) benchOptions.corpus = true;\n if (opts.json) benchOptions.json = true;\n if (pathArg !== undefined) benchOptions.path = pathArg;\n const result = await bench(benchOptions);\n if (opts.json) {\n process.stdout.write(JSON.stringify(result, null, 2) + \"\\n\");\n } else {\n const text = formatBenchTable(result);\n process.stdout.write(text + \"\\n\");\n }\n });\n\n cli.help();\n cli.version(\"0.0.0\");\n cli.parse(argv);\n}\n\nfunction makeInteractiveResolver() {\n return async (ctx: TouchedContext): Promise<UpgradeChoice> => {\n process.stdout.write(\n pc.yellow(`\\n${ctx.family}: locally modified — incoming ${ctx.incoming.version}\\n`),\n );\n const choice = await p.select({\n message: `Resolve ${ctx.family}`,\n options: [\n { value: \"accept\", label: \"Accept new (discard local edits)\" },\n { value: \"keep\", label: \"Keep yours\" },\n { value: \"skip\", label: \"Skip for now\" },\n ],\n });\n if (p.isCancel(choice)) return \"skip\";\n return choice as UpgradeChoice;\n };\n}\n\nfunction printUpgradeSummary(outcomes: Awaited<ReturnType<typeof upgrade>>[\"outcomes\"]): void {\n for (const o of outcomes) {\n if (o.action === \"updated\") {\n process.stdout.write(pc.green(`✓ ${o.family} ${o.from} → ${o.to}\\n`));\n } else if (o.action === \"would-update\") {\n process.stdout.write(pc.cyan(`→ ${o.family} ${o.from} → ${o.to} (available)\\n`));\n } else if (o.action === \"would-review\") {\n process.stdout.write(pc.yellow(`! ${o.family} ${o.from} → ${o.to} (touched; needs review)\\n`));\n } else if (o.action === \"kept\" && o.reason === \"user-chose-keep\") {\n process.stdout.write(pc.dim(` ${o.family} kept local\\n`));\n } else if (o.action === \"skipped\") {\n process.stdout.write(pc.dim(` ${o.family} skipped (${o.reason})\\n`));\n }\n }\n}\n\nfunction describeVerifyIssue(issue: import(\"./commands/verify.js\").VerifyIssue): string {\n switch (issue.kind) {\n case \"missing-header\":\n return \"no fingerprint header — recipe was hand-stripped\";\n case \"header-tampered\":\n return `header sha ${issue.recorded} but body hashes to ${issue.actual}`;\n case \"lockfile-mismatch\":\n return `lockfile expects ${issue.locked} but body hashes to ${issue.actual}`;\n case \"missing-lock-entry\":\n return \"installed but not recorded in lockfile\";\n case \"missing-file\":\n return \"in lockfile but file is missing\";\n }\n}\n\nasync function promptForPreset(): Promise<string> {\n const choice = await p.select({\n message: \"Pick a preset\",\n options: KNOWN_PRESETS.map((name) => ({ value: name, label: name })),\n });\n if (p.isCancel(choice)) {\n p.cancel(\"Cancelled.\");\n process.exit(0);\n }\n return choice;\n}\n\nfunction printInitSummary(result: Awaited<ReturnType<typeof init>>): void {\n p.note(\n [\n `preset: ${result.preset}`,\n `registry: ${result.registry}`,\n `package manager: ${result.packageManager}`,\n `families copied: ${result.installedFamilies.length}`,\n `families skipped: ${result.skippedFamilies.length}`,\n ``,\n `config: ${result.configPath}`,\n `vscode settings: ${result.vscodePath}`,\n `pre-commit: ${result.huskyPath}`,\n `SKILL.md: ${result.skillPath}`,\n `theme: ${describeTheme(result)}`,\n `bundler config: ${describeBundlerConfig(result)}`,\n ].join(\"\\n\"),\n \"shortwind init\",\n );\n if (result.bundlerConfigAction === \"manual\" && result.bundlerConfigSnippet) {\n p.log.warn(`Add the plugin to your bundler config:\\n\\n${result.bundlerConfigSnippet}`);\n }\n p.outro(`Next: run \\`${result.packageManager} dev\\` to start watching.`);\n}\n\nfunction describeBundlerConfig(result: Awaited<ReturnType<typeof init>>): string {\n switch (result.bundlerConfigAction) {\n case \"patched\":\n return `plugin added to ${result.bundlerConfigPath}`;\n case \"manual\":\n return \"needs a manual edit (see below)\";\n case \"skipped\":\n return result.bundlerConfigPath\n ? `already wired in ${result.bundlerConfigPath}`\n : \"skipped (no supported bundler)\";\n }\n}\n\nfunction describeTheme(result: Awaited<ReturnType<typeof init>>): string {\n switch (result.themeAction) {\n case \"injected\":\n return `tokens added to ${result.themePath}`;\n case \"created\":\n return `wrote ${result.themePath}`;\n case \"skipped\":\n return result.themePath\n ? `left existing theme in ${result.themePath} untouched`\n : \"skipped (no Tailwind v4 CSS entry — define color tokens yourself)\";\n }\n}\n","#!/usr/bin/env node\nimport { run } from \"./cli.js\";\n\nrun().catch((err) => {\n console.error(err instanceof Error ? err.stack ?? err.message : err);\n process.exit(1);\n});\n"],"mappings":";;;;;;AAqBA,MAAM,gBAAgB;CAAC;CAAW;CAAO;CAAW;CAAO;CAAO;AAElE,eAAsB,IAAI,OAAiB,QAAQ,MAAqB;CACtE,MAAM,MAAM,IAAI,YAAY;CAE5B,IACG,QAAQ,QAAQ,sCAAsC,CACtD,OAAO,mBAAmB,mDAAmD,CAC7E,OAAO,oBAAoB,mBAAmB,EAAE,SAAS,kBAAkB,CAAC,CAC5E,OAAO,eAAe,qBAAqB,EAAE,SAAS,QAAQ,KAAK,EAAE,CAAC,CACtE,OAAO,OAAO,SAA+D;EAC5E,MAAM,SAAS,KAAK,UAAW,MAAM,iBAAiB;EACtD,MAAM,UAAuB;GAC3B,KAAK,KAAK,OAAO,QAAQ,KAAK;GAC9B;GACD;EACD,IAAI,KAAK,aAAa,KAAA,GAAW,QAAQ,WAAW,KAAK;EAEzD,iBAAiB,MADI,KAAK,QAAQ,CACV;GACxB;CAEJ,IACG,QAAQ,qBAAqB,+BAA+B,CAC5D,OAAO,eAAe,0DAA0D,CAChF,OAAO,SAAS,uCAAuC,CACvD,OAAO,WAAW,2BAA2B,CAC7C,OAAO,oBAAoB,kBAAkB,CAC7C,OAAO,eAAe,oBAAoB,CAC1C,OACC,OACE,UACA,SACG;EACH,MAAM,aAAwC;GAC5C,KAAK,KAAK,OAAO,QAAQ,KAAK;GAC9B;GACD;EACD,IAAI,KAAK,OAAO,KAAA,GAAW,WAAW,KAAK,KAAK;EAChD,IAAI,KAAK,KAAK,WAAW,MAAM;EAC/B,IAAI,KAAK,OAAO,WAAW,QAAQ;EACnC,IAAI,KAAK,aAAa,KAAA,GAAW,WAAW,WAAW,KAAK;EAC5D,MAAM,SAAS,MAAM,IAAI,WAAW;EACpC,KAAK,MAAM,OAAO,OAAO,OAAO,EAAE,IAAI,QAAQ,SAAS,MAAM;EAC7D,KAAK,MAAM,OAAO,OAAO,aAAa,EAAE,IAAI,QAAQ,aAAa,MAAM;EACvE,KAAK,MAAM,OAAO,OAAO,SAAS,EAAE,IAAI,KAAK,GAAG,IAAI,+BAA+B;EACnF,KAAK,MAAM,WAAW,OAAO,qBAC3B,EAAE,IAAI,KACJ,GAAG,QAAQ,OAAO,+BAA+B,QAAQ,WAAW,KAAK,KAAK,GAC/E;GAGN;CAEH,IACG,QAAQ,gBAAgB,2CAA2C,CACnE,OAAO,WAAW,oCAAoC,CACtD,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,QAAgB,SAA4C;EACzE,IAAI;GACF,MAAM,SAAS,MAAM,UAAU;IAC7B,KAAK,KAAK,OAAO,QAAQ,KAAK;IAC9B;IACA,GAAI,KAAK,QAAQ,EAAE,OAAO,MAAM,GAAG,EAAE;IACtC,CAAC;GACF,EAAE,IAAI,QAAQ,WAAW,OAAO,aAAa;GAC7C,EAAE,IAAI,KAAK,eAAe,OAAO,UAAU,2DAA2D;WAC/F,KAAK;GACZ,IAAI,eAAe,gBAAgB;IACjC,QAAQ,OAAO,MAAM,IAAI,UAAU,KAAK;IACxC,QAAQ,KAAK,EAAE;;GAEjB,MAAM;;GAER;CAEJ,IACG,QAAQ,wBAAwB,4BAA4B,CAC5D,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,UAAoB,SAA2B;EAC5D,MAAM,SAAS,MAAM,OAAO;GAAE,KAAK,KAAK,OAAO,QAAQ,KAAK;GAAE;GAAU,CAAC;EACzE,KAAK,MAAM,OAAO,OAAO,SAAS,EAAE,IAAI,QAAQ,WAAW,MAAM;EACjE,KAAK,MAAM,OAAO,OAAO,UAAU,EAAE,IAAI,KAAK,GAAG,IAAI,mBAAmB;EACxE,KAAK,MAAM,UAAU,OAAO,kBAC1B,EAAE,IAAI,KACJ,GAAG,OAAO,UAAU,+BAA+B,OAAO,WAAW,KAAK,KAAK,GAChF;GAEH;CAEJ,IACG,QAAQ,iBAAiB,sDAAsD,CAC/E,OAAO,oBAAoB,kBAAkB,CAC7C,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,MAAc,SAA8C;EACzE,MAAM,gBAAiD;GACrD,KAAK,KAAK,OAAO,QAAQ,KAAK;GAC9B;GACD;EACD,IAAI,KAAK,aAAa,KAAA,GAAW,cAAc,WAAW,KAAK;EAC/D,MAAM,SAAS,MAAMA,OAAU,cAAc;EAC7C,EAAE,IAAI,KAAK,UAAU,KAAK,IAAI,OAAO,MAAM,OAAO,UAAU,OAAO,QAAQ,OAAO,kBAAkB;GACpG;CAEJ,IACG,QAAQ,MAAM,wCAAwC,CACtD,OAAO,eAAe,iBAAiB,CACvC,OAAO,eAAe,iBAAiB,CACvC,OAAO,UAAU,YAAY,CAC7B,OAAO,oBAAoB,kBAAkB,CAC7C,OAAO,eAAe,oBAAoB,CAC1C,OACC,OAAO,SAMD;EACJ,MAAM,YAAsC,EAC1C,KAAK,KAAK,OAAO,QAAQ,KAAK,EAC/B;EACD,IAAI,KAAK,WAAW,UAAU,gBAAgB;EAC9C,IAAI,KAAK,WAAW,UAAU,gBAAgB;EAC9C,IAAI,KAAK,aAAa,KAAA,GAAW,UAAU,WAAW,KAAK;EAC3D,MAAM,SAAS,MAAM,GAAG,UAAU;EAClC,IAAI,KAAK,MACP,QAAQ,OAAO,MAAM,KAAK,UAAU,QAAQ,MAAM,EAAE,GAAG,KAAK;OAE5D,QAAQ,OAAO,MAAM,aAAa,OAAO,GAAG,KAAK;GAGtD;CAEH,IACG,QAAQ,SAAS,sCAAsC,CACvD,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,SAA2B;EACxC,IAAI;GACF,MAAM,SAAS,MAAM,MAAM,EAAE,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,CAAC;GAC9D,IAAI,OAAO,SAAS,EAAE,IAAI,QAAQ,eAAe,OAAO,SAAS,OAAO,WAAW;QAC9E,EAAE,IAAI,KAAK,eAAe,OAAO,SAAS,OAAO,YAAY;WAC3D,KAAK;GACZ,IAAI,eAAe,YAAY;IAC7B,QAAQ,OAAO,MAAM,IAAI,UAAU,KAAK;IACxC,QAAQ,KAAK,EAAE;;GAEjB,MAAM;;GAER;CAEJ,IACG,QAAQ,OAAO,qDAAqD,CACpE,OAAO,eAAe,oBAAoB,CAC1C,OAAO,UAAU,0BAA0B,CAC3C,OAAO,OAAO,SAA2C;EACxD,IAAI,KAAK,MAAM;GACb,IAAI;IACF,MAAM,MAAM,EAAE,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,CAAC;YACxC,KAAK;IACZ,IAAI,eAAe,YAAY;KAC7B,QAAQ,OAAO,MAAM,IAAI,UAAU,KAAK;KACxC,QAAQ,KAAK,EAAE;;IAEjB,MAAM;;GAER;;EAEF,MAAM,aAAa,IAAI,iBAAiB;EACxC,MAAM,iBAAuB,WAAW,OAAO;EAC/C,QAAQ,GAAG,UAAU,SAAS;EAC9B,IAAI;GACF,MAAM,EAAE,SAAS,MAAM,IAAI;IACzB,KAAK,KAAK,OAAO,QAAQ,KAAK;IAC9B,QAAQ,WAAW;IACnB,WAAW,WAAW;KACpB,IAAI,OAAO,SAAS,WAAW;MAC7B,MAAM,MAAM,iBAAiB,OAAO,SAAS,OAAO,WAAW,OAAO,UAAU,KAAK;MACrF,QAAQ,OAAO,MAAM,MAAM,KAAK;YAC3B,IAAI,OAAO,SAAS,SACzB,QAAQ,OAAO,MAAM,YAAY,OAAO,WAAW,IAAI;UAEvD,QAAQ,OAAO,MAAM,OAAO,UAAU,KAAK;;IAGhD,CAAC;GAIF,MAAM,IAAI,SAAe,YAAY;IACnC,IAAI,WAAW,OAAO,SAAS,SAAS;SACnC,WAAW,OAAO,iBAAiB,eAAe,SAAS,EAAE,EAAE,MAAM,MAAM,CAAC;KACjF;GACF,MAAM,MAAM;YACJ;GACR,QAAQ,IAAI,UAAU,SAAS;;EAEjC,QAAQ,KAAK,EAAE;GACf;CAEJ,IACG,QAAQ,yBAAyB,uCAAuC,CACxE,OAAO,WAAW,8DAA8D,CAChF,OAAO,WAAW,gDAAgD,CAClE,OAAO,oBAAoB,kBAAkB,CAC7C,OAAO,eAAe,oBAAoB,CAC1C,OACC,OACE,UACA,SACG;EACH,IAAI;GACF,MAAM,iBAAgD;IACpD,KAAK,KAAK,OAAO,QAAQ,KAAK;IAC9B;IACD;GACD,IAAI,KAAK,OAAO,eAAe,QAAQ;GACvC,IAAI,KAAK,OAAO,eAAe,QAAQ;GACvC,IAAI,KAAK,aAAa,KAAA,GAAW,eAAe,WAAW,KAAK;GAChE,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACvB,eAAe,WAAW,yBAAyB;GAErD,MAAM,SAAS,MAAM,QAAQ,eAAe;GAC5C,oBAAoB,OAAO,SAAS;GACpC,IAAI,KAAK;QACH,OAAO,cAAc,OAAO,YAAY,QAAQ,KAAK,EAAE;;WAEtD,KAAK;GACZ,IAAI,eAAe,cAAc;IAC/B,QAAQ,OAAO,MAAM,IAAI,UAAU,KAAK;IACxC,QAAQ,KAAK,EAAE;;GAEjB,MAAM;;GAGX;CAEH,IACG,QAAQ,UAAU,mEAAmE,CACrF,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,SAA2B;EACxC,MAAM,SAAS,MAAM,OAAO,EAAE,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,CAAC;EAC/D,IAAI,OAAO,IAAI;GACb,EAAE,IAAI,QAAQ,YAAY,OAAO,QAAQ,OAAO,WAAW;GAC3D;;EAEF,KAAK,MAAM,SAAS,OAAO,QAAQ;GACjC,MAAM,OAAO,oBAAoB,MAAM;GACvC,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,IAAI,KAAK,IAAI;;EAEpD,QAAQ,KAAK,EAAE;GACf;CAEJ,IACG,QAAQ,QAAQ,gDAAgD,CAChE,OAAO,SAAS,mCAAmC,CACnD,OAAO,iBAAiB,uCAAuC,CAC/D,OAAO,UAAU,6BAA6B,CAC9C,OAAO,eAAe,oBAAoB,CAC1C,OACC,OAAO,SAAoF;EACzF,MAAM,YAAY,KAAK,SAAS,KAAA,IAAY,EAAE,GAAG,MAAM,QAAQ,KAAK,KAAK,GAAG,KAAK,OAAO,CAAC,KAAK,KAAK;EACnG,KAAK,MAAM,KAAK,WACd,IAAI,CAAC,UAAU,SAAS,EAAU,EAAE;GAClC,QAAQ,OAAO,MAAM,iBAAiB,EAAE,IAAI;GAC5C,QAAQ,OAAO,MAAM,cAAc,UAAU,KAAK,KAAK,CAAC,IAAI;GAC5D,QAAQ,KAAK,EAAE;;EAGnB,MAAM,cAA0C,EAAE,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE;EAClF,IAAI,KAAK,KAAK,YAAY,MAAM;EAChC,IAAI,UAAU,SAAS,GAAG,YAAY,QAAQ;EAC9C,MAAM,SAAS,MAAM,KAAK,YAAY;EACtC,IAAI,KAAK,MACP,QAAQ,OAAO,MAAM,KAAK,UAAU,QAAQ,MAAM,EAAE,GAAG,KAAK;OACvD;GACL,MAAM,OAAO,mBAAmB,OAAO,SAAS;GAChD,IAAI,MAAM,QAAQ,OAAO,MAAM,OAAO,KAAK;GAC3C,KAAK,MAAM,KAAK,OAAO,YAAY,EAAE,IAAI,QAAQ,SAAS,IAAI;GAC9D,IAAI,OAAO,SAAS,WAAW,GAAG,EAAE,IAAI,QAAQ,cAAc;;EAEhE,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,EAAE;GAElC;CAEH,IACG,QAAQ,gBAAgB,0DAA0D,CAClF,OAAO,YAAY,uCAAuC,CAC1D,OAAO,UAAU,6BAA6B,CAC9C,OAAO,eAAe,oBAAoB,CAC1C,OAAO,OAAO,SAA6B,SAA6D;EACvG,MAAM,eAA4C,EAAE,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE;EACpF,IAAI,KAAK,QAAQ,aAAa,SAAS;EACvC,IAAI,KAAK,MAAM,aAAa,OAAO;EACnC,IAAI,YAAY,KAAA,GAAW,aAAa,OAAO;EAC/C,MAAM,SAAS,MAAM,MAAM,aAAa;EACxC,IAAI,KAAK,MACP,QAAQ,OAAO,MAAM,KAAK,UAAU,QAAQ,MAAM,EAAE,GAAG,KAAK;OACvD;GACL,MAAM,OAAO,iBAAiB,OAAO;GACrC,QAAQ,OAAO,MAAM,OAAO,KAAK;;GAEnC;CAEJ,IAAI,MAAM;CACV,IAAI,QAAQ,QAAQ;CACpB,IAAI,MAAM,KAAK;;AAGjB,SAAS,0BAA0B;CACjC,OAAO,OAAO,QAAgD;EAC5D,QAAQ,OAAO,MACb,GAAG,OAAO,KAAK,IAAI,OAAO,gCAAgC,IAAI,SAAS,QAAQ,IAAI,CACpF;EACD,MAAM,SAAS,MAAM,EAAE,OAAO;GAC5B,SAAS,WAAW,IAAI;GACxB,SAAS;IACP;KAAE,OAAO;KAAU,OAAO;KAAoC;IAC9D;KAAE,OAAO;KAAQ,OAAO;KAAc;IACtC;KAAE,OAAO;KAAQ,OAAO;KAAgB;IACzC;GACF,CAAC;EACF,IAAI,EAAE,SAAS,OAAO,EAAE,OAAO;EAC/B,OAAO;;;AAIX,SAAS,oBAAoB,UAAiE;CAC5F,KAAK,MAAM,KAAK,UACd,IAAI,EAAE,WAAW,WACf,QAAQ,OAAO,MAAM,GAAG,MAAM,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC;MAChE,IAAI,EAAE,WAAW,gBACtB,QAAQ,OAAO,MAAM,GAAG,KAAK,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,KAAK,EAAE,GAAG,gBAAgB,CAAC;MAC3E,IAAI,EAAE,WAAW,gBACtB,QAAQ,OAAO,MAAM,GAAG,OAAO,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,KAAK,EAAE,GAAG,4BAA4B,CAAC;MACzF,IAAI,EAAE,WAAW,UAAU,EAAE,WAAW,mBAC7C,QAAQ,OAAO,MAAM,GAAG,IAAI,KAAK,EAAE,OAAO,eAAe,CAAC;MACrD,IAAI,EAAE,WAAW,WACtB,QAAQ,OAAO,MAAM,GAAG,IAAI,KAAK,EAAE,OAAO,YAAY,EAAE,OAAO,KAAK,CAAC;;AAK3E,SAAS,oBAAoB,OAA2D;CACtF,QAAQ,MAAM,MAAd;EACE,KAAK,kBACH,OAAO;EACT,KAAK,mBACH,OAAO,cAAc,MAAM,SAAS,sBAAsB,MAAM;EAClE,KAAK,qBACH,OAAO,oBAAoB,MAAM,OAAO,sBAAsB,MAAM;EACtE,KAAK,sBACH,OAAO;EACT,KAAK,gBACH,OAAO;;;AAIb,eAAe,kBAAmC;CAChD,MAAM,SAAS,MAAM,EAAE,OAAO;EAC5B,SAAS;EACT,SAAS,cAAc,KAAK,UAAU;GAAE,OAAO;GAAM,OAAO;GAAM,EAAE;EACrE,CAAC;CACF,IAAI,EAAE,SAAS,OAAO,EAAE;EACtB,EAAE,OAAO,aAAa;EACtB,QAAQ,KAAK,EAAE;;CAEjB,OAAO;;AAGT,SAAS,iBAAiB,QAAgD;CACxE,EAAE,KACA;EACE,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO,kBAAkB;EAC/C,sBAAsB,OAAO,gBAAgB;EAC7C;EACA,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO;EAC7B,sBAAsB,OAAO;EAC7B,sBAAsB,cAAc,OAAO;EAC3C,sBAAsB,sBAAsB,OAAO;EACpD,CAAC,KAAK,KAAK,EACZ,iBACD;CACD,IAAI,OAAO,wBAAwB,YAAY,OAAO,sBACpD,EAAE,IAAI,KAAK,6CAA6C,OAAO,uBAAuB;CAExF,EAAE,MAAM,eAAe,OAAO,eAAe,2BAA2B;;AAG1E,SAAS,sBAAsB,QAAkD;CAC/E,QAAQ,OAAO,qBAAf;EACE,KAAK,WACH,OAAO,mBAAmB,OAAO;EACnC,KAAK,UACH,OAAO;EACT,KAAK,WACH,OAAO,OAAO,oBACV,oBAAoB,OAAO,sBAC3B;;;AAIV,SAAS,cAAc,QAAkD;CACvE,QAAQ,OAAO,aAAf;EACE,KAAK,YACH,OAAO,mBAAmB,OAAO;EACnC,KAAK,WACH,OAAO,SAAS,OAAO;EACzB,KAAK,WACH,OAAO,OAAO,YACV,0BAA0B,OAAO,UAAU,cAC3C;;;;;ACjbV,KAAK,CAAC,OAAO,QAAQ;CACnB,QAAQ,MAAM,eAAe,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI;CACpE,QAAQ,KAAK,EAAE;EACf"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,12 @@ type ProjectShape = {
14
14
  };
15
15
  declare function detectProject(cwd: string): ProjectShape;
16
16
  //#endregion
17
+ //#region src/theme.d.ts
18
+ type ThemeAction = "injected" | "created" | "skipped";
19
+ //#endregion
20
+ //#region src/bundler-config.d.ts
21
+ type BundlerWireAction = "patched" | "manual" | "skipped";
22
+ //#endregion
17
23
  //#region src/init.d.ts
18
24
  declare const DEFAULT_REGISTRY = "https://shortwind.dev/registry";
19
25
  type InitOptions = {
@@ -35,6 +41,11 @@ type InitResult = {
35
41
  vscodePath: string;
36
42
  huskyPath: string;
37
43
  skillPath: string;
44
+ themePath: string | null;
45
+ themeAction: ThemeAction;
46
+ bundlerConfigPath: string | null;
47
+ bundlerConfigAction: BundlerWireAction;
48
+ bundlerConfigSnippet?: string;
38
49
  };
39
50
  declare function init(options: InitOptions): Promise<InitResult>;
40
51
  //#endregion
@@ -101,6 +112,21 @@ type RemoveResult = {
101
112
  };
102
113
  declare function remove(options: RemoveOptions): Promise<RemoveResult>;
103
114
  //#endregion
115
+ //#region src/commands/new.d.ts
116
+ type NewOptions = {
117
+ cwd: string;
118
+ family: string;
119
+ force?: boolean;
120
+ };
121
+ type NewResult = {
122
+ familyPath: string;
123
+ skillPath: string;
124
+ };
125
+ declare class NewFamilyError extends Error {
126
+ constructor(message: string);
127
+ }
128
+ declare function newFamily(options: NewOptions): Promise<NewResult>;
129
+ //#endregion
104
130
  //#region src/commands/preset.d.ts
105
131
  type PresetOptions = {
106
132
  cwd: string;
@@ -304,7 +330,7 @@ declare function bench(options: BenchOptions): Promise<BenchResult>;
304
330
  declare function formatBenchTable(result: BenchResult): string;
305
331
  //#endregion
306
332
  //#region src/commands/lint.d.ts
307
- declare const ALL_RULES: readonly ["recipe/unknown", "recipe/cycle", "recipe/duplicate", "recipe/unused", "recipe/no-redundant-utility", "recipe/bad-suffix-order", "recipe/conflicting-intent", "recipe/dynamic-class", "recipe/no-sibling-overlap"];
333
+ declare const ALL_RULES: readonly ["recipe/unknown", "recipe/cycle", "recipe/duplicate", "recipe/unused", "recipe/no-redundant-utility", "recipe/bad-suffix-order", "recipe/conflicting-intent", "recipe/dynamic-class", "recipe/no-sibling-overlap", "recipe/reserved-name"];
308
334
  type Rule = (typeof ALL_RULES)[number];
309
335
  type Severity = "error" | "warning" | "info";
310
336
  type Finding = {
@@ -370,5 +396,5 @@ declare function sealRecipeFile(source: string, family: string, version: string)
370
396
  */
371
397
  declare function renameFamilyInSource(source: string, from: string, to: string): string;
372
398
  //#endregion
373
- export { ALL_RULES, type AddOptions, type AddResult, type BenchOptions, type BenchResult, BuildError, type BuildOptions, type BuildResult, type Bundler, DEFAULT_REGISTRY, type DevOptions, type DevStatus, type FamilyOutcome, type FamilyState, type FileBenchResult, type Finding, type Framework, type InitOptions, type InitResult, type InstallPackages, type LintOptions, type LintResult, type LockEntry, type Lockfile, type LsOptions, type LsResult, type PackageManager, type PresetOptions, type PresetResult, type Presets, type ProjectShape, type RecipeHeader, type RegistrySource, type RemoveOptions, type RemoveResult, type Rule, type Severity, type TouchedContext, type UpgradeChoice, UpgradeError, type UpgradeOptions, type UpgradeResolver, type UpgradeResult, type VerifyIssue, type VerifyOptions, type VerifyResult, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
399
+ export { ALL_RULES, type AddOptions, type AddResult, type BenchOptions, type BenchResult, BuildError, type BuildOptions, type BuildResult, type Bundler, DEFAULT_REGISTRY, type DevOptions, type DevStatus, type FamilyOutcome, type FamilyState, type FileBenchResult, type Finding, type Framework, type InitOptions, type InitResult, type InstallPackages, type LintOptions, type LintResult, type LockEntry, type Lockfile, type LsOptions, type LsResult, NewFamilyError, type NewOptions, type NewResult, type PackageManager, type PresetOptions, type PresetResult, type Presets, type ProjectShape, type RecipeHeader, type RegistrySource, type RemoveOptions, type RemoveResult, type Rule, type Severity, type TouchedContext, type UpgradeChoice, UpgradeError, type UpgradeOptions, type UpgradeResolver, type UpgradeResult, type VerifyIssue, type VerifyOptions, type VerifyResult, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, newFamily, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
374
400
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/detect.ts","../src/init.ts","../src/registry-source.ts","../src/lockfile.ts","../src/commands/add.ts","../src/commands/remove.ts","../src/commands/preset.ts","../src/commands/ls.ts","../src/commands/build.ts","../src/commands/dev.ts","../src/commands/upgrade.ts","../src/commands/verify.ts","../src/commands/bench.ts","../src/commands/lint.ts","../src/fingerprint.ts","../src/project.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/detect.ts","../src/theme.ts","../src/bundler-config.ts","../src/init.ts","../src/registry-source.ts","../src/lockfile.ts","../src/commands/add.ts","../src/commands/remove.ts","../src/commands/new.ts","../src/commands/preset.ts","../src/commands/ls.ts","../src/commands/build.ts","../src/commands/dev.ts","../src/commands/upgrade.ts","../src/commands/verify.ts","../src/commands/bench.ts","../src/commands/lint.ts","../src/fingerprint.ts","../src/project.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { A as rewriteHeaderSha, C as createRegistrySource, D as computeBodySha, E as buildHeaderLine, O as extractHeader, S as writeLockfile, T as detectProject, _ as add, a as formatFindingsText, b as init, c as UpgradeError, d as BuildError, f as build, g as remove, h as preset, i as extractClassUsages, j as sealRecipeFile, k as normalizeBody, l as upgrade, m as ls, n as formatBenchTable, o as lint, p as formatLsText, r as ALL_RULES, s as verify, t as bench, u as dev, v as renameFamilyInSource, w as resolvePresetFamilies, x as readLockfile, y as DEFAULT_REGISTRY } from "./bench-a_9WmuOE.js";
2
- export { ALL_RULES, BuildError, DEFAULT_REGISTRY, UpgradeError, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
1
+ import { A as extractHeader, C as readLockfile, D as detectProject, E as resolvePresetFamilies, M as rewriteHeaderSha, N as sealRecipeFile, O as buildHeaderLine, S as init, T as createRegistrySource, _ as newFamily, a as formatFindingsText, b as renameFamilyInSource, c as UpgradeError, d as BuildError, f as build, g as NewFamilyError, h as preset, i as extractClassUsages, j as normalizeBody, k as computeBodySha, l as upgrade, m as ls, n as formatBenchTable, o as lint, p as formatLsText, r as ALL_RULES, s as verify, t as bench, u as dev, v as remove, w as writeLockfile, x as DEFAULT_REGISTRY, y as add } from "./bench-NKKDz3ld.js";
2
+ export { ALL_RULES, BuildError, DEFAULT_REGISTRY, NewFamilyError, UpgradeError, add, bench, build, buildHeaderLine, computeBodySha, createRegistrySource, detectProject, dev, extractClassUsages, extractHeader, formatBenchTable, formatFindingsText, formatLsText, init, lint, ls, newFamily, normalizeBody, preset, readLockfile, remove, renameFamilyInSource, resolvePresetFamilies, rewriteHeaderSha, sealRecipeFile, upgrade, verify, writeLockfile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shortwind/cli",
3
- "version": "0.1.0-beta.0",
3
+ "version": "0.1.0-beta.1",
4
4
  "description": "Shortwind CLI — init, add, remove, upgrade, dev, build, lint, ls, preset. Provides the `shortwind` command.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,8 +19,8 @@
19
19
  "jsonc-parser": "^3.3.1",
20
20
  "picocolors": "^1.1.1",
21
21
  "tinyglobby": "^0.2.16",
22
- "@shortwind/core": "0.1.0-beta.0",
23
- "@shortwind/tailwind": "0.1.0-beta.0"
22
+ "@shortwind/tailwind": "0.1.0-beta.1",
23
+ "@shortwind/core": "0.1.0-beta.1"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^25.7.0",