claudemesh-cli 0.9.5 → 0.9.6
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 +35 -35
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -40069,7 +40069,7 @@ function moveTo(row, col) {
|
|
|
40069
40069
|
function visibleLength(s) {
|
|
40070
40070
|
return s.replace(/\x1b\[[^m]*m/g, "").length;
|
|
40071
40071
|
}
|
|
40072
|
-
var isTTY, esc2 = (code) => (s) => isTTY ? `${code}${s}\x1B[0m` : s, orange, clay, amber, bold2, dim,
|
|
40072
|
+
var isTTY, esc2 = (code) => (s) => isTTY ? `${code}${s}\x1B[0m` : s, orange, clay, amber, bold2, dim, green, yellow, red, cyan2, boldOrange, HIDE_CURSOR, SHOW_CURSOR, CLEAR_SCREEN, CLEAR_LINE;
|
|
40073
40073
|
var init_colors = __esm(() => {
|
|
40074
40074
|
isTTY = process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== "dumb";
|
|
40075
40075
|
orange = esc2("\x1B[38;5;208m");
|
|
@@ -40077,7 +40077,7 @@ var init_colors = __esm(() => {
|
|
|
40077
40077
|
amber = esc2("\x1B[38;5;214m");
|
|
40078
40078
|
bold2 = esc2("\x1B[1m");
|
|
40079
40079
|
dim = esc2("\x1B[2m");
|
|
40080
|
-
|
|
40080
|
+
green = esc2("\x1B[32m");
|
|
40081
40081
|
yellow = esc2("\x1B[33m");
|
|
40082
40082
|
red = esc2("\x1B[31m");
|
|
40083
40083
|
cyan2 = esc2("\x1B[36m");
|
|
@@ -40093,7 +40093,7 @@ var package_default;
|
|
|
40093
40093
|
var init_package = __esm(() => {
|
|
40094
40094
|
package_default = {
|
|
40095
40095
|
name: "claudemesh-cli",
|
|
40096
|
-
version: "0.9.
|
|
40096
|
+
version: "0.9.6",
|
|
40097
40097
|
description: "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
|
|
40098
40098
|
keywords: [
|
|
40099
40099
|
"claude-code",
|
|
@@ -54154,11 +54154,11 @@ async function runLaunchWizard(opts) {
|
|
|
54154
54154
|
});
|
|
54155
54155
|
spinner.start();
|
|
54156
54156
|
let row = formRow;
|
|
54157
|
-
writeCentered(row, `Directory ${
|
|
54157
|
+
writeCentered(row, `Directory ${green("✓")} ${process.cwd()}`);
|
|
54158
54158
|
row++;
|
|
54159
|
-
writeCentered(row, `Name ${
|
|
54159
|
+
writeCentered(row, `Name ${green("✓")} ${opts.displayName}`);
|
|
54160
54160
|
row++;
|
|
54161
|
-
writeCentered(row, `Mesh ${
|
|
54161
|
+
writeCentered(row, `Mesh ${green("✓")} ${opts.meshSlug}`);
|
|
54162
54162
|
row += 2;
|
|
54163
54163
|
let role = opts.existingRole;
|
|
54164
54164
|
let groups = opts.existingGroups;
|
|
@@ -54171,7 +54171,7 @@ async function runLaunchWizard(opts) {
|
|
|
54171
54171
|
spinner.start();
|
|
54172
54172
|
row++;
|
|
54173
54173
|
} else {
|
|
54174
|
-
writeCentered(row, `Role ${
|
|
54174
|
+
writeCentered(row, `Role ${green("✓")} ${role}`);
|
|
54175
54175
|
row++;
|
|
54176
54176
|
}
|
|
54177
54177
|
if (groups.length === 0) {
|
|
@@ -54183,7 +54183,7 @@ async function runLaunchWizard(opts) {
|
|
|
54183
54183
|
row++;
|
|
54184
54184
|
} else {
|
|
54185
54185
|
const tags = groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : ""}`).join(", ");
|
|
54186
|
-
writeCentered(row, `Groups ${
|
|
54186
|
+
writeCentered(row, `Groups ${green("✓")} ${tags}`);
|
|
54187
54187
|
row++;
|
|
54188
54188
|
}
|
|
54189
54189
|
if (opts.existingMessageMode === null) {
|
|
@@ -54202,7 +54202,7 @@ async function runLaunchWizard(opts) {
|
|
|
54202
54202
|
spinner.start();
|
|
54203
54203
|
row += 5;
|
|
54204
54204
|
} else {
|
|
54205
|
-
writeCentered(row, `Messages ${
|
|
54205
|
+
writeCentered(row, `Messages ${green("✓")} ${messageMode}`);
|
|
54206
54206
|
row++;
|
|
54207
54207
|
}
|
|
54208
54208
|
let skipPermissions = opts.skipPermConfirm;
|
|
@@ -54307,7 +54307,7 @@ async function runLaunch(flags, rawArgs) {
|
|
|
54307
54307
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
54308
54308
|
const bold3 = (s) => useColor ? `\x1B[1m${s}\x1B[22m` : s;
|
|
54309
54309
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
54310
|
-
const
|
|
54310
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
54311
54311
|
const code = generatePairingCode();
|
|
54312
54312
|
const listener = await startCallbackListener();
|
|
54313
54313
|
const url = `https://claudemesh.com/cli-auth?port=${listener.port}&code=${code}&action=sync`;
|
|
@@ -54366,7 +54366,7 @@ async function runLaunch(flags, rawArgs) {
|
|
|
54366
54366
|
saveConfig2(config2);
|
|
54367
54367
|
justSynced = true;
|
|
54368
54368
|
console.log(`
|
|
54369
|
-
${
|
|
54369
|
+
${green2("✓")} Synced ${result.meshes.length} mesh(es): ${result.meshes.map((m) => m.slug).join(", ")}
|
|
54370
54370
|
`);
|
|
54371
54371
|
}
|
|
54372
54372
|
if (config2.meshes.length === 0) {
|
|
@@ -54632,7 +54632,7 @@ async function probeBroker(url, timeoutMs = 4000) {
|
|
|
54632
54632
|
async function runStatus() {
|
|
54633
54633
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
54634
54634
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
54635
|
-
const
|
|
54635
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
54636
54636
|
const red2 = (s) => useColor ? `\x1B[31m${s}\x1B[39m` : s;
|
|
54637
54637
|
console.log(`claudemesh status (v${VERSION})`);
|
|
54638
54638
|
console.log("─".repeat(60));
|
|
@@ -54664,7 +54664,7 @@ async function runStatus() {
|
|
|
54664
54664
|
error: probe.error
|
|
54665
54665
|
});
|
|
54666
54666
|
if (probe.ok) {
|
|
54667
|
-
console.log(
|
|
54667
|
+
console.log(green2("reachable"));
|
|
54668
54668
|
} else {
|
|
54669
54669
|
console.log(red2(`unreachable (${probe.error})`));
|
|
54670
54670
|
}
|
|
@@ -54676,7 +54676,7 @@ async function runStatus() {
|
|
|
54676
54676
|
const allOk = results.every((r) => r.reachable);
|
|
54677
54677
|
console.log("");
|
|
54678
54678
|
if (allOk) {
|
|
54679
|
-
console.log(
|
|
54679
|
+
console.log(green2("All meshes reachable."));
|
|
54680
54680
|
process.exit(0);
|
|
54681
54681
|
} else {
|
|
54682
54682
|
const broken = results.filter((r) => !r.reachable).length;
|
|
@@ -54837,7 +54837,7 @@ function checkKeypairs() {
|
|
|
54837
54837
|
async function runDoctor() {
|
|
54838
54838
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
54839
54839
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
54840
|
-
const
|
|
54840
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
54841
54841
|
const red2 = (s) => useColor ? `\x1B[31m${s}\x1B[39m` : s;
|
|
54842
54842
|
console.log(`claudemesh doctor (v${VERSION})`);
|
|
54843
54843
|
console.log("─".repeat(60));
|
|
@@ -54850,7 +54850,7 @@ async function runDoctor() {
|
|
|
54850
54850
|
checkKeypairs()
|
|
54851
54851
|
];
|
|
54852
54852
|
for (const c of checks3) {
|
|
54853
|
-
const mark = c.pass ?
|
|
54853
|
+
const mark = c.pass ? green2("✓") : red2("✗");
|
|
54854
54854
|
const detail = c.detail ? dim2(` (${c.detail})`) : "";
|
|
54855
54855
|
console.log(`${mark} ${c.name}${detail}`);
|
|
54856
54856
|
if (!c.pass && c.fix) {
|
|
@@ -54860,7 +54860,7 @@ async function runDoctor() {
|
|
|
54860
54860
|
const failing = checks3.filter((c) => !c.pass);
|
|
54861
54861
|
console.log("");
|
|
54862
54862
|
if (failing.length === 0) {
|
|
54863
|
-
console.log(
|
|
54863
|
+
console.log(green2("All checks passed."));
|
|
54864
54864
|
process.exit(0);
|
|
54865
54865
|
} else {
|
|
54866
54866
|
console.log(red2(`${failing.length} check(s) failed.`));
|
|
@@ -54933,14 +54933,14 @@ async function runWelcome() {
|
|
|
54933
54933
|
});
|
|
54934
54934
|
exitFullScreen();
|
|
54935
54935
|
if (choice === 0) {
|
|
54936
|
-
console.log(
|
|
54936
|
+
console.log(green("$") + ` claudemesh install
|
|
54937
54937
|
`);
|
|
54938
54938
|
}
|
|
54939
54939
|
break;
|
|
54940
54940
|
}
|
|
54941
54941
|
case "no-meshes": {
|
|
54942
|
-
writeCentered(contentRow,
|
|
54943
|
-
writeCentered(contentRow + 2, dim("MCP server ") +
|
|
54942
|
+
writeCentered(contentRow, green("✓") + " MCP registered. Now join a mesh.");
|
|
54943
|
+
writeCentered(contentRow + 2, dim("MCP server ") + green("✓") + dim(" registered"));
|
|
54944
54944
|
writeCentered(contentRow + 3, dim("Mesh ") + yellow("○") + dim(" none joined"));
|
|
54945
54945
|
menuRow = contentRow + 5;
|
|
54946
54946
|
spinner.stop();
|
|
@@ -54955,11 +54955,11 @@ async function runWelcome() {
|
|
|
54955
54955
|
});
|
|
54956
54956
|
exitFullScreen();
|
|
54957
54957
|
if (choice === 0) {
|
|
54958
|
-
console.log(
|
|
54958
|
+
console.log(green("$") + ` claudemesh join https://claudemesh.com/join/<token>
|
|
54959
54959
|
`);
|
|
54960
54960
|
console.log(dim(" Don't have an invite? Create one at ") + bold2("https://claudemesh.com") + dim(" or ask a mesh owner."));
|
|
54961
54961
|
} else if (choice === 1) {
|
|
54962
|
-
console.log(
|
|
54962
|
+
console.log(green("$") + ` claudemesh create
|
|
54963
54963
|
`);
|
|
54964
54964
|
}
|
|
54965
54965
|
break;
|
|
@@ -54967,8 +54967,8 @@ async function runWelcome() {
|
|
|
54967
54967
|
case "ready": {
|
|
54968
54968
|
const cfg = loadConfig();
|
|
54969
54969
|
const meshNames = cfg.meshes.map((m) => m.slug).join(", ");
|
|
54970
|
-
writeCentered(contentRow,
|
|
54971
|
-
writeCentered(contentRow + 1,
|
|
54970
|
+
writeCentered(contentRow, green("✓") + " MCP registered");
|
|
54971
|
+
writeCentered(contentRow + 1, green("✓") + ` ${cfg.meshes.length} mesh(es): ${meshNames}`);
|
|
54972
54972
|
writeCentered(contentRow + 2, "");
|
|
54973
54973
|
writeCentered(contentRow + 3, bold2("Ready to launch."));
|
|
54974
54974
|
menuRow = contentRow + 5;
|
|
@@ -54987,19 +54987,19 @@ async function runWelcome() {
|
|
|
54987
54987
|
exitFullScreen();
|
|
54988
54988
|
switch (choice) {
|
|
54989
54989
|
case 0:
|
|
54990
|
-
console.log(
|
|
54990
|
+
console.log(green("$") + ` claudemesh launch
|
|
54991
54991
|
`);
|
|
54992
54992
|
break;
|
|
54993
54993
|
case 1:
|
|
54994
|
-
console.log(
|
|
54994
|
+
console.log(green("$") + ` claudemesh peers
|
|
54995
54995
|
`);
|
|
54996
54996
|
break;
|
|
54997
54997
|
case 2:
|
|
54998
|
-
console.log(
|
|
54998
|
+
console.log(green("$") + ` claudemesh status
|
|
54999
54999
|
`);
|
|
55000
55000
|
break;
|
|
55001
55001
|
case 3:
|
|
55002
|
-
console.log(
|
|
55002
|
+
console.log(green("$") + ` claudemesh doctor
|
|
55003
55003
|
`);
|
|
55004
55004
|
break;
|
|
55005
55005
|
}
|
|
@@ -55016,7 +55016,7 @@ async function runWelcome() {
|
|
|
55016
55016
|
});
|
|
55017
55017
|
exitFullScreen();
|
|
55018
55018
|
if (choice === 0) {
|
|
55019
|
-
console.log(
|
|
55019
|
+
console.log(green("$") + ` claudemesh doctor
|
|
55020
55020
|
`);
|
|
55021
55021
|
}
|
|
55022
55022
|
break;
|
|
@@ -55087,7 +55087,7 @@ async function runPeers(flags) {
|
|
|
55087
55087
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
55088
55088
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
55089
55089
|
const bold3 = (s) => useColor ? `\x1B[1m${s}\x1B[22m` : s;
|
|
55090
|
-
const
|
|
55090
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
55091
55091
|
const yellow2 = (s) => useColor ? `\x1B[33m${s}\x1B[39m` : s;
|
|
55092
55092
|
await withMesh({ meshSlug: flags.mesh ?? null }, async (client2, mesh) => {
|
|
55093
55093
|
const peers = await client2.listPeers();
|
|
@@ -55103,7 +55103,7 @@ async function runPeers(flags) {
|
|
|
55103
55103
|
console.log("");
|
|
55104
55104
|
for (const p of peers) {
|
|
55105
55105
|
const groups = p.groups.length ? " [" + p.groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : ""}`).join(", ") + "]" : "";
|
|
55106
|
-
const statusIcon = p.status === "working" ? yellow2("●") :
|
|
55106
|
+
const statusIcon = p.status === "working" ? yellow2("●") : green2("●");
|
|
55107
55107
|
const name = bold3(p.displayName);
|
|
55108
55108
|
const meta2 = [];
|
|
55109
55109
|
if (p.peerType)
|
|
@@ -55591,7 +55591,7 @@ init_keypair();
|
|
|
55591
55591
|
async function runSync(args) {
|
|
55592
55592
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
55593
55593
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
55594
|
-
const
|
|
55594
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
55595
55595
|
const config2 = loadConfig();
|
|
55596
55596
|
const code = generatePairingCode();
|
|
55597
55597
|
const listener = await startCallbackListener();
|
|
@@ -55642,7 +55642,7 @@ async function runSync(args) {
|
|
|
55642
55642
|
config2.accountId = result.account_id;
|
|
55643
55643
|
saveConfig(config2);
|
|
55644
55644
|
if (added > 0) {
|
|
55645
|
-
console.log(
|
|
55645
|
+
console.log(green2(`✓ Added ${added} new mesh(es)`));
|
|
55646
55646
|
} else {
|
|
55647
55647
|
console.log(`Already up to date (${config2.meshes.length} meshes)`);
|
|
55648
55648
|
}
|
|
@@ -55653,7 +55653,7 @@ init_config();
|
|
|
55653
55653
|
async function runProfile(flags) {
|
|
55654
55654
|
const useColor = !process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
|
|
55655
55655
|
const dim2 = (s) => useColor ? `\x1B[2m${s}\x1B[22m` : s;
|
|
55656
|
-
const
|
|
55656
|
+
const green2 = (s) => useColor ? `\x1B[32m${s}\x1B[39m` : s;
|
|
55657
55657
|
const config2 = loadConfig();
|
|
55658
55658
|
if (config2.meshes.length === 0) {
|
|
55659
55659
|
console.error("No meshes joined. Run `claudemesh join <url>` first.");
|
|
@@ -55693,7 +55693,7 @@ async function runProfile(flags) {
|
|
|
55693
55693
|
if (flags.json) {
|
|
55694
55694
|
console.log(JSON.stringify(result, null, 2));
|
|
55695
55695
|
} else if (result.ok) {
|
|
55696
|
-
console.log(
|
|
55696
|
+
console.log(green2("✓ Profile updated"));
|
|
55697
55697
|
const member = result.member;
|
|
55698
55698
|
printProfile(member, dim2);
|
|
55699
55699
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claudemesh-cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.6",
|
|
4
4
|
"description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"prettier": "3.6.2",
|
|
49
49
|
"typescript": "5.9.3",
|
|
50
50
|
"vitest": "4.0.14",
|
|
51
|
-
"@turbostarter/tsconfig": "0.1.0",
|
|
52
51
|
"@turbostarter/vitest-config": "0.1.0",
|
|
52
|
+
"@turbostarter/tsconfig": "0.1.0",
|
|
53
53
|
"@turbostarter/prettier-config": "0.1.0",
|
|
54
54
|
"@turbostarter/eslint-config": "0.1.0"
|
|
55
55
|
},
|