claudemesh-cli 0.8.1 → 0.8.3

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 +44 -2
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -47795,6 +47795,28 @@ async function signHello(meshId, memberId, pubkey, secretKeyHex) {
47795
47795
 
47796
47796
  // src/ws/client.ts
47797
47797
  init_keypair();
47798
+ function detectClaudeSessionId() {
47799
+ try {
47800
+ const { readdirSync, statSync, readFileSync: readFileSync2 } = __require("node:fs");
47801
+ const { join: join2 } = __require("node:path");
47802
+ const { homedir: homedir2 } = __require("node:os");
47803
+ const cwd = process.cwd();
47804
+ const projectsDir = join2(homedir2(), ".claude", "projects");
47805
+ const cwdHash = cwd.replace(/\//g, "-");
47806
+ const entries = readdirSync(projectsDir);
47807
+ const projectDir = entries.find((e) => e === cwdHash || e.startsWith(cwdHash));
47808
+ if (!projectDir)
47809
+ return null;
47810
+ const fullDir = join2(projectsDir, projectDir);
47811
+ const jsonls = readdirSync(fullDir).filter((f) => f.endsWith(".jsonl")).map((f) => ({ name: f, mtime: statSync(join2(fullDir, f)).mtimeMs })).sort((a, b) => b.mtime - a.mtime);
47812
+ if (jsonls.length === 0)
47813
+ return null;
47814
+ const latest = jsonls[0];
47815
+ return latest.name.replace(".jsonl", "");
47816
+ } catch {
47817
+ return null;
47818
+ }
47819
+ }
47798
47820
  var MAX_QUEUED = 100;
47799
47821
  var HELLO_ACK_TIMEOUT_MS = 5000;
47800
47822
  var BACKOFF_CAPS = [1000, 2000, 4000, 8000, 16000, 30000];
@@ -47884,7 +47906,7 @@ class BrokerClient {
47884
47906
  pubkey: this.mesh.pubkey,
47885
47907
  sessionPubkey: this.sessionPubkey,
47886
47908
  displayName: process.env.CLAUDEMESH_DISPLAY_NAME || this.opts.displayName || undefined,
47887
- sessionId: `${process.pid}-${Date.now()}`,
47909
+ sessionId: process.env.CLAUDEMESH_SESSION_ID || detectClaudeSessionId() || `${process.pid}-${Date.now()}`,
47888
47910
  pid: process.pid,
47889
47911
  cwd: process.cwd(),
47890
47912
  hostname: __require("os").hostname(),
@@ -52112,6 +52134,7 @@ async function runHook(args) {
52112
52134
  // src/commands/launch.ts
52113
52135
  init_config();
52114
52136
  import { spawn } from "node:child_process";
52137
+ import { randomUUID } from "node:crypto";
52115
52138
  import { mkdtempSync, writeFileSync as writeFileSync4, rmSync, readdirSync, statSync, existsSync as existsSync3, readFileSync as readFileSync3 } from "node:fs";
52116
52139
  import { tmpdir, hostname as hostname2, homedir as homedir4 } from "node:os";
52117
52140
  import { join as join4 } from "node:path";
@@ -52219,6 +52242,8 @@ async function runLaunch(flags, rawArgs) {
52219
52242
  meshSlug: flags.mesh ?? null,
52220
52243
  messageMode: ["push", "inbox", "off"].includes(flags["message-mode"] ?? "") ? flags["message-mode"] : null,
52221
52244
  systemPrompt: flags["system-prompt"] ?? null,
52245
+ resume: flags.resume ?? null,
52246
+ continueSession: flags.continue ?? false,
52222
52247
  quiet: flags.quiet ?? false,
52223
52248
  skipPermConfirm: flags.yes ?? false,
52224
52249
  claudeArgs: claudePassthrough
@@ -52420,9 +52445,14 @@ async function runLaunch(flags, rawArgs) {
52420
52445
  }
52421
52446
  filtered.push(args.claudeArgs[i]);
52422
52447
  }
52448
+ const isResume = args.resume !== null || args.continueSession;
52449
+ const claudeSessionId = isResume ? undefined : randomUUID();
52423
52450
  const claudeArgs = [
52424
52451
  "--dangerously-load-development-channels",
52425
52452
  "server:claudemesh",
52453
+ ...claudeSessionId ? ["--session-id", claudeSessionId] : [],
52454
+ ...args.resume ? ["--resume", args.resume] : [],
52455
+ ...args.continueSession ? ["--continue"] : [],
52426
52456
  ...args.skipPermConfirm ? ["--dangerously-skip-permissions"] : [],
52427
52457
  ...args.systemPrompt ? ["--system-prompt", args.systemPrompt] : [],
52428
52458
  ...filtered
@@ -52435,6 +52465,7 @@ async function runLaunch(flags, rawArgs) {
52435
52465
  ...process.env,
52436
52466
  CLAUDEMESH_CONFIG_DIR: tmpDir,
52437
52467
  CLAUDEMESH_DISPLAY_NAME: displayName,
52468
+ ...claudeSessionId ? { CLAUDEMESH_SESSION_ID: claudeSessionId } : {},
52438
52469
  MCP_TIMEOUT: process.env.MCP_TIMEOUT ?? "30000",
52439
52470
  MAX_MCP_OUTPUT_TOKENS: process.env.MAX_MCP_OUTPUT_TOKENS ?? "50000",
52440
52471
  ...role ? { CLAUDEMESH_ROLE: role } : {}
@@ -52491,7 +52522,7 @@ init_config();
52491
52522
  // package.json
52492
52523
  var package_default = {
52493
52524
  name: "claudemesh-cli",
52494
- version: "0.8.1",
52525
+ version: "0.8.3",
52495
52526
  description: "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
52496
52527
  keywords: [
52497
52528
  "claude-code",
@@ -53476,6 +53507,17 @@ var launch = defineCommand({
53476
53507
  description: "Skip the --dangerously-skip-permissions confirmation",
53477
53508
  default: false
53478
53509
  },
53510
+ resume: {
53511
+ type: "string",
53512
+ alias: "r",
53513
+ description: "Resume a previous Claude Code session by ID, or pass `true` for interactive picker"
53514
+ },
53515
+ continue: {
53516
+ type: "boolean",
53517
+ alias: "c",
53518
+ description: "Continue the most recent conversation in this directory",
53519
+ default: false
53520
+ },
53479
53521
  quiet: {
53480
53522
  type: "boolean",
53481
53523
  description: "Suppress banner and interactive prompts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemesh-cli",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -48,10 +48,10 @@
48
48
  "prettier": "3.6.2",
49
49
  "typescript": "5.9.3",
50
50
  "vitest": "4.0.14",
51
- "@turbostarter/vitest-config": "0.1.0",
52
51
  "@turbostarter/tsconfig": "0.1.0",
53
52
  "@turbostarter/prettier-config": "0.1.0",
54
- "@turbostarter/eslint-config": "0.1.0"
53
+ "@turbostarter/eslint-config": "0.1.0",
54
+ "@turbostarter/vitest-config": "0.1.0"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "bun build src/index.ts --target=node --outfile dist/index.js --banner \"#!/usr/bin/env node\" && chmod +x dist/index.js",