vybekiit 0.7.14 → 0.7.16

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/bin.js +67 -12
  2. package/package.json +8 -8
package/dist/bin.js CHANGED
@@ -10515,6 +10515,43 @@ var KIT_BUILD_SCRIPT_LIBS = [
10515
10515
  "scripts/lib/tsupWorkspaceAliases.d.mts",
10516
10516
  "scripts/lib/repoRoot.mjs"
10517
10517
  ];
10518
+ var SETUP_PAGE_PATH = join11("templates", "web", "app", "[locale]", "setup", "page.tsx");
10519
+ var SETUP_MESSAGE_LOCALES = ["en", "he"];
10520
+ var SETUP_MESSAGE_PREFIX = "setup.";
10521
+ var mergeMissingSetupMessages = async (kitRoot, dest, locale) => {
10522
+ const kitCatalogPath = join11(kitRoot, "templates", "web", "messages", `${locale}.json`);
10523
+ const buyerCatalogPath = join11(dest, "templates", "web", "messages", `${locale}.json`);
10524
+ const catalogsExist = await Promise.all([
10525
+ pathExists3(kitCatalogPath),
10526
+ pathExists3(buyerCatalogPath)
10527
+ ]);
10528
+ if (!catalogsExist.every(Boolean)) {
10529
+ return;
10530
+ }
10531
+ try {
10532
+ const kitCatalog = JSON.parse(await readFile5(kitCatalogPath, "utf8"));
10533
+ const buyerCatalog = JSON.parse(await readFile5(buyerCatalogPath, "utf8"));
10534
+ const kitCatalogIsObject = typeof kitCatalog === "object" && kitCatalog !== null && !Array.isArray(kitCatalog);
10535
+ const buyerCatalogIsObject = typeof buyerCatalog === "object" && buyerCatalog !== null && !Array.isArray(buyerCatalog);
10536
+ if (!(kitCatalogIsObject && buyerCatalogIsObject)) {
10537
+ return;
10538
+ }
10539
+ const buyerMessageKeys = new Set(Object.keys(buyerCatalog));
10540
+ const missingSetupMessages = Object.entries(kitCatalog).filter(
10541
+ ([messageKey]) => messageKey.startsWith(SETUP_MESSAGE_PREFIX) && !buyerMessageKeys.has(messageKey)
10542
+ );
10543
+ if (missingSetupMessages.length === 0) {
10544
+ return;
10545
+ }
10546
+ const mergedCatalog = Object.fromEntries([
10547
+ ...Object.entries(buyerCatalog),
10548
+ ...missingSetupMessages
10549
+ ]);
10550
+ await writeFile4(buyerCatalogPath, `${JSON.stringify(mergedCatalog, null, 2)}
10551
+ `);
10552
+ } catch {
10553
+ }
10554
+ };
10518
10555
  var CATALOG_BLOCK_START = /^catalog:\s*$/m;
10519
10556
  var kitWorkspacePackageJson = (kitRootPkg, template) => {
10520
10557
  const packageManager = kitRootPkg?.packageManager !== void 0 && kitRootPkg.packageManager !== "" ? kitRootPkg.packageManager : "pnpm@10.33.2";
@@ -10551,6 +10588,16 @@ var repairKitBuildRoots = async (kitRoot, dest) => {
10551
10588
  await mkdir4(dirname5(target), { recursive: true });
10552
10589
  await cp2(src, target);
10553
10590
  }
10591
+ const kitSetupPage = join11(kitRoot, SETUP_PAGE_PATH);
10592
+ const buyerSetupPage = join11(dest, SETUP_PAGE_PATH);
10593
+ const shouldAddSetupPage = await pathExists3(kitSetupPage) && !await pathExists3(buyerSetupPage);
10594
+ if (shouldAddSetupPage) {
10595
+ await mkdir4(dirname5(buyerSetupPage), { recursive: true });
10596
+ await cp2(kitSetupPage, buyerSetupPage);
10597
+ }
10598
+ await Promise.all(
10599
+ SETUP_MESSAGE_LOCALES.map((locale) => mergeMissingSetupMessages(kitRoot, dest, locale))
10600
+ );
10554
10601
  };
