claudemesh-cli 1.0.1 → 1.0.2
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/entrypoints/cli.js +349 -325
- package/dist/entrypoints/cli.js.map +20 -20
- package/dist/entrypoints/mcp.js +2 -2
- package/dist/entrypoints/mcp.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/ui/styles.ts", "../../src/constants/exit-codes.ts", "../../src/constants/urls.ts", "../../src/constants/timings.ts", "../../src/utils/url.ts", "../../src/constants/paths.ts", "../../src/services/config/schemas.ts", "../../src/services/config/read.ts", "../../src/services/config/write.ts", "../../src/services/config/facade.ts", "../../src/services/logger/logger.ts", "../../src/services/logger/facade.ts", "../../src/services/api/errors.ts", "../../src/services/api/client.ts", "../../src/services/api/my.ts", "../../src/services/api/public.ts", "../../src/services/api/facade.ts", "../../src/services/device/info.ts", "../../src/services/device/facade.ts", "../../src/services/spawn/claude.ts", "../../src/services/spawn/browser.ts", "../../src/services/spawn/facade.ts", "../../src/services/auth/token-store.ts", "../../src/services/auth/errors.ts", "../../src/services/auth/device-code.ts", "../../src/services/auth/client.ts", "../../src/services/auth/dashboard-sync.ts", "../../src/services/auth/callback-listener.ts", "../../src/services/auth/facade.ts", "../../src/services/crypto/keypair.ts", "../../src/services/crypto/file-crypto.ts", "../../src/services/crypto/box.ts", "../../src/services/crypto/random.ts", "../../src/services/crypto/facade.ts", "../../src/services/broker/hello-sig.ts", "../../src/services/broker/ws-client.ts", "../../src/services/broker/manager.ts", "../../src/services/broker/envelope.ts", "../../src/services/broker/facade.ts", "../../src/ui/screen.ts", "../../src/ui/spinner.ts", "../../src/commands/launch.ts", "../../src/ui/welcome/WelcomeScreen.ts", "../../src/ui/welcome/MeshPickerStep.ts", "../../src/ui/welcome/index.ts", "../../src/commands/login.ts", "../../src/
|
|
3
|
+
"sources": ["../../src/ui/styles.ts", "../../src/constants/exit-codes.ts", "../../src/constants/urls.ts", "../../src/constants/timings.ts", "../../src/utils/url.ts", "../../src/constants/paths.ts", "../../src/services/config/schemas.ts", "../../src/services/config/read.ts", "../../src/services/config/write.ts", "../../src/services/config/facade.ts", "../../src/services/logger/logger.ts", "../../src/services/logger/facade.ts", "../../src/services/api/errors.ts", "../../src/services/api/client.ts", "../../src/services/api/my.ts", "../../src/services/api/public.ts", "../../src/services/api/facade.ts", "../../src/services/device/info.ts", "../../src/services/device/facade.ts", "../../src/services/spawn/claude.ts", "../../src/services/spawn/browser.ts", "../../src/services/spawn/facade.ts", "../../src/services/auth/token-store.ts", "../../src/services/auth/errors.ts", "../../src/services/auth/device-code.ts", "../../src/services/auth/client.ts", "../../src/services/auth/dashboard-sync.ts", "../../src/services/auth/callback-listener.ts", "../../src/services/auth/facade.ts", "../../src/services/crypto/keypair.ts", "../../src/services/crypto/file-crypto.ts", "../../src/services/crypto/box.ts", "../../src/services/crypto/random.ts", "../../src/services/crypto/facade.ts", "../../src/services/broker/hello-sig.ts", "../../src/services/broker/ws-client.ts", "../../src/services/broker/manager.ts", "../../src/services/broker/envelope.ts", "../../src/services/broker/facade.ts", "../../src/ui/render.ts", "../../src/ui/screen.ts", "../../src/ui/spinner.ts", "../../src/commands/launch.ts", "../../src/ui/welcome/WelcomeScreen.ts", "../../src/ui/welcome/MeshPickerStep.ts", "../../src/ui/welcome/index.ts", "../../src/commands/login.ts", "../../src/commands/welcome.ts", "../../src/services/mesh/list.ts", "../../src/services/mesh/create.ts", "../../src/services/mesh/rename.ts", "../../src/services/mesh/leave.ts", "../../src/services/mesh/join.ts", "../../src/services/state/last-used.ts", "../../src/services/state/facade.ts", "../../src/services/mesh/resolve-target.ts", "../../src/services/mesh/facade.ts", "../../src/commands/new.ts", "../../src/services/invite/generate.ts", "../../src/services/invite/parse-v1.ts", "../../src/services/invite/enroll.ts", "../../src/services/invite/v2.ts", "../../src/services/invite/facade.ts", "../../src/commands/join.ts", "../../src/commands/list.ts", "../../src/commands/delete-mesh.ts", "../../src/commands/rename.ts", "../../src/services/clipboard/read.ts", "../../src/services/clipboard/facade.ts", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMode.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMath.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js", "../../../../node_modules/qrcode-terminal/vendor/QRCode/index.js", "../../../../node_modules/qrcode-terminal/lib/main.js", "../../src/ui/qr.ts", "../../src/commands/invite.ts", "../../src/commands/connect.ts", "../../src/commands/kick.ts", "../../src/commands/ban.ts", "../../src/commands/peers.ts", "../../src/commands/send.ts", "../../src/commands/inbox.ts", "../../src/commands/state.ts", "../../src/commands/info.ts", "../../src/commands/remember.ts", "../../src/commands/recall.ts", "../../src/commands/remind.ts", "../../src/commands/profile.ts", "../../src/commands/register.ts", "../../src/commands/logout.ts", "../../src/commands/whoami.ts", "../../src/commands/install.ts", "../../src/commands/uninstall.ts", "../../src/commands/doctor.ts", "../../src/commands/status.ts", "../../src/commands/sync.ts", "../../src/services/health/check-node-version.ts", "../../src/services/health/check-claude-binary.ts", "../../src/services/health/check-mcp-registered.ts", "../../src/services/health/check-hooks-registered.ts", "../../src/services/health/check-config-perms.ts", "../../src/services/health/check-keypairs-valid.ts", "../../src/services/health/facade.ts", "../../src/commands/test.ts", "../../src/commands/completions.ts", "../../src/commands/verify.ts", "../../src/commands/url-handler.ts", "../../src/commands/status-line.ts", "../../src/commands/backup.ts", "../../src/commands/upgrade.ts", "../../src/commands/grants.ts", "../../src/mcp/tools/definitions.ts", "../../src/mcp/server.ts", "../../src/commands/mcp.ts", "../../src/commands/hook.ts", "../../src/commands/seed-test-mesh.ts", "../../src/cli/argv.ts", "../../src/cli/handlers/signal.ts", "../../src/cli/handlers/error.ts", "../../src/services/update/check.ts", "../../src/utils/semver.ts", "../../src/cli/update-notice.ts", "../../src/entrypoints/cli.ts", "../../src/cli/output/version.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"const isTTY =\n process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== \"dumb\";\n\nconst esc = (code: string) => (s: string) =>\n isTTY ? `${code}${s}\\x1b[0m` : s;\n\nexport const orange = esc(\"\\x1b[38;5;208m\");\nexport const clay = esc(\"\\x1b[38;5;173m\");\nexport const amber = esc(\"\\x1b[38;5;214m\");\n\nexport const bold = esc(\"\\x1b[1m\");\nexport const dim = esc(\"\\x1b[2m\");\nexport const green = esc(\"\\x1b[32m\");\nexport const yellow = esc(\"\\x1b[33m\");\nexport const red = esc(\"\\x1b[31m\");\nexport const cyan = esc(\"\\x1b[36m\");\nexport const boldOrange = esc(\"\\x1b[1m\\x1b[38;5;208m\");\n\nexport const HIDE_CURSOR = isTTY ? \"\\x1b[?25l\" : \"\";\nexport const SHOW_CURSOR = isTTY ? \"\\x1b[?25h\" : \"\";\nexport const CLEAR_SCREEN = isTTY ? \"\\x1b[2J\\x1b[H\" : \"\";\nexport const CLEAR_LINE = isTTY ? \"\\x1b[K\" : \"\";\n\nexport function moveTo(row: number, col: number): string {\n return isTTY ? `\\x1b[${row};${col}H` : \"\";\n}\n\nexport function moveUp(n: number): string {\n return isTTY ? `\\x1b[${n}A` : \"\";\n}\n\nexport function visibleLength(s: string): number {\n return s.replace(/\\x1b\\[[^m]*m/g, \"\").length;\n}\n\nexport const icons = {\n check: \"✔\",\n cross: \"✘\",\n warn: \"⚠\",\n arrow: \"→\",\n bullet: \"●\",\n dash: \"—\",\n ellipsis: \"…\",\n} as const;\n",
|
|
6
6
|
"export const EXIT = {\n SUCCESS: 0,\n USER_CANCELLED: 1,\n AUTH_FAILED: 2,\n INVALID_ARGS: 3,\n NETWORK_ERROR: 4,\n NOT_FOUND: 5,\n ALREADY_EXISTS: 6,\n PERMISSION_DENIED: 7,\n INTERNAL_ERROR: 8,\n CLAUDE_MISSING: 9,\n} as const;\n\nexport type ExitCode = (typeof EXIT)[keyof typeof EXIT];\n",
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
"import { BrokerClient } from \"./ws-client.js\";\nimport type { Config, JoinedMesh } from \"~/services/config/facade.js\";\n\nconst clients = new Map<string, BrokerClient>();\nlet configDisplayName: string | undefined;\nlet configGroups: Config[\"groups\"] = [];\n\nexport async function ensureClient(mesh: JoinedMesh): Promise<BrokerClient> {\n const existing = clients.get(mesh.meshId);\n if (existing) return existing;\n const isDebug = process.env.CLAUDEMESH_DEBUG === \"1\" || process.env.CLAUDEMESH_DEBUG === \"true\";\n const client = new BrokerClient(mesh, { debug: isDebug, displayName: configDisplayName });\n clients.set(mesh.meshId, client);\n try {\n await client.connect();\n for (const g of configGroups ?? []) {\n try { await client.joinGroup(g.name, g.role); } catch {}\n }\n } catch (err) {\n process.stderr.write(`[claudemesh] broker connect failed for ${mesh.slug}: ${err instanceof Error ? err.message : err} (will retry)\\n`);\n }\n return client;\n}\n\nexport async function startClients(config: Config): Promise<void> {\n configDisplayName = config.displayName;\n configGroups = config.groups ?? [];\n await Promise.allSettled(config.meshes.map(ensureClient));\n}\n\nexport function findClient(needle: string): BrokerClient | null {\n const byId = clients.get(needle);\n if (byId) return byId;\n for (const c of clients.values()) {\n if (c.meshSlug === needle) return c;\n }\n return null;\n}\n\nexport function allClients(): BrokerClient[] {\n return [...clients.values()];\n}\n\nexport function stopAll(): void {\n for (const c of clients.values()) c.close();\n clients.clear();\n}\n",
|
|
42
42
|
"export {\n encryptDirect,\n decryptDirect,\n isDirectTarget,\n} from \"~/services/crypto/facade.js\";\nexport type { Envelope } from \"~/services/crypto/facade.js\";\n",
|
|
43
43
|
"export { BrokerClient } from \"./ws-client.js\";\nexport type { Priority, ConnStatus, PeerInfo, InboundPush } from \"./ws-client.js\";\nexport { ensureClient, startClients, findClient, allClients, stopAll } from \"./manager.js\";\nexport { signHello } from \"./hello-sig.js\";\nexport { encryptDirect, decryptDirect, isDirectTarget } from \"./envelope.js\";\nexport type { Envelope } from \"./envelope.js\";\nexport { BrokerConnectionError, HelloAckTimeout } from \"./errors.js\";\nexport type { WsMessageType } from \"./schemas.js\";\n",
|
|
44
|
+
"/**\n * Unified renderer — every command emits its output through this module\n * so the palette, spacing, and icons stay consistent across the CLI.\n *\n * Design: narrow API (ok / warn / err / info / section / kv / code / link)\n * over a single source of styles. No rogue `console.log` color codes.\n * Matches the web's claudemesh brand: clay accent (#d97757 → xterm 173),\n * dim gray for meta, serif-less mono for kv tables.\n */\n\nimport { clay, dim, bold, green, red, yellow, cyan, icons } from \"./styles.js\";\n\nconst OUT = process.stdout;\nconst ERR = process.stderr;\n\n/** Leading 2-space indent is the house style — matches share/invite output. */\nconst INDENT = \" \";\n\nexport const render = {\n blank(): void {\n OUT.write(\"\\n\");\n },\n\n ok(msg: string, detail?: string): void {\n const d = detail ? ` ${dim(\"(\" + detail + \")\")}` : \"\";\n OUT.write(`${INDENT}${green(icons.check)} ${msg}${d}\\n`);\n },\n\n warn(msg: string, hint?: string): void {\n OUT.write(`${INDENT}${yellow(icons.warn)} ${msg}\\n`);\n if (hint) OUT.write(`${INDENT} ${dim(hint)}\\n`);\n },\n\n err(msg: string, hint?: string): void {\n ERR.write(`${INDENT}${red(icons.cross)} ${msg}\\n`);\n if (hint) ERR.write(`${INDENT} ${dim(hint)}\\n`);\n },\n\n info(msg: string): void {\n OUT.write(`${INDENT}${msg}\\n`);\n },\n\n /** Brand-colored section header with em-dash eyebrow. */\n section(title: string): void {\n OUT.write(`\\n${INDENT}${dim(\"—\")} ${clay(title)}\\n\\n`);\n },\n\n /** Labelled heading in bold. Use when you want a weight break. */\n heading(title: string): void {\n OUT.write(`${INDENT}${bold(title)}\\n`);\n },\n\n /** Key/value pair — keys right-padded to align. */\n kv(pairs: Array<[label: string, value: string]>, opts?: { padTo?: number }): void {\n const pad = opts?.padTo ?? Math.max(...pairs.map(([k]) => k.length)) + 2;\n for (const [k, v] of pairs) {\n OUT.write(`${INDENT}${dim(k.padEnd(pad, \" \"))}${v}\\n`);\n }\n },\n\n /** Code block (dim background by default terminal), 4-space indent. */\n code(snippet: string): void {\n for (const line of snippet.split(\"\\n\")) {\n OUT.write(`${INDENT} ${cyan(line)}\\n`);\n }\n },\n\n /** Clickable link in modern terminals (OSC 8). Falls back to plain URL. */\n link(url: string): void {\n OUT.write(`${INDENT}${clay(url)}\\n`);\n },\n\n /** Hint line — dim + leading arrow. Used after a failure for remediation. */\n hint(msg: string): void {\n OUT.write(`${INDENT}${dim(icons.arrow + \" \" + msg)}\\n`);\n },\n};\n\n/** Return JSON suitable for `--json` flags. Zero styling, schema-versioned. */\nexport function jsonOut<T>(payload: T, schemaVersion = \"1.0\"): void {\n OUT.write(JSON.stringify({ schema_version: schemaVersion, ...payload }, null, 2));\n OUT.write(\"\\n\");\n}\n",
|
|
44
45
|
"import { VERSION } from \"~/constants/urls.js\";\nimport { HIDE_CURSOR, SHOW_CURSOR, CLEAR_SCREEN, CLEAR_LINE, moveTo, boldOrange, dim, visibleLength } from \"./styles.js\";\n\nexport function termSize(): { cols: number; rows: number } {\n return { cols: process.stdout.columns || 80, rows: process.stdout.rows || 24 };\n}\nexport function center(s: string): string {\n const pad = Math.max(0, Math.floor((termSize().cols - visibleLength(s)) / 2));\n return \" \".repeat(pad) + s;\n}\nexport function writeCentered(row: number, s: string): void {\n process.stdout.write(moveTo(row, 1) + center(s) + CLEAR_LINE);\n}\nexport function drawTopBar(extra?: string): void {\n const { cols } = termSize();\n const bg = \"\\x1b[48;5;208m\\x1b[30m\"; const reset = \"\\x1b[0m\";\n const left = \" claudemesh v\" + VERSION; const right = \"claudemesh.com \";\n const mid = extra ? \" \" + extra : \"\";\n const gap = Math.max(1, cols - left.length - right.length - mid.length);\n process.stdout.write(moveTo(1, 1) + bg + left + mid + \" \".repeat(gap) + right + reset);\n}\nexport function drawBottomBar(left: string, right?: string): void {\n const { cols, rows } = termSize();\n const bg = \"\\x1b[48;5;208m\\x1b[30m\"; const reset = \"\\x1b[0m\";\n const l = \" \" + left; const r = right ? right + \" \" : \"\";\n const gap = Math.max(1, cols - l.length - r.length);\n process.stdout.write(moveTo(rows, 1) + bg + l + \" \".repeat(gap) + r + reset);\n}\nexport function enterFullScreen(): void { process.stdout.write(HIDE_CURSOR + CLEAR_SCREEN); drawTopBar(); }\nexport function exitFullScreen(): void { process.stdout.write(SHOW_CURSOR + CLEAR_SCREEN); }\nexport function drawRule(row: number): void { const { cols } = termSize(); writeCentered(row, dim(\"\\u2500\".repeat(Math.min(60, cols - 4)))); }\n\nimport { createInterface } from \"node:readline\";\nimport { bold, green } from \"./styles.js\";\n\nexport async function menuSelect(\n itemsOrOpts: string[] | { title?: string; items: string[]; row?: number },\n prompt = \"Choice\",\n): Promise<number> {\n const items = Array.isArray(itemsOrOpts) ? itemsOrOpts : itemsOrOpts.items;\n const title = !Array.isArray(itemsOrOpts) ? itemsOrOpts.title : undefined;\n if (title) console.log(`\\n ${title}`);\n items.forEach((item, i) => console.log(` ${bold(String(i + 1) + \")\")} ${item}`));\n console.log(\"\");\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(` ${prompt} [1]: `, (answer) => {\n rl.close();\n const idx = parseInt(answer || \"1\", 10) - 1;\n resolve(idx >= 0 && idx < items.length ? idx : 0);\n });\n });\n}\n\nexport async function textInput(\n promptOrOpts: string | { label: string; row?: number; placeholder?: string },\n defaultVal = \"\",\n): Promise<string> {\n const label = typeof promptOrOpts === \"string\" ? promptOrOpts : promptOrOpts.label;\n const placeholder = typeof promptOrOpts === \"object\" ? promptOrOpts.placeholder : undefined;\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n const hint = placeholder ? ` (${placeholder})` : defaultVal ? ` [${defaultVal}]` : \"\";\n rl.question(` ${label}${hint}: `, (answer) => {\n rl.close();\n resolve(answer.trim() || defaultVal);\n });\n });\n}\n\nexport async function confirmPrompt(\n promptOrOpts: string | { message: string; row?: number; defaultYes?: boolean },\n defaultYes = true,\n): Promise<boolean> {\n const message = typeof promptOrOpts === \"string\" ? promptOrOpts : promptOrOpts.message;\n const defYes = typeof promptOrOpts === \"object\" && promptOrOpts.defaultYes !== undefined ? promptOrOpts.defaultYes : defaultYes;\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const hint = defYes ? \"[Y/n]\" : \"[y/N]\";\n return new Promise((resolve) => {\n rl.question(` ${message} ${hint}: `, (answer) => {\n rl.close();\n const a = answer.trim().toLowerCase();\n if (!a) resolve(defYes);\n else resolve(a === \"y\" || a === \"yes\");\n });\n });\n}\n\nexport function splashScreen(opts?: { subtitle?: string; status?: string }) {\n const { createSpinner, FRAME_HEIGHT } = require(\"./spinner\") as typeof import(\"./spinner.js\");\n enterFullScreen();\n const { rows } = termSize();\n const logoTop = Math.floor((rows - FRAME_HEIGHT - 6) / 2);\n const brandRow = logoTop + FRAME_HEIGHT + 1;\n const subtitleRow = brandRow + 1;\n const statusRow = subtitleRow + 2;\n\n writeCentered(brandRow, boldOrange(\"claudemesh\"));\n if (opts?.subtitle) writeCentered(subtitleRow, dim(opts.subtitle));\n if (opts?.status) writeCentered(statusRow, opts.status);\n\n const spinner = createSpinner({\n render(lines) { for (let i = 0; i < lines.length; i++) writeCentered(logoTop + i, lines[i]!); },\n interval: 70,\n });\n spinner.start();\n\n return {\n setStatus(text: string) { writeCentered(statusRow, text + CLEAR_LINE); },\n setSubtitle(text: string) { writeCentered(subtitleRow, dim(text) + CLEAR_LINE); },\n stop() { spinner.stop(); },\n exit() { spinner.stop(); exitFullScreen(); },\n };\n}\n",
|
|
45
46
|
"import { boldOrange, clay, dim, visibleLength } from \"./styles.js\";\n\nconst W = 7, H = 5, CX = 3, CY = 2, RX = 3, RY = 2, TOTAL = 12;\n\nfunction edgeChar(dx: number, dy: number): string {\n const a = Math.abs(dx), b = Math.abs(dy);\n if (b < a * 0.4) return \"-\";\n if (a < b * 0.4) return \"|\";\n return (dx > 0) === (dy > 0) ? \"\\\\\" : \"/\";\n}\n\nfunction drawLine(grid: string[][], x0: number, y0: number, x1: number, y1: number) {\n const dx = x1 - x0, dy = y1 - y0;\n const steps = Math.max(Math.abs(dx), Math.abs(dy));\n for (let s = 1; s < steps; s++) {\n const x = Math.round(x0 + dx * s / steps);\n const y = Math.round(y0 + dy * s / steps);\n if (y >= 0 && y < H && x >= 0 && x < W) {\n const c = grid[y]![x]!;\n if (c === \" \") grid[y]![x] = edgeChar(dx, dy);\n else if (c !== edgeChar(dx, dy) && c !== \"\\u25CF\") grid[y]![x] = \"+\";\n }\n }\n}\n\nfunction buildFrame(i: number): string[] {\n const grid = Array.from({ length: H }, () => Array(W).fill(\" \") as string[]);\n const base = (i / TOTAL) * Math.PI * 2;\n const nodes = [0, 1, 2, 3].map(n => {\n const a = base + n * Math.PI / 2 - Math.PI / 2;\n return { x: Math.round(CX + RX * Math.cos(a)), y: Math.round(CY + RY * Math.sin(a)) };\n });\n for (let a = 0; a < 4; a++)\n for (let b = a + 1; b < 4; b++)\n drawLine(grid, nodes[a]!.x, nodes[a]!.y, nodes[b]!.x, nodes[b]!.y);\n for (const { x, y } of nodes)\n if (y >= 0 && y < H && x >= 0 && x < W) grid[y]![x] = \"\\u25CF\";\n return grid.map(r => r.join(\"\"));\n}\n\nconst seen = new Set<string>();\nconst RAW_FRAMES: string[][] = [];\nfor (let i = 0; i < TOTAL; i++) {\n const f = buildFrame(i);\n const key = f.join(\"\\n\");\n if (!seen.has(key)) { seen.add(key); RAW_FRAMES.push(f); }\n}\n\nfunction colorize(line: string): string {\n return line\n .replace(/\\u25CF/g, boldOrange(\"\\u25CF\"))\n .replace(/[-|/\\\\+]/g, c => dim(clay(c)));\n}\n\nexport const FRAME_COUNT = RAW_FRAMES.length;\nexport const FRAME_HEIGHT = H;\nexport const FRAME_WIDTH = W;\n\nexport function getFrame(index: number): string[] {\n return RAW_FRAMES[index % RAW_FRAMES.length]!.map(colorize);\n}\n\nexport function getRawFrame(index: number): string[] {\n return RAW_FRAMES[index % RAW_FRAMES.length]!;\n}\n\nexport function createSpinner(opts: {\n render: (lines: string[]) => void;\n interval?: number;\n}) {\n let frame = 0;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n return {\n start() {\n if (timer) return;\n timer = setInterval(() => {\n opts.render(getFrame(frame++));\n }, opts.interval ?? 70);\n opts.render(getFrame(frame++));\n },\n stop() {\n if (timer) { clearInterval(timer); timer = null; }\n },\n get isRunning() { return timer !== null; },\n };\n}\n",
|
|
46
|
-
"// @ts-nocheck — v1 port, runtime-tested\n/**\n * `claudemesh launch` — spawn `claude` with peer mesh identity.\n *\n * Flags are defined in index.ts (citty command) — that is the source of\n * truth. This file receives already-parsed flags and rawArgs.\n *\n * Flow:\n * 1. Receive parsed flags from citty + rawArgs for -- passthrough\n * 2. If --join: run join flow first\n * 3. Load config → pick mesh (auto if 1, interactive picker if >1)\n * 4. Write per-session config to tmpdir (isolates mesh selection)\n * 5. Spawn claude with CLAUDEMESH_CONFIG_DIR + CLAUDEMESH_DISPLAY_NAME\n * 6. On exit: cleanup tmpdir\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { mkdtempSync, writeFileSync, rmSync, readdirSync, statSync, existsSync, readFileSync } from \"node:fs\";\nimport { tmpdir, hostname, homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport type { Config, JoinedMesh, GroupEntry } from \"~/services/config/facade.js\";\nimport { startCallbackListener, generatePairingCode } from \"~/services/auth/facade.js\";\nimport { openBrowser } from \"~/services/spawn/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\n\n// Flags as parsed by citty (index.ts is the source of truth for definitions).\nexport interface LaunchFlags {\n name?: string;\n role?: string;\n groups?: string;\n join?: string;\n mesh?: string;\n \"message-mode\"?: string;\n \"system-prompt\"?: string;\n resume?: string;\n continue?: boolean;\n yes?: boolean;\n quiet?: boolean;\n}\n\n// --- Interactive mesh picker ---\n\nasync function pickMesh(meshes: JoinedMesh[]): Promise<JoinedMesh> {\n if (meshes.length === 1) return meshes[0]!;\n\n console.log(\"\\n Select mesh:\");\n meshes.forEach((m, i) => {\n console.log(` ${i + 1}) ${m.slug}`);\n });\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\" Choice [1]: \", (answer) => {\n rl.close();\n const idx = parseInt(answer || \"1\", 10) - 1;\n if (idx >= 0 && idx < meshes.length) {\n resolve(meshes[idx]!);\n } else {\n console.error(\" Invalid choice, using first mesh.\");\n resolve(meshes[0]!);\n }\n });\n });\n}\n\n// --- Group string parser ---\n\n/** Parse \"frontend:lead,reviewers:member,all\" → GroupEntry[] */\nfunction parseGroupsString(raw: string): GroupEntry[] {\n return raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean)\n .map((token) => {\n const idx = token.indexOf(\":\");\n if (idx === -1) return { name: token };\n return { name: token.slice(0, idx), role: token.slice(idx + 1) };\n });\n}\n\n// --- Interactive role/groups prompts ---\n\nfunction askLine(prompt: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(prompt, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\n// --- Permission confirmation ---\n\nasync function confirmPermissions(): Promise<void> {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const yellow = (s: string): string => (useColor ? `\\x1b[33m${s}\\x1b[39m` : s);\n\n console.log(yellow(bold(\" Autonomous mode\")));\n console.log(\"\");\n console.log(\" Claude will run with --dangerously-skip-permissions, bypassing\");\n console.log(\" ALL permission prompts — not just claudemesh tools.\");\n console.log(\" Peers exchange text only — no file access, no tool calls.\");\n console.log(\"\");\n console.log(dim(\" Without -y: only claudemesh tools are pre-approved (via allowedTools).\"));\n console.log(dim(\" Use -y for autonomous agents. Omit it for shared/multi-person meshes.\"));\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve, reject) => {\n rl.question(` ${bold(\"Continue?\")} [Y/n] `, (answer) => {\n rl.close();\n const a = answer.trim().toLowerCase();\n if (a === \"\" || a === \"y\" || a === \"yes\") {\n resolve();\n } else {\n console.log(\"\\n Aborted. Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n });\n });\n}\n\n// --- Banner ---\n\nimport {\n bold as tBold, dim as tDim, green as tGreen, orange as tOrange,\n boldOrange, HIDE_CURSOR, SHOW_CURSOR,\n} from \"~/ui/styles.js\";\nimport {\n enterFullScreen, exitFullScreen, writeCentered, termSize,\n drawTopBar, drawBottomBar, menuSelect, textInput, confirmPrompt,\n} from \"~/ui/screen.js\";\nimport { createSpinner, FRAME_HEIGHT } from \"~/ui/spinner.js\";\n\ninterface LaunchWizardResult {\n mesh: JoinedMesh;\n role: string | null;\n groups: GroupEntry[];\n messageMode: \"push\" | \"inbox\" | \"off\";\n skipPermissions: boolean;\n}\n\n/**\n * Full-screen launch wizard — spinning logo + interactive config.\n * Mesh selection, role, groups, message mode, permissions — all in one TUI.\n * Falls back to plain text on non-TTY.\n */\nasync function runLaunchWizard(opts: {\n displayName: string;\n meshes: JoinedMesh[];\n selectedMesh: JoinedMesh | null;\n existingRole: string | null;\n existingGroups: GroupEntry[];\n existingMessageMode: \"push\" | \"inbox\" | \"off\" | null;\n skipPermConfirm: boolean;\n}): Promise<LaunchWizardResult> {\n if (!process.stdout.isTTY) {\n return {\n mesh: opts.selectedMesh ?? opts.meshes[0]!,\n role: opts.existingRole,\n groups: opts.existingGroups,\n messageMode: opts.existingMessageMode ?? \"push\",\n skipPermissions: opts.skipPermConfirm,\n };\n }\n\n const { rows } = termSize();\n enterFullScreen();\n drawTopBar();\n\n // Spinning logo centered in upper portion\n const logoTop = Math.floor((rows - FRAME_HEIGHT - 16) / 2);\n const brandRow = logoTop + FRAME_HEIGHT + 1;\n const subtitleRow = brandRow + 1;\n const formRow = subtitleRow + 2;\n\n writeCentered(brandRow, boldOrange(\"claudemesh\"));\n writeCentered(subtitleRow, tDim(\"peer mesh for Claude Code\"));\n\n const spinner = createSpinner({\n render(lines) {\n for (let i = 0; i < lines.length; i++) {\n writeCentered(logoTop + i, lines[i]!);\n }\n },\n interval: 70,\n });\n spinner.start();\n\n // Show detected info\n let row = formRow;\n writeCentered(row, `Directory ${tGreen(\"✓\")} ${process.cwd()}`);\n row++;\n writeCentered(row, `Name ${tGreen(\"✓\")} ${opts.displayName}`);\n row += 2;\n\n // Mesh selection\n let mesh: JoinedMesh;\n if (opts.selectedMesh) {\n mesh = opts.selectedMesh;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else if (opts.meshes.length === 1) {\n mesh = opts.meshes[0]!;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else {\n spinner.stop();\n const choice = await menuSelect({\n title: \"Select mesh\",\n items: opts.meshes.map(m => m.slug),\n row,\n });\n mesh = opts.meshes[choice]!;\n // Redraw as confirmed\n for (let i = 0; i < opts.meshes.length + 1; i++) {\n writeCentered(row + i, \" \");\n }\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n spinner.start();\n row++;\n }\n\n row++;\n\n // Interactive fields\n let role = opts.existingRole;\n let groups = opts.existingGroups;\n let messageMode = opts.existingMessageMode ?? \"push\" as \"push\" | \"inbox\" | \"off\";\n\n // Role input\n if (role === null) {\n spinner.stop();\n const answer = await textInput({ label: \"Role\", row, placeholder: \"optional — press Enter to skip\" });\n if (answer) role = answer;\n spinner.start();\n row++;\n } else {\n writeCentered(row, `Role ${tGreen(\"✓\")} ${role}`);\n row++;\n }\n\n // Groups input\n if (groups.length === 0) {\n spinner.stop();\n const answer = await textInput({ label: \"Groups\", row, placeholder: \"comma-separated, optional\" });\n if (answer) groups = parseGroupsString(answer);\n spinner.start();\n row++;\n } else {\n const tags = groups.map(g => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \");\n writeCentered(row, `Groups ${tGreen(\"✓\")} ${tags}`);\n row++;\n }\n\n // Message mode selection\n if (opts.existingMessageMode === null) {\n row++;\n spinner.stop();\n const choice = await menuSelect({\n title: \"Message mode\",\n items: [\n \"Push (real-time, peers can interrupt)\",\n \"Inbox (held until you check)\",\n \"Off (tools only, no messages)\",\n ],\n row,\n });\n messageMode = ([\"push\", \"inbox\", \"off\"] as const)[choice];\n spinner.start();\n row += 5;\n } else {\n writeCentered(row, `Messages ${tGreen(\"✓\")} ${messageMode}`);\n row++;\n }\n\n // Permissions confirmation\n let skipPermissions = opts.skipPermConfirm;\n if (!skipPermissions) {\n row++;\n spinner.stop();\n writeCentered(row, tDim(\"Claude will run with --dangerously-skip-permissions,\"));\n writeCentered(row + 1, tDim(\"bypassing ALL permission prompts — not just claudemesh.\"));\n row += 3;\n const confirmed = await confirmPrompt({\n message: boldOrange(\"Autonomous mode?\"),\n row,\n defaultYes: true,\n });\n if (!confirmed) {\n exitFullScreen();\n console.log(\" Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n skipPermissions = true;\n spinner.start();\n }\n\n // Final animation\n row += 2;\n writeCentered(row, tDim(\"Launching Claude Code...\"));\n\n await new Promise(r => setTimeout(r, 800));\n spinner.stop();\n exitFullScreen();\n\n return { mesh, role, groups, messageMode, skipPermissions };\n}\n\nfunction printBanner(name: string, meshSlug: string, role: string | null, groups: GroupEntry[], messageMode: \"push\" | \"inbox\" | \"off\"): void {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n\n const roleSuffix = role ? ` (${role})` : \"\";\n const groupTags = groups.length\n ? \" [\" + groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \") + \"]\"\n : \"\";\n\n const rule = \"─\".repeat(60);\n console.log(bold(`claudemesh launch`) + dim(` — as ${name}${roleSuffix} on ${meshSlug}${groupTags} [${messageMode}]`));\n console.log(rule);\n if (messageMode === \"push\") {\n console.log(\"Peer messages arrive as <channel> reminders in real-time.\");\n } else if (messageMode === \"inbox\") {\n console.log(\"Peer messages held in inbox. Use check_messages to read.\");\n } else {\n console.log(\"Messages off. Use check_messages to poll manually.\");\n }\n console.log(\"Peers send text only — they cannot call tools or read files.\");\n console.log(dim(`Config: ${getConfigPath()}`));\n console.log(rule);\n console.log(\"\");\n}\n\n// --- Main ---\n\nexport async function runLaunch(flags: LaunchFlags, rawArgs: string[]): Promise<void> {\n // Extract args that follow \"--\" — passed straight through to claude.\n const dashIdx = rawArgs.indexOf(\"--\");\n const claudePassthrough = dashIdx >= 0 ? rawArgs.slice(dashIdx + 1) : [];\n\n // Normalise flags into the internal shape used below.\n const args = {\n name: flags.name ?? null,\n role: flags.role ?? null,\n groups: flags.groups ?? null,\n joinLink: flags.join ?? null,\n meshSlug: flags.mesh ?? null,\n messageMode: ([\"push\", \"inbox\", \"off\"].includes(flags[\"message-mode\"] ?? \"\")\n ? flags[\"message-mode\"] as \"push\" | \"inbox\" | \"off\"\n : null),\n systemPrompt: flags[\"system-prompt\"] ?? null,\n resume: flags.resume ?? null,\n continueSession: flags.continue ?? false,\n quiet: flags.quiet ?? false,\n skipPermConfirm: flags.yes ?? false,\n claudeArgs: claudePassthrough,\n };\n\n // 1. If --join, run join flow first.\n if (args.joinLink) {\n console.log(\"Joining mesh...\");\n const invite = await parseInviteLink(args.joinLink);\n const keypair = await generateKeypair();\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n const enroll = await enrollWithBroker({\n brokerWsUrl: invite.payload.broker_url,\n inviteToken: invite.token,\n invitePayload: invite.payload,\n peerPubkey: keypair.publicKey,\n displayName,\n });\n const config = readConfig();\n config.meshes = config.meshes.filter(\n (m) => m.slug !== invite.payload.mesh_slug,\n );\n config.meshes.push({\n meshId: invite.payload.mesh_id,\n memberId: enroll.memberId,\n slug: invite.payload.mesh_slug,\n name: invite.payload.mesh_slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: invite.payload.broker_url,\n joinedAt: new Date().toISOString(),\n });\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n writeConfig(config);\n console.log(\n `✓ Joined \"${invite.payload.mesh_slug}\"${enroll.alreadyMember ? \" (already member)\" : \"\"}`,\n );\n }\n\n // 2. Load config, pick mesh.\n const config = readConfig();\n let justSynced = false;\n\n if (config.meshes.length === 0 && !args.joinLink) {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n\n const code = generatePairingCode();\n const listener = await startCallbackListener();\n const url = `https://claudemesh.com/cli-auth?port=${listener.port}&code=${code}&action=sync`;\n\n console.log(`\\n ${bold(\"Welcome to claudemesh!\")} No meshes found.`);\n console.log(` Opening browser to sign in...\\n`);\n\n const opened = await openBrowser(url);\n if (!opened) {\n console.log(` Couldn't open browser automatically.`);\n }\n console.log(` ${dim(`Visit: ${url}`)}`);\n console.log(` ${dim(`Or join with invite: claudemesh launch --join <url>`)}\\n`);\n\n // Race: localhost callback vs manual paste vs timeout\n const manualPromise = new Promise<string>((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n rl.question(\" Paste sync token (or wait for browser): \", (answer) => {\n rl.close();\n if (answer.trim()) resolve(answer.trim());\n });\n });\n\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 15 * 60_000);\n });\n\n const syncToken = await Promise.race([\n listener.token,\n manualPromise,\n timeoutPromise,\n ]);\n\n listener.close();\n\n if (!syncToken) {\n console.error(\"\\n Timed out waiting for sign-in.\");\n process.exit(1);\n }\n\n // Generate keypair and sync with broker\n const { generateKeypair } = await import(\"~/services/crypto/facade.js\");\n const keypair = await generateKeypair();\n const displayNameForSync = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n const { syncWithBroker } = await import(\"~/services/auth/facade.js\");\n const result = await syncWithBroker(syncToken, keypair.publicKey, displayNameForSync);\n\n // Write all meshes to config\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n for (const m of result.meshes) {\n config.meshes.push({\n meshId: m.mesh_id,\n memberId: m.member_id,\n slug: m.slug,\n name: m.slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: m.broker_url,\n joinedAt: new Date().toISOString(),\n });\n }\n config.accountId = result.account_id;\n writeConfig(config);\n justSynced = true;\n\n console.log(`\\n ${green(\"✓\")} Synced ${result.meshes.length} mesh(es): ${result.meshes.map(m => m.slug).join(\", \")}\\n`);\n }\n\n if (config.meshes.length === 0) {\n console.error(\"No meshes joined. Run `claudemesh join <url>` or use --join <url>.\");\n process.exit(1);\n }\n\n // Resolve mesh — by flag, auto (if 1), or defer to wizard (if >1)\n let mesh: JoinedMesh;\n if (args.meshSlug) {\n const found = config.meshes.find((m) => m.slug === args.meshSlug);\n if (!found) {\n console.error(\n `Mesh \"${args.meshSlug}\" not found. Joined: ${config.meshes.map((m) => m.slug).join(\", \")}`,\n );\n process.exit(1);\n }\n mesh = found;\n } else if (config.meshes.length === 1) {\n mesh = config.meshes[0]!;\n } else {\n // Multiple meshes — wizard will handle selection\n mesh = null as unknown as JoinedMesh; // set by wizard below\n }\n\n // 3. Session identity + role/groups via TUI wizard.\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n let role: string | null = args.role;\n let parsedGroups: GroupEntry[] = args.groups ? parseGroupsString(args.groups) : [];\n let messageMode: \"push\" | \"inbox\" | \"off\" = args.messageMode ?? \"push\";\n\n // `-y` (skipPermConfirm) implies fully non-interactive — skip the wizard\n // entirely and use sensible defaults (role=member, no groups, push mode).\n // Same applies to `--quiet` and the post-sync path where we already picked.\n const nonInteractive = args.quiet || justSynced || args.skipPermConfirm;\n if (!nonInteractive) {\n const wizardResult = await runLaunchWizard({\n displayName,\n meshes: config.meshes,\n selectedMesh: mesh ?? null,\n existingRole: args.role,\n existingGroups: parsedGroups,\n existingMessageMode: args.messageMode ?? null,\n skipPermConfirm: args.skipPermConfirm,\n });\n mesh = wizardResult.mesh;\n role = wizardResult.role;\n parsedGroups = wizardResult.groups;\n messageMode = wizardResult.messageMode;\n args.skipPermConfirm = wizardResult.skipPermissions;\n } else if (!mesh) {\n // No mesh picked yet + non-interactive — pick the first one deterministically.\n mesh = config.meshes[0]!;\n }\n\n // Clean up orphaned tmpdirs from crashed sessions (older than 1 hour)\n const tmpBase = tmpdir();\n try {\n for (const entry of readdirSync(tmpBase)) {\n if (!entry.startsWith(\"claudemesh-\")) continue;\n const full = join(tmpBase, entry);\n const age = Date.now() - statSync(full).mtimeMs;\n if (age > 3600_000) rmSync(full, { recursive: true, force: true });\n }\n } catch { /* best effort */ }\n\n // Clean up stale mesh MCP entries from crashed sessions\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n if (existsSync(claudeConfigPath)) {\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n let cleaned = 0;\n for (const key of Object.keys(mcpServers)) {\n if (!key.startsWith(\"mesh:\")) continue;\n const meta = mcpServers[key]?._meshSession;\n if (!meta?.pid) continue;\n // Check if the PID is still alive\n try {\n process.kill(meta.pid, 0); // signal 0 = check existence\n } catch {\n // PID is dead — remove stale entry\n delete mcpServers[key];\n cleaned++;\n }\n }\n if (cleaned > 0) {\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n }\n }\n } catch { /* best effort */ }\n\n // --- Fetch deployed services for native MCP entries ---\n let serviceCatalog: Array<{\n name: string;\n description: string;\n status: string;\n tools: Array<{ name: string; description: string; inputSchema: object }>;\n deployed_by: string;\n }> = [];\n\n try {\n const tmpClient = new BrokerClient(mesh, { displayName });\n await tmpClient.connect();\n // Wait briefly for hello_ack with service catalog\n await new Promise(r => setTimeout(r, 2000));\n serviceCatalog = tmpClient.serviceCatalog;\n tmpClient.close();\n } catch {\n // Non-fatal — launch without native service entries\n if (!args.quiet) {\n console.log(\" (Could not fetch service catalog — mesh services won't be natively available)\");\n }\n }\n\n // 4. Write session config to tmpdir (isolates mesh selection).\n const tmpDir = mkdtempSync(join(tmpdir(), \"claudemesh-\"));\n const sessionConfig: Config = {\n version: 1,\n meshes: [mesh],\n displayName,\n ...(role ? { role } : {}),\n ...(parsedGroups.length > 0 ? { groups: parsedGroups } : {}),\n messageMode,\n };\n writeFileSync(\n join(tmpDir, \"config.json\"),\n JSON.stringify(sessionConfig, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n // 5. Print summary banner (wizard already handled all interactive config).\n if (!args.quiet) {\n printBanner(displayName, mesh.slug, role, parsedGroups, messageMode);\n }\n\n // --- Install native MCP entries for deployed mesh services ---\n const meshMcpEntries: Array<{ key: string; entry: unknown }> = [];\n\n if (serviceCatalog.length > 0) {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n\n // Read-modify-write: only touch mesh:* entries in mcpServers\n let claudeConfig: Record<string, unknown> = {};\n try {\n claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n } catch {\n claudeConfig = {};\n }\n\n const mcpServers = (claudeConfig.mcpServers ?? {}) as Record<string, unknown>;\n\n // Session-scoped key: mesh:<service>:<sessionId>\n const sessionTag = `${process.pid}`;\n\n for (const svc of serviceCatalog) {\n if (svc.status !== \"running\") continue;\n const entryKey = `mesh:${svc.name}:${sessionTag}`;\n const entry = {\n command: \"claudemesh\",\n args: [\"mcp\", \"--service\", svc.name],\n env: {\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n },\n _meshSession: {\n pid: process.pid,\n meshSlug: mesh.slug,\n serviceName: svc.name,\n createdAt: new Date().toISOString(),\n },\n };\n mcpServers[entryKey] = entry;\n meshMcpEntries.push({ key: entryKey, entry });\n }\n\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n\n if (!args.quiet && meshMcpEntries.length > 0) {\n console.log(` ${meshMcpEntries.length} mesh service(s) registered as native MCPs:`);\n for (const { key } of meshMcpEntries) {\n const svcName = key.split(\":\")[1];\n const svc = serviceCatalog.find(s => s.name === svcName);\n console.log(` ${svcName} (${svc?.tools.length ?? 0} tools)`);\n }\n console.log(\"\");\n }\n }\n\n // 6. Spawn claude with ephemeral config + dev channel + auto-permissions.\n // Strip any user-supplied --dangerously flags to avoid duplicates.\n const filtered: string[] = [];\n for (let i = 0; i < args.claudeArgs.length; i++) {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\"\n || args.claudeArgs[i] === \"--dangerously-skip-permissions\") {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\") i++;\n continue;\n }\n filtered.push(args.claudeArgs[i]!);\n }\n // --dangerously-skip-permissions is only added when the user explicitly\n // passes -y / --yes. Without it, claudemesh tools still work because\n // `claudemesh install` pre-approves them via allowedTools in settings.json.\n // This keeps permissions tight for multi-person meshes.\n // Session identity: --resume reuses existing session, otherwise generate new.\n // When resuming, Claude Code reuses the session ID so the mesh peer identity persists.\n const isResume = args.resume !== null || args.continueSession;\n const claudeSessionId = isResume ? undefined : randomUUID();\n\n const claudeArgs = [\n \"--dangerously-load-development-channels\",\n \"server:claudemesh\",\n ...(claudeSessionId ? [\"--session-id\", claudeSessionId] : []),\n ...(args.resume ? [\"--resume\", args.resume] : []),\n ...(args.continueSession ? [\"--continue\"] : []),\n ...(args.skipPermConfirm ? [\"--dangerously-skip-permissions\"] : []),\n ...(args.systemPrompt ? [\"--system-prompt\", args.systemPrompt] : []),\n ...filtered,\n ];\n\n // Resolve the full path to `claude` — when launched from a non-interactive\n // shell (e.g. nvm node shebang), ~/.local/bin may not be in PATH.\n const isWindows = process.platform === \"win32\";\n let claudeBin = \"claude\";\n if (!isWindows) {\n const candidates = [\n join(homedir(), \".local\", \"bin\", \"claude\"),\n \"/usr/local/bin/claude\",\n join(homedir(), \".claude\", \"bin\", \"claude\"),\n ];\n for (const c of candidates) {\n if (existsSync(c)) { claudeBin = c; break; }\n }\n }\n\n // 7. Define cleanup — runs on every exit path via process.on('exit').\n // Synchronous-only (rmSync + writeFileSync) so it works inside the\n // 'exit' event, which does not allow async work.\n const cleanup = (): void => {\n // Remove mesh MCP entries from ~/.claude.json\n if (meshMcpEntries.length > 0) {\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n for (const { key } of meshMcpEntries) {\n delete mcpServers[key];\n }\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n } catch { /* best effort */ }\n }\n // Ephemeral config dir\n try {\n rmSync(tmpDir, { recursive: true, force: true });\n } catch { /* best effort */ }\n };\n\n // Register cleanup on every exit path — including normal exit, uncaught\n // throws, and fatal signals. process.on('exit') fires synchronously, which\n // is what the rmSync + writeFileSync above need.\n process.on(\"exit\", cleanup);\n\n // 8. Hard-reset the TTY before handing control to claude.\n //\n // Every interactive element in the pre-launch flow — the full-screen\n // wizard (tui/screen.ts), the permission confirmation, the callback-\n // listener paste prompt, the mesh picker — attaches listeners to\n // process.stdin, toggles raw mode, hides the cursor, and sometimes\n // enters the alt-screen. Those helpers do best-effort cleanup in their\n // own finally blocks, but any leak — an orphaned 'data' listener, a\n // still-raw TTY, a pending render paint — means the parent node process\n // keeps competing with claude's Ink TUI for the same keystrokes and\n // stdout frames. Symptoms: dropped keystrokes at the claude prompt, or\n // the wizard visibly repainting on top of claude after launch.\n //\n // Defensive reset here is cheap and guarantees a clean TTY regardless\n // of what the wizard helpers did or didn't restore.\n if (process.stdin.isTTY) {\n try { process.stdin.setRawMode(false); } catch { /* not a TTY under some parents */ }\n }\n process.stdin.removeAllListeners(\"data\");\n process.stdin.removeAllListeners(\"keypress\");\n process.stdin.removeAllListeners(\"readable\");\n process.stdin.pause();\n if (process.stdout.isTTY) {\n process.stdout.write(\"\\x1b[?25h\"); // show cursor\n process.stdout.write(\"\\x1b[?1049l\"); // exit alt-screen if any wizard step entered it\n }\n\n // 9. Block-and-wait on claude with spawnSync.\n //\n // Why spawnSync instead of spawn + child.on('exit'):\n // - spawn keeps the parent node event loop running alongside claude.\n // Any stray listener, setImmediate, or async wizard tail-end can\n // still fire during claude's lifetime, stealing input or painting\n // over claude's TUI.\n // - spawnSync blocks the parent event loop completely until claude\n // exits. No listeners fire. Nothing paints. The parent is effectively\n // suspended, and claude has exclusive ownership of the TTY.\n //\n // Signal forwarding: claude inherits the TTY process group via\n // stdio: \"inherit\". When the user hits Ctrl-C, the terminal sends\n // SIGINT to the whole group. Claude handles it (Ink unmounts, exits\n // cleanly); spawnSync returns with result.signal='SIGINT'. We re-raise\n // the same signal on the parent so it dies the same way.\n const result = spawnSync(claudeBin, claudeArgs, {\n stdio: \"inherit\",\n shell: isWindows,\n env: {\n ...process.env,\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n CLAUDEMESH_DISPLAY_NAME: displayName,\n ...(claudeSessionId ? { CLAUDEMESH_SESSION_ID: claudeSessionId } : {}),\n MCP_TIMEOUT: process.env.MCP_TIMEOUT ?? \"30000\",\n MAX_MCP_OUTPUT_TOKENS: process.env.MAX_MCP_OUTPUT_TOKENS ?? \"50000\",\n ...(role ? { CLAUDEMESH_ROLE: role } : {}),\n },\n });\n\n // 10. Handle the result. Cleanup runs automatically via process.on('exit').\n if (result.error) {\n const err = result.error as NodeJS.ErrnoException;\n if (err.code === \"ENOENT\") {\n console.error(\"✗ `claude` not found on PATH. Install Claude Code first.\");\n } else {\n console.error(`✗ failed to launch claude: ${err.message}`);\n }\n process.exit(1);\n }\n\n if (result.signal) {\n // Re-raise the same signal so the parent dies the same way the child did.\n process.kill(process.pid, result.signal);\n return;\n }\n\n process.exit(result.status ?? 0);\n}\n",
|
|
47
|
+
"// @ts-nocheck — v1 port, runtime-tested\n/**\n * `claudemesh launch` — spawn `claude` with peer mesh identity.\n *\n * Flags are defined in index.ts (citty command) — that is the source of\n * truth. This file receives already-parsed flags and rawArgs.\n *\n * Flow:\n * 1. Receive parsed flags from citty + rawArgs for -- passthrough\n * 2. If --join: run join flow first\n * 3. Load config → pick mesh (auto if 1, interactive picker if >1)\n * 4. Write per-session config to tmpdir (isolates mesh selection)\n * 5. Spawn claude with CLAUDEMESH_CONFIG_DIR + CLAUDEMESH_DISPLAY_NAME\n * 6. On exit: cleanup tmpdir\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { mkdtempSync, writeFileSync, rmSync, readdirSync, statSync, existsSync, readFileSync } from \"node:fs\";\nimport { tmpdir, hostname, homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport type { Config, JoinedMesh, GroupEntry } from \"~/services/config/facade.js\";\nimport { startCallbackListener, generatePairingCode } from \"~/services/auth/facade.js\";\nimport { openBrowser } from \"~/services/spawn/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\n\n// Flags as parsed by citty (index.ts is the source of truth for definitions).\nexport interface LaunchFlags {\n name?: string;\n role?: string;\n groups?: string;\n join?: string;\n mesh?: string;\n \"message-mode\"?: string;\n \"system-prompt\"?: string;\n resume?: string;\n continue?: boolean;\n yes?: boolean;\n quiet?: boolean;\n}\n\n// --- Interactive mesh picker ---\n\nasync function pickMesh(meshes: JoinedMesh[]): Promise<JoinedMesh> {\n if (meshes.length === 1) return meshes[0]!;\n\n console.log(\"\\n Select mesh:\");\n meshes.forEach((m, i) => {\n console.log(` ${i + 1}) ${m.slug}`);\n });\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\" Choice [1]: \", (answer) => {\n rl.close();\n const idx = parseInt(answer || \"1\", 10) - 1;\n if (idx >= 0 && idx < meshes.length) {\n resolve(meshes[idx]!);\n } else {\n console.error(\" Invalid choice, using first mesh.\");\n resolve(meshes[0]!);\n }\n });\n });\n}\n\n// --- Group string parser ---\n\n/** Parse \"frontend:lead,reviewers:member,all\" → GroupEntry[] */\nfunction parseGroupsString(raw: string): GroupEntry[] {\n return raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean)\n .map((token) => {\n const idx = token.indexOf(\":\");\n if (idx === -1) return { name: token };\n return { name: token.slice(0, idx), role: token.slice(idx + 1) };\n });\n}\n\n// --- Interactive role/groups prompts ---\n\nfunction askLine(prompt: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(prompt, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\n// --- Permission confirmation ---\n\nasync function confirmPermissions(): Promise<void> {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const yellow = (s: string): string => (useColor ? `\\x1b[33m${s}\\x1b[39m` : s);\n\n console.log(yellow(bold(\" Autonomous mode\")));\n console.log(\"\");\n console.log(\" Claude will run with --dangerously-skip-permissions, bypassing\");\n console.log(\" ALL permission prompts — not just claudemesh tools.\");\n console.log(\" Peers exchange text only — no file access, no tool calls.\");\n console.log(\"\");\n console.log(dim(\" Without -y: only claudemesh tools are pre-approved (via allowedTools).\"));\n console.log(dim(\" Use -y for autonomous agents. Omit it for shared/multi-person meshes.\"));\n console.log(\"\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve, reject) => {\n rl.question(` ${bold(\"Continue?\")} [Y/n] `, (answer) => {\n rl.close();\n const a = answer.trim().toLowerCase();\n if (a === \"\" || a === \"y\" || a === \"yes\") {\n resolve();\n } else {\n console.log(\"\\n Aborted. Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n });\n });\n}\n\n// --- Banner ---\n\nimport {\n bold as tBold, dim as tDim, green as tGreen, orange as tOrange,\n boldOrange, HIDE_CURSOR, SHOW_CURSOR,\n} from \"~/ui/styles.js\";\nimport {\n enterFullScreen, exitFullScreen, writeCentered, termSize,\n drawTopBar, drawBottomBar, menuSelect, textInput, confirmPrompt,\n} from \"~/ui/screen.js\";\nimport { createSpinner, FRAME_HEIGHT } from \"~/ui/spinner.js\";\n\ninterface LaunchWizardResult {\n mesh: JoinedMesh;\n role: string | null;\n groups: GroupEntry[];\n messageMode: \"push\" | \"inbox\" | \"off\";\n skipPermissions: boolean;\n}\n\n/**\n * Full-screen launch wizard — spinning logo + interactive config.\n * Mesh selection, role, groups, message mode, permissions — all in one TUI.\n * Falls back to plain text on non-TTY.\n */\nasync function runLaunchWizard(opts: {\n displayName: string;\n meshes: JoinedMesh[];\n selectedMesh: JoinedMesh | null;\n existingRole: string | null;\n existingGroups: GroupEntry[];\n existingMessageMode: \"push\" | \"inbox\" | \"off\" | null;\n skipPermConfirm: boolean;\n}): Promise<LaunchWizardResult> {\n if (!process.stdout.isTTY) {\n return {\n mesh: opts.selectedMesh ?? opts.meshes[0]!,\n role: opts.existingRole,\n groups: opts.existingGroups,\n messageMode: opts.existingMessageMode ?? \"push\",\n skipPermissions: opts.skipPermConfirm,\n };\n }\n\n const { rows } = termSize();\n enterFullScreen();\n drawTopBar();\n\n // Spinning logo centered in upper portion\n const logoTop = Math.floor((rows - FRAME_HEIGHT - 16) / 2);\n const brandRow = logoTop + FRAME_HEIGHT + 1;\n const subtitleRow = brandRow + 1;\n const formRow = subtitleRow + 2;\n\n writeCentered(brandRow, boldOrange(\"claudemesh\"));\n writeCentered(subtitleRow, tDim(\"peer mesh for Claude Code\"));\n\n const spinner = createSpinner({\n render(lines) {\n for (let i = 0; i < lines.length; i++) {\n writeCentered(logoTop + i, lines[i]!);\n }\n },\n interval: 70,\n });\n spinner.start();\n\n // Show detected info\n let row = formRow;\n writeCentered(row, `Directory ${tGreen(\"✓\")} ${process.cwd()}`);\n row++;\n writeCentered(row, `Name ${tGreen(\"✓\")} ${opts.displayName}`);\n row += 2;\n\n // Mesh selection\n let mesh: JoinedMesh;\n if (opts.selectedMesh) {\n mesh = opts.selectedMesh;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else if (opts.meshes.length === 1) {\n mesh = opts.meshes[0]!;\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n row++;\n } else {\n spinner.stop();\n const choice = await menuSelect({\n title: \"Select mesh\",\n items: opts.meshes.map(m => m.slug),\n row,\n });\n mesh = opts.meshes[choice]!;\n // Redraw as confirmed\n for (let i = 0; i < opts.meshes.length + 1; i++) {\n writeCentered(row + i, \" \");\n }\n writeCentered(row, `Mesh ${tGreen(\"✓\")} ${mesh.slug}`);\n spinner.start();\n row++;\n }\n\n row++;\n\n // Interactive fields\n let role = opts.existingRole;\n let groups = opts.existingGroups;\n let messageMode = opts.existingMessageMode ?? \"push\" as \"push\" | \"inbox\" | \"off\";\n\n // Role input\n if (role === null) {\n spinner.stop();\n const answer = await textInput({ label: \"Role\", row, placeholder: \"optional — press Enter to skip\" });\n if (answer) role = answer;\n spinner.start();\n row++;\n } else {\n writeCentered(row, `Role ${tGreen(\"✓\")} ${role}`);\n row++;\n }\n\n // Groups input\n if (groups.length === 0) {\n spinner.stop();\n const answer = await textInput({ label: \"Groups\", row, placeholder: \"comma-separated, optional\" });\n if (answer) groups = parseGroupsString(answer);\n spinner.start();\n row++;\n } else {\n const tags = groups.map(g => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \");\n writeCentered(row, `Groups ${tGreen(\"✓\")} ${tags}`);\n row++;\n }\n\n // Message mode selection\n if (opts.existingMessageMode === null) {\n row++;\n spinner.stop();\n const choice = await menuSelect({\n title: \"Message mode\",\n items: [\n \"Push (real-time, peers can interrupt)\",\n \"Inbox (held until you check)\",\n \"Off (tools only, no messages)\",\n ],\n row,\n });\n messageMode = ([\"push\", \"inbox\", \"off\"] as const)[choice];\n spinner.start();\n row += 5;\n } else {\n writeCentered(row, `Messages ${tGreen(\"✓\")} ${messageMode}`);\n row++;\n }\n\n // Permissions confirmation\n let skipPermissions = opts.skipPermConfirm;\n if (!skipPermissions) {\n row++;\n spinner.stop();\n writeCentered(row, tDim(\"Claude will run with --dangerously-skip-permissions,\"));\n writeCentered(row + 1, tDim(\"bypassing ALL permission prompts — not just claudemesh.\"));\n row += 3;\n const confirmed = await confirmPrompt({\n message: boldOrange(\"Autonomous mode?\"),\n row,\n defaultYes: true,\n });\n if (!confirmed) {\n exitFullScreen();\n console.log(\" Run without autonomous mode:\");\n console.log(\" claude --dangerously-load-development-channels server:claudemesh\\n\");\n process.exit(0);\n }\n skipPermissions = true;\n spinner.start();\n }\n\n // Final animation\n row += 2;\n writeCentered(row, tDim(\"Launching Claude Code...\"));\n\n await new Promise(r => setTimeout(r, 800));\n spinner.stop();\n exitFullScreen();\n\n return { mesh, role, groups, messageMode, skipPermissions };\n}\n\nfunction printBanner(name: string, meshSlug: string, role: string | null, groups: GroupEntry[], messageMode: \"push\" | \"inbox\" | \"off\"): void {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n\n const roleSuffix = role ? ` (${role})` : \"\";\n const groupTags = groups.length\n ? \" [\" + groups.map((g) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`).join(\", \") + \"]\"\n : \"\";\n\n const rule = \"─\".repeat(60);\n console.log(bold(`claudemesh launch`) + dim(` — as ${name}${roleSuffix} on ${meshSlug}${groupTags} [${messageMode}]`));\n console.log(rule);\n if (messageMode === \"push\") {\n console.log(\"Peer messages arrive as <channel> reminders in real-time.\");\n } else if (messageMode === \"inbox\") {\n console.log(\"Peer messages held in inbox. Use check_messages to read.\");\n } else {\n console.log(\"Messages off. Use check_messages to poll manually.\");\n }\n console.log(\"Peers send text only — they cannot call tools or read files.\");\n console.log(dim(`Config: ${getConfigPath()}`));\n console.log(rule);\n console.log(\"\");\n}\n\n// --- Main ---\n\nexport async function runLaunch(flags: LaunchFlags, rawArgs: string[]): Promise<void> {\n // Extract args that follow \"--\" — passed straight through to claude.\n const dashIdx = rawArgs.indexOf(\"--\");\n const claudePassthrough = dashIdx >= 0 ? rawArgs.slice(dashIdx + 1) : [];\n\n // Normalise flags into the internal shape used below.\n const args = {\n name: flags.name ?? null,\n role: flags.role ?? null,\n groups: flags.groups ?? null,\n joinLink: flags.join ?? null,\n meshSlug: flags.mesh ?? null,\n messageMode: ([\"push\", \"inbox\", \"off\"].includes(flags[\"message-mode\"] ?? \"\")\n ? flags[\"message-mode\"] as \"push\" | \"inbox\" | \"off\"\n : null),\n systemPrompt: flags[\"system-prompt\"] ?? null,\n resume: flags.resume ?? null,\n continueSession: flags.continue ?? false,\n quiet: flags.quiet ?? false,\n skipPermConfirm: flags.yes ?? false,\n claudeArgs: claudePassthrough,\n };\n\n // 1. If --join, run join flow first.\n if (args.joinLink) {\n render.info(tDim(\"Joining mesh…\"));\n const invite = await parseInviteLink(args.joinLink);\n const keypair = await generateKeypair();\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n const enroll = await enrollWithBroker({\n brokerWsUrl: invite.payload.broker_url,\n inviteToken: invite.token,\n invitePayload: invite.payload,\n peerPubkey: keypair.publicKey,\n displayName,\n });\n const config = readConfig();\n config.meshes = config.meshes.filter(\n (m) => m.slug !== invite.payload.mesh_slug,\n );\n config.meshes.push({\n meshId: invite.payload.mesh_id,\n memberId: enroll.memberId,\n slug: invite.payload.mesh_slug,\n name: invite.payload.mesh_slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: invite.payload.broker_url,\n joinedAt: new Date().toISOString(),\n });\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n writeConfig(config);\n render.ok(\n `joined ${tBold(invite.payload.mesh_slug)}`,\n enroll.alreadyMember ? \"already member\" : undefined,\n );\n }\n\n // 2. Load config, pick mesh.\n const config = readConfig();\n let justSynced = false;\n\n if (config.meshes.length === 0 && !args.joinLink) {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string): string => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n\n const code = generatePairingCode();\n const listener = await startCallbackListener();\n const url = `https://claudemesh.com/cli-auth?port=${listener.port}&code=${code}&action=sync`;\n\n console.log(`\\n ${bold(\"Welcome to claudemesh!\")} No meshes found.`);\n console.log(` Opening browser to sign in...\\n`);\n\n const opened = await openBrowser(url);\n if (!opened) {\n console.log(` Couldn't open browser automatically.`);\n }\n console.log(` ${dim(`Visit: ${url}`)}`);\n console.log(` ${dim(`Or join with invite: claudemesh launch --join <url>`)}\\n`);\n\n // Race: localhost callback vs manual paste vs timeout\n const manualPromise = new Promise<string>((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n rl.question(\" Paste sync token (or wait for browser): \", (answer) => {\n rl.close();\n if (answer.trim()) resolve(answer.trim());\n });\n });\n\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 15 * 60_000);\n });\n\n const syncToken = await Promise.race([\n listener.token,\n manualPromise,\n timeoutPromise,\n ]);\n\n listener.close();\n\n if (!syncToken) {\n console.error(\"\\n Timed out waiting for sign-in.\");\n process.exit(1);\n }\n\n // Generate keypair and sync with broker\n const { generateKeypair } = await import(\"~/services/crypto/facade.js\");\n const keypair = await generateKeypair();\n const displayNameForSync = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n const { syncWithBroker } = await import(\"~/services/auth/facade.js\");\n const result = await syncWithBroker(syncToken, keypair.publicKey, displayNameForSync);\n\n // Write all meshes to config\n const { writeConfig } = await import(\"~/services/config/facade.js\");\n for (const m of result.meshes) {\n config.meshes.push({\n meshId: m.mesh_id,\n memberId: m.member_id,\n slug: m.slug,\n name: m.slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: m.broker_url,\n joinedAt: new Date().toISOString(),\n });\n }\n config.accountId = result.account_id;\n writeConfig(config);\n justSynced = true;\n\n console.log(`\\n ${green(\"✓\")} Synced ${result.meshes.length} mesh(es): ${result.meshes.map(m => m.slug).join(\", \")}\\n`);\n }\n\n if (config.meshes.length === 0) {\n render.err(\"No meshes joined.\", \"Run `claudemesh join <url>` or use --join <url>.\");\n process.exit(1);\n }\n\n // Resolve mesh — by flag, auto (if 1), or defer to wizard (if >1)\n let mesh: JoinedMesh;\n if (args.meshSlug) {\n const found = config.meshes.find((m) => m.slug === args.meshSlug);\n if (!found) {\n render.err(\n `Mesh \"${args.meshSlug}\" not found.`,\n `Joined: ${config.meshes.map((m) => m.slug).join(\", \")}`,\n );\n process.exit(1);\n }\n mesh = found;\n } else if (config.meshes.length === 1) {\n mesh = config.meshes[0]!;\n } else {\n // Multiple meshes — wizard will handle selection\n mesh = null as unknown as JoinedMesh; // set by wizard below\n }\n\n // 3. Session identity + role/groups via TUI wizard.\n const displayName = (args.name ?? process.env.USER ?? process.env.USERNAME ?? hostname());\n\n let role: string | null = args.role;\n let parsedGroups: GroupEntry[] = args.groups ? parseGroupsString(args.groups) : [];\n let messageMode: \"push\" | \"inbox\" | \"off\" = args.messageMode ?? \"push\";\n\n // `-y` (skipPermConfirm) implies fully non-interactive — skip the wizard\n // entirely and use sensible defaults (role=member, no groups, push mode).\n // Same applies to `--quiet` and the post-sync path where we already picked.\n const nonInteractive = args.quiet || justSynced || args.skipPermConfirm;\n if (!nonInteractive) {\n const wizardResult = await runLaunchWizard({\n displayName,\n meshes: config.meshes,\n selectedMesh: mesh ?? null,\n existingRole: args.role,\n existingGroups: parsedGroups,\n existingMessageMode: args.messageMode ?? null,\n skipPermConfirm: args.skipPermConfirm,\n });\n mesh = wizardResult.mesh;\n role = wizardResult.role;\n parsedGroups = wizardResult.groups;\n messageMode = wizardResult.messageMode;\n args.skipPermConfirm = wizardResult.skipPermissions;\n } else if (!mesh) {\n // No mesh picked yet + non-interactive — pick the first one deterministically.\n mesh = config.meshes[0]!;\n }\n\n // Clean up orphaned tmpdirs from crashed sessions (older than 1 hour)\n const tmpBase = tmpdir();\n try {\n for (const entry of readdirSync(tmpBase)) {\n if (!entry.startsWith(\"claudemesh-\")) continue;\n const full = join(tmpBase, entry);\n const age = Date.now() - statSync(full).mtimeMs;\n if (age > 3600_000) rmSync(full, { recursive: true, force: true });\n }\n } catch { /* best effort */ }\n\n // Clean up stale mesh MCP entries from crashed sessions\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n if (existsSync(claudeConfigPath)) {\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n let cleaned = 0;\n for (const key of Object.keys(mcpServers)) {\n if (!key.startsWith(\"mesh:\")) continue;\n const meta = mcpServers[key]?._meshSession;\n if (!meta?.pid) continue;\n // Check if the PID is still alive\n try {\n process.kill(meta.pid, 0); // signal 0 = check existence\n } catch {\n // PID is dead — remove stale entry\n delete mcpServers[key];\n cleaned++;\n }\n }\n if (cleaned > 0) {\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n }\n }\n } catch { /* best effort */ }\n\n // --- Fetch deployed services for native MCP entries ---\n let serviceCatalog: Array<{\n name: string;\n description: string;\n status: string;\n tools: Array<{ name: string; description: string; inputSchema: object }>;\n deployed_by: string;\n }> = [];\n\n try {\n const tmpClient = new BrokerClient(mesh, { displayName });\n await tmpClient.connect();\n // Wait briefly for hello_ack with service catalog\n await new Promise(r => setTimeout(r, 2000));\n serviceCatalog = tmpClient.serviceCatalog;\n tmpClient.close();\n } catch {\n // Non-fatal — launch without native service entries\n if (!args.quiet) {\n console.log(\" (Could not fetch service catalog — mesh services won't be natively available)\");\n }\n }\n\n // 4. Write session config to tmpdir (isolates mesh selection).\n const tmpDir = mkdtempSync(join(tmpdir(), \"claudemesh-\"));\n const sessionConfig: Config = {\n version: 1,\n meshes: [mesh],\n displayName,\n ...(role ? { role } : {}),\n ...(parsedGroups.length > 0 ? { groups: parsedGroups } : {}),\n messageMode,\n };\n writeFileSync(\n join(tmpDir, \"config.json\"),\n JSON.stringify(sessionConfig, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n // 5. Print summary banner (wizard already handled all interactive config).\n if (!args.quiet) {\n printBanner(displayName, mesh.slug, role, parsedGroups, messageMode);\n }\n\n // --- Install native MCP entries for deployed mesh services ---\n const meshMcpEntries: Array<{ key: string; entry: unknown }> = [];\n\n if (serviceCatalog.length > 0) {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n\n // Read-modify-write: only touch mesh:* entries in mcpServers\n let claudeConfig: Record<string, unknown> = {};\n try {\n claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n } catch {\n claudeConfig = {};\n }\n\n const mcpServers = (claudeConfig.mcpServers ?? {}) as Record<string, unknown>;\n\n // Session-scoped key: mesh:<service>:<sessionId>\n const sessionTag = `${process.pid}`;\n\n for (const svc of serviceCatalog) {\n if (svc.status !== \"running\") continue;\n const entryKey = `mesh:${svc.name}:${sessionTag}`;\n const entry = {\n command: \"claudemesh\",\n args: [\"mcp\", \"--service\", svc.name],\n env: {\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n },\n _meshSession: {\n pid: process.pid,\n meshSlug: mesh.slug,\n serviceName: svc.name,\n createdAt: new Date().toISOString(),\n },\n };\n mcpServers[entryKey] = entry;\n meshMcpEntries.push({ key: entryKey, entry });\n }\n\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n\n if (!args.quiet && meshMcpEntries.length > 0) {\n console.log(` ${meshMcpEntries.length} mesh service(s) registered as native MCPs:`);\n for (const { key } of meshMcpEntries) {\n const svcName = key.split(\":\")[1];\n const svc = serviceCatalog.find(s => s.name === svcName);\n console.log(` ${svcName} (${svc?.tools.length ?? 0} tools)`);\n }\n console.log(\"\");\n }\n }\n\n // 6. Spawn claude with ephemeral config + dev channel + auto-permissions.\n // Strip any user-supplied --dangerously flags to avoid duplicates.\n const filtered: string[] = [];\n for (let i = 0; i < args.claudeArgs.length; i++) {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\"\n || args.claudeArgs[i] === \"--dangerously-skip-permissions\") {\n if (args.claudeArgs[i] === \"--dangerously-load-development-channels\") i++;\n continue;\n }\n filtered.push(args.claudeArgs[i]!);\n }\n // --dangerously-skip-permissions is only added when the user explicitly\n // passes -y / --yes. Without it, claudemesh tools still work because\n // `claudemesh install` pre-approves them via allowedTools in settings.json.\n // This keeps permissions tight for multi-person meshes.\n // Session identity: --resume reuses existing session, otherwise generate new.\n // When resuming, Claude Code reuses the session ID so the mesh peer identity persists.\n const isResume = args.resume !== null || args.continueSession;\n const claudeSessionId = isResume ? undefined : randomUUID();\n\n const claudeArgs = [\n \"--dangerously-load-development-channels\",\n \"server:claudemesh\",\n ...(claudeSessionId ? [\"--session-id\", claudeSessionId] : []),\n ...(args.resume ? [\"--resume\", args.resume] : []),\n ...(args.continueSession ? [\"--continue\"] : []),\n ...(args.skipPermConfirm ? [\"--dangerously-skip-permissions\"] : []),\n ...(args.systemPrompt ? [\"--system-prompt\", args.systemPrompt] : []),\n ...filtered,\n ];\n\n // Resolve the full path to `claude` — when launched from a non-interactive\n // shell (e.g. nvm node shebang), ~/.local/bin may not be in PATH.\n const isWindows = process.platform === \"win32\";\n let claudeBin = \"claude\";\n if (!isWindows) {\n const candidates = [\n join(homedir(), \".local\", \"bin\", \"claude\"),\n \"/usr/local/bin/claude\",\n join(homedir(), \".claude\", \"bin\", \"claude\"),\n ];\n for (const c of candidates) {\n if (existsSync(c)) { claudeBin = c; break; }\n }\n }\n\n // 7. Define cleanup — runs on every exit path via process.on('exit').\n // Synchronous-only (rmSync + writeFileSync) so it works inside the\n // 'exit' event, which does not allow async work.\n const cleanup = (): void => {\n // Remove mesh MCP entries from ~/.claude.json\n if (meshMcpEntries.length > 0) {\n try {\n const claudeConfigPath = join(homedir(), \".claude.json\");\n const claudeConfig = JSON.parse(readFileSync(claudeConfigPath, \"utf-8\"));\n const mcpServers = claudeConfig.mcpServers ?? {};\n for (const { key } of meshMcpEntries) {\n delete mcpServers[key];\n }\n claudeConfig.mcpServers = mcpServers;\n writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2) + \"\\n\", \"utf-8\");\n } catch { /* best effort */ }\n }\n // Ephemeral config dir\n try {\n rmSync(tmpDir, { recursive: true, force: true });\n } catch { /* best effort */ }\n };\n\n // Register cleanup on every exit path — including normal exit, uncaught\n // throws, and fatal signals. process.on('exit') fires synchronously, which\n // is what the rmSync + writeFileSync above need.\n process.on(\"exit\", cleanup);\n\n // 8. Hard-reset the TTY before handing control to claude.\n //\n // Every interactive element in the pre-launch flow — the full-screen\n // wizard (tui/screen.ts), the permission confirmation, the callback-\n // listener paste prompt, the mesh picker — attaches listeners to\n // process.stdin, toggles raw mode, hides the cursor, and sometimes\n // enters the alt-screen. Those helpers do best-effort cleanup in their\n // own finally blocks, but any leak — an orphaned 'data' listener, a\n // still-raw TTY, a pending render paint — means the parent node process\n // keeps competing with claude's Ink TUI for the same keystrokes and\n // stdout frames. Symptoms: dropped keystrokes at the claude prompt, or\n // the wizard visibly repainting on top of claude after launch.\n //\n // Defensive reset here is cheap and guarantees a clean TTY regardless\n // of what the wizard helpers did or didn't restore.\n if (process.stdin.isTTY) {\n try { process.stdin.setRawMode(false); } catch { /* not a TTY under some parents */ }\n }\n process.stdin.removeAllListeners(\"data\");\n process.stdin.removeAllListeners(\"keypress\");\n process.stdin.removeAllListeners(\"readable\");\n process.stdin.pause();\n if (process.stdout.isTTY) {\n process.stdout.write(\"\\x1b[?25h\"); // show cursor\n process.stdout.write(\"\\x1b[?1049l\"); // exit alt-screen if any wizard step entered it\n }\n\n // 9. Block-and-wait on claude with spawnSync.\n //\n // Why spawnSync instead of spawn + child.on('exit'):\n // - spawn keeps the parent node event loop running alongside claude.\n // Any stray listener, setImmediate, or async wizard tail-end can\n // still fire during claude's lifetime, stealing input or painting\n // over claude's TUI.\n // - spawnSync blocks the parent event loop completely until claude\n // exits. No listeners fire. Nothing paints. The parent is effectively\n // suspended, and claude has exclusive ownership of the TTY.\n //\n // Signal forwarding: claude inherits the TTY process group via\n // stdio: \"inherit\". When the user hits Ctrl-C, the terminal sends\n // SIGINT to the whole group. Claude handles it (Ink unmounts, exits\n // cleanly); spawnSync returns with result.signal='SIGINT'. We re-raise\n // the same signal on the parent so it dies the same way.\n const result = spawnSync(claudeBin, claudeArgs, {\n stdio: \"inherit\",\n shell: isWindows,\n env: {\n ...process.env,\n CLAUDEMESH_CONFIG_DIR: tmpDir,\n CLAUDEMESH_DISPLAY_NAME: displayName,\n ...(claudeSessionId ? { CLAUDEMESH_SESSION_ID: claudeSessionId } : {}),\n MCP_TIMEOUT: process.env.MCP_TIMEOUT ?? \"30000\",\n MAX_MCP_OUTPUT_TOKENS: process.env.MAX_MCP_OUTPUT_TOKENS ?? \"50000\",\n ...(role ? { CLAUDEMESH_ROLE: role } : {}),\n },\n });\n\n // 10. Handle the result. Cleanup runs automatically via process.on('exit').\n if (result.error) {\n const err = result.error as NodeJS.ErrnoException;\n if (err.code === \"ENOENT\") {\n render.err(\"`claude` not found on PATH.\", \"Install Claude Code first.\");\n } else {\n render.err(`failed to launch claude: ${err.message}`);\n }\n process.exit(1);\n }\n\n if (result.signal) {\n // Re-raise the same signal so the parent dies the same way the child did.\n process.kill(process.pid, result.signal);\n return;\n }\n\n process.exit(result.status ?? 0);\n}\n",
|
|
47
48
|
"import { bold, green, dim, orange, icons } from \"../styles.js\";\n\nexport function renderWelcome(): void {\n console.log(\"\");\n console.log(\" \" + orange(\"Welcome to claudemesh\"));\n console.log(\" \" + dim(\"Peer mesh for Claude Code sessions\"));\n console.log(\"\");\n console.log(\" What would you like to do?\");\n console.log(\"\");\n console.log(\" \" + bold(\"1)\") + \" \" + green(\"Register\") + \" a new account\");\n console.log(\" \" + bold(\"2)\") + \" \" + green(\"Login\") + \" to an existing account\");\n console.log(\" \" + bold(\"3)\") + \" \" + green(\"Join\") + \" a mesh from an invite link\");\n console.log(\" \" + bold(\"4)\") + \" Exit\");\n console.log(\"\");\n}\n",
|
|
48
49
|
"import type { JoinedMesh } from \"~/services/config/facade.js\";\nimport { bold, dim } from \"../styles.js\";\n\nexport function renderMeshPicker(meshes: JoinedMesh[]): void {\n console.log(\"\\n Select a mesh:\\n\");\n meshes.forEach((m, i) => {\n console.log(\" \" + bold((i + 1) + \")\") + \" \" + m.slug + \" \" + dim(\"(\" + m.name + \")\"));\n });\n console.log(\"\");\n}\n",
|
|
49
50
|
"export { renderWelcome } from \"./WelcomeScreen.js\";\nexport { renderRegisterStep } from \"./RegisterStep.js\";\nexport { renderLoginStep } from \"./LoginStep.js\";\nexport { renderMeshPicker } from \"./MeshPickerStep.js\";\n",
|
|
50
|
-
"import { createInterface } from \"node:readline\";\nimport { loginWithDeviceCode, getStoredToken, clearToken, storeToken } from \"~/services/auth/facade.js\";\nimport { my } from \"~/services/api/facade.js\";\nimport {
|
|
51
|
-
"/**\n * Unified renderer — every command emits its output through this module\n * so the palette, spacing, and icons stay consistent across the CLI.\n *\n * Design: narrow API (ok / warn / err / info / section / kv / code / link)\n * over a single source of styles. No rogue `console.log` color codes.\n * Matches the web's claudemesh brand: clay accent (#d97757 → xterm 173),\n * dim gray for meta, serif-less mono for kv tables.\n */\n\nimport { clay, dim, bold, green, red, yellow, cyan, icons } from \"./styles.js\";\n\nconst OUT = process.stdout;\nconst ERR = process.stderr;\n\n/** Leading 2-space indent is the house style — matches share/invite output. */\nconst INDENT = \" \";\n\nexport const render = {\n blank(): void {\n OUT.write(\"\\n\");\n },\n\n ok(msg: string, detail?: string): void {\n const d = detail ? ` ${dim(\"(\" + detail + \")\")}` : \"\";\n OUT.write(`${INDENT}${green(icons.check)} ${msg}${d}\\n`);\n },\n\n warn(msg: string, hint?: string): void {\n OUT.write(`${INDENT}${yellow(icons.warn)} ${msg}\\n`);\n if (hint) OUT.write(`${INDENT} ${dim(hint)}\\n`);\n },\n\n err(msg: string, hint?: string): void {\n ERR.write(`${INDENT}${red(icons.cross)} ${msg}\\n`);\n if (hint) ERR.write(`${INDENT} ${dim(hint)}\\n`);\n },\n\n info(msg: string): void {\n OUT.write(`${INDENT}${msg}\\n`);\n },\n\n /** Brand-colored section header with em-dash eyebrow. */\n section(title: string): void {\n OUT.write(`\\n${INDENT}${dim(\"—\")} ${clay(title)}\\n\\n`);\n },\n\n /** Labelled heading in bold. Use when you want a weight break. */\n heading(title: string): void {\n OUT.write(`${INDENT}${bold(title)}\\n`);\n },\n\n /** Key/value pair — keys right-padded to align. */\n kv(pairs: Array<[label: string, value: string]>, opts?: { padTo?: number }): void {\n const pad = opts?.padTo ?? Math.max(...pairs.map(([k]) => k.length)) + 2;\n for (const [k, v] of pairs) {\n OUT.write(`${INDENT}${dim(k.padEnd(pad, \" \"))}${v}\\n`);\n }\n },\n\n /** Code block (dim background by default terminal), 4-space indent. */\n code(snippet: string): void {\n for (const line of snippet.split(\"\\n\")) {\n OUT.write(`${INDENT} ${cyan(line)}\\n`);\n }\n },\n\n /** Clickable link in modern terminals (OSC 8). Falls back to plain URL. */\n link(url: string): void {\n OUT.write(`${INDENT}${clay(url)}\\n`);\n },\n\n /** Hint line — dim + leading arrow. Used after a failure for remediation. */\n hint(msg: string): void {\n OUT.write(`${INDENT}${dim(icons.arrow + \" \" + msg)}\\n`);\n },\n};\n\n/** Return JSON suitable for `--json` flags. Zero styling, schema-versioned. */\nexport function jsonOut<T>(payload: T, schemaVersion = \"1.0\"): void {\n OUT.write(JSON.stringify({ schema_version: schemaVersion, ...payload }, null, 2));\n OUT.write(\"\\n\");\n}\n",
|
|
51
|
+
"import { createInterface } from \"node:readline\";\nimport { loginWithDeviceCode, getStoredToken, clearToken, storeToken } from \"~/services/auth/facade.js\";\nimport { my } from \"~/services/api/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { URLS } from \"~/constants/urls.js\";\n\nfunction prompt(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(question, (answer) => { rl.close(); resolve(answer.trim()); });\n });\n}\n\nasync function loginWithToken(): Promise<number> {\n render.blank();\n render.info(`Paste a token from ${dim(URLS.API_BASE + \"/token\")}`);\n render.info(dim(\"Generate one in your browser, then paste it here.\"));\n render.blank();\n\n const token = await prompt(\" Token: \");\n if (!token) {\n render.err(\"No token provided.\");\n return EXIT.AUTH_FAILED;\n }\n\n let user = { id: \"\", display_name: \"\", email: \"\" };\n try {\n const parts = token.split(\".\");\n if (parts[1]) {\n const payload = JSON.parse(Buffer.from(parts[1], \"base64url\").toString()) as {\n sub?: string; email?: string; name?: string; exp?: number;\n };\n if (payload.exp && payload.exp < Date.now() / 1000) {\n render.err(\"Token expired.\", \"Generate a new one.\");\n return EXIT.AUTH_FAILED;\n }\n user = {\n id: payload.sub ?? \"\",\n display_name: payload.name ?? payload.email ?? \"\",\n email: payload.email ?? \"\",\n };\n }\n } catch {\n render.err(\"Invalid token format.\");\n return EXIT.AUTH_FAILED;\n }\n\n storeToken({ session_token: token, user, token_source: \"manual\" });\n render.ok(`signed in as ${bold(user.display_name || user.email || \"user\")}`);\n return EXIT.SUCCESS;\n}\n\nasync function syncMeshes(token: string): Promise<void> {\n try {\n const meshes = await my.getMeshes(token);\n if (meshes.length > 0) {\n const names = meshes.map((m) => m.slug).join(\", \");\n render.ok(`synced ${meshes.length} mesh${meshes.length === 1 ? \"\" : \"es\"}`, names);\n }\n } catch {}\n}\n\nexport async function login(): Promise<number> {\n const existing = getStoredToken();\n if (existing) {\n const name = existing.user.display_name || existing.user.email || \"unknown\";\n render.blank();\n render.info(`Already signed in as ${bold(name)}.`);\n render.blank();\n process.stdout.write(` ${bold(\"1)\")} Continue as ${name}\\n`);\n process.stdout.write(` ${bold(\"2)\")} Sign in via browser\\n`);\n process.stdout.write(` ${bold(\"3)\")} Paste a token from ${dim(\"claudemesh.com/token\")}\\n`);\n process.stdout.write(` ${bold(\"4)\")} Sign out\\n`);\n render.blank();\n\n const choice = await prompt(\" Choice [1]: \") || \"1\";\n\n if (choice === \"1\") {\n render.blank();\n render.ok(`continuing as ${bold(name)}`);\n return EXIT.SUCCESS;\n }\n if (choice === \"4\") {\n clearToken();\n render.ok(\"signed out\");\n return EXIT.SUCCESS;\n }\n if (choice === \"3\") {\n clearToken();\n return loginWithToken();\n }\n clearToken();\n render.info(dim(\"Signing in…\"));\n } else {\n render.blank();\n render.heading(`${bold(\"claudemesh\")} — sign in to connect your terminal`);\n render.blank();\n process.stdout.write(` ${bold(\"1)\")} Sign in via browser ${dim(\"(opens automatically)\")}\\n`);\n process.stdout.write(` ${bold(\"2)\")} Paste a token from ${dim(\"claudemesh.com/token\")}\\n`);\n render.blank();\n\n const choice = await prompt(\" Choice [1]: \") || \"1\";\n\n if (choice === \"2\") {\n return loginWithToken();\n }\n }\n\n try {\n const result = await loginWithDeviceCode();\n render.ok(`signed in as ${bold(result.user.display_name)}`);\n await syncMeshes(result.session_token);\n return EXIT.SUCCESS;\n } catch (err) {\n render.err(`Login failed: ${err instanceof Error ? err.message : err}`);\n return EXIT.AUTH_FAILED;\n }\n}\n",
|
|
52
52
|
"/**\n * `claudemesh` with no args + no joined meshes → unified onboarding.\n *\n * One flow, one keystroke per decision. Collapses the old three-branch\n * picker (signup / login / join) into a linear path:\n *\n * 1. Already have an invite URL? → paste it, run the bare-URL join+launch.\n * (no account needed — invites are self-signed capabilities)\n * 2. Else: open the browser for sign-in + mesh creation at claudemesh.com\n * and fall back to paste-sync when the browser hand-off lands.\n *\n * The branch that used to be \"register\" collapses into the browser flow\n * (the web handles signup + mesh creation as one wizard there).\n */\n\nimport { createInterface } from \"node:readline\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { renderWelcome } from \"~/ui/welcome/index.js\";\nimport { login } from \"./login.js\";\nimport { render } from \"~/ui/render.js\";\nimport { isInviteUrl, normaliseInviteUrl } from \"~/utils/url.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nfunction prompt(q: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(q, (a) => { rl.close(); resolve(a.trim()); });\n });\n}\n\nexport async function runWelcome(): Promise<number> {\n const config = readConfig();\n if (config.meshes.length > 0) return EXIT.SUCCESS;\n\n renderWelcome();\n\n render.info(\"Do you already have an invite link? (y/n) [n]\");\n const hasInvite = (await prompt(\" > \")).toLowerCase().startsWith(\"y\");\n\n if (hasInvite) {\n render.blank();\n render.info(\"Paste your invite link (claudemesh.com/i/... or claudemesh://...)\");\n const raw = await prompt(\" > \");\n if (!raw || !isInviteUrl(raw)) {\n render.err(\"That doesn't look like a claudemesh invite URL.\");\n render.hint(\"Check your email — the link starts with https://claudemesh.com/i/\");\n return EXIT.INVALID_ARGS;\n }\n const normalised = normaliseInviteUrl(raw);\n render.blank();\n render.ok(`Joining via ${normalised}`);\n const { runLaunch } = await import(\"./launch.js\");\n await runLaunch(\n {\n join: normalised,\n name: process.env.USER ?? process.env.USERNAME ?? undefined,\n yes: false,\n },\n [],\n );\n return EXIT.SUCCESS;\n }\n\n // No invite → browser-first sign-in + mesh creation.\n render.blank();\n render.info(\"Opening claudemesh.com so you can sign in and create your first mesh.\");\n render.hint(\"After sign-in, paste the sync token back here when prompted.\");\n render.blank();\n return await login();\n}\n\nexport { runWelcome as _stub };\n",
|
|
53
53
|
"import { readConfig } from \"~/services/config/facade.js\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\n\nexport function listMeshes(): JoinedMesh[] {\n return readConfig().meshes;\n}\n",
|
|
54
54
|
"import { request } from \"~/services/api/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { generateKeypair } from \"~/services/crypto/facade.js\";\nimport { setMeshConfig } from \"~/services/config/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\n\nconst BROKER_HTTP = URLS.BROKER.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n\nexport async function createMesh(name: string, opts?: { template?: string; description?: string }): Promise<{ slug: string; id: string }> {\n const auth = getStoredToken();\n if (!auth) throw new Error(\"Not signed in\");\n\n // Generate keypair first so we can send the pubkey to the broker\n const kp = await generateKeypair();\n\n // Broker authenticates via Authorization: Bearer <session_token>.\n // user_id used to be in the body but is now derived from the verified\n // session on the server. Older broker deploys still accept both.\n const result = await request<{ id: string; slug: string; name: string; member_id: string }>({\n path: \"/cli/mesh/create\",\n method: \"POST\",\n body: { name, pubkey: kp.publicKey, ...opts },\n baseUrl: BROKER_HTTP,\n token: auth.session_token,\n });\n\n const mesh: JoinedMesh = {\n meshId: result.id,\n memberId: result.member_id,\n slug: result.slug,\n name: result.name,\n pubkey: kp.publicKey,\n secretKey: kp.secretKey,\n brokerUrl: URLS.BROKER,\n joinedAt: new Date().toISOString(),\n };\n setMeshConfig(result.slug, mesh);\n return { slug: result.slug, id: result.id };\n}\n",
|
|
@@ -59,15 +59,15 @@
|
|
|
59
59
|
"export { getLastUsed, setLastUsed } from \"./last-used.js\";\nexport type { LastUsed } from \"./schemas.js\";\n",
|
|
60
60
|
"import { readConfig } from \"~/services/config/facade.js\";\nimport { getLastUsed } from \"~/services/state/facade.js\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\n\nexport function resolveTarget(meshFlag?: string): JoinedMesh | null {\n const config = readConfig();\n if (config.meshes.length === 0) return null;\n if (meshFlag) return config.meshes.find(m => m.slug === meshFlag) ?? null;\n const last = getLastUsed();\n if (last) {\n const found = config.meshes.find(m => m.slug === last.meshSlug);\n if (found) return found;\n }\n if (config.meshes.length === 1) return config.meshes[0]!;\n return null;\n}\n",
|
|
61
61
|
"export { listMeshes as list } from \"./list.js\";\nexport { createMesh as create } from \"./create.js\";\nexport { renameMesh as rename } from \"./rename.js\";\nexport { leaveMesh as leave } from \"./leave.js\";\nexport { joinMesh as join, joinMesh } from \"./join.js\";\nexport { resolveTarget } from \"./resolve-target.js\";\nexport { MeshNotFoundError } from \"./errors.js\";\n",
|
|
62
|
-
"import { create as createMesh } from \"~/services/mesh/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport {
|
|
62
|
+
"import { create as createMesh } from \"~/services/mesh/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function newMesh(\n name: string,\n opts: { template?: string; description?: string; json?: boolean },\n): Promise<number> {\n if (!name) {\n render.err(\"Usage: claudemesh create <name>\");\n return EXIT.INVALID_ARGS;\n }\n\n if (!getStoredToken()) {\n render.info(dim(\"not signed in — starting login…\"));\n render.blank();\n const { login } = await import(\"./login.js\");\n const loginResult = await login();\n if (loginResult !== EXIT.SUCCESS) return loginResult;\n render.blank();\n }\n\n try {\n const result = await createMesh(name, {\n template: opts.template,\n description: opts.description,\n });\n\n if (opts.json) {\n console.log(JSON.stringify({ schema_version: \"1.0\", ...result }, null, 2));\n return EXIT.SUCCESS;\n }\n\n render.section(`created ${bold(result.slug)}`);\n render.kv([\n [\"id\", dim(result.id)],\n [\"role\", clay(\"owner\")],\n [\"local\", \"joined\"],\n ]);\n render.blank();\n render.hint(`share with: ${bold(\"claudemesh share\")}`);\n render.blank();\n\n return EXIT.SUCCESS;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes(\"409\") || msg.includes(\"already exists\")) {\n render.err(\"A mesh with this name already exists.\", \"Try a different name.\");\n } else {\n render.err(`Failed: ${msg}`);\n }\n return EXIT.INTERNAL_ERROR;\n }\n}\n",
|
|
63
63
|
"import { request } from \"~/services/api/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\n\nconst BROKER_HTTP = URLS.BROKER.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n\nexport async function generateInvite(\n meshSlug: string,\n opts?: { email?: string; expires_in?: string; max_uses?: number; role?: string },\n): Promise<{ url: string; code: string; expires_at: string; emailed?: boolean }> {\n const auth = getStoredToken();\n if (!auth) throw new Error(\"Not signed in\");\n\n return request<{ url: string; code: string; expires_at: string; emailed?: boolean }>({\n path: `/cli/mesh/${meshSlug}/invite`,\n method: \"POST\",\n body: { email: opts?.email, role: opts?.role },\n baseUrl: BROKER_HTTP,\n token: auth.session_token,\n });\n}\n",
|
|
64
64
|
"/**\n * Invite-link parser for claudemesh `ic://join/<base64url(JSON)>` links.\n *\n * v0.1.0: parses + shape-validates + checks expiry. Signature\n * verification and one-time-use invite-token tracking land in Step 18.\n */\n\nimport { ensureSodium } from \"~/services/crypto/facade.js\";\n\nexport interface InvitePayload {\n v: 1;\n mesh_id: string;\n mesh_slug: string;\n broker_url: string;\n expires_at: number;\n mesh_root_key: string;\n role: \"admin\" | \"member\";\n owner_pubkey: string;\n signature: string;\n}\n\nexport interface ParsedInvite {\n payload: InvitePayload;\n raw: string; // the original ic://join/... string\n token: string; // base64url(JSON) — DB lookup key (everything after ic://join/)\n}\n\nfunction validatePayload(obj: unknown): InvitePayload {\n if (!obj || typeof obj !== \"object\") throw new Error(\"invite payload is not an object\");\n const o = obj as Record<string, unknown>;\n if (o.v !== 1) throw new Error(\"invite payload: v must be 1\");\n if (typeof o.mesh_id !== \"string\" || !o.mesh_id) throw new Error(\"invite payload: mesh_id required\");\n if (typeof o.mesh_slug !== \"string\" || !o.mesh_slug) throw new Error(\"invite payload: mesh_slug required\");\n if (typeof o.broker_url !== \"string\" || !o.broker_url) throw new Error(\"invite payload: broker_url required\");\n if (typeof o.expires_at !== \"number\" || o.expires_at <= 0) throw new Error(\"invite payload: expires_at must be a positive number\");\n if (typeof o.mesh_root_key !== \"string\" || !o.mesh_root_key) throw new Error(\"invite payload: mesh_root_key required\");\n if (o.role !== \"admin\" && o.role !== \"member\") throw new Error(\"invite payload: role must be admin or member\");\n if (typeof o.owner_pubkey !== \"string\" || !/^[0-9a-f]{64}$/i.test(o.owner_pubkey)) throw new Error(\"invite payload: owner_pubkey must be 64 hex chars\");\n if (typeof o.signature !== \"string\" || !/^[0-9a-f]{128}$/i.test(o.signature)) throw new Error(\"invite payload: signature must be 128 hex chars\");\n return o as unknown as InvitePayload;\n}\n\n/** Canonical invite bytes — must match broker's canonicalInvite(). */\nexport function canonicalInvite(p: {\n v: number;\n mesh_id: string;\n mesh_slug: string;\n broker_url: string;\n expires_at: number;\n mesh_root_key: string;\n role: \"admin\" | \"member\";\n owner_pubkey: string;\n}): string {\n return `${p.v}|${p.mesh_id}|${p.mesh_slug}|${p.broker_url}|${p.expires_at}|${p.mesh_root_key}|${p.role}|${p.owner_pubkey}`;\n}\n\n/**\n * Extract the raw base64url token from any accepted invite input.\n *\n * Accepts:\n * - `https://claudemesh.com/i/<code>` (short URL — resolves via API)\n * - `https://claudemesh.com/join/<token>` (long clickable link)\n * - `https://claudemesh.com/<locale>/join/<token>` (i18n prefix)\n * - `ic://join/<token>` (dev-era scheme)\n * - `<token>` (raw base64url, last resort)\n */\nexport async function extractInviteToken(input: string): Promise<string> {\n const trimmed = input.trim();\n if (trimmed.startsWith(\"ic://join/\")) {\n const token = trimmed.slice(\"ic://join/\".length).replace(/\\/$/, \"\");\n if (!token) throw new Error(\"invite link has no payload\");\n return token;\n }\n // Short URL — needs a network hop to resolve code → token.\n const shortMatch = trimmed.match(\n /^https?:\\/\\/([^/]+)(?:\\/[a-z]{2})?\\/i\\/([A-Za-z0-9]+)\\/?$/,\n );\n if (shortMatch) {\n const host = shortMatch[1]!;\n const code = shortMatch[2]!;\n const res = await fetch(`https://${host}/api/public/invite-code/${code}`, {\n headers: { accept: \"application/json\" },\n });\n if (!res.ok) {\n throw new Error(`short invite code not found (status ${res.status})`);\n }\n const body = (await res.json()) as\n | { found: true; token: string }\n | { found: false };\n if (!body.found) throw new Error(\"short invite code not found\");\n return body.token;\n }\n const httpsMatch = trimmed.match(\n /^https?:\\/\\/[^/]+(?:\\/[a-z]{2})?\\/join\\/([A-Za-z0-9_-]+)\\/?$/,\n );\n if (httpsMatch) return httpsMatch[1]!;\n // Last resort: treat as raw base64url token.\n if (/^[A-Za-z0-9_-]+$/.test(trimmed) && trimmed.length > 20) {\n return trimmed;\n }\n throw new Error(\n `invalid invite format. Expected one of:\\n` +\n ` https://claudemesh.com/i/<code>\\n` +\n ` https://claudemesh.com/join/<token>\\n` +\n ` ic://join/<token>\\n` +\n ` <raw-token>\\n` +\n `Got: \"${input.slice(0, 40)}${input.length > 40 ? \"…\" : \"\"}\"`,\n );\n}\n\nexport async function parseInviteLink(link: string): Promise<ParsedInvite> {\n const encoded = await extractInviteToken(link);\n\n let json: string;\n try {\n json = Buffer.from(encoded, \"base64url\").toString(\"utf-8\");\n } catch (e) {\n throw new Error(\n `invite link base64 decode failed: ${e instanceof Error ? e.message : e}`,\n );\n }\n\n let obj: unknown;\n try {\n obj = JSON.parse(json);\n } catch (e) {\n throw new Error(\n `invite link JSON parse failed: ${e instanceof Error ? e.message : e}`,\n );\n }\n\n const payload = validatePayload(obj);\n\n // Expiry check (unix seconds).\n const nowSeconds = Math.floor(Date.now() / 1000);\n if (payload.expires_at < nowSeconds) {\n throw new Error(\n `invite expired: expires_at=${payload.expires_at}, now=${nowSeconds}`,\n );\n }\n\n // Verify the ed25519 signature against the embedded owner_pubkey.\n const s = await ensureSodium();\n const canonical = canonicalInvite({\n v: payload.v,\n mesh_id: payload.mesh_id,\n mesh_slug: payload.mesh_slug,\n broker_url: payload.broker_url,\n expires_at: payload.expires_at,\n mesh_root_key: payload.mesh_root_key,\n role: payload.role,\n owner_pubkey: payload.owner_pubkey,\n });\n const sigOk = (() => {\n try {\n return s.crypto_sign_verify_detached(\n s.from_hex(payload.signature),\n s.from_string(canonical),\n s.from_hex(payload.owner_pubkey),\n );\n } catch {\n return false;\n }\n })();\n if (!sigOk) {\n throw new Error(\"invite signature invalid (link tampered?)\");\n }\n\n return { payload, raw: link, token: encoded };\n}\n\n/**\n * Encode a payload back to an `ic://join/...` link. Used for testing\n * + for building links server-side once we add that flow.\n */\nexport function encodeInviteLink(payload: InvitePayload): string {\n const json = JSON.stringify(payload);\n const encoded = Buffer.from(json, \"utf-8\").toString(\"base64url\");\n return `ic://join/${encoded}`;\n}\n\n/**\n * Sign and assemble an invite payload → ic://join/... link.\n */\nexport async function buildSignedInvite(args: {\n v: 1;\n mesh_id: string;\n mesh_slug: string;\n broker_url: string;\n expires_at: number;\n mesh_root_key: string;\n role: \"admin\" | \"member\";\n owner_pubkey: string;\n owner_secret_key: string;\n}): Promise<{ link: string; token: string; payload: InvitePayload }> {\n const s = await ensureSodium();\n const canonical = canonicalInvite({\n v: args.v,\n mesh_id: args.mesh_id,\n mesh_slug: args.mesh_slug,\n broker_url: args.broker_url,\n expires_at: args.expires_at,\n mesh_root_key: args.mesh_root_key,\n role: args.role,\n owner_pubkey: args.owner_pubkey,\n });\n const signature = s.to_hex(\n s.crypto_sign_detached(\n s.from_string(canonical),\n s.from_hex(args.owner_secret_key),\n ),\n );\n const payload: InvitePayload = {\n v: args.v,\n mesh_id: args.mesh_id,\n mesh_slug: args.mesh_slug,\n broker_url: args.broker_url,\n expires_at: args.expires_at,\n mesh_root_key: args.mesh_root_key,\n role: args.role,\n owner_pubkey: args.owner_pubkey,\n signature,\n };\n const json = JSON.stringify(payload);\n const token = Buffer.from(json, \"utf-8\").toString(\"base64url\");\n return { link: `ic://join/${token}`, token, payload };\n}\n",
|
|
65
65
|
"/**\n * Broker /join HTTP enrollment.\n *\n * Takes a parsed invite + freshly generated keypair, POSTs to the\n * broker, returns the member_id. Converts the broker's WSS URL to\n * HTTPS for the /join call (same host, different protocol).\n */\n\nexport interface EnrollResult {\n memberId: string;\n alreadyMember: boolean;\n}\n\nfunction wsToHttp(wsUrl: string): string {\n // wss://host/ws → https://host\n // ws://host:port/ws → http://host:port\n const u = new URL(wsUrl);\n const httpScheme = u.protocol === \"wss:\" ? \"https:\" : \"http:\";\n return `${httpScheme}//${u.host}`;\n}\n\nimport type { InvitePayload } from \"./parse-v1.js\";\n\nexport async function enrollWithBroker(args: {\n brokerWsUrl: string;\n inviteToken: string;\n invitePayload: InvitePayload;\n peerPubkey: string;\n displayName: string;\n}): Promise<EnrollResult> {\n const base = wsToHttp(args.brokerWsUrl);\n const res = await fetch(`${base}/join`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n invite_token: args.inviteToken,\n invite_payload: args.invitePayload,\n peer_pubkey: args.peerPubkey,\n display_name: args.displayName,\n }),\n signal: AbortSignal.timeout(10_000),\n });\n const body = (await res.json()) as {\n ok?: boolean;\n memberId?: string;\n error?: string;\n alreadyMember?: boolean;\n };\n if (!res.ok || !body.ok || !body.memberId) {\n throw new Error(\n `broker /join failed (${res.status}): ${body.error ?? \"unknown\"}`,\n );\n }\n return {\n memberId: body.memberId,\n alreadyMember: body.alreadyMember ?? false,\n };\n}\n",
|
|
66
66
|
"/**\n * v2 invite claim client.\n *\n * The v2 invite URL is a short opaque code (e.g. `claudemesh.com/i/abc12345`).\n * The mesh root key is NOT embedded. Instead:\n *\n * 1. Client generates a fresh x25519 keypair (separate from the peer's\n * ed25519 identity) just for this claim.\n * 2. Client POSTs `recipient_x25519_pubkey` to\n * `${appBaseUrl}/api/public/invites/:code/claim`.\n * 3. Server responds with `sealed_root_key` (crypto_box_seal of the real\n * mesh root key to the recipient pubkey) + mesh metadata +\n * `canonical_v2` (the signed capability bytes).\n * 4. Client unseals the root key with its x25519 secret key.\n *\n * Wire contract is LOCKED — see `docs/protocol.md` §v2 invites and\n * `apps/broker/tests/invite-v2.test.ts`.\n */\n\nimport sodium from \"libsodium-wrappers\";\n\nasync function ensureSodium(): Promise<typeof sodium> {\n await sodium.ready;\n return sodium;\n}\n\n/**\n * Generate a fresh x25519 (Curve25519) keypair suitable for\n * `crypto_box_seal`. This is intentionally distinct from the peer's\n * long-lived ed25519 identity — we do NOT want the mesh root key sealed\n * against a key that's reused for signing.\n *\n * Returns the public key as URL-safe base64url (no padding) to match\n * the format used by the broker's `sealed_root_key` response.\n */\nexport async function generateX25519Keypair(): Promise<{\n publicKeyB64: string;\n secretKey: Uint8Array;\n}> {\n const s = await ensureSodium();\n const kp = s.crypto_box_keypair();\n const publicKeyB64 = s.to_base64(\n kp.publicKey,\n s.base64_variants.URLSAFE_NO_PADDING,\n );\n return { publicKeyB64, secretKey: kp.privateKey };\n}\n\nexport interface ClaimV2Result {\n meshId: string;\n memberId: string;\n ownerPubkey: string;\n canonicalV2: string;\n /** Unsealed mesh root key, 32 raw bytes. */\n rootKey: Uint8Array;\n}\n\ninterface ClaimResponseBody {\n sealed_root_key?: string;\n mesh_id?: string;\n member_id?: string;\n owner_pubkey?: string;\n canonical_v2?: string;\n}\n\ninterface ClaimErrorBody {\n error?: string;\n code?: string;\n message?: string;\n}\n\n/**\n * Claim a v2 invite by its short code. Performs the x25519 keypair\n * generation, POST, and local unseal of the returned `sealed_root_key`.\n *\n * Throws with a descriptive message on 4xx/5xx or on seal-open failure.\n */\nexport async function claimInviteV2(opts: {\n appBaseUrl: string; // e.g. \"https://claudemesh.com\"\n code: string;\n}): Promise<ClaimV2Result> {\n const s = await ensureSodium();\n const { publicKeyB64, secretKey } = await generateX25519Keypair();\n const publicKeyBytes = s.from_base64(\n publicKeyB64,\n s.base64_variants.URLSAFE_NO_PADDING,\n );\n\n // Claim can be routed either through the web app's `/api/public/invites/:code/claim`\n // (which proxies to the broker) or directly against the broker's\n // `/invites/:code/claim`. Default to the broker direct path because it\n // removes one hop and avoids depending on the web app being healthy.\n // Override with CLAUDEMESH_CLAIM_URL for self-hosters / tests.\n const code = encodeURIComponent(opts.code);\n const override = process.env.CLAUDEMESH_CLAIM_URL;\n let url: string;\n if (override) {\n url = override.replace(/\\{code\\}/g, code);\n } else {\n // Derive broker HTTP base from opts.appBaseUrl or a standard guess.\n const brokerBase =\n process.env.CLAUDEMESH_BROKER_HTTP ??\n \"https://ic.claudemesh.com\";\n url = `${brokerBase.replace(/\\/$/, \"\")}/invites/${code}/claim`;\n }\n\n let res: Response;\n try {\n res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ recipient_x25519_pubkey: publicKeyB64 }),\n signal: AbortSignal.timeout(15_000),\n });\n } catch (e) {\n throw new Error(\n `claim request failed (network): ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n // Parse body first — server returns JSON for both success and error.\n let parsed: unknown = null;\n try {\n parsed = await res.json();\n } catch {\n // fall through with parsed=null\n }\n\n if (!res.ok) {\n const err = (parsed ?? {}) as ClaimErrorBody;\n const reason =\n err.error ?? err.code ?? err.message ?? `HTTP ${res.status}`;\n switch (res.status) {\n case 400:\n throw new Error(`invite claim rejected: ${reason}`);\n case 404:\n throw new Error(`invite not found: ${reason}`);\n case 410:\n throw new Error(`invite no longer usable: ${reason}`);\n default:\n throw new Error(`invite claim failed (${res.status}): ${reason}`);\n }\n }\n\n const body = (parsed ?? {}) as ClaimResponseBody;\n if (\n !body.sealed_root_key ||\n !body.mesh_id ||\n !body.member_id ||\n !body.owner_pubkey ||\n !body.canonical_v2\n ) {\n throw new Error(\n `invite claim response malformed: missing required field(s)`,\n );\n }\n\n // Unseal the root key with our x25519 secret.\n let rootKey: Uint8Array;\n try {\n const sealed = s.from_base64(\n body.sealed_root_key,\n s.base64_variants.URLSAFE_NO_PADDING,\n );\n const opened = s.crypto_box_seal_open(sealed, publicKeyBytes, secretKey);\n if (!opened) throw new Error(\"crypto_box_seal_open returned empty\");\n rootKey = opened;\n } catch (e) {\n throw new Error(\n `failed to unseal root key (server sealed to wrong pubkey?): ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n if (rootKey.length !== 32) {\n throw new Error(\n `unsealed root key has wrong length: ${rootKey.length} (expected 32)`,\n );\n }\n\n // TODO(v0.1.5): when the claim response grows a `signature` field,\n // re-verify canonical_v2 against owner_pubkey locally as a\n // belt-and-suspenders check against a compromised broker.\n // For v0.1.x the broker is trusted: it verified capability_v2 before\n // sealing, and a malicious broker could already lie about mesh_id.\n\n return {\n meshId: body.mesh_id,\n memberId: body.member_id,\n ownerPubkey: body.owner_pubkey,\n canonicalV2: body.canonical_v2,\n rootKey,\n };\n}\n\n/**\n * Parse a v2 invite input (bare code or full URL) into a short code.\n *\n * Accepted forms:\n * - `abc12345`\n * - `claudemesh.com/i/abc12345`\n * - `https://claudemesh.com/i/abc12345`\n * - `https://claudemesh.com/es/i/abc12345` (locale prefix)\n *\n * Returns `null` if the input doesn't look like a v2 code/URL — callers\n * should fall back to the v1 `ic://join/...` parser in that case.\n */\nexport function parseV2InviteInput(input: string): string | null {\n const trimmed = input.trim();\n\n // Full URL with /i/<code>\n const urlMatch = trimmed.match(\n /^https?:\\/\\/[^/]+(?:\\/[a-z]{2})?\\/i\\/([A-Za-z0-9]+)\\/?$/,\n );\n if (urlMatch) return urlMatch[1]!;\n\n // Schemeless \"claudemesh.com/i/<code>\"\n const schemelessMatch = trimmed.match(\n /^[^/]+(?:\\/[a-z]{2})?\\/i\\/([A-Za-z0-9]+)\\/?$/,\n );\n if (schemelessMatch) return schemelessMatch[1]!;\n\n // Bare short code — base62, typically 8 chars. Be a little lenient\n // (6-16) to accommodate future tweaks but stay tight enough not to\n // collide with a v1 base64url token (which contains `-` / `_` and is\n // much longer).\n if (/^[A-Za-z0-9]{6,16}$/.test(trimmed)) return trimmed;\n\n return null;\n}\n",
|
|
67
67
|
"export { generateInvite as generate } from \"./generate.js\";\nexport { isInviteUrl, extractInviteCode as parseUrl } from \"./parse-url.js\";\nexport { sendInviteEmail as sendEmail } from \"./send-email.js\";\nexport { InviteExpiredError, InviteNotFoundError } from \"./errors.js\";\n\nexport { parseInviteLink } from \"./parse-v1.js\";\nexport type { InvitePayload, ParsedInvite } from \"./parse-v1.js\";\nexport { enrollWithBroker } from \"./enroll.js\";\nexport type { EnrollResult } from \"./enroll.js\";\nexport { claimInviteV2, parseV2InviteInput } from \"./v2.js\";\n",
|
|
68
68
|
"/**\n * `claudemesh join <invite-link-or-code>` — full join flow.\n *\n * Accepts either:\n * - v2 short invite: `claudemesh.com/i/<code>` or bare `<code>`\n * → POSTs to /api/public/invites/:code/claim, unseals root_key,\n * persists mesh + fresh ed25519 identity.\n * - v1 legacy invite: `ic://join/<token>` or `https://.../join/<token>`\n * → parses signed payload, calls broker /join, persists.\n *\n * v1 continues to work throughout v0.1.x. v1 endpoints 410 Gone at v0.2.0.\n */\n\nimport { parseInviteLink } from \"~/services/invite/facade.js\";\nimport { enrollWithBroker } from \"~/services/invite/facade.js\";\nimport { generateKeypair } from \"~/services/crypto/facade.js\";\nimport { readConfig, writeConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport { claimInviteV2, parseV2InviteInput } from \"~/services/invite/facade.js\";\nimport sodium from \"libsodium-wrappers\";\nimport { writeFileSync, mkdirSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { homedir, hostname } from \"node:os\";\nimport { env } from \"~/constants/urls.js\";\n\n/** Derive the web app base URL from the broker URL, unless explicitly overridden. */\nfunction deriveAppBaseUrl(): string {\n const override = process.env.CLAUDEMESH_APP_URL;\n if (override) return override.replace(/\\/$/, \"\");\n // Broker is `wss://ic.claudemesh.com/ws` → app is `https://claudemesh.com`.\n // For self-hosted: honour the broker host's parent domain as best-effort.\n try {\n const u = new URL(env.CLAUDEMESH_BROKER_URL);\n const host = u.host.replace(/^ic\\./, \"\");\n const scheme = u.protocol === \"wss:\" ? \"https:\" : \"http:\";\n return `${scheme}//${host}`;\n } catch {\n return \"https://claudemesh.com\";\n }\n}\n\nasync function runJoinV2(code: string): Promise<void> {\n const appBaseUrl = deriveAppBaseUrl();\n console.log(`Claiming invite ${code} via ${appBaseUrl}…`);\n\n let claim;\n try {\n claim = await claimInviteV2({ appBaseUrl, code });\n } catch (e) {\n console.error(\n `claudemesh: ${e instanceof Error ? e.message : String(e)}`,\n );\n process.exit(1);\n }\n\n // Generate a fresh ed25519 identity for this peer. The v2 claim\n // endpoint creates the member row keyed on the x25519 pubkey we sent;\n // the ed25519 keypair is what the `hello` handshake and future\n // envelope signing will use. Stored locally only.\n const keypair = await generateKeypair();\n const displayName = `${hostname()}-${process.pid}`;\n\n // Encode the unsealed 32-byte root key as URL-safe base64url (no pad)\n // to match the format used everywhere else (broker stores it the\n // same way in mesh.rootKey).\n await sodium.ready;\n const rootKeyB64 = sodium.to_base64(\n claim.rootKey,\n sodium.base64_variants.URLSAFE_NO_PADDING,\n );\n\n // Persist. We don't have a mesh_slug in the v2 response — the server\n // derives slug from name and slug is no longer globally unique. Use a\n // stable short derivative of the mesh id so `list` / `launch --mesh`\n // still have something to match on.\n const fallbackSlug = `mesh-${claim.meshId.slice(0, 8)}`;\n const config = readConfig();\n config.meshes = config.meshes.filter((m) => m.meshId !== claim.meshId);\n config.meshes.push({\n meshId: claim.meshId,\n memberId: claim.memberId,\n slug: fallbackSlug,\n name: fallbackSlug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: env.CLAUDEMESH_BROKER_URL,\n joinedAt: new Date().toISOString(),\n rootKey: rootKeyB64,\n inviteVersion: 2,\n });\n writeConfig(config);\n\n console.log(\"\");\n console.log(`✓ Joined mesh ${claim.meshId} via v2 invite`);\n console.log(` member id: ${claim.memberId}`);\n console.log(` pubkey: ${keypair.publicKey.slice(0, 16)}…`);\n console.log(` broker: ${env.CLAUDEMESH_BROKER_URL}`);\n console.log(` config: ${getConfigPath()}`);\n console.log(\"\");\n console.log(\"Restart Claude Code to pick up the new mesh.\");\n}\n\nexport async function runJoin(args: string[]): Promise<void> {\n const link = args[0];\n if (!link) {\n console.error(\"Usage: claudemesh join <invite-url-or-code>\");\n console.error(\"\");\n console.error(\"Examples:\");\n console.error(\" claudemesh join https://claudemesh.com/i/abc12345\");\n console.error(\" claudemesh join abc12345\");\n console.error(\" claudemesh join ic://join/eyJ2IjoxLC4uLn0 (v1 legacy)\");\n process.exit(1);\n }\n\n // Short-circuit: if the arg matches a mesh already in local config (slug\n // or name), we're already joined. Don't go through the invite flow.\n if (!link.includes(\"://\")) {\n const existing = readConfig().meshes.find(\n (m) => m.slug === link || m.name === link,\n );\n if (existing) {\n console.log(`Already in \"${existing.slug}\" on this machine.`);\n console.log(\"\");\n console.log(`Use it in the current directory:`);\n console.log(` claudemesh launch --mesh ${existing.slug}`);\n console.log(\"\");\n console.log(`Or list peers:`);\n console.log(` claudemesh peers --mesh ${existing.slug}`);\n return;\n }\n }\n\n // Try v2 first — short code / `/i/<code>` URL.\n const v2Code = parseV2InviteInput(link);\n if (v2Code) {\n await runJoinV2(v2Code);\n return;\n }\n\n // 1. Parse + verify signature client-side.\n let invite;\n try {\n invite = await parseInviteLink(link);\n } catch (e) {\n console.error(\n `claudemesh: ${e instanceof Error ? e.message : String(e)}`,\n );\n process.exit(1);\n }\n const { payload, token } = invite;\n console.log(`Joining mesh \"${payload.mesh_slug}\" (${payload.mesh_id})…`);\n\n // 2. Generate keypair.\n const keypair = await generateKeypair();\n\n // 3. Enroll with broker.\n const displayName = `${hostname()}-${process.pid}`;\n let enroll;\n try {\n enroll = await enrollWithBroker({\n brokerWsUrl: payload.broker_url,\n inviteToken: token,\n invitePayload: payload,\n peerPubkey: keypair.publicKey,\n displayName,\n });\n } catch (e) {\n console.error(\n `claudemesh: broker enrollment failed: ${e instanceof Error ? e.message : String(e)}`,\n );\n process.exit(1);\n }\n\n // 4. Persist.\n const config = readConfig();\n config.meshes = config.meshes.filter(\n (m) => m.slug !== payload.mesh_slug,\n );\n config.meshes.push({\n meshId: payload.mesh_id,\n memberId: enroll.memberId,\n slug: payload.mesh_slug,\n name: payload.mesh_slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: payload.broker_url,\n joinedAt: new Date().toISOString(),\n });\n writeConfig(config);\n\n // 4b. Store invite token for per-session re-enrollment (launch --name).\n const configDir = env.CLAUDEMESH_CONFIG_DIR ?? join(homedir(), \".claudemesh\");\n const inviteFile = join(configDir, `invite-${payload.mesh_slug}.txt`);\n try {\n mkdirSync(dirname(inviteFile), { recursive: true });\n writeFileSync(inviteFile, link, \"utf-8\");\n } catch {\n // Non-fatal — launch will fall back to shared identity.\n }\n\n // 5. Report.\n console.log(\"\");\n console.log(\n `✓ Joined \"${payload.mesh_slug}\" as ${displayName}${enroll.alreadyMember ? \" (already a member — re-enrolled with same pubkey)\" : \"\"}`,\n );\n console.log(` member id: ${enroll.memberId}`);\n console.log(` pubkey: ${keypair.publicKey.slice(0, 16)}…`);\n console.log(` broker: ${payload.broker_url}`);\n console.log(` config: ${getConfigPath()}`);\n console.log(\"\");\n console.log(\"Restart Claude Code to pick up the new mesh.\");\n}\n",
|
|
69
|
-
"/**\n * `claudemesh mesh list` — merged view of server + local meshes.\n */\n\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { request } from \"~/services/api/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport { bold, dim, green, yellow
|
|
70
|
-
"import { createInterface } from \"node:readline\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { leave as leaveMesh } from \"~/services/mesh/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { request } from \"~/services/api/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport {
|
|
69
|
+
"/**\n * `claudemesh mesh list` — merged view of server + local meshes.\n */\n\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { request } from \"~/services/api/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport { bold, clay, dim, green, yellow } from \"~/ui/styles.js\";\nimport { render } from \"~/ui/render.js\";\n\nconst BROKER_HTTP = URLS.BROKER.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n\ninterface ServerMesh {\n id: string;\n slug: string;\n name: string;\n role: string;\n is_owner: boolean;\n member_count: number;\n active_peers: number;\n joined_at: string;\n}\n\nexport async function runList(): Promise<void> {\n const config = readConfig();\n const auth = getStoredToken();\n\n // Try to fetch from server. Broker authenticates via Bearer token.\n let serverMeshes: ServerMesh[] = [];\n if (auth) {\n try {\n const res = await request<{ meshes: ServerMesh[] }>({\n path: `/cli/meshes`,\n baseUrl: BROKER_HTTP,\n token: auth.session_token,\n });\n serverMeshes = res.meshes ?? [];\n } catch {}\n }\n\n // Merge: server meshes + local-only meshes\n const localSlugs = new Set(config.meshes.map(m => m.slug));\n const serverSlugs = new Set(serverMeshes.map(m => m.slug));\n\n const allSlugs = new Set([...localSlugs, ...serverSlugs]);\n\n if (allSlugs.size === 0) {\n render.section(\"no meshes yet\");\n render.info(`${dim(\"create one:\")} ${bold(\"claudemesh create\")} ${clay(\"<name>\")}`);\n render.info(`${dim(\"join one:\")} ${bold(\"claudemesh\")} ${clay(\"<invite-url>\")}`);\n render.blank();\n return;\n }\n\n render.section(`your meshes (${allSlugs.size})`);\n\n for (const slug of allSlugs) {\n const local = config.meshes.find((m) => m.slug === slug);\n const server = serverMeshes.find((m) => m.slug === slug);\n\n const name = server?.name ?? local?.name ?? slug;\n const role = server?.role ?? \"member\";\n const isOwner = server?.is_owner ?? false;\n const roleLabel = isOwner ? clay(\"owner\") : dim(role);\n const memberCount = server?.member_count;\n const activePeers = server?.active_peers ?? 0;\n\n const inLocal = localSlugs.has(slug);\n const inServer = serverSlugs.has(slug);\n let status: string;\n let icon: string;\n\n if (inLocal && inServer) {\n icon = green(\"●\");\n status = activePeers > 0 ? green(`${activePeers} online`) : dim(\"synced\");\n } else if (inLocal && !inServer) {\n icon = yellow(\"●\");\n status = yellow(\"local only\");\n } else {\n icon = dim(\"○\");\n status = dim(\"not added locally\");\n }\n\n const memberInfo = memberCount ? dim(`${memberCount} member${memberCount !== 1 ? \"s\" : \"\"}`) : \"\";\n const parts = [roleLabel, memberInfo, status].filter(Boolean);\n\n process.stdout.write(` ${icon} ${bold(name)} ${dim(slug)}\\n`);\n process.stdout.write(` ${parts.join(dim(\" · \"))}\\n`);\n }\n\n process.stdout.write(\"\\n\");\n if (serverMeshes.some((m) => !localSlugs.has(m.slug))) {\n render.hint(`${dim(\"○\")} = server only — run ${bold(\"claudemesh join\")} to use locally`);\n }\n render.hint(`config: ${dim(getConfigPath())}`);\n render.blank();\n}\n",
|
|
70
|
+
"import { createInterface } from \"node:readline\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { leave as leaveMesh } from \"~/services/mesh/facade.js\";\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { request } from \"~/services/api/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, red } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nconst BROKER_HTTP = URLS.BROKER.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n\nfunction prompt(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(question, (a) => { rl.close(); resolve(a.trim()); });\n });\n}\n\nfunction getUserId(token: string): string {\n try {\n const payload = JSON.parse(Buffer.from(token.split(\".\")[1]!, \"base64url\").toString()) as { sub?: string };\n return payload.sub ?? \"\";\n } catch { return \"\"; }\n}\n\nasync function isOwner(slug: string, auth: { session_token: string }): Promise<boolean> {\n try {\n const res = await request<{ meshes: Array<{ slug: string; is_owner: boolean }> }>({\n path: `/cli/meshes`,\n baseUrl: BROKER_HTTP,\n token: auth.session_token,\n });\n return res.meshes?.find((m) => m.slug === slug)?.is_owner ?? false;\n } catch { return false; }\n}\n\nexport async function deleteMesh(slug: string, opts: { yes?: boolean } = {}): Promise<number> {\n const config = readConfig();\n\n if (!slug) {\n if (config.meshes.length === 0) {\n render.err(\"No meshes to remove.\");\n return EXIT.NOT_FOUND;\n }\n render.section(\"select mesh to remove\");\n config.meshes.forEach((m, i) => {\n process.stdout.write(` ${bold(String(i + 1) + \")\")} ${clay(m.slug)} ${dim(\"(\" + m.name + \")\")}\\n`);\n });\n render.blank();\n const choice = await prompt(` ${dim(\"choice:\")} `);\n const idx = parseInt(choice, 10) - 1;\n if (idx < 0 || idx >= config.meshes.length) {\n render.info(dim(\"cancelled.\"));\n return EXIT.USER_CANCELLED;\n }\n slug = config.meshes[idx]!.slug;\n }\n\n const auth = getStoredToken();\n const userId = auth ? getUserId(auth.session_token) : \"\";\n const ownerCheck = auth ? await isOwner(slug, auth) : false;\n\n if (!opts.yes) {\n render.section(slug);\n\n if (ownerCheck) {\n process.stdout.write(` ${bold(\"1)\")} remove from this device only ${dim(\"(keep on server)\")}\\n`);\n process.stdout.write(` ${bold(\"2)\")} ${red(\"delete everywhere\")} ${dim(\"(removes for all members)\")}\\n`);\n process.stdout.write(` ${bold(\"3)\")} cancel\\n`);\n render.blank();\n\n const choice = await prompt(` ${dim(\"choice [1]:\")} `) || \"1\";\n\n if (choice === \"3\") { render.info(dim(\"cancelled.\")); return EXIT.USER_CANCELLED; }\n\n if (choice === \"2\") {\n render.blank();\n render.warn(`this will delete ${bold(slug)} for all members.`);\n const confirm = await prompt(` ${dim(`type \"${slug}\" to confirm:`)} `);\n if (confirm.toLowerCase() !== slug.toLowerCase()) {\n render.info(dim(\"cancelled.\"));\n return EXIT.USER_CANCELLED;\n }\n\n try {\n await request({\n path: `/cli/mesh/${slug}`,\n method: \"DELETE\",\n baseUrl: BROKER_HTTP,\n token: auth?.session_token,\n body: { user_id: userId },\n });\n render.ok(`deleted ${bold(slug)} from server.`);\n } catch (err) {\n render.err(`server delete failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n\n leaveMesh(slug);\n render.ok(\"removed from local config.\");\n return EXIT.SUCCESS;\n }\n } else {\n process.stdout.write(` ${bold(\"1)\")} remove from this device ${dim(\"(you can re-add later)\")}\\n`);\n process.stdout.write(` ${bold(\"2)\")} cancel\\n`);\n if (userId) {\n render.blank();\n render.warn(\"only the mesh owner can delete it from the server.\");\n }\n render.blank();\n\n const choice = await prompt(` ${dim(\"choice [1]:\")} `) || \"1\";\n if (choice === \"2\") { render.info(dim(\"cancelled.\")); return EXIT.USER_CANCELLED; }\n }\n }\n\n const removed = leaveMesh(slug);\n if (removed) {\n render.ok(`removed ${bold(slug)} from this device.`);\n render.hint(`re-add anytime with: ${bold(\"claudemesh\")} ${clay(\"<invite-url>\")}`);\n } else {\n render.err(`mesh \"${slug}\" not found in local config.`);\n }\n return EXIT.SUCCESS;\n}\n",
|
|
71
71
|
"import { rename as renameMesh } from \"~/services/mesh/facade.js\";\nimport { green, icons } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function rename(slug: string, newName: string): Promise<number> {\n try {\n await renameMesh(slug, newName);\n console.log(` ${green(icons.check)} Renamed \"${slug}\" to \"${newName}\"`);\n return EXIT.SUCCESS;\n } catch (err) {\n console.error(` ${icons.cross} Failed: ${err instanceof Error ? err.message : err}`);\n return EXIT.INTERNAL_ERROR;\n }\n}\n",
|
|
72
72
|
"import { execSync } from \"node:child_process\";\nimport { platform } from \"node:os\";\n\nexport function readClipboard(): string | null {\n try {\n const os = platform();\n if (os === \"darwin\") return execSync(\"pbpaste\", { encoding: \"utf-8\" }).trim();\n if (os === \"linux\") {\n try {\n return execSync(\"xclip -selection clipboard -o\", { encoding: \"utf-8\" }).trim();\n } catch {\n return execSync(\"wl-paste --no-newline\", { encoding: \"utf-8\" }).trim();\n }\n }\n if (os === \"win32\") return execSync(\"powershell -command Get-Clipboard\", { encoding: \"utf-8\" }).trim();\n return null;\n } catch {\n return null;\n }\n}\n\nexport function writeClipboard(text: string): boolean {\n try {\n const os = platform();\n if (os === \"darwin\") {\n execSync(\"pbcopy\", { input: text });\n return true;\n }\n if (os === \"linux\") {\n try {\n execSync(\"xclip -selection clipboard\", { input: text });\n } catch {\n execSync(\"wl-copy\", { input: text });\n }\n return true;\n }\n if (os === \"win32\") {\n execSync(\"clip\", { input: text });\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n",
|
|
73
73
|
"export { readClipboard, writeClipboard } from \"./read.js\";\n",
|
|
@@ -90,17 +90,17 @@
|
|
|
90
90
|
"/**\n * `claudemesh peers` — list connected peers in the mesh.\n *\n * Shows all meshes by default, or filter with --mesh.\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim, green, yellow } from \"~/ui/styles.js\";\n\nexport interface PeersFlags {\n mesh?: string;\n json?: boolean;\n}\n\nexport async function runPeers(flags: PeersFlags): Promise<void> {\n const config = readConfig();\n const slugs = flags.mesh ? [flags.mesh] : config.meshes.map((m) => m.slug);\n\n if (slugs.length === 0) {\n render.err(\"No meshes joined.\");\n render.hint(\"claudemesh <invite-url> # join + launch\");\n process.exit(1);\n }\n\n const allJson: Array<{ mesh: string; peers: unknown[] }> = [];\n\n for (const slug of slugs) {\n try {\n await withMesh({ meshSlug: slug }, async (client, mesh) => {\n const allPeers = await client.listPeers();\n const selfPubkey = client.getSessionPubkey();\n const peers = selfPubkey ? allPeers.filter((p) => p.pubkey !== selfPubkey) : allPeers;\n\n if (flags.json) {\n allJson.push({ mesh: mesh.slug, peers });\n return;\n }\n\n render.section(`peers on ${mesh.slug} (${peers.length})`);\n\n if (peers.length === 0) {\n render.info(dim(\" (no peers connected)\"));\n return;\n }\n\n for (const p of peers) {\n const groups = p.groups.length\n ? \" [\" +\n p.groups\n .map((g: { name: string; role?: string }) => `@${g.name}${g.role ? `:${g.role}` : \"\"}`)\n .join(\", \") +\n \"]\"\n : \"\";\n const statusDot = p.status === \"working\" ? yellow(\"●\") : green(\"●\");\n const name = bold(p.displayName);\n const meta: string[] = [];\n if (p.peerType) meta.push(p.peerType);\n if (p.channel) meta.push(p.channel);\n if (p.model) meta.push(p.model);\n const metaStr = meta.length ? dim(` (${meta.join(\", \")})`) : \"\";\n const summary = p.summary ? dim(` — ${p.summary}`) : \"\";\n const pubkeyTag = dim(` · ${p.pubkey.slice(0, 16)}…`);\n render.info(`${statusDot} ${name}${groups}${metaStr}${pubkeyTag}${summary}`);\n if (p.cwd) render.info(dim(` cwd: ${p.cwd}`));\n }\n });\n } catch (e) {\n render.err(`${slug}: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n if (flags.json) {\n process.stdout.write(JSON.stringify(slugs.length === 1 ? allJson[0]?.peers : allJson, null, 2) + \"\\n\");\n }\n}\n",
|
|
91
91
|
"/**\n * `claudemesh send <to> <message>` — send a message to a peer or group.\n *\n * <to> can be:\n * - a display name (\"Mou\")\n * - a pubkey hex (\"abc123...\")\n * - @group (\"@flexicar\")\n * - * (broadcast to all)\n */\n\nimport { withMesh } from \"./connect.js\";\nimport type { Priority } from \"~/services/broker/facade.js\";\n\nexport interface SendFlags {\n mesh?: string;\n priority?: string;\n}\n\nexport async function runSend(flags: SendFlags, to: string, message: string): Promise<void> {\n const priority: Priority =\n flags.priority === \"now\" ? \"now\"\n : flags.priority === \"low\" ? \"low\"\n : \"next\";\n\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n // Resolve display name → pubkey for direct messages.\n // If `to` starts with @, *, or looks like a hex pubkey, use as-is.\n let targetSpec = to;\n if (!to.startsWith(\"@\") && to !== \"*\" && !/^[0-9a-f]{64}$/i.test(to)) {\n // Treat as display name — look up pubkey via list_peers.\n const peers = await client.listPeers();\n const match = peers.find(\n (p) => p.displayName.toLowerCase() === to.toLowerCase(),\n );\n if (!match) {\n const names = peers.map((p) => p.displayName).join(\", \");\n console.error(`Peer \"${to}\" not found. Online: ${names || \"(none)\"}`);\n process.exit(1);\n }\n targetSpec = match.pubkey;\n }\n\n const result = await client.send(targetSpec, message, priority);\n if (result.ok) {\n console.log(`✓ Sent to ${to}${result.messageId ? ` (${result.messageId.slice(0, 8)})` : \"\"}`);\n } else {\n console.error(`✗ Send failed: ${result.error ?? \"unknown error\"}`);\n process.exit(1);\n }\n });\n}\n",
|
|
92
92
|
"/**\n * `claudemesh inbox` — read pending peer messages.\n *\n * Connects, waits briefly for push delivery, drains the buffer, prints.\n * Works best when message-mode is \"inbox\" or \"off\" (messages held at broker).\n */\n\nimport { withMesh } from \"./connect.js\";\nimport type { InboundPush } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport interface InboxFlags {\n mesh?: string;\n json?: boolean;\n wait?: number;\n}\n\nfunction formatMessage(msg: InboundPush): string {\n const text = msg.plaintext ?? `[encrypted: ${msg.ciphertext.slice(0, 32)}…]`;\n const from = msg.senderPubkey.slice(0, 8);\n const time = new Date(msg.createdAt).toLocaleTimeString();\n const kindTag = msg.kind === \"direct\" ? \"→ direct\" : msg.kind;\n return ` ${bold(from)} ${dim(`[${kindTag}] ${time}`)}\\n ${text}`;\n}\n\nexport async function runInbox(flags: InboxFlags): Promise<void> {\n const waitMs = (flags.wait ?? 1) * 1000;\n\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client, mesh) => {\n await new Promise<void>((resolve) => setTimeout(resolve, waitMs));\n const messages = client.drainPushBuffer();\n\n if (flags.json) {\n process.stdout.write(JSON.stringify(messages, null, 2) + \"\\n\");\n return;\n }\n\n if (messages.length === 0) {\n render.info(dim(`No messages on mesh \"${mesh.slug}\".`));\n return;\n }\n\n render.section(`inbox — ${mesh.slug} (${messages.length} message${messages.length === 1 ? \"\" : \"s\"})`);\n for (const msg of messages) {\n process.stdout.write(formatMessage(msg) + \"\\n\\n\");\n }\n });\n}\n",
|
|
93
|
-
"/**\n * `claudemesh state get <key>` — read a shared state value\n * `claudemesh state set <key> <value>` — write a shared state value\n * `claudemesh state list` — list all state entries\n */\n\nimport { withMesh } from \"./connect.js\";\n\nexport interface StateFlags {\n mesh?: string;\n json?: boolean;\n}\n\nexport async function runStateGet(flags: StateFlags, key: string): Promise<void> {\n
|
|
93
|
+
"/**\n * `claudemesh state get <key>` — read a shared state value\n * `claudemesh state set <key> <value>` — write a shared state value\n * `claudemesh state list` — list all state entries\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport interface StateFlags {\n mesh?: string;\n json?: boolean;\n}\n\nexport async function runStateGet(flags: StateFlags, key: string): Promise<void> {\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const entry = await client.getState(key);\n if (!entry) {\n render.info(dim(\"(not set)\"));\n return;\n }\n if (flags.json) {\n console.log(JSON.stringify(entry, null, 2));\n return;\n }\n const val = typeof entry.value === \"string\" ? entry.value : JSON.stringify(entry.value);\n render.info(val);\n render.info(dim(` set by ${entry.updatedBy} at ${new Date(entry.updatedAt).toLocaleString()}`));\n });\n}\n\nexport async function runStateSet(flags: StateFlags, key: string, value: string): Promise<void> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch {\n parsed = value;\n }\n\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n await client.setState(key, parsed);\n render.ok(`${bold(key)} = ${JSON.stringify(parsed)}`);\n });\n}\n\nexport async function runStateList(flags: StateFlags): Promise<void> {\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client, mesh) => {\n const entries = await client.listState();\n\n if (flags.json) {\n console.log(JSON.stringify(entries, null, 2));\n return;\n }\n\n if (entries.length === 0) {\n render.info(dim(`No state on mesh \"${mesh.slug}\".`));\n return;\n }\n\n render.section(`state (${entries.length})`);\n for (const e of entries) {\n const val = typeof e.value === \"string\" ? e.value : JSON.stringify(e.value);\n process.stdout.write(` ${bold(e.key)}: ${val}\\n`);\n process.stdout.write(` ${dim(e.updatedBy + \" · \" + new Date(e.updatedAt).toLocaleString())}\\n`);\n }\n });\n}\n",
|
|
94
94
|
"/**\n * `claudemesh info` — show mesh overview: slug, broker URL, peer count, state count.\n *\n * Useful for AI agents to orient themselves in a mesh via bash.\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\n\nexport interface InfoFlags {\n mesh?: string;\n json?: boolean;\n}\n\nexport async function runInfo(flags: InfoFlags): Promise<void> {\n const config = readConfig();\n\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client, mesh) => {\n const [brokerInfo, peers, state] = await Promise.all([\n client.meshInfo(),\n client.listPeers(),\n client.listState(),\n ]);\n\n const output = {\n slug: mesh.slug,\n meshId: mesh.meshId,\n memberId: mesh.memberId,\n brokerUrl: mesh.brokerUrl,\n displayName: config.displayName ?? null,\n peerCount: peers.length,\n stateCount: state.length,\n ...(brokerInfo ?? {}),\n };\n\n if (flags.json) {\n process.stdout.write(JSON.stringify(output, null, 2) + \"\\n\");\n return;\n }\n\n render.section(`${mesh.slug} · ${mesh.brokerUrl}`);\n render.kv([\n [\"mesh\", mesh.meshId],\n [\"member\", mesh.memberId],\n [\"peers\", `${peers.length} connected`],\n [\"state\", `${state.length} keys`],\n ]);\n if (brokerInfo && typeof brokerInfo === \"object\") {\n const extras: Array<[string, string]> = [];\n for (const [k, v] of Object.entries(brokerInfo)) {\n if ([\"slug\", \"meshId\", \"brokerUrl\"].includes(k)) continue;\n extras.push([k, JSON.stringify(v)]);\n }\n if (extras.length) render.kv(extras);\n }\n });\n}\n",
|
|
95
|
-
"import { allClients } from \"~/services/broker/facade.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function remember(\n content: string,\n opts: { mesh?: string; tags?: string; json?: boolean } = {},\n): Promise<number> {\n const client = allClients()[0];\n if (!client) {\n
|
|
96
|
-
"import { allClients } from \"~/services/broker/facade.js\";\nimport {
|
|
97
|
-
"/**\n * `claudemesh remind <message> --in <duration> | --at <time>`\n * `claudemesh remind list`\n * `claudemesh remind cancel <id>`\n *\n * Human-facing interface to the broker's scheduled message delivery.\n */\n\nimport { withMesh } from \"./connect.js\";\n\nexport interface RemindFlags {\n mesh?: string;\n in?: string; // e.g. \"2h\", \"30m\", \"90s\"\n at?: string; // ISO or HH:MM\n cron?: string; // 5-field cron expression for recurring\n to?: string; // default: self\n json?: boolean;\n}\n\nfunction parseDuration(raw: string): number | null {\n const m = raw.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*(s|sec|m|min|h|hr|d|day)?$/i);\n if (!m) return null;\n const n = parseFloat(m[1]!);\n const unit = (m[2] ?? \"s\").toLowerCase();\n if (unit.startsWith(\"d\")) return n * 86_400_000;\n if (unit.startsWith(\"h\")) return n * 3_600_000;\n if (unit.startsWith(\"m\")) return n * 60_000;\n return n * 1_000;\n}\n\nfunction parseDeliverAt(flags: RemindFlags): number | null {\n if (flags.in) {\n const ms = parseDuration(flags.in);\n if (ms === null) return null;\n return Date.now() + ms;\n }\n if (flags.at) {\n
|
|
95
|
+
"import { allClients } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function remember(\n content: string,\n opts: { mesh?: string; tags?: string; json?: boolean } = {},\n): Promise<number> {\n const client = allClients()[0];\n if (!client) {\n render.err(\"Not connected to any mesh.\");\n return EXIT.NETWORK_ERROR;\n }\n\n const tags = opts.tags?.split(\",\").map((t) => t.trim()).filter(Boolean);\n const id = await client.remember(content, tags);\n\n if (opts.json) {\n console.log(JSON.stringify({ id, content, tags }));\n return EXIT.SUCCESS;\n }\n\n if (id) {\n render.ok(\"remembered\", dim(id.slice(0, 8)));\n return EXIT.SUCCESS;\n }\n render.err(\"failed to store memory\");\n return EXIT.INTERNAL_ERROR;\n}\n",
|
|
96
|
+
"import { allClients } from \"~/services/broker/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function recall(\n query: string,\n opts: { mesh?: string; json?: boolean } = {},\n): Promise<number> {\n const client = allClients()[0];\n if (!client) {\n render.err(\"Not connected to any mesh.\");\n return EXIT.NETWORK_ERROR;\n }\n\n const memories = await client.recall(query);\n\n if (opts.json) {\n console.log(JSON.stringify(memories, null, 2));\n return EXIT.SUCCESS;\n }\n\n if (memories.length === 0) {\n render.info(dim(\"no memories found.\"));\n return EXIT.SUCCESS;\n }\n\n render.section(`memories (${memories.length})`);\n for (const m of memories) {\n const tags = m.tags.length ? dim(` [${m.tags.map((t) => clay(t)).join(dim(\", \"))}]`) : \"\";\n process.stdout.write(` ${bold(m.id.slice(0, 8))}${tags}\\n`);\n process.stdout.write(` ${m.content}\\n`);\n process.stdout.write(` ${dim(m.rememberedBy + \" · \" + new Date(m.rememberedAt).toLocaleString())}\\n\\n`);\n }\n return EXIT.SUCCESS;\n}\n",
|
|
97
|
+
"/**\n * `claudemesh remind <message> --in <duration> | --at <time>`\n * `claudemesh remind list`\n * `claudemesh remind cancel <id>`\n *\n * Human-facing interface to the broker's scheduled message delivery.\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\n\nexport interface RemindFlags {\n mesh?: string;\n in?: string; // e.g. \"2h\", \"30m\", \"90s\"\n at?: string; // ISO or HH:MM\n cron?: string; // 5-field cron expression for recurring\n to?: string; // default: self\n json?: boolean;\n}\n\nfunction parseDuration(raw: string): number | null {\n const m = raw.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*(s|sec|m|min|h|hr|d|day)?$/i);\n if (!m) return null;\n const n = parseFloat(m[1]!);\n const unit = (m[2] ?? \"s\").toLowerCase();\n if (unit.startsWith(\"d\")) return n * 86_400_000;\n if (unit.startsWith(\"h\")) return n * 3_600_000;\n if (unit.startsWith(\"m\")) return n * 60_000;\n return n * 1_000;\n}\n\nfunction parseDeliverAt(flags: RemindFlags): number | null {\n if (flags.in) {\n const ms = parseDuration(flags.in);\n if (ms === null) return null;\n return Date.now() + ms;\n }\n if (flags.at) {\n const hm = flags.at.match(/^(\\d{1,2}):(\\d{2})$/);\n if (hm) {\n const now = new Date();\n const target = new Date(now);\n target.setHours(parseInt(hm[1]!, 10), parseInt(hm[2]!, 10), 0, 0);\n if (target <= now) target.setDate(target.getDate() + 1);\n return target.getTime();\n }\n const ts = Date.parse(flags.at);\n return isNaN(ts) ? null : ts;\n }\n return null;\n}\n\nexport async function runRemind(\n flags: RemindFlags,\n positional: string[],\n): Promise<void> {\n const action = positional[0];\n\n if (action === \"list\") {\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const scheduled = await client.listScheduled();\n if (flags.json) { console.log(JSON.stringify(scheduled, null, 2)); return; }\n if (scheduled.length === 0) { render.info(dim(\"No pending reminders.\")); return; }\n render.section(`reminders (${scheduled.length})`);\n for (const m of scheduled) {\n const when = new Date(m.deliverAt).toLocaleString();\n const to = m.to === client.getSessionPubkey() ? dim(\"(self)\") : m.to;\n process.stdout.write(` ${bold(m.id.slice(0, 8))} ${dim(\"→\")} ${to} ${dim(\"at\")} ${when}\\n`);\n process.stdout.write(` ${dim(m.message.slice(0, 80))}\\n\\n`);\n }\n });\n return;\n }\n\n if (action === \"cancel\") {\n const id = positional[1];\n if (!id) { render.err(\"Usage: claudemesh remind cancel <id>\"); process.exit(1); }\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const ok = await client.cancelScheduled(id);\n if (ok) render.ok(`cancelled ${bold(id.slice(0, 8))}`);\n else { render.err(`not found or already fired: ${id}`); process.exit(1); }\n });\n return;\n }\n\n const message = action ?? positional.join(\" \");\n if (!message) {\n render.err(\"Usage: claudemesh remind <message> --in <duration>\");\n render.info(dim(\" claudemesh remind <message> --at <time>\"));\n render.info(dim(' claudemesh remind <message> --cron \"0 */2 * * *\"'));\n render.info(dim(\" claudemesh remind list\"));\n render.info(dim(\" claudemesh remind cancel <id>\"));\n process.exit(1);\n }\n\n const isCron = !!flags.cron;\n const deliverAt = isCron ? 0 : parseDeliverAt(flags);\n if (!isCron && deliverAt === null) {\n render.err('Specify when', 'use --in <duration> (e.g. \"2h\", \"30m\"), --at <time> (e.g. \"15:00\"), or --cron <expression>');\n process.exit(1);\n }\n\n await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n let targetSpec: string;\n if (flags.to && flags.to !== \"self\") {\n if (flags.to.startsWith(\"@\") || flags.to === \"*\" || /^[0-9a-f]{64}$/i.test(flags.to)) {\n targetSpec = flags.to;\n } else {\n const peers = await client.listPeers();\n const match = peers.find((p) => p.displayName.toLowerCase() === flags.to!.toLowerCase());\n if (!match) {\n render.err(`Peer \"${flags.to}\" not found`, `online: ${peers.map((p) => p.displayName).join(\", \") || \"(none)\"}`);\n process.exit(1);\n }\n targetSpec = match.pubkey;\n }\n } else {\n targetSpec = client.getSessionPubkey() ?? \"*\";\n }\n\n const result = await client.scheduleMessage(targetSpec, message, deliverAt ?? 0, false, flags.cron);\n if (!result) { render.err(\"Broker did not acknowledge — check connection\"); process.exit(1); }\n\n if (flags.json) { console.log(JSON.stringify(result)); return; }\n const toLabel = !flags.to || flags.to === \"self\" ? \"yourself\" : flags.to;\n if (isCron) {\n const nextFire = new Date(result.deliverAt).toLocaleString();\n render.ok(\n `recurring reminder set`,\n `${result.scheduledId.slice(0, 8)} · ${clay(message)} → ${toLabel} · cron ${flags.cron} · next ${nextFire}`,\n );\n } else {\n const when = new Date(result.deliverAt).toLocaleString();\n render.ok(\n `reminder set`,\n `${result.scheduledId.slice(0, 8)} · ${clay(message)} → ${toLabel} at ${when}`,\n );\n }\n });\n}\n",
|
|
98
98
|
"/**\n * `claudemesh profile` — view or edit your member profile.\n *\n * Profile fields (roleTag, groups, messageMode, displayName) are persistent\n * on the server. Changes are pushed to active sessions in real-time.\n */\n\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\n\nexport interface ProfileFlags {\n mesh?: string;\n \"role-tag\"?: string;\n groups?: string;\n \"message-mode\"?: string;\n name?: string;\n member?: string; // admin only: edit another member\n json?: boolean;\n}\n\nexport async function runProfile(flags: ProfileFlags): Promise<void> {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n\n const config = readConfig();\n if (config.meshes.length === 0) {\n console.error(\"No meshes joined. Run `claudemesh join <url>` first.\");\n process.exit(1);\n }\n\n // Pick mesh\n const mesh = flags.mesh\n ? config.meshes.find(m => m.slug === flags.mesh)\n : config.meshes[0]!;\n\n if (!mesh) {\n console.error(`Mesh \"${flags.mesh}\" not found. Joined: ${config.meshes.map(m => m.slug).join(\", \")}`);\n process.exit(1);\n }\n\n // Derive broker HTTP URL from WSS URL\n const brokerUrl = mesh.brokerUrl.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(/\\/ws\\/?$/, \"\");\n\n const hasEdits = flags[\"role-tag\"] !== undefined || flags.groups !== undefined || flags[\"message-mode\"] !== undefined || flags.name !== undefined;\n\n if (hasEdits) {\n // PATCH member profile\n const targetMemberId = flags.member ?? mesh.memberId; // TODO: resolve --member by name\n const body: Record<string, unknown> = {};\n if (flags.name !== undefined) body.displayName = flags.name;\n if (flags[\"role-tag\"] !== undefined) body.roleTag = flags[\"role-tag\"];\n if (flags.groups !== undefined) {\n body.groups = flags.groups.split(\",\").map(s => {\n const [name, role] = s.trim().split(\":\");\n return role ? { name: name!, role } : { name: name! };\n });\n }\n if (flags[\"message-mode\"] !== undefined) body.messageMode = flags[\"message-mode\"];\n\n const res = await fetch(`${brokerUrl}/mesh/${mesh.meshId}/member/${targetMemberId}`, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Member-Id\": mesh.memberId,\n },\n body: JSON.stringify(body),\n });\n\n const result = await res.json() as Record<string, unknown>;\n if (flags.json) {\n console.log(JSON.stringify(result, null, 2));\n } else if (result.ok) {\n console.log(green(\"✓ Profile updated\"));\n const member = result.member as Record<string, unknown>;\n printProfile(member, dim);\n } else {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n } else {\n // GET members list, show current user's profile\n const res = await fetch(`${brokerUrl}/mesh/${mesh.meshId}/members`);\n const result = await res.json() as { ok: boolean; members?: Array<Record<string, unknown>>; error?: string };\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n const me = result.members?.find(m => m.id === mesh.memberId);\n if (flags.json) {\n console.log(JSON.stringify(me ?? {}, null, 2));\n } else if (me) {\n printProfile(me, dim);\n } else {\n console.log(\"Member not found in mesh.\");\n }\n }\n}\n\nfunction printProfile(member: Record<string, unknown>, dim: (s: string) => string): void {\n const groups = member.groups as Array<{ name: string; role?: string }> | undefined;\n const groupStr = groups?.length\n ? groups.map(g => g.role ? `${g.name} (${g.role})` : g.name).join(\", \")\n : dim(\"(none)\");\n\n console.log(` Name: ${member.displayName ?? dim(\"(not set)\")}`);\n console.log(` Role: ${member.roleTag ?? dim(\"(not set)\")}`);\n console.log(` Groups: ${groupStr}`);\n console.log(` Messages: ${member.messageMode ?? \"push\"}`);\n console.log(` Access: ${member.permission ?? \"member\"}`);\n console.log(` Mesh: ${dim(String(member.id ?? \"\"))}`);\n}\n",
|
|
99
99
|
"import { login } from \"./login.js\";\n\n// Register and login use the same device-code flow.\n// The browser page (/cli-auth) redirects to /auth/login if not authenticated,\n// which has a \"Don't have an account? Register\" link.\nexport async function register(): Promise<number> {\n return login();\n}\n",
|
|
100
100
|
"import { logout as doLogout } from \"~/services/auth/facade.js\";\nimport { green, yellow, icons } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function logout(): Promise<number> {\n try {\n const { revoked } = await doLogout();\n\n if (revoked) {\n console.log(` ${green(icons.check)} Revoked session on claudemesh.com`);\n } else {\n console.log(` ${yellow(icons.warn)} Could not revoke session on claudemesh.com.`);\n console.log(` Revoke manually at https://claudemesh.com/dashboard/settings/sessions`);\n }\n console.log(` ${green(icons.check)} Removed local credentials.`);\n\n return EXIT.SUCCESS;\n } catch (err) {\n console.error(` ${icons.cross} Logout failed: ${err instanceof Error ? err.message : err}`);\n return EXIT.AUTH_FAILED;\n }\n}\n",
|
|
101
|
-
"import { whoAmI } from \"~/services/auth/facade.js\";\nimport {
|
|
102
|
-
"/**\n * `claudemesh install` / `uninstall` — manage Claude Code MCP registration.\n *\n * install:\n * 1. Preflight: bun is on PATH, this package's MCP entry is on disk.\n * 2. Read ~/.claude.json (or empty object if absent).\n * 3. Add/update `mcpServers.claudemesh` with the resolved entry path.\n * 4. Write back with 0600 perms.\n * 5. Verify via read-back, print success.\n *\n * uninstall:\n * 1. Read ~/.claude.json (bail if missing).\n * 2. Delete `mcpServers.claudemesh` if present.\n * 3. Write back.\n *\n * Both are idempotent — re-running install is a no-op if the entry is\n * already correct, and uninstall is a no-op if no entry exists.\n */\n\nimport {\n chmodSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir, platform } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { spawnSync } from \"node:child_process\";\nimport { readConfig } from \"~/services/config/facade.js\";\n\nconst MCP_NAME = \"claudemesh\";\nconst CLAUDE_CONFIG = join(homedir(), \".claude.json\");\nconst CLAUDE_SETTINGS = join(homedir(), \".claude\", \"settings.json\");\nconst HOOK_COMMAND_STOP = \"claudemesh hook idle\";\nconst HOOK_COMMAND_USER_PROMPT = \"claudemesh hook working\";\nconst HOOK_MARKER = \"claudemesh hook \";\n\ntype McpEntry = {\n command: string;\n args?: string[];\n env?: Record<string, string>;\n};\n\ninterface HookCommand {\n type: \"command\";\n command: string;\n}\ninterface HookMatcher {\n matcher?: string;\n hooks: HookCommand[];\n}\ntype HooksConfig = Record<string, HookMatcher[]>;\n\nfunction readClaudeConfig(): Record<string, unknown> {\n if (!existsSync(CLAUDE_CONFIG)) return {};\n const text = readFileSync(CLAUDE_CONFIG, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_CONFIG}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\n/**\n * Create a timestamped backup of ~/.claude.json before any write.\n */\nfunction backupClaudeConfig(): void {\n if (!existsSync(CLAUDE_CONFIG)) return;\n const backupDir = join(dirname(CLAUDE_CONFIG), \".claude\", \"backups\");\n mkdirSync(backupDir, { recursive: true });\n const ts = Date.now();\n const dest = join(backupDir, `.claude.json.pre-claudemesh.${ts}`);\n copyFileSync(CLAUDE_CONFIG, dest);\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * patches ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns the action taken (\"added\" | \"updated\" | \"unchanged\").\n */\nfunction patchMcpServer(entry: McpEntry): \"added\" | \"updated\" | \"unchanged\" {\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers =\n ((cfg.mcpServers as Record<string, McpEntry>) ?? {});\n if (!cfg.mcpServers) cfg.mcpServers = servers;\n\n const existing = servers[MCP_NAME];\n let action: \"added\" | \"updated\" | \"unchanged\";\n if (!existing) {\n servers[MCP_NAME] = entry;\n action = \"added\";\n } else if (entriesEqual(existing, entry)) {\n return \"unchanged\";\n } else {\n servers[MCP_NAME] = entry;\n action = \"updated\";\n }\n\n flushClaudeConfig(cfg);\n return action;\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * removes ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns true if an entry was removed.\n */\nfunction removeMcpServer(): boolean {\n if (!existsSync(CLAUDE_CONFIG)) return false;\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers = cfg.mcpServers as Record<string, McpEntry> | undefined;\n if (!servers || !(MCP_NAME in servers)) return false;\n delete servers[MCP_NAME];\n cfg.mcpServers = servers;\n flushClaudeConfig(cfg);\n return true;\n}\n\n/** Low-level write — callers must backup + merge first. */\nfunction flushClaudeConfig(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_CONFIG), { recursive: true });\n writeFileSync(\n CLAUDE_CONFIG,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n try {\n chmodSync(CLAUDE_CONFIG, 0o600);\n } catch {\n /* windows has no chmod */\n }\n}\n\n\n/** Check `bun` is on PATH — OS-agnostic, node:child_process. */\nfunction bunAvailable(): boolean {\n const res =\n platform() === \"win32\"\n ? spawnSync(\"where\", [\"bun\"])\n : spawnSync(\"sh\", [\"-c\", \"command -v bun\"]);\n return res.status === 0;\n}\n\n/** Absolute path to this CLI's entry file. */\nfunction resolveEntry(): string {\n const here = fileURLToPath(import.meta.url);\n // When bundled (dist/index.js), this file IS the entry → return self.\n // When running from source (src/index.ts via bun), walk up to the\n // dir + resolve index.ts.\n if (here.endsWith(\"/dist/index.js\") || here.endsWith(\"\\\\dist\\\\index.js\")) {\n return here;\n }\n return resolve(dirname(here), \"..\", \"index.ts\");\n}\n\n/**\n * Build the MCP server entry for Claude Code's config.\n *\n * Two modes:\n * - Installed globally (npm i -g claudemesh-cli): use `claudemesh`\n * as the command, relies on it being on PATH.\n * - Local dev (bun apps/cli/src/index.ts): use `bun <absolute-path>`.\n */\nfunction buildMcpEntry(entryPath: string): McpEntry {\n const isBundled = entryPath.endsWith(\"/dist/index.js\") ||\n entryPath.endsWith(\"\\\\dist\\\\index.js\");\n if (isBundled) {\n return {\n command: \"claudemesh\",\n args: [\"mcp\"],\n };\n }\n return {\n command: \"bun\",\n args: [entryPath, \"mcp\"],\n };\n}\n\nfunction entriesEqual(a: McpEntry, b: McpEntry): boolean {\n return (\n a.command === b.command &&\n JSON.stringify(a.args ?? []) === JSON.stringify(b.args ?? [])\n );\n}\n\nfunction readClaudeSettings(): Record<string, unknown> {\n if (!existsSync(CLAUDE_SETTINGS)) return {};\n const text = readFileSync(CLAUDE_SETTINGS, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_SETTINGS}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\nfunction writeClaudeSettings(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_SETTINGS), { recursive: true });\n writeFileSync(\n CLAUDE_SETTINGS,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n}\n\n/**\n * All claudemesh MCP tool names, prefixed for allowedTools.\n * These let Claude Code use claudemesh tools without --dangerously-skip-permissions.\n */\nconst CLAUDEMESH_TOOLS = [\n \"mcp__claudemesh__cancel_scheduled\",\n \"mcp__claudemesh__check_messages\",\n \"mcp__claudemesh__claim_task\",\n \"mcp__claudemesh__complete_task\",\n \"mcp__claudemesh__create_stream\",\n \"mcp__claudemesh__create_task\",\n \"mcp__claudemesh__delete_file\",\n \"mcp__claudemesh__file_status\",\n \"mcp__claudemesh__forget\",\n \"mcp__claudemesh__get_context\",\n \"mcp__claudemesh__get_file\",\n \"mcp__claudemesh__get_state\",\n \"mcp__claudemesh__grant_file_access\",\n \"mcp__claudemesh__graph_execute\",\n \"mcp__claudemesh__graph_query\",\n \"mcp__claudemesh__join_group\",\n \"mcp__claudemesh__leave_group\",\n \"mcp__claudemesh__list_collections\",\n \"mcp__claudemesh__list_contexts\",\n \"mcp__claudemesh__list_files\",\n \"mcp__claudemesh__list_peers\",\n \"mcp__claudemesh__list_scheduled\",\n \"mcp__claudemesh__list_state\",\n \"mcp__claudemesh__list_streams\",\n \"mcp__claudemesh__list_tasks\",\n \"mcp__claudemesh__mesh_execute\",\n \"mcp__claudemesh__mesh_info\",\n \"mcp__claudemesh__mesh_query\",\n \"mcp__claudemesh__mesh_schema\",\n \"mcp__claudemesh__message_status\",\n \"mcp__claudemesh__ping_mesh\",\n \"mcp__claudemesh__publish\",\n \"mcp__claudemesh__recall\",\n \"mcp__claudemesh__remember\",\n \"mcp__claudemesh__schedule_reminder\",\n \"mcp__claudemesh__send_message\",\n \"mcp__claudemesh__set_state\",\n \"mcp__claudemesh__set_status\",\n \"mcp__claudemesh__set_summary\",\n \"mcp__claudemesh__share_context\",\n \"mcp__claudemesh__share_file\",\n \"mcp__claudemesh__subscribe\",\n \"mcp__claudemesh__vector_delete\",\n \"mcp__claudemesh__vector_search\",\n \"mcp__claudemesh__vector_store\",\n];\n\n/**\n * Pre-approve all claudemesh MCP tools in allowedTools.\n * Merges into any existing list — never overwrites other entries.\n * Returns which tools were added vs already present.\n */\nfunction installAllowedTools(): { added: string[]; unchanged: number } {\n const settings = readClaudeSettings();\n const existing = new Set<string>((settings.allowedTools as string[] | undefined) ?? []);\n const toAdd = CLAUDEMESH_TOOLS.filter((t) => !existing.has(t));\n if (toAdd.length > 0) {\n settings.allowedTools = [...Array.from(existing), ...toAdd];\n writeClaudeSettings(settings);\n }\n return { added: toAdd, unchanged: CLAUDEMESH_TOOLS.length - toAdd.length };\n}\n\n/**\n * Remove claudemesh tools from allowedTools.\n * Leaves all other entries intact. Returns count removed.\n */\nfunction uninstallAllowedTools(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const existing = (settings.allowedTools as string[] | undefined) ?? [];\n const toolSet = new Set(CLAUDEMESH_TOOLS);\n const kept = existing.filter((t) => !toolSet.has(t));\n const removed = existing.length - kept.length;\n if (removed > 0) {\n settings.allowedTools = kept;\n writeClaudeSettings(settings);\n }\n return removed;\n}\n\n/**\n * Add a Stop + UserPromptSubmit hook entry to ~/.claude/settings.json,\n * idempotent on the command string. Returns counts for reporting.\n */\nfunction installHooks(): { added: number; unchanged: number } {\n const settings = readClaudeSettings();\n const hooks = ((settings.hooks ??= {}) as HooksConfig) ?? {};\n let added = 0;\n let unchanged = 0;\n\n const ensure = (event: string, command: string): void => {\n const list = (hooks[event] ??= []);\n const alreadyPresent = list.some((entry) =>\n (entry.hooks ?? []).some((h) => h.command === command),\n );\n if (alreadyPresent) {\n unchanged += 1;\n return;\n }\n list.push({ hooks: [{ type: \"command\", command }] });\n added += 1;\n };\n ensure(\"Stop\", HOOK_COMMAND_STOP);\n ensure(\"UserPromptSubmit\", HOOK_COMMAND_USER_PROMPT);\n\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return { added, unchanged };\n}\n\n/**\n * Remove every hook entry whose command contains \"claudemesh hook \"\n * from ~/.claude/settings.json. Idempotent. Returns removed count.\n */\nfunction uninstallHooks(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const hooks = settings.hooks as HooksConfig | undefined;\n if (!hooks) return 0;\n let removed = 0;\n for (const event of Object.keys(hooks)) {\n const kept: HookMatcher[] = [];\n for (const entry of hooks[event] ?? []) {\n const filtered = (entry.hooks ?? []).filter(\n (h) => !(h.command ?? \"\").includes(HOOK_MARKER),\n );\n removed += (entry.hooks ?? []).length - filtered.length;\n if (filtered.length > 0) kept.push({ ...entry, hooks: filtered });\n }\n if (kept.length === 0) delete hooks[event];\n else hooks[event] = kept;\n }\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return removed;\n}\n\nfunction installStatusLine(): { installed: boolean } {\n const settings = readClaudeSettings();\n const cmd = `claudemesh status-line`;\n const current = (settings as { statusLine?: { command?: string } }).statusLine;\n // If the user has their own statusLine command, don't clobber it.\n if (current?.command && !current.command.includes(\"claudemesh status-line\")) {\n return { installed: false };\n }\n (settings as { statusLine?: { type: string; command: string } }).statusLine = {\n type: \"command\",\n command: cmd,\n };\n writeClaudeSettings(settings);\n return { installed: true };\n}\n\nexport function runInstall(args: string[] = []): void {\n const skipHooks = args.includes(\"--no-hooks\");\n const wantStatusLine = args.includes(\"--status-line\");\n console.log(\"claudemesh install\");\n console.log(\"------------------\");\n\n const entry = resolveEntry();\n const isBundled = entry.endsWith(\"/dist/index.js\") ||\n entry.endsWith(\"\\\\dist\\\\index.js\");\n\n // Dev mode (running from src/) requires bun on PATH; bundled mode\n // (npm install -g) just uses node + the claudemesh bin shim.\n if (!isBundled && !bunAvailable()) {\n console.error(\n \"✗ `bun` is not on PATH. Install Bun first: https://bun.com\",\n );\n process.exit(1);\n }\n if (!existsSync(entry)) {\n console.error(`✗ MCP entry not found at ${entry}`);\n process.exit(1);\n }\n\n const desired = buildMcpEntry(entry);\n const action = patchMcpServer(desired);\n\n // Read-back verification.\n const verify = readClaudeConfig();\n const verifyServers = (verify.mcpServers ?? {}) as Record<string, McpEntry>;\n const stored = verifyServers[MCP_NAME];\n if (!stored || !entriesEqual(stored, desired)) {\n console.error(\n `✗ post-write verification failed — ${CLAUDE_CONFIG} may be corrupt`,\n );\n process.exit(1);\n }\n\n // ANSI color helpers — stick to 8-color set so terminals without\n // truecolor still render. Fall back to plain if NO_COLOR or dumb TERM.\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const bold = (s: string) => (useColor ? `\\x1b[1m${s}\\x1b[22m` : s);\n const yellow = (s: string) => (useColor ? `\\x1b[33m${s}\\x1b[39m` : s);\n const dim = (s: string) => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n\n console.log(`✓ MCP server \"${MCP_NAME}\" ${action}`);\n console.log(dim(` config: ${CLAUDE_CONFIG}`));\n console.log(\n dim(\n ` command: ${desired.command}${desired.args?.length ? \" \" + desired.args.join(\" \") : \"\"}`,\n ),\n );\n\n // allowedTools — pre-approve claudemesh MCP tools so peers don't need\n // --dangerously-skip-permissions just to call mesh tools.\n try {\n const { added, unchanged } = installAllowedTools();\n if (added.length > 0) {\n console.log(\n `✓ allowedTools: ${added.length} claudemesh tools pre-approved${unchanged > 0 ? `, ${unchanged} already present` : \"\"}`,\n );\n console.log(dim(` This lets claudemesh tools run without --dangerously-skip-permissions.`));\n console.log(dim(` Your existing allowedTools entries were preserved.`));\n } else {\n console.log(`✓ allowedTools: all ${unchanged} claudemesh tools already pre-approved`);\n }\n console.log(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n console.error(\n `⚠ allowedTools update failed: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n // Hooks — status accuracy (Stop/UserPromptSubmit → POST /hook/set-status).\n if (!skipHooks) {\n try {\n const { added, unchanged } = installHooks();\n if (added > 0) {\n console.log(\n `✓ Hooks registered (Stop + UserPromptSubmit) → ${added} added, ${unchanged} already present`,\n );\n } else {\n console.log(`✓ Hooks already registered (${unchanged} present)`);\n }\n console.log(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n console.error(\n `⚠ hook registration failed: ${e instanceof Error ? e.message : String(e)}`,\n );\n console.error(\n \" (MCP is still installed — hooks just skip. Retry with --no-hooks to suppress.)\",\n );\n }\n } else {\n console.log(dim(\"· Hooks skipped (--no-hooks)\"));\n }\n\n // Opt-in status line (shows mesh + peer count in Claude Code).\n if (wantStatusLine) {\n try {\n const { installed } = installStatusLine();\n if (installed) {\n console.log(`✓ Claude Code statusLine → \\`claudemesh status-line\\``);\n console.log(dim(` Shows: ◇ <mesh> · <online>/<total> online · <you>`));\n } else {\n console.log(dim(\"· statusLine already set to a custom command — left alone\"));\n }\n } catch (e) {\n console.error(`⚠ statusLine install failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n // Check if user has any meshes joined — nudge them if not.\n let hasMeshes = false;\n try {\n const meshConfig = readConfig();\n hasMeshes = meshConfig.meshes.length > 0;\n } catch {\n // Config missing or corrupt — treat as no meshes.\n }\n\n console.log(\"\");\n console.log(yellow(bold(\"⚠ RESTART CLAUDE CODE\")) + yellow(\" for MCP tools to appear.\"));\n\n if (!hasMeshes) {\n console.log(\"\");\n console.log(yellow(\"No meshes joined.\") + \" To connect with peers:\");\n console.log(\n ` ${bold(\"claudemesh <invite-url>\")}` +\n dim(\" — joins + launches in one step\"),\n );\n console.log(\n ` ${dim(\"Create one at\")} ${bold(\"https://claudemesh.com/dashboard\")}`,\n );\n } else {\n console.log(\"\");\n console.log(\n `Next: ${bold(\"claudemesh\")}` + dim(\" — launch with your joined mesh\"),\n );\n }\n\n console.log(\"\");\n console.log(dim(\"Optional:\"));\n console.log(dim(` claudemesh url-handler install # click-to-launch from email`));\n console.log(dim(` claudemesh install --status-line # live peer count in Claude Code`));\n console.log(dim(` claudemesh completions zsh # shell completions`));\n}\n\nexport function runUninstall(): void {\n console.log(\"claudemesh uninstall\");\n console.log(\"--------------------\");\n\n // MCP entry — only removes claudemesh, never touches other servers.\n if (removeMcpServer()) {\n console.log(`✓ MCP server \"${MCP_NAME}\" removed`);\n } else {\n console.log(`· MCP server \"${MCP_NAME}\" not present`);\n }\n\n // allowedTools\n try {\n const removed = uninstallAllowedTools();\n if (removed > 0) {\n console.log(`✓ allowedTools: ${removed} claudemesh tools removed`);\n } else {\n console.log(\"· No claudemesh allowedTools to remove\");\n }\n } catch (e) {\n console.error(\n `⚠ allowedTools removal failed: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n // Hooks\n try {\n const removed = uninstallHooks();\n if (removed > 0) {\n console.log(`✓ Hooks removed (${removed} entries)`);\n } else {\n console.log(\"· No claudemesh hooks to remove\");\n }\n } catch (e) {\n console.error(\n `⚠ hook removal failed: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n\n console.log(\"\");\n console.log(\"Restart Claude Code to drop the MCP connection + hooks.\");\n}\n",
|
|
103
|
-
"import { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { PATHS } from \"~/constants/paths.js\";\nimport {
|
|
101
|
+
"import { whoAmI } from \"~/services/auth/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function whoami(opts: { json?: boolean }): Promise<number> {\n const result = await whoAmI();\n\n if (opts.json) {\n console.log(JSON.stringify({ schema_version: \"1.0\", ...result }, null, 2));\n return EXIT.SUCCESS;\n }\n\n if (!result.signed_in) {\n render.err(\"Not signed in\", \"Run `claudemesh login` to sign in.\");\n return EXIT.AUTH_FAILED;\n }\n\n render.section(\"whoami\");\n render.kv([\n [\"user\", `${bold(result.user!.display_name)} ${dim(`(${result.user!.email})`)}`],\n [\"token\", `${result.token_source} ${dim(\"(~/.claudemesh/auth.json)\")}`],\n ...(result.meshes\n ? [[\"meshes\", `${result.meshes.owned} owned · ${result.meshes.guest} guest`] as [string, string]]\n : []),\n ]);\n render.blank();\n\n return EXIT.SUCCESS;\n}\n",
|
|
102
|
+
"/**\n * `claudemesh install` / `uninstall` — manage Claude Code MCP registration.\n *\n * install:\n * 1. Preflight: bun is on PATH, this package's MCP entry is on disk.\n * 2. Read ~/.claude.json (or empty object if absent).\n * 3. Add/update `mcpServers.claudemesh` with the resolved entry path.\n * 4. Write back with 0600 perms.\n * 5. Verify via read-back, print success.\n *\n * uninstall:\n * 1. Read ~/.claude.json (bail if missing).\n * 2. Delete `mcpServers.claudemesh` if present.\n * 3. Write back.\n *\n * Both are idempotent — re-running install is a no-op if the entry is\n * already correct, and uninstall is a no-op if no entry exists.\n */\n\nimport {\n chmodSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir, platform } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { spawnSync } from \"node:child_process\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, yellow } from \"~/ui/styles.js\";\n\nconst MCP_NAME = \"claudemesh\";\nconst CLAUDE_CONFIG = join(homedir(), \".claude.json\");\nconst CLAUDE_SETTINGS = join(homedir(), \".claude\", \"settings.json\");\nconst HOOK_COMMAND_STOP = \"claudemesh hook idle\";\nconst HOOK_COMMAND_USER_PROMPT = \"claudemesh hook working\";\nconst HOOK_MARKER = \"claudemesh hook \";\n\ntype McpEntry = {\n command: string;\n args?: string[];\n env?: Record<string, string>;\n};\n\ninterface HookCommand {\n type: \"command\";\n command: string;\n}\ninterface HookMatcher {\n matcher?: string;\n hooks: HookCommand[];\n}\ntype HooksConfig = Record<string, HookMatcher[]>;\n\nfunction readClaudeConfig(): Record<string, unknown> {\n if (!existsSync(CLAUDE_CONFIG)) return {};\n const text = readFileSync(CLAUDE_CONFIG, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_CONFIG}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\n/**\n * Create a timestamped backup of ~/.claude.json before any write.\n */\nfunction backupClaudeConfig(): void {\n if (!existsSync(CLAUDE_CONFIG)) return;\n const backupDir = join(dirname(CLAUDE_CONFIG), \".claude\", \"backups\");\n mkdirSync(backupDir, { recursive: true });\n const ts = Date.now();\n const dest = join(backupDir, `.claude.json.pre-claudemesh.${ts}`);\n copyFileSync(CLAUDE_CONFIG, dest);\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * patches ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns the action taken (\"added\" | \"updated\" | \"unchanged\").\n */\nfunction patchMcpServer(entry: McpEntry): \"added\" | \"updated\" | \"unchanged\" {\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers =\n ((cfg.mcpServers as Record<string, McpEntry>) ?? {});\n if (!cfg.mcpServers) cfg.mcpServers = servers;\n\n const existing = servers[MCP_NAME];\n let action: \"added\" | \"updated\" | \"unchanged\";\n if (!existing) {\n servers[MCP_NAME] = entry;\n action = \"added\";\n } else if (entriesEqual(existing, entry)) {\n return \"unchanged\";\n } else {\n servers[MCP_NAME] = entry;\n action = \"updated\";\n }\n\n flushClaudeConfig(cfg);\n return action;\n}\n\n/**\n * Atomic read-merge-write: re-reads ~/.claude.json at write time and\n * removes ONLY the `claudemesh` MCP entry. Never touches other keys.\n * Returns true if an entry was removed.\n */\nfunction removeMcpServer(): boolean {\n if (!existsSync(CLAUDE_CONFIG)) return false;\n backupClaudeConfig();\n const cfg = readClaudeConfig();\n const servers = cfg.mcpServers as Record<string, McpEntry> | undefined;\n if (!servers || !(MCP_NAME in servers)) return false;\n delete servers[MCP_NAME];\n cfg.mcpServers = servers;\n flushClaudeConfig(cfg);\n return true;\n}\n\n/** Low-level write — callers must backup + merge first. */\nfunction flushClaudeConfig(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_CONFIG), { recursive: true });\n writeFileSync(\n CLAUDE_CONFIG,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n try {\n chmodSync(CLAUDE_CONFIG, 0o600);\n } catch {\n /* windows has no chmod */\n }\n}\n\n\n/** Check `bun` is on PATH — OS-agnostic, node:child_process. */\nfunction bunAvailable(): boolean {\n const res =\n platform() === \"win32\"\n ? spawnSync(\"where\", [\"bun\"])\n : spawnSync(\"sh\", [\"-c\", \"command -v bun\"]);\n return res.status === 0;\n}\n\n/** Absolute path to this CLI's entry file. */\nfunction resolveEntry(): string {\n const here = fileURLToPath(import.meta.url);\n // When bundled (dist/index.js), this file IS the entry → return self.\n // When running from source (src/index.ts via bun), walk up to the\n // dir + resolve index.ts.\n if (here.endsWith(\"/dist/index.js\") || here.endsWith(\"\\\\dist\\\\index.js\")) {\n return here;\n }\n return resolve(dirname(here), \"..\", \"index.ts\");\n}\n\n/**\n * Build the MCP server entry for Claude Code's config.\n *\n * Two modes:\n * - Installed globally (npm i -g claudemesh-cli): use `claudemesh`\n * as the command, relies on it being on PATH.\n * - Local dev (bun apps/cli/src/index.ts): use `bun <absolute-path>`.\n */\nfunction buildMcpEntry(entryPath: string): McpEntry {\n const isBundled = entryPath.endsWith(\"/dist/index.js\") ||\n entryPath.endsWith(\"\\\\dist\\\\index.js\");\n if (isBundled) {\n return {\n command: \"claudemesh\",\n args: [\"mcp\"],\n };\n }\n return {\n command: \"bun\",\n args: [entryPath, \"mcp\"],\n };\n}\n\nfunction entriesEqual(a: McpEntry, b: McpEntry): boolean {\n return (\n a.command === b.command &&\n JSON.stringify(a.args ?? []) === JSON.stringify(b.args ?? [])\n );\n}\n\nfunction readClaudeSettings(): Record<string, unknown> {\n if (!existsSync(CLAUDE_SETTINGS)) return {};\n const text = readFileSync(CLAUDE_SETTINGS, \"utf-8\").trim();\n if (!text) return {};\n try {\n return JSON.parse(text) as Record<string, unknown>;\n } catch (e) {\n throw new Error(\n `failed to parse ${CLAUDE_SETTINGS}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n}\n\nfunction writeClaudeSettings(obj: Record<string, unknown>): void {\n mkdirSync(dirname(CLAUDE_SETTINGS), { recursive: true });\n writeFileSync(\n CLAUDE_SETTINGS,\n JSON.stringify(obj, null, 2) + \"\\n\",\n \"utf-8\",\n );\n}\n\n/**\n * All claudemesh MCP tool names, prefixed for allowedTools.\n * These let Claude Code use claudemesh tools without --dangerously-skip-permissions.\n */\nconst CLAUDEMESH_TOOLS = [\n \"mcp__claudemesh__cancel_scheduled\",\n \"mcp__claudemesh__check_messages\",\n \"mcp__claudemesh__claim_task\",\n \"mcp__claudemesh__complete_task\",\n \"mcp__claudemesh__create_stream\",\n \"mcp__claudemesh__create_task\",\n \"mcp__claudemesh__delete_file\",\n \"mcp__claudemesh__file_status\",\n \"mcp__claudemesh__forget\",\n \"mcp__claudemesh__get_context\",\n \"mcp__claudemesh__get_file\",\n \"mcp__claudemesh__get_state\",\n \"mcp__claudemesh__grant_file_access\",\n \"mcp__claudemesh__graph_execute\",\n \"mcp__claudemesh__graph_query\",\n \"mcp__claudemesh__join_group\",\n \"mcp__claudemesh__leave_group\",\n \"mcp__claudemesh__list_collections\",\n \"mcp__claudemesh__list_contexts\",\n \"mcp__claudemesh__list_files\",\n \"mcp__claudemesh__list_peers\",\n \"mcp__claudemesh__list_scheduled\",\n \"mcp__claudemesh__list_state\",\n \"mcp__claudemesh__list_streams\",\n \"mcp__claudemesh__list_tasks\",\n \"mcp__claudemesh__mesh_execute\",\n \"mcp__claudemesh__mesh_info\",\n \"mcp__claudemesh__mesh_query\",\n \"mcp__claudemesh__mesh_schema\",\n \"mcp__claudemesh__message_status\",\n \"mcp__claudemesh__ping_mesh\",\n \"mcp__claudemesh__publish\",\n \"mcp__claudemesh__recall\",\n \"mcp__claudemesh__remember\",\n \"mcp__claudemesh__schedule_reminder\",\n \"mcp__claudemesh__send_message\",\n \"mcp__claudemesh__set_state\",\n \"mcp__claudemesh__set_status\",\n \"mcp__claudemesh__set_summary\",\n \"mcp__claudemesh__share_context\",\n \"mcp__claudemesh__share_file\",\n \"mcp__claudemesh__subscribe\",\n \"mcp__claudemesh__vector_delete\",\n \"mcp__claudemesh__vector_search\",\n \"mcp__claudemesh__vector_store\",\n];\n\n/**\n * Pre-approve all claudemesh MCP tools in allowedTools.\n * Merges into any existing list — never overwrites other entries.\n * Returns which tools were added vs already present.\n */\nfunction installAllowedTools(): { added: string[]; unchanged: number } {\n const settings = readClaudeSettings();\n const existing = new Set<string>((settings.allowedTools as string[] | undefined) ?? []);\n const toAdd = CLAUDEMESH_TOOLS.filter((t) => !existing.has(t));\n if (toAdd.length > 0) {\n settings.allowedTools = [...Array.from(existing), ...toAdd];\n writeClaudeSettings(settings);\n }\n return { added: toAdd, unchanged: CLAUDEMESH_TOOLS.length - toAdd.length };\n}\n\n/**\n * Remove claudemesh tools from allowedTools.\n * Leaves all other entries intact. Returns count removed.\n */\nfunction uninstallAllowedTools(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const existing = (settings.allowedTools as string[] | undefined) ?? [];\n const toolSet = new Set(CLAUDEMESH_TOOLS);\n const kept = existing.filter((t) => !toolSet.has(t));\n const removed = existing.length - kept.length;\n if (removed > 0) {\n settings.allowedTools = kept;\n writeClaudeSettings(settings);\n }\n return removed;\n}\n\n/**\n * Add a Stop + UserPromptSubmit hook entry to ~/.claude/settings.json,\n * idempotent on the command string. Returns counts for reporting.\n */\nfunction installHooks(): { added: number; unchanged: number } {\n const settings = readClaudeSettings();\n const hooks = ((settings.hooks ??= {}) as HooksConfig) ?? {};\n let added = 0;\n let unchanged = 0;\n\n const ensure = (event: string, command: string): void => {\n const list = (hooks[event] ??= []);\n const alreadyPresent = list.some((entry) =>\n (entry.hooks ?? []).some((h) => h.command === command),\n );\n if (alreadyPresent) {\n unchanged += 1;\n return;\n }\n list.push({ hooks: [{ type: \"command\", command }] });\n added += 1;\n };\n ensure(\"Stop\", HOOK_COMMAND_STOP);\n ensure(\"UserPromptSubmit\", HOOK_COMMAND_USER_PROMPT);\n\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return { added, unchanged };\n}\n\n/**\n * Remove every hook entry whose command contains \"claudemesh hook \"\n * from ~/.claude/settings.json. Idempotent. Returns removed count.\n */\nfunction uninstallHooks(): number {\n if (!existsSync(CLAUDE_SETTINGS)) return 0;\n const settings = readClaudeSettings();\n const hooks = settings.hooks as HooksConfig | undefined;\n if (!hooks) return 0;\n let removed = 0;\n for (const event of Object.keys(hooks)) {\n const kept: HookMatcher[] = [];\n for (const entry of hooks[event] ?? []) {\n const filtered = (entry.hooks ?? []).filter(\n (h) => !(h.command ?? \"\").includes(HOOK_MARKER),\n );\n removed += (entry.hooks ?? []).length - filtered.length;\n if (filtered.length > 0) kept.push({ ...entry, hooks: filtered });\n }\n if (kept.length === 0) delete hooks[event];\n else hooks[event] = kept;\n }\n settings.hooks = hooks;\n writeClaudeSettings(settings);\n return removed;\n}\n\nfunction installStatusLine(): { installed: boolean } {\n const settings = readClaudeSettings();\n const cmd = `claudemesh status-line`;\n const current = (settings as { statusLine?: { command?: string } }).statusLine;\n // If the user has their own statusLine command, don't clobber it.\n if (current?.command && !current.command.includes(\"claudemesh status-line\")) {\n return { installed: false };\n }\n (settings as { statusLine?: { type: string; command: string } }).statusLine = {\n type: \"command\",\n command: cmd,\n };\n writeClaudeSettings(settings);\n return { installed: true };\n}\n\nexport function runInstall(args: string[] = []): void {\n const skipHooks = args.includes(\"--no-hooks\");\n const wantStatusLine = args.includes(\"--status-line\");\n render.section(\"claudemesh install\");\n\n const entry = resolveEntry();\n const isBundled = entry.endsWith(\"/dist/index.js\") ||\n entry.endsWith(\"\\\\dist\\\\index.js\");\n\n if (!isBundled && !bunAvailable()) {\n render.err(\"`bun` is not on PATH.\", \"Install Bun first: https://bun.com\");\n process.exit(1);\n }\n if (!existsSync(entry)) {\n render.err(`MCP entry not found at ${entry}`);\n process.exit(1);\n }\n\n const desired = buildMcpEntry(entry);\n const action = patchMcpServer(desired);\n\n const verify = readClaudeConfig();\n const verifyServers = (verify.mcpServers ?? {}) as Record<string, McpEntry>;\n const stored = verifyServers[MCP_NAME];\n if (!stored || !entriesEqual(stored, desired)) {\n render.err(\"post-write verification failed\", `${CLAUDE_CONFIG} may be corrupt`);\n process.exit(1);\n }\n\n render.ok(`MCP server \"${bold(MCP_NAME)}\" ${action}`);\n render.kv([\n [\"config\", dim(CLAUDE_CONFIG)],\n [\"command\", dim(`${desired.command}${desired.args?.length ? \" \" + desired.args.join(\" \") : \"\"}`)],\n ]);\n\n try {\n const { added, unchanged } = installAllowedTools();\n if (added.length > 0) {\n render.ok(\n `allowedTools: ${added.length} claudemesh tools pre-approved`,\n unchanged > 0 ? `${unchanged} already present` : undefined,\n );\n render.info(dim(\"This lets claudemesh tools run without --dangerously-skip-permissions.\"));\n render.info(dim(\"Your existing allowedTools entries were preserved.\"));\n } else {\n render.ok(`allowedTools: all ${unchanged} claudemesh tools already pre-approved`);\n }\n render.info(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n render.warn(`allowedTools update failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n if (!skipHooks) {\n try {\n const { added, unchanged } = installHooks();\n if (added > 0) {\n render.ok(\n `Hooks registered (Stop + UserPromptSubmit)`,\n `${added} added, ${unchanged} already present`,\n );\n } else {\n render.ok(`Hooks already registered`, `${unchanged} present`);\n }\n render.info(dim(` config: ${CLAUDE_SETTINGS}`));\n } catch (e) {\n render.warn(\n `hook registration failed: ${e instanceof Error ? e.message : String(e)}`,\n \"MCP is still installed — hooks just skip. Retry with --no-hooks to suppress.\",\n );\n }\n } else {\n render.info(dim(\"· Hooks skipped (--no-hooks)\"));\n }\n\n if (wantStatusLine) {\n try {\n const { installed } = installStatusLine();\n if (installed) {\n render.ok(`Claude Code statusLine → ${clay(\"claudemesh status-line\")}`);\n render.info(dim(\" Shows: ◇ <mesh> · <online>/<total> online · <you>\"));\n } else {\n render.info(dim(\"· statusLine already set to a custom command — left alone\"));\n }\n } catch (e) {\n render.warn(`statusLine install failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n let hasMeshes = false;\n try {\n const meshConfig = readConfig();\n hasMeshes = meshConfig.meshes.length > 0;\n } catch {}\n\n render.blank();\n render.warn(`${bold(\"RESTART CLAUDE CODE\")} ${yellow(\"for MCP tools to appear.\")}`);\n\n if (!hasMeshes) {\n render.blank();\n render.info(`${yellow(\"No meshes joined.\")} To connect with peers:`);\n render.info(` ${bold(\"claudemesh <invite-url>\")}${dim(\" — joins + launches in one step\")}`);\n render.info(` ${dim(\"Create one at\")} ${bold(\"https://claudemesh.com/dashboard\")}`);\n } else {\n render.blank();\n render.info(`Next: ${bold(\"claudemesh\")}${dim(\" — launch with your joined mesh\")}`);\n }\n\n render.blank();\n render.info(dim(\"Optional:\"));\n render.info(dim(` claudemesh url-handler install # click-to-launch from email`));\n render.info(dim(` claudemesh install --status-line # live peer count in Claude Code`));\n render.info(dim(` claudemesh completions zsh # shell completions`));\n}\n\nexport function runUninstall(): void {\n render.section(\"claudemesh uninstall\");\n\n if (removeMcpServer()) {\n render.ok(`MCP server \"${bold(MCP_NAME)}\" removed`);\n } else {\n render.info(dim(`· MCP server \"${MCP_NAME}\" not present`));\n }\n\n try {\n const removed = uninstallAllowedTools();\n if (removed > 0) {\n render.ok(`allowedTools: ${removed} claudemesh tools removed`);\n } else {\n render.info(dim(\"· No claudemesh allowedTools to remove\"));\n }\n } catch (e) {\n render.warn(`allowedTools removal failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n try {\n const removed = uninstallHooks();\n if (removed > 0) {\n render.ok(`Hooks removed`, `${removed} entries`);\n } else {\n render.info(dim(\"· No claudemesh hooks to remove\"));\n }\n } catch (e) {\n render.warn(`hook removal failed: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n render.blank();\n render.info(\"Restart Claude Code to drop the MCP connection + hooks.\");\n}\n",
|
|
103
|
+
"import { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { PATHS } from \"~/constants/paths.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport async function uninstall(): Promise<number> {\n let removed = 0;\n\n if (existsSync(PATHS.CLAUDE_JSON)) {\n try {\n const raw = readFileSync(PATHS.CLAUDE_JSON, \"utf-8\");\n const config = JSON.parse(raw) as Record<string, unknown>;\n const servers = config.mcpServers as Record<string, unknown> | undefined;\n if (servers && \"claudemesh\" in servers) {\n delete servers.claudemesh;\n writeFileSync(PATHS.CLAUDE_JSON, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n render.ok(\"removed MCP server\", dim(\"~/.claude.json\"));\n removed++;\n }\n } catch {}\n }\n\n if (existsSync(PATHS.CLAUDE_SETTINGS)) {\n try {\n const raw = readFileSync(PATHS.CLAUDE_SETTINGS, \"utf-8\");\n const config = JSON.parse(raw) as Record<string, unknown>;\n const hooks = config.hooks as Record<string, unknown[]> | undefined;\n if (hooks) {\n let removedHooks = 0;\n for (const [event, entries] of Object.entries(hooks)) {\n if (!Array.isArray(entries)) continue;\n const filtered = entries.filter((h: unknown) => {\n const cmd = typeof h === \"object\" && h !== null && \"command\" in h ? String((h as Record<string, unknown>).command) : \"\";\n return !cmd.includes(\"claudemesh\");\n });\n if (filtered.length < entries.length) {\n removedHooks += entries.length - filtered.length;\n if (filtered.length === 0) delete hooks[event];\n else hooks[event] = filtered;\n }\n }\n if (removedHooks > 0) {\n writeFileSync(PATHS.CLAUDE_SETTINGS, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n render.ok(`removed ${removedHooks} claudemesh hook${removedHooks === 1 ? \"\" : \"s\"}`, dim(\"settings.json\"));\n removed++;\n }\n }\n } catch {}\n }\n\n if (removed === 0) {\n render.info(dim(\"Nothing to remove — claudemesh was not installed.\"));\n }\n\n return EXIT.SUCCESS;\n}\n",
|
|
104
104
|
"/**\n * `claudemesh doctor` — diagnostic checks.\n *\n * Walks through the install + runtime preconditions and prints each\n * as pass/fail with a fix hint on failure. Exit 0 if everything\n * passes, 1 otherwise.\n */\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { homedir, platform } from \"node:os\";\nimport { join } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport { VERSION, URLS } from \"~/constants/urls.js\";\n\ninterface Check {\n name: string;\n pass: boolean;\n detail?: string;\n fix?: string;\n}\n\nfunction checkNode(): Check {\n const major = Number(process.versions.node.split(\".\")[0]);\n return {\n name: \"Node.js >= 20\",\n pass: major >= 20,\n detail: `v${process.versions.node}`,\n fix: \"Install Node 20 or newer (https://nodejs.org)\",\n };\n}\n\nfunction checkClaudeOnPath(): Check {\n const res =\n platform() === \"win32\"\n ? spawnSync(\"where\", [\"claude\"])\n : spawnSync(\"sh\", [\"-c\", \"command -v claude\"]);\n const onPath = res.status === 0;\n const location = onPath ? res.stdout.toString().trim().split(\"\\n\")[0] : undefined;\n return {\n name: \"claude binary on PATH\",\n pass: onPath,\n detail: location,\n fix: \"Install Claude Code (https://claude.com/claude-code)\",\n };\n}\n\nfunction checkMcpRegistered(): Check {\n const claudeConfig = join(homedir(), \".claude.json\");\n if (!existsSync(claudeConfig)) {\n return {\n name: \"claudemesh MCP registered in ~/.claude.json\",\n pass: false,\n fix: \"Run `claudemesh install`\",\n };\n }\n try {\n const cfg = JSON.parse(readFileSync(claudeConfig, \"utf-8\")) as {\n mcpServers?: Record<string, unknown>;\n };\n const registered = Boolean(cfg.mcpServers?.[\"claudemesh\"]);\n return {\n name: \"claudemesh MCP registered in ~/.claude.json\",\n pass: registered,\n fix: registered ? undefined : \"Run `claudemesh install`\",\n };\n } catch (e) {\n return {\n name: \"claudemesh MCP registered in ~/.claude.json\",\n pass: false,\n detail: e instanceof Error ? e.message : String(e),\n fix: \"Check ~/.claude.json for JSON parse errors\",\n };\n }\n}\n\nfunction checkHooksRegistered(): Check {\n const settings = join(homedir(), \".claude\", \"settings.json\");\n if (!existsSync(settings)) {\n return {\n name: \"Status hooks registered in ~/.claude/settings.json\",\n pass: false,\n fix: \"Run `claudemesh install` (remove --no-hooks)\",\n };\n }\n try {\n const raw = readFileSync(settings, \"utf-8\");\n const has = raw.includes(\"claudemesh hook \");\n return {\n name: \"Status hooks registered in ~/.claude/settings.json\",\n pass: has,\n fix: has ? undefined : \"Run `claudemesh install` (remove --no-hooks)\",\n };\n } catch (e) {\n return {\n name: \"Status hooks registered in ~/.claude/settings.json\",\n pass: false,\n detail: e instanceof Error ? e.message : String(e),\n };\n }\n}\n\nfunction checkConfigFile(): Check {\n const path = getConfigPath();\n if (!existsSync(path)) {\n return {\n name: \"~/.claudemesh/config.json exists and parses\",\n pass: true,\n detail: \"not created yet (fine — no meshes joined)\",\n };\n }\n try {\n readConfig();\n const st = statSync(path);\n const mode = (st.mode & 0o777).toString(8);\n const secure = platform() === \"win32\" || mode === \"600\";\n return {\n name: \"~/.claudemesh/config.json parses + chmod 0600\",\n pass: secure,\n detail: platform() === \"win32\" ? \"chmod skipped on Windows\" : `0${mode}`,\n fix: secure ? undefined : `chmod 600 ${path}`,\n };\n } catch (e) {\n return {\n name: \"~/.claudemesh/config.json exists and parses\",\n pass: false,\n detail: e instanceof Error ? e.message : String(e),\n fix: \"Inspect or delete ~/.claudemesh/config.json and re-join\",\n };\n }\n}\n\nfunction checkKeypairs(): Check {\n try {\n const cfg = readConfig();\n if (cfg.meshes.length === 0) {\n return {\n name: \"Mesh keypairs valid\",\n pass: true,\n detail: \"no meshes joined\",\n };\n }\n for (const m of cfg.meshes) {\n if (m.pubkey.length !== 64 || !/^[0-9a-f]+$/.test(m.pubkey)) {\n return {\n name: \"Mesh keypairs valid\",\n pass: false,\n detail: `${m.slug}: pubkey malformed`,\n fix: `Leave + re-join the mesh: claudemesh leave ${m.slug}`,\n };\n }\n if (m.secretKey.length !== 128 || !/^[0-9a-f]+$/.test(m.secretKey)) {\n return {\n name: \"Mesh keypairs valid\",\n pass: false,\n detail: `${m.slug}: secret key malformed`,\n fix: `Leave + re-join the mesh: claudemesh leave ${m.slug}`,\n };\n }\n }\n return {\n name: \"Mesh keypairs valid\",\n pass: true,\n detail: `${cfg.meshes.length} mesh(es)`,\n };\n } catch (e) {\n return {\n name: \"Mesh keypairs valid\",\n pass: false,\n detail: e instanceof Error ? e.message : String(e),\n };\n }\n}\n\nasync function checkBrokerWs(): Promise<Check> {\n const wsUrl = URLS.BROKER;\n const start = Date.now();\n try {\n const WebSocket = (await import(\"ws\")).default;\n const ws = new WebSocket(wsUrl);\n const result = await new Promise<Check>((resolve) => {\n const timer = setTimeout(() => {\n try { ws.close(); } catch { /* noop */ }\n resolve({\n name: \"Broker WebSocket reachable\",\n pass: false,\n detail: `timeout after 5s (${wsUrl})`,\n fix: \"Check firewall/proxy. Broker at ic.claudemesh.com:443 over WSS.\",\n });\n }, 5000);\n ws.once(\"open\", () => {\n clearTimeout(timer);\n const latency = Date.now() - start;\n try { ws.close(); } catch { /* noop */ }\n resolve({\n name: \"Broker WebSocket reachable\",\n pass: true,\n detail: `${latency}ms to ${wsUrl}`,\n });\n });\n ws.once(\"error\", (e) => {\n clearTimeout(timer);\n resolve({\n name: \"Broker WebSocket reachable\",\n pass: false,\n detail: e.message,\n fix: \"Check network. Broker URL can be overridden via CLAUDEMESH_BROKER_URL.\",\n });\n });\n });\n return result;\n } catch (e) {\n return {\n name: \"Broker WebSocket reachable\",\n pass: false,\n detail: e instanceof Error ? e.message : String(e),\n };\n }\n}\n\nasync function checkNpmLatest(): Promise<Check> {\n try {\n const res = await fetch(URLS.NPM_REGISTRY, { signal: AbortSignal.timeout(5000) });\n if (!res.ok) {\n return { name: \"CLI up-to-date\", pass: true, detail: `npm unreachable (${res.status}) — skipped` };\n }\n const body = (await res.json()) as { \"dist-tags\"?: { alpha?: string; latest?: string } };\n const latest = body[\"dist-tags\"]?.latest ?? body[\"dist-tags\"]?.alpha;\n if (!latest) return { name: \"CLI up-to-date\", pass: true, detail: \"no dist-tag — skipped\" };\n const up = latest === VERSION;\n return {\n name: \"CLI up-to-date\",\n pass: up,\n detail: up ? `latest ${latest}` : `installed ${VERSION} → latest ${latest}`,\n fix: up ? undefined : \"npm i -g claudemesh-cli\",\n };\n } catch {\n return { name: \"CLI up-to-date\", pass: true, detail: \"npm check skipped\" };\n }\n}\n\nexport async function runDoctor(): Promise<void> {\n const useColor =\n !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n const red = (s: string): string => (useColor ? `\\x1b[31m${s}\\x1b[39m` : s);\n\n console.log(`claudemesh doctor (v${VERSION})`);\n console.log(\"─\".repeat(60));\n\n const checks: Check[] = [\n checkNode(),\n checkClaudeOnPath(),\n checkMcpRegistered(),\n checkHooksRegistered(),\n checkConfigFile(),\n checkKeypairs(),\n await checkBrokerWs(),\n await checkNpmLatest(),\n ];\n\n for (const c of checks) {\n const mark = c.pass ? green(\"✓\") : red(\"✗\");\n const detail = c.detail ? dim(` (${c.detail})`) : \"\";\n console.log(`${mark} ${c.name}${detail}`);\n if (!c.pass && c.fix) {\n console.log(dim(` → ${c.fix}`));\n }\n }\n\n const failing = checks.filter((c) => !c.pass);\n console.log(\"\");\n if (failing.length === 0) {\n console.log(green(\"All checks passed.\"));\n process.exit(0);\n } else {\n console.log(red(`${failing.length} check(s) failed.`));\n process.exit(1);\n }\n}\n",
|
|
105
105
|
"/**\n * `claudemesh status` — one-shot health report.\n *\n * Reports CLI version, config path + permissions, each joined mesh\n * with broker reachability (WS handshake probe). Exit 0 if every\n * mesh's broker is reachable, 1 otherwise.\n */\n\nimport { statSync, existsSync } from \"node:fs\";\nimport WebSocket from \"ws\";\nimport { readConfig, getConfigPath } from \"~/services/config/facade.js\";\nimport { VERSION } from \"~/constants/urls.js\";\nimport { render } from \"~/ui/render.js\";\n\ninterface MeshStatus {\n slug: string;\n brokerUrl: string;\n pubkey: string;\n reachable: boolean;\n error?: string;\n latencyMs?: number;\n}\n\nasync function probeBroker(url: string, timeoutMs = 4000): Promise<{ ok: boolean; error?: string; latencyMs?: number }> {\n return new Promise((resolve) => {\n const started = Date.now();\n const ws = new WebSocket(url);\n const timer = setTimeout(() => {\n try { ws.terminate(); } catch { /* noop */ }\n resolve({ ok: false, error: \"timeout\" });\n }, timeoutMs);\n ws.on(\"open\", () => {\n clearTimeout(timer);\n const latency = Date.now() - started;\n try { ws.close(); } catch { /* noop */ }\n resolve({ ok: true, latencyMs: latency });\n });\n ws.on(\"error\", (err) => {\n clearTimeout(timer);\n resolve({ ok: false, error: err.message });\n });\n });\n}\n\nexport async function runStatus(): Promise<void> {\n render.section(`status (v${VERSION})`);\n\n const configPath = getConfigPath();\n let configPermsNote = \"missing\";\n if (existsSync(configPath)) {\n const mode = (statSync(configPath).mode & 0o777).toString(8).padStart(4, \"0\");\n configPermsNote = mode === \"0600\" ? `${mode}` : `${mode} — expected 0600`;\n }\n render.kv([[\"config\", configPath], [\"perms\", configPermsNote]]);\n\n const config = readConfig();\n if (config.meshes.length === 0) {\n render.blank();\n render.info(\"No meshes joined.\");\n render.hint(\"claudemesh <invite-url> # join + launch\");\n process.exit(0);\n }\n\n render.blank();\n render.heading(`meshes (${config.meshes.length})`);\n\n const results: MeshStatus[] = [];\n for (const m of config.meshes) {\n const probe = await probeBroker(m.brokerUrl);\n const entry: MeshStatus = {\n slug: m.slug,\n brokerUrl: m.brokerUrl,\n pubkey: m.pubkey,\n reachable: probe.ok,\n error: probe.error,\n latencyMs: probe.latencyMs,\n };\n results.push(entry);\n if (probe.ok) {\n render.ok(`${m.slug}`, `${probe.latencyMs}ms → ${m.brokerUrl}`);\n } else {\n render.err(`${m.slug}`, `unreachable (${probe.error})`);\n }\n }\n\n render.blank();\n for (const r of results) {\n render.kv([[r.slug, `${r.pubkey.slice(0, 16)}…`]]);\n }\n\n const allOk = results.every((r) => r.reachable);\n render.blank();\n if (allOk) {\n render.ok(\"all meshes reachable\");\n process.exit(0);\n } else {\n const broken = results.filter((r) => !r.reachable).length;\n render.err(`${broken} of ${results.length} mesh(es) unreachable`);\n process.exit(1);\n }\n}\n",
|
|
106
106
|
"/**\n * `claudemesh sync` — re-sync meshes from dashboard account.\n *\n * Opens browser for OAuth, receives sync token, calls broker /cli-sync,\n * merges new meshes into local config.\n */\n\nimport { createInterface } from \"node:readline\";\nimport { hostname } from \"node:os\";\nimport { readConfig, writeConfig } from \"~/services/config/facade.js\";\nimport { startCallbackListener, generatePairingCode, syncWithBroker } from \"~/services/auth/facade.js\";\nimport { openBrowser } from \"~/services/spawn/facade.js\";\nimport { generateKeypair } from \"~/services/crypto/facade.js\";\n\nexport async function runSync(args: { force?: boolean }): Promise<void> {\n const useColor = !process.env.NO_COLOR && process.env.TERM !== \"dumb\" && process.stdout.isTTY;\n const dim = (s: string): string => (useColor ? `\\x1b[2m${s}\\x1b[22m` : s);\n const green = (s: string): string => (useColor ? `\\x1b[32m${s}\\x1b[39m` : s);\n\n const config = readConfig();\n\n const code = generatePairingCode();\n const listener = await startCallbackListener();\n const url = `https://claudemesh.com/cli-auth?port=${listener.port}&code=${code}&action=sync`;\n\n console.log(`Opening browser to sync meshes...`);\n console.log(dim(`Visit: ${url}`));\n await openBrowser(url);\n\n // Race: localhost callback vs manual paste vs timeout\n const manualPromise = new Promise<string>((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n rl.question(\"Paste sync token (or wait for browser): \", (answer) => {\n rl.close();\n if (answer.trim()) resolve(answer.trim());\n });\n });\n\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 15 * 60_000);\n });\n\n const syncToken = await Promise.race([\n listener.token,\n manualPromise,\n timeoutPromise,\n ]);\n\n listener.close();\n\n if (!syncToken) {\n console.error(\"Timed out waiting for sign-in.\");\n process.exit(1);\n }\n\n // Use existing keypair from first mesh, or generate new\n const keypair = config.meshes.length > 0\n ? { publicKey: config.meshes[0]!.pubkey, secretKey: config.meshes[0]!.secretKey }\n : await generateKeypair();\n\n const displayName = config.displayName ?? `${hostname()}-${process.pid}`;\n\n const result = await syncWithBroker(syncToken, keypair.publicKey, displayName);\n\n // Merge: add new meshes, skip duplicates\n let added = 0;\n for (const m of result.meshes) {\n if (config.meshes.some(existing => existing.meshId === m.mesh_id)) continue;\n config.meshes.push({\n meshId: m.mesh_id,\n memberId: m.member_id,\n slug: m.slug,\n name: m.slug,\n pubkey: keypair.publicKey,\n secretKey: keypair.secretKey,\n brokerUrl: m.broker_url,\n joinedAt: new Date().toISOString(),\n });\n added++;\n }\n config.accountId = result.account_id;\n writeConfig(config);\n\n if (added > 0) {\n console.log(green(`✓ Added ${added} new mesh(es)`));\n } else {\n console.log(`Already up to date (${config.meshes.length} meshes)`);\n }\n}\n",
|
|
@@ -112,9 +112,9 @@
|
|
|
112
112
|
"import { existsSync, readFileSync } from \"node:fs\";\nimport { PATHS } from \"~/constants/paths.js\";\nimport type { CheckResult } from \"./types.js\";\n\nconst HEX_64 = /^[0-9a-f]{64}$/;\nconst HEX_128 = /^[0-9a-f]{128}$/;\n\nexport function checkKeypairsValid(): CheckResult {\n if (!existsSync(PATHS.CONFIG_FILE)) {\n return { name: \"keypairs-valid\", ok: true, message: \"No config (first run)\" };\n }\n try {\n const raw = readFileSync(PATHS.CONFIG_FILE, \"utf-8\");\n const config = JSON.parse(raw) as { meshes?: Array<{ pubkey?: string; secretKey?: string; slug?: string }> };\n const meshes = config.meshes ?? [];\n if (meshes.length === 0) {\n return { name: \"keypairs-valid\", ok: true, message: \"No joined meshes\" };\n }\n for (const m of meshes) {\n if (!m.pubkey || !HEX_64.test(m.pubkey)) {\n return { name: \"keypairs-valid\", ok: false, message: `Invalid pubkey for mesh ${m.slug ?? \"unknown\"}` };\n }\n if (!m.secretKey || !HEX_128.test(m.secretKey)) {\n return { name: \"keypairs-valid\", ok: false, message: `Invalid secretKey for mesh ${m.slug ?? \"unknown\"}` };\n }\n }\n return { name: \"keypairs-valid\", ok: true, message: `${meshes.length} keypair(s) valid` };\n } catch {\n return { name: \"keypairs-valid\", ok: false, message: \"Could not parse config.json\" };\n }\n}\n",
|
|
113
113
|
"import { checkNodeVersion } from \"./check-node-version.js\";\nimport { checkClaudeBinary } from \"./check-claude-binary.js\";\nimport { checkMcpRegistered } from \"./check-mcp-registered.js\";\nimport { checkHooksRegistered } from \"./check-hooks-registered.js\";\nimport { checkConfigPerms } from \"./check-config-perms.js\";\nimport { checkKeypairsValid } from \"./check-keypairs-valid.js\";\nimport type { CheckResult } from \"./types.js\";\n\nexport type { CheckResult };\n\nconst CHECKS: Record<string, () => CheckResult> = {\n \"node-version\": checkNodeVersion,\n \"claude-binary\": checkClaudeBinary,\n \"mcp-registered\": checkMcpRegistered,\n \"hooks-registered\": checkHooksRegistered,\n \"config-perms\": checkConfigPerms,\n \"keypairs-valid\": checkKeypairsValid,\n};\n\nexport function runAllChecks(): CheckResult[] {\n return Object.values(CHECKS).map((fn) => fn());\n}\n\nexport function runCheck(name: string): CheckResult | null {\n const fn = CHECKS[name];\n return fn ? fn() : null;\n}\n",
|
|
114
114
|
"/**\n * `claudemesh test` — integration test battery against live broker.\n *\n * Creates a temporary mesh, runs all operations, verifies results,\n * then cleans up. Safe to run repeatedly.\n */\n\nimport { getStoredToken } from \"~/services/auth/facade.js\";\nimport { create as createMesh, leave as leaveMesh } from \"~/services/mesh/facade.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { request } from \"~/services/api/facade.js\";\nimport { generateKeypair, sign, verify } from \"~/services/crypto/facade.js\";\nimport { BrokerClient } from \"~/services/broker/facade.js\";\nimport { URLS } from \"~/constants/urls.js\";\nimport { runAllChecks } from \"~/services/health/facade.js\";\nimport { green, red, dim, bold, yellow, icons } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nconst BROKER_HTTP = URLS.BROKER.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n\ninterface TestResult {\n name: string;\n ok: boolean;\n detail: string;\n ms: number;\n}\n\nconst results: TestResult[] = [];\n\nasync function run(name: string, fn: () => Promise<string>): Promise<boolean> {\n const start = Date.now();\n try {\n const detail = await fn();\n results.push({ name, ok: true, detail, ms: Date.now() - start });\n console.log(` ${green(icons.check)} ${name.padEnd(18)} ${dim(detail)}`);\n return true;\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n results.push({ name, ok: false, detail, ms: Date.now() - start });\n console.log(` ${red(icons.cross)} ${name.padEnd(18)} ${red(detail)}`);\n return false;\n }\n}\n\nexport async function runTest(): Promise<number> {\n const started = Date.now();\n const meshSlug = `test-e2e-${Date.now().toString(36)}`;\n\n console.log(\"\");\n console.log(` ${bold(\"claudemesh integration test\")}`);\n console.log(` ${dim(\"─\".repeat(40))}`);\n console.log(\"\");\n\n // --- Auth ---\n const auth = getStoredToken();\n if (!auth) {\n console.log(` ${red(icons.cross)} Not signed in. Run ${bold(\"claudemesh login\")} first.\\n`);\n return EXIT.AUTH_FAILED;\n }\n\n let userId = \"\";\n try {\n const payload = JSON.parse(Buffer.from(auth.session_token.split(\".\")[1]!, \"base64url\").toString()) as { sub?: string };\n userId = payload.sub ?? \"\";\n } catch {}\n\n await run(\"auth\", async () => {\n if (!userId) throw new Error(\"invalid token\");\n return `signed in as ${auth.user.display_name || auth.user.email}`;\n });\n\n // --- Doctor checks (non-blocking — warns but doesn't fail) ---\n {\n const checks = runAllChecks();\n const failed = checks.filter(c => !c.ok);\n if (failed.length > 0) {\n const warns = failed.map(c => c.name).join(\", \");\n console.log(` ${yellow(icons.warn)} ${\"doctor\".padEnd(18)} ${dim(warns + \" (non-blocking)\")}`);\n } else {\n console.log(` ${green(icons.check)} ${\"doctor\".padEnd(18)} ${dim(checks.length + \" checks passed\")}`);\n }\n }\n\n // --- Crypto ---\n await run(\"crypto\", async () => {\n const kp = await generateKeypair();\n const sig = await sign(\"test-message\", kp.secretKey);\n const valid = await verify(\"test-message\", sig, kp.publicKey);\n if (!valid) throw new Error(\"signature verification failed\");\n const tampered = await verify(\"tampered\", sig, kp.publicKey);\n if (tampered) throw new Error(\"tampered message should not verify\");\n return \"keypair + sign + verify round-trip\";\n });\n\n // --- Mesh create ---\n let meshId = \"\";\n const createOk = await run(\"create\", async () => {\n const result = await createMesh(meshSlug);\n meshId = result.id;\n return `created \"${result.slug}\" (${result.id.slice(0, 8)}…)`;\n });\n\n if (!createOk) {\n console.log(`\\n ${red(\"Aborting — mesh creation failed.\")}\\n`);\n return EXIT.INTERNAL_ERROR;\n }\n\n // --- List ---\n await run(\"list\", async () => {\n const config = readConfig();\n const found = config.meshes.find(m => m.slug === meshSlug);\n if (!found) throw new Error(\"mesh not in local config\");\n return `found ${meshSlug} in local config`;\n });\n\n // --- Server list ---\n await run(\"server list\", async () => {\n const res = await request<{ meshes: Array<{ slug: string }> }>({\n path: `/cli/meshes?user_id=${userId}`,\n baseUrl: BROKER_HTTP,\n });\n const found = res.meshes?.find(m => m.slug === meshSlug);\n if (!found) throw new Error(\"mesh not on server\");\n return `found ${meshSlug} on server (${res.meshes.length} total)`;\n });\n\n // --- Connect (broker WS) ---\n const config = readConfig();\n const meshConfig = config.meshes.find(m => m.slug === meshSlug);\n let client: BrokerClient | null = null;\n\n if (meshConfig) {\n await run(\"connect\", async () => {\n client = new BrokerClient(meshConfig, { displayName: \"test-runner\" });\n await client.connect();\n if (client.status !== \"open\") throw new Error(\"status: \" + client.status);\n return \"broker connected, hello_ack received\";\n });\n\n // --- Peers ---\n if (client) {\n await run(\"peers\", async () => {\n const peers = await client!.listPeers();\n return `${peers.length} peer(s) online`;\n });\n\n // --- Send ---\n await run(\"send\", async () => {\n const result = await client!.send(\"*\", \"test-battery-ping\", \"low\");\n if (!result.ok) throw new Error(result.error ?? \"send failed\");\n return `broadcast sent (${result.messageId?.slice(0, 8)}…)`;\n });\n\n // --- Remember ---\n let memoryId: string | null = null;\n await run(\"remember\", async () => {\n memoryId = await client!.remember(\"integration test battery memory probe\", [\"test\", \"e2e\"]);\n if (!memoryId) throw new Error(\"no memory ID returned\");\n return `stored (${memoryId.slice(0, 8)}…)`;\n });\n\n // --- Recall (postgres full-text search) ---\n await run(\"recall\", async () => {\n await new Promise(r => setTimeout(r, 500));\n const memories = await client!.recall(\"integration test battery\");\n if (memories.length === 0) throw new Error(\"no memories found\");\n return `${memories.length} result(s)`;\n });\n\n // --- State ---\n const stateVal = \"test-value-\" + Date.now();\n await run(\"state set\", async () => {\n await client!.setState(\"test-e2e-key\", stateVal);\n return \"key written\";\n });\n\n await run(\"state get\", async () => {\n await new Promise(r => setTimeout(r, 500));\n const result = await client!.getState(\"test-e2e-key\");\n if (!result) throw new Error(\"key not found\");\n if (String(result.value) !== stateVal) throw new Error(`expected ${stateVal}, got ${result.value}`);\n return `read back: ${String(result.value).slice(0, 20)}…`;\n });\n\n // --- Clean up memory ---\n if (memoryId) {\n await run(\"forget\", async () => {\n await client!.forget(memoryId!);\n return \"memory cleaned up\";\n });\n }\n\n // --- Disconnect ---\n await run(\"disconnect\", async () => {\n client!.close();\n return \"connection closed\";\n });\n }\n }\n\n // --- Delete mesh ---\n await run(\"delete\", async () => {\n // Server-side delete\n await request({\n path: `/cli/mesh/${meshSlug}`,\n method: \"DELETE\",\n body: { user_id: userId },\n baseUrl: BROKER_HTTP,\n });\n leaveMesh(meshSlug);\n return `deleted \"${meshSlug}\" from server + local`;\n });\n\n // --- Summary ---\n const passed = results.filter(r => r.ok).length;\n const failed = results.filter(r => !r.ok).length;\n const totalMs = Date.now() - started;\n\n console.log(\"\");\n if (failed === 0) {\n console.log(` ${green(bold(`${passed}/${results.length} passed`))} ${dim(`(${(totalMs / 1000).toFixed(1)}s)`)}`);\n } else {\n console.log(` ${red(bold(`${failed} failed`))}, ${green(`${passed} passed`)} ${dim(`(${(totalMs / 1000).toFixed(1)}s)`)}`);\n }\n console.log(\"\");\n\n return failed > 0 ? EXIT.INTERNAL_ERROR : EXIT.SUCCESS;\n}\n",
|
|
115
|
-
"/**\n * `claudemesh completions <shell>` — emit a completion script for bash / zsh / fish.\n *\n * Users pipe it into their shell's completion system:\n * bash: claudemesh completions bash > /etc/bash_completion.d/claudemesh\n * zsh: claudemesh completions zsh > ~/.zfunc/_claudemesh (add $fpath)\n * fish: claudemesh completions fish > ~/.config/fish/completions/claudemesh.fish\n */\n\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nconst COMMANDS = [\n \"create\", \"new\", \"join\", \"add\", \"launch\", \"connect\", \"disconnect\",\n \"list\", \"ls\", \"delete\", \"rm\", \"rename\", \"share\", \"invite\",\n \"peers\", \"send\", \"inbox\", \"state\", \"info\",\n \"remember\", \"recall\", \"remind\", \"profile\", \"status\",\n \"login\", \"register\", \"logout\", \"whoami\",\n \"install\", \"uninstall\", \"doctor\", \"sync\",\n \"completions\", \"verify\", \"url-handler\",\n \"help\",\n];\n\nconst FLAGS = [\n \"--help\", \"-h\", \"--version\", \"-V\", \"--json\", \"--yes\", \"-y\",\n \"--quiet\", \"-q\", \"--mesh\", \"--name\", \"--join\", \"--resume\",\n];\n\nfunction bash(): string {\n return `# claudemesh bash completion\n_claudemesh_complete() {\n local cur prev words cword\n _init_completion || return\n\n local commands=\"${COMMANDS.join(\" \")}\"\n local flags=\"${FLAGS.join(\" \")}\"\n\n if [[ \\${cword} -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"\\${commands}\" -- \"\\${cur}\") )\n return 0\n fi\n\n case \"\\${cur}\" in\n -*)\n COMPREPLY=( $(compgen -W \"\\${flags}\" -- \"\\${cur}\") )\n return 0\n ;;\n esac\n}\ncomplete -F _claudemesh_complete claudemesh\n`;\n}\n\nfunction zsh(): string {\n return `#compdef claudemesh\n# claudemesh zsh completion\n\n_claudemesh() {\n local -a commands flags\n commands=(\n${COMMANDS.map((c) => ` '${c}'`).join(\"\\n\")}\n )\n flags=(\n${FLAGS.map((f) => ` '${f}'`).join(\"\\n\")}\n )\n\n if (( CURRENT == 2 )); then\n _describe 'command' commands\n return\n fi\n\n case $words[2] in\n join|add|launch|connect)\n _arguments '--name[display name]' '--join[invite url]' '-y[non-interactive]' '--mesh[mesh slug]'\n ;;\n share|invite)\n _arguments '--mesh[mesh slug]' '--json[machine-readable]'\n ;;\n *)\n _values 'flag' $flags\n ;;\n esac\n}\ncompdef _claudemesh claudemesh\n`;\n}\n\nfunction fish(): string {\n const cmdLines = COMMANDS.map(\n (c) => `complete -c claudemesh -n '__fish_use_subcommand' -a '${c}'`,\n ).join(\"\\n\");\n return `# claudemesh fish completion\n${cmdLines}\ncomplete -c claudemesh -l help -s h -d 'show help'\ncomplete -c claudemesh -l version -s V -d 'show version'\ncomplete -c claudemesh -l json -d 'machine-readable output'\ncomplete -c claudemesh -l yes -s y -d 'skip confirmations'\ncomplete -c claudemesh -l mesh -d 'mesh slug'\ncomplete -c claudemesh -l name -d 'display name'\ncomplete -c claudemesh -l join -d 'invite url'\n`;\n}\n\nexport async function runCompletions(shell: string | undefined): Promise<number> {\n if (!shell) {\n
|
|
116
|
-
"/**\n * `claudemesh verify [peer]` — show safety numbers for a peer.\n *\n * A safety number is a derived, human-readable fingerprint of the peer's\n * ed25519 public key plus your own. Both parties see the same digits,\n * so out-of-band comparison (call, in-person) detects MITM.\n *\n * Format: 6 groups of 5 decimal digits. Rendered from the first 15 bytes\n * of SHA-256(sorted(your_pubkey ++ peer_pubkey)). Matches the Signal /\n * Whatsapp pattern so users don't have to learn a new mental model.\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { createHash } from \"node:crypto\";\n\nfunction safetyNumber(myPubkey: string, peerPubkey: string): string {\n const a = Buffer.from(myPubkey, \"hex\");\n const b = Buffer.from(peerPubkey, \"hex\");\n const [lo, hi] = Buffer.compare(a, b) < 0 ? [a, b] : [b, a];\n const hash = createHash(\"sha256\").update(lo).update(hi).digest();\n
|
|
117
|
-
"/**\n * `claudemesh url-handler <install|uninstall>` — register a `claudemesh://`\n * URL scheme handler with the OS so click-to-launch from email/web works.\n *\n * Scheme: `claudemesh://join/<code-or-token>` or `claudemesh://i/<code>`.\n * When activated, the OS opens the handler, which runs\n * claudemesh https://claudemesh.com/i/<code>\n * (inline join + launch path via the bare-URL dispatch in cli.ts).\n *\n * Platforms:\n * - darwin → LSRegisterURL via a per-user .app bundle in\n * ~/Library/Application\\ Support/claudemesh/ClaudemeshHandler.app\n * - linux → xdg-mime default + a .desktop file in\n * ~/.local/share/applications/claudemesh.desktop\n * - win32 → HKCU\\Software\\Classes\\claudemesh (registry write)\n */\n\nimport { platform, homedir } from \"node:os\";\nimport { existsSync, mkdirSync, writeFileSync, rmSync, chmodSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nfunction resolveClaudemeshBin(): string {\n // argv[1] points to the running binary; prefer that over $PATH so we\n // register the exact install the user ran.\n return process.argv[1] ?? \"claudemesh\";\n}\n\nfunction installDarwin(): number {\n const binPath = resolveClaudemeshBin();\n const appDir = join(homedir(), \"Library\", \"Application Support\", \"claudemesh\", \"ClaudemeshHandler.app\");\n const contents = join(appDir, \"Contents\");\n const macOS = join(contents, \"MacOS\");\n mkdirSync(macOS, { recursive: true });\n\n const plist = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>CFBundleIdentifier</key><string>com.claudemesh.handler</string>\n <key>CFBundleName</key><string>Claudemesh</string>\n <key>CFBundleExecutable</key><string>open-url</string>\n <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>\n <key>CFBundlePackageType</key><string>APPL</string>\n <key>CFBundleSignature</key><string>????</string>\n <key>CFBundleShortVersionString</key><string>1.0</string>\n <key>LSUIElement</key><true/>\n <key>CFBundleURLTypes</key>\n <array>\n <dict>\n <key>CFBundleURLName</key><string>Claudemesh Invite</string>\n <key>CFBundleURLSchemes</key>\n <array><string>claudemesh</string></array>\n </dict>\n </array>\n</dict>\n</plist>`;\n writeFileSync(join(contents, \"Info.plist\"), plist);\n\n // Tiny shell shim: parse the URL and re-invoke the CLI in a Terminal\n // window so the user sees launch output.\n const shim = `#!/bin/sh\nURL=\"$1\"\nCODE=\\${URL#claudemesh://}\nCODE=\\${CODE#i/}\nCODE=\\${CODE#join/}\n# Open a Terminal window so the user can see claude launching\nosascript <<EOF\ntell application \"Terminal\"\n activate\n do script \"${binPath.replace(/\"/g, '\\\\\"')} https://claudemesh.com/i/$CODE\"\nend tell\nEOF\n`;\n const shimPath = join(macOS, \"open-url\");\n writeFileSync(shimPath, shim);\n chmodSync(shimPath, 0o755);\n\n // Re-register with Launch Services so the scheme resolves here.\n const lsreg = spawnSync(\"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister\", [\"-f\", appDir], { encoding: \"utf-8\" });\n if (lsreg.status !== 0) {\n
|
|
115
|
+
"/**\n * `claudemesh completions <shell>` — emit a completion script for bash / zsh / fish.\n *\n * Users pipe it into their shell's completion system:\n * bash: claudemesh completions bash > /etc/bash_completion.d/claudemesh\n * zsh: claudemesh completions zsh > ~/.zfunc/_claudemesh (add $fpath)\n * fish: claudemesh completions fish > ~/.config/fish/completions/claudemesh.fish\n */\n\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { render } from \"~/ui/render.js\";\n\nconst COMMANDS = [\n \"create\", \"new\", \"join\", \"add\", \"launch\", \"connect\", \"disconnect\",\n \"list\", \"ls\", \"delete\", \"rm\", \"rename\", \"share\", \"invite\",\n \"peers\", \"send\", \"inbox\", \"state\", \"info\",\n \"remember\", \"recall\", \"remind\", \"profile\", \"status\",\n \"login\", \"register\", \"logout\", \"whoami\",\n \"install\", \"uninstall\", \"doctor\", \"sync\",\n \"completions\", \"verify\", \"url-handler\",\n \"help\",\n];\n\nconst FLAGS = [\n \"--help\", \"-h\", \"--version\", \"-V\", \"--json\", \"--yes\", \"-y\",\n \"--quiet\", \"-q\", \"--mesh\", \"--name\", \"--join\", \"--resume\",\n];\n\nfunction bash(): string {\n return `# claudemesh bash completion\n_claudemesh_complete() {\n local cur prev words cword\n _init_completion || return\n\n local commands=\"${COMMANDS.join(\" \")}\"\n local flags=\"${FLAGS.join(\" \")}\"\n\n if [[ \\${cword} -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"\\${commands}\" -- \"\\${cur}\") )\n return 0\n fi\n\n case \"\\${cur}\" in\n -*)\n COMPREPLY=( $(compgen -W \"\\${flags}\" -- \"\\${cur}\") )\n return 0\n ;;\n esac\n}\ncomplete -F _claudemesh_complete claudemesh\n`;\n}\n\nfunction zsh(): string {\n return `#compdef claudemesh\n# claudemesh zsh completion\n\n_claudemesh() {\n local -a commands flags\n commands=(\n${COMMANDS.map((c) => ` '${c}'`).join(\"\\n\")}\n )\n flags=(\n${FLAGS.map((f) => ` '${f}'`).join(\"\\n\")}\n )\n\n if (( CURRENT == 2 )); then\n _describe 'command' commands\n return\n fi\n\n case $words[2] in\n join|add|launch|connect)\n _arguments '--name[display name]' '--join[invite url]' '-y[non-interactive]' '--mesh[mesh slug]'\n ;;\n share|invite)\n _arguments '--mesh[mesh slug]' '--json[machine-readable]'\n ;;\n *)\n _values 'flag' $flags\n ;;\n esac\n}\ncompdef _claudemesh claudemesh\n`;\n}\n\nfunction fish(): string {\n const cmdLines = COMMANDS.map(\n (c) => `complete -c claudemesh -n '__fish_use_subcommand' -a '${c}'`,\n ).join(\"\\n\");\n return `# claudemesh fish completion\n${cmdLines}\ncomplete -c claudemesh -l help -s h -d 'show help'\ncomplete -c claudemesh -l version -s V -d 'show version'\ncomplete -c claudemesh -l json -d 'machine-readable output'\ncomplete -c claudemesh -l yes -s y -d 'skip confirmations'\ncomplete -c claudemesh -l mesh -d 'mesh slug'\ncomplete -c claudemesh -l name -d 'display name'\ncomplete -c claudemesh -l join -d 'invite url'\n`;\n}\n\nexport async function runCompletions(shell: string | undefined): Promise<number> {\n if (!shell) {\n render.err(\"Usage: claudemesh completions <bash|zsh|fish>\");\n return EXIT.INVALID_ARGS;\n }\n switch (shell.toLowerCase()) {\n case \"bash\":\n process.stdout.write(bash());\n return EXIT.SUCCESS;\n case \"zsh\":\n process.stdout.write(zsh());\n return EXIT.SUCCESS;\n case \"fish\":\n process.stdout.write(fish());\n return EXIT.SUCCESS;\n default:\n render.err(`Unsupported shell: ${shell}`, \"use bash, zsh, or fish.\");\n return EXIT.INVALID_ARGS;\n }\n}\n",
|
|
116
|
+
"/**\n * `claudemesh verify [peer]` — show safety numbers for a peer.\n *\n * A safety number is a derived, human-readable fingerprint of the peer's\n * ed25519 public key plus your own. Both parties see the same digits,\n * so out-of-band comparison (call, in-person) detects MITM.\n *\n * Format: 6 groups of 5 decimal digits. Rendered from the first 15 bytes\n * of SHA-256(sorted(your_pubkey ++ peer_pubkey)). Matches the Signal /\n * Whatsapp pattern so users don't have to learn a new mental model.\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { createHash } from \"node:crypto\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\n\nfunction safetyNumber(myPubkey: string, peerPubkey: string): string {\n const a = Buffer.from(myPubkey, \"hex\");\n const b = Buffer.from(peerPubkey, \"hex\");\n const [lo, hi] = Buffer.compare(a, b) < 0 ? [a, b] : [b, a];\n const hash = createHash(\"sha256\").update(lo).update(hi).digest();\n const bits: number[] = [];\n for (let i = 0; i < 15; i++) {\n for (let b = 7; b >= 0; b--) {\n bits.push((hash[i]! >> b) & 1);\n }\n }\n const groups: string[] = [];\n for (let g = 0; g < 6; g++) {\n let val = 0;\n for (let i = 0; i < 20; i++) val = val * 2 + bits[g * 20 + i]!;\n groups.push(String(val % 100000).padStart(5, \"0\"));\n }\n return groups.join(\" \");\n}\n\nexport async function runVerify(\n target: string | undefined,\n opts: { mesh?: string; json?: boolean } = {},\n): Promise<number> {\n const config = readConfig();\n const meshSlug = opts.mesh ?? config.meshes[0]?.slug;\n if (!meshSlug) {\n render.err(\"No meshes joined.\", \"Run `claudemesh join <url>` first.\");\n return EXIT.NOT_FOUND;\n }\n const mesh = config.meshes.find((m) => m.slug === meshSlug);\n if (!mesh) {\n render.err(`Mesh \"${meshSlug}\" not found locally.`);\n return EXIT.NOT_FOUND;\n }\n\n return await withMesh({ meshSlug }, async (client) => {\n const peers = await client.listPeers();\n const targets = target\n ? peers.filter((p) => p.displayName === target || p.pubkey === target || p.pubkey.startsWith(target))\n : peers;\n if (targets.length === 0) {\n render.err(`No peer matching \"${target ?? \"(all)\"}\" on mesh ${meshSlug}.`);\n return EXIT.NOT_FOUND;\n }\n\n if (opts.json) {\n console.log(JSON.stringify(targets.map((p) => ({\n mesh: meshSlug,\n peer: p.displayName,\n pubkey: p.pubkey,\n safetyNumber: safetyNumber(mesh.pubkey, p.pubkey),\n })), null, 2));\n return EXIT.SUCCESS;\n }\n\n render.section(`safety numbers on ${meshSlug}`);\n for (const p of targets) {\n const sn = safetyNumber(mesh.pubkey, p.pubkey);\n process.stdout.write(` ${bold(p.displayName)}\\n`);\n process.stdout.write(` ${clay(sn)}\\n`);\n process.stdout.write(` ${dim(`pubkey ${p.pubkey.slice(0, 16)}…`)}\\n\\n`);\n }\n render.hint(\"Compare these digits with your peer (phone, in person — not chat).\");\n render.hint(\"If they match on both sides, the channel is not being intercepted.\");\n render.blank();\n return EXIT.SUCCESS;\n });\n}\n",
|
|
117
|
+
"/**\n * `claudemesh url-handler <install|uninstall>` — register a `claudemesh://`\n * URL scheme handler with the OS so click-to-launch from email/web works.\n *\n * Scheme: `claudemesh://join/<code-or-token>` or `claudemesh://i/<code>`.\n * When activated, the OS opens the handler, which runs\n * claudemesh https://claudemesh.com/i/<code>\n * (inline join + launch path via the bare-URL dispatch in cli.ts).\n *\n * Platforms:\n * - darwin → LSRegisterURL via a per-user .app bundle in\n * ~/Library/Application\\ Support/claudemesh/ClaudemeshHandler.app\n * - linux → xdg-mime default + a .desktop file in\n * ~/.local/share/applications/claudemesh.desktop\n * - win32 → HKCU\\Software\\Classes\\claudemesh (registry write)\n */\n\nimport { platform, homedir } from \"node:os\";\nimport { existsSync, mkdirSync, writeFileSync, rmSync, chmodSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { render } from \"~/ui/render.js\";\nimport { dim } from \"~/ui/styles.js\";\n\nfunction resolveClaudemeshBin(): string {\n // argv[1] points to the running binary; prefer that over $PATH so we\n // register the exact install the user ran.\n return process.argv[1] ?? \"claudemesh\";\n}\n\nfunction installDarwin(): number {\n const binPath = resolveClaudemeshBin();\n const appDir = join(homedir(), \"Library\", \"Application Support\", \"claudemesh\", \"ClaudemeshHandler.app\");\n const contents = join(appDir, \"Contents\");\n const macOS = join(contents, \"MacOS\");\n mkdirSync(macOS, { recursive: true });\n\n const plist = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>CFBundleIdentifier</key><string>com.claudemesh.handler</string>\n <key>CFBundleName</key><string>Claudemesh</string>\n <key>CFBundleExecutable</key><string>open-url</string>\n <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>\n <key>CFBundlePackageType</key><string>APPL</string>\n <key>CFBundleSignature</key><string>????</string>\n <key>CFBundleShortVersionString</key><string>1.0</string>\n <key>LSUIElement</key><true/>\n <key>CFBundleURLTypes</key>\n <array>\n <dict>\n <key>CFBundleURLName</key><string>Claudemesh Invite</string>\n <key>CFBundleURLSchemes</key>\n <array><string>claudemesh</string></array>\n </dict>\n </array>\n</dict>\n</plist>`;\n writeFileSync(join(contents, \"Info.plist\"), plist);\n\n // Tiny shell shim: parse the URL and re-invoke the CLI in a Terminal\n // window so the user sees launch output.\n const shim = `#!/bin/sh\nURL=\"$1\"\nCODE=\\${URL#claudemesh://}\nCODE=\\${CODE#i/}\nCODE=\\${CODE#join/}\n# Open a Terminal window so the user can see claude launching\nosascript <<EOF\ntell application \"Terminal\"\n activate\n do script \"${binPath.replace(/\"/g, '\\\\\"')} https://claudemesh.com/i/$CODE\"\nend tell\nEOF\n`;\n const shimPath = join(macOS, \"open-url\");\n writeFileSync(shimPath, shim);\n chmodSync(shimPath, 0o755);\n\n // Re-register with Launch Services so the scheme resolves here.\n const lsreg = spawnSync(\"/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister\", [\"-f\", appDir], { encoding: \"utf-8\" });\n if (lsreg.status !== 0) {\n render.warn(\"lsregister returned non-zero\", \"scheme may not activate until Finder rescans.\");\n }\n render.ok(\"registered claudemesh:// scheme on macOS\", dim(appDir));\n return EXIT.SUCCESS;\n}\n\nfunction installLinux(): number {\n const binPath = resolveClaudemeshBin();\n const appsDir = join(homedir(), \".local\", \"share\", \"applications\");\n mkdirSync(appsDir, { recursive: true });\n const desktop = `[Desktop Entry]\nType=Application\nName=Claudemesh\nComment=Claudemesh invite handler\nExec=${binPath} %u\nStartupNotify=false\nTerminal=true\nMimeType=x-scheme-handler/claudemesh;\nNoDisplay=true\n`;\n const desktopPath = join(appsDir, \"claudemesh.desktop\");\n writeFileSync(desktopPath, desktop);\n\n const xdg1 = spawnSync(\"xdg-mime\", [\"default\", \"claudemesh.desktop\", \"x-scheme-handler/claudemesh\"], { encoding: \"utf-8\" });\n if (xdg1.status !== 0) {\n render.warn(\"xdg-mime not available — skipped mime default registration\");\n }\n const xdg2 = spawnSync(\"update-desktop-database\", [appsDir], { encoding: \"utf-8\" });\n xdg2.status ?? 0; // best effort\n render.ok(\"registered claudemesh:// scheme on Linux\", dim(desktopPath));\n return EXIT.SUCCESS;\n}\n\nfunction installWindows(): number {\n const binPath = resolveClaudemeshBin().replace(/\\//g, \"\\\\\");\n const lines = [\n `Windows Registry Editor Version 5.00`,\n ``,\n `[HKEY_CURRENT_USER\\\\Software\\\\Classes\\\\claudemesh]`,\n `@=\"URL:Claudemesh Invite\"`,\n `\"URL Protocol\"=\"\"`,\n ``,\n `[HKEY_CURRENT_USER\\\\Software\\\\Classes\\\\claudemesh\\\\shell\\\\open\\\\command]`,\n `@=\"\\\\\"${binPath.replace(/\\\\/g, \"\\\\\\\\\")}\\\\\" \\\\\"%1\\\\\"\"`,\n ];\n const regPath = join(homedir(), \"claudemesh-handler.reg\");\n writeFileSync(regPath, lines.join(\"\\r\\n\"));\n const res = spawnSync(\"reg.exe\", [\"import\", regPath], { encoding: \"utf-8\" });\n if (res.status !== 0) {\n render.warn(\"reg.exe import failed\", `manual: double-click ${regPath}`);\n return EXIT.INTERNAL_ERROR;\n }\n render.ok(\"registered claudemesh:// scheme on Windows\");\n return EXIT.SUCCESS;\n}\n\nfunction uninstallDarwin(): number {\n const appDir = join(homedir(), \"Library\", \"Application Support\", \"claudemesh\", \"ClaudemeshHandler.app\");\n if (existsSync(appDir)) rmSync(appDir, { recursive: true, force: true });\n render.ok(\"removed claudemesh:// handler on macOS\");\n return EXIT.SUCCESS;\n}\n\nfunction uninstallLinux(): number {\n const desktopPath = join(homedir(), \".local\", \"share\", \"applications\", \"claudemesh.desktop\");\n if (existsSync(desktopPath)) rmSync(desktopPath, { force: true });\n render.ok(\"removed claudemesh:// handler on Linux\");\n return EXIT.SUCCESS;\n}\n\nfunction uninstallWindows(): number {\n spawnSync(\"reg.exe\", [\"delete\", \"HKCU\\\\Software\\\\Classes\\\\claudemesh\", \"/f\"], { encoding: \"utf-8\" });\n render.ok(\"removed claudemesh:// handler on Windows\");\n return EXIT.SUCCESS;\n}\n\nexport async function runUrlHandler(action: string | undefined): Promise<number> {\n const act = action ?? \"install\";\n const p = platform();\n if (act === \"install\") {\n if (p === \"darwin\") return installDarwin();\n if (p === \"linux\") return installLinux();\n if (p === \"win32\") return installWindows();\n } else if (act === \"uninstall\" || act === \"remove\") {\n if (p === \"darwin\") return uninstallDarwin();\n if (p === \"linux\") return uninstallLinux();\n if (p === \"win32\") return uninstallWindows();\n } else {\n render.err(\"Usage: claudemesh url-handler <install|uninstall>\");\n return EXIT.INVALID_ARGS;\n }\n render.err(`Unsupported platform: ${p}`);\n return EXIT.INTERNAL_ERROR;\n}\n",
|
|
118
118
|
"/**\n * `claudemesh status-line` — one-line renderer for Claude Code's\n * `statusLine` setting.\n *\n * Must be FAST (Claude Code polls it between every turn) — zero network\n * I/O. Reads only local config + a peer-state cache maintained by the\n * MCP server (~/.claudemesh/peer-cache.json, updated on every\n * list_peers call).\n *\n * Output format:\n * ◇ <mesh> · <online>/<total> peers · <you>\n * or:\n * ◇ claudemesh (not joined)\n */\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\ninterface PeerCacheEntry {\n total: number;\n online: number;\n updatedAt: string;\n you?: string;\n}\n\ntype PeerCache = Record<string, PeerCacheEntry>;\n\nexport async function runStatusLine(): Promise<number> {\n try {\n const config = readConfig();\n if (config.meshes.length === 0) {\n process.stdout.write(\"◇ claudemesh (not joined)\");\n return EXIT.SUCCESS;\n }\n\n const cachePath = join(homedir(), \".claudemesh\", \"peer-cache.json\");\n let cache: PeerCache = {};\n if (existsSync(cachePath)) {\n try {\n cache = JSON.parse(readFileSync(cachePath, \"utf-8\")) as PeerCache;\n } catch {\n // corrupt — ignore\n }\n }\n\n // Pick the most-recently-used mesh if multiple.\n const pick = config.meshes[0]!;\n const entry = cache[pick.slug];\n\n const age = entry ? Date.now() - new Date(entry.updatedAt).getTime() : Infinity;\n const fresh = age < 60_000; // < 1 min = live\n\n if (entry && fresh) {\n const you = entry.you ? ` · ${entry.you}` : \"\";\n process.stdout.write(`◇ ${pick.slug} · ${entry.online}/${entry.total} online${you}`);\n } else if (entry) {\n process.stdout.write(`◇ ${pick.slug} · ${entry.online}/${entry.total} (stale)`);\n } else {\n process.stdout.write(`◇ ${pick.slug} · idle`);\n }\n return EXIT.SUCCESS;\n } catch {\n // Never break the status line — just print nothing.\n return EXIT.SUCCESS;\n }\n}\n",
|
|
119
119
|
"/**\n * `claudemesh backup` — encrypt the local config and save a portable\n * recovery file. Restore later with `claudemesh restore <file>` on any\n * machine to recover mesh memberships.\n *\n * Crypto:\n * - Argon2id KDF over a user passphrase → 32-byte key\n * (via libsodium's crypto_pwhash, INTERACTIVE limits so a weak\n * passphrase is still workable but brute-force remains expensive)\n * - XChaCha20-Poly1305 authenticated encryption of the JSON config\n * - Format: magic \"CMB1\" · salt (16B) · nonce (24B) · ciphertext\n *\n * Output: a single `.claudemesh-backup` file the user can store in\n * 1Password, email to themselves, etc. Zero server involvement.\n *\n * Passphrase hygiene: read twice from TTY, never echoed. Rejects\n * passphrases shorter than 12 characters.\n */\n\nimport { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { createInterface } from \"node:readline\";\nimport { getConfigPath } from \"~/services/config/facade.js\";\nimport { ensureSodium } from \"~/services/crypto/facade.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nconst MAGIC = Buffer.from(\"CMB1\", \"utf-8\");\n\nfunction readHidden(prompt: string): Promise<string> {\n return new Promise((resolve) => {\n process.stdout.write(prompt);\n const rl = createInterface({ input: process.stdin, output: process.stdout, terminal: true });\n // Node readline doesn't mask by default. Turn off echo manually.\n const stdin = process.stdin as NodeJS.ReadStream & { isTTY?: boolean };\n const wasRaw = Boolean(stdin.isRaw);\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n let buf = \"\";\n const onData = (chunk: Buffer): void => {\n const ch = chunk.toString(\"utf-8\");\n if (ch === \"\\n\" || ch === \"\\r\" || ch === \"\\u0004\") {\n stdin.removeListener(\"data\", onData);\n if (stdin.isTTY) stdin.setRawMode(wasRaw);\n process.stdout.write(\"\\n\");\n rl.close();\n resolve(buf);\n return;\n }\n if (ch === \"\\u0003\") { // ctrl-c\n process.exit(130);\n }\n if (ch === \"\\u007f\") { // backspace\n buf = buf.slice(0, -1);\n return;\n }\n buf += ch;\n };\n stdin.on(\"data\", onData);\n });\n}\n\nasync function deriveKey(pass: string, salt: Buffer, s: Awaited<ReturnType<typeof ensureSodium>>): Promise<Uint8Array> {\n return s.crypto_pwhash(\n 32,\n pass,\n salt,\n s.crypto_pwhash_OPSLIMIT_INTERACTIVE,\n s.crypto_pwhash_MEMLIMIT_INTERACTIVE,\n s.crypto_pwhash_ALG_ARGON2ID13,\n );\n}\n\nexport async function runBackup(outPath: string | undefined): Promise<number> {\n const configPath = getConfigPath();\n if (!existsSync(configPath)) {\n console.error(\" No config found — nothing to back up. Join a mesh first.\");\n return EXIT.NOT_FOUND;\n }\n const plaintext = readFileSync(configPath);\n\n const pass = await readHidden(\" Passphrase (min 12 chars): \");\n if (pass.length < 12) {\n console.error(\" ✗ Passphrase too short.\");\n return EXIT.INVALID_ARGS;\n }\n const confirm = await readHidden(\" Confirm passphrase: \");\n if (confirm !== pass) {\n console.error(\" ✗ Passphrases did not match.\");\n return EXIT.INVALID_ARGS;\n }\n\n const s = await ensureSodium();\n const salt = Buffer.from(s.randombytes_buf(16));\n const nonce = Buffer.from(s.randombytes_buf(24));\n const key = await deriveKey(pass, salt, s);\n const ciphertext = Buffer.from(\n s.crypto_aead_xchacha20poly1305_ietf_encrypt(plaintext, null, null, nonce, key),\n );\n const blob = Buffer.concat([MAGIC, salt, nonce, ciphertext]);\n\n const file = outPath ?? `claudemesh-backup-${new Date().toISOString().replace(/[:.]/g, \"-\")}.cmb`;\n writeFileSync(file, blob, { mode: 0o600 });\n console.log(`\\n ✓ Backup saved: ${file}`);\n console.log(` Size: ${blob.length} bytes. Guard the passphrase — there is no recovery.\\n`);\n return EXIT.SUCCESS;\n}\n\nexport async function runRestore(inPath: string | undefined): Promise<number> {\n if (!inPath) {\n console.error(\" Usage: claudemesh restore <backup-file>\");\n return EXIT.INVALID_ARGS;\n }\n if (!existsSync(inPath)) {\n console.error(` ✗ File not found: ${inPath}`);\n return EXIT.NOT_FOUND;\n }\n const blob = readFileSync(inPath);\n if (blob.length < 4 + 16 + 24 + 17 || !blob.subarray(0, 4).equals(MAGIC)) {\n console.error(\" ✗ Not a claudemesh backup file (bad magic).\");\n return EXIT.INVALID_ARGS;\n }\n const salt = blob.subarray(4, 20);\n const nonce = blob.subarray(20, 44);\n const ciphertext = blob.subarray(44);\n\n const pass = await readHidden(\" Passphrase: \");\n const s = await ensureSodium();\n const key = await deriveKey(pass, Buffer.from(salt), s);\n let plaintext: Uint8Array;\n try {\n plaintext = s.crypto_aead_xchacha20poly1305_ietf_decrypt(null, ciphertext, null, nonce, key);\n } catch {\n console.error(\" ✗ Decryption failed — wrong passphrase or tampered file.\");\n return EXIT.INTERNAL_ERROR;\n }\n\n const configPath = getConfigPath();\n if (existsSync(configPath)) {\n const backupOld = `${configPath}.before-restore.${Date.now()}`;\n writeFileSync(backupOld, readFileSync(configPath), { mode: 0o600 });\n console.log(` ↻ Existing config saved to ${backupOld}`);\n }\n writeFileSync(configPath, Buffer.from(plaintext), { mode: 0o600 });\n console.log(`\\n ✓ Config restored to ${configPath}`);\n console.log(\" Run `claudemesh list` to verify your meshes.\\n\");\n return EXIT.SUCCESS;\n}\n",
|
|
120
120
|
"/**\n * `claudemesh upgrade` — self-update the CLI to the latest release.\n *\n * Strategy:\n * 1. Query npm for the `latest` dist-tag (falls back to `alpha` for\n * users who still prefer the prerelease track).\n * 2. If we're behind, run `npm i -g claudemesh-cli` via the same\n * npm that installed us (detected from argv[1] path walk).\n * 3. Print before/after versions.\n *\n * For users who got the CLI via the `/install` shell flow (portable Node\n * in ~/.claudemesh), we call that npm directly so nothing else on the\n * system is touched.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { URLS, VERSION } from \"~/constants/urls.js\";\nimport { render } from \"~/ui/render.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nasync function latestVersion(): Promise<string | null> {\n try {\n const res = await fetch(URLS.NPM_REGISTRY, { signal: AbortSignal.timeout(8000) });\n if (!res.ok) return null;\n const body = (await res.json()) as { \"dist-tags\"?: { alpha?: string; latest?: string } };\n // Prefer the stable `latest` dist-tag; fall back to `alpha` for users\n // on prerelease builds before 1.0 shipped.\n return body[\"dist-tags\"]?.latest ?? body[\"dist-tags\"]?.alpha ?? null;\n } catch {\n return null;\n }\n}\n\nfunction findNpm(): { npm: string; prefix?: string } {\n // Portable install path (`/install.sh` puts npm in ~/.claudemesh/node/bin/npm)\n const portable = join(process.env.HOME ?? \"\", \".claudemesh\", \"node\", \"bin\", \"npm\");\n if (existsSync(portable)) {\n return { npm: portable, prefix: join(process.env.HOME ?? \"\", \".claudemesh\") };\n }\n // argv[1] → .../node_modules/claudemesh-cli/dist/entrypoints/cli.js\n // walk up to find a sibling npm binary.\n let cur = resolve(process.argv[1] ?? \".\");\n for (let i = 0; i < 6; i++) {\n cur = dirname(cur);\n const candidate = join(cur, \"bin\", \"npm\");\n if (existsSync(candidate)) return { npm: candidate };\n }\n // Fallback to PATH.\n return { npm: \"npm\" };\n}\n\nexport async function runUpgrade(opts: { check?: boolean; yes?: boolean } = {}): Promise<number> {\n render.section(\"claudemesh upgrade\");\n render.kv([\n [\"installed\", VERSION],\n [\"checking\", \"npm registry…\"],\n ]);\n\n const latest = await latestVersion();\n if (!latest) {\n render.warn(\"Could not reach npm registry — skipped.\");\n return EXIT.SUCCESS;\n }\n\n render.kv([[\"latest\", latest]]);\n\n if (latest === VERSION) {\n render.blank();\n render.ok(`Already on latest (${latest}).`);\n return EXIT.SUCCESS;\n }\n\n if (opts.check) {\n render.blank();\n render.warn(`Update available: ${VERSION} → ${latest}`);\n render.hint(\"Run: claudemesh upgrade\");\n return EXIT.SUCCESS;\n }\n\n const { npm, prefix } = findNpm();\n const args = [\"install\", \"-g\"];\n if (prefix) args.push(\"--prefix\", prefix);\n args.push(\"claudemesh-cli\");\n\n render.blank();\n render.info(`Updating ${VERSION} → ${latest}…`);\n render.hint(`${npm} ${args.join(\" \")}`);\n render.blank();\n\n const res = spawnSync(npm, args, { stdio: \"inherit\" });\n if (res.status !== 0) {\n render.err(`npm exited with status ${res.status}`);\n render.hint(\"Try: npm i -g claudemesh-cli\");\n return EXIT.INTERNAL_ERROR;\n }\n\n render.blank();\n render.ok(`Upgraded to ${latest}.`);\n return EXIT.SUCCESS;\n}\n",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"/**\n * MCP server (stdio transport) for claudemesh-cli.\n *\n * Starts BrokerClient connections for every mesh in config on boot,\n * then routes the 5 MCP tools through them.\n */\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema,\n ListPromptsRequestSchema,\n GetPromptRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { TOOLS } from \"./tools/definitions.js\";\nimport { readConfig } from \"~/services/config/facade.js\";\nimport { BrokerClient, startClients, stopAll, findClient, allClients } from \"~/services/broker/facade.js\";\nimport type { InboundPush } from \"~/services/broker/facade.js\";\nimport type {\n Priority,\n PeerStatus,\n SendMessageArgs,\n SetStatusArgs,\n SetSummaryArgs,\n ListPeersArgs,\n} from \"./types.js\";\n\n/** Compute a human-readable relative time string from an ISO timestamp. */\nfunction relativeTime(isoStr: string): string {\n const then = new Date(isoStr).getTime();\n if (isNaN(then)) return \"unknown\";\n const diffMs = Date.now() - then;\n if (diffMs < 0) return \"just now\";\n const seconds = Math.floor(diffMs / 1000);\n if (seconds < 60) return `${seconds}s ago`;\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes}m ago`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n return `${days} day${days !== 1 ? \"s\" : \"\"} ago`;\n}\n\nfunction text(msg: string, isError = false) {\n return {\n content: [{ type: \"text\" as const, text: msg }],\n ...(isError ? { isError: true } : {}),\n };\n}\n\n/**\n * Given a `to` string, pick which mesh to send from. Strategies:\n * - If `to` looks like a pubkey hex (64 chars), use as-is.\n * - If `to` starts with `#`, treat as channel.\n * - If `to` is `*`, treat as broadcast.\n * - Otherwise resolve as a display name via list_peers.\n *\n * Explicit mesh prefix `<mesh-slug>:<target>` narrows to one mesh.\n */\nasync function resolveClient(to: string): Promise<{\n client: BrokerClient | null;\n targetSpec: string;\n error?: string;\n}> {\n const clients = allClients();\n if (clients.length === 0) {\n return { client: null, targetSpec: to, error: \"no meshes joined\" };\n }\n // Explicit mesh prefix: \"mesh-slug:targetspec\"\n let targetClients = clients;\n let target = to;\n const colonIdx = to.indexOf(\":\");\n if (colonIdx > 0 && colonIdx < to.length - 1) {\n const slug = to.slice(0, colonIdx);\n const rest = to.slice(colonIdx + 1);\n const match = findClient(slug);\n if (match) {\n targetClients = [match];\n target = rest;\n }\n }\n // Channel, @group, or broadcast — pass through directly.\n if (target.startsWith(\"#\") || target.startsWith(\"@\") || target === \"*\") {\n if (targetClients.length === 1) {\n return { client: targetClients[0]!, targetSpec: target };\n }\n return {\n client: null,\n targetSpec: target,\n error: `multiple meshes joined; prefix target with \"<mesh-slug>:\" (joined: ${clients.map((c) => c.meshSlug).join(\", \")})`,\n };\n }\n\n // Hex pubkey or hex prefix — resolve by prefix match across joined meshes.\n // Accepts anything from 8 hex chars up to the full 64-char key. A full key\n // also has to match an online peer to be worth routing; we verify by prefix\n // against each mesh's current peer list.\n if (/^[0-9a-f]{8,64}$/.test(target)) {\n const hits: Array<{ mesh: BrokerClient; pubkey: string; displayName: string }> = [];\n for (const c of targetClients) {\n const peers = await c.listPeers();\n for (const p of peers) {\n if (p.pubkey.startsWith(target)) {\n hits.push({ mesh: c, pubkey: p.pubkey, displayName: p.displayName });\n }\n }\n }\n if (hits.length === 1) {\n return { client: hits[0]!.mesh, targetSpec: hits[0]!.pubkey };\n }\n if (hits.length > 1) {\n const lines = hits\n .map((h) => ` - ${h.displayName} @ ${h.mesh.meshSlug} · pubkey ${h.pubkey.slice(0, 20)}…`)\n .join(\"\\n\");\n return {\n client: null,\n targetSpec: target,\n error: `ambiguous pubkey prefix \"${target}\" matches ${hits.length} peers:\\n${lines}\\nUse a longer prefix.`,\n };\n }\n // Full 64-char with no live match: still allow send — broker will queue it\n // for when that peer comes online. Honors the existing queue-for-offline\n // behaviour without breaking prefix semantics.\n if (target.length === 64) {\n if (targetClients.length === 1) {\n return { client: targetClients[0]!, targetSpec: target };\n }\n return {\n client: null,\n targetSpec: target,\n error: `multiple meshes joined; prefix target with \"<mesh-slug>:\" (joined: ${clients.map((c) => c.meshSlug).join(\", \")})`,\n };\n }\n // Short prefix, no match, and not interpretable as a name — surface it.\n return {\n client: null,\n targetSpec: target,\n error: `no online peer's pubkey starts with \"${target}\".`,\n };\n }\n\n // Name-based resolution. Exclude the caller's OWN session pubkey so\n // \"send to <my-own-display-name>\" routes to the OTHER same-named sessions\n // (e.g. the same user's laptop on a different repo) instead of bouncing\n // on the broker's self-send check.\n const nameLower = target.toLowerCase();\n const candidates: Array<{ mesh: string; peers: Array<{ displayName: string; pubkey: string; cwd?: string }> }> = [];\n const exactMatches: Array<{ mesh: BrokerClient; pubkey: string; displayName: string; cwd?: string }> = [];\n const partialMatches: Array<{ mesh: BrokerClient; pubkey: string; displayName: string; cwd?: string }> = [];\n\n for (const c of targetClients) {\n const ownSession = c.getSessionPubkey();\n const peers = await c.listPeers();\n candidates.push({ mesh: c.meshSlug, peers });\n for (const p of peers) {\n if (ownSession && p.pubkey === ownSession) continue; // skip caller's own session\n const nameLow = p.displayName.toLowerCase();\n if (nameLow === nameLower) {\n exactMatches.push({ mesh: c, pubkey: p.pubkey, displayName: p.displayName, cwd: p.cwd });\n } else if (nameLow.includes(nameLower)) {\n partialMatches.push({ mesh: c, pubkey: p.pubkey, displayName: p.displayName, cwd: p.cwd });\n }\n }\n }\n\n if (exactMatches.length === 1) {\n return { client: exactMatches[0]!.mesh, targetSpec: exactMatches[0]!.pubkey };\n }\n if (exactMatches.length > 1) {\n const lines = exactMatches\n .map((m) => ` - ${m.displayName} · pubkey ${m.pubkey.slice(0, 16)}…${m.cwd ? ` · cwd ${m.cwd}` : \"\"}`)\n .join(\"\\n\");\n return {\n client: null,\n targetSpec: target,\n error:\n `\"${target}\" is ambiguous — ${exactMatches.length} peers share that display name:\\n${lines}\\n` +\n `Disambiguate by pubkey prefix (e.g. send to \"${exactMatches[0]!.pubkey.slice(0, 12)}…\").`,\n };\n }\n\n if (partialMatches.length === 1) {\n process.stderr.write(\n `[claudemesh] resolved \"${target}\" → \"${partialMatches[0]!.displayName}\" (partial match)\\n`,\n );\n return { client: partialMatches[0]!.mesh, targetSpec: partialMatches[0]!.pubkey };\n }\n if (partialMatches.length > 1) {\n const lines = partialMatches\n .map((m) => ` - ${m.displayName} · pubkey ${m.pubkey.slice(0, 16)}…`)\n .join(\"\\n\");\n return {\n client: null,\n targetSpec: target,\n error: `\"${target}\" partially matches ${partialMatches.length} peers:\\n${lines}\\nBe more specific, or use a pubkey prefix.`,\n };\n }\n\n // No match — refuse to send rather than silently queue a message for nobody.\n const known = candidates.flatMap((c) => c.peers.map((p) => `${c.mesh}/${p.displayName}`));\n return {\n client: null,\n targetSpec: target,\n error:\n `peer \"${target}\" not found. ` +\n (known.length\n ? `Known peers: ${known.slice(0, 10).join(\", \")}${known.length > 10 ? \", …\" : \"\"}`\n : \"No connected peers on your mesh(es). Use pubkey hex, @group, or * for broadcast.\"),\n };\n}\n\n// Peer name cache to avoid calling listPeers on every incoming push\nconst peerNameCache = new Map<string, string>();\nlet peerNameCacheAge = 0;\nconst CACHE_TTL_MS = 30_000;\n\nasync function resolvePeerName(client: BrokerClient, pubkey: string): Promise<string> {\n const now = Date.now();\n if (now - peerNameCacheAge > CACHE_TTL_MS) {\n peerNameCache.clear();\n try {\n const peers = await client.listPeers();\n for (const p of peers) peerNameCache.set(p.pubkey, p.displayName);\n } catch { /* best effort */ }\n peerNameCacheAge = now;\n }\n return peerNameCache.get(pubkey) ?? `peer-${pubkey.slice(0, 8)}`;\n}\n\nfunction decryptFailedWarning(senderPubkey: string): string {\n const who = senderPubkey ? senderPubkey.slice(0, 12) + \"…\" : \"unknown sender\";\n return `⚠ message from ${who} failed to decrypt (tampered or wrong keypair)`;\n}\n\nfunction formatPush(p: InboundPush, meshSlug: string): string {\n const body = p.plaintext ?? decryptFailedWarning(p.senderPubkey);\n const tag = p.subtype === \"reminder\" ? \" [REMINDER]\" : \"\";\n return `[${meshSlug}]${tag} from ${p.senderPubkey.slice(0, 12)}… (${p.priority}, ${p.createdAt}):\\n${body}`;\n}\n\nexport async function startMcpServer(): Promise<void> {\n // Check for --service mode (native mesh MCP proxy)\n const serviceIdx = process.argv.indexOf(\"--service\");\n if (serviceIdx !== -1 && process.argv[serviceIdx + 1]) {\n return startServiceProxy(process.argv[serviceIdx + 1]!);\n }\n\n const config = readConfig();\n\n const myName = config.displayName ?? \"unnamed\";\n const myRole = config.role ?? process.env.CLAUDEMESH_ROLE ?? null;\n const myGroups = (config.groups ?? []).map(g => `@${g.name}${g.role ? ':' + g.role : ''}`).join(', ') || \"none\";\n const messageMode = config.messageMode ?? \"push\";\n\n const server = new Server(\n { name: \"claudemesh\", version: \"0.3.0\" },\n {\n capabilities: {\n experimental: { \"claude/channel\": {} },\n tools: {},\n prompts: {},\n resources: {},\n },\n instructions: `## Identity\nYou are \"${myName}\"${myRole ? ` (${myRole})` : \"\"} — a peer in the claudemesh network. Your groups: ${myGroups}. You are one of several Claude Code sessions connected to the same mesh. No orchestrator exists — peers are equals. Your identity comes from your name and group roles, not from a central authority.\n\n## Responding to messages\nWhen you receive a <channel source=\"claudemesh\" ...> message, RESPOND IMMEDIATELY. Pause your current task, reply via send_message, then resume. Read from_name, mesh_slug, and priority from the channel attributes. Reply by setting \\`to\\` to the sender's from_name (display name). Stay in character per your system prompt. Do not ignore low-priority messages — acknowledge them briefly even if you defer action.\n\nIf the channel meta contains \\`subtype: reminder\\`, this is a scheduled reminder you set for yourself — act on it immediately (no reply needed).\n\n## Tools\n| Tool | Description |\n|------|-------------|\n| send_message(to, message, priority?) | Send to peer name, @group, or * broadcast. \\`to\\` accepts display name, pubkey hex, @groupname, or *. |\n| list_peers(mesh_slug?) | List connected peers with status, summary, groups, and roles. |\n| check_messages() | Drain buffered inbound messages (auto-pushed in most cases, use as fallback). |\n| set_summary(summary) | Set 1-2 sentence description of your current work, visible to all peers. |\n| set_status(status) | Override status: idle, working, or dnd. |\n| set_visible(visible) | Toggle visibility. Hidden peers skip list_peers and broadcasts; direct messages still arrive. |\n| set_profile(avatar?, title?, bio?, capabilities?) | Set public profile: emoji avatar, short title, bio, capabilities list. |\n| join_group(name, role?) | Join a @group with optional role (lead, member, observer, or any string). |\n| leave_group(name) | Leave a @group. |\n| set_state(key, value) | Write shared state; pushes change to all peers. |\n| get_state(key) | Read a shared state value. |\n| list_state() | List all state keys with values, authors, and timestamps. |\n| remember(content, tags?) | Store persistent knowledge with optional tags. |\n| recall(query) | Full-text search over mesh memory. |\n| forget(id) | Soft-delete a memory entry. |\n| share_file(path, name?, tags?) | Share a persistent file with the mesh. |\n| get_file(id, save_to) | Download a shared file to a local path. |\n| list_files(query?, from?) | Find files shared in the mesh. |\n| file_status(id) | Check who has accessed a file. |\n| delete_file(id) | Remove a shared file from the mesh. |\n| vector_store(collection, text, metadata?) | Store embedding in per-mesh Qdrant collection. |\n| vector_search(collection, query, limit?) | Semantic search over stored embeddings. |\n| vector_delete(collection, id) | Remove an embedding. |\n| list_collections() | List vector collections in this mesh. |\n| graph_query(cypher) | Read-only Cypher query on per-mesh Neo4j. |\n| graph_execute(cypher) | Write Cypher query (CREATE, MERGE, DELETE). |\n| mesh_query(sql) | Run a SELECT query on the per-mesh shared database. |\n| mesh_execute(sql) | Run DDL/DML on the per-mesh database (CREATE TABLE, INSERT, UPDATE, DELETE). |\n| mesh_schema() | List tables and columns in the per-mesh shared database. |\n| create_stream(name) | Create a real-time data stream in the mesh. |\n| publish(stream, data) | Push data to a stream. Subscribers receive it in real-time. |\n| subscribe(stream) | Subscribe to a stream. Data pushes arrive as channel notifications. |\n| list_streams() | List active streams in the mesh. |\n| share_context(summary, files_read?, key_findings?, tags?) | Share session understanding with peers. |\n| get_context(query) | Find context from peers who explored an area. |\n| list_contexts() | See what all peers currently know. |\n| create_task(title, assignee?, priority?, tags?) | Create a work item. |\n| claim_task(id) | Claim an unclaimed task. |\n| complete_task(id, result?) | Mark task done with optional result. |\n| list_tasks(status?, assignee?) | List tasks filtered by status/assignee. |\n| schedule_reminder(message, in_seconds?, deliver_at?, to?) | Schedule a reminder to yourself (no \\`to\\`) or a delayed message to a peer/group. Delivered as a push with \\`subtype: reminder\\` in the channel meta. |\n| list_scheduled() | List pending scheduled reminders and messages. |\n| cancel_scheduled(id) | Cancel a pending scheduled item. |\n| read_peer_file(peer, path) | Read a file from another peer's project (max 1MB). |\n| list_peer_files(peer, path?, pattern?) | List files in a peer's shared directory. |\n| mesh_mcp_register(server_name, description, tools) | Register an MCP server with the mesh. Other peers can call its tools. |\n| mesh_mcp_list() | List MCP servers available in the mesh with their tools. |\n| mesh_tool_call(server_name, tool_name, args?) | Call a tool on a mesh-registered MCP server (30s timeout). |\n| mesh_mcp_remove(server_name) | Unregister an MCP server you registered. |\n\nIf multiple meshes are joined, prefix \\`to\\` with \\`<mesh-slug>:\\` to disambiguate (e.g. \\`dev-team:Alice\\`).\n\nMulti-target: send_message accepts an array of targets for the 'to' field.\n send_message(to: [\"Alice\", \"@backend\"], message: \"sprint starts\")\nTargets are deduplicated — each peer receives the message once.\n\nTargeted views: when different audiences need different details about the same event,\nsend tailored messages instead of one generic broadcast:\n send_message(to: \"@frontend\", message: \"Auth v2: useAuth hook changed, see src/auth/\")\n send_message(to: \"@backend\", message: \"Auth v2: new /api/auth/v2 endpoints, v1 deprecated\")\n send_message(to: \"@pm\", message: \"Auth v2 done. 3 points, no blockers.\")\n\n## Groups\nGroups are routing labels. Send to @groupname to multicast to all members. Roles are metadata that peers interpret: a \"lead\" gathers input before synthesizing a response, a \"member\" contributes when asked, an \"observer\" watches silently. Join and leave groups dynamically with join_group/leave_group. Check list_peers to see who belongs to which groups and their roles.\n\n## State\nShared key-value store scoped to the mesh. Use get_state/set_state for live coordination facts (deploy frozen? current sprint? PR queue). set_state pushes the change to all connected peers. Read state before asking peers questions — the answer may already be there. State is operational, not archival.\n\n## Memory\nPersistent knowledge that survives across sessions. Use remember(content, tags?) to store lessons, decisions, and incidents. Use recall(query) to search before asking peers. New peers should recall at session start to load institutional knowledge.\n\n## File access — decision guide\nThree ways to access files. Pick the right one:\n\n1. **Local peer (same machine, [local] tag):** Read files directly via filesystem using their \\`cwd\\` path from list_peers. No limit, instant. This is the default for local peers.\n2. **Remote peer (different machine, [remote] tag):** Use \\`read_peer_file(peer, path)\\` — relays through the mesh. **1 MB limit**, base64 encoded. Use \\`list_peer_files\\` to browse first.\n3. **Persistent sharing (any peer):** Use \\`share_file(path)\\` — uploads to mesh storage (MinIO). **No size limit**. All peers can download anytime via \\`get_file\\`. Use for files that need to persist or be shared with multiple peers.\n\n**Rule of thumb:** local peer → filesystem. Remote peer, small file → read_peer_file. Large file or needs to persist → share_file.\n\n## Vectors\nStore and search semantic embeddings. Use vector_store to index content, vector_search to find similar content.\n\n## Graph\nBuild and query entity relationship graphs. Use graph_execute for writes (CREATE, MERGE), graph_query for reads (MATCH).\n\n## Mesh Database\nPer-mesh PostgreSQL database. Use mesh_execute for DDL/DML (CREATE TABLE, INSERT), mesh_query for SELECT, mesh_schema to inspect tables. Schema auto-created on first use.\n\n## Streams\nReal-time data channels. create_stream to start one, publish to push data, subscribe to receive pushes. Use for build logs, deploy status, live metrics.\n\n## Context\nShare your session understanding with peers. Use share_context after exploring a codebase area. Check get_context before re-reading files another peer already analyzed.\n\n## Tasks\nCreate and claim work items. create_task to propose work, claim_task to take ownership, complete_task when done. Prevents duplicate effort.\n\n## Priority\n- \"now\": interrupt immediately, even if recipient is in DND (use for urgent: broken deploy, blocking issue)\n- \"next\" (default): deliver when recipient goes idle (normal coordination)\n- \"low\": pull-only via check_messages (FYI, non-blocking context)\n\n## Coordination\nCall list_peers at session start to understand who is online, their roles, and what they are working on. If you are a group lead, gather input from members before responding to external requests — do not answer alone. If you are a member, contribute to your lead when asked. Use @group messages for team-wide questions, direct messages for 1:1 coordination. Set a meaningful summary so peers know your current focus.\n\n## Message Mode\nYour message mode is \"${messageMode}\".\n- push: messages arrive in real-time as channel notifications. Respond immediately.\n- inbox: messages are held. You'll see \"[inbox] New message from X\" notifications. Call check_messages to read them.\n- off: no message notifications. Use check_messages manually to poll.`,\n },\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: TOOLS,\n }));\n\n // --- MCP Prompts: expose mesh skills as slash commands ---\n server.setRequestHandler(ListPromptsRequestSchema, async () => {\n const client = allClients()[0];\n if (!client) return { prompts: [] };\n const skills = await client.listSkills();\n return {\n prompts: skills.map((s) => ({\n name: s.name,\n description: s.description,\n arguments: [],\n })),\n };\n });\n\n server.setRequestHandler(GetPromptRequestSchema, async (req) => {\n const { name, arguments: promptArgs } = req.params;\n const client = allClients()[0];\n if (!client) throw new Error(\"Not connected to any mesh\");\n const skill = await client.getSkill(name);\n if (!skill) throw new Error(`Skill \"${name}\" not found in the mesh`);\n\n // Build the prompt content — include frontmatter if manifest has metadata\n let content = skill.instructions;\n const manifest = (skill as any).manifest;\n if (manifest && typeof manifest === \"object\") {\n const fm: string[] = [\"---\"];\n if (manifest.description) fm.push(`description: \"${manifest.description}\"`);\n if (manifest.when_to_use) fm.push(`when_to_use: \"${manifest.when_to_use}\"`);\n if (manifest.allowed_tools?.length) fm.push(`allowed-tools:\\n${manifest.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n if (manifest.model) fm.push(`model: ${manifest.model}`);\n if (manifest.context) fm.push(`context: ${manifest.context}`);\n if (manifest.agent) fm.push(`agent: ${manifest.agent}`);\n if (manifest.user_invocable === false) fm.push(`user-invocable: false`);\n if (manifest.argument_hint) fm.push(`argument-hint: \"${manifest.argument_hint}\"`);\n fm.push(\"---\\n\");\n if (fm.length > 3) content = fm.join(\"\\n\") + content;\n\n // Enforce context:fork via Agent tool instruction — Claude Code's MCP prompts\n // path doesn't support the context field natively, so we instruct the model.\n if (manifest.context === \"fork\") {\n const agentType = manifest.agent || \"general-purpose\";\n const modelHint = manifest.model ? `, model: \"${manifest.model}\"` : \"\";\n const toolsHint = manifest.allowed_tools?.length\n ? `\\nOnly use these tools: ${manifest.allowed_tools.join(\", \")}.`\n : \"\";\n content = `IMPORTANT: Execute this skill in an isolated sub-agent. Use the Agent tool with subagent_type=\"${agentType}\"${modelHint}. Pass the full instructions below as the agent prompt.${toolsHint}\\n\\n` + content;\n }\n }\n\n return {\n description: skill.description,\n messages: [\n {\n role: \"user\" as const,\n content: { type: \"text\" as const, text: content },\n },\n ],\n };\n });\n\n // --- MCP Resources: expose mesh skills as skill:// resources ---\n server.setRequestHandler(ListResourcesRequestSchema, async () => {\n const client = allClients()[0];\n if (!client) return { resources: [] };\n const skills = await client.listSkills();\n return {\n resources: skills.map((s) => ({\n uri: `skill://claudemesh/${encodeURIComponent(s.name)}`,\n name: s.name,\n description: s.description,\n mimeType: \"text/markdown\",\n })),\n };\n });\n\n server.setRequestHandler(ReadResourceRequestSchema, async (req) => {\n const { uri } = req.params;\n // Parse skill://claudemesh/{name}\n const match = uri.match(/^skill:\\/\\/claudemesh\\/(.+)$/);\n if (!match) throw new Error(`Unknown resource URI: ${uri}`);\n const name = decodeURIComponent(match[1]!);\n const client = allClients()[0];\n if (!client) throw new Error(\"Not connected to any mesh\");\n const skill = await client.getSkill(name);\n if (!skill) throw new Error(`Skill \"${name}\" not found`);\n\n // Build full markdown with frontmatter for Claude Code's parseSkillFrontmatterFields\n const manifest = (skill as any).manifest;\n const fmLines: string[] = [\"---\"];\n fmLines.push(`name: ${skill.name}`);\n fmLines.push(`description: \"${skill.description}\"`);\n if (skill.tags.length) fmLines.push(`tags: [${skill.tags.join(\", \")}]`);\n if (manifest && typeof manifest === \"object\") {\n if (manifest.when_to_use) fmLines.push(`when_to_use: \"${manifest.when_to_use}\"`);\n if (manifest.allowed_tools?.length) fmLines.push(`allowed-tools:\\n${manifest.allowed_tools.map((t: string) => ` - ${t}`).join(\"\\n\")}`);\n if (manifest.model) fmLines.push(`model: ${manifest.model}`);\n if (manifest.context) fmLines.push(`context: ${manifest.context}`);\n if (manifest.agent) fmLines.push(`agent: ${manifest.agent}`);\n if (manifest.user_invocable === false) fmLines.push(`user-invocable: false`);\n if (manifest.argument_hint) fmLines.push(`argument-hint: \"${manifest.argument_hint}\"`);\n }\n fmLines.push(\"---\\n\");\n\n const fullContent = fmLines.join(\"\\n\") + skill.instructions;\n\n return {\n contents: [\n {\n uri,\n mimeType: \"text/markdown\",\n text: fullContent,\n },\n ],\n };\n });\n\n server.setRequestHandler(CallToolRequestSchema, async (req) => {\n const { name, arguments: args } = req.params;\n\n // Track tool call count across all connected clients\n for (const c of allClients()) {\n c.incrementToolCalls();\n }\n\n if (config.meshes.length === 0) {\n return text(\n \"No meshes joined. Run `claudemesh join https://claudemesh.com/join/<token>` first.\",\n true,\n );\n }\n\n switch (name) {\n case \"send_message\": {\n const { to, message, priority } = (args ?? {}) as unknown as SendMessageArgs;\n if (!to || !message)\n return text(\"send_message: `to` and `message` required\", true);\n\n // Handle multi-target: to can be string or string[]\n const targets = Array.isArray(to) ? to : [to];\n const results: string[] = [];\n const seen = new Set<string>(); // dedup by resolved pubkey\n\n for (const target of targets) {\n const { client, targetSpec, error } = await resolveClient(target);\n if (!client) {\n results.push(`✗ ${target}: ${error ?? \"no client resolved\"}`);\n continue;\n }\n if (seen.has(targetSpec)) continue; // dedup\n seen.add(targetSpec);\n const result = await client.send(\n targetSpec,\n message,\n (priority ?? \"next\") as Priority,\n );\n if (!result.ok) {\n results.push(`✗ ${target}: ${result.error}`);\n } else {\n results.push(`✓ ${target} → ${result.messageId}`);\n }\n }\n return text(results.join(\"\\n\"));\n }\n\n case \"list_peers\": {\n const { mesh_slug } = (args ?? {}) as ListPeersArgs;\n const clients = mesh_slug\n ? [findClient(mesh_slug)].filter(Boolean)\n : allClients();\n if (clients.length === 0)\n return text(\n mesh_slug\n ? `list_peers: no joined mesh \"${mesh_slug}\"`\n : \"list_peers: no joined meshes\",\n true,\n );\n const sections: string[] = [];\n // Keep the status-line cache fresh for Claude Code's statusLine renderer.\n const statusCache: Record<string, { total: number; online: number; updatedAt: string; you?: string }> = {};\n for (const c of clients) {\n const peers = await c!.listPeers();\n const header = `## ${c!.meshSlug} (${c!.status}, mesh ${c!.meshId.slice(0, 8)}…)`;\n statusCache[c!.meshSlug] = {\n total: peers.length,\n online: peers.filter(p => p.status !== \"offline\").length,\n updatedAt: new Date().toISOString(),\n you: process.env.CLAUDEMESH_DISPLAY_NAME ?? undefined,\n };\n if (peers.length === 0) {\n sections.push(`${header}\\nNo peers connected.`);\n } else {\n // Note: multiple entries with the same pubkey are the SAME member\n // connected from multiple sessions (each session sends its own\n // hello display_name). Annotate so the caller doesn't treat them\n // as distinct people.\n const pubkeyCounts = new Map<string, number>();\n for (const p of peers) pubkeyCounts.set(p.pubkey, (pubkeyCounts.get(p.pubkey) ?? 0) + 1);\n const peerLines = peers.map((p) => {\n const summary = p.summary ? ` — \"${p.summary}\"` : \"\";\n const groupsStr = p.groups?.length ? ` [${p.groups.map(g => `@${g.name}${g.role ? ':' + g.role : ''}`).join(', ')}]` : \"\";\n const meta: string[] = [];\n if (p.peerType) meta.push(`type:${p.peerType}`);\n if (p.channel) meta.push(`channel:${p.channel}`);\n if (p.model) meta.push(`model:${p.model}`);\n const metaStr = meta.length ? ` {${meta.join(\", \")}}` : \"\";\n const cwdStr = p.cwd ? ` cwd:${p.cwd}` : \"\";\n const locality = p.hostname && p.hostname === require(\"os\").hostname() ? \"local\" : \"remote\";\n const localityTag = ` [${locality}]`;\n const profileAvatar = p.profile?.avatar ? `${p.profile.avatar} ` : \"\";\n const profileTitle = p.profile?.title ? ` (${p.profile.title})` : \"\";\n const hiddenTag = p.visible === false ? \" [hidden]\" : \"\";\n const sameKeyCount = pubkeyCounts.get(p.pubkey) ?? 1;\n const sameKeyTag = sameKeyCount > 1 ? ` [shares key with ${sameKeyCount - 1} other session(s)]` : \"\";\n // pubkey prefix must be long enough for unambiguous routing via\n // send_message — 16 hex chars = 64 bits of entropy, effectively\n // unique within any mesh of realistic size.\n return `- ${profileAvatar}**${p.displayName}**${profileTitle} [${p.status}]${localityTag}${hiddenTag}${sameKeyTag}${groupsStr}${metaStr} (pubkey: ${p.pubkey.slice(0, 16)}…)${cwdStr}${summary}`;\n });\n sections.push(`${header}\\n${peerLines.join(\"\\n\")}`);\n }\n }\n // Persist the peer-cache for claudemesh status-line. Best effort.\n try {\n const { writeFileSync, mkdirSync, existsSync } = await import(\"node:fs\");\n const { join: joinPath } = await import(\"node:path\");\n const { homedir } = await import(\"node:os\");\n const dir = joinPath(homedir(), \".claudemesh\");\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(joinPath(dir, \"peer-cache.json\"), JSON.stringify(statusCache));\n } catch { /* non-fatal */ }\n return text(sections.join(\"\\n\\n\"));\n }\n\n case \"message_status\": {\n const { id } = (args ?? {}) as { id?: string };\n if (!id) return text(\"message_status: `id` required\", true);\n const clients = allClients();\n if (!clients.length) return text(\"message_status: not connected\", true);\n // Try each connected mesh client — we don't know which mesh the\n // messageId belongs to, so query all and return the first hit.\n let result = null;\n for (const c of clients) {\n result = await c.messageStatus(id);\n if (result) break;\n }\n if (!result) return text(`Message ${id} not found or timed out.`);\n const recipientLines = result.recipients.map(\n (r: { name: string; pubkey: string; status: string }) =>\n ` - ${r.name} (${r.pubkey.slice(0, 12)}…): ${r.status}`,\n );\n return text(\n `Message ${id.slice(0, 12)}… → ${result.targetSpec}\\n` +\n `Delivered: ${result.delivered}${result.deliveredAt ? ` at ${result.deliveredAt}` : \"\"}\\n` +\n `Recipients:\\n${recipientLines.join(\"\\n\")}`,\n );\n }\n\n case \"check_messages\": {\n const drained: string[] = [];\n for (const c of allClients()) {\n const msgs = c.drainPushBuffer();\n for (const m of msgs) drained.push(formatPush(m, c.meshSlug));\n }\n if (drained.length === 0) return text(\"No new messages.\");\n return text(\n `${drained.length} new message(s):\\n\\n${drained.join(\"\\n\\n---\\n\\n\")}`,\n );\n }\n\n case \"set_summary\": {\n const { summary } = (args ?? {}) as unknown as SetSummaryArgs;\n if (!summary) return text(\"set_summary: `summary` required\", true);\n for (const c of allClients()) await c.setSummary(summary);\n return text(\n `Summary set: \"${summary}\" (visible to ${allClients().length} mesh(es)).`,\n );\n }\n\n case \"set_status\": {\n const { status } = (args ?? {}) as unknown as SetStatusArgs;\n if (!status) return text(\"set_status: `status` required\", true);\n const s = status as PeerStatus;\n for (const c of allClients()) await c.setStatus(s);\n return text(`Status set to ${s} across ${allClients().length} mesh(es).`);\n }\n\n case \"set_visible\": {\n const { visible } = (args ?? {}) as { visible?: boolean };\n if (visible === undefined) return text(\"set_visible: `visible` required\", true);\n for (const c of allClients()) await c.setVisible(visible);\n return text(visible ? \"You are now visible to peers.\" : \"You are now hidden. Direct messages still reach you, but you won't appear in list_peers or receive broadcasts.\");\n }\n\n case \"set_profile\": {\n const { avatar, title, bio, capabilities } = (args ?? {}) as { avatar?: string; title?: string; bio?: string; capabilities?: string[] };\n const profile = { avatar, title, bio, capabilities };\n for (const c of allClients()) await c.setProfile(profile);\n const parts: string[] = [];\n if (avatar) parts.push(`Avatar: ${avatar}`);\n if (title) parts.push(`Title: ${title}`);\n if (bio) parts.push(`Bio: ${bio}`);\n if (capabilities?.length) parts.push(`Capabilities: ${capabilities.join(\", \")}`);\n return text(parts.length > 0 ? `Profile updated:\\n${parts.join(\"\\n\")}` : \"Profile cleared.\");\n }\n\n case \"join_group\": {\n const { name: groupName, role } = (args ?? {}) as { name?: string; role?: string };\n if (!groupName) return text(\"join_group: `name` required\", true);\n for (const c of allClients()) await c.joinGroup(groupName, role);\n return text(`Joined @${groupName}${role ? ` as ${role}` : \"\"}`);\n }\n\n case \"leave_group\": {\n const { name: groupName } = (args ?? {}) as { name?: string };\n if (!groupName) return text(\"leave_group: `name` required\", true);\n for (const c of allClients()) await c.leaveGroup(groupName);\n return text(`Left @${groupName}`);\n }\n\n // --- State ---\n case \"set_state\": {\n const { key, value } = (args ?? {}) as { key?: string; value?: unknown };\n if (!key) return text(\"set_state: `key` required\", true);\n for (const c of allClients()) await c.setState(key, value);\n return text(`State set: ${key} = ${JSON.stringify(value)}`);\n }\n case \"get_state\": {\n const { key } = (args ?? {}) as { key?: string };\n if (!key) return text(\"get_state: `key` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"get_state: not connected\", true);\n const result = await client.getState(key);\n if (!result) return text(`State \"${key}\" not found.`);\n return text(`${key} = ${JSON.stringify(result.value)} (set by ${result.updatedBy} at ${result.updatedAt})`);\n }\n case \"list_state\": {\n const client = allClients()[0];\n if (!client) return text(\"list_state: not connected\", true);\n const entries = await client.listState();\n if (entries.length === 0) return text(\"No shared state set.\");\n const lines = entries.map(e => `- **${e.key}** = ${JSON.stringify(e.value)} (by ${e.updatedBy})`);\n return text(lines.join(\"\\n\"));\n }\n\n // --- Memory ---\n case \"remember\": {\n const { content, tags } = (args ?? {}) as { content?: string; tags?: string[] };\n if (!content) return text(\"remember: `content` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"remember: not connected\", true);\n const id = await client.remember(content, tags);\n return text(`Remembered${id ? ` (${id})` : \"\"}: \"${content.slice(0, 80)}${content.length > 80 ? '...' : ''}\"`);\n }\n case \"recall\": {\n const { query } = (args ?? {}) as { query?: string };\n if (!query) return text(\"recall: `query` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"recall: not connected\", true);\n const memories = await client.recall(query);\n if (memories.length === 0) return text(`No memories found for \"${query}\".`);\n const lines = memories.map(m => `- [${m.id.slice(0, 8)}] ${m.content} (by ${m.rememberedBy}, ${m.rememberedAt})`);\n return text(`${memories.length} memor${memories.length === 1 ? 'y' : 'ies'}:\\n${lines.join(\"\\n\")}`);\n }\n case \"forget\": {\n const { id } = (args ?? {}) as { id?: string };\n if (!id) return text(\"forget: `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"forget: not connected\", true);\n await client.forget(id);\n return text(`Forgotten: ${id}`);\n }\n\n // --- Scheduled messages ---\n case \"schedule_reminder\": {\n const sArgs = (args ?? {}) as {\n message?: string;\n to?: string;\n deliver_at?: number;\n in_seconds?: number;\n cron?: string;\n };\n if (!sArgs.message) return text(\"schedule_reminder: `message` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"schedule_reminder: not connected\", true);\n\n const isCron = !!sArgs.cron;\n\n let deliverAt: number;\n if (isCron) {\n // For cron, deliverAt is ignored by the broker — set to 0\n deliverAt = 0;\n } else if (sArgs.deliver_at) {\n deliverAt = Number(sArgs.deliver_at);\n } else if (sArgs.in_seconds) {\n deliverAt = Date.now() + Number(sArgs.in_seconds) * 1_000;\n } else {\n return text(\"schedule_reminder: provide `deliver_at` (ms timestamp), `in_seconds`, or `cron` expression\", true);\n }\n\n const isSelf = !sArgs.to;\n let targetSpec: string;\n if (isSelf) {\n // Self-reminder: target own session pubkey\n targetSpec = client.getSessionPubkey() ?? \"*\";\n } else {\n const to = sArgs.to!;\n // Resolve display name → pubkey if not a raw spec\n if (!to.startsWith(\"@\") && to !== \"*\" && !/^[0-9a-f]{64}$/i.test(to)) {\n const peers = await client.listPeers();\n const match = peers.find((p) => p.displayName.toLowerCase() === to.toLowerCase());\n if (!match) {\n const names = peers.map((p) => p.displayName).join(\", \");\n return text(`schedule_reminder: peer \"${to}\" not found. Online: ${names || \"(none)\"}`, true);\n }\n targetSpec = match.pubkey;\n } else {\n targetSpec = to;\n }\n }\n\n const result = await client.scheduleMessage(targetSpec, sArgs.message, deliverAt, true, sArgs.cron);\n if (!result) return text(\"schedule_reminder: broker did not acknowledge — check connection\", true);\n\n if (isCron) {\n const nextFire = new Date(result.deliverAt).toISOString();\n return text(\n isSelf\n ? `Recurring self-reminder scheduled (${result.scheduledId.slice(0, 8)}): \"${sArgs.message.slice(0, 60)}\" — cron: ${sArgs.cron}, next fire: ${nextFire}`\n : `Recurring reminder to \"${sArgs.to}\" scheduled (${result.scheduledId.slice(0, 8)}) — cron: ${sArgs.cron}, next fire: ${nextFire}`,\n );\n }\n\n const when = new Date(result.deliverAt).toISOString();\n return text(\n isSelf\n ? `Self-reminder scheduled (${result.scheduledId.slice(0, 8)}): \"${sArgs.message.slice(0, 60)}\" at ${when}`\n : `Reminder to \"${sArgs.to}\" scheduled (${result.scheduledId.slice(0, 8)}) for ${when}`,\n );\n }\n case \"list_scheduled\": {\n const client = allClients()[0];\n if (!client) return text(\"list_scheduled: not connected\", true);\n const scheduled = await client.listScheduled();\n if (scheduled.length === 0) return text(\"No pending scheduled messages.\");\n const lines = scheduled.map((m) =>\n `- [${m.id.slice(0, 8)}] → ${m.to === client.getSessionPubkey() ? \"self (reminder)\" : m.to} at ${new Date(m.deliverAt).toISOString()}: \"${m.message.slice(0, 60)}${m.message.length > 60 ? \"…\" : \"\"}\"`,\n );\n return text(`${scheduled.length} scheduled:\\n${lines.join(\"\\n\")}`);\n }\n case \"cancel_scheduled\": {\n const client = allClients()[0];\n if (!client) return text(\"cancel_scheduled: not connected\", true);\n const { id: schedId } = (args ?? {}) as { id?: string };\n if (!schedId) return text(\"cancel_scheduled: `id` required\", true);\n const ok = await client.cancelScheduled(schedId);\n return text(ok ? `Cancelled: ${schedId}` : `Not found or already fired: ${schedId}`, !ok);\n }\n\n // --- Files ---\n case \"share_file\": {\n const { path: filePath, name: fileName, tags, to: fileTo } = (args ?? {}) as { path?: string; name?: string; tags?: string[]; to?: string };\n if (!filePath) return text(\"share_file: `path` required\", true);\n const { existsSync } = await import(\"node:fs\");\n if (!existsSync(filePath)) return text(`share_file: file not found: ${filePath}`, true);\n const client = allClients()[0];\n if (!client) return text(\"share_file: not connected\", true);\n\n // If 'to' specified, do E2E encryption\n if (fileTo) {\n const { encryptFile, sealKeyForPeer } = await import(\"~/services/crypto/file-crypto.js\");\n const { readFileSync, writeFileSync, mkdtempSync, unlinkSync, rmdirSync } = await import(\"node:fs\");\n const { tmpdir } = await import(\"node:os\");\n const { join, basename } = await import(\"node:path\");\n\n // Resolve target peer pubkey\n const peers = await client.listPeers();\n const targetPeer = peers.find(p => p.pubkey === fileTo || p.displayName === fileTo);\n if (!targetPeer) {\n return text(`share_file: peer not found: ${fileTo}`, true);\n }\n\n // Read and encrypt file\n const plaintext = readFileSync(filePath);\n const { ciphertext, nonce, key } = await encryptFile(new Uint8Array(plaintext));\n\n // Seal Kf for target peer\n const sealedForTarget = await sealKeyForPeer(key, targetPeer.pubkey);\n\n // Seal Kf for ourselves (owner)\n const myPubkey = client.getSessionPubkey();\n const sealedForSelf = myPubkey ? await sealKeyForPeer(key, myPubkey) : null;\n\n const fileKeys = [\n { peerPubkey: targetPeer.pubkey, sealedKey: sealedForTarget },\n ...(sealedForSelf && myPubkey ? [{ peerPubkey: myPubkey, sealedKey: sealedForSelf }] : []),\n ];\n\n // Build combined buffer: nonce (24 bytes) + ciphertext\n const { ensureSodium } = await import(\"~/services/crypto/keypair.js\");\n const sodium = await ensureSodium();\n const nonceBytes = sodium.from_base64(nonce, sodium.base64_variants.ORIGINAL);\n const combined = new Uint8Array(nonceBytes.length + ciphertext.length);\n combined.set(nonceBytes, 0);\n combined.set(ciphertext, nonceBytes.length);\n\n const rawName = fileName ?? basename(filePath);\n const baseName = basename(rawName).replace(/[^a-zA-Z0-9._-]/g, \"_\").slice(0, 255);\n const tmpDir = mkdtempSync(join(tmpdir(), \"cm-\"));\n const tmpPath = join(tmpDir, baseName);\n writeFileSync(tmpPath, combined);\n\n try {\n const fileId = await client.uploadFile(tmpPath, client.meshId, client.meshSlug, {\n name: baseName,\n tags,\n persistent: true,\n encrypted: true,\n ownerPubkey: myPubkey ?? undefined,\n fileKeys,\n });\n return text(`Shared (E2E encrypted): ${baseName} → ${targetPeer.displayName} (${fileId})`);\n } catch (e) {\n return text(`share_file: upload failed — ${e instanceof Error ? e.message : String(e)}`, true);\n } finally {\n try { unlinkSync(tmpPath); } catch { /* ignore */ }\n try { rmdirSync(tmpDir); } catch { /* ignore */ }\n }\n }\n\n // Plain (unencrypted) upload — existing code\n try {\n const fileId = await client.uploadFile(filePath, client.meshId, client.meshSlug, {\n name: fileName, tags, persistent: true,\n });\n return text(`Shared: ${fileName ?? filePath} (${fileId})`);\n } catch (e) {\n return text(`share_file: upload failed — ${e instanceof Error ? e.message : String(e)}`, true);\n }\n }\n\n case \"get_file\": {\n const { id, save_to } = (args ?? {}) as { id?: string; save_to?: string };\n if (!id || !save_to) return text(\"get_file: `id` and `save_to` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"get_file: not connected\", true);\n const result = await client.getFile(id);\n if (!result) return text(`get_file: file ${id} not found`, true);\n\n if (result.encrypted) {\n const genericErr = \"get_file: could not decrypt — you may not have access to this file\";\n if (!result.sealedKey) return text(genericErr, true);\n const { openSealedKey, decryptFile } = await import(\"~/services/crypto/file-crypto.js\");\n const { ensureSodium } = await import(\"~/services/crypto/keypair.js\");\n const myPubkey = client.getSessionPubkey();\n const mySecret = client.getSessionSecretKey();\n if (!myPubkey || !mySecret) return text(genericErr, true);\n\n const kf = await openSealedKey(result.sealedKey, myPubkey, mySecret);\n if (!kf) return text(genericErr, true);\n\n const MAX_DOWNLOAD = 100 * 1024 * 1024; // 100 MB\n const resp = await fetch(result.url, { signal: AbortSignal.timeout(30_000) });\n if (!resp.ok) return text(`get_file: download failed (${resp.status})`, true);\n const contentLength = parseInt(resp.headers.get(\"content-length\") ?? \"0\", 10);\n if (contentLength > MAX_DOWNLOAD) return text(`get_file: file too large (${contentLength} bytes)`, true);\n const buf = new Uint8Array(await resp.arrayBuffer());\n if (buf.length > MAX_DOWNLOAD) return text(`get_file: file too large (${buf.length} bytes)`, true);\n\n const sodium = await ensureSodium();\n const NONCE_BYTES = sodium.crypto_secretbox_NONCEBYTES;\n if (buf.length < NONCE_BYTES) return text(genericErr, true);\n const nonce = sodium.to_base64(buf.slice(0, NONCE_BYTES), sodium.base64_variants.ORIGINAL);\n const ciphertext = buf.slice(NONCE_BYTES);\n\n const plaintext = await decryptFile(ciphertext, nonce, kf);\n if (!plaintext) return text(genericErr, true);\n\n const { writeFileSync, mkdirSync } = await import(\"node:fs\");\n const { dirname } = await import(\"node:path\");\n mkdirSync(dirname(save_to), { recursive: true });\n writeFileSync(save_to, plaintext);\n return text(`Downloaded and decrypted: ${result.name} → ${save_to}`);\n }\n\n // Unencrypted — try presigned URL first, fall back to broker download proxy\n let res = await fetch(result.url, { signal: AbortSignal.timeout(10_000) }).catch(() => null);\n if (!res || !res.ok) {\n // Presigned URL failed (internal MinIO hostname) — use broker proxy\n const brokerHttp = client.brokerUrl.replace(\"wss://\", \"https://\").replace(\"ws://\", \"http://\").replace(\"/ws\", \"\");\n res = await fetch(`${brokerHttp}/download/${id}?mesh=${client.meshId}`, { signal: AbortSignal.timeout(30_000) });\n }\n if (!res.ok) return text(`get_file: download failed (${res.status})`, true);\n const { writeFileSync, mkdirSync } = await import(\"node:fs\");\n const { dirname } = await import(\"node:path\");\n mkdirSync(dirname(save_to), { recursive: true });\n writeFileSync(save_to, Buffer.from(await res.arrayBuffer()));\n return text(`Downloaded: ${result.name} → ${save_to}`);\n }\n\n case \"list_files\": {\n const { query, from } = (args ?? {}) as { query?: string; from?: string };\n const client = allClients()[0];\n if (!client) return text(\"list_files: not connected\", true);\n const files = await client.listFiles(query, from);\n if (files.length === 0) return text(\"No files found.\");\n const lines = files.map(f =>\n `- **${f.name}** (${f.id.slice(0, 8)}…, ${f.size} bytes) by ${f.uploadedBy}${f.tags.length ? ` [${f.tags.join(\", \")}]` : \"\"}`\n );\n return text(lines.join(\"\\n\"));\n }\n\n case \"file_status\": {\n const { id } = (args ?? {}) as { id?: string };\n if (!id) return text(\"file_status: `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"file_status: not connected\", true);\n const accesses = await client.fileStatus(id);\n if (accesses.length === 0) return text(\"No one has accessed this file yet.\");\n const lines = accesses.map(a => `- ${a.peerName} at ${a.accessedAt}`);\n return text(`Accessed by:\\n${lines.join(\"\\n\")}`);\n }\n\n case \"delete_file\": {\n const { id } = (args ?? {}) as { id?: string };\n if (!id) return text(\"delete_file: `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"delete_file: not connected\", true);\n await client.deleteFile(id);\n return text(`Deleted: ${id}`);\n }\n\n // --- Vectors ---\n case \"vector_store\": {\n const { collection, text: storeText, metadata } = (args ?? {}) as { collection?: string; text?: string; metadata?: Record<string, unknown> };\n if (!collection || !storeText) return text(\"vector_store: `collection` and `text` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"vector_store: not connected\", true);\n const id = await client.vectorStore(collection, storeText, metadata);\n return text(`Stored in ${collection}${id ? ` (${id})` : \"\"}`);\n }\n case \"vector_search\": {\n const { collection, query, limit } = (args ?? {}) as { collection?: string; query?: string; limit?: number };\n if (!collection || !query) return text(\"vector_search: `collection` and `query` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"vector_search: not connected\", true);\n const results = await client.vectorSearch(collection, query, limit);\n if (results.length === 0) return text(`No results in ${collection} for \"${query}\".`);\n const lines = results.map(r => `- [${r.id.slice(0, 8)}…] (score: ${r.score.toFixed(3)}) ${r.text.slice(0, 120)}${r.text.length > 120 ? \"…\" : \"\"}`);\n return text(`${results.length} result(s) in ${collection}:\\n${lines.join(\"\\n\")}`);\n }\n case \"vector_delete\": {\n const { collection, id } = (args ?? {}) as { collection?: string; id?: string };\n if (!collection || !id) return text(\"vector_delete: `collection` and `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"vector_delete: not connected\", true);\n await client.vectorDelete(collection, id);\n return text(`Deleted ${id} from ${collection}`);\n }\n case \"list_collections\": {\n const client = allClients()[0];\n if (!client) return text(\"list_collections: not connected\", true);\n const collections = await client.listCollections();\n if (collections.length === 0) return text(\"No vector collections.\");\n return text(`Collections:\\n${collections.map(c => `- ${c}`).join(\"\\n\")}`);\n }\n\n // --- Graph ---\n case \"graph_query\": {\n const { cypher } = (args ?? {}) as { cypher?: string };\n if (!cypher) return text(\"graph_query: `cypher` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"graph_query: not connected\", true);\n const rows = await client.graphQuery(cypher);\n if (rows.length === 0) return text(\"No results.\");\n return text(JSON.stringify(rows, null, 2));\n }\n case \"graph_execute\": {\n const { cypher } = (args ?? {}) as { cypher?: string };\n if (!cypher) return text(\"graph_execute: `cypher` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"graph_execute: not connected\", true);\n const rows = await client.graphExecute(cypher);\n return text(rows.length > 0 ? JSON.stringify(rows, null, 2) : \"Executed successfully.\");\n }\n\n // --- Context ---\n case \"share_context\": {\n const { summary, files_read, key_findings, tags } = (args ?? {}) as { summary?: string; files_read?: string[]; key_findings?: string[]; tags?: string[] };\n if (!summary) return text(\"share_context: `summary` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"share_context: not connected\", true);\n await client.shareContext(summary, files_read, key_findings, tags);\n return text(`Context shared: \"${summary.slice(0, 80)}${summary.length > 80 ? \"…\" : \"\"}\"`);\n }\n case \"get_context\": {\n const { query } = (args ?? {}) as { query?: string };\n if (!query) return text(\"get_context: `query` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"get_context: not connected\", true);\n const contexts = await client.getContext(query);\n if (contexts.length === 0) return text(`No context found for \"${query}\".`);\n const lines = contexts.map(c => {\n const files = c.filesRead.length ? `\\n Files: ${c.filesRead.join(\", \")}` : \"\";\n const findings = c.keyFindings.length ? `\\n Findings: ${c.keyFindings.join(\"; \")}` : \"\";\n return `- **${c.peerName}** (${c.updatedAt}): ${c.summary}${files}${findings}`;\n });\n return text(`${contexts.length} context(s):\\n${lines.join(\"\\n\")}`);\n }\n case \"list_contexts\": {\n const client = allClients()[0];\n if (!client) return text(\"list_contexts: not connected\", true);\n const contexts = await client.listContexts();\n if (contexts.length === 0) return text(\"No peer contexts shared yet.\");\n const lines = contexts.map(c => `- **${c.peerName}**: ${c.summary}${c.tags.length ? ` [${c.tags.join(\", \")}]` : \"\"}`);\n return text(`Peer contexts:\\n${lines.join(\"\\n\")}`);\n }\n\n // --- Tasks ---\n case \"create_task\": {\n const { title, assignee, priority, tags } = (args ?? {}) as { title?: string; assignee?: string; priority?: string; tags?: string[] };\n if (!title) return text(\"create_task: `title` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"create_task: not connected\", true);\n const id = await client.createTask(title, assignee, priority, tags);\n return text(`Task created${id ? ` (${id})` : \"\"}: \"${title}\"${assignee ? ` → ${assignee}` : \"\"}`);\n }\n case \"claim_task\": {\n const { id } = (args ?? {}) as { id?: string };\n if (!id) return text(\"claim_task: `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"claim_task: not connected\", true);\n await client.claimTask(id);\n return text(`Claimed task: ${id}`);\n }\n case \"complete_task\": {\n const { id, result } = (args ?? {}) as { id?: string; result?: string };\n if (!id) return text(\"complete_task: `id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"complete_task: not connected\", true);\n await client.completeTask(id, result);\n return text(`Completed task: ${id}${result ? ` — ${result}` : \"\"}`);\n }\n case \"list_tasks\": {\n const { status, assignee } = (args ?? {}) as { status?: string; assignee?: string };\n const client = allClients()[0];\n if (!client) return text(\"list_tasks: not connected\", true);\n const tasks = await client.listTasks(status, assignee);\n if (tasks.length === 0) return text(\"No tasks found.\");\n const lines = tasks.map(t => `- [${t.id.slice(0, 8)}…] **${t.title}** (${t.status}, ${t.priority}) ${t.assignee ? `→ ${t.assignee}` : \"unassigned\"} (by ${t.createdBy})`);\n return text(`${tasks.length} task(s):\\n${lines.join(\"\\n\")}`);\n }\n\n // --- Mesh Database ---\n case \"mesh_query\": {\n const { sql: querySql } = (args ?? {}) as { sql?: string };\n if (!querySql) return text(\"mesh_query: `sql` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_query: not connected\", true);\n const result = await client.meshQuery(querySql);\n if (!result) return text(\"mesh_query: query failed or timed out\", true);\n if (result.rows.length === 0) return text(`Query returned 0 rows.`);\n const header = `| ${result.columns.join(\" | \")} |`;\n const sep = `| ${result.columns.map(() => \"---\").join(\" | \")} |`;\n const rows = result.rows.map(r => `| ${result.columns.map(c => String(r[c] ?? \"\")).join(\" | \")} |`);\n return text(`${result.rowCount} row(s):\\n${header}\\n${sep}\\n${rows.join(\"\\n\")}`);\n }\n case \"mesh_execute\": {\n const { sql: execSql } = (args ?? {}) as { sql?: string };\n if (!execSql) return text(\"mesh_execute: `sql` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_execute: not connected\", true);\n await client.meshExecute(execSql);\n return text(`Executed.`);\n }\n case \"mesh_schema\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_schema: not connected\", true);\n const tables = await client.meshSchema();\n if (!tables || tables.length === 0) return text(\"No tables in mesh database.\");\n const lines = tables.map(t => `**${t.name}**: ${t.columns.map(c => `${c.name} (${c.type}${c.nullable ? \", nullable\" : \"\"})`).join(\", \")}`);\n return text(lines.join(\"\\n\"));\n }\n\n // --- Streams ---\n case \"create_stream\": {\n const { name: streamName } = (args ?? {}) as { name?: string };\n if (!streamName) return text(\"create_stream: `name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"create_stream: not connected\", true);\n const streamId = await client.createStream(streamName);\n return text(`Stream created: ${streamName}${streamId ? ` (${streamId})` : \"\"}`);\n }\n case \"publish\": {\n const { stream: pubStream, data: pubData } = (args ?? {}) as { stream?: string; data?: unknown };\n if (!pubStream) return text(\"publish: `stream` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"publish: not connected\", true);\n await client.publish(pubStream, pubData);\n return text(`Published to ${pubStream}.`);\n }\n case \"subscribe\": {\n const { stream: subStream } = (args ?? {}) as { stream?: string };\n if (!subStream) return text(\"subscribe: `stream` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"subscribe: not connected\", true);\n await client.subscribe(subStream);\n return text(`Subscribed to ${subStream}. Data pushes will arrive as channel notifications.`);\n }\n case \"list_streams\": {\n const client = allClients()[0];\n if (!client) return text(\"list_streams: not connected\", true);\n const streams = await client.listStreams();\n if (streams.length === 0) return text(\"No active streams.\");\n const lines = streams.map(s => `- **${s.name}** (${s.id.slice(0, 8)}…) by ${s.createdBy}, ${s.subscriberCount} subscriber(s)`);\n return text(lines.join(\"\\n\"));\n }\n\n case \"mesh_set_clock\": {\n const { speed } = (args ?? {}) as { speed?: number };\n if (!speed || speed < 1 || speed > 100) return text(\"mesh_set_clock: speed must be 1-100\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_set_clock: not connected\", true);\n const result = await client.setClock(speed);\n if (!result) return text(\"mesh_set_clock: timed out\", true);\n return text([\n `**Clock set to x${result.speed}**`,\n `Paused: ${result.paused}`,\n `Tick: ${result.tick}`,\n `Sim time: ${result.simTime}`,\n `Started at: ${result.startedAt}`,\n ].join(\"\\n\"));\n }\n\n case \"mesh_pause_clock\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_pause_clock: not connected\", true);\n const result = await client.pauseClock();\n if (!result) return text(\"mesh_pause_clock: timed out\", true);\n return text([\n \"**Clock paused**\",\n `Speed: x${result.speed}`,\n `Tick: ${result.tick}`,\n `Sim time: ${result.simTime}`,\n ].join(\"\\n\"));\n }\n\n case \"mesh_resume_clock\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_resume_clock: not connected\", true);\n const result = await client.resumeClock();\n if (!result) return text(\"mesh_resume_clock: timed out\", true);\n return text([\n \"**Clock resumed**\",\n `Speed: x${result.speed}`,\n `Tick: ${result.tick}`,\n `Sim time: ${result.simTime}`,\n ].join(\"\\n\"));\n }\n\n case \"mesh_clock\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_clock: not connected\", true);\n const result = await client.getClock();\n if (!result) return text(\"mesh_clock: timed out\", true);\n const statusLabel = result.speed === 0 ? \"not started\" : result.paused ? \"paused\" : \"running\";\n return text([\n `**Clock status: ${statusLabel}**`,\n `Speed: x${result.speed}`,\n `Tick: ${result.tick}`,\n `Sim time: ${result.simTime}`,\n `Started at: ${result.startedAt}`,\n ].join(\"\\n\"));\n }\n\n case \"mesh_info\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_info: not connected\", true);\n const info = await client.meshInfo();\n if (!info) return text(\"mesh_info: timed out\", true);\n const lines = [\n `**Mesh**: ${info.mesh}`,\n `**Peers**: ${info.peers}`,\n `**Groups**: ${(info.groups as string[])?.join(\", \") || \"none\"}`,\n `**State keys**: ${(info.stateKeys as string[])?.join(\", \") || \"none\"}`,\n `**Memories**: ${info.memoryCount}`,\n `**Files**: ${info.fileCount}`,\n `**Tasks**: open=${(info.tasks as any)?.open ?? 0}, claimed=${(info.tasks as any)?.claimed ?? 0}, done=${(info.tasks as any)?.done ?? 0}`,\n `**Streams**: ${(info.streams as string[])?.join(\", \") || \"none\"}`,\n `**Tables**: ${(info.tables as string[])?.join(\", \") || \"none\"}`,\n `**Your name**: ${info.yourName}`,\n `**Your groups**: ${(info.yourGroups as any[])?.map((g: any) => `@${g.name}${g.role ? ':' + g.role : ''}`).join(\", \") || \"none\"}`,\n ];\n return text(lines.join(\"\\n\"));\n }\n\n case \"mesh_stats\": {\n const clients = allClients();\n if (clients.length === 0) return text(\"mesh_stats: no joined meshes\", true);\n const sections: string[] = [];\n for (const c of clients) {\n const peers = await c.listPeers();\n const header = `## ${c.meshSlug}`;\n const rows = peers.map((p) => {\n const s = p.stats;\n if (!s) return `| ${p.displayName} | - | - | - | - | - |`;\n const up = s.uptime != null ? `${Math.floor(s.uptime / 60)}m` : \"-\";\n return `| ${p.displayName} | ${s.messagesIn ?? 0} | ${s.messagesOut ?? 0} | ${s.toolCalls ?? 0} | ${up} | ${s.errors ?? 0} |`;\n });\n sections.push(\n `${header}\\n| Peer | Msgs In | Msgs Out | Tool Calls | Uptime | Errors |\\n|------|---------|----------|------------|--------|--------|\\n${rows.join(\"\\n\")}`,\n );\n }\n return text(sections.join(\"\\n\\n\"));\n }\n\n // --- Skills ---\n case \"share_skill\": {\n const {\n name: skillName, description: skillDesc, instructions: skillInstr, tags: skillTags,\n when_to_use, allowed_tools, model, context: skillContext, agent, user_invocable, argument_hint,\n } = (args ?? {}) as {\n name?: string; description?: string; instructions?: string; tags?: string[];\n when_to_use?: string; allowed_tools?: string[]; model?: string; context?: string;\n agent?: string; user_invocable?: boolean; argument_hint?: string;\n };\n if (!skillName || !skillDesc || !skillInstr) return text(\"share_skill: `name`, `description`, and `instructions` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"share_skill: not connected\", true);\n // Build manifest from optional metadata fields\n const manifest: Record<string, unknown> = {};\n if (when_to_use) manifest.when_to_use = when_to_use;\n if (allowed_tools?.length) manifest.allowed_tools = allowed_tools;\n if (model) manifest.model = model;\n if (skillContext) manifest.context = skillContext;\n if (agent) manifest.agent = agent;\n if (user_invocable === false) manifest.user_invocable = false;\n if (argument_hint) manifest.argument_hint = argument_hint;\n const result = await client.shareSkill(skillName, skillDesc, skillInstr, skillTags, Object.keys(manifest).length > 0 ? manifest : undefined);\n if (!result) return text(\"share_skill: broker did not acknowledge\", true);\n // Notify prompts changed so Claude Code refreshes slash commands\n server.notification({ method: \"notifications/prompts/list_changed\" });\n server.notification({ method: \"notifications/resources/list_changed\" });\n return text(`Skill \"${skillName}\" published to the mesh. It will appear as /claudemesh:${skillName} in Claude Code.`);\n }\n case \"get_skill\": {\n const { name: gsName } = (args ?? {}) as { name?: string };\n if (!gsName) return text(\"get_skill: `name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"get_skill: not connected\", true);\n const skill = await client.getSkill(gsName);\n if (!skill) return text(`Skill \"${gsName}\" not found in the mesh.`);\n const manifest = skill.manifest as Record<string, unknown> | null | undefined;\n const metaLines: string[] = [];\n if (manifest) {\n if (manifest.when_to_use) metaLines.push(`**When to use:** ${manifest.when_to_use}`);\n if (manifest.allowed_tools) metaLines.push(`**Allowed tools:** ${(manifest.allowed_tools as string[]).join(\", \")}`);\n if (manifest.model) metaLines.push(`**Model:** ${manifest.model}`);\n if (manifest.context) metaLines.push(`**Context:** ${manifest.context}`);\n if (manifest.agent) metaLines.push(`**Agent:** ${manifest.agent}`);\n }\n return text(\n `# Skill: ${skill.name}\\n\\n` +\n `**Description:** ${skill.description}\\n` +\n `**Author:** ${skill.author}\\n` +\n `**Tags:** ${skill.tags.length ? skill.tags.join(\", \") : \"none\"}\\n` +\n `**Created:** ${skill.createdAt}\\n` +\n `**Slash command:** /claudemesh:${skill.name}\\n` +\n (metaLines.length ? metaLines.join(\"\\n\") + \"\\n\" : \"\") +\n `\\n---\\n\\n` +\n `## Instructions\\n\\n${skill.instructions}`,\n );\n }\n case \"list_skills\": {\n const { query: skillQuery } = (args ?? {}) as { query?: string };\n const client = allClients()[0];\n if (!client) return text(\"list_skills: not connected\", true);\n const skills = await client.listSkills(skillQuery);\n if (skills.length === 0) return text(skillQuery ? `No skills found for \"${skillQuery}\".` : \"No skills in the mesh yet.\");\n const lines = skills.map(s =>\n `- **${s.name}**: ${s.description}${s.tags.length ? ` [${s.tags.join(\", \")}]` : \"\"} (by ${s.author})`,\n );\n return text(`${skills.length} skill(s):\\n${lines.join(\"\\n\")}`);\n }\n case \"remove_skill\": {\n const { name: rsName } = (args ?? {}) as { name?: string };\n if (!rsName) return text(\"remove_skill: `name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"remove_skill: not connected\", true);\n const removed = await client.removeSkill(rsName);\n if (removed) {\n server.notification({ method: \"notifications/prompts/list_changed\" });\n server.notification({ method: \"notifications/resources/list_changed\" });\n }\n return text(removed ? `Skill \"${rsName}\" removed.` : `Skill \"${rsName}\" not found.`, !removed);\n }\n\n case \"ping_mesh\": {\n const { priorities: pingPriorities } = (args ?? {}) as { priorities?: string[] };\n const toTest = (pingPriorities ?? [\"now\", \"next\"]) as Priority[];\n const client = allClients()[0];\n if (!client) return text(\"ping_mesh: not connected\", true);\n const results: string[] = [];\n\n // Diagnostics: connection state\n results.push(`WS status: ${client.status}`);\n results.push(`Mesh: ${client.meshSlug}`);\n\n // Check own peer status (explains priority gating)\n const peers = await client.listPeers();\n const selfPeer = peers.find(p => p.displayName === myName);\n results.push(`Your status: ${selfPeer?.status ?? \"not found in peer list\"}`);\n results.push(`Peers online: ${peers.length}`);\n results.push(`Push buffer: ${client.pushHistory.length} buffered`);\n\n // Test send→ack latency per priority (doesn't need round-trip)\n for (const prio of toTest) {\n const sendTime = Date.now();\n // Send to a peer if one exists, otherwise broadcast\n const target = peers.find(p => p.displayName !== myName);\n const sendResult = await client.send(\n target?.pubkey ?? \"*\",\n `__ping__ ${prio} from ${myName} at ${new Date().toISOString()}`,\n prio,\n );\n const ackTime = Date.now();\n\n if (!sendResult.ok) {\n results.push(`[${prio}] SEND FAILED: ${sendResult.error}`);\n } else {\n results.push(`[${prio}] send→ack: ${ackTime - sendTime}ms (msgId: ${sendResult.messageId?.slice(0, 12)})`);\n if (prio !== \"now\" && selfPeer?.status === \"working\") {\n results.push(` ⚠ peer status is \"working\" — broker holds \"${prio}\" until idle`);\n }\n }\n }\n\n // Check if notification pipeline works\n results.push(\"\");\n results.push(\"Pipeline check:\");\n results.push(` onPush handlers: active`);\n results.push(` messageMode: ${messageMode}`);\n results.push(` server.notification: ${messageMode === \"off\" ? \"disabled (mode=off)\" : \"enabled\"}`);\n\n return text(results.join(\"\\n\"));\n }\n\n // --- MCP Proxy ---\n case \"mesh_mcp_register\": {\n const { server_name, description, tools: regTools, persistent: regPersistent } = (args ?? {}) as {\n server_name?: string;\n description?: string;\n tools?: Array<{ name: string; description: string; inputSchema: Record<string, unknown> }>;\n persistent?: boolean;\n };\n if (!server_name || !description || !regTools?.length)\n return text(\"mesh_mcp_register: `server_name`, `description`, and `tools` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_register: not connected\", true);\n const result = await client.mcpRegister(server_name, description, regTools, regPersistent);\n if (!result) return text(\"mesh_mcp_register: broker did not acknowledge\", true);\n const persistLabel = regPersistent ? \" (persistent — survives disconnect)\" : \"\";\n return text(`Registered MCP server \"${result.serverName}\" with ${result.toolCount} tool(s)${persistLabel}. Other peers can now call its tools via mesh_tool_call.`);\n }\n case \"mesh_mcp_list\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_list: not connected\", true);\n const servers = await client.mcpList();\n if (servers.length === 0) return text(\"No MCP servers registered in the mesh.\");\n const lines = servers.map((s: any) => {\n const toolList = s.tools.map((t: any) => ` - **${t.name}**: ${t.description}`).join(\"\\n\");\n const status = s.online === false\n ? ` [OFFLINE${s.offlineSince ? ` since ${s.offlineSince}` : \"\"}]`\n : \"\";\n return `- **${s.name}** (hosted by ${s.hostedBy})${status}: ${s.description}\\n${toolList}`;\n });\n return text(`${servers.length} MCP server(s) in mesh:\\n${lines.join(\"\\n\")}`);\n }\n case \"mesh_tool_call\": {\n const { server_name: callServer, tool_name: callTool, args: callArgs } = (args ?? {}) as {\n server_name?: string;\n tool_name?: string;\n args?: Record<string, unknown>;\n };\n if (!callServer || !callTool)\n return text(\"mesh_tool_call: `server_name` and `tool_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_tool_call: not connected\", true);\n const callResult = await client.mcpCall(callServer, callTool, callArgs ?? {});\n if (callResult.error) return text(`mesh_tool_call error: ${callResult.error}`, true);\n return text(typeof callResult.result === \"string\" ? callResult.result : JSON.stringify(callResult.result, null, 2));\n }\n case \"mesh_mcp_remove\": {\n const { server_name: rmServer } = (args ?? {}) as { server_name?: string };\n if (!rmServer) return text(\"mesh_mcp_remove: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_remove: not connected\", true);\n await client.mcpUnregister(rmServer);\n return text(`Unregistered MCP server \"${rmServer}\" from the mesh.`);\n }\n\n case \"grant_file_access\": {\n const { fileId, to: grantTo } = (args ?? {}) as { fileId?: string; to?: string };\n if (!fileId || !grantTo) return text(\"grant_file_access: `fileId` and `to` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"grant_file_access: not connected\", true);\n\n const peers = await client.listPeers();\n const targetPeer = peers.find(p => p.pubkey === grantTo || p.displayName === grantTo);\n if (!targetPeer) return text(`grant_file_access: peer not found: ${grantTo}`, true);\n\n const result = await client.getFile(fileId);\n if (!result) return text(\"grant_file_access: file not found\", true);\n if (!result.encrypted) return text(\"grant_file_access: file is not encrypted\", true);\n if (!result.sealedKey) return text(\"grant_file_access: no key available (are you the owner?)\", true);\n\n const { openSealedKey, sealKeyForPeer } = await import(\"~/services/crypto/file-crypto.js\");\n const myPubkey = client.getSessionPubkey();\n const mySecret = client.getSessionSecretKey();\n if (!myPubkey || !mySecret) return text(\"grant_file_access: no session keypair\", true);\n\n const kf = await openSealedKey(result.sealedKey, myPubkey, mySecret);\n if (!kf) return text(\"grant_file_access: cannot decrypt your own key\", true);\n\n const sealedForPeer = await sealKeyForPeer(kf, targetPeer.pubkey);\n const ok = await client.grantFileAccess(fileId, targetPeer.pubkey, sealedForPeer);\n\n if (!ok) return text(\"grant_file_access: broker did not confirm\", true);\n return text(`Access granted: ${targetPeer.displayName} can now download file ${fileId}`);\n }\n\n // --- Peer file sharing ---\n case \"read_peer_file\": {\n const { peer: peerName, path: filePath } = (args ?? {}) as { peer?: string; path?: string };\n if (!peerName || !filePath) return text(\"read_peer_file: `peer` and `path` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"read_peer_file: not connected\", true);\n\n // Resolve peer name to pubkey\n const peers = await client.listPeers();\n const nameLower = peerName.toLowerCase();\n let targetPubkey: string | null = null;\n // Direct pubkey?\n if (/^[0-9a-f]{64}$/.test(peerName)) {\n targetPubkey = peerName;\n } else {\n const match = peers.find(p => p.displayName.toLowerCase() === nameLower);\n if (!match) {\n const partials = peers.filter(p => p.displayName.toLowerCase().includes(nameLower));\n if (partials.length === 1) {\n targetPubkey = partials[0]!.pubkey;\n } else {\n const names = peers.map(p => p.displayName).join(\", \");\n return text(`read_peer_file: peer \"${peerName}\" not found. Online: ${names || \"(none)\"}`, true);\n }\n } else {\n targetPubkey = match.pubkey;\n }\n }\n\n // Check if peer is local — hint AI to use filesystem directly\n const resolvedPeer = peers.find(p => p.pubkey === targetPubkey);\n const isLocal = resolvedPeer?.hostname && resolvedPeer.hostname === require(\"os\").hostname();\n let localHint = \"\";\n if (isLocal && resolvedPeer?.cwd) {\n const directPath = require(\"path\").resolve(resolvedPeer.cwd, filePath);\n localHint = `\\n\\n> **Hint:** This peer is LOCAL (same machine). Next time, read directly: \\`${directPath}\\` — faster, no size limit.\\n\\n`;\n }\n\n const result = await client.requestFile(targetPubkey, filePath);\n if (result.error) return text(`read_peer_file: ${result.error}`, true);\n if (!result.content) return text(\"read_peer_file: empty response from peer\", true);\n\n // Decode base64\n try {\n const decoded = Buffer.from(result.content, \"base64\").toString(\"utf-8\");\n return text(localHint + decoded);\n } catch {\n return text(\"read_peer_file: failed to decode file content (binary file?)\", true);\n }\n }\n\n case \"list_peer_files\": {\n const { peer: peerName, path: dirPath, pattern } = (args ?? {}) as { peer?: string; path?: string; pattern?: string };\n if (!peerName) return text(\"list_peer_files: `peer` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"list_peer_files: not connected\", true);\n\n // Resolve peer name to pubkey\n const peers = await client.listPeers();\n const nameLower = peerName.toLowerCase();\n let targetPubkey: string | null = null;\n if (/^[0-9a-f]{64}$/.test(peerName)) {\n targetPubkey = peerName;\n } else {\n const match = peers.find(p => p.displayName.toLowerCase() === nameLower);\n if (!match) {\n const partials = peers.filter(p => p.displayName.toLowerCase().includes(nameLower));\n if (partials.length === 1) {\n targetPubkey = partials[0]!.pubkey;\n } else {\n const names = peers.map(p => p.displayName).join(\", \");\n return text(`list_peer_files: peer \"${peerName}\" not found. Online: ${names || \"(none)\"}`, true);\n }\n } else {\n targetPubkey = match.pubkey;\n }\n }\n\n const result = await client.requestDir(targetPubkey, dirPath ?? \".\", pattern);\n if (result.error) return text(`list_peer_files: ${result.error}`, true);\n if (!result.entries || result.entries.length === 0) return text(\"No files found.\");\n\n return text(result.entries.join(\"\\n\"));\n }\n\n // --- Webhooks ---\n case \"create_webhook\": {\n const { name: whName } = (args ?? {}) as { name?: string };\n if (!whName) return text(\"create_webhook: `name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"create_webhook: not connected\", true);\n const wh = await client.createWebhook(whName);\n if (!wh) return text(\"create_webhook: broker did not acknowledge — check connection\", true);\n return text(`Webhook **${wh.name}** created.\\n\\nURL: ${wh.url}\\nSecret: ${wh.secret}\\n\\nExternal services can POST JSON to this URL. The payload will be pushed to all connected mesh peers.`);\n }\n case \"list_webhooks\": {\n const client = allClients()[0];\n if (!client) return text(\"list_webhooks: not connected\", true);\n const webhooks = await client.listWebhooks();\n if (webhooks.length === 0) return text(\"No active webhooks.\");\n const lines = webhooks.map(w => `- **${w.name}** — ${w.url} (created ${w.createdAt})`);\n return text(`${webhooks.length} webhook(s):\\n${lines.join(\"\\n\")}`);\n }\n case \"delete_webhook\": {\n const { name: delName } = (args ?? {}) as { name?: string };\n if (!delName) return text(\"delete_webhook: `name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"delete_webhook: not connected\", true);\n const ok = await client.deleteWebhook(delName);\n return text(ok ? `Webhook \"${delName}\" deactivated.` : `Failed to deactivate webhook \"${delName}\".`, !ok);\n }\n\n // --- Vault tools ---\n case \"vault_set\": {\n const { key, value, type: vType, mount_path, description } = (args ?? {}) as {\n key?: string; value?: string; type?: \"env\" | \"file\"; mount_path?: string; description?: string;\n };\n if (!key || !value) return text(\"vault_set: `key` and `value` required\", true);\n if (!/^[a-zA-Z0-9_.-]{1,128}$/.test(key)) return text(\"vault_set: `key` must be 1-128 alphanumeric/underscore/dot/dash chars\", true);\n if (mount_path && (mount_path.includes(\"..\") || mount_path.length > 512)) return text(\"vault_set: invalid `mount_path`\", true);\n if (description && description.length > 500) return text(\"vault_set: `description` too long (max 500 chars)\", true);\n const client = allClients()[0];\n if (!client) return text(\"vault_set: not connected\", true);\n const entryType = vType ?? \"env\";\n\n // Read plaintext\n let plaintextBytes: Uint8Array;\n if (entryType === \"file\") {\n const { existsSync, readFileSync } = await import(\"node:fs\");\n if (!existsSync(value)) return text(`vault_set: file not found: ${value}`, true);\n plaintextBytes = new Uint8Array(readFileSync(value));\n } else {\n plaintextBytes = new TextEncoder().encode(value);\n }\n\n // E2E encrypt: crypto_secretbox with random Kf, then seal Kf with mesh pubkey\n const { encryptFile, sealKeyForPeer } = await import(\"~/services/crypto/file-crypto.js\");\n const { ciphertext, nonce, key: kf } = await encryptFile(plaintextBytes);\n const sealedKey = await sealKeyForPeer(kf, client.getMeshPubkey());\n\n // Convert ciphertext to base64 for storage\n const { ensureSodium } = await import(\"~/services/crypto/keypair.js\");\n const sodium = await ensureSodium();\n const ciphertextB64 = sodium.to_base64(ciphertext, sodium.base64_variants.ORIGINAL);\n\n const ok = await client.vaultSet(key, ciphertextB64, nonce, sealedKey, entryType, mount_path, description);\n if (!ok) return text(\"vault_set: broker did not acknowledge\", true);\n return text(`Vault entry \"${key}\" stored (${entryType}, E2E encrypted).`);\n }\n case \"vault_list\": {\n const client = allClients()[0];\n if (!client) return text(\"vault_list: not connected\", true);\n const entries = await client.vaultList();\n if (entries.length === 0) return text(\"Vault is empty.\");\n const lines = entries.map((e: any) =>\n `- **${e.key}** (${e.entry_type}${e.mount_path ? ` → ${e.mount_path}` : \"\"})${e.description ? ` — ${e.description}` : \"\"} (${e.updated_at})`\n );\n return text(`${entries.length} vault entry(s):\\n${lines.join(\"\\n\")}`);\n }\n case \"vault_delete\": {\n const { key } = (args ?? {}) as { key?: string };\n if (!key) return text(\"vault_delete: `key` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"vault_delete: not connected\", true);\n const ok = await client.vaultDelete(key);\n return text(ok ? `Vault entry \"${key}\" deleted.` : `Vault entry \"${key}\" not found.`);\n }\n\n // --- Service deployment tools ---\n case \"mesh_mcp_deploy\": {\n const { server_name, file_id, git_url, git_branch, npx_package, env: deployEnv, runtime, memory_mb, network_allow, scope } = (args ?? {}) as {\n server_name?: string; file_id?: string; git_url?: string; git_branch?: string;\n npx_package?: string;\n env?: Record<string, string>; runtime?: string; memory_mb?: number;\n network_allow?: string[]; scope?: unknown;\n };\n if (!server_name) return text(\"mesh_mcp_deploy: `server_name` required\", true);\n if (!file_id && !git_url && !npx_package) return text(\"mesh_mcp_deploy: one of `file_id`, `git_url`, or `npx_package` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_deploy: not connected\", true);\n const source = npx_package\n ? { type: \"npx\" as const, package: npx_package }\n : file_id\n ? { type: \"zip\" as const, file_id }\n : { type: \"git\" as const, url: git_url!, branch: git_branch };\n\n // Resolve $vault: references in env vars — decrypt client-side\n const resolvedEnv: Record<string, string> = {};\n const vaultResolved: string[] = [];\n if (deployEnv) {\n // Collect vault keys needed\n const vaultRefs: Array<{ envKey: string; vaultKey: string; isFile: boolean; mountPath?: string }> = [];\n for (const [envKey, envVal] of Object.entries(deployEnv)) {\n if (typeof envVal === \"string\" && envVal.startsWith(\"$vault:\")) {\n const parts = envVal.slice(7).split(\":\");\n const vaultKey = parts[0]!;\n const isFile = parts[1] === \"file\";\n const mountPath = isFile ? parts.slice(2).join(\":\") : undefined;\n vaultRefs.push({ envKey, vaultKey, isFile, mountPath });\n } else {\n resolvedEnv[envKey] = envVal;\n }\n }\n\n // Fetch + decrypt vault entries client-side\n if (vaultRefs.length > 0) {\n const { openSealedKey, decryptFile } = await import(\"~/services/crypto/file-crypto.js\");\n const { ensureSodium } = await import(\"~/services/crypto/keypair.js\");\n const sodium = await ensureSodium();\n\n const keys = vaultRefs.map(r => r.vaultKey);\n const encryptedEntries = await client.vaultGet(keys);\n\n for (const ref of vaultRefs) {\n const entry = encryptedEntries.find((e: any) => e.key === ref.vaultKey);\n if (!entry) return text(`mesh_mcp_deploy: a referenced vault key was not found. Use vault_set first.`, true);\n\n // Decrypt: open sealed key with mesh keypair, then decrypt ciphertext\n const kf = await openSealedKey(entry.sealed_key, client.getMeshPubkey(), client.getMeshSecretKey());\n if (!kf) return text(`mesh_mcp_deploy: failed to decrypt a vault entry — wrong keypair?`, true);\n\n const ciphertextBytes = sodium.from_base64(entry.ciphertext, sodium.base64_variants.ORIGINAL);\n const plainBytes = await decryptFile(ciphertextBytes, entry.nonce, kf);\n if (!plainBytes) return text(`mesh_mcp_deploy: failed to decrypt a vault entry — data may be corrupted`, true);\n\n if (ref.isFile && ref.mountPath) {\n // For file-type entries: the plaintext is the file content (raw bytes).\n // Encode as base64 for transport, runner writes it to mountPath.\n resolvedEnv[ref.envKey] = `__vault_file__:${ref.mountPath}:${sodium.to_base64(plainBytes, sodium.base64_variants.ORIGINAL)}`;\n } else {\n // For env-type entries: plaintext is the secret string\n resolvedEnv[ref.envKey] = new TextDecoder().decode(plainBytes);\n }\n vaultResolved.push(ref.vaultKey);\n }\n }\n }\n\n const config: Record<string, unknown> = {};\n if (Object.keys(resolvedEnv).length > 0 || (deployEnv && Object.keys(deployEnv).length > 0)) {\n config.env = Object.keys(resolvedEnv).length > 0 ? resolvedEnv : deployEnv;\n }\n if (runtime) config.runtime = runtime;\n if (memory_mb) config.memory_mb = memory_mb;\n if (network_allow) config.network_allow = network_allow;\n const result = await client.mcpDeploy(server_name, source, Object.keys(config).length > 0 ? config : undefined, scope);\n const toolList = result.tools?.map((t: any) => ` - ${t.name}: ${t.description}`).join(\"\\n\") ?? \" (pending)\";\n let vaultNote = \"\";\n if (vaultResolved.length > 0) {\n vaultNote = `\\n\\nVault keys resolved: ${vaultResolved.join(\", \")} (decrypted client-side, sent over TLS)`;\n }\n return text(`Deployed \"${server_name}\" (status: ${result.status}).\\n\\nTools:\\n${toolList}\\n\\nDefault scope: peer (private). Use mesh_mcp_scope to share.${vaultNote}`);\n }\n case \"mesh_mcp_undeploy\": {\n const { server_name } = (args ?? {}) as { server_name?: string };\n if (!server_name) return text(\"mesh_mcp_undeploy: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_undeploy: not connected\", true);\n const ok = await client.mcpUndeploy(server_name);\n return text(ok ? `Service \"${server_name}\" undeployed.` : `Failed to undeploy \"${server_name}\".`);\n }\n case \"mesh_mcp_update\": {\n const { server_name } = (args ?? {}) as { server_name?: string };\n if (!server_name) return text(\"mesh_mcp_update: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_update: not connected\", true);\n const result = await client.mcpUpdate(server_name);\n return text(`Updated \"${server_name}\" (status: ${result.status}).`);\n }\n case \"mesh_mcp_logs\": {\n const { server_name, lines: logLines } = (args ?? {}) as { server_name?: string; lines?: number };\n if (!server_name) return text(\"mesh_mcp_logs: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_logs: not connected\", true);\n const logs = await client.mcpLogs(server_name, logLines);\n if (logs.length === 0) return text(`No logs for \"${server_name}\".`);\n return text(`Logs for \"${server_name}\" (${logs.length} lines):\\n\\`\\`\\`\\n${logs.join(\"\\n\")}\\n\\`\\`\\``);\n }\n case \"mesh_mcp_scope\": {\n const { server_name, scope } = (args ?? {}) as { server_name?: string; scope?: unknown };\n if (!server_name) return text(\"mesh_mcp_scope: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_scope: not connected\", true);\n const result = await client.mcpScope(server_name, scope);\n if (scope !== undefined) {\n return text(`Scope for \"${server_name}\" updated to: ${JSON.stringify(result.scope)}`);\n }\n return text(`**${server_name}** scope: ${JSON.stringify(result.scope)}\\nDeployed by: ${result.deployed_by}`);\n }\n case \"mesh_mcp_schema\": {\n const { server_name, tool_name } = (args ?? {}) as { server_name?: string; tool_name?: string };\n if (!server_name) return text(\"mesh_mcp_schema: `server_name` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_schema: not connected\", true);\n const tools = await client.mcpServiceSchema(server_name, tool_name);\n if (tools.length === 0) return text(`No tools found for \"${server_name}\"${tool_name ? ` (tool: ${tool_name})` : \"\"}.`);\n const lines = tools.map((t: any) =>\n `### ${t.name}\\n${t.description}\\n\\`\\`\\`json\\n${JSON.stringify(t.inputSchema, null, 2)}\\n\\`\\`\\``\n );\n return text(`Tools for \"${server_name}\":\\n\\n${lines.join(\"\\n\\n\")}`);\n }\n case \"mesh_mcp_catalog\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_mcp_catalog: not connected\", true);\n const services = await client.mcpCatalog();\n if (services.length === 0) return text(\"No services deployed in the mesh.\");\n const lines = services.map((s: any) => {\n const scopeStr = typeof s.scope === \"string\" ? s.scope : JSON.stringify(s.scope);\n return `- **${s.name}** (${s.type}, ${s.status}) — ${s.description}\\n ${s.tool_count} tools | scope: ${scopeStr} | by ${s.deployed_by} | ${s.source_type}${s.runtime ? ` (${s.runtime})` : \"\"}`;\n });\n return text(`${services.length} service(s) in mesh:\\n\\n${lines.join(\"\\n\")}`);\n }\n case \"mesh_skill_deploy\": {\n const { file_id, git_url, git_branch } = (args ?? {}) as { file_id?: string; git_url?: string; git_branch?: string };\n if (!file_id && !git_url) return text(\"mesh_skill_deploy: either `file_id` or `git_url` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_skill_deploy: not connected\", true);\n const source = file_id\n ? { type: \"zip\" as const, file_id }\n : { type: \"git\" as const, url: git_url!, branch: git_branch };\n const result = await client.skillDeploy(source);\n return text(`Skill \"${result.name}\" deployed.\\nFiles: ${result.files.join(\", \")}`);\n }\n\n // --- URL Watch ---\n case \"mesh_watch\": {\n const { url, mode, extract, interval, notify_on, headers, label } = (args ?? {}) as any;\n if (!url) return text(\"mesh_watch: `url` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_watch: not connected\", true);\n const result = await client.watch(url, { mode, extract, interval, notify_on, headers, label });\n if (result.error) return text(`mesh_watch: ${result.error}`, true);\n return text(`Watching \"${label ?? url}\" (${result.mode}, every ${result.interval}s)\\nWatch ID: ${result.watchId}`);\n }\n case \"mesh_unwatch\": {\n const { watch_id } = (args ?? {}) as { watch_id?: string };\n if (!watch_id) return text(\"mesh_unwatch: `watch_id` required\", true);\n const client = allClients()[0];\n if (!client) return text(\"mesh_unwatch: not connected\", true);\n await client.unwatch(watch_id);\n return text(`Watch ${watch_id} stopped.`);\n }\n case \"mesh_watches\": {\n const client = allClients()[0];\n if (!client) return text(\"mesh_watches: not connected\", true);\n const watches = await client.watchList();\n if (watches.length === 0) return text(\"No active watches.\");\n const lines = watches.map((w: any) =>\n `- **${w.id}** ${w.label ? `(${w.label}) ` : \"\"}${w.url}\\n mode: ${w.mode} | interval: ${w.interval}s | last: ${w.lastValue?.slice(0, 30) ?? \"pending\"} | checked: ${w.lastCheck ?? \"never\"}`\n );\n return text(`${watches.length} active watch(es):\\n\\n${lines.join(\"\\n\")}`);\n }\n\n default:\n return text(`Unknown tool: ${name}`, true);\n }\n });\n\n // Start MCP transport IMMEDIATELY so Claude Code discovers tools/prompts/resources\n // without waiting for WS connections. Tool handlers gracefully return errors when\n // not connected. WS connects in background; push wiring happens once ready.\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n // Connect to broker WS in background — don't block MCP startup.\n startClients(config).then(() => {\n wirePushHandlers().catch(() => {});\n }).catch(() => {\n // Connect failed — clients are in reconnecting state, push wiring still needed\n wirePushHandlers().catch(() => {});\n });\n\n async function wirePushHandlers() {\n // Wire WSS pushes → MCP channel notifications. Each inbound push on\n // any mesh's broker connection becomes a <channel source=\"claudemesh\">\n // system reminder injected into Claude Code's context.\n for (const client of allClients()) {\n // Event-driven push: WS onPush fires immediately when a message arrives.\n // Claude Code's setNotificationHandler → enqueue → React useEffect pipeline\n // processes notifications instantly (no polling needed on Claude's side).\n // The old poll-based approach was an overcorrection — Claude Code source\n // confirms event-driven notification processing.\n client.onPush(async (msg) => {\n if (messageMode === \"off\") return;\n\n // System events (peer join/leave) — always push, regardless of mode.\n if (msg.subtype === \"system\" && msg.event) {\n const eventName = msg.event;\n const data = msg.eventData ?? {};\n let content: string;\n if (eventName === \"tick\") {\n const tick = data.tick ?? 0;\n const simTime = String(data.simTime ?? \"\").replace(\"T\", \" \").replace(/\\..*/,\"\");\n const speed = data.speed ?? 1;\n content = `[heartbeat] tick ${tick} | sim time: ${simTime} | speed: x${speed}`;\n } else if (eventName === \"peer_joined\") {\n content = `[system] Peer \"${data.name ?? \"unknown\"}\" joined the mesh`;\n } else if (eventName === \"peer_returned\") {\n const peerName = String(data.name ?? \"unknown\");\n const lastSeenAt = data.lastSeenAt ? relativeTime(String(data.lastSeenAt)) : \"unknown\";\n const groups = Array.isArray(data.groups)\n ? (data.groups as Array<{ name: string; role?: string }>).map((g) => g.role ? `@${g.name}:${g.role}` : `@${g.name}`).join(\", \")\n : \"\";\n const summary = data.summary ? ` Summary: \"${data.summary}\"` : \"\";\n content = `[system] Welcome back, \"${peerName}\"! Last seen ${lastSeenAt}.${groups ? ` Restored: ${groups}` : \"\"}${summary}`;\n } else if (eventName === \"peer_left\") {\n content = `[system] Peer \"${data.name ?? \"unknown\"}\" left the mesh`;\n } else if (eventName === \"mcp_registered\") {\n const tools = Array.isArray(data.tools) ? (data.tools as string[]).join(\", \") : \"\";\n content = `[system] New MCP server available: \"${data.serverName}\" (hosted by ${data.hostedBy}). Tools: ${tools}. Use mesh_tool_call to invoke.`;\n } else if (eventName === \"mcp_unregistered\") {\n content = `[system] MCP server \"${data.serverName}\" removed (was hosted by ${data.hostedBy})`;\n } else if (eventName === \"mcp_restored\") {\n content = `[system] MCP server \"${data.serverName}\" is back online (hosted by ${data.hostedBy})`;\n } else if (eventName === \"watch_triggered\") {\n content = `[WATCH] ${data.label ?? data.url}: ${data.oldValue} → ${data.newValue}`;\n } else if (eventName === \"mcp_deployed\") {\n content = `[SERVICE] \"${data.name}\" deployed (${data.tool_count} tools) by ${data.deployed_by}`;\n } else if (eventName === \"mcp_undeployed\") {\n content = `[SERVICE] \"${data.name}\" undeployed by ${data.by}`;\n } else if (eventName === \"mcp_scope_changed\") {\n content = `[SERVICE] \"${data.name}\" scope changed to ${JSON.stringify(data.scope)} by ${data.by}`;\n } else {\n content = `[system] ${eventName}: ${JSON.stringify(data)}`;\n }\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n kind: \"system\",\n event: eventName,\n mesh_slug: client.meshSlug,\n mesh_id: client.meshId,\n ...(Object.keys(data).length > 0 ? { eventData: JSON.stringify(data) } : {}),\n },\n },\n });\n process.stderr.write(`[claudemesh] system: ${content}\\n`);\n } catch (pushErr) {\n process.stderr.write(`[claudemesh] system push FAILED: ${pushErr}\\n`);\n }\n return;\n }\n\n const fromPubkey = msg.senderPubkey || \"\";\n const fromName = fromPubkey\n ? await resolvePeerName(client, fromPubkey)\n : \"unknown\";\n\n // Per-peer capability check — drop silently if sender lacks `dm`.\n if (fromPubkey) {\n try {\n const { isAllowed } = await import(\"~/commands/grants.js\");\n const kindCap = msg.kind === \"broadcast\" ? \"broadcast\" : \"dm\";\n if (!isAllowed(client.meshSlug, fromPubkey, kindCap)) {\n process.stderr.write(`[claudemesh] dropped ${kindCap} from ${fromName} (not granted)\\n`);\n return;\n }\n } catch { /* fail-open on grant-read errors — don't break delivery */ }\n }\n\n if (messageMode === \"inbox\") {\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content: `[inbox] New message from ${fromName}. Use check_messages to read.`,\n meta: { kind: \"inbox_notification\", from_name: fromName },\n },\n });\n } catch { /* best effort */ }\n return;\n }\n\n // push mode — full content. Format the content so it reads as a\n // first-class chat message even though Claude Code renders it as a\n // <channel> reminder: sender attribution + priority badge + body.\n const body = msg.plaintext ?? decryptFailedWarning(fromPubkey);\n const prioBadge = msg.priority === \"now\" ? \"[URGENT] \" : msg.priority === \"low\" ? \"[low] \" : \"\";\n const kindBadge = msg.kind === \"broadcast\" ? \" (broadcast)\" : \"\";\n const content = `${prioBadge}${fromName}${kindBadge}: ${body}`;\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n from_id: fromPubkey,\n from_name: fromName,\n mesh_slug: client.meshSlug,\n mesh_id: client.meshId,\n priority: msg.priority,\n sent_at: msg.createdAt,\n delivered_at: msg.receivedAt,\n kind: msg.kind,\n ...(msg.subtype ? { subtype: msg.subtype } : {}),\n },\n },\n });\n process.stderr.write(`[claudemesh] pushed: from=${fromName} content=${body.slice(0, 60)}\\n`);\n } catch (pushErr) {\n process.stderr.write(`[claudemesh] push FAILED: ${pushErr}\\n`);\n }\n });\n\n client.onStreamData(async (evt) => {\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content: `[stream:${evt.stream}] from ${evt.publishedBy}: ${JSON.stringify(evt.data)}`,\n meta: {\n kind: \"stream_data\",\n stream: evt.stream,\n published_by: evt.publishedBy,\n },\n },\n });\n } catch { /* best effort */ }\n });\n\n client.onStateChange(async (change) => {\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content: `[state] ${change.key} = ${JSON.stringify(change.value)} (set by ${change.updatedBy})`,\n meta: {\n kind: \"state_change\",\n key: change.key,\n updated_by: change.updatedBy,\n },\n },\n });\n } catch { /* best effort */ }\n });\n }\n\n // Welcome notification: give Claude immediate context on connect.\n // Delay slightly to ensure Claude Code has completed MCP initialization\n // handshake (notifications/initialized) before we push channel messages.\n setTimeout(async () => {\n const welcomeClient = allClients()[0];\n if (!welcomeClient || welcomeClient.status !== \"open\") return;\n try {\n const peers = await welcomeClient.listPeers();\n const peerNames = peers\n .filter(p => p.displayName !== myName)\n .map(p => p.displayName)\n .join(\", \") || \"none\";\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content: `[system] Connected as ${myName} to mesh ${welcomeClient.meshSlug}. ${peers.length} peer(s) online: ${peerNames}. Call mesh_info for full details or set_summary to announce yourself.`,\n meta: { kind: \"welcome\", mesh_slug: welcomeClient.meshSlug },\n },\n });\n } catch { /* best effort */ }\n }, 2_000);\n } // end wirePushHandlers\n\n // Event loop keepalive: Node.js stdout to a pipe is buffered. Without\n // periodic event loop activity, stdout.write() from WS callbacks may not\n // flush until the next I/O event. This 1s interval keeps the event loop\n // ticking so channel notifications flush promptly — same pattern that made\n // claude-intercom's push delivery reliable (its 1s HTTP poll had this\n // effect as a side effect). The interval does nothing except prevent the\n // event loop from settling.\n const keepalive = setInterval(() => {\n // Intentionally empty — the interval itself keeps the event loop active.\n // Do NOT call .unref() — that would defeat the purpose.\n }, 1_000);\n void keepalive; // suppress unused warning\n\n const shutdown = (): void => {\n clearInterval(keepalive);\n stopAll();\n process.exit(0);\n };\n process.on(\"SIGTERM\", shutdown);\n process.on(\"SIGINT\", shutdown);\n}\n\n/**\n * Mesh service proxy — a thin MCP server that proxies ONE deployed service.\n *\n * Spawned by Claude Code as a native MCP entry. Connects to the broker,\n * fetches tool schemas for the named service, and routes tool calls.\n *\n * If the broker WS drops, the proxy waits for reconnection (up to 10s)\n * before failing tool calls. If the proxy process itself crashes, Claude\n * Code will not auto-restart it.\n */\nasync function startServiceProxy(serviceName: string): Promise<void> {\n const config = readConfig();\n if (config.meshes.length === 0) {\n process.stderr.write(`[mesh:${serviceName}] no meshes joined\\n`);\n process.exit(1);\n }\n\n const mesh = config.meshes[0]!;\n const client = new BrokerClient(mesh, {\n displayName: config.displayName ?? `proxy:${serviceName}`,\n });\n\n try {\n await client.connect();\n } catch (e) {\n process.stderr.write(\n `[mesh:${serviceName}] broker connect failed: ${e instanceof Error ? e.message : String(e)}\\n`,\n );\n process.exit(1);\n }\n\n // Wait for hello_ack and service catalog\n await new Promise((r) => setTimeout(r, 1500));\n\n // Fetch tool schemas for this service\n let tools: Array<{\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n }> = [];\n try {\n const fetched = await client.getServiceTools(serviceName);\n tools = fetched as typeof tools;\n } catch {\n // Try from catalog cache\n const cached = client.serviceCatalog.find((s) => s.name === serviceName);\n if (cached) {\n tools = cached.tools as typeof tools;\n }\n }\n\n if (tools.length === 0) {\n process.stderr.write(\n `[mesh:${serviceName}] no tools found — service may not be running\\n`,\n );\n }\n\n // Build MCP server\n const server = new Server(\n { name: `mesh:${serviceName}`, version: \"0.1.0\" },\n { capabilities: { tools: {} } },\n );\n\n server.setRequestHandler(ListToolsRequestSchema, () => ({\n tools: tools.map((t) => ({\n name: t.name,\n description: `[mesh:${serviceName}] ${t.description}`,\n inputSchema: t.inputSchema as any,\n })),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (req) => {\n const toolName = req.params.name;\n const args = req.params.arguments ?? {};\n\n // Wait for broker reconnection if needed\n if ((client.status as string) !== \"open\") {\n let waited = 0;\n while ((client.status as string) !== \"open\" && waited < 10_000) {\n await new Promise((r) => setTimeout(r, 500));\n waited += 500;\n }\n if ((client.status as string) !== \"open\") {\n return {\n content: [\n {\n type: \"text\" as const,\n text: `Service temporarily unavailable — broker reconnecting. Retry in a few seconds.`,\n },\n ],\n isError: true,\n };\n }\n }\n\n try {\n const result = await client.mcpCall(\n serviceName,\n toolName,\n args as Record<string, unknown>,\n );\n if (result.error) {\n return {\n content: [{ type: \"text\" as const, text: `Error: ${result.error}` }],\n isError: true,\n };\n }\n const resultText =\n typeof result.result === \"string\"\n ? result.result\n : JSON.stringify(result.result, null, 2);\n return {\n content: [{ type: \"text\" as const, text: resultText }],\n };\n } catch (e) {\n return {\n content: [\n {\n type: \"text\" as const,\n text: `Call failed: ${e instanceof Error ? e.message : String(e)}`,\n },\n ],\n isError: true,\n };\n }\n });\n\n // Listen for service events (undeploy, update)\n client.onPush((push) => {\n if (\n push.event === \"mcp_undeployed\" &&\n (push.eventData as any)?.name === serviceName\n ) {\n process.stderr.write(\n `[mesh:${serviceName}] service undeployed — exiting\\n`,\n );\n client.close();\n process.exit(0);\n }\n if (\n push.event === \"mcp_updated\" &&\n (push.eventData as any)?.name === serviceName\n ) {\n // Refresh tools\n const newTools = (push.eventData as any)?.tools;\n if (Array.isArray(newTools)) {\n tools = newTools as typeof tools;\n // Notify Claude Code that tools changed\n server\n .notification({\n method: \"notifications/tools/list_changed\",\n })\n .catch(() => {\n /* ignore notification errors */\n });\n }\n }\n });\n\n // Start stdio transport\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n // Keep event loop alive\n const keepalive = setInterval(() => {\n // Intentionally empty — prevents event loop from settling.\n }, 1_000);\n void keepalive;\n\n // Graceful shutdown\n const shutdown = (): void => {\n clearInterval(keepalive);\n client.close();\n process.exit(0);\n };\n process.on(\"SIGTERM\", shutdown);\n process.on(\"SIGINT\", shutdown);\n}\n",
|
|
124
124
|
"import { startMcpServer } from \"~/mcp/server.js\";\n\nexport async function runMcp(): Promise<never> {\n await startMcpServer();\n await new Promise(() => {});\n process.exit(0);\n}\n\nexport { runMcp as _stub };\n",
|
|
125
125
|
"/**\n * `claudemesh hook <status>` — Claude Code hook handler.\n *\n * Registered as a Stop + UserPromptSubmit hook by `claudemesh install`.\n * On each turn boundary, Claude Code invokes:\n *\n * Stop → `claudemesh hook idle`\n * UserPromptSubmit → `claudemesh hook working`\n *\n * We read the Claude Code hook JSON payload from stdin (contains cwd +\n * session_id), then POST `/hook/set-status` to EVERY joined mesh's\n * broker with {cwd, pid, status, session_id}. Each broker looks up\n * its local presence row by (pid, cwd) and updates status.\n *\n * Fire-and-forget, silent. Hooks must NEVER block Claude Code or\n * surface errors to the user. Debug logging available via\n * CLAUDEMESH_HOOK_DEBUG=1.\n *\n * Why send to every broker? A user joined to multiple meshes has\n * one presence row per mesh, each on its own broker. A turn boundary\n * updates the status on every broker where this session is active.\n * Brokers that don't have a matching presence just queue the signal\n * in pending_status (harmless, TTL-swept).\n */\n\nimport { readConfig } from \"~/services/config/facade.js\";\n\nconst DEBUG = process.env.CLAUDEMESH_HOOK_DEBUG === \"1\";\n\nfunction debug(msg: string): void {\n if (DEBUG) console.error(`[claudemesh-hook] ${msg}`);\n}\n\n/** WS URL → HTTP URL (same host, swap scheme). */\nfunction wsToHttp(wsUrl: string): string {\n try {\n const u = new URL(wsUrl);\n const httpScheme = u.protocol === \"wss:\" ? \"https:\" : \"http:\";\n return `${httpScheme}//${u.host}`;\n } catch {\n return wsUrl;\n }\n}\n\nasync function readStdinJson(): Promise<Record<string, unknown>> {\n if (process.stdin.isTTY) return {};\n const chunks: Uint8Array[] = [];\n const reader = process.stdin;\n try {\n for await (const chunk of reader) {\n chunks.push(chunk as Uint8Array);\n if (chunks.reduce((n, c) => n + c.length, 0) > 256 * 1024) break;\n }\n const raw = Buffer.concat(chunks).toString(\"utf-8\").trim();\n if (!raw) return {};\n return JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return {};\n }\n}\n\nasync function postHook(\n brokerWsUrl: string,\n body: Record<string, unknown>,\n): Promise<void> {\n const base = wsToHttp(brokerWsUrl);\n try {\n const controller = new AbortController();\n const t = setTimeout(() => controller.abort(), 1000);\n await fetch(`${base}/hook/set-status`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: controller.signal,\n }).finally(() => clearTimeout(t));\n } catch (e) {\n debug(`post failed ${base}: ${e instanceof Error ? e.message : e}`);\n }\n}\n\nexport async function runHook(args: string[]): Promise<void> {\n const status = args[0];\n if (!status || ![\"idle\", \"working\", \"dnd\"].includes(status)) {\n // Silent no-op — we never want a hook to surface an error.\n process.exit(0);\n }\n\n // Read Claude Code's stdin payload for cwd + session_id.\n const stdinTimeout = new Promise<Record<string, unknown>>((r) =>\n setTimeout(() => r({}), 500),\n );\n const payload = await Promise.race([readStdinJson(), stdinTimeout]);\n const cwd =\n (typeof payload.cwd === \"string\" && payload.cwd) ||\n process.env.CLAUDE_PROJECT_DIR ||\n process.cwd();\n const sessionId =\n (typeof payload.session_id === \"string\" && payload.session_id) || \"\";\n\n // Fan out to EVERY joined mesh's broker in parallel.\n let config;\n try {\n config = readConfig();\n } catch (e) {\n debug(`config load failed: ${e instanceof Error ? e.message : e}`);\n process.exit(0);\n }\n if (config.meshes.length === 0) {\n debug(\"no joined meshes, nothing to do\");\n process.exit(0);\n }\n\n const body = { cwd, pid: process.ppid, status, session_id: sessionId };\n debug(\n `status=${status} cwd=${cwd} meshes=${config.meshes.length} session=${sessionId.slice(0, 8)}`,\n );\n\n // Dedupe by brokerUrl — if multiple meshes share a broker, one POST\n // covers them (broker resolves presence by cwd+pid regardless).\n const brokerUrls = [...new Set(config.meshes.map((m) => m.brokerUrl))];\n await Promise.all(brokerUrls.map((url) => postHook(url, body)));\n process.exit(0);\n}\n",
|
|
126
|
-
"/**\n * `claudemesh seed-test-mesh` — dev-only helper for 15b testing.\n *\n * Writes a locally-valid JoinedMesh entry to ~/.claudemesh/config.json\n * so the MCP server can connect to a locally-running broker without\n * invite-link / crypto plumbing.\n *\n * Usage:\n * claudemesh seed-test-mesh <broker-url> <mesh-id> <member-id> <pubkey> <slug>\n */\n\nimport { readConfig, writeConfig } from \"~/services/config/facade.js\";\n\nexport function runSeedTestMesh(args: string[]): void {\n const [brokerUrl, meshId, memberId, pubkey, slug] = args;\n if (!brokerUrl || !meshId || !memberId || !pubkey || !slug) {\n
|
|
126
|
+
"/**\n * `claudemesh seed-test-mesh` — dev-only helper for 15b testing.\n *\n * Writes a locally-valid JoinedMesh entry to ~/.claudemesh/config.json\n * so the MCP server can connect to a locally-running broker without\n * invite-link / crypto plumbing.\n *\n * Usage:\n * claudemesh seed-test-mesh <broker-url> <mesh-id> <member-id> <pubkey> <slug>\n */\n\nimport { readConfig, writeConfig } from \"~/services/config/facade.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, dim } from \"~/ui/styles.js\";\n\nexport function runSeedTestMesh(args: string[]): void {\n const [brokerUrl, meshId, memberId, pubkey, slug] = args;\n if (!brokerUrl || !meshId || !memberId || !pubkey || !slug) {\n render.err(\"Usage: claudemesh seed-test-mesh <broker-ws-url> <mesh-id> <member-id> <pubkey> <slug>\");\n render.info(dim('Example: claudemesh seed-test-mesh \"ws://localhost:7900/ws\" mesh-123 member-abc aaa..aaa smoke-test'));\n process.exit(1);\n }\n const config = readConfig();\n config.meshes = config.meshes.filter((m) => m.slug !== slug);\n config.meshes.push({\n meshId,\n memberId,\n slug,\n name: `Test: ${slug}`,\n pubkey,\n secretKey: \"dev-only-stub\",\n brokerUrl,\n joinedAt: new Date().toISOString(),\n });\n writeConfig(config);\n render.ok(`seeded ${bold(slug)}`, dim(meshId));\n render.hint(`run ${bold(\"claudemesh mcp\")} to connect, or register with Claude Code via ${bold(\"claudemesh install\")}`);\n}\n",
|
|
127
127
|
"import { defineCommand, runMain } from \"citty\";\n\nexport interface ParsedArgs { command: string; positionals: string[]; flags: Record<string, string | boolean | undefined>; }\n\nexport function parseArgv(argv: string[]): ParsedArgs {\n const args = argv.slice(2);\n const flags: Record<string, string | boolean | undefined> = {};\n const positionals: string[] = [];\n let command = \"\";\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]!;\n if (arg.startsWith(\"--\")) {\n const key = arg.slice(2);\n const next = args[i + 1];\n if (next && !next.startsWith(\"-\")) { flags[key] = next; i++; } else flags[key] = true;\n } else if (arg.startsWith(\"-\") && arg.length === 2) {\n const key = arg.slice(1);\n const next = args[i + 1];\n if (next && !next.startsWith(\"-\")) { flags[key] = next; i++; } else flags[key] = true;\n } else if (!command) {\n command = arg;\n } else {\n positionals.push(arg);\n }\n }\n return { command, positionals, flags };\n}\n\nexport { defineCommand, runMain };\n",
|
|
128
128
|
"import { SHOW_CURSOR } from \"~/ui/styles.js\";\nexport function installSignalHandlers(): void {\n const cleanup = () => { process.stdout.write(SHOW_CURSOR); };\n process.on(\"SIGINT\", () => { cleanup(); process.exit(1); });\n process.on(\"SIGTERM\", () => { cleanup(); process.exit(0); });\n}\n",
|
|
129
129
|
"import { EXIT } from \"~/constants/exit-codes.js\";\nimport { red } from \"~/ui/styles.js\";\nexport function handleUncaughtError(err: unknown): never {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(red(\"\\n Fatal: \" + msg + \"\\n\"));\n if (process.env.CLAUDEMESH_DEBUG === \"1\" && err instanceof Error && err.stack) console.error(err.stack);\n process.exit(EXIT.INTERNAL_ERROR);\n}\nexport function installErrorHandlers(): void {\n process.on(\"uncaughtException\", handleUncaughtError);\n process.on(\"unhandledRejection\", (reason) => handleUncaughtError(reason));\n}\n",
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"#!/usr/bin/env node\nimport { parseArgv } from \"~/cli/argv.js\";\nimport { installSignalHandlers } from \"~/cli/handlers/signal.js\";\nimport { installErrorHandlers } from \"~/cli/handlers/error.js\";\nimport { showUpdateNotice } from \"~/cli/update-notice.js\";\nimport { VERSION } from \"~/constants/urls.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\nimport { renderVersion } from \"~/cli/output/version.js\";\nimport { isInviteUrl, normaliseInviteUrl } from \"~/utils/url.js\";\n\ninstallSignalHandlers();\ninstallErrorHandlers();\n\nconst { command, positionals, flags } = parseArgv(process.argv);\n\nconst HELP = `\nclaudemesh — peer mesh for Claude Code sessions\n${VERSION}\n\nUSAGE\n claudemesh auto-connect to your mesh\n claudemesh <invite-url> join a mesh, then launch\n claudemesh launch --name <n> --join <url> join + launch in one step\n\nMesh\n claudemesh create <name> create a new mesh\n claudemesh join <url> join a mesh (accepts short /i/ or long /join/ link)\n claudemesh launch [slug] launch Claude Code on a mesh (alias: connect)\n claudemesh list show your meshes (alias: ls)\n claudemesh delete [slug] delete a mesh (alias: rm)\n claudemesh rename <slug> <name> rename a mesh\n claudemesh share [email] share mesh (invite link / send email)\n claudemesh disconnect <peer> soft disconnect (peer auto-reconnects)\n claudemesh kick <peer> end session (peer must manually rejoin)\n claudemesh kick --stale 30m kick peers idle > duration\n claudemesh kick --all kick everyone except yourself\n claudemesh ban <peer> kick + permanently revoke (can't rejoin)\n claudemesh unban <peer> lift a ban\n claudemesh bans list banned members\n\nMessaging\n claudemesh peers see who's online\n claudemesh send <to> <msg> send a message\n claudemesh inbox drain pending messages\n claudemesh state get|set|list shared state\n claudemesh remember <text> store a memory\n claudemesh recall <query> search memories\n claudemesh remind ... schedule a reminder\n claudemesh profile view or edit your profile\n claudemesh info mesh overview\n\nAuth\n claudemesh login sign in (browser or paste token)\n claudemesh register create account + sign in\n claudemesh logout sign out\n claudemesh whoami show current identity\n\nSecurity\n claudemesh verify [peer] show ed25519 safety numbers (SAS)\n claudemesh grant <peer> <cap> grant capability (dm, broadcast, state-read, all)\n claudemesh revoke <peer> <cap> revoke capability (or 'all')\n claudemesh block <peer> revoke all capabilities (silent drop)\n claudemesh grants list per-peer overrides for current mesh\n claudemesh backup [file] encrypt config → portable recovery file\n claudemesh restore <file> restore config from a backup file\n\nSetup\n claudemesh install register MCP server + hooks\n claudemesh uninstall remove MCP server + hooks\n claudemesh doctor diagnose issues (broker, node, claude)\n claudemesh status check broker connectivity\n claudemesh sync refresh mesh list from dashboard\n claudemesh completions <shell> emit bash / zsh / fish completion script\n claudemesh url-handler install register claudemesh:// click-to-launch\n claudemesh upgrade self-update to latest alpha (rustup-style)\n\nFlags\n --version, -V show version\n --help, -h show this help\n --json machine-readable output\n --mesh <slug> override mesh selection\n -y, --yes skip confirmations\n -q, --quiet suppress non-essential output\n`;\n\nasync function main(): Promise<void> {\n if (flags.help || flags.h) { console.log(HELP); process.exit(EXIT.SUCCESS); }\n if (flags.version || flags.V) { console.log(renderVersion()); process.exit(EXIT.SUCCESS); }\n\n // Bare command or invite URL\n if (!command || isInviteUrl(command)) {\n // `claudemesh <invite-url>` → join + launch in one step.\n // `-y` skips all interactive prompts (role=member, no groups, push mode).\n if (command && isInviteUrl(command)) {\n const { runLaunch } = await import(\"~/commands/launch.js\");\n await runLaunch({\n mesh: flags.mesh as string | undefined,\n name: flags.name as string | undefined,\n join: normaliseInviteUrl(command),\n yes: !!flags.y || !!flags.yes,\n resume: flags.resume as string | undefined,\n }, process.argv.slice(2));\n return;\n }\n const { readConfig } = await import(\"~/services/config/facade.js\");\n const config = readConfig();\n if (config.meshes.length === 0) {\n const { runWelcome } = await import(\"~/commands/welcome.js\");\n process.exit(await runWelcome());\n }\n const { runLaunch } = await import(\"~/commands/launch.js\");\n await runLaunch({\n mesh: flags.mesh as string | undefined,\n name: flags.name as string | undefined,\n yes: !!flags.y || !!flags.yes,\n resume: flags.resume as string | undefined,\n }, process.argv.slice(2));\n return;\n }\n\n switch (command) {\n case \"help\": { console.log(HELP); break; }\n\n // Mesh management\n case \"create\": case \"new\": { const { newMesh } = await import(\"~/commands/new.js\"); process.exit(await newMesh(positionals[0] ?? \"\", { json: !!flags.json })); break; }\n case \"add\": case \"join\": { const { runJoin } = await import(\"~/commands/join.js\"); await runJoin(positionals); break; }\n case \"connect\": case \"launch\": {\n const { runLaunch } = await import(\"~/commands/launch.js\");\n await runLaunch({\n mesh: positionals[0] ?? flags.mesh as string,\n name: flags.name as string,\n join: flags.join as string,\n yes: !!flags.y || !!flags.yes,\n resume: flags.resume as string,\n }, process.argv.slice(2));\n break;\n }\n case \"disconnect\": { console.log(\" Connection closed.\"); process.exit(EXIT.SUCCESS); break; }\n case \"list\": case \"ls\": { const { runList } = await import(\"~/commands/list.js\"); await runList(); break; }\n case \"delete\": case \"rm\": { const { deleteMesh } = await import(\"~/commands/delete-mesh.js\"); process.exit(await deleteMesh(positionals[0] ?? \"\", { yes: !!flags.y || !!flags.yes })); break; }\n case \"rename\": { const { rename } = await import(\"~/commands/rename.js\"); process.exit(await rename(positionals[0] ?? \"\", positionals[1] ?? \"\")); break; }\n case \"share\": case \"invite\": { const { invite } = await import(\"~/commands/invite.js\"); process.exit(await invite(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"disconnect\": { const { runDisconnect } = await import(\"~/commands/kick.js\"); process.exit(await runDisconnect(positionals[0], { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); break; }\n case \"kick\": { const { runKick } = await import(\"~/commands/kick.js\"); process.exit(await runKick(positionals[0], { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); break; }\n case \"ban\": { const { runBan } = await import(\"~/commands/ban.js\"); process.exit(await runBan(positionals[0], { mesh: flags.mesh as string })); break; }\n case \"unban\": { const { runUnban } = await import(\"~/commands/ban.js\"); process.exit(await runUnban(positionals[0], { mesh: flags.mesh as string })); break; }\n case \"bans\": { const { runBans } = await import(\"~/commands/ban.js\"); process.exit(await runBans({ mesh: flags.mesh as string, json: !!flags.json })); break; }\n\n // Messaging\n case \"peers\": { const { runPeers } = await import(\"~/commands/peers.js\"); await runPeers({ mesh: flags.mesh as string, json: !!flags.json }); break; }\n case \"send\": { const { runSend } = await import(\"~/commands/send.js\"); await runSend({}, positionals[0] ?? \"\", positionals.slice(1).join(\" \")); break; }\n case \"inbox\": { const { runInbox } = await import(\"~/commands/inbox.js\"); await runInbox({ json: !!flags.json }); break; }\n case \"state\": {\n const sub = positionals[0];\n if (sub === \"set\") { const { runStateSet } = await import(\"~/commands/state.js\"); await runStateSet({}, positionals[1] ?? \"\", positionals[2] ?? \"\"); }\n else if (sub === \"list\") { const { runStateList } = await import(\"~/commands/state.js\"); await runStateList({}); }\n else { const { runStateGet } = await import(\"~/commands/state.js\"); await runStateGet({}, positionals[0] ?? \"\"); }\n break;\n }\n case \"info\": { const { runInfo } = await import(\"~/commands/info.js\"); await runInfo({}); break; }\n case \"remember\": { const { remember } = await import(\"~/commands/remember.js\"); process.exit(await remember(positionals.join(\" \"), { tags: flags.tags as string, json: !!flags.json })); break; }\n case \"recall\": { const { recall } = await import(\"~/commands/recall.js\"); process.exit(await recall(positionals.join(\" \"), { json: !!flags.json })); break; }\n case \"remind\": { const { runRemind } = await import(\"~/commands/remind.js\"); await runRemind({ mesh: flags.mesh as string }, positionals); break; }\n case \"profile\": { const { runProfile } = await import(\"~/commands/profile.js\"); await runProfile(flags as any); break; }\n\n // Auth\n case \"login\": { const { login } = await import(\"~/commands/login.js\"); process.exit(await login()); break; }\n case \"register\": { const { register } = await import(\"~/commands/register.js\"); process.exit(await register()); break; }\n case \"logout\": { const { logout } = await import(\"~/commands/logout.js\"); process.exit(await logout()); break; }\n case \"whoami\": { const { whoami } = await import(\"~/commands/whoami.js\"); process.exit(await whoami({ json: !!flags.json })); break; }\n\n // Setup\n case \"install\": { const { runInstall } = await import(\"~/commands/install.js\"); runInstall(positionals); break; }\n case \"uninstall\": { const { uninstall } = await import(\"~/commands/uninstall.js\"); process.exit(await uninstall()); break; }\n case \"doctor\": { const { runDoctor } = await import(\"~/commands/doctor.js\"); await runDoctor(); break; }\n case \"status\": { const { runStatus } = await import(\"~/commands/status.js\"); await runStatus(); break; }\n case \"sync\": { const { runSync } = await import(\"~/commands/sync.js\"); await runSync({ force: !!flags.force }); break; }\n\n // Test\n case \"test\": { const { runTest } = await import(\"~/commands/test.js\"); process.exit(await runTest()); break; }\n\n // CLI utilities\n case \"completions\": { const { runCompletions } = await import(\"~/commands/completions.js\"); process.exit(await runCompletions(positionals[0])); break; }\n case \"verify\": { const { runVerify } = await import(\"~/commands/verify.js\"); process.exit(await runVerify(positionals[0], { mesh: flags.mesh as string | undefined, json: !!flags.json })); break; }\n case \"url-handler\": { const { runUrlHandler } = await import(\"~/commands/url-handler.js\"); process.exit(await runUrlHandler(positionals[0])); break; }\n case \"status-line\": { const { runStatusLine } = await import(\"~/commands/status-line.js\"); process.exit(await runStatusLine()); break; }\n case \"backup\": { const { runBackup } = await import(\"~/commands/backup.js\"); process.exit(await runBackup(positionals[0])); break; }\n case \"restore\": { const { runRestore } = await import(\"~/commands/backup.js\"); process.exit(await runRestore(positionals[0])); break; }\n case \"upgrade\": case \"update\": { const { runUpgrade } = await import(\"~/commands/upgrade.js\"); process.exit(await runUpgrade({ check: !!flags.check, yes: !!flags.y || !!flags.yes })); break; }\n case \"grant\": { const { runGrant } = await import(\"~/commands/grants.js\"); process.exit(await runGrant(positionals[0], positionals.slice(1), { mesh: flags.mesh as string | undefined })); break; }\n case \"revoke\": { const { runRevoke } = await import(\"~/commands/grants.js\"); process.exit(await runRevoke(positionals[0], positionals.slice(1), { mesh: flags.mesh as string | undefined })); break; }\n case \"block\": { const { runBlock } = await import(\"~/commands/grants.js\"); process.exit(await runBlock(positionals[0], { mesh: flags.mesh as string | undefined })); break; }\n case \"grants\": { const { runGrants } = await import(\"~/commands/grants.js\"); process.exit(await runGrants({ mesh: flags.mesh as string | undefined, json: !!flags.json })); break; }\n\n // Internal\n case \"mcp\": { const { runMcp } = await import(\"~/commands/mcp.js\"); await runMcp(); break; }\n case \"hook\": { const { runHook } = await import(\"~/commands/hook.js\"); await runHook(positionals); break; }\n case \"seed-test-mesh\": { const { runSeedTestMesh } = await import(\"~/commands/seed-test-mesh.js\"); runSeedTestMesh(positionals); break; }\n\n default: {\n console.error(` Unknown command: ${command}. Run \\`claudemesh --help\\` for usage.`);\n process.exit(EXIT.INVALID_ARGS);\n }\n }\n\n showUpdateNotice(VERSION).catch(() => {});\n}\n\nmain().catch((err) => {\n console.error(\"Fatal: \" + (err instanceof Error ? err.message : String(err)));\n process.exit(EXIT.INTERNAL_ERROR);\n});\n",
|
|
134
134
|
"import { VERSION } from \"~/constants/urls.js\";\nimport { boldOrange } from \"~/ui/styles.js\";\nexport function renderVersion(): string { return \" \" + boldOrange(\"claudemesh\") + \" v\" + VERSION; }\n"
|
|
135
135
|
],
|
|
136
|
-
"mappings": "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",
|
|
137
|
-
"debugId": "
|
|
136
|
+
"mappings": "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",
|
|
137
|
+
"debugId": "80234995420998CA64756E2164756E21",
|
|
138
138
|
"names": []
|
|
139
139
|
}
|