claudemesh-cli 0.1.3 → 0.1.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/index.js +82 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -55344,7 +55344,7 @@ ${body}`;
55344
55344
  }
55345
55345
  async function startMcpServer() {
55346
55346
  const config2 = loadConfig();
55347
- const server = new Server({ name: "claudemesh", version: "0.1.3" }, {
55347
+ const server = new Server({ name: "claudemesh", version: "0.1.4" }, {
55348
55348
  capabilities: {
55349
55349
  experimental: { "claude/channel": {} },
55350
55350
  tools: {}
@@ -56086,7 +56086,7 @@ import { statSync, existsSync as existsSync3 } from "node:fs";
56086
56086
  // package.json
56087
56087
  var package_default = {
56088
56088
  name: "claudemesh-cli",
56089
- version: "0.1.3",
56089
+ version: "0.1.4",
56090
56090
  description: "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
56091
56091
  keywords: [
56092
56092
  "claude-code",
@@ -56414,6 +56414,83 @@ async function runDoctor() {
56414
56414
  }
56415
56415
  }
56416
56416
 
56417
+ // src/commands/welcome.ts
56418
+ import { existsSync as existsSync5, readFileSync as readFileSync4 } from "node:fs";
56419
+ import { homedir as homedir4 } from "node:os";
56420
+ import { join as join4 } from "node:path";
56421
+ function detectState() {
56422
+ const claudeConfig = join4(homedir4(), ".claude.json");
56423
+ let mcpRegistered = false;
56424
+ if (existsSync5(claudeConfig)) {
56425
+ try {
56426
+ const cfg = JSON.parse(readFileSync4(claudeConfig, "utf-8"));
56427
+ mcpRegistered = Boolean(cfg.mcpServers?.["claudemesh"]);
56428
+ } catch {}
56429
+ }
56430
+ if (!mcpRegistered)
56431
+ return "no-install";
56432
+ try {
56433
+ const cfg = loadConfig();
56434
+ return cfg.meshes.length === 0 ? "no-meshes" : "ready";
56435
+ } catch {
56436
+ return "broken-config";
56437
+ }
56438
+ }
56439
+ function runWelcome() {
56440
+ const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
56441
+ const bold = (s) => useColor ? `\x1B[1m${s}\x1B[22m` : s;
56442
+ const dim = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
56443
+ const green = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
56444
+ const yellow = (s) => useColor ? `\x1B[33m${s}\x1B[39m` : s;
56445
+ console.log(bold(`claudemesh v${VERSION}`) + dim(" — peer mesh for Claude Code"));
56446
+ console.log("─".repeat(60));
56447
+ const state = detectState();
56448
+ switch (state) {
56449
+ case "no-install":
56450
+ console.log("Welcome. Let's get you set up.");
56451
+ console.log("");
56452
+ console.log(bold("Step 1:") + " register the MCP server + status hooks");
56453
+ console.log(` ${green("$")} claudemesh install`);
56454
+ console.log("");
56455
+ console.log(dim("Step 2 (after restart): claudemesh join <invite-url>"));
56456
+ console.log(dim("Step 3: claudemesh launch"));
56457
+ break;
56458
+ case "no-meshes":
56459
+ console.log(green("✓") + " MCP registered. Now join a mesh.");
56460
+ console.log("");
56461
+ console.log(bold("Step 2:") + " join a mesh");
56462
+ console.log(` ${green("$")} claudemesh join https://claudemesh.com/join/<token>`);
56463
+ console.log("");
56464
+ console.log(dim(" Don't have an invite? Create one at ") + bold("https://claudemesh.com") + dim(" or ask a mesh owner."));
56465
+ console.log("");
56466
+ console.log(dim("Step 3 (after joining): claudemesh launch"));
56467
+ break;
56468
+ case "ready": {
56469
+ const cfg = loadConfig();
56470
+ const meshNames = cfg.meshes.map((m) => m.slug).join(", ");
56471
+ console.log(green("✓") + " MCP registered.");
56472
+ console.log(green("✓") + ` ${cfg.meshes.length} mesh(es) joined: ${meshNames}`);
56473
+ console.log("");
56474
+ console.log(bold("You're ready.") + " Launch Claude Code with real-time peer messages:");
56475
+ console.log(` ${green("$")} claudemesh launch`);
56476
+ console.log("");
56477
+ console.log(dim(" (Plain `claude` works too — messages pull-only via check_messages.)"));
56478
+ console.log("");
56479
+ console.log(dim("Health check: claudemesh status"));
56480
+ console.log(dim("Diagnostics: claudemesh doctor"));
56481
+ console.log(dim("All commands: claudemesh --help"));
56482
+ break;
56483
+ }
56484
+ case "broken-config":
56485
+ console.log(yellow("⚠") + " Your ~/.claudemesh/config.json is unreadable.");
56486
+ console.log("");
56487
+ console.log("Run diagnostics to see what's wrong:");
56488
+ console.log(` ${green("$")} claudemesh doctor`);
56489
+ break;
56490
+ }
56491
+ console.log("");
56492
+ }
56493
+
56417
56494
  // src/index.ts
56418
56495
  var HELP = `claudemesh v${VERSION} — peer mesh for Claude Code sessions
56419
56496
 
@@ -56487,9 +56564,11 @@ async function main() {
56487
56564
  case "--help":
56488
56565
  case "-h":
56489
56566
  case "help":
56490
- case undefined:
56491
56567
  console.log(HELP);
56492
56568
  return;
56569
+ case undefined:
56570
+ runWelcome();
56571
+ return;
56493
56572
  default:
56494
56573
  console.error(`Unknown command: ${cmd}`);
56495
56574
  console.error("Run `claudemesh --help` for usage.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemesh-cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
5
5
  "keywords": [
6
6
  "claude-code",