10555
10602
  var kitWorkspacePnpmYaml = (template, sourceWorkspaceYaml) => {
10556
10603
  const lines = [
@@ -11016,9 +11063,11 @@ var defaultPathExists = async (path) => {
11016
11063
  };
11017
11064
  var BUYER_BUILD_ROOTS = [
11018
11065
  join14("scripts", "lib", "tsupWorkspaceAliases.mjs"),
11019
- "tsup.base.ts"
11066
+ "tsup.base.ts",
11067
+ join14("templates", "web", "app", "[locale]", "setup", "page.tsx")
11020
11068
  ];
11021
11069
  var LEGACY_CLIENT_STATE_ALIAS = '"@vybekiit/client-state"';
11070
+ var SETUP_TITLE_MESSAGE = '"setup.title"';
11022
11071
  var repairProjectBuildRoots = async (appPath, deps = {
11023
11072
  pathExists: pathExists3,
11024
11073
  readText: async (path) => await readFile6(path, "utf8"),
@@ -11033,8 +11082,11 @@ var repairProjectBuildRoots = async (appPath, deps = {
11033
11082
  return false;
11034
11083
  }
11035
11084
  try {
11036
- const baseTsconfig = await deps.readText(join14(appPath, "tsconfig.base.json"));
11037
- return baseTsconfig.includes(LEGACY_CLIENT_STATE_ALIAS);
11085
+ const [baseTsconfig, englishMessages] = await Promise.all([
11086
+ deps.readText(join14(appPath, "tsconfig.base.json")),
11087
+ deps.readText(join14(appPath, "templates", "web", "messages", "en.json"))
11088
+ ]);
11089
+ return baseTsconfig.includes(LEGACY_CLIENT_STATE_ALIAS) && englishMessages.includes(SETUP_TITLE_MESSAGE);
11038
11090
  } catch {
11039
11091
  return false;
11040
11092
  }
@@ -11208,8 +11260,8 @@ var defaultDeps = () => ({
11208
11260
  platform: process7.platform
11209
11261
  });
11210
11262
  var projectToolsLines = (ready) => ready ? [
11211
- " \u2022 @vybekiit/ui + the UI catalog are available to Claude",
11212
- " \u2022 Global VybeKiit tools, browser automation, and matching project skills are connected"
11263
+ " \u2022 @vybekiit/ui + the UI catalog are available to your coding agent",
11264
+ " \u2022 VybeKiit tools, browser automation, and matching project skills are connected"
11213
11265
  ] : [];
11214
11266
  var formatSessionOneLines = (result) => {
11215
11267
  if (result.appPath === null) {
@@ -11254,13 +11306,13 @@ var formatSessionOneLines = (result) => {
11254
11306
  if (result.claudeOpened) {
11255
11307
  lines.push(' \u2022 Claude Code opening with: "Set up my app."');
11256
11308
  } else {
11257
- lines.push(' \u2022 Open Claude Code in that folder and say: "Set up my app."');
11258
- lines.push(` cd ${result.appPath} && claude "Set up my app."`);
11309
+ lines.push(' \u2022 Open that folder in your coding agent and say: "Set up my app."');
11310
+ lines.push(` ${result.appPath}`);
11259
11311
  }
11260
11312
  lines.push(
11261
11313
  "",
11262
11314
  "Report mode is built in \u2014 if something looks wrong, press Option+Shift+R",
11263
- "(Alt+Shift+R on Windows), click it, and tell Claude what is off.",
11315
+ "(Alt+Shift+R on Windows), click it, and tell your coding agent what is off.",
11264
11316
  ""
11265
11317
  );
11266
11318
  return lines;
@@ -31390,11 +31442,12 @@ var installGlobalSkills = async (paths, sourceDir = paths.bundledSkillsDir) => {
31390
31442
 
31391
31443
  // src/global/runGlobalInstall.ts
31392
31444
  var shouldRunSessionOneOnInstall = (args, isFirstInstall) => isFirstInstall || args.includes("--session-one");
31445
+ var globalSetupComplete = (managedFilesReady, mcpInstallation) => managedFilesReady && (mcpInstallation.claudeMissing || isVybekiitMcpReady(mcpInstallation));
31393
31446
  var formatGlobalInstallSummary = (summary) => {
31394
31447
  const isUpdate = summary.previousVersion !== null && summary.previousVersion !== summary.version;
31395
31448
  const isRerun = summary.previousVersion !== null && summary.previousVersion === summary.version;
31396
31449
  const skillsEmpty = summary.skillsInstalled === 0 && summary.skillSample.length === 0;
31397
- let headline = `\u2705 VybeKiit ${summary.version} is now set up globally in Claude Code.`;
31450
+ let headline = summary.claudeMissing ? `\u2705 VybeKiit ${summary.version} is ready for your coding agent.` : `\u2705 VybeKiit ${summary.version} is now set up globally in Claude Code.`;
31398
31451
  if (skillsEmpty) {
31399
31452
  headline = `\u2717 VybeKiit ${summary.version} global setup did not land any managed skills.`;
31400
31453
  } else if (isUpdate) {
@@ -31423,7 +31476,9 @@ var formatGlobalInstallSummary = (summary) => {
31423
31476
  );
31424
31477
  }
31425
31478
  if (summary.claudeMissing) {
31426
- lines.push(" \u2022 MCP skipped \u2014 the `claude` command was not found on your PATH");
31479
+ lines.push(
31480
+ " \u2022 MCP Claude Code is optional and was not found. Continuing with your coding agent."
31481
+ );
31427
31482
  } else {
31428
31483
  const enabledLabel = summary.mcpEnabled.length > 0 ? summary.mcpEnabled.join(", ") : "none newly added";
31429
31484
  lines.push(` \u2022 MCP ${enabledLabel} (VybeKiit tools + browser automation + live docs)`);
@@ -31516,9 +31571,9 @@ var runGlobalInstall = async (args, gate = checkEntitlement) => {
31516
31571
  process29.stdout.write(`${line}
31517
31572
  `);
31518
31573
  }
31519
- if (!(isGloballyInstalled(postStatus) && isVybekiitMcpReady(mcp))) {
31574
+ if (!globalSetupComplete(isGloballyInstalled(postStatus), mcp)) {
31520
31575
  process29.stderr.write(
31521
- "VybeKiit global install incomplete: expected managed skills, global MCP, /vybekiit, and CLAUDE.md awareness.\n"
31576
+ "VybeKiit setup is incomplete: the managed files or an available Claude Code connection could not be prepared.\n"
31522
31577
  );
31523
31578
  return 1;
31524
31579
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vybekiit",
3
- "version": "0.7.14",
3
+ "version": "0.7.16",
4
4
  "description": "Choose your services, sign in, create a VybeKiit app, and open its verified local welcome page.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -32,13 +32,13 @@
32
32
  "tsup": "8.5.1",
33
33
  "typescript": "5.7.2",
34
34
  "vitest": "3.2.6",
35
- "@vybekiit/agent-mcp": "0.7.14",
36
- "@vybekiit/db": "0.7.14",
37
- "@vybekiit/deploy": "0.7.14",
38
- "@vybekiit/core": "0.7.14",
39
- "@vybekiit/agent-kit": "0.7.14",
40
- "@vybekiit/payments": "0.7.14",
41
- "@vybekiit/report-mode": "0.7.14"
35
+ "@vybekiit/db": "0.7.16",
36
+ "@vybekiit/core": "0.7.16",
37
+ "@vybekiit/agent-mcp": "0.7.16",
38
+ "@vybekiit/payments": "0.7.16",
39
+ "@vybekiit/agent-kit": "0.7.16",
40
+ "@vybekiit/report-mode": "0.7.16",
41
+ "@vybekiit/deploy": "0.7.16"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsup && node scripts/bundleGlobalSkills.mjs",