@shortwind/cli 0.1.0-beta.5 → 0.1.0-beta.6

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, cliVersion, type InitOptions, DEFAULT_REGISTRY } from \"./init.js\";\nimport { bench, formatBenchTable } from \"./commands/bench.js\";\nimport { newFamily, NewFamilyError } from \"./commands/new.js\";\nimport { reseal } from \"./commands/reseal.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(\"reseal [...families]\", \"Re-sign recipes after intentional edits (updates header sha + lockfile)\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (families: string[], opts: { cwd?: string }) => {\n const result = await reseal({ cwd: opts.cwd ?? process.cwd(), families });\n for (const f of result.resealed) p.log.success(`resealed ${f}`);\n for (const f of result.unchanged) p.log.info(`${f} already sealed`);\n for (const f of result.notFound) p.log.warn(`${f} is not installed`);\n for (const f of result.noHeader) p.log.warn(`${f} has no fingerprint header`);\n if (result.resealed.length === 0 && result.unchanged.length > 0 && result.notFound.length === 0) {\n p.log.success(\"all recipes already sealed\");\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(cliVersion() ?? \"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 `agent guide: ${describeAgentsFile(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 describeAgentsFile(result: Awaited<ReturnType<typeof init>>): string {\n switch (result.agentsFileAction) {\n case \"created\":\n return `wrote ${result.agentsFilePath}`;\n case \"appended\":\n return `added recipe pointer to ${result.agentsFilePath}`;\n case \"skipped\":\n return `pointer already in ${result.agentsFilePath}`;\n }\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":"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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, cliVersion, type InitOptions, DEFAULT_REGISTRY } from \"./init.js\";\nimport { bench, formatBenchTable } from \"./commands/bench.js\";\nimport { newFamily, NewFamilyError } from \"./commands/new.js\";\nimport { reseal } from \"./commands/reseal.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(\"reseal [...families]\", \"Re-sign recipes after intentional edits (updates header sha + lockfile)\")\n .option(\"--cwd <dir>\", \"Working directory\")\n .action(async (families: string[], opts: { cwd?: string }) => {\n const result = await reseal({ cwd: opts.cwd ?? process.cwd(), families });\n for (const f of result.resealed) p.log.success(`resealed ${f}`);\n for (const f of result.unchanged) p.log.info(`${f} already sealed`);\n for (const f of result.notFound) p.log.warn(`${f} is not installed`);\n for (const f of result.noHeader) p.log.warn(`${f} has no fingerprint header`);\n if (result.resealed.length === 0 && result.unchanged.length > 0 && result.notFound.length === 0) {\n p.log.success(\"all recipes already sealed\");\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(cliVersion() ?? \"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 installCmd(pm: Awaited<ReturnType<typeof init>>[\"packageManager\"]): string {\n switch (pm) {\n case \"bun\":\n return \"bun add -d\";\n case \"npm\":\n return \"npm install -D\";\n default:\n return `${pm} add -D`;\n }\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 `adapters: ${result.installOk ? result.installedPackages.join(\", \") || \"none\" : \"install failed — see below\"}`,\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 `agent guide: ${describeAgentsFile(result)}`,\n ].join(\"\\n\"),\n \"shortwind init\",\n );\n if (!result.installOk) {\n const v = cliVersion();\n const specs = result.installedPackages.map((p) => (v ? `${p}@${v}` : p)).join(\" \");\n p.log.warn(\n `Couldn't auto-install adapters (your recipes and config were still scaffolded).\\n` +\n `Finish by installing them yourself:\\n\\n` +\n ` ${installCmd(result.packageManager)} ${specs}\\n\\n` +\n `(${result.installError ?? \"unknown error\"})`,\n );\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 describeAgentsFile(result: Awaited<ReturnType<typeof init>>): string {\n switch (result.agentsFileAction) {\n case \"created\":\n return `wrote ${result.agentsFilePath}`;\n case \"appended\":\n return `added recipe pointer to ${result.agentsFilePath}`;\n case \"skipped\":\n return `pointer already in ${result.agentsFilePath}`;\n }\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":"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"}
package/dist/index.d.ts CHANGED
@@ -51,6 +51,8 @@ type InitResult = {
51
51
  bundlerConfigSnippet?: string;
52
52
  agentsFilePath: string | null;
53
53
  agentsFileAction: AgentsFileAction;
54
+ installOk: boolean;
55
+ installError: string | null;
54
56
  };
55
57
  declare function init(options: InitOptions): Promise<InitResult>;
56
58
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/detect.ts","../src/theme.ts","../src/bundler-config.ts","../src/agents-file.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/reseal.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/agents-file.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/reseal.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 buildHeaderLine, D as createRegistrySource, E as writeLockfile, F as sealRecipeFile, M as extractHeader, N as normalizeBody, O as resolvePresetFamilies, P as rewriteHeaderSha, S as DEFAULT_REGISTRY, T as readLockfile, _ as NewFamilyError, a as formatFindingsText, b as add, c as UpgradeError, d as BuildError, f as build, g as reseal, h as preset, i as extractClassUsages, j as computeBodySha, k as detectProject, 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 newFamily, w as init, x as renameFamilyInSource, y as remove } from "./bench-CUJJk5AC.js";
1
+ import { A as buildHeaderLine, D as createRegistrySource, E as writeLockfile, F as sealRecipeFile, M as extractHeader, N as normalizeBody, O as resolvePresetFamilies, P as rewriteHeaderSha, S as DEFAULT_REGISTRY, T as readLockfile, _ as NewFamilyError, a as formatFindingsText, b as add, c as UpgradeError, d as BuildError, f as build, g as reseal, h as preset, i as extractClassUsages, j as computeBodySha, k as detectProject, 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 newFamily, w as init, x as renameFamilyInSource, y as remove } from "./bench-DiDo4Vxq.js";
2
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, reseal, 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.5",
3
+ "version": "0.1.0-beta.6",
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.5",
23
- "@shortwind/tailwind": "0.1.0-beta.5"
22
+ "@shortwind/core": "0.1.0-beta.6",
23
+ "@shortwind/tailwind": "0.1.0-beta.6"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^25.7.0",