claudemesh-cli 1.8.0 → 1.9.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/README.md +3 -1
- package/dist/entrypoints/cli.js +79 -12
- package/dist/entrypoints/cli.js.map +7 -7
- package/dist/entrypoints/mcp.js +25 -4
- package/dist/entrypoints/mcp.js.map +4 -4
- package/package.json +1 -1
- package/skills/claudemesh/SKILL.md +71 -1
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"import { ensureSodium } from \"./keypair.js\";\n\nexport async function randomBytes(n: number): Promise<Uint8Array> {\n const s = await ensureSodium();\n return s.randombytes_buf(n);\n}\n\nexport async function randomHex(n: number): Promise<string> {\n const s = await ensureSodium();\n return s.to_hex(s.randombytes_buf(n));\n}\n",
|
|
38
38
|
"import { generateKeypair as _generateKeypair, ensureSodium } from \"./keypair.js\";\nimport type { Ed25519Keypair } from \"./keypair.js\";\nimport { encryptFile, decryptFile, sealKeyForPeer, openSealedKey } from \"./file-crypto.js\";\nimport type { EncryptedFile } from \"./file-crypto.js\";\nimport { encryptDirect, decryptDirect, isDirectTarget } from \"./box.js\";\nimport type { Envelope } from \"./box.js\";\nimport { randomBytes, randomHex } from \"./random.js\";\n\nexport type { Ed25519Keypair, EncryptedFile, Envelope };\n\nexport async function generateKeypair(): Promise<Ed25519Keypair> {\n return _generateKeypair();\n}\n\nexport async function sign(\n message: string,\n secretKeyHex: string,\n): Promise<string> {\n const s = await ensureSodium();\n const sig = s.crypto_sign_detached(\n s.from_string(message),\n s.from_hex(secretKeyHex),\n );\n return s.to_hex(sig);\n}\n\nexport async function verify(\n message: string,\n signatureHex: string,\n publicKeyHex: string,\n): Promise<boolean> {\n const s = await ensureSodium();\n try {\n return s.crypto_sign_verify_detached(\n s.from_hex(signatureHex),\n s.from_string(message),\n s.from_hex(publicKeyHex),\n );\n } catch {\n return false;\n }\n}\n\nexport {\n encryptFile as encrypt,\n decryptFile as decrypt,\n sealKeyForPeer as boxSeal,\n openSealedKey as boxOpen,\n encryptDirect,\n decryptDirect,\n isDirectTarget,\n randomBytes,\n randomHex,\n ensureSodium,\n};\n",
|
|
39
39
|
"import { ensureSodium } from \"~/services/crypto/facade.js\";\n\nexport async function signHello(\n meshId: string,\n memberId: string,\n pubkey: string,\n secretKeyHex: string,\n): Promise<{ timestamp: number; signature: string }> {\n const s = await ensureSodium();\n const timestamp = Date.now();\n const canonical = `${meshId}|${memberId}|${pubkey}|${timestamp}`;\n const sig = s.crypto_sign_detached(\n s.from_string(canonical),\n s.from_hex(secretKeyHex),\n );\n return { timestamp, signature: s.to_hex(sig) };\n}\n",
|
|
40
|
-
"/**\n * BrokerClient — WebSocket client connecting a CLI session to a claudemesh\n * broker. Handles:\n * - hello handshake + ack\n * - send / ack / push message flow\n * - auto-reconnect with exponential backoff (1s, 2s, 4s, ..., max 30s)\n * - in-memory outbound queue while reconnecting\n * - push buffer so the MCP check_messages tool can drain inbound history\n *\n * Encryption is deferred to Step 18 (libsodium). Until then, ciphertext\n * is plaintext UTF-8, nonce is a random 24-byte base64 string (for\n * future-compat layout only).\n */\n\nimport WebSocket from \"ws\";\nimport { randomBytes } from \"node:crypto\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\nimport {\n decryptDirect,\n encryptDirect,\n isDirectTarget,\n} from \"~/services/crypto/facade.js\";\nimport { signHello } from \"./hello-sig.js\";\nimport { generateKeypair } from \"~/services/crypto/facade.js\";\n\n/**\n * Detect the Claude Code session ID from the filesystem.\n * Fallback for when CLAUDEMESH_SESSION_ID env var isn't set\n * (e.g., claude --resume without going through claudemesh launch).\n *\n * Scans ~/.claude/projects/<project-hash>/ for the most recently\n * modified .jsonl file and extracts its sessionId.\n */\nfunction detectClaudeSessionId(): string | null {\n try {\n const { readdirSync, statSync, readFileSync } = require(\"node:fs\");\n const { join } = require(\"node:path\");\n const { homedir } = require(\"node:os\");\n const cwd = process.cwd();\n // Claude Code hashes the project path for the directory name\n const projectsDir = join(homedir(), \".claude\", \"projects\");\n // Find matching project dir — the hash includes the full path with dashes\n const cwdHash = cwd.replace(/\\//g, \"-\");\n const entries = readdirSync(projectsDir) as string[];\n const projectDir = entries.find((e: string) => e === cwdHash || e.startsWith(cwdHash));\n if (!projectDir) return null;\n\n const fullDir = join(projectsDir, projectDir);\n const jsonls = (readdirSync(fullDir) as string[])\n .filter((f: string) => f.endsWith(\".jsonl\"))\n .map((f: string) => ({ name: f, mtime: statSync(join(fullDir, f)).mtimeMs }))\n .sort((a: any, b: any) => b.mtime - a.mtime);\n\n if (jsonls.length === 0) return null;\n const latest = jsonls[0]!;\n // Session ID is the filename without .jsonl\n return latest.name.replace(\".jsonl\", \"\");\n } catch {\n return null;\n }\n}\n\nexport type Priority = \"now\" | \"next\" | \"low\";\nexport type ConnStatus = \"connecting\" | \"open\" | \"closed\" | \"reconnecting\";\n\nexport interface PeerInfo {\n /** Routing key — session pubkey if present, otherwise member pubkey. */\n pubkey: string;\n /** Stable member pubkey (mesh.member.peer_pubkey). Preferred for grants,\n * safety numbers, audit, and anything that needs identity stability\n * across reconnects. */\n memberPubkey?: string;\n displayName: string;\n status: string;\n summary: string | null;\n groups: Array<{ name: string; role?: string }>;\n sessionId: string;\n connectedAt: string;\n cwd?: string;\n hostname?: string;\n peerType?: \"ai\" | \"human\" | \"connector\";\n channel?: string;\n model?: string;\n stats?: {\n messagesIn?: number;\n messagesOut?: number;\n toolCalls?: number;\n uptime?: number;\n errors?: number;\n };\n visible?: boolean;\n profile?: {\n avatar?: string;\n title?: string;\n bio?: string;\n capabilities?: string[];\n };\n}\n\nexport interface InboundPush {\n messageId: string;\n meshId: string;\n senderPubkey: string;\n priority: Priority;\n nonce: string;\n ciphertext: string;\n createdAt: string;\n receivedAt: string;\n /** Decrypted plaintext (if encryption succeeded). null = broadcast\n * or channel (no per-recipient crypto yet), or decryption failed. */\n plaintext: string | null;\n /** Hint for UI: \"direct\" (crypto_box), \"channel\"/\"broadcast\"\n * (plaintext for now). */\n kind: \"direct\" | \"broadcast\" | \"channel\" | \"unknown\";\n /** Optional semantic tag — \"reminder\" when fired by the scheduler,\n * \"system\" for broker-originated topology events. */\n subtype?: \"reminder\" | \"system\";\n /** Machine-readable event name (e.g. \"peer_joined\", \"peer_left\"). */\n event?: string;\n /** Structured payload for the event. */\n eventData?: Record<string, unknown>;\n}\n\ntype PushHandler = (msg: InboundPush) => void;\n\ninterface PendingSend {\n id: string;\n targetSpec: string;\n priority: Priority;\n nonce: string;\n ciphertext: string;\n resolve: (v: { ok: boolean; messageId?: string; error?: string }) => void;\n}\n\nconst MAX_QUEUED = 100;\nconst HELLO_ACK_TIMEOUT_MS = 5_000;\nconst BACKOFF_CAPS = [1_000, 2_000, 4_000, 8_000, 16_000, 30_000];\n\nexport class BrokerClient {\n private ws: WebSocket | null = null;\n private _status: ConnStatus = \"closed\";\n private pendingSends = new Map<string, PendingSend>();\n private outbound: Array<() => void> = []; // closures that send once ws is open\n private pushHandlers = new Set<PushHandler>();\n private pushBuffer: InboundPush[] = [];\n /**\n * Serialization chain for inbound push handling. Each incoming push\n * appends to this promise so decrypt+enqueue happens in arrival order.\n * Without it, a fast decrypt could land in pushBuffer before a slow\n * earlier one — observable as reordered messages to consumers.\n */\n private pushChain: Promise<void> = Promise.resolve();\n private listPeersResolvers = new Map<string, { resolve: (peers: PeerInfo[]) => void; timer: NodeJS.Timeout }>();\n private stateResolvers = new Map<string, { resolve: (result: { key: string; value: unknown; updatedBy: string; updatedAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private stateListResolvers = new Map<string, { resolve: (entries: Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private memoryStoreResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private memoryRecallResolvers = new Map<string, { resolve: (memories: Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private stateChangeHandlers = new Set<(change: { key: string; value: unknown; updatedBy: string }) => void>();\n private sessionPubkey: string | null = null;\n private sessionSecretKey: string | null = null;\n private grantFileAccessResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private peerFileResponseResolvers = new Map<string, { resolve: (result: { content?: string; error?: string }) => void; timer: NodeJS.Timeout }>();\n private peerDirResponseResolvers = new Map<string, { resolve: (result: { entries?: string[]; error?: string }) => void; timer: NodeJS.Timeout }>();\n // ── Topics (v0.2.0) ──\n private topicCreatedResolvers = new Map<string, { resolve: (r: { id: string; name: string; created: boolean } | null) => void; timer: NodeJS.Timeout }>();\n private topicListResolvers = new Map<string, { resolve: (topics: Array<{ id: string; name: string; description: string | null; visibility: \"public\" | \"private\" | \"dm\"; memberCount: number; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n private topicMembersResolvers = new Map<string, { resolve: (members: Array<{ memberId: string; pubkey: string; displayName: string; role: \"lead\" | \"member\" | \"observer\"; joinedAt: string; lastReadAt: string | null }>) => void; timer: NodeJS.Timeout }>();\n private topicHistoryResolvers = new Map<string, { resolve: (messages: Array<{ id: string; senderPubkey: string; nonce: string; ciphertext: string; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n // ── API keys (v0.2.0) ──\n private apiKeyCreatedResolvers = new Map<string, { resolve: (r: { id: string; secret: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private apiKeyListResolvers = new Map<string, { resolve: (keys: Array<{ id: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string; lastUsedAt: string | null; revokedAt: string | null; expiresAt: string | null }>) => void; timer: NodeJS.Timeout }>();\n private apiKeyRevokeResolvers = new Map<string, { resolve: (r: { ok: true; id: string } | { ok: false; code: string; message: string }) => void; timer: NodeJS.Timeout }>();\n /** Directories from which this peer serves files. Default: [process.cwd()]. */\n private sharedDirs: string[] = [process.cwd()];\n private _serviceCatalog: Array<{ name: string; description: string; status: string; tools: Array<{ name: string; description: string; inputSchema: object }>; deployed_by: string }> = [];\n get serviceCatalog() { return this._serviceCatalog; }\n private closed = false;\n /** Non-null when the broker closed us with a terminal code (4001/4002). */\n public terminalClose: { code: number; reason: string } | null = null;\n private reconnectAttempt = 0;\n private helloTimer: NodeJS.Timeout | null = null;\n private reconnectTimer: NodeJS.Timeout | null = null;\n\n // --- Stats counters ---\n private _statsCounters = {\n messagesIn: 0,\n messagesOut: 0,\n toolCalls: 0,\n errors: 0,\n };\n private _sessionStartedAt = Date.now();\n private _statsReportTimer: NodeJS.Timeout | null = null;\n\n constructor(\n private mesh: JoinedMesh,\n private opts: {\n onStatusChange?: (status: ConnStatus) => void;\n displayName?: string;\n debug?: boolean;\n /** Suppress informational stderr logs like \"session restored\". Default false. */\n quiet?: boolean;\n } = {},\n ) {}\n\n get status(): ConnStatus {\n return this._status;\n }\n get meshId(): string {\n return this.mesh.meshId;\n }\n get meshSlug(): string {\n return this.mesh.slug;\n }\n get brokerUrl(): string {\n return this.mesh.brokerUrl;\n }\n get pushHistory(): readonly InboundPush[] {\n return this.pushBuffer;\n }\n\n /** Session public key hex (null before first connection). */\n getSessionPubkey(): string | null { return this.sessionPubkey; }\n /** Session secret key hex (null before first connection). */\n getSessionSecretKey(): string | null { return this.sessionSecretKey; }\n /** Mesh member public key hex (stable across sessions). */\n getMeshPubkey(): string { return this.mesh.pubkey; }\n /** Mesh member secret key hex (stable across sessions). */\n getMeshSecretKey(): string { return this.mesh.secretKey; }\n\n private makeReqId(): string {\n return randomBytes(8).toString(\"hex\") + Date.now().toString(36);\n }\n\n /** Open WS, send hello, resolve when hello_ack received. */\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"client is closed\");\n if (this._status === \"connecting\" || this._status === \"open\") return;\n this.setConnStatus(\"connecting\");\n const ws = new WebSocket(this.mesh.brokerUrl);\n this.ws = ws;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = async (): Promise<void> => {\n this.debug(\"ws open → generating session keypair + signing hello\");\n try {\n // Only generate session keypair on first connect, not reconnects\n if (!this.sessionPubkey) {\n const sessionKP = await generateKeypair();\n this.sessionPubkey = sessionKP.publicKey;\n this.sessionSecretKey = sessionKP.secretKey;\n }\n\n const { timestamp, signature } = await signHello(\n this.mesh.meshId,\n this.mesh.memberId,\n this.mesh.pubkey,\n this.mesh.secretKey,\n );\n ws.send(\n JSON.stringify({\n type: \"hello\",\n meshId: this.mesh.meshId,\n memberId: this.mesh.memberId,\n pubkey: this.mesh.pubkey,\n sessionPubkey: this.sessionPubkey,\n displayName: process.env.CLAUDEMESH_DISPLAY_NAME || this.opts.displayName || undefined,\n sessionId: process.env.CLAUDEMESH_SESSION_ID || detectClaudeSessionId() || `${process.pid}-${Date.now()}`,\n pid: process.pid,\n cwd: process.cwd(),\n hostname: require(\"os\").hostname(),\n peerType: \"ai\" as const,\n channel: \"claude-code\",\n model: process.env.CLAUDE_MODEL || undefined,\n timestamp,\n signature,\n }),\n );\n } catch (e) {\n reject(\n new Error(\n `hello sign failed: ${e instanceof Error ? e.message : e}`,\n ),\n );\n return;\n }\n // Arm the hello_ack timeout.\n this.helloTimer = setTimeout(() => {\n this.debug(\"hello_ack timeout\");\n ws.close();\n reject(new Error(\"hello_ack timeout\"));\n }, HELLO_ACK_TIMEOUT_MS);\n };\n\n const onMessage = (raw: WebSocket.RawData): void => {\n let msg: Record<string, unknown>;\n try {\n msg = JSON.parse(raw.toString()) as Record<string, unknown>;\n } catch {\n return;\n }\n if (msg.type === \"hello_ack\") {\n if (this.helloTimer) clearTimeout(this.helloTimer);\n this.helloTimer = null;\n this.setConnStatus(\"open\");\n this.reconnectAttempt = 0;\n this.flushOutbound();\n this.startStatsReporting();\n // Restore cumulative stats from a previous session if available.\n if (msg.restored) {\n const groups = msg.restoredGroups\n ? (msg.restoredGroups as Array<{ name: string; role?: string }>).map((g) => g.role ? `@${g.name}:${g.role}` : `@${g.name}`).join(\", \")\n : \"none\";\n if (!this.opts.quiet) {\n process.stderr.write(\n `[claudemesh] session restored — last seen ${msg.lastSeenAt ?? \"unknown\"}, groups: ${groups}\\n`,\n );\n }\n if (msg.restoredStats) {\n const rs = msg.restoredStats as { messagesIn: number; messagesOut: number; toolCalls: number; errors: number };\n this._statsCounters.messagesIn = rs.messagesIn ?? 0;\n this._statsCounters.messagesOut = rs.messagesOut ?? 0;\n this._statsCounters.toolCalls = rs.toolCalls ?? 0;\n this._statsCounters.errors = rs.errors ?? 0;\n }\n }\n if ((msg as any).services) {\n this._serviceCatalog = (msg as any).services;\n }\n resolve();\n return;\n }\n this.handleServerMessage(msg);\n };\n\n const onClose = (code?: number, reasonBuf?: Buffer): void => {\n if (this.helloTimer) clearTimeout(this.helloTimer);\n this.helloTimer = null;\n if (this.ws === ws) this.ws = null;\n const reason = reasonBuf?.toString(\"utf-8\") ?? \"\";\n // Terminal close codes — broker told us to stay gone.\n // 4001 = kicked (session ended, user must manually rejoin)\n // 4002 = banned (member revoked, cannot rejoin until unbanned)\n if (code === 4001 || code === 4002) {\n this.closed = true;\n this.setConnStatus(\"closed\");\n this.terminalClose = { code, reason };\n if (this._status !== \"open\") {\n reject(new Error(`ws terminal close ${code}: ${reason || \"session ended\"}`));\n }\n return;\n }\n if (this._status !== \"open\" && this._status !== \"reconnecting\") {\n reject(new Error(\"ws closed before hello_ack\"));\n }\n if (!this.closed) this.scheduleReconnect();\n else this.setConnStatus(\"closed\");\n };\n\n const onError = (err: Error): void => {\n this.debug(`ws error: ${err.message}`);\n };\n\n ws.on(\"open\", onOpen);\n ws.on(\"message\", onMessage);\n ws.on(\"close\", onClose);\n ws.on(\"error\", onError);\n });\n }\n\n /** Fire-and-wait send: resolves when broker acks. */\n async send(\n targetSpec: string,\n message: string,\n priority: Priority = \"next\",\n ): Promise<{ ok: boolean; messageId?: string; error?: string }> {\n const id = randomId();\n // Direct messages get crypto_box encryption; broadcasts + channels\n // still pass through as base64 plaintext until channel crypto lands.\n let nonce: string;\n let ciphertext: string;\n if (isDirectTarget(targetSpec)) {\n const env = await encryptDirect(\n message,\n targetSpec,\n this.sessionSecretKey ?? this.mesh.secretKey,\n );\n nonce = env.nonce;\n ciphertext = env.ciphertext;\n } else {\n nonce = randomNonce();\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n }\n\n this._statsCounters.messagesOut++;\n\n return new Promise((resolve) => {\n if (this.pendingSends.size >= MAX_QUEUED) {\n resolve({ ok: false, error: \"outbound queue full\" });\n return;\n }\n this.pendingSends.set(id, {\n id,\n targetSpec,\n priority,\n nonce,\n ciphertext,\n resolve,\n });\n const dispatch = (): void => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(\n JSON.stringify({\n type: \"send\",\n id,\n targetSpec,\n priority,\n nonce,\n ciphertext,\n }),\n );\n };\n if (this._status === \"open\") dispatch();\n else {\n // Queue the dispatch closure; flushed on (re)connect.\n if (this.outbound.length >= MAX_QUEUED) {\n this.pendingSends.delete(id);\n resolve({ ok: false, error: \"outbound queue full\" });\n return;\n }\n this.outbound.push(dispatch);\n }\n // Ack timeout: 10s to hear back.\n setTimeout(() => {\n if (this.pendingSends.has(id)) {\n this.pendingSends.delete(id);\n resolve({ ok: false, error: \"ack timeout\" });\n }\n }, 10_000);\n });\n }\n\n /** Subscribe to inbound pushes. Returns an unsubscribe function. */\n onPush(handler: PushHandler): () => void {\n this.pushHandlers.add(handler);\n return () => this.pushHandlers.delete(handler);\n }\n\n /** Drain the buffered push history (used by check_messages tool). */\n drainPushBuffer(): InboundPush[] {\n const drained = this.pushBuffer.slice();\n this.pushBuffer.length = 0;\n return drained;\n }\n\n /** Send a manual status override. Fire-and-forget (no ack). */\n async setStatus(status: \"idle\" | \"working\" | \"dnd\"): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_status\", status }));\n }\n\n /** Toggle visibility in the mesh. Hidden peers don't appear in list_peers and skip broadcasts. */\n async setVisible(visible: boolean): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_visible\", visible }));\n }\n\n /** Set public profile metadata visible to other peers. */\n async setProfile(profile: { avatar?: string; title?: string; bio?: string; capabilities?: string[] }): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_profile\", ...profile }));\n }\n\n /** Request the list of connected peers from the broker. */\n async listPeers(): Promise<PeerInfo[]> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.listPeersResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.listPeersResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_peers\", _reqId: reqId }));\n });\n }\n\n /** Update this session's summary visible to other peers. */\n async setSummary(summary: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_summary\", summary }));\n }\n\n /** Report resource usage stats to the broker. */\n setStats(stats?: Record<string, number>): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n const payload = stats ?? {\n ...this._statsCounters,\n uptime: Math.round((Date.now() - this._sessionStartedAt) / 1000),\n };\n this.ws.send(JSON.stringify({ type: \"set_stats\", stats: payload }));\n }\n\n /** Increment the tool call counter. */\n incrementToolCalls(): void {\n this._statsCounters.toolCalls++;\n }\n\n /** Increment the error counter. */\n incrementErrors(): void {\n this._statsCounters.errors++;\n }\n\n /** Start auto-reporting stats every 60 seconds. */\n startStatsReporting(): void {\n if (this._statsReportTimer) return;\n this._statsReportTimer = setInterval(() => {\n this.setStats();\n }, 60_000);\n }\n\n /** Stop auto-reporting stats. */\n stopStatsReporting(): void {\n if (this._statsReportTimer) {\n clearInterval(this._statsReportTimer);\n this._statsReportTimer = null;\n }\n }\n\n /** Join a group with an optional role. */\n async joinGroup(name: string, role?: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"join_group\", name, role }));\n }\n\n /** Leave a group. */\n async leaveGroup(name: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"leave_group\", name }));\n }\n\n // --- Topics (v0.2.0) ---\n // Conversation-scope primitive within a mesh. Spec:\n // .artifacts/specs/2026-05-02-v0.2.0-scope.md\n\n async topicCreate(args: {\n name: string;\n description?: string;\n visibility?: \"public\" | \"private\" | \"dm\";\n }): Promise<{ id: string; name: string; created: boolean } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicCreatedResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_create\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async topicList(): Promise<\n Array<{\n id: string;\n name: string;\n description: string | null;\n visibility: \"public\" | \"private\" | \"dm\";\n memberCount: number;\n createdAt: string;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicListResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicListResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"topic_list\", _reqId: reqId }));\n });\n }\n\n async topicJoin(topic: string, role?: \"lead\" | \"member\" | \"observer\"): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_join\", topic, role }));\n }\n\n async topicLeave(topic: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_leave\", topic }));\n }\n\n async topicMembers(topic: string): Promise<\n Array<{\n memberId: string;\n pubkey: string;\n displayName: string;\n role: \"lead\" | \"member\" | \"observer\";\n joinedAt: string;\n lastReadAt: string | null;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicMembersResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicMembersResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_members\", _reqId: reqId, topic }),\n );\n });\n }\n\n async topicHistory(args: {\n topic: string;\n limit?: number;\n beforeId?: string;\n }): Promise<\n Array<{\n id: string;\n senderPubkey: string;\n nonce: string;\n ciphertext: string;\n createdAt: string;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicHistoryResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicHistoryResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_history\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async topicMarkRead(topic: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_mark_read\", topic }));\n }\n\n // --- API keys (v0.2.0) ---\n\n async apiKeyCreate(args: {\n label: string;\n capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">;\n topicScopes?: string[];\n expiresAt?: string;\n }): Promise<{ id: string; secret: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyCreatedResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"apikey_create\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async apiKeyList(): Promise<\n Array<{\n id: string;\n label: string;\n prefix: string;\n capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">;\n topicScopes: string[] | null;\n createdAt: string;\n lastUsedAt: string | null;\n revokedAt: string | null;\n expiresAt: string | null;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyListResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyListResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"apikey_list\", _reqId: reqId }));\n });\n }\n\n async apiKeyRevoke(id: string): Promise<{ ok: true; id: string } | { ok: false; code: string; message: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) {\n return { ok: false, code: \"not_connected\", message: \"broker not connected\" };\n }\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyRevokeResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyRevokeResolvers.delete(reqId)) {\n resolve({ ok: false, code: \"timeout\", message: \"broker did not respond within 5s\" });\n }\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"apikey_revoke\", id, _reqId: reqId }));\n });\n }\n\n // --- State ---\n\n /** Set a shared state value visible to all peers in the mesh. */\n async setState(key: string, value: unknown): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_state\", key, value }));\n }\n\n /** Read a shared state value. */\n async getState(key: string): Promise<{ key: string; value: unknown; updatedBy: string; updatedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.stateResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.stateResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_state\", key, _reqId: reqId }));\n });\n }\n\n /** List all shared state keys and values. */\n async listState(): Promise<Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.stateListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.stateListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_state\", _reqId: reqId }));\n });\n }\n\n // --- Memory ---\n\n /** Store persistent knowledge in the mesh's shared memory. */\n async remember(content: string, tags?: string[]): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.memoryStoreResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.memoryStoreResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"remember\", content, tags, _reqId: reqId }));\n });\n }\n\n /** Search the mesh's shared memory by relevance. */\n async recall(query: string): Promise<Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.memoryRecallResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.memoryRecallResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"recall\", query, _reqId: reqId }));\n });\n }\n\n /** Remove a memory from the mesh's shared knowledge. */\n async forget(memoryId: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"forget\", memoryId }));\n }\n\n // --- Scheduled messages ---\n\n /** Schedule a message for future delivery. Returns { scheduledId, deliverAt, cron? } or null on timeout. */\n async scheduleMessage(\n to: string,\n message: string,\n deliverAt: number,\n isReminder = false,\n cron?: string,\n ): Promise<{ scheduledId: string; deliverAt: number; cron?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.scheduledAckResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.scheduledAckResolvers.delete(reqId)) resolve(null);\n }, 8_000) });\n this.ws!.send(JSON.stringify({\n type: \"schedule\",\n to,\n message,\n deliverAt,\n ...(isReminder ? { subtype: \"reminder\" } : {}),\n ...(cron ? { cron, recurring: true } : {}),\n _reqId: reqId,\n }));\n });\n }\n\n /** List all pending scheduled messages for this session. */\n async listScheduled(): Promise<Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.scheduledListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.scheduledListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_scheduled\", _reqId: reqId }));\n });\n }\n\n /** Cancel a scheduled message by id. Returns true if found and cancelled. */\n async cancelScheduled(scheduledId: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.cancelScheduledResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.cancelScheduledResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"cancel_scheduled\", scheduledId, _reqId: reqId }));\n });\n }\n\n /** Check delivery status of a sent message. */\n private messageStatusResolvers = new Map<string, { resolve: (result: { messageId: string; targetSpec: string; delivered: boolean; deliveredAt: string | null; recipients: Array<{ name: string; pubkey: string; status: string }> } | null) => void; timer: NodeJS.Timeout }>();\n private fileUrlResolvers = new Map<string, { resolve: (result: { url: string; name: string; encrypted?: boolean; sealedKey?: string } | null) => void; timer: NodeJS.Timeout }>();\n private fileListResolvers = new Map<string, { resolve: (files: Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>) => void; timer: NodeJS.Timeout }>();\n private fileStatusResolvers = new Map<string, { resolve: (accesses: Array<{ peerName: string; accessedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private vectorStoredResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private vectorResultsResolvers = new Map<string, { resolve: (results: Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>) => void; timer: NodeJS.Timeout }>();\n private collectionListResolvers = new Map<string, { resolve: (collections: string[]) => void; timer: NodeJS.Timeout }>();\n private graphResultResolvers = new Map<string, { resolve: (rows: Array<Record<string, unknown>>) => void; timer: NodeJS.Timeout }>();\n private contextListResolvers = new Map<string, { resolve: (contexts: Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private contextResultsResolvers = new Map<string, { resolve: (contexts: Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private taskCreatedResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private taskListResolvers = new Map<string, { resolve: (tasks: Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>) => void; timer: NodeJS.Timeout }>();\n private meshQueryResolvers = new Map<string, { resolve: (result: { columns: string[]; rows: Array<Record<string, unknown>>; rowCount: number } | null) => void; timer: NodeJS.Timeout }>();\n private meshSchemaResolvers = new Map<string, { resolve: (tables: Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>) => void; timer: NodeJS.Timeout }>();\n private streamCreatedResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private streamListResolvers = new Map<string, { resolve: (streams: Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>) => void; timer: NodeJS.Timeout }>();\n private streamDataHandlers = new Set<(data: { stream: string; data: unknown; publishedBy: string }) => void>();\n private scheduledAckResolvers = new Map<string, { resolve: (result: { scheduledId: string; deliverAt: number } | null) => void; timer: NodeJS.Timeout }>();\n private scheduledListResolvers = new Map<string, { resolve: (messages: Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>) => void; timer: NodeJS.Timeout }>();\n private cancelScheduledResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private mcpRegisterResolvers = new Map<string, { resolve: (result: { serverName: string; toolCount: number } | null) => void; timer: NodeJS.Timeout }>();\n private mcpListResolvers = new Map<string, { resolve: (servers: Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>) => void; timer: NodeJS.Timeout }>();\n private mcpCallResolvers = new Map<string, { resolve: (result: { result?: unknown; error?: string }) => void; timer: NodeJS.Timeout }>();\n /** Handler for inbound mcp_call_forward messages. Set by the MCP server. */\n private mcpCallForwardHandler: ((forward: { callId: string; serverName: string; toolName: string; args: Record<string, unknown>; callerName: string }) => Promise<{ result?: unknown; error?: string }>) | null = null;\n private vaultAckResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private vaultListResolvers = new Map<string, { resolve: (entries: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpDeployResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private mcpLogsResolvers = new Map<string, { resolve: (lines: string[]) => void; timer: NodeJS.Timeout }>();\n private mcpSchemaServiceResolvers = new Map<string, { resolve: (tools: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpCatalogResolvers = new Map<string, { resolve: (services: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpScopeResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private skillDeployResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n\n async messageStatus(messageId: string): Promise<{ messageId: string; targetSpec: string; delivered: boolean; deliveredAt: string | null; recipients: Array<{ name: string; pubkey: string; status: string }> } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.messageStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.messageStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"message_status\", messageId, _reqId: reqId }));\n });\n }\n\n // --- Files ---\n\n /** Get a download URL for a shared file. */\n async getFile(fileId: string): Promise<{ url: string; name: string; encrypted?: boolean; sealedKey?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileUrlResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileUrlResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_file\", fileId, _reqId: reqId }));\n });\n }\n\n /** List files shared in the mesh. */\n async listFiles(query?: string, from?: string): Promise<Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_files\", query, from, _reqId: reqId }));\n });\n }\n\n /** Check who has accessed a shared file. */\n async fileStatus(fileId: string): Promise<Array<{ peerName: string; accessedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileStatusResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"file_status\", fileId, _reqId: reqId }));\n });\n }\n\n /** Delete a shared file from the mesh. */\n async deleteFile(fileId: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"delete_file\", fileId }));\n }\n\n /** Upload a file to the broker via HTTP POST. Returns file ID. */\n async uploadFile(filePath: string, meshId: string, memberId: string, opts: {\n name?: string; tags?: string[]; persistent?: boolean; targetSpec?: string;\n encrypted?: boolean; ownerPubkey?: string; fileKeys?: Array<{ peerPubkey: string; sealedKey: string }>;\n }): Promise<string> {\n const { readFileSync } = await import(\"node:fs\");\n const { basename } = await import(\"node:path\");\n const data = readFileSync(filePath);\n const fileName = opts.name ?? basename(filePath);\n\n // Convert WS broker URL to HTTP\n const brokerHttp = this.mesh.brokerUrl\n .replace(\"wss://\", \"https://\")\n .replace(\"ws://\", \"http://\")\n .replace(\"/ws\", \"\");\n\n const res = await fetch(`${brokerHttp}/upload`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n \"X-Mesh-Id\": meshId,\n \"X-Member-Id\": memberId,\n \"X-File-Name\": fileName,\n \"X-Tags\": JSON.stringify(opts.tags ?? []),\n \"X-Persistent\": String(opts.persistent ?? true),\n \"X-Target-Spec\": opts.targetSpec ?? \"\",\n ...(opts.encrypted ? { \"X-Encrypted\": \"true\" } : {}),\n ...(opts.ownerPubkey ? { \"X-Owner-Pubkey\": opts.ownerPubkey } : {}),\n ...(opts.fileKeys?.length ? { \"X-File-Keys\": JSON.stringify(opts.fileKeys) } : {}),\n },\n body: data,\n signal: AbortSignal.timeout(30_000),\n });\n const body = await res.json() as { ok?: boolean; fileId?: string; error?: string };\n if (!res.ok || !body.fileId) {\n throw new Error(body.error ?? `HTTP ${res.status}`);\n }\n return body.fileId;\n }\n\n /** Grant a peer access to an encrypted file (owner only). */\n async grantFileAccess(fileId: string, peerPubkey: string, sealedKey: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.grantFileAccessResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.grantFileAccessResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"grant_file_access\", fileId, peerPubkey, sealedKey, _reqId: reqId }));\n });\n }\n\n // --- Vectors ---\n\n /** Store an embedding in a per-mesh Qdrant collection. */\n async vectorStore(collection: string, text: string, metadata?: Record<string, unknown>): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.vectorStoredResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.vectorStoredResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"vector_store\", collection, text, metadata, _reqId: reqId }));\n });\n }\n\n /** Semantic search over stored embeddings. */\n async vectorSearch(collection: string, query: string, limit?: number): Promise<Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.vectorResultsResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.vectorResultsResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"vector_search\", collection, query, limit, _reqId: reqId }));\n });\n }\n\n /** Remove an embedding from a collection. */\n async vectorDelete(collection: string, id: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"vector_delete\", collection, id }));\n }\n\n /** List vector collections in this mesh. */\n async listCollections(): Promise<string[]> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.collectionListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.collectionListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_collections\", _reqId: reqId }));\n });\n }\n\n // --- Graph ---\n\n /** Run a read query on the per-mesh Neo4j database. */\n async graphQuery(cypher: string): Promise<Array<Record<string, unknown>>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.graphResultResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.graphResultResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"graph_query\", cypher, _reqId: reqId }));\n });\n }\n\n /** Run a write query (CREATE, MERGE, DELETE) on the per-mesh Neo4j database. */\n async graphExecute(cypher: string): Promise<Array<Record<string, unknown>>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.graphResultResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.graphResultResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"graph_execute\", cypher, _reqId: reqId }));\n });\n }\n\n // --- Context ---\n\n /** Share session understanding with the mesh. */\n async shareContext(summary: string, filesRead?: string[], keyFindings?: string[], tags?: string[]): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"share_context\", summary, filesRead, keyFindings, tags }));\n }\n\n /** Find context from peers who explored an area. */\n async getContext(query: string): Promise<Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.contextResultsResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.contextResultsResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_context\", query, _reqId: reqId }));\n });\n }\n\n /** See what all peers currently know. */\n async listContexts(): Promise<Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.contextListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.contextListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_contexts\", _reqId: reqId }));\n });\n }\n\n // --- Tasks ---\n\n /** Create a work item. */\n async createTask(title: string, assignee?: string, priority?: string, tags?: string[]): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.taskCreatedResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.taskCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_task\", title, assignee, priority, tags, _reqId: reqId }));\n });\n }\n\n /** Claim an unclaimed task. */\n async claimTask(id: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"claim_task\", taskId: id }));\n }\n\n /** Mark a task done with optional result. */\n async completeTask(id: string, result?: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"complete_task\", taskId: id, result }));\n }\n\n /** List tasks filtered by status/assignee. */\n async listTasks(status?: string, assignee?: string): Promise<Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.taskListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.taskListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_tasks\", status, assignee, _reqId: reqId }));\n });\n }\n\n // --- Mesh Database ---\n\n /** Run a SELECT query on the per-mesh shared database. */\n async meshQuery(sql: string): Promise<{ columns: string[]; rows: Array<Record<string, unknown>>; rowCount: number } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshQueryResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshQueryResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_query\", sql, _reqId: reqId }));\n });\n }\n\n /** Run DDL/DML on the per-mesh database (CREATE TABLE, INSERT, UPDATE, DELETE). */\n async meshExecute(sql: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mesh_execute\", sql }));\n }\n\n /** List tables and columns in the per-mesh shared database. */\n async meshSchema(): Promise<Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshSchemaResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshSchemaResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_schema\", _reqId: reqId }));\n });\n }\n\n // --- Streams ---\n\n /** Create a real-time data stream in the mesh. */\n async createStream(name: string): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.streamCreatedResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.streamCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_stream\", name, _reqId: reqId }));\n });\n }\n\n /** Push data to a stream. Subscribers receive it in real-time. */\n async publish(stream: string, data: unknown): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"publish\", stream, data }));\n }\n\n /** Subscribe to a stream. Data pushes arrive via onStreamData handler. */\n async subscribe(stream: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"subscribe\", stream }));\n }\n\n /** Unsubscribe from a stream. */\n async unsubscribe(stream: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"unsubscribe\", stream }));\n }\n\n /** List active streams in the mesh. */\n async listStreams(): Promise<Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.streamListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.streamListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_streams\", _reqId: reqId }));\n });\n }\n\n /** Subscribe to stream data pushes. Returns an unsubscribe function. */\n onStreamData(handler: (data: { stream: string; data: unknown; publishedBy: string }) => void): () => void {\n this.streamDataHandlers.add(handler);\n return () => this.streamDataHandlers.delete(handler);\n }\n\n /** Subscribe to state change notifications. Returns an unsubscribe function. */\n onStateChange(handler: (change: { key: string; value: unknown; updatedBy: string }) => void): () => void {\n this.stateChangeHandlers.add(handler);\n return () => this.stateChangeHandlers.delete(handler);\n }\n\n // --- MCP proxy ---\n\n /** Register an MCP server with the mesh. */\n async mcpRegister(\n serverName: string,\n description: string,\n tools: Array<{ name: string; description: string; inputSchema: Record<string, unknown> }>,\n persistent?: boolean,\n ): Promise<{ serverName: string; toolCount: number } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpRegisterResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpRegisterResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_register\", serverName, description, tools, ...(persistent ? { persistent: true } : {}), _reqId: reqId }));\n });\n }\n\n /** Unregister an MCP server from the mesh. */\n async mcpUnregister(serverName: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mcp_unregister\", serverName }));\n }\n\n /** List MCP servers available in the mesh. */\n async mcpList(): Promise<Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_list\", _reqId: reqId }));\n });\n }\n\n /** Call a tool on a mesh-registered MCP server. 30s timeout. */\n async mcpCall(serverName: string, toolName: string, args: Record<string, unknown>): Promise<{ result?: unknown; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpCallResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpCallResolvers.delete(reqId)) resolve({ error: \"MCP call timed out (30s)\" });\n }, 30_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_call\", serverName, toolName, args, _reqId: reqId }));\n });\n }\n\n /** Set the handler for inbound forwarded MCP calls. */\n onMcpCallForward(handler: (forward: { callId: string; serverName: string; toolName: string; args: Record<string, unknown>; callerName: string }) => Promise<{ result?: unknown; error?: string }>): void {\n this.mcpCallForwardHandler = handler;\n }\n\n /** Send a response to a forwarded MCP call back to the broker. */\n private sendMcpCallResponse(callId: string, result?: unknown, error?: string): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mcp_call_response\", callId, result, error }));\n }\n\n // --- Mesh info ---\n private meshInfoResolvers = new Map<string, { resolve: (result: Record<string, unknown> | null) => void; timer: NodeJS.Timeout }>();\n private clockStatusResolvers = new Map<string, { resolve: (result: { speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null) => void; timer: NodeJS.Timeout }>();\n\n /** Set the simulation clock speed. Returns clock status. */\n async setClock(speed: number): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"set_clock\", speed, _reqId: reqId }));\n });\n }\n\n /** Pause the simulation clock. Returns clock status. */\n async pauseClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"pause_clock\", _reqId: reqId }));\n });\n }\n\n /** Resume the simulation clock. Returns clock status. */\n async resumeClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"resume_clock\", _reqId: reqId }));\n });\n }\n\n /** Get current simulation clock status. */\n async getClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_clock\", _reqId: reqId }));\n });\n }\n\n async meshInfo(): Promise<Record<string, unknown> | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshInfoResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshInfoResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_info\", _reqId: reqId }));\n });\n }\n\n // --- Skills ---\n private skillAckResolvers = new Map<string, { resolve: (result: { name: string; action: string } | null) => void; timer: NodeJS.Timeout }>();\n private skillDataResolvers = new Map<string, { resolve: (skill: { name: string; description: string; instructions: string; tags: string[]; author: string; manifest?: unknown; createdAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private skillListResolvers = new Map<string, { resolve: (skills: Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n\n /** Publish a reusable skill to the mesh. */\n async shareSkill(name: string, description: string, instructions: string, tags?: string[], manifest?: Record<string, unknown>): Promise<{ ok: boolean; action?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillAckResolvers.set(reqId, { resolve: (result) => {\n resolve(result ? { ok: true, action: result.action } : null);\n }, timer: setTimeout(() => {\n if (this.skillAckResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"share_skill\", name, description, instructions, tags, manifest, _reqId: reqId }));\n });\n }\n\n /** Load a skill's full instructions by name. */\n async getSkill(name: string): Promise<{ name: string; description: string; instructions: string; tags: string[]; author: string; manifest?: unknown; createdAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillDataResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.skillDataResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_skill\", name, _reqId: reqId }));\n });\n }\n\n /** Browse available skills in the mesh. */\n async listSkills(query?: string): Promise<Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.skillListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_skills\", query, _reqId: reqId }));\n });\n }\n\n /** Remove a skill you published. */\n async removeSkill(name: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillAckResolvers.set(reqId, { resolve: (result) => {\n resolve(result?.action === \"removed\");\n }, timer: setTimeout(() => {\n if (this.skillAckResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"remove_skill\", name, _reqId: reqId }));\n });\n }\n\n // --- Webhooks ---\n private webhookAckResolvers = new Map<string, { resolve: (result: { name: string; url: string; secret: string } | null) => void; timer: NodeJS.Timeout }>();\n private webhookListResolvers = new Map<string, { resolve: (webhooks: Array<{ name: string; url: string; active: boolean; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n\n /** Create an inbound webhook. Returns the URL and secret. */\n async createWebhook(name: string): Promise<{ name: string; url: string; secret: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookAckResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.webhookAckResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_webhook\", name, _reqId: reqId }));\n });\n }\n\n /** List active webhooks for this mesh. */\n async listWebhooks(): Promise<Array<{ name: string; url: string; active: boolean; createdAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.webhookListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_webhooks\", _reqId: reqId }));\n });\n }\n\n /** Deactivate a webhook by name. */\n async deleteWebhook(name: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookAckResolvers.set(reqId, { resolve: () => resolve(true), timer: setTimeout(() => {\n if (this.webhookAckResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"delete_webhook\", name, _reqId: reqId }));\n });\n }\n\n // --- Peer file sharing ---\n\n /** Set the directories this peer shares. Default: [cwd]. */\n setSharedDirs(dirs: string[]): void {\n this.sharedDirs = dirs.map(d => {\n const { resolve } = require(\"node:path\");\n return resolve(d);\n });\n }\n\n /** Request a file from another peer's local filesystem. Returns base64 content or error. */\n async requestFile(targetPubkey: string, filePath: string): Promise<{ content?: string; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.peerFileResponseResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.peerFileResponseResolvers.delete(reqId)) resolve({ error: \"timeout waiting for peer response\" });\n }, 15_000) });\n this.ws!.send(JSON.stringify({ type: \"peer_file_request\", targetPubkey, filePath, _reqId: reqId }));\n });\n }\n\n /** Request a directory listing from another peer. */\n async requestDir(targetPubkey: string, dirPath: string, pattern?: string): Promise<{ entries?: string[]; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.peerDirResponseResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.peerDirResponseResolvers.delete(reqId)) resolve({ error: \"timeout waiting for peer response\" });\n }, 15_000) });\n this.ws!.send(JSON.stringify({ type: \"peer_dir_request\", targetPubkey, dirPath, ...(pattern ? { pattern } : {}), _reqId: reqId }));\n });\n }\n\n // --- Vault ---\n\n async vaultSet(key: string, ciphertext: string, nonce: string, sealedKey: string, entryType: \"env\" | \"file\", mountPath?: string, description?: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `vset_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;\n const timer = setTimeout(() => { this.vaultAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.vaultAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_set\", key, ciphertext, nonce, sealed_key: sealedKey, entry_type: entryType, mount_path: mountPath, description, _reqId: reqId } as any);\n });\n }\n\n async vaultList(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `vlist_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.vaultListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_list\", _reqId: reqId } as any);\n });\n }\n\n async vaultDelete(key: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `vdel_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.vaultAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_delete\", key, _reqId: reqId } as any);\n });\n }\n\n async vaultGet(keys: string[]): Promise<Array<{ key: string; ciphertext: string; nonce: string; sealed_key: string; entry_type: string; mount_path?: string }>> {\n return new Promise(resolve => {\n const reqId = `vget_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.vaultListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_get\", keys, _reqId: reqId } as any);\n });\n }\n\n // --- MCP Deploy ---\n\n async mcpDeploy(serverName: string, source: any, config?: any, scope?: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `deploy_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve({ status: \"timeout\" }); }, 60_000);\n this.mcpDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_deploy\", server_name: serverName, source, config, scope, _reqId: reqId } as any);\n });\n }\n\n async mcpUndeploy(serverName: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `undeploy_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve(false); }, 10_000);\n this.mcpDeployResolvers.set(reqId, { resolve: (r: any) => resolve(r.status === \"stopped\"), timer });\n this.sendRaw({ type: \"mcp_undeploy\", server_name: serverName, _reqId: reqId } as any);\n });\n }\n\n async mcpUpdate(serverName: string): Promise<any> {\n return new Promise(resolve => {\n const reqId = `update_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve({ status: \"timeout\" }); }, 60_000);\n this.mcpDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_update\", server_name: serverName, _reqId: reqId } as any);\n });\n }\n\n async mcpLogs(serverName: string, lines?: number): Promise<string[]> {\n return new Promise(resolve => {\n const reqId = `logs_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpLogsResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpLogsResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_logs\", server_name: serverName, lines, _reqId: reqId } as any);\n });\n }\n\n async mcpScope(serverName: string, scope?: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `scope_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpScopeResolvers.delete(reqId); resolve({ scope: { type: \"peer\" }, deployed_by: \"unknown\" }); }, 10_000);\n this.mcpScopeResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_scope\", server_name: serverName, scope, _reqId: reqId } as any);\n });\n }\n\n async mcpServiceSchema(serverName: string, toolName?: string): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `schema_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpSchemaServiceResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpSchemaServiceResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_schema\", server_name: serverName, tool_name: toolName, _reqId: reqId } as any);\n });\n }\n\n async mcpCatalog(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `catalog_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpCatalogResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpCatalogResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_catalog\", _reqId: reqId } as any);\n });\n }\n\n // --- Skill Deploy ---\n\n async skillDeploy(source: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `skilldeploy_${Date.now()}`;\n const timer = setTimeout(() => { this.skillDeployResolvers.delete(reqId); resolve({ name: \"unknown\", files: [] }); }, 30_000);\n this.skillDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"skill_deploy\", source, _reqId: reqId } as any);\n });\n }\n\n // --- URL Watch ---\n\n private watchAckResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private watchListResolvers = new Map<string, { resolve: (watches: any[]) => void; timer: NodeJS.Timeout }>();\n\n async watch(url: string, opts?: { mode?: string; extract?: string; interval?: number; notify_on?: string; headers?: Record<string, string>; label?: string }): Promise<any> {\n return new Promise(resolve => {\n const reqId = `watch_${Date.now()}`;\n const timer = setTimeout(() => { this.watchAckResolvers.delete(reqId); resolve({ error: \"timeout\" }); }, 10_000);\n this.watchAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"watch\", url, ...opts, _reqId: reqId } as any);\n });\n }\n\n async unwatch(watchId: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `unwatch_${Date.now()}`;\n const timer = setTimeout(() => { this.watchAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.watchAckResolvers.set(reqId, { resolve: () => resolve(true), timer });\n this.sendRaw({ type: \"unwatch\", watchId, _reqId: reqId } as any);\n });\n }\n\n async watchList(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `watchlist_${Date.now()}`;\n const timer = setTimeout(() => { this.watchListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.watchListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"watch_list\", _reqId: reqId } as any);\n });\n }\n\n async getServiceTools(serviceName: string): Promise<any[]> {\n // Check cached catalog first\n const cached = this._serviceCatalog.find(s => s.name === serviceName);\n if (cached?.tools?.length) return cached.tools;\n // Fall back to schema query\n return this.mcpServiceSchema(serviceName);\n }\n\n /** Send a raw JSON frame to the broker (fire-and-forget). */\n private sendRaw(payload: Record<string, unknown>): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify(payload));\n }\n\n /**\n * Public request-response: sends a raw message with a generated _reqId\n * and resolves when the broker responds with any message containing the\n * same _reqId. Used by kick/ban/unban/bans CLI commands.\n */\n async sendAndWait<T = Record<string, unknown>>(payload: Record<string, unknown>, timeoutMs = 10_000): Promise<T> {\n const reqId = `rw-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n this.genericResolvers.delete(reqId);\n reject(new Error(\"sendAndWait timeout\"));\n }, timeoutMs);\n this.genericResolvers.set(reqId, (msg) => {\n clearTimeout(timer);\n this.genericResolvers.delete(reqId);\n resolve(msg as T);\n });\n this.sendRaw({ ...payload, _reqId: reqId });\n });\n }\n private genericResolvers = new Map<string, (msg: Record<string, unknown>) => void>();\n\n close(): void {\n this.closed = true;\n this.stopStatsReporting();\n if (this.helloTimer) clearTimeout(this.helloTimer);\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n if (this.ws) {\n try {\n this.ws.close();\n } catch {\n /* ignore */\n }\n }\n this.setConnStatus(\"closed\");\n }\n\n // --- Peer file request handlers (serving local files to remote peers) ---\n\n private static readonly MAX_FILE_SIZE = 1_048_576; // 1MB\n\n /** Handle an inbound file request from another peer (forwarded by broker). */\n private async handlePeerFileRequest(msg: { requesterPubkey: string; filePath: string; _reqId?: string }): Promise<void> {\n const { resolve, join, normalize } = await import(\"node:path\");\n const { readFileSync, statSync, realpathSync } = await import(\"node:fs\");\n\n const reqId = msg._reqId;\n const sendResponse = (content?: string, error?: string) => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({\n type: \"peer_file_response\",\n requesterPubkey: msg.requesterPubkey,\n filePath: msg.filePath,\n ...(content !== undefined ? { content } : {}),\n ...(error ? { error } : {}),\n ...(reqId ? { _reqId: reqId } : {}),\n }));\n };\n\n // Security: validate input + reject path traversal\n if (!msg.filePath || typeof msg.filePath !== \"string\" || msg.filePath.length > 4096) {\n sendResponse(undefined, \"invalid file path\");\n return;\n }\n if (msg.filePath.includes(\"..\")) {\n sendResponse(undefined, \"path traversal not allowed\");\n return;\n }\n\n // Resolve against shared directories, following symlinks\n let resolvedPath: string | null = null;\n for (const dir of this.sharedDirs) {\n const candidate = resolve(join(dir, msg.filePath));\n let realCandidate: string;\n let realDir: string;\n try {\n realCandidate = realpathSync(candidate);\n realDir = realpathSync(dir);\n } catch {\n continue;\n }\n if (realCandidate.startsWith(realDir + \"/\") || realCandidate === realDir) {\n resolvedPath = realCandidate;\n break;\n }\n }\n if (!resolvedPath) {\n sendResponse(undefined, \"file outside shared directories\");\n return;\n }\n\n try {\n const stat = statSync(resolvedPath);\n if (!stat.isFile()) {\n sendResponse(undefined, \"not a file\");\n return;\n }\n if (stat.size > BrokerClient.MAX_FILE_SIZE) {\n sendResponse(undefined, `file too large (${stat.size} bytes, max ${BrokerClient.MAX_FILE_SIZE})`);\n return;\n }\n const content = readFileSync(resolvedPath);\n sendResponse(content.toString(\"base64\"));\n } catch (e) {\n const errMsg = e instanceof Error ? e.message : String(e);\n if (errMsg.includes(\"ENOENT\")) {\n sendResponse(undefined, \"file not found\");\n } else {\n sendResponse(undefined, `read error: ${errMsg}`);\n }\n }\n }\n\n /** Handle an inbound directory listing request from another peer. */\n private async handlePeerDirRequest(msg: { requesterPubkey: string; dirPath: string; pattern?: string; _reqId?: string }): Promise<void> {\n const { resolve, join, normalize, relative } = await import(\"node:path\");\n const { readdirSync, statSync, realpathSync } = await import(\"node:fs\");\n\n const reqId = msg._reqId;\n const sendResponse = (entries?: string[], error?: string) => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({\n type: \"peer_dir_response\",\n requesterPubkey: msg.requesterPubkey,\n dirPath: msg.dirPath,\n ...(entries ? { entries } : {}),\n ...(error ? { error } : {}),\n ...(reqId ? { _reqId: reqId } : {}),\n }));\n };\n\n const dirPath = msg.dirPath || \".\";\n\n if (typeof dirPath !== \"string\" || dirPath.length > 4096) {\n sendResponse(undefined, \"invalid directory path\");\n return;\n }\n if (dirPath.includes(\"..\")) {\n sendResponse(undefined, \"path traversal not allowed\");\n return;\n }\n\n let resolvedPath: string | null = null;\n for (const dir of this.sharedDirs) {\n const candidate = resolve(join(dir, dirPath));\n let realCandidate: string;\n let realDir: string;\n try {\n realCandidate = realpathSync(candidate);\n realDir = realpathSync(dir);\n } catch { continue; }\n if (realCandidate.startsWith(realDir + \"/\") || realCandidate === realDir) {\n resolvedPath = realCandidate;\n break;\n }\n }\n if (!resolvedPath) {\n sendResponse(undefined, \"directory outside shared directories\");\n return;\n }\n\n try {\n const stat = statSync(resolvedPath);\n if (!stat.isDirectory()) {\n sendResponse(undefined, \"not a directory\");\n return;\n }\n\n // Collect entries recursively (up to 2 levels, max 500 entries)\n const entries: string[] = [];\n const MAX_ENTRIES = 500;\n const MAX_DEPTH = 2;\n let pattern: RegExp | null = null;\n if (msg.pattern && typeof msg.pattern === \"string\" && msg.pattern.length <= 200) {\n const escaped = msg.pattern.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\\*/g, \"[^/]*\").replace(/\\?/g, \".\");\n try { pattern = new RegExp(`^${escaped}$`, \"i\"); } catch { pattern = null; }\n }\n\n const walk = (dir: string, depth: number) => {\n if (entries.length >= MAX_ENTRIES || depth > MAX_DEPTH) return;\n try {\n const items = readdirSync(dir, { withFileTypes: true });\n for (const item of items) {\n if (entries.length >= MAX_ENTRIES) break;\n if (item.name.startsWith(\".\")) continue; // skip hidden\n const relPath = relative(resolvedPath!, join(dir, item.name));\n const label = item.isDirectory() ? relPath + \"/\" : relPath;\n if (pattern && !pattern.test(item.name)) {\n // If directory, still recurse (pattern may match children)\n if (item.isDirectory()) walk(join(dir, item.name), depth + 1);\n continue;\n }\n entries.push(label);\n if (item.isDirectory()) walk(join(dir, item.name), depth + 1);\n }\n } catch { /* permission errors, etc. */ }\n };\n\n walk(resolvedPath, 0);\n sendResponse(entries.sort());\n } catch (e) {\n const errMsg = e instanceof Error ? e.message : String(e);\n if (errMsg.includes(\"ENOENT\")) {\n sendResponse(undefined, \"directory not found\");\n } else {\n sendResponse(undefined, `read error: ${errMsg}`);\n }\n }\n }\n\n // --- Internals ---\n\n private resolveFromMap<T>(\n map: Map<string, { resolve: (v: T) => void; timer: NodeJS.Timeout }>,\n reqId: string | undefined,\n value: T,\n ): boolean {\n let entry = reqId ? map.get(reqId) : undefined;\n if (!entry) {\n if (map.size > 0) {\n this.debug(\"resolveFromMap: no _reqId match, using FIFO fallback (upgrade broker to fix)\");\n }\n const first = map.entries().next().value as [string, { resolve: (v: T) => void; timer: NodeJS.Timeout }] | undefined;\n if (first) {\n entry = first[1];\n map.delete(first[0]);\n }\n } else {\n map.delete(reqId!);\n }\n if (entry) {\n clearTimeout(entry.timer);\n entry.resolve(value);\n return true;\n }\n return false;\n }\n\n private handleServerMessage(msg: Record<string, unknown>): void {\n const msgReqId = msg._reqId as string | undefined;\n\n // Generic request-response resolver (kick_ack, ban_ack, unban_ack, etc.)\n if (msgReqId && this.genericResolvers.has(msgReqId)) {\n const resolve = this.genericResolvers.get(msgReqId)!;\n resolve(msg);\n return;\n }\n\n if (msg.type === \"ack\") {\n const pending = this.pendingSends.get(String(msg.id ?? \"\"));\n if (pending) {\n const queued = msg.queued !== false;\n const errStr = typeof msg.error === \"string\" ? msg.error : undefined;\n pending.resolve(\n queued\n ? { ok: true, messageId: String(msg.messageId ?? \"\") }\n : { ok: false, error: errStr ?? \"broker rejected send\" },\n );\n this.pendingSends.delete(pending.id);\n }\n return;\n }\n if (msg.type === \"peers_list\") {\n const peers = (msg.peers as PeerInfo[]) ?? [];\n this.resolveFromMap(this.listPeersResolvers, msgReqId, peers);\n return;\n }\n // ── Topics (v0.2.0) ──\n if (msg.type === \"topic_created\") {\n const r = (msg.topic ?? {}) as { id: string; name: string };\n this.resolveFromMap(this.topicCreatedResolvers, msgReqId, {\n id: r.id,\n name: r.name,\n created: !!msg.created,\n });\n return;\n }\n if (msg.type === \"topic_list_response\") {\n this.resolveFromMap(this.topicListResolvers, msgReqId, (msg.topics as any[]) ?? []);\n return;\n }\n if (msg.type === \"topic_members_response\") {\n this.resolveFromMap(this.topicMembersResolvers, msgReqId, (msg.members as any[]) ?? []);\n return;\n }\n if (msg.type === \"topic_history_response\") {\n this.resolveFromMap(this.topicHistoryResolvers, msgReqId, (msg.messages as any[]) ?? []);\n return;\n }\n if (msg.type === \"apikey_created\") {\n this.resolveFromMap(this.apiKeyCreatedResolvers, msgReqId, {\n id: String(msg.id ?? \"\"),\n secret: String(msg.secret ?? \"\"),\n label: String(msg.label ?? \"\"),\n prefix: String(msg.prefix ?? \"\"),\n capabilities: (msg.capabilities as any[]) ?? [],\n topicScopes: (msg.topicScopes as string[] | null) ?? null,\n createdAt: String(msg.createdAt ?? \"\"),\n });\n return;\n }\n if (msg.type === \"apikey_list_response\") {\n this.resolveFromMap(this.apiKeyListResolvers, msgReqId, (msg.keys as any[]) ?? []);\n return;\n }\n if (msg.type === \"apikey_revoke_response\") {\n const status = String(msg.status ?? \"\");\n if (status === \"revoked\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: true as const,\n id: String(msg.id ?? \"\"),\n });\n } else if (status === \"not_found\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: false as const,\n code: \"not_found\",\n message: \"no api key matches that id in this mesh\",\n });\n } else if (status === \"not_unique\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: false as const,\n code: \"not_unique\",\n message: `prefix matches ${Number(msg.matches ?? 0)} keys; use the full id`,\n });\n }\n return;\n }\n if (msg.type === \"push\") {\n this._statsCounters.messagesIn++;\n const nonce = String(msg.nonce ?? \"\");\n const ciphertext = String(msg.ciphertext ?? \"\");\n const senderPubkey = String(msg.senderPubkey ?? \"\");\n // Serialize through pushChain so decrypt+enqueue preserves arrival\n // order. Previously each inbound push ran in an independent async\n // task and fast decrypts could overtake slow ones.\n this.pushChain = this.pushChain.then(async (): Promise<void> => {\n // System messages (peer_joined, watch_triggered, mcp_deployed, etc.)\n // have senderPubkey=\"system\" with empty nonce/ciphertext — skip decryption.\n const isSystem = msg.subtype === \"system\" || senderPubkey === \"system\";\n const kind: InboundPush[\"kind\"] = isSystem\n ? \"broadcast\"\n : senderPubkey\n ? \"direct\"\n : \"unknown\";\n let plaintext: string | null = null;\n if (isSystem) {\n // Format system event as readable plaintext\n const event = msg.event ? String(msg.event) : \"system\";\n const data = msg.eventData as Record<string, unknown> | undefined;\n if (event === \"watch_triggered\" && data) {\n plaintext = `[WATCH] ${data.label ?? data.url}: ${data.oldValue} → ${data.newValue}`;\n } else if (event === \"mcp_deployed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" deployed (${data.tool_count} tools) by ${data.deployed_by}`;\n } else if (event === \"mcp_undeployed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" undeployed by ${data.by}`;\n } else if (event === \"mcp_scope_changed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" scope changed to ${JSON.stringify(data.scope)} by ${data.by}`;\n } else if (event === \"peer_joined\" && data) {\n plaintext = `[MESH] ${data.displayName ?? \"peer\"} joined`;\n } else if (event === \"peer_left\" && data) {\n plaintext = `[MESH] ${data.displayName ?? \"peer\"} left`;\n } else if (data) {\n plaintext = `[${event}] ${JSON.stringify(data)}`;\n } else {\n plaintext = `[${event}]`;\n }\n } else if (senderPubkey && nonce && ciphertext) {\n // Try the session secret first (per-connection ephemeral key), then\n // fall back to the mesh member secret (stable identity). Senders\n // may encrypt to either our session pubkey OR our member pubkey\n // depending on how the target was resolved; we must match both.\n const envelope = { nonce, ciphertext };\n if (this.sessionSecretKey) {\n plaintext = await decryptDirect(envelope, senderPubkey, this.sessionSecretKey);\n }\n if (plaintext === null) {\n plaintext = await decryptDirect(envelope, senderPubkey, this.mesh.secretKey);\n }\n }\n // Legacy/broadcast path: no senderPubkey means the message\n // was not crypto_box'd, so base64 UTF-8 unwrap is correct.\n // For direct messages (senderPubkey present) we MUST NOT\n // base64-decode the ciphertext on decrypt failure — that\n // produces garbage binary that surfaces as garbled bytes\n // to Claude. Leave plaintext=null and let consumers emit\n // a clear \"failed to decrypt\" warning.\n if (plaintext === null && ciphertext && !senderPubkey) {\n try {\n plaintext = Buffer.from(ciphertext, \"base64\").toString(\"utf-8\");\n } catch {\n plaintext = null;\n }\n }\n // Only attempt base64 fallback for non-direct messages (broadcasts, channels).\n // Direct messages (senderPubkey present) that fail to decrypt MUST stay null\n // to avoid surfacing garbled ciphertext as readable text.\n if (plaintext === null && ciphertext && !senderPubkey) {\n try {\n const decoded = Buffer.from(ciphertext, \"base64\").toString(\"utf-8\");\n if (/^[\\x20-\\x7E\\s\\u00A0-\\uFFFF]*$/.test(decoded) && decoded.length > 0) {\n plaintext = decoded;\n }\n } catch {\n plaintext = null;\n }\n }\n const push: InboundPush = {\n messageId: String(msg.messageId ?? \"\"),\n meshId: String(msg.meshId ?? \"\"),\n senderPubkey,\n priority: (msg.priority as Priority) ?? \"next\",\n nonce,\n ciphertext,\n createdAt: String(msg.createdAt ?? \"\"),\n receivedAt: new Date().toISOString(),\n plaintext,\n kind,\n ...(msg.subtype ? { subtype: msg.subtype as \"reminder\" | \"system\" } : {}),\n ...(msg.event ? { event: String(msg.event) } : {}),\n ...(msg.eventData ? { eventData: msg.eventData as Record<string, unknown> } : {}),\n };\n this.pushBuffer.push(push);\n while (this.pushBuffer.length > 500) this.pushBuffer.shift();\n if (push.plaintext && push.plaintext.length > 1_000_000) {\n push.plaintext = push.plaintext.slice(0, 1_000_000) + \"\\n[truncated — message exceeded 1MB]\";\n }\n for (const h of this.pushHandlers) {\n try {\n h(push);\n } catch {\n /* handler errors are not the transport's problem */\n }\n }\n }).catch((e) => {\n this.debug(`push handler chain error: ${e instanceof Error ? e.message : e}`);\n });\n return;\n }\n if (msg.type === \"state_result\") {\n // DEPENDENCY: The broker must NOT send state_result for set_state\n // operations (only for get_state). If the broker sends state_result for\n // both, it would be consumed here by the next pending get_state resolver,\n // returning the wrong value (cross-contamination). The broker's set_state\n // handler was fixed to omit state_result; only get_state sends it.\n if (msg.key) {\n this.resolveFromMap(this.stateResolvers, msgReqId, {\n key: String(msg.key),\n value: msg.value,\n updatedBy: String(msg.updatedBy ?? \"\"),\n updatedAt: String(msg.updatedAt ?? \"\"),\n });\n } else {\n this.resolveFromMap(this.stateResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"state_list\") {\n const entries = (msg.entries as Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.stateListResolvers, msgReqId, entries);\n return;\n }\n if (msg.type === \"state_change\") {\n const change = {\n key: String(msg.key ?? \"\"),\n value: msg.value,\n updatedBy: String(msg.updatedBy ?? \"\"),\n };\n for (const h of this.stateChangeHandlers) {\n try { h(change); } catch { /* handler errors are not the transport's problem */ }\n }\n return;\n }\n if (msg.type === \"memory_stored\") {\n this.resolveFromMap(this.memoryStoreResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"memory_results\") {\n const memories = (msg.memories as Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>) ?? [];\n this.resolveFromMap(this.memoryRecallResolvers, msgReqId, memories);\n return;\n }\n if (msg.type === \"message_status_result\") {\n this.resolveFromMap(this.messageStatusResolvers, msgReqId, msg as any);\n return;\n }\n if (msg.type === \"file_url\") {\n if (msg.url) {\n this.resolveFromMap(this.fileUrlResolvers, msgReqId, {\n url: String(msg.url),\n name: String(msg.name ?? \"\"),\n encrypted: msg.encrypted ? true : undefined,\n sealedKey: msg.sealedKey ? String(msg.sealedKey) : undefined,\n });\n } else {\n this.resolveFromMap(this.fileUrlResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"file_list\") {\n const files = (msg.files as Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>) ?? [];\n this.resolveFromMap(this.fileListResolvers, msgReqId, files);\n return;\n }\n if (msg.type === \"file_status_result\") {\n const accesses = (msg.accesses as Array<{ peerName: string; accessedAt: string }>) ?? [];\n this.resolveFromMap(this.fileStatusResolvers, msgReqId, accesses);\n return;\n }\n if (msg.type === \"grant_file_access_ok\") {\n this.resolveFromMap(this.grantFileAccessResolvers, msgReqId, true);\n return;\n }\n if (msg.type === \"vector_stored\") {\n this.resolveFromMap(this.vectorStoredResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"vector_results\") {\n const results = (msg.results as Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>) ?? [];\n this.resolveFromMap(this.vectorResultsResolvers, msgReqId, results);\n return;\n }\n if (msg.type === \"collection_list\") {\n const collections = (msg.collections as string[]) ?? [];\n this.resolveFromMap(this.collectionListResolvers, msgReqId, collections);\n return;\n }\n if (msg.type === \"graph_result\") {\n // Broker sends { type: \"graph_result\", records: [...] }\n const rows = (msg.records as Array<Record<string, unknown>>) ?? [];\n this.resolveFromMap(this.graphResultResolvers, msgReqId, rows);\n return;\n }\n if (msg.type === \"context_list\") {\n const contexts = (msg.contexts as Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.contextListResolvers, msgReqId, contexts);\n return;\n }\n if (msg.type === \"context_results\") {\n const contexts = (msg.contexts as Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.contextResultsResolvers, msgReqId, contexts);\n return;\n }\n if (msg.type === \"task_created\") {\n this.resolveFromMap(this.taskCreatedResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"task_list\") {\n const tasks = (msg.tasks as Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>) ?? [];\n this.resolveFromMap(this.taskListResolvers, msgReqId, tasks);\n return;\n }\n if (msg.type === \"mesh_query_result\") {\n if (msg.columns) {\n this.resolveFromMap(this.meshQueryResolvers, msgReqId, {\n columns: (msg.columns as string[]) ?? [],\n rows: (msg.rows as Array<Record<string, unknown>>) ?? [],\n rowCount: (msg.rowCount as number) ?? 0,\n });\n } else {\n this.resolveFromMap(this.meshQueryResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"mesh_schema_result\") {\n const tables = (msg.tables as Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>) ?? [];\n this.resolveFromMap(this.meshSchemaResolvers, msgReqId, tables);\n return;\n }\n if (msg.type === \"stream_created\") {\n this.resolveFromMap(this.streamCreatedResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"stream_list\") {\n const streams = (msg.streams as Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>) ?? [];\n this.resolveFromMap(this.streamListResolvers, msgReqId, streams);\n return;\n }\n if (msg.type === \"stream_data\") {\n const evt = {\n stream: String(msg.stream ?? \"\"),\n data: msg.data,\n publishedBy: String(msg.publishedBy ?? \"\"),\n };\n for (const h of this.streamDataHandlers) {\n try { h(evt); } catch { /* handler errors are not the transport's problem */ }\n }\n return;\n }\n if (msg.type === \"clock_status\") {\n this.resolveFromMap(this.clockStatusResolvers, msgReqId, {\n speed: Number(msg.speed ?? 0),\n paused: Boolean(msg.paused),\n tick: Number(msg.tick ?? 0),\n simTime: String(msg.simTime ?? \"\"),\n startedAt: String(msg.startedAt ?? \"\"),\n });\n return;\n }\n if (msg.type === \"mesh_info_result\") {\n this.resolveFromMap(this.meshInfoResolvers, msgReqId, msg as Record<string, unknown>);\n return;\n }\n if (msg.type === \"skill_ack\") {\n this.resolveFromMap(this.skillAckResolvers, msgReqId, { name: String(msg.name ?? \"\"), action: String(msg.action ?? \"\") });\n return;\n }\n if (msg.type === \"skill_data\") {\n const skill = msg.skill as { name: string; description: string; instructions: string; tags: string[]; author: string; createdAt: string } | null;\n this.resolveFromMap(this.skillDataResolvers, msgReqId, skill ?? null);\n return;\n }\n if (msg.type === \"skill_list\") {\n const skills = (msg.skills as Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>) ?? [];\n this.resolveFromMap(this.skillListResolvers, msgReqId, skills);\n return;\n }\n if (msg.type === \"scheduled_ack\") {\n this.resolveFromMap(this.scheduledAckResolvers, msgReqId, {\n scheduledId: String(msg.scheduledId ?? \"\"),\n deliverAt: Number(msg.deliverAt ?? 0),\n ...(msg.cron ? { cron: String(msg.cron) } : {}),\n });\n return;\n }\n if (msg.type === \"scheduled_list\") {\n const messages = (msg.messages as Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>) ?? [];\n this.resolveFromMap(this.scheduledListResolvers, msgReqId, messages);\n return;\n }\n if (msg.type === \"cancel_scheduled_ack\") {\n this.resolveFromMap(this.cancelScheduledResolvers, msgReqId, Boolean(msg.ok));\n return;\n }\n if (msg.type === \"mcp_register_ack\") {\n this.resolveFromMap(this.mcpRegisterResolvers, msgReqId, {\n serverName: String(msg.serverName ?? \"\"),\n toolCount: Number(msg.toolCount ?? 0),\n });\n return;\n }\n if (msg.type === \"mcp_list_result\") {\n const servers = (msg.servers as Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>) ?? [];\n this.resolveFromMap(this.mcpListResolvers, msgReqId, servers);\n return;\n }\n if (msg.type === \"mcp_call_result\") {\n this.resolveFromMap(this.mcpCallResolvers, msgReqId, {\n ...(msg.result !== undefined ? { result: msg.result } : {}),\n ...(msg.error ? { error: String(msg.error) } : {}),\n });\n return;\n }\n if (msg.type === \"mcp_call_forward\") {\n const forward = {\n callId: String(msg.callId ?? \"\"),\n serverName: String(msg.serverName ?? \"\"),\n toolName: String(msg.toolName ?? \"\"),\n args: (msg.args as Record<string, unknown>) ?? {},\n callerName: String(msg.callerName ?? \"\"),\n };\n if (this.mcpCallForwardHandler) {\n this.mcpCallForwardHandler(forward)\n .then((res) => this.sendMcpCallResponse(forward.callId, res.result, res.error))\n .catch((e) => this.sendMcpCallResponse(forward.callId, undefined, e instanceof Error ? e.message : String(e)));\n } else {\n this.sendMcpCallResponse(forward.callId, undefined, \"No MCP call handler registered on this peer\");\n }\n return;\n }\n // --- Peer file sharing handlers ---\n if (msg.type === \"peer_file_request_forward\") {\n void this.handlePeerFileRequest(msg as { requesterPubkey: string; filePath: string; _reqId?: string });\n return;\n }\n if (msg.type === \"peer_file_response_forward\") {\n this.resolveFromMap(this.peerFileResponseResolvers, msgReqId, {\n content: msg.content ? String(msg.content) : undefined,\n error: msg.error ? String(msg.error) : undefined,\n });\n return;\n }\n if (msg.type === \"peer_dir_request_forward\") {\n void this.handlePeerDirRequest(msg as { requesterPubkey: string; dirPath: string; pattern?: string; _reqId?: string });\n return;\n }\n if (msg.type === \"peer_dir_response_forward\") {\n this.resolveFromMap(this.peerDirResponseResolvers, msgReqId, {\n entries: (msg.entries as string[] | undefined) ?? undefined,\n error: msg.error ? String(msg.error) : undefined,\n });\n return;\n }\n if (msg.type === \"webhook_ack\") {\n this.resolveFromMap(this.webhookAckResolvers, msgReqId, {\n name: String(msg.name ?? \"\"),\n url: String(msg.url ?? \"\"),\n secret: String(msg.secret ?? \"\"),\n });\n return;\n }\n if (msg.type === \"webhook_list\") {\n const webhooks = (msg.webhooks as Array<{ name: string; url: string; active: boolean; createdAt: string }>) ?? [];\n this.resolveFromMap(this.webhookListResolvers, msgReqId, webhooks);\n return;\n }\n if (msg.type === \"vault_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultAckResolvers.has(reqId)) {\n const r = this.vaultAckResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultAckResolvers.delete(reqId);\n r.resolve(msg.action !== \"not_found\");\n }\n }\n if (msg.type === \"vault_list_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultListResolvers.has(reqId)) {\n const r = this.vaultListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultListResolvers.delete(reqId);\n r.resolve((msg as any).entries ?? []);\n }\n }\n if (msg.type === \"vault_get_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultListResolvers.has(reqId)) {\n const r = this.vaultListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultListResolvers.delete(reqId);\n r.resolve((msg as any).entries ?? []);\n }\n }\n if (msg.type === \"mcp_deploy_status\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpDeployResolvers.has(reqId)) {\n const r = this.mcpDeployResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpDeployResolvers.delete(reqId);\n r.resolve({ status: (msg as any).status, tools: (msg as any).tools, error: (msg as any).error });\n }\n }\n if (msg.type === \"mcp_logs_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpLogsResolvers.has(reqId)) {\n const r = this.mcpLogsResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpLogsResolvers.delete(reqId);\n r.resolve((msg as any).lines ?? []);\n }\n }\n if (msg.type === \"mcp_schema_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpSchemaServiceResolvers.has(reqId)) {\n const r = this.mcpSchemaServiceResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpSchemaServiceResolvers.delete(reqId);\n r.resolve((msg as any).tools ?? []);\n }\n }\n if (msg.type === \"mcp_catalog_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpCatalogResolvers.has(reqId)) {\n const r = this.mcpCatalogResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpCatalogResolvers.delete(reqId);\n r.resolve((msg as any).services ?? []);\n }\n }\n if (msg.type === \"mcp_scope_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpScopeResolvers.has(reqId)) {\n const r = this.mcpScopeResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpScopeResolvers.delete(reqId);\n r.resolve({ scope: (msg as any).scope, deployed_by: (msg as any).deployed_by });\n }\n }\n if (msg.type === \"skill_deploy_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.skillDeployResolvers.has(reqId)) {\n const r = this.skillDeployResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.skillDeployResolvers.delete(reqId);\n r.resolve({ name: (msg as any).name, files: (msg as any).files ?? [] });\n }\n }\n if (msg.type === \"watch_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.watchAckResolvers.has(reqId)) {\n const r = this.watchAckResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.watchAckResolvers.delete(reqId);\n r.resolve(msg);\n }\n }\n if (msg.type === \"watch_list_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.watchListResolvers.has(reqId)) {\n const r = this.watchListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.watchListResolvers.delete(reqId);\n r.resolve((msg as any).watches ?? []);\n }\n }\n if (msg.type === \"error\") {\n this.debug(`broker error: ${msg.code} ${msg.message}`);\n // Terminal errors from hello — broker will close us next. Capture\n // so the caller (launch/peers/etc.) can surface a friendly message.\n if (msg.code === \"revoked\") {\n this.terminalClose = { code: 4002, reason: String(msg.message ?? \"revoked\") };\n }\n const id = msg.id ? String(msg.id) : null;\n let handledByPendingSend = false;\n if (id) {\n const pending = this.pendingSends.get(id);\n if (pending) {\n pending.resolve({\n ok: false,\n error: `${msg.code}: ${msg.message}`,\n });\n this.pendingSends.delete(id);\n handledByPendingSend = true;\n }\n }\n if (!handledByPendingSend) {\n // Best-effort: unblock the first waiting resolver so callers don't\n // hang for 5s. We don't know which tool triggered the error, so we\n // pop the first non-empty resolver map in priority order.\n const allMaps: Array<[Map<string, { resolve: (v: any) => void; timer: NodeJS.Timeout }>, unknown]> = [\n [this.stateResolvers, null],\n [this.stateListResolvers, []],\n [this.memoryStoreResolvers, null],\n [this.memoryRecallResolvers, []],\n [this.fileUrlResolvers, null],\n [this.fileListResolvers, []],\n [this.fileStatusResolvers, []],\n [this.graphResultResolvers, []],\n [this.vectorStoredResolvers, null],\n [this.vectorResultsResolvers, []],\n [this.taskListResolvers, []],\n [this.meshQueryResolvers, null],\n [this.contextResultsResolvers, []],\n [this.contextListResolvers, []],\n [this.streamListResolvers, []],\n [this.scheduledAckResolvers, null],\n [this.scheduledListResolvers, []],\n [this.cancelScheduledResolvers, false],\n [this.messageStatusResolvers, null],\n [this.grantFileAccessResolvers, false],\n [this.collectionListResolvers, []],\n [this.meshSchemaResolvers, []],\n [this.taskCreatedResolvers, null],\n [this.streamCreatedResolvers, null],\n [this.listPeersResolvers, []],\n [this.meshInfoResolvers, null],\n [this.clockStatusResolvers, null],\n [this.mcpRegisterResolvers, null],\n [this.mcpListResolvers, []],\n [this.mcpCallResolvers, { error: \"broker error\" }],\n [this.skillAckResolvers, null],\n [this.skillDataResolvers, null],\n [this.skillListResolvers, []],\n [this.peerFileResponseResolvers, { error: \"broker error\" }],\n [this.peerDirResponseResolvers, { error: \"broker error\" }],\n [this.webhookAckResolvers, null],\n [this.webhookListResolvers, []],\n [this.vaultAckResolvers, false],\n [this.vaultListResolvers, []],\n [this.mcpDeployResolvers, { status: \"error\" }],\n [this.mcpLogsResolvers, []],\n [this.mcpSchemaServiceResolvers, []],\n [this.mcpCatalogResolvers, []],\n [this.mcpScopeResolvers, { scope: { type: \"peer\" }, deployed_by: \"unknown\" }],\n [this.skillDeployResolvers, { name: \"unknown\", files: [] }],\n ];\n for (const [map, defaultVal] of allMaps) {\n const first = (map as Map<string, any>).entries().next().value as [string, { resolve: (v: unknown) => void; timer: NodeJS.Timeout }] | undefined;\n if (first) {\n (map as Map<string, any>).delete(first[0]);\n clearTimeout(first[1].timer);\n first[1].resolve(defaultVal);\n break; // only pop one\n }\n }\n }\n }\n }\n\n private flushOutbound(): void {\n const queued = this.outbound.slice();\n this.outbound.length = 0;\n for (const send of queued) send();\n }\n\n private scheduleReconnect(): void {\n // Guard: if a reconnect is already scheduled don't pile on another\n // timer — stacked close events used to schedule multiple concurrent\n // reconnects which caused reconnect storms against the broker.\n if (this.reconnectTimer) {\n this.debug(\"reconnect already scheduled — skipping\");\n return;\n }\n this.setConnStatus(\"reconnecting\");\n const base =\n BACKOFF_CAPS[Math.min(this.reconnectAttempt, BACKOFF_CAPS.length - 1)]!;\n // Full jitter: uniform [0, base]. Prevents thundering herd when the\n // broker restarts and every client reconnects on the same tick.\n const delay = Math.floor(Math.random() * base);\n this.reconnectAttempt += 1;\n this.debug(\n `reconnect in ${delay}ms (attempt ${this.reconnectAttempt}, base ${base}ms)`,\n );\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = null;\n if (this.closed) return;\n this.connect().catch((e) => {\n this.debug(`reconnect failed: ${e instanceof Error ? e.message : e}`);\n });\n }, delay);\n }\n\n private setConnStatus(s: ConnStatus): void {\n if (this._status === s) return;\n this._status = s;\n this.opts.onStatusChange?.(s);\n }\n\n private debug(msg: string): void {\n if (this.opts.debug) console.error(`[broker-client] ${msg}`);\n }\n}\n\nfunction randomId(): string {\n return randomBytes(8).toString(\"hex\");\n}\n\nfunction randomNonce(): string {\n // 24-byte nonce layout (compatible with libsodium crypto_secretbox later)\n return randomBytes(24).toString(\"base64\");\n}\n",
|
|
40
|
+
"/**\n * BrokerClient — WebSocket client connecting a CLI session to a claudemesh\n * broker. Handles:\n * - hello handshake + ack\n * - send / ack / push message flow\n * - auto-reconnect with exponential backoff (1s, 2s, 4s, ..., max 30s)\n * - in-memory outbound queue while reconnecting\n * - push buffer so the MCP check_messages tool can drain inbound history\n *\n * Encryption is deferred to Step 18 (libsodium). Until then, ciphertext\n * is plaintext UTF-8, nonce is a random 24-byte base64 string (for\n * future-compat layout only).\n */\n\nimport WebSocket from \"ws\";\nimport { randomBytes } from \"node:crypto\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\nimport {\n decryptDirect,\n encryptDirect,\n isDirectTarget,\n} from \"~/services/crypto/facade.js\";\nimport { signHello } from \"./hello-sig.js\";\nimport { generateKeypair } from \"~/services/crypto/facade.js\";\n\n/**\n * Detect the Claude Code session ID from the filesystem.\n * Fallback for when CLAUDEMESH_SESSION_ID env var isn't set\n * (e.g., claude --resume without going through claudemesh launch).\n *\n * Scans ~/.claude/projects/<project-hash>/ for the most recently\n * modified .jsonl file and extracts its sessionId.\n */\nfunction detectClaudeSessionId(): string | null {\n try {\n const { readdirSync, statSync, readFileSync } = require(\"node:fs\");\n const { join } = require(\"node:path\");\n const { homedir } = require(\"node:os\");\n const cwd = process.cwd();\n // Claude Code hashes the project path for the directory name\n const projectsDir = join(homedir(), \".claude\", \"projects\");\n // Find matching project dir — the hash includes the full path with dashes\n const cwdHash = cwd.replace(/\\//g, \"-\");\n const entries = readdirSync(projectsDir) as string[];\n const projectDir = entries.find((e: string) => e === cwdHash || e.startsWith(cwdHash));\n if (!projectDir) return null;\n\n const fullDir = join(projectsDir, projectDir);\n const jsonls = (readdirSync(fullDir) as string[])\n .filter((f: string) => f.endsWith(\".jsonl\"))\n .map((f: string) => ({ name: f, mtime: statSync(join(fullDir, f)).mtimeMs }))\n .sort((a: any, b: any) => b.mtime - a.mtime);\n\n if (jsonls.length === 0) return null;\n const latest = jsonls[0]!;\n // Session ID is the filename without .jsonl\n return latest.name.replace(\".jsonl\", \"\");\n } catch {\n return null;\n }\n}\n\nexport type Priority = \"now\" | \"next\" | \"low\";\nexport type ConnStatus = \"connecting\" | \"open\" | \"closed\" | \"reconnecting\";\n\nexport interface PeerInfo {\n /** Routing key — session pubkey if present, otherwise member pubkey. */\n pubkey: string;\n /** Stable member pubkey (mesh.member.peer_pubkey). Preferred for grants,\n * safety numbers, audit, and anything that needs identity stability\n * across reconnects. */\n memberPubkey?: string;\n displayName: string;\n status: string;\n summary: string | null;\n groups: Array<{ name: string; role?: string }>;\n sessionId: string;\n connectedAt: string;\n cwd?: string;\n hostname?: string;\n peerType?: \"ai\" | \"human\" | \"connector\";\n channel?: string;\n model?: string;\n stats?: {\n messagesIn?: number;\n messagesOut?: number;\n toolCalls?: number;\n uptime?: number;\n errors?: number;\n };\n visible?: boolean;\n profile?: {\n avatar?: string;\n title?: string;\n bio?: string;\n capabilities?: string[];\n };\n}\n\nexport interface InboundPush {\n messageId: string;\n meshId: string;\n /** Sender's *session* pubkey — ephemeral. Rotates on session restart.\n * Used by crypto_box_open to verify the seal. Prefer the member\n * pubkey for replies. */\n senderPubkey: string;\n /** Sender's *member* pubkey — stable. Use as the reply target. */\n senderMemberPubkey?: string;\n /** Stable mesh.member id of the sender — preferred id for replies. */\n senderMemberId?: string;\n /** Sender's current display name (a join from the broker). */\n senderName?: string;\n /** Topic name when the push originated from a topic post (vs DM). */\n topic?: string;\n /** Server-side id of the parent message when this push is a reply. */\n replyToId?: string;\n priority: Priority;\n nonce: string;\n ciphertext: string;\n createdAt: string;\n receivedAt: string;\n /** Decrypted plaintext (if encryption succeeded). null = broadcast\n * or channel (no per-recipient crypto yet), or decryption failed. */\n plaintext: string | null;\n /** Hint for UI: \"direct\" (crypto_box), \"channel\"/\"broadcast\"\n * (plaintext for now). */\n kind: \"direct\" | \"broadcast\" | \"channel\" | \"unknown\";\n /** Optional semantic tag — \"reminder\" when fired by the scheduler,\n * \"system\" for broker-originated topology events. */\n subtype?: \"reminder\" | \"system\";\n /** Machine-readable event name (e.g. \"peer_joined\", \"peer_left\"). */\n event?: string;\n /** Structured payload for the event. */\n eventData?: Record<string, unknown>;\n}\n\ntype PushHandler = (msg: InboundPush) => void;\n\ninterface PendingSend {\n id: string;\n targetSpec: string;\n priority: Priority;\n nonce: string;\n ciphertext: string;\n resolve: (v: { ok: boolean; messageId?: string; error?: string }) => void;\n}\n\nconst MAX_QUEUED = 100;\nconst HELLO_ACK_TIMEOUT_MS = 5_000;\nconst BACKOFF_CAPS = [1_000, 2_000, 4_000, 8_000, 16_000, 30_000];\n\nexport class BrokerClient {\n private ws: WebSocket | null = null;\n private _status: ConnStatus = \"closed\";\n private pendingSends = new Map<string, PendingSend>();\n private outbound: Array<() => void> = []; // closures that send once ws is open\n private pushHandlers = new Set<PushHandler>();\n private pushBuffer: InboundPush[] = [];\n /**\n * Serialization chain for inbound push handling. Each incoming push\n * appends to this promise so decrypt+enqueue happens in arrival order.\n * Without it, a fast decrypt could land in pushBuffer before a slow\n * earlier one — observable as reordered messages to consumers.\n */\n private pushChain: Promise<void> = Promise.resolve();\n private listPeersResolvers = new Map<string, { resolve: (peers: PeerInfo[]) => void; timer: NodeJS.Timeout }>();\n private stateResolvers = new Map<string, { resolve: (result: { key: string; value: unknown; updatedBy: string; updatedAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private stateListResolvers = new Map<string, { resolve: (entries: Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private memoryStoreResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private memoryRecallResolvers = new Map<string, { resolve: (memories: Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private stateChangeHandlers = new Set<(change: { key: string; value: unknown; updatedBy: string }) => void>();\n private sessionPubkey: string | null = null;\n private sessionSecretKey: string | null = null;\n private grantFileAccessResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private peerFileResponseResolvers = new Map<string, { resolve: (result: { content?: string; error?: string }) => void; timer: NodeJS.Timeout }>();\n private peerDirResponseResolvers = new Map<string, { resolve: (result: { entries?: string[]; error?: string }) => void; timer: NodeJS.Timeout }>();\n // ── Topics (v0.2.0) ──\n private topicCreatedResolvers = new Map<string, { resolve: (r: { id: string; name: string; created: boolean } | null) => void; timer: NodeJS.Timeout }>();\n private topicListResolvers = new Map<string, { resolve: (topics: Array<{ id: string; name: string; description: string | null; visibility: \"public\" | \"private\" | \"dm\"; memberCount: number; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n private topicMembersResolvers = new Map<string, { resolve: (members: Array<{ memberId: string; pubkey: string; displayName: string; role: \"lead\" | \"member\" | \"observer\"; joinedAt: string; lastReadAt: string | null }>) => void; timer: NodeJS.Timeout }>();\n private topicHistoryResolvers = new Map<string, { resolve: (messages: Array<{ id: string; senderPubkey: string; nonce: string; ciphertext: string; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n // ── API keys (v0.2.0) ──\n private apiKeyCreatedResolvers = new Map<string, { resolve: (r: { id: string; secret: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private apiKeyListResolvers = new Map<string, { resolve: (keys: Array<{ id: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string; lastUsedAt: string | null; revokedAt: string | null; expiresAt: string | null }>) => void; timer: NodeJS.Timeout }>();\n private apiKeyRevokeResolvers = new Map<string, { resolve: (r: { ok: true; id: string } | { ok: false; code: string; message: string }) => void; timer: NodeJS.Timeout }>();\n /** Directories from which this peer serves files. Default: [process.cwd()]. */\n private sharedDirs: string[] = [process.cwd()];\n private _serviceCatalog: Array<{ name: string; description: string; status: string; tools: Array<{ name: string; description: string; inputSchema: object }>; deployed_by: string }> = [];\n get serviceCatalog() { return this._serviceCatalog; }\n private closed = false;\n /** Non-null when the broker closed us with a terminal code (4001/4002). */\n public terminalClose: { code: number; reason: string } | null = null;\n private reconnectAttempt = 0;\n private helloTimer: NodeJS.Timeout | null = null;\n private reconnectTimer: NodeJS.Timeout | null = null;\n\n // --- Stats counters ---\n private _statsCounters = {\n messagesIn: 0,\n messagesOut: 0,\n toolCalls: 0,\n errors: 0,\n };\n private _sessionStartedAt = Date.now();\n private _statsReportTimer: NodeJS.Timeout | null = null;\n\n constructor(\n private mesh: JoinedMesh,\n private opts: {\n onStatusChange?: (status: ConnStatus) => void;\n displayName?: string;\n debug?: boolean;\n /** Suppress informational stderr logs like \"session restored\". Default false. */\n quiet?: boolean;\n } = {},\n ) {}\n\n get status(): ConnStatus {\n return this._status;\n }\n get meshId(): string {\n return this.mesh.meshId;\n }\n get meshSlug(): string {\n return this.mesh.slug;\n }\n get brokerUrl(): string {\n return this.mesh.brokerUrl;\n }\n get pushHistory(): readonly InboundPush[] {\n return this.pushBuffer;\n }\n\n /** Session public key hex (null before first connection). */\n getSessionPubkey(): string | null { return this.sessionPubkey; }\n /** Session secret key hex (null before first connection). */\n getSessionSecretKey(): string | null { return this.sessionSecretKey; }\n /** Mesh member public key hex (stable across sessions). */\n getMeshPubkey(): string { return this.mesh.pubkey; }\n /** Mesh member secret key hex (stable across sessions). */\n getMeshSecretKey(): string { return this.mesh.secretKey; }\n\n private makeReqId(): string {\n return randomBytes(8).toString(\"hex\") + Date.now().toString(36);\n }\n\n /** Open WS, send hello, resolve when hello_ack received. */\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"client is closed\");\n if (this._status === \"connecting\" || this._status === \"open\") return;\n this.setConnStatus(\"connecting\");\n const ws = new WebSocket(this.mesh.brokerUrl);\n this.ws = ws;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = async (): Promise<void> => {\n this.debug(\"ws open → generating session keypair + signing hello\");\n try {\n // Only generate session keypair on first connect, not reconnects\n if (!this.sessionPubkey) {\n const sessionKP = await generateKeypair();\n this.sessionPubkey = sessionKP.publicKey;\n this.sessionSecretKey = sessionKP.secretKey;\n }\n\n const { timestamp, signature } = await signHello(\n this.mesh.meshId,\n this.mesh.memberId,\n this.mesh.pubkey,\n this.mesh.secretKey,\n );\n ws.send(\n JSON.stringify({\n type: \"hello\",\n meshId: this.mesh.meshId,\n memberId: this.mesh.memberId,\n pubkey: this.mesh.pubkey,\n sessionPubkey: this.sessionPubkey,\n displayName: process.env.CLAUDEMESH_DISPLAY_NAME || this.opts.displayName || undefined,\n sessionId: process.env.CLAUDEMESH_SESSION_ID || detectClaudeSessionId() || `${process.pid}-${Date.now()}`,\n pid: process.pid,\n cwd: process.cwd(),\n hostname: require(\"os\").hostname(),\n peerType: \"ai\" as const,\n channel: \"claude-code\",\n model: process.env.CLAUDE_MODEL || undefined,\n timestamp,\n signature,\n }),\n );\n } catch (e) {\n reject(\n new Error(\n `hello sign failed: ${e instanceof Error ? e.message : e}`,\n ),\n );\n return;\n }\n // Arm the hello_ack timeout.\n this.helloTimer = setTimeout(() => {\n this.debug(\"hello_ack timeout\");\n ws.close();\n reject(new Error(\"hello_ack timeout\"));\n }, HELLO_ACK_TIMEOUT_MS);\n };\n\n const onMessage = (raw: WebSocket.RawData): void => {\n let msg: Record<string, unknown>;\n try {\n msg = JSON.parse(raw.toString()) as Record<string, unknown>;\n } catch {\n return;\n }\n if (msg.type === \"hello_ack\") {\n if (this.helloTimer) clearTimeout(this.helloTimer);\n this.helloTimer = null;\n this.setConnStatus(\"open\");\n this.reconnectAttempt = 0;\n this.flushOutbound();\n this.startStatsReporting();\n // Restore cumulative stats from a previous session if available.\n if (msg.restored) {\n const groups = msg.restoredGroups\n ? (msg.restoredGroups as Array<{ name: string; role?: string }>).map((g) => g.role ? `@${g.name}:${g.role}` : `@${g.name}`).join(\", \")\n : \"none\";\n if (!this.opts.quiet) {\n process.stderr.write(\n `[claudemesh] session restored — last seen ${msg.lastSeenAt ?? \"unknown\"}, groups: ${groups}\\n`,\n );\n }\n if (msg.restoredStats) {\n const rs = msg.restoredStats as { messagesIn: number; messagesOut: number; toolCalls: number; errors: number };\n this._statsCounters.messagesIn = rs.messagesIn ?? 0;\n this._statsCounters.messagesOut = rs.messagesOut ?? 0;\n this._statsCounters.toolCalls = rs.toolCalls ?? 0;\n this._statsCounters.errors = rs.errors ?? 0;\n }\n }\n if ((msg as any).services) {\n this._serviceCatalog = (msg as any).services;\n }\n resolve();\n return;\n }\n this.handleServerMessage(msg);\n };\n\n const onClose = (code?: number, reasonBuf?: Buffer): void => {\n if (this.helloTimer) clearTimeout(this.helloTimer);\n this.helloTimer = null;\n if (this.ws === ws) this.ws = null;\n const reason = reasonBuf?.toString(\"utf-8\") ?? \"\";\n // Terminal close codes — broker told us to stay gone.\n // 4001 = kicked (session ended, user must manually rejoin)\n // 4002 = banned (member revoked, cannot rejoin until unbanned)\n if (code === 4001 || code === 4002) {\n this.closed = true;\n this.setConnStatus(\"closed\");\n this.terminalClose = { code, reason };\n if (this._status !== \"open\") {\n reject(new Error(`ws terminal close ${code}: ${reason || \"session ended\"}`));\n }\n return;\n }\n if (this._status !== \"open\" && this._status !== \"reconnecting\") {\n reject(new Error(\"ws closed before hello_ack\"));\n }\n if (!this.closed) this.scheduleReconnect();\n else this.setConnStatus(\"closed\");\n };\n\n const onError = (err: Error): void => {\n this.debug(`ws error: ${err.message}`);\n };\n\n ws.on(\"open\", onOpen);\n ws.on(\"message\", onMessage);\n ws.on(\"close\", onClose);\n ws.on(\"error\", onError);\n });\n }\n\n /** Fire-and-wait send: resolves when broker acks. */\n async send(\n targetSpec: string,\n message: string,\n priority: Priority = \"next\",\n ): Promise<{ ok: boolean; messageId?: string; error?: string }> {\n const id = randomId();\n // Direct messages get crypto_box encryption; broadcasts + channels\n // still pass through as base64 plaintext until channel crypto lands.\n let nonce: string;\n let ciphertext: string;\n if (isDirectTarget(targetSpec)) {\n const env = await encryptDirect(\n message,\n targetSpec,\n this.sessionSecretKey ?? this.mesh.secretKey,\n );\n nonce = env.nonce;\n ciphertext = env.ciphertext;\n } else {\n nonce = randomNonce();\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n }\n\n this._statsCounters.messagesOut++;\n\n return new Promise((resolve) => {\n if (this.pendingSends.size >= MAX_QUEUED) {\n resolve({ ok: false, error: \"outbound queue full\" });\n return;\n }\n this.pendingSends.set(id, {\n id,\n targetSpec,\n priority,\n nonce,\n ciphertext,\n resolve,\n });\n const dispatch = (): void => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(\n JSON.stringify({\n type: \"send\",\n id,\n targetSpec,\n priority,\n nonce,\n ciphertext,\n }),\n );\n };\n if (this._status === \"open\") dispatch();\n else {\n // Queue the dispatch closure; flushed on (re)connect.\n if (this.outbound.length >= MAX_QUEUED) {\n this.pendingSends.delete(id);\n resolve({ ok: false, error: \"outbound queue full\" });\n return;\n }\n this.outbound.push(dispatch);\n }\n // Ack timeout: 10s to hear back.\n setTimeout(() => {\n if (this.pendingSends.has(id)) {\n this.pendingSends.delete(id);\n resolve({ ok: false, error: \"ack timeout\" });\n }\n }, 10_000);\n });\n }\n\n /** Subscribe to inbound pushes. Returns an unsubscribe function. */\n onPush(handler: PushHandler): () => void {\n this.pushHandlers.add(handler);\n return () => this.pushHandlers.delete(handler);\n }\n\n /** Drain the buffered push history (used by check_messages tool). */\n drainPushBuffer(): InboundPush[] {\n const drained = this.pushBuffer.slice();\n this.pushBuffer.length = 0;\n return drained;\n }\n\n /** Send a manual status override. Fire-and-forget (no ack). */\n async setStatus(status: \"idle\" | \"working\" | \"dnd\"): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_status\", status }));\n }\n\n /** Toggle visibility in the mesh. Hidden peers don't appear in list_peers and skip broadcasts. */\n async setVisible(visible: boolean): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_visible\", visible }));\n }\n\n /** Set public profile metadata visible to other peers. */\n async setProfile(profile: { avatar?: string; title?: string; bio?: string; capabilities?: string[] }): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_profile\", ...profile }));\n }\n\n /** Request the list of connected peers from the broker. */\n async listPeers(): Promise<PeerInfo[]> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.listPeersResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.listPeersResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_peers\", _reqId: reqId }));\n });\n }\n\n /** Update this session's summary visible to other peers. */\n async setSummary(summary: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_summary\", summary }));\n }\n\n /** Report resource usage stats to the broker. */\n setStats(stats?: Record<string, number>): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n const payload = stats ?? {\n ...this._statsCounters,\n uptime: Math.round((Date.now() - this._sessionStartedAt) / 1000),\n };\n this.ws.send(JSON.stringify({ type: \"set_stats\", stats: payload }));\n }\n\n /** Increment the tool call counter. */\n incrementToolCalls(): void {\n this._statsCounters.toolCalls++;\n }\n\n /** Increment the error counter. */\n incrementErrors(): void {\n this._statsCounters.errors++;\n }\n\n /** Start auto-reporting stats every 60 seconds. */\n startStatsReporting(): void {\n if (this._statsReportTimer) return;\n this._statsReportTimer = setInterval(() => {\n this.setStats();\n }, 60_000);\n }\n\n /** Stop auto-reporting stats. */\n stopStatsReporting(): void {\n if (this._statsReportTimer) {\n clearInterval(this._statsReportTimer);\n this._statsReportTimer = null;\n }\n }\n\n /** Join a group with an optional role. */\n async joinGroup(name: string, role?: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"join_group\", name, role }));\n }\n\n /** Leave a group. */\n async leaveGroup(name: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"leave_group\", name }));\n }\n\n // --- Topics (v0.2.0) ---\n // Conversation-scope primitive within a mesh. Spec:\n // .artifacts/specs/2026-05-02-v0.2.0-scope.md\n\n async topicCreate(args: {\n name: string;\n description?: string;\n visibility?: \"public\" | \"private\" | \"dm\";\n }): Promise<{ id: string; name: string; created: boolean } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicCreatedResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_create\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async topicList(): Promise<\n Array<{\n id: string;\n name: string;\n description: string | null;\n visibility: \"public\" | \"private\" | \"dm\";\n memberCount: number;\n createdAt: string;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicListResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicListResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"topic_list\", _reqId: reqId }));\n });\n }\n\n async topicJoin(topic: string, role?: \"lead\" | \"member\" | \"observer\"): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_join\", topic, role }));\n }\n\n async topicLeave(topic: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_leave\", topic }));\n }\n\n async topicMembers(topic: string): Promise<\n Array<{\n memberId: string;\n pubkey: string;\n displayName: string;\n role: \"lead\" | \"member\" | \"observer\";\n joinedAt: string;\n lastReadAt: string | null;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicMembersResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicMembersResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_members\", _reqId: reqId, topic }),\n );\n });\n }\n\n async topicHistory(args: {\n topic: string;\n limit?: number;\n beforeId?: string;\n }): Promise<\n Array<{\n id: string;\n senderPubkey: string;\n nonce: string;\n ciphertext: string;\n createdAt: string;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.topicHistoryResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.topicHistoryResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"topic_history\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async topicMarkRead(topic: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"topic_mark_read\", topic }));\n }\n\n // --- API keys (v0.2.0) ---\n\n async apiKeyCreate(args: {\n label: string;\n capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">;\n topicScopes?: string[];\n expiresAt?: string;\n }): Promise<{ id: string; secret: string; label: string; prefix: string; capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">; topicScopes: string[] | null; createdAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyCreatedResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000),\n });\n this.ws!.send(\n JSON.stringify({ type: \"apikey_create\", _reqId: reqId, ...args }),\n );\n });\n }\n\n async apiKeyList(): Promise<\n Array<{\n id: string;\n label: string;\n prefix: string;\n capabilities: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">;\n topicScopes: string[] | null;\n createdAt: string;\n lastUsedAt: string | null;\n revokedAt: string | null;\n expiresAt: string | null;\n }>\n > {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyListResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyListResolvers.delete(reqId)) resolve([]);\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"apikey_list\", _reqId: reqId }));\n });\n }\n\n async apiKeyRevoke(id: string): Promise<{ ok: true; id: string } | { ok: false; code: string; message: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) {\n return { ok: false, code: \"not_connected\", message: \"broker not connected\" };\n }\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.apiKeyRevokeResolvers.set(reqId, {\n resolve,\n timer: setTimeout(() => {\n if (this.apiKeyRevokeResolvers.delete(reqId)) {\n resolve({ ok: false, code: \"timeout\", message: \"broker did not respond within 5s\" });\n }\n }, 5_000),\n });\n this.ws!.send(JSON.stringify({ type: \"apikey_revoke\", id, _reqId: reqId }));\n });\n }\n\n // --- State ---\n\n /** Set a shared state value visible to all peers in the mesh. */\n async setState(key: string, value: unknown): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"set_state\", key, value }));\n }\n\n /** Read a shared state value. */\n async getState(key: string): Promise<{ key: string; value: unknown; updatedBy: string; updatedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.stateResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.stateResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_state\", key, _reqId: reqId }));\n });\n }\n\n /** List all shared state keys and values. */\n async listState(): Promise<Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.stateListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.stateListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_state\", _reqId: reqId }));\n });\n }\n\n // --- Memory ---\n\n /** Store persistent knowledge in the mesh's shared memory. */\n async remember(content: string, tags?: string[]): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.memoryStoreResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.memoryStoreResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"remember\", content, tags, _reqId: reqId }));\n });\n }\n\n /** Search the mesh's shared memory by relevance. */\n async recall(query: string): Promise<Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.memoryRecallResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.memoryRecallResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"recall\", query, _reqId: reqId }));\n });\n }\n\n /** Remove a memory from the mesh's shared knowledge. */\n async forget(memoryId: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"forget\", memoryId }));\n }\n\n // --- Scheduled messages ---\n\n /** Schedule a message for future delivery. Returns { scheduledId, deliverAt, cron? } or null on timeout. */\n async scheduleMessage(\n to: string,\n message: string,\n deliverAt: number,\n isReminder = false,\n cron?: string,\n ): Promise<{ scheduledId: string; deliverAt: number; cron?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.scheduledAckResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.scheduledAckResolvers.delete(reqId)) resolve(null);\n }, 8_000) });\n this.ws!.send(JSON.stringify({\n type: \"schedule\",\n to,\n message,\n deliverAt,\n ...(isReminder ? { subtype: \"reminder\" } : {}),\n ...(cron ? { cron, recurring: true } : {}),\n _reqId: reqId,\n }));\n });\n }\n\n /** List all pending scheduled messages for this session. */\n async listScheduled(): Promise<Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.scheduledListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.scheduledListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_scheduled\", _reqId: reqId }));\n });\n }\n\n /** Cancel a scheduled message by id. Returns true if found and cancelled. */\n async cancelScheduled(scheduledId: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.cancelScheduledResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.cancelScheduledResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"cancel_scheduled\", scheduledId, _reqId: reqId }));\n });\n }\n\n /** Check delivery status of a sent message. */\n private messageStatusResolvers = new Map<string, { resolve: (result: { messageId: string; targetSpec: string; delivered: boolean; deliveredAt: string | null; recipients: Array<{ name: string; pubkey: string; status: string }> } | null) => void; timer: NodeJS.Timeout }>();\n private fileUrlResolvers = new Map<string, { resolve: (result: { url: string; name: string; encrypted?: boolean; sealedKey?: string } | null) => void; timer: NodeJS.Timeout }>();\n private fileListResolvers = new Map<string, { resolve: (files: Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>) => void; timer: NodeJS.Timeout }>();\n private fileStatusResolvers = new Map<string, { resolve: (accesses: Array<{ peerName: string; accessedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private vectorStoredResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private vectorResultsResolvers = new Map<string, { resolve: (results: Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>) => void; timer: NodeJS.Timeout }>();\n private collectionListResolvers = new Map<string, { resolve: (collections: string[]) => void; timer: NodeJS.Timeout }>();\n private graphResultResolvers = new Map<string, { resolve: (rows: Array<Record<string, unknown>>) => void; timer: NodeJS.Timeout }>();\n private contextListResolvers = new Map<string, { resolve: (contexts: Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private contextResultsResolvers = new Map<string, { resolve: (contexts: Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>) => void; timer: NodeJS.Timeout }>();\n private taskCreatedResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private taskListResolvers = new Map<string, { resolve: (tasks: Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>) => void; timer: NodeJS.Timeout }>();\n private meshQueryResolvers = new Map<string, { resolve: (result: { columns: string[]; rows: Array<Record<string, unknown>>; rowCount: number } | null) => void; timer: NodeJS.Timeout }>();\n private meshSchemaResolvers = new Map<string, { resolve: (tables: Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>) => void; timer: NodeJS.Timeout }>();\n private streamCreatedResolvers = new Map<string, { resolve: (id: string | null) => void; timer: NodeJS.Timeout }>();\n private streamListResolvers = new Map<string, { resolve: (streams: Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>) => void; timer: NodeJS.Timeout }>();\n private streamDataHandlers = new Set<(data: { stream: string; data: unknown; publishedBy: string }) => void>();\n private scheduledAckResolvers = new Map<string, { resolve: (result: { scheduledId: string; deliverAt: number } | null) => void; timer: NodeJS.Timeout }>();\n private scheduledListResolvers = new Map<string, { resolve: (messages: Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>) => void; timer: NodeJS.Timeout }>();\n private cancelScheduledResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private mcpRegisterResolvers = new Map<string, { resolve: (result: { serverName: string; toolCount: number } | null) => void; timer: NodeJS.Timeout }>();\n private mcpListResolvers = new Map<string, { resolve: (servers: Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>) => void; timer: NodeJS.Timeout }>();\n private mcpCallResolvers = new Map<string, { resolve: (result: { result?: unknown; error?: string }) => void; timer: NodeJS.Timeout }>();\n /** Handler for inbound mcp_call_forward messages. Set by the MCP server. */\n private mcpCallForwardHandler: ((forward: { callId: string; serverName: string; toolName: string; args: Record<string, unknown>; callerName: string }) => Promise<{ result?: unknown; error?: string }>) | null = null;\n private vaultAckResolvers = new Map<string, { resolve: (ok: boolean) => void; timer: NodeJS.Timeout }>();\n private vaultListResolvers = new Map<string, { resolve: (entries: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpDeployResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private mcpLogsResolvers = new Map<string, { resolve: (lines: string[]) => void; timer: NodeJS.Timeout }>();\n private mcpSchemaServiceResolvers = new Map<string, { resolve: (tools: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpCatalogResolvers = new Map<string, { resolve: (services: any[]) => void; timer: NodeJS.Timeout }>();\n private mcpScopeResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private skillDeployResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n\n async messageStatus(messageId: string): Promise<{ messageId: string; targetSpec: string; delivered: boolean; deliveredAt: string | null; recipients: Array<{ name: string; pubkey: string; status: string }> } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.messageStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.messageStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"message_status\", messageId, _reqId: reqId }));\n });\n }\n\n // --- Files ---\n\n /** Get a download URL for a shared file. */\n async getFile(fileId: string): Promise<{ url: string; name: string; encrypted?: boolean; sealedKey?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileUrlResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileUrlResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_file\", fileId, _reqId: reqId }));\n });\n }\n\n /** List files shared in the mesh. */\n async listFiles(query?: string, from?: string): Promise<Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_files\", query, from, _reqId: reqId }));\n });\n }\n\n /** Check who has accessed a shared file. */\n async fileStatus(fileId: string): Promise<Array<{ peerName: string; accessedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.fileStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.fileStatusResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"file_status\", fileId, _reqId: reqId }));\n });\n }\n\n /** Delete a shared file from the mesh. */\n async deleteFile(fileId: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"delete_file\", fileId }));\n }\n\n /** Upload a file to the broker via HTTP POST. Returns file ID. */\n async uploadFile(filePath: string, meshId: string, memberId: string, opts: {\n name?: string; tags?: string[]; persistent?: boolean; targetSpec?: string;\n encrypted?: boolean; ownerPubkey?: string; fileKeys?: Array<{ peerPubkey: string; sealedKey: string }>;\n }): Promise<string> {\n const { readFileSync } = await import(\"node:fs\");\n const { basename } = await import(\"node:path\");\n const data = readFileSync(filePath);\n const fileName = opts.name ?? basename(filePath);\n\n // Convert WS broker URL to HTTP\n const brokerHttp = this.mesh.brokerUrl\n .replace(\"wss://\", \"https://\")\n .replace(\"ws://\", \"http://\")\n .replace(\"/ws\", \"\");\n\n const res = await fetch(`${brokerHttp}/upload`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n \"X-Mesh-Id\": meshId,\n \"X-Member-Id\": memberId,\n \"X-File-Name\": fileName,\n \"X-Tags\": JSON.stringify(opts.tags ?? []),\n \"X-Persistent\": String(opts.persistent ?? true),\n \"X-Target-Spec\": opts.targetSpec ?? \"\",\n ...(opts.encrypted ? { \"X-Encrypted\": \"true\" } : {}),\n ...(opts.ownerPubkey ? { \"X-Owner-Pubkey\": opts.ownerPubkey } : {}),\n ...(opts.fileKeys?.length ? { \"X-File-Keys\": JSON.stringify(opts.fileKeys) } : {}),\n },\n body: data,\n signal: AbortSignal.timeout(30_000),\n });\n const body = await res.json() as { ok?: boolean; fileId?: string; error?: string };\n if (!res.ok || !body.fileId) {\n throw new Error(body.error ?? `HTTP ${res.status}`);\n }\n return body.fileId;\n }\n\n /** Grant a peer access to an encrypted file (owner only). */\n async grantFileAccess(fileId: string, peerPubkey: string, sealedKey: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.grantFileAccessResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.grantFileAccessResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"grant_file_access\", fileId, peerPubkey, sealedKey, _reqId: reqId }));\n });\n }\n\n // --- Vectors ---\n\n /** Store an embedding in a per-mesh Qdrant collection. */\n async vectorStore(collection: string, text: string, metadata?: Record<string, unknown>): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.vectorStoredResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.vectorStoredResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"vector_store\", collection, text, metadata, _reqId: reqId }));\n });\n }\n\n /** Semantic search over stored embeddings. */\n async vectorSearch(collection: string, query: string, limit?: number): Promise<Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.vectorResultsResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.vectorResultsResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"vector_search\", collection, query, limit, _reqId: reqId }));\n });\n }\n\n /** Remove an embedding from a collection. */\n async vectorDelete(collection: string, id: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"vector_delete\", collection, id }));\n }\n\n /** List vector collections in this mesh. */\n async listCollections(): Promise<string[]> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.collectionListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.collectionListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_collections\", _reqId: reqId }));\n });\n }\n\n // --- Graph ---\n\n /** Run a read query on the per-mesh Neo4j database. */\n async graphQuery(cypher: string): Promise<Array<Record<string, unknown>>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.graphResultResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.graphResultResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"graph_query\", cypher, _reqId: reqId }));\n });\n }\n\n /** Run a write query (CREATE, MERGE, DELETE) on the per-mesh Neo4j database. */\n async graphExecute(cypher: string): Promise<Array<Record<string, unknown>>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.graphResultResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.graphResultResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"graph_execute\", cypher, _reqId: reqId }));\n });\n }\n\n // --- Context ---\n\n /** Share session understanding with the mesh. */\n async shareContext(summary: string, filesRead?: string[], keyFindings?: string[], tags?: string[]): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"share_context\", summary, filesRead, keyFindings, tags }));\n }\n\n /** Find context from peers who explored an area. */\n async getContext(query: string): Promise<Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.contextResultsResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.contextResultsResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_context\", query, _reqId: reqId }));\n });\n }\n\n /** See what all peers currently know. */\n async listContexts(): Promise<Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.contextListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.contextListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_contexts\", _reqId: reqId }));\n });\n }\n\n // --- Tasks ---\n\n /** Create a work item. */\n async createTask(title: string, assignee?: string, priority?: string, tags?: string[]): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.taskCreatedResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.taskCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_task\", title, assignee, priority, tags, _reqId: reqId }));\n });\n }\n\n /** Claim an unclaimed task. */\n async claimTask(id: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"claim_task\", taskId: id }));\n }\n\n /** Mark a task done with optional result. */\n async completeTask(id: string, result?: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"complete_task\", taskId: id, result }));\n }\n\n /** List tasks filtered by status/assignee. */\n async listTasks(status?: string, assignee?: string): Promise<Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.taskListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.taskListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_tasks\", status, assignee, _reqId: reqId }));\n });\n }\n\n // --- Mesh Database ---\n\n /** Run a SELECT query on the per-mesh shared database. */\n async meshQuery(sql: string): Promise<{ columns: string[]; rows: Array<Record<string, unknown>>; rowCount: number } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshQueryResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshQueryResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_query\", sql, _reqId: reqId }));\n });\n }\n\n /** Run DDL/DML on the per-mesh database (CREATE TABLE, INSERT, UPDATE, DELETE). */\n async meshExecute(sql: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mesh_execute\", sql }));\n }\n\n /** List tables and columns in the per-mesh shared database. */\n async meshSchema(): Promise<Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshSchemaResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshSchemaResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_schema\", _reqId: reqId }));\n });\n }\n\n // --- Streams ---\n\n /** Create a real-time data stream in the mesh. */\n async createStream(name: string): Promise<string | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.streamCreatedResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.streamCreatedResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_stream\", name, _reqId: reqId }));\n });\n }\n\n /** Push data to a stream. Subscribers receive it in real-time. */\n async publish(stream: string, data: unknown): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"publish\", stream, data }));\n }\n\n /** Subscribe to a stream. Data pushes arrive via onStreamData handler. */\n async subscribe(stream: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"subscribe\", stream }));\n }\n\n /** Unsubscribe from a stream. */\n async unsubscribe(stream: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"unsubscribe\", stream }));\n }\n\n /** List active streams in the mesh. */\n async listStreams(): Promise<Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.streamListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.streamListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_streams\", _reqId: reqId }));\n });\n }\n\n /** Subscribe to stream data pushes. Returns an unsubscribe function. */\n onStreamData(handler: (data: { stream: string; data: unknown; publishedBy: string }) => void): () => void {\n this.streamDataHandlers.add(handler);\n return () => this.streamDataHandlers.delete(handler);\n }\n\n /** Subscribe to state change notifications. Returns an unsubscribe function. */\n onStateChange(handler: (change: { key: string; value: unknown; updatedBy: string }) => void): () => void {\n this.stateChangeHandlers.add(handler);\n return () => this.stateChangeHandlers.delete(handler);\n }\n\n // --- MCP proxy ---\n\n /** Register an MCP server with the mesh. */\n async mcpRegister(\n serverName: string,\n description: string,\n tools: Array<{ name: string; description: string; inputSchema: Record<string, unknown> }>,\n persistent?: boolean,\n ): Promise<{ serverName: string; toolCount: number } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpRegisterResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpRegisterResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_register\", serverName, description, tools, ...(persistent ? { persistent: true } : {}), _reqId: reqId }));\n });\n }\n\n /** Unregister an MCP server from the mesh. */\n async mcpUnregister(serverName: string): Promise<void> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mcp_unregister\", serverName }));\n }\n\n /** List MCP servers available in the mesh. */\n async mcpList(): Promise<Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_list\", _reqId: reqId }));\n });\n }\n\n /** Call a tool on a mesh-registered MCP server. 30s timeout. */\n async mcpCall(serverName: string, toolName: string, args: Record<string, unknown>): Promise<{ result?: unknown; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.mcpCallResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.mcpCallResolvers.delete(reqId)) resolve({ error: \"MCP call timed out (30s)\" });\n }, 30_000) });\n this.ws!.send(JSON.stringify({ type: \"mcp_call\", serverName, toolName, args, _reqId: reqId }));\n });\n }\n\n /** Set the handler for inbound forwarded MCP calls. */\n onMcpCallForward(handler: (forward: { callId: string; serverName: string; toolName: string; args: Record<string, unknown>; callerName: string }) => Promise<{ result?: unknown; error?: string }>): void {\n this.mcpCallForwardHandler = handler;\n }\n\n /** Send a response to a forwarded MCP call back to the broker. */\n private sendMcpCallResponse(callId: string, result?: unknown, error?: string): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({ type: \"mcp_call_response\", callId, result, error }));\n }\n\n // --- Mesh info ---\n private meshInfoResolvers = new Map<string, { resolve: (result: Record<string, unknown> | null) => void; timer: NodeJS.Timeout }>();\n private clockStatusResolvers = new Map<string, { resolve: (result: { speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null) => void; timer: NodeJS.Timeout }>();\n\n /** Set the simulation clock speed. Returns clock status. */\n async setClock(speed: number): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"set_clock\", speed, _reqId: reqId }));\n });\n }\n\n /** Pause the simulation clock. Returns clock status. */\n async pauseClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"pause_clock\", _reqId: reqId }));\n });\n }\n\n /** Resume the simulation clock. Returns clock status. */\n async resumeClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"resume_clock\", _reqId: reqId }));\n });\n }\n\n /** Get current simulation clock status. */\n async getClock(): Promise<{ speed: number; paused: boolean; tick: number; simTime: string; startedAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.clockStatusResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.clockStatusResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_clock\", _reqId: reqId }));\n });\n }\n\n async meshInfo(): Promise<Record<string, unknown> | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.meshInfoResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.meshInfoResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"mesh_info\", _reqId: reqId }));\n });\n }\n\n // --- Skills ---\n private skillAckResolvers = new Map<string, { resolve: (result: { name: string; action: string } | null) => void; timer: NodeJS.Timeout }>();\n private skillDataResolvers = new Map<string, { resolve: (skill: { name: string; description: string; instructions: string; tags: string[]; author: string; manifest?: unknown; createdAt: string } | null) => void; timer: NodeJS.Timeout }>();\n private skillListResolvers = new Map<string, { resolve: (skills: Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n\n /** Publish a reusable skill to the mesh. */\n async shareSkill(name: string, description: string, instructions: string, tags?: string[], manifest?: Record<string, unknown>): Promise<{ ok: boolean; action?: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillAckResolvers.set(reqId, { resolve: (result) => {\n resolve(result ? { ok: true, action: result.action } : null);\n }, timer: setTimeout(() => {\n if (this.skillAckResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"share_skill\", name, description, instructions, tags, manifest, _reqId: reqId }));\n });\n }\n\n /** Load a skill's full instructions by name. */\n async getSkill(name: string): Promise<{ name: string; description: string; instructions: string; tags: string[]; author: string; manifest?: unknown; createdAt: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillDataResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.skillDataResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"get_skill\", name, _reqId: reqId }));\n });\n }\n\n /** Browse available skills in the mesh. */\n async listSkills(query?: string): Promise<Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.skillListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_skills\", query, _reqId: reqId }));\n });\n }\n\n /** Remove a skill you published. */\n async removeSkill(name: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.skillAckResolvers.set(reqId, { resolve: (result) => {\n resolve(result?.action === \"removed\");\n }, timer: setTimeout(() => {\n if (this.skillAckResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"remove_skill\", name, _reqId: reqId }));\n });\n }\n\n // --- Webhooks ---\n private webhookAckResolvers = new Map<string, { resolve: (result: { name: string; url: string; secret: string } | null) => void; timer: NodeJS.Timeout }>();\n private webhookListResolvers = new Map<string, { resolve: (webhooks: Array<{ name: string; url: string; active: boolean; createdAt: string }>) => void; timer: NodeJS.Timeout }>();\n\n /** Create an inbound webhook. Returns the URL and secret. */\n async createWebhook(name: string): Promise<{ name: string; url: string; secret: string } | null> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return null;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookAckResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.webhookAckResolvers.delete(reqId)) resolve(null);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"create_webhook\", name, _reqId: reqId }));\n });\n }\n\n /** List active webhooks for this mesh. */\n async listWebhooks(): Promise<Array<{ name: string; url: string; active: boolean; createdAt: string }>> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return [];\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookListResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.webhookListResolvers.delete(reqId)) resolve([]);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"list_webhooks\", _reqId: reqId }));\n });\n }\n\n /** Deactivate a webhook by name. */\n async deleteWebhook(name: string): Promise<boolean> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return false;\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.webhookAckResolvers.set(reqId, { resolve: () => resolve(true), timer: setTimeout(() => {\n if (this.webhookAckResolvers.delete(reqId)) resolve(false);\n }, 5_000) });\n this.ws!.send(JSON.stringify({ type: \"delete_webhook\", name, _reqId: reqId }));\n });\n }\n\n // --- Peer file sharing ---\n\n /** Set the directories this peer shares. Default: [cwd]. */\n setSharedDirs(dirs: string[]): void {\n this.sharedDirs = dirs.map(d => {\n const { resolve } = require(\"node:path\");\n return resolve(d);\n });\n }\n\n /** Request a file from another peer's local filesystem. Returns base64 content or error. */\n async requestFile(targetPubkey: string, filePath: string): Promise<{ content?: string; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.peerFileResponseResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.peerFileResponseResolvers.delete(reqId)) resolve({ error: \"timeout waiting for peer response\" });\n }, 15_000) });\n this.ws!.send(JSON.stringify({ type: \"peer_file_request\", targetPubkey, filePath, _reqId: reqId }));\n });\n }\n\n /** Request a directory listing from another peer. */\n async requestDir(targetPubkey: string, dirPath: string, pattern?: string): Promise<{ entries?: string[]; error?: string }> {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return { error: \"not connected\" };\n return new Promise((resolve) => {\n const reqId = this.makeReqId();\n this.peerDirResponseResolvers.set(reqId, { resolve, timer: setTimeout(() => {\n if (this.peerDirResponseResolvers.delete(reqId)) resolve({ error: \"timeout waiting for peer response\" });\n }, 15_000) });\n this.ws!.send(JSON.stringify({ type: \"peer_dir_request\", targetPubkey, dirPath, ...(pattern ? { pattern } : {}), _reqId: reqId }));\n });\n }\n\n // --- Vault ---\n\n async vaultSet(key: string, ciphertext: string, nonce: string, sealedKey: string, entryType: \"env\" | \"file\", mountPath?: string, description?: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `vset_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;\n const timer = setTimeout(() => { this.vaultAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.vaultAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_set\", key, ciphertext, nonce, sealed_key: sealedKey, entry_type: entryType, mount_path: mountPath, description, _reqId: reqId } as any);\n });\n }\n\n async vaultList(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `vlist_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.vaultListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_list\", _reqId: reqId } as any);\n });\n }\n\n async vaultDelete(key: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `vdel_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.vaultAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_delete\", key, _reqId: reqId } as any);\n });\n }\n\n async vaultGet(keys: string[]): Promise<Array<{ key: string; ciphertext: string; nonce: string; sealed_key: string; entry_type: string; mount_path?: string }>> {\n return new Promise(resolve => {\n const reqId = `vget_${Date.now()}`;\n const timer = setTimeout(() => { this.vaultListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.vaultListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"vault_get\", keys, _reqId: reqId } as any);\n });\n }\n\n // --- MCP Deploy ---\n\n async mcpDeploy(serverName: string, source: any, config?: any, scope?: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `deploy_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve({ status: \"timeout\" }); }, 60_000);\n this.mcpDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_deploy\", server_name: serverName, source, config, scope, _reqId: reqId } as any);\n });\n }\n\n async mcpUndeploy(serverName: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `undeploy_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve(false); }, 10_000);\n this.mcpDeployResolvers.set(reqId, { resolve: (r: any) => resolve(r.status === \"stopped\"), timer });\n this.sendRaw({ type: \"mcp_undeploy\", server_name: serverName, _reqId: reqId } as any);\n });\n }\n\n async mcpUpdate(serverName: string): Promise<any> {\n return new Promise(resolve => {\n const reqId = `update_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpDeployResolvers.delete(reqId); resolve({ status: \"timeout\" }); }, 60_000);\n this.mcpDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_update\", server_name: serverName, _reqId: reqId } as any);\n });\n }\n\n async mcpLogs(serverName: string, lines?: number): Promise<string[]> {\n return new Promise(resolve => {\n const reqId = `logs_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpLogsResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpLogsResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_logs\", server_name: serverName, lines, _reqId: reqId } as any);\n });\n }\n\n async mcpScope(serverName: string, scope?: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `scope_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpScopeResolvers.delete(reqId); resolve({ scope: { type: \"peer\" }, deployed_by: \"unknown\" }); }, 10_000);\n this.mcpScopeResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_scope\", server_name: serverName, scope, _reqId: reqId } as any);\n });\n }\n\n async mcpServiceSchema(serverName: string, toolName?: string): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `schema_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpSchemaServiceResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpSchemaServiceResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_schema\", server_name: serverName, tool_name: toolName, _reqId: reqId } as any);\n });\n }\n\n async mcpCatalog(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `catalog_${Date.now()}`;\n const timer = setTimeout(() => { this.mcpCatalogResolvers.delete(reqId); resolve([]); }, 10_000);\n this.mcpCatalogResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"mcp_catalog\", _reqId: reqId } as any);\n });\n }\n\n // --- Skill Deploy ---\n\n async skillDeploy(source: any): Promise<any> {\n return new Promise(resolve => {\n const reqId = `skilldeploy_${Date.now()}`;\n const timer = setTimeout(() => { this.skillDeployResolvers.delete(reqId); resolve({ name: \"unknown\", files: [] }); }, 30_000);\n this.skillDeployResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"skill_deploy\", source, _reqId: reqId } as any);\n });\n }\n\n // --- URL Watch ---\n\n private watchAckResolvers = new Map<string, { resolve: (result: any) => void; timer: NodeJS.Timeout }>();\n private watchListResolvers = new Map<string, { resolve: (watches: any[]) => void; timer: NodeJS.Timeout }>();\n\n async watch(url: string, opts?: { mode?: string; extract?: string; interval?: number; notify_on?: string; headers?: Record<string, string>; label?: string }): Promise<any> {\n return new Promise(resolve => {\n const reqId = `watch_${Date.now()}`;\n const timer = setTimeout(() => { this.watchAckResolvers.delete(reqId); resolve({ error: \"timeout\" }); }, 10_000);\n this.watchAckResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"watch\", url, ...opts, _reqId: reqId } as any);\n });\n }\n\n async unwatch(watchId: string): Promise<boolean> {\n return new Promise(resolve => {\n const reqId = `unwatch_${Date.now()}`;\n const timer = setTimeout(() => { this.watchAckResolvers.delete(reqId); resolve(false); }, 10_000);\n this.watchAckResolvers.set(reqId, { resolve: () => resolve(true), timer });\n this.sendRaw({ type: \"unwatch\", watchId, _reqId: reqId } as any);\n });\n }\n\n async watchList(): Promise<any[]> {\n return new Promise(resolve => {\n const reqId = `watchlist_${Date.now()}`;\n const timer = setTimeout(() => { this.watchListResolvers.delete(reqId); resolve([]); }, 10_000);\n this.watchListResolvers.set(reqId, { resolve, timer });\n this.sendRaw({ type: \"watch_list\", _reqId: reqId } as any);\n });\n }\n\n async getServiceTools(serviceName: string): Promise<any[]> {\n // Check cached catalog first\n const cached = this._serviceCatalog.find(s => s.name === serviceName);\n if (cached?.tools?.length) return cached.tools;\n // Fall back to schema query\n return this.mcpServiceSchema(serviceName);\n }\n\n /** Send a raw JSON frame to the broker (fire-and-forget). */\n private sendRaw(payload: Record<string, unknown>): void {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify(payload));\n }\n\n /**\n * Public request-response: sends a raw message with a generated _reqId\n * and resolves when the broker responds with any message containing the\n * same _reqId. Used by kick/ban/unban/bans CLI commands.\n */\n async sendAndWait<T = Record<string, unknown>>(payload: Record<string, unknown>, timeoutMs = 10_000): Promise<T> {\n const reqId = `rw-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n this.genericResolvers.delete(reqId);\n reject(new Error(\"sendAndWait timeout\"));\n }, timeoutMs);\n this.genericResolvers.set(reqId, (msg) => {\n clearTimeout(timer);\n this.genericResolvers.delete(reqId);\n resolve(msg as T);\n });\n this.sendRaw({ ...payload, _reqId: reqId });\n });\n }\n private genericResolvers = new Map<string, (msg: Record<string, unknown>) => void>();\n\n close(): void {\n this.closed = true;\n this.stopStatsReporting();\n if (this.helloTimer) clearTimeout(this.helloTimer);\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n if (this.ws) {\n try {\n this.ws.close();\n } catch {\n /* ignore */\n }\n }\n this.setConnStatus(\"closed\");\n }\n\n // --- Peer file request handlers (serving local files to remote peers) ---\n\n private static readonly MAX_FILE_SIZE = 1_048_576; // 1MB\n\n /** Handle an inbound file request from another peer (forwarded by broker). */\n private async handlePeerFileRequest(msg: { requesterPubkey: string; filePath: string; _reqId?: string }): Promise<void> {\n const { resolve, join, normalize } = await import(\"node:path\");\n const { readFileSync, statSync, realpathSync } = await import(\"node:fs\");\n\n const reqId = msg._reqId;\n const sendResponse = (content?: string, error?: string) => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({\n type: \"peer_file_response\",\n requesterPubkey: msg.requesterPubkey,\n filePath: msg.filePath,\n ...(content !== undefined ? { content } : {}),\n ...(error ? { error } : {}),\n ...(reqId ? { _reqId: reqId } : {}),\n }));\n };\n\n // Security: validate input + reject path traversal\n if (!msg.filePath || typeof msg.filePath !== \"string\" || msg.filePath.length > 4096) {\n sendResponse(undefined, \"invalid file path\");\n return;\n }\n if (msg.filePath.includes(\"..\")) {\n sendResponse(undefined, \"path traversal not allowed\");\n return;\n }\n\n // Resolve against shared directories, following symlinks\n let resolvedPath: string | null = null;\n for (const dir of this.sharedDirs) {\n const candidate = resolve(join(dir, msg.filePath));\n let realCandidate: string;\n let realDir: string;\n try {\n realCandidate = realpathSync(candidate);\n realDir = realpathSync(dir);\n } catch {\n continue;\n }\n if (realCandidate.startsWith(realDir + \"/\") || realCandidate === realDir) {\n resolvedPath = realCandidate;\n break;\n }\n }\n if (!resolvedPath) {\n sendResponse(undefined, \"file outside shared directories\");\n return;\n }\n\n try {\n const stat = statSync(resolvedPath);\n if (!stat.isFile()) {\n sendResponse(undefined, \"not a file\");\n return;\n }\n if (stat.size > BrokerClient.MAX_FILE_SIZE) {\n sendResponse(undefined, `file too large (${stat.size} bytes, max ${BrokerClient.MAX_FILE_SIZE})`);\n return;\n }\n const content = readFileSync(resolvedPath);\n sendResponse(content.toString(\"base64\"));\n } catch (e) {\n const errMsg = e instanceof Error ? e.message : String(e);\n if (errMsg.includes(\"ENOENT\")) {\n sendResponse(undefined, \"file not found\");\n } else {\n sendResponse(undefined, `read error: ${errMsg}`);\n }\n }\n }\n\n /** Handle an inbound directory listing request from another peer. */\n private async handlePeerDirRequest(msg: { requesterPubkey: string; dirPath: string; pattern?: string; _reqId?: string }): Promise<void> {\n const { resolve, join, normalize, relative } = await import(\"node:path\");\n const { readdirSync, statSync, realpathSync } = await import(\"node:fs\");\n\n const reqId = msg._reqId;\n const sendResponse = (entries?: string[], error?: string) => {\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) return;\n this.ws.send(JSON.stringify({\n type: \"peer_dir_response\",\n requesterPubkey: msg.requesterPubkey,\n dirPath: msg.dirPath,\n ...(entries ? { entries } : {}),\n ...(error ? { error } : {}),\n ...(reqId ? { _reqId: reqId } : {}),\n }));\n };\n\n const dirPath = msg.dirPath || \".\";\n\n if (typeof dirPath !== \"string\" || dirPath.length > 4096) {\n sendResponse(undefined, \"invalid directory path\");\n return;\n }\n if (dirPath.includes(\"..\")) {\n sendResponse(undefined, \"path traversal not allowed\");\n return;\n }\n\n let resolvedPath: string | null = null;\n for (const dir of this.sharedDirs) {\n const candidate = resolve(join(dir, dirPath));\n let realCandidate: string;\n let realDir: string;\n try {\n realCandidate = realpathSync(candidate);\n realDir = realpathSync(dir);\n } catch { continue; }\n if (realCandidate.startsWith(realDir + \"/\") || realCandidate === realDir) {\n resolvedPath = realCandidate;\n break;\n }\n }\n if (!resolvedPath) {\n sendResponse(undefined, \"directory outside shared directories\");\n return;\n }\n\n try {\n const stat = statSync(resolvedPath);\n if (!stat.isDirectory()) {\n sendResponse(undefined, \"not a directory\");\n return;\n }\n\n // Collect entries recursively (up to 2 levels, max 500 entries)\n const entries: string[] = [];\n const MAX_ENTRIES = 500;\n const MAX_DEPTH = 2;\n let pattern: RegExp | null = null;\n if (msg.pattern && typeof msg.pattern === \"string\" && msg.pattern.length <= 200) {\n const escaped = msg.pattern.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\\*/g, \"[^/]*\").replace(/\\?/g, \".\");\n try { pattern = new RegExp(`^${escaped}$`, \"i\"); } catch { pattern = null; }\n }\n\n const walk = (dir: string, depth: number) => {\n if (entries.length >= MAX_ENTRIES || depth > MAX_DEPTH) return;\n try {\n const items = readdirSync(dir, { withFileTypes: true });\n for (const item of items) {\n if (entries.length >= MAX_ENTRIES) break;\n if (item.name.startsWith(\".\")) continue; // skip hidden\n const relPath = relative(resolvedPath!, join(dir, item.name));\n const label = item.isDirectory() ? relPath + \"/\" : relPath;\n if (pattern && !pattern.test(item.name)) {\n // If directory, still recurse (pattern may match children)\n if (item.isDirectory()) walk(join(dir, item.name), depth + 1);\n continue;\n }\n entries.push(label);\n if (item.isDirectory()) walk(join(dir, item.name), depth + 1);\n }\n } catch { /* permission errors, etc. */ }\n };\n\n walk(resolvedPath, 0);\n sendResponse(entries.sort());\n } catch (e) {\n const errMsg = e instanceof Error ? e.message : String(e);\n if (errMsg.includes(\"ENOENT\")) {\n sendResponse(undefined, \"directory not found\");\n } else {\n sendResponse(undefined, `read error: ${errMsg}`);\n }\n }\n }\n\n // --- Internals ---\n\n private resolveFromMap<T>(\n map: Map<string, { resolve: (v: T) => void; timer: NodeJS.Timeout }>,\n reqId: string | undefined,\n value: T,\n ): boolean {\n let entry = reqId ? map.get(reqId) : undefined;\n if (!entry) {\n if (map.size > 0) {\n this.debug(\"resolveFromMap: no _reqId match, using FIFO fallback (upgrade broker to fix)\");\n }\n const first = map.entries().next().value as [string, { resolve: (v: T) => void; timer: NodeJS.Timeout }] | undefined;\n if (first) {\n entry = first[1];\n map.delete(first[0]);\n }\n } else {\n map.delete(reqId!);\n }\n if (entry) {\n clearTimeout(entry.timer);\n entry.resolve(value);\n return true;\n }\n return false;\n }\n\n private handleServerMessage(msg: Record<string, unknown>): void {\n const msgReqId = msg._reqId as string | undefined;\n\n // Generic request-response resolver (kick_ack, ban_ack, unban_ack, etc.)\n if (msgReqId && this.genericResolvers.has(msgReqId)) {\n const resolve = this.genericResolvers.get(msgReqId)!;\n resolve(msg);\n return;\n }\n\n if (msg.type === \"ack\") {\n const pending = this.pendingSends.get(String(msg.id ?? \"\"));\n if (pending) {\n const queued = msg.queued !== false;\n const errStr = typeof msg.error === \"string\" ? msg.error : undefined;\n pending.resolve(\n queued\n ? { ok: true, messageId: String(msg.messageId ?? \"\") }\n : { ok: false, error: errStr ?? \"broker rejected send\" },\n );\n this.pendingSends.delete(pending.id);\n }\n return;\n }\n if (msg.type === \"peers_list\") {\n const peers = (msg.peers as PeerInfo[]) ?? [];\n this.resolveFromMap(this.listPeersResolvers, msgReqId, peers);\n return;\n }\n // ── Topics (v0.2.0) ──\n if (msg.type === \"topic_created\") {\n const r = (msg.topic ?? {}) as { id: string; name: string };\n this.resolveFromMap(this.topicCreatedResolvers, msgReqId, {\n id: r.id,\n name: r.name,\n created: !!msg.created,\n });\n return;\n }\n if (msg.type === \"topic_list_response\") {\n this.resolveFromMap(this.topicListResolvers, msgReqId, (msg.topics as any[]) ?? []);\n return;\n }\n if (msg.type === \"topic_members_response\") {\n this.resolveFromMap(this.topicMembersResolvers, msgReqId, (msg.members as any[]) ?? []);\n return;\n }\n if (msg.type === \"topic_history_response\") {\n this.resolveFromMap(this.topicHistoryResolvers, msgReqId, (msg.messages as any[]) ?? []);\n return;\n }\n if (msg.type === \"apikey_created\") {\n this.resolveFromMap(this.apiKeyCreatedResolvers, msgReqId, {\n id: String(msg.id ?? \"\"),\n secret: String(msg.secret ?? \"\"),\n label: String(msg.label ?? \"\"),\n prefix: String(msg.prefix ?? \"\"),\n capabilities: (msg.capabilities as any[]) ?? [],\n topicScopes: (msg.topicScopes as string[] | null) ?? null,\n createdAt: String(msg.createdAt ?? \"\"),\n });\n return;\n }\n if (msg.type === \"apikey_list_response\") {\n this.resolveFromMap(this.apiKeyListResolvers, msgReqId, (msg.keys as any[]) ?? []);\n return;\n }\n if (msg.type === \"apikey_revoke_response\") {\n const status = String(msg.status ?? \"\");\n if (status === \"revoked\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: true as const,\n id: String(msg.id ?? \"\"),\n });\n } else if (status === \"not_found\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: false as const,\n code: \"not_found\",\n message: \"no api key matches that id in this mesh\",\n });\n } else if (status === \"not_unique\") {\n this.resolveFromMap(this.apiKeyRevokeResolvers, msgReqId, {\n ok: false as const,\n code: \"not_unique\",\n message: `prefix matches ${Number(msg.matches ?? 0)} keys; use the full id`,\n });\n }\n return;\n }\n if (msg.type === \"push\") {\n this._statsCounters.messagesIn++;\n const nonce = String(msg.nonce ?? \"\");\n const ciphertext = String(msg.ciphertext ?? \"\");\n const senderPubkey = String(msg.senderPubkey ?? \"\");\n // Serialize through pushChain so decrypt+enqueue preserves arrival\n // order. Previously each inbound push ran in an independent async\n // task and fast decrypts could overtake slow ones.\n this.pushChain = this.pushChain.then(async (): Promise<void> => {\n // System messages (peer_joined, watch_triggered, mcp_deployed, etc.)\n // have senderPubkey=\"system\" with empty nonce/ciphertext — skip decryption.\n const isSystem = msg.subtype === \"system\" || senderPubkey === \"system\";\n const kind: InboundPush[\"kind\"] = isSystem\n ? \"broadcast\"\n : senderPubkey\n ? \"direct\"\n : \"unknown\";\n let plaintext: string | null = null;\n if (isSystem) {\n // Format system event as readable plaintext\n const event = msg.event ? String(msg.event) : \"system\";\n const data = msg.eventData as Record<string, unknown> | undefined;\n if (event === \"watch_triggered\" && data) {\n plaintext = `[WATCH] ${data.label ?? data.url}: ${data.oldValue} → ${data.newValue}`;\n } else if (event === \"mcp_deployed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" deployed (${data.tool_count} tools) by ${data.deployed_by}`;\n } else if (event === \"mcp_undeployed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" undeployed by ${data.by}`;\n } else if (event === \"mcp_scope_changed\" && data) {\n plaintext = `[SERVICE] \"${data.name}\" scope changed to ${JSON.stringify(data.scope)} by ${data.by}`;\n } else if (event === \"peer_joined\" && data) {\n plaintext = `[MESH] ${data.displayName ?? \"peer\"} joined`;\n } else if (event === \"peer_left\" && data) {\n plaintext = `[MESH] ${data.displayName ?? \"peer\"} left`;\n } else if (data) {\n plaintext = `[${event}] ${JSON.stringify(data)}`;\n } else {\n plaintext = `[${event}]`;\n }\n } else if (senderPubkey && nonce && ciphertext) {\n // Try the session secret first (per-connection ephemeral key), then\n // fall back to the mesh member secret (stable identity). Senders\n // may encrypt to either our session pubkey OR our member pubkey\n // depending on how the target was resolved; we must match both.\n const envelope = { nonce, ciphertext };\n if (this.sessionSecretKey) {\n plaintext = await decryptDirect(envelope, senderPubkey, this.sessionSecretKey);\n }\n if (plaintext === null) {\n plaintext = await decryptDirect(envelope, senderPubkey, this.mesh.secretKey);\n }\n }\n // Legacy/broadcast path: no senderPubkey means the message\n // was not crypto_box'd, so base64 UTF-8 unwrap is correct.\n // For direct messages (senderPubkey present) we MUST NOT\n // base64-decode the ciphertext on decrypt failure — that\n // produces garbage binary that surfaces as garbled bytes\n // to Claude. Leave plaintext=null and let consumers emit\n // a clear \"failed to decrypt\" warning.\n if (plaintext === null && ciphertext && !senderPubkey) {\n try {\n plaintext = Buffer.from(ciphertext, \"base64\").toString(\"utf-8\");\n } catch {\n plaintext = null;\n }\n }\n // Only attempt base64 fallback for non-direct messages (broadcasts, channels).\n // Direct messages (senderPubkey present) that fail to decrypt MUST stay null\n // to avoid surfacing garbled ciphertext as readable text.\n if (plaintext === null && ciphertext && !senderPubkey) {\n try {\n const decoded = Buffer.from(ciphertext, \"base64\").toString(\"utf-8\");\n if (/^[\\x20-\\x7E\\s\\u00A0-\\uFFFF]*$/.test(decoded) && decoded.length > 0) {\n plaintext = decoded;\n }\n } catch {\n plaintext = null;\n }\n }\n const push: InboundPush = {\n messageId: String(msg.messageId ?? \"\"),\n meshId: String(msg.meshId ?? \"\"),\n senderPubkey,\n ...(msg.senderMemberPubkey ? { senderMemberPubkey: String(msg.senderMemberPubkey) } : {}),\n ...(msg.senderMemberId ? { senderMemberId: String(msg.senderMemberId) } : {}),\n ...(msg.senderName ? { senderName: String(msg.senderName) } : {}),\n ...(msg.topic ? { topic: String(msg.topic) } : {}),\n ...(msg.replyToId ? { replyToId: String(msg.replyToId) } : {}),\n priority: (msg.priority as Priority) ?? \"next\",\n nonce,\n ciphertext,\n createdAt: String(msg.createdAt ?? \"\"),\n receivedAt: new Date().toISOString(),\n plaintext,\n kind,\n ...(msg.subtype ? { subtype: msg.subtype as \"reminder\" | \"system\" } : {}),\n ...(msg.event ? { event: String(msg.event) } : {}),\n ...(msg.eventData ? { eventData: msg.eventData as Record<string, unknown> } : {}),\n };\n this.pushBuffer.push(push);\n while (this.pushBuffer.length > 500) this.pushBuffer.shift();\n if (push.plaintext && push.plaintext.length > 1_000_000) {\n push.plaintext = push.plaintext.slice(0, 1_000_000) + \"\\n[truncated — message exceeded 1MB]\";\n }\n for (const h of this.pushHandlers) {\n try {\n h(push);\n } catch {\n /* handler errors are not the transport's problem */\n }\n }\n }).catch((e) => {\n this.debug(`push handler chain error: ${e instanceof Error ? e.message : e}`);\n });\n return;\n }\n if (msg.type === \"state_result\") {\n // DEPENDENCY: The broker must NOT send state_result for set_state\n // operations (only for get_state). If the broker sends state_result for\n // both, it would be consumed here by the next pending get_state resolver,\n // returning the wrong value (cross-contamination). The broker's set_state\n // handler was fixed to omit state_result; only get_state sends it.\n if (msg.key) {\n this.resolveFromMap(this.stateResolvers, msgReqId, {\n key: String(msg.key),\n value: msg.value,\n updatedBy: String(msg.updatedBy ?? \"\"),\n updatedAt: String(msg.updatedAt ?? \"\"),\n });\n } else {\n this.resolveFromMap(this.stateResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"state_list\") {\n const entries = (msg.entries as Array<{ key: string; value: unknown; updatedBy: string; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.stateListResolvers, msgReqId, entries);\n return;\n }\n if (msg.type === \"state_change\") {\n const change = {\n key: String(msg.key ?? \"\"),\n value: msg.value,\n updatedBy: String(msg.updatedBy ?? \"\"),\n };\n for (const h of this.stateChangeHandlers) {\n try { h(change); } catch { /* handler errors are not the transport's problem */ }\n }\n return;\n }\n if (msg.type === \"memory_stored\") {\n this.resolveFromMap(this.memoryStoreResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"memory_results\") {\n const memories = (msg.memories as Array<{ id: string; content: string; tags: string[]; rememberedBy: string; rememberedAt: string }>) ?? [];\n this.resolveFromMap(this.memoryRecallResolvers, msgReqId, memories);\n return;\n }\n if (msg.type === \"message_status_result\") {\n this.resolveFromMap(this.messageStatusResolvers, msgReqId, msg as any);\n return;\n }\n if (msg.type === \"file_url\") {\n if (msg.url) {\n this.resolveFromMap(this.fileUrlResolvers, msgReqId, {\n url: String(msg.url),\n name: String(msg.name ?? \"\"),\n encrypted: msg.encrypted ? true : undefined,\n sealedKey: msg.sealedKey ? String(msg.sealedKey) : undefined,\n });\n } else {\n this.resolveFromMap(this.fileUrlResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"file_list\") {\n const files = (msg.files as Array<{ id: string; name: string; size: number; tags: string[]; uploadedBy: string; uploadedAt: string; persistent: boolean }>) ?? [];\n this.resolveFromMap(this.fileListResolvers, msgReqId, files);\n return;\n }\n if (msg.type === \"file_status_result\") {\n const accesses = (msg.accesses as Array<{ peerName: string; accessedAt: string }>) ?? [];\n this.resolveFromMap(this.fileStatusResolvers, msgReqId, accesses);\n return;\n }\n if (msg.type === \"grant_file_access_ok\") {\n this.resolveFromMap(this.grantFileAccessResolvers, msgReqId, true);\n return;\n }\n if (msg.type === \"vector_stored\") {\n this.resolveFromMap(this.vectorStoredResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"vector_results\") {\n const results = (msg.results as Array<{ id: string; text: string; score: number; metadata?: Record<string, unknown> }>) ?? [];\n this.resolveFromMap(this.vectorResultsResolvers, msgReqId, results);\n return;\n }\n if (msg.type === \"collection_list\") {\n const collections = (msg.collections as string[]) ?? [];\n this.resolveFromMap(this.collectionListResolvers, msgReqId, collections);\n return;\n }\n if (msg.type === \"graph_result\") {\n // Broker sends { type: \"graph_result\", records: [...] }\n const rows = (msg.records as Array<Record<string, unknown>>) ?? [];\n this.resolveFromMap(this.graphResultResolvers, msgReqId, rows);\n return;\n }\n if (msg.type === \"context_list\") {\n const contexts = (msg.contexts as Array<{ peerName: string; summary: string; tags: string[]; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.contextListResolvers, msgReqId, contexts);\n return;\n }\n if (msg.type === \"context_results\") {\n const contexts = (msg.contexts as Array<{ peerName: string; summary: string; filesRead: string[]; keyFindings: string[]; tags: string[]; updatedAt: string }>) ?? [];\n this.resolveFromMap(this.contextResultsResolvers, msgReqId, contexts);\n return;\n }\n if (msg.type === \"task_created\") {\n this.resolveFromMap(this.taskCreatedResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"task_list\") {\n const tasks = (msg.tasks as Array<{ id: string; title: string; assignee: string; status: string; priority: string; createdBy: string }>) ?? [];\n this.resolveFromMap(this.taskListResolvers, msgReqId, tasks);\n return;\n }\n if (msg.type === \"mesh_query_result\") {\n if (msg.columns) {\n this.resolveFromMap(this.meshQueryResolvers, msgReqId, {\n columns: (msg.columns as string[]) ?? [],\n rows: (msg.rows as Array<Record<string, unknown>>) ?? [],\n rowCount: (msg.rowCount as number) ?? 0,\n });\n } else {\n this.resolveFromMap(this.meshQueryResolvers, msgReqId, null);\n }\n return;\n }\n if (msg.type === \"mesh_schema_result\") {\n const tables = (msg.tables as Array<{ name: string; columns: Array<{ name: string; type: string; nullable: boolean }> }>) ?? [];\n this.resolveFromMap(this.meshSchemaResolvers, msgReqId, tables);\n return;\n }\n if (msg.type === \"stream_created\") {\n this.resolveFromMap(this.streamCreatedResolvers, msgReqId, msg.id ? String(msg.id) : null);\n return;\n }\n if (msg.type === \"stream_list\") {\n const streams = (msg.streams as Array<{ id: string; name: string; createdBy: string; subscriberCount: number }>) ?? [];\n this.resolveFromMap(this.streamListResolvers, msgReqId, streams);\n return;\n }\n if (msg.type === \"stream_data\") {\n const evt = {\n stream: String(msg.stream ?? \"\"),\n data: msg.data,\n publishedBy: String(msg.publishedBy ?? \"\"),\n };\n for (const h of this.streamDataHandlers) {\n try { h(evt); } catch { /* handler errors are not the transport's problem */ }\n }\n return;\n }\n if (msg.type === \"clock_status\") {\n this.resolveFromMap(this.clockStatusResolvers, msgReqId, {\n speed: Number(msg.speed ?? 0),\n paused: Boolean(msg.paused),\n tick: Number(msg.tick ?? 0),\n simTime: String(msg.simTime ?? \"\"),\n startedAt: String(msg.startedAt ?? \"\"),\n });\n return;\n }\n if (msg.type === \"mesh_info_result\") {\n this.resolveFromMap(this.meshInfoResolvers, msgReqId, msg as Record<string, unknown>);\n return;\n }\n if (msg.type === \"skill_ack\") {\n this.resolveFromMap(this.skillAckResolvers, msgReqId, { name: String(msg.name ?? \"\"), action: String(msg.action ?? \"\") });\n return;\n }\n if (msg.type === \"skill_data\") {\n const skill = msg.skill as { name: string; description: string; instructions: string; tags: string[]; author: string; createdAt: string } | null;\n this.resolveFromMap(this.skillDataResolvers, msgReqId, skill ?? null);\n return;\n }\n if (msg.type === \"skill_list\") {\n const skills = (msg.skills as Array<{ name: string; description: string; tags: string[]; author: string; createdAt: string }>) ?? [];\n this.resolveFromMap(this.skillListResolvers, msgReqId, skills);\n return;\n }\n if (msg.type === \"scheduled_ack\") {\n this.resolveFromMap(this.scheduledAckResolvers, msgReqId, {\n scheduledId: String(msg.scheduledId ?? \"\"),\n deliverAt: Number(msg.deliverAt ?? 0),\n ...(msg.cron ? { cron: String(msg.cron) } : {}),\n });\n return;\n }\n if (msg.type === \"scheduled_list\") {\n const messages = (msg.messages as Array<{ id: string; to: string; message: string; deliverAt: number; createdAt: number }>) ?? [];\n this.resolveFromMap(this.scheduledListResolvers, msgReqId, messages);\n return;\n }\n if (msg.type === \"cancel_scheduled_ack\") {\n this.resolveFromMap(this.cancelScheduledResolvers, msgReqId, Boolean(msg.ok));\n return;\n }\n if (msg.type === \"mcp_register_ack\") {\n this.resolveFromMap(this.mcpRegisterResolvers, msgReqId, {\n serverName: String(msg.serverName ?? \"\"),\n toolCount: Number(msg.toolCount ?? 0),\n });\n return;\n }\n if (msg.type === \"mcp_list_result\") {\n const servers = (msg.servers as Array<{ name: string; description: string; hostedBy: string; tools: Array<{ name: string; description: string }> }>) ?? [];\n this.resolveFromMap(this.mcpListResolvers, msgReqId, servers);\n return;\n }\n if (msg.type === \"mcp_call_result\") {\n this.resolveFromMap(this.mcpCallResolvers, msgReqId, {\n ...(msg.result !== undefined ? { result: msg.result } : {}),\n ...(msg.error ? { error: String(msg.error) } : {}),\n });\n return;\n }\n if (msg.type === \"mcp_call_forward\") {\n const forward = {\n callId: String(msg.callId ?? \"\"),\n serverName: String(msg.serverName ?? \"\"),\n toolName: String(msg.toolName ?? \"\"),\n args: (msg.args as Record<string, unknown>) ?? {},\n callerName: String(msg.callerName ?? \"\"),\n };\n if (this.mcpCallForwardHandler) {\n this.mcpCallForwardHandler(forward)\n .then((res) => this.sendMcpCallResponse(forward.callId, res.result, res.error))\n .catch((e) => this.sendMcpCallResponse(forward.callId, undefined, e instanceof Error ? e.message : String(e)));\n } else {\n this.sendMcpCallResponse(forward.callId, undefined, \"No MCP call handler registered on this peer\");\n }\n return;\n }\n // --- Peer file sharing handlers ---\n if (msg.type === \"peer_file_request_forward\") {\n void this.handlePeerFileRequest(msg as { requesterPubkey: string; filePath: string; _reqId?: string });\n return;\n }\n if (msg.type === \"peer_file_response_forward\") {\n this.resolveFromMap(this.peerFileResponseResolvers, msgReqId, {\n content: msg.content ? String(msg.content) : undefined,\n error: msg.error ? String(msg.error) : undefined,\n });\n return;\n }\n if (msg.type === \"peer_dir_request_forward\") {\n void this.handlePeerDirRequest(msg as { requesterPubkey: string; dirPath: string; pattern?: string; _reqId?: string });\n return;\n }\n if (msg.type === \"peer_dir_response_forward\") {\n this.resolveFromMap(this.peerDirResponseResolvers, msgReqId, {\n entries: (msg.entries as string[] | undefined) ?? undefined,\n error: msg.error ? String(msg.error) : undefined,\n });\n return;\n }\n if (msg.type === \"webhook_ack\") {\n this.resolveFromMap(this.webhookAckResolvers, msgReqId, {\n name: String(msg.name ?? \"\"),\n url: String(msg.url ?? \"\"),\n secret: String(msg.secret ?? \"\"),\n });\n return;\n }\n if (msg.type === \"webhook_list\") {\n const webhooks = (msg.webhooks as Array<{ name: string; url: string; active: boolean; createdAt: string }>) ?? [];\n this.resolveFromMap(this.webhookListResolvers, msgReqId, webhooks);\n return;\n }\n if (msg.type === \"vault_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultAckResolvers.has(reqId)) {\n const r = this.vaultAckResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultAckResolvers.delete(reqId);\n r.resolve(msg.action !== \"not_found\");\n }\n }\n if (msg.type === \"vault_list_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultListResolvers.has(reqId)) {\n const r = this.vaultListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultListResolvers.delete(reqId);\n r.resolve((msg as any).entries ?? []);\n }\n }\n if (msg.type === \"vault_get_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.vaultListResolvers.has(reqId)) {\n const r = this.vaultListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.vaultListResolvers.delete(reqId);\n r.resolve((msg as any).entries ?? []);\n }\n }\n if (msg.type === \"mcp_deploy_status\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpDeployResolvers.has(reqId)) {\n const r = this.mcpDeployResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpDeployResolvers.delete(reqId);\n r.resolve({ status: (msg as any).status, tools: (msg as any).tools, error: (msg as any).error });\n }\n }\n if (msg.type === \"mcp_logs_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpLogsResolvers.has(reqId)) {\n const r = this.mcpLogsResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpLogsResolvers.delete(reqId);\n r.resolve((msg as any).lines ?? []);\n }\n }\n if (msg.type === \"mcp_schema_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpSchemaServiceResolvers.has(reqId)) {\n const r = this.mcpSchemaServiceResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpSchemaServiceResolvers.delete(reqId);\n r.resolve((msg as any).tools ?? []);\n }\n }\n if (msg.type === \"mcp_catalog_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpCatalogResolvers.has(reqId)) {\n const r = this.mcpCatalogResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpCatalogResolvers.delete(reqId);\n r.resolve((msg as any).services ?? []);\n }\n }\n if (msg.type === \"mcp_scope_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.mcpScopeResolvers.has(reqId)) {\n const r = this.mcpScopeResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.mcpScopeResolvers.delete(reqId);\n r.resolve({ scope: (msg as any).scope, deployed_by: (msg as any).deployed_by });\n }\n }\n if (msg.type === \"skill_deploy_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.skillDeployResolvers.has(reqId)) {\n const r = this.skillDeployResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.skillDeployResolvers.delete(reqId);\n r.resolve({ name: (msg as any).name, files: (msg as any).files ?? [] });\n }\n }\n if (msg.type === \"watch_ack\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.watchAckResolvers.has(reqId)) {\n const r = this.watchAckResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.watchAckResolvers.delete(reqId);\n r.resolve(msg);\n }\n }\n if (msg.type === \"watch_list_result\") {\n const reqId = (msg as any)._reqId;\n if (reqId && this.watchListResolvers.has(reqId)) {\n const r = this.watchListResolvers.get(reqId)!;\n clearTimeout(r.timer);\n this.watchListResolvers.delete(reqId);\n r.resolve((msg as any).watches ?? []);\n }\n }\n if (msg.type === \"error\") {\n this.debug(`broker error: ${msg.code} ${msg.message}`);\n // Terminal errors from hello — broker will close us next. Capture\n // so the caller (launch/peers/etc.) can surface a friendly message.\n if (msg.code === \"revoked\") {\n this.terminalClose = { code: 4002, reason: String(msg.message ?? \"revoked\") };\n }\n const id = msg.id ? String(msg.id) : null;\n let handledByPendingSend = false;\n if (id) {\n const pending = this.pendingSends.get(id);\n if (pending) {\n pending.resolve({\n ok: false,\n error: `${msg.code}: ${msg.message}`,\n });\n this.pendingSends.delete(id);\n handledByPendingSend = true;\n }\n }\n if (!handledByPendingSend) {\n // Best-effort: unblock the first waiting resolver so callers don't\n // hang for 5s. We don't know which tool triggered the error, so we\n // pop the first non-empty resolver map in priority order.\n const allMaps: Array<[Map<string, { resolve: (v: any) => void; timer: NodeJS.Timeout }>, unknown]> = [\n [this.stateResolvers, null],\n [this.stateListResolvers, []],\n [this.memoryStoreResolvers, null],\n [this.memoryRecallResolvers, []],\n [this.fileUrlResolvers, null],\n [this.fileListResolvers, []],\n [this.fileStatusResolvers, []],\n [this.graphResultResolvers, []],\n [this.vectorStoredResolvers, null],\n [this.vectorResultsResolvers, []],\n [this.taskListResolvers, []],\n [this.meshQueryResolvers, null],\n [this.contextResultsResolvers, []],\n [this.contextListResolvers, []],\n [this.streamListResolvers, []],\n [this.scheduledAckResolvers, null],\n [this.scheduledListResolvers, []],\n [this.cancelScheduledResolvers, false],\n [this.messageStatusResolvers, null],\n [this.grantFileAccessResolvers, false],\n [this.collectionListResolvers, []],\n [this.meshSchemaResolvers, []],\n [this.taskCreatedResolvers, null],\n [this.streamCreatedResolvers, null],\n [this.listPeersResolvers, []],\n [this.meshInfoResolvers, null],\n [this.clockStatusResolvers, null],\n [this.mcpRegisterResolvers, null],\n [this.mcpListResolvers, []],\n [this.mcpCallResolvers, { error: \"broker error\" }],\n [this.skillAckResolvers, null],\n [this.skillDataResolvers, null],\n [this.skillListResolvers, []],\n [this.peerFileResponseResolvers, { error: \"broker error\" }],\n [this.peerDirResponseResolvers, { error: \"broker error\" }],\n [this.webhookAckResolvers, null],\n [this.webhookListResolvers, []],\n [this.vaultAckResolvers, false],\n [this.vaultListResolvers, []],\n [this.mcpDeployResolvers, { status: \"error\" }],\n [this.mcpLogsResolvers, []],\n [this.mcpSchemaServiceResolvers, []],\n [this.mcpCatalogResolvers, []],\n [this.mcpScopeResolvers, { scope: { type: \"peer\" }, deployed_by: \"unknown\" }],\n [this.skillDeployResolvers, { name: \"unknown\", files: [] }],\n ];\n for (const [map, defaultVal] of allMaps) {\n const first = (map as Map<string, any>).entries().next().value as [string, { resolve: (v: unknown) => void; timer: NodeJS.Timeout }] | undefined;\n if (first) {\n (map as Map<string, any>).delete(first[0]);\n clearTimeout(first[1].timer);\n first[1].resolve(defaultVal);\n break; // only pop one\n }\n }\n }\n }\n }\n\n private flushOutbound(): void {\n const queued = this.outbound.slice();\n this.outbound.length = 0;\n for (const send of queued) send();\n }\n\n private scheduleReconnect(): void {\n // Guard: if a reconnect is already scheduled don't pile on another\n // timer — stacked close events used to schedule multiple concurrent\n // reconnects which caused reconnect storms against the broker.\n if (this.reconnectTimer) {\n this.debug(\"reconnect already scheduled — skipping\");\n return;\n }\n this.setConnStatus(\"reconnecting\");\n const base =\n BACKOFF_CAPS[Math.min(this.reconnectAttempt, BACKOFF_CAPS.length - 1)]!;\n // Full jitter: uniform [0, base]. Prevents thundering herd when the\n // broker restarts and every client reconnects on the same tick.\n const delay = Math.floor(Math.random() * base);\n this.reconnectAttempt += 1;\n this.debug(\n `reconnect in ${delay}ms (attempt ${this.reconnectAttempt}, base ${base}ms)`,\n );\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = null;\n if (this.closed) return;\n this.connect().catch((e) => {\n this.debug(`reconnect failed: ${e instanceof Error ? e.message : e}`);\n });\n }, delay);\n }\n\n private setConnStatus(s: ConnStatus): void {\n if (this._status === s) return;\n this._status = s;\n this.opts.onStatusChange?.(s);\n }\n\n private debug(msg: string): void {\n if (this.opts.debug) console.error(`[broker-client] ${msg}`);\n }\n}\n\nfunction randomId(): string {\n return randomBytes(8).toString(\"hex\");\n}\n\nfunction randomNonce(): string {\n // 24-byte nonce layout (compatible with libsodium crypto_secretbox later)\n return randomBytes(24).toString(\"base64\");\n}\n",
|
|
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",
|
|
@@ -132,13 +132,13 @@
|
|
|
132
132
|
"/**\n * `claudemesh topic <verb>` — conversation-scope primitive within a mesh.\n *\n * Topics complement groups: groups are identity tags (\"@frontend\"); topics\n * are conversation scopes (\"#deploys\") with persistent history,\n * subscription-based delivery, and per-topic state.\n *\n * Verbs:\n * create <name> [--description X] [--visibility public|private|dm]\n * list\n * join <topic> [--role lead|member|observer]\n * leave <topic>\n * members <topic>\n * history <topic> [--limit N] [--before <id>]\n * read <topic> (mark all as read)\n *\n * Spec: .artifacts/specs/2026-05-02-v0.2.0-scope.md\n */\n\nimport { withMesh } from \"./connect.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, green } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface TopicFlags {\n mesh?: string;\n json?: boolean;\n description?: string;\n visibility?: \"public\" | \"private\" | \"dm\";\n role?: \"lead\" | \"member\" | \"observer\";\n limit?: number | string;\n before?: string;\n}\n\nexport async function runTopicCreate(name: string, flags: TopicFlags): Promise<number> {\n if (!name) {\n render.err(\"Usage: claudemesh topic create <name> [--description X] [--visibility V]\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const result = await client.topicCreate({\n name,\n description: flags.description,\n visibility: flags.visibility,\n });\n if (!result) {\n render.err(\"topic create failed\");\n return EXIT.INTERNAL_ERROR;\n }\n if (flags.json) {\n console.log(JSON.stringify(result));\n return EXIT.SUCCESS;\n }\n if (result.created) {\n render.ok(\"created\", `${clay(\"#\" + name)} ${dim(result.id.slice(0, 8))}`);\n } else {\n render.info(dim(`already exists: #${name} ${result.id.slice(0, 8)}`));\n }\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicList(flags: TopicFlags): Promise<number> {\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const topics = await client.topicList();\n if (flags.json) {\n console.log(JSON.stringify(topics, null, 2));\n return EXIT.SUCCESS;\n }\n if (topics.length === 0) {\n render.info(dim(\"no topics in this mesh.\"));\n return EXIT.SUCCESS;\n }\n render.section(`topics (${topics.length})`);\n for (const t of topics) {\n const vis = t.visibility === \"public\" ? green(t.visibility) : dim(t.visibility);\n process.stdout.write(` ${clay(\"#\" + t.name)} ${vis} ${dim(`${t.memberCount} member${t.memberCount === 1 ? \"\" : \"s\"}`)}\\n`);\n if (t.description) process.stdout.write(` ${dim(t.description)}\\n`);\n }\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicJoin(topic: string, flags: TopicFlags): Promise<number> {\n if (!topic) {\n render.err(\"Usage: claudemesh topic join <topic> [--role lead|member|observer]\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n await client.topicJoin(topic, flags.role);\n if (flags.json) console.log(JSON.stringify({ joined: topic }));\n else render.ok(\"joined\", clay(\"#\" + topic));\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicLeave(topic: string, flags: TopicFlags): Promise<number> {\n if (!topic) {\n render.err(\"Usage: claudemesh topic leave <topic>\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n await client.topicLeave(topic);\n if (flags.json) console.log(JSON.stringify({ left: topic }));\n else render.ok(\"left\", clay(\"#\" + topic));\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicMembers(topic: string, flags: TopicFlags): Promise<number> {\n if (!topic) {\n render.err(\"Usage: claudemesh topic members <topic>\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const members = await client.topicMembers(topic);\n if (flags.json) {\n console.log(JSON.stringify(members, null, 2));\n return EXIT.SUCCESS;\n }\n if (members.length === 0) {\n render.info(dim(`no members in ${clay(\"#\" + topic)}.`));\n return EXIT.SUCCESS;\n }\n render.section(`${clay(\"#\" + topic)} members (${members.length})`);\n for (const m of members) {\n process.stdout.write(` ${bold(m.displayName)} ${dim(m.role)} ${dim(m.pubkey.slice(0, 8))}\\n`);\n }\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicHistory(topic: string, flags: TopicFlags): Promise<number> {\n if (!topic) {\n render.err(\"Usage: claudemesh topic history <topic> [--limit N] [--before <id>]\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n const limit = flags.limit ? Number(flags.limit) : undefined;\n const messages = await client.topicHistory({\n topic,\n limit,\n beforeId: flags.before,\n });\n if (flags.json) {\n console.log(JSON.stringify(messages, null, 2));\n return EXIT.SUCCESS;\n }\n if (messages.length === 0) {\n render.info(dim(`no messages in ${clay(\"#\" + topic)}.`));\n return EXIT.SUCCESS;\n }\n // History returns newest-first; render oldest-first for chat UX.\n const ordered = [...messages].reverse();\n render.section(`${clay(\"#\" + topic)} history (${ordered.length})`);\n for (const m of ordered) {\n const t = new Date(m.createdAt).toLocaleString();\n process.stdout.write(\n ` ${dim(t)} ${bold(m.senderPubkey.slice(0, 8))} ${dim(\"(encrypted, \" + m.ciphertext.length + \"b)\")}\\n`,\n );\n }\n return EXIT.SUCCESS;\n });\n}\n\nexport async function runTopicMarkRead(topic: string, flags: TopicFlags): Promise<number> {\n if (!topic) {\n render.err(\"Usage: claudemesh topic read <topic>\");\n return EXIT.INVALID_ARGS;\n }\n return await withMesh({ meshSlug: flags.mesh ?? null }, async (client) => {\n await client.topicMarkRead(topic);\n if (flags.json) console.log(JSON.stringify({ read: topic }));\n else render.ok(\"marked read\", clay(\"#\" + topic));\n return EXIT.SUCCESS;\n });\n}\n",
|
|
133
133
|
"/**\n * Mint an ephemeral apikey via the broker WS, hand it to a REST callback,\n * and revoke on exit. Lets `notification list`, `member list`, and\n * `topic tail` reuse the v1 REST surface without making the user manage\n * their own bearer tokens.\n *\n * The key is bound to the same mesh the WS connection picked, lives for\n * 5 minutes max, and gets read-only capability + a label that makes the\n * mesh dashboard's apikey list legible. We revoke even when fn throws.\n */\n\nimport { withMesh } from \"~/commands/connect.js\";\nimport type { BrokerClient } from \"~/services/broker/facade.js\";\nimport type { JoinedMesh } from \"~/services/config/facade.js\";\n\nexport interface RestKeyContext {\n secret: string;\n meshId: string;\n meshSlug: string;\n client: BrokerClient;\n mesh: JoinedMesh;\n}\n\nexport interface WithRestKeyOpts {\n meshSlug?: string | null;\n /** Capabilities to grant — defaults to [\"read\"]. */\n capabilities?: Array<\"send\" | \"read\" | \"state_write\" | \"admin\">;\n /** Topic-scope allowlist — null = all topics. */\n topicScopes?: string[] | null;\n /** Label suffix for the apikey list. */\n purpose?: string;\n}\n\nexport async function withRestKey<T>(\n opts: WithRestKeyOpts,\n fn: (ctx: RestKeyContext) => Promise<T>,\n): Promise<T> {\n return withMesh({ meshSlug: opts.meshSlug ?? null }, async (client, mesh) => {\n const result = await client.apiKeyCreate({\n label: `cli-${opts.purpose ?? \"rest\"}-${process.pid}`,\n capabilities: opts.capabilities ?? [\"read\"],\n topicScopes: opts.topicScopes ?? undefined,\n expiresAt: new Date(Date.now() + 5 * 60 * 1000).toISOString(),\n });\n if (!result || !result.secret) {\n throw new Error(\"apikey mint failed — broker did not return a secret\");\n }\n try {\n return await fn({\n secret: result.secret,\n meshId: mesh.meshId,\n meshSlug: mesh.slug,\n client,\n mesh,\n });\n } finally {\n // Best-effort cleanup. If the broker connection already closed we\n // just leak a 5-minute key — acceptable trade-off for keeping the\n // command code linear.\n try {\n await client.apiKeyRevoke(result.id);\n } catch {\n // swallow — diagnostic noise without value\n }\n }\n });\n}\n",
|
|
134
134
|
"/**\n * Per-topic symmetric-key cache + crypto_box plumbing.\n *\n * Lifecycle:\n * 1. CLI command minted a REST apikey via withRestKey().\n * 2. Caller asks for a topic key by (mesh_secret_key, topic_name).\n * 3. We fetch GET /v1/topics/:name/key for the sealed copy + sender pubkey.\n * 4. We convert the mesh's ed25519 secret to x25519, then crypto_box_open\n * the sealed key. Plaintext key is cached in-process and used to\n * encrypt + decrypt v2 message bodies.\n *\n * Failures:\n * - 404 key_not_sealed_for_member: caller is in the topic but no peer\n * has re-sealed the key for them yet. Caller surfaces a \"waiting for\n * a peer to share the topic key\" message and falls back to v1 path.\n * - 409 topic_unencrypted: legacy v0.2.0 topic. Caller stays on v1.\n * - decrypt failure: server fed us a junk seal. Caller re-fetches\n * once; if still bad, surface error and fall back.\n *\n * The cache is keyed on (apiKeyHash, topicName) so it never crosses\n * sessions. Process-only — no disk persistence.\n */\n\nimport { request } from \"~/services/api/client.js\";\nimport { ApiError } from \"~/services/api/errors.js\";\n\ninterface CacheEntry {\n topicKey: Uint8Array;\n fetchedAt: number;\n}\n\nconst cache = new Map<string, CacheEntry>();\n\ninterface SealedKeyResponse {\n topic: string;\n topicId: string;\n encryptedKey: string;\n nonce: string;\n senderPubkey: string;\n createdAt: string;\n}\n\nexport type TopicKeyError =\n | \"not_sealed\"\n | \"topic_unencrypted\"\n | \"decrypt_failed\"\n | \"bad_member_secret\"\n | \"network\";\n\nexport interface TopicKeyResult {\n ok: boolean;\n topicKey?: Uint8Array;\n error?: TopicKeyError;\n message?: string;\n}\n\nfunction cacheKey(apiKeySecret: string, topicName: string): string {\n // First 12 chars of the apikey is plenty to dedupe within a session\n // and short enough to avoid keeping the full secret in a Map key.\n return `${apiKeySecret.slice(0, 12)}:${topicName}`;\n}\n\nexport async function getTopicKey(args: {\n apiKeySecret: string;\n memberSecretKeyHex: string;\n topicName: string;\n /** Bypass cache — useful after a re-seal. */\n fresh?: boolean;\n}): Promise<TopicKeyResult> {\n const cacheId = cacheKey(args.apiKeySecret, args.topicName);\n if (!args.fresh) {\n const cached = cache.get(cacheId);\n if (cached) return { ok: true, topicKey: cached.topicKey };\n }\n\n let sealed: SealedKeyResponse;\n try {\n sealed = await request<SealedKeyResponse>({\n path: `/api/v1/topics/${encodeURIComponent(args.topicName)}/key`,\n token: args.apiKeySecret,\n });\n } catch (e) {\n if (e instanceof ApiError) {\n if (e.status === 404) return { ok: false, error: \"not_sealed\" };\n if (e.status === 409) return { ok: false, error: \"topic_unencrypted\" };\n }\n return {\n ok: false,\n error: \"network\",\n message: e instanceof Error ? e.message : String(e),\n };\n }\n\n const sodium = (await import(\"libsodium-wrappers\")).default;\n await sodium.ready;\n\n let recipientX25519Secret: Uint8Array;\n try {\n const ed = sodium.from_hex(args.memberSecretKeyHex);\n recipientX25519Secret = sodium.crypto_sign_ed25519_sk_to_curve25519(ed);\n } catch {\n return { ok: false, error: \"bad_member_secret\" };\n }\n\n let topicKey: Uint8Array;\n try {\n const blob = sodium.from_base64(\n sealed.encryptedKey,\n sodium.base64_variants.ORIGINAL,\n );\n const nonce = sodium.from_base64(\n sealed.nonce,\n sodium.base64_variants.ORIGINAL,\n );\n // Wire format: first 32 bytes = sender x25519 pubkey, rest =\n // crypto_box ciphertext. The topic.encryptedKeyPubkey on the topic\n // record is the original creator's sender; subsequent re-seals\n // each carry their own sender pubkey, so the joiner can decrypt\n // regardless of who sealed for them.\n if (blob.length < 32 + sodium.crypto_box_MACBYTES) {\n return {\n ok: false,\n error: \"decrypt_failed\",\n message: \"sealed key blob too short to contain sender pubkey + cipher\",\n };\n }\n const senderX25519 = blob.slice(0, 32);\n const cipher = blob.slice(32);\n topicKey = sodium.crypto_box_open_easy(\n cipher,\n nonce,\n senderX25519,\n recipientX25519Secret,\n );\n } catch (e) {\n return {\n ok: false,\n error: \"decrypt_failed\",\n message: e instanceof Error ? e.message : String(e),\n };\n }\n\n cache.set(cacheId, { topicKey, fetchedAt: Date.now() });\n return { ok: true, topicKey };\n}\n\n/**\n * Encrypt a UTF-8 plaintext message body with the topic's symmetric\n * key via crypto_secretbox. Returns base64 ciphertext + base64 nonce\n * suitable for POST /v1/messages with bodyVersion: 2.\n */\nexport async function encryptMessage(\n topicKey: Uint8Array,\n plaintext: string,\n): Promise<{ ciphertext: string; nonce: string }> {\n const sodium = (await import(\"libsodium-wrappers\")).default;\n await sodium.ready;\n const nonceBytes = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);\n const cipher = sodium.crypto_secretbox_easy(\n sodium.from_string(plaintext),\n nonceBytes,\n topicKey,\n );\n return {\n ciphertext: sodium.to_base64(cipher, sodium.base64_variants.ORIGINAL),\n nonce: sodium.to_base64(nonceBytes, sodium.base64_variants.ORIGINAL),\n };\n}\n\n/**\n * Decrypt a v2 message body. Returns null on auth failure (bad key\n * or tampering) — caller should fall back to a placeholder string,\n * not crash the renderer.\n */\nexport async function decryptMessage(\n topicKey: Uint8Array,\n ciphertextB64: string,\n nonceB64: string,\n): Promise<string | null> {\n try {\n const sodium = (await import(\"libsodium-wrappers\")).default;\n await sodium.ready;\n const cipher = sodium.from_base64(\n ciphertextB64,\n sodium.base64_variants.ORIGINAL,\n );\n const nonce = sodium.from_base64(nonceB64, sodium.base64_variants.ORIGINAL);\n const plain = sodium.crypto_secretbox_open_easy(cipher, nonce, topicKey);\n return sodium.to_string(plain);\n } catch {\n return null;\n }\n}\n\n/**\n * Seal a topic key for another member — used by the re-seal flow when\n * a holder helps onboard a new joiner. Returns the bundle ready to\n * POST to /v1/topics/:name/seal.\n */\nexport async function sealTopicKeyFor(\n topicKey: Uint8Array,\n recipientPubkeyHex: string,\n ourMemberSecretKeyHex: string,\n): Promise<{\n /** base64( our_x25519_pubkey || crypto_box(topicKey) ). */\n encryptedKey: string;\n nonce: string;\n} | null> {\n try {\n const sodium = (await import(\"libsodium-wrappers\")).default;\n await sodium.ready;\n const recipientX25519 = sodium.crypto_sign_ed25519_pk_to_curve25519(\n sodium.from_hex(recipientPubkeyHex),\n );\n const ourEdSecret = sodium.from_hex(ourMemberSecretKeyHex);\n const ourX25519Secret = sodium.crypto_sign_ed25519_sk_to_curve25519(\n ourEdSecret,\n );\n // Derive our x25519 public from our ed25519 public half (back half\n // of the secret key contains the ed25519 pubkey per libsodium spec).\n const ourEdPublic = ourEdSecret.slice(32, 64);\n const ourX25519Public = sodium.crypto_sign_ed25519_pk_to_curve25519(\n ourEdPublic,\n );\n const nonceBytes = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);\n const cipher = sodium.crypto_box_easy(\n topicKey,\n nonceBytes,\n recipientX25519,\n ourX25519Secret,\n );\n // Embed sender pubkey as the first 32 bytes so the recipient can\n // decrypt without a separate lookup. Matches the format the broker's\n // creator-seal writes (see broker.ts sealTopicKeyForMember).\n const blob = new Uint8Array(32 + cipher.length);\n blob.set(ourX25519Public, 0);\n blob.set(cipher, 32);\n return {\n encryptedKey: sodium.to_base64(blob, sodium.base64_variants.ORIGINAL),\n nonce: sodium.to_base64(nonceBytes, sodium.base64_variants.ORIGINAL),\n };\n } catch {\n return null;\n }\n}\n",
|
|
135
|
-
"/**\n * `claudemesh topic tail <name>` — live SSE consumer of a topic stream.\n * Prints the last N messages from /v1/topics/:name/messages, then opens\n * the SSE firehose at /v1/topics/:name/stream and prints new messages\n * as they arrive. Ctrl-C to exit.\n */\n\nimport { URLS } from \"~/constants/urls.js\";\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport {\n getTopicKey,\n decryptMessage,\n sealTopicKeyFor,\n} from \"~/services/crypto/topic-key.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, yellow } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface TopicTailFlags {\n mesh?: string;\n json?: boolean;\n limit?: number | string;\n /** Skip the initial backfill — only show forward messages. */\n forwardOnly?: boolean;\n}\n\ninterface TopicMessage {\n id: string;\n senderPubkey: string;\n senderName: string;\n nonce: string;\n ciphertext: string;\n bodyVersion?: number;\n createdAt: string;\n}\n\ninterface HistoryResponse {\n topic: string;\n topicId: string;\n messages: TopicMessage[];\n}\n\n/**\n * v1 (legacy plaintext-base64) decode. v2 messages are decrypted via\n * the topic key separately — see decryptForRender below.\n */\nfunction decodeV1(b64: string): string {\n try {\n return Buffer.from(b64, \"base64\").toString(\"utf-8\");\n } catch {\n return \"[decode failed]\";\n }\n}\n\nasync function decryptForRender(\n m: TopicMessage,\n topicKey: Uint8Array | null,\n): Promise<string> {\n if ((m.bodyVersion ?? 1) === 1) return decodeV1(m.ciphertext);\n if (!topicKey) return \"[encrypted — no topic key]\";\n const plain = await decryptMessage(topicKey, m.ciphertext, m.nonce);\n return plain ?? \"[decrypt failed]\";\n}\n\nfunction fmtTime(iso: string): string {\n try {\n return new Date(iso).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n } catch {\n return iso;\n }\n}\n\nasync function printMessage(\n m: TopicMessage,\n topicKey: Uint8Array | null,\n json: boolean,\n): Promise<void> {\n const text = await decryptForRender(m, topicKey);\n if (json) {\n console.log(JSON.stringify({ ...m, message: text }));\n return;\n }\n const v2Marker = (m.bodyVersion ?? 1) === 2 ? dim(\"🔒 \") : \"\";\n process.stdout.write(\n ` ${dim(fmtTime(m.createdAt))} ${bold(m.senderName || m.senderPubkey.slice(0, 8))} ${v2Marker}${text}\\n`,\n );\n}\n\ninterface SseEvent {\n event: string;\n id?: string;\n data: string;\n}\n\nasync function* readSseStream(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n): AsyncGenerator<SseEvent> {\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n let idx: number;\n while ((idx = buffer.indexOf(\"\\n\\n\")) !== -1) {\n const block = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 2);\n const ev: SseEvent = { event: \"message\", data: \"\" };\n const dataLines: string[] = [];\n for (const line of block.split(\"\\n\")) {\n if (!line || line.startsWith(\":\")) continue;\n const colon = line.indexOf(\":\");\n if (colon < 0) continue;\n const field = line.slice(0, colon);\n const val = line.slice(colon + 1).replace(/^ /, \"\");\n if (field === \"event\") ev.event = val;\n else if (field === \"id\") ev.id = val;\n else if (field === \"data\") dataLines.push(val);\n }\n ev.data = dataLines.join(\"\\n\");\n yield ev;\n }\n }\n}\n\nexport async function runTopicTail(name: string, flags: TopicTailFlags): Promise<number> {\n if (!name) {\n render.err(\"Usage: claudemesh topic tail <topic> [--limit N]\");\n return EXIT.INVALID_ARGS;\n }\n const cleanName = name.replace(/^#/, \"\");\n const limit = flags.limit ? Number(flags.limit) : 20;\n\n return withRestKey(\n {\n meshSlug: flags.mesh ?? null,\n purpose: `tail-${cleanName}`,\n capabilities: [\"read\"],\n topicScopes: [cleanName],\n },\n async ({ secret, meshSlug, mesh }) => {\n // Fetch + decrypt the topic key once. Stays in memory for this\n // invocation; tail dies → key forgotten. v1 topics return\n // not_sealed/topic_unencrypted and we just don't decrypt.\n const keyResult = await getTopicKey({\n apiKeySecret: secret,\n memberSecretKeyHex: mesh.secretKey,\n topicName: cleanName,\n });\n const topicKey = keyResult.ok ? keyResult.topicKey ?? null : null;\n\n // Re-seal background loop. While we hold the topic key, every\n // 30s we look for newly-joined members who don't have a sealed\n // copy yet, seal the key for each, and POST. Soft-failures stay\n // silent so a flaky network doesn't spam the tail output.\n let resealTimer: ReturnType<typeof setInterval> | null = null;\n if (topicKey) {\n const reseal = async () => {\n try {\n const pending = await request<{\n pending: Array<{\n memberId: string;\n pubkey: string;\n displayName: string;\n }>;\n }>({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/pending-seals`,\n token: secret,\n });\n for (const target of pending.pending) {\n const sealed = await sealTopicKeyFor(\n topicKey,\n target.pubkey,\n mesh.secretKey,\n );\n if (!sealed) continue;\n try {\n await request({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/seal`,\n method: \"POST\",\n token: secret,\n body: {\n memberId: target.memberId,\n encryptedKey: sealed.encryptedKey,\n nonce: sealed.nonce,\n },\n });\n if (!flags.json) {\n render.info(\n dim(`re-sealed topic key for ${target.displayName}`),\n );\n }\n } catch {\n // Another holder likely sealed first — ignore.\n }\n }\n } catch {\n // Soft-fail; next tick retries.\n }\n };\n void reseal();\n resealTimer = setInterval(reseal, 30_000);\n }\n if (!flags.json && !keyResult.ok) {\n if (keyResult.error === \"topic_unencrypted\") {\n render.info(\n dim(\"topic is on v1 (plaintext) — encryption will activate after creator-seal\"),\n );\n } else if (keyResult.error === \"not_sealed\") {\n render.warn(\n yellow(\n \"no topic key sealed for you yet — wait for a holder to re-seal\",\n ),\n );\n } else if (keyResult.error === \"decrypt_failed\") {\n render.warn(\n yellow(\n `topic key fetched but decrypt failed: ${keyResult.message ?? \"\"}`,\n ),\n );\n }\n }\n\n // 1. Backfill the most recent N messages so the user sees context\n // when they tail an active topic.\n if (!flags.forwardOnly && limit > 0) {\n try {\n const history = await request<HistoryResponse>({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/messages?limit=${limit}`,\n token: secret,\n });\n if (!flags.json) {\n render.section(\n `${clay(\"#\" + cleanName)} on ${dim(meshSlug)} — backfill ${history.messages.length}, then live`,\n );\n }\n // History is newest-first; reverse for chronological display.\n for (const m of history.messages.slice().reverse()) {\n await printMessage(m, topicKey, flags.json ?? false);\n }\n } catch (err) {\n render.warn(`backfill failed: ${(err as Error).message}`);\n }\n }\n\n // 2. Open the SSE firehose. fetch + ReadableStream so the bearer\n // stays in the Authorization header (no token-in-URL leak).\n const url = `${URLS.API_BASE}/api/v1/topics/${encodeURIComponent(cleanName)}/stream`;\n const ctl = new AbortController();\n const onSig = () => ctl.abort();\n process.once(\"SIGINT\", onSig);\n process.once(\"SIGTERM\", onSig);\n\n try {\n const res = await fetch(url, {\n headers: { Authorization: `Bearer ${secret}` },\n signal: ctl.signal,\n });\n if (!res.ok || !res.body) {\n render.err(`stream open failed: ${res.status}`);\n return EXIT.INTERNAL_ERROR;\n }\n if (!flags.json) {\n render.info(dim(\"tailing — Ctrl-C to exit\"));\n }\n const reader = res.body.getReader() as ReadableStreamDefaultReader<Uint8Array>;\n for await (const ev of readSseStream(reader)) {\n if (ev.event === \"ready\" || ev.event === \"heartbeat\") continue;\n if (ev.event === \"error\") {\n try {\n const parsed = JSON.parse(ev.data) as { error?: string };\n render.err(`stream error: ${parsed.error ?? \"unknown\"}`);\n } catch {\n render.err(\"stream error\");\n }\n continue;\n }\n if (ev.event === \"message\") {\n try {\n const m = JSON.parse(ev.data) as TopicMessage;\n await printMessage(m, topicKey, flags.json ?? false);\n } catch {\n // skip malformed\n }\n }\n }\n return EXIT.SUCCESS;\n } catch (err) {\n if (ctl.signal.aborted) return EXIT.SUCCESS; // user Ctrl-C'd\n render.err(`tail aborted: ${(err as Error).message}`);\n return EXIT.INTERNAL_ERROR;\n } finally {\n process.removeListener(\"SIGINT\", onSig);\n process.removeListener(\"SIGTERM\", onSig);\n if (resealTimer) clearInterval(resealTimer);\n }\n },\n );\n}\n",
|
|
136
|
-
"/**\n * `claudemesh topic post <name> <message>` — REST-encrypted send.\n *\n * Distinct from `claudemesh topic send` (WS-based, currently v1\n * plaintext). This verb:\n * 1. Mints an ephemeral REST apikey scoped to the topic.\n * 2. Fetches + decrypts the topic key (crypto_box).\n * 3. Encrypts the body with crypto_secretbox under the topic key.\n * 4. POSTs body_version: 2 ciphertext to /api/v1/messages.\n * 5. Revokes the apikey.\n *\n * If the topic doesn't yet have a sealed key for this member (404\n * not_sealed) we surface a clear error and skip — the user must wait\n * for a holder to re-seal.\n */\n\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport {\n getTopicKey,\n encryptMessage,\n} from \"~/services/crypto/topic-key.js\";\nimport { render } from \"~/ui/render.js\";\nimport { clay, dim, green } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface TopicPostFlags {\n mesh?: string;\n json?: boolean;\n /** Force v1 plaintext send even if the topic is encrypted. */\n plaintext?: boolean;\n}\n\ninterface PostResponse {\n messageId: string | null;\n historyId: string | null;\n topic: string;\n topicId: string;\n notifications: number;\n}\n\nexport async function runTopicPost(\n topicName: string,\n message: string,\n flags: TopicPostFlags,\n): Promise<number> {\n if (!topicName || !message) {\n render.err(\"Usage: claudemesh topic post <topic> <message>\");\n return EXIT.INVALID_ARGS;\n }\n const cleanName = topicName.replace(/^#/, \"\");\n\n // Extract @-mention tokens for write-time fan-out so the server can\n // populate notifications without reading ciphertext.\n const mentions: string[] = [];\n const mentionRe = /(^|[^A-Za-z0-9_-])@([A-Za-z0-9_-]{1,64})(?=$|[^A-Za-z0-9_-])/g;\n let m: RegExpExecArray | null;\n while ((m = mentionRe.exec(message)) !== null) {\n mentions.push(m[2]!.toLowerCase());\n if (mentions.length >= 16) break;\n }\n\n return withRestKey(\n {\n meshSlug: flags.mesh ?? null,\n purpose: `post-${cleanName}`,\n capabilities: [\"read\", \"send\"],\n topicScopes: [cleanName],\n },\n async ({ secret, mesh }) => {\n let bodyVersion: 1 | 2 = 1;\n let ciphertext: string;\n let nonce: string;\n\n if (flags.plaintext) {\n // Explicit v1: caller wants plaintext. Encode UTF-8 → base64.\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n nonce = Buffer.from(new Uint8Array(24)).toString(\"base64\");\n } else {\n const keyResult = await getTopicKey({\n apiKeySecret: secret,\n memberSecretKeyHex: mesh.secretKey,\n topicName: cleanName,\n });\n if (keyResult.ok && keyResult.topicKey) {\n const enc = await encryptMessage(keyResult.topicKey, message);\n ciphertext = enc.ciphertext;\n nonce = enc.nonce;\n bodyVersion = 2;\n } else if (keyResult.error === \"topic_unencrypted\") {\n // Legacy v0.2.0 topic — fall back to v1 plaintext.\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n nonce = Buffer.from(new Uint8Array(24)).toString(\"base64\");\n } else {\n render.err(\n `cannot encrypt for #${cleanName}: ${keyResult.error ?? \"unknown\"}${\n keyResult.message ? \" — \" + keyResult.message : \"\"\n }`,\n );\n return EXIT.INTERNAL_ERROR;\n }\n }\n\n const result = await request<PostResponse>({\n path: \"/api/v1/messages\",\n method: \"POST\",\n token: secret,\n body: {\n topic: cleanName,\n ciphertext,\n nonce,\n bodyVersion,\n ...(mentions.length > 0 ? { mentions } : {}),\n },\n });\n\n if (flags.json) {\n console.log(JSON.stringify({ ...result, bodyVersion, mentions }));\n return EXIT.SUCCESS;\n }\n\n const versionTag = bodyVersion === 2 ? green(\"🔒 v2\") : dim(\"v1\");\n render.ok(\n \"posted\",\n `${clay(\"#\" + cleanName)} ${versionTag} ${dim(`(${result.notifications} mentions)`)}`,\n );\n return EXIT.SUCCESS;\n },\n );\n}\n",
|
|
135
|
+
"/**\n * `claudemesh topic tail <name>` — live SSE consumer of a topic stream.\n * Prints the last N messages from /v1/topics/:name/messages, then opens\n * the SSE firehose at /v1/topics/:name/stream and prints new messages\n * as they arrive. Ctrl-C to exit.\n */\n\nimport { URLS } from \"~/constants/urls.js\";\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport {\n getTopicKey,\n decryptMessage,\n sealTopicKeyFor,\n} from \"~/services/crypto/topic-key.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, yellow } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface TopicTailFlags {\n mesh?: string;\n json?: boolean;\n limit?: number | string;\n /** Skip the initial backfill — only show forward messages. */\n forwardOnly?: boolean;\n}\n\ninterface TopicMessage {\n id: string;\n senderMemberId?: string;\n senderPubkey: string;\n senderName: string;\n nonce: string;\n ciphertext: string;\n bodyVersion?: number;\n replyToId?: string | null;\n createdAt: string;\n}\n\n/** Bounded recent-message cache used to render reply-context lines. */\ntype RenderedSnippet = { name: string; snippet: string };\nconst RECENT_CACHE_MAX = 256;\nfunction rememberRendered(\n cache: Map<string, RenderedSnippet>,\n m: TopicMessage,\n text: string,\n): void {\n cache.set(m.id, {\n name: m.senderName || m.senderPubkey.slice(0, 8),\n snippet: text.replace(/\\s+/g, \" \").slice(0, 60),\n });\n if (cache.size > RECENT_CACHE_MAX) {\n const firstKey = cache.keys().next().value;\n if (firstKey) cache.delete(firstKey);\n }\n}\n\ninterface HistoryResponse {\n topic: string;\n topicId: string;\n messages: TopicMessage[];\n}\n\n/**\n * v1 (legacy plaintext-base64) decode. v2 messages are decrypted via\n * the topic key separately — see decryptForRender below.\n */\nfunction decodeV1(b64: string): string {\n try {\n return Buffer.from(b64, \"base64\").toString(\"utf-8\");\n } catch {\n return \"[decode failed]\";\n }\n}\n\nasync function decryptForRender(\n m: TopicMessage,\n topicKey: Uint8Array | null,\n): Promise<string> {\n if ((m.bodyVersion ?? 1) === 1) return decodeV1(m.ciphertext);\n if (!topicKey) return \"[encrypted — no topic key]\";\n const plain = await decryptMessage(topicKey, m.ciphertext, m.nonce);\n return plain ?? \"[decrypt failed]\";\n}\n\nfunction fmtTime(iso: string): string {\n try {\n return new Date(iso).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n } catch {\n return iso;\n }\n}\n\nasync function printMessage(\n m: TopicMessage,\n topicKey: Uint8Array | null,\n json: boolean,\n cache: Map<string, RenderedSnippet>,\n): Promise<void> {\n const text = await decryptForRender(m, topicKey);\n if (json) {\n console.log(JSON.stringify({ ...m, message: text }));\n rememberRendered(cache, m, text);\n return;\n }\n const v2Marker = (m.bodyVersion ?? 1) === 2 ? dim(\"🔒 \") : \"\";\n if (m.replyToId) {\n const parent = cache.get(m.replyToId);\n const ref = parent\n ? `${parent.name}: \"${parent.snippet}${parent.snippet.length === 60 ? \"…\" : \"\"}\"`\n : `${m.replyToId.slice(0, 8)}…`;\n process.stdout.write(` ${dim(\"↳ in reply to \" + ref)}\\n`);\n }\n const idTag = dim(`#${m.id.slice(0, 8)}`);\n process.stdout.write(\n ` ${dim(fmtTime(m.createdAt))} ${bold(m.senderName || m.senderPubkey.slice(0, 8))} ${idTag} ${v2Marker}${text}\\n`,\n );\n rememberRendered(cache, m, text);\n}\n\ninterface SseEvent {\n event: string;\n id?: string;\n data: string;\n}\n\nasync function* readSseStream(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n): AsyncGenerator<SseEvent> {\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n let idx: number;\n while ((idx = buffer.indexOf(\"\\n\\n\")) !== -1) {\n const block = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 2);\n const ev: SseEvent = { event: \"message\", data: \"\" };\n const dataLines: string[] = [];\n for (const line of block.split(\"\\n\")) {\n if (!line || line.startsWith(\":\")) continue;\n const colon = line.indexOf(\":\");\n if (colon < 0) continue;\n const field = line.slice(0, colon);\n const val = line.slice(colon + 1).replace(/^ /, \"\");\n if (field === \"event\") ev.event = val;\n else if (field === \"id\") ev.id = val;\n else if (field === \"data\") dataLines.push(val);\n }\n ev.data = dataLines.join(\"\\n\");\n yield ev;\n }\n }\n}\n\nexport async function runTopicTail(name: string, flags: TopicTailFlags): Promise<number> {\n if (!name) {\n render.err(\"Usage: claudemesh topic tail <topic> [--limit N]\");\n return EXIT.INVALID_ARGS;\n }\n const cleanName = name.replace(/^#/, \"\");\n const limit = flags.limit ? Number(flags.limit) : 20;\n\n return withRestKey(\n {\n meshSlug: flags.mesh ?? null,\n purpose: `tail-${cleanName}`,\n capabilities: [\"read\"],\n topicScopes: [cleanName],\n },\n async ({ secret, meshSlug, mesh }) => {\n // Fetch + decrypt the topic key once. Stays in memory for this\n // invocation; tail dies → key forgotten. v1 topics return\n // not_sealed/topic_unencrypted and we just don't decrypt.\n const keyResult = await getTopicKey({\n apiKeySecret: secret,\n memberSecretKeyHex: mesh.secretKey,\n topicName: cleanName,\n });\n const topicKey = keyResult.ok ? keyResult.topicKey ?? null : null;\n const snippetCache = new Map<string, RenderedSnippet>();\n\n // Re-seal background loop. While we hold the topic key, every\n // 30s we look for newly-joined members who don't have a sealed\n // copy yet, seal the key for each, and POST. Soft-failures stay\n // silent so a flaky network doesn't spam the tail output.\n let resealTimer: ReturnType<typeof setInterval> | null = null;\n if (topicKey) {\n const reseal = async () => {\n try {\n const pending = await request<{\n pending: Array<{\n memberId: string;\n pubkey: string;\n displayName: string;\n }>;\n }>({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/pending-seals`,\n token: secret,\n });\n for (const target of pending.pending) {\n const sealed = await sealTopicKeyFor(\n topicKey,\n target.pubkey,\n mesh.secretKey,\n );\n if (!sealed) continue;\n try {\n await request({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/seal`,\n method: \"POST\",\n token: secret,\n body: {\n memberId: target.memberId,\n encryptedKey: sealed.encryptedKey,\n nonce: sealed.nonce,\n },\n });\n if (!flags.json) {\n render.info(\n dim(`re-sealed topic key for ${target.displayName}`),\n );\n }\n } catch {\n // Another holder likely sealed first — ignore.\n }\n }\n } catch {\n // Soft-fail; next tick retries.\n }\n };\n void reseal();\n resealTimer = setInterval(reseal, 30_000);\n }\n if (!flags.json && !keyResult.ok) {\n if (keyResult.error === \"topic_unencrypted\") {\n render.info(\n dim(\"topic is on v1 (plaintext) — encryption will activate after creator-seal\"),\n );\n } else if (keyResult.error === \"not_sealed\") {\n render.warn(\n yellow(\n \"no topic key sealed for you yet — wait for a holder to re-seal\",\n ),\n );\n } else if (keyResult.error === \"decrypt_failed\") {\n render.warn(\n yellow(\n `topic key fetched but decrypt failed: ${keyResult.message ?? \"\"}`,\n ),\n );\n }\n }\n\n // 1. Backfill the most recent N messages so the user sees context\n // when they tail an active topic.\n if (!flags.forwardOnly && limit > 0) {\n try {\n const history = await request<HistoryResponse>({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/messages?limit=${limit}`,\n token: secret,\n });\n if (!flags.json) {\n render.section(\n `${clay(\"#\" + cleanName)} on ${dim(meshSlug)} — backfill ${history.messages.length}, then live`,\n );\n }\n // History is newest-first; reverse for chronological display.\n for (const m of history.messages.slice().reverse()) {\n await printMessage(m, topicKey, flags.json ?? false, snippetCache);\n }\n } catch (err) {\n render.warn(`backfill failed: ${(err as Error).message}`);\n }\n }\n\n // 2. Open the SSE firehose. fetch + ReadableStream so the bearer\n // stays in the Authorization header (no token-in-URL leak).\n const url = `${URLS.API_BASE}/api/v1/topics/${encodeURIComponent(cleanName)}/stream`;\n const ctl = new AbortController();\n const onSig = () => ctl.abort();\n process.once(\"SIGINT\", onSig);\n process.once(\"SIGTERM\", onSig);\n\n try {\n const res = await fetch(url, {\n headers: { Authorization: `Bearer ${secret}` },\n signal: ctl.signal,\n });\n if (!res.ok || !res.body) {\n render.err(`stream open failed: ${res.status}`);\n return EXIT.INTERNAL_ERROR;\n }\n if (!flags.json) {\n render.info(dim(\"tailing — Ctrl-C to exit\"));\n }\n const reader = res.body.getReader() as ReadableStreamDefaultReader<Uint8Array>;\n for await (const ev of readSseStream(reader)) {\n if (ev.event === \"ready\" || ev.event === \"heartbeat\") continue;\n if (ev.event === \"error\") {\n try {\n const parsed = JSON.parse(ev.data) as { error?: string };\n render.err(`stream error: ${parsed.error ?? \"unknown\"}`);\n } catch {\n render.err(\"stream error\");\n }\n continue;\n }\n if (ev.event === \"message\") {\n try {\n const m = JSON.parse(ev.data) as TopicMessage;\n await printMessage(m, topicKey, flags.json ?? false, snippetCache);\n } catch {\n // skip malformed\n }\n }\n }\n return EXIT.SUCCESS;\n } catch (err) {\n if (ctl.signal.aborted) return EXIT.SUCCESS; // user Ctrl-C'd\n render.err(`tail aborted: ${(err as Error).message}`);\n return EXIT.INTERNAL_ERROR;\n } finally {\n process.removeListener(\"SIGINT\", onSig);\n process.removeListener(\"SIGTERM\", onSig);\n if (resealTimer) clearInterval(resealTimer);\n }\n },\n );\n}\n",
|
|
136
|
+
"/**\n * `claudemesh topic post <name> <message>` — REST-encrypted send.\n *\n * Distinct from `claudemesh topic send` (WS-based, currently v1\n * plaintext). This verb:\n * 1. Mints an ephemeral REST apikey scoped to the topic.\n * 2. Fetches + decrypts the topic key (crypto_box).\n * 3. Encrypts the body with crypto_secretbox under the topic key.\n * 4. POSTs body_version: 2 ciphertext to /api/v1/messages.\n * 5. Revokes the apikey.\n *\n * If the topic doesn't yet have a sealed key for this member (404\n * not_sealed) we surface a clear error and skip — the user must wait\n * for a holder to re-seal.\n */\n\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport {\n getTopicKey,\n encryptMessage,\n} from \"~/services/crypto/topic-key.js\";\nimport { render } from \"~/ui/render.js\";\nimport { clay, dim, green } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface TopicPostFlags {\n mesh?: string;\n json?: boolean;\n /** Force v1 plaintext send even if the topic is encrypted. */\n plaintext?: boolean;\n /** Reply-to message id (full or 8+ char prefix). */\n replyTo?: string;\n}\n\ninterface PostResponse {\n messageId: string | null;\n historyId: string | null;\n topic: string;\n topicId: string;\n notifications: number;\n replyToId?: string | null;\n}\n\nexport async function runTopicPost(\n topicName: string,\n message: string,\n flags: TopicPostFlags,\n): Promise<number> {\n if (!topicName || !message) {\n render.err(\"Usage: claudemesh topic post <topic> <message>\");\n return EXIT.INVALID_ARGS;\n }\n const cleanName = topicName.replace(/^#/, \"\");\n\n // Extract @-mention tokens for write-time fan-out so the server can\n // populate notifications without reading ciphertext.\n const mentions: string[] = [];\n const mentionRe = /(^|[^A-Za-z0-9_-])@([A-Za-z0-9_-]{1,64})(?=$|[^A-Za-z0-9_-])/g;\n let m: RegExpExecArray | null;\n while ((m = mentionRe.exec(message)) !== null) {\n mentions.push(m[2]!.toLowerCase());\n if (mentions.length >= 16) break;\n }\n\n return withRestKey(\n {\n meshSlug: flags.mesh ?? null,\n purpose: `post-${cleanName}`,\n capabilities: [\"read\", \"send\"],\n topicScopes: [cleanName],\n },\n async ({ secret, mesh }) => {\n let bodyVersion: 1 | 2 = 1;\n let ciphertext: string;\n let nonce: string;\n\n if (flags.plaintext) {\n // Explicit v1: caller wants plaintext. Encode UTF-8 → base64.\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n nonce = Buffer.from(new Uint8Array(24)).toString(\"base64\");\n } else {\n const keyResult = await getTopicKey({\n apiKeySecret: secret,\n memberSecretKeyHex: mesh.secretKey,\n topicName: cleanName,\n });\n if (keyResult.ok && keyResult.topicKey) {\n const enc = await encryptMessage(keyResult.topicKey, message);\n ciphertext = enc.ciphertext;\n nonce = enc.nonce;\n bodyVersion = 2;\n } else if (keyResult.error === \"topic_unencrypted\") {\n // Legacy v0.2.0 topic — fall back to v1 plaintext.\n ciphertext = Buffer.from(message, \"utf-8\").toString(\"base64\");\n nonce = Buffer.from(new Uint8Array(24)).toString(\"base64\");\n } else {\n render.err(\n `cannot encrypt for #${cleanName}: ${keyResult.error ?? \"unknown\"}${\n keyResult.message ? \" — \" + keyResult.message : \"\"\n }`,\n );\n return EXIT.INTERNAL_ERROR;\n }\n }\n\n // Resolve reply-to: accept full id or 8+ char prefix by querying recent\n // history once and matching. Server validates same-topic membership.\n let replyToId: string | undefined;\n if (flags.replyTo) {\n if (flags.replyTo.length >= 16) {\n replyToId = flags.replyTo;\n } else if (flags.replyTo.length >= 6) {\n const recent = await request<{\n messages: Array<{ id: string }>;\n }>({\n path: `/api/v1/topics/${encodeURIComponent(cleanName)}/messages?limit=200`,\n method: \"GET\",\n token: secret,\n });\n const hit = recent.messages?.find((r) =>\n r.id.startsWith(flags.replyTo!),\n );\n if (!hit) {\n render.err(\n `--reply-to ${flags.replyTo}: no recent message id starts with that prefix`,\n );\n return EXIT.INVALID_ARGS;\n }\n replyToId = hit.id;\n } else {\n render.err(\"--reply-to needs at least 6 characters of the message id\");\n return EXIT.INVALID_ARGS;\n }\n }\n\n const result = await request<PostResponse>({\n path: \"/api/v1/messages\",\n method: \"POST\",\n token: secret,\n body: {\n topic: cleanName,\n ciphertext,\n nonce,\n bodyVersion,\n ...(mentions.length > 0 ? { mentions } : {}),\n ...(replyToId ? { replyToId } : {}),\n },\n });\n\n if (flags.json) {\n console.log(JSON.stringify({ ...result, bodyVersion, mentions }));\n return EXIT.SUCCESS;\n }\n\n const versionTag = bodyVersion === 2 ? green(\"🔒 v2\") : dim(\"v1\");\n const replyTag = result.replyToId\n ? ` ${dim(\"↳ \" + result.replyToId.slice(0, 8))}`\n : \"\";\n render.ok(\n \"posted\",\n `${clay(\"#\" + cleanName)} ${versionTag}${replyTag} ${dim(`(${result.notifications} mentions)`)}`,\n );\n return EXIT.SUCCESS;\n },\n );\n}\n",
|
|
137
137
|
"/**\n * `claudemesh notification list` — recent @-mentions of the viewer\n * across topics in the chosen mesh. Server-side regex match over the\n * v0.2.0 plaintext-base64 ciphertext; the v0.3.0 per-topic encryption\n * cut will move this to a notification table populated at write time.\n */\n\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface NotificationFlags {\n mesh?: string;\n json?: boolean;\n since?: string;\n}\n\ninterface NotificationRow {\n id: string;\n topicId: string;\n topicName: string;\n senderName: string;\n senderPubkey: string;\n ciphertext: string;\n createdAt: string;\n}\n\ninterface NotificationsResponse {\n notifications: NotificationRow[];\n since: string;\n mentionedAs: string;\n}\n\nfunction decodeCiphertext(b64: string): string {\n try {\n return Buffer.from(b64, \"base64\").toString(\"utf-8\");\n } catch {\n return \"[decode failed]\";\n }\n}\n\nfunction fmtRelative(iso: string): string {\n const ms = Date.now() - new Date(iso).getTime();\n if (ms < 60_000) return \"now\";\n if (ms < 3_600_000) return `${Math.floor(ms / 60_000)}m`;\n if (ms < 86_400_000) return `${Math.floor(ms / 3_600_000)}h`;\n return `${Math.floor(ms / 86_400_000)}d`;\n}\n\nexport async function runNotificationList(flags: NotificationFlags): Promise<number> {\n return withRestKey(\n { meshSlug: flags.mesh ?? null, purpose: \"notifications\" },\n async ({ secret }) => {\n const qs = flags.since ? `?since=${encodeURIComponent(flags.since)}` : \"\";\n const result = await request<NotificationsResponse>({\n path: `/api/v1/notifications${qs}`,\n token: secret,\n });\n\n if (flags.json) {\n const decoded = result.notifications.map((n) => ({\n ...n,\n message: decodeCiphertext(n.ciphertext),\n }));\n console.log(JSON.stringify({ ...result, notifications: decoded }, null, 2));\n return EXIT.SUCCESS;\n }\n\n if (result.notifications.length === 0) {\n render.info(\n dim(`no mentions of @${result.mentionedAs} since ${result.since}.`),\n );\n return EXIT.SUCCESS;\n }\n\n render.section(\n `mentions of @${bold(result.mentionedAs)} (${result.notifications.length})`,\n );\n for (const n of result.notifications) {\n const when = fmtRelative(n.createdAt);\n const msg = decodeCiphertext(n.ciphertext).replace(/\\s+/g, \" \").trim();\n const snippet = msg.length > 100 ? msg.slice(0, 97) + \"…\" : msg;\n process.stdout.write(\n ` ${clay(\"#\" + n.topicName)} ${dim(when)} ${bold(n.senderName)}\\n`,\n );\n process.stdout.write(` ${snippet}\\n`);\n }\n return EXIT.SUCCESS;\n },\n );\n}\n",
|
|
138
138
|
"/**\n * `claudemesh member list` — every (non-revoked) member of the chosen\n * mesh, decorated with online state. Distinct from `peer list`: peers\n * shows live WS sessions, members shows roster.\n */\n\nimport { withRestKey } from \"~/services/api/with-rest-key.js\";\nimport { request } from \"~/services/api/client.js\";\nimport { render } from \"~/ui/render.js\";\nimport { bold, clay, dim, green, red, yellow } from \"~/ui/styles.js\";\nimport { EXIT } from \"~/constants/exit-codes.js\";\n\nexport interface MemberFlags {\n mesh?: string;\n json?: boolean;\n /** Show only online members. */\n online?: boolean;\n}\n\ninterface MemberRow {\n memberId: string;\n pubkey: string;\n displayName: string;\n role: string;\n isHuman: boolean;\n joinedAt: string;\n online: boolean;\n status: string;\n summary: string | null;\n}\n\nfunction statusGlyph(m: MemberRow): string {\n if (!m.online) return dim(\"○\");\n if (m.status === \"dnd\") return red(\"●\");\n if (m.status === \"working\") return yellow(\"●\");\n return green(\"●\");\n}\n\nexport async function runMemberList(flags: MemberFlags): Promise<number> {\n return withRestKey(\n { meshSlug: flags.mesh ?? null, purpose: \"members\" },\n async ({ secret, meshSlug }) => {\n const result = await request<{ members: MemberRow[] }>({\n path: \"/api/v1/members\",\n token: secret,\n });\n\n const filtered = flags.online\n ? result.members.filter((m) => m.online)\n : result.members;\n\n if (flags.json) {\n console.log(JSON.stringify({ members: filtered }, null, 2));\n return EXIT.SUCCESS;\n }\n\n if (filtered.length === 0) {\n render.info(\n dim(flags.online ? `no online members in ${meshSlug}.` : `no members in ${meshSlug}.`),\n );\n return EXIT.SUCCESS;\n }\n\n const onlineCount = result.members.filter((m) => m.online).length;\n render.section(\n `${clay(meshSlug)} members (${onlineCount}/${result.members.length} online)`,\n );\n for (const m of filtered) {\n const tag = m.isHuman ? dim(\"human\") : dim(\"bot\");\n const summary = m.summary ? ` — ${dim(m.summary)}` : \"\";\n process.stdout.write(\n ` ${statusGlyph(m)} ${bold(m.displayName)} ${tag} ${dim(m.role)} ${dim(m.pubkey.slice(0, 8))}${summary}\\n`,\n );\n }\n return EXIT.SUCCESS;\n },\n );\n}\n",
|
|
139
139
|
"/**\n * MCP tool definitions exposed to Claude Code.\n *\n * Empty in 1.5.0: claudemesh's MCP role is a tool-less push-pipe. Inbound\n * peer messages arrive as `claude/channel` notifications (still wired in\n * server.ts); every other action (send, list peers, profile, vector, sql,\n * task, schedule…) lives behind `claudemesh <verb>` and is taught to Claude\n * via the bundled skill at ~/.claude/skills/claudemesh/SKILL.md.\n *\n * Spec: .artifacts/specs/2026-05-02-architecture-north-star.md commitments\n * #1 (CLI is the API), #6 (MCP is a tool-less push-pipe).\n */\n\nimport type { Tool } from \"@modelcontextprotocol/sdk/types.js\";\n\nexport const TOOLS: Tool[] = [];\n",
|
|
140
140
|
"/**\n * Bridge server — the MCP push-pipe runs one of these per connected mesh.\n *\n * Listens on a Unix domain socket at `~/.claudemesh/sockets/<mesh-slug>.sock`,\n * accepts line-delimited JSON requests from CLI invocations, dispatches each\n * request to the corresponding `BrokerClient` method, and writes the response\n * back on the same line.\n *\n * Lifecycle:\n * - `startBridgeServer(client)` is called from the MCP push-pipe boot path\n * once the WS is connected (or even before — verbs that need an open WS\n * will return an error).\n * - On startup it `unlinks` any stale socket file (left by a crashed\n * prior process), then `listen`s.\n * - On shutdown (`stop()`) it closes the listener and unlinks the socket.\n *\n * Concurrency: each accepted connection gets its own line-buffered parser.\n * Multiple in-flight requests are correlated by `id`; the server doesn't\n * need to serialize because the underlying `BrokerClient` calls are\n * `async` and non-blocking.\n *\n * Error model: malformed lines are dropped silently (don't tear down the\n * socket). Unknown verbs return `{ok: false, error: \"unknown verb\"}`.\n * Broker errors are wrapped into the `error` string.\n */\n\nimport { createServer, type Server, type Socket } from \"node:net\";\nimport { mkdirSync, unlinkSync, existsSync, chmodSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport type { BrokerClient } from \"~/services/broker/facade.js\";\nimport {\n socketPath,\n socketDir,\n frame,\n LineParser,\n type BridgeRequest,\n type BridgeResponse,\n type BridgeVerb,\n} from \"./protocol.js\";\n\nexport interface BridgeServer {\n stop(): void;\n path: string;\n}\n\ntype PeerStatus = \"idle\" | \"working\" | \"dnd\";\n\n/**\n * Resolve a `to` string to a broker-friendly target spec. Mirrors what\n * `commands/send.ts` does today — display name → pubkey, hex stays hex,\n * `@group` and `*` pass through.\n */\nasync function resolveTarget(\n client: BrokerClient,\n to: string,\n): Promise<{ ok: true; spec: string } | { ok: false; error: string }> {\n if (to.startsWith(\"@\") || to === \"*\" || /^[0-9a-f]{64}$/i.test(to)) {\n return { ok: true, spec: to };\n }\n const peers = await client.listPeers();\n const match = peers.find((p) => p.displayName.toLowerCase() === to.toLowerCase());\n if (!match) {\n return {\n ok: false,\n error: `peer \"${to}\" not found. online: ${peers.map((p) => p.displayName).join(\", \") || \"(none)\"}`,\n };\n }\n return { ok: true, spec: match.pubkey };\n}\n\nasync function dispatch(\n client: BrokerClient,\n req: BridgeRequest,\n): Promise<BridgeResponse> {\n const args = req.args ?? {};\n try {\n switch (req.verb as BridgeVerb) {\n case \"ping\": {\n const peers = await client.listPeers();\n return {\n id: req.id,\n ok: true,\n result: {\n mesh: client.meshSlug,\n ws_status: client.status,\n peers_online: peers.length,\n push_buffer: client.pushHistory.length,\n },\n };\n }\n case \"peers\": {\n const peers = await client.listPeers();\n return { id: req.id, ok: true, result: peers };\n }\n case \"send\": {\n const to = String(args.to ?? \"\");\n const message = String(args.message ?? \"\");\n const priority = (args.priority as \"now\" | \"next\" | \"low\" | undefined) ?? \"next\";\n if (!to || !message) {\n return { id: req.id, ok: false, error: \"send: `to` and `message` required\" };\n }\n const resolved = await resolveTarget(client, to);\n if (!resolved.ok) return { id: req.id, ok: false, error: resolved.error };\n const result = await client.send(resolved.spec, message, priority);\n if (!result.ok) {\n return { id: req.id, ok: false, error: result.error ?? \"send failed\" };\n }\n return {\n id: req.id,\n ok: true,\n result: { messageId: result.messageId, target: resolved.spec },\n };\n }\n case \"summary\": {\n const text = String(args.summary ?? \"\");\n if (!text) return { id: req.id, ok: false, error: \"summary: `summary` required\" };\n await client.setSummary(text);\n return { id: req.id, ok: true, result: { summary: text } };\n }\n case \"status_set\": {\n const state = String(args.status ?? \"\") as PeerStatus;\n if (![\"idle\", \"working\", \"dnd\"].includes(state)) {\n return { id: req.id, ok: false, error: \"status_set: must be idle | working | dnd\" };\n }\n await client.setStatus(state);\n return { id: req.id, ok: true, result: { status: state } };\n }\n case \"visible\": {\n const visible = Boolean(args.visible);\n await client.setVisible(visible);\n return { id: req.id, ok: true, result: { visible } };\n }\n default:\n return { id: req.id, ok: false, error: `unknown verb: ${req.verb}` };\n }\n } catch (err) {\n return {\n id: req.id,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\nfunction handleConnection(socket: Socket, client: BrokerClient): void {\n const parser = new LineParser();\n\n socket.on(\"data\", (chunk) => {\n const lines = parser.feed(chunk);\n for (const line of lines) {\n if (!line.trim()) continue;\n let req: BridgeRequest;\n try {\n req = JSON.parse(line) as BridgeRequest;\n } catch {\n continue;\n }\n if (!req || typeof req !== \"object\" || !req.id || !req.verb) continue;\n\n // Fire-and-await without blocking the read loop.\n void dispatch(client, req).then((res) => {\n try {\n socket.write(frame(res));\n } catch {\n /* socket might have closed mid-flight; ignore */\n }\n });\n }\n });\n\n socket.on(\"error\", () => {\n // Don't crash the push-pipe on per-connection errors.\n });\n}\n\n/**\n * Start the per-mesh bridge server. Returns a handle the caller stores so\n * it can `stop()` on shutdown.\n *\n * Idempotent: if a socket file already exists, attempts to connect to it.\n * If that connection succeeds, another live process owns it — return null.\n * If it fails (ECONNREFUSED), the file is stale; unlink it and proceed.\n */\nexport function startBridgeServer(client: BrokerClient): BridgeServer | null {\n const path = socketPath(client.meshSlug);\n const dir = socketDir();\n\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true, mode: 0o700 });\n }\n\n // Last-writer-wins: unconditionally remove any existing socket file and\n // bind fresh. A live process previously holding it keeps its already-\n // accepted connections (sockets aren't path-based after connect), but\n // new CLI dials hit the new server. In practice this only matters when\n // two `claudemesh launch` invocations target the same mesh — rare, and\n // either instance serving CLI requests is fine because both speak to\n // the same broker.\n if (existsSync(path)) {\n try { unlinkSync(path); } catch {}\n }\n\n const server: Server = createServer((socket) => handleConnection(socket, client));\n\n try {\n server.listen(path);\n } catch (err) {\n process.stderr.write(`[claudemesh] bridge: failed to bind ${path}: ${String(err)}\\n`);\n return null;\n }\n\n server.on(\"error\", (err) => {\n process.stderr.write(`[claudemesh] bridge: ${String(err)}\\n`);\n });\n\n // Tighten permissions so other users on the host can't dial in.\n try { chmodSync(path, 0o600); } catch {}\n\n let stopped = false;\n return {\n path,\n stop(): void {\n if (stopped) return;\n stopped = true;\n try { server.close(); } catch {}\n try { unlinkSync(path); } catch {}\n },\n };\n}\n",
|
|
141
|
-
"/**\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\";\n// CallToolRequestSchema is still imported for the mesh-service proxy mode\n// further down; the main MCP server has no tools as of 1.5.0 (tool-less\n// push-pipe — spec 2026-05-02 commitment #6).\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 { startBridgeServer, type BridgeServer } from \"~/services/bridge/server.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 // --mesh <slug>: bind this MCP server to a single mesh from the user's\n // joined-meshes config. Used for the per-mesh push-pipe pattern in\n // ~/.claude.json — one MCP entry per mesh, each holds one WS, push\n // notifications fan out across all meshes simultaneously.\n // Default behavior (no flag): connect to every mesh in config.\n const meshIdx = process.argv.indexOf(\"--mesh\");\n const onlyMesh = meshIdx !== -1 ? process.argv[meshIdx + 1] : null;\n\n const config = readConfig();\n\n if (onlyMesh) {\n const available = config.meshes.map((m) => m.slug);\n const filtered = config.meshes.filter((m) => m.slug === onlyMesh);\n if (filtered.length === 0) {\n process.stderr.write(\n `[claudemesh] --mesh \"${onlyMesh}\" not found in config. ` +\n `Joined meshes: ${available.join(\", \") || \"(none)\"}\\n`,\n );\n process.exit(1);\n }\n config.meshes = filtered;\n }\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\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 // Bridge servers — one Unix socket per connected mesh so CLI invocations\n // can reuse this push-pipe's warm WS instead of opening their own\n // (~5ms warm vs ~300-700ms cold). See spec 2026-05-02 commitment #3.\n const bridges: BridgeServer[] = [];\n\n // Connect to broker WS in background — don't block MCP startup.\n startClients(config).then(() => {\n wirePushHandlers().catch(() => {});\n // Start one bridge socket per connected mesh. Done after WS connect so\n // the BrokerClient is in a usable state when CLI requests arrive.\n for (const client of allClients()) {\n const bridge = startBridgeServer(client);\n if (bridge) bridges.push(bridge);\n }\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 for (const b of bridges) {\n try { b.stop(); } catch {}\n }\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",
|
|
141
|
+
"/**\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\";\n// CallToolRequestSchema is still imported for the mesh-service proxy mode\n// further down; the main MCP server has no tools as of 1.5.0 (tool-less\n// push-pipe — spec 2026-05-02 commitment #6).\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 { startBridgeServer, type BridgeServer } from \"~/services/bridge/server.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 // --mesh <slug>: bind this MCP server to a single mesh from the user's\n // joined-meshes config. Used for the per-mesh push-pipe pattern in\n // ~/.claude.json — one MCP entry per mesh, each holds one WS, push\n // notifications fan out across all meshes simultaneously.\n // Default behavior (no flag): connect to every mesh in config.\n const meshIdx = process.argv.indexOf(\"--mesh\");\n const onlyMesh = meshIdx !== -1 ? process.argv[meshIdx + 1] : null;\n\n const config = readConfig();\n\n if (onlyMesh) {\n const available = config.meshes.map((m) => m.slug);\n const filtered = config.meshes.filter((m) => m.slug === onlyMesh);\n if (filtered.length === 0) {\n process.stderr.write(\n `[claudemesh] --mesh \"${onlyMesh}\" not found in config. ` +\n `Joined meshes: ${available.join(\", \") || \"(none)\"}\\n`,\n );\n process.exit(1);\n }\n config.meshes = filtered;\n }\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 (or \\`claudemesh topic post --reply-to <message_id>\\` for topic threads), then resume. Stay in character per your system prompt. Do not ignore low-priority messages — acknowledge them briefly even if you defer action.\n\nThe channel attributes carry everything you need to reply — no extra lookups:\n- \\`from_name\\` — sender display name. Use as the \\`to\\` arg when replying to a DM.\n- \\`from_pubkey\\` / \\`from_member_id\\` — stable ids. Use \\`from_member_id\\` if the sender's display name might change.\n- \\`mesh_slug\\` — pass via \\`--mesh\\` if your default mesh differs.\n- \\`priority\\` — \\`now\\` / \\`next\\` / \\`low\\`.\n- \\`message_id\\` — id of THIS message. To thread a reply onto it in a topic, run \\`claudemesh topic post <topic> \"<text>\" --reply-to <message_id>\\`.\n- \\`topic\\` — set when the message arrived through a topic (vs DM). Reply in the same topic.\n- \\`reply_to_id\\` — set when the incoming message is itself a reply. Render thread context if you re-narrate.\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\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 // Bridge servers — one Unix socket per connected mesh so CLI invocations\n // can reuse this push-pipe's warm WS instead of opening their own\n // (~5ms warm vs ~300-700ms cold). See spec 2026-05-02 commitment #3.\n const bridges: BridgeServer[] = [];\n\n // Connect to broker WS in background — don't block MCP startup.\n startClients(config).then(() => {\n wirePushHandlers().catch(() => {});\n // Start one bridge socket per connected mesh. Done after WS connect so\n // the BrokerClient is in a usable state when CLI requests arrive.\n for (const client of allClients()) {\n const bridge = startBridgeServer(client);\n if (bridge) bridges.push(bridge);\n }\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 // `from_id` MUST be a stable replyable id. Older clients of this\n // channel have been pasting from_id straight back into\n // `claudemesh send <id>`; if from_id is the SESSION pubkey it\n // bounces with \"no connected peer\" the moment the sender's\n // session restarts. Send the MEMBER pubkey (stable across\n // reconnects) as from_id, and keep the ephemeral session pubkey\n // available under from_session_pubkey for crypto-aware callers.\n const fromMemberPubkey = msg.senderMemberPubkey ?? fromPubkey;\n try {\n await server.notification({\n method: \"notifications/claude/channel\",\n params: {\n content,\n meta: {\n from_id: fromMemberPubkey,\n from_pubkey: fromMemberPubkey,\n from_session_pubkey: fromPubkey,\n from_name: fromName,\n ...(msg.senderMemberId ? { from_member_id: msg.senderMemberId } : {}),\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 message_id: msg.messageId,\n ...(msg.topic ? { topic: msg.topic } : {}),\n ...(msg.replyToId ? { reply_to_id: msg.replyToId } : {}),\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 for (const b of bridges) {\n try { b.stop(); } catch {}\n }\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",
|
|
142
142
|
"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",
|
|
143
143
|
"/**\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",
|
|
144
144
|
"/**\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",
|
|
@@ -148,12 +148,12 @@
|
|
|
148
148
|
"import { URLS } from \"~/constants/urls.js\";\nimport { TIMINGS } from \"~/constants/timings.js\";\nimport { isNewer } from \"~/utils/semver.js\";\n\nexport interface UpdateInfo {\n current: string;\n latest: string;\n updateAvailable: boolean;\n}\n\nexport async function checkForUpdate(currentVersion: string): Promise<UpdateInfo> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), TIMINGS.API_TIMEOUT_MS);\n\n try {\n const res = await fetch(URLS.NPM_REGISTRY, {\n signal: controller.signal,\n headers: { Accept: \"application/vnd.npm.install-v1+json\" },\n });\n if (!res.ok) return { current: currentVersion, latest: currentVersion, updateAvailable: false };\n\n const data = (await res.json()) as { \"dist-tags\"?: { latest?: string } };\n const latest = data[\"dist-tags\"]?.latest ?? currentVersion;\n\n return {\n current: currentVersion,\n latest,\n updateAvailable: isNewer(currentVersion, latest),\n };\n } catch {\n return { current: currentVersion, latest: currentVersion, updateAvailable: false };\n } finally {\n clearTimeout(timeout);\n }\n}\n",
|
|
149
149
|
"export function isNewer(current: string, latest: string): boolean {\n const cp = current.split(\".\").map(Number);\n const lp = latest.split(\".\").map(Number);\n const a = cp[0] ?? 0, b = cp[1] ?? 0, c = cp[2] ?? 0;\n const x = lp[0] ?? 0, y = lp[1] ?? 0, z = lp[2] ?? 0;\n return x > a || (x === a && y > b) || (x === a && y === b && z > c);\n}\n",
|
|
150
150
|
"import { checkForUpdate } from \"~/services/update/facade.js\";\nimport { dim, yellow } from \"~/ui/styles.js\";\nexport async function showUpdateNotice(currentVersion: string): Promise<void> {\n try {\n const info = await checkForUpdate(currentVersion);\n if (info.updateAvailable) {\n console.error(yellow(\" Update available: \" + info.current + \" \\u2192 \" + info.latest));\n console.error(dim(\" Run: npm i -g claudemesh-cli\"));\n }\n } catch {}\n}\n",
|
|
151
|
-
"#!/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\";\nimport { classifyInvocation } from \"~/cli/policy-classify.js\";\nimport { gate, type ApprovalMode } from \"~/services/policy/index.js\";\n\ninstallSignalHandlers();\ninstallErrorHandlers();\n\nconst { command, positionals, flags } = parseArgv(process.argv);\n\n/**\n * Resolve the coarse approval mode from CLI flags + env.\n * --approval-mode <plan|read-only|write|yolo> explicit\n * -y / --yes legacy: yolo\n * $CLAUDEMESH_APPROVAL_MODE env override\n * default 'write'\n */\nfunction resolveApprovalMode(): ApprovalMode {\n const raw = (flags[\"approval-mode\"] as string | undefined)\n ?? process.env.CLAUDEMESH_APPROVAL_MODE\n ?? null;\n if (raw === \"plan\" || raw === \"read-only\" || raw === \"write\" || raw === \"yolo\") return raw;\n if (flags.y || flags.yes) return \"yolo\";\n return \"write\";\n}\n\n/**\n * Run the policy gate before dispatching a command. Returns `true` if the\n * caller should proceed; on `false`, the process should exit non-zero.\n *\n * Off-mesh commands (help, login, install...) classify as `null` and skip\n * the gate entirely — there's no broker to mutate.\n */\nasync function policyGate(): Promise<boolean> {\n const cls = classifyInvocation(command, positionals);\n if (!cls) return true;\n const mode = resolveApprovalMode();\n const yes = !!flags.y || !!flags.yes || mode === \"yolo\";\n const ok = await gate(\n {\n resource: cls.resource,\n verb: cls.verb,\n mesh: flags.mesh as string | undefined,\n mode,\n isWrite: cls.isWrite,\n yes,\n },\n { policyPath: flags.policy as string | undefined },\n );\n return ok;\n}\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\nPeer (resource form, recommended)\n claudemesh peer list see who's online (alias: peers)\n claudemesh peer kick <p> end session (alias: kick)\n claudemesh peer disconnect <p> soft disconnect (alias: disconnect)\n claudemesh peer ban <p> ban + revoke (alias: ban)\n claudemesh peer unban <p> lift a ban (alias: unban)\n claudemesh peer bans list banned members (alias: bans)\n claudemesh peer verify [p] safety numbers (alias: verify)\n\nMessage (resource form)\n claudemesh message send <to> <m> send a message (alias: send)\n claudemesh message inbox drain pending (alias: inbox)\n claudemesh message status <id> delivery status (alias: msg-status)\n\nMemory (resource form)\n claudemesh memory remember <txt> store a memory (alias: remember)\n claudemesh memory recall <q> search memories (alias: recall)\n claudemesh memory forget <id> remove a memory (alias: forget)\n\nProfile / presence (resource form)\n claudemesh profile view or edit profile\n claudemesh profile summary <txt> broadcast summary (alias: summary)\n claudemesh profile visible y|n toggle visibility (alias: visible)\n claudemesh profile status set X set status idle/working/dnd (alias: status set)\n claudemesh group join @<name> join a group (--role X)\n claudemesh group leave @<name> leave a group\n\nAPI keys (REST + external WS auth, v0.2.0)\n claudemesh apikey create <label> issue [--cap send,read] [--topic deploys]\n claudemesh apikey list show keys (status, last-used, scope)\n claudemesh apikey revoke <id> revoke a key\n\nBridge (forward a topic between two meshes, v0.2.0)\n claudemesh bridge init print config template\n claudemesh bridge run <config> run bridge as a long-lived process\n\nTopic (conversation scope, v0.2.0)\n claudemesh topic create <name> create a topic [--description --visibility]\n claudemesh topic list list topics in the mesh\n claudemesh topic join <topic> subscribe (via name or id)\n claudemesh topic leave <topic> unsubscribe\n claudemesh topic members <t> list topic subscribers\n claudemesh topic history <t> fetch message history [--limit --before]\n claudemesh topic read <topic> mark all as read\n claudemesh topic tail <topic> live SSE tail [--limit --forward-only]\n claudemesh topic post <t> <msg> encrypted REST post (v0.3.0 v2)\n claudemesh send \"#topic\" \"msg\" send to a topic (WS path, v1 plaintext)\n claudemesh member list mesh roster with online state [--online]\n claudemesh notification list recent @-mentions of you [--since <ISO>]\n\nSchedule (resource form)\n claudemesh schedule msg <m> one-shot or recurring (alias: remind)\n claudemesh schedule list list pending\n claudemesh schedule cancel <id> remove a scheduled item\n\nState / mesh introspection\n claudemesh state get|set|list shared state\n claudemesh info mesh overview\n claudemesh stats per-peer activity counters\n claudemesh ping diagnostic round-trip\n\nTasks\n claudemesh task create <title> create a new task [--assignee --priority --tags]\n claudemesh task list list tasks [--status --assignee]\n claudemesh task claim <id> claim an unclaimed task\n claudemesh task complete <id> mark task done [result]\n\nPlatform\n claudemesh vector store|search|delete|collections embedding store\n claudemesh graph query|execute \"<cypher>\" graph operations\n claudemesh context share|get|list work-context summaries\n claudemesh stream create|publish|list pub/sub event bus\n claudemesh sql query|execute|schema per-mesh SQL\n claudemesh skill list|get|remove mesh-published skills\n claudemesh vault list|delete encrypted secrets\n claudemesh watch list|remove URL change watchers\n claudemesh webhook list|delete outbound HTTP triggers\n claudemesh file list|status|delete shared mesh files\n claudemesh mesh-mcp list|call|catalog deployed mesh-MCP servers\n claudemesh clock set|pause|resume mesh logical clock\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 --approval-mode <mode> plan | read-only | write (default) | yolo\n --policy <path> override policy file\n -y, --yes skip confirmations (= --approval-mode yolo)\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 // Policy gate — runs before any broker-touching command. Skipped for help,\n // version, login/install, list, and other local-only ops via classifier.\n if (!(await policyGate())) process.exit(EXIT.PERMISSION_DENIED);\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 as boolean | string | undefined }); break; }\n case \"send\": { const { runSend } = await import(\"~/commands/send.js\"); await runSend({ mesh: flags.mesh as string, priority: flags.priority as string, json: !!flags.json }, 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(\" \"), { mesh: flags.mesh as string, 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(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"forget\": { const { runForget } = await import(\"~/commands/broker-actions.js\"); process.exit(await runForget(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"remind\": { const { runRemind } = await import(\"~/commands/remind.js\"); await runRemind({ mesh: flags.mesh as string }, positionals); break; }\n // (profile case moved to resource-aliases block below for sub-command extensibility)\n\n // Profile / status / visibility / groups (replacing soft-deprecated MCP tools)\n case \"summary\": { const { runSummary } = await import(\"~/commands/broker-actions.js\"); process.exit(await runSummary(positionals.join(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"visible\": { const { runVisible } = await import(\"~/commands/broker-actions.js\"); process.exit(await runVisible(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"group\": {\n const sub = positionals[0];\n if (sub === \"join\") { const { runGroupJoin } = await import(\"~/commands/broker-actions.js\"); process.exit(await runGroupJoin(positionals[1], { mesh: flags.mesh as string, role: flags.role as string, json: !!flags.json })); }\n else if (sub === \"leave\") { const { runGroupLeave } = await import(\"~/commands/broker-actions.js\"); process.exit(await runGroupLeave(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh group <join|leave> @<name> [--role X]\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // Mesh diagnostics + tasks\n case \"msg-status\": { const { runMsgStatus } = await import(\"~/commands/broker-actions.js\"); process.exit(await runMsgStatus(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"stats\": { const { runStats } = await import(\"~/commands/broker-actions.js\"); process.exit(await runStats({ mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"ping\": { const { runPing } = await import(\"~/commands/broker-actions.js\"); process.exit(await runPing({ mesh: flags.mesh as string, json: !!flags.json })); break; }\n // (clock + task moved to platform-actions block below for sub-command extensibility)\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\": {\n // `claudemesh status set <state>` → set peer status (idle/working/dnd)\n // `claudemesh status` (no args) → broker connectivity diagnostic\n if (positionals[0] === \"set\") {\n const { runStatusSet } = await import(\"~/commands/broker-actions.js\");\n process.exit(await runStatusSet(positionals[1] ?? \"\", { mesh: flags.mesh as string, json: !!flags.json }));\n } else {\n const { runStatus } = await import(\"~/commands/status.js\");\n await runStatus();\n }\n break;\n }\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 // ── Resource-model aliases (1.4.0) ─────────────────────────────────\n // Each `<resource> <verb>` form proxies to the existing legacy verb.\n // The legacy verbs (`send`, `peers`, `kick`, `remember`, ...) keep\n // working so old scripts never break. Spec: 2026-05-02 commitment #2.\n\n case \"peer\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: flags.json as boolean | string | undefined };\n const id = positionals[1] ?? \"\";\n if (sub === \"list\") { const { runPeers } = await import(\"~/commands/peers.js\"); await runPeers(f); }\n else if (sub === \"kick\") { const { runKick } = await import(\"~/commands/kick.js\"); process.exit(await runKick(id, { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); }\n else if (sub === \"disconnect\") { const { runDisconnect } = await import(\"~/commands/kick.js\"); process.exit(await runDisconnect(id, { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); }\n else if (sub === \"ban\") { const { runBan } = await import(\"~/commands/ban.js\"); process.exit(await runBan(id, { mesh: flags.mesh as string })); }\n else if (sub === \"unban\") { const { runUnban } = await import(\"~/commands/ban.js\"); process.exit(await runUnban(id, { mesh: flags.mesh as string })); }\n else if (sub === \"bans\") { const { runBans } = await import(\"~/commands/ban.js\"); process.exit(await runBans({ mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"verify\") { const { runVerify } = await import(\"~/commands/verify.js\"); process.exit(await runVerify(id || undefined, { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh peer <list|kick|disconnect|ban|unban|bans|verify>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"message\": {\n const sub = positionals[0];\n if (sub === \"send\") { const { runSend } = await import(\"~/commands/send.js\"); await runSend({ mesh: flags.mesh as string, priority: flags.priority as string, json: !!flags.json }, positionals[1] ?? \"\", positionals.slice(2).join(\" \")); }\n else if (sub === \"inbox\") { const { runInbox } = await import(\"~/commands/inbox.js\"); await runInbox({ json: !!flags.json }); }\n else if (sub === \"status\") { const { runMsgStatus } = await import(\"~/commands/broker-actions.js\"); process.exit(await runMsgStatus(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh message <send|inbox|status>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"memory\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"remember\") { const { remember } = await import(\"~/commands/remember.js\"); process.exit(await remember(positionals.slice(1).join(\" \"), { ...f, tags: flags.tags as string })); }\n else if (sub === \"recall\") { const { recall } = await import(\"~/commands/recall.js\"); process.exit(await recall(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"forget\") { const { runForget } = await import(\"~/commands/broker-actions.js\"); process.exit(await runForget(positionals[1], f)); }\n else { console.error(\"Usage: claudemesh memory <remember|recall|forget>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"profile\": {\n const sub = positionals[0];\n // `claudemesh profile` (no sub) → existing runProfile (interactive view/edit)\n // `claudemesh profile summary \"x\"` → set summary\n // `claudemesh profile visible true` → set visibility\n // `claudemesh profile status set <state>` → set peer status\n if (!sub) { const { runProfile } = await import(\"~/commands/profile.js\"); await runProfile(flags as any); }\n else if (sub === \"summary\") { const { runSummary } = await import(\"~/commands/broker-actions.js\"); process.exit(await runSummary(positionals.slice(1).join(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"visible\") { const { runVisible } = await import(\"~/commands/broker-actions.js\"); process.exit(await runVisible(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"status\") {\n // `profile status` (no further sub) → diagnostic via runStatus\n // `profile status set <state>` → set peer status\n if (positionals[1] === \"set\") { const { runStatusSet } = await import(\"~/commands/broker-actions.js\"); process.exit(await runStatusSet(positionals[2] ?? \"\", { mesh: flags.mesh as string, json: !!flags.json })); }\n else { const { runStatus } = await import(\"~/commands/status.js\"); await runStatus(); }\n }\n else { console.error(\"Usage: claudemesh profile [summary|visible|status]\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"schedule\": {\n // Aliases `remind` and its subcommands under a unified `schedule` verb.\n // The unified `schedule webhook/tool` primitives need broker work and\n // arrive in a later release — for now `schedule` only covers msg-style.\n const sub = positionals[0];\n if (sub === \"msg\" || sub === \"remind\" || sub === undefined || sub === \"list\" || sub === \"cancel\") {\n const { runRemind } = await import(\"~/commands/remind.js\");\n // Translate `schedule msg ...` and bare `schedule list/cancel` into\n // the legacy remind positional layout.\n const remindPositionals =\n sub === \"msg\" ? positionals.slice(1)\n : sub === \"remind\" ? positionals.slice(1)\n : positionals; // list / cancel / undefined\n await runRemind({ mesh: flags.mesh as string, in: flags.in as string, at: flags.at as string, cron: flags.cron as string, to: flags.to as string, json: !!flags.json }, remindPositionals);\n }\n else if (sub === \"webhook\" || sub === \"tool\") {\n console.error(` schedule ${sub} arrives in a later release — broker primitive not yet shipped`);\n process.exit(EXIT.INVALID_ARGS);\n }\n else { console.error(\"Usage: claudemesh schedule <msg|list|cancel>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // Platform — vector / graph / context / stream / sql / skill / vault / watch / webhook / file / mesh-mcp\n case \"vector\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"store\") { const { runVectorStore } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorStore(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), { ...f, metadata: flags.metadata as string })); }\n else if (sub === \"search\") { const { runVectorSearch } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorSearch(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), { ...f, limit: flags.limit as string })); }\n else if (sub === \"delete\") { const { runVectorDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorDelete(positionals[1] ?? \"\", positionals[2] ?? \"\", f)); }\n else if (sub === \"collections\") { const { runVectorCollections } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorCollections(f)); }\n else { console.error(\"Usage: claudemesh vector <store|search|delete|collections>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"graph\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"query\") { const { runGraphQuery } = await import(\"~/commands/platform-actions.js\"); process.exit(await runGraphQuery(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"execute\") { const { runGraphExecute } = await import(\"~/commands/platform-actions.js\"); process.exit(await runGraphExecute(positionals.slice(1).join(\" \"), f)); }\n else { console.error(\"Usage: claudemesh graph <query|execute> \\\"<cypher>\\\"\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"context\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"share\") { const { runContextShare } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextShare(positionals.slice(1).join(\" \"), { ...f, files: flags.files as string, findings: flags.findings as string, tags: flags.tags as string })); }\n else if (sub === \"get\") { const { runContextGet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextGet(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"list\") { const { runContextList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextList(f)); }\n else { console.error(\"Usage: claudemesh context <share|get|list>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"stream\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"create\") { const { runStreamCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamCreate(positionals[1] ?? \"\", f)); }\n else if (sub === \"publish\") { const { runStreamPublish } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamPublish(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), f)); }\n else if (sub === \"list\") { const { runStreamList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamList(f)); }\n else { console.error(\"Usage: claudemesh stream <create|publish|list>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"sql\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"query\") { const { runSqlQuery } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlQuery(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"execute\") { const { runSqlExecute } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlExecute(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"schema\") { const { runSqlSchema } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlSchema(f)); }\n else { console.error(\"Usage: claudemesh sql <query|execute|schema>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"skill\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runSkillList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillList({ ...f, query: positionals[1] })); }\n else if (sub === \"get\") { const { runSkillGet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillGet(positionals[1] ?? \"\", f)); }\n else if (sub === \"remove\") { const { runSkillRemove } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillRemove(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh skill <list|get|remove>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"vault\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runVaultList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVaultList(f)); }\n else if (sub === \"delete\") { const { runVaultDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVaultDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh vault <list|delete> (set/get currently via MCP — needs crypto)\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"watch\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runWatchList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWatchList(f)); }\n else if (sub === \"remove\") { const { runUnwatch } = await import(\"~/commands/platform-actions.js\"); process.exit(await runUnwatch(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh watch <list|remove>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"webhook\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runWebhookList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookList(f)); }\n else if (sub === \"delete\") { const { runWebhookDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh webhook <list|delete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"file\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runFileList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileList({ ...f, query: positionals[1] })); }\n else if (sub === \"status\") { const { runFileStatus } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileStatus(positionals[1] ?? \"\", f)); }\n else if (sub === \"delete\") { const { runFileDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh file <list|status|delete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"mesh-mcp\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runMeshMcpList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpList(f)); }\n else if (sub === \"call\") { const { runMeshMcpCall } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpCall(positionals[1] ?? \"\", positionals[2] ?? \"\", positionals.slice(3).join(\" \"), f)); }\n else if (sub === \"catalog\") { const { runMeshMcpCatalog } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpCatalog(f)); }\n else { console.error(\"Usage: claudemesh mesh-mcp <list|call|catalog>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"clock\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"set\") { const { runClockSet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockSet(positionals[1] ?? \"\", f)); }\n else if (sub === \"pause\") { const { runClockPause } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockPause(f)); }\n else if (sub === \"resume\") { const { runClockResume } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockResume(f)); }\n else { const { runClock } = await import(\"~/commands/broker-actions.js\"); process.exit(await runClock(f)); }\n break;\n }\n\n // bridge — forward a topic between two meshes (v0.2.0)\n case \"bridge\": {\n const sub = positionals[0];\n if (sub === \"run\") {\n const { runBridge } = await import(\"~/commands/bridge.js\");\n process.exit(await runBridge(positionals[1] ?? \"\"));\n } else if (sub === \"init\" || sub === \"config\") {\n const { bridgeConfigTemplate } = await import(\"~/commands/bridge.js\");\n console.log(bridgeConfigTemplate());\n process.exit(EXIT.SUCCESS);\n } else {\n console.error(\"Usage: claudemesh bridge <run <config.yaml> | init>\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // apikey — REST + external WS bearer tokens (v0.2.0)\n case \"apikey\": case \"api-key\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n cap: flags.cap as string,\n topic: flags.topic as string,\n expires: flags.expires as string,\n };\n const arg = positionals[1] ?? \"\";\n if (sub === \"create\") { const { runApiKeyCreate } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyCreate(arg, f)); }\n else if (sub === \"list\") { const { runApiKeyList } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyList(f)); }\n else if (sub === \"revoke\") { const { runApiKeyRevoke } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyRevoke(arg, f)); }\n else { console.error(\"Usage: claudemesh apikey <create|list|revoke>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // topic — conversational primitive within a mesh (v0.2.0)\n case \"topic\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n description: flags.description as string,\n visibility: flags.visibility as \"public\" | \"private\" | \"dm\" | undefined,\n role: flags.role as \"lead\" | \"member\" | \"observer\" | undefined,\n limit: flags.limit as string | undefined,\n before: flags.before as string | undefined,\n };\n const arg = positionals[1] ?? \"\";\n if (sub === \"create\") { const { runTopicCreate } = await import(\"~/commands/topic.js\"); process.exit(await runTopicCreate(arg, f)); }\n else if (sub === \"list\") { const { runTopicList } = await import(\"~/commands/topic.js\"); process.exit(await runTopicList(f)); }\n else if (sub === \"join\") { const { runTopicJoin } = await import(\"~/commands/topic.js\"); process.exit(await runTopicJoin(arg, f)); }\n else if (sub === \"leave\") { const { runTopicLeave } = await import(\"~/commands/topic.js\"); process.exit(await runTopicLeave(arg, f)); }\n else if (sub === \"members\") { const { runTopicMembers } = await import(\"~/commands/topic.js\"); process.exit(await runTopicMembers(arg, f)); }\n else if (sub === \"history\") { const { runTopicHistory } = await import(\"~/commands/topic.js\"); process.exit(await runTopicHistory(arg, f)); }\n else if (sub === \"read\") { const { runTopicMarkRead } = await import(\"~/commands/topic.js\"); process.exit(await runTopicMarkRead(arg, f)); }\n else if (sub === \"tail\") {\n const tailFlags = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n limit: flags.limit as string | undefined,\n forwardOnly: !!flags[\"forward-only\"],\n };\n const { runTopicTail } = await import(\"~/commands/topic-tail.js\");\n process.exit(await runTopicTail(arg, tailFlags));\n }\n else if (sub === \"post\") {\n const postFlags = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n plaintext: !!flags.plaintext,\n };\n const message = positionals.slice(2).join(\" \");\n const { runTopicPost } = await import(\"~/commands/topic-post.js\");\n process.exit(await runTopicPost(arg, message, postFlags));\n }\n else { console.error(\"Usage: claudemesh topic <create|list|join|leave|members|history|read|tail|post>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // notification — recent @-mentions of the viewer (v1.7.0)\n case \"notification\": case \"notifications\": {\n const sub = positionals[0] ?? \"list\";\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n since: flags.since as string,\n };\n if (sub === \"list\") {\n const { runNotificationList } = await import(\"~/commands/notification.js\");\n process.exit(await runNotificationList(f));\n } else {\n console.error(\"Usage: claudemesh notification list [--since <ISO>]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // member — mesh roster with online state (v1.7.0)\n case \"member\": case \"members\": {\n const sub = positionals[0] ?? \"list\";\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n online: !!flags.online,\n };\n if (sub === \"list\") {\n const { runMemberList } = await import(\"~/commands/member.js\");\n process.exit(await runMemberList(f));\n } else {\n console.error(\"Usage: claudemesh member list [--online]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // task — extends broker-actions.ts (claim/complete) with list/create\n case \"task\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"claim\") { const { runTaskClaim } = await import(\"~/commands/broker-actions.js\"); process.exit(await runTaskClaim(positionals[1], f)); }\n else if (sub === \"complete\") { const { runTaskComplete } = await import(\"~/commands/broker-actions.js\"); process.exit(await runTaskComplete(positionals[1], positionals.slice(2).join(\" \") || undefined, f)); }\n else if (sub === \"list\") { const { runTaskList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runTaskList({ ...f, status: flags.status as string, assignee: flags.assignee as string })); }\n else if (sub === \"create\") { const { runTaskCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runTaskCreate(positionals.slice(1).join(\" \"), { ...f, assignee: flags.assignee as string, priority: flags.priority as string, tags: flags.tags as string })); }\n else { console.error(\"Usage: claudemesh task <create|list|claim|complete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\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",
|
|
151
|
+
"#!/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\";\nimport { classifyInvocation } from \"~/cli/policy-classify.js\";\nimport { gate, type ApprovalMode } from \"~/services/policy/index.js\";\n\ninstallSignalHandlers();\ninstallErrorHandlers();\n\nconst { command, positionals, flags } = parseArgv(process.argv);\n\n/**\n * Resolve the coarse approval mode from CLI flags + env.\n * --approval-mode <plan|read-only|write|yolo> explicit\n * -y / --yes legacy: yolo\n * $CLAUDEMESH_APPROVAL_MODE env override\n * default 'write'\n */\nfunction resolveApprovalMode(): ApprovalMode {\n const raw = (flags[\"approval-mode\"] as string | undefined)\n ?? process.env.CLAUDEMESH_APPROVAL_MODE\n ?? null;\n if (raw === \"plan\" || raw === \"read-only\" || raw === \"write\" || raw === \"yolo\") return raw;\n if (flags.y || flags.yes) return \"yolo\";\n return \"write\";\n}\n\n/**\n * Run the policy gate before dispatching a command. Returns `true` if the\n * caller should proceed; on `false`, the process should exit non-zero.\n *\n * Off-mesh commands (help, login, install...) classify as `null` and skip\n * the gate entirely — there's no broker to mutate.\n */\nasync function policyGate(): Promise<boolean> {\n const cls = classifyInvocation(command, positionals);\n if (!cls) return true;\n const mode = resolveApprovalMode();\n const yes = !!flags.y || !!flags.yes || mode === \"yolo\";\n const ok = await gate(\n {\n resource: cls.resource,\n verb: cls.verb,\n mesh: flags.mesh as string | undefined,\n mode,\n isWrite: cls.isWrite,\n yes,\n },\n { policyPath: flags.policy as string | undefined },\n );\n return ok;\n}\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\nPeer (resource form, recommended)\n claudemesh peer list see who's online (alias: peers)\n claudemesh peer kick <p> end session (alias: kick)\n claudemesh peer disconnect <p> soft disconnect (alias: disconnect)\n claudemesh peer ban <p> ban + revoke (alias: ban)\n claudemesh peer unban <p> lift a ban (alias: unban)\n claudemesh peer bans list banned members (alias: bans)\n claudemesh peer verify [p] safety numbers (alias: verify)\n\nMessage (resource form)\n claudemesh message send <to> <m> send a message (alias: send)\n claudemesh message inbox drain pending (alias: inbox)\n claudemesh message status <id> delivery status (alias: msg-status)\n\nMemory (resource form)\n claudemesh memory remember <txt> store a memory (alias: remember)\n claudemesh memory recall <q> search memories (alias: recall)\n claudemesh memory forget <id> remove a memory (alias: forget)\n\nProfile / presence (resource form)\n claudemesh profile view or edit profile\n claudemesh profile summary <txt> broadcast summary (alias: summary)\n claudemesh profile visible y|n toggle visibility (alias: visible)\n claudemesh profile status set X set status idle/working/dnd (alias: status set)\n claudemesh group join @<name> join a group (--role X)\n claudemesh group leave @<name> leave a group\n\nAPI keys (REST + external WS auth, v0.2.0)\n claudemesh apikey create <label> issue [--cap send,read] [--topic deploys]\n claudemesh apikey list show keys (status, last-used, scope)\n claudemesh apikey revoke <id> revoke a key\n\nBridge (forward a topic between two meshes, v0.2.0)\n claudemesh bridge init print config template\n claudemesh bridge run <config> run bridge as a long-lived process\n\nTopic (conversation scope, v0.2.0)\n claudemesh topic create <name> create a topic [--description --visibility]\n claudemesh topic list list topics in the mesh\n claudemesh topic join <topic> subscribe (via name or id)\n claudemesh topic leave <topic> unsubscribe\n claudemesh topic members <t> list topic subscribers\n claudemesh topic history <t> fetch message history [--limit --before]\n claudemesh topic read <topic> mark all as read\n claudemesh topic tail <topic> live SSE tail [--limit --forward-only]\n claudemesh topic post <t> <msg> encrypted REST post (v0.3.0 v2) [--reply-to <id>]\n claudemesh send \"#topic\" \"msg\" send to a topic (WS path, v1 plaintext)\n claudemesh member list mesh roster with online state [--online]\n claudemesh notification list recent @-mentions of you [--since <ISO>]\n\nSchedule (resource form)\n claudemesh schedule msg <m> one-shot or recurring (alias: remind)\n claudemesh schedule list list pending\n claudemesh schedule cancel <id> remove a scheduled item\n\nState / mesh introspection\n claudemesh state get|set|list shared state\n claudemesh info mesh overview\n claudemesh stats per-peer activity counters\n claudemesh ping diagnostic round-trip\n\nTasks\n claudemesh task create <title> create a new task [--assignee --priority --tags]\n claudemesh task list list tasks [--status --assignee]\n claudemesh task claim <id> claim an unclaimed task\n claudemesh task complete <id> mark task done [result]\n\nPlatform\n claudemesh vector store|search|delete|collections embedding store\n claudemesh graph query|execute \"<cypher>\" graph operations\n claudemesh context share|get|list work-context summaries\n claudemesh stream create|publish|list pub/sub event bus\n claudemesh sql query|execute|schema per-mesh SQL\n claudemesh skill list|get|remove mesh-published skills\n claudemesh vault list|delete encrypted secrets\n claudemesh watch list|remove URL change watchers\n claudemesh webhook list|delete outbound HTTP triggers\n claudemesh file list|status|delete shared mesh files\n claudemesh mesh-mcp list|call|catalog deployed mesh-MCP servers\n claudemesh clock set|pause|resume mesh logical clock\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 --approval-mode <mode> plan | read-only | write (default) | yolo\n --policy <path> override policy file\n -y, --yes skip confirmations (= --approval-mode yolo)\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 // Policy gate — runs before any broker-touching command. Skipped for help,\n // version, login/install, list, and other local-only ops via classifier.\n if (!(await policyGate())) process.exit(EXIT.PERMISSION_DENIED);\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 as boolean | string | undefined }); break; }\n case \"send\": { const { runSend } = await import(\"~/commands/send.js\"); await runSend({ mesh: flags.mesh as string, priority: flags.priority as string, json: !!flags.json }, 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(\" \"), { mesh: flags.mesh as string, 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(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"forget\": { const { runForget } = await import(\"~/commands/broker-actions.js\"); process.exit(await runForget(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"remind\": { const { runRemind } = await import(\"~/commands/remind.js\"); await runRemind({ mesh: flags.mesh as string }, positionals); break; }\n // (profile case moved to resource-aliases block below for sub-command extensibility)\n\n // Profile / status / visibility / groups (replacing soft-deprecated MCP tools)\n case \"summary\": { const { runSummary } = await import(\"~/commands/broker-actions.js\"); process.exit(await runSummary(positionals.join(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"visible\": { const { runVisible } = await import(\"~/commands/broker-actions.js\"); process.exit(await runVisible(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"group\": {\n const sub = positionals[0];\n if (sub === \"join\") { const { runGroupJoin } = await import(\"~/commands/broker-actions.js\"); process.exit(await runGroupJoin(positionals[1], { mesh: flags.mesh as string, role: flags.role as string, json: !!flags.json })); }\n else if (sub === \"leave\") { const { runGroupLeave } = await import(\"~/commands/broker-actions.js\"); process.exit(await runGroupLeave(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh group <join|leave> @<name> [--role X]\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // Mesh diagnostics + tasks\n case \"msg-status\": { const { runMsgStatus } = await import(\"~/commands/broker-actions.js\"); process.exit(await runMsgStatus(positionals[0], { mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"stats\": { const { runStats } = await import(\"~/commands/broker-actions.js\"); process.exit(await runStats({ mesh: flags.mesh as string, json: !!flags.json })); break; }\n case \"ping\": { const { runPing } = await import(\"~/commands/broker-actions.js\"); process.exit(await runPing({ mesh: flags.mesh as string, json: !!flags.json })); break; }\n // (clock + task moved to platform-actions block below for sub-command extensibility)\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\": {\n // `claudemesh status set <state>` → set peer status (idle/working/dnd)\n // `claudemesh status` (no args) → broker connectivity diagnostic\n if (positionals[0] === \"set\") {\n const { runStatusSet } = await import(\"~/commands/broker-actions.js\");\n process.exit(await runStatusSet(positionals[1] ?? \"\", { mesh: flags.mesh as string, json: !!flags.json }));\n } else {\n const { runStatus } = await import(\"~/commands/status.js\");\n await runStatus();\n }\n break;\n }\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 // ── Resource-model aliases (1.4.0) ─────────────────────────────────\n // Each `<resource> <verb>` form proxies to the existing legacy verb.\n // The legacy verbs (`send`, `peers`, `kick`, `remember`, ...) keep\n // working so old scripts never break. Spec: 2026-05-02 commitment #2.\n\n case \"peer\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: flags.json as boolean | string | undefined };\n const id = positionals[1] ?? \"\";\n if (sub === \"list\") { const { runPeers } = await import(\"~/commands/peers.js\"); await runPeers(f); }\n else if (sub === \"kick\") { const { runKick } = await import(\"~/commands/kick.js\"); process.exit(await runKick(id, { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); }\n else if (sub === \"disconnect\") { const { runDisconnect } = await import(\"~/commands/kick.js\"); process.exit(await runDisconnect(id, { mesh: flags.mesh as string, stale: flags.stale as string, all: !!flags.all })); }\n else if (sub === \"ban\") { const { runBan } = await import(\"~/commands/ban.js\"); process.exit(await runBan(id, { mesh: flags.mesh as string })); }\n else if (sub === \"unban\") { const { runUnban } = await import(\"~/commands/ban.js\"); process.exit(await runUnban(id, { mesh: flags.mesh as string })); }\n else if (sub === \"bans\") { const { runBans } = await import(\"~/commands/ban.js\"); process.exit(await runBans({ mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"verify\") { const { runVerify } = await import(\"~/commands/verify.js\"); process.exit(await runVerify(id || undefined, { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh peer <list|kick|disconnect|ban|unban|bans|verify>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"message\": {\n const sub = positionals[0];\n if (sub === \"send\") { const { runSend } = await import(\"~/commands/send.js\"); await runSend({ mesh: flags.mesh as string, priority: flags.priority as string, json: !!flags.json }, positionals[1] ?? \"\", positionals.slice(2).join(\" \")); }\n else if (sub === \"inbox\") { const { runInbox } = await import(\"~/commands/inbox.js\"); await runInbox({ json: !!flags.json }); }\n else if (sub === \"status\") { const { runMsgStatus } = await import(\"~/commands/broker-actions.js\"); process.exit(await runMsgStatus(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else { console.error(\"Usage: claudemesh message <send|inbox|status>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"memory\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"remember\") { const { remember } = await import(\"~/commands/remember.js\"); process.exit(await remember(positionals.slice(1).join(\" \"), { ...f, tags: flags.tags as string })); }\n else if (sub === \"recall\") { const { recall } = await import(\"~/commands/recall.js\"); process.exit(await recall(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"forget\") { const { runForget } = await import(\"~/commands/broker-actions.js\"); process.exit(await runForget(positionals[1], f)); }\n else { console.error(\"Usage: claudemesh memory <remember|recall|forget>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"profile\": {\n const sub = positionals[0];\n // `claudemesh profile` (no sub) → existing runProfile (interactive view/edit)\n // `claudemesh profile summary \"x\"` → set summary\n // `claudemesh profile visible true` → set visibility\n // `claudemesh profile status set <state>` → set peer status\n if (!sub) { const { runProfile } = await import(\"~/commands/profile.js\"); await runProfile(flags as any); }\n else if (sub === \"summary\") { const { runSummary } = await import(\"~/commands/broker-actions.js\"); process.exit(await runSummary(positionals.slice(1).join(\" \"), { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"visible\") { const { runVisible } = await import(\"~/commands/broker-actions.js\"); process.exit(await runVisible(positionals[1], { mesh: flags.mesh as string, json: !!flags.json })); }\n else if (sub === \"status\") {\n // `profile status` (no further sub) → diagnostic via runStatus\n // `profile status set <state>` → set peer status\n if (positionals[1] === \"set\") { const { runStatusSet } = await import(\"~/commands/broker-actions.js\"); process.exit(await runStatusSet(positionals[2] ?? \"\", { mesh: flags.mesh as string, json: !!flags.json })); }\n else { const { runStatus } = await import(\"~/commands/status.js\"); await runStatus(); }\n }\n else { console.error(\"Usage: claudemesh profile [summary|visible|status]\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n case \"schedule\": {\n // Aliases `remind` and its subcommands under a unified `schedule` verb.\n // The unified `schedule webhook/tool` primitives need broker work and\n // arrive in a later release — for now `schedule` only covers msg-style.\n const sub = positionals[0];\n if (sub === \"msg\" || sub === \"remind\" || sub === undefined || sub === \"list\" || sub === \"cancel\") {\n const { runRemind } = await import(\"~/commands/remind.js\");\n // Translate `schedule msg ...` and bare `schedule list/cancel` into\n // the legacy remind positional layout.\n const remindPositionals =\n sub === \"msg\" ? positionals.slice(1)\n : sub === \"remind\" ? positionals.slice(1)\n : positionals; // list / cancel / undefined\n await runRemind({ mesh: flags.mesh as string, in: flags.in as string, at: flags.at as string, cron: flags.cron as string, to: flags.to as string, json: !!flags.json }, remindPositionals);\n }\n else if (sub === \"webhook\" || sub === \"tool\") {\n console.error(` schedule ${sub} arrives in a later release — broker primitive not yet shipped`);\n process.exit(EXIT.INVALID_ARGS);\n }\n else { console.error(\"Usage: claudemesh schedule <msg|list|cancel>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // Platform — vector / graph / context / stream / sql / skill / vault / watch / webhook / file / mesh-mcp\n case \"vector\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"store\") { const { runVectorStore } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorStore(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), { ...f, metadata: flags.metadata as string })); }\n else if (sub === \"search\") { const { runVectorSearch } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorSearch(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), { ...f, limit: flags.limit as string })); }\n else if (sub === \"delete\") { const { runVectorDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorDelete(positionals[1] ?? \"\", positionals[2] ?? \"\", f)); }\n else if (sub === \"collections\") { const { runVectorCollections } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVectorCollections(f)); }\n else { console.error(\"Usage: claudemesh vector <store|search|delete|collections>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"graph\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"query\") { const { runGraphQuery } = await import(\"~/commands/platform-actions.js\"); process.exit(await runGraphQuery(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"execute\") { const { runGraphExecute } = await import(\"~/commands/platform-actions.js\"); process.exit(await runGraphExecute(positionals.slice(1).join(\" \"), f)); }\n else { console.error(\"Usage: claudemesh graph <query|execute> \\\"<cypher>\\\"\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"context\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"share\") { const { runContextShare } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextShare(positionals.slice(1).join(\" \"), { ...f, files: flags.files as string, findings: flags.findings as string, tags: flags.tags as string })); }\n else if (sub === \"get\") { const { runContextGet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextGet(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"list\") { const { runContextList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runContextList(f)); }\n else { console.error(\"Usage: claudemesh context <share|get|list>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"stream\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"create\") { const { runStreamCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamCreate(positionals[1] ?? \"\", f)); }\n else if (sub === \"publish\") { const { runStreamPublish } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamPublish(positionals[1] ?? \"\", positionals.slice(2).join(\" \"), f)); }\n else if (sub === \"list\") { const { runStreamList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runStreamList(f)); }\n else { console.error(\"Usage: claudemesh stream <create|publish|list>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"sql\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"query\") { const { runSqlQuery } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlQuery(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"execute\") { const { runSqlExecute } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlExecute(positionals.slice(1).join(\" \"), f)); }\n else if (sub === \"schema\") { const { runSqlSchema } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSqlSchema(f)); }\n else { console.error(\"Usage: claudemesh sql <query|execute|schema>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"skill\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runSkillList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillList({ ...f, query: positionals[1] })); }\n else if (sub === \"get\") { const { runSkillGet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillGet(positionals[1] ?? \"\", f)); }\n else if (sub === \"remove\") { const { runSkillRemove } = await import(\"~/commands/platform-actions.js\"); process.exit(await runSkillRemove(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh skill <list|get|remove>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"vault\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runVaultList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVaultList(f)); }\n else if (sub === \"delete\") { const { runVaultDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runVaultDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh vault <list|delete> (set/get currently via MCP — needs crypto)\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"watch\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runWatchList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWatchList(f)); }\n else if (sub === \"remove\") { const { runUnwatch } = await import(\"~/commands/platform-actions.js\"); process.exit(await runUnwatch(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh watch <list|remove>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"webhook\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runWebhookList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookList(f)); }\n else if (sub === \"delete\") { const { runWebhookDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runWebhookDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh webhook <list|delete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"file\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runFileList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileList({ ...f, query: positionals[1] })); }\n else if (sub === \"status\") { const { runFileStatus } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileStatus(positionals[1] ?? \"\", f)); }\n else if (sub === \"delete\") { const { runFileDelete } = await import(\"~/commands/platform-actions.js\"); process.exit(await runFileDelete(positionals[1] ?? \"\", f)); }\n else { console.error(\"Usage: claudemesh file <list|status|delete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"mesh-mcp\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"list\") { const { runMeshMcpList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpList(f)); }\n else if (sub === \"call\") { const { runMeshMcpCall } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpCall(positionals[1] ?? \"\", positionals[2] ?? \"\", positionals.slice(3).join(\" \"), f)); }\n else if (sub === \"catalog\") { const { runMeshMcpCatalog } = await import(\"~/commands/platform-actions.js\"); process.exit(await runMeshMcpCatalog(f)); }\n else { console.error(\"Usage: claudemesh mesh-mcp <list|call|catalog>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n case \"clock\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"set\") { const { runClockSet } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockSet(positionals[1] ?? \"\", f)); }\n else if (sub === \"pause\") { const { runClockPause } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockPause(f)); }\n else if (sub === \"resume\") { const { runClockResume } = await import(\"~/commands/platform-actions.js\"); process.exit(await runClockResume(f)); }\n else { const { runClock } = await import(\"~/commands/broker-actions.js\"); process.exit(await runClock(f)); }\n break;\n }\n\n // bridge — forward a topic between two meshes (v0.2.0)\n case \"bridge\": {\n const sub = positionals[0];\n if (sub === \"run\") {\n const { runBridge } = await import(\"~/commands/bridge.js\");\n process.exit(await runBridge(positionals[1] ?? \"\"));\n } else if (sub === \"init\" || sub === \"config\") {\n const { bridgeConfigTemplate } = await import(\"~/commands/bridge.js\");\n console.log(bridgeConfigTemplate());\n process.exit(EXIT.SUCCESS);\n } else {\n console.error(\"Usage: claudemesh bridge <run <config.yaml> | init>\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // apikey — REST + external WS bearer tokens (v0.2.0)\n case \"apikey\": case \"api-key\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n cap: flags.cap as string,\n topic: flags.topic as string,\n expires: flags.expires as string,\n };\n const arg = positionals[1] ?? \"\";\n if (sub === \"create\") { const { runApiKeyCreate } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyCreate(arg, f)); }\n else if (sub === \"list\") { const { runApiKeyList } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyList(f)); }\n else if (sub === \"revoke\") { const { runApiKeyRevoke } = await import(\"~/commands/apikey.js\"); process.exit(await runApiKeyRevoke(arg, f)); }\n else { console.error(\"Usage: claudemesh apikey <create|list|revoke>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // topic — conversational primitive within a mesh (v0.2.0)\n case \"topic\": {\n const sub = positionals[0];\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n description: flags.description as string,\n visibility: flags.visibility as \"public\" | \"private\" | \"dm\" | undefined,\n role: flags.role as \"lead\" | \"member\" | \"observer\" | undefined,\n limit: flags.limit as string | undefined,\n before: flags.before as string | undefined,\n };\n const arg = positionals[1] ?? \"\";\n if (sub === \"create\") { const { runTopicCreate } = await import(\"~/commands/topic.js\"); process.exit(await runTopicCreate(arg, f)); }\n else if (sub === \"list\") { const { runTopicList } = await import(\"~/commands/topic.js\"); process.exit(await runTopicList(f)); }\n else if (sub === \"join\") { const { runTopicJoin } = await import(\"~/commands/topic.js\"); process.exit(await runTopicJoin(arg, f)); }\n else if (sub === \"leave\") { const { runTopicLeave } = await import(\"~/commands/topic.js\"); process.exit(await runTopicLeave(arg, f)); }\n else if (sub === \"members\") { const { runTopicMembers } = await import(\"~/commands/topic.js\"); process.exit(await runTopicMembers(arg, f)); }\n else if (sub === \"history\") { const { runTopicHistory } = await import(\"~/commands/topic.js\"); process.exit(await runTopicHistory(arg, f)); }\n else if (sub === \"read\") { const { runTopicMarkRead } = await import(\"~/commands/topic.js\"); process.exit(await runTopicMarkRead(arg, f)); }\n else if (sub === \"tail\") {\n const tailFlags = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n limit: flags.limit as string | undefined,\n forwardOnly: !!flags[\"forward-only\"],\n };\n const { runTopicTail } = await import(\"~/commands/topic-tail.js\");\n process.exit(await runTopicTail(arg, tailFlags));\n }\n else if (sub === \"post\") {\n const postFlags = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n plaintext: !!flags.plaintext,\n replyTo: (flags[\"reply-to\"] as string) || (flags.replyTo as string),\n };\n const message = positionals.slice(2).join(\" \");\n const { runTopicPost } = await import(\"~/commands/topic-post.js\");\n process.exit(await runTopicPost(arg, message, postFlags));\n }\n else { console.error(\"Usage: claudemesh topic <create|list|join|leave|members|history|read|tail|post>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\n\n // notification — recent @-mentions of the viewer (v1.7.0)\n case \"notification\": case \"notifications\": {\n const sub = positionals[0] ?? \"list\";\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n since: flags.since as string,\n };\n if (sub === \"list\") {\n const { runNotificationList } = await import(\"~/commands/notification.js\");\n process.exit(await runNotificationList(f));\n } else {\n console.error(\"Usage: claudemesh notification list [--since <ISO>]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // member — mesh roster with online state (v1.7.0)\n case \"member\": case \"members\": {\n const sub = positionals[0] ?? \"list\";\n const f = {\n mesh: flags.mesh as string,\n json: !!flags.json,\n online: !!flags.online,\n };\n if (sub === \"list\") {\n const { runMemberList } = await import(\"~/commands/member.js\");\n process.exit(await runMemberList(f));\n } else {\n console.error(\"Usage: claudemesh member list [--online]\");\n process.exit(EXIT.INVALID_ARGS);\n }\n break;\n }\n\n // task — extends broker-actions.ts (claim/complete) with list/create\n case \"task\": {\n const sub = positionals[0];\n const f = { mesh: flags.mesh as string, json: !!flags.json };\n if (sub === \"claim\") { const { runTaskClaim } = await import(\"~/commands/broker-actions.js\"); process.exit(await runTaskClaim(positionals[1], f)); }\n else if (sub === \"complete\") { const { runTaskComplete } = await import(\"~/commands/broker-actions.js\"); process.exit(await runTaskComplete(positionals[1], positionals.slice(2).join(\" \") || undefined, f)); }\n else if (sub === \"list\") { const { runTaskList } = await import(\"~/commands/platform-actions.js\"); process.exit(await runTaskList({ ...f, status: flags.status as string, assignee: flags.assignee as string })); }\n else if (sub === \"create\") { const { runTaskCreate } = await import(\"~/commands/platform-actions.js\"); process.exit(await runTaskCreate(positionals.slice(1).join(\" \"), { ...f, assignee: flags.assignee as string, priority: flags.priority as string, tags: flags.tags as string })); }\n else { console.error(\"Usage: claudemesh task <create|list|claim|complete>\"); process.exit(EXIT.INVALID_ARGS); }\n break;\n }\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",
|
|
152
152
|
"import { VERSION } from \"~/constants/urls.js\";\nimport { boldOrange } from \"~/ui/styles.js\";\nexport function renderVersion(): string { return \" \" + boldOrange(\"claudemesh\") + \" v\" + VERSION; }\n",
|
|
153
153
|
"/**\n * Translate the parsed CLI invocation (command + positionals) into the\n * (resource, verb, isWrite) shape that the policy engine evaluates.\n *\n * Returns `null` for commands that are not subject to policy gating:\n * - local-only ops (help, version, list, doctor, sync, completions)\n * - auth (login, logout, whoami, register)\n * - setup (install, uninstall, url-handler, status-line, backup, restore)\n * - launch / connect (no broker mutation by themselves)\n *\n * Spec: .artifacts/specs/2026-05-02-architecture-north-star.md commitment #7.\n */\nexport interface InvocationClass {\n resource: string;\n verb: string;\n isWrite: boolean;\n}\n\n/** Commands the policy engine never evaluates. Local or auth-only. */\nconst SKIP = new Set([\n \"\", \"help\", \"version\",\n \"login\", \"register\", \"logout\", \"whoami\",\n \"install\", \"uninstall\", \"doctor\", \"sync\", \"completions\", \"url-handler\", \"status-line\",\n \"backup\", \"restore\", \"upgrade\", \"update\",\n \"list\", \"ls\", // local mesh list\n \"launch\", \"connect\", // launches Claude — no broker write\n \"status\", // broker connectivity diagnostic\n \"test\", \"mcp\", \"hook\", \"seed-test-mesh\",\n \"disconnect\", // duplicate alias only — top-level \"disconnect\" prints message\n]);\n\n/** Verbs that mutate broker state (used by --approval-mode plan / read-only). */\nconst WRITE_VERBS = new Set([\n \"create\", \"send\", \"remember\", \"forget\", \"remind\", \"schedule\", \"summary\",\n \"visible\", \"join\", \"leave\", \"kick\", \"ban\", \"unban\", \"disconnect\", \"delete\",\n \"rename\", \"share\", \"invite\", \"store\", \"publish\", \"execute\", \"set\", \"remove\",\n \"pause\", \"resume\", \"claim\", \"complete\", \"grant\", \"revoke\", \"block\", \"call\",\n]);\n\nfunction isWrite(verb: string): boolean {\n return WRITE_VERBS.has(verb);\n}\n\n/**\n * Map (command, positionals) → invocation classification.\n * The mapping mirrors the resource/verb namespace used in DEFAULT_POLICY so a\n * `peer kick` rule actually matches both `peer kick` and the legacy `kick`.\n */\nexport function classifyInvocation(command: string, positionals: string[]): InvocationClass | null {\n if (SKIP.has(command)) return null;\n\n const sub = positionals[0] ?? \"\";\n\n // ── Resource-form commands ───────────────────────────────────────────────\n switch (command) {\n case \"peer\": {\n const verb = sub || \"list\";\n return { resource: \"peer\", verb, isWrite: isWrite(verb) };\n }\n case \"message\": {\n const verb = sub || \"inbox\";\n return { resource: \"message\", verb, isWrite: isWrite(verb) };\n }\n case \"memory\": {\n const verb = sub || \"recall\";\n return { resource: \"memory\", verb, isWrite: isWrite(verb) };\n }\n case \"profile\": {\n // `profile` (no sub) is read; `profile summary/visible/status set` are writes.\n if (!sub) return { resource: \"profile\", verb: \"view\", isWrite: false };\n if (sub === \"status\") {\n return positionals[1] === \"set\"\n ? { resource: \"profile\", verb: \"status\", isWrite: true }\n : { resource: \"profile\", verb: \"view\", isWrite: false };\n }\n return { resource: \"profile\", verb: sub, isWrite: true };\n }\n case \"schedule\": {\n const verb = sub || \"list\";\n return { resource: \"schedule\", verb, isWrite: verb !== \"list\" };\n }\n case \"group\": {\n return { resource: \"group\", verb: sub || \"list\", isWrite: sub === \"join\" || sub === \"leave\" };\n }\n case \"task\": {\n return { resource: \"task\", verb: sub || \"list\", isWrite: isWrite(sub) };\n }\n case \"topic\": {\n // topic verbs: create | list | join | leave | members | history | read\n // writes: create, join, leave; reads: list, members, history, read\n const verb = sub || \"list\";\n const writeVerbs = new Set([\"create\", \"join\", \"leave\"]);\n return { resource: \"topic\", verb, isWrite: writeVerbs.has(verb) };\n }\n case \"apikey\": case \"api-key\": {\n // apikey verbs: create | list | revoke. create issues a credential —\n // strongly destructive in security terms; revoke is also a write.\n const verb = sub || \"list\";\n const writeVerbs = new Set([\"create\", \"revoke\"]);\n return { resource: \"apikey\", verb, isWrite: writeVerbs.has(verb) };\n }\n case \"bridge\": {\n // bridge verbs: run (long-lived forwarder) | init (print template).\n // `run` is a write at the mesh level since it joins both meshes\n // and posts messages on their topics.\n const verb = sub || \"init\";\n return { resource: \"bridge\", verb, isWrite: verb === \"run\" };\n }\n\n // Platform — sub is the verb.\n case \"vector\": case \"graph\": case \"context\": case \"stream\":\n case \"sql\": case \"skill\": case \"vault\": case \"watch\":\n case \"webhook\": case \"file\": case \"mesh-mcp\": case \"clock\": {\n const verb = sub || \"list\";\n return { resource: command, verb, isWrite: isWrite(verb) };\n }\n\n case \"state\": {\n const verb = sub === \"set\" ? \"set\" : sub === \"list\" ? \"list\" : \"get\";\n return { resource: \"state\", verb, isWrite: verb === \"set\" };\n }\n }\n\n // ── Legacy / flat verb form ──────────────────────────────────────────────\n switch (command) {\n // Mesh management\n case \"create\": case \"new\": return { resource: \"mesh\", verb: \"create\", isWrite: true };\n case \"join\": case \"add\": return { resource: \"mesh\", verb: \"join\", isWrite: true };\n case \"delete\": case \"rm\": return { resource: \"mesh\", verb: \"delete\", isWrite: true };\n case \"rename\": return { resource: \"mesh\", verb: \"rename\", isWrite: true };\n case \"share\": case \"invite\": return { resource: \"mesh\", verb: \"share\", isWrite: true };\n case \"info\": return { resource: \"mesh\", verb: \"info\", isWrite: false };\n\n // Peer ops (legacy verbs)\n case \"peers\": return { resource: \"peer\", verb: \"list\", isWrite: false };\n case \"kick\": return { resource: \"peer\", verb: \"kick\", isWrite: true };\n case \"ban\": return { resource: \"peer\", verb: \"ban\", isWrite: true };\n case \"unban\": return { resource: \"peer\", verb: \"unban\", isWrite: true };\n case \"bans\": return { resource: \"peer\", verb: \"bans\", isWrite: false };\n case \"verify\": return { resource: \"peer\", verb: \"verify\", isWrite: false };\n\n // Messaging\n case \"send\": return { resource: \"message\", verb: \"send\", isWrite: true };\n case \"inbox\": return { resource: \"message\", verb: \"inbox\", isWrite: false };\n case \"msg-status\": return { resource: \"message\", verb: \"status\", isWrite: false };\n\n // Memory\n case \"remember\": return { resource: \"memory\", verb: \"remember\", isWrite: true };\n case \"recall\": return { resource: \"memory\", verb: \"recall\", isWrite: false };\n case \"forget\": return { resource: \"memory\", verb: \"forget\", isWrite: true };\n case \"remind\": return { resource: \"schedule\", verb: \"msg\", isWrite: true };\n\n // Presence\n case \"summary\": return { resource: \"profile\", verb: \"summary\", isWrite: true };\n case \"visible\": return { resource: \"profile\", verb: \"visible\", isWrite: true };\n\n // Diagnostics\n case \"stats\": return { resource: \"mesh\", verb: \"stats\", isWrite: false };\n case \"ping\": return { resource: \"mesh\", verb: \"ping\", isWrite: false };\n\n // Security\n case \"grant\": return { resource: \"grant\", verb: \"grant\", isWrite: true };\n case \"revoke\": return { resource: \"grant\", verb: \"revoke\", isWrite: true };\n case \"block\": return { resource: \"grant\", verb: \"block\", isWrite: true };\n case \"grants\": return { resource: \"grant\", verb: \"list\", isWrite: false };\n }\n\n // Unknown command — let the dispatcher's default branch handle it.\n return null;\n}\n",
|
|
154
154
|
"/**\n * Policy engine — gates every CLI verb's broker call behind allow/prompt/deny\n * rules evaluated against a YAML config. Modeled on Gemini CLI's `--policy /\n * --admin-policy` and Codex's `--sandbox` modes.\n *\n * Why: when claudemesh is invoked from Claude's Bash tool, the user's\n * `allowedTools = [\"Bash\"]` setting gives Claude carte blanche over the\n * CLI. The policy engine adds a second gate INSIDE claudemesh that the\n * shell-permission layer can't bypass — `claudemesh file delete` can be\n * `decision: deny` regardless of whether Bash is allowed.\n *\n * Spec: .artifacts/specs/2026-05-02-architecture-north-star.md commitment #7.\n *\n * Decision tree:\n * 1. Parse `--approval-mode` flag → coarse mode (plan|read-only|write|yolo).\n * 2. Read user policy from --policy <path> | $CLAUDEMESH_POLICY |\n * ~/.claudemesh/policy.yaml (auto-created with defaults).\n * 3. Read admin policy (if any) from --admin-policy | /etc/claudemesh/admin-policy.yaml.\n * Admin rules win on conflict.\n * 4. For an invocation `(resource, verb, mesh)`:\n * a. Coarse mode: read-only/plan deny all writes outright.\n * b. Match the most-specific rule (admin > user > built-in default).\n * c. Apply decision: allow | prompt | deny.\n * d. On `prompt`, ask interactively unless `--yes` or yolo mode.\n *\n * Audit log: simple newline-JSON append-only at ~/.claudemesh/audit.log.\n * Hash-chained tamper-evidence is parked for 2.x.\n */\n\nimport { existsSync, readFileSync, writeFileSync, appendFileSync, mkdirSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join, dirname } from \"node:path\";\nimport { createInterface } from \"node:readline\";\n\nexport type ApprovalMode = \"plan\" | \"read-only\" | \"write\" | \"yolo\";\n\nexport type Decision = \"allow\" | \"prompt\" | \"deny\";\n\n/** A single rule. Earlier rules are matched first; the first match wins. */\nexport interface PolicyRule {\n /** Resource name, e.g. \"send\", \"file\", \"sql\". `*` matches any. */\n resource: string;\n /** Verb name, e.g. \"delete\", \"execute\", \"list\". `*` matches any. */\n verb: string;\n /** Optional mesh slug filter. Omit for all meshes. */\n mesh?: string;\n /** Optional peer filter (display name, @group, or *). Currently advisory. */\n peers?: string[];\n /** What to do on match. */\n decision: Decision;\n /** Free-text reason surfaced when decision is `prompt` or `deny`. */\n reason?: string;\n}\n\nexport interface Policy {\n default: Decision;\n rules: PolicyRule[];\n}\n\n/** Built-in fallback if no user/admin policy exists. Sensible defaults:\n * destructive writes prompt; everything else is allowed. The user's first\n * run writes this file so they can edit it. */\nexport const DEFAULT_POLICY: Policy = {\n default: \"allow\",\n rules: [\n // Destructive writes — prompt the human.\n { resource: \"peer\", verb: \"kick\", decision: \"prompt\", reason: \"ends a peer's session\" },\n { resource: \"peer\", verb: \"ban\", decision: \"prompt\", reason: \"permanently revokes membership\" },\n { resource: \"peer\", verb: \"disconnect\", decision: \"prompt\", reason: \"disconnects a peer\" },\n { resource: \"file\", verb: \"delete\", decision: \"prompt\", reason: \"deletes a shared file\" },\n { resource: \"vector\", verb: \"delete\", decision: \"prompt\", reason: \"removes vector entries\" },\n { resource: \"vault\", verb: \"delete\", decision: \"prompt\", reason: \"deletes encrypted secret\" },\n { resource: \"memory\", verb: \"forget\", decision: \"prompt\", reason: \"removes shared memory\" },\n { resource: \"skill\", verb: \"remove\", decision: \"prompt\", reason: \"removes published skill\" },\n { resource: \"webhook\", verb: \"delete\", decision: \"prompt\", reason: \"removes webhook integration\" },\n { resource: \"watch\", verb: \"remove\", decision: \"prompt\", reason: \"removes URL watcher\" },\n { resource: \"sql\", verb: \"execute\", decision: \"prompt\", reason: \"raw SQL write to mesh DB\" },\n { resource: \"graph\", verb: \"execute\", decision: \"prompt\", reason: \"graph mutation\" },\n { resource: \"mesh\", verb: \"delete\", decision: \"prompt\", reason: \"deletes the mesh for everyone\" },\n { resource: \"apikey\", verb: \"create\", decision: \"prompt\", reason: \"issues a long-lived credential\" },\n { resource: \"apikey\", verb: \"revoke\", decision: \"prompt\", reason: \"irreversibly disables a credential\" },\n ],\n};\n\nconst USER_POLICY_PATH = join(homedir(), \".claudemesh\", \"policy.yaml\");\nconst AUDIT_LOG_PATH = join(homedir(), \".claudemesh\", \"audit.log\");\n\n/**\n * Minimal YAML parser for our policy format. Accepts the shape:\n * default: allow|prompt|deny\n * rules:\n * - resource: peer\n * verb: kick\n * mesh: flexicar # optional\n * peers: [\"@admin\"] # optional\n * decision: prompt\n * reason: \"...\" # optional\n *\n * We avoid pulling in a real YAML dep (zero-dep CLI). For complex configs\n * users can pre-process to JSON; we accept that too via .json extension.\n */\nexport function parsePolicyYaml(text: string): Policy {\n // If the file is JSON, parse directly.\n const trimmed = text.trim();\n if (trimmed.startsWith(\"{\")) {\n return JSON.parse(trimmed) as Policy;\n }\n\n const policy: Policy = { default: \"allow\", rules: [] };\n const lines = text.split(\"\\n\");\n let cur: Partial<PolicyRule> | null = null;\n const flush = (): void => {\n if (cur && cur.resource && cur.verb && cur.decision) {\n policy.rules.push(cur as PolicyRule);\n }\n cur = null;\n };\n\n for (const raw of lines) {\n const line = raw.replace(/#.*$/, \"\").trimEnd();\n if (!line.trim()) continue;\n\n const top = line.match(/^(default):\\s*(\\S+)/);\n if (top) {\n policy.default = top[2] as Decision;\n continue;\n }\n\n if (/^rules\\s*:/.test(line)) continue;\n\n // New rule entry: starts with \" -\" or \"- \"\n if (/^\\s*-\\s/.test(line)) {\n flush();\n cur = {};\n const m = line.match(/-\\s*(\\w+)\\s*:\\s*(.*)$/);\n if (m) (cur as Record<string, unknown>)[m[1]!] = parseValue(m[2]!);\n continue;\n }\n\n // Continuation key/value within a rule: \" key: value\"\n const kv = line.match(/^\\s+(\\w+)\\s*:\\s*(.*)$/);\n if (kv && cur) {\n (cur as Record<string, unknown>)[kv[1]!] = parseValue(kv[2]!);\n }\n }\n flush();\n\n return policy;\n}\n\nfunction parseValue(raw: string): string | string[] | boolean | number {\n const v = raw.trim();\n if (!v) return \"\";\n // Inline array: [\"a\", \"b\"]\n if (v.startsWith(\"[\") && v.endsWith(\"]\")) {\n return v\n .slice(1, -1)\n .split(\",\")\n .map((s) => s.trim().replace(/^[\"']|[\"']$/g, \"\"))\n .filter(Boolean);\n }\n // Quoted string\n const q = v.match(/^[\"'](.*)[\"']$/);\n if (q) return q[1]!;\n // Bools / numbers\n if (v === \"true\") return true;\n if (v === \"false\") return false;\n if (/^-?\\d+(\\.\\d+)?$/.test(v)) return Number(v);\n return v;\n}\n\n/** Serialise a Policy as YAML. */\nexport function serializePolicyYaml(p: Policy): string {\n let out = `# claudemesh policy file\\n`;\n out += `# Edit to change which CLI ops require confirmation or are forbidden.\\n`;\n out += `# Decisions: allow | prompt | deny\\n`;\n out += `# See: ~/.claude/skills/claudemesh/SKILL.md or claudemesh policy --help\\n\\n`;\n out += `default: ${p.default}\\n\\n`;\n out += `rules:\\n`;\n for (const r of p.rules) {\n out += ` - resource: ${r.resource}\\n`;\n out += ` verb: ${r.verb}\\n`;\n if (r.mesh) out += ` mesh: ${r.mesh}\\n`;\n if (r.peers) out += ` peers: [${r.peers.map((p) => `\"${p}\"`).join(\", \")}]\\n`;\n out += ` decision: ${r.decision}\\n`;\n if (r.reason) out += ` reason: \"${r.reason}\"\\n`;\n }\n return out;\n}\n\n/** Load the user's policy, creating the default on first run. */\nexport function loadPolicy(opts?: { policyPath?: string; envOverride?: string }): Policy {\n const path =\n opts?.policyPath ??\n opts?.envOverride ??\n process.env.CLAUDEMESH_POLICY ??\n USER_POLICY_PATH;\n\n if (!existsSync(path)) {\n // First run — write defaults so the user can discover/edit them.\n if (path === USER_POLICY_PATH) {\n try {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, serializePolicyYaml(DEFAULT_POLICY), \"utf-8\");\n } catch { /* best effort */ }\n }\n return DEFAULT_POLICY;\n }\n\n try {\n return parsePolicyYaml(readFileSync(path, \"utf-8\"));\n } catch (e) {\n process.stderr.write(\n `[claudemesh] policy: failed to parse ${path}: ${e instanceof Error ? e.message : String(e)}\\n`,\n );\n return DEFAULT_POLICY;\n }\n}\n\n/** Match wildcards: `*` in the rule matches anything. */\nfunction matches(rule: string, value: string): boolean {\n if (rule === \"*\") return true;\n return rule === value;\n}\n\nexport interface CheckContext {\n resource: string;\n verb: string;\n mesh?: string;\n /** Coarse mode from --approval-mode (or default 'write'). */\n mode: ApprovalMode;\n /** True if the verb is destructive (kick/ban/delete/forget/execute/etc). */\n isWrite: boolean;\n /** If true, prompt-decisions are auto-approved (e.g. -y / yolo). */\n yes: boolean;\n}\n\nexport interface CheckResult {\n decision: Decision;\n reason?: string;\n matchedRule?: PolicyRule;\n}\n\n/** Evaluate a policy against a check context. Pure — no I/O. */\nexport function evaluate(policy: Policy, ctx: CheckContext): CheckResult {\n // Coarse approval-mode short-circuits.\n if (ctx.mode === \"yolo\") return { decision: \"allow\", reason: \"yolo mode\" };\n if ((ctx.mode === \"plan\" || ctx.mode === \"read-only\") && ctx.isWrite) {\n return { decision: \"deny\", reason: `${ctx.mode} mode forbids writes` };\n }\n\n for (const r of policy.rules) {\n if (!matches(r.resource, ctx.resource)) continue;\n if (!matches(r.verb, ctx.verb)) continue;\n if (r.mesh && ctx.mesh && r.mesh !== ctx.mesh) continue;\n return { decision: r.decision, reason: r.reason, matchedRule: r };\n }\n return { decision: policy.default };\n}\n\n/** Append a one-line JSON record to ~/.claudemesh/audit.log. */\nexport function audit(record: Record<string, unknown>): void {\n try {\n mkdirSync(dirname(AUDIT_LOG_PATH), { recursive: true });\n appendFileSync(\n AUDIT_LOG_PATH,\n JSON.stringify({ ts: new Date().toISOString(), ...record }) + \"\\n\",\n \"utf-8\",\n );\n } catch { /* best effort */ }\n}\n\n/**\n * Interactive prompt for `prompt` decisions. Returns true if the user\n * approves. In a non-TTY context (cron, scripts) returns false to be safe —\n * the user must opt in via `--approval-mode yolo` or a `decision: allow`\n * rule.\n */\nexport async function confirmPrompt(message: string): Promise<boolean> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return false;\n }\n return new Promise((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n rl.question(`${message} [y/N] `, (answer) => {\n rl.close();\n const a = answer.trim().toLowerCase();\n resolve(a === \"y\" || a === \"yes\");\n });\n });\n}\n\n/**\n * One-stop check: load policy, evaluate, audit, prompt if needed. Returns\n * `true` if the operation may proceed, `false` if blocked.\n *\n * Callers pass in `ctx` with the current invocation. They should `return`\n * (or `process.exit`) when this returns false.\n */\nexport async function gate(ctx: CheckContext, opts?: { policyPath?: string }): Promise<boolean> {\n const policy = loadPolicy(opts);\n const result = evaluate(policy, ctx);\n\n audit({ ...ctx, decision: result.decision, reason: result.reason });\n\n if (result.decision === \"allow\") return true;\n if (result.decision === \"deny\") {\n process.stderr.write(\n `\\n ✘ blocked by policy: ${ctx.resource} ${ctx.verb}` +\n (result.reason ? ` — ${result.reason}` : \"\") +\n `\\n edit ${USER_POLICY_PATH} to change.\\n`,\n );\n return false;\n }\n // prompt\n if (ctx.yes) return true;\n const reason = result.reason ? ` — ${result.reason}` : \"\";\n const confirmed = await confirmPrompt(\n `\\n ⚠ ${ctx.resource} ${ctx.verb}${reason}. Continue?`,\n );\n if (!confirmed) {\n process.stderr.write(` cancelled.\\n`);\n audit({ ...ctx, decision: \"cancelled-at-prompt\" });\n }\n return confirmed;\n}\n"
|
|
155
155
|
],
|
|
156
|
-
"mappings": "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",
|
|
157
|
-
"debugId": "
|
|
156
|
+
"mappings": "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",
|
|
157
|
+
"debugId": "25CA2A7E4B8DBD3564756E2164756E21",
|
|
158
158
|
"names": []
|
|
159
159
|
}
|