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.
- package/dist/cli.js +49 -149
- 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
|
|
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 =
|
|
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
|
|
265457
|
+
var import_picocolors11 = __toESM(require_picocolors(), 1);
|
|
265556
265458
|
var W3 = 56;
|
|
265557
265459
|
function box(lines) {
|
|
265558
|
-
console.log(` ${
|
|
265460
|
+
console.log(` ${import_picocolors11.default.dim("╭" + "─".repeat(W3) + "╮")}`);
|
|
265559
265461
|
for (const line of lines) {
|
|
265560
|
-
console.log(` ${
|
|
265462
|
+
console.log(` ${import_picocolors11.default.dim("│")} ${line}`);
|
|
265561
265463
|
}
|
|
265562
|
-
console.log(` ${
|
|
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(` ${
|
|
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 ? ` ${
|
|
265572
|
-
console.log(` ${
|
|
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(` ${
|
|
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(` ${
|
|
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(`${
|
|
265590
|
-
pad(`${
|
|
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(` ${
|
|
265635
|
-
console.log(` ${
|
|
265636
|
-
console.log(` ${
|
|
265637
|
-
console.log(` ${
|
|
265638
|
-
console.log(` ${
|
|
265639
|
-
console.log(` ${
|
|
265640
|
-
console.log(` ${
|
|
265641
|
-
console.log(` ${
|
|
265642
|
-
console.log(` ${
|
|
265643
|
-
console.log(` ${
|
|
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.
|
|
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(
|
|
265761
|
-
console.log(
|
|
265762
|
-
console.log(
|
|
265763
|
-
console.log(
|
|
265764
|
-
console.log(
|
|
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(` ${
|
|
265767
|
-
console.log(` ${
|
|
265768
|
-
console.log(` ${
|
|
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(
|
|
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(
|
|
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} ${
|
|
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(
|
|
265955
|
+
console.error(import_picocolors12.default.red(message));
|
|
266056
265956
|
rl.setPrompt(resolvePrompt());
|
|
266057
265957
|
rl.prompt();
|
|
266058
265958
|
}
|