openkitt 0.2.2 → 0.2.4

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.
Files changed (2) hide show
  1. package/dist/cli.js +49 -149
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -255592,7 +255592,7 @@ var {
255592
255592
  } = import__.default;
255593
255593
 
255594
255594
  // src/cli.ts
255595
- var import_picocolors13 = __toESM(require_picocolors(), 1);
255595
+ var import_picocolors12 = __toESM(require_picocolors(), 1);
255596
255596
  import { createInterface, emitKeypressEvents } from "node:readline";
255597
255597
  import { stdin as input, stdout as output } from "node:process";
255598
255598
  import { existsSync as existsSync18, mkdirSync as mkdirSync11, readFileSync as readFileSync13, writeFileSync as writeFileSync15, realpathSync } from "node:fs";
@@ -255898,6 +255898,18 @@ function findWorkspaceRoot(startDir) {
255898
255898
  return globalPath;
255899
255899
  return null;
255900
255900
  }
255901
+ function findWorkspaceRootStrict(startDir) {
255902
+ let current = resolve(startDir);
255903
+ while (true) {
255904
+ if (isKittWorkspace(current))
255905
+ return current;
255906
+ const parent = dirname2(current);
255907
+ if (parent === current)
255908
+ break;
255909
+ current = parent;
255910
+ }
255911
+ return null;
255912
+ }
255901
255913
  function readManifest(workspaceDir) {
255902
255914
  const manifestPath = getManifestPath(workspaceDir);
255903
255915
  if (!existsSync4(manifestPath)) {
@@ -256014,8 +256026,7 @@ var WORKSPACE_REQUIRED = new Set([
256014
256026
  "domain",
256015
256027
  "logs",
256016
256028
  "status",
256017
- "versions",
256018
- "publish"
256029
+ "versions"
256019
256030
  ]);
256020
256031
  var COMMAND_AUTH = {
256021
256032
  login: "none",
@@ -256038,7 +256049,7 @@ var COMMAND_AUTH = {
256038
256049
  };
256039
256050
  async function checkAuthGuard(commandKey) {
256040
256051
  if (WORKSPACE_REQUIRED.has(commandKey)) {
256041
- const workspaceRoot = findWorkspaceRoot(process.cwd());
256052
+ const workspaceRoot = findWorkspaceRootStrict(process.cwd());
256042
256053
  if (!workspaceRoot) {
256043
256054
  return {
256044
256055
  allowed: false,
@@ -265442,140 +265453,31 @@ function renderPackages(pkgs) {
265442
265453
  }
265443
265454
  }
265444
265455
 
265445
- // src/commands/publish.ts
265446
- var import_picocolors11 = __toESM(require_picocolors(), 1);
265447
- import { execFileSync as execFileSync2, spawnSync } from "node:child_process";
265448
- function currentVersion() {
265449
- try {
265450
- return execFileSync2("bun", ["-e", 'console.log(require("./package.json").version)'], {
265451
- encoding: "utf-8",
265452
- cwd: process.cwd()
265453
- }).trim();
265454
- } catch {
265455
- return "unknown";
265456
- }
265457
- }
265458
- function printUsage2() {
265459
- console.log("");
265460
- console.log(` ${import_picocolors11.default.bold(import_picocolors11.default.white("/publish"))} ${import_picocolors11.default.dim("— publish openkitt to npm via bun publish")}`);
265461
- console.log("");
265462
- console.log(` ${import_picocolors11.default.cyan("/publish patch")} ${import_picocolors11.default.dim("bug fix 0.1.0 → 0.1.1")}`);
265463
- console.log(` ${import_picocolors11.default.cyan("/publish minor")} ${import_picocolors11.default.dim("new feature 0.1.0 → 0.2.0")}`);
265464
- console.log(` ${import_picocolors11.default.cyan("/publish major")} ${import_picocolors11.default.dim("breaking 0.1.0 → 1.0.0")}`);
265465
- console.log("");
265466
- console.log(` ${import_picocolors11.default.dim("Flags:")}`);
265467
- console.log(` ${import_picocolors11.default.dim("--dry-run")} ${import_picocolors11.default.dim("simulate without publishing")}`);
265468
- console.log(` ${import_picocolors11.default.dim("--otp <n>")} ${import_picocolors11.default.dim("2FA one-time password")}`);
265469
- console.log(` ${import_picocolors11.default.dim("--tag <t>")} ${import_picocolors11.default.dim("dist-tag (default: latest)")}`);
265470
- console.log("");
265471
- }
265472
- function bumpVersion(bump, dryRun) {
265473
- if (dryRun)
265474
- return null;
265475
- const result = spawnSync("npm", ["version", bump, "--no-git-tag-version"], {
265476
- encoding: "utf-8",
265477
- cwd: process.cwd()
265478
- });
265479
- if (result.status !== 0) {
265480
- return null;
265481
- }
265482
- return result.stdout.trim().replace(/^v/, "");
265483
- }
265484
- async function publishCommand(context, args) {
265485
- const bump = args[0]?.toLowerCase() ?? "";
265486
- const isDryRun = context.dryRun || args.includes("--dry-run");
265487
- const otpIndex = args.indexOf("--otp");
265488
- const otp = otpIndex !== -1 ? args[otpIndex + 1] ?? "" : "";
265489
- const tagIndex = args.indexOf("--tag");
265490
- const tag = tagIndex !== -1 ? args[tagIndex + 1] ?? "" : "";
265491
- if (!bump || !["patch", "minor", "major"].includes(bump)) {
265492
- printUsage2();
265493
- return;
265494
- }
265495
- const version = currentVersion();
265496
- console.log("");
265497
- console.log(` ${import_picocolors11.default.bold(import_picocolors11.default.white("Publish"))} ${import_picocolors11.default.dim(`openkitt v${version}`)} → ${import_picocolors11.default.cyan(bump)}`);
265498
- if (isDryRun) {
265499
- console.log(` ${import_picocolors11.default.yellow("DRY RUN — nothing will be published")}`);
265500
- }
265501
- console.log("");
265502
- if (!context.yes) {
265503
- const confirmed = await ye({
265504
- message: isDryRun ? `Run bun publish --dry-run (${bump})?` : `Publish openkitt@${bump} to npm?`,
265505
- initialValue: false
265506
- });
265507
- if (pD(confirmed) || !confirmed) {
265508
- console.log(import_picocolors11.default.dim(" Publish cancelled."));
265509
- return;
265510
- }
265511
- }
265512
- if (!isDryRun) {
265513
- const newVersion = bumpVersion(bump, false);
265514
- if (!newVersion) {
265515
- console.log(import_picocolors11.default.red(" ✗ npm version failed. Is the working tree clean?"));
265516
- return;
265517
- }
265518
- console.log(` ${import_picocolors11.default.green("✓")} Version bumped → ${import_picocolors11.default.bold(newVersion)}`);
265519
- } else {
265520
- console.log(` ${import_picocolors11.default.dim(" (dry-run: skipping npm version bump)")}`);
265521
- }
265522
- const publishArgs = ["publish", "--access", "public"];
265523
- if (isDryRun)
265524
- publishArgs.push("--dry-run");
265525
- if (otp)
265526
- publishArgs.push("--otp", otp);
265527
- if (tag)
265528
- publishArgs.push("--tag", tag);
265529
- console.log("");
265530
- console.log(` ${import_picocolors11.default.dim("Running:")} ${import_picocolors11.default.cyan("bun " + publishArgs.join(" "))}`);
265531
- console.log("");
265532
- const result = spawnSync("bun", publishArgs, {
265533
- stdio: "inherit",
265534
- cwd: process.cwd()
265535
- });
265536
- if (result.status !== 0) {
265537
- console.log("");
265538
- console.log(import_picocolors11.default.red(" ✗ Publish failed. See output above."));
265539
- return;
265540
- }
265541
- if (!isDryRun) {
265542
- const tagAfterBump = spawnSync("git", ["tag", `v${currentVersion()}`], { cwd: process.cwd() });
265543
- if (tagAfterBump.status === 0) {
265544
- spawnSync("git", ["push", "--follow-tags"], { stdio: "inherit", cwd: process.cwd() });
265545
- console.log(` ${import_picocolors11.default.green("✓")} Tag pushed to remote.`);
265546
- }
265547
- }
265548
- console.log("");
265549
- console.log(` ${import_picocolors11.default.green(import_picocolors11.default.bold("✓ Published openkitt to npm"))}`);
265550
- console.log(` ${import_picocolors11.default.dim("npm view openkitt to verify")}`);
265551
- console.log("");
265552
- }
265553
-
265554
265456
  // src/commands/help.ts
265555
- var import_picocolors12 = __toESM(require_picocolors(), 1);
265457
+ var import_picocolors11 = __toESM(require_picocolors(), 1);
265556
265458
  var W3 = 56;
265557
265459
  function box(lines) {
265558
- console.log(` ${import_picocolors12.default.dim("╭" + "─".repeat(W3) + "╮")}`);
265460
+ console.log(` ${import_picocolors11.default.dim("╭" + "─".repeat(W3) + "╮")}`);
265559
265461
  for (const line of lines) {
265560
- console.log(` ${import_picocolors12.default.dim("│")} ${line}`);
265462
+ console.log(` ${import_picocolors11.default.dim("│")} ${line}`);
265561
265463
  }
265562
- console.log(` ${import_picocolors12.default.dim("╰" + "─".repeat(W3) + "╯")}`);
265464
+ console.log(` ${import_picocolors11.default.dim("╰" + "─".repeat(W3) + "╯")}`);
265563
265465
  }
265564
265466
  function divider(label) {
265565
265467
  const pad = W3 - 2 - label.length;
265566
- console.log(` ${import_picocolors12.default.dim("┌─")} ${import_picocolors12.default.bold(import_picocolors12.default.white(label))} ${import_picocolors12.default.dim("─".repeat(Math.max(0, pad)) + "┐")}`);
265468
+ console.log(` ${import_picocolors11.default.dim("┌─")} ${import_picocolors11.default.bold(import_picocolors11.default.white(label))} ${import_picocolors11.default.dim("─".repeat(Math.max(0, pad)) + "┐")}`);
265567
265469
  }
265568
265470
  function cmd(command, argHint, desc) {
265569
265471
  const raw = `${command} ${argHint}`;
265570
265472
  const p2 = Math.max(0, 28 - raw.length);
265571
- const argPart = argHint ? ` ${import_picocolors12.default.dim(import_picocolors12.default.italic(argHint))}` : "";
265572
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.cyan(command)}${argPart}${" ".repeat(p2)} ${import_picocolors12.default.dim(desc)}`);
265473
+ const argPart = argHint ? ` ${import_picocolors11.default.dim(import_picocolors11.default.italic(argHint))}` : "";
265474
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.cyan(command)}${argPart}${" ".repeat(p2)} ${import_picocolors11.default.dim(desc)}`);
265573
265475
  }
265574
265476
  function row(label, value) {
265575
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim(label.padEnd(14))} ${import_picocolors12.default.white(value)}`);
265477
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim(label.padEnd(14))} ${import_picocolors11.default.white(value)}`);
265576
265478
  }
265577
265479
  function sectionEnd() {
265578
- console.log(` ${import_picocolors12.default.dim("└" + "─".repeat(W3))}`);
265480
+ console.log(` ${import_picocolors11.default.dim("└" + "─".repeat(W3))}`);
265579
265481
  console.log("");
265580
265482
  }
265581
265483
  function pad(text, width) {
@@ -265586,8 +265488,8 @@ function pad(text, width) {
265586
265488
  function renderHelp() {
265587
265489
  console.log("");
265588
265490
  box([
265589
- pad(`${import_picocolors12.default.bold(import_picocolors12.default.white("KITT"))} ${import_picocolors12.default.dim("— AI-powered monorepo CLI")}`, W3 - 1),
265590
- pad(`${import_picocolors12.default.dim("scaffold · deploy · manage · iterate")}`, W3 - 1)
265491
+ pad(`${import_picocolors11.default.bold(import_picocolors11.default.white("KITT"))} ${import_picocolors11.default.dim("— AI-powered monorepo CLI")}`, W3 - 1),
265492
+ pad(`${import_picocolors11.default.dim("scaffold · deploy · manage · iterate")}`, W3 - 1)
265591
265493
  ]);
265592
265494
  console.log("");
265593
265495
  divider("Setup");
@@ -265622,7 +265524,6 @@ function renderHelp() {
265622
265524
  cmd("/versions set", "<integration> <version>", "Pin a specific version");
265623
265525
  sectionEnd();
265624
265526
  divider("Other");
265625
- cmd("/publish", "<patch|minor|major>", "Publish openkitt to npm");
265626
265527
  cmd("/help", "", "Show this help message");
265627
265528
  cmd("/exit", "", "Exit KITT");
265628
265529
  sectionEnd();
@@ -265631,16 +265532,16 @@ function renderHelp() {
265631
265532
  row("backend", "hono expressjs");
265632
265533
  sectionEnd();
265633
265534
  divider("Integrations");
265634
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("databases")} ${[import_picocolors12.default.blue("[postgresql]"), import_picocolors12.default.blue("[mysql]"), import_picocolors12.default.blue("[sqlite]")].join(" ")}`);
265635
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("orm")} ${[import_picocolors12.default.cyan("[drizzle]"), import_picocolors12.default.cyan("[prisma]")].join(" ")}`);
265636
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("auth")} ${import_picocolors12.default.yellow("[better-auth]")}`);
265637
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("payments")} ${[import_picocolors12.default.green("[stripe]"), import_picocolors12.default.green("[polar]")].join(" ")}`);
265638
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("email")} ${import_picocolors12.default.magenta("[resend]")}`);
265639
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("queues")} ${[import_picocolors12.default.red("[bullmq]"), import_picocolors12.default.red("[trigger-dev]")].join(" ")}`);
265640
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("cache")} ${import_picocolors12.default.red("[redis]")}`);
265641
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("ui")} ${[import_picocolors12.default.cyan("[tailwindcss]"), import_picocolors12.default.white("[shadcn]")].join(" ")}`);
265642
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("analytics")} ${[import_picocolors12.default.green("[posthog]"), import_picocolors12.default.red("[sentry]")].join(" ")}`);
265643
- console.log(` ${import_picocolors12.default.dim("│")} ${import_picocolors12.default.dim("testing")} ${[import_picocolors12.default.yellow("[vitest]"), import_picocolors12.default.cyan("[playwright]"), import_picocolors12.default.magenta("[storybook]")].join(" ")}`);
265535
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("databases")} ${[import_picocolors11.default.blue("[postgresql]"), import_picocolors11.default.blue("[mysql]"), import_picocolors11.default.blue("[sqlite]")].join(" ")}`);
265536
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("orm")} ${[import_picocolors11.default.cyan("[drizzle]"), import_picocolors11.default.cyan("[prisma]")].join(" ")}`);
265537
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("auth")} ${import_picocolors11.default.yellow("[better-auth]")}`);
265538
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("payments")} ${[import_picocolors11.default.green("[stripe]"), import_picocolors11.default.green("[polar]")].join(" ")}`);
265539
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("email")} ${import_picocolors11.default.magenta("[resend]")}`);
265540
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("queues")} ${[import_picocolors11.default.red("[bullmq]"), import_picocolors11.default.red("[trigger-dev]")].join(" ")}`);
265541
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("cache")} ${import_picocolors11.default.red("[redis]")}`);
265542
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("ui")} ${[import_picocolors11.default.cyan("[tailwindcss]"), import_picocolors11.default.white("[shadcn]")].join(" ")}`);
265543
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("analytics")} ${[import_picocolors11.default.green("[posthog]"), import_picocolors11.default.red("[sentry]")].join(" ")}`);
265544
+ console.log(` ${import_picocolors11.default.dim("│")} ${import_picocolors11.default.dim("testing")} ${[import_picocolors11.default.yellow("[vitest]"), import_picocolors11.default.cyan("[playwright]"), import_picocolors11.default.magenta("[storybook]")].join(" ")}`);
265644
265545
  sectionEnd();
265645
265546
  divider("CLI Flags");
265646
265547
  row("--verbose", "Enable verbose logging");
@@ -265661,7 +265562,7 @@ async function helpCommand(_context, _args) {
265661
265562
  // package.json
265662
265563
  var package_default = {
265663
265564
  name: "openkitt",
265664
- version: "0.2.2",
265565
+ version: "0.2.4",
265665
265566
  description: "AI-powered monorepo scaffolding CLI",
265666
265567
  keywords: [
265667
265568
  "cli",
@@ -265753,19 +265654,18 @@ var commandRegistry = {
265753
265654
  versions: { handler: versionsCommand },
265754
265655
  list: { handler: listCommand },
265755
265656
  run: { handler: runCommand },
265756
- publish: { handler: publishCommand },
265757
265657
  help: { handler: helpCommand }
265758
265658
  };
265759
265659
  function displayBanner() {
265760
- console.log(import_picocolors13.default.cyan(" ______ _______________________"));
265761
- console.log(import_picocolors13.default.cyan(" ___ //_/___ /__ __/__ __/"));
265762
- console.log(import_picocolors13.default.cyan(" __ ,< __ / __ / __ / "));
265763
- console.log(import_picocolors13.default.cyan(" _ /| | __/ / _ / _ / "));
265764
- console.log(import_picocolors13.default.cyan(" /_/ |_| /___/ /_/ /_/ "));
265660
+ console.log(import_picocolors12.default.cyan(" ______ _______________________"));
265661
+ console.log(import_picocolors12.default.cyan(" ___ //_/___ /__ __/__ __/"));
265662
+ console.log(import_picocolors12.default.cyan(" __ ,< __ / __ / __ / "));
265663
+ console.log(import_picocolors12.default.cyan(" _ /| | __/ / _ / _ / "));
265664
+ console.log(import_picocolors12.default.cyan(" /_/ |_| /___/ /_/ /_/ "));
265765
265665
  console.log("");
265766
- console.log(` ${import_picocolors13.default.bold(import_picocolors13.default.white("KITT"))} ${import_picocolors13.default.dim("v" + APP_VERSION)} ${import_picocolors13.default.dim("— AI-Powered App Scaffolding CLI")}`);
265767
- console.log(` ${import_picocolors13.default.dim("/login → /init → /create → /deploy → /publish")}`);
265768
- console.log(` ${import_picocolors13.default.dim("Type /help for all commands")}`);
265666
+ console.log(` ${import_picocolors12.default.bold(import_picocolors12.default.white("KITT"))} ${import_picocolors12.default.dim("v" + APP_VERSION)} ${import_picocolors12.default.dim("— AI-Powered App Scaffolding CLI")}`);
265667
+ console.log(` ${import_picocolors12.default.dim("/login → /init → /create → /deploy → /publish")}`);
265668
+ console.log(` ${import_picocolors12.default.dim("Type /help for all commands")}`);
265769
265669
  console.log("");
265770
265670
  }
265771
265671
  function tokenizeCommand(inputValue) {
@@ -265903,7 +265803,7 @@ async function dispatchCommand(commandLine, context) {
265903
265803
  }
265904
265804
  const authCheck = await checkAuthGuard(parsed.key);
265905
265805
  if (!authCheck.allowed) {
265906
- console.log(import_picocolors13.default.red(`✗ ${authCheck.message}`));
265806
+ console.log(import_picocolors12.default.red(`✗ ${authCheck.message}`));
265907
265807
  return "continue";
265908
265808
  }
265909
265809
  await resolveAndRunHandler(route, context, parsed.args, parsed.key);
@@ -265912,7 +265812,7 @@ async function dispatchCommand(commandLine, context) {
265912
265812
  async function runSingleCommand(commandLine, context) {
265913
265813
  const parsed = parseCommand(commandLine);
265914
265814
  if (parsed && STATE_CHANGING_COMMANDS.has(parsed.key) && !context.yes) {
265915
- console.log(import_picocolors13.default.red(`✗ Non-interactive mode requires --yes for state-changing commands.
265815
+ console.log(import_picocolors12.default.red(`✗ Non-interactive mode requires --yes for state-changing commands.
265916
265816
  Usage: npx openkitt --run "${parsed.key}" --yes`));
265917
265817
  return 1;
265918
265818
  }
@@ -265976,7 +265876,7 @@ function resolvePrompt() {
265976
265876
  const name = manifest?.workspace.name;
265977
265877
  if (!name)
265978
265878
  return `${BASE_PROMPT} > `;
265979
- return `${BASE_PROMPT} ${import_picocolors13.default.cyan(`[${name}]`)} > `;
265879
+ return `${BASE_PROMPT} ${import_picocolors12.default.cyan(`[${name}]`)} > `;
265980
265880
  }
265981
265881
  async function startRepl(context) {
265982
265882
  const rl = createInterface({ input, output, prompt: resolvePrompt(), completer: makeCompleter(commandRegistry) });
@@ -266052,7 +265952,7 @@ async function startRepl(context) {
266052
265952
  rl.prompt();
266053
265953
  } catch (error4) {
266054
265954
  const message = error4 instanceof Error ? error4.message : "Unexpected error.";
266055
- console.error(import_picocolors13.default.red(message));
265955
+ console.error(import_picocolors12.default.red(message));
266056
265956
  rl.setPrompt(resolvePrompt());
266057
265957
  rl.prompt();
266058
265958
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openkitt",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "AI-powered monorepo scaffolding CLI",
5
5
  "keywords": [
6
6
  "cli",