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.
- package/dist/index.js +82 -3
- 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.
|
|
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.
|
|
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.");
